<?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>125324</bug_id>
          
          <creation_ts>2013-12-05 17:08:25 -0800</creation_ts>
          <short_desc>Web Inspector: Push More Inspector Required Classes Down into JavaScriptCore</short_desc>
          <delta_ts>2014-02-13 03:48:34 -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>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ggaren</cc>
    
    <cc>graouts</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joepeck</cc>
    
    <cc>ltilve+ews</cc>
    
    <cc>mkwst</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>957095</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-05 17:08:25 -0800</bug_when>
    <thetext>To be able to inspect a JSContext start moving some core Inspector* classes and Script* that Inspector classes require.

It would still be a long ways to go after these patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957100</commentid>
    <comment_count>1</comment_count>
      <attachid>218556</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-05 17:13:41 -0800</bug_when>
    <thetext>Created attachment 218556
[PATCH] PART 1: InspectAgentBase, InspectorAgentRegistry, InspectorBackendDispatcher, InspectorValues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957104</commentid>
    <comment_count>2</comment_count>
      <attachid>218557</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-05 17:17:15 -0800</bug_when>
    <thetext>Created attachment 218557
[PATCH] PART 2: ScriptObject, ScriptValue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957105</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-05 17:17:16 -0800</bug_when>
    <thetext>Attachment 218556 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorAgentBase.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorAgentRegistry.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorAgentRegistry.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorBackendDispatcher.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorBackendDispatcher.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorValues.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorValues.h&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorAgentBase.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorAgentRegistry.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorBackendDispatcher.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorValues.h&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/bindings/js/JSInjectedScriptHostCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptProfile.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptProfile.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptValue.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptValue.h&apos;, u&apos;Source/WebCore/html/parser/XSSAuditor.cpp&apos;, u&apos;Source/WebCore/html/parser/XSSAuditorDelegate.cpp&apos;, u&apos;Source/WebCore/inspector/CodeGeneratorInspector.py&apos;, u&apos;Source/WebCore/inspector/CodeGeneratorInspectorStrings.py&apos;, u&apos;Source/WebCore/inspector/ConsoleMessage.cpp&apos;, u&apos;Source/WebCore/inspector/ConsoleMessage.h&apos;, u&apos;Source/WebCore/inspector/ContentSearchUtils.cpp&apos;, u&apos;Source/WebCore/inspector/ContentSearchUtils.h&apos;, u&apos;Source/WebCore/inspector/InjectedScript.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptBase.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptBase.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptCanvasModule.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptHost.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptHost.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptManager.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptManager.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptModule.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorAgentBase.h&apos;, u&apos;Source/WebCore/inspector/InspectorAgentRegistry.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorAgentRegistry.h&apos;, u&apos;Source/WebCore/inspector/InspectorAllInOne.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorApplicationCacheAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorBackendDispatcher.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorBackendDispatcher.h&apos;, u&apos;Source/WebCore/inspector/InspectorBaseAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorCSSAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorCSSAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorCanvasAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorCanvasAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorClient.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorClient.h&apos;, u&apos;Source/WebCore/inspector/InspectorConsoleAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorConsoleAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorController.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorController.h&apos;, u&apos;Source/WebCore/inspector/InspectorDOMAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDOMAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDOMDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDOMDebuggerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDOMStorageAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDOMStorageAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDatabaseAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDatabaseAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDatabaseResource.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDebuggerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorForwarding.h&apos;, u&apos;Source/WebCore/inspector/InspectorFrontendClientLocal.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorFrontendHost.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorHeapProfilerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorHeapProfilerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorIndexedDBAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorIndexedDBAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorInputAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorInputAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorInstrumentation.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorLayerTreeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorLayerTreeAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorMemoryAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorMemoryAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorOverlay.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorOverlay.h&apos;, u&apos;Source/WebCore/inspector/InspectorPageAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorPageAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorProfilerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorProfilerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorResourceAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorResourceAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorRuntimeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorRuntimeAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorStyleSheet.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorStyleSheet.h&apos;, u&apos;Source/WebCore/inspector/InspectorStyleTextEditor.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorTimelineAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorTimelineAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorValues.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorValues.h&apos;, u&apos;Source/WebCore/inspector/InspectorWorkerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorWorkerAgent.h&apos;, u&apos;Source/WebCore/inspector/InstrumentingAgents.cpp&apos;, u&apos;Source/WebCore/inspector/NetworkResourcesData.cpp&apos;, u&apos;Source/WebCore/inspector/PageConsoleAgent.cpp&apos;, u&apos;Source/WebCore/inspector/PageDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/PageDebuggerAgent.h&apos;, u&apos;Source/WebCore/inspector/PageRuntimeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/PageRuntimeAgent.h&apos;, u&apos;Source/WebCore/inspector/ScriptArguments.cpp&apos;, u&apos;Source/WebCore/inspector/ScriptCallFrame.cpp&apos;, u&apos;Source/WebCore/inspector/ScriptCallFrame.h&apos;, u&apos;Source/WebCore/inspector/ScriptCallStack.cpp&apos;, u&apos;Source/WebCore/inspector/ScriptCallStack.h&apos;, u&apos;Source/WebCore/inspector/TimelineRecordFactory.cpp&apos;, u&apos;Source/WebCore/inspector/TimelineRecordFactory.h&apos;, u&apos;Source/WebCore/inspector/WorkerConsoleAgent.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerInspectorController.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerInspectorController.h&apos;, u&apos;Source/WebCore/inspector/WorkerRuntimeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerRuntimeAgent.h&apos;, u&apos;Source/WebCore/page/ContentSecurityPolicy.cpp&apos;, u&apos;Source/WebCore/testing/Internals.cpp&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebInspector.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebInspector.h&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/inspector/CodeGeneratorInspector.py:265:  [RawTypes.BaseType.get_raw_validator_call_text] Class &apos;BaseType&apos; has no &apos;get_validate_method_params&apos; member  [pylint/E1101] [5]
ERROR: Source/WebCore/inspector/InspectorIndexedDBAgent.h:36:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:54:  Comma should be at the beggining of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorCanvasAgent.h:40:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/inspector/InspectorCSSAgent.cpp:620:  Comma should be at the beggining of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorRuntimeAgent.h:38:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/inspector/InspectorDebuggerAgent.h:45:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/inspector/InspectorRuntimeAgent.cpp:63:  Comma should be at the beggining of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:45:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:46:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:47:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:48:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:49:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:50:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:51:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:52:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:53:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:54:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:55:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:56:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:92:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:388:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:426:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:429:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:472:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:473:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:510:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:611:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:615:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:701:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:709:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
ERROR: Source/WebCore/inspector/InspectorTimelineAgent.cpp:585:  Comma should be at the beggining of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorWorkerAgent.h:34:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/inspector/InspectorLayerTreeAgent.h:38:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorBackendDispatcher.h:43:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorBackendDispatcher.h:97:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/inspector/InspectorDOMStorageAgent.h:34:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:50:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:73:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:87:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:110:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:111:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:112:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:130:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:131:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/inspector/InspectorInputAgent.h:36:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/inspector/InspectorIndexedDBAgent.cpp:561:  Comma should be at the beggining of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorWorkerAgent.cpp:112:  Comma should be at the beggining of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp:50:  Comma should be at the beggining of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDOMDebuggerAgent.h:38:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/inspector/InspectorStyleSheet.h:66:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/inspector/InspectorAgent.h:35:  &quot;InspectorAgentBase.h&quot; already included at Source/WebCore/inspector/InspectorAgent.h:33  [build/include] [4]
ERROR: Source/WebCore/inspector/InspectorResourceAgent.h:36:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/inspector/InspectorDatabaseAgent.h:36:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/inspector/InspectorCanvasAgent.cpp:67:  Comma should be at the beggining of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorConsoleAgent.h:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/inspector/InspectorPageAgent.h:42:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/inspector/InspectorMemoryAgent.cpp:90:  Comma should be at the beggining of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorHeapProfilerAgent.cpp:54:  Comma should be at the beggining of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDebuggerAgent.cpp:60:  Comma should be at the beggining of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorPageAgent.cpp:356:  Comma should be at the beggining of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDOMAgent.cpp:215:  Comma should be at the beggining of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorConsoleAgent.cpp:64:  Comma should be at the beggining of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorHeapProfilerAgent.h:38:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/inspector/InspectorTimelineAgent.h:39:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/inspector/InspectorProfilerAgent.cpp:124:  Comma should be at the beggining of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorResourceAgent.cpp:654:  Comma should be at the beggining of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDatabaseAgent.cpp:214:  Comma should be at the beggining of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorMemoryAgent.h:36:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/inspector/InspectorAgent.cpp:63:  Comma should be at the beggining of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDOMDebuggerAgent.cpp:74:  Comma should be at the beggining of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorAgentBase.h:27:  #ifndef header guard has wrong style, please use: InspectorAgentBase_h  [build/header_guard] [5]
ERROR: Source/WebCore/inspector/InspectorInputAgent.cpp:57:  Comma should be at the beggining of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorProfilerAgent.h:37:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/inspector/InspectorDOMStorageAgent.cpp:60:  Comma should be at the beggining of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorApplicationCacheAgent.h:33:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 76 in 123 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>957106</commentid>
    <comment_count>4</comment_count>
      <attachid>218558</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-05 17:21:59 -0800</bug_when>
    <thetext>Created attachment 218558
[PATCH] PART 3: ScriptFunctionCall</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957107</commentid>
    <comment_count>5</comment_count>
      <attachid>218559</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-05 17:26:01 -0800</bug_when>
    <thetext>Created attachment 218559
[PATCH] PART 4: InspectorTypeBuilder</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957114</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-12-05 17:43:39 -0800</bug_when>
    <thetext>Two comments:
- I&apos;d rather we not move ScriptObject, ScriptValue and ScriptFunctionCall into the JSC namespace.  They are unnecessary abstractions that should be removed.  Instead, I would recommend moving them into a namespace Deprecated {} or some such.

- Perhaps this Inspector infrastructure should move into its own static library like WTF is.  There isn&apos;t a great reason it would belong in JSC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957118</commentid>
    <comment_count>7</comment_count>
      <attachid>218556</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-05 17:49:45 -0800</bug_when>
    <thetext>Comment on attachment 218556
[PATCH] PART 1: InspectAgentBase, InspectorAgentRegistry, InspectorBackendDispatcher, InspectorValues

Attachment 218556 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/44818006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957120</commentid>
    <comment_count>8</comment_count>
      <attachid>218556</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-05 18:19:51 -0800</bug_when>
    <thetext>Comment on attachment 218556
[PATCH] PART 1: InspectAgentBase, InspectorAgentRegistry, InspectorBackendDispatcher, InspectorValues

Attachment 218556 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/44788010</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957121</commentid>
    <comment_count>9</comment_count>
      <attachid>218556</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-12-05 18:34:17 -0800</bug_when>
    <thetext>Comment on attachment 218556
[PATCH] PART 1: InspectAgentBase, InspectorAgentRegistry, InspectorBackendDispatcher, InspectorValues

Attachment 218556 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/44878003</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957355</commentid>
    <comment_count>10</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-12-06 12:51:48 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Created an attachment (id=218559) [details]
&gt; [PATCH] PART 4: InspectorTypeBuilder

(In reply to comment #6)
&gt; Two comments:
&gt; - I&apos;d rather we not move ScriptObject, ScriptValue and ScriptFunctionCall into the JSC namespace.  They are unnecessary abstractions that should be removed.  Instead, I would recommend moving them into a namespace Deprecated {} or some such.

I was wondering about this too.

&gt; - Perhaps this Inspector infrastructure should move into its own static library like WTF is.  There isn&apos;t a great reason it would belong in JSC.

I&apos;m not sure about this. JSC will be a first-class Inspector host going forward. Geoff has agreed to putting these things into JSC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957382</commentid>
    <comment_count>11</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-06 13:48:54 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #5)
&gt; &gt; Created an attachment (id=218559) [details] [details]
&gt; &gt; [PATCH] PART 4: InspectorTypeBuilder
&gt; 
&gt; (In reply to comment #6)
&gt; &gt; Two comments:
&gt; &gt; - I&apos;d rather we not move ScriptObject, ScriptValue and ScriptFunctionCall into the JSC namespace.  They are unnecessary abstractions that should be removed.  Instead, I would recommend moving them into a namespace Deprecated {} or some such.
&gt; 
&gt; I was wondering about this too.

I&apos;ll make it namespace Deprecated. And I guess then I&apos;ll be explicit about Deprecated::ScriptValue and Deprecated::ScriptObject all over WebCore instead of &quot;using namespace Deprecated&quot;.

&gt; &gt; - Perhaps this Inspector infrastructure should move into its own static library like WTF is.  There isn&apos;t a great reason it would belong in JSC.
&gt; 
&gt; I&apos;m not sure about this. JSC will be a first-class Inspector host going forward. Geoff has agreed to putting these things into JSC.

I like the idea of moving out remote inspector stuff (JavaScriptCore/inspector/remote). Maybe also some of the core Inspector classes (the ones inevitably shared by JSC and WebCore and are therefore agnostic). However, as soon as you get into &quot;inspector for JSContext&quot; and &quot;inspector for WebCore::Page&quot; there is a lot of use of JSC/WebCore types. If separated, there would be a large private API surface area that would be easier if everyone didn&apos;t have to worry about exporting the right stuff. Its something I&apos;m willing to look into though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957430</commentid>
    <comment_count>12</comment_count>
      <attachid>218632</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-06 16:42:55 -0800</bug_when>
    <thetext>Created attachment 218632
[PATCH] For Bots 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957431</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-06 16:45:43 -0800</bug_when>
    <thetext>Attachment 218632 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorAgentBase.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorAgentRegistry.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorAgentRegistry.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorBackendDispatcher.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorBackendDispatcher.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorValues.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorValues.h&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorAgentBase.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorAgentRegistry.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorBackendDispatcher.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorValues.h&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/bindings/js/JSInjectedScriptHostCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptProfile.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptProfile.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptValue.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptValue.h&apos;, u&apos;Source/WebCore/html/parser/XSSAuditor.cpp&apos;, u&apos;Source/WebCore/html/parser/XSSAuditorDelegate.cpp&apos;, u&apos;Source/WebCore/inspector/CodeGeneratorInspector.py&apos;, u&apos;Source/WebCore/inspector/CodeGeneratorInspectorStrings.py&apos;, u&apos;Source/WebCore/inspector/ConsoleMessage.cpp&apos;, u&apos;Source/WebCore/inspector/ConsoleMessage.h&apos;, u&apos;Source/WebCore/inspector/ContentSearchUtils.cpp&apos;, u&apos;Source/WebCore/inspector/ContentSearchUtils.h&apos;, u&apos;Source/WebCore/inspector/InjectedScript.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptBase.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptBase.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptCanvasModule.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptHost.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptHost.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptManager.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptManager.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptModule.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorAgentRegistry.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorAgentRegistry.h&apos;, u&apos;Source/WebCore/inspector/InspectorAllInOne.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorApplicationCacheAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorBackendDispatcher.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorBackendDispatcher.h&apos;, u&apos;Source/WebCore/inspector/InspectorBaseAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorCSSAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorCSSAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorCanvasAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorCanvasAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorClient.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorClient.h&apos;, u&apos;Source/WebCore/inspector/InspectorConsoleAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorConsoleAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorController.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorController.h&apos;, u&apos;Source/WebCore/inspector/InspectorDOMAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDOMAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDOMDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDOMDebuggerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDOMStorageAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDOMStorageAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDatabaseAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDatabaseAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDatabaseResource.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDebuggerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorForwarding.h&apos;, u&apos;Source/WebCore/inspector/InspectorFrontendClientLocal.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorFrontendHost.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorHeapProfilerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorHeapProfilerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorIndexedDBAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorIndexedDBAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorInputAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorInputAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorInstrumentation.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorLayerTreeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorLayerTreeAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorMemoryAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorMemoryAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorOverlay.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorOverlay.h&apos;, u&apos;Source/WebCore/inspector/InspectorPageAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorPageAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorProfilerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorProfilerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorResourceAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorResourceAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorRuntimeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorRuntimeAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorStyleSheet.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorStyleSheet.h&apos;, u&apos;Source/WebCore/inspector/InspectorStyleTextEditor.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorTimelineAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorTimelineAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorValues.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorValues.h&apos;, u&apos;Source/WebCore/inspector/InspectorWebAgentBase.h&apos;, u&apos;Source/WebCore/inspector/InspectorWorkerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorWorkerAgent.h&apos;, u&apos;Source/WebCore/inspector/InstrumentingAgents.cpp&apos;, u&apos;Source/WebCore/inspector/NetworkResourcesData.cpp&apos;, u&apos;Source/WebCore/inspector/PageConsoleAgent.cpp&apos;, u&apos;Source/WebCore/inspector/PageDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/PageDebuggerAgent.h&apos;, u&apos;Source/WebCore/inspector/PageRuntimeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/PageRuntimeAgent.h&apos;, u&apos;Source/WebCore/inspector/ScriptArguments.cpp&apos;, u&apos;Source/WebCore/inspector/ScriptCallFrame.cpp&apos;, u&apos;Source/WebCore/inspector/ScriptCallFrame.h&apos;, u&apos;Source/WebCore/inspector/ScriptCallStack.cpp&apos;, u&apos;Source/WebCore/inspector/ScriptCallStack.h&apos;, u&apos;Source/WebCore/inspector/TimelineRecordFactory.cpp&apos;, u&apos;Source/WebCore/inspector/TimelineRecordFactory.h&apos;, u&apos;Source/WebCore/inspector/WorkerConsoleAgent.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerInspectorController.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerInspectorController.h&apos;, u&apos;Source/WebCore/inspector/WorkerRuntimeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerRuntimeAgent.h&apos;, u&apos;Source/WebCore/page/ContentSecurityPolicy.cpp&apos;, u&apos;Source/WebCore/testing/Internals.cpp&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebInspector.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebInspector.h&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/inspector/CodeGeneratorInspector.py:265:  [RawTypes.BaseType.get_raw_validator_call_text] Class &apos;BaseType&apos; has no &apos;get_validate_method_params&apos; member  [pylint/E1101] [5]
ERROR: Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:54:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorCSSAgent.cpp:620:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorRuntimeAgent.cpp:63:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:45:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:46:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:47:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:48:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:49:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:50:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:51:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:52:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:53:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:54:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:55:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:56:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:92:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:388:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:426:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:429:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:472:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:473:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:510:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:611:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:615:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:701:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:709:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
ERROR: Source/WebCore/inspector/InspectorTimelineAgent.cpp:585:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorBackendDispatcher.h:43:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorBackendDispatcher.h:97:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:50:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:73:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:87:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:110:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:111:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:112:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:130:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:131:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/inspector/InspectorIndexedDBAgent.cpp:561:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorWorkerAgent.cpp:112:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp:50:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorStyleSheet.h:66:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/inspector/InspectorCanvasAgent.cpp:67:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorMemoryAgent.cpp:90:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorHeapProfilerAgent.cpp:54:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDebuggerAgent.cpp:60:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorPageAgent.cpp:356:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDOMAgent.cpp:215:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorConsoleAgent.cpp:64:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorProfilerAgent.cpp:124:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorResourceAgent.cpp:654:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDatabaseAgent.cpp:214:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorAgent.cpp:63:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDOMDebuggerAgent.cpp:74:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorInputAgent.cpp:57:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDOMStorageAgent.cpp:60:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
Total errors found: 56 in 123 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>957444</commentid>
    <comment_count>14</comment_count>
      <attachid>218637</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-06 17:43:10 -0800</bug_when>
    <thetext>Created attachment 218637
[PATCH] PART 2: ScriptObject, ScriptValue (namespace Deprecated)

This uses namespace Deprecated for ScriptObject and ScriptValue, and I use fully qualified Deprecated::ScriptObject and Deprecated::ScriptValue everywhere in WebCore and later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957445</commentid>
    <comment_count>15</comment_count>
      <attachid>218638</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-06 17:44:18 -0800</bug_when>
    <thetext>Created attachment 218638
[PATCH] For Bots 2 (parts 1 and 2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957457</commentid>
    <comment_count>16</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-06 18:49:18 -0800</bug_when>
    <thetext>I don&apos;t understand how to fix the Windows build failures seen on the bots. On example:

     1&gt;WebCore.lib(InspectorAllInOne.obj) : error LNK2019: unresolved external symbol &quot;public: bool __thiscall Inspector::InspectorBackendDispatcher::CallbackBase::isActive(void)const &quot; (?isActive@CallbackBase@InspectorBackendDispatcher@Inspector@@QBE_NXZ) referenced in function &quot;public: virtual bool __thiscall WebCore::`anonymous namespace&apos;::TransactionCallback::handleEvent(class WebCore::SQLTransaction *)&quot; (?handleEvent@TransactionCallback@?A0x62791c0a@WebCore@@UAE_NPAVSQLTransaction@3@@Z)

Brent, any idea? Do I have to export the Inspector symbols for Windows somehow?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958009</commentid>
    <comment_count>17</comment_count>
      <attachid>218779</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-09 11:26:02 -0800</bug_when>
    <thetext>Created attachment 218779
[PATCH] For Bots 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958013</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-09 11:28:04 -0800</bug_when>
    <thetext>Attachment 218779 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.am&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/copy-files.cmd&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptFunctionCall.cpp&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptFunctionCall.h&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptObject.cpp&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptObject.h&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptValue.cpp&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptValue.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorAgentBase.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorAgentRegistry.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorAgentRegistry.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorBackendDispatcher.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorBackendDispatcher.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorValues.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorValues.h&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/ForwardingHeaders/bindings/ScriptFunctionCall.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/bindings/ScriptObject.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/bindings/ScriptValue.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorAgentBase.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorAgentRegistry.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorBackendDispatcher.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorValues.h&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBAny.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBAny.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBCursor.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBCursor.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBFactory.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBFactory.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBIndex.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBIndex.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBKeyRange.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBKeyRange.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBObjectStore.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBRequest.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBRequest.h&apos;, u&apos;Source/WebCore/Modules/mediastream/CapabilityRange.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/CapabilityRange.h&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaTrackConstraint.h&apos;, u&apos;Source/WebCore/Modules/plugins/QuickTimePluginReplacement.cpp&apos;, u&apos;Source/WebCore/Modules/plugins/QuickTimePluginReplacement.h&apos;, u&apos;Source/WebCore/UseJSC.cmake&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/bindings/js/Dictionary.h&apos;, u&apos;Source/WebCore/bindings/js/IDBBindingUtilities.cpp&apos;, u&apos;Source/WebCore/bindings/js/IDBBindingUtilities.h&apos;, u&apos;Source/WebCore/bindings/js/JSBindingsAllInOne.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDictionary.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDictionary.h&apos;, u&apos;Source/WebCore/bindings/js/JSHTMLCanvasElementCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSInjectedScriptHostCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSInjectedScriptManager.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSMainThreadExecState.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSMainThreadExecState.h&apos;, u&apos;Source/WebCore/bindings/js/JSMessageEventCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScheduledAction.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptCallStackFactory.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptController.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptController.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptDebugServer.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptDebugServer.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptFunctionCall.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptFunctionCall.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptGlobalObject.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptGlobalObject.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptObject.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptObject.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptProfile.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptProfile.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptProfiler.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptProfiler.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptState.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptValue.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptValue.h&apos;, u&apos;Source/WebCore/bindings/js/SerializedScriptValue.cpp&apos;, u&apos;Source/WebCore/bindings/js/SerializedScriptValue.h&apos;, u&apos;Source/WebCore/bindings/js/WorkerScriptController.cpp&apos;, u&apos;Source/WebCore/bindings/js/WorkerScriptController.h&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorJS.pm&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp&apos;, u&apos;Source/WebCore/dom/CustomEvent.cpp&apos;, u&apos;Source/WebCore/dom/CustomEvent.h&apos;, u&apos;Source/WebCore/dom/MessageEvent.cpp&apos;, u&apos;Source/WebCore/dom/MessageEvent.h&apos;, u&apos;Source/WebCore/dom/PopStateEvent.h&apos;, u&apos;Source/WebCore/dom/ScriptElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.cpp&apos;, u&apos;Source/WebCore/html/parser/XSSAuditor.cpp&apos;, u&apos;Source/WebCore/html/parser/XSSAuditorDelegate.cpp&apos;, u&apos;Source/WebCore/inspector/CodeGeneratorInspector.py&apos;, u&apos;Source/WebCore/inspector/CodeGeneratorInspectorStrings.py&apos;, u&apos;Source/WebCore/inspector/ConsoleMessage.cpp&apos;, u&apos;Source/WebCore/inspector/ConsoleMessage.h&apos;, u&apos;Source/WebCore/inspector/ContentSearchUtils.cpp&apos;, u&apos;Source/WebCore/inspector/ContentSearchUtils.h&apos;, u&apos;Source/WebCore/inspector/InjectedScript.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScript.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptBase.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptBase.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptCanvasModule.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptCanvasModule.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptHost.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptHost.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptManager.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptManager.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptModule.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorAgentRegistry.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorAgentRegistry.h&apos;, u&apos;Source/WebCore/inspector/InspectorAllInOne.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorApplicationCacheAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorBackendDispatcher.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorBackendDispatcher.h&apos;, u&apos;Source/WebCore/inspector/InspectorBaseAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorCSSAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorCSSAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorCanvasAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorCanvasAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorCanvasInstrumentation.h&apos;, u&apos;Source/WebCore/inspector/InspectorClient.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorClient.h&apos;, u&apos;Source/WebCore/inspector/InspectorConsoleAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorConsoleAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorController.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorController.h&apos;, u&apos;Source/WebCore/inspector/InspectorDOMAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDOMAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDOMDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDOMDebuggerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDOMStorageAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDOMStorageAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDatabaseAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDatabaseAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDatabaseResource.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDebuggerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorForwarding.h&apos;, u&apos;Source/WebCore/inspector/InspectorFrontendClientLocal.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorFrontendHost.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorHeapProfilerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorHeapProfilerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorIndexedDBAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorIndexedDBAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorInputAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorInputAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorInstrumentation.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorInstrumentation.h&apos;, u&apos;Source/WebCore/inspector/InspectorLayerTreeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorLayerTreeAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorMemoryAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorMemoryAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorOverlay.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorOverlay.h&apos;, u&apos;Source/WebCore/inspector/InspectorPageAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorPageAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorProfilerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorProfilerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorResourceAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorResourceAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorRuntimeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorRuntimeAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorStyleSheet.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorStyleSheet.h&apos;, u&apos;Source/WebCore/inspector/InspectorStyleTextEditor.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorTimelineAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorTimelineAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorValues.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorValues.h&apos;, u&apos;Source/WebCore/inspector/InspectorWebAgentBase.h&apos;, u&apos;Source/WebCore/inspector/InspectorWorkerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorWorkerAgent.h&apos;, u&apos;Source/WebCore/inspector/InstrumentingAgents.cpp&apos;, u&apos;Source/WebCore/inspector/NetworkResourcesData.cpp&apos;, u&apos;Source/WebCore/inspector/PageConsoleAgent.cpp&apos;, u&apos;Source/WebCore/inspector/PageDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/PageDebuggerAgent.h&apos;, u&apos;Source/WebCore/inspector/PageRuntimeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/PageRuntimeAgent.h&apos;, u&apos;Source/WebCore/inspector/ScriptArguments.cpp&apos;, u&apos;Source/WebCore/inspector/ScriptArguments.h&apos;, u&apos;Source/WebCore/inspector/ScriptCallFrame.cpp&apos;, u&apos;Source/WebCore/inspector/ScriptCallFrame.h&apos;, u&apos;Source/WebCore/inspector/ScriptCallStack.cpp&apos;, u&apos;Source/WebCore/inspector/ScriptCallStack.h&apos;, u&apos;Source/WebCore/inspector/ScriptDebugListener.h&apos;, u&apos;Source/WebCore/inspector/TimelineRecordFactory.cpp&apos;, u&apos;Source/WebCore/inspector/TimelineRecordFactory.h&apos;, u&apos;Source/WebCore/inspector/WorkerConsoleAgent.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerInspectorController.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerInspectorController.h&apos;, u&apos;Source/WebCore/inspector/WorkerRuntimeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerRuntimeAgent.h&apos;, u&apos;Source/WebCore/page/Console.cpp&apos;, u&apos;Source/WebCore/page/ContentSecurityPolicy.cpp&apos;, u&apos;Source/WebCore/page/Frame.cpp&apos;, u&apos;Source/WebCore/page/PageConsole.cpp&apos;, u&apos;Source/WebCore/plugins/PluginView.cpp&apos;, u&apos;Source/WebCore/testing/Internals.cpp&apos;, u&apos;Source/WebCore/testing/Internals.h&apos;, u&apos;Source/WebCore/workers/SharedWorkerGlobalScope.cpp&apos;, u&apos;Source/WebCore/workers/WorkerGlobalScope.cpp&apos;, u&apos;Source/WebCore/workers/WorkerThread.cpp&apos;, u&apos;Source/WebCore/xml/XMLTreeViewer.cpp&apos;, u&apos;Source/WebCore/xml/parser/XMLDocumentParser.cpp&apos;, u&apos;Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp&apos;, u&apos;Source/WebKit/blackberry/Api/WebPage.cpp&apos;, u&apos;Source/WebKit/blackberry/ChangeLog&apos;, u&apos;Source/WebKit/efl/ChangeLog&apos;, u&apos;Source/WebKit/efl/ewk/ewk_frame.cpp&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/WebKit/gtk/webkit/webkitwebview.cpp&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebInspectorClient.mm&apos;, u&apos;Source/WebKit/win/ChangeLog&apos;, u&apos;Source/WebKit/win/WebFrame.cpp&apos;, u&apos;Source/WebKit/win/WebView.cpp&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PluginView.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebInspector.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebInspector.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.cpp&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/inspector/CodeGeneratorInspector.py:265:  [RawTypes.BaseType.get_raw_validator_call_text] Class &apos;BaseType&apos; has no &apos;get_validate_method_params&apos; member  [pylint/E1101] [5]
ERROR: Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:54:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/bindings/ScriptObject.h:44:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/inspector/InspectorRuntimeAgent.cpp:63:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:45:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:46:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:47:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:48:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:49:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:50:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:51:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:52:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:53:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:54:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:55:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:56:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:92:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:388:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:426:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:429:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:472:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:473:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:510:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:611:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:615:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:701:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:709:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
ERROR: Source/WebCore/inspector/InspectorTimelineAgent.cpp:585:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/bindings/ScriptValue.h:51:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/inspector/InspectorDOMAgent.cpp:215:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorBackendDispatcher.h:43:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorBackendDispatcher.h:97:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/bindings/js/JSMainThreadExecState.cpp:51:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:50:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:73:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:87:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:110:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:111:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:112:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:130:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:131:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/inspector/InspectorProfilerAgent.cpp:124:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InjectedScript.h:76:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/bindings/ScriptFunctionCall.h:47:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bindings/ScriptFunctionCall.h:56:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/bindings/ScriptFunctionCall.h:75:  The parameter name &quot;handler&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/inspector/InspectorWorkerAgent.cpp:112:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorIndexedDBAgent.cpp:561:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorCSSAgent.cpp:620:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/bindings/ScriptObject.cpp:40:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/bindings/ScriptObject.cpp:46:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorCanvasAgent.cpp:67:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorMemoryAgent.cpp:90:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorHeapProfilerAgent.cpp:54:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDebuggerAgent.cpp:61:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorPageAgent.cpp:356:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorInputAgent.cpp:57:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorConsoleAgent.cpp:64:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorResourceAgent.cpp:654:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorStyleSheet.h:66:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/inspector/InspectorDatabaseAgent.cpp:214:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/bindings/js/JSMainThreadExecState.h:111:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/bindings/js/JSMainThreadExecState.h:111:  The parameter name &quot;callType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/bindings/js/JSMainThreadExecState.h:111:  The parameter name &quot;callData&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bindings/ScriptFunctionCall.cpp:86:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp:50:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorAgent.cpp:62:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDOMDebuggerAgent.cpp:74:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDOMStorageAgent.cpp:60:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
Total errors found: 69 in 212 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>958028</commentid>
    <comment_count>19</comment_count>
      <attachid>218779</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-09 11:50:26 -0800</bug_when>
    <thetext>Comment on attachment 218779
[PATCH] For Bots 3

Attachment 218779 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/47298166</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958039</commentid>
    <comment_count>20</comment_count>
      <attachid>218779</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-12-09 12:14:11 -0800</bug_when>
    <thetext>Comment on attachment 218779
[PATCH] For Bots 3

Attachment 218779 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/45898180</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958059</commentid>
    <comment_count>21</comment_count>
      <attachid>218779</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-09 12:51:27 -0800</bug_when>
    <thetext>Comment on attachment 218779
[PATCH] For Bots 3

Attachment 218779 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/47248179</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958065</commentid>
    <comment_count>22</comment_count>
      <attachid>218794</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-09 13:09:47 -0800</bug_when>
    <thetext>Created attachment 218794
[PATCH] For Bots 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958068</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-09 13:13:10 -0800</bug_when>
    <thetext>Attachment 218794 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.am&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/copy-files.cmd&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptFunctionCall.cpp&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptFunctionCall.h&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptObject.cpp&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptObject.h&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptValue.cpp&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptValue.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorAgentBase.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorAgentRegistry.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorAgentRegistry.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorBackendDispatcher.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorBackendDispatcher.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorValues.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorValues.h&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/ForwardingHeaders/bindings/ScriptFunctionCall.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/bindings/ScriptObject.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/bindings/ScriptValue.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorAgentBase.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorAgentRegistry.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorBackendDispatcher.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorValues.h&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBAny.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBAny.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBCursor.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBCursor.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBFactory.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBFactory.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBIndex.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBIndex.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBKeyRange.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBKeyRange.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBObjectStore.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBRequest.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBRequest.h&apos;, u&apos;Source/WebCore/Modules/mediastream/CapabilityRange.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/CapabilityRange.h&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaTrackConstraint.h&apos;, u&apos;Source/WebCore/Modules/plugins/QuickTimePluginReplacement.cpp&apos;, u&apos;Source/WebCore/Modules/plugins/QuickTimePluginReplacement.h&apos;, u&apos;Source/WebCore/UseJSC.cmake&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/bindings/js/Dictionary.h&apos;, u&apos;Source/WebCore/bindings/js/IDBBindingUtilities.cpp&apos;, u&apos;Source/WebCore/bindings/js/IDBBindingUtilities.h&apos;, u&apos;Source/WebCore/bindings/js/JSBindingsAllInOne.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDictionary.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDictionary.h&apos;, u&apos;Source/WebCore/bindings/js/JSHTMLCanvasElementCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSInjectedScriptHostCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSInjectedScriptManager.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSMainThreadExecState.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSMainThreadExecState.h&apos;, u&apos;Source/WebCore/bindings/js/JSMessageEventCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScheduledAction.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptCallStackFactory.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptController.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptController.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptDebugServer.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptDebugServer.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptFunctionCall.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptFunctionCall.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptGlobalObject.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptGlobalObject.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptObject.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptObject.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptProfile.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptProfile.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptProfiler.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptProfiler.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptState.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptValue.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptValue.h&apos;, u&apos;Source/WebCore/bindings/js/SerializedScriptValue.cpp&apos;, u&apos;Source/WebCore/bindings/js/SerializedScriptValue.h&apos;, u&apos;Source/WebCore/bindings/js/WorkerScriptController.cpp&apos;, u&apos;Source/WebCore/bindings/js/WorkerScriptController.h&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorJS.pm&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp&apos;, u&apos;Source/WebCore/dom/CustomEvent.cpp&apos;, u&apos;Source/WebCore/dom/CustomEvent.h&apos;, u&apos;Source/WebCore/dom/MessageEvent.cpp&apos;, u&apos;Source/WebCore/dom/MessageEvent.h&apos;, u&apos;Source/WebCore/dom/PopStateEvent.h&apos;, u&apos;Source/WebCore/dom/ScriptElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.cpp&apos;, u&apos;Source/WebCore/html/parser/XSSAuditor.cpp&apos;, u&apos;Source/WebCore/html/parser/XSSAuditorDelegate.cpp&apos;, u&apos;Source/WebCore/inspector/CodeGeneratorInspector.py&apos;, u&apos;Source/WebCore/inspector/CodeGeneratorInspectorStrings.py&apos;, u&apos;Source/WebCore/inspector/ConsoleMessage.cpp&apos;, u&apos;Source/WebCore/inspector/ConsoleMessage.h&apos;, u&apos;Source/WebCore/inspector/ContentSearchUtils.cpp&apos;, u&apos;Source/WebCore/inspector/ContentSearchUtils.h&apos;, u&apos;Source/WebCore/inspector/InjectedScript.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScript.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptBase.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptBase.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptCanvasModule.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptCanvasModule.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptHost.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptHost.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptManager.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptManager.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptModule.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorAgentRegistry.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorAgentRegistry.h&apos;, u&apos;Source/WebCore/inspector/InspectorAllInOne.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorApplicationCacheAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorBackendDispatcher.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorBackendDispatcher.h&apos;, u&apos;Source/WebCore/inspector/InspectorBaseAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorCSSAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorCSSAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorCanvasAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorCanvasAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorCanvasInstrumentation.h&apos;, u&apos;Source/WebCore/inspector/InspectorClient.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorClient.h&apos;, u&apos;Source/WebCore/inspector/InspectorConsoleAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorConsoleAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorController.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorController.h&apos;, u&apos;Source/WebCore/inspector/InspectorDOMAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDOMAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDOMDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDOMDebuggerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDOMStorageAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDOMStorageAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDatabaseAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDatabaseAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDatabaseResource.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDebuggerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorForwarding.h&apos;, u&apos;Source/WebCore/inspector/InspectorFrontendClientLocal.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorFrontendHost.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorHeapProfilerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorHeapProfilerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorIndexedDBAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorIndexedDBAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorInputAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorInputAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorInstrumentation.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorInstrumentation.h&apos;, u&apos;Source/WebCore/inspector/InspectorLayerTreeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorLayerTreeAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorMemoryAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorMemoryAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorOverlay.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorOverlay.h&apos;, u&apos;Source/WebCore/inspector/InspectorPageAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorPageAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorProfilerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorProfilerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorResourceAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorResourceAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorRuntimeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorRuntimeAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorStyleSheet.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorStyleSheet.h&apos;, u&apos;Source/WebCore/inspector/InspectorStyleTextEditor.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorTimelineAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorTimelineAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorValues.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorValues.h&apos;, u&apos;Source/WebCore/inspector/InspectorWebAgentBase.h&apos;, u&apos;Source/WebCore/inspector/InspectorWorkerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorWorkerAgent.h&apos;, u&apos;Source/WebCore/inspector/InstrumentingAgents.cpp&apos;, u&apos;Source/WebCore/inspector/NetworkResourcesData.cpp&apos;, u&apos;Source/WebCore/inspector/PageConsoleAgent.cpp&apos;, u&apos;Source/WebCore/inspector/PageDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/PageDebuggerAgent.h&apos;, u&apos;Source/WebCore/inspector/PageRuntimeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/PageRuntimeAgent.h&apos;, u&apos;Source/WebCore/inspector/ScriptArguments.cpp&apos;, u&apos;Source/WebCore/inspector/ScriptArguments.h&apos;, u&apos;Source/WebCore/inspector/ScriptCallFrame.cpp&apos;, u&apos;Source/WebCore/inspector/ScriptCallFrame.h&apos;, u&apos;Source/WebCore/inspector/ScriptCallStack.cpp&apos;, u&apos;Source/WebCore/inspector/ScriptCallStack.h&apos;, u&apos;Source/WebCore/inspector/ScriptDebugListener.h&apos;, u&apos;Source/WebCore/inspector/TimelineRecordFactory.cpp&apos;, u&apos;Source/WebCore/inspector/TimelineRecordFactory.h&apos;, u&apos;Source/WebCore/inspector/WorkerConsoleAgent.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerInspectorController.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerInspectorController.h&apos;, u&apos;Source/WebCore/inspector/WorkerRuntimeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerRuntimeAgent.h&apos;, u&apos;Source/WebCore/page/Console.cpp&apos;, u&apos;Source/WebCore/page/ContentSecurityPolicy.cpp&apos;, u&apos;Source/WebCore/page/Frame.cpp&apos;, u&apos;Source/WebCore/page/PageConsole.cpp&apos;, u&apos;Source/WebCore/plugins/PluginView.cpp&apos;, u&apos;Source/WebCore/testing/Internals.cpp&apos;, u&apos;Source/WebCore/testing/Internals.h&apos;, u&apos;Source/WebCore/workers/SharedWorkerGlobalScope.cpp&apos;, u&apos;Source/WebCore/workers/WorkerGlobalScope.cpp&apos;, u&apos;Source/WebCore/workers/WorkerThread.cpp&apos;, u&apos;Source/WebCore/xml/XMLTreeViewer.cpp&apos;, u&apos;Source/WebCore/xml/parser/XMLDocumentParser.cpp&apos;, u&apos;Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp&apos;, u&apos;Source/WebKit/blackberry/Api/WebPage.cpp&apos;, u&apos;Source/WebKit/blackberry/ChangeLog&apos;, u&apos;Source/WebKit/efl/ChangeLog&apos;, u&apos;Source/WebKit/efl/WebCoreSupport/DumpRenderTreeSupportEfl.cpp&apos;, u&apos;Source/WebKit/efl/ewk/ewk_frame.cpp&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/WebKit/gtk/webkit/webkitwebview.cpp&apos;, u&apos;Source/WebKit/mac/Plugins/Hosted/NetscapePluginInstanceProxy.mm&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebInspectorClient.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebFrame.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebView.mm&apos;, u&apos;Source/WebKit/win/ChangeLog&apos;, u&apos;Source/WebKit/win/WebFrame.cpp&apos;, u&apos;Source/WebKit/win/WebView.cpp&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PluginView.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebInspector.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebInspector.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.cpp&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/inspector/CodeGeneratorInspector.py:265:  [RawTypes.BaseType.get_raw_validator_call_text] Class &apos;BaseType&apos; has no &apos;get_validate_method_params&apos; member  [pylint/E1101] [5]
ERROR: Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:54:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/bindings/ScriptObject.h:44:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/inspector/InspectorRuntimeAgent.cpp:63:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:45:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:46:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:47:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:48:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:49:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:50:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:51:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:52:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:53:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:54:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:55:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:56:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:92:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:388:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:426:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:429:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:472:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:473:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:510:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:611:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:615:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:701:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:709:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
ERROR: Source/WebCore/inspector/InspectorTimelineAgent.cpp:585:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/bindings/ScriptValue.h:51:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/inspector/InspectorDOMAgent.cpp:215:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorBackendDispatcher.h:43:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorBackendDispatcher.h:97:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/bindings/js/JSMainThreadExecState.cpp:51:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:50:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:73:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:87:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:110:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:111:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:112:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:130:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:131:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/inspector/InspectorProfilerAgent.cpp:124:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InjectedScript.h:76:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/bindings/ScriptFunctionCall.h:47:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bindings/ScriptFunctionCall.h:56:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/bindings/ScriptFunctionCall.h:75:  The parameter name &quot;handler&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/inspector/InspectorWorkerAgent.cpp:112:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorIndexedDBAgent.cpp:561:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorCSSAgent.cpp:620:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/bindings/ScriptObject.cpp:40:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/bindings/ScriptObject.cpp:46:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorCanvasAgent.cpp:67:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorMemoryAgent.cpp:90:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorHeapProfilerAgent.cpp:54:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDebuggerAgent.cpp:61:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorPageAgent.cpp:356:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorInputAgent.cpp:57:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorConsoleAgent.cpp:64:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorResourceAgent.cpp:654:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorStyleSheet.h:66:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/inspector/InspectorDatabaseAgent.cpp:214:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/bindings/js/JSMainThreadExecState.h:111:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/bindings/js/JSMainThreadExecState.h:111:  The parameter name &quot;callType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/bindings/js/JSMainThreadExecState.h:111:  The parameter name &quot;callData&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bindings/ScriptFunctionCall.cpp:86:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp:50:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorAgent.cpp:62:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDOMDebuggerAgent.cpp:74:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDOMStorageAgent.cpp:60:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
Total errors found: 69 in 216 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>958073</commentid>
    <comment_count>24</comment_count>
      <attachid>218796</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-09 13:48:15 -0800</bug_when>
    <thetext>Created attachment 218796
[PATCH] For Bots 5

This one contains all the parts, since it looks good for parts 1-3!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958074</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-09 13:51:47 -0800</bug_when>
    <thetext>Attachment 218796 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.am&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/copy-files.cmd&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptFunctionCall.cpp&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptFunctionCall.h&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptObject.cpp&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptObject.h&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptValue.cpp&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptValue.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorAgentBase.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorAgentRegistry.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorAgentRegistry.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorBackendDispatcher.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorBackendDispatcher.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorTypeBuilder.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorValues.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorValues.h&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/ForwardingHeaders/bindings/ScriptFunctionCall.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/bindings/ScriptObject.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/bindings/ScriptValue.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorAgentBase.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorAgentRegistry.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorBackendDispatcher.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorTypeBuilder.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorValues.h&apos;, u&apos;Source/WebCore/GNUmakefile.am&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBAny.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBAny.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBCursor.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBCursor.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBFactory.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBFactory.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBIndex.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBIndex.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBKeyRange.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBKeyRange.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBObjectStore.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBRequest.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBRequest.h&apos;, u&apos;Source/WebCore/Modules/mediastream/CapabilityRange.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/CapabilityRange.h&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaTrackConstraint.h&apos;, u&apos;Source/WebCore/Modules/plugins/QuickTimePluginReplacement.cpp&apos;, u&apos;Source/WebCore/Modules/plugins/QuickTimePluginReplacement.h&apos;, u&apos;Source/WebCore/UseJSC.cmake&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/bindings/js/Dictionary.h&apos;, u&apos;Source/WebCore/bindings/js/IDBBindingUtilities.cpp&apos;, u&apos;Source/WebCore/bindings/js/IDBBindingUtilities.h&apos;, u&apos;Source/WebCore/bindings/js/JSBindingsAllInOne.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDictionary.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDictionary.h&apos;, u&apos;Source/WebCore/bindings/js/JSHTMLCanvasElementCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSInjectedScriptHostCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSInjectedScriptManager.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSMainThreadExecState.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSMainThreadExecState.h&apos;, u&apos;Source/WebCore/bindings/js/JSMessageEventCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScheduledAction.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptCallStackFactory.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptController.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptController.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptDebugServer.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptDebugServer.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptFunctionCall.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptFunctionCall.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptGlobalObject.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptGlobalObject.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptObject.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptObject.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptProfile.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptProfile.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptProfiler.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptProfiler.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptState.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptValue.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptValue.h&apos;, u&apos;Source/WebCore/bindings/js/SerializedScriptValue.cpp&apos;, u&apos;Source/WebCore/bindings/js/SerializedScriptValue.h&apos;, u&apos;Source/WebCore/bindings/js/WorkerScriptController.cpp&apos;, u&apos;Source/WebCore/bindings/js/WorkerScriptController.h&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorJS.pm&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp&apos;, u&apos;Source/WebCore/dom/CustomEvent.cpp&apos;, u&apos;Source/WebCore/dom/CustomEvent.h&apos;, u&apos;Source/WebCore/dom/MessageEvent.cpp&apos;, u&apos;Source/WebCore/dom/MessageEvent.h&apos;, u&apos;Source/WebCore/dom/PopStateEvent.h&apos;, u&apos;Source/WebCore/dom/ScriptElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.cpp&apos;, u&apos;Source/WebCore/html/parser/XSSAuditor.cpp&apos;, u&apos;Source/WebCore/html/parser/XSSAuditorDelegate.cpp&apos;, u&apos;Source/WebCore/inspector/CodeGeneratorInspector.py&apos;, u&apos;Source/WebCore/inspector/CodeGeneratorInspectorStrings.py&apos;, u&apos;Source/WebCore/inspector/ConsoleMessage.cpp&apos;, u&apos;Source/WebCore/inspector/ConsoleMessage.h&apos;, u&apos;Source/WebCore/inspector/ContentSearchUtils.cpp&apos;, u&apos;Source/WebCore/inspector/ContentSearchUtils.h&apos;, u&apos;Source/WebCore/inspector/InjectedScript.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScript.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptBase.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptBase.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptCanvasModule.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptCanvasModule.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptHost.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptHost.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptManager.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptManager.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptModule.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorAgentRegistry.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorAgentRegistry.h&apos;, u&apos;Source/WebCore/inspector/InspectorAllInOne.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorApplicationCacheAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorBackendDispatcher.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorBackendDispatcher.h&apos;, u&apos;Source/WebCore/inspector/InspectorBaseAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorCSSAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorCSSAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorCanvasAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorCanvasAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorCanvasInstrumentation.h&apos;, u&apos;Source/WebCore/inspector/InspectorClient.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorClient.h&apos;, u&apos;Source/WebCore/inspector/InspectorConsoleAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorConsoleAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorController.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorController.h&apos;, u&apos;Source/WebCore/inspector/InspectorDOMAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDOMAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDOMDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDOMDebuggerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDOMStorageAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDOMStorageAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDatabaseAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDatabaseAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDatabaseResource.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDebuggerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorForwarding.h&apos;, u&apos;Source/WebCore/inspector/InspectorFrontendClientLocal.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorFrontendHost.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorHeapProfilerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorHeapProfilerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorIndexedDBAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorIndexedDBAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorInputAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorInputAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorInstrumentation.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorInstrumentation.h&apos;, u&apos;Source/WebCore/inspector/InspectorLayerTreeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorLayerTreeAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorMemoryAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorMemoryAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorOverlay.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorOverlay.h&apos;, u&apos;Source/WebCore/inspector/InspectorPageAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorPageAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorProfilerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorProfilerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorResourceAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorResourceAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorRuntimeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorRuntimeAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorStyleSheet.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorStyleSheet.h&apos;, u&apos;Source/WebCore/inspector/InspectorStyleTextEditor.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorTimelineAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorTimelineAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorValues.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorValues.h&apos;, u&apos;Source/WebCore/inspector/InspectorWebAgentBase.h&apos;, u&apos;Source/WebCore/inspector/InspectorWorkerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorWorkerAgent.h&apos;, u&apos;Source/WebCore/inspector/InstrumentingAgents.cpp&apos;, u&apos;Source/WebCore/inspector/NetworkResourcesData.cpp&apos;, u&apos;Source/WebCore/inspector/PageConsoleAgent.cpp&apos;, u&apos;Source/WebCore/inspector/PageDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/PageDebuggerAgent.h&apos;, u&apos;Source/WebCore/inspector/PageRuntimeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/PageRuntimeAgent.h&apos;, u&apos;Source/WebCore/inspector/ScriptArguments.cpp&apos;, u&apos;Source/WebCore/inspector/ScriptArguments.h&apos;, u&apos;Source/WebCore/inspector/ScriptCallFrame.cpp&apos;, u&apos;Source/WebCore/inspector/ScriptCallFrame.h&apos;, u&apos;Source/WebCore/inspector/ScriptCallStack.cpp&apos;, u&apos;Source/WebCore/inspector/ScriptCallStack.h&apos;, u&apos;Source/WebCore/inspector/ScriptDebugListener.h&apos;, u&apos;Source/WebCore/inspector/TimelineRecordFactory.cpp&apos;, u&apos;Source/WebCore/inspector/TimelineRecordFactory.h&apos;, u&apos;Source/WebCore/inspector/WorkerConsoleAgent.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerInspectorController.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerInspectorController.h&apos;, u&apos;Source/WebCore/inspector/WorkerRuntimeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerRuntimeAgent.h&apos;, u&apos;Source/WebCore/page/Console.cpp&apos;, u&apos;Source/WebCore/page/ContentSecurityPolicy.cpp&apos;, u&apos;Source/WebCore/page/Frame.cpp&apos;, u&apos;Source/WebCore/page/PageConsole.cpp&apos;, u&apos;Source/WebCore/plugins/PluginView.cpp&apos;, u&apos;Source/WebCore/testing/Internals.cpp&apos;, u&apos;Source/WebCore/testing/Internals.h&apos;, u&apos;Source/WebCore/workers/SharedWorkerGlobalScope.cpp&apos;, u&apos;Source/WebCore/workers/WorkerGlobalScope.cpp&apos;, u&apos;Source/WebCore/workers/WorkerThread.cpp&apos;, u&apos;Source/WebCore/xml/XMLTreeViewer.cpp&apos;, u&apos;Source/WebCore/xml/parser/XMLDocumentParser.cpp&apos;, u&apos;Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp&apos;, u&apos;Source/WebKit/blackberry/Api/WebPage.cpp&apos;, u&apos;Source/WebKit/blackberry/ChangeLog&apos;, u&apos;Source/WebKit/efl/ChangeLog&apos;, u&apos;Source/WebKit/efl/WebCoreSupport/DumpRenderTreeSupportEfl.cpp&apos;, u&apos;Source/WebKit/efl/ewk/ewk_frame.cpp&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/WebKit/gtk/webkit/webkitwebview.cpp&apos;, u&apos;Source/WebKit/mac/Plugins/Hosted/NetscapePluginInstanceProxy.mm&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebInspectorClient.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebFrame.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebView.mm&apos;, u&apos;Source/WebKit/win/ChangeLog&apos;, u&apos;Source/WebKit/win/WebFrame.cpp&apos;, u&apos;Source/WebKit/win/WebView.cpp&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PluginView.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebInspector.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebInspector.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.cpp&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/inspector/CodeGeneratorInspector.py:265:  [RawTypes.BaseType.get_raw_validator_call_text] Class &apos;BaseType&apos; has no &apos;get_validate_method_params&apos; member  [pylint/E1101] [5]
ERROR: Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:54:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/bindings/ScriptObject.h:44:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/inspector/InspectorCSSAgent.h:117:  The parameter name &quot;pseudoIdMatches&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/inspector/InspectorRuntimeAgent.h:76:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InspectorRuntimeAgent.h:77:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InspectorRuntimeAgent.cpp:63:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:45:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:46:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:47:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:48:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:49:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:50:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:51:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:52:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:53:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:54:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:55:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:56:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:92:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:388:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:426:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:429:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:472:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:473:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:510:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:611:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:615:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:701:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:709:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
ERROR: Source/WebCore/inspector/InspectorTimelineAgent.cpp:585:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/bindings/ScriptValue.h:51:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/inspector/InspectorDOMAgent.cpp:215:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorBackendDispatcher.h:43:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorBackendDispatcher.h:97:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/bindings/js/JSMainThreadExecState.cpp:51:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:50:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:73:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:87:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:110:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:111:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:112:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:130:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:131:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/inspector/InspectorProfilerAgent.cpp:124:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InjectedScript.h:65:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InjectedScript.h:66:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InjectedScript.h:76:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InjectedScript.h:83:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InjectedScript.h:84:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/bindings/ScriptFunctionCall.h:47:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bindings/ScriptFunctionCall.h:56:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/bindings/ScriptFunctionCall.h:75:  The parameter name &quot;handler&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/inspector/InspectorWorkerAgent.cpp:112:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorIndexedDBAgent.cpp:561:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorCSSAgent.cpp:620:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorTypeBuilder.h:43:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorTypeBuilder.h:72:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorTypeBuilder.h:81:  cast_to_int is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorTypeBuilder.h:85:  ExactlyInt::cast_to_int is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorTypeBuilder.h:88:  ExactlyInt::cast_to_int is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorTypeBuilder.h:88:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/bindings/ScriptObject.cpp:40:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/bindings/ScriptObject.cpp:46:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorCanvasAgent.cpp:67:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorMemoryAgent.cpp:90:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorHeapProfilerAgent.cpp:54:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDebuggerAgent.cpp:61:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorPageAgent.cpp:356:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorInputAgent.cpp:57:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorConsoleAgent.cpp:64:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDebuggerAgent.h:117:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InspectorDebuggerAgent.h:118:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InspectorResourceAgent.cpp:654:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorStyleSheet.h:66:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/inspector/InspectorDatabaseAgent.cpp:214:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/bindings/js/JSMainThreadExecState.h:111:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/bindings/js/JSMainThreadExecState.h:111:  The parameter name &quot;callType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/bindings/js/JSMainThreadExecState.h:111:  The parameter name &quot;callData&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bindings/ScriptFunctionCall.cpp:86:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp:50:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorAgent.cpp:62:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDOMDebuggerAgent.cpp:74:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDOMStorageAgent.cpp:60:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
Total errors found: 84 in 223 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>958075</commentid>
    <comment_count>26</comment_count>
      <attachid>218796</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-09 13:54:02 -0800</bug_when>
    <thetext>Comment on attachment 218796
[PATCH] For Bots 5

Attachment 218796 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/45898214</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958079</commentid>
    <comment_count>27</comment_count>
      <attachid>218796</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-09 13:59:21 -0800</bug_when>
    <thetext>Comment on attachment 218796
[PATCH] For Bots 5

Attachment 218796 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/47208203</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958095</commentid>
    <comment_count>28</comment_count>
      <attachid>218804</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-09 14:43:14 -0800</bug_when>
    <thetext>Created attachment 218804
[PATCH] For Bots 6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958096</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-09 14:45:33 -0800</bug_when>
    <thetext>Attachment 218804 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.am&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/copy-files.cmd&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptFunctionCall.cpp&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptFunctionCall.h&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptObject.cpp&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptObject.h&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptValue.cpp&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptValue.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorAgentBase.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorAgentRegistry.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorAgentRegistry.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorBackendDispatcher.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorBackendDispatcher.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorTypeBuilder.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorValues.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorValues.h&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/ForwardingHeaders/bindings/ScriptFunctionCall.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/bindings/ScriptObject.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/bindings/ScriptValue.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorAgentBase.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorAgentRegistry.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorBackendDispatcher.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorTypeBuilder.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorValues.h&apos;, u&apos;Source/WebCore/GNUmakefile.am&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBAny.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBAny.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBCursor.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBCursor.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBFactory.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBFactory.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBIndex.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBIndex.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBKeyRange.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBKeyRange.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBObjectStore.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBRequest.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBRequest.h&apos;, u&apos;Source/WebCore/Modules/mediastream/CapabilityRange.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/CapabilityRange.h&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaTrackConstraint.h&apos;, u&apos;Source/WebCore/Modules/plugins/QuickTimePluginReplacement.cpp&apos;, u&apos;Source/WebCore/Modules/plugins/QuickTimePluginReplacement.h&apos;, u&apos;Source/WebCore/UseJSC.cmake&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/bindings/js/Dictionary.h&apos;, u&apos;Source/WebCore/bindings/js/IDBBindingUtilities.cpp&apos;, u&apos;Source/WebCore/bindings/js/IDBBindingUtilities.h&apos;, u&apos;Source/WebCore/bindings/js/JSBindingsAllInOne.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDictionary.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDictionary.h&apos;, u&apos;Source/WebCore/bindings/js/JSHTMLCanvasElementCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSInjectedScriptHostCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSInjectedScriptManager.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSMainThreadExecState.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSMainThreadExecState.h&apos;, u&apos;Source/WebCore/bindings/js/JSMessageEventCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScheduledAction.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptCallStackFactory.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptController.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptController.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptDebugServer.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptDebugServer.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptFunctionCall.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptFunctionCall.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptGlobalObject.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptGlobalObject.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptObject.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptObject.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptProfile.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptProfile.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptProfiler.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptProfiler.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptState.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptValue.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptValue.h&apos;, u&apos;Source/WebCore/bindings/js/SerializedScriptValue.cpp&apos;, u&apos;Source/WebCore/bindings/js/SerializedScriptValue.h&apos;, u&apos;Source/WebCore/bindings/js/WorkerScriptController.cpp&apos;, u&apos;Source/WebCore/bindings/js/WorkerScriptController.h&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorJS.pm&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp&apos;, u&apos;Source/WebCore/dom/CustomEvent.cpp&apos;, u&apos;Source/WebCore/dom/CustomEvent.h&apos;, u&apos;Source/WebCore/dom/MessageEvent.cpp&apos;, u&apos;Source/WebCore/dom/MessageEvent.h&apos;, u&apos;Source/WebCore/dom/PopStateEvent.h&apos;, u&apos;Source/WebCore/dom/ScriptElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.cpp&apos;, u&apos;Source/WebCore/html/parser/XSSAuditor.cpp&apos;, u&apos;Source/WebCore/html/parser/XSSAuditorDelegate.cpp&apos;, u&apos;Source/WebCore/inspector/CodeGeneratorInspector.py&apos;, u&apos;Source/WebCore/inspector/CodeGeneratorInspectorStrings.py&apos;, u&apos;Source/WebCore/inspector/ConsoleMessage.cpp&apos;, u&apos;Source/WebCore/inspector/ConsoleMessage.h&apos;, u&apos;Source/WebCore/inspector/ContentSearchUtils.cpp&apos;, u&apos;Source/WebCore/inspector/ContentSearchUtils.h&apos;, u&apos;Source/WebCore/inspector/InjectedScript.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScript.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptBase.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptBase.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptCanvasModule.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptCanvasModule.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptHost.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptHost.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptManager.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptManager.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptModule.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorAgentRegistry.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorAgentRegistry.h&apos;, u&apos;Source/WebCore/inspector/InspectorAllInOne.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorApplicationCacheAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorBackendDispatcher.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorBackendDispatcher.h&apos;, u&apos;Source/WebCore/inspector/InspectorBaseAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorCSSAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorCSSAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorCanvasAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorCanvasAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorCanvasInstrumentation.h&apos;, u&apos;Source/WebCore/inspector/InspectorClient.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorClient.h&apos;, u&apos;Source/WebCore/inspector/InspectorConsoleAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorConsoleAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorController.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorController.h&apos;, u&apos;Source/WebCore/inspector/InspectorDOMAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDOMAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDOMDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDOMDebuggerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDOMStorageAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDOMStorageAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDatabaseAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDatabaseAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDatabaseResource.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDebuggerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorForwarding.h&apos;, u&apos;Source/WebCore/inspector/InspectorFrontendClientLocal.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorFrontendHost.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorHeapProfilerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorHeapProfilerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorIndexedDBAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorIndexedDBAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorInputAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorInputAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorInstrumentation.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorInstrumentation.h&apos;, u&apos;Source/WebCore/inspector/InspectorLayerTreeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorLayerTreeAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorMemoryAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorMemoryAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorOverlay.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorOverlay.h&apos;, u&apos;Source/WebCore/inspector/InspectorPageAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorPageAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorProfilerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorProfilerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorResourceAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorResourceAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorRuntimeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorRuntimeAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorStyleSheet.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorStyleSheet.h&apos;, u&apos;Source/WebCore/inspector/InspectorStyleTextEditor.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorTimelineAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorTimelineAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorValues.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorValues.h&apos;, u&apos;Source/WebCore/inspector/InspectorWebAgentBase.h&apos;, u&apos;Source/WebCore/inspector/InspectorWorkerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorWorkerAgent.h&apos;, u&apos;Source/WebCore/inspector/InstrumentingAgents.cpp&apos;, u&apos;Source/WebCore/inspector/NetworkResourcesData.cpp&apos;, u&apos;Source/WebCore/inspector/PageConsoleAgent.cpp&apos;, u&apos;Source/WebCore/inspector/PageDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/PageDebuggerAgent.h&apos;, u&apos;Source/WebCore/inspector/PageRuntimeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/PageRuntimeAgent.h&apos;, u&apos;Source/WebCore/inspector/ScriptArguments.cpp&apos;, u&apos;Source/WebCore/inspector/ScriptArguments.h&apos;, u&apos;Source/WebCore/inspector/ScriptCallFrame.cpp&apos;, u&apos;Source/WebCore/inspector/ScriptCallFrame.h&apos;, u&apos;Source/WebCore/inspector/ScriptCallStack.cpp&apos;, u&apos;Source/WebCore/inspector/ScriptCallStack.h&apos;, u&apos;Source/WebCore/inspector/ScriptDebugListener.h&apos;, u&apos;Source/WebCore/inspector/TimelineRecordFactory.cpp&apos;, u&apos;Source/WebCore/inspector/TimelineRecordFactory.h&apos;, u&apos;Source/WebCore/inspector/WorkerConsoleAgent.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerInspectorController.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerInspectorController.h&apos;, u&apos;Source/WebCore/inspector/WorkerRuntimeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerRuntimeAgent.h&apos;, u&apos;Source/WebCore/page/Console.cpp&apos;, u&apos;Source/WebCore/page/ContentSecurityPolicy.cpp&apos;, u&apos;Source/WebCore/page/Frame.cpp&apos;, u&apos;Source/WebCore/page/PageConsole.cpp&apos;, u&apos;Source/WebCore/plugins/PluginView.cpp&apos;, u&apos;Source/WebCore/testing/Internals.cpp&apos;, u&apos;Source/WebCore/testing/Internals.h&apos;, u&apos;Source/WebCore/workers/SharedWorkerGlobalScope.cpp&apos;, u&apos;Source/WebCore/workers/WorkerGlobalScope.cpp&apos;, u&apos;Source/WebCore/workers/WorkerThread.cpp&apos;, u&apos;Source/WebCore/xml/XMLTreeViewer.cpp&apos;, u&apos;Source/WebCore/xml/parser/XMLDocumentParser.cpp&apos;, u&apos;Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp&apos;, u&apos;Source/WebKit/blackberry/Api/WebPage.cpp&apos;, u&apos;Source/WebKit/blackberry/ChangeLog&apos;, u&apos;Source/WebKit/efl/ChangeLog&apos;, u&apos;Source/WebKit/efl/WebCoreSupport/DumpRenderTreeSupportEfl.cpp&apos;, u&apos;Source/WebKit/efl/ewk/ewk_frame.cpp&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/WebKit/gtk/webkit/webkitwebview.cpp&apos;, u&apos;Source/WebKit/mac/Plugins/Hosted/NetscapePluginInstanceProxy.mm&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebInspectorClient.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebFrame.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebView.mm&apos;, u&apos;Source/WebKit/win/ChangeLog&apos;, u&apos;Source/WebKit/win/WebFrame.cpp&apos;, u&apos;Source/WebKit/win/WebView.cpp&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PluginView.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebInspector.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebInspector.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.cpp&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/inspector/CodeGeneratorInspector.py:265:  [RawTypes.BaseType.get_raw_validator_call_text] Class &apos;BaseType&apos; has no &apos;get_validate_method_params&apos; member  [pylint/E1101] [5]
ERROR: Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:54:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/bindings/ScriptObject.h:44:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/inspector/InspectorCSSAgent.h:117:  The parameter name &quot;pseudoIdMatches&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/inspector/InspectorRuntimeAgent.h:76:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InspectorRuntimeAgent.h:77:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InspectorRuntimeAgent.cpp:63:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:45:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:46:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:47:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:48:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:49:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:50:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:51:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:52:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:53:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:54:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:55:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:56:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:92:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:388:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:426:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:429:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:472:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:473:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:510:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:611:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:615:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:701:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:709:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
ERROR: Source/WebCore/inspector/InspectorTimelineAgent.cpp:585:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/bindings/ScriptValue.h:51:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/inspector/InspectorDOMAgent.cpp:215:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorBackendDispatcher.h:43:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorBackendDispatcher.h:97:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/bindings/js/JSMainThreadExecState.cpp:51:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:50:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:73:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:87:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:110:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:111:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:112:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:130:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:131:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/inspector/InspectorProfilerAgent.cpp:124:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InjectedScript.h:65:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InjectedScript.h:66:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InjectedScript.h:76:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InjectedScript.h:83:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InjectedScript.h:84:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/bindings/ScriptFunctionCall.h:47:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bindings/ScriptFunctionCall.h:56:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/bindings/ScriptFunctionCall.h:75:  The parameter name &quot;handler&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/inspector/InspectorWorkerAgent.cpp:112:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorIndexedDBAgent.cpp:561:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorCSSAgent.cpp:620:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorTypeBuilder.h:43:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorTypeBuilder.h:72:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorTypeBuilder.h:81:  cast_to_int is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorTypeBuilder.h:85:  ExactlyInt::cast_to_int is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorTypeBuilder.h:88:  ExactlyInt::cast_to_int is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorTypeBuilder.h:88:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/bindings/ScriptObject.cpp:40:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/bindings/ScriptObject.cpp:46:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorCanvasAgent.cpp:67:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorMemoryAgent.cpp:90:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorHeapProfilerAgent.cpp:54:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDebuggerAgent.cpp:61:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorPageAgent.cpp:356:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorInputAgent.cpp:57:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorConsoleAgent.cpp:64:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDebuggerAgent.h:117:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InspectorDebuggerAgent.h:118:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InspectorResourceAgent.cpp:654:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorStyleSheet.h:66:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/inspector/InspectorDatabaseAgent.cpp:214:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/bindings/js/JSMainThreadExecState.h:111:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/bindings/js/JSMainThreadExecState.h:111:  The parameter name &quot;callType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/bindings/js/JSMainThreadExecState.h:111:  The parameter name &quot;callData&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bindings/ScriptFunctionCall.cpp:86:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp:50:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorAgent.cpp:62:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDOMDebuggerAgent.cpp:74:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDOMStorageAgent.cpp:60:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
Total errors found: 84 in 223 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>958533</commentid>
    <comment_count>30</comment_count>
      <attachid>218912</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-10 15:16:38 -0800</bug_when>
    <thetext>Created attachment 218912
[PATCH] For Bots 7

Attempt at fixing Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958535</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-10 15:19:42 -0800</bug_when>
    <thetext>Attachment 218912 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.am&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/copy-files.cmd&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptFunctionCall.cpp&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptFunctionCall.h&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptObject.cpp&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptObject.h&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptValue.cpp&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptValue.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorAgentBase.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorAgentRegistry.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorAgentRegistry.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorBackendDispatcher.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorBackendDispatcher.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorTypeBuilder.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorValues.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorValues.h&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/ForwardingHeaders/bindings/ScriptFunctionCall.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/bindings/ScriptObject.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/bindings/ScriptValue.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorAgentBase.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorAgentRegistry.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorBackendDispatcher.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorTypeBuilder.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorValues.h&apos;, u&apos;Source/WebCore/GNUmakefile.am&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBAny.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBAny.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBCursor.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBCursor.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBFactory.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBFactory.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBIndex.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBIndex.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBKeyRange.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBKeyRange.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBObjectStore.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBRequest.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBRequest.h&apos;, u&apos;Source/WebCore/Modules/mediastream/CapabilityRange.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/CapabilityRange.h&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaTrackConstraint.h&apos;, u&apos;Source/WebCore/Modules/mediastream/RTCIceCandidate.cpp&apos;, u&apos;Source/WebCore/Modules/plugins/QuickTimePluginReplacement.cpp&apos;, u&apos;Source/WebCore/Modules/plugins/QuickTimePluginReplacement.h&apos;, u&apos;Source/WebCore/UseJSC.cmake&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/bindings/js/Dictionary.h&apos;, u&apos;Source/WebCore/bindings/js/IDBBindingUtilities.cpp&apos;, u&apos;Source/WebCore/bindings/js/IDBBindingUtilities.h&apos;, u&apos;Source/WebCore/bindings/js/JSBindingsAllInOne.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDictionary.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDictionary.h&apos;, u&apos;Source/WebCore/bindings/js/JSHTMLCanvasElementCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSInjectedScriptHostCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSInjectedScriptManager.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSMainThreadExecState.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSMainThreadExecState.h&apos;, u&apos;Source/WebCore/bindings/js/JSMessageEventCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScheduledAction.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptCallStackFactory.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptController.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptController.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptDebugServer.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptDebugServer.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptFunctionCall.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptFunctionCall.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptGlobalObject.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptGlobalObject.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptObject.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptObject.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptProfile.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptProfile.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptProfiler.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptProfiler.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptState.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptValue.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptValue.h&apos;, u&apos;Source/WebCore/bindings/js/SerializedScriptValue.cpp&apos;, u&apos;Source/WebCore/bindings/js/SerializedScriptValue.h&apos;, u&apos;Source/WebCore/bindings/js/WorkerScriptController.cpp&apos;, u&apos;Source/WebCore/bindings/js/WorkerScriptController.h&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorJS.pm&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp&apos;, u&apos;Source/WebCore/dom/CustomEvent.cpp&apos;, u&apos;Source/WebCore/dom/CustomEvent.h&apos;, u&apos;Source/WebCore/dom/MessageEvent.cpp&apos;, u&apos;Source/WebCore/dom/MessageEvent.h&apos;, u&apos;Source/WebCore/dom/PopStateEvent.h&apos;, u&apos;Source/WebCore/dom/ScriptElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.cpp&apos;, u&apos;Source/WebCore/html/parser/XSSAuditor.cpp&apos;, u&apos;Source/WebCore/html/parser/XSSAuditorDelegate.cpp&apos;, u&apos;Source/WebCore/inspector/CodeGeneratorInspector.py&apos;, u&apos;Source/WebCore/inspector/CodeGeneratorInspectorStrings.py&apos;, u&apos;Source/WebCore/inspector/ConsoleMessage.cpp&apos;, u&apos;Source/WebCore/inspector/ConsoleMessage.h&apos;, u&apos;Source/WebCore/inspector/ContentSearchUtils.cpp&apos;, u&apos;Source/WebCore/inspector/ContentSearchUtils.h&apos;, u&apos;Source/WebCore/inspector/InjectedScript.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScript.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptBase.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptBase.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptCanvasModule.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptCanvasModule.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptHost.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptHost.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptManager.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptManager.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptModule.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorAgentRegistry.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorAgentRegistry.h&apos;, u&apos;Source/WebCore/inspector/InspectorAllInOne.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorApplicationCacheAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorBackendDispatcher.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorBackendDispatcher.h&apos;, u&apos;Source/WebCore/inspector/InspectorBaseAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorCSSAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorCSSAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorCanvasAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorCanvasAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorCanvasInstrumentation.h&apos;, u&apos;Source/WebCore/inspector/InspectorClient.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorClient.h&apos;, u&apos;Source/WebCore/inspector/InspectorConsoleAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorConsoleAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorController.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorController.h&apos;, u&apos;Source/WebCore/inspector/InspectorDOMAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDOMAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDOMDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDOMDebuggerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDOMStorageAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDOMStorageAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDatabaseAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDatabaseAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDatabaseResource.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDebuggerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorForwarding.h&apos;, u&apos;Source/WebCore/inspector/InspectorFrontendClientLocal.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorFrontendHost.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorHeapProfilerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorHeapProfilerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorIndexedDBAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorIndexedDBAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorInputAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorInputAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorInstrumentation.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorInstrumentation.h&apos;, u&apos;Source/WebCore/inspector/InspectorLayerTreeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorLayerTreeAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorMemoryAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorMemoryAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorOverlay.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorOverlay.h&apos;, u&apos;Source/WebCore/inspector/InspectorPageAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorPageAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorProfilerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorProfilerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorResourceAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorResourceAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorRuntimeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorRuntimeAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorStyleSheet.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorStyleSheet.h&apos;, u&apos;Source/WebCore/inspector/InspectorStyleTextEditor.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorTimelineAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorTimelineAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorValues.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorValues.h&apos;, u&apos;Source/WebCore/inspector/InspectorWebAgentBase.h&apos;, u&apos;Source/WebCore/inspector/InspectorWorkerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorWorkerAgent.h&apos;, u&apos;Source/WebCore/inspector/InstrumentingAgents.cpp&apos;, u&apos;Source/WebCore/inspector/NetworkResourcesData.cpp&apos;, u&apos;Source/WebCore/inspector/PageConsoleAgent.cpp&apos;, u&apos;Source/WebCore/inspector/PageDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/PageDebuggerAgent.h&apos;, u&apos;Source/WebCore/inspector/PageRuntimeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/PageRuntimeAgent.h&apos;, u&apos;Source/WebCore/inspector/ScriptArguments.cpp&apos;, u&apos;Source/WebCore/inspector/ScriptArguments.h&apos;, u&apos;Source/WebCore/inspector/ScriptCallFrame.cpp&apos;, u&apos;Source/WebCore/inspector/ScriptCallFrame.h&apos;, u&apos;Source/WebCore/inspector/ScriptCallStack.cpp&apos;, u&apos;Source/WebCore/inspector/ScriptCallStack.h&apos;, u&apos;Source/WebCore/inspector/ScriptDebugListener.h&apos;, u&apos;Source/WebCore/inspector/TimelineRecordFactory.cpp&apos;, u&apos;Source/WebCore/inspector/TimelineRecordFactory.h&apos;, u&apos;Source/WebCore/inspector/WorkerConsoleAgent.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerInspectorController.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerInspectorController.h&apos;, u&apos;Source/WebCore/inspector/WorkerRuntimeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerRuntimeAgent.h&apos;, u&apos;Source/WebCore/page/Console.cpp&apos;, u&apos;Source/WebCore/page/ContentSecurityPolicy.cpp&apos;, u&apos;Source/WebCore/page/Frame.cpp&apos;, u&apos;Source/WebCore/page/PageConsole.cpp&apos;, u&apos;Source/WebCore/plugins/PluginView.cpp&apos;, u&apos;Source/WebCore/testing/Internals.cpp&apos;, u&apos;Source/WebCore/testing/Internals.h&apos;, u&apos;Source/WebCore/workers/SharedWorkerGlobalScope.cpp&apos;, u&apos;Source/WebCore/workers/WorkerGlobalScope.cpp&apos;, u&apos;Source/WebCore/workers/WorkerThread.cpp&apos;, u&apos;Source/WebCore/xml/XMLTreeViewer.cpp&apos;, u&apos;Source/WebCore/xml/parser/XMLDocumentParser.cpp&apos;, u&apos;Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp&apos;, u&apos;Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in&apos;, u&apos;Source/WebKit/blackberry/Api/WebPage.cpp&apos;, u&apos;Source/WebKit/blackberry/ChangeLog&apos;, u&apos;Source/WebKit/efl/ChangeLog&apos;, u&apos;Source/WebKit/efl/WebCoreSupport/DumpRenderTreeSupportEfl.cpp&apos;, u&apos;Source/WebKit/efl/ewk/ewk_frame.cpp&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/WebKit/gtk/webkit/webkitwebview.cpp&apos;, u&apos;Source/WebKit/mac/Plugins/Hosted/NetscapePluginInstanceProxy.mm&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebInspectorClient.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebFrame.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebView.mm&apos;, u&apos;Source/WebKit/win/ChangeLog&apos;, u&apos;Source/WebKit/win/WebFrame.cpp&apos;, u&apos;Source/WebKit/win/WebView.cpp&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PluginView.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebInspector.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebInspector.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.cpp&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/inspector/CodeGeneratorInspector.py:265:  [RawTypes.BaseType.get_raw_validator_call_text] Class &apos;BaseType&apos; has no &apos;get_validate_method_params&apos; member  [pylint/E1101] [5]
ERROR: Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:54:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/bindings/ScriptObject.h:44:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/inspector/InspectorCSSAgent.h:117:  The parameter name &quot;pseudoIdMatches&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/inspector/InspectorRuntimeAgent.h:75:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InspectorRuntimeAgent.h:76:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InspectorRuntimeAgent.cpp:63:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:45:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:46:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:47:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:48:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:49:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:50:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:51:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:52:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:53:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:54:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:55:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:56:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:92:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:388:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:426:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:429:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:472:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:473:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:510:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:611:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:615:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:701:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:709:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
ERROR: Source/WebCore/inspector/InspectorTimelineAgent.cpp:585:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/bindings/ScriptValue.h:51:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/inspector/InspectorDOMAgent.cpp:215:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorBackendDispatcher.h:43:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorBackendDispatcher.h:97:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/bindings/js/JSMainThreadExecState.cpp:51:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:50:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:73:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:87:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:110:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:111:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:112:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:130:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:131:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/inspector/InspectorProfilerAgent.cpp:124:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InjectedScript.h:65:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InjectedScript.h:66:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InjectedScript.h:76:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InjectedScript.h:83:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InjectedScript.h:84:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/bindings/ScriptFunctionCall.h:47:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bindings/ScriptFunctionCall.h:56:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/bindings/ScriptFunctionCall.h:75:  The parameter name &quot;handler&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/inspector/InspectorWorkerAgent.cpp:112:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorIndexedDBAgent.cpp:561:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorCSSAgent.cpp:620:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorTypeBuilder.h:43:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorTypeBuilder.h:72:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorTypeBuilder.h:81:  cast_to_int is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorTypeBuilder.h:85:  ExactlyInt::cast_to_int is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorTypeBuilder.h:88:  ExactlyInt::cast_to_int is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorTypeBuilder.h:88:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/bindings/ScriptObject.cpp:40:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/bindings/ScriptObject.cpp:46:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorCanvasAgent.cpp:67:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorMemoryAgent.cpp:90:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorHeapProfilerAgent.cpp:54:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDebuggerAgent.cpp:61:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorPageAgent.cpp:356:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorInputAgent.cpp:57:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorConsoleAgent.cpp:64:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDebuggerAgent.h:117:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InspectorDebuggerAgent.h:118:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InspectorResourceAgent.cpp:654:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorStyleSheet.h:66:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/inspector/InspectorDatabaseAgent.cpp:214:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/bindings/js/JSMainThreadExecState.h:111:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/bindings/js/JSMainThreadExecState.h:111:  The parameter name &quot;callType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/bindings/js/JSMainThreadExecState.h:111:  The parameter name &quot;callData&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bindings/ScriptFunctionCall.cpp:86:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp:50:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorAgent.cpp:62:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDOMDebuggerAgent.cpp:74:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDOMStorageAgent.cpp:60:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
Total errors found: 84 in 223 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>958591</commentid>
    <comment_count>32</comment_count>
      <attachid>218929</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-10 18:12:10 -0800</bug_when>
    <thetext>Created attachment 218929
[PATCH] For Bots 8

Yet another attempt to get the Windows bot to look at the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958592</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-10 18:14:42 -0800</bug_when>
    <thetext>Attachment 218929 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.am&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/copy-files.cmd&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptFunctionCall.cpp&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptFunctionCall.h&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptObject.cpp&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptObject.h&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptValue.cpp&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptValue.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorAgentBase.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorAgentRegistry.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorAgentRegistry.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorBackendDispatcher.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorBackendDispatcher.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorTypeBuilder.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorValues.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorValues.h&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/ForwardingHeaders/bindings/ScriptFunctionCall.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/bindings/ScriptObject.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/bindings/ScriptValue.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorAgentBase.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorAgentRegistry.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorBackendDispatcher.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorTypeBuilder.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorValues.h&apos;, u&apos;Source/WebCore/GNUmakefile.am&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBAny.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBAny.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBCursor.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBCursor.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBFactory.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBFactory.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBIndex.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBIndex.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBKeyRange.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBKeyRange.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBObjectStore.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBRequest.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBRequest.h&apos;, u&apos;Source/WebCore/Modules/mediastream/CapabilityRange.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/CapabilityRange.h&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaTrackConstraint.h&apos;, u&apos;Source/WebCore/Modules/mediastream/RTCIceCandidate.cpp&apos;, u&apos;Source/WebCore/Modules/plugins/QuickTimePluginReplacement.cpp&apos;, u&apos;Source/WebCore/Modules/plugins/QuickTimePluginReplacement.h&apos;, u&apos;Source/WebCore/UseJSC.cmake&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/bindings/js/Dictionary.h&apos;, u&apos;Source/WebCore/bindings/js/IDBBindingUtilities.cpp&apos;, u&apos;Source/WebCore/bindings/js/IDBBindingUtilities.h&apos;, u&apos;Source/WebCore/bindings/js/JSBindingsAllInOne.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDictionary.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDictionary.h&apos;, u&apos;Source/WebCore/bindings/js/JSHTMLCanvasElementCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSInjectedScriptHostCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSInjectedScriptManager.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSMainThreadExecState.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSMainThreadExecState.h&apos;, u&apos;Source/WebCore/bindings/js/JSMessageEventCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScheduledAction.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptCallStackFactory.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptController.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptController.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptDebugServer.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptDebugServer.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptFunctionCall.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptFunctionCall.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptGlobalObject.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptGlobalObject.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptObject.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptObject.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptProfile.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptProfile.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptProfiler.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptProfiler.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptState.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptValue.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptValue.h&apos;, u&apos;Source/WebCore/bindings/js/SerializedScriptValue.cpp&apos;, u&apos;Source/WebCore/bindings/js/SerializedScriptValue.h&apos;, u&apos;Source/WebCore/bindings/js/WorkerScriptController.cpp&apos;, u&apos;Source/WebCore/bindings/js/WorkerScriptController.h&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorJS.pm&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp&apos;, u&apos;Source/WebCore/dom/CustomEvent.cpp&apos;, u&apos;Source/WebCore/dom/CustomEvent.h&apos;, u&apos;Source/WebCore/dom/MessageEvent.cpp&apos;, u&apos;Source/WebCore/dom/MessageEvent.h&apos;, u&apos;Source/WebCore/dom/PopStateEvent.h&apos;, u&apos;Source/WebCore/dom/ScriptElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.cpp&apos;, u&apos;Source/WebCore/html/parser/XSSAuditor.cpp&apos;, u&apos;Source/WebCore/html/parser/XSSAuditorDelegate.cpp&apos;, u&apos;Source/WebCore/inspector/CodeGeneratorInspector.py&apos;, u&apos;Source/WebCore/inspector/CodeGeneratorInspectorStrings.py&apos;, u&apos;Source/WebCore/inspector/ConsoleMessage.cpp&apos;, u&apos;Source/WebCore/inspector/ConsoleMessage.h&apos;, u&apos;Source/WebCore/inspector/ContentSearchUtils.cpp&apos;, u&apos;Source/WebCore/inspector/ContentSearchUtils.h&apos;, u&apos;Source/WebCore/inspector/InjectedScript.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScript.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptBase.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptBase.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptCanvasModule.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptCanvasModule.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptHost.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptHost.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptManager.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptManager.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptModule.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorAgentRegistry.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorAgentRegistry.h&apos;, u&apos;Source/WebCore/inspector/InspectorAllInOne.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorApplicationCacheAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorBackendDispatcher.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorBackendDispatcher.h&apos;, u&apos;Source/WebCore/inspector/InspectorBaseAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorCSSAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorCSSAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorCanvasAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorCanvasAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorCanvasInstrumentation.h&apos;, u&apos;Source/WebCore/inspector/InspectorClient.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorClient.h&apos;, u&apos;Source/WebCore/inspector/InspectorConsoleAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorConsoleAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorController.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorController.h&apos;, u&apos;Source/WebCore/inspector/InspectorDOMAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDOMAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDOMDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDOMDebuggerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDOMStorageAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDOMStorageAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDatabaseAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDatabaseAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDatabaseResource.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDebuggerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorForwarding.h&apos;, u&apos;Source/WebCore/inspector/InspectorFrontendClientLocal.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorFrontendHost.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorHeapProfilerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorHeapProfilerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorIndexedDBAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorIndexedDBAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorInputAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorInputAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorInstrumentation.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorInstrumentation.h&apos;, u&apos;Source/WebCore/inspector/InspectorLayerTreeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorLayerTreeAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorMemoryAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorMemoryAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorOverlay.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorOverlay.h&apos;, u&apos;Source/WebCore/inspector/InspectorPageAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorPageAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorProfilerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorProfilerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorResourceAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorResourceAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorRuntimeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorRuntimeAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorStyleSheet.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorStyleSheet.h&apos;, u&apos;Source/WebCore/inspector/InspectorStyleTextEditor.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorTimelineAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorTimelineAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorValues.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorValues.h&apos;, u&apos;Source/WebCore/inspector/InspectorWebAgentBase.h&apos;, u&apos;Source/WebCore/inspector/InspectorWorkerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorWorkerAgent.h&apos;, u&apos;Source/WebCore/inspector/InstrumentingAgents.cpp&apos;, u&apos;Source/WebCore/inspector/NetworkResourcesData.cpp&apos;, u&apos;Source/WebCore/inspector/PageConsoleAgent.cpp&apos;, u&apos;Source/WebCore/inspector/PageDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/PageDebuggerAgent.h&apos;, u&apos;Source/WebCore/inspector/PageRuntimeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/PageRuntimeAgent.h&apos;, u&apos;Source/WebCore/inspector/ScriptArguments.cpp&apos;, u&apos;Source/WebCore/inspector/ScriptArguments.h&apos;, u&apos;Source/WebCore/inspector/ScriptCallFrame.cpp&apos;, u&apos;Source/WebCore/inspector/ScriptCallFrame.h&apos;, u&apos;Source/WebCore/inspector/ScriptCallStack.cpp&apos;, u&apos;Source/WebCore/inspector/ScriptCallStack.h&apos;, u&apos;Source/WebCore/inspector/ScriptDebugListener.h&apos;, u&apos;Source/WebCore/inspector/TimelineRecordFactory.cpp&apos;, u&apos;Source/WebCore/inspector/TimelineRecordFactory.h&apos;, u&apos;Source/WebCore/inspector/WorkerConsoleAgent.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerInspectorController.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerInspectorController.h&apos;, u&apos;Source/WebCore/inspector/WorkerRuntimeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerRuntimeAgent.h&apos;, u&apos;Source/WebCore/page/Console.cpp&apos;, u&apos;Source/WebCore/page/ContentSecurityPolicy.cpp&apos;, u&apos;Source/WebCore/page/Frame.cpp&apos;, u&apos;Source/WebCore/page/PageConsole.cpp&apos;, u&apos;Source/WebCore/plugins/PluginView.cpp&apos;, u&apos;Source/WebCore/testing/Internals.cpp&apos;, u&apos;Source/WebCore/testing/Internals.h&apos;, u&apos;Source/WebCore/workers/SharedWorkerGlobalScope.cpp&apos;, u&apos;Source/WebCore/workers/WorkerGlobalScope.cpp&apos;, u&apos;Source/WebCore/workers/WorkerThread.cpp&apos;, u&apos;Source/WebCore/xml/XMLTreeViewer.cpp&apos;, u&apos;Source/WebCore/xml/parser/XMLDocumentParser.cpp&apos;, u&apos;Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp&apos;, u&apos;Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in&apos;, u&apos;Source/WebKit/blackberry/Api/WebPage.cpp&apos;, u&apos;Source/WebKit/blackberry/ChangeLog&apos;, u&apos;Source/WebKit/efl/ChangeLog&apos;, u&apos;Source/WebKit/efl/WebCoreSupport/DumpRenderTreeSupportEfl.cpp&apos;, u&apos;Source/WebKit/efl/ewk/ewk_frame.cpp&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/WebKit/gtk/webkit/webkitwebview.cpp&apos;, u&apos;Source/WebKit/mac/Plugins/Hosted/NetscapePluginInstanceProxy.mm&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebInspectorClient.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebFrame.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebView.mm&apos;, u&apos;Source/WebKit/win/ChangeLog&apos;, u&apos;Source/WebKit/win/WebFrame.cpp&apos;, u&apos;Source/WebKit/win/WebView.cpp&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PluginView.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebInspector.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebInspector.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.cpp&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/inspector/CodeGeneratorInspector.py:265:  [RawTypes.BaseType.get_raw_validator_call_text] Class &apos;BaseType&apos; has no &apos;get_validate_method_params&apos; member  [pylint/E1101] [5]
ERROR: Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:54:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/bindings/ScriptObject.h:44:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/inspector/InspectorCSSAgent.h:117:  The parameter name &quot;pseudoIdMatches&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/inspector/InspectorRuntimeAgent.h:75:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InspectorRuntimeAgent.h:76:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InspectorRuntimeAgent.cpp:63:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:45:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:46:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:47:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:48:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:49:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:50:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:51:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:52:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:53:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:54:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:55:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:56:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:92:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:388:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:426:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:429:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:472:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:473:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:510:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:611:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:615:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:701:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:709:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
ERROR: Source/WebCore/inspector/InspectorTimelineAgent.cpp:585:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/bindings/ScriptValue.h:51:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/inspector/InspectorDOMAgent.cpp:215:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorBackendDispatcher.h:43:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorBackendDispatcher.h:97:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/bindings/js/JSMainThreadExecState.cpp:51:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:50:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:73:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:87:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:110:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:111:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:112:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:130:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:131:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/inspector/InspectorProfilerAgent.cpp:124:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InjectedScript.h:65:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InjectedScript.h:66:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InjectedScript.h:76:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InjectedScript.h:83:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InjectedScript.h:84:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/bindings/ScriptFunctionCall.h:47:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bindings/ScriptFunctionCall.h:56:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/bindings/ScriptFunctionCall.h:75:  The parameter name &quot;handler&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/inspector/InspectorWorkerAgent.cpp:112:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorIndexedDBAgent.cpp:561:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorCSSAgent.cpp:620:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorTypeBuilder.h:43:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorTypeBuilder.h:72:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorTypeBuilder.h:81:  cast_to_int is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorTypeBuilder.h:85:  ExactlyInt::cast_to_int is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorTypeBuilder.h:88:  ExactlyInt::cast_to_int is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorTypeBuilder.h:88:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/bindings/ScriptObject.cpp:40:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/bindings/ScriptObject.cpp:46:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorCanvasAgent.cpp:67:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorMemoryAgent.cpp:90:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorHeapProfilerAgent.cpp:54:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDebuggerAgent.cpp:61:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorPageAgent.cpp:356:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorInputAgent.cpp:57:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorConsoleAgent.cpp:64:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDebuggerAgent.h:117:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InspectorDebuggerAgent.h:118:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InspectorResourceAgent.cpp:654:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorStyleSheet.h:66:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/inspector/InspectorDatabaseAgent.cpp:214:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/bindings/js/JSMainThreadExecState.h:111:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/bindings/js/JSMainThreadExecState.h:111:  The parameter name &quot;callType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/bindings/js/JSMainThreadExecState.h:111:  The parameter name &quot;callData&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bindings/ScriptFunctionCall.cpp:86:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp:50:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorAgent.cpp:62:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDOMDebuggerAgent.cpp:74:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDOMStorageAgent.cpp:60:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
Total errors found: 84 in 223 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>958881</commentid>
    <comment_count>34</comment_count>
      <attachid>218929</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-12-11 13:30:09 -0800</bug_when>
    <thetext>Comment on attachment 218929
[PATCH] For Bots 8

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

&gt; Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:299
&gt; +    &lt;ClInclude Include=&quot;..\bindings\bindings/ScriptFunctionCall.cpp&quot; /&gt;
&gt; +    &lt;ClInclude Include=&quot;..\bindings\bindings/ScriptObject.cpp&quot; /&gt;
&gt; +    &lt;ClInclude Include=&quot;..\bindings\bindings/ScriptValue.cpp&quot; /&gt;

I think these should be &lt;ClInclude Include=&quot;..\bindings\Script....&quot; /&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958890</commentid>
    <comment_count>35</comment_count>
      <attachid>219001</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-12-11 14:03:23 -0800</bug_when>
    <thetext>Created attachment 219001
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958893</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-11 14:06:49 -0800</bug_when>
    <thetext>Attachment 219001 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.am&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreCommon.props&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/copy-files.cmd&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptFunctionCall.cpp&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptFunctionCall.h&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptObject.cpp&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptObject.h&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptValue.cpp&apos;, u&apos;Source/JavaScriptCore/bindings/ScriptValue.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorAgentBase.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorAgentRegistry.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorAgentRegistry.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorBackendDispatcher.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorBackendDispatcher.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorTypeBuilder.h&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorValues.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorValues.h&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/ForwardingHeaders/bindings/ScriptFunctionCall.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/bindings/ScriptObject.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/bindings/ScriptValue.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorAgentBase.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorAgentRegistry.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorBackendDispatcher.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorTypeBuilder.h&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorValues.h&apos;, u&apos;Source/WebCore/GNUmakefile.am&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBAny.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBAny.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBCursor.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBCursor.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBFactory.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBFactory.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBIndex.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBIndex.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBKeyRange.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBKeyRange.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBObjectStore.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBRequest.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBRequest.h&apos;, u&apos;Source/WebCore/Modules/mediastream/CapabilityRange.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/CapabilityRange.h&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaTrackConstraint.h&apos;, u&apos;Source/WebCore/Modules/mediastream/RTCIceCandidate.cpp&apos;, u&apos;Source/WebCore/Modules/plugins/QuickTimePluginReplacement.cpp&apos;, u&apos;Source/WebCore/Modules/plugins/QuickTimePluginReplacement.h&apos;, u&apos;Source/WebCore/UseJSC.cmake&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/bindings/js/Dictionary.h&apos;, u&apos;Source/WebCore/bindings/js/IDBBindingUtilities.cpp&apos;, u&apos;Source/WebCore/bindings/js/IDBBindingUtilities.h&apos;, u&apos;Source/WebCore/bindings/js/JSBindingsAllInOne.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDictionary.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDictionary.h&apos;, u&apos;Source/WebCore/bindings/js/JSHTMLCanvasElementCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSInjectedScriptHostCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSInjectedScriptManager.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSMainThreadExecState.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSMainThreadExecState.h&apos;, u&apos;Source/WebCore/bindings/js/JSMessageEventCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScheduledAction.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptCallStackFactory.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptController.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptController.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptDebugServer.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptDebugServer.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptFunctionCall.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptFunctionCall.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptGlobalObject.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptGlobalObject.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptObject.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptObject.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptProfile.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptProfile.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptProfiler.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptProfiler.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptState.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptValue.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptValue.h&apos;, u&apos;Source/WebCore/bindings/js/SerializedScriptValue.cpp&apos;, u&apos;Source/WebCore/bindings/js/SerializedScriptValue.h&apos;, u&apos;Source/WebCore/bindings/js/WorkerScriptController.cpp&apos;, u&apos;Source/WebCore/bindings/js/WorkerScriptController.h&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorJS.pm&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp&apos;, u&apos;Source/WebCore/dom/CustomEvent.cpp&apos;, u&apos;Source/WebCore/dom/CustomEvent.h&apos;, u&apos;Source/WebCore/dom/MessageEvent.cpp&apos;, u&apos;Source/WebCore/dom/MessageEvent.h&apos;, u&apos;Source/WebCore/dom/PopStateEvent.h&apos;, u&apos;Source/WebCore/dom/ScriptElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.cpp&apos;, u&apos;Source/WebCore/html/parser/XSSAuditor.cpp&apos;, u&apos;Source/WebCore/html/parser/XSSAuditorDelegate.cpp&apos;, u&apos;Source/WebCore/inspector/CodeGeneratorInspector.py&apos;, u&apos;Source/WebCore/inspector/CodeGeneratorInspectorStrings.py&apos;, u&apos;Source/WebCore/inspector/ConsoleMessage.cpp&apos;, u&apos;Source/WebCore/inspector/ConsoleMessage.h&apos;, u&apos;Source/WebCore/inspector/ContentSearchUtils.cpp&apos;, u&apos;Source/WebCore/inspector/ContentSearchUtils.h&apos;, u&apos;Source/WebCore/inspector/InjectedScript.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScript.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptBase.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptBase.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptCanvasModule.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptCanvasModule.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptHost.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptHost.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptManager.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptManager.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptModule.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorAgentRegistry.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorAgentRegistry.h&apos;, u&apos;Source/WebCore/inspector/InspectorAllInOne.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorApplicationCacheAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorBackendDispatcher.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorBackendDispatcher.h&apos;, u&apos;Source/WebCore/inspector/InspectorBaseAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorCSSAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorCSSAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorCanvasAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorCanvasAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorCanvasInstrumentation.h&apos;, u&apos;Source/WebCore/inspector/InspectorClient.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorClient.h&apos;, u&apos;Source/WebCore/inspector/InspectorConsoleAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorConsoleAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorController.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorController.h&apos;, u&apos;Source/WebCore/inspector/InspectorDOMAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDOMAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDOMDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDOMDebuggerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDOMStorageAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDOMStorageAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDatabaseAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDatabaseAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDatabaseResource.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDebuggerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorForwarding.h&apos;, u&apos;Source/WebCore/inspector/InspectorFrontendClientLocal.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorFrontendHost.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorHeapProfilerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorHeapProfilerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorIndexedDBAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorIndexedDBAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorInputAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorInputAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorInstrumentation.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorInstrumentation.h&apos;, u&apos;Source/WebCore/inspector/InspectorLayerTreeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorLayerTreeAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorMemoryAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorMemoryAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorOverlay.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorOverlay.h&apos;, u&apos;Source/WebCore/inspector/InspectorPageAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorPageAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorProfilerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorProfilerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorResourceAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorResourceAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorRuntimeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorRuntimeAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorStyleSheet.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorStyleSheet.h&apos;, u&apos;Source/WebCore/inspector/InspectorStyleTextEditor.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorTimelineAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorTimelineAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorValues.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorValues.h&apos;, u&apos;Source/WebCore/inspector/InspectorWebAgentBase.h&apos;, u&apos;Source/WebCore/inspector/InspectorWorkerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorWorkerAgent.h&apos;, u&apos;Source/WebCore/inspector/InstrumentingAgents.cpp&apos;, u&apos;Source/WebCore/inspector/NetworkResourcesData.cpp&apos;, u&apos;Source/WebCore/inspector/PageConsoleAgent.cpp&apos;, u&apos;Source/WebCore/inspector/PageDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/PageDebuggerAgent.h&apos;, u&apos;Source/WebCore/inspector/PageRuntimeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/PageRuntimeAgent.h&apos;, u&apos;Source/WebCore/inspector/ScriptArguments.cpp&apos;, u&apos;Source/WebCore/inspector/ScriptArguments.h&apos;, u&apos;Source/WebCore/inspector/ScriptCallFrame.cpp&apos;, u&apos;Source/WebCore/inspector/ScriptCallFrame.h&apos;, u&apos;Source/WebCore/inspector/ScriptCallStack.cpp&apos;, u&apos;Source/WebCore/inspector/ScriptCallStack.h&apos;, u&apos;Source/WebCore/inspector/ScriptDebugListener.h&apos;, u&apos;Source/WebCore/inspector/TimelineRecordFactory.cpp&apos;, u&apos;Source/WebCore/inspector/TimelineRecordFactory.h&apos;, u&apos;Source/WebCore/inspector/WorkerConsoleAgent.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerInspectorController.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerInspectorController.h&apos;, u&apos;Source/WebCore/inspector/WorkerRuntimeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerRuntimeAgent.h&apos;, u&apos;Source/WebCore/page/Console.cpp&apos;, u&apos;Source/WebCore/page/ContentSecurityPolicy.cpp&apos;, u&apos;Source/WebCore/page/Frame.cpp&apos;, u&apos;Source/WebCore/page/PageConsole.cpp&apos;, u&apos;Source/WebCore/plugins/PluginView.cpp&apos;, u&apos;Source/WebCore/testing/Internals.cpp&apos;, u&apos;Source/WebCore/testing/Internals.h&apos;, u&apos;Source/WebCore/workers/SharedWorkerGlobalScope.cpp&apos;, u&apos;Source/WebCore/workers/WorkerGlobalScope.cpp&apos;, u&apos;Source/WebCore/workers/WorkerThread.cpp&apos;, u&apos;Source/WebCore/xml/XMLTreeViewer.cpp&apos;, u&apos;Source/WebCore/xml/parser/XMLDocumentParser.cpp&apos;, u&apos;Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp&apos;, u&apos;Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in&apos;, u&apos;Source/WebKit/blackberry/Api/WebPage.cpp&apos;, u&apos;Source/WebKit/blackberry/ChangeLog&apos;, u&apos;Source/WebKit/efl/ChangeLog&apos;, u&apos;Source/WebKit/efl/WebCoreSupport/DumpRenderTreeSupportEfl.cpp&apos;, u&apos;Source/WebKit/efl/ewk/ewk_frame.cpp&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/WebKit/gtk/webkit/webkitwebview.cpp&apos;, u&apos;Source/WebKit/mac/Plugins/Hosted/NetscapePluginInstanceProxy.mm&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebInspectorClient.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebFrame.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebView.mm&apos;, u&apos;Source/WebKit/win/ChangeLog&apos;, u&apos;Source/WebKit/win/WebFrame.cpp&apos;, u&apos;Source/WebKit/win/WebView.cpp&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PluginView.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebInspector.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebInspector.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.cpp&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/inspector/CodeGeneratorInspector.py:265:  [RawTypes.BaseType.get_raw_validator_call_text] Class &apos;BaseType&apos; has no &apos;get_validate_method_params&apos; member  [pylint/E1101] [5]
ERROR: Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:54:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/bindings/ScriptObject.h:44:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/inspector/InspectorCSSAgent.h:117:  The parameter name &quot;pseudoIdMatches&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/inspector/InspectorRuntimeAgent.h:75:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InspectorRuntimeAgent.h:76:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InspectorRuntimeAgent.cpp:63:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:45:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:46:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:47:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:48:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:49:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:50:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:51:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:52:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:53:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:54:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:55:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:56:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:92:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:388:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:426:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:429:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:472:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:473:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:510:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:611:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:615:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:701:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.cpp:709:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
ERROR: Source/WebCore/inspector/InspectorTimelineAgent.cpp:585:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/bindings/ScriptValue.h:51:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/inspector/InspectorDOMAgent.cpp:215:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorBackendDispatcher.h:43:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorBackendDispatcher.h:97:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/bindings/js/JSMainThreadExecState.cpp:51:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:50:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:73:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:87:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:110:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:111:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:112:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:130:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorValues.h:131:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/inspector/InspectorProfilerAgent.cpp:124:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InjectedScript.h:65:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InjectedScript.h:66:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InjectedScript.h:76:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InjectedScript.h:83:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InjectedScript.h:84:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/bindings/ScriptFunctionCall.h:47:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bindings/ScriptFunctionCall.h:56:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/bindings/ScriptFunctionCall.h:75:  The parameter name &quot;handler&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/inspector/InspectorWorkerAgent.cpp:112:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorIndexedDBAgent.cpp:561:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorCSSAgent.cpp:620:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorTypeBuilder.h:43:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorTypeBuilder.h:72:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorTypeBuilder.h:81:  cast_to_int is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorTypeBuilder.h:85:  ExactlyInt::cast_to_int is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorTypeBuilder.h:88:  ExactlyInt::cast_to_int is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorTypeBuilder.h:88:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/JavaScriptCore/bindings/ScriptObject.cpp:40:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/bindings/ScriptObject.cpp:46:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorCanvasAgent.cpp:67:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorMemoryAgent.cpp:90:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorHeapProfilerAgent.cpp:54:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDebuggerAgent.cpp:61:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorPageAgent.cpp:356:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorInputAgent.cpp:57:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorConsoleAgent.cpp:64:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDebuggerAgent.h:117:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InspectorDebuggerAgent.h:118:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InspectorResourceAgent.cpp:654:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorStyleSheet.h:66:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/inspector/InspectorDatabaseAgent.cpp:214:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/bindings/js/JSMainThreadExecState.h:111:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/bindings/js/JSMainThreadExecState.h:111:  The parameter name &quot;callType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/bindings/js/JSMainThreadExecState.h:111:  The parameter name &quot;callData&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bindings/ScriptFunctionCall.cpp:86:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp:50:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorAgent.cpp:62:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDOMDebuggerAgent.cpp:74:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/inspector/InspectorDOMStorageAgent.cpp:60:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
Total errors found: 84 in 225 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>958905</commentid>
    <comment_count>37</comment_count>
      <attachid>219002</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-11 14:23:15 -0800</bug_when>
    <thetext>Created attachment 219002
[DIFF] Windows Fixes

Ugh, leave it to webkit-patch to obsolete and remove all the review flags from previous attachments...

Attaching just what the Windows diffs were.

In any case, I&apos;m going to go ahead and land the working combined patch in one go instead of in pieces. It will be too much work at this point to separate them again into 4 distinct patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958920</commentid>
    <comment_count>38</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-11 14:38:12 -0800</bug_when>
    <thetext>Landed r160457 &lt;http://trac.webkit.org/changeset/160457&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980215</commentid>
    <comment_count>39</comment_count>
      <attachid>219001</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-02-13 03:48:14 -0800</bug_when>
    <thetext>Comment on attachment 219001
Patch

Cleared review? from attachment 219001 so that this bug does not appear in http://webkit.org/pending-review.  If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980217</commentid>
    <comment_count>40</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-02-13 03:48:34 -0800</bug_when>
    <thetext>&lt;rdar://problem/16057894&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218556</attachid>
            <date>2013-12-05 17:13:41 -0800</date>
            <delta_ts>2013-12-11 14:02:41 -0800</delta_ts>
            <desc>[PATCH] PART 1: InspectAgentBase, InspectorAgentRegistry, InspectorBackendDispatcher, InspectorValues</desc>
            <filename>part-1-1.patch</filename>
            <type>text/plain</type>
            <size>242614</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">Y29tbWl0IGZhOGI1YzBjYzVkZWQ1MzU3NjI1YzFlMzI2NDE2YTk4ZjI5NTRjZjMKQXV0aG9yOiBK
b3NlcGggUGVjb3Jhcm8gPHBlY29yYXJvQGFwcGxlLmNvbT4KRGF0ZTogICBTYXQgTm92IDIzIDIy
OjU1OjQ4IDIwMTMgLTA4MDAKCiAgICBQQVJUIDE6IFB1c2ggRG93biBTb21lIENvcmUgSW5zcGVj
dG9yIENsYXNzZXMKCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTI2NTZj
My4uYzIwMzdmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjE0LDYg
KzIxNCwxMCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGhlYXAvV2Vha1NldC5j
cHAKICAgICBoZWFwL1dyaXRlQmFycmllclN1cHBvcnQuY3BwCiAKKyAgICBpbnNwZWN0b3IvSW5z
cGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAKKyAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIuY3BwCisgICAgaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKKwogICAgIGlu
dGVycHJldGVyL0Fic3RyYWN0UEMuY3BwCiAgICAgaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAog
ICAgIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5k
ZXggOTlmNjMzYS4uNjg3OTViNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjggQEAKKzIwMTMtMTItMDUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVjdG9yIFJlcXVpcmVkIENs
YXNzZXMgRG93biBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFnZW50
QmFzZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdl
bnRSZWdpc3RyeS5oLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudEJhc2U6On5J
bnNwZWN0b3JBZ2VudEJhc2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudEJh
c2U6OmRpc2NhcmRBZ2VudCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50QmFz
ZTo6SW5zcGVjdG9yQWdlbnRCYXNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdl
bnRSZWdpc3RyeS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFn
ZW50UmVnaXN0cnk6OmFwcGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFnZW50
UmVnaXN0cnkuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckFnZW50UmVnaXN0cnkuaC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcC4KKyAgICAgICAgKEluc3BlY3Rvcjo6Z2V0UHJvcGVy
dHlWYWx1ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIuaC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3Bw
LgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaC4KKwogMjAxMy0xMi0wNCAg
QW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gQnVpbGQgcHJv
amVjdHMgd2l0aCAkKEFSQ0hTX1NUQU5EQVJEXzMyXzY0X0JJVCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZTE5MjliOC4uM2NjNDk1NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTYxMCw3ICs2MTAsMTQgQEAg
amF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ljdS91
bmljb2RlL3V0Zl9vbGQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ljdS91bmljb2RlL3V0
eXBlcy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUvdXZlcnNpb24uaCBc
CisJU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaCBc
CisJU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5
LmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJl
Z2lzdHJ5LmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0Fic3RyYWN0UEMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvQWJzdHJhY3RQQy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
Q2FjaGVkQ2FsbC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4
IDBmNjBmY2UuLjRmZTE2ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
agpAQCAtNDU1LDYgKzQ1NSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXFdl
YWtIYW5kbGVPd25lci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXFdl
YWtTZXQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxXcml0ZUJhcnJp
ZXJTdXBwb3J0LmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJ
bnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGluc3BlY3RvclxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAiIC8+CisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yVmFsdWVzLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGludGVycHJldGVyXEFic3RyYWN0UEMuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcQ2FsbEZyYW1lLmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGludGVycHJldGVyXEludGVycHJldGVyLmNwcCIgLz4K
QEAgLTk5NCw3ICs5OTcsMTEgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcV2Vh
a1NldC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxXZWFrU2V0SW5saW5l
cy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxXcml0ZUJhcnJpZXJTdXBw
b3J0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9y
QWdlbnRCYXNlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5z
cGVjdG9yQWdlbnRSZWdpc3RyeS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5z
cGVjdG9yXEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiIC8+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yVmFsdWVzLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxBYnN0cmFjdFBDLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxDYWNoZWRDYWxsLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxDYWxsRnJhbWUuaCIgLz4KQEAg
LTEzNDEsNCArMTM0OCw0IEBACiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0
cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXEJ1aWxkQ3VzdG9taXph
dGlvbnNcbWFzbS50YXJnZXRzIiAvPgogICA8L0ltcG9ydEdyb3VwPgotPC9Qcm9qZWN0PgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCBhMjYxMGY3Li4zM2FmYTkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBA
IC0yNzksNiArMjc5LDE1IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXFdyaXRl
QmFycmllclN1cHBvcnQuY3BwIj4KICAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVyPgogICAgIDwv
Q2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3Rv
ckFnZW50UmVnaXN0cnkuY3BwIj4KKyAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+Cisg
ICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIj4KKyAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9G
aWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNw
ZWN0b3JcSW5zcGVjdG9yVmFsdWVzLmNwcCI+CisgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmls
dGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW50ZXJw
cmV0ZXJcQWJzdHJhY3RQQy5jcHAiPgogICAgICAgPEZpbHRlcj5pbnRlcnByZXRlcjwvRmlsdGVy
PgogICAgIDwvQ2xDb21waWxlPgpAQCAtMTcxNSw5ICsxNzI0LDIxIEBACiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxoZWFwXFdyaXRlQmFycmllclN1cHBvcnQuaCI+CiAgICAgICA8RmlsdGVy
PmhlYXA8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JBZ2VudEJhc2UuaCI+CisgICAgICA8RmlsdGVyPmluc3Bl
Y3RvcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caW5zcGVjdG9yXEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCI+CisgICAgICA8RmlsdGVyPmlu
c3BlY3RvcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgiPgorICAgICAgPEZp
bHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCI+CiAgICAg
ICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvclZhbHVlcy5oIj4KKyAgICAgIDxG
aWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxBYnN0cmFjdFBDLmgiPgogICAgICAgPEZpbHRlcj5p
bnRlcnByZXRlcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMzE3MCw0ICszMTkxLDQg
QEAKICAgICAgIDxGaWx0ZXI+aml0PC9GaWx0ZXI+CiAgICAgPC9NQVNNPgogICA8L0l0ZW1Hcm91
cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDBhYzE4OTguLmE4MWU1OTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04ODgsNiArODg4LDEzIEBACiAJCUExNzEyQjQxMTFD
N0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExNzEyQjQwMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUEw
MDlDMDE4MzFBMjJEMDBDRjg3MTEgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY0MDkyM0MxNTZFRUQzQjAwNTY2
Q0IyIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUEwMDlDMTE4MzFBMjZFMDBDRjg3MTEgLyogQVJNNjRB
c3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2NDA5MjNCMTU2RUVEM0IwMDU2NkNCMiAvKiBBUk02NEFzc2VtYmxlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1OTNDRjdDMTg0MDM2MDMw
MEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTkzQ0Y3QTE4NDAzNjAzMDBCRkNFMjcg
LyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwICovOyB9OworCQlBNTkzQ0Y3RDE4NDAz
NjAzMDBCRkNFMjcgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OTNDRjdCMTg0MDM2MDMwMEJGQ0Uy
NyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1OTNDRjdGMTg0MDM2MkMwMEJGQ0UyNyAvKiBJ
bnNwZWN0b3JBZ2VudEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1OTNDRjdFMTg0MDM2MkMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudEJhc2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNTkz
Q0Y4MjE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OTNDRjgwMTg0MDM3NzEwMEJGQ0Uy
NyAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwICovOyB9OworCQlBNTkzQ0Y4MzE4NDAzNzcxMDBCRkNF
MjcgLyogSW5zcGVjdG9yVmFsdWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNTkzQ0Y4MTE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTU5
M0NGODYxODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5M0NGODQxODQwMzhD
QTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwICovOyB9OworCQlBNTkzQ0Y4
NzE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5M0NGODUxODQwMzhDQTAwQkZD
RTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTk0NTU4RjE4MjQ1RUZEMDBDQzM4NDMgLyogUmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNTk0NTU4RTE4MjQ1RURFMDBDQzM4NDMgLyogUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZS5jcHAgKi87IH07CiAJCUE1OTQ1NTkyMTgyNDc0NDcwMENDMzg0MyAvKiBK
U0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTU5NDU1OTAxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2Jq
ZWN0RGVidWdnYWJsZS5jcHAgKi87IH07CiAJCUE1OTQ1NTkzMTgyNDc0NDcwMENDMzg0MyAvKiBK
U0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE1OTQ1NTkxMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVj
dERlYnVnZ2FibGUuaCAqLzsgfTsKQEAgLTIyMTMsNiArMjIyMCwxMyBAQAogCQlBMTcxMkIzQTEx
QzdCMjEyMDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVnRXhwQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBMTcxMkIzRTExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBLZXkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTU5M0NGN0ExODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcDsgcGF0aCA9IGluc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTND
RjdCMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5o
OyBwYXRoID0gaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTNDRjdFMTg0MDM2MkMwMEJGQ0UyNyAvKiBJbnNwZWN0
b3JBZ2VudEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSW5zcGVjdG9y
QWdlbnRCYXNlLmg7IHBhdGggPSBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTNDRjgwMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNw
ZWN0b3JWYWx1ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSW5z
cGVjdG9yVmFsdWVzLmNwcDsgcGF0aCA9IGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTkzQ0Y4MTE4NDAzNzcxMDBCRkNFMjcgLyog
SW5zcGVjdG9yVmFsdWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEluc3Bl
Y3RvclZhbHVlcy5oOyBwYXRoID0gaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBNTkzQ0Y4NDE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVj
dG9yQWdlbnRSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcDsgcGF0aCA9IGluc3BlY3Rvci9JbnNwZWN0b3JB
Z2VudFJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU5M0NGODUx
ODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oOyBwYXRoID0gaW5z
cGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTU5NDU1OEUxODI0NUVERTAwQ0MzODQzIC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZS5jcHA7IHBhdGggPSBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTk0NTU5MDE4
MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1OTQ1NTkxMTgyNDc0NDcwMENDMzg0MyAv
KiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC00MTg0LDcgKzQxOTgsMTQgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCiAJCQkJQTVCQTE1RTAxODIzNDA5RDAwQTgyRTY5IC8qIHJlbW90ZSAqLywKKwkJCQlB
NTkzQ0Y3RTE4NDAzNjJDMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRCYXNlLmggKi8sCisJCQkJ
QTU5M0NGODQxODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwICov
LAorCQkJCUE1OTNDRjg1MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5
LmggKi8sCisJCQkJQTU5M0NGN0ExODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmNwcCAqLywKKwkJCQlBNTkzQ0Y3QjE4NDAzNjAzMDBCRkNFMjcgLyogSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIuaCAqLywKIAkJCQlBNTk0NTU5NDE4MjQ3OUVCMDBDQzM4NDMg
LyogSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggKi8sCisJCQkJQTU5M0NGODAxODQwMzc3MTAw
QkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5jcHAgKi8sCisJCQkJQTU5M0NGODExODQwMzc3MTAw
QkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5oICovLAogCQkJKTsKIAkJCW5hbWUgPSBpbnNwZWN0
b3I7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNDMyNSw2ICs0MzQ2LDcgQEAKIAkJ
CQkwRjJCNjZERjE3QjZCNUFCMDBBN0FFM0YgLyogRGF0YVZpZXcuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDRDIwMzRBMEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlQ29uc3RydWN0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxMzU5Q0YzMEZERDg5QUQwMDIwNjE4MCAvKiBEYXRlQ29udmVyc2lvbi5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQTU5M0NGN0YxODQwMzYyQzAwQkZDRTI3IC8qIEluc3BlY3Rv
ckFnZW50QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxMTY2MDIwRTE5OTdCNDAwODA2NkRE
IC8qIERhdGVJbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRBMTU2MzIxMDk2NjM2NTAw
NkZBMjYwIC8qIERhdGVJbnN0YW5jZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0QyMDM0
QzBFMTcxMzVFMDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC00
MzU2LDYgKzQzNzgsNyBAQAogCQkJCTBGODM2NEI3MTY0QjBDMTEwMDUzMzI5QSAvKiBERkdCcmFu
Y2hEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUExQTAwOUMwMTgzMUEyMkQwMENGODcx
MSAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVDOURDNTEz
MjhERjgyMDAyQjJBRDcgLyogREZHQnl0ZUNvZGVQYXJzZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUE1OTNDRjg3MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjI1NkMzNjE2MjdCMEFEMDA3RjI3ODMgLyogREZHQ2FsbEFycmF5
QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0IyOTRC
MTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRkZDOTU4MTRFRjkwQTIwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC00NDQyLDYgKzQ0NjUsNyBAQAogCQkJCTg2RUM5REQzMTMyOERGODIwMDJCMkFENyAvKiBE
RkdTcGVjdWxhdGl2ZUpJVC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEODlEMDAxN0EwQjhDQzAw
NzczQUQ4IC8qIERGR1NTQUNvbnZlcnNpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5
RkI0RjUxN0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUE1OTNDRjgzMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNjM5NDc4MTVEQ0UzNEIwMDZBNTk3QyAvKiBERkdTdHJ1Y3R1
cmVBYnN0cmFjdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMwOTdBMjE0NkIyOENDMDBD
RjI0NDIgLyogREZHVGh1bmtzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4QTMyODE3RDUxRjU3
MDBDQTJDNDAgLyogREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC00ODE5LDYgKzQ4NDMsNyBAQAogCQkJCTBGMENENEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQ
dXREaXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOUZDOEM1MTRFMUI2MDQw
MEQ1MkFFMCAvKiBQdXRLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDdCODQ2MzBFNkRFNkIx
MDA0Nzc1QTQgLyogUHV0UHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTkzQ0Y3
RDE4NDAzNjAzMDBCRkNFMjcgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRjYwQUMyMTY3NDBGODMwMDAyOTc3OSAvKiBSZWR1Y2VXaGl0ZXNwYWNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1QTBFMTZGNUNEMDBCMzQ0NjAgLyogUmVnRXhw
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTcxMkIzRjExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhw
Q2FjaGUuaCBpbiBIZWFkZXJzICovLApAQCAtNTQ0MCw2ICs1NDY1LDcgQEAKIAkJCQkwRkY0Mjc2
NDE1OTFBMUNDMDA0Q0I5RkYgLyogREZHRGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGRDgxQUQyMTU0RkI0RUUwMDk4M0U3MiAvKiBERkdEb21pbmF0b3JzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRDNDODI2MTQxMTVENDAwMEZEODFDQiAvKiBERkdEcml2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQTU5M0NGODIxODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZh
bHVlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkYwRjE5RTE2QjcyQTBCMDA1REY5NUIgLyog
REZHRWRnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzRERUY5MzE4MkQ5OTE0MDA1MjJDMjIg
LyogTWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCQzBBRTcx
NDk2QzdDNDAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
NTU0Myw2ICs1NTY5LDcgQEAKIAkJCQkwRjlEMzM5QTE4MDNBREI3MDA3M0MyQkMgLyogRlRMU3Rh
Y2tNYXBzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEwQTE2MTcwNkJCOTAwMEJCNzIyQyAv
KiBGVExTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJFMTE3MTc4RTFDMDA2OTBD
N0YgLyogRlRMVGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1OTNDRjdDMTg0MDM2MDMw
MEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjIzNUJFMzE3MTc4RTFDMDA2OTBDN0YgLyogRlRMVmFsdWVGb3JtYXQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMTQ3RjM5Q0IxMDdFQzM3NjAwNDI3QTQ4IC8qIEZ1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGMEYxOUYxNkI3MkExNzAwNURGOTVCIC8q
IEZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01ODEwLDYgKzU4
MzcsNyBAQAogCQkJCTg2NzA0Qjg0MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySW50ZXJwcmV0ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY3MDRCODYxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJK
SVQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY3MDRCODkxMkRCQTMzNzAwQTlGRTdCIC8qIFlh
cnJQYXR0ZXJuLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1OTNDRjg2MTg0MDM4Q0EwMEJGQ0Uy
NyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0
QjQyMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5o
CnNpbWlsYXJpdHkgaW5kZXggNjglCmNvcHkgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oCmNvcHkgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaAppbmRleCA0ZmQwMzUzLi4yMGFkNzFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNl
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI0LDI5ICsyNCwzMyBAQAog
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEluc3BlY3RvckFnZW50UmVnaXN0cnlfaAot
I2RlZmluZSBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5X2gKKyNpZm5kZWYgSW5zcGVjdG9yQWdlbnRC
YXNlX2gKKyNkZWZpbmUgSW5zcGVjdG9yQWdlbnRCYXNlX2gKIAotI2luY2x1ZGUgIkluc3BlY3Rv
ckJhc2VBZ2VudC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogY2xhc3MgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI7CitjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CiAKLWNsYXNzIElu
c3BlY3RvckFnZW50UmVnaXN0cnkgeworY2xhc3MgSW5zcGVjdG9yQWdlbnRCYXNlIHsKIHB1Ymxp
YzoKLSAgICB2b2lkIGFwcGVuZChQYXNzT3duUHRyPEluc3BlY3RvckJhc2VBZ2VudD4pOworICAg
IHZpcnR1YWwgfkluc3BlY3RvckFnZW50QmFzZSgpIHsgfQogCi0gICAgdm9pZCBkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqKTsKLSAgICB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5k
KCk7Ci0gICAgdm9pZCBkaXNjYXJkQWdlbnRzKCk7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9u
dGVuZEFuZEJhY2tlbmQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpc2NhcmRBZ2VudCgpIHsg
fQogCi1wcml2YXRlOgotICAgIFZlY3RvcjxPd25QdHI8SW5zcGVjdG9yQmFzZUFnZW50Pj4gbV9h
Z2VudHM7Citwcm90ZWN0ZWQ6CisgICAgSW5zcGVjdG9yQWdlbnRCYXNlKGNvbnN0IFN0cmluZyYg
bmFtZSkKKyAgICAgICAgOiBtX25hbWUobmFtZSkKKyAgICB7CisgICAgfQorCisgICAgU3RyaW5n
IG1fbmFtZTsKIH07CisgICAgCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yQWdlbnRSZWdpc3Ry
eV9oKQorI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckFnZW50QmFzZV9oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNw
cApzaW1pbGFyaXR5IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAKcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAKaW5kZXggMDk5ZDFhMy4u
NDZlOTIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFn
ZW50UmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAKQEAgLTI1LDE0ICsyNSwxMyBAQAogICovCiAKICNpbmNs
dWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0KICNpbmNsdWRlICJJbnNw
ZWN0b3JBZ2VudFJlZ2lzdHJ5LmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKKyNpZiBFTkFCTEUo
SU5TUEVDVE9SKQogCi12b2lkIEluc3BlY3RvckFnZW50UmVnaXN0cnk6OmFwcGVuZChQYXNzT3du
UHRyPEluc3BlY3RvckJhc2VBZ2VudD4gYWdlbnQpCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKwor
dm9pZCBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5OjphcHBlbmQoUGFzc093blB0cjxJbnNwZWN0b3JB
Z2VudEJhc2U+IGFnZW50KQogewogICAgIG1fYWdlbnRzLmFwcGVuZChhZ2VudCk7CiB9CkBAIC01
NSw2ICs1NCw2IEBAIHZvaWQgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6ZGlzY2FyZEFnZW50cygp
CiAgICAgICAgIG1fYWdlbnRzW2ldLT5kaXNjYXJkQWdlbnQoKTsKIH0KIAotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyBFTkFCTEUo
SU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckFnZW50UmVnaXN0cnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQWdlbnRSZWdpc3RyeS5oCnNpbWlsYXJpdHkgaW5kZXggODclCmNvcHkgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oCmNvcHkgdG8gU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgKaW5kZXgg
NGZkMDM1My4uY2I2NTcyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckFnZW50UmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaApAQCAtMjcsMjYgKzI3LDI3IEBACiAjaWZuZGVm
IEluc3BlY3RvckFnZW50UmVnaXN0cnlfaAogI2RlZmluZSBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5
X2gKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3Rv
ckFnZW50QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSW5zcGVjdG9yIHsK
IAogY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CitjbGFzcyBJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWw7CiAKLWNsYXNzIEluc3BlY3RvckFnZW50UmVnaXN0cnkgeworY2xhc3MgSlNf
RVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeSB7CiBwdWJsaWM6Ci0gICAgdm9p
ZCBhcHBlbmQoUGFzc093blB0cjxJbnNwZWN0b3JCYXNlQWdlbnQ+KTsKKyAgICB2b2lkIGFwcGVu
ZChQYXNzT3duUHRyPEluc3BlY3RvckFnZW50QmFzZT4pOwogCiAgICAgdm9pZCBkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqKTsKICAgICB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5k
KCk7CiAgICAgdm9pZCBkaXNjYXJkQWdlbnRzKCk7CiAKIHByaXZhdGU6Ci0gICAgVmVjdG9yPE93
blB0cjxJbnNwZWN0b3JCYXNlQWdlbnQ+PiBtX2FnZW50czsKKyAgICBWZWN0b3I8T3duUHRyPElu
c3BlY3RvckFnZW50QmFzZT4+IG1fYWdlbnRzOwogfTsKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0
b3JBZ2VudFJlZ2lzdHJ5X2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAKc2ltaWxhcml0eSBpbmRleCA5
NiUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmNwcApyZW5hbWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAKaW5kZXggYmZhNGM0Yi4uYzI2Njg1MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmNwcApAQCAtMjksMTIgKzI5LDEyIEBACiAKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yRm9yd2FyZGluZy5oIgorI2luY2x1ZGUgIklu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6OkNhbGxiYWNrQmFzZShQYXNz
UmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBiYWNrZW5kRGlzcGF0Y2hlciwgaW50
IGlkKQogICAgIDogbV9iYWNrZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcikKQEAgLTE4
Nyw3ICsxODcsNyBAQCB2b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpyZXBvcnRQcm90
b2NvbEVycm9yKGNvbnN0IGxvbmcqIGNvbnN0IGNhbGxJZCwgQwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBSZXR1cm5WYWx1ZVR5cGUsIHR5cGVuYW1lIFZhbHVlVHlwZSwgdHlwZW5hbWUgRGVmYXVs
dFZhbHVlVHlwZT4KLVJldHVyblZhbHVlVHlwZSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6
Z2V0UHJvcGVydHlWYWx1ZShJbnNwZWN0b3JPYmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0b3JBcnJheSogcHJvdG9jb2xFcnJvcnMsIERl
ZmF1bHRWYWx1ZVR5cGUgZGVmYXVsdFZhbHVlLCBib29sICgqYXNNZXRob2QpKEluc3BlY3RvclZh
bHVlKiwgVmFsdWVUeXBlKiksIGNvbnN0IGNoYXIqIHR5cGVOYW1lKQorc3RhdGljIFJldHVyblZh
bHVlVHlwZSBnZXRQcm9wZXJ0eVZhbHVlKEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBT
dHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3RvckFycmF5KiBwcm90b2NvbEVy
cm9ycywgRGVmYXVsdFZhbHVlVHlwZSBkZWZhdWx0VmFsdWUsIGJvb2wgKCphc01ldGhvZCkoSW5z
cGVjdG9yVmFsdWUqLCBWYWx1ZVR5cGUqKSwgY29uc3QgY2hhciogdHlwZU5hbWUpCiB7CiAgICAg
QVNTRVJUKHByb3RvY29sRXJyb3JzKTsKIApAQCAtMjU5LDYgKzI1OSw2IEBAIFBhc3NSZWZQdHI8
SW5zcGVjdG9yQXJyYXk+IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRBcnJheShJbnNw
ZWN0b3JPYmplY3QqCiAgICAgcmV0dXJuIGdldFByb3BlcnR5VmFsdWU8UGFzc1JlZlB0cjxJbnNw
ZWN0b3JBcnJheT4sIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4sIEluc3BlY3RvckFycmF5Kj4ob2Jq
ZWN0LCBuYW1lLCB2YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycywgbnVsbHB0ciwgQXNNZXRob2RC
cmlkZ2VzOjphc0FycmF5LCAiQXJyYXkiKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
fSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyLmgKc2ltaWxhcml0eSBpbmRleCA4NyUKcmVuYW1lIGZyb20gU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgKcmVuYW1lIHRvIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
aAppbmRleCBhNmU0ZDJmLi41MGZlNjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgKQEAgLTI3LDEyICsy
NywxMiBAQAogI2lmbmRlZiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcl9oCiAjZGVmaW5lIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyX2gKIAotI2luY2x1ZGUgIkluc3BlY3RvclR5cGVCdWls
ZGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSW5zcGVjdG9y
IHsKIAogY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CiBjbGFzcyBJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWw7CkBAIC00NywxNSArNDcsMTMgQEAgcHJvdGVjdGVkOgogICAgIFJlZlB0
cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKIH07CiAK
LWNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIFJlZkNvdW50ZWQ8SW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIFJlZkNvdW50ZWQ8SW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCopOwotICAg
IHZpcnR1YWwgfkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKCkgeyB9CiAKLSAgICBjbGFzcyBD
YWxsYmFja0Jhc2U6IHB1YmxpYyBSZWZDb3VudGVkPENhbGxiYWNrQmFzZT4geworICAgIGNsYXNz
IENhbGxiYWNrQmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPENhbGxiYWNrQmFzZT4gewogICAgIHB1
YmxpYzoKICAgICAgICAgQ2FsbGJhY2tCYXNlKFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI+LCBpbnQgaWQpOwotICAgICAgICB2aXJ0dWFsIH5DYWxsYmFja0Jhc2UoKSB7IH0K
IAogICAgICAgICBib29sIGlzQWN0aXZlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2VuZEZhaWx1
cmUoY29uc3QgRXJyb3JTdHJpbmcmKTsKQEAgLTk4LDEzICs5NiwxMCBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCogaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSA6IG1faW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgeyB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBSZXR1cm5WYWx1ZVR5cGUsIHR5cGVuYW1lIFZhbHVlVHlwZSwgdHlwZW5hbWUgRGVmYXVsdFZh
bHVlVHlwZT4KLSAgICBzdGF0aWMgUmV0dXJuVmFsdWVUeXBlIGdldFByb3BlcnR5VmFsdWUoSW5z
cGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3Vu
ZCwgSW5zcGVjdG9yQXJyYXkqIHByb3RvY29sRXJyb3JzLCBEZWZhdWx0VmFsdWVUeXBlIGRlZmF1
bHRWYWx1ZSwgYm9vbCAoKmFzTWV0aG9kKShJbnNwZWN0b3JWYWx1ZSosIFZhbHVlVHlwZSopLCBj
b25zdCBjaGFyKiB0eXBlTmFtZSk7Ci0KICAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG1f
aW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogICAgIEhhc2hNYXA8U3RyaW5nLCBJbnNwZWN0b3JT
dXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcio+IG1fZGlzcGF0Y2hlcnM7CiB9OwogCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8v
ICFkZWZpbmVkKEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyX2gpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcApzaW1pbGFyaXR5IGluZGV4IDk5
JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNw
cApyZW5hbWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1
ZXMuY3BwCmluZGV4IDhmY2UzMmQuLjI0MTlkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1
ZGUgPHd0Zi9kdG9hLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCi1u
YW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogbmFtZXNwYWNlIHsK
IApAQCAtODMzLDQgKzgzMyw0IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFzaWNWYWx1ZT4gSW5z
cGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKGRvdWJsZSB2YWx1ZSkKICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEluc3BlY3RvckJhc2ljVmFsdWUodmFsdWUpKTsKIH0KIAotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCnNpbWlsYXJpdHkgaW5kZXggOTUlCnJlbmFtZSBm
cm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaApyZW5hbWUgdG8g
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaAppbmRleCBj
YmI3ZjcxLi4wMTJhMWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yVmFsdWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JWYWx1ZXMuaApAQCAtMzgsMTIgKzM4LDEyIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogY2xhc3MgSW5zcGVjdG9yQXJyYXk7
CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiAKLWNsYXNzIEluc3BlY3RvclZhbHVlIDogcHVibGlj
IFJlZkNvdW50ZWQ8SW5zcGVjdG9yVmFsdWU+IHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIElu
c3BlY3RvclZhbHVlIDogcHVibGljIFJlZkNvdW50ZWQ8SW5zcGVjdG9yVmFsdWU+IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgY29uc3QgaW50IG1heERlcHRoID0gMTAwMDsKIApAQCAtOTAsNyArOTAs
NyBAQCBwcml2YXRlOgogICAgIFR5cGUgbV90eXBlOwogfTsKIAotY2xhc3MgSW5zcGVjdG9yQmFz
aWNWYWx1ZSA6IHB1YmxpYyBJbnNwZWN0b3JWYWx1ZSB7CitjbGFzcyBKU19FWFBPUlRfUFJJVkFU
RSBJbnNwZWN0b3JCYXNpY1ZhbHVlIDogcHVibGljIEluc3BlY3RvclZhbHVlIHsKIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvckJhc2ljVmFsdWU+IGNyZWF0ZShib29s
KTsKQEAgLTExNyw3ICsxMTcsNyBAQCBwcml2YXRlOgogICAgIH07CiB9OwogCi1jbGFzcyBJbnNw
ZWN0b3JTdHJpbmcgOiBwdWJsaWMgSW5zcGVjdG9yVmFsdWUgeworY2xhc3MgSlNfRVhQT1JUX1BS
SVZBVEUgSW5zcGVjdG9yU3RyaW5nIDogcHVibGljIEluc3BlY3RvclZhbHVlIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JTdHJpbmc+IGNyZWF0ZShjb25zdCBTdHJp
bmcmKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JTdHJpbmc+IGNyZWF0ZShjb25z
dCBjaGFyKik7CkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zdHJp
bmdWYWx1ZTsKIH07CiAKLWNsYXNzIEluc3BlY3Rvck9iamVjdEJhc2UgOiBwdWJsaWMgSW5zcGVj
dG9yVmFsdWUgeworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yT2JqZWN0QmFzZSA6
IHB1YmxpYyBJbnNwZWN0b3JWYWx1ZSB7CiBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxT
dHJpbmcsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4+IERpY3Rpb25hcnk7CiAKQEAgLTE5Miw3ICsx
OTIsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBJbnNwZWN0b3JPYmplY3QgOiBwdWJsaWMgSW5zcGVj
dG9yT2JqZWN0QmFzZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgSlNfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZSgpOwogCiAgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0
QmFzZTo6YXNPYmplY3Q7CiAKQEAgLTIyMCw3ICsyMjAsNyBAQCBwdWJsaWM6CiB9OwogCiAKLWNs
YXNzIEluc3BlY3RvckFycmF5QmFzZSA6IHB1YmxpYyBJbnNwZWN0b3JWYWx1ZSB7CitjbGFzcyBK
U19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JBcnJheUJhc2UgOiBwdWJsaWMgSW5zcGVjdG9yVmFs
dWUgewogcHVibGljOgogICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4+
OjppdGVyYXRvciBpdGVyYXRvcjsKICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8SW5zcGVjdG9y
VmFsdWU+Pjo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CkBAIC0yNjAsNyArMjYwLDcg
QEAgcHJpdmF0ZToKIAogY2xhc3MgSW5zcGVjdG9yQXJyYXkgOiBwdWJsaWMgSW5zcGVjdG9yQXJy
YXlCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4g
Y3JlYXRlKCk7CisgICAgc3RhdGljIEpTX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+IGNyZWF0ZSgpOwogCiAgICAgdXNpbmcgSW5zcGVjdG9yQXJyYXlCYXNlOjphc0Fy
cmF5OwogCkBAIC0zNjMsNiArMzYzLDYgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9yQXJyYXlCYXNl
OjpwdXNoQXJyYXkoUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gdmFsdWUpCiAgICAgbV9kYXRh
LmFwcGVuZCh2YWx1ZSk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNw
YWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yVmFsdWVzX2gpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CmluZGV4IGIwMjk5ZDguLmFjOTU2MmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CkBAIC0xNTc2LDkgKzE1NzYsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRNb2R1bGUuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcAotICAgIGluc3Bl
Y3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCi0gICAgaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKICAgICBp
bnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rv
ckNsaWVudC5jcHAKQEAgLTE2MDksNyArMTYwNyw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAg
ICBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVj
dG9yU3R5bGVUZXh0RWRpdG9yLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFn
ZW50LmNwcAotICAgIGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCiAgICAgaW5zcGVjdG9y
L0luc3BlY3RvcldvcmtlckFnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdl
bnRzLmNwcAogICAgIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCA3MTEzYWFlLi4zYThiNzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkzIEBACisyMDEz
LTEyLTA1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAg
V2ViIEluc3BlY3RvcjogUHVzaCBNb3JlIEluc3BlY3RvciBSZXF1aXJlZCBDbGFzc2VzIERvd24g
aW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTI1MzI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUGFydCAxOiBQdXNoIGRvd24gY29yZSBpbnNwZWN0b3IgY2xhc3Nlcy4KKwor
ICAgICAgICAgIC0gTW92ZSBJbnNwZWN0QWdlbnRCYXNlLCBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5
LCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9yVmFsdWVzCisgICAgICAgICAg
ICBkb3duIHRvIEphdmFTY3JpcHRDb3JlIGFuZCBpbnRvIHRoZSBJbnNwZWN0b3IgbmFtZXNwYWNl
LgorICAgICAgICAgIC0gQWRkIGZvcndhcmRpbmcgaGVhZGVycyBmb3IgSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yIGZpbGVzLgorICAgICAgICAgIC0gVXNlIHRoZSBJbnNwZWN0b3IgbmFtZXNwYWNl
IHdoZXJlIGFwcHJvcHJpYXRlLgorICAgICAgICAgIC0gUmVuYW1lIEluc3BlY3RvckJhc2VBZ2Vu
dCB0byBJbnNwZWN0b3JBZ2VudEJhc2UgZm9yIGNsYXJpdHkuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9y
QWdlbnRCYXNlLmg6IEFkZGVkLgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rv
ci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Lmg6IEFkZGVkLgorICAgICAgICAqIEZvcndhcmRpbmdI
ZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg6IEFk
ZGVkLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5l
eHAuaW46CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAg
ICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9T
Y3JpcHRQcm9maWxlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmg6
CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL1NjcmlwdFZhbHVlLmg6CisgICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5j
cHA6CisgICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weToKKyAgICAgICAgKFJhd1R5
cGVzLkJhc2VUeXBlLmdldF9yYXdfdmFsaWRhdG9yX2NhbGxfdGV4dCk6CisgICAgICAgIChSYXdU
eXBlcy5PYmplY3QuZ2V0X2FycmF5X2l0ZW1fcmF3X2NfdHlwZV90ZXh0KToKKyAgICAgICAgKFJh
d1R5cGVzLkFueS5nZXRfYXJyYXlfaXRlbV9yYXdfY190eXBlX3RleHQpOgorICAgICAgICAoUmF3
VHlwZXMuQXJyYXkuZ2V0X2FycmF5X2l0ZW1fcmF3X2NfdHlwZV90ZXh0KToKKyAgICAgICAgKFR5
cGVNb2RlbC5pbml0X2NsYXNzKToKKyAgICAgICAgKFR5cGVCaW5kaW5ncy5jcmVhdGVfdHlwZV9k
ZWNsYXJhdGlvbl8uRW51bUJpbmRpbmcuZ2V0X2NvZGVfZ2VuZXJhdG9yLkNvZGVHZW5lcmF0b3Iu
Z2VuZXJhdGVfdHlwZV9idWlsZGVyKToKKyAgICAgICAgKFR5cGVCaW5kaW5ncy5jcmVhdGVfdHlw
ZV9kZWNsYXJhdGlvbl8uQ2xhc3NCaW5kaW5nLmdldF9jb2RlX2dlbmVyYXRvci5Db2RlR2VuZXJh
dG9yLmdlbmVyYXRlX3R5cGVfYnVpbGRlcik6CisgICAgICAgIChHZW5lcmF0b3IuZ28pOgorICAg
ICAgICAoR2VuZXJhdG9yLnByb2Nlc3NfY29tbWFuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0Nv
ZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5OgorICAgICAgICAodm9pZCk6CisgICAgICAg
IChJbnNwZWN0b3JGcm9udGVuZF9oKToKKyAgICAgICAgKEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyc19oKToKKyAgICAgICAgKEFycmF5KToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1l
c3NhZ2UuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbHMuY3BwOgorICAgICAgICAqIGluc3BlY3Rv
ci9Db250ZW50U2VhcmNoVXRpbHMuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdEhvc3QuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlw
dEhvc3QuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg6CisgICAgICAgICog
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQWdlbnQ6Oklu
c3BlY3RvckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50OjpkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2Vu
dC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmguCisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBZ2VudEJhc2U6Okluc3BlY3RvckFnZW50QmFzZSk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6SW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckJhc2VBZ2VudC5oOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6
SW5zcGVjdG9yQ1NTQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6
OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNTU0FnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpJbnNwZWN0b3JD
YW52YXNBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
Q2FudmFzQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNwcDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDb25zb2xlQWdlbnQ6Okluc3BlY3RvckNvbnNvbGVBZ2VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6SW5zcGVjdG9yRE9N
QWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQ6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRm9yd2FyZGluZy5oOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySGVhcFByb2ZpbGVyQWdlbnQ6Okluc3BlY3RvckhlYXBQcm9maWxlckFnZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6SW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6
OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckluZGV4ZWREQkFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvcklucHV0
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5wdXRBZ2VudDo6SW5zcGVj
dG9ySW5wdXRBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnB1dEFnZW50Ojpk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JJbnB1dEFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50OjpJbnNwZWN0b3JM
YXllclRyZWVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTWVt
b3J5QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JN
ZW1vcnlBZ2VudDo6SW5zcGVjdG9yTWVtb3J5QWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JNZW1vcnlBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVy
bGF5LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUGFnZUFnZW50OjpJbnNwZWN0b3JQYWdlQWdlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JQcm9maWxlckFnZW50OjpJbnNwZWN0b3JQcm9maWxlckFnZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6SW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6SW5zcGVjdG9yUnVudGltZUFnZW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JTdHlsZVNoZWV0Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NJZDo6
SW5zcGVjdG9yQ1NTSWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVRleHRF
ZGl0b3IuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFn
ZW50OjpJbnNwZWN0b3JUaW1lbGluZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yVGltZWxpbmVBZ2VudC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6VGltZWxpbmVSZWNvcmRFbnRyeTo6VGltZWxpbmVSZWNvcmRFbnRyeSk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvcldvcmtlckFnZW50OjpJbnNwZWN0b3JXb3JrZXJBZ2VudCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JXb3JrZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5jcHA6CisgICAgICAgICogaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZUNvbnNv
bGVBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGlt
ZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9QYWdlUnVudGltZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50
cy5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHA6CisgICAgICAg
ICogaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9TY3Jp
cHRDYWxsU3RhY2suY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5Lmg6CisgICAgICAgIChXZWJDb3JlOjpU
aW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVdlYlNvY2tldENyZWF0ZURhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6VGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljV2ViU29ja2V0
RGF0YSk6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckNvbnNvbGVBZ2VudC5jcHA6CisgICAg
ICAgICogaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAqIGluc3Bl
Y3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJS
dW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVudGltZUFnZW50Ojpk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJS
dW50aW1lQWdlbnQuaDoKKyAgICAgICAgKiBwYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6
CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorCiAyMDEzLTEyLTA0ICBBbmR5IEVz
dGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBCdWlsZCBwcm9qZWN0cyB3
aXRoICQoQVJDSFNfU1RBTkRBUkRfMzJfNjRfQklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oIGIvU291
cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFz
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxYTM1ZmMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5z
cGVjdG9yQWdlbnRCYXNlLmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0lu
c3BlY3RvckFnZW50QmFzZV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX0luc3BlY3RvckFnZW50QmFz
ZV9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQWdlbnRCYXNlLmg+CisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rv
ci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVh
ZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmY5ZGI5NWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5o
CkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9JbnNwZWN0b3JBZ2VudFJlZ2lz
dHJ5X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfSW5zcGVjdG9yQWdlbnRSZWdpc3RyeV9oCisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oPgorI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFk
ZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllNWU4N2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXJfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9JbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcl9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hl
YWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2Fy
ZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmJkOTg1ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKQEAgLTAs
MCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0luc3BlY3RvclZhbHVlc19oCisjZGVmaW5l
IFdlYkNvcmVfRldEX0luc3BlY3RvclZhbHVlc19oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SW5zcGVjdG9yVmFsdWVzLmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmlu
ZGV4IDMwMWNlYmUuLjVkZmU3OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAt
Mzc4MSwxMyArMzc4MSw5IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JBZ2VudC5oIFwKLQlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRS
ZWdpc3RyeS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJl
Z2lzdHJ5LmggXAorCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2Uu
aCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQuaCBcCi0JU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmggXAotCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JC
YXNlQWdlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0Fn
ZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50
LmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNJbnN0cnVtZW50
YXRpb24uaCBcCkBAIC0zODUzLDggKzM4NDksNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuaCBcCiAJU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIFwKLQlTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcCBcCi0JU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yV29ya2VyQWdlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
cldvcmtlclJlc291cmNlLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBhYTM2OWZiLi45ZGQx
MjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTUwMSw3ICsxNTAxLDYgQEAgX19aTks3V2Vi
Q29yZTE0RnJhbWVTZWxlY3Rpb24zMWdldENsaXBwZWRWaXNpYmxlVGV4dFJlY3RhbmdsZXNFUk4z
V1RGNlZlY3RvcklOU18KIF9fWk5LN1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uMzZyb290RWRpdGFi
bGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnRFdgogX19aTks3V2ViQ29yZTE0RnJhbWVTZWxlY3Rp
b242Ym91bmRzRWIKIF9fWk5LN1dlYkNvcmUxNEluc2VydGlvblBvaW50OGlzQWN0aXZlRXYKLV9f
Wk5LN1dlYkNvcmUxNEluc3BlY3RvclZhbHVlMTJ0b0pTT05TdHJpbmdFdgogX19aTks3V2ViQ29y
ZTE0UmVuZGVyTGlzdEl0ZW0xMG1hcmtlclRleHRFdgogX19aTks3V2ViQ29yZTE0UmVzb3VyY2VC
dWZmZXI0ZGF0YUV2CiBfX1pOSzdXZWJDb3JlMTRSZXNvdXJjZUJ1ZmZlcjRzaXplRXYKQEAgLTI2
MjUsNyArMjYyNCw3IEBAIF9fWk43V2ViQ29yZTE2SFRNTElucHV0RWxlbWVudDI1c2VsZWN0Q29s
b3JJbkNvbG9yQ2hvb3NlckVSS05TXzVDb2xvckUKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogX19a
TjdXZWJDb3JlMTVJbnNwZWN0b3JDbGllbnQzMWRvRGlzcGF0Y2hNZXNzYWdlT25Gcm9udGVuZFBh
Z2VFUE5TXzRQYWdlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTdJbnNwZWN0b3JDb3Vu
dGVyczEyY291bnRlclZhbHVlRU5TMF8xMUNvdW50ZXJUeXBlRQotX19aTjdXZWJDb3JlMTlJbnNw
ZWN0b3JDb250cm9sbGVyMTVjb25uZWN0RnJvbnRlbmRFUE5TXzI0SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsRQorX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMTVjb25uZWN0RnJvbnRl
bmRFUE45SW5zcGVjdG9yMjRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxFCiBfX1pON1dlYkNvcmUx
OUluc3BlY3RvckNvbnRyb2xsZXIxOGRpc2Nvbm5lY3RGcm9udGVuZEV2CiBfX1pON1dlYkNvcmUx
OUluc3BlY3RvckNvbnRyb2xsZXIxOHNldFByb2ZpbGVyRW5hYmxlZEViCiBfX1pON1dlYkNvcmUx
OUluc3BlY3RvckNvbnRyb2xsZXIyNWV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmRFbFJLTjNXVEY2
U3RyaW5nRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2oKaW5kZXggNDE2NTU2Yy4uMmZhOGM5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC0xNzYzMSwxNCArMTc2MzEsNiBAQAogICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0Ns
Q29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JB
Z2VudFJlZ2lzdHJ5LmNwcCI+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQWxsSW5PbmUuY3BwIj4KICAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4
NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE3NjU1LDE0ICsxNzY0Nyw2IEBACiAg
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAg
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAg
IDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCI+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMici
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4
NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2lu
MzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwIj4KICAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC0xNzkwMywx
NCArMTc4ODcsNiBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGluc3BlY3RvclxJbnNwZWN0b3JWYWx1ZXMuY3BwIj4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2lu
MzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNh
aXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlv
bnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlv
bnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAi
PgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgog
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE4
NTc4LDYgKzE4NTU0LDExIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5n
SGVhZGVyc1xoZWFwXFNsb3RWaXNpdG9yLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxGb3J3YXJkaW5nSGVhZGVyc1xoZWFwXFN0cm9uZ0lubGluZXMuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGhlYXBcV2Vhay5oIiAvPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3Rv
ckFnZW50QmFzZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hl
YWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCIgLz4KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGlu
Z0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIiAvPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3Rv
clZhbHVlcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRl
cnNcbWFzbVxYODZBc3NlbWJsZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZv
cndhcmRpbmdIZWFkZXJzXHBhcnNlclxTb3VyY2VDb2RlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xwYXJzZXJcU291cmNlUHJvdmlkZXIuaCIgLz4K
QEAgLTIwOTQyLDkgKzIwOTIzLDggQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3Bl
Y3RvclxJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGluc3BlY3RvclxJbmplY3RlZFNjcmlwdE1vZHVsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckFnZW50LmgiIC8+CisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQWdlbnRCYXNlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3Bl
Y3RvclxJbnNwZWN0b3JCYXNlQWdlbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGluc3BlY3RvclxJbnNwZWN0b3JDYW52YXNBZ2VudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckNhbnZhc0luc3RydW1lbnRhdGlvbi5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckNsaWVudC5oIiAv
PgpAQCAtMjA5ODAsNyArMjA5NjAsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5z
cGVjdG9yXEluc3BlY3RvclN0eWxlU2hlZXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JUaW1lbGluZUFnZW50LmgiIC8+Ci0g
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yVmFsdWVzLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yV29ya2VyQWdl
bnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JX
b3JrZXJSZXNvdXJjZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9y
XEluc3RydW1lbnRpbmdBZ2VudHMuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCA5N2I4ODQ3Li41NDU0
MGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvai5maWx0ZXJzCkBAIC00ODIxLDE4ICs0ODIxLDEyIEBACiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQWdlbnQuY3BwIj4KICAgICAgIDxGaWx0
ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAiPgotICAgICAg
PEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JBbGxJbk9uZS5jcHAiPgogICAgICAg
PEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQu
Y3BwIj4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+
Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIuY3BwIj4KLSAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+Ci0gICAgPC9D
bENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9y
Q2FudmFzQWdlbnQuY3BwIj4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAg
PC9DbENvbXBpbGU+CkBAIC00OTIzLDkgKzQ5MTcsNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIj4KICAgICAgIDxGaWx0
ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yVmFsdWVzLmNwcCI+Ci0gICAgICA8RmlsdGVy
Pmluc3BlY3RvcjwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvcldvcmtlckFnZW50LmNwcCI+CiAgICAgICA8Rmls
dGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMTIyMzQsOSArMTIy
MjUsMjEgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGhl
YXBcU3Ryb25nLmgiPgogICAgICAgPEZpbHRlcj5Gb3J3YXJkaW5nSGVhZGVyc1xoZWFwPC9GaWx0
ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJk
aW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yQWdlbnRCYXNlLmgiPgorICAgICAgPEZpbHRl
cj5Gb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvclxJ
bnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgiPgorICAgICAgPEZpbHRlcj5Gb3J3YXJkaW5nSGVhZGVy
c1xpbnNwZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlci5oIj4KKyAgICAgIDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yPC9G
aWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3
YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiPgogICAg
ICAgPEZpbHRlcj5Gb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0Ns
SW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGlu
c3BlY3RvclxJbnNwZWN0b3JWYWx1ZXMuaCI+CisgICAgICA8RmlsdGVyPkZvcndhcmRpbmdIZWFk
ZXJzXGluc3BlY3RvcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caGlzdG9yeVxCYWNrRm9yd2FyZENsaWVudC5oIj4KICAgICAgIDxGaWx0ZXI+
aGlzdG9yeTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMTIzODcsMTUgKzEyMzkwLDEy
IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQWdlbnQu
aCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckFnZW50QmFzZS5o
Ij4KKyAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50LmgiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0Ns
SW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci5oIj4KLSAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+Ci0g
ICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5z
cGVjdG9yQmFzZUFnZW50LmgiPgotICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KLSAg
ICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNw
ZWN0b3JDYW52YXNBZ2VudC5oIj4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAg
ICAgPC9DbEluY2x1ZGU+CkBAIC0xMjUwMSw5ICsxMjUwMSw2IEBACiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIj4KICAgICAgIDxG
aWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yVmFsdWVzLmgiPgotICAgICAgPEZpbHRl
cj5pbnNwZWN0b3I8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JXb3JrZXJBZ2VudC5oIj4KICAgICAgIDxGaWx0
ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggY2RjNzdiOC4uOGZk
YzQwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTYwNSw4ICsxNjA1LDYgQEAKIAkJNEYxNTM0RTAxMUI1MzMwMjAwMjFGRDg2
IC8qIEVkaXRpbmdCZWhhdmlvclR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0RjE1MzRERjExQjUzMzAyMDAyMUZEODYgLyogRWRpdGluZ0JlaGF2
aW9yVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0RjJEMjA1NDEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMkQyMDUyMTJFQUU3QjMw
MDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTRGMkQyMDU1MTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0
b3JBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0RjJEMjA1MzEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQuY3BwICovOyB9Owot
CQk0RjMyODlCNTExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMzI4OUIzMTFBNDJBQUIw
MDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwICovOyB9OwotCQk0RjMyODlCNjExQTQyQUFC
MDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0RjMyODlCNDExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9y
VmFsdWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNEY0RjVGRkIxMUNCRDJFMTAwQTE4NkJGIC8qIEluc3BlY3RvckZyb250ZW5kLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNEY1RkZBMTFDQkQy
RDIwMEExODZCRiAvKiBJbnNwZWN0b3JGcm9udGVuZC5jcHAgKi87IH07CiAJCTRGNkZERDY0MTM0
MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEY2RkRENjIxMzQxREVERDAwMUY4RUUzIC8q
IEluc3BlY3RvclBhZ2VBZ2VudC5jcHAgKi87IH07CiAJCTRGNkZERDY1MTM0MURFREQwMDFGOEVF
MyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDRGNkZERDYzMTM0MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdl
QWdlbnQuaCAqLzsgfTsKQEAgLTIxOTgsNyArMjE5Niw2IEBACiAJCTdBNzRFQ0JCMTAxODM5QTYw
MEJGOTM5RSAvKiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBNzRFQ0I5MTAxODM5QTYwMEJGOTM5RSAvKiBJ
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCAqLzsgfTsKIAkJN0E3NEVDQkQxMDE4MzlEQTAwQkY5
MzlFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBNzRFQ0JDMTAxODM5REEwMEJGOTM5RSAv
KiBKU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgKi87IH07CiAJCTdBQTM2NUVFMTJF
NzI2NTQwMERDQTI0MiAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FBMzY1RUQxMkU3MjY1NDAwRENBMjQy
IC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAgKi87IH07Ci0JCTdBQTUxQjZFMTQ4M0I2MTYw
MEFEMjc1MiAvKiBJbnNwZWN0b3JCYXNlQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQTUxQjZDMTQ4M0I2MTYwMEFEMjc1MiAvKiBJbnNwZWN0
b3JCYXNlQWdlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3QUE1MURENTE0ODUwNkE5MDBBRDI3NTIgLyogSW5zcGVjdG9yTWVtb3J5QWdlbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FBNTFE
RDMxNDg1MDZBOTAwQUQyNzUyIC8qIEluc3BlY3Rvck1lbW9yeUFnZW50LmNwcCAqLzsgfTsKIAkJ
N0FBNTFERDYxNDg1MDZBOTAwQUQyNzUyIC8qIEluc3BlY3Rvck1lbW9yeUFnZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUE1MURENDE0ODUwNkE5
MDBBRDI3NTIgLyogSW5zcGVjdG9yTWVtb3J5QWdlbnQuaCAqLzsgfTsKIAkJN0FBQkEyNTkxNEJD
NjEzMzAwQUE5QTExIC8qIERPTUVkaXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QUFCQTI1NzE0QkM2MTMzMDBBQTlBMTEgLyogRE9NRWRpdG9y
LmNwcCAqLzsgfTsKQEAgLTM1MjMsMTUgKzM1MjAsMTIgQEAKIAkJQTUxM0IzRDgxMTRCMTY2QTAw
MUM0MjlCIC8qIEtleUV2ZW50Q29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNUM5NzREMDExNDg1RkYxMDA2NkYyQUIgLyogS2V5RXZlbnRDb2Nv
YS5tbSAqLzsgfTsKIAkJQTU0QTgyRUMxNTIyOEQyRjAwQzcyQkE2IC8qIERPTU5vZGVQcml2YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTRBODJF
QTE1MjI4Q0EzMDBDNzJCQTYgLyogRE9NTm9kZVByaXZhdGUuaCAqLzsgfTsKIAkJQTU0QTgyRjEx
NTIyOERGNjAwQzcyQkE2IC8qIERPTU5vZGVQcml2YXRlLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTRBODJFQTE1MjI4Q0Ez
MDBDNzJCQTYgLyogRE9NTm9kZVByaXZhdGUuaCAqLzsgfTsKLQkJQTU1NkMyODgxODMyMDZBODAw
OENCNzIwIC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1NkMyODYxODMyMDZBODAwOENCNzIwIC8qIElu
c3BlY3RvckFnZW50UmVnaXN0cnkuY3BwICovOyB9OwotCQlBNTU2QzI4OTE4MzIwNkE4MDA4Q0I3
MjAgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1NkMyODcxODMyMDZBODAwOENCNzIwIC8qIEluc3BlY3Rv
ckFnZW50UmVnaXN0cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlBNTczMkIwQTEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3MzJCMDgx
MzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmNwcCAqLzsgfTsKIAkJQTU3MzJCMEIx
MzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTczMkIwOTEzNkExNjFEMDA1QzhEN0MgLyogRGF0
ZUNvbXBvbmVudHMuaCAqLzsgfTsKKwkJQTU5M0NGOEIxODQwNTM1MjAwQkZDRTI3IC8qIEluc3Bl
Y3RvckFnZW50QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTU5M0NGOEExODQwNTM1MjAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50QmFzZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1QTJBRjBC
MTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUEyQUYwOTE4Mjk3MzQzMDBERTE3MjkgLyog
UGFnZURlYnVnZ2FibGUuY3BwICovOyB9OwogCQlBNUEyQUYwQzE4Mjk3MzQzMDBERTE3MjkgLyog
UGFnZURlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1QTJBRjBBMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5oICovOyB9
OwogCQlBNUFCQjc4NzEzQjkwNEJDMDBGMTk3RTMgLyogTGluZUJyZWFrSXRlcmF0b3JQb29sSUNV
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUFCQjc4
NjEzQjkwNEJDMDBGMTk3RTMgLyogTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmggKi87IH07Ci0J
CUE1QUM0QUVGMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUFDNEFF
RDE4MzM2OTc1MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwICovOyB9
OwotCQlBNUFDNEFGMDE4MzM2OTc1MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QUM0
QUVFMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1QUZCMzRGMTE1
MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBRkIzNEQxMTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5n
ZS5jcHAgKi87IH07CiAJCUE1QUZCMzUwMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QUZCMzRFMTE1
MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBNUM1NjZBQjEyN0EzQUFEMDBFOEEzRkYgLyogRGlza0lt
YWdlQ2FjaGVDbGllbnRJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1QzU2NkFBMTI3QTNBQUQwMEU4QTNGRiAvKiBEaXNrSW1hZ2VDYWNoZUNsaWVu
dElPUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC04MzMzLDggKzgzMjcsNiBAQAogCQk0RjE1MzRERjExQjUzMzAyMDAyMUZEODYgLyogRWRpdGlu
Z0JlaGF2aW9yVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdGlu
Z0JlaGF2aW9yVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEYyRDIwNTIx
MkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3RvckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEluc3BlY3RvckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTRGMkQyMDUzMTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JBZ2VudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTRGMzI4OUIzMTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNw
ZWN0b3JWYWx1ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5z
cGVjdG9yVmFsdWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNEYzMjg5QjQx
MUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JWYWx1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNEY0RjVGRkExMUNCRDJEMjAwQTE4NkJGIC8qIEluc3BlY3RvckZyb250ZW5kLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckZyb250ZW5kLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEY0RjVGRkMxMUNCRDMwMTAwQTE4NkJG
IC8qIEluc3BlY3RvckZyb250ZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEluc3BlY3RvckZyb250ZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGNkZE
RDYyMTM0MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yUGFnZUFnZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg5ODYsNyArODk3OCw2IEBACiAJCTdBNzRFQ0I5MTAx
ODM5QTYwMEJGOTM5RSAvKiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBNzRFQ0JDMTAxODM5REEwMEJGOTM5RSAvKiBKU0luc3Bl
Y3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdBQTM2NUVEMTJFNzI2NTQwMERDQTI0MiAvKiBJbnNwZWN0b3JSdW50
aW1lQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVj
dG9yUnVudGltZUFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0FBNTFC
NkMxNDgzQjYxNjAwQUQyNzUyIC8qIEluc3BlY3RvckJhc2VBZ2VudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JCYXNlQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0FBNTFERDMxNDg1MDZBOTAwQUQyNzUyIC8qIEluc3BlY3Rvck1lbW9y
eUFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rv
ck1lbW9yeUFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FBNTFERDQx
NDg1MDZBOTAwQUQyNzUyIC8qIEluc3BlY3Rvck1lbW9yeUFnZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3Rvck1lbW9yeUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdBQUJBMjU3MTRCQzYxMzMwMEFBOUExMSAvKiBET01FZGl0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NRWRpdG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMzM2LDE5ICsxMDMyNywxNiBAQAogCQlBNTE4
MjI1NDE3RTJBMEQ0MDBBOUJBMUQgLyogSW5zcGVjdG9yT3ZlcmxheVBhZ2UuY3NzICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGgg
PSBJbnNwZWN0b3JPdmVybGF5UGFnZS5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE1MTgyMjU1MTdFMkEwRDQwMEE5QkExRCAvKiBJbnNwZWN0b3JPdmVybGF5UGFnZS5qcyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
amF2YXNjcmlwdDsgcGF0aCA9IEluc3BlY3Rvck92ZXJsYXlQYWdlLmpzOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNTRBODJFQTE1MjI4Q0EzMDBDNzJCQTYgLyogRE9NTm9kZVByaXZh
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NTm9kZVByaXZhdGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU1NkMyODYxODMyMDZBODAwOENCNzIwIC8q
IEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUE1NTZDMjg3MTgzMjA2QTgwMDhDQjcyMCAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lz
dHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckFnZW50UmVn
aXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3MzJCMDgxMzZBMTYxRDAw
NUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IERhdGVDb21wb25lbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTU3MzJCMDkxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGVDb21wb25lbnRzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE1OTNDRjcyMTg0MDJDRTkwMEJGQ0UyNyAvKiBwcm90b2NvbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsgcGF0
aCA9IHByb3RvY29sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTkzQ0Y3MzE4NDAy
RDRCMDBCRkNFMjcgLyogQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0
aCA9IENvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE1OTNDRjc0MTg0MDJENEIwMEJGQ0UyNyAvKiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yU3Ry
aW5ncy5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IENvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdz
LnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTkzQ0Y3NTE4NDAyRDRCMDBCRkNF
MjcgLyogY29tYmluZS1qYXZhc2NyaXB0LXJlc291cmNlcy5wbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IHBhdGggPSAi
Y29tYmluZS1qYXZhc2NyaXB0LXJlc291cmNlcy5wbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUE1OTNDRjhBMTg0MDUzNTIwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudEJhc2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQWdlbnRCYXNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QTJBRjA5MTgyOTczNDMwMERFMTcyOSAvKiBQ
YWdlRGVidWdnYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQ
YWdlRGVidWdnYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QTJBRjBB
MTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQYWdlRGVidWdnYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBNUFCQjc4NjEzQjkwNEJDMDBGMTk3RTMgLyogTGluZUJyZWFrSXRlcmF0b3JQb29sSUNV
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmVCcmVha0l0ZXJhdG9yUG9v
bElDVS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNUFDNEFFRDE4MzM2OTc1MDA3
MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNUFDNEFFRTE4MzM2OTc1MDA3MTE0RTAgLyogSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTVBRkIzNEQxMTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGVwUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNUFGQjM0RTExNTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0ZXBSYW5nZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNUM1NjZBQTEyN0EzQUFEMDBFOEEzRkYgLyogRGlza0ltYWdl
Q2FjaGVDbGllbnRJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlza0lt
YWdlQ2FjaGVDbGllbnRJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NDc4
LDEzICsxNDQ2Niw4IEBACiAJCQkJN0E1NjNGOTUxMkRGNUM5MTAwRjQ1MzZEIC8qIEluamVjdGVk
U2NyaXB0U291cmNlLmpzICovLAogCQkJCTRGMkQyMDUzMTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNw
ZWN0b3JBZ2VudC5jcHAgKi8sCiAJCQkJNEYyRDIwNTIxMkVBRTdCMzAwNUMyODc0IC8qIEluc3Bl
Y3RvckFnZW50LmggKi8sCi0JCQkJQTU1NkMyODYxODMyMDZBODAwOENCNzIwIC8qIEluc3BlY3Rv
ckFnZW50UmVnaXN0cnkuY3BwICovLAotCQkJCUE1NTZDMjg3MTgzMjA2QTgwMDhDQjcyMCAvKiBJ
bnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggKi8sCiAJCQkJQjg4NUU4RDIxMUUwNkREMjAwOUZGQkY0
IC8qIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgKi8sCiAJCQkJQjg4NUU4RDMx
MUUwNkREMjAwOUZGQkY0IC8qIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oICovLAot
CQkJCUE1QUM0QUVEMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ci5jcHAgKi8sCi0JCQkJQTVBQzRBRUUxODMzNjk3NTAwNzExNEUwIC8qIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyLmggKi8sCi0JCQkJN0FBNTFCNkMxNDgzQjYxNjAwQUQyNzUyIC8qIEluc3Bl
Y3RvckJhc2VBZ2VudC5oICovLAogCQkJCUFBRDc2NkU4MTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNw
ZWN0b3JDYW52YXNBZ2VudC5jcHAgKi8sCiAJCQkJQUFENzY2RTkxNTdFNTAyRjAwRTg1NDIzIC8q
IEluc3BlY3RvckNhbnZhc0FnZW50LmggKi8sCiAJCQkJQUFENzY2RUExNTdFNTAyRjAwRTg1NDIz
IC8qIEluc3BlY3RvckNhbnZhc0luc3RydW1lbnRhdGlvbi5oICovLApAQCAtMTQ1NTQsOCArMTQ1
MzcsNyBAQAogCQkJCTgyODg5QjRCMTNDNjIzOTIwMDlBNjE1NiAvKiBJbnNwZWN0b3JTdHlsZVRl
eHRFZGl0b3IuaCAqLywKIAkJCQk3NTQxMzNBOTEwMkUwMEY0MDAwNzVEMDAgLyogSW5zcGVjdG9y
VGltZWxpbmVBZ2VudC5jcHAgKi8sCiAJCQkJNzU0MTMzQTcxMDJFMDBFODAwMDc1RDAwIC8qIElu
c3BlY3RvclRpbWVsaW5lQWdlbnQuaCAqLywKLQkJCQk0RjMyODlCMzExQTQyQUFCMDA1QUJFN0Ug
LyogSW5zcGVjdG9yVmFsdWVzLmNwcCAqLywKLQkJCQk0RjMyODlCNDExQTQyQUFCMDA1QUJFN0Ug
LyogSW5zcGVjdG9yVmFsdWVzLmggKi8sCisJCQkJQTU5M0NGOEExODQwNTM1MjAwQkZDRTI3IC8q
IEluc3BlY3RvckFnZW50QmFzZS5oICovLAogCQkJCUYzODEwQzE5MTM2NUE0OTYwMEVENkUzMyAv
KiBJbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAgKi8sCiAJCQkJRjM4MTBDMUExMzY1QTQ5NjAwRUQ2
RTMzIC8qIEluc3BlY3RvcldvcmtlckFnZW50LmggKi8sCiAJCQkJRjM3NUNDMDYxMTUwRDMwMDAw
OEREQjgxIC8qIEluc3BlY3RvcldvcmtlclJlc291cmNlLmggKi8sCkBAIC0yMjA4OCw3ICsyMjA3
MCw2IEBACiAJCQkJMjlBODEyM0YwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlUYWJs
ZUhlYWRlckNvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyMzEwRkJCOUMxRDAw
NTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlUYWJsZVJvdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjVE
MzFERkIxMUNGNjEwQjAwOUYyMkI0IC8qIEFjdGl2ZURPTUNhbGxiYWNrLmggaW4gSGVhZGVycyAq
LywKLQkJCQlBNTU2QzI4OTE4MzIwNkE4MDA4Q0I3MjAgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3Ry
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFDNERFNjkwRUE3NUMxRTAwMjNDQ0Q2IC8qIEFjdGl2
ZURPTU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNGN0U0OTExMzdDRDdDNzAwMUREQUU3
IC8qIEFkanVzdFZpZXdTaXplT3JOb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0RDBDNDA2MTEx
NUYxRUEwMDE4QUEzNCAvKiBBZmZpbmVUcmFuc2Zvcm0uaCBpbiBIZWFkZXJzICovLApAQCAtMjIz
OTEsNyArMjIzNzIsNiBAQAogCQkJCUE4MEU2RDAxMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NJbmhl
cml0ZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZEMDgwQTE5ODlDQTAwN0ZCOEM1
IC8qIENTU0luaXRpYWxWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3NzJFMTMxMzMxNjIw
QzAwMUVDOUNFIC8qIENTU0xpbmVCb3hDb250YWluVmFsdWUuaCBpbiBIZWFkZXJzICovLAotCQkJ
CUE1QUM0QUYwMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZEMDMwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU01lZGlh
UnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjk4RkZGNDUxMUEyNjc2MjAwRjU0OEU4IC8qIENT
U09NVXRpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2RDAwMEExOTg5Q0EwMDdGQjhDNSAv
KiBDU1NQYWdlUnVsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzM1Myw3ICsyMzMzMyw2IEBACiAJ
CQkJNEYyRDIwNTQxMkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3RvckFnZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCODg1RThENTExRTA2REQyMDA5RkZCRjQgLyogSW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0RjcwN0E5QTExRUY2Nzk0MDBBQ0RB
NjkgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLywKLQkJCQk3
QUE1MUI2RTE0ODNCNjE2MDBBRDI3NTIgLyogSW5zcGVjdG9yQmFzZUFnZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBQUQ3NjZFQzE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVjdG9yQ2FudmFzQWdl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUFBRDc2NkVEMTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNw
ZWN0b3JDYW52YXNJbnN0cnVtZW50YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFDODFCOTVD
MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAt
MjMzOTMsNyArMjMzNzIsNiBAQAogCQkJCTgyODg5QjREMTNDNjIzOTIwMDlBNjE1NiAvKiBJbnNw
ZWN0b3JTdHlsZVRleHRFZGl0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTc1NDEzM0E4MTAyRTAw
RTgwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1NzhEQTIwRjE1MjBFQkEzMDA2MTQxQzEgLyogSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTRGMzI4OUI2MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUYzODEwQzFDMTM2NUE0OTYwMEVENkUzMyAvKiBJbnNw
ZWN0b3JXb3JrZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc4RTA5MjkxN0QxNEQxQzAw
NDIwQUExIC8qIFJUQ1N0YXRzQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUYzNzVDQzA3
MTE1MEQzMDAwMDhEREI4MSAvKiBJbnNwZWN0b3JXb3JrZXJSZXNvdXJjZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yNDkxMyw2ICsyNDg5MSw3IEBACiAJCQkJMDg4QTBFMEExMjZFRjFEQjAwOTc4RjdB
IC8qIFNWR1Byb3BlcnR5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODFERDQ5QzEzQkExQTYwMDBE
Qzc2MjcgLyogU1ZHUHJvcGVydHlJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlCNTdDQjUyRTE4
MkEzRUZDMDA3OUE2NDcgLyogSW5saW5lRWxlbWVudEJveC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QTU5M0NGOEIxODQwNTM1MjAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50QmFzZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDg4QTBFMEIxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5VGVhck9m
Zi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg4QTBFMEMxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR1By
b3BlcnR5VHJhaXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E5QTBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI1NzY0
LDcgKzI1NzQzLDYgQEAKIAkJCQk1OUI1OTc3MzExMDg2NTZCMDA3MTU5RTggLyogQnJpZGdlSlND
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY1NUIzREFGMTI1MUYxMkQwMDNFRjI2OSAvKiBCdXR0
b25JbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlDRjcwRDdFMkI4MjAwN0Mz
OTgzIC8qIGNfY2xhc3MuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTVBQzRBRUYxODMzNjk3NTAw
NzExNEUwIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFBNTY5Q0Y5MEQ3RTJCODIwMDdDMzk4MyAvKiBjX2luc3RhbmNlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBNTY5Q0ZCMEQ3RTJCODIwMDdDMzk4MyAvKiBjX3J1bnRpbWUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUE1NjlDRkQwRDdFMkI4MjAwN0MzOTgzIC8qIGNfdXRpbGl0eS5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTI2NjQ0LDcgKzI2NjIyLDYgQEAKIAkJCQkwNzI3N0U0RTE3RDAx
OENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTc1NDEzM0FBMTAyRTAwRjQwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1l
bGluZUFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3M0QxMzQ3MTRDRTM5RkYwMDU3QUJD
QSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0RjMyODlC
NTExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUYzODEwQzFCMTM2NUE0OTYwMEVENkUzMyAvKiBJbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlGMzUwQjczNTEzRjEzNzdEMDA4ODBDNDMgLyogSW5zdHJ1bWVu
dGluZ0FnZW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjc1MzU2MDBCMDUzODE0MDAyQ0U2
NEYgLyogSW50UG9pbnRDRy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3ODQ3LDcgKzI3ODI0LDYg
QEAKIAkJCQlBQTJBNUFENTE2QTQ4NjE0MDA5NzVBMjUgLyogU3BlZWNoU3ludGhlc2lzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUFBMkE1QUQzMTZBNDg2MEQwMDk3NUEyNSAvKiBTcGVlY2hTeW50
aGVzaXNFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBQTJBNUFEMTE2QTQ4NjA3MDA5NzVB
MjUgLyogU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE1
NTZDMjg4MTgzMjA2QTgwMDhDQjcyMCAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUFBMkE1QUNEMTZBNDg1RkEwMDk3NUEyNSAvKiBTcGVlY2hTeW50aGVz
aXNWb2ljZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzhGRTEzQjEyMzY2QjEwMDBBQ0U4RDAg
LyogU3BlbGxDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI4REJEQjREMTMwQjBGOEEw
MEY1Q0RCMSAvKiBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcCBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhv
c3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlw
dEhvc3RDdXN0b20uY3BwCmluZGV4IDY5OTlmYmUuLjgzZDU5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5j
cHAKQEAgLTQ0LDcgKzQ0LDYgQEAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJKU0V2ZW50
TGlzdGVuZXIuaCIKICNpbmNsdWRlICJKU0hUTUxBbGxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAi
SlNIVE1MQ29sbGVjdGlvbi5oIgpAQCAtNTMsNiArNTIsNyBAQAogI2luY2x1ZGUgIkpTU3RvcmFn
ZS5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU3RvcmFnZS5oIgorI2lu
Y2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDxwYXJzZXIvU291
cmNlQ29kZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmg+CiAjaW5jbHVkZSA8
cnVudGltZS9FcnJvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0UHJvZmlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9m
aWxlLmNwcAppbmRleCA0NTA1MGFlLi5hMjIwMzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRQcm9maWxlLmNwcApAQCAtMzAsOCArMzAsOCBAQAogCiAjaW5jbHVkZSAi
U2NyaXB0UHJvZmlsZS5oIgogCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVk
ZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5o
PgogI2luY2x1ZGUgPHByb2ZpbGVyL1Byb2ZpbGUuaD4KICNpbmNsdWRlIDxwcm9maWxlci9Qcm9m
aWxlTm9kZS5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRQcm9maWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmgK
aW5kZXggODA5NWZlOC4uZjMwNTEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0UHJvZmlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdFByb2ZpbGUuaApAQCAtNDQsOCArNDQsNiBAQCBjbGFzcyBQcm9maWxlOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsKLQogY2xhc3MgU2NyaXB0UHJv
ZmlsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNjcmlwdFByb2ZpbGU+IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTY3JpcHRQcm9maWxlPiBjcmVhdGUoUGFzc1JlZlB0cjxKU0M6OlBy
b2ZpbGU+IHByb2ZpbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUu
Y3BwCmluZGV4IDZkOWZiMWQuLjc5MTg0NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRWYWx1ZS5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgi
CiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmgiCiAKQEAgLTM4LDkgKzM3LDExIEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNW
YWx1ZVJlZi5oPgogCiAjaW5jbHVkZSA8aGVhcC9TdHJvbmcuaD4KKyNpbmNsdWRlIDxpbnNwZWN0
b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KIAogdXNp
bmcgbmFtZXNwYWNlIEpTQzsKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmgKaW5k
ZXggMDEyMTBmNS4uZThiMGFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRW
YWx1ZS5oCkBAIC00MCw5ICs0MCwxMiBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQor
bmFtZXNwYWNlIEluc3BlY3RvciB7CiBjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKK30KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAKIGNsYXNzIFNj
cmlwdFZhbHVlIHsKQEAgLTcwLDcgKzczLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTY3JpcHRW
YWx1ZSBkZXNlcmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSosIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSos
IFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7CiAKICNpZiBFTkFCTEUoSU5TUEVD
VE9SKQotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHRvSW5zcGVjdG9yVmFsdWUoSlND
OjpFeGVjU3RhdGUqKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
VmFsdWU+IHRvSW5zcGVjdG9yVmFsdWUoSlNDOjpFeGVjU3RhdGUqKSBjb25zdDsKICNlbmRpZgog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVk
aXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAppbmRl
eCBlZDczMGI0Li43ZmY0Y2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9YU1NBdWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRp
dG9yLmNwcApAQCAtMzcsMTcgKzM3LDE1IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5j
bHVkZSAiSFRNTFBhcmFtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIK
LSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2lu
Y2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJYTGlua05hbWVzLmgiCi0K
LSNpZiBFTkFCTEUoU1ZHKQotI2luY2x1ZGUgIlNWR05hbWVzLmgiCi0jZW5kaWYKLQogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlNWR05h
bWVzLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2Ug
SFRNTE5hbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVk
aXRvckRlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JE
ZWxlZ2F0ZS5jcHAKaW5kZXggYWQzM2UwMC4uZDA2MDY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuY3BwCkBAIC0zNSwxMiArMzUsMTQg
QEAKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50
LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZh
bHVlcy5oIgogI2luY2x1ZGUgIlBpbmdMb2FkZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
Cit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFhT
U0F1ZGl0b3JEZWxlZ2F0ZTo6WFNTQXVkaXRvckRlbGVnYXRlKERvY3VtZW50JiBkb2N1bWVudCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVj
dG9yLnB5IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3Iu
cHkKaW5kZXggZjg5MGY0Zi4uZmM2Zjc1NCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKQEAgLTI2Miw3ICsyNjIsNyBAQCBjbGFz
cyBSYXdUeXBlcyhvYmplY3QpOgogCiAgICAgICAgIEBjbGFzc21ldGhvZAogICAgICAgICBkZWYg
Z2V0X3Jhd192YWxpZGF0b3JfY2FsbF90ZXh0KGNscyk6Ci0gICAgICAgICAgICByZXR1cm4gIlJ1
bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3RvclZhbHVlOjpUeXBlJXM+IiAlIGNs
cy5nZXRfdmFsaWRhdGVfbWV0aG9kX3BhcmFtcygpLnRlbXBsYXRlX3R5cGUKKyAgICAgICAgICAg
IHJldHVybiAiUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yOjpJbnNwZWN0
b3JWYWx1ZTo6VHlwZSVzPiIgJSBjbHMuZ2V0X3ZhbGlkYXRlX21ldGhvZF9wYXJhbXMoKS50ZW1w
bGF0ZV90eXBlCiAKICAgICBjbGFzcyBTdHJpbmcoQmFzZVR5cGUpOgogICAgICAgICBAc3RhdGlj
bWV0aG9kCkBAIC00NTEsNyArNDUxLDcgQEAgY2xhc3MgUmF3VHlwZXMob2JqZWN0KToKIAogICAg
ICAgICBAc3RhdGljbWV0aG9kCiAgICAgICAgIGRlZiBnZXRfYXJyYXlfaXRlbV9yYXdfY190eXBl
X3RleHQoKToKLSAgICAgICAgICAgIHJldHVybiAiSW5zcGVjdG9yT2JqZWN0IgorICAgICAgICAg
ICAgcmV0dXJuICJJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCIKIAogICAgICAgICBAc3RhdGlj
bWV0aG9kCiAgICAgICAgIGRlZiBnZXRfcmF3X3R5cGVfbW9kZWwoKToKQEAgLTQ4Niw3ICs0ODYs
NyBAQCBjbGFzcyBSYXdUeXBlcyhvYmplY3QpOgogCiAgICAgICAgIEBzdGF0aWNtZXRob2QKICAg
ICAgICAgZGVmIGdldF9hcnJheV9pdGVtX3Jhd19jX3R5cGVfdGV4dCgpOgotICAgICAgICAgICAg
cmV0dXJuICJJbnNwZWN0b3JWYWx1ZSIKKyAgICAgICAgICAgIHJldHVybiAiSW5zcGVjdG9yOjpJ
bnNwZWN0b3JWYWx1ZSIKIAogICAgICAgICBAc3RhdGljbWV0aG9kCiAgICAgICAgIGRlZiBnZXRf
cmF3X3R5cGVfbW9kZWwoKToKQEAgLTUyOSw3ICs1MjksNyBAQCBjbGFzcyBSYXdUeXBlcyhvYmpl
Y3QpOgogCiAgICAgICAgIEBzdGF0aWNtZXRob2QKICAgICAgICAgZGVmIGdldF9hcnJheV9pdGVt
X3Jhd19jX3R5cGVfdGV4dCgpOgotICAgICAgICAgICAgcmV0dXJuICJJbnNwZWN0b3JBcnJheSIK
KyAgICAgICAgICAgIHJldHVybiAiSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSIKIAogICAgICAg
ICBAc3RhdGljbWV0aG9kCiAgICAgICAgIGRlZiBnZXRfcmF3X3R5cGVfbW9kZWwoKToKQEAgLTcy
Niw5ICs3MjYsOSBAQCBjbGFzcyBUeXBlTW9kZWw6CiAgICAgICAgICAgICBjbHMuSW50ID0gY2xz
LlZhbHVlVHlwZSgiaW50IiwgRmFsc2UpCiAgICAgICAgIGNscy5OdW1iZXIgPSBjbHMuVmFsdWVU
eXBlKCJkb3VibGUiLCBGYWxzZSkKICAgICAgICAgY2xzLlN0cmluZyA9IGNscy5WYWx1ZVR5cGUo
IlN0cmluZyIsIFRydWUsKQotICAgICAgICBjbHMuT2JqZWN0ID0gY2xzLlJlZlB0ckJhc2VkKCJJ
bnNwZWN0b3JPYmplY3QiKQotICAgICAgICBjbHMuQXJyYXkgPSBjbHMuUmVmUHRyQmFzZWQoIklu
c3BlY3RvckFycmF5IikKLSAgICAgICAgY2xzLkFueSA9IGNscy5SZWZQdHJCYXNlZCgiSW5zcGVj
dG9yVmFsdWUiKQorICAgICAgICBjbHMuT2JqZWN0ID0gY2xzLlJlZlB0ckJhc2VkKCJJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdCIpCisgICAgICAgIGNscy5BcnJheSA9IGNscy5SZWZQdHJCYXNl
ZCgiSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSIpCisgICAgICAgIGNscy5BbnkgPSBjbHMuUmVm
UHRyQmFzZWQoIkluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUiKQogCiBUeXBlTW9kZWwuaW5pdF9j
bGFzcygpCiAKQEAgLTkyOCw3ICs5MjgsNyBAQCBjbGFzcyBUeXBlQmluZGluZ3M6CiAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZW51bV9iaW5kaW5nX2Nscy5uZWVkX2ludGVy
bmFsX3J1bnRpbWVfY2FzdF86CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
cml0ZXIuYXBwZW5kKCIjaWYgJXNcbiIgJSBWQUxJREFUT1JfSUZERUZfTkFNRSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgc3RhdGljIHZv
aWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSk7XG4iKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICBzdGF0aWMg
dm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogdmFsdWUp
O1xuIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQo
IiNlbmRpZiAgLy8gJXNcbiIgJSBWQUxJREFUT1JfSUZERUZfTkFNRSkKIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlciA9IGdlbmVyYXRlX2NvbnRl
eHQudmFsaWRhdG9yX3dyaXRlcgpAQCAtOTM4LDcgKzkzOCw3IEBAIGNsYXNzIFR5cGVCaW5kaW5n
czoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRvbWFpbl9ndWFyZDoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW5fZ3VhcmQuZ2Vu
ZXJhdGVfb3Blbih2YWxpZGF0b3Jfd3JpdGVyKQogCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoInZvaWQgJXMlczo6YXNzZXJ0Q29y
cmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSlcbiIgJSAoaGVscGVyLmZ1bGxfbmFtZV9w
cmVmaXhfZm9yX2ltcGwsIGVudW1fbmFtZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoInZvaWQgJXMlczo6YXNzZXJ0Q29ycmVj
dFZhbHVlKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVlKVxuIiAlIChoZWxwZXIuZnVs
bF9uYW1lX3ByZWZpeF9mb3JfaW1wbCwgZW51bV9uYW1lKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhbGlkYXRvcl93cml0ZXIubmV3bGluZSgie1xuIikKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcl93cml0ZXIubmV3bGluZSgiICAg
IFdURjo6U3RyaW5nIHM7XG4iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCIgICAgYm9vbCBjYXN0X3JlcyA9IHZhbHVlLT5hc1N0
cmluZygmcyk7XG4iKQpAQCAtMTE3Miw5ICsxMTcyLDkgQEAgY2xhc3MgVHlwZUJpbmRpbmdzOgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKGNsYXNzX25hbWUp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQoIiA6IHB1Ymxp
YyAiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpc19vcGVuX3R5cGU6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKCJJbnNwZWN0
b3JPYmplY3QiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFw
cGVuZCgiSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QiKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3Jp
dGVyLmFwcGVuZCgiSW5zcGVjdG9yT2JqZWN0QmFzZSIpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKCJJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdEJh
c2UiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKCIge1xu
IikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoInB1Ymxp
YzpcbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkX2hvY190eXBlX3dyaXRl
ciA9IHdyaXRlci5pbnNlcnRfd3JpdGVyKCIgICAgIikKQEAgLTEyNTEsMjUgKzEyNTEsMjUgQEAg
Y2xhc3MgVHlwZUJpbmRpbmdzOgogCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIHNldHRlcl9uYW1lIGluIElOU1BFQ1RPUl9PQkpFQ1RfU0VUVEVSX05BTUVTOgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAg
dXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6JXM7XG5cbiIgJSBzZXR0ZXJfbmFtZSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgIHVz
aW5nIEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0QmFzZTo6JXM7XG5cbiIgJSBzZXR0ZXJfbmFt
ZSkKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjbGFzc19iaW5kaW5nX2Ns
cy5uZWVkX3VzZXJfcnVudGltZV9jYXN0XzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgc3RhdGljIFBhc3NSZWZQdHI8JXM+IHJ1bnRpbWVD
YXN0KFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKVxuIiAlIGNsYXNzX25hbWUpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgIHN0
YXRpYyBQYXNzUmVmUHRyPCVzPiBydW50aW1lQ2FzdChQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yVmFsdWU+IHZhbHVlKVxuIiAlIGNsYXNzX25hbWUpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgIHtcbiIpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgICAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBvYmplY3Q7XG4iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0PiBvYmplY3Q7XG4iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d3JpdGVyLm5ld2xpbmUoIiAgICAgICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFzT2JqZWN0KCZv
YmplY3QpO1xuIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5u
ZXdsaW5lKCIgICAgICAgIEFTU0VSVF9VTlVTRUQoY2FzdFJlcywgY2FzdFJlcyk7XG4iKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVuZCgiI2lmICVzXG4i
ICUgVkFMSURBVE9SX0lGREVGX05BTUUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB3cml0ZXIubmV3bGluZSgiICAgICAgICBhc3NlcnRDb3JyZWN0VmFsdWUob2JqZWN0Lmdl
dCgpKTtcbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBw
ZW5kKCIjZW5kaWYgIC8vICVzXG4iICUgVkFMSURBVE9SX0lGREVGX05BTUUpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgICAgICBDT01QSUxF
X0FTU0VSVChzaXplb2YoJXMpID09IHNpemVvZihJbnNwZWN0b3JPYmplY3RCYXNlKSwgdHlwZV9j
YXN0X3Byb2JsZW0pO1xuIiAlIGNsYXNzX25hbWUpCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8JXMq
PihzdGF0aWNfY2FzdDxJbnNwZWN0b3JPYmplY3RCYXNlKj4ob2JqZWN0LmdldCgpKSk7XG4iICUg
Y2xhc3NfbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5u
ZXdsaW5lKCIgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZiglcykgPT0gc2l6ZW9mKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0QmFzZSksIHR5cGVfY2FzdF9wcm9ibGVtKTtcbiIgJSBjbGFz
c19uYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xp
bmUoIiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PCVzKj4oc3RhdGljX2Nhc3Q8SW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3RCYXNlKj4ob2JqZWN0LmdldCgpKSk7XG4iICUgY2xhc3NfbmFtZSkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAg
fVxuIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQo
IlxuIikKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjbGFzc19iaW5kaW5n
X2Nscy5uZWVkX2ludGVybmFsX3J1bnRpbWVfY2FzdF86CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKCIjaWYgJXNcbiIgJSBWQUxJREFUT1JfSUZERUZf
TkFNRSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5l
KCIgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1
ZSk7XG4iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xp
bmUoIiAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yOjpJbnNwZWN0
b3JWYWx1ZSogdmFsdWUpO1xuIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdyaXRlci5hcHBlbmQoIiNlbmRpZiAgLy8gJXNcbiIgJSBWQUxJREFUT1JfSUZERUZfTkFNRSkK
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VkX2ZpZWxkX3NldCA9
IChjb250ZXh0X2RvbWFpbl9uYW1lICsgIi4iICsgY2xhc3NfbmFtZSkgbm90IGluIFRZUEVTX1dJ
VEhfT1BFTl9GSUVMRF9MSVNUX1NFVApAQCAtMTI4MSw3ICsxMjgxLDcgQEAgY2xhc3MgVHlwZUJp
bmRpbmdzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZG9tYWluX2d1
YXJkOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbl9ndWFy
ZC5nZW5lcmF0ZV9vcGVuKHZhbGlkYXRvcl93cml0ZXIpCiAKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhbGlkYXRvcl93cml0ZXIubmV3bGluZSgidm9pZCAlcyVzOjphc3Nl
cnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKVxuIiAlIChoZWxwZXIuZnVsbF9u
YW1lX3ByZWZpeF9mb3JfaW1wbCwgY2xhc3NfbmFtZSkpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoInZvaWQgJXMlczo6YXNzZXJ0
Q29ycmVjdFZhbHVlKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVlKVxuIiAlIChoZWxw
ZXIuZnVsbF9uYW1lX3ByZWZpeF9mb3JfaW1wbCwgY2xhc3NfbmFtZSkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoIntcbiIpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xp
bmUoIiAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3Q7XG4iKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCIgICAgYm9v
bCBjYXN0UmVzID0gdmFsdWUtPmFzT2JqZWN0KCZvYmplY3QpO1xuIikKQEAgLTE4OTYsMTAgKzE4
OTYsMTAgQEAgY2xhc3MgR2VuZXJhdG9yOgogICAgICAgICAgICAgZGlzcGF0Y2hlcl9uYW1lID0g
Ikluc3BlY3RvciIgKyBDYXBpdGFsaXplci5sb3dlcl9jYW1lbF9jYXNlX3RvX3VwcGVyKGRvbWFp
bl9uYW1lKSArICJCYWNrZW5kRGlzcGF0Y2hlciIKICAgICAgICAgICAgIGFnZW50X2ludGVyZmFj
ZV9uYW1lID0gZGlzcGF0Y2hlcl9uYW1lICsgIkhhbmRsZXIiCiAKLSAgICAgICAgICAgIEdlbmVy
YXRvci5iYWNrZW5kX2Rpc3BhdGNoZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCJjbGFzcyAlcyBG
SU5BTCA6IHB1YmxpYyBJbnNwZWN0b3JTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciB7XG4i
ICUgZGlzcGF0Y2hlcl9uYW1lKQorICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfZGlzcGF0
Y2hlcl9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoImNsYXNzICVzIEZJTkFMIDogcHVibGljIEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIge1xuIiAlIGRpc3Bh
dGNoZXJfbmFtZSkKICAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3BhdGNoZXJfaW50
ZXJmYWNlX2xpc3QuYXBwZW5kKCJwdWJsaWM6XG4iKQotICAgICAgICAgICAgR2VuZXJhdG9yLmJh
Y2tlbmRfZGlzcGF0Y2hlcl9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoIiAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjwlcz4gY3JlYXRlKEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiwgJXMqKTtcbiIgJSAo
ZGlzcGF0Y2hlcl9uYW1lLCBhZ2VudF9pbnRlcmZhY2VfbmFtZSkpCi0gICAgICAgICAgICBHZW5l
cmF0b3IuYmFja2VuZF9kaXNwYXRjaGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgiICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtZXNzYWdlKSBPVkVSUklERTtcbiIpCisgICAgICAgICAg
ICBHZW5lcmF0b3IuYmFja2VuZF9kaXNwYXRjaGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgiICAg
IHN0YXRpYyBQYXNzUmVmUHRyPCVzPiBjcmVhdGUoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlciosICVzKik7XG4iICUgKGRpc3BhdGNoZXJfbmFtZSwgYWdlbnRfaW50ZXJmYWNl
X25hbWUpKQorICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfZGlzcGF0Y2hlcl9pbnRlcmZh
Y2VfbGlzdC5hcHBlbmQoIiAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNv
bnN0IFN0cmluZyYgbWV0aG9kLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiBtZXNzYWdlKSBPVkVSUklERTtcbiIpCiAgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9k
aXNwYXRjaGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgicHJpdmF0ZTpcbiIpCiAKICAgICAgICAg
ICAgIEdlbmVyYXRvci5iYWNrZW5kX2hhbmRsZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCJjbGFz
cyAlcyB7XG4iICUgYWdlbnRfaW50ZXJmYWNlX25hbWUpCkBAIC0xOTE4LDcgKzE5MTgsNyBAQCBj
bGFzcyBHZW5lcmF0b3I6CiAgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9oYW5kbGVyX2lu
dGVyZmFjZV9saXN0LmFwcGVuZCgifTtcblxuIikKIAogICAgICAgICAgICAgR2VuZXJhdG9yLmJh
Y2tlbmRfZGlzcGF0Y2hlcl9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoInByaXZhdGU6XG4iKQotICAg
ICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfZGlzcGF0Y2hlcl9pbnRlcmZhY2VfbGlzdC5hcHBl
bmQoIiAgICAlcyhJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciosICVzKik7XG4iICUgKGRpc3Bh
dGNoZXJfbmFtZSwgYWdlbnRfaW50ZXJmYWNlX25hbWUpKQorICAgICAgICAgICAgR2VuZXJhdG9y
LmJhY2tlbmRfZGlzcGF0Y2hlcl9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoIiAgICAlcyhJbnNwZWN0
b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiwgJXMqKTtcbiIgJSAoZGlzcGF0Y2hlcl9u
YW1lLCBhZ2VudF9pbnRlcmZhY2VfbmFtZSkpCiAgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2Vu
ZF9kaXNwYXRjaGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgiICAgICVzKiBtX2FnZW50O1xuIiAl
IGFnZW50X2ludGVyZmFjZV9uYW1lKQogICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfZGlz
cGF0Y2hlcl9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoIn07XG5cbiIpCiAKQEAgLTE5OTksNyArMTk5
OSw3IEBAIGNsYXNzIEdlbmVyYXRvcjoKICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfaGFuZGxl
cl9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoYWRfaG9jX3R5cGVfb3V0cHV0KQogICAgICAgICBhZF9o
b2NfdHlwZV93cml0ZXIgPSBXcml0ZXIoYWRfaG9jX3R5cGVfb3V0cHV0LCAiICAgICIpCiAKLSAg
ICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfZGlzcGF0Y2hlcl9pbnRlcmZhY2VfbGlzdC5hcHBlbmQo
IiAgICB2b2lkICVzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2Up
O1xuIiAlIGpzb25fY29tbWFuZF9uYW1lKQorICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9kaXNw
YXRjaGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgiICAgIHZvaWQgJXMobG9uZyBjYWxsSWQsIGNv
bnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTtcbiIgJSBqc29uX2NvbW1h
bmRfbmFtZSkKIAogICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9oYW5kbGVyX2ludGVyZmFjZV9s
aXN0LmFwcGVuZCgiICAgIHZpcnR1YWwgdm9pZCAlcyhFcnJvclN0cmluZyoiICUganNvbl9jb21t
YW5kX25hbWUpCiAKQEAgLTIwOTQsOSArMjA5NCw5IEBAIGNsYXNzIEdlbmVyYXRvcjoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9t
ZXRob2RfaW1wbGVtZW50YXRpb25fbGlzdCwgVGVtcGxhdGVzLmNhbGxiYWNrX21ldGhvZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ImNhbGxiYWNrTmFtZSI6
IGNhbGxiYWNrX25hbWUsICJoYW5kbGVyTmFtZSI6IGFnZW50X2ludGVyZmFjZV9uYW1lfSkKIAot
ICAgICAgICAgICAgY2FsbGJhY2tfd3JpdGVyLm5ld2xpbmUoImNsYXNzICIgKyBjYWxsYmFja19u
YW1lICsgIiA6IHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNl
IHtcbiIpCisgICAgICAgICAgICBjYWxsYmFja193cml0ZXIubmV3bGluZSgiY2xhc3MgIiArIGNh
bGxiYWNrX25hbWUgKyAiIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI6OkNhbGxiYWNrQmFzZSB7XG4iKQogICAgICAgICAgICAgY2FsbGJhY2tfd3JpdGVyLm5l
d2xpbmUoInB1YmxpYzpcbiIpCi0gICAgICAgICAgICBjYWxsYmFja193cml0ZXIubmV3bGluZSgi
ICAgICIgKyBjYWxsYmFja19uYW1lICsgIihQYXNzUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyPiwgaW50IGlkKTtcbiIpCisgICAgICAgICAgICBjYWxsYmFja193cml0ZXIubmV3bGlu
ZSgiICAgICIgKyBjYWxsYmFja19uYW1lICsgIihQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI+LCBpbnQgaWQpO1xuIikKICAgICAgICAgICAgIGNhbGxiYWNr
X3dyaXRlci5uZXdsaW5lKCIgICAgdm9pZCBzZW5kU3VjY2VzcygiICsgIiwgIi5qb2luKGRlY2xf
cGFyYW1ldGVyX2xpc3QpICsgIik7XG4iKQogICAgICAgICAgICAgY2FsbGJhY2tfd3JpdGVyLm5l
d2xpbmUoIn07XG4iKQogCkBAIC0yMTA1LDcgKzIxMDUsNyBAQCBjbGFzcyBHZW5lcmF0b3I6CiAg
ICAgICAgICAgICBtZXRob2RfZGlzcGF0Y2hfaGFuZGxpbmcuYXBwZW5kKCIgICAgUmVmUHRyPCVz
Ojolcz4gY2FsbGJhY2sgPSBhZG9wdFJlZihuZXcgJXM6OiVzKG1fYmFja2VuZERpc3BhdGNoZXIs
Y2FsbElkKSk7XG4iICUgKGFnZW50X2ludGVyZmFjZV9uYW1lLCBjYWxsYmFja19uYW1lLCBhZ2Vu
dF9pbnRlcmZhY2VfbmFtZSwgY2FsbGJhY2tfbmFtZSkpCiAgICAgICAgICAgICBtZXRob2RfZW5k
aW5nX2hhbmRsaW5nLmFwcGVuZCgiICAgIGlmIChlcnJvci5sZW5ndGgoKSkge1xuIikKICAgICAg
ICAgICAgIG1ldGhvZF9lbmRpbmdfaGFuZGxpbmcuYXBwZW5kKCIgICAgICAgIGNhbGxiYWNrLT5k
aXNhYmxlKCk7XG4iKQotICAgICAgICAgICAgbWV0aG9kX2VuZGluZ19oYW5kbGluZy5hcHBlbmQo
IiAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElk
LCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6U2VydmVyRXJyb3IsIGVycm9yKTtcbiIpCisg
ICAgICAgICAgICBtZXRob2RfZW5kaW5nX2hhbmRsaW5nLmFwcGVuZCgiICAgICAgICBtX2JhY2tl
bmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3Rvcjo6SW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OlNlcnZlckVycm9yLCBlcnJvcik7XG4iKQogICAgICAg
ICAgICAgbWV0aG9kX2VuZGluZ19oYW5kbGluZy5hcHBlbmQoIiAgICAgICAgcmV0dXJuO1xuIikK
ICAgICAgICAgICAgIG1ldGhvZF9lbmRpbmdfaGFuZGxpbmcuYXBwZW5kKCIgICAgfSIpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9y
U3RyaW5ncy5weSBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVj
dG9yU3RyaW5ncy5weQppbmRleCA0MWUzMzg3Li42YzdiODExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3RvclN0cmluZ3MucHkKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5
CkBAIC03MCw3ICs3MCw3IEBAIGJhY2tlbmRfZGlzcGF0Y2hlcl9kaXNwYXRjaF9tZXRob2QgPSAo
CiB7CiAgICAgUmVmPCR7ZGlzcGF0Y2hlck5hbWV9PiBwcm90ZWN0KCp0aGlzKTsKIAotICAgIHR5
cGVkZWYgdm9pZCAoJHtkaXNwYXRjaGVyTmFtZX06OipDYWxsSGFuZGxlcikobG9uZyBjYWxsSWQs
IGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7CisgICAgdHlwZWRlZiB2b2lkICgke2Rp
c3BhdGNoZXJOYW1lfTo6KkNhbGxIYW5kbGVyKShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOwogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcs
IENhbGxIYW5kbGVyPiBEaXNwYXRjaE1hcDsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKERpc3Bh
dGNoTWFwLCBkaXNwYXRjaE1hcCwgKCkpOwogICAgIGlmIChkaXNwYXRjaE1hcC5pc0VtcHR5KCkp
IHsKQEAgLTExMiw3ICsxMTIsNyBAQCAkY29kZQogIiIiKQogCiBjYWxsYmFja19tZXRob2QgPSAo
Ci0iIiIke2hhbmRsZXJOYW1lfTo6JHtjYWxsYmFja05hbWV9Ojoke2NhbGxiYWNrTmFtZX0oUGFz
c1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gYmFja2VuZERpc3BhdGNoZXIsIGlu
dCBpZCkgOiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlKGJhY2tlbmRE
aXNwYXRjaGVyLCBpZCkgeyB9CisiIiIke2hhbmRsZXJOYW1lfTo6JHtjYWxsYmFja05hbWV9Ojok
e2NhbGxiYWNrTmFtZX0oUGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gYmFj
a2VuZERpc3BhdGNoZXIsIGludCBpZCkgOiBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjpDYWxsYmFja0Jhc2UoYmFja2VuZERpc3BhdGNoZXIsIGlkKSB7IH0KIAogdm9pZCAk
e2hhbmRsZXJOYW1lfTo6JHtjYWxsYmFja05hbWV9OjpzZW5kU3VjY2Vzcygke3BhcmFtZXRlcnN9
KQogewpAQCAtMTI2LDE0ICsxMjYsMTMgQEAgZnJvbnRlbmRfaCA9ICgKICNkZWZpbmUgSW5zcGVj
dG9yRnJvbnRlbmRfaAogCiAjaW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKLSNpbmNs
dWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JGb3J3YXJkaW5nLmgi
CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwotCiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKIAogJGRvbWFpbkNsYXNzTGlzdApAQCAtMTQ5LDE2ICsxNDgsMTMgQEAg
YmFja2VuZF9oID0gKAogIiIiI2lmbmRlZiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnNfaAog
I2RlZmluZSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnNfaAogCi0jaW5jbHVkZSAiSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5o
IgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwotY2xhc3Mg
SW5zcGVjdG9yQXJyYXk7Ci0KIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCiAkaGFuZGxl
ckludGVyZmFjZXMKQEAgLTE3OCwxMSArMTc0LDEzIEBAIGJhY2tlbmRfY3BwID0gKAogI2luY2x1
ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogCiAjaW5jbHVkZSAiSW5zcGVjdG9y
QWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JGb3J3YXJkaW5nLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAkbWV0aG9kcwpAQCAtMjAwLDEwICsxOTgsMTEgQEAgZnJvbnRlbmRfY3BwID0gKAogCiAj
aW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKIAotI2luY2x1ZGUgIkluc3BlY3RvckZvcndh
cmRpbmcuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogJG1ldGhvZHMKQEAgLTIyMCw3ICsyMTksNyBAQCB0eXBlYnVpbGRlcl9o
ID0gKAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVl
cy5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3
dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKQEAgLTI4MSwx
MyArMjgwLDEzIEBAIGlubGluZSBpbnQgRXhhY3RseUludDo6Y2FzdF90b19pbnQ8dW5zaWduZWQg
aW50Pih1bnNpZ25lZCBpbnQgaSkgeyByZXR1cm4gaTsgfQogY2xhc3MgUnVudGltZUNhc3RIZWxw
ZXIgewogcHVibGljOgogI2lmICR2YWxpZGF0b3JJZmRlZk5hbWUKLSAgICB0ZW1wbGF0ZTxJbnNw
ZWN0b3JWYWx1ZTo6VHlwZSBUWVBFPgotICAgIHN0YXRpYyB2b2lkIGFzc2VydFR5cGUoSW5zcGVj
dG9yVmFsdWUqIHZhbHVlKQorICAgIHRlbXBsYXRlPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU6
OlR5cGUgVFlQRT4KKyAgICBzdGF0aWMgdm9pZCBhc3NlcnRUeXBlKEluc3BlY3Rvcjo6SW5zcGVj
dG9yVmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKHZhbHVlLT50eXBlKCkgPT0g
VFlQRSk7CiAgICAgfQotICAgIHN0YXRpYyB2b2lkIGFzc2VydEFueShJbnNwZWN0b3JWYWx1ZSop
OwotICAgIHN0YXRpYyB2b2lkIGFzc2VydEludChJbnNwZWN0b3JWYWx1ZSogdmFsdWUpOworICAg
IHN0YXRpYyB2b2lkIGFzc2VydEFueShJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKik7CisgICAg
c3RhdGljIHZvaWQgYXNzZXJ0SW50KEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVlKTsK
ICNlbmRpZgogfTsKIApAQCAtMzAwLDEzICsyOTksMTMgQEAgc3RydWN0IEFycmF5SXRlbUhlbHBl
ciB7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgQXJyYXkgOiBwdWJsaWMgSW5z
cGVjdG9yQXJyYXlCYXNlIHsKK2NsYXNzIEFycmF5IDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVj
dG9yQXJyYXlCYXNlIHsKIHByaXZhdGU6CiAgICAgQXJyYXkoKSB7IH0KIAotICAgIEluc3BlY3Rv
ckFycmF5KiBvcGVuQWNjZXNzb3JzKCkgewotICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2Yo
SW5zcGVjdG9yQXJyYXkpID09IHNpemVvZihBcnJheTxUPiksIGNhbm5vdF9jYXN0KTsKLSAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3BlY3RvckFycmF5Kj4oc3RhdGljX2Nhc3Q8SW5zcGVj
dG9yQXJyYXlCYXNlKj4odGhpcykpOworICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkqIG9w
ZW5BY2Nlc3NvcnMoKSB7CisgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihJbnNwZWN0b3I6
Okluc3BlY3RvckFycmF5KSA9PSBzaXplb2YoQXJyYXk8VD4pLCBjYW5ub3RfY2FzdCk7CisgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5Kj4oc3RhdGlj
X2Nhc3Q8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheUJhc2UqPih0aGlzKSk7CiAgICAgfQogCiBw
dWJsaWM6CkBAIC0zMjUsMjIgKzMyNCwyMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQXJyYXk8VD4oKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8QXJy
YXk8VD4+IHJ1bnRpbWVDYXN0KFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEFycmF5PFQ+PiBydW50aW1lQ2FzdChQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQogICAgIHsKLSAgICAgICAgUmVmUHRyPEluc3Bl
Y3RvckFycmF5PiBhcnJheTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJy
YXk+IGFycmF5OwogICAgICAgICBib29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNBcnJheSgmYXJyYXkp
OwogICAgICAgICBBU1NFUlRfVU5VU0VEKGNhc3RSZXMsIGNhc3RSZXMpOwogI2lmICR2YWxpZGF0
b3JJZmRlZk5hbWUKICAgICAgICAgYXNzZXJ0Q29ycmVjdFZhbHVlKGFycmF5LmdldCgpKTsKICNl
bmRpZiAgLy8gJHZhbGlkYXRvcklmZGVmTmFtZQotICAgICAgICBDT01QSUxFX0FTU0VSVChzaXpl
b2YoQXJyYXk8VD4pID09IHNpemVvZihJbnNwZWN0b3JBcnJheSksIHR5cGVfY2FzdF9wcm9ibGVt
KTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5PFQ+Kj4oc3RhdGljX2Nhc3Q8SW5z
cGVjdG9yQXJyYXlCYXNlKj4oYXJyYXkuZ2V0KCkpKTsKKyAgICAgICAgQ09NUElMRV9BU1NFUlQo
c2l6ZW9mKEFycmF5PFQ+KSA9PSBzaXplb2YoSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSksIHR5
cGVfY2FzdF9wcm9ibGVtKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5PFQ+Kj4o
c3RhdGljX2Nhc3Q8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheUJhc2UqPihhcnJheS5nZXQoKSkp
OwogICAgIH0KIAogI2lmICR2YWxpZGF0b3JJZmRlZk5hbWUKLSAgICBzdGF0aWMgdm9pZCBhc3Nl
cnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQorICAgIHN0YXRpYyB2b2lkIGFz
c2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiB2YWx1ZSkKICAgICB7
Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJyYXk7CisgICAgICAgIFJlZlB0cjxJ
bnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiBhcnJheTsKICAgICAgICAgYm9vbCBjYXN0UmVzID0g
dmFsdWUtPmFzQXJyYXkoJmFycmF5KTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChjYXN0UmVzLCBj
YXN0UmVzKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFycmF5LT5sZW5ndGgo
KTsgaSsrKQpAQCAtMzUxLDE0ICszNTAsMTQgQEAgcHVibGljOgogfTsKIAogc3RydWN0IFN0cnVj
dEl0ZW1UcmFpdHMgewotICAgIHN0YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkq
IGFycmF5LCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9p
ZCBwdXNoUmVmUHRyKEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQogICAgIHsKICAgICAgICAgYXJyYXkt
PnB1c2hWYWx1ZSh2YWx1ZSk7CiAgICAgfQogCiAjaWYgJHZhbGlkYXRvcklmZGVmTmFtZQogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVl
KEluc3BlY3RvclZhbHVlKiB2YWx1ZSkgeworICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RW
YWx1ZShJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiB2YWx1ZSkgewogICAgICAgICBUOjphc3Nl
cnRDb3JyZWN0VmFsdWUodmFsdWUpOwogICAgIH0KICNlbmRpZiAgLy8gJHZhbGlkYXRvcklmZGVm
TmFtZQpAQCAtMzY3LDE1ICszNjYsMTUgQEAgc3RydWN0IFN0cnVjdEl0ZW1UcmFpdHMgewogdGVt
cGxhdGU8Pgogc3RydWN0IEFycmF5SXRlbUhlbHBlcjxTdHJpbmc+IHsKICAgICBzdHJ1Y3QgVHJh
aXRzIHsKLSAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJhdyhJbnNwZWN0b3JBcnJheSogYXJyYXks
IGNvbnN0IFN0cmluZyYgdmFsdWUpCisgICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSYXcoSW5zcGVj
dG9yOjpJbnNwZWN0b3JBcnJheSogYXJyYXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAg
IHsKICAgICAgICAgICAgIGFycmF5LT5wdXNoU3RyaW5nKHZhbHVlKTsKICAgICAgICAgfQogCiAj
aWYgJHZhbGlkYXRvcklmZGVmTmFtZQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAg
ICAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVl
KSB7Ci0gICAgICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JW
YWx1ZTo6VHlwZVN0cmluZz4odmFsdWUpOworICAgICAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3Jy
ZWN0VmFsdWUoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogdmFsdWUpIHsKKyAgICAgICAgICAg
IFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU6
OlR5cGVTdHJpbmc+KHZhbHVlKTsKICAgICAgICAgfQogI2VuZGlmICAvLyAkdmFsaWRhdG9ySWZk
ZWZOYW1lCiAgICAgfTsKQEAgLTM4NCwxNCArMzgzLDE0IEBAIHN0cnVjdCBBcnJheUl0ZW1IZWxw
ZXI8U3RyaW5nPiB7CiB0ZW1wbGF0ZTw+CiBzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPGludD4gewog
ICAgIHN0cnVjdCBUcmFpdHMgewotICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmF3KEluc3BlY3Rv
ckFycmF5KiBhcnJheSwgaW50IHZhbHVlKQorICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmF3KElu
c3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkqIGFycmF5LCBpbnQgdmFsdWUpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGFycmF5LT5wdXNoSW50KHZhbHVlKTsKICAgICAgICAgfQogCiAjaWYgJHZhbGlk
YXRvcklmZGVmTmFtZQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0
aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKSB7CisgICAg
ICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3I6Okluc3BlY3RvclZh
bHVlKiB2YWx1ZSkgewogICAgICAgICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydEludCh2
YWx1ZSk7CiAgICAgICAgIH0KICNlbmRpZiAgLy8gJHZhbGlkYXRvcklmZGVmTmFtZQpAQCAtNDAx
LDE1ICs0MDAsMTUgQEAgc3RydWN0IEFycmF5SXRlbUhlbHBlcjxpbnQ+IHsKIHRlbXBsYXRlPD4K
IHN0cnVjdCBBcnJheUl0ZW1IZWxwZXI8ZG91YmxlPiB7CiAgICAgc3RydWN0IFRyYWl0cyB7Ci0g
ICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSYXcoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBkb3VibGUg
dmFsdWUpCisgICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSYXcoSW5zcGVjdG9yOjpJbnNwZWN0b3JB
cnJheSogYXJyYXksIGRvdWJsZSB2YWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAgYXJyYXkt
PnB1c2hOdW1iZXIodmFsdWUpOwogICAgICAgICB9CiAKICNpZiAkdmFsaWRhdG9ySWZkZWZOYW1l
CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyB2b2lkIGFzc2Vy
dENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpIHsKLSAgICAgICAgICAgIFJ1bnRp
bWVDYXN0SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3RvclZhbHVlOjpUeXBlTnVtYmVyPih2YWx1
ZSk7CisgICAgICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3I6Oklu
c3BlY3RvclZhbHVlKiB2YWx1ZSkgeworICAgICAgICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFz
c2VydFR5cGU8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZTo6VHlwZU51bWJlcj4odmFsdWUpOwog
ICAgICAgICB9CiAjZW5kaWYgIC8vICR2YWxpZGF0b3JJZmRlZk5hbWUKICAgICB9OwpAQCAtNDE4
LDMxICs0MTcsMzEgQEAgc3RydWN0IEFycmF5SXRlbUhlbHBlcjxkb3VibGU+IHsKIHRlbXBsYXRl
PD4KIHN0cnVjdCBBcnJheUl0ZW1IZWxwZXI8Ym9vbD4gewogICAgIHN0cnVjdCBUcmFpdHMgewot
ICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmF3KEluc3BlY3RvckFycmF5KiBhcnJheSwgYm9vbCB2
YWx1ZSkKKyAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJhdyhJbnNwZWN0b3I6Okluc3BlY3RvckFy
cmF5KiBhcnJheSwgYm9vbCB2YWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAgYXJyYXktPnB1
c2hCb29sZWFuKHZhbHVlKTsKICAgICAgICAgfQogCiAjaWYgJHZhbGlkYXRvcklmZGVmTmFtZQog
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgdm9pZCBhc3NlcnRD
b3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKSB7Ci0gICAgICAgICAgICBSdW50aW1l
Q2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZUJvb2xlYW4+KHZhbHVl
KTsKKyAgICAgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3Rvcjo6SW5z
cGVjdG9yVmFsdWUqIHZhbHVlKSB7CisgICAgICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNz
ZXJ0VHlwZTxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlOjpUeXBlQm9vbGVhbj4odmFsdWUpOwog
ICAgICAgICB9CiAjZW5kaWYgIC8vICR2YWxpZGF0b3JJZmRlZk5hbWUKICAgICB9OwogfTsKIAog
dGVtcGxhdGU8Pgotc3RydWN0IEFycmF5SXRlbUhlbHBlcjxJbnNwZWN0b3JWYWx1ZT4geworc3Ry
dWN0IEFycmF5SXRlbUhlbHBlcjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiB7CiAgICAgc3Ry
dWN0IFRyYWl0cyB7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yQXJy
YXkqIGFycmF5LCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSkKKyAgICAgICAgc3Rh
dGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5KiBhcnJheSwgUGFz
c1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiB2YWx1ZSkKICAgICAgICAgewogICAg
ICAgICAgICAgYXJyYXktPnB1c2hWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIH0KIAogI2lmICR2YWxp
ZGF0b3JJZmRlZk5hbWUKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3Rh
dGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkgeworICAg
ICAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yOjpJbnNwZWN0b3JW
YWx1ZSogdmFsdWUpIHsKICAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRBbnko
dmFsdWUpOwogICAgICAgICB9CiAjZW5kaWYgIC8vICR2YWxpZGF0b3JJZmRlZk5hbWUKQEAgLTQ1
MCwzNCArNDQ5LDM0IEBAIHN0cnVjdCBBcnJheUl0ZW1IZWxwZXI8SW5zcGVjdG9yVmFsdWU+IHsK
IH07CiAKIHRlbXBsYXRlPD4KLXN0cnVjdCBBcnJheUl0ZW1IZWxwZXI8SW5zcGVjdG9yT2JqZWN0
PiB7CitzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiB7
CiAgICAgc3RydWN0IFRyYWl0cyB7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5z
cGVjdG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSkKKyAg
ICAgICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5KiBh
cnJheSwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiB2YWx1ZSkKICAgICAg
ICAgewogICAgICAgICAgICAgYXJyYXktPnB1c2hWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIH0KIAog
I2lmICR2YWxpZGF0b3JJZmRlZk5hbWUKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAg
ICAgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1
ZSkgewotICAgICAgICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9y
VmFsdWU6OlR5cGVPYmplY3Q+KHZhbHVlKTsKKyAgICAgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29y
cmVjdFZhbHVlKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVlKSB7CisgICAgICAgICAg
ICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVl
OjpUeXBlT2JqZWN0Pih2YWx1ZSk7CiAgICAgICAgIH0KICNlbmRpZiAgLy8gJHZhbGlkYXRvcklm
ZGVmTmFtZQogICAgIH07CiB9OwogCiB0ZW1wbGF0ZTw+Ci1zdHJ1Y3QgQXJyYXlJdGVtSGVscGVy
PEluc3BlY3RvckFycmF5PiB7CitzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yQXJyYXk+IHsKICAgICBzdHJ1Y3QgVHJhaXRzIHsKLSAgICAgICAgc3RhdGljIHZvaWQg
cHVzaFJlZlB0cihJbnNwZWN0b3JBcnJheSogYXJyYXksIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJy
YXk+IHZhbHVlKQorICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmVmUHRyKEluc3BlY3Rvcjo6SW5z
cGVjdG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+
IHZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBhcnJheS0+cHVzaEFycmF5KHZhbHVlKTsK
ICAgICAgICAgfQogCiAjaWYgJHZhbGlkYXRvcklmZGVmTmFtZQogICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVj
dG9yVmFsdWUqIHZhbHVlKSB7Ci0gICAgICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0
VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZUFycmF5Pih2YWx1ZSk7CisgICAgICAgIHN0YXRpYyB2
b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiB2YWx1ZSkg
eworICAgICAgICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JWYWx1ZTo6VHlwZUFycmF5Pih2YWx1ZSk7CiAgICAgICAgIH0KICNlbmRpZiAgLy8g
JHZhbGlkYXRvcklmZGVmTmFtZQogICAgIH07CkBAIC00ODYsMTQgKzQ4NSwxNCBAQCBzdHJ1Y3Qg
QXJyYXlJdGVtSGVscGVyPEluc3BlY3RvckFycmF5PiB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgog
c3RydWN0IEFycmF5SXRlbUhlbHBlcjxUeXBlQnVpbGRlcjo6QXJyYXk8VD4+IHsKICAgICBzdHJ1
Y3QgVHJhaXRzIHsKLSAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0b3JBcnJh
eSogYXJyYXksIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFQ+PiB2YWx1ZSkKKyAgICAg
ICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5KiBhcnJh
eSwgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VD4+IHZhbHVlKQogICAgICAgICB7CiAg
ICAgICAgICAgICBhcnJheS0+cHVzaFZhbHVlKHZhbHVlKTsKICAgICAgICAgfQogCiAjaWYgJHZh
bGlkYXRvcklmZGVmTmFtZQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTPgotICAgICAgICBz
dGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKSB7Cisg
ICAgICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3I6Okluc3BlY3Rv
clZhbHVlKiB2YWx1ZSkgewogICAgICAgICAgICAgUzo6YXNzZXJ0Q29ycmVjdFZhbHVlKHZhbHVl
KTsKICAgICAgICAgfQogI2VuZGlmICAvLyAkdmFsaWRhdG9ySWZkZWZOYW1lCkBAIC01MjUsNiAr
NTI0LDggQEAgdHlwZWJ1aWxkZXJfY3BwID0gKAogI2luY2x1ZGUgIkluc3BlY3RvclR5cGVCdWls
ZGVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCit1c2luZyBuYW1lc3BhY2Ug
SW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBUeXBlQnVpbGRl
ciB7CkBAIC01ODQsMTQgKzU4NSwxNCBAQCBjbGFzc19iaW5kaW5nX2J1aWxkZXJfcGFydF8xID0g
KAogICAgIHRlbXBsYXRlPGludCBTVEFURT4KICAgICBjbGFzcyBCdWlsZGVyIHsKICAgICBwcml2
YXRlOgotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKKyAgICAgICAg
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKIAogICAgICAgICB0
ZW1wbGF0ZTxpbnQgU1RFUD4gQnVpbGRlcjxTVEFURSB8IFNURVA+JiBjYXN0U3RhdGUoKQogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8QnVpbGRlcjxTVEFU
RSB8IFNURVA+Kj4odGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBCdWlsZGVyKFBhc3NSZWZQ
dHI8LyolcyovSW5zcGVjdG9yT2JqZWN0PiBwdHIpCisgICAgICAgIEJ1aWxkZXIoUGFzc1JlZlB0
cjwvKiVzKi9JbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gcHRyKQogICAgICAgICB7CiAgICAg
ICAgICAgICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBOb0ZpZWxkc1NldCwgYnVpbGRlcl9jcmVh
dGVkX2luX25vbl9pbml0X3N0YXRlKTsKICAgICAgICAgICAgIG1fcmVzdWx0ID0gcHRyOwpAQCAt
NjEzLDcgKzYxNCw3IEBAIGNsYXNzX2JpbmRpbmdfYnVpbGRlcl9wYXJ0XzMgPSAoIiIiCiAgICAg
ICAgIG9wZXJhdG9yIFJlZlB0cjwlcz4mICgpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJ
TEVfQVNTRVJUKFNUQVRFID09IEFsbEZpZWxkc1NldCwgcmVzdWx0X2lzX25vdF9yZWFkeSk7Ci0g
ICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoJXMpID09IHNpemVvZihJbnNwZWN0b3JP
YmplY3QpLCBjYW5ub3RfY2FzdCk7CisgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2Yo
JXMpID09IHNpemVvZihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsK
ICAgICAgICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxSZWZQdHI8JXM+Kj4oJm1fcmVz
dWx0KTsKICAgICAgICAgfQogCkBAIC02MjgsNiArNjI5LDYgQEAgY2xhc3NfYmluZGluZ19idWls
ZGVyX3BhcnRfMyA9ICgiIiIKIGNsYXNzX2JpbmRpbmdfYnVpbGRlcl9wYXJ0XzQgPSAoCiAiIiIg
ICAgc3RhdGljIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICBy
ZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7Cisg
ICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdDo6Y3JlYXRlKCkpOwogICAgIH0KICIiIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
Q29uc29sZU1lc3NhZ2UuY3BwCmluZGV4IDBjOTcwYjguLjczMjE2ZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcApAQCAtMzgsMTQgKzM4LDE2IEBACiAj
aW5jbHVkZSAiSWRlbnRpZmllcnNGYWN0b3J5LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQu
aCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKLSNpbmNsdWRlICJJbnNwZWN0
b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY3Jp
cHRDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRlICJT
Y3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNs
dWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBDb25zb2xlTWVzc2FnZTo6Q29uc29sZU1lc3NhZ2UoYm9vbCBjYW5HZW5lcmF0ZUNhbGxT
dGFjaywgTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZl
bCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVu
dGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNz
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaAppbmRleCAw
N2Y4OGI2Li4wNzA1Yjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29u
c29sZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3Nh
Z2UuaApAQCAtMzgsMTEgKzM4LDE0IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVj
dG9yT2JqZWN0OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERPTVdpbmRvdzsK
IGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNs
YXNzIFNjcmlwdEFyZ3VtZW50czsKIGNsYXNzIFNjcmlwdENhbGxGcmFtZTsKIGNsYXNzIFNjcmlw
dENhbGxTdGFjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db250ZW50
U2VhcmNoVXRpbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hV
dGlscy5jcHAKaW5kZXggMDNhODA1Zi4uYjNkOWFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAKQEAgLTMxLDE0ICszMSwxNCBAQAogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCiAKICNpbmNsdWRlICJDb250ZW50U2VhcmNoVXRpbHMuaCIKLQot
I2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIlJlZ3VsYXJFeHByZXNzaW9u
LmgiCi0KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8
d3RmL0J1bXBQb2ludGVyQWxsb2NhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgogI2luY2x1ZGUgPHlhcnIvWWFyci5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgQ29udGVudFNlYXJjaFV0aWxzIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5oCmluZGV4IDYw
YWQ2NzguLjdiNWRmMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db250
ZW50U2VhcmNoVXRpbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29udGVudFNl
YXJjaFV0aWxzLmgKQEAgLTM4LDcgKzM4LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBJbnNwZWN0b3JBcnJheTsKIGNsYXNzIFJlZ3VsYXJFeHByZXNzaW9uOwogCiBuYW1lc3Bh
Y2UgQ29udGVudFNlYXJjaFV0aWxzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHQuY3BwCmluZGV4IDc3Zjc4MGMuLjFlNThkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcApAQCAtMzYsMTAgKzM2LDEwIEBACiAKICNpbmNs
dWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1vZHVs
ZS5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNp
bmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0
VmFsdWUuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpB
cnJheTsKQEAgLTQ5LDYgKzQ5LDggQEAgdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OlJ1bnRp
bWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yOwogdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxk
ZXI6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM7CiB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRl
cjo6UnVudGltZTo6UmVtb3RlT2JqZWN0OwogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEluamVjdGVkU2NyaXB0OjpJbmplY3RlZFNjcmlwdCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwCmlu
ZGV4IGQ5ZmJhNDAuLmE3ZDQ5NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdEJhc2UuY3BwCkBAIC0zNSwxMyArMzUsMTUgQEAKICNpbmNsdWRlICJJbmpl
Y3RlZFNjcmlwdEJhc2UuaCIKIAogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
IgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9u
Q2FsbC5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRl
IDxydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q7
CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
SW5qZWN0ZWRTY3JpcHRCYXNlOjpJbmplY3RlZFNjcmlwdEJhc2UoY29uc3QgU3RyaW5nJiBuYW1l
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5oCmluZGV4
IDc5NmY2YzAuLjEzYWVjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRCYXNlLmgKQEAgLTM2LDkgKzM2LDEyIEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQorbmFt
ZXNwYWNlIEluc3BlY3RvciB7CiBjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKK30KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCiBjbGFzcyBTY3JpcHRGdW5jdGlvbkNhbGw7CiAKIHR5cGVkZWYgU3RyaW5n
IEVycm9yU3RyaW5nOwpAQCAtNjIsNyArNjUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBjYW5B
Y2Nlc3NJbnNwZWN0ZWRXaW5kb3coKSBjb25zdDsKICAgICBjb25zdCBTY3JpcHRPYmplY3QmIGlu
amVjdGVkU2NyaXB0T2JqZWN0KCkgY29uc3Q7CiAgICAgU2NyaXB0VmFsdWUgY2FsbEZ1bmN0aW9u
V2l0aEV2YWxFbmFibGVkKFNjcmlwdEZ1bmN0aW9uQ2FsbCYsIGJvb2wmIGhhZEV4Y2VwdGlvbikg
Y29uc3Q7Ci0gICAgdm9pZCBtYWtlQ2FsbChTY3JpcHRGdW5jdGlvbkNhbGwmLCBSZWZQdHI8SW5z
cGVjdG9yVmFsdWU+KiByZXN1bHQpOworICAgIHZvaWQgbWFrZUNhbGwoU2NyaXB0RnVuY3Rpb25D
YWxsJiwgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwogICAgIHZv
aWQgbWFrZUV2YWxDYWxsKEVycm9yU3RyaW5nKiwgU2NyaXB0RnVuY3Rpb25DYWxsJiwgUmVmUHRy
PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsIFR5cGVCdWlsZGVy
OjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmNwcApp
bmRleCBmYWQ3OThiLi43OTkxYzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5jcHAKQEAgLTM5LDYgKzM5LDcgQEAK
ICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKICNpbmNsdWRlICJTY3JpcHRGdW5j
dGlvbkNhbGwuaCIKICNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlIDxpbnNwZWN0
b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAKIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpBcnJh
eTsKIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlSWQ7CkBAIC00
Nyw2ICs0OCw4IEBAIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNl
U3RhdGU7CiB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFjZUxvZzsKIHVz
aW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQ7CiAKK3VzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW5qZWN0ZWRTY3Jp
cHRDYW52YXNNb2R1bGU6OkluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAKaW5kZXggZWY1MzNhYS4u
M2E2NWQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
SG9zdC5jcHAKQEAgLTQ3LDkgKzQ3LDkgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JEYXRhYmFzZUFn
ZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIgogI2luY2x1ZGUgIklu
c3BlY3RvckZyb250ZW5kLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVk
ZSAiUGFzdGVib2FyZC5oIgogI2luY2x1ZGUgIlN0b3JhZ2UuaCIKKyNpbmNsdWRlIDxpbnNwZWN0
b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogI2luY2x1
ZGUgIkRhdGFiYXNlLmgiCkBAIC02MCw2ICs2MCw4IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRyPEluamVjdGVkU2NyaXB0
SG9zdD4gSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oCmluZGV4IDRhODQxODIuLmEyMTI1OTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgKQEAgLTM2LDYg
KzM2LDExIEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yT2JqZWN0Owor
Y2xhc3MgSW5zcGVjdG9yVmFsdWU7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
RGF0YWJhc2U7CkBAIC00Niw4ICs1MSw2IEBAIGNsYXNzIEluc3BlY3RvckRPTUFnZW50OwogY2xh
c3MgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dDsKIGNsYXNzIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0b3JPYmplY3Q7
Ci1jbGFzcyBJbnNwZWN0b3JWYWx1ZTsKIGNsYXNzIE5vZGU7CiBjbGFzcyBTY3JpcHREZWJ1Z1Nl
cnZlcjsKIGNsYXNzIFNjcmlwdE9iamVjdDsKQEAgLTEwMCw3ICsxMDMsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBjbGVhckluc3BlY3RlZE9iamVjdHMoKTsKICAgICBJbnNwZWN0YWJsZU9iamVjdCog
aW5zcGVjdGVkT2JqZWN0KHVuc2lnbmVkIGludCBudW0pOwogCi0gICAgdm9pZCBpbnNwZWN0SW1w
bChQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBvYmplY3RUb0luc3BlY3QsIFBhc3NSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+IGhpbnRzKTsKKyAgICB2b2lkIGluc3BlY3RJbXBsKFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gb2JqZWN0VG9JbnNwZWN0LCBQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IGhpbnRzKTsKICAgICB2b2lkIGdldEV2ZW50TGlzdGVu
ZXJzSW1wbChOb2RlKiwgVmVjdG9yPEV2ZW50TGlzdGVuZXJJbmZvPiYgbGlzdGVuZXJzQXJyYXkp
OwogCiAgICAgdm9pZCBjbGVhckNvbnNvbGVNZXNzYWdlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAppbmRleCA3YWEzZDQzLi5k
ZWRlODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmNwcApAQCAtMzcsMTAgKzM3LDEyIEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3Jp
cHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJJbmplY3Rl
ZFNjcmlwdFNvdXJjZS5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUg
IlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4K
ICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NPd25QdHI8SW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyPiBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUZvclBhZ2UoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oCmluZGV4IDY4MWU0MDgu
LjdiMjgzNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmgKQEAgLTM1LDEyICszNSwxNSBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3Ig
eworY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIERPTVdpbmRvdzsKIGNsYXNzIEluamVjdGVkU2NyaXB0OwogY2xhc3MgSW5qZWN0ZWRTY3Jp
cHRIb3N0OwotY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3MgU2NyaXB0T2JqZWN0OwogCiBj
bGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAKaW5kZXggZGIyMDc3OS4uOGQ1OTg1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3Bw
CkBAIC0zOSw2ICszOSw4IEBACiAjaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCiAjaW5j
bHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogSW5qZWN0ZWRTY3JpcHRNb2R1bGU6OkluamVjdGVkU2NyaXB0
TW9kdWxlKGNvbnN0IFN0cmluZyYgbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQWdlbnQuY3BwCmluZGV4IGVhN2I0MjAuLmYxY2FhZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcApAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1
ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5o
IgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIkluc3Bl
Y3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRl
ICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC01MiwxMyArNTEsMTYgQEAKICNp
bmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
Cit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIElu
c3BlY3RvckFnZW50OjpJbnNwZWN0b3JBZ2VudChQYWdlKiBwYWdlLCBJbmplY3RlZFNjcmlwdE1h
bmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cykKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIklu
c3BlY3RvciIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNl
KEFTQ0lJTGl0ZXJhbCgiSW5zcGVjdG9yIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBt
X2luc3BlY3RlZFBhZ2UocGFnZSkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVj
dGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1fZW5hYmxlZChmYWxzZSkKQEAgLTkzLDcgKzk1LDcg
QEAgdm9pZCBJbnNwZWN0b3JBZ2VudDo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1l
KiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkJgogICAgIGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2Ny
aXB0KHNjcmlwdFNvdXJjZS50b1N0cmluZygpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JBZ2VudDo6
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJv
bnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNo
ZXIpCit2b2lkIEluc3BlY3RvckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JJbnNwZWN0b3JGcm9udGVu
ZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9
IEluc3BlY3Rvckluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3Bh
dGNoZXIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaApp
bmRleCBmYjRiZDI1Li5iMTVkZDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQWdlbnQuaApAQCAtMzAsMTEgKzMwLDE4IEBACiAjaWZuZGVmIEluc3BlY3RvckFnZW50X2gK
ICNkZWZpbmUgSW5zcGVjdG9yQWdlbnRfaAogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50
LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnRCYXNlLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnRCYXNlLmgiCisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCituYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKK2NsYXNzIEluc3BlY3Rvck9iamVjdDsKK30KKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CkBAIC00MiwxMyArNDksMTIgQEAgY2xh
c3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEluamVjdGVkU2NyaXB0TWFu
YWdlcjsKIGNsYXNzIEluc3BlY3Rvckluc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcjsKLWNsYXNz
IEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBQYWdl
OwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yQWdlbnQg
OiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9ySW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckFnZW50IDogcHVibGljIElu
c3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvckluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQWdlbnQpOwog
cHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckFnZW50PiBjcmVhdGUoUGFn
ZSogcGFnZSwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCkBAIC02NCw3ICs3MCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwogICAgIHZvaWQgZGlzYWJs
ZShFcnJvclN0cmluZyopOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Oklu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdp
bGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICB2b2lkIGRpZENs
ZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSosIERPTVdyYXBwZXJXb3JsZCYpOwpAQCAtNzks
NyArODUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEluamVjdGVkU2NyaXB0Rm9yT3JpZ2lu
KGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIHNvdXJjZSk7CiAKLSAgICB2b2lk
IGluc3BlY3QoUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBv
YmplY3RUb0luc3BlY3QsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBoaW50cyk7CisgICAg
dm9pZCBpbnNwZWN0KFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVj
dD4gb2JqZWN0VG9JbnNwZWN0LCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiBoaW50cyk7CiAKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yQWdlbnQoUGFnZSosIEluamVjdGVk
U2NyaXB0TWFuYWdlciosIEluc3RydW1lbnRpbmdBZ2VudHMqKTsKQEAgLTkwLDcgKzk2LDcgQEAg
cHJpdmF0ZToKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOwogCiAgICAgVmVjdG9yPHBhaXI8bG9uZywgU3RyaW5nPj4gbV9wZW5kaW5nRXZhbHVhdGVU
ZXN0Q29tbWFuZHM7Ci0gICAgcGFpcjxSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdD4sIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+PiBtX3BlbmRpbmdJbnNwZWN0RGF0YTsK
KyAgICBwYWlyPFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiwgUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Pj4gbV9wZW5kaW5nSW5zcGVjdERhdGE7CiAg
ICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbV9pbmplY3RlZFNjcmlwdEZvck9yaWdpbjsKIAog
ICAgIGJvb2wgbV9lbmFibGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckFnZW50UmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JBZ2VudEJhc2UuaApzaW1pbGFyaXR5IGluZGV4IDY4JQpyZW5hbWUgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oCnJlbmFtZSB0byBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmgKaW5kZXggNGZkMDM1My4u
ZjQ3MGJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFn
ZW50UmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdl
bnRCYXNlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI0LDI5ICsyNCwy
OCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEluc3BlY3RvckFnZW50UmVnaXN0
cnlfaAotI2RlZmluZSBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5X2gKKyNpZm5kZWYgV0VCQ09SRV9J
bnNwZWN0b3JBZ2VudEJhc2VfaAorI2RlZmluZSBXRUJDT1JFX0luc3BlY3RvckFnZW50QmFzZV9o
CiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlICJJbnNwZWN0b3JGb3J3
YXJkaW5nLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOworY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50
czsKIAotY2xhc3MgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeSB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBh
cHBlbmQoUGFzc093blB0cjxJbnNwZWN0b3JCYXNlQWdlbnQ+KTsKK2NsYXNzIEluc3BlY3RvckFn
ZW50QmFzZSA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50QmFzZSB7Citwcm90ZWN0
ZWQ6CisgICAgSW5zcGVjdG9yQWdlbnRCYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICAgICAgOiBJbnNwZWN0b3I6Oklu
c3BlY3RvckFnZW50QmFzZShuYW1lKQorICAgICAgICAsIG1faW5zdHJ1bWVudGluZ0FnZW50cyhp
bnN0cnVtZW50aW5nQWdlbnRzKQorICAgIHsKKyAgICB9CiAKLSAgICB2b2lkIGRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciopOwotICAgIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
KTsKLSAgICB2b2lkIGRpc2NhcmRBZ2VudHMoKTsKLQotcHJpdmF0ZToKLSAgICBWZWN0b3I8T3du
UHRyPEluc3BlY3RvckJhc2VBZ2VudD4+IG1fYWdlbnRzOworICAgIEluc3RydW1lbnRpbmdBZ2Vu
dHMqIG1faW5zdHJ1bWVudGluZ0FnZW50czsKIH07Ci0KKyAgICAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAotI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckFnZW50UmVnaXN0cnlfaCkKKyNl
bmRpZiAvLyAhZGVmaW5lZChXRUJDT1JFX0luc3BlY3RvckFnZW50QmFzZV9oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHAKaW5kZXggMjYzYmRkOS4u
NTMwMGQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFs
bEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5P
bmUuY3BwCkBAIC0zNyw5ICszNyw3IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmNwcCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yQWdlbnQuY3BwIgotI2luY2x1ZGUgIkluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwIgog
I2luY2x1ZGUgIkluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAiCi0jaW5jbHVkZSAi
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIgogI2luY2x1ZGUgIkluc3BlY3RvckNTU0Fn
ZW50LmNwcCIKICNpbmNsdWRlICJJbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yQ2xpZW50LmNwcCIKQEAgLTcwLDcgKzY4LDYgQEAKICNpbmNsdWRlICJJbnNwZWN0
b3JTdHlsZVNoZWV0LmNwcCIKICNpbmNsdWRlICJJbnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuY3Bw
IgogI2luY2x1ZGUgIkluc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIgotI2luY2x1ZGUgIkluc3Bl
Y3RvclZhbHVlcy5jcHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwIgogI2lu
Y2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuY3BwIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJj
ZXNEYXRhLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKaW5kZXggMDRjYzUzYS4uYmE0NjY1OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKQEAgLTM2LDIxICszNiwyMyBAQAogI2luY2x1ZGUgIklu
c3BlY3RvckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNp
bmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0YXRlTm90
aWZpZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5o
IgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KKwordXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQ6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudChJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VB
Z2VudCkKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIkFwcGxpY2F0aW9u
Q2FjaGUiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShB
U0NJSUxpdGVyYWwoIkFwcGxpY2F0aW9uQ2FjaGUiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAg
ICAsIG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
IGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6
OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFj
a2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250
ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQuaAppbmRleCBlYjA2YzhmLi5hN2I5NmM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudC5oCkBAIC0yOCwyNyArMjgsMzAgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCiAjaW5j
bHVkZSAiQXBwbGljYXRpb25DYWNoZUhvc3QuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdl
bnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JGcm9udGVuZC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckFnZW50QmFzZS5oIgog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworY2xhc3Mg
SW5zcGVjdG9yVmFsdWU7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRnJhbWU7
Ci1jbGFzcyBJbnNwZWN0b3JBcnJheTsKIGNsYXNzIEluc3BlY3RvckFnZW50OwogY2xhc3MgSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUZyb250ZW5kRGlzcGF0Y2hlcjsKLWNsYXNzIEluc3BlY3Rv
ck9iamVjdDsKIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKLWNsYXNzIEluc3BlY3RvclZhbHVl
OwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVi
bGljIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewor
Y2xhc3MgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50IDogcHVibGljIEluc3BlY3RvckFn
ZW50QmFzZSwgcHVibGljIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVCYWNrZW5kRGlzcGF0Y2hl
ckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzT3duUHRyPEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudD4gY3JlYXRlKEluc3Ry
dW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCog
cGFnZUFnZW50KQpAQCAtNTcsMTUgKzYwLDEyIEBAIHB1YmxpYzoKICAgICB9CiAgICAgfkluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCgpIHsgfQogCi0gICAgLy8gSW5zcGVjdG9yQmFzZUFn
ZW50Ci0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
OjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKLSAgICAvLyBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24gQVBJCiAgICAgdm9pZCB1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzKEZyYW1lKik7CiAg
ICAgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKCk7CiAKLSAgICAvLyBBcHBsaWNhdGlvbkNhY2hl
IEFQSSBmb3IgSW5zcGVjdG9yRnJvbnRlbmQKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9y
U3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIGdldEZyYW1lc1dpdGhNYW5pZmVzdHMoRXJyb3JT
dHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpBcHBsaWNhdGlv
bkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVzdD4+JiByZXN1bHQpOwogICAgIHZpcnR1YWwgdm9pZCBn
ZXRNYW5pZmVzdEZvckZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBT
dHJpbmcqIG1hbmlmZXN0VVJMKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JCYXNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JCYXNlQWdlbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGI5MDkzOC4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFzZUFnZW50LmgK
KysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBJbnNwZWN0b3JCYXNlQWdlbnRf
aAotI2RlZmluZSBJbnNwZWN0b3JCYXNlQWdlbnRfaAotCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXJzLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwotY2xh
c3MgSW5zdHJ1bWVudGluZ0FnZW50czsKLQotY2xhc3MgSW5zcGVjdG9yQmFzZUFnZW50IHsKLXB1
YmxpYzoKLSAgICB2aXJ0dWFsIH5JbnNwZWN0b3JCYXNlQWdlbnQoKSB7IH0KLQotICAgIHZpcnR1
YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBk
aXNjYXJkQWdlbnQoKSB7IH0KLQotcHJvdGVjdGVkOgotICAgIEluc3BlY3RvckJhc2VBZ2VudChj
b25zdCBTdHJpbmcmIG5hbWUsIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMpCi0gICAgICAgIDogbV9pbnN0cnVtZW50aW5nQWdlbnRzKGluc3RydW1lbnRpbmdBZ2VudHMp
Ci0gICAgICAgICwgbV9uYW1lKG5hbWUpCi0gICAgewotICAgIH0KLQotICAgIEluc3RydW1lbnRp
bmdBZ2VudHMqIG1faW5zdHJ1bWVudGluZ0FnZW50czsKLSAgICBTdHJpbmcgbV9uYW1lOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9y
QmFzZUFnZW50X2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0Fn
ZW50LmNwcAppbmRleCBiYjE3YzY1Li42NjEwN2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTQ0LDcgKzQ0LDYgQEAKICNpbmNsdWRl
ICJJbnNwZWN0b3JET01BZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckhpc3RvcnkuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVl
cy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJOYW1lZEZs
b3dDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgpAQCAtNTcsNyArNTYsNyBAQAogI2lu
Y2x1ZGUgIlN0eWxlUnVsZS5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRMaXN0LmgiCiAjaW5jbHVk
ZSAiV2ViS2l0TmFtZWRGbG93LmgiCi0KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFs
dWVzLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBAIC02NSw2ICs2NCw4IEBACiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRl
Lmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogZW51bSBGb3JjZVBzZXVkb0NsYXNzRmxhZ3MgewpAQCAtNjE2LDcgKzYxNyw3IEBAIENTU1N0
eWxlUnVsZSogSW5zcGVjdG9yQ1NTQWdlbnQ6OmFzQ1NTU3R5bGVSdWxlKENTU1J1bGUqIHJ1bGUp
CiB9CiAKIEluc3BlY3RvckNTU0FnZW50OjpJbnNwZWN0b3JDU1NBZ2VudChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQp
Ci0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJDU1MiKSwgaW5zdHJ1bWVu
dGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkNTUyIp
LCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9kb21BZ2VudChkb21BZ2VudCkKICAgICAs
IG1fbGFzdFN0eWxlU2hlZXRJZCgxKQogewpAQCAtNjI5LDcgKzYzMCw3IEBAIEluc3BlY3RvckNT
U0FnZW50Ojp+SW5zcGVjdG9yQ1NTQWdlbnQoKQogICAgIHJlc2V0KCk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
IGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9u
dGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hl
cikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yQ1NTRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2Vu
ZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JDU1NCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tl
bmREaXNwYXRjaGVyLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNTU0FnZW50LmgKaW5kZXggOWQzYjQwZC4uZWYwNDM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKQEAgLTI3LDEyICsyNywxMiBAQAogCiAjaW5j
bHVkZSAiQ1NTU2VsZWN0b3IuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIK
LSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JBZ2Vu
dEJhc2UuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclN0eWxlU2hlZXQu
aCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJTZWN1cml0eUNvbnRl
eHQuaCIKLQorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KQEAgLTY0LDcgKzY0LDcgQEAgY2xhc3MgQ2hhbmdlUmVnaW9uT3ZlcnNl
dFRhc2s7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAogY2xhc3MgSW5zcGVjdG9yQ1NTQWdlbnQK
LSAgICA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQKKyAgICA6IHB1YmxpYyBJbnNwZWN0b3JB
Z2VudEJhc2UKICAgICAsIHB1YmxpYyBJbnNwZWN0b3JET01BZ2VudDo6RE9NTGlzdGVuZXIKICAg
ICAsIHB1YmxpYyBJbnNwZWN0b3JDU1NCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKICAgICAsIHB1
YmxpYyBJbnNwZWN0b3JTdHlsZVNoZWV0OjpMaXN0ZW5lciB7CkBAIC05Niw3ICs5Niw3IEBAIHB1
YmxpYzoKICAgICB+SW5zcGVjdG9yQ1NTQWdlbnQoKTsKIAogICAgIGJvb2wgZm9yY2VQc2V1ZG9T
dGF0ZShFbGVtZW50KiwgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUpOwotICAgIHZpcnR1YWwgdm9p
ZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkQWdlbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZW5hYmxlKEVycm9yU3RyaW5nKik7CkBAIC0xMTksMTMgKzExOSwxMyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGdldFN0eWxlU2hlZXQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHN0
eWxlU2hlZXRJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5PiYg
cmVzdWx0KTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0U3R5bGVTaGVldFRleHQoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgU3RyaW5nKiByZXN1bHQpOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc3R5
bGVTaGVldElkLCBjb25zdCBTdHJpbmcmIHRleHQpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTdHls
ZVRleHQoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgc3R5bGVJ
ZCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+
JiByZXN1bHQpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9wZXJ0eVRleHQoRXJyb3JTdHJpbmcq
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgc3R5bGVJZCwgaW50IHByb3BlcnR5SW5k
ZXgsIGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBvdmVyd3JpdGUsIFJlZlB0cjxUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NTdHlsZT4mIHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2b2lkIHRvZ2dsZVByb3Bl
cnR5KEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHN0eWxlSWQs
IGludCBwcm9wZXJ0eUluZGV4LCBib29sIGRpc2FibGUsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NTdHlsZT4mIHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldFJ1bGVTZWxlY3RvcihF
cnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBydWxlSWQsIGNvbnN0
IFN0cmluZyYgc2VsZWN0b3IsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiYgcmVz
dWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U3R5bGVUZXh0KEVycm9yU3RyaW5nKiwgY29uc3Qg
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgc3R5bGVJZCwgY29uc3QgU3RyaW5n
JiB0ZXh0LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpOworICAg
IHZpcnR1YWwgdm9pZCBzZXRQcm9wZXJ0eVRleHQoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBzdHlsZUlkLCBpbnQgcHJvcGVydHlJbmRleCwg
Y29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIG92ZXJ3cml0ZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpD
U1M6OkNTU1N0eWxlPiYgcmVzdWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlUHJvcGVydHko
RXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBz
dHlsZUlkLCBpbnQgcHJvcGVydHlJbmRleCwgYm9vbCBkaXNhYmxlLCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCBzZXRSdWxlU2Vs
ZWN0b3IoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q+JiBydWxlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIFJlZlB0cjxUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkUnVsZShFcnJvclN0
cmluZyosIGludCBjb250ZXh0Tm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCk7CiAgICAgdmlydHVhbCB2b2lkIGdl
dFN1cHBvcnRlZENTU1Byb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5SW5mbz4+JiByZXN1bHQpOwotICAg
IHZpcnR1YWwgdm9pZCBmb3JjZVBzZXVkb1N0YXRlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwg
Y29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgZm9yY2VkUHNldWRvQ2xhc3Nlcyk7CisgICAg
dmlydHVhbCB2b2lkIGZvcmNlUHNldWRvU3RhdGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mIGZvcmNlZFBzZXVkb0NsYXNz
ZXMpOwogICAgIHZpcnR1YWwgdm9pZCBnZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3RyaW5n
KiwgaW50IGRvY3VtZW50Tm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpDU1M6Ok5hbWVkRmxvdz4+JiByZXN1bHQpOwogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0
U2VsZWN0b3JQcm9maWxlcihFcnJvclN0cmluZyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKaW5kZXggZjlmNzJmMi4uODA1Yzg3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQu
Y3BwCkBAIC01OSwxMCArNTksMTIgQEAgdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkNhbnZh
czo6VHJhY2VMb2c7CiB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFjZUxv
Z0lkOwogdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkZyYW1lSWQ7CiAKK3Vz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW5zcGVj
dG9yQ2FudmFzQWdlbnQ6Okluc3BlY3RvckNhbnZhc0FnZW50KEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKLSAgICA6IEluc3BlY3Rv
ckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIkNhbnZhcyIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQor
ICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiQ2FudmFzIiksIGluc3RydW1l
bnRpbmdBZ2VudHMpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCiAgICAgLCBtX2luamVj
dGVkU2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBtX2VuYWJsZWQo
ZmFsc2UpCkBAIC03Myw3ICs3NSw3IEBAIEluc3BlY3RvckNhbnZhc0FnZW50Ojp+SW5zcGVjdG9y
Q2FudmFzQWdlbnQoKQogewogfQogCi12b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENo
YW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3Zv
aWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNhbnZhc0Zyb250ZW5kRGlz
cGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5z
cGVjdG9yQ2FudmFzQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwg
dGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2Fu
dmFzQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2Vu
dC5oCmluZGV4IDQ5ZDAzZTguLjJjNjcyOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCkBAIC0zMywxMCArMzMsMTEgQEAKIAogI2lmIEVO
QUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNs
dWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JG
cm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclR5cGVCdWlsZGVyLmgiCiAjaW5jbHVkZSAi
U2NyaXB0U3RhdGUuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudEJhc2UuaCIKICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTUzLDcgKzU0LDcgQEAgY2xhc3MgU2NyaXB0T2JqZWN0Owog
CiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yQ2FudmFzQWdl
bnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yQ2FudmFzQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckNhbnZhc0FnZW50IDogcHVi
bGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3RvckNhbnZhc0JhY2tlbmREaXNw
YXRjaGVySGFuZGxlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9y
Q2FudmFzQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgewpAQCAtNjEsNyArNjIsNyBAQCBwdWJsaWM6
CiAgICAgfQogICAgIH5JbnNwZWN0b3JDYW52YXNBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lk
IGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJ
REU7CiAKICAgICB2b2lkIGZyYW1lTmF2aWdhdGVkKEZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IGM2NzIxNDIuLjhlMjdlOGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuY3BwCkBAIC00MCw2
ICs0MCw4IEBACiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlw
dFZhbHVlLmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogYm9vbCBJbnNwZWN0b3JDbGllbnQ6OmRvRGlzcGF0Y2hNZXNzYWdlT25Gcm9udGVu
ZFBhZ2UoUGFnZSogZnJvbnRlbmRQYWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggNDRlN2VhMTZhLi5kZjM4
OWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaWZuZGVmIEluc3BlY3RvckNsaWVudF9oCiAjZGVmaW5lIEluc3BlY3Rv
ckNsaWVudF9oCiAKKyNpbmNsdWRlICJJbnNwZWN0b3JGb3J3YXJkaW5nLmgiCiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CkBAIC0zNCw3ICszNSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEluc3BlY3RvckNvbnRyb2xsZXI7Ci1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CiBj
bGFzcyBGcmFtZTsKIGNsYXNzIFBhZ2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKaW5kZXggZGFhOWM1Yi4uMzk0M2U5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5j
cHAKQEAgLTUxLDYgKzUxLDggQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1h
eGltdW1Db25zb2xlTWVzc2FnZXMgPSAxMDAwOwpAQCAtNTksNyArNjEsNyBAQCBzdGF0aWMgY29u
c3QgaW50IGV4cGlyZUNvbnNvbGVNZXNzYWdlc1N0ZXAgPSAxMDA7CiBpbnQgSW5zcGVjdG9yQ29u
c29sZUFnZW50OjpzX2VuYWJsZWRBZ2VudENvdW50ID0gMDsKIAogSW5zcGVjdG9yQ29uc29sZUFn
ZW50OjpJbnNwZWN0b3JDb25zb2xlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cywgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIp
Ci0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJDb25zb2xlIiksIGluc3Ry
dW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJD
b25zb2xlIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFu
YWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBtX3ByZXZpb3VzTWVzc2FnZSgwKQog
ICAgICwgbV9leHBpcmVkQ29uc29sZU1lc3NhZ2VDb3VudCgwKQpAQCAtMTIyLDcgKzEyNCw3IEBA
IHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpyZXNldCgpCiAgICAgbV9jb3VudHMuY2xlYXIo
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JD
b25zb2xlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXI+KGZy
b250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckNvbnNv
bGVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaAppbmRl
eCBjMGYwYWRjLi4yZmU5OTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29uc29sZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnNvbGVBZ2VudC5oCkBAIC0yOSw5ICsyOSwxMCBAQAogCiAjaW5jbHVkZSAiQ29u
c29sZUFQSVR5cGVzLmgiCiAjaW5jbHVkZSAiQ29uc29sZVR5cGVzLmgiCi0jaW5jbHVkZSAiSW5z
cGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJz
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0
ZS5oIgorI2luY2x1ZGUgIkluc3BlY3RvckFnZW50QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KQEAgLTUyLDcgKzUzLDcgQEAgY2xhc3MgU2NyaXB0UHJvZmlsZTsKIAogdHlwZWRlZiBT
dHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckNvbnNvbGVBZ2VudCA6IHB1Ymxp
YyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JDb25zb2xlQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckNvbnNvbGVBZ2VudCA6IHB1YmxpYyBJbnNw
ZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JDb25zb2xlQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JDb25zb2xlQWdlbnQp
OwogcHVibGljOgogICAgIEluc3BlY3RvckNvbnNvbGVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRz
KiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKik7CkBAIC02NCw3ICs2NSw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KICAgICB2b2lkIHJl
c2V0KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIHZvaWQgYWRkTWVzc2FnZVRvQ29u
c29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIEpTQzo6RXhlY1N0YXRlKiwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+
LCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyID0gMCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggZTIzZmUwNy4uODBk
MzMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmNwcApAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgIkluc3BlY3RvckFnZW50LmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ1NTQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JD
YW52YXNBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgpAQCAtNzMsNiArNzIs
OSBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNs
dWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlci5oPgorCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5oCmluZGV4IGE2ZTJkN2QuLmY2ZTZkODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtMzMsMTMgKzMzLDE4IEBACiAKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIgotI2lu
Y2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0
b3JBZ2VudFJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNzIEluc3Bl
Y3Rvck9iamVjdDsKK2NsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKK2NsYXNzIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IERPTVdyYXBwZXJXb3JsZDsKQEAgLTQ4LDE1ICs1MywxMiBAQCBjbGFzcyBHcmFwaGljc0NvbnRl
eHQ7CiBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBJbnNwZWN0b3JBZ2VudDsK
IGNsYXNzIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDsKLWNsYXNzIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOwogY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwogY2xhc3MgSW5zcGVjdG9y
RE9NQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OwogY2xhc3MgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDsKLWNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKIGNsYXNz
IEluc3BlY3RvckZyb250ZW5kQ2xpZW50OwogY2xhc3MgSW5zcGVjdG9yTWVtb3J5QWdlbnQ7Ci1j
bGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnNwZWN0b3JPdmVybGF5OwogY2xhc3MgSW5z
cGVjdG9yUGFnZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDsKQEAgLTk1LDcg
Kzk3LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzTG9jYWxGcm9udGVuZCgpIGNvbnN0OwogICAg
IGJvb2wgaGFzUmVtb3RlRnJvbnRlbmQoKSBjb25zdDsKIAotICAgIHZvaWQgY29ubmVjdEZyb250
ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCopOworICAgIHZvaWQgY29ubmVjdEZyb250ZW5k
KEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKik7CiAgICAgdm9pZCBkaXNjb25u
ZWN0RnJvbnRlbmQoKTsKICAgICB2b2lkIHNldFByb2Nlc3NJZChsb25nKTsKIApAQCAtMTExLDcg
KzExMyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SW5kaWNhdGluZyhib29sKTsKIAotICAg
IFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9k
ZSgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGJ1
aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlKCkgY29uc3Q7CiAKICAgICBib29sIGlzVW5kZXJU
ZXN0KCk7CiAgICAgdm9pZCBldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGxvbmcgY2FsbElkLCBj
b25zdCBTdHJpbmcmIHNjcmlwdCk7CkBAIC0xNTQsMTIgKzE1NiwxMiBAQCBwcml2YXRlOgogICAg
IEluc3BlY3RvclByb2ZpbGVyQWdlbnQqIG1fcHJvZmlsZXJBZ2VudDsKICNlbmRpZgogCi0gICAg
UmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2luc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOworICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
PiBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwogICAgIE93blB0cjxJbnNwZWN0b3JGcm9u
dGVuZENsaWVudD4gbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudDsKLSAgICBJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOworICAgIEluc3BlY3Rvcjo6
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKICAg
ICBQYWdlKiBtX3BhZ2U7CiAgICAgSW5zcGVjdG9yQ2xpZW50KiBtX2luc3BlY3RvckNsaWVudDsK
LSAgICBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5IG1fYWdlbnRzOworICAgIEluc3BlY3Rvcjo6SW5z
cGVjdG9yQWdlbnRSZWdpc3RyeSBtX2FnZW50czsKICAgICBib29sIG1faXNVbmRlclRlc3Q7CiAK
ICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDM3MDM0MzguLjY1YTMxN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtMTAxLDYg
KzEwMSw4IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC0yMTAsNyArMjEy
LDcgQEAgU3RyaW5nIEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKGNvbnN0IEV4Y2Vw
dGlvbkNvZGUmIGVjKQogfQogCiBJbnNwZWN0b3JET01BZ2VudDo6SW5zcGVjdG9yRE9NQWdlbnQo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFn
ZW50KiBwYWdlQWdlbnQsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLCBJbnNwZWN0b3JPdmVybGF5KiBvdmVybGF5LCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkK
LSAgICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIkRPTSIpLCBpbnN0cnVtZW50
aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiRE9NIiks
IGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCiAgICAg
LCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBt
X292ZXJsYXkob3ZlcmxheSkKQEAgLTIzMCw3ICsyMzIsNyBAQCBJbnNwZWN0b3JET01BZ2VudDo6
fkluc3BlY3RvckRPTUFnZW50KCkKICAgICBBU1NFUlQoIW1fc2VhcmNoaW5nRm9yTm9kZSk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNr
ZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91
bmlxdWU8SW5zcGVjdG9yRE9NRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwog
ICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JET01CYWNrZW5kRGlzcGF0Y2hlcjo6
Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTUFnZW50LmgKaW5kZXggYTVkNjBiYy4uNDE4NDNhZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTMzLDEzICszMywx
MyBAQAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQu
aCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKLSNpbmNsdWRlICJJbnNwZWN0
b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudEJhc2UuaCIKKyNpbmNsdWRl
ICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9u
dGVuZC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvck92ZXJsYXkuaCIKLSNpbmNsdWRlICJJbnNwZWN0
b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlRpbWVyLmgi
Ci0KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3Rm
L0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgpAQCAtODksNyArODksNyBAQCBzdHJ1Y3QgRXZlbnRMaXN0ZW5lckluZm8gewogICAgIGNv
bnN0IEV2ZW50TGlzdGVuZXJWZWN0b3IgZXZlbnRMaXN0ZW5lclZlY3RvcjsKIH07CiAKLWNsYXNz
IEluc3BlY3RvckRPTUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIElu
c3BlY3RvckRPTUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JET01B
Z2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JET01CYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3Rv
ckRPTUFnZW50KTsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgRE9NTGlzdGVuZXIgewpAQCAtMTEwLDcg
KzExMCw3IEBAIHB1YmxpYzoKIAogICAgIH5JbnNwZWN0b3JET01BZ2VudCgpOwogCi0gICAgdmly
dHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5k
KCkgT1ZFUlJJREU7CiAKICAgICBWZWN0b3I8RG9jdW1lbnQqPiBkb2N1bWVudHMoKTsKQEAgLTEz
MCwyOCArMTMwLDI4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0T3V0ZXJIVE1MKEVy
cm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBvdXRlckhUTUwpOwogICAgIHZp
cnR1YWwgdm9pZCBzZXROb2RlVmFsdWUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBT
dHJpbmcmIHZhbHVlKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2Rl
KEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgV1RGOjpTdHJpbmcqIG9iamVjdEdyb3Vw
LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlzdGVu
ZXI+PiYgbGlzdGVuZXJzQXJyYXkpOwotICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtU2VhcmNoKEVy
cm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5LCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBub2RlSWRzLCBTdHJpbmcqIHNlYXJjaElkLCBpbnQqIHJl
c3VsdENvdW50KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVNlYXJjaChFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYgd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQXJyYXk+KiBub2RlSWRzLCBTdHJpbmcqIHNlYXJjaElkLCBpbnQqIHJl
c3VsdENvdW50KTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0U2VhcmNoUmVzdWx0cyhFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgc2VhcmNoSWQsIGludCBmcm9tSW5kZXgsIGludCB0b0luZGV4LCBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PGludD4+Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpc2Nh
cmRTZWFyY2hSZXN1bHRzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCk7CiAg
ICAgdmlydHVhbCB2b2lkIHJlc29sdmVOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29u
c3QgU3RyaW5nKiBvYmplY3RHcm91cCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+JiByZXN1bHQpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRBdHRyaWJ1dGVzKEVycm9y
U3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiYg
cmVzdWx0KTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0SW5zcGVjdE1vZGVFbmFibGVkKEVycm9yU3Ry
aW5nKiwgYm9vbCBlbmFibGVkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogaGlnaGxp
Z2h0Q29uZmlnKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SW5zcGVjdE1vZGVFbmFibGVkKEVycm9y
U3RyaW5nKiwgYm9vbCBlbmFibGVkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+KiBoaWdobGlnaHRDb25maWcpOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Tm9kZShF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGludCogbm9kZUlkKTsKICAgICB2
aXJ0dWFsIHZvaWQgcHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKEVycm9yU3RyaW5nKiwgY29uc3Qg
U3RyaW5nJiBwYXRoLCBpbnQqIG5vZGVJZCk7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hOb2RlQnlC
YWNrZW5kSWRUb0Zyb250ZW5kKEVycm9yU3RyaW5nKiwgQmFja2VuZE5vZGVJZCwgaW50KiBub2Rl
SWQpOwogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlQmFja2VuZE5vZGVJZHMoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIG5vZGVHcm91cCk7CiAgICAgdmlydHVhbCB2b2lkIGhpZGVIaWdobGln
aHQoRXJyb3JTdHJpbmcqKTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0UmVjdChFcnJvclN0
cmluZyosIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBv
dXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcyk7Ci0gICAgdmlydHVh
bCB2b2lkIGhpZ2hsaWdodFF1YWQoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9y
QXJyYXk+JiBxdWFkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBh
Z2VDb29yZGluYXRlcyk7Ci0gICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodE5vZGUoRXJyb3JTdHJp
bmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgaGlnaGxpZ2h0Q29uZmlnLCBjb25z
dCBpbnQqIG5vZGVJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RJZCk7Ci0gICAgdmlydHVhbCB2b2lk
IGhpZ2hsaWdodEZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+KiBvdXRsaW5lQ29sb3IpOworICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHRSZWN0KEVy
cm9yU3RyaW5nKiwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIGNvbG9yLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBh
Z2VDb29yZGluYXRlcyk7CisgICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodFF1YWQoRXJyb3JTdHJp
bmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mIHF1YWQsIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIGNvbG9yLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVz
ZVBhZ2VDb29yZGluYXRlcyk7CisgICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodE5vZGUoRXJyb3JT
dHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBoaWdobGln
aHRDb25maWcsIGNvbnN0IGludCogbm9kZUlkLCBjb25zdCBTdHJpbmcqIG9iamVjdElkKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0RnJhbWUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcm
IGZyYW1lSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIGNvbG9y
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29sb3Ip
OwogCiAgICAgdmlydHVhbCB2b2lkIG1vdmVUbyhFcnJvclN0cmluZyosIGludCBub2RlSWQsIGlu
dCB0YXJnZXROb2RlSWQsIGNvbnN0IGludCogYW5jaG9yTm9kZUlkLCBpbnQqIG5ld05vZGVJZCk7
CiAgICAgdmlydHVhbCB2b2lkIHVuZG8oRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQg
cmVkbyhFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBtYXJrVW5kb2FibGVTdGF0ZShF
cnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBmb2N1cyhFcnJvclN0cmluZyosIGludCBu
b2RlSWQpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRGaWxlSW5wdXRGaWxlcyhFcnJvclN0cmluZyos
IGludCBub2RlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGZpbGVzKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0RmlsZUlucHV0RmlsZXMoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mIGZpbGVzKTsKIAogICAgIHZv
aWQgZ2V0RXZlbnRMaXN0ZW5lcnMoTm9kZSosIFZlY3RvcjxFdmVudExpc3RlbmVySW5mbz4mIGxp
c3RlbmVyc0FycmF5LCBib29sIGluY2x1ZGVBbmNlc3RvcnMpOwogCkBAIC0yMTAsOCArMjEwLDgg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JET01BZ2VudChJbnN0cnVtZW50aW5n
QWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSW5z
cGVjdG9yT3ZlcmxheSosIEluc3BlY3RvckNsaWVudCopOwogCi0gICAgdm9pZCBzZXRTZWFyY2hp
bmdGb3JOb2RlKEVycm9yU3RyaW5nKiwgYm9vbCBlbmFibGVkLCBJbnNwZWN0b3JPYmplY3QqIGhp
Z2hsaWdodENvbmZpZyk7Ci0gICAgUGFzc093blB0cjxIaWdobGlnaHRDb25maWc+IGhpZ2hsaWdo
dENvbmZpZ0Zyb21JbnNwZWN0b3JPYmplY3QoRXJyb3JTdHJpbmcqLCBJbnNwZWN0b3JPYmplY3Qq
IGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7CisgICAgdm9pZCBzZXRTZWFyY2hpbmdGb3JOb2Rl
KEVycm9yU3RyaW5nKiwgYm9vbCBlbmFibGVkLCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCog
aGlnaGxpZ2h0Q29uZmlnKTsKKyAgICBQYXNzT3duUHRyPEhpZ2hsaWdodENvbmZpZz4gaGlnaGxp
Z2h0Q29uZmlnRnJvbUluc3BlY3Rvck9iamVjdChFcnJvclN0cmluZyosIEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0KiBoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpOwogCiAgICAgLy8gTm9kZS1y
ZWxhdGVkIG1ldGhvZHMuCiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxOb2RlPiwgaW50PiBO
b2RlVG9JZE1hcDsKQEAgLTIyNiw3ICsyMjYsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBoYXNC
cmVha3BvaW50KE5vZGUqLCBpbnQgdHlwZSk7CiAgICAgdm9pZCB1cGRhdGVTdWJ0cmVlQnJlYWtw
b2ludHMoTm9kZSogcm9vdCwgdWludDMyX3Qgcm9vdE1hc2ssIGJvb2wgdmFsdWUpOwotICAgIHZv
aWQgZGVzY3JpcHRpb25Gb3JET01FdmVudChOb2RlKiB0YXJnZXQsIGludCBicmVha3BvaW50VHlw
ZSwgYm9vbCBpbnNlcnRpb24sIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkZXNjcmlwdGlv
bik7CisgICAgdm9pZCBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KE5vZGUqIHRhcmdldCwgaW50IGJy
ZWFrcG9pbnRUeXBlLCBib29sIGluc2VydGlvbiwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdD4gZGVzY3JpcHRpb24pOwogCiAgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6
RE9NOjpOb2RlPiBidWlsZE9iamVjdEZvck5vZGUoTm9kZSosIGludCBkZXB0aCwgTm9kZVRvSWRN
YXAqKTsKICAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBidWlsZEFy
cmF5Rm9yRWxlbWVudEF0dHJpYnV0ZXMoRWxlbWVudCopOwpAQCAtMjM3LDcgKzIzNyw3IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIGRpc2NhcmRCaW5kaW5ncygpOwogCi0gICAgdm9pZCBpbm5lckhp
Z2hsaWdodFF1YWQoUGFzc093blB0cjxGbG9hdFF1YWQ+LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29s
b3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcyk7CisgICAgdm9pZCBpbm5lckhpZ2hs
aWdodFF1YWQoUGFzc093blB0cjxGbG9hdFF1YWQ+LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0Piogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0ZXMpOwog
CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAgICBJbmplY3RlZFNjcmlw
dE1hbmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDg5ZmY2
ZTkuLjIxNjBmNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTQwLDggKzQwLDggQEAKICNpbmNsdWRlICJJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJJbnNwZWN0
b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCisjaW5jbHVkZSA8
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgewpAQCAtNjEsNiArNjEsOCBAQCBjb25zdCBpbnQgZG9tQnJlYWtw
b2ludERlcml2ZWRUeXBlU2hpZnQgPSAxNjsKIAogfQogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NPd25QdHI8SW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudD4gSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6Y3JlYXRlKEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2Vu
dCwgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCwgSW5zcGVjdG9yQWdlbnQq
IGluc3BlY3RvckFnZW50KQpAQCAtNjksNyArNzEsNyBAQCBQYXNzT3duUHRyPEluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQ+IEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmNyZWF0ZShJbnN0cnVt
ZQogfQogCiBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvckRP
TUFnZW50KiBkb21BZ2VudCwgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCwg
SW5zcGVjdG9yQWdlbnQqKQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgi
RE9NRGVidWdnZXIiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50
QmFzZShBU0NJSUxpdGVyYWwoIkRPTURlYnVnZ2VyIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAg
ICAgLCBtX2RvbUFnZW50KGRvbUFnZW50KQogICAgICwgbV9kZWJ1Z2dlckFnZW50KGRlYnVnZ2Vy
QWdlbnQpCiAgICAgLCBtX3BhdXNlSW5OZXh0RXZlbnRMaXN0ZW5lcihmYWxzZSkKQEAgLTExMSw3
ICsxMTMsNyBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoKQogICAg
IGNsZWFyKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmRE
aXNwYXRjaGVyKQogewogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JET01EZWJ1
Z2dlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50LmgKaW5kZXggOTZmODhhOS4uMDUwNmQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCkBAIC0zMywyNiArMzMs
MzAgQEAKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEUoSU5TUEVD
VE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckFnZW50QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgSW5z
cGVjdG9yIHsKK2NsYXNzIEluc3BlY3Rvck9iamVjdDsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBFbGVtZW50OwogY2xhc3MgSW5zcGVjdG9yQWdlbnQ7CiBjbGFzcyBJbnNwZWN0
b3JET01BZ2VudDsKIGNsYXNzIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0
b3JPYmplY3Q7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgTm9kZTsKIAogdHlw
ZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6TGlzdGVuZXIsIHB1YmxpYyBJbnNwZWN0b3JET01EZWJ1Z2dlckJhY2tlbmREaXNwYXRj
aGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50IDogcHVibGljIElu
c3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okxpc3RlbmVy
LCBwdWJsaWMgSW5zcGVjdG9yRE9NRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQpOwogcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ+IGNy
ZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yRE9NQWdlbnQqLCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50KiwgSW5zcGVjdG9yQWdlbnQqKTsKQEAgLTc5LDcgKzgzLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgd2lsbFNlbmRYTUxIdHRwUmVxdWVzdChjb25zdCBTdHJpbmcmIHVybCk7CiAg
ICAgdm9pZCBwYXVzZU9uTmF0aXZlRXZlbnRJZk5lZWRlZChib29sIGlzRE9NRXZlbnQsIGNvbnN0
IFN0cmluZyYgZXZlbnROYW1lLCBib29sIHN5bmNocm9ub3VzKTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkQWdlbnQoKTsKIApAQCAtOTMsNyArOTcsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZSgpOwogICAgIHZvaWQgZGlzYWJs
ZSgpOwogCi0gICAgdm9pZCBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KE5vZGUqIHRhcmdldCwgaW50
IGJyZWFrcG9pbnRUeXBlLCBib29sIGluc2VydGlvbiwgSW5zcGVjdG9yT2JqZWN0KiBkZXNjcmlw
dGlvbik7CisgICAgdm9pZCBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KE5vZGUqIHRhcmdldCwgaW50
IGJyZWFrcG9pbnRUeXBlLCBib29sIGluc2VydGlvbiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3QqIGRlc2NyaXB0aW9uKTsKICAgICB2b2lkIHVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhOb2Rl
KiwgdWludDMyX3Qgcm9vdE1hc2ssIGJvb2wgc2V0KTsKICAgICBib29sIGhhc0JyZWFrcG9pbnQo
Tm9kZSosIGludCB0eXBlKTsKICAgICB2b2lkIGRpc2NhcmRCaW5kaW5ncygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcApp
bmRleCA2NDZkZTIzLi5hZTg2NzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcApAQCAtNDEsNyArNDEsNiBAQAogI2lu
Y2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNp
bmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlBhZ2VHcm91cC5oIgpAQCAtNTAsMTMgKzQ5LDE1IEBACiAjaW5jbHVkZSAiU3RvcmFnZUFy
ZWEuaCIKICNpbmNsdWRlICJTdG9yYWdlTmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiVm9pZENhbGxi
YWNrLmgiCi0KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6SW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3Bl
Y3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJ
TGl0ZXJhbCgiRE9NU3RvcmFnZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVj
dG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiRE9NU3RvcmFnZSIpLCBpbnN0cnVtZW50aW5nQWdl
bnRzKQogICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQogICAgICwgbV9lbmFibGVkKGZhbHNl
KQogewpAQCAtNjksNyArNzAsNyBAQCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6On5JbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQoKQogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cyA9IDA7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JET01TdG9yYWdlRnJvbnRlbmREaXNwYXRjaGVyPihm
cm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JET01T
dG9yYWdlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50LmgKaW5kZXggMmNkMTdiMy4uZjExYjhhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaApAQCAtMjksMjcgKzI5LDMwIEBA
CiAjaWZuZGVmIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudF9oCiAjZGVmaW5lIEluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudF9oCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNs
dWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJl
YS5oIgorI2luY2x1ZGUgIkluc3BlY3RvckFnZW50QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFzcyBJbnNwZWN0b3JBcnJh
eTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZTsKLWNsYXNzIEluc3Bl
Y3RvckFycmF5OwogY2xhc3MgSW5zcGVjdG9yRE9NU3RvcmFnZUZyb250ZW5kRGlzcGF0Y2hlcjsK
IGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBj
bGFzcyBQYWdlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTdG9yYWdlOwotY2xhc3Mg
U3RvcmFnZUFyZWE7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMg
SW5zcGVjdG9yRE9NU3RvcmFnZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMg
SW5zcGVjdG9yRE9NU3RvcmFnZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50PiBjcmVhdGUoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50
KiBwYWdlQWdlbnQpCiAgICAgewpAQCAtNTcsMTUgKzYwLDE1IEBAIHB1YmxpYzoKICAgICB9CiAg
ICAgfkluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
LCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAK
ICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgZnJvbnQtZW5kLgogICAgIHZpcnR1YWwgdm9pZCBlbmFi
bGUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyop
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRET01TdG9yYWdlSXRlbXMoRXJyb3JTdHJpbmcqLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgc3RvcmFnZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkFycmF5PFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+Pj4mIGl0ZW1zKTsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0RE9NU3RvcmFnZUl0ZW0oRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiYgc3RvcmFnZUlkLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2
YWx1ZSk7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZURPTVN0b3JhZ2VJdGVtKEVycm9yU3RyaW5n
KiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHN0b3JhZ2VJZCwgY29uc3QgU3RyaW5n
JiBrZXkpOworICAgIHZpcnR1YWwgdm9pZCBnZXRET01TdG9yYWdlSXRlbXMoRXJyb3JTdHJpbmcq
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBzdG9yYWdlSWQsIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+PiYgaXRl
bXMpOworICAgIHZpcnR1YWwgdm9pZCBzZXRET01TdG9yYWdlSXRlbShFcnJvclN0cmluZyosIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIHN0b3JhZ2VJZCwgY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpOworICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVET01TdG9yYWdlSXRlbShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdD4mIHN0b3JhZ2VJZCwgY29uc3QgU3RyaW5nJiBrZXkpOwogCiAgICAgLy8g
Q2FsbGVkIGZyb20gdGhlIGluamVjdGVkIHNjcmlwdC4KICAgICBTdHJpbmcgc3RvcmFnZUlkKFN0
b3JhZ2UqKTsKQEAgLTc4LDcgKzgxLDcgQEAgcHJpdmF0ZToKIAogICAgIEluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7CiAK
LSAgICBQYXNzUmVmUHRyPFN0b3JhZ2VBcmVhPiBmaW5kU3RvcmFnZUFyZWEoRXJyb3JTdHJpbmcq
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYsIEZyYW1lKiYpOworICAgIFBhc3NSZWZQ
dHI8U3RvcmFnZUFyZWE+IGZpbmRTdG9yYWdlQXJlYShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mLCBGcmFtZSomKTsKIAogICAgIEluc3BlY3Rv
clBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckRP
TVN0b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCmlu
ZGV4IGM1ODAwZWEuLmFlNmFjYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKQEAgLTM3LDggKzM3LDYgQEAKICNpbmNsdWRl
ICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JEYXRhYmFz
ZVJlc291cmNlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKLQotI2luY2x1ZGUg
Ikluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNp
bmNsdWRlICJTUUxFcnJvci5oIgogI2luY2x1ZGUgIlNRTFJlc3VsdFNldC5oIgpAQCAtNTAsMTEg
KzQ4LDEzIEBACiAjaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmgiCiAjaW5j
bHVkZSAiU1FMVmFsdWUuaCIKICNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKLQorI2luY2x1ZGUg
PGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
IHR5cGVkZWYgV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXI6OkV4ZWN1dGVTUUxDYWxsYmFjayBFeGVjdXRlU1FMQ2FsbGJhY2s7CiAKK3VzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIHsKQEAg
LTIxMSw3ICsyMTEsNyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmNsZWFyUmVzb3Vy
Y2VzKCkKIH0KIAogSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6SW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQotICAgIDogSW5zcGVj
dG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiRGF0YWJhc2UiKSwgaW5zdHJ1bWVudGluZ0FnZW50
cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkRhdGFiYXNlIiksIGlu
c3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX2VuYWJsZWQoZmFsc2UpCiB7CiAgICAgbV9pbnN0
cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JEYXRhYmFzZUFnZW50KHRoaXMpOwpAQCAtMjIy
LDcgKzIyMiw3IEBAIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6On5JbnNwZWN0b3JEYXRhYmFzZUFn
ZW50KCkKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckRhdGFiYXNlQWdl
bnQoMCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3Bh
dGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRhdGFiYXNlRnJvbnRlbmREaXNwYXRj
aGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0
b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRo
aXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFi
YXNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFn
ZW50LmgKaW5kZXggYTMyZjA2NC4uNzEyYzNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCkBAIC0zMSwyMiArMzEsMjYgQEAKIAog
I2lmIEVOQUJMRShJTlNQRUNUT1IpICYmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKLSNpbmNsdWRl
ICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgorI2luY2x1ZGUgIkluc3Bl
Y3RvckFnZW50QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNw
YWNlIEluc3BlY3RvciB7CitjbGFzcyBJbnNwZWN0b3JBcnJheTsKK30KKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBEYXRhYmFzZTsKLWNsYXNzIEluc3BlY3RvckFycmF5OwogY2xhc3Mg
SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZTsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiAK
IHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JEYXRhYmFzZUFn
ZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3RvckRhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckRhdGFiYXNlQWdlbnQg
OiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yRGF0YWJhc2VCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPElu
c3BlY3RvckRhdGFiYXNlQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzKQogICAgIHsKQEAgLTU0LDcgKzU4LDcgQEAgcHVibGljOgogICAgIH0KICAg
ICB+SW5zcGVjdG9yRGF0YWJhc2VBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJ
bnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKICAg
ICB2b2lkIGNsZWFyUmVzb3VyY2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAKaW5kZXggOWQ0YjczZi4uM2JhZjg4
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNl
UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRh
YmFzZVJlc291cmNlLmNwcApAQCAtMzYsNyArMzYsOSBAQAogCiAjaW5jbHVkZSAiRGF0YWJhc2Uu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZh
bHVlcy5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KKwordXNpbmcg
bmFtZXNwYWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXgg
YWMyYjcwZS4uMWY3NzJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtMzgsMTEgKzM4LDExIEBACiAjaW5jbHVkZSAi
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1
ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiUmVndWxh
ckV4cHJlc3Npb24uaCIKICNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5oIgogI2luY2x1ZGUg
IlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogdXNpbmcgV2ViQ29yZTo6VHlwZUJ1
aWxkZXI6OkFycmF5OwpAQCAtNTAsMTIgKzUwLDE0IEBAIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWls
ZGVyOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzOwogdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxk
ZXI6OkRlYnVnZ2VyOjpTY3JpcHRJZDsKIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q7CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY29uc3QgY2hhciogSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YmFj
a3RyYWNlT2JqZWN0R3JvdXAgPSAiYmFja3RyYWNlIjsKIAogSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikK
LSAgICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIkRlYnVnZ2VyIiksIGluc3Ry
dW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJE
ZWJ1Z2dlciIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9wYXVzZWRTY3JpcHRTdGF0ZSgw
KQogICAgICwgbV9jb250aW51ZVRvTG9jYXRpb25CcmVha3BvaW50SUQobm9CcmVha3BvaW50SUQp
CkBAIC0xMzYsNyArMTM4LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaXNhYmxl
KEVycm9yU3RyaW5nKikKICAgICBkaXNhYmxlKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2Vu
ZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRl
bmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIp
CiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rv
ckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFj
a2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JEZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVh
dGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggNGJlNjAwMC4uYTQxY2ZlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5o
CkBAIC0zMSwxNiArMzEsMTggQEAKICNkZWZpbmUgSW5zcGVjdG9yRGVidWdnZXJBZ2VudF9oCiAK
ICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFKElOU1BFQ1RPUikKKwog
I2luY2x1ZGUgIkJyZWFrcG9pbnRJRC5oIgogI2luY2x1ZGUgIkNvbnNvbGVBUElUeXBlcy5oIgog
I2luY2x1ZGUgIkNvbnNvbGVUeXBlcy5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCi0j
aW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRl
ICJTY3JpcHRCcmVha3BvaW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0RGVidWdMaXN0ZW5lci5oIgog
I2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU291cmNlSUQuaCIKKyNpbmNsdWRl
ICJJbnNwZWN0b3JBZ2VudEJhc2UuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTQ4LDE5
ICs1MCwyMiBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyOworbmFtZXNwYWNlIEluc3BlY3RvciB7CiBjbGFzcyBJbnNwZWN0b3JBcnJheTsK
IGNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3BlY3RvclZhbHVlOworfQorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKIGNsYXNzIElu
c3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBTY3JpcHREZWJ1Z1NlcnZlcjsKIGNsYXNzIFNjcmlw
dFZhbHVlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBTY3JpcHRE
ZWJ1Z0xpc3RlbmVyLCBwdWJsaWMgSW5zcGVjdG9yRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXIgeworY2xhc3MgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JB
Z2VudEJhc2UsIHB1YmxpYyBTY3JpcHREZWJ1Z0xpc3RlbmVyLCBwdWJsaWMgSW5zcGVjdG9yRGVi
dWdnZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEluc3BlY3RvckRlYnVnZ2VyQWdlbnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgY29uc3QgY2hhciogYmFja3RyYWNlT2JqZWN0R3JvdXA7CkBAIC03MSw3
ICs3Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2FuU2V0U2NyaXB0U291cmNlKEVy
cm9yU3RyaW5nKiwgYm9vbCopOwogICAgIHZpcnR1YWwgdm9pZCBzdXBwb3J0c1NlcGFyYXRlU2Ny
aXB0Q29tcGlsYXRpb25BbmRFeGVjdXRpb24oRXJyb3JTdHJpbmcqLCBib29sKik7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tl
bmQoKSBPVkVSUklERTsKIAogICAgIGJvb2wgaXNQYXVzZWQoKTsKQEAgLTgzLDEzICs4OCwxMyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0QnJlYWtwb2ludHNBY3RpdmUoRXJyb3JTdHJpbmcqLCBib29sIGFjdGl2
ZSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nKiwg
aW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyog
b3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBvcHRpb25hbENvbHVtbk51bWJlciwgY29uc3Qg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG9wdGlvbnMsIFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6
QnJlYWtwb2ludElkKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RGVi
dWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9ucyk7Ci0gICAgdmlydHVhbCB2b2lkIHNldEJyZWFr
cG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgbG9jYXRp
b24sIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvcHRpb25zLCBUeXBlQnVpbGRlcjo6
RGVidWdnZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6Okxv
Y2F0aW9uPiYgYWN0dWFsTG9jYXRpb24pOworICAgIHZpcnR1YWwgdm9pZCBzZXRCcmVha3BvaW50
QnlVcmwoRXJyb3JTdHJpbmcqLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nKiBvcHRpb25h
bFVSTCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFVSTFJlZ2V4LCBjb25zdCBpbnQqIG9wdGlvbmFs
Q29sdW1uTnVtYmVyLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBv
cHRpb25zLCBUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxUeXBl
QnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4+JiBsb2NhdGlv
bnMpOworICAgIHZpcnR1YWwgdm9pZCBzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nKiwgY29uc3Qg
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgbG9jYXRpb24sIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG9wdGlvbnMsIFR5cGVCdWlsZGVyOjpEZWJ1
Z2dlcjo6QnJlYWtwb2ludElkKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRp
b24+JiBhY3R1YWxMb2NhdGlvbik7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUJyZWFrcG9pbnQo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZGVudGlmaWVyKTsKLSAgICB2
aXJ0dWFsIHZvaWQgY29udGludWVUb0xvY2F0aW9uKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4mIGxvY2F0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgY29udGludWVU
b0xvY2F0aW9uKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0PiYgbG9jYXRpb24pOwogCiAgICAgdmlydHVhbCB2b2lkIHNlYXJjaEluQ29udGVudChF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIGNvbnN0IFN0cmluZyYgcXVlcnks
IGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJ
c1JlZ2V4LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpTZWFy
Y2hNYXRjaD4+Jik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNjcmlwdFNvdXJjZShFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudCwgY29u
c3QgYm9vbCogcHJldmlldywgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6
RGVidWdnZXI6OkNhbGxGcmFtZT4+JiBuZXdDYWxsRnJhbWVzLCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiYgcmVzdWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2NyaXB0U291cmNlKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBj
b25zdCBib29sKiBwcmV2aWV3LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVy
OjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4mIG5ld0NhbGxGcmFtZXMsIFJlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdD4mIHJlc3VsdCk7CiAgICAgdmlydHVhbCB2b2lkIGdldFNjcmlwdFNv
dXJjZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIFN0cmluZyogc2NyaXB0
U291cmNlKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5n
KiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2Vy
OjpGdW5jdGlvbkRldGFpbHM+Jik7CiAgICAgdmlydHVhbCB2b2lkIHBhdXNlKEVycm9yU3RyaW5n
Kik7CkBAIC0xMTIsOSArMTE3LDkgQEAgcHVibGljOgogICAgIHZvaWQgcnVuU2NyaXB0KEVycm9y
U3RyaW5nKiwgY29uc3QgVHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpTY3JpcHRJZCYsIGNvbnN0IGlu
dCogZXhlY3V0aW9uQ29udGV4dElkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBjb25zdCBi
b29sKiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIFJlZlB0cjxUeXBlQnVp
bGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0
cHV0PGJvb2w+KiB3YXNUaHJvd24pOwogICAgIHZpcnR1YWwgdm9pZCBzZXRPdmVybGF5TWVzc2Fn
ZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyopOwogCi0gICAgdm9pZCBzY2hlZHVsZVBhdXNl
T25OZXh0U3RhdGVtZW50KEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFz
b246OkVudW0gYnJlYWtSZWFzb24sIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhKTsK
KyAgICB2b2lkIHNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoSW5zcGVjdG9yRGVidWdnZXJG
cm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RW51bSBicmVha1JlYXNvbiwgUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gZGF0YSk7CiAgICAgdm9pZCBjYW5jZWxQYXVzZU9u
TmV4dFN0YXRlbWVudCgpOwotICAgIHZvaWQgYnJlYWtQcm9ncmFtKEluc3BlY3RvckRlYnVnZ2Vy
RnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkVudW0gYnJlYWtSZWFzb24sIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBkYXRhKTsKKyAgICB2b2lkIGJyZWFrUHJvZ3JhbShJbnNwZWN0b3JE
ZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpFbnVtIGJyZWFrUmVhc29uLCBQYXNz
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBkYXRhKTsKICAgICB2aXJ0dWFsIHZv
aWQgc2NyaXB0RXhlY3V0aW9uQmxvY2tlZEJ5Q1NQKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4
dCk7CiAKICAgICBjbGFzcyBMaXN0ZW5lciB7CkBAIC0xNjQsNyArMTY5LDcgQEAgcHJpdmF0ZToK
IAogICAgIHR5cGVkZWYgSGFzaE1hcDxTb3VyY2VJRCwgU2NyaXB0PiBTY3JpcHRzTWFwOwogICAg
IHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxCcmVha3BvaW50SUQ+PiBCcmVha3BvaW50
SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SURzTWFwOwotICAgIHR5cGVkZWYgSGFz
aE1hcDxTdHJpbmcsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+PiBCcmVha3BvaW50SWRlbnRpZmll
clRvQnJlYWtwb2ludE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+PiBCcmVha3BvaW50SWRlbnRpZmllclRvQnJlYWtwb2lu
dE1hcDsKIAogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRj
aGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKQEAgLTE3Niw3ICsxODEsNyBAQCBwcml2YXRlOgog
ICAgIEJyZWFrcG9pbnRJZGVudGlmaWVyVG9CcmVha3BvaW50TWFwIG1famF2YVNjcmlwdEJyZWFr
cG9pbnRzOwogICAgIEJyZWFrcG9pbnRJRCBtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJ
RDsKICAgICBJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpFbnVt
IG1fYnJlYWtSZWFzb247Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbV9icmVha0F1eERh
dGE7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBtX2JyZWFrQXV4RGF0
YTsKICAgICBib29sIG1fZW5hYmxlZDsKICAgICBib29sIG1famF2YVNjcmlwdFBhdXNlU2NoZWR1
bGVkOwogICAgIExpc3RlbmVyKiBtX2xpc3RlbmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZvcndhcmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGb3J3YXJkaW5nLmgKaW5kZXggZjYwNjU5NC4uZjY4ZmNkYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZvcndhcmRpbmcuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRm9yd2FyZGluZy5oCkBAIC0zMCw3
ICszMCw3IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwg
OiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgeyB9OwordHlwZWRl
ZiBJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCBJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWw7CiB9CiAKICNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JGb3J3YXJkaW5nX2gpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbC5jcHAKaW5kZXggODcxMWE4ZS4uMjViYzYzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNw
cApAQCAtNTksNiArNTksOCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgY2hhciogaW5zcGVjdG9yQXR0
YWNoZWRIZWlnaHRTZXR0aW5nID0gImluc3BlY3RvckF0dGFjaGVkSGVpZ2h0IjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKaW5kZXgg
YmUyNGUxZS4uNjg5ZDE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kSG9zdC5jcHAKQEAgLTU4LDYgKzU4LDggQEAKICNpbmNsdWRlICJVc2Vy
R2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAordXNp
bmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNwcAppbmRleCAwODE0YTBmLi44MmUxN2E4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVy
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJv
ZmlsZXJBZ2VudC5jcHAKQEAgLTM5LDYgKzM5LDggQEAKICNpbmNsdWRlICJJbnN0cnVtZW50aW5n
QWdlbnRzLmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZXIuaCIKIAordXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgY2hhciog
Y29uc3QgVXNlckluaXRpYXRlZFByb2ZpbGVOYW1lSGVhcCA9ICJvcmcud2Via2l0LnByb2ZpbGVz
LnVzZXItaW5pdGlhdGVkIjsKQEAgLTQ5LDcgKzUxLDcgQEAgUGFzc093blB0cjxJbnNwZWN0b3JI
ZWFwUHJvZmlsZXJBZ2VudD4gSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OmNyZWF0ZShJbnN0
cnUKIH0KIAogSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6Okluc3BlY3RvckhlYXBQcm9maWxl
ckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluamVjdGVk
U2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgIDogSW5zcGVjdG9yQmFz
ZUFnZW50KEFTQ0lJTGl0ZXJhbCgiSGVhcFByb2ZpbGVyIiksIGluc3RydW1lbnRpbmdBZ2VudHMp
CisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJIZWFwUHJvZmlsZXIiKSwg
aW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVj
dGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1fbmV4dFVzZXJJbml0aWF0ZWRIZWFwU25hcHNob3RO
dW1iZXIoMSkKICAgICAsIG1fcHJvZmlsZUhlYWRlcnNSZXF1ZXN0ZWQoZmFsc2UpCkBAIC04MCw3
ICs4Miw3IEBAIHZvaWQgSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OnJlc2V0RnJvbnRlbmRQ
cm9maWxlcygpCiAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXNldFByb2ZpbGVzKCk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0
b3JIZWFwUHJvZmlsZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9ySGVhcFByb2ZpbGVyRnJvbnRlbmRE
aXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJ
bnNwZWN0b3JIZWFwUHJvZmlsZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNw
YXRjaGVyLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckhlYXBQcm9maWxlckFnZW50LmgKaW5kZXggY2MzNjg2OC4uZDE3MDAwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50
LmgKQEAgLTMzLDggKzMzLDkgQEAKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAm
JiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisj
aW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yRnJvbnRlbmQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudEJhc2UuaCIKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CkBAIC00OSw3ICs1MCw3IEBAIGNsYXNzIFNjcmlwdFByb2ZpbGU7CiAK
IHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JIZWFwUHJvZmls
ZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JIZWFw
UHJvZmlsZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9ySGVhcFBy
b2ZpbGVyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9y
SGVhcFByb2ZpbGVyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckhlYXBQcm9maWxl
ckFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluamVjdGVkU2NyaXB0TWFuYWdl
ciopOwpAQCAtNjUsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldEhlYXBT
bmFwc2hvdChFcnJvclN0cmluZyosIGludCB1aWQpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVQ
cm9maWxlKEVycm9yU3RyaW5nKiwgaW50IHVpZCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCos
IEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAog
ICAgIHZpcnR1YWwgdm9pZCB0YWtlSGVhcFNuYXBzaG90KEVycm9yU3RyaW5nKiwgY29uc3QgYm9v
bCogcmVwb3J0UHJvZ3Jlc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXggYTAyNTcxMy4uZmVhZGFkZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
Y3BwCkBAIC02MSwxMCArNjEsOSBAQAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQu
aCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5n
QWdlbnRzLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLQorI2luY2x1ZGUgPGluc3Bl
Y3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIHVzaW5n
IFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpBcnJheTsKQEAgLTc2LDEyICs3NSwxNCBAQCB1c2luZyBX
ZWJDb3JlOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpLZXlSYW5nZTsKIHVzaW5nIFdlYkNvcmU6
OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlOwogdXNpbmcgV2ViQ29yZTo6VHlw
ZUJ1aWxkZXI6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmVJbmRleDsKIAordHlwZWRlZiBJbnNwZWN0
b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UgUmVxdWVzdENhbGxi
YWNrOwogdHlwZWRlZiBXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hl
ckhhbmRsZXI6OlJlcXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJhY2sgUmVxdWVzdERhdGFiYXNlTmFt
ZXNDYWxsYmFjazsKIHR5cGVkZWYgV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhlZERCQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyOjpSZXF1ZXN0RGF0YWJhc2VDYWxsYmFjayBSZXF1ZXN0RGF0YWJhc2VD
YWxsYmFjazsKIHR5cGVkZWYgV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhlZERCQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyOjpSZXF1ZXN0RGF0YUNhbGxiYWNrIFJlcXVlc3REYXRhQ2FsbGJhY2s7Ci10
eXBlZGVmIFdlYkNvcmU6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2Ug
UmVxdWVzdENhbGxiYWNrOwogdHlwZWRlZiBXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkNsZWFyT2JqZWN0U3RvcmVDYWxsYmFjayBDbGVhck9iamVj
dFN0b3JlQ2FsbGJhY2s7CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIHsKQEAgLTU1Nyw3ICs1NTgsNyBAQCBwdWJsaWM6CiB9
IC8vIG5hbWVzcGFjZQogCiBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6SW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3BlY3RvclBhZ2VBZ2Vu
dCogcGFnZUFnZW50KQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiSW5k
ZXhlZERCIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2Uo
QVNDSUlMaXRlcmFsKCJJbmRleGVkREIiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1fcGFn
ZUFnZW50KHBhZ2VBZ2VudCkKIHsKQEAgLTU2Nyw3ICs1NjgsNyBAQCBJbnNwZWN0b3JJbmRleGVk
REJBZ2VudDo6fkluc3BlY3RvckluZGV4ZWREQkFnZW50KCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0
b3JJbmRleGVkREJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0
Y2hlcikKK3ZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2JhY2tlbmREaXNw
YXRjaGVyID0gSW5zcGVjdG9ySW5kZXhlZERCQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNr
ZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCmluZGV4IGJhMzc1OWEuLjJiOTY4MTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5o
CkBAIC0zMyw3ICszMyw4IEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKSAmJiBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1
ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvckFn
ZW50QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQ0LDcgKzQ1LDcgQEAgY2xhc3MgSW5zcGVjdG9yUGFnZUFn
ZW50OwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9y
SW5kZXhlZERCQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckluZGV4
ZWREQkFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcklu
ZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NPd25QdHI8SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVk
U2NyaXB0TWFuYWdlciwgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQpCiAgICAgewpAQCAt
NTIsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIH5JbnNwZWN0b3JJbmRleGVkREJBZ2Vu
dCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJv
bnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgZnJv
bnQtZW5kLgpAQCAtNjAsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc2Fi
bGUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERhdGFiYXNlTmFtZXMo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBQYXNzUmVmUHRyPFJl
cXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJhY2s+KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERh
dGFiYXNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBkYXRhYmFzZU5hbWUsIFBhc3NSZWZQdHI8UmVxdWVzdERhdGFiYXNlQ2FsbGJhY2s+
KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERhdGEoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3Ry
aW5nJiBvYmplY3RTdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBpbnQgc2tpcENv
dW50LCBpbnQgcGFnZVNpemUsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBrZXlSYW5n
ZSwgUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YUNhbGxiYWNrPik7CisgICAgdmlydHVhbCB2b2lkIHJl
cXVlc3REYXRhKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgY29u
c3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBj
b25zdCBTdHJpbmcmIGluZGV4TmFtZSwgaW50IHNraXBDb3VudCwgaW50IHBhZ2VTaXplLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBrZXlSYW5nZSwgUGFzc1JlZlB0
cjxSZXF1ZXN0RGF0YUNhbGxiYWNrPik7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyT2JqZWN0U3Rv
cmUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGluX3NlY3VyaXR5T3JpZ2luLCBjb25zdCBT
dHJpbmcmIGluX2RhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBpbl9vYmplY3RTdG9yZU5hbWUs
IFBhc3NSZWZQdHI8Q2xlYXJPYmplY3RTdG9yZUNhbGxiYWNrPik7CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5wdXRBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5wdXRBZ2VudC5jcHAKaW5kZXgg
N2VjY2I4ZC4uYzRiODc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvcklucHV0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnB1dEFnZW50LmNwcApAQCAtNDksMTAgKzQ5LDEyIEBACiAjaW5jbHVkZSA8d3RmL0N1
cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK3VzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW5zcGVjdG9ySW5w
dXRBZ2VudDo6SW5zcGVjdG9ySW5wdXRBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBQYWdlKiBwYWdlKQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJ
TGl0ZXJhbCgiSW5wdXQiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFn
ZW50QmFzZShBU0NJSUxpdGVyYWwoIklucHV0IiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAg
LCBtX3BhZ2UocGFnZSkKIHsKIH0KQEAgLTYxLDcgKzYzLDcgQEAgSW5zcGVjdG9ySW5wdXRBZ2Vu
dDo6fkluc3BlY3RvcklucHV0QWdlbnQoKQogewogfQogCi12b2lkIEluc3BlY3RvcklucHV0QWdl
bnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
LCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIElu
c3BlY3RvcklucHV0QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBi
YWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9y
SW5wdXRCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnB1dEFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5wdXRBZ2VudC5oCmlu
ZGV4IGFjYmEyOTkuLmIwZDQwYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnB1dEFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvcklucHV0QWdlbnQuaApAQCAtMzMsOCArMzMsOCBAQAogCiAjaWYgRU5BQkxFKElOU1BF
Q1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgotCisjaW5jbHVkZSAiSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnRCYXNl
LmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQ0LDcgKzQ0LDcgQEAg
Y2xhc3MgUGFnZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3Bl
Y3RvcklucHV0QWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVj
dG9ySW5wdXRCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9ySW5wdXRB
Z2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JJbnB1dEJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVj
dG9ySW5wdXRBZ2VudCk7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9y
SW5wdXRBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIFBhZ2UqIHBhZ2UpCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAogICAgIH5JbnNwZWN0
b3JJbnB1dEFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIC8vIE1ldGhvZHMg
Y2FsbGVkIGZyb20gdGhlIGZyb250ZW5kIGZvciBzaW11bGF0aW5nIGlucHV0LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApp
bmRleCBjNGM1MWNiLi4xMTdkYjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtODMsNiArODMsOCBAQAogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHJlcXVlc3RBbmltYXRpb25GcmFtZUV2ZW50TmFtZSA9
ICJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKaW5kZXggZDI3ZjkwOS4uYzIwMDFjZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQuY3BwCkBAIC00NiwxMCArNDYsMTIgQEAKICNpbmNsdWRlICJSZW5kZXJMYXllckNvbXBv
c2l0b3IuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6
Okluc3BlY3RvckxheWVyVHJlZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJMYXllclRy
ZWUiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJ
SUxpdGVyYWwoIkxheWVyVHJlZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogewogfQogCkBAIC01
OCw3ICs2MCw3IEBAIEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojp+SW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQoKQogICAgIHJlc2V0KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6
OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZy
b250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRj
aGVyKQordm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5u
ZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAg
ICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yTGF5ZXJU
cmVlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERp
c3BhdGNoZXIgPSBJbnNwZWN0b3JMYXllclRyZWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJh
Y2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKaW5kZXggYWY1NWE5Mi4uNDg5M2Q5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgK
QEAgLTMxLDEwICszMSwxMSBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUg
Ikluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVycy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yVHlwZUJ1aWxkZXIuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUgIklu
c3BlY3RvckFnZW50QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC00Niw3ICs0
Nyw3IEBAIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9y
U3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JMYXllclRyZWVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0
b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JMYXllclRyZWVCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXIgeworY2xhc3MgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9y
QWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yTGF5ZXJUcmVlQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JMYXllclRyZWVB
Z2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCiAg
ICAgewpAQCAtNTQsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIH5JbnNwZWN0b3JMYXll
clRyZWVBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAgICAgdm9pZCByZXNldCgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNw
cAppbmRleCA3NThiN2I0Li5iNGVmMDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKQEAgLTQxLDEzICs0MSwxMyBAQAogI2luY2x1
ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIK
ICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUu
aCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5oIgogI2luY2x1
ZGUgIlNjcmlwdFByb2ZpbGVyLmgiCiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgorI2luY2x1
ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDxydW50aW1lL0FycmF5
QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL093
blB0ci5oPgpAQCAtNjEsMTMgKzYxLDE1IEBACiB0eXBlZGVmIFdlYkNvcmU6OlR5cGVCdWlsZGVy
OjpNZW1vcnk6Ok1lbW9yeUJsb2NrIEluc3BlY3Rvck1lbW9yeUJsb2NrOwogdHlwZWRlZiBXZWJD
b3JlOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IEluc3BlY3Rvck1l
bW9yeUJsb2NrczsKIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6fkluc3BlY3Rvck1lbW9yeUFnZW50KCkK
IHsKIH0KIAotdm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAg
ICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yTWVtb3J5QmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CkBAIC04NSw3ICs4Nyw3IEBAIHZv
aWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldERPTUNvdW50ZXJzKEVycm9yU3RyaW5nKiwgaW50
KiBkb2N1bWVudHMsIGludCogbm9kCiB9CiAKIEluc3BlY3Rvck1lbW9yeUFnZW50OjpJbnNwZWN0
b3JNZW1vcnlBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQot
ICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiTWVtb3J5IiksIGluc3RydW1l
bnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJNZW1v
cnkiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaAppbmRleCBlMTkxMGRlLi5iZTQ3ODI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaApA
QCAtMzMsOCArMzMsOCBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIklu
c3BlY3RvckJhc2VBZ2VudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisjaW5j
bHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9y
QWdlbnRCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAKQEAgLTQ1LDEzICs0NSwxMyBAQCBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRz
OwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yTWVtb3J5
QWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yTWVtb3J5
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3Rvck1lbW9yeUFnZW50IDog
cHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvck1lbW9yeUJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yTWVt
b3J5QWdlbnQpOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3Rvck1lbW9y
eUFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyk7
CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yTWVtb3J5QWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJS
SURFOwogCiAgICAgdmlydHVhbCB2b2lkIGdldERPTUNvdW50ZXJzKEVycm9yU3RyaW5nKiwgaW50
KiBkb2N1bWVudHMsIGludCogbm9kZXMsIGludCoganNFdmVudExpc3RlbmVycyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKaW5kZXggMjg2ODQxZi4u
ZmRhMmE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92
ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5
LmNwcApAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvck92ZXJsYXlQYWdl
LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgi
CiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTU4LDggKzU3LDExIEBA
CiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1
ZGUgIlN0eWxlZEVsZW1lbnQuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVz
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCit1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaAppbmRleCBlZjk5MjMwLi5i
NTI5MjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zl
cmxheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmgK
QEAgLTMyLDIwICszMiwyMiBAQAogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiRmxvYXRR
dWFkLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgotCiAjaW5jbHVkZSA8d3RmL093blB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAorbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CitjbGFzcyBJ
bnNwZWN0b3JWYWx1ZTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsK
IGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEluc3BlY3RvckNsaWVudDsKLWNsYXNzIElu
c3BlY3RvclZhbHVlOwotY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3MgSW50UmVjdDsKIGNs
YXNzIE5vZGU7CiBjbGFzcyBQYWdlOwpAQCAtMTI0LDcgKzEyNiw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgZGlkU2V0U2VhcmNoaW5nRm9yTm9kZShib29sIGVuYWJsZWQpOwogCi0gICAgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlKCkgY29u
c3Q7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmpl
Y3RGb3JIaWdobGlnaHRlZE5vZGUoKSBjb25zdDsKIAogICAgIHZvaWQgZnJlZVBhZ2UoKTsKIHBy
aXZhdGU6CkBAIC0xMzcsNyArMTM5LDcgQEAgcHJpdmF0ZToKICAgICBQYWdlKiBvdmVybGF5UGFn
ZSgpOwogICAgIHZvaWQgcmVzZXQoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBJ
bnRTaXplJiBmcmFtZVZpZXdGdWxsU2l6ZSk7CiAgICAgdm9pZCBldmFsdWF0ZUluT3ZlcmxheShj
b25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgU3RyaW5nJiBhcmd1bWVudCk7Ci0gICAgdm9pZCBl
dmFsdWF0ZUluT3ZlcmxheShjb25zdCBTdHJpbmcmIG1ldGhvZCwgUGFzc1JlZlB0cjxJbnNwZWN0
b3JWYWx1ZT4gYXJndW1lbnQpOworICAgIHZvaWQgZXZhbHVhdGVJbk92ZXJsYXkoY29uc3QgU3Ry
aW5nJiBtZXRob2QsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gYXJndW1l
bnQpOwogCiAgICAgUGFnZSogbV9wYWdlOwogICAgIEluc3BlY3RvckNsaWVudCogbV9jbGllbnQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmlu
ZGV4IDczZDkwNmQuLjgzNDc2YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC02Myw3ICs2Myw2IEBACiAjaW5jbHVkZSAiSW5zcGVj
dG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JPdmVybGF5LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgi
CiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIk1haW5GcmFtZS5o
IgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCkBAIC03Nyw2ICs3Niw3IEBACiAjaW5jbHVkZSAi
VGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1
ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3Rv
clZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9M
aXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTg3LDYgKzg3LDggQEAK
ICNpbmNsdWRlICJMZWdhY3lXZWJBcmNoaXZlLmgiCiAjZW5kaWYKIAordXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgYm9vbCBkZWNvZGVC
dWZmZXIoY29uc3QgY2hhciogYnVmZmVyLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUsIFN0cmluZyogcmVzdWx0KQpAQCAtMzQ4LDcgKzM1MCw3IEBAIFR5cGVC
dWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkVudW0gSW5zcGVjdG9yUGFnZUFnZW50OjpjYWNo
ZWRSZXNvdXJjZVR5cGVKc29uCiB9CiAKIEluc3BlY3RvclBhZ2VBZ2VudDo6SW5zcGVjdG9yUGFn
ZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIFBhZ2UqIHBh
Z2UsIEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3BlY3RvckNsaWVudCogY2xpZW50LCBJbnNwZWN0
b3JPdmVybGF5KiBvdmVybGF5KQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJh
bCgiUGFnZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNl
KEFTQ0lJTGl0ZXJhbCgiUGFnZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9wYWdl
KHBhZ2UpCiAgICAgLCBtX2luc3BlY3RvckFnZW50KGluc3BlY3RvckFnZW50KQogICAgICwgbV9p
bmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQpAQCAtMzY4LDcgKzM3
MCw3IEBAIEluc3BlY3RvclBhZ2VBZ2VudDo6SW5zcGVjdG9yUGFnZUFnZW50KEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5k
RGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hh
bm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewog
ICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JQYWdl
RnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3Bh
dGNoZXIgPSBJbnNwZWN0b3JQYWdlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlz
cGF0Y2hlciwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFn
ZUFnZW50LmgKaW5kZXggYzEyMTE0MS4uNWYwNTMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtMzUsMTUgKzM1LDIxIEBACiAKICNpbmNs
dWRlICJEZXZpY2VPcmllbnRhdGlvbkRhdGEuaCIKICNpbmNsdWRlICJHZW9sb2NhdGlvblBvc2l0
aW9uLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIK
ICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvckFnZW50QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5z
cGVjdG9yQXJyYXk7CitjbGFzcyBJbnNwZWN0b3JPYmplY3Q7Cit9CisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CkBAIC01NCw5ICs2MCw3IEBAIGNsYXNzIEZy
b250ZW5kOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOwogY2xhc3MgSW5zcGVjdG9yQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0b3JBcnJheTsKIGNsYXNz
IEluc3BlY3RvckNsaWVudDsKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3BlY3Rv
ck92ZXJsYXk7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgVVJMOwpAQCAtNjcs
NyArNzEsNyBAQCBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCiB0eXBlZGVmIFN0cmluZyBF
cnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50IDogcHVibGljIEluc3BlY3Rv
ckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3RvclBhZ2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIg
eworY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwg
cHVibGljIEluc3BlY3RvclBhZ2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEluc3BlY3RvclBhZ2VBZ2VudCk7CiBwdWJsaWM6CiAgICAgZW51bSBS
ZXNvdXJjZVR5cGUgewpAQCAtMTYyLDcgKzE2Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjcmlw
dHNFbmFibGVkKGJvb2wgaXNFbmFibGVkKTsKIAogICAgIC8vIEluc3BlY3RvciBDb250cm9sbGVy
IEFQSQotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250
ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgLy8gQ3Jvc3MtYWdlbnRzIEFQSQpAQCAt
MjE3LDcgKzIyMSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lnbm9yZVNjcmlwdHNFbmFibGVk
Tm90aWZpY2F0aW9uOwogICAgIGJvb2wgbV9zaG93UGFpbnRSZWN0czsKICAgICBTdHJpbmcgbV9l
bXVsYXRlZE1lZGlhOwotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1fc2NyaXB0c1RvRXZh
bHVhdGVPbkxvYWQ7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBtX3Nj
cmlwdHNUb0V2YWx1YXRlT25Mb2FkOwogICAgIFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBt
X2dlb2xvY2F0aW9uUG9zaXRpb247CiAgICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IG1f
cGxhdGZvcm1HZW9sb2NhdGlvblBvc2l0aW9uOwogICAgIFJlZlB0cjxEZXZpY2VPcmllbnRhdGlv
bkRhdGE+IG1fZGV2aWNlT3JpZW50YXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKaW5kZXggYmFmNTFmNC4uYmRiNDBjZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFn
ZW50LmNwcApAQCAtNDAsNyArNDAsNiBAQAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5o
IgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnNvbGVBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckZyb250ZW5kLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5z
dHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIK
QEAgLTUwLDEwICs0OSwxMyBAQAogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGUuaCIKICNpbmNsdWRl
ICJTY3JpcHRQcm9maWxlci5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdERlYnVnU2VydmVyLmgi
CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9D
dXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBVc2VySW5pdGlh
dGVkUHJvZmlsZU5hbWUgPSAib3JnLndlYmtpdC5wcm9maWxlcy51c2VyLWluaXRpYXRlZCI7CkBA
IC0xMTksNyArMTIxLDcgQEAgUGFzc093blB0cjxJbnNwZWN0b3JQcm9maWxlckFnZW50PiBJbnNw
ZWN0b3JQcm9maWxlckFnZW50OjpjcmVhdGUoSW5zdHJ1bWVudGluZ0EKIH0KIAogSW5zcGVjdG9y
UHJvZmlsZXJBZ2VudDo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JDb25zb2xlQWdlbnQqIGNvbnNvbGVBZ2Vu
dCwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgOiBJ
bnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJQcm9maWxlciIpLCBpbnN0cnVtZW50aW5n
QWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiUHJvZmlsZXIi
KSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fY29uc29sZUFnZW50KGNvbnNvbGVBZ2Vu
dCkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikK
ICAgICAsIG1fZW5hYmxlZChmYWxzZSkKQEAgLTMyNyw3ICszMjksNyBAQCB2b2lkIEluc3BlY3Rv
clByb2ZpbGVyQWdlbnQ6OnJlc2V0RnJvbnRlbmRQcm9maWxlcygpCiAgICAgICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyLT5yZXNldFByb2ZpbGVzKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUHJvZmls
ZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2Vu
ZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRl
bmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIp
CiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rv
clByb2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFj
a2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JQcm9maWxlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVh
dGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgKaW5kZXggNTM3MDljNS4uMWZhMDdjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5o
CkBAIC0zMiwyMCArMzIsMjQgQEAKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAm
JiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisj
aW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yRnJvbnRlbmQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudEJhc2UuaCIKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFzcyBJbnNw
ZWN0b3JBcnJheTsKK2NsYXNzIEluc3BlY3Rvck9iamVjdDsKK30KKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7Ci1jbGFzcyBJbnNwZWN0b3JBcnJh
eTsKIGNsYXNzIEluc3BlY3RvckNvbnNvbGVBZ2VudDsKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsK
IGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBQYWdlOwogY2xhc3MgU2NyaXB0SGVh
cFNuYXBzaG90OwpAQCAtNTQsNyArNTgsNyBAQCBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIAog
dHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvclByb2ZpbGVyQWdl
bnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yUHJvZmlsZXJC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudCA6
IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JQcm9maWxlckJhY2tl
bmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9y
UHJvZmlsZXJBZ2VudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0
YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvclByb2ZpbGVyQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50
aW5nQWdlbnRzKiwgSW5zcGVjdG9yQ29uc29sZUFnZW50KiwgUGFnZSosIEluamVjdGVkU2NyaXB0
TWFuYWdlciopOwpAQCAtODgsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdl
dEhlYXBTbmFwc2hvdChFcnJvclN0cmluZyosIGludCB1aWQpOwogICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVQcm9maWxlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB0eXBlLCBpbnQgdWlkKTsK
IAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIHRha2VIZWFwU25hcHNo
b3QoRXJyb3JTdHJpbmcqLCBjb25zdCBib29sKiByZXBvcnRQcm9ncmVzcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKaW5kZXgg
MzhkY2RhYS4uNWZhZGI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcApAQCAtNDgsNyArNDgsNiBAQAogI2luY2x1ZGUgIklu
c3BlY3RvckNsaWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAj
aW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgIk1lbW9yeUNhY2hlLmgiCkBAIC02NywxNiArNjYsMTggQEAKICNpbmNsdWRlICJTdWJyZXNv
dXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIldlYlNvY2tldEZyYW1lLmgiCiAjaW5jbHVkZSAiWE1M
SHR0cFJlcXVlc3QuaCIKLQorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4K
ICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+
CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAordXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEluc3BlY3RvclJlc291cmNl
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmRE
aXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5k
Q2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQog
ewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JO
ZXR3b3JrRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2Vu
ZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShi
YWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CkBAIC02NTAsNyArNjUxLDcgQEAgdm9pZCBJbnNwZWN0
b3JSZXNvdXJjZUFnZW50OjptYWluRnJhbWVOYXZpZ2F0ZWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRl
cikKIH0KIAogSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudChJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdl
bnQqIHBhZ2VBZ2VudCwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCi0gICAgOiBJbnNwZWN0b3JC
YXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJOZXR3b3JrIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisg
ICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJOZXR3b3JrIiksIGluc3RydW1l
bnRpbmdBZ2VudHMpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCiAgICAgLCBtX2NsaWVu
dChjbGllbnQpCiAgICAgLCBtX3Jlc291cmNlc0RhdGEoYWRvcHRQdHIobmV3IE5ldHdvcmtSZXNv
dXJjZXNEYXRhKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZUFnZW50LmgKaW5kZXggOGMyN2Y5NC4uMzI0ODc0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCkBAIC0zMSw5ICszMSw5
IEBACiAjaWZuZGVmIEluc3BlY3RvclJlc291cmNlQWdlbnRfaAogI2RlZmluZSBJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50X2gKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1
ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZy
b250ZW5kLmgiCi0KKyNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudEJhc2UuaCIKICNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgpAQCAtNDEsOCArNDEsOSBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
IAotbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBTdHJpbmc7CituYW1lc3BhY2UgSW5zcGVjdG9yIHsK
K2NsYXNzIEluc3BlY3RvckFycmF5OworY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogfQogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC01Myw5ICs1NCw3IEBAIGNsYXNzIERvY3VtZW50TG9hZGVyOwog
Y2xhc3MgRm9ybURhdGE7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUVFBIZWFkZXJNYXA7Ci1jbGFz
cyBJbnNwZWN0b3JBcnJheTsKIGNsYXNzIEluc3BlY3RvckNsaWVudDsKLWNsYXNzIEluc3BlY3Rv
ck9iamVjdDsKIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKIGNsYXNzIEluc3RydW1lbnRpbmdB
Z2VudHM7CiBjbGFzcyBVUkw7CkBAIC03Niw3ICs3NSw3IEBAIHN0cnVjdCBXZWJTb2NrZXRGcmFt
ZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvclJlc291
cmNlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yTmV0
d29ya0JhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvck5ldHdvcmtC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRy
PEluc3BlY3RvclJlc291cmNlQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5zcGVjdG9y
Q2xpZW50KiBjbGllbnQpCiAgICAgewpAQCAtODUsNyArODQsNyBAQCBwdWJsaWM6CiAKICAgICB+
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNw
ZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICB2
b2lkIHdpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9h
ZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RS
ZXNwb25zZSk7CkBAIC0xMzUsNyArMTM0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBl
bmFibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmlu
ZyopOwogICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VyQWdlbnRPdmVycmlkZShFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RXh0cmFIVFRQ
SGVhZGVycyhFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+Jik7Cisg
ICAgdmlydHVhbCB2b2lkIHNldEV4dHJhSFRUUEhlYWRlcnMoRXJyb3JTdHJpbmcqLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+Jik7CiAgICAgdmlydHVhbCB2b2lkIGdl
dFJlc3BvbnNlQm9keShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBTdHJp
bmcqIGNvbnRlbnQsIGJvb2wqIGJhc2U2NEVuY29kZWQpOwogCiAgICAgdmlydHVhbCB2b2lkIHJl
cGxheVhIUihFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKQEAgLTE2MCw3
ICsxNTksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9lbmFibGVkOwogICAgIGJvb2wgbV9jYWNo
ZURpc2FibGVkOwogICAgIGJvb2wgbV9sb2FkaW5nWEhSU3luY2hyb25vdXNseTsKLSAgICBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBtX2V4dHJhUmVxdWVzdEhlYWRlcnM7CisgICAgUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBtX2V4dHJhUmVxdWVzdEhlYWRlcnM7CiAKICAgICB0
eXBlZGVmIEhhc2hNYXA8VGhyZWFkYWJsZUxvYWRlckNsaWVudCosIFJlZlB0cjxYSFJSZXBsYXlE
YXRhPj4gUGVuZGluZ1hIUlJlcGxheURhdGFNYXA7CiAgICAgUGVuZGluZ1hIUlJlcGxheURhdGFN
YXAgbV9wZW5kaW5nWEhSUmVwbGF5RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggOGIzNDY5MC4uNmVhMmY5YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5j
cHAKQEAgLTM2LDggKzM2LDggQEAKIAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAjaW5j
bHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVz
LmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3dCYXNlLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0lu
c3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHBhcnNlci9QYXJzZXJFcnJvci5oPgogI2luY2x1
ZGUgPHBhcnNlci9Tb3VyY2VDb2RlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9Db21wbGV0aW9uLmg+
CkBAIC01MCw2ICs1MCw4IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKK3VzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGJvb2wgYXNC
b29sKGNvbnN0IGJvb2wqIGNvbnN0IGIpCkBAIC01OCw3ICs2MCw3IEBAIHN0YXRpYyBib29sIGFz
Qm9vbChjb25zdCBib29sKiBjb25zdCBiKQogfQogCiBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6Oklu
c3BlY3RvclJ1bnRpbWVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKLSAgICA6
IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIlJ1bnRpbWUiKSwgaW5zdHJ1bWVudGlu
Z0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIlJ1bnRpbWUi
KSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fZW5hYmxlZChmYWxzZSkKICAgICAsIG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKICNpZiBFTkFCTEUo
SkFWQVNDUklQVF9ERUJVR0dFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSdW50aW1lQWdlbnQuaAppbmRleCA5YjU3ZTJiLi4yMDgyYzNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCkBAIC0zMywyNSAr
MzMsMjkgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JC
YXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNp
bmNsdWRlICJTY3JpcHRTdGF0ZS5oIgorI2luY2x1ZGUgIkluc3BlY3RvckFnZW50QmFzZS5oIgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAK
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSW5qZWN0ZWRTY3JpcHQ7Ci1jbGFzcyBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI7CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIGNsYXNzIEluc3BlY3Rv
ckFycmF5OwogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3MgSW5zcGVjdG9yVmFsdWU7Cit9
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW5qZWN0ZWRTY3JpcHQ7CitjbGFzcyBJ
bmplY3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3Mg
U2NyaXB0RGVidWdTZXJ2ZXI7CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIAogdHlwZWRlZiBT
dHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvclJ1bnRpbWVBZ2VudCA6IHB1Ymxp
YyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JSdW50aW1lQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvclJ1bnRpbWVBZ2VudCA6IHB1YmxpYyBJbnNw
ZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JSdW50aW1lQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JSdW50aW1lQWdlbnQp
OwogcHVibGljOgogICAgIHZpcnR1YWwgfkluc3BlY3RvclJ1bnRpbWVBZ2VudCgpOwpAQCAtNzQs
NyArNzgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNhbGxGdW5jdGlvbk9uKEVycm9y
U3RyaW5nKiwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sCi0gICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBvcHRpb25h
bEFyZ3VtZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3RvckFycmF5Piogb3B0aW9uYWxBcmd1bWVudHMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sKiByZXR1cm5CeVZhbHVlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IDY3
NjYyMmIuLjcxNjAxNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yU3R5bGVTaGVldC5jcHAKQEAgLTQ5LDcgKzQ5LDYgQEAKICNpbmNsdWRlICJIVE1MU3R5bGVF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ1NTQWdlbnQuaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JQYWdlQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRl
ICJOb2RlLmgiCiAjaW5jbHVkZSAiUmVndWxhckV4cHJlc3Npb24uaCIKICNpbmNsdWRlICJTVkdO
YW1lcy5oIgpAQCAtNjAsNyArNTksNyBAQAogI2luY2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5o
IgogI2luY2x1ZGUgIlN0eWxlU2hlZXRMaXN0LmgiCiAjaW5jbHVkZSAiV2ViS2l0Q1NTS2V5ZnJh
bWVzUnVsZS5oIgotCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTE0NCw2ICsxNDMsOCBAQCBQYXNzUmVmUHRyPFdlYkNvcmU6
OkNTU1J1bGVTb3VyY2VEYXRhPiBQYXJzZWRTdHlsZVNoZWV0OjpydWxlU291cmNlRGF0YUF0KHVu
c2lnbgogICAgIHJldHVybiBtX3NvdXJjZURhdGEtPmF0KGluZGV4KTsKIH0KIAordXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIE1lZGlhTGlz
dFNvdXJjZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hl
ZXQuaAppbmRleCBmNTAzOWI0Li4zYjc5YjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgKQEAgLTMwLDggKzMwLDcgQEAKICNpbmNsdWRlICJF
eGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yU3R5bGVUZXh0RWRpdG9yLmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1
ZXMuaCIKLQorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KQEAgLTY0LDEyICs2MywxMiBAQCBwdWJsaWM6CiAgICAgewogICAgIH0K
IAotICAgIGV4cGxpY2l0IEluc3BlY3RvckNTU0lkKFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHZh
bHVlKQorICAgIGV4cGxpY2l0IEluc3BlY3RvckNTU0lkKFJlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdD4gdmFsdWUpCiAgICAgewogICAgICAgICBpZiAoIXZhbHVlLT5nZXRTdHJpbmco
InN0eWxlU2hlZXRJZCIsICZtX3N0eWxlU2hlZXRJZCkpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIAotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IG9yZGluYWxWYWx1ZSA9IHZh
bHVlLT5nZXQoIm9yZGluYWwiKTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
VmFsdWU+IG9yZGluYWxWYWx1ZSA9IHZhbHVlLT5nZXQoIm9yZGluYWwiKTsKICAgICAgICAgaWYg
KCFvcmRpbmFsVmFsdWUgfHwgIW9yZGluYWxWYWx1ZS0+YXNOdW1iZXIoJm1fb3JkaW5hbCkpCiAg
ICAgICAgICAgICBtX3N0eWxlU2hlZXRJZCA9ICIiOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlVGV4dEVkaXRvci5jcHAKaW5kZXggYjZl
YzRkYi4uZjMwOTlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclN0eWxlVGV4dEVkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclN0eWxlVGV4dEVkaXRvci5jcHAKQEAgLTMyLDYgKzMyLDggQEAKICNpbmNsdWRlICJI
VE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yU3R5bGVTaGVldC5oIgogCit1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEluc3Bl
Y3RvclN0eWxlVGV4dEVkaXRvcjo6SW5zcGVjdG9yU3R5bGVUZXh0RWRpdG9yKFZlY3RvcjxJbnNw
ZWN0b3JTdHlsZVByb3BlcnR5PiogYWxsUHJvcGVydGllcywgVmVjdG9yPEluc3BlY3RvclN0eWxl
UHJvcGVydHk+KiBkaXNhYmxlZFByb3BlcnRpZXMsIGNvbnN0IFN0cmluZyYgc3R5bGVUZXh0LCBj
b25zdCBOZXdMaW5lQW5kV2hpdGVzcGFjZSYgZm9ybWF0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IDRjODhiMWIuLjRi
MWM4YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1l
bGluZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudC5jcHAKQEAgLTU0LDYgKzU0LDggQEAKICNpbmNsdWRlICJUaW1lbGluZVJlY29y
ZEZhY3RvcnkuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAordXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIFRpbWVsaW5lVGlt
ZUNvbnZlcnRlcjo6cmVzZXQoKQpAQCAtNjUsNyArNjcsNyBAQCBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50Ojp+SW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFj
a2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJv
bnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNo
ZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3RvclRpbWVsaW5lRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1f
YmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JUaW1lbGluZUJhY2tlbmREaXNwYXRjaGVyOjpj
cmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpAQCAtNTgwLDcgKzU4Miw3IEBAIHZvaWQg
SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKFRpbWVsaW5l
UmVjb3JkVHlwZSB0eXBlKQogfQogCiBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJbnNwZWN0b3JU
aW1lbGluZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIElu
c3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBJbnNwZWN0b3JNZW1vcnlBZ2VudCogbWVtb3J5
QWdlbnQsIEluc3BlY3RvclR5cGUgdHlwZSwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCi0gICAg
OiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJUaW1lbGluZSIpLCBpbnN0cnVtZW50
aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiVGltZWxp
bmUiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkK
ICAgICAsIG1fbWVtb3J5QWdlbnQobWVtb3J5QWdlbnQpCiAgICAgLCBtX2lkKDEpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAppbmRleCA0
NWRjMmYzLi44ZmZhYTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JUaW1lbGluZUFnZW50LmgKQEAgLTMzLDEwICszMywxMSBAQAogCiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIklu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5k
LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5o
IgorI2luY2x1ZGUgIkluc3BlY3RvckFnZW50QmFzZS5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9J
bnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtMTIxLDcgKzEyMiw3
IEBAIHByaXZhdGU6CiB9OwogCiBjbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ci0gICAgOiBw
dWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50CisgICAgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNl
CiAgICAgLCBwdWJsaWMgSW5zcGVjdG9yVGltZWxpbmVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvclRpbWVsaW5lQWdlbnQpOwogcHVi
bGljOgpAQCAtMTM0LDcgKzEzNSw3IEBAIHB1YmxpYzoKIAogICAgIH5JbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBzdGFy
dChFcnJvclN0cmluZyosIGNvbnN0IGludCogbWF4Q2FsbFN0YWNrRGVwdGgsIGNvbnN0IGJvb2wq
IGluY2x1ZGVEb21Db3VudGVycyk7CkBAIC0yMjAsMzMgKzIyMSwzMyBAQCBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBUaW1lbGluZVJlY29yZFN0YWNrOwogCiAgICAgc3RydWN0IFRpbWVsaW5l
UmVjb3JkRW50cnkgewotICAgICAgICBUaW1lbGluZVJlY29yZEVudHJ5KFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiByZWNvcmQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhLCBQ
YXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBjaGlsZHJlbiwgVGltZWxpbmVSZWNvcmRUeXBlIHR5
cGUsIHNpemVfdCB1c2VkSGVhcFNpemVBdFN0YXJ0KQorICAgICAgICBUaW1lbGluZVJlY29yZEVu
dHJ5KFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHJlY29yZCwgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gZGF0YSwgUGFzc1JlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3RvckFycmF5PiBjaGlsZHJlbiwgVGltZWxpbmVSZWNvcmRUeXBlIHR5cGUsIHNp
emVfdCB1c2VkSGVhcFNpemVBdFN0YXJ0KQogICAgICAgICAgICAgOiByZWNvcmQocmVjb3JkKSwg
ZGF0YShkYXRhKSwgY2hpbGRyZW4oY2hpbGRyZW4pLCB0eXBlKHR5cGUpLCB1c2VkSGVhcFNpemVB
dFN0YXJ0KHVzZWRIZWFwU2l6ZUF0U3RhcnQpCiAgICAgICAgIHsKICAgICAgICAgfQotICAgICAg
ICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQ7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IGRhdGE7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gY2hpbGRyZW47
CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gcmVjb3JkOworICAg
ICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGRhdGE7CisgICAgICAgIFJl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiBjaGlsZHJlbjsKICAgICAgICAgVGltZWxp
bmVSZWNvcmRUeXBlIHR5cGU7CiAgICAgICAgIHNpemVfdCB1c2VkSGVhcFNpemVBdFN0YXJ0Owog
ICAgIH07CiAKICAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMq
LCBJbnNwZWN0b3JQYWdlQWdlbnQqLCBJbnNwZWN0b3JNZW1vcnlBZ2VudCosIEluc3BlY3RvclR5
cGUsIEluc3BlY3RvckNsaWVudCopOwogCi0gICAgdm9pZCBzZW5kRXZlbnQoUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+KTsKLSAgICB2b2lkIGFwcGVuZFJlY29yZChQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gZGF0YSwgVGltZWxpbmVSZWNvcmRUeXBlLCBib29sIGNhcHR1cmVDYWxsU3Rh
Y2ssIEZyYW1lKik7Ci0gICAgdm9pZCBwdXNoQ3VycmVudFJlY29yZChQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4sIFRpbWVsaW5lUmVjb3JkVHlwZSwgYm9vbCBjYXB0dXJlQ2FsbFN0YWNrLCBG
cmFtZSopOworICAgIHZvaWQgc2VuZEV2ZW50KFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3Q+KTsKKyAgICB2b2lkIGFwcGVuZFJlY29yZChQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0PiBkYXRhLCBUaW1lbGluZVJlY29yZFR5cGUsIGJvb2wgY2FwdHVyZUNh
bGxTdGFjaywgRnJhbWUqKTsKKyAgICB2b2lkIHB1c2hDdXJyZW50UmVjb3JkKFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+LCBUaW1lbGluZVJlY29yZFR5cGUsIGJvb2wgY2Fw
dHVyZUNhbGxTdGFjaywgRnJhbWUqKTsKIAogICAgIHZvaWQgc2V0RE9NQ291bnRlcnMoVHlwZUJ1
aWxkZXI6OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50KiByZWNvcmQpOwotICAgIHZvaWQgc2V0RnJh
bWVJZGVudGlmaWVyKEluc3BlY3Rvck9iamVjdCogcmVjb3JkLCBGcmFtZSopOworICAgIHZvaWQg
c2V0RnJhbWVJZGVudGlmaWVyKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiByZWNvcmQsIEZy
YW1lKik7CiAKICAgICB2b2lkIGRpZENvbXBsZXRlQ3VycmVudFJlY29yZChUaW1lbGluZVJlY29y
ZFR5cGUpOwogCi0gICAgdm9pZCBzZXRIZWFwU2l6ZVN0YXRpc3RpY3MoSW5zcGVjdG9yT2JqZWN0
KiByZWNvcmQpOworICAgIHZvaWQgc2V0SGVhcFNpemVTdGF0aXN0aWNzKEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0KiByZWNvcmQpOwogICAgIHZvaWQgY29tbWl0RnJhbWVSZWNvcmQoKTsKIAot
ICAgIHZvaWQgYWRkUmVjb3JkVG9UaW1lbGluZShQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4s
IFRpbWVsaW5lUmVjb3JkVHlwZSk7Ci0gICAgdm9pZCBpbm5lckFkZFJlY29yZFRvVGltZWxpbmUo
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+LCBUaW1lbGluZVJlY29yZFR5cGUpOworICAgIHZv
aWQgYWRkUmVjb3JkVG9UaW1lbGluZShQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0PiwgVGltZWxpbmVSZWNvcmRUeXBlKTsKKyAgICB2b2lkIGlubmVyQWRkUmVjb3JkVG9UaW1l
bGluZShQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiwgVGltZWxpbmVSZWNv
cmRUeXBlKTsKICAgICB2b2lkIGNsZWFyUmVjb3JkU3RhY2soKTsKIAogICAgIHZvaWQgbG9jYWxU
b1BhZ2VRdWFkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IExheW91dFJlY3QmLCBGbG9hdFF1
YWQqKTsKQEAgLTI2Niw3ICsyNjcsNyBAQCBwcml2YXRlOgogCiAgICAgaW50IG1faWQ7CiAgICAg
aW50IG1fbWF4Q2FsbFN0YWNrRGVwdGg7Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbV9w
ZW5kaW5nRnJhbWVSZWNvcmQ7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiBtX3BlbmRpbmdGcmFtZVJlY29yZDsKICAgICBJbnNwZWN0b3JUeXBlIG1faW5zcGVjdG9yVHlw
ZTsKICAgICBJbnNwZWN0b3JDbGllbnQqIG1fY2xpZW50OwogICAgIFdlYWtQdHJGYWN0b3J5PElu
c3BlY3RvclRpbWVsaW5lQWdlbnQ+IG1fd2Vha0ZhY3Rvcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAppbmRleCAzMjgwMWM2Li44ODQ1
NmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2Vy
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJB
Z2VudC5jcHAKQEAgLTM2LDEzICszNiwxNSBAQAogCiAjaW5jbHVkZSAiSW5zcGVjdG9yRm9yd2Fy
ZGluZy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCi0jaW5jbHVkZSAiSW5zcGVj
dG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlUHJveHkuaCIKKyNpbmNsdWRlIDxp
bnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5zcGVjdG9yV29ya2VyQWdlbnQ6Oldvcmtl
ckZyb250ZW5kQ2hhbm5lbCA6IHB1YmxpYyBXb3JrZXJHbG9iYWxTY29wZVByb3h5OjpQYWdlSW5z
cGVjdG9yIHsKQEAgLTEwNyw3ICsxMDksNyBAQCBQYXNzT3duUHRyPEluc3BlY3RvcldvcmtlckFn
ZW50PiBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6Y3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudAogfQog
CiBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6SW5zcGVjdG9yV29ya2VyQWdlbnQoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudChB
U0NJSUxpdGVyYWwoIldvcmtlciIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVj
dG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiV29ya2VyIiksIGluc3RydW1lbnRpbmdBZ2VudHMp
CiAgICAgLCBtX2VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX3Nob3VsZFBhdXNlRGVkaWNhdGVkV29y
a2VyT25TdGFydChmYWxzZSkKIHsKQEAgLTExOSw3ICsxMjEsNyBAQCBJbnNwZWN0b3JXb3JrZXJB
Z2VudDo6fkluc3BlY3RvcldvcmtlckFnZW50KCkKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMt
PnNldEluc3BlY3RvcldvcmtlckFnZW50KDApOwogfQogCi12b2lkIEluc3BlY3RvcldvcmtlckFn
ZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlz
cGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFu
bmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAg
ICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcldvcmtl
ckZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNw
YXRjaGVyID0gSW5zcGVjdG9yV29ya2VyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5k
RGlzcGF0Y2hlciwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yV29ya2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JXb3JrZXJBZ2VudC5oCmluZGV4IGFiNjIyMWEuLmRjOGU1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oCkBAIC0zMSwxMiArMzEsMTYg
QEAKICNpZm5kZWYgSW5zcGVjdG9yV29ya2VyQWdlbnRfaAogI2RlZmluZSBJbnNwZWN0b3JXb3Jr
ZXJBZ2VudF9oCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudEJh
c2UuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3MgSW5z
cGVjdG9yT2JqZWN0OworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnNwZWN0b3JX
b3JrZXJGcm9udGVuZERpc3BhdGNoZXI7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xh
c3MgVVJMOwpAQCAtNDQsMTIgKzQ4LDEyIEBAIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlUHJveHk7
CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JXb3JrZXJB
Z2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JXb3JrZXJC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yV29ya2VyQWdlbnQgOiBw
dWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yV29ya2VyQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0
b3JXb3JrZXJBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqKTsKICAgICB+SW5zcGVj
dG9yV29ya2VyQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3
aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgLy8gQ2FsbGVk
IGZyb20gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCkBAIC02Myw3ICs2Nyw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgY2FuSW5zcGVjdFdvcmtlcnMoRXJyb3JTdHJpbmcqLCBib29sKik7
CiAgICAgdmlydHVhbCB2b2lkIGNvbm5lY3RUb1dvcmtlcihFcnJvclN0cmluZyosIGludCB3b3Jr
ZXJJZCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3RGcm9tV29ya2VyKEVycm9yU3RyaW5n
KiwgaW50IHdvcmtlcklkKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb1dvcmtlcihF
cnJvclN0cmluZyosIGludCB3b3JrZXJJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4m
IG1lc3NhZ2UpOworICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZVRvV29ya2VyKEVycm9yU3Ry
aW5nKiwgaW50IHdvcmtlcklkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q+JiBtZXNzYWdlKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QXV0b2Nvbm5lY3RUb1dvcmtlcnMo
RXJyb3JTdHJpbmcqLCBib29sIHZhbHVlKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmNwcAppbmRleCA4Y2ZiMzI4Li42Mjhm
MTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0Fn
ZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2Vu
dHMuY3BwCkBAIC00MCw2ICs0MCw4IEBACiAjaW5jbHVkZSAiV29ya2VySW5zcGVjdG9yQ29udHJv
bGxlci5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW5zdHJ1bWVudGluZ0FnZW50czo6
SW5zdHJ1bWVudGluZ0FnZW50cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05l
dHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCA5NjlkMzBkLi41Y2NhNDQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTQ2
LDYgKzQ2LDggQEAgc3RhdGljIHNpemVfdCBtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUgPSAx
MDAgKiAxMDAwICogMTAwMDsKIHN0YXRpYyBzaXplX3QgbWF4aW11bVNpbmdsZVJlc291cmNlQ29u
dGVudFNpemUgPSAxMCAqIDEwMDAgKiAxMDAwOwogfQogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwCmluZGV4IGJjZDg5ZjIuLmE4OTAzZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHAKQEAgLTQyLDYgKzQy
LDggQEAKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAKK3Vz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFnZUNv
bnNvbGVBZ2VudDo6UGFnZUNvbnNvbGVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQsIEluamVjdGVkU2Ny
aXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnNwZWN0b3JET01BZ2VudCogZG9t
QWdlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2Vy
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNw
cAppbmRleCA4N2ZhYmVlLi4wNGQ0NzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9QYWdlRGVidWdnZXJBZ2VudC5jcHAKQEAgLTQxLDYgKzQxLDggQEAKICNpbmNsdWRlICJQYWdl
Q29uc29sZS5oIgogI2luY2x1ZGUgIlBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oIgogCit1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NPd25QdHI8
UGFnZURlYnVnZ2VyQWdlbnQ+IFBhZ2VEZWJ1Z2dlckFnZW50OjpjcmVhdGUoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdl
bnQsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnNwZWN0
b3JPdmVybGF5KiBvdmVybGF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1BhZ2VEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVn
Z2VyQWdlbnQuaAppbmRleCA1NTg2MzExLi5hNWY4MTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuaApAQCAtMzIsNiArMzIsNyBAQAogI2RlZmluZSBQ
YWdlRGVidWdnZXJBZ2VudF9oCiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYg
RU5BQkxFKElOU1BFQ1RPUikKKwogI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIK
ICNpbmNsdWRlICJQYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwCmluZGV4IDU3YjNiMzAuLjU0ODc2MzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKQEAgLTQ3
LDYgKzQ3LDggQEAKIAogdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkV4ZWN1
dGlvbkNvbnRleHREZXNjcmlwdGlvbjsKIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYWdlUnVudGltZUFnZW50OjpQYWdlUnVudGltZUFnZW50
KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluamVjdGVkU2NyaXB0
TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBQYWdlKiBwYWdlLCBJbnNwZWN0b3JQYWdl
QWdlbnQqIHBhZ2VBZ2VudCkKQEAgLTYzLDcgKzY1LDcgQEAgUGFnZVJ1bnRpbWVBZ2VudDo6flBh
Z2VSdW50aW1lQWdlbnQoKQogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0UGFnZVJ1bnRp
bWVBZ2VudCgwKTsKIH0KIAotdm9pZCBQYWdlUnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgUGFnZVJ1
bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9
IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yUnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJv
bnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yUnVudGlt
ZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmgKaW5kZXggZThiMzNiMi4u
Y2QwNGQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1l
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5o
CkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQ
YWdlUnVudGltZUFnZW50KGluc3RydW1lbnRpbmdBZ2VudHMsIGluamVjdGVkU2NyaXB0TWFuYWdl
ciwgcGFnZSwgcGFnZUFnZW50KSk7CiAgICAgfQogICAgIHZpcnR1YWwgflBhZ2VSdW50aW1lQWdl
bnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9u
dGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9y
U3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5jcHAKaW5kZXggODliOWEwYi4u
MzQ1YzA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3Vt
ZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5j
cHAKQEAgLTMzLDYgKzMzLDggQEAKIAogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAKK3VzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0
cjxTY3JpcHRBcmd1bWVudHM+IFNjcmlwdEFyZ3VtZW50czo6Y3JlYXRlKEpTQzo6RXhlY1N0YXRl
KiBzY3JpcHRTdGF0ZSwgVmVjdG9yPFNjcmlwdFZhbHVlPiYgYXJndW1lbnRzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcAppbmRleCAxYWJiZDc1Li42NmY3
OGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcApA
QCAtMzIsOSArMzIsMTEgQEAKICNpbmNsdWRlICJTY3JpcHRDYWxsRnJhbWUuaCIKIAogI2luY2x1
ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCisj
aW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBTY3JpcHRDYWxsRnJhbWU6OlNjcmlwdENhbGxGcmFtZShjb25zdCBTdHJpbmcmIGZ1bmN0
aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBzY3JpcHROYW1lLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1
bnNpZ25lZCBjb2x1bW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2Ny
aXB0Q2FsbEZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1l
LmgKaW5kZXggNjdmMGQzNi4uMjQyNTE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1NjcmlwdENhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9T
Y3JpcHRDYWxsRnJhbWUuaApAQCAtMzgsOSArMzgsMTEgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KK25hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworfQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcmlwdENhbGxGcmFtZSAgewogcHVibGlj
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcAppbmRleCBl
Njk0YmYxLi4zNmM1MDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2Ny
aXB0Q2FsbFN0YWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2Fs
bFN0YWNrLmNwcApAQCAtMzIsNyArMzIsOSBAQAogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5o
IgogCiAjaW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKLSNpbmNsdWRlICJJbnNwZWN0
b3JWYWx1ZXMuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oCmluZGV4IGUwZDdmZDUuLmQ4ZWMz
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2su
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmgKQEAgLTQy
LDggKzQyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbnNwZWN0b3JBcnJh
eTsKLQogY2xhc3MgU2NyaXB0Q2FsbFN0YWNrIDogcHVibGljIFJlZkNvdW50ZWQ8U2NyaXB0Q2Fs
bFN0YWNrPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhDYWxsU3RhY2tT
aXplVG9DYXB0dXJlID0gMjAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGlt
ZWxpbmVSZWNvcmRGYWN0b3J5LmNwcAppbmRleCA4YmFhYjllLi45ZjJmN2ZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcApAQCAt
MzYsMTUgKzM2LDE3IEBACiAKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkZsb2F0UXVh
ZC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIK
ICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5o
IgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCIKKyNpbmNsdWRlIDxpbnNwZWN0
b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKK3Vz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJp
Y1JlY29yZChkb3VibGUgc3RhcnRUaW1lLCBpbnQgbWF4Q2FsbFN0YWNrRGVwdGgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmgKaW5kZXggZGI0
NGIxZS4uZTRiZjkwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVs
aW5lUmVjb3JkRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGlu
ZVJlY29yZEZhY3RvcnkuaApAQCAtMzEsOSArMzEsOCBAQAogI2lmbmRlZiBUaW1lbGluZVJlY29y
ZEZhY3RvcnlfaAogI2RlZmluZSBUaW1lbGluZVJlY29yZEZhY3RvcnlfaAogCi0jaW5jbHVkZSAi
SW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiVVJMLmgiCi0jaW5jbHVkZSAiTGF5b3V0UmVj
dC5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00MSw2
NCArNDAsNjIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgRXZlbnQ7CiAgICAg
Y2xhc3MgRmxvYXRRdWFkOwotICAgIGNsYXNzIEluc3BlY3Rvck9iamVjdDsKLSAgICBjbGFzcyBJ
bnRSZWN0OwogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKICAgICBjbGFzcyBSZXNvdXJjZVJl
c3BvbnNlOwogCiAgICAgY2xhc3MgVGltZWxpbmVSZWNvcmRGYWN0b3J5IHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlR2VuZXJp
Y1JlY29yZChkb3VibGUgc3RhcnRUaW1lLCBpbnQgbWF4Q2FsbFN0YWNrRGVwdGgpOwotICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUJhY2tncm91bmRSZWNv
cmQoZG91YmxlIHN0YXJ0VGltZSwgY29uc3QgU3RyaW5nJiB0aHJlYWQpOworICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlR2VuZXJpY1Jl
Y29yZChkb3VibGUgc3RhcnRUaW1lLCBpbnQgbWF4Q2FsbFN0YWNrRGVwdGgpOworICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlQmFja2dy
b3VuZFJlY29yZChkb3VibGUgc3RhcnRUaW1lLCBjb25zdCBTdHJpbmcmIHRocmVhZCk7CiAKLSAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVHQ0V2ZW50RGF0
YShjb25zdCBzaXplX3QgdXNlZEhlYXBTaXplRGVsdGEpOworICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlR0NFdmVudERhdGEoY29uc3Qg
c2l6ZV90IHVzZWRIZWFwU2l6ZURlbHRhKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUZ1bmN0aW9uQ2FsbERhdGEoY29uc3QgU3RyaW5nJiBzY3Jp
cHROYW1lLCBpbnQgc2NyaXB0TGluZSk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVGdW5jdGlvbkNhbGxEYXRhKGNvbnN0IFN0cmlu
ZyYgc2NyaXB0TmFtZSwgaW50IHNjcmlwdExpbmUpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlRXZlbnREaXNwYXRjaERhdGEoY29uc3QgRXZlbnQm
KTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
IGNyZWF0ZUV2ZW50RGlzcGF0Y2hEYXRhKGNvbnN0IEV2ZW50Jik7CiAKLSAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVHZW5lcmljVGltZXJEYXRhKGludCB0
aW1lcklkKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+IGNyZWF0ZUdlbmVyaWNUaW1lckRhdGEoaW50IHRpbWVySWQpOwogCi0gICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlVGltZXJJbnN0YWxsRGF0YShp
bnQgdGltZXJJZCwgaW50IHRpbWVvdXQsIGJvb2wgc2luZ2xlU2hvdCk7CisgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVUaW1lckluc3Rh
bGxEYXRhKGludCB0aW1lcklkLCBpbnQgdGltZW91dCwgYm9vbCBzaW5nbGVTaG90KTsKIAotICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVhIUlJlYWR5U3Rh
dGVDaGFuZ2VEYXRhKGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgcmVhZHlTdGF0ZSk7CisgICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVYSFJS
ZWFkeVN0YXRlQ2hhbmdlRGF0YShjb25zdCBTdHJpbmcmIHVybCwgaW50IHJlYWR5U3RhdGUpOwog
Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlWEhSTG9h
ZERhdGEoY29uc3QgU3RyaW5nJiB1cmwpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlWEhSTG9hZERhdGEoY29uc3QgU3RyaW5nJiB1
cmwpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRl
RXZhbHVhdGVTY3JpcHREYXRhKGNvbnN0IFN0cmluZyYsIGRvdWJsZSBsaW5lTnVtYmVyKTsKKyAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0
ZUV2YWx1YXRlU2NyaXB0RGF0YShjb25zdCBTdHJpbmcmLCBkb3VibGUgbGluZU51bWJlcik7CiAK
LSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVUaW1lU3Rh
bXBEYXRhKGNvbnN0IFN0cmluZyYpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlVGltZVN0YW1wRGF0YShjb25zdCBTdHJpbmcmKTsK
IAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVJlc291
cmNlU2VuZFJlcXVlc3REYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3Q+IGNyZWF0ZVJlc291cmNlU2VuZFJlcXVlc3REYXRhKGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0RGF0YShj
b25zdCBTdHJpbmcmKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+IGNyZWF0ZVNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0RGF0YShjb25zdCBTdHJp
bmcmKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0
ZVJlc291cmNlUmVjZWl2ZVJlc3BvbnNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlUmVzb3VyY2VSZWNlaXZlUmVzcG9uc2VEYXRhKGNv
bnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKLSAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVSZWNlaXZlUmVzb3Vy
Y2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBpbnQgbGVuZ3RoKTsKKyAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVJlY2VpdmVS
ZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGludCBsZW5ndGgpOwogCi0gICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlUmVzb3VyY2VGaW5p
c2hEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBib29sIGRpZEZhaWwsIGRvdWJsZSBmaW5p
c2hUaW1lKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+IGNyZWF0ZVJlc291cmNlRmluaXNoRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwg
Ym9vbCBkaWRGYWlsLCBkb3VibGUgZmluaXNoVGltZSk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVMYXlvdXREYXRhKHVuc2lnbmVkIGRpcnR5T2Jq
ZWN0cywgdW5zaWduZWQgdG90YWxPYmplY3RzLCBib29sIHBhcnRpYWxMYXlvdXQpOworICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlTGF5
b3V0RGF0YSh1bnNpZ25lZCBkaXJ0eU9iamVjdHMsIHVuc2lnbmVkIHRvdGFsT2JqZWN0cywgYm9v
bCBwYXJ0aWFsTGF5b3V0KTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IGNyZWF0ZURlY29kZUltYWdlRGF0YShjb25zdCBTdHJpbmcmIGltYWdlVHlwZSk7Cisg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVh
dGVEZWNvZGVJbWFnZURhdGEoY29uc3QgU3RyaW5nJiBpbWFnZVR5cGUpOwogCi0gICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlUmVzaXplSW1hZ2VEYXRhKGJv
b2wgc2hvdWxkQ2FjaGUpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdD4gY3JlYXRlUmVzaXplSW1hZ2VEYXRhKGJvb2wgc2hvdWxkQ2FjaGUpOwog
Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlTWFya0Rh
dGEoYm9vbCBpc01haW5GcmFtZSk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVNYXJrRGF0YShib29sIGlzTWFpbkZyYW1lKTsKIAot
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVBhcnNlSFRN
TERhdGEodW5zaWduZWQgc3RhcnRMaW5lKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVBhcnNlSFRNTERhdGEodW5zaWduZWQgc3Rh
cnRMaW5lKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNy
ZWF0ZUFuaW1hdGlvbkZyYW1lRGF0YShpbnQgY2FsbGJhY2tJZCk7CisgICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVBbmltYXRpb25GcmFt
ZURhdGEoaW50IGNhbGxiYWNrSWQpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gY3JlYXRlUGFpbnREYXRhKGNvbnN0IEZsb2F0UXVhZCYpOworICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlUGFpbnRE
YXRhKGNvbnN0IEZsb2F0UXVhZCYpOwogCi0gICAgICAgIHN0YXRpYyB2b2lkIGFwcGVuZExheW91
dFJvb3QoSW5zcGVjdG9yT2JqZWN0KiBkYXRhLCBjb25zdCBGbG9hdFF1YWQmKTsKKyAgICAgICAg
c3RhdGljIHZvaWQgYXBwZW5kTGF5b3V0Um9vdChJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCog
ZGF0YSwgY29uc3QgRmxvYXRRdWFkJik7CiAKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi0gICAg
ICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVdlYlNv
Y2tldENyZWF0ZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBwcm90b2NvbCkKKyAgICAgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVXZWJTb2NrZXRDcmVhdGVEYXRhKHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJv
dG9jb2wpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRh
dGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOworICAgICAgICAgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBkYXRhID0gSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q6
OmNyZWF0ZSgpOwogICAgICAgICAgICAgZGF0YS0+c2V0TnVtYmVyKCJpZGVudGlmaWVyIiwgaWRl
bnRpZmllcik7CiAgICAgICAgICAgICBkYXRhLT5zZXRTdHJpbmcoInVybCIsIHVybC5zdHJpbmco
KSk7CiAgICAgICAgICAgICBpZiAoIXByb3RvY29sLmlzTnVsbCgpKQpAQCAtMTA2LDkgKzEwMyw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHJldHVybiBkYXRhLnJlbGVhc2Uo
KTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IGNyZWF0ZUdlbmVyaWNXZWJTb2NrZXREYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllcikKKyAgICAgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0PiBjcmVhdGVHZW5lcmljV2ViU29ja2V0RGF0YSh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRh
dGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOworICAgICAgICAgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBkYXRhID0gSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q6
OmNyZWF0ZSgpOwogICAgICAgICAgICAgZGF0YS0+c2V0TnVtYmVyKCJpZGVudGlmaWVyIiwgaWRl
bnRpZmllcik7CiAgICAgICAgICAgICByZXR1cm4gZGF0YS5yZWxlYXNlKCk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckNvbnNvbGVBZ2VudC5jcHAKaW5k
ZXggMTViYjdhOC4uNjY2YThkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1dvcmtlckNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dv
cmtlckNvbnNvbGVBZ2VudC5jcHAKQEAgLTM0LDYgKzM0LDggQEAKIAogI2luY2x1ZGUgIldvcmtl
ckNvbnNvbGVBZ2VudC5oIgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFdvcmtlckNvbnNvbGVBZ2VudDo6V29ya2VyQ29uc29sZUFnZW50KElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluamVjdGVkU2NyaXB0TWFu
YWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDcxMzZlNDYuLjk3ZDAwZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKQEAg
LTM4LDYgKzM4LDggQEAKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDx3dGYv
TWVzc2FnZVF1ZXVlLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBlZjIzMDM3Li43ZjVl
NzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCkBAIC01MSw4ICs1MSwxMSBAQAogI2luY2x1ZGUgIldvcmtlclJl
cG9ydGluZ1Byb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyUnVudGltZUFnZW50LmgiCiAjaW5jbHVk
ZSAiV29ya2VyVGhyZWFkLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAordXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
LmgKaW5kZXggNThiZGEyMC4uMWVmYjk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0zMywxOSArMzMsMjEgQEAK
IAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudFJlZ2lz
dHJ5LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVj
dG9yQWdlbnRCYXNlLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0
cnkuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAorbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFz
cyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7Ci1jbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcjsKLWNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKIGNsYXNzIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjsKIGNsYXNzIEluc3BlY3RvclJ1bnRpbWVBZ2VudDsKIGNsYXNzIElu
c3RydW1lbnRpbmdBZ2VudHM7CkBAIC03Miw5ICs3NCw5IEBAIHByaXZhdGU6CiAgICAgUmVmUHRy
PEluc3RydW1lbnRpbmdBZ2VudHM+IG1faW5zdHJ1bWVudGluZ0FnZW50czsKICAgICBPd25QdHI8
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKICAgICBJbnNw
ZWN0b3JSdW50aW1lQWdlbnQqIG1fcnVudGltZUFnZW50OwotICAgIEluc3BlY3RvckFnZW50UmVn
aXN0cnkgbV9hZ2VudHM7CisgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5IG1f
YWdlbnRzOwogICAgIE93blB0cjxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw+IG1fZnJvbnRlbmRD
aGFubmVsOwotICAgIFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5k
RGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggYjA3YjYzMy4uMWVmODM3MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAK
QEAgLTQyLDYgKzQyLDggQEAKICNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCiAjaW5jbHVkZSAi
V29ya2VyVGhyZWFkLmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogV29ya2VyUnVudGltZUFnZW50OjpXb3JrZXJSdW50aW1lQWdlbnQoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXJHbG9i
YWxTY29wZSkKQEAgLTU3LDcgKzU5LDcgQEAgV29ya2VyUnVudGltZUFnZW50Ojp+V29ya2VyUnVu
dGltZUFnZW50KCkKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldFdvcmtlclJ1bnRpbWVB
Z2VudCgwKTsKIH0KIAotdm9pZCBXb3JrZXJSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIFdvcmtlclJ1bnRpbWVBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewog
ICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JSdW50aW1lQmFja2VuZERpc3BhdGNo
ZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmgKaW5kZXggNjdkZTA4YS4uNWI2MjljMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaApAQCAt
NDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgfldvcmtlclJ1bnRpbWVB
Z2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95
RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICAvLyBQcm90b2NvbCBjb21tYW5k
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAppbmRl
eCAwYmU5Zjk4Li5jYzY2MzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRl
bnRTZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2Vj
dXJpdHlQb2xpY3kuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiRm9ybURhdGFMaXN0
LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlICJQaW5nTG9hZGVyLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5o
IgpAQCAtNDYsMTAgKzQ1LDEzIEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNs
dWRlICJTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiVGV4dEVuY29k
aW5nLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFBvc2l0aW9uLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gTm9ybWFsbHkgV2ViS2l0IHVzZXMgInN0YXRp
YyIgZm9yIGludGVybmFsIGxpbmthZ2UsIGJ1dCB1c2luZyAic3RhdGljIiBmb3IKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBjN2ViYzk3Li43YzRiM2QwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC02Myw3ICs2Myw2IEBACiAjaW5jbHVkZSAiSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oIgogI2luY2x1ZGUgIkluc3BlY3Rvck92ZXJsYXkuaCIKLSNpbmNsdWRlICJJbnNw
ZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVk
ZSAiSW50ZXJuYWxTZXR0aW5ncy5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKQEAgLTk2LDYgKzk1
LDcgQEAKICNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIldvcmtlclRo
cmVhZC5oIgogI2luY2x1ZGUgPGJ5dGVjb2RlL0NvZGVCbG9jay5oPgorI2luY2x1ZGUgPGluc3Bl
Y3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVmZmVyLmg+CkBAIC0xNjcsNiArMTY3LDggQEAgdXNpbmcgSlNDOjpKU1ZhbHVlOwogdXNpbmcg
SlNDOjpTY3JpcHRFeGVjdXRhYmxlOwogdXNpbmcgSlNDOjpTdGFja1Zpc2l0b3I7CiAKK3VzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyN2VhNGY0Li43ZTdmNjA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMTItMDUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29y
YXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVj
dG9yIFJlcXVpcmVkIENsYXNzZXMgRG93biBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJJbnNwZWN0b3IuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3IuaDoKKwogMjAxMy0xMi0wNCAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFtFRkxdW1dLMl0gQnVpbGRmaXggYWZ0ZXIgcjE2MDEwNApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAppbmRl
eCBhODkwZjViLi43NzM1ZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIldl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JDb250cm9sbGVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9J
bnNwZWN0b3JGb3J3YXJkaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVu
ZENsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9QYWdlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
SW5zcGVjdG9yLmgKaW5kZXggZTY0ZjZkMy4uNDJhZWM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaApAQCAtMzAsMTggKzMwLDE0IEBA
CiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGb3J3YXJkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLWNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKLX0KLQogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OwogY2xhc3MgV2Vi
UGFnZTsKLXN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwogCiBjbGFzcyBXZWJJbnNw
ZWN0b3IgOiBwdWJsaWMgQVBJOjpUeXBlZE9iamVjdDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxl
SW5zcGVjdG9yPiB7CiBwdWJsaWM6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218557</attachid>
            <date>2013-12-05 17:17:15 -0800</date>
            <delta_ts>2013-12-06 17:44:18 -0800</delta_ts>
            <desc>[PATCH] PART 2: ScriptObject, ScriptValue</desc>
            <filename>part-2-1.patch</filename>
            <type>text/plain</type>
            <size>164972</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">Y29tbWl0IGQwMzNhNTMyNmVmNzFlOWE0ZmU4NDI1NjI0ZmM5NzA1ZGQwNzlkNWUKQXV0aG9yOiBK
b3NlcGggUGVjb3Jhcm8gPHBlY29yYXJvQGFwcGxlLmNvbT4KRGF0ZTogICBXZWQgRGVjIDQgMTY6
MjU6MjggMjAxMyAtMDgwMAoKICAgIFBBUlQgMjogUHVzaCBEb3duIFNjcmlwdE9iamVjdCBhbmQg
U2NyaXB0VmFsdWUKCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYzIwMzdm
Yy4uOTA2OThhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNCw2ICs0
LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L0FQSSIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L0ZvcndhcmRp
bmdIZWFkZXJzIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYXNzZW1ibGVyIgorICAgICIk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vYmluZGluZ3MiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElS
fS9ieXRlY29kZSIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J5dGVjb21waWxlciIKICAg
ICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2RmZyIKQEAgLTQ1LDYgKzQ2LDkgQEAgc2V0KEphdmFT
Y3JpcHRDb3JlX1NPVVJDRVMKICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCiAgICAg
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNwcAogCisgICAgYmluZGluZ3MvU2Ny
aXB0T2JqZWN0LmNwcAorICAgIGJpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAorCiAgICAgYnl0ZWNv
ZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9BcnJheVByb2ZpbGUu
Y3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcApAQCAtNTg1LDYgKzU4OSw3
IEBAIGVuZGZvcmVhY2ggKCkKIAogc2V0KEphdmFTY3JpcHRDb3JlX0ZPUldBUkRJTkdfSEVBREVS
U19ESVJFQ1RPUklFUwogICAgIGFzc2VtYmxlcgorICAgIGJpbmRpbmdzCiAgICAgYnl0ZWNvZGUK
ICAgICBjb2xsZWN0b3IvaGFuZGxlcwogICAgIGRlYnVnZ2VyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZwppbmRleCA2ODc5NWI0Li4zMzI3ZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTYs
NiArNiwzNSBAQAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAogICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovY29weS1maWxlcy5jbWQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9TY3JpcHRPYmplY3QuY3Bw
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNw
cC4KKyAgICAgICAgKEpTQzo6U2NyaXB0T2JqZWN0OjpTY3JpcHRPYmplY3QpOgorICAgICAgICAq
IGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0T2JqZWN0LmguCisgICAgICAgIChKU0M6OlNjcmlwdE9iamVjdDo6U2Ny
aXB0T2JqZWN0KToKKyAgICAgICAgKEpTQzo6U2NyaXB0T2JqZWN0Ojpqc09iamVjdCk6CisgICAg
ICAgIChKU0M6OlNjcmlwdE9iamVjdDo6c2NyaXB0U3RhdGUpOgorICAgICAgICAqIGJpbmRpbmdz
L1NjcmlwdFZhbHVlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdFZhbHVlLmNwcC4KKyAgICAgICAgKEpTQzo6U2NyaXB0VmFsdWU6On5TY3JpcHRWYWx1
ZSk6CisgICAgICAgIChKU0M6OlNjcmlwdFZhbHVlOjpnZXRTdHJpbmcpOgorICAgICAgICAoSlND
OjpTY3JpcHRWYWx1ZTo6dG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpTY3JpcHRWYWx1ZTo6aXNF
cXVhbCk6CisgICAgICAgIChKU0M6OmpzVG9JbnNwZWN0b3JWYWx1ZSk6CisgICAgICAgIChKU0M6
OlNjcmlwdFZhbHVlOjp0b0luc3BlY3RvclZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9TY3Jp
cHRWYWx1ZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
VmFsdWUuaC4KKworMjAxMy0xMi0wNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUu
Y29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggTW9yZSBJbnNwZWN0b3IgUmVxdWly
ZWQgQ2xhc3NlcyBEb3duIGludG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTMyNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CiAgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbToKICAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2o6CiAgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZp
bGUuYW0KaW5kZXggMDg1ZmNhNy4uNzVkYmVlNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtl
ZmlsZS5hbQpAQCAtNTIsNiArNTIsNyBAQCBqYXZhc2NyaXB0Y29yZV9jcHBmbGFncyArPSBcCiAJ
LUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSSBcCiAJLUkkKHNyY2RpcikvU291
cmNlL0phdmFTY3JpcHRDb3JlL0ZvcndhcmRpbmdIZWFkZXJzIFwKIAktSSQoc3JjZGlyKS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyIFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYmluZGluZ3MgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZSBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggM2NjNDk1Ny4uNjJiYThj
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTk1LDYg
Kzk1LDEwIEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL1NINEFzc2VtYmxlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1g4NkFzc2VtYmxlci5oIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mv
U2NyaXB0T2JqZWN0LmNwcCBcCisgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Nj
cmlwdE9iamVjdC5oIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0
VmFsdWUuY3BwIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFs
dWUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5QWxsb2NhdGlvblBy
b2ZpbGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlBbGxvY2F0
aW9uUHJvZmlsZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9m
aWxlLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagppbmRleCA0ZmUx
NmYzLi4wZDBkNzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKQEAg
LTI5NCw2ICsyOTQsOCBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXE1h
Y3JvQXNzZW1ibGVyLmNwcCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEFQSVxKU0NU
ZXN0UnVubmVyVXRpbHMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFzc2VtYmxl
clxNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5jcHAiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxiaW5kaW5nc1xiaW5kaW5ncy9TY3JpcHRPYmplY3QuY3BwIiAvPgorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheVByb2ZpbGUu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQnl0ZWNvZGVCYXNp
Y0Jsb2NrLmNwcCIgLz4KQEAgLTc1MCw2ICs3NTIsOCBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cYXNzZW1ibGVyXE1hY3JvQXNzZW1ibGVyWDg2XzY0LmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcUmVwYXRjaEJ1ZmZlci5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXFg4NkFzc2VtYmxlci5oIiAvPgorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcYmluZGluZ3MvU2NyaXB0T2JqZWN0LmgiIC8+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0aW9uUHJv
ZmlsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlQcm9m
aWxlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxCeVZhbEluZm8u
aCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVy
cwppbmRleCAzM2FmYTkxLi44ZmRhMTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC00LDYgKzQsOSBAQAogICAgIDxGaWx0ZXIgSW5j
bHVkZT0iYXNzZW1ibGVyIj4KICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0Mjk3ODNhMS01ZDZh
LTQwMTktYWQxYS1kZGIyYzk4ZjliNmN9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVy
PgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iYmluZGluZ3MiPgorICAgICAgPFVuaXF1ZUlkZW50aWZp
ZXI+ezBiYWNlMTIzLTQ1ODItZWViYy05MzE0LTc4MTliMzc2YzE5OH08L1VuaXF1ZUlkZW50aWZp
ZXI+CisgICAgPC9GaWx0ZXI+CiAgICAgPEZpbHRlciBJbmNsdWRlPSJieXRlY29kZSI+CiAgICAg
ICA8VW5pcXVlSWRlbnRpZmllcj57NzY2MDg4YTAtMTIxNi00ODU0LWFhNDMtNTYwYzVlMjgzNjY4
fTwvVW5pcXVlSWRlbnRpZmllcj4KICAgICA8L0ZpbHRlcj4KQEAgLTEwNSw2ICsxMDgsMTIgQEAK
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxNYWNyb0Fzc2VtYmxlci5jcHAi
PgogICAgICAgPEZpbHRlcj5hc3NlbWJsZXI8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdE9iamVjdC5jcHAiPgorICAg
ICAgPEZpbHRlcj5iaW5kaW5nczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0VmFsdWUuY3BwIj4KKyAgICAgIDxGaWx0
ZXI+YmluZGluZ3M8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIj4KICAgICAgIDxG
aWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTEzOTcsNiArMTQw
NiwxMiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXFg4NkFzc2VtYmxl
ci5oIj4KICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRPYmplY3QuaCI+Cisg
ICAgICA8RmlsdGVyPmJpbmRpbmdzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRWYWx1ZS5oIj4KKyAgICAgIDxGaWx0
ZXI+YmluZGluZ3M8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCI+CiAgICAgICA8Rmls
dGVyPmJ5dGVjb2RlPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9jb3B5LWZpbGVzLmNtZCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL2NvcHktZmlsZXMu
Y21kCmluZGV4IGY3ZTQyOTQuLjg4MmNlODMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL2NvcHktZmlsZXMuY21kCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL2NvcHktZmlsZXMuY21kCkBAIC0z
OSw2ICszOSw3IEBAIGVjaG8gQ29weWluZyBwcml2YXRlIGhlYWRlcnMuLi4KIG1rZGlyICIlUHJp
dmF0ZUhlYWRlcnNEaXJlY3RvcnklIiAyPk5VTA0KIGZvciAlJWQgaW4gKA0KICAgICBhc3NlbWJs
ZXINCisgICAgYmluZGluZ3MNCiAgICAgYnl0ZWNvZGUNCiAgICAgZGZnDQogICAgIGRpc2Fzc2Vt
Ymxlcg0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTgxZTU5Ni4uYzVjNGUwNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg4OCw2ICs4ODgsMTAgQEAKIAkJQTE3
MTJCNDExMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJl
Z0V4cEtleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUExQTAwOUMwMTgzMUEyMkQwMENGODcxMSAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjQwOTIzQzE1NkVF
RDNCMDA1NjZDQjIgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAv
KiBBUk02NEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODY0MDkyM0IxNTZFRUQzQjAwNTY2Q0IyIC8qIEFSTTY0QXNzZW1ibGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTU0Q0YyRjUx
ODRFQUIyNDAwMjM3RjE5IC8qIFNjcmlwdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NENGMkYyMTg0RUFCMjQwMDIzN0YxOSAvKiBTY3Jp
cHRWYWx1ZS5jcHAgKi87IH07CisJCUE1NENGMkY2MTg0RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRW
YWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU0
Q0YyRjMxODRFQUIyNDAwMjM3RjE5IC8qIFNjcmlwdFZhbHVlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTU0Q0YyRjkxODRFQUVEQTAwMjM3RjE5
IC8qIFNjcmlwdE9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTRDRjJGNzE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2JqZWN0LmNwcCAq
LzsgfTsKKwkJQTU0Q0YyRkExODRFQUVEQTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU0Q0YyRjgxODRFQUVE
QTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUE1OTNDRjdDMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNTkzQ0Y3QTE4NDAzNjAzMDBCRkNFMjcgLyogSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIuY3BwICovOyB9OwogCQlBNTkzQ0Y3RDE4NDAzNjAzMDBCRkNFMjcgLyogSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE1OTNDRjdCMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUE1OTNDRjdGMTg0MDM2MkMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudEJhc2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OTNDRjdF
MTg0MDM2MkMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudEJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjIyMCw2ICsyMjI0LDEwIEBACiAJ
CUExNzEyQjNBMTFDN0IyMTIwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUExNzEyQjNFMTFDN0IyMjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBDYWNoZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMTcxMkI0MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhw
S2V5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cEtleS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTRDRjJGMjE4NEVBQjI0MDAyMzdGMTkgLyogU2Ny
aXB0VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0
VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTRDRjJGMzE4NEVBQjI0
MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2NyaXB0VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU0Q0YyRjcx
ODRFQUVEQTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTY3JpcHRPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBNTRDRjJGODE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2JqZWN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdE9iamVjdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNTkzQ0Y3QTE4NDAzNjAzMDBCRkNFMjcgLyogSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwOyBwYXRoID0gaW5zcGVjdG9yL0luc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU5
M0NGN0IxODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
Lmg7IHBhdGggPSBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU5M0NGN0UxODQwMzYyQzAwQkZDRTI3IC8qIEluc3Bl
Y3RvckFnZW50QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJbnNwZWN0
b3JBZ2VudEJhc2UuaDsgcGF0aCA9IGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3MjcsNiArMjczNSw3IEBACiAJCQkJQTdDMjI1
Q0MxMzk5ODFGMTAwRkYxNjYyIC8qIEtleXdvcmRMb29rdXBHZW5lcmF0b3IucHkgKi8sCiAJCQkJ
MTQzMkVCRDcwQTM0Q0FENDAwNzE3QjlGIC8qIEFQSSAqLywKIAkJCQk5Njg4Q0IxMjBFRDEyQjRF
MDAxRDY0OUYgLyogYXNzZW1ibGVyICovLAorCQkJCUE1NENGMkVBMTg0RUE3MzkwMDIzN0YxOSAv
KiBiaW5kaW5ncyAqLywKIAkJCQk5NjlBMDc4RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUg
Ki8sCiAJCQkJN0UzOUQ4MUQwRUMzOEVGQTAwM0FGMTFBIC8qIGJ5dGVjb21waWxlciAqLywKIAkJ
CQkxQzkwNTEzRTBCQTlFODgzMDA4MUU5RDAgLyogQ29uZmlndXJhdGlvbnMgKi8sCkBAIC00MTk0
LDYgKzQyMDMsMTcgQEAKIAkJCXBhdGggPSBieXRlY29kZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CiAJCX07CisJCUE1NENGMkVBMTg0RUE3MzkwMDIzN0YxOSAvKiBiaW5kaW5ncyAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQTU0Q0YyRjcxODRF
QUVEQTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5jcHAgKi8sCisJCQkJQTU0Q0YyRjgxODRFQUVE
QTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5oICovLAorCQkJCUE1NENGMkYyMTg0RUFCMjQwMDIz
N0YxOSAvKiBTY3JpcHRWYWx1ZS5jcHAgKi8sCisJCQkJQTU0Q0YyRjMxODRFQUIyNDAwMjM3RjE5
IC8qIFNjcmlwdFZhbHVlLmggKi8sCisJCQkpOworCQkJcGF0aCA9IGJpbmRpbmdzOworCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJQTVCQTE1REYxODIzNDA5MjAwQTgyRTY5IC8q
IGluc3BlY3RvciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBA
IC00NTAwLDYgKzQ1MjAsNyBAQAogCQkJCTBGQjEwNTg2MTY3NTQ4MTIwMEY4QUI2RSAvKiBFeGl0
S2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQUIxNEJDRjVCQjAwODg1QjRGIC8qIEV4
cHJlc3Npb25SYW5nZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjM4MTdBREI1RjMw
MDVBQjE3NCAvKiBGbG9hdDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1NENGMkY2MTg0
RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFG
MzkxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyNEU1NDMxN0VBOUY1OTAwQUJCMjE3IC8qIEZQUkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGREIyQ0M5MTczREE1MjAwMDdCM0MxQiAvKiBGVExBYmJyZXZpYXRlZFR5cGVzLmggaW4gSGVh
ZGVycyAqLywKQEAgLTQ4ODUsNiArNDkwNiw3IEBACiAJCQkJMEZEODJFNTQxNDFEQUVFRTAwMTc5
Qzk0IC8qIFNwZWN1bGF0ZWRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0MxRUFGMjE3OTg3
QUI2MDAyOTlEQjIgLyogU3RhY2tWaXNpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNERGMDRE
QTE2QjM5OTZEMDAxNkE1MTMgLyogU3RhdGljUHJvcGVydHlBbmFseXNpcy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQTU0Q0YyRkExODRFQUVEQTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMTRDQTk1OEIxNkFCNTBERTAwOTM4QTA2IC8qIFN0YXRpY1Byb3BlcnR5
QW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MzBCNjEyMTI1MDA2OEYwMDlEMjVCMSAv
KiBTdHJpY3RFdmFsQWN0aXZhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NjYwRTE2
RjVDRDAwQjM0NDYwIC8qIFN0cmluZ0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTU1
NDAsNiArNTU2Miw3IEBACiAJCQkJMEY1NkExRDUxNTAwMUNGNDAwMjk5MkIxIC8qIEV4ZWN1dGlv
bkNvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5NDU1OTIxODI0NzQ0NzAwQ0MzODQz
IC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkIx
MDU4NTE2NzU0ODBGMDBGOEFCNkUgLyogRXhpdEtpbmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
QTU0Q0YyRjUxODRFQUIyNDAwMjM3RjE5IC8qIFNjcmlwdFZhbHVlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRUEwQTFDMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXAuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMUUxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMDkxNzA1MTNEQjAw
QkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU3MTksNiAr
NTc0Miw3IEBACiAJCQkJODZFQkYyRkYxNTYwRjA2QTAwOEU5MjIyIC8qIE5hbWVDb25zdHJ1Y3Rv
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkVCRjMwMTE1NjBGMDZBMDA4RTkyMjIgLyogTmFt
ZUluc3RhbmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUJGMzAzMTU2MEYwNkEwMDhFOTIy
MiAvKiBOYW1lUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1NENGMkY5MTg0RUFF
REEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0NjlE
RTAxMDdFQzdFNzAwNjUwNDQ2IC8qIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMTQ0NjlERTExMDdFQzdFNzAwNjUwNDQ2IC8qIE5hdGl2ZUVycm9yUHJvdG90
eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0OEYyMUI3MTA3RUM1NDcwMDQyRUMyQyAvKiBO
b2Rlcy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdz
L1NjcmlwdE9iamVjdC5jcHAKc2ltaWxhcml0eSBpbmRleCA2NyUKY29weSBmcm9tIFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuY3BwCmNvcHkgdG8gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5jcHAKaW5kZXggOGUyN2U4YS4uM2YyZTc3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5jcHAK
QEAgLTEsNSArMSw2IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0y
OSwzMyArMzAsMjAgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2Ny
aXB0T2JqZWN0LmgiCiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQorbmFtZXNwYWNlIEpTQyB7CiAK
LSNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQuaCIKLQotI2luY2x1ZGUgIk1haW5GcmFtZS5oIgot
I2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCi0jaW5jbHVk
ZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCi0KLXVzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotYm9vbCBJbnNw
ZWN0b3JDbGllbnQ6OmRvRGlzcGF0Y2hNZXNzYWdlT25Gcm9udGVuZFBhZ2UoUGFnZSogZnJvbnRl
bmRQYWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCitTY3JpcHRPYmplY3Q6OlNjcmlwdE9iamVj
dChFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBKU09iamVjdCogb2JqZWN0KQorICAgIDogU2NyaXB0
VmFsdWUoc2NyaXB0U3RhdGUtPnZtKCksIG9iamVjdCkKKyAgICAsIG1fc2NyaXB0U3RhdGUoc2Ny
aXB0U3RhdGUpCiB7Ci0gICAgaWYgKCFmcm9udGVuZFBhZ2UpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIFN0cmluZyBkaXNwYXRjaFRvRnJvbnRlbmQgPSAiSW5zcGVjdG9yRnJvbnRlbmRB
UEkuZGlzcGF0Y2hNZXNzYWdlQXN5bmMoIiArIG1lc3NhZ2UgKyAiKTsiOwotCi0gICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIGV4ZWN1dGUgdGhlIHNjcmlwdCBpbiB0aGUgYXBwcm9wcmlhdGUgd29y
bGQuCi0gICAgZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5ldmFsdWF0ZShTY3Jp
cHRTb3VyY2VDb2RlKGRpc3BhdGNoVG9Gcm9udGVuZCkpOwotICAgIHJldHVybiB0cnVlOwogfQog
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCitTY3JpcHRPYmplY3Q6OlNjcmlwdE9iamVjdChFeGVj
U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcHRWYWx1ZSYgc2NyaXB0VmFsdWUpCisgICAg
OiBTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZS0+dm0oKSwgc2NyaXB0VmFsdWUuanNWYWx1ZSgpKQor
ICAgICwgbV9zY3JpcHRTdGF0ZShzY3JpcHRTdGF0ZSkKK3sKK30KIAotI2VuZGlmIC8vIEVOQUJM
RShJTlNQRUNUT1IpCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Jp
bmRpbmdzL1NjcmlwdE9iamVjdC5oCnNpbWlsYXJpdHkgaW5kZXggNTclCnJlbmFtZSBmcm9tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5oCnJlbmFtZSB0byBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0T2JqZWN0LmgKaW5kZXggNmIzMmEwYy4uMDM4
ZTg0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5oCkBA
IC0xLDQgKzEsNSBAQAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTMxLDQ2ICszMiwyNCBAQAogI2lm
bmRlZiBTY3JpcHRPYmplY3RfaAogI2RlZmluZSBTY3JpcHRPYmplY3RfaAogCi0jaW5jbHVkZSAi
U2NyaXB0U3RhdGUuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIlNjcmlwdFZh
bHVlLmgiCiAKLSNpbmNsdWRlIDxoZWFwL1N0cm9uZy5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNP
YmplY3QuaD4KK25hbWVzcGFjZSBKU0MgewogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xh
c3MgSW5qZWN0ZWRTY3JpcHRIb3N0OwotICAgIGNsYXNzIEluc3BlY3RvckZyb250ZW5kSG9zdDsK
LSAgICBjbGFzcyBNZWRpYUNvbnRyb2xzSG9zdDsKK2NsYXNzIFNjcmlwdE9iamVjdCA6IHB1Ymxp
YyBTY3JpcHRWYWx1ZSB7CitwdWJsaWM6CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgU2NyaXB0T2Jq
ZWN0KEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgU2NyaXB0
T2JqZWN0KEV4ZWNTdGF0ZSosIGNvbnN0IFNjcmlwdFZhbHVlJik7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgU2NyaXB0T2JqZWN0KCkgOiBtX3NjcmlwdFN0YXRlKG51bGxwdHIpIHsgfQogCi0gICAg
Y2xhc3MgU2NyaXB0T2JqZWN0IDogcHVibGljIFNjcmlwdFZhbHVlIHsKLSAgICBwdWJsaWM6Ci0g
ICAgICAgIFNjcmlwdE9iamVjdChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqKTsKLSAg
ICAgICAgU2NyaXB0T2JqZWN0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU2NyaXB0VmFsdWUmKTsK
LSAgICAgICAgU2NyaXB0T2JqZWN0KCkgOiBtX3NjcmlwdFN0YXRlKDApIHsgfQotICAgICAgICBK
U0M6OkpTT2JqZWN0KiBqc09iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGFzT2JqZWN0KGpzVmFsdWUo
KSk7IH0KLSAgICAgICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlKCkgY29uc3QgeyByZXR1
cm4gbV9zY3JpcHRTdGF0ZTsgfQorICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBqc09i
amVjdCgpIGNvbnN0IHsgcmV0dXJuIGFzT2JqZWN0KGpzVmFsdWUoKSk7IH0KKyAgICBKU19FWFBP
UlRfUFJJVkFURSBFeGVjU3RhdGUqIHNjcmlwdFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zY3Jp
cHRTdGF0ZTsgfQogCi0gICAgcHJvdGVjdGVkOgotICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogbV9z
Y3JpcHRTdGF0ZTsKLSAgICB9OworcHJvdGVjdGVkOgorICAgIEV4ZWNTdGF0ZSogbV9zY3JpcHRT
dGF0ZTsKK307CiAKLSAgICBjbGFzcyBTY3JpcHRHbG9iYWxPYmplY3QgewotICAgIHB1YmxpYzoK
LSAgICAgICAgc3RhdGljIGJvb2wgc2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciogbmFt
ZSwgY29uc3QgU2NyaXB0T2JqZWN0Jik7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICAgICAg
c3RhdGljIGJvb2wgc2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgSW5zcGVj
dG9yRnJvbnRlbmRIb3N0Kik7Ci0gICAgICAgIHN0YXRpYyBib29sIHNldChKU0M6OkV4ZWNTdGF0
ZSosIGNvbnN0IGNoYXIqIG5hbWUsIEluamVjdGVkU2NyaXB0SG9zdCopOwotI2VuZGlmCi0jaWYg
RU5BQkxFKE1FRElBX0NPTlRST0xTX1NDUklQVCkKLSAgICAgICAgc3RhdGljIGJvb2wgc2V0KEpT
Qzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgTWVkaWFDb250cm9sc0hvc3QqKTsKLSNl
bmRpZgotCi0gICAgICAgIHN0YXRpYyBib29sIGdldChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNo
YXIqIG5hbWUsIFNjcmlwdE9iamVjdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCByZW1vdmUoSlND
OjpFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lKTsKLSAgICBwcml2YXRlOgotICAgICAgICBT
Y3JpcHRHbG9iYWxPYmplY3QoKSB7IH0KLSAgICB9OwotCi19Cit9IC8vIG5hbWVzcGFjZSBKU0MK
IAogI2VuZGlmIC8vIFNjcmlwdE9iamVjdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGlu
Z3MvU2NyaXB0VmFsdWUuY3BwCnNpbWlsYXJpdHkgaW5kZXggNzElCnJlbmFtZSBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcApyZW5hbWUgdG8gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAppbmRleCA3OTE4NDRhLi4zYTQ1
NmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3
LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoYykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dApAQCAtNywxMyArNywxMyBAQAogICogYXJlIG1ldDoKICAqCiAgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuIAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAogICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKICAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqICAgICBmcm9tIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgog
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKICAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKQEAgLTMwLDIyICszMCwxOSBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAKLSNpbmNs
dWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIK
KyNpbmNsdWRlICJBUElDYXN0LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCisjaW5j
bHVkZSAiSlNMb2NrLmgiCiAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+Ci0j
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZVJlZi5oPgotCi0jaW5jbHVkZSA8aGVhcC9T
dHJvbmcuaD4KLSNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+Ci0jaW5jbHVk
ZSA8cnVudGltZS9KU0xvY2suaD4KLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKIHVzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBKU0Mgewog
Ci1ib29sIFNjcmlwdFZhbHVlOjpnZXRTdHJpbmcoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRl
LCBTdHJpbmcmIHJlc3VsdCkgY29uc3QKK1NjcmlwdFZhbHVlOjp+U2NyaXB0VmFsdWUoKQorewor
fQorICAgIAorYm9vbCBTY3JpcHRWYWx1ZTo6Z2V0U3RyaW5nKEV4ZWNTdGF0ZSogc2NyaXB0U3Rh
dGUsIFN0cmluZyYgcmVzdWx0KSBjb25zdAogewogICAgIGlmICghbV92YWx1ZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNTUsNyArNTIsNyBAQCBib29sIFNjcmlwdFZhbHVlOjpnZXRTdHJp
bmcoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBTdHJpbmcmIHJlc3VsdCkgY29uc3QKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotU3RyaW5nIFNjcmlwdFZhbHVlOjp0b1N0cmluZyhKU0M6OkV4
ZWNTdGF0ZSogc2NyaXB0U3RhdGUpIGNvbnN0CitTdHJpbmcgU2NyaXB0VmFsdWU6OnRvU3RyaW5n
KEV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUpIGNvbnN0CiB7CiAgICAgU3RyaW5nIHJlc3VsdCA9IG1f
dmFsdWUuZ2V0KCkudG9TdHJpbmcoc2NyaXB0U3RhdGUpLT52YWx1ZShzY3JpcHRTdGF0ZSk7CiAg
ICAgLy8gSGFuZGxlIHRoZSBjYXNlIHdoZXJlIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gYXMgcGFy
dCBvZiBpbnZva2luZyB0b1N0cmluZyBvbiB0aGUgb2JqZWN0LgpAQCAtNjQsMTIgKzYxLDExIEBA
IFN0cmluZyBTY3JpcHRWYWx1ZTo6dG9TdHJpbmcoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRl
KSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWJvb2wgU2NyaXB0VmFsdWU6OmlzRXF1
YWwoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcHRWYWx1ZSYgYW5vdGhl
clZhbHVlKSBjb25zdAorYm9vbCBTY3JpcHRWYWx1ZTo6aXNFcXVhbChFeGVjU3RhdGUqIHNjcmlw
dFN0YXRlLCBjb25zdCBTY3JpcHRWYWx1ZSYgYW5vdGhlclZhbHVlKSBjb25zdAogewogICAgIGlm
IChoYXNOb1ZhbHVlKCkpCiAgICAgICAgIHJldHVybiBhbm90aGVyVmFsdWUuaGFzTm9WYWx1ZSgp
OwotCi0gICAgcmV0dXJuIEpTVmFsdWVJc0VxdWFsKHRvUmVmKHNjcmlwdFN0YXRlKSwgdG9SZWYo
c2NyaXB0U3RhdGUsIGpzVmFsdWUoKSksIHRvUmVmKHNjcmlwdFN0YXRlLCBhbm90aGVyVmFsdWUu
anNWYWx1ZSgpKSwgMCk7CisgICAgcmV0dXJuIEpTVmFsdWVJc0VxdWFsKHRvUmVmKHNjcmlwdFN0
YXRlKSwgdG9SZWYoc2NyaXB0U3RhdGUsIGpzVmFsdWUoKSksIHRvUmVmKHNjcmlwdFN0YXRlLCBh
bm90aGVyVmFsdWUuanNWYWx1ZSgpKSwgbnVsbHB0cik7CiB9CiAKIGJvb2wgU2NyaXB0VmFsdWU6
OmlzTnVsbCgpIGNvbnN0CkBAIC05OSwzMyArOTUsMTcgQEAgYm9vbCBTY3JpcHRWYWx1ZTo6aXNG
dW5jdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIGdldENhbGxEYXRhKG1fdmFsdWUuZ2V0KCksIGNh
bGxEYXRhKSAhPSBDYWxsVHlwZU5vbmU7CiB9CiAKLVBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBTY3JpcHRWYWx1ZTo6c2VyaWFsaXplKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0
ZSwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCi17Ci0gICAgcmV0dXJu
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHNjcmlwdFN0YXRlLCBqc1ZhbHVlKCksIDAs
IDAsIHRocm93RXhjZXB0aW9ucyk7Ci19Ci0KLVBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBTY3JpcHRWYWx1ZTo6c2VyaWFsaXplKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwg
TWVzc2FnZVBvcnRBcnJheSogbWVzc2FnZVBvcnRzLCBBcnJheUJ1ZmZlckFycmF5KiBhcnJheUJ1
ZmZlcnMsIGJvb2wmIGRpZFRocm93KQotewotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHNjcmlw
dFN0YXRlLCBqc1ZhbHVlKCksIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJzKTsKLSAgICBkaWRU
aHJvdyA9IHNjcmlwdFN0YXRlLT5oYWRFeGNlcHRpb24oKTsKLSAgICByZXR1cm4gc2VyaWFsaXpl
ZFZhbHVlLnJlbGVhc2UoKTsKLX0KLQotU2NyaXB0VmFsdWUgU2NyaXB0VmFsdWU6OmRlc2VyaWFs
aXplKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiB2
YWx1ZSwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCi17Ci0gICAgcmV0
dXJuIFNjcmlwdFZhbHVlKHNjcmlwdFN0YXRlLT52bSgpLCB2YWx1ZS0+ZGVzZXJpYWxpemUoc2Ny
aXB0U3RhdGUsIHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIDAsIHRocm93RXhj
ZXB0aW9ucykpOwotfQotCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLXN0YXRpYyBQYXNzUmVmUHRy
PEluc3BlY3RvclZhbHVlPiBqc1RvSW5zcGVjdG9yVmFsdWUoSlNDOjpFeGVjU3RhdGUqIHNjcmlw
dFN0YXRlLCBKU1ZhbHVlIHZhbHVlLCBpbnQgbWF4RGVwdGgpCitzdGF0aWMgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4ganNUb0luc3BlY3RvclZhbHVlKEV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUs
IEpTVmFsdWUgdmFsdWUsIGludCBtYXhEZXB0aCkKIHsKICAgICBpZiAoIXZhbHVlKSB7CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKCFtYXhEZXB0aCkKLSAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgbWF4RGVwdGgtLTsKIAogICAgIGlm
ICh2YWx1ZS5pc051bGwoKSB8fCB2YWx1ZS5pc1VuZGVmaW5lZCgpKQpAQCAtMTM4LDYgKzExOCw3
IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBqc1RvSW5zcGVjdG9yVmFsdWUo
SlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlCiAgICAgICAgIFN0cmluZyBzID0gdmFsdWUuZ2V0
U3RyaW5nKHNjcmlwdFN0YXRlKTsKICAgICAgICAgcmV0dXJuIEluc3BlY3RvclN0cmluZzo6Y3Jl
YXRlKFN0cmluZyhzLmNoYXJhY3RlcnMoKSwgcy5sZW5ndGgoKSkpOwogICAgIH0KKwogICAgIGlm
ICh2YWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgIGlmIChpc0pTQXJyYXkodmFsdWUpKSB7CiAg
ICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGluc3BlY3RvckFycmF5ID0gSW5zcGVj
dG9yQXJyYXk6OmNyZWF0ZSgpOwpAQCAtMTQ3LDcgKzEyOCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRy
PEluc3BlY3RvclZhbHVlPiBqc1RvSW5zcGVjdG9yVmFsdWUoSlNDOjpFeGVjU3RhdGUqIHNjcmlw
dFN0YXRlCiAgICAgICAgICAgICAgICAgSlNWYWx1ZSBlbGVtZW50ID0gYXJyYXktPmdldEluZGV4
KHNjcmlwdFN0YXRlLCBpKTsKICAgICAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+
IGVsZW1lbnRWYWx1ZSA9IGpzVG9JbnNwZWN0b3JWYWx1ZShzY3JpcHRTdGF0ZSwgZWxlbWVudCwg
bWF4RGVwdGgpOwogICAgICAgICAgICAgICAgIGlmICghZWxlbWVudFZhbHVlKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgICAgICAgICAgaW5zcGVjdG9yQXJyYXktPnB1c2hWYWx1ZShlbGVtZW50VmFsdWUp
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGluc3BlY3RvckFycmF5OwpAQCAt
MTYxLDIwICsxNDIsMjEgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGpzVG9J
bnNwZWN0b3JWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUKICAgICAgICAgICAgIEpT
VmFsdWUgcHJvcGVydHlWYWx1ZSA9IG9iamVjdC0+Z2V0KHNjcmlwdFN0YXRlLCBuYW1lKTsKICAg
ICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gaW5zcGVjdG9yVmFsdWUgPSBqc1RvSW5z
cGVjdG9yVmFsdWUoc2NyaXB0U3RhdGUsIHByb3BlcnR5VmFsdWUsIG1heERlcHRoKTsKICAgICAg
ICAgICAgIGlmICghaW5zcGVjdG9yVmFsdWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICBpbnNwZWN0b3JPYmpl
Y3QtPnNldFZhbHVlKFN0cmluZyhuYW1lLmNoYXJhY3RlcnMoKSwgbmFtZS5sZW5ndGgoKSksIGlu
c3BlY3RvclZhbHVlKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gaW5zcGVjdG9yT2JqZWN0
OwogICAgIH0KKwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOworICAg
IHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBTY3JpcHRW
YWx1ZTo6dG9JbnNwZWN0b3JWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUpIGNvbnN0
CitQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBTY3JpcHRWYWx1ZTo6dG9JbnNwZWN0b3JWYWx1
ZShFeGVjU3RhdGUqIHNjcmlwdFN0YXRlKSBjb25zdAogewotICAgIEpTQzo6SlNMb2NrSG9sZGVy
IGhvbGRlcihzY3JpcHRTdGF0ZSk7CisgICAgSlNMb2NrSG9sZGVyIGhvbGRlcihzY3JpcHRTdGF0
ZSk7CiAgICAgcmV0dXJuIGpzVG9JbnNwZWN0b3JWYWx1ZShzY3JpcHRTdGF0ZSwgbV92YWx1ZS5n
ZXQoKSwgSW5zcGVjdG9yVmFsdWU6Om1heERlcHRoKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoSU5T
UEVDVE9SKQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuaApzaW1pbGFyaXR5IGluZGV4
IDY2JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5o
CnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuaApp
bmRleCBlOGIwYWZiLi45ODI2YjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9T
Y3JpcHRWYWx1ZS5oCkBAIC0xLDEwICsxLDExIEBACiAvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoYykgMjAwOCwg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogCisgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCiAgKiBtZXQ6Ci0gKiAKKyAqCiAgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAog
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgogICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQpAQCAtMTQsNyArMTUsNyBAQAogICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwogICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
ICAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKiAKKyAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiAgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAogICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CkBAIC0zMSwxMiArMzIsMTAgQEAKICNpZm5kZWYgU2NyaXB0VmFsdWVfaAogI2RlZmluZSBTY3Jp
cHRWYWx1ZV9oCiAKLSNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRl
ICJTY3JpcHRTdGF0ZS5oIgotI2luY2x1ZGUgPGhlYXAvU3Ryb25nLmg+Ci0jaW5jbHVkZSA8aGVh
cC9TdHJvbmdJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+Ci0jaW5j
bHVkZSA8cnVudGltZS9PcGVyYXRpb25zLmg+CisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2lu
Y2x1ZGUgIk9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJTdHJvbmcuaCIKKyNpbmNsdWRlICJTdHJv
bmdJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDQsMjAgKzQzLDE4IEBAIG5hbWVzcGFjZSBJbnNwZWN0
b3IgewogY2xhc3MgSW5zcGVjdG9yVmFsdWU7CiB9CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25h
bWVzcGFjZSBKU0MgewogCi1jbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7Ci0KLWNsYXNzIFNj
cmlwdFZhbHVlIHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFNjcmlwdFZhbHVlIHsKIHB1Ymxp
YzoKICAgICBTY3JpcHRWYWx1ZSgpIHsgfQotICAgIFNjcmlwdFZhbHVlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTVmFsdWUgdmFsdWUpIDogbV92YWx1ZSh2bSwgdmFsdWUpIHt9Ci0gICAgdmlydHVhbCB+
U2NyaXB0VmFsdWUoKSB7fQorICAgIFNjcmlwdFZhbHVlKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkg
OiBtX3ZhbHVlKHZtLCB2YWx1ZSkgeyB9CisgICAgdmlydHVhbCB+U2NyaXB0VmFsdWUoKTsKIAot
ICAgIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS5nZXQoKTsg
fQotICAgIGJvb2wgZ2V0U3RyaW5nKEpTQzo6RXhlY1N0YXRlKiwgU3RyaW5nJiByZXN1bHQpIGNv
bnN0OwotICAgIFN0cmluZyB0b1N0cmluZyhKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0OwotICAgIGJv
b2wgaXNFcXVhbChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFNjcmlwdFZhbHVlJikgY29uc3Q7Cisg
ICAgSlNWYWx1ZSBqc1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS5nZXQoKTsgfQorICAg
IGJvb2wgZ2V0U3RyaW5nKEV4ZWNTdGF0ZSosIFN0cmluZyYgcmVzdWx0KSBjb25zdDsKKyAgICBT
dHJpbmcgdG9TdHJpbmcoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgYm9vbCBpc0VxdWFsKEV4ZWNT
dGF0ZSosIGNvbnN0IFNjcmlwdFZhbHVlJikgY29uc3Q7CiAgICAgYm9vbCBpc051bGwoKSBjb25z
dDsKICAgICBib29sIGlzVW5kZWZpbmVkKCkgY29uc3Q7CiAgICAgYm9vbCBpc09iamVjdCgpIGNv
bnN0OwpAQCAtNjgsMTggKzY1LDE0IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTY3JpcHRWYWx1ZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0gb3RoZXIu
bV92YWx1ZTsgfQogCi0gICAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlh
bGl6ZShKU0M6OkV4ZWNTdGF0ZSosIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7
Ci0gICAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZShKU0M6OkV4
ZWNTdGF0ZSosIE1lc3NhZ2VQb3J0QXJyYXkqLCBBcnJheUJ1ZmZlckFycmF5KiwgYm9vbCYpOwot
ICAgIHN0YXRpYyBTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSosIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSosIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7Ci0K
ICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JWYWx1ZT4gdG9JbnNwZWN0b3JWYWx1ZShKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0OworICAgIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gdG9JbnNwZWN0b3JWYWx1ZShFeGVj
U3RhdGUqKSBjb25zdDsKICNlbmRpZgogCiBwcml2YXRlOgotICAgIEpTQzo6U3Ryb25nPEpTQzo6
VW5rbm93bj4gbV92YWx1ZTsKKyAgICBTdHJvbmc8VW5rbm93bj4gbV92YWx1ZTsKIH07CiAKLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gU2Ny
aXB0VmFsdWVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDNhOGI3MWUuLjY1ZDIyZTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTUsNiArNSwxNDUgQEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAor
ICAgICAgICBQYXJ0IDI6IFB1c2ggU2NyaXB0IHdyYXBwZXIgY2xhc3NlcyBkb3duIGludG8gSmF2
YVNjcmlwdENvcmUvYmluZGluZ3MuCisKKyAgICAgICAgICAtIE1vdmUgU2NyaXB0T2JqZWN0IGFu
ZCBTY3JpcHRWYWx1ZSBpbnRvIEphdmFTY3JpcHRDb3JlIGFuZCBuYW1lc3BhY2UgSlNDCisgICAg
ICAgICAgLSBBZGQgZm9yd2FyZGluZyBoZWFkZXJzCisgICAgICAgICAgLSBJbnN0ZWFkIG9mIHVz
aW5nIEpTQzo6U2NyaXB0T2JqZWN0IGFuZCBKU0M6OlNjcmlwdFZhbHVlIGV2ZXJ5d2hlcmUsCisg
ICAgICAgICAgICBwcmVmZXIgdXNpbmcgbmFtZXNwYWNlIEpTQy4KKworICAgICAgICAqIEZvcndh
cmRpbmdIZWFkZXJzL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5oOiBBZGRlZC4KKyAgICAgICAgKiBG
b3J3YXJkaW5nSGVhZGVycy9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkFu
eS5jcHA6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQW55Lmg6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJDdXJzb3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5
LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5Lmg6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkluZGV4Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6b3BlbkN1cnNv
cik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6b3BlbktleUN1cnNvcik6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuY3BwOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQktleVJhbmdlLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlSYW5nZTo6
bG93ZXJCb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlSYW5nZTo6dXBwZXJCb3VuZCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlSYW5nZTo6Ym91bmQpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9i
amVjdFN0b3JlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHA6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5oOgorICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9RdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHA6CisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1F1
aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lmg6CisgICAgICAgICogVXNlSlNDLmNtYWtlOgorICAg
ICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9EaWN0aW9uYXJ5Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaWN0aW9u
YXJ5OjpnZXRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9JREJCaW5kaW5n
VXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlc2VyaWFsaXplSURCVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6ZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcik6CisgICAgICAgICog
YmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRGljdGlvbmFyeS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5Lmg6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHA6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAg
ICogYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEZ1
bmN0aW9uQ2FsbC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5j
cHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3Qu
Y3BwLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNwcC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEdsb2JhbE9iamVjdDo6U2NyaXB0R2xvYmFsT2JqZWN0KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5jcHA6CisgICAgICAgICogYmluZGlu
Z3MvanMvU2NyaXB0UHJvZmlsZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0
ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnNlcmlhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICogZG9tL0N1c3RvbUV2ZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUV2ZW50Ojppbml0Q3VzdG9tRXZlbnQpOgorICAg
ICAgICAqIGRvbS9DdXN0b21FdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRXZlbnQ6
OmRldGFpbCk6CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5jcHA6CisgICAgICAgICogZG9t
L01lc3NhZ2VFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50OjpkYXRhQXNTY3JpcHRWYWx1ZSk6Cisg
ICAgICAgICogZG9tL1BvcFN0YXRlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBvcFN0YXRl
RXZlbnQ6OnN0YXRlKToKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAg
ICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29s
ZU1lc3NhZ2UuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHA6CisgICAgICAgICogaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFz
ZS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5jcHA6CisgICAgICAgICog
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0SG9zdC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIu
Y3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNh
bnZhc0FnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzSW5zdHJ1bWVudGF0aW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndyYXBDYW52YXMy
RFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5z
dHJ1bWVudGF0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNwcDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHA6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92
ZXJsYXkuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL1Nj
cmlwdEFyZ3VtZW50cy5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5o
OgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmg6CisgICAgICAgICog
cGFnZS9Db25zb2xlLmNwcDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKiBw
YWdlL1BhZ2VDb25zb2xlLmNwcDoKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblZpZXcuY3BwOgor
ICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5oOgorICAgICAgICAqIHdvcmtlcnMvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKiB4bWwvWE1MVHJlZVZpZXdlci5jcHA6Cisg
ICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgICogeG1s
L3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorCisyMDEzLTEyLTA1ICBKb3Nl
cGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogUHVzaCBNb3JlIEluc3BlY3RvciBSZXF1aXJlZCBDbGFzc2VzIERvd24gaW50byBKYXZhU2Ny
aXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTI1MzI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAg
UGFydCAxOiBQdXNoIGRvd24gY29yZSBpbnNwZWN0b3IgY2xhc3Nlcy4KIAogICAgICAgICAgIC0g
TW92ZSBJbnNwZWN0QWdlbnRCYXNlLCBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LCBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9yVmFsdWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9iaW5kaW5ncy9TY3JpcHRPYmplY3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczNmI4MjcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9iaW5kaW5ncy9TY3JpcHRPYmplY3QuaApA
QCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfU2NyaXB0T2JqZWN0X2gKKyNkZWZp
bmUgV2ViQ29yZV9GV0RfU2NyaXB0T2JqZWN0X2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9T
Y3JpcHRPYmplY3QuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2Fy
ZGluZ0hlYWRlcnMvYmluZGluZ3MvU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL0Zvcndh
cmRpbmdIZWFkZXJzL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNDc4YWY1MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0ZvcndhcmRpbmdIZWFkZXJzL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmgKQEAgLTAsMCArMSw0IEBA
CisjaWZuZGVmIFdlYkNvcmVfRldEX1NjcmlwdFZhbHVlX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0Rf
U2NyaXB0VmFsdWVfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdFZhbHVlLmg+Cisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDVkZmU3OWEuLmY2YjE5MTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjQ0OSw4ICsyNDQ5LDggQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5j
dGlvbkNhbGwuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlv
bkNhbGwuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0SGVhcFNuYXBzaG90
LmggXAotCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHAgXAotCVNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0UHJvZmlsZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdFByb2ZpbGUuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmls
ZU5vZGUuaCBcCkBAIC0yNDU5LDggKzI0NTksNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaCBcCiAJU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRTdGF0ZS5oIFwKLQlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRWYWx1ZS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmgg
XAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFdyYXBwYWJsZS5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGVJbmxpbmVzLmggXAogCVNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5jcHAKaW5kZXggY2IxZTYzZS4uMGI4
NGZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuY3BwCkBA
IC0zNiw2ICszNiw4IEBACiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJE
T01TdHJpbmdMaXN0LmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogUGFzc1JlZlB0cjxJREJBbnk+IElEQkFueTo6Y3JlYXRlSW52YWxpZCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5oCmluZGV4IDZkZTQ1Y2YuLmY0M2Jl
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5oCkBAIC0yOSw4
ICsyOSw4IEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKICNpbmNsdWRlICJJREJL
ZXlQYXRoLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFw
cGFibGUuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8
SURCSW5kZXg+IGlkYkluZGV4KCk7CiAgICAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gaWRi
T2JqZWN0U3RvcmUoKTsKICAgICBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBpZGJUcmFuc2Fj
dGlvbigpOwotICAgIGNvbnN0IFNjcmlwdFZhbHVlJiBzY3JpcHRWYWx1ZSgpOworICAgIGNvbnN0
IEpTQzo6U2NyaXB0VmFsdWUmIHNjcmlwdFZhbHVlKCk7CiAgICAgaW50NjRfdCBpbnRlZ2VyKCk7
CiAgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoKTsKICAgICBjb25zdCBJREJLZXlQYXRoJiBrZXlQ
YXRoKCkgeyByZXR1cm4gbV9pZGJLZXlQYXRoOyB9OwpAQCAtMTE4LDcgKzExOCw3IEBAIHByaXZh
dGU6CiAgICAgZXhwbGljaXQgSURCQW55KFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+KTsKICAg
ICBleHBsaWNpdCBJREJBbnkoY29uc3QgSURCS2V5UGF0aCYpOwogICAgIGV4cGxpY2l0IElEQkFu
eShjb25zdCBTdHJpbmcmKTsKLSAgICBleHBsaWNpdCBJREJBbnkoY29uc3QgU2NyaXB0VmFsdWUm
KTsKKyAgICBleHBsaWNpdCBJREJBbnkoY29uc3QgSlNDOjpTY3JpcHRWYWx1ZSYpOwogICAgIGV4
cGxpY2l0IElEQkFueShpbnQ2NF90KTsKIAogICAgIGNvbnN0IFR5cGUgbV90eXBlOwpAQCAtMTMz
LDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBt
X2lkYk9iamVjdFN0b3JlOwogICAgIGNvbnN0IFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gbV9pZGJU
cmFuc2FjdGlvbjsKICAgICBjb25zdCBJREJLZXlQYXRoIG1faWRiS2V5UGF0aDsKLSAgICBjb25z
dCBTY3JpcHRWYWx1ZSBtX3NjcmlwdFZhbHVlOworICAgIGNvbnN0IEpTQzo6U2NyaXB0VmFsdWUg
bV9zY3JpcHRWYWx1ZTsKICAgICBjb25zdCBTdHJpbmcgbV9zdHJpbmc7CiAgICAgY29uc3QgaW50
NjRfdCBtX2ludGVnZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkN1cnNvci5jcHAKaW5kZXggZWYwNjU0NC4uN2Q5OGVjMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCkBAIC00MSw2ICs0MSw4IEBACiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPGxpbWl0cz4KIAor
dXNpbmcgbmFtZXNwYWNlIEpTQzsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRy
PElEQkN1cnNvcj4gSURCQ3Vyc29yOjpjcmVhdGUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5k
PiBiYWNrZW5kLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24sIElEQlJlcXVl
c3QqIHJlcXVlc3QsIElEQkFueSogc291cmNlLCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCmluZGV4IGM2
YTc0NGYuLjhlMmM0NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvci5oCkBAIC0zMSw4ICszMSw4IEBACiAjaW5jbHVkZSAiSURCS2V5LmgiCiAjaW5jbHVk
ZSAiSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJJbmRleGVkREIuaCIKLSNpbmNsdWRlICJT
Y3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgorI2luY2x1ZGUgPGJp
bmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTYzLDIy
ICs2MywyMiBAQCBwdWJsaWM6CiAKICAgICAvLyBJbXBsZW1lbnQgdGhlIElETAogICAgIGNvbnN0
IFN0cmluZyYgZGlyZWN0aW9uKCkgY29uc3Q7Ci0gICAgY29uc3QgU2NyaXB0VmFsdWUmIGtleSgp
IGNvbnN0OwotICAgIGNvbnN0IFNjcmlwdFZhbHVlJiBwcmltYXJ5S2V5KCkgY29uc3Q7Ci0gICAg
Y29uc3QgU2NyaXB0VmFsdWUmIHZhbHVlKCkgY29uc3Q7CisgICAgY29uc3QgSlNDOjpTY3JpcHRW
YWx1ZSYga2V5KCkgY29uc3Q7CisgICAgY29uc3QgSlNDOjpTY3JpcHRWYWx1ZSYgcHJpbWFyeUtl
eSgpIGNvbnN0OworICAgIGNvbnN0IEpTQzo6U2NyaXB0VmFsdWUmIHZhbHVlKCkgY29uc3Q7CiAg
ICAgSURCQW55KiBzb3VyY2UoKSBjb25zdDsKIAotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
dXBkYXRlKEpTQzo6RXhlY1N0YXRlKiwgU2NyaXB0VmFsdWUmLCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiB1cGRhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlNj
cmlwdFZhbHVlJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgYWR2YW5jZSh1bnNpZ25lZCBs
b25nLCBFeGNlcHRpb25Db2RlJik7CiAgICAgLy8gRklYTUU6IFRyeSB0byBtb2RpZnkgdGhlIGNv
ZGUgZ2VuZXJhdG9yIHNvIHRoaXMgb3ZlcmxvYWQgaXMgdW5uZWVkZWQuCiAgICAgdm9pZCBjb250
aW51ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJiBlYykg
eyBjb250aW51ZUZ1bmN0aW9uKHN0YXRpY19jYXN0PElEQktleSo+KDApLCBlYyk7IH0KLSAgICB2
b2lkIGNvbnRpbnVlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFNjcmlw
dFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGNvbnRpbnVlRnVuY3Rpb24o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IEpTQzo6U2NyaXB0VmFsdWUmIGtleSwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZGVsZXRlRnVuY3Rpb24o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZvaWQgY29u
dGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2
b2lkIHBvc3RTdWNjZXNzSGFuZGxlckNhbGxiYWNrKCk7CiAgICAgdm9pZCBjbG9zZSgpOwotICAg
IHZvaWQgc2V0VmFsdWVSZWFkeShET01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPElEQktleT4s
IFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBTY3JpcHRWYWx1ZSYpOworICAgIHZvaWQg
c2V0VmFsdWVSZWFkeShET01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NS
ZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBKU0M6OlNjcmlwdFZhbHVlJik7CiAgICAgUGFzc1Jl
ZlB0cjxJREJLZXk+IGlkYlByaW1hcnlLZXkoKSB7IHJldHVybiBtX2N1cnJlbnRQcmltYXJ5S2V5
OyB9CiAKIHByb3RlY3RlZDoKQEAgLTk3LDExICs5NywxMSBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9nb3RWYWx1ZTsKICAgICAvLyBUaGVzZSB2YWx1ZXMgYXJlIGhlbGQgYmVjYXVzZSBtX2JhY2tl
bmQgbWF5IGFkdmFuY2Ugd2hpbGUgdGhleQogICAgIC8vIGFyZSBzdGlsbCB2YWxpZCBmb3IgdGhl
IGN1cnJlbnQgc3VjY2VzcyBoYW5kbGVycy4KLSAgICBTY3JpcHRWYWx1ZSBtX2N1cnJlbnRLZXlW
YWx1ZTsKLSAgICBTY3JpcHRWYWx1ZSBtX2N1cnJlbnRQcmltYXJ5S2V5VmFsdWU7CisgICAgSlND
OjpTY3JpcHRWYWx1ZSBtX2N1cnJlbnRLZXlWYWx1ZTsKKyAgICBKU0M6OlNjcmlwdFZhbHVlIG1f
Y3VycmVudFByaW1hcnlLZXlWYWx1ZTsKICAgICBSZWZQdHI8SURCS2V5PiBtX2N1cnJlbnRLZXk7
CiAgICAgUmVmUHRyPElEQktleT4gbV9jdXJyZW50UHJpbWFyeUtleTsKLSAgICBTY3JpcHRWYWx1
ZSBtX2N1cnJlbnRWYWx1ZTsKKyAgICBKU0M6OlNjcmlwdFZhbHVlIG1fY3VycmVudFZhbHVlOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAppbmRleCA5ZjQwNmZhLi5lZjc2YTgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcApAQCAtNTMs
NiArNTMsOCBAQAogI2luY2x1ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCiAjaW5jbHVkZSAiV29y
a2VyVGhyZWFkLmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogSURCRmFjdG9yeTo6SURCRmFjdG9yeShJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZSog
ZmFjdG9yeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3Rvcnku
aAppbmRleCA3Mzc0ZWNmLi5lN2I2OWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRmFjdG9yeS5oCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBQYXNz
UmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IG9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IFN0cmluZyYgbmFtZSwgdW5zaWduZWQgbG9uZyBsb25nIHZlcnNpb24sIEV4Y2VwdGlvbkNv
ZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IGRlbGV0ZURhdGFiYXNlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUm
KTsKIAotICAgIHNob3J0IGNtcChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU2NyaXB0
VmFsdWUmIGZpcnN0LCBjb25zdCBTY3JpcHRWYWx1ZSYgc2Vjb25kLCBFeGNlcHRpb25Db2RlJik7
CisgICAgc2hvcnQgY21wKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBKU0M6OlNjcmlw
dFZhbHVlJiBmaXJzdCwgY29uc3QgSlNDOjpTY3JpcHRWYWx1ZSYgc2Vjb25kLCBFeGNlcHRpb25D
b2RlJik7CiAKIHByaXZhdGU6CiAgICAgSURCRmFjdG9yeShJREJGYWN0b3J5QmFja2VuZEludGVy
ZmFjZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
SW5kZXguY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3Bw
CmluZGV4IGRmNjM3MzQuLmFlMjdkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJJbmRleC5jcHAKQEAgLTM3LDYgKzM3LDggQEAKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCit1c2luZyBuYW1lc3Bh
Y2UgSlNDOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIElEQkluZGV4OjpJREJJbmRleChjb25z
dCBJREJJbmRleE1ldGFkYXRhJiBtZXRhZGF0YSwgSURCT2JqZWN0U3RvcmUqIG9iamVjdFN0b3Jl
LCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCSW5kZXguaAppbmRleCAyNjE0ZTAyLi40YjAwOTZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmgKQEAgLTYzLDIzICs2MywyMyBAQCBw
dWJsaWM6CiAgICAgLy8gRklYTUU6IFRyeSB0byBtb2RpZnkgdGhlIGNvZGUgZ2VuZXJhdG9yIHNv
IHRoaXMgaXMgdW5uZWVkZWQuCiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29y
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJl
dHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIHN0YXRpY19jYXN0PElEQktleVJhbmdlKj4oMCksIGVj
KTsgfQogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwga2V5UmFuZ2UsIElE
QkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCgpLCBlYyk7IH0KLSAgICBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2Ny
aXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29u
dGV4dCwga2V5LCBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHQoKSwgZWMpOyB9CisgICAgUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEpTQzo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0
dXJuIG9wZW5DdXJzb3IoY29udGV4dCwga2V5LCBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHQoKSwg
ZWMpOyB9CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgY29uc3QgU3RyaW5nJiBkaXJl
Y3Rpb24sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5D
dXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIGNv
bnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBKU0M6
OlNjcmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gY291bnQoY29udGV4dCwg
c3RhdGljX2Nhc3Q8SURCS2V5UmFuZ2UqPigwKSwgZWMpOyB9CiAgICAgUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRp
b25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgSlNDOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7
CiAKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5LZXlD
dXJzb3IoY29udGV4dCwgc3RhdGljX2Nhc3Q8SURCS2V5UmFuZ2UqPigwKSwgZWMpOyB9CiAgICAg
UGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBFeGNlcHRpb25D
b2RlJiBlYykgeyByZXR1cm4gb3BlbktleUN1cnNvcihjb250ZXh0LCBrZXlSYW5nZSwgSURCQ3Vy
c29yOjpkaXJlY3Rpb25OZXh0KCksIGVjKTsgfQotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
b3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3Jp
cHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3BlbktleUN1cnNvcihj
b250ZXh0LCBrZXksIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCgpLCBlYyk7IH0KKyAgICBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgY29uc3QgSlNDOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykg
eyByZXR1cm4gb3BlbktleUN1cnNvcihjb250ZXh0LCBrZXksIElEQkN1cnNvcjo6ZGlyZWN0aW9u
TmV4dCgpLCBlYyk7IH0KICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3Io
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBjb25zdCBT
dHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU2NyaXB0
VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIGNvbnN0IEpTQzo6U2NyaXB0VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rp
b24sIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZ2V0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgRXhjZXB0aW9u
Q29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZ2V0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IEpT
Qzo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURC
UmVxdWVzdD4gZ2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZ2V0
S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNl
cHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBnZXRLZXkoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IEpTQzo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29k
ZSYpOwogCiAgICAgdm9pZCBtYXJrRGVsZXRlZCgpIHsgbV9kZWxldGVkID0gdHJ1ZTsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5jcHAKaW5k
ZXggNzI4Zjk1My4uNmU2OWQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCS2V5UmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQktleVJhbmdlLmNwcApAQCAtMzMsNiArMzMsOCBAQAogCiAjaWYgRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCiAKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6OmNyZWF0ZShQYXNz
UmVmUHRyPElEQktleT4gcHJwS2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQktleVJhbmdlLmgKaW5kZXggNTQ3Njk1YS4uMWE0NmRkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5oCkBAIC01OSwyMyArNTksMjMg
QEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8SURCS2V5PiBsb3dlcigpIGNvbnN0IHsgcmV0dXJu
IG1fbG93ZXI7IH0KICAgICBQYXNzUmVmUHRyPElEQktleT4gdXBwZXIoKSBjb25zdCB7IHJldHVy
biBtX3VwcGVyOyB9CiAKLSAgICBTY3JpcHRWYWx1ZSBsb3dlclZhbHVlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKSBjb25zdDsKLSAgICBTY3JpcHRWYWx1ZSB1cHBlclZhbHVlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqKSBjb25zdDsKKyAgICBKU0M6OlNjcmlwdFZhbHVlIGxvd2VyVmFsdWUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopIGNvbnN0OworICAgIEpTQzo6U2NyaXB0VmFsdWUgdXBwZXJW
YWx1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgY29uc3Q7CiAgICAgYm9vbCBsb3dlck9wZW4o
KSBjb25zdCB7IHJldHVybiBtX2xvd2VyVHlwZSA9PSBMb3dlckJvdW5kT3BlbjsgfQogICAgIGJv
b2wgdXBwZXJPcGVuKCkgY29uc3QgeyByZXR1cm4gbV91cHBlclR5cGUgPT0gVXBwZXJCb3VuZE9w
ZW47IH0KIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBvbmx5KFBhc3NSZWZQ
dHI8SURCS2V5PiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PElEQktleVJhbmdlPiBvbmx5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTY3JpcHRW
YWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5
UmFuZ2U+IG9ubHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IEpTQzo6U2NyaXB0VmFs
dWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5
UmFuZ2U+IGxvd2VyQm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U2NyaXB0VmFsdWUmIGJvdW5kLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gbG93ZXJCb3Vu
ZChjb250ZXh0LCBib3VuZCwgZmFsc2UsIGVjKTsgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElE
QktleVJhbmdlPiBsb3dlckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTY3Jp
cHRWYWx1ZSYgYm91bmQsIGJvb2wgb3BlbiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPElEQktleVJhbmdlPiBsb3dlckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEpTQzo6U2NyaXB0VmFsdWUmIGJvdW5kLCBFeGNlcHRpb25Db2RlJiBl
YykgeyByZXR1cm4gbG93ZXJCb3VuZChjb250ZXh0LCBib3VuZCwgZmFsc2UsIGVjKTsgfQorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBsb3dlckJvdW5kKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBjb25zdCBKU0M6OlNjcmlwdFZhbHVlJiBib3VuZCwgYm9vbCBvcGVuLCBFeGNl
cHRpb25Db2RlJik7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gdXBwZXJC
b3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYg
Ym91bmQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiB1cHBlckJvdW5kKGNvbnRleHQsIGJv
dW5kLCBmYWxzZSwgZWMpOyB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHVw
cGVyQm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBib3Vu
ZCwgYm9vbCBvcGVuLCBFeGNlcHRpb25Db2RlJik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURC
S2V5UmFuZ2U+IHVwcGVyQm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgSlNDOjpTY3JpcHRWYWx1ZSYgYm91bmQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiB1
cHBlckJvdW5kKGNvbnRleHQsIGJvdW5kLCBmYWxzZSwgZWMpOyB9CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SURCS2V5UmFuZ2U+IHVwcGVyQm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IEpTQzo6U2NyaXB0VmFsdWUmIGJvdW5kLCBib29sIG9wZW4sIEV4Y2VwdGlvbkNvZGUmKTsK
IAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBib3VuZChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYgbG93ZXIsIGNvbnN0IFNjcmlw
dFZhbHVlJiB1cHBlciwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGJvdW5kKGNvbnRleHQs
IGxvd2VyLCB1cHBlciwgZmFsc2UsIGZhbHNlLCBlYyk7IH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxJREJLZXlSYW5nZT4gYm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgU2NyaXB0VmFsdWUmIGxvd2VyLCBjb25zdCBTY3JpcHRWYWx1ZSYgdXBwZXIsIGJvb2wgbG93
ZXJPcGVuLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gYm91bmQoY29udGV4dCwgbG93ZXIs
IHVwcGVyLCBsb3dlck9wZW4sIGZhbHNlLCBlYyk7IH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4gYm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFNjcmlwdFZh
bHVlJiBsb3dlciwgY29uc3QgU2NyaXB0VmFsdWUmIHVwcGVyLCBib29sIGxvd2VyT3BlbiwgYm9v
bCB1cHBlck9wZW4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJL
ZXlSYW5nZT4gYm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgSlND
OjpTY3JpcHRWYWx1ZSYgbG93ZXIsIGNvbnN0IEpTQzo6U2NyaXB0VmFsdWUmIHVwcGVyLCBFeGNl
cHRpb25Db2RlJiBlYykgeyByZXR1cm4gYm91bmQoY29udGV4dCwgbG93ZXIsIHVwcGVyLCBmYWxz
ZSwgZmFsc2UsIGVjKTsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBib3Vu
ZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBKU0M6OlNjcmlwdFZhbHVl
JiBsb3dlciwgY29uc3QgSlNDOjpTY3JpcHRWYWx1ZSYgdXBwZXIsIGJvb2wgbG93ZXJPcGVuLCBF
eGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gYm91bmQoY29udGV4dCwgbG93ZXIsIHVwcGVyLCBs
b3dlck9wZW4sIGZhbHNlLCBlYyk7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXlSYW5n
ZT4gYm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IEpTQzo6U2NyaXB0VmFsdWUm
IGxvd2VyLCBjb25zdCBKU0M6OlNjcmlwdFZhbHVlJiB1cHBlciwgYm9vbCBsb3dlck9wZW4sIGJv
b2wgdXBwZXJPcGVuLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBib29sIGlzT25seUtleSgpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZS5jcHAKaW5kZXggNjliYWJmMS4uYzIxMjFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAtNDQsNiArNDQs
OCBAQAogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgogCit1c2luZyBuYW1lc3BhY2UgSlNDOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIElEQk9iamVjdFN0b3JlOjpJREJPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9yZU1l
dGFkYXRhJiBtZXRhZGF0YSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQpAQCAtMTY3LDcg
KzE2OSw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChJREJE
YXRhYmFzZUJhY2tlbmQ6OlB1dE1vZGUgcHV0TW9kZSwKIAogICAgIC8vIEZJWE1FOiBFeHBvc2Ug
dGhlIEpTIGVuZ2luZSBleGNlcHRpb24gc3RhdGUgdGhyb3VnaCBTY3JpcHRTdGF0ZS4KICAgICBi
b29sIGRpZFRocm93ID0gZmFsc2U7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
c2VyaWFsaXplZFZhbHVlID0gdmFsdWUuc2VyaWFsaXplKHN0YXRlLCAwLCAwLCBkaWRUaHJvdyk7
CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpzZXJpYWxpemUodmFsdWUsIHN0YXRlLCBudWxscHRyLCBudWxs
cHRyLCBkaWRUaHJvdyk7CiAgICAgaWYgKGRpZFRocm93KSB7CiAgICAgICAgIC8vIFNldHRpbmcg
YW4gZXhwbGljaXQgRXhjZXB0aW9uQ29kZSBoZXJlIHdvdWxkIGRlZmVyIGhhbmRsaW5nIHRoZSBh
bHJlYWR5IHRocm93biBleGNlcHRpb24uCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKaW5kZXggZmZmNWZm
OS4uM2FjZWJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZS5oCkBAIC02NSwyMSArNjUsMjEgQEAgcHVibGljOgogICAgIFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2Fj
dGlvbjsgfQogICAgIGJvb2wgYXV0b0luY3JlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRh
dGEuYXV0b0luY3JlbWVudDsgfQogCi0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBhZGQoSlND
OjpFeGVjU3RhdGUqLCBTY3JpcHRWYWx1ZSYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IHB1dChKU0M6OkV4ZWNTdGF0ZSosIFNjcmlwdFZhbHVlJiwgRXhjZXB0
aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gYWRkKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpTY3JpcHRWYWx1ZSYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElE
QlJlcXVlc3Q+IHB1dChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6U2NyaXB0VmFsdWUmLCBFeGNlcHRp
b25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3Bl
bkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwg
RXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgSlNDOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNl
cHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgY29uc3QgU3RyaW5n
JiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFu
Z2U+LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgSURCRGF0YWJhc2VCYWNrZW5kOjpUYXNrVHlw
ZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNv
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgY29uc3Qg
U3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IEpTQzo6U2Ny
aXB0VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmKTsK
IAotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZ2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IEpTQzo6U2Ny
aXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVz
dD4gZ2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwg
RXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gYWRkKEpTQzo6RXhl
Y1N0YXRlKiwgU2NyaXB0VmFsdWUmLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25D
b2RlJik7Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBwdXQoSlNDOjpFeGVjU3RhdGUqLCBT
Y3JpcHRWYWx1ZSYsIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGFkZChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6U2NyaXB0
VmFsdWUmLCBjb25zdCBKU0M6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHB1dChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6U2NyaXB0
VmFsdWUmLCBjb25zdCBKU0M6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKICAg
ICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBh
c3NSZWZQdHI8SURCUmVxdWVzdD4gZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IGRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBKU0M6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IGNsZWFyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25D
b2RlJik7CiAKICAgICBQYXNzUmVmUHRyPElEQkluZGV4PiBjcmVhdGVJbmRleChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
a2V5UGF0aCwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgRXhjZXB0aW9uQ29kZSYgZWMpIHsg
cmV0dXJuIGNyZWF0ZUluZGV4KGNvbnRleHQsIG5hbWUsIElEQktleVBhdGgoa2V5UGF0aCksIG9w
dGlvbnMsIGVjKTsgfQpAQCAtOTIsMTAgKzkyLDEwIEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gY291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhj
ZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGNvdW50KGNvbnRleHQsIHN0YXRpY19jYXN0PElEQktl
eVJhbmdlKj4oMCksIGVjKTsgfQogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY291bnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBFeGNlcHRpb25D
b2RlJik7Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBh
c3NSZWZQdHI8SURCUmVxdWVzdD4gY291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IEpTQzo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBwdXQoSURCRGF0YWJhc2VCYWNrZW5kOjpQdXRNb2RlLCBQYXNzUmVmUHRy
PElEQkFueT4gc291cmNlLCBKU0M6OkV4ZWNTdGF0ZSosIFNjcmlwdFZhbHVlJiwgY29uc3QgU2Ny
aXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVz
dD4gcHV0KElEQkRhdGFiYXNlQmFja2VuZDo6UHV0TW9kZSwgUGFzc1JlZlB0cjxJREJBbnk+IHNv
dXJjZSwgSlNDOjpFeGVjU3RhdGUqLCBTY3JpcHRWYWx1ZSYsIFBhc3NSZWZQdHI8SURCS2V5Piwg
RXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gcHV0KElEQkRhdGFi
YXNlQmFja2VuZDo6UHV0TW9kZSwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OlNjcmlwdFZhbHVlJiwgY29uc3QgSlNDOjpTY3JpcHRWYWx1ZSYga2V5LCBF
eGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBwdXQoSURCRGF0YWJh
c2VCYWNrZW5kOjpQdXRNb2RlLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6U2NyaXB0VmFsdWUmLCBQYXNzUmVmUHRyPElEQktleT4sIEV4Y2VwdGlvbkNv
ZGUmKTsKICAgICB2b2lkIG1hcmtEZWxldGVkKCkgeyBtX2RlbGV0ZWQgPSB0cnVlOyB9CiAgICAg
dm9pZCB0cmFuc2FjdGlvbkZpbmlzaGVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKaW5kZXggMDA0OWVkYS4uYWU0Mjc3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKQEAgLTQ1
LDYgKzQ1LDggQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgogCit1c2luZyBuYW1lc3BhY2UgSlNDOworCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIElEQlRy
YW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlJlcXVlc3QuaAppbmRleCA0MzA1ODllLi4zMjRlMTRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCkBAIC0xMjAsNyArMTIwLDcgQEAg
cHJvdGVjdGVkOgogICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW5xdWV1ZUV2ZW50KCkgY29uc3Q7CiAgICAgdm9pZCBvblN1
Y2Nlc3NJbnRlcm5hbChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwotICAgIHZv
aWQgb25TdWNjZXNzSW50ZXJuYWwoY29uc3QgU2NyaXB0VmFsdWUmKTsKKyAgICB2b2lkIG9uU3Vj
Y2Vzc0ludGVybmFsKGNvbnN0IEpTQzo6U2NyaXB0VmFsdWUmKTsKIAogICAgIFJlZlB0cjxJREJB
bnk+IG1fcmVzdWx0OwogICAgIHVuc2lnbmVkIHNob3J0IG1fZXJyb3JDb2RlOwpAQCAtMTQwLDcg
KzE0MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBP
VkVSUklERSBGSU5BTCB7IGRlcmVmKCk7IH0KIAogICAgIFBhc3NSZWZQdHI8SURCQ3Vyc29yPiBn
ZXRSZXN1bHRDdXJzb3IoKTsKLSAgICB2b2lkIHNldFJlc3VsdEN1cnNvcihQYXNzUmVmUHRyPElE
QkN1cnNvcj4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlL
ZXksIGNvbnN0IFNjcmlwdFZhbHVlJik7CisgICAgdm9pZCBzZXRSZXN1bHRDdXJzb3IoUGFzc1Jl
ZlB0cjxJREJDdXJzb3I+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiBw
cmltYXJ5S2V5LCBjb25zdCBKU0M6OlNjcmlwdFZhbHVlJik7CiAKICAgICBSZWZQdHI8SURCQW55
PiBtX3NvdXJjZTsKICAgICBjb25zdCBJREJEYXRhYmFzZUJhY2tlbmQ6OlRhc2tUeXBlIG1fdGFz
a1R5cGU7CkBAIC0xNTUsNyArMTU1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SURCQ3Vyc29y
PiBtX3BlbmRpbmdDdXJzb3I7CiAgICAgUmVmUHRyPElEQktleT4gbV9jdXJzb3JLZXk7CiAgICAg
UmVmUHRyPElEQktleT4gbV9jdXJzb3JQcmltYXJ5S2V5OwotICAgIFNjcmlwdFZhbHVlIG1fY3Vy
c29yVmFsdWU7CisgICAgSlNDOjpTY3JpcHRWYWx1ZSBtX2N1cnNvclZhbHVlOwogICAgIGJvb2wg
bV9kaWRGaXJlVXBncmFkZU5lZWRlZEV2ZW50OwogICAgIGJvb2wgbV9wcmV2ZW50UHJvcGFnYXRp
b247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2Fw
YWJpbGl0eVJhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2Fw
YWJpbGl0eVJhbmdlLmNwcAppbmRleCAwZDNkMjZlLi5mNjc2OGUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuY3BwCkBA
IC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJN
ZWRpYVNvdXJjZVN0YXRlcy5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8
YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxpbnRlcnByZXRlci9DYWxsRnJhbWUu
aD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmgKaW5kZXggMzY4NDA2
Ni4uMDE2Nzk3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9DYXBhYmlsaXR5UmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL0NhcGFiaWxpdHlSYW5nZS5oCkBAIC0zMCw4ICszMCw4IEBACiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKIAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmgiCi0j
aW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKKyNp
bmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPGludGVycHJldGVyL0Nh
bGxGcmFtZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTQzLDggKzQzLDgg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZlB0cjxDYXBhYmlsaXR5UmFuZ2U+IGNyZWF0ZShj
b25zdCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSYpOwogCi0gICAgU2NyaXB0VmFs
dWUgbWluKEpTQzo6RXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgU2NyaXB0VmFsdWUgbWF4KEpTQzo6
RXhlY1N0YXRlKikgY29uc3Q7CisgICAgSlNDOjpTY3JpcHRWYWx1ZSBtaW4oSlNDOjpFeGVjU3Rh
dGUqKSBjb25zdDsKKyAgICBKU0M6OlNjcmlwdFZhbHVlIG1heChKU0M6OkV4ZWNTdGF0ZSopIGNv
bnN0OwogICAgIGJvb2wgc3VwcG9ydGVkKCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZUluZm8uc3Vw
cG9ydGVkKCk7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwCmluZGV4IDgy
Yjg2ZTkuLjBjMjkzNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lu
cy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcApAQCAtNDEsNyArNDEs
NiBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCiAjaW5j
bHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2lu
Y2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJVc2VyQWdlbnRTY3JpcHRzLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQu
aAppbmRleCBkYWFlN2IxLi41YTE5MDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaApAQCAtMjgs
NyArMjgsNyBAQAogCiAjaW5jbHVkZSAiUGx1Z2luUmVwbGFjZW1lbnQuaCIKICNpbmNsdWRlICJT
Y3JpcHRTdGF0ZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8YmluZGlu
Z3MvU2NyaXB0T2JqZWN0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVXNl
SlNDLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCmluZGV4IGE5NzFmYTAuLjBl
OGZmOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKQEAgLTEyNSwxMSArMTI1LDEwIEBAIGxpc3QoQVBQRU5E
IFdlYkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCiAg
ICAgYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCiAgICAgYmluZGluZ3MvanMvU2Ny
aXB0RnVuY3Rpb25DYWxsLmNwcAotICAgIGJpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHAKKyAg
ICBiaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuY3BwCiAgICAgYmluZGluZ3MvanMvU2Ny
aXB0UHJvZmlsZS5jcHAKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5jcHAKICAgICBi
aW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKLSAgICBiaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5j
cHAKICAgICBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCiAgICAgYmluZGlu
Z3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CmluZGV4IDlkZDEyNTcuLjg4N2I1MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xNDI5LDcg
KzE0MjksNiBAQCBfX1pOSzdXZWJDb3JlMTFSZW5kZXJMYXllcjI0bmVlZHNDb21wb3NpdGVkU2Ny
b2xsaW5nRXYKIF9fWk5LN1dlYkNvcmUxMVJlbmRlclN0eWxlMTFmb250TWV0cmljc0V2CiBfX1pO
SzdXZWJDb3JlMTFSZW5kZXJTdHlsZTIxdmlzaXRlZERlcGVuZGVudENvbG9yRWkKIF9fWk5LN1dl
YkNvcmUxMVJlbmRlclN0eWxlNGZvbnRFdgotX19aTks3V2ViQ29yZTExU2NyaXB0VmFsdWU5Z2V0
U3RyaW5nRVBOM0pTQzlFeGVjU3RhdGVFUk4zV1RGNlN0cmluZ0UKIF9fWk5LN1dlYkNvcmUxMlJl
bmRlck9iamVjdDE0ZW5jbG9zaW5nTGF5ZXJFdgogX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0
MTVsb2NhbFRvQWJzb2x1dGVFUktOU18xMEZsb2F0UG9pbnRFagogX19aTks3V2ViQ29yZTEyUmVu
ZGVyT2JqZWN0MTZyZXBhaW50UmVjdGFuZ2xlRVJLTlNfMTBMYXlvdXRSZWN0RWIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IDJmYThjOTYu
LmIyOWVmZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvagpAQCAtMTcyODgsNyArMTcyODgsNyBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxX
aW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4
NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdE9iamVjdC5jcHAiIC8+CisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRHbG9iYWxPYmplY3QuY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0UHJvZmls
ZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRQ
cm9maWxlci5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KQEAgLTE3MzE4LDcgKzE3MzE4LDYgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258
V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258
eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRWYWx1ZS5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTIw
NjA3LDEzICsyMDYwNiwxMiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3Nc
anNcU2NyaXB0RGVidWdTZXJ2ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJp
bmRpbmdzXGpzXFNjcmlwdEZ1bmN0aW9uQ2FsbC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0SGVhcFNuYXBzaG90LmgiIC8+Ci0gICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRPYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdEdsb2JhbE9iamVjdC5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0UHJvZmlsZS5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0UHJvZmlsZU5vZGUu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdFByb2Zp
bGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRT
b3VyY2VDb2RlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xT
Y3JpcHRTdGF0ZS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNc
U2NyaXB0VmFsdWUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpz
XFNjcmlwdFdyYXBwYWJsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGlu
Z3NcanNcU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxiaW5kaW5nc1xqc1xTb3VyY2VJRC5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IDU0NTQwZGEu
LjExZDkwYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTQ1NjMsNyArNDU2Myw3IEBACiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIj4KICAg
ICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdE9iamVjdC5jcHAiPgorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0R2xvYmFsT2JqZWN0LmNw
cCI+CiAgICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRQcm9maWxlLmNw
cCI+CkBAIC00NTc1LDkgKzQ1NzUsNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmlu
ZGluZ3NcanNcU2NyaXB0U3RhdGUuY3BwIj4KICAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0Zp
bHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRp
bmdzXGpzXFNjcmlwdFZhbHVlLmNwcCI+Ci0gICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0
ZXI+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5n
c1xqc1xTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIj4KICAgICAgIDxGaWx0ZXI+YmluZGluZ3Nc
anM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTExNTAyLDcgKzExNDk5LDcgQEAKICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdEhlYXBTbmFwc2hvdC5o
Ij4KICAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4K
LSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdE9iamVjdC5oIj4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdEdsb2JhbE9iamVj
dC5oIj4KICAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVk
ZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdFByb2ZpbGUu
aCI+CkBAIC0xMTUyMCw5ICsxMTUxNyw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxi
aW5kaW5nc1xqc1xTY3JpcHRTdGF0ZS5oIj4KICAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0Zp
bHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRp
bmdzXGpzXFNjcmlwdFZhbHVlLmgiPgotICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVy
PgotICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3Nc
anNcU2NyaXB0V3JhcHBhYmxlLmgiPgogICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVy
PgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDhmZGM0MGQuLjY5Mzc2MTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyOTEsOCAr
MTI5MSw4IEBACiAJCTQxRjA2MThGMEY1RjA2OTgwMEEwN0VBQyAvKiBDb25zb2xlTWVzc2FnZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjE4
RDBGNUYwNjk4MDBBMDdFQUMgLyogQ29uc29sZU1lc3NhZ2UuY3BwICovOyB9OwogCQk0MUYwNjIx
NDBGNUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGMDYyMTIwRjVGMTkyNjAw
QTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCAqLzsgfTsKIAkJNDFGMDYyMTUw
RjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGMDYyMTMwRjVGMTkyNjAw
QTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwICovOyB9OwotCQk0MUYwNjZF
NDBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjZFMjBGNjRCQ0Y2MDBBMDdFQUMgLyogU2Ny
aXB0T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKLQkJNDFGMDY2RTUwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdE9iamVjdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjZFMzBGNjRCQ0Y2
MDBBMDdFQUMgLyogU2NyaXB0T2JqZWN0LmNwcCAqLzsgfTsKKwkJNDFGMDY2RTQwRjY0QkNGNjAw
QTA3RUFDIC8qIFNjcmlwdEdsb2JhbE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGMDY2RTIwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdEds
b2JhbE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTQxRjA2NkU1MEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRHbG9iYWxPYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGMDY2RTMw
RjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdEdsb2JhbE9iamVjdC5jcHAgKi87IH07CiAJCTQxRjFE
MjFGMEVGMzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURhdGEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjFEMjFEMEVGMzVDMkEwMERB
ODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUYxRDIyMDBFRjM1QzJBMDBEQTg3NTMgLyogU2Ny
aXB0Q2FjaGVkRnJhbWVEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxRjFEMjFFMEVGMzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFt
ZURhdGEuY3BwICovOyB9OwogCQk0MUY1ODRDNzEwNDY1MkNCMDA5Q0FBNjQgLyogSlNNZXNzYWdl
UG9ydEN1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDFGNTg0QzYxMDQ2NTJDQjAwOUNBQTY0IC8qIEpTTWVzc2FnZVBvcnRDdXN0b20uaCAqLzsg
fTsKQEAgLTMwMTcsOCArMzAxNyw2IEBACiAJCTkzNDQyQzlFMEQyQjMzNUMwMDMzOEZGOSAvKiBI
VE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTM0NDJDOUQwRDJCMzM1QzAwMzM4RkY5IC8qIEhUTUxUYWJsZVJvd3ND
b2xsZWN0aW9uLmggKi87IH07CiAJCTkzNDQyQ0EwMEQyQjMzNjAwMDMzOEZGOSAvKiBIVE1MVGFi
bGVSb3dzQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5MzQ0MkM5RjBEMkIzMzYwMDAzMzhGRjkgLyogSFRNTFRhYmxlUm93c0NvbGxl
Y3Rpb24uY3BwICovOyB9OwogCQk5MzQ5MDdFNDEyNUJCQkM4MDA3RjIzQTAgLyogR3JhcGhpY3ND
b250ZXh0Q0cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzNDkwN0UzMTI1QkJCQzgwMDdGMjNBMCAvKiBHcmFwaGljc0NvbnRleHRDRy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTkzNENDMEUxMEVEMzlE
NkYwMEE2NThGMiAvKiBTY3JpcHRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5MzRDQzBERjBFRDM5RDZGMDBBNjU4RjIgLyogU2NyaXB0VmFs
dWUuY3BwICovOyB9OwotCQk5MzRDQzBFMjBFRDM5RDZGMDBBNjU4RjIgLyogU2NyaXB0VmFsdWUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNENDMEUw
MEVEMzlENkYwMEE2NThGMiAvKiBTY3JpcHRWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzNENDMTBBMEVEQjIyMzkwMEE2NThGMiAvKiBT
Y3JpcHRTb3VyY2VDb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MzRDQzEwOTBFREIyMjM5MDBBNjU4RjIgLyogU2NyaXB0U291cmNlQ29kZS5oICov
OyB9OwogCQk5MzREOUJBNTBCOEMxMTZCMDA3QjQyQTkgLyogV2ViQ29yZU5TU3RyaW5nRXh0cmFz
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0RDlC
QTQwQjhDMTE2QjAwN0I0MkE5IC8qIFdlYkNvcmVOU1N0cmluZ0V4dHJhcy5tbSAqLzsgfTsKIAkJ
OTM0RDlCQTcwQjhDMTE3NTAwN0I0MkE5IC8qIFdlYkNvcmVOU1N0cmluZ0V4dHJhcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0RDlCQTYwQjhDMTE3
NTAwN0I0MkE5IC8qIFdlYkNvcmVOU1N0cmluZ0V4dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03NzIxLDggKzc3MTksOCBAQAogCQkzMTQ2
RkU2NTE4NDQyMDg3MDAxQTkzN0MgLyogT0VTVGV4dHVyZUZsb2F0TGluZWFyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE9FU1RleHR1cmVGbG9hdExpbmVhci5jcHA7
IHBhdGggPSBjYW52YXMvT0VTVGV4dHVyZUZsb2F0TGluZWFyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzE0NkZFNjYxODQ0MjA4NzAwMUE5MzdDIC8qIE9FU1RleHR1cmVGbG9h
dExpbmVhci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBPRVNUZXh0dXJlRmxv
YXRMaW5lYXIuaDsgcGF0aCA9IGNhbnZhcy9PRVNUZXh0dXJlRmxvYXRMaW5lYXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE0NkZFNjcxODQ0MjA4NzAwMUE5MzdDIC8qIE9FU1Rl
eHR1cmVGbG9hdExpbmVhci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gT0VTVGV4dHVyZUZs
b2F0TGluZWFyLmlkbDsgcGF0aCA9IGNhbnZhcy9PRVNUZXh0dXJlRmxvYXRMaW5lYXIuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTQ2RkU3MDE4NDQyMzY3MDAxQTkzN0MgLyog
SlNPRVNUZXh0dXJlRmxvYXRMaW5lYXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gSlNPRVNUZXh0dXJlRmxvYXRMaW5lYXIuY3BwOyBwYXRoID0gSlNPRVNUZXh0dXJl
RmxvYXRMaW5lYXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTQ2RkU3MTE4
NDQyMzY3MDAxQTkzN0MgLyogSlNPRVNUZXh0dXJlRmxvYXRMaW5lYXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gSlNPRVNUZXh0dXJlRmxvYXRMaW5lYXIuaDsgcGF0aCA9IEpT
T0VTVGV4dHVyZUZsb2F0TGluZWFyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMx
NDZGRTcwMTg0NDIzNjcwMDFBOTM3QyAvKiBKU09FU1RleHR1cmVGbG9hdExpbmVhci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU09FU1RleHR1cmVGbG9hdExpbmVh
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNDZGRTcxMTg0NDIzNjcwMDFB
OTM3QyAvKiBKU09FU1RleHR1cmVGbG9hdExpbmVhci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU09FU1RleHR1cmVGbG9hdExpbmVhci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzMTYwMjNFRjE1MzJDNDBDMDBENTBGRjQgLyogRGljdGlvbmFyeS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaWN0aW9uYXJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTMxNjExRTU0MEUxQzRENEEwMEY2QTU3OSAvKiBXZWJLaXRDU1NUcmFu
c2Zvcm1WYWx1ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0Q1NTVHJhbnNmb3Jt
VmFsdWUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTYxMUU1ODBFMUM0REUw
MDBGNkE1NzkgLyogSlNXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc5NjcsOCArNzk2NSw4IEBACiAJCTQxRjA2MThE
MEY1RjA2OTgwMEEwN0VBQyAvKiBDb25zb2xlTWVzc2FnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDb25zb2xlTWVzc2FnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxRjA2MjEyMEY1RjE5MjYwMEEwN0VBQyAvKiBJbnNwZWN0b3JEYXRhYmFz
ZVJlc291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckRh
dGFiYXNlUmVzb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGMDYyMTMw
RjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxRjA2NkUyMEY2NEJDRjYwMEEwN0VB
QyAvKiBTY3JpcHRPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Ny
aXB0T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxRjA2NkUzMEY2NEJD
RjYwMEEwN0VBQyAvKiBTY3JpcHRPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2NyaXB0T2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDFGMDY2RTIwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdEdsb2JhbE9iamVjdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRHbG9iYWxPYmplY3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGMDY2RTMwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlw
dEdsb2JhbE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
Y3JpcHRHbG9iYWxPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUYx
RDIxRDBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdENhY2hlZEZyYW1lRGF0YS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MUYxRDIxRTBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0
Q2FjaGVkRnJhbWVEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxRjU4NEM2MTA0NjUyQ0IwMDlDQUE2NCAvKiBKU01lc3NhZ2VQb3J0Q3VzdG9tLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVzc2FnZVBvcnRDdXN0b20uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk3ODYsOCArOTc4NCw2IEBACiAJCTkzNDQyQzlEMEQy
QjMzNUMwMDMzOEZGOSAvKiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5MzQ0MkM5RjBEMkIzMzYwMDAzMzhGRjkgLyogSFRNTFRhYmxl
Um93c0NvbGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5MzQ5MDdFMzEyNUJCQkM4MDA3RjIzQTAgLyogR3JhcGhpY3NDb250ZXh0Q0cuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0Q0cuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTM0Q0MwREYwRUQzOUQ2RjAwQTY1OEYyIC8qIFNjcmlwdFZh
bHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdFZhbHVl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTM0Q0MwRTAwRUQzOUQ2RjAwQTY1
OEYyIC8qIFNjcmlwdFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNj
cmlwdFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNENDMTA5MEVEQjIy
MzkwMEE2NThGMiAvKiBTY3JpcHRTb3VyY2VDb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNjcmlwdFNvdXJjZUNvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTM0RDlCQTQwQjhDMTE2QjAwN0I0MkE5IC8qIFdlYkNvcmVOU1N0cmluZ0V4dHJhcy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlTlNTdHJpbmdF
eHRyYXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNEQ5QkE2MEI4QzExNzUw
MDdCNDJBOSAvKiBXZWJDb3JlTlNTdHJpbmdFeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkNvcmVOU1N0cmluZ0V4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTk2MzAsOCArMTk2MjYsOCBAQAogCQkJCTQxMDAyQ0NDMEY2NkVERUYwMDlF
NjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwICovLAogCQkJCTQxMDAyQ0NCMEY2NkVERUYw
MDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCAqLywKIAkJCQk5RjNCOTQ3RDEyMjQxNzU4
MDA1MzA0RTcgLyogU2NyaXB0SGVhcFNuYXBzaG90LmggKi8sCi0JCQkJNDFGMDY2RTMwRjY0QkNG
NjAwQTA3RUFDIC8qIFNjcmlwdE9iamVjdC5jcHAgKi8sCi0JCQkJNDFGMDY2RTIwRjY0QkNGNjAw
QTA3RUFDIC8qIFNjcmlwdE9iamVjdC5oICovLAorCQkJCTQxRjA2NkUzMEY2NEJDRjYwMEEwN0VB
QyAvKiBTY3JpcHRHbG9iYWxPYmplY3QuY3BwICovLAorCQkJCTQxRjA2NkUyMEY2NEJDRjYwMEEw
N0VBQyAvKiBTY3JpcHRHbG9iYWxPYmplY3QuaCAqLywKIAkJCQlGMzNGMDI4MTEyMDk0N0YyMDBF
NTc0M0EgLyogU2NyaXB0UHJvZmlsZS5jcHAgKi8sCiAJCQkJOUY3MjMwNEMxMTE4NEI0MTAwQUQw
MTI2IC8qIFNjcmlwdFByb2ZpbGUuaCAqLywKIAkJCQk5RkEzN0VFMzExNzJGQzgwMDBDNENENTUg
LyogU2NyaXB0UHJvZmlsZU5vZGUuaCAqLywKQEAgLTE5NjQwLDggKzE5NjM2LDYgQEAKIAkJCQk5
MzRDQzEwOTBFREIyMjM5MDBBNjU4RjIgLyogU2NyaXB0U291cmNlQ29kZS5oICovLAogCQkJCTQx
MjdENTM2MEY4QUFCMUQwMEU0MjRGNSAvKiBTY3JpcHRTdGF0ZS5jcHAgKi8sCiAJCQkJNDFDNzYw
QjAwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggKi8sCi0JCQkJOTM0Q0MwREYwRUQz
OUQ2RjAwQTY1OEYyIC8qIFNjcmlwdFZhbHVlLmNwcCAqLywKLQkJCQk5MzRDQzBFMDBFRDM5RDZG
MDBBNjU4RjIgLyogU2NyaXB0VmFsdWUuaCAqLywKIAkJCQkyMjhDMjg0NDEwRDgyNTAwMDA5RDBE
MEUgLyogU2NyaXB0V3JhcHBhYmxlLmggKi8sCiAJCQkJMTQwMEQ3QTcxNzEzNkVBNzAwNzdDRTA1
IC8qIFNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCAqLywKIAkJCQlBNzVFNDk3NTEwNzUyQUNCMDBD
OUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCAqLywKQEAgLTI0NDkxLDcgKzI0NDg1
LDcgQEAKIAkJCQlDREQ3MDg5NzE4MzU5RjZGMDAyQjNEQzYgLyogU2FtcGxlTWFwLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTAwMkNDRDBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25D
YWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5RjNCOTQ3RTEyMjQxNzU4MDA1MzA0RTcgLyogU2Ny
aXB0SGVhcFNuYXBzaG90LmggaW4gSGVhZGVycyAqLywKLQkJCQk0MUYwNjZFNDBGNjRCQ0Y2MDBB
MDdFQUMgLyogU2NyaXB0T2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUYwNjZFNDBGNjRC
Q0Y2MDBBMDdFQUMgLyogU2NyaXB0R2xvYmFsT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RDMxNjAzNjEyQjAyNjc2MDBDMUEzNTkgLyogU2NyaXB0UHJvY2Vzc29yTm9kZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOUY3MjMwNEYxMTE4NEI0MTAwQUQwMTI2IC8qIFNjcmlwdFByb2ZpbGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTlGQTM3RUU0MTE3MkZDODAwMEM0Q0Q1NSAvKiBTY3JpcHRQcm9m
aWxlTm9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDQ5OSw3ICsyNDQ5Myw2IEBACiAJCQkJOEE0
MTNBRTAxMjA3QkJBNTAwODIwMTZFIC8qIFNjcmlwdFJ1bm5lci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTM0Q0MxMEEwRURCMjIzOTAwQTY1OEYyIC8qIFNjcmlwdFNvdXJjZUNvZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxQzc2MEIxMEVERTAzRDMwMEMxNjU1RiAvKiBTY3JpcHRTdGF0ZS5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJOTM0Q0MwRTIwRUQzOUQ2RjAwQTY1OEYyIC8qIFNjcmlwdFZhbHVl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkyMjhDMjg0NTEwRDgyNTAwMDA5RDBEMEUgLyogU2NyaXB0
V3JhcHBhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDAwRDdBODE3MTM2RUE3MDA3N0NFMDUg
LyogU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4QUUzNEYx
MkVBMDk2QTAwRUIzQUU2IC8qIFNjcm9sbGFibGVBcmVhLmggaW4gSGVhZGVycyAqLywKQEAgLTI3
NzI2LDEzICsyNzcxOSwxMiBAQAogCQkJCTA4QTQ4NDc3MEU1MjcyQzUwMEMzRkU3NiAvKiBTY3Jp
cHRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxMUM5REIwMEVCMzY5OTUwMEU0MDlE
QiAvKiBTY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxMDAy
Q0NFMEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJNDFGMDY2RTUwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdE9iamVjdC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk0MUYwNjZFNTBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0R2xvYmFs
T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MDM1MTJCMDI2NzYwMEMxQTM1OSAv
KiBTY3JpcHRQcm9jZXNzb3JOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUYzM0YwMjgyMTIw
OTQ3RjIwMEU1NzQzQSAvKiBTY3JpcHRQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlG
NzIzMDUwMTExODRCNDEwMEFEMDEyNiAvKiBTY3JpcHRQcm9maWxlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk4QTQxM0FFMTEyMDdCQkE1MDA4MjAxNkUgLyogU2NyaXB0UnVubmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTQxMjdENTM3MEY4QUFCMUQwMEU0MjRGNSAvKiBTY3JpcHRTdGF0ZS5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQk5MzRDQzBFMTBFRDM5RDZGMDBBNjU4RjIgLyogU2NyaXB0
VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4QUUzNEUxMkVBMDk2QTAwRUIzQUU2IC8q
IFNjcm9sbGFibGVBcmVhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNBM0JGNjdDMTBEOTlCQUUw
MEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzUxMTU2
RTEyQjE3NDlDMDBDOTY3NTQgLyogU2Nyb2xsQW5pbWF0b3JNYWMubW0gaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaAppbmRleCA5NGRhODc4Li5iNWU2
NzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5oCkBAIC0zMCw3ICsz
MCw3IEBACiAjaW5jbHVkZSAiSlNEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiSlNFdmVudExpc3Rl
bmVyLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1
ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CkBAIC05Miw3ICs5Miw3IEBAIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5l
cj4gRGljdGlvbmFyeTo6Z2V0RXZlbnRMaXN0ZW5lcihjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUs
CiAgICAgaWYgKCFtX2RpY3Rpb25hcnkuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIFNjcmlwdFZhbHVlIGV2ZW50TGlzdGVuZXI7CisgICAgSlNDOjpTY3JpcHRWYWx1ZSBldmVu
dExpc3RlbmVyOwogICAgIGlmICghbV9kaWN0aW9uYXJ5LnRyeUdldFByb3BlcnR5KHByb3BlcnR5
TmFtZSwgZXZlbnRMaXN0ZW5lcikpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChldmVudExp
c3RlbmVyLmhhc05vVmFsdWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SURCQmluZGluZ1V0aWxpdGllcy5jcHAKaW5kZXggYjhmMWJjOC4uZmVjNDM3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKQEAg
LTI5OSw3ICsyOTksNyBAQCBTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVlKERPTVJlcXVl
c3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBQYXNzUmVmUHRyPFNlcmlhbAogICAgIEV4ZWNTdGF0ZSog
ZXhlYyA9IHJlcXVlc3RTdGF0ZS0+ZXhlYygpOwogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IHBycFZhbHVlOwogICAgIGlmIChzZXJpYWxpemVkVmFs
dWUpCi0gICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoZXhlYywgc2VyaWFs
aXplZFZhbHVlLmdldCgpLCBOb25UaHJvd2luZyk7CisgICAgICAgIHJldHVybiBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKGV4ZWMsIHNlcmlhbGl6ZWRWYWx1ZS5nZXQoKSwgTm9u
VGhyb3dpbmcpOwogICAgIHJldHVybiBTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBqc051bGwoKSk7
CiB9CiAKQEAgLTMxMiw3ICszMTIsNyBAQCBTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVl
QnVmZmVyKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBQYXNzUmVmUHRyPAogICAgICAg
ICBWZWN0b3I8dWludDhfdD4gdmFsdWU7CiAgICAgICAgIHZhbHVlLmFwcGVuZChidWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBzZXJpYWxpemVkVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21X
aXJlQnl0ZXModmFsdWUpOwotICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXpl
KGV4ZWMsIHNlcmlhbGl6ZWRWYWx1ZS5nZXQoKSwgTm9uVGhyb3dpbmcpOworICAgICAgICByZXR1
cm4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShleGVjLCBzZXJpYWxpemVkVmFs
dWUuZ2V0KCksIE5vblRocm93aW5nKTsKICAgICB9CiAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKGV4
ZWMtPnZtKCksIGpzTnVsbCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0lEQkJpbmRpbmdVdGlsaXRpZXMuaAppbmRleCA5MDhjN2ZkLi5hYWJjNzliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oCkBAIC0yOSw3
ICsyOSw3IEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKICNpbmNsdWRlICJEaWN0
aW9uYXJ5LmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9T
Y3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTQxLDEzICs0MSwxMyBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIElEQktleVBh
dGggaWRiS2V5UGF0aEZyb21WYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSk7CiAK
LWJvb2wgaW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSosIFBhc3NS
ZWZQdHI8SURCS2V5PiwgU2NyaXB0VmFsdWUmLCBjb25zdCBJREJLZXlQYXRoJik7Ci1QYXNzUmVm
UHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChET01SZXF1
ZXN0U3RhdGUqLCBjb25zdCBTY3JpcHRWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsKLWJvb2wg
Y2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSosIGNvbnN0IFNj
cmlwdFZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOwotU2NyaXB0VmFsdWUgZGVzZXJpYWxpemVJ
REJWYWx1ZShET01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4pOwotU2NyaXB0VmFsdWUgZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihET01SZXF1ZXN0U3Rh
dGUqLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pOwotU2NyaXB0VmFsdWUgaWRiS2V5VG9TY3Jp
cHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPElEQktleT4pOwotUGFzc1JlZlB0
cjxJREJLZXk+IHNjcmlwdFZhbHVlVG9JREJLZXkoRE9NUmVxdWVzdFN0YXRlKiwgY29uc3QgU2Ny
aXB0VmFsdWUmKTsKK2Jvb2wgaW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKERPTVJlcXVlc3RT
dGF0ZSosIFBhc3NSZWZQdHI8SURCS2V5PiwgSlNDOjpTY3JpcHRWYWx1ZSYsIGNvbnN0IElEQktl
eVBhdGgmKTsKK1Bhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVB
bmRLZXlQYXRoKERPTVJlcXVlc3RTdGF0ZSosIGNvbnN0IEpTQzo6U2NyaXB0VmFsdWUmLCBjb25z
dCBJREJLZXlQYXRoJik7Citib29sIGNhbkluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShET01S
ZXF1ZXN0U3RhdGUqLCBjb25zdCBKU0M6OlNjcmlwdFZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYp
OworSlNDOjpTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVlKERPTVJlcXVlc3RTdGF0ZSos
IFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CitKU0M6OlNjcmlwdFZhbHVlIGRl
c2VyaWFsaXplSURCVmFsdWVCdWZmZXIoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+KTsKK0pTQzo6U2NyaXB0VmFsdWUgaWRiS2V5VG9TY3JpcHRWYWx1ZShET01SZXF1
ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPElEQktleT4pOworUGFzc1JlZlB0cjxJREJLZXk+IHNjcmlw
dFZhbHVlVG9JREJLZXkoRE9NUmVxdWVzdFN0YXRlKiwgY29uc3QgSlNDOjpTY3JpcHRWYWx1ZSYp
OwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlv
bmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCmlu
ZGV4IDdlZGIxZDUuLjE0OGU1YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
aWN0aW9uYXJ5LmNwcApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIkpTU3RvcmFnZS5oIgog
I2luY2x1ZGUgIkpTVHJhY2tDdXN0b20uaCIKICNpbmNsdWRlICJKU1ZvaWRDYWxsYmFjay5oIgot
I2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU1R5cGVkQXJyYXlzLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlv
bmFyeS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmgKaW5kZXgg
YTI5MDU2Zi4uMzdjZmEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNEaWN0aW9uYXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9u
YXJ5LmgKQEAgLTM0LDYgKzM0LDEwIEBACiAjaW5jbHVkZSA8cnVudGltZS9VaW50OEFycmF5Lmg+
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBTY3Jp
cHRWYWx1ZTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBcnJheVZhbHVlOwpA
QCAtNDYsNyArNTAsNiBAQCBjbGFzcyBNZWRpYUtleUVycm9yOwogY2xhc3MgTWVkaWFTdHJlYW07
CiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrOwogY2xhc3MgTm9kZTsKLWNsYXNzIFNjcmlwdFZhbHVl
OwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogY2xhc3MgU3RvcmFnZTsKIGNsYXNzIFRy
YWNrQmFzZTsKQEAgLTEwOCw3ICsxMTEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGNv
bnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgZG91YmxlJiByZXN1bHQp
OwogICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNW
YWx1ZSwgRGljdGlvbmFyeSYgcmVzdWx0KTsKICAgICBzdGF0aWMgdm9pZCBjb252ZXJ0VmFsdWUo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIFN0cmluZyYgcmVzdWx0KTsKLSAgICBzdGF0
aWMgdm9pZCBjb252ZXJ0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIFNjcmlw
dFZhbHVlJiByZXN1bHQpOworICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpTY3JpcHRWYWx1ZSYgcmVzdWx0KTsKICAgICBzdGF0
aWMgdm9pZCBjb252ZXJ0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIFZlY3Rv
cjxTdHJpbmc+JiByZXN1bHQpOwogICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRWYWx1ZShKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mIHJl
c3VsdCk7CiAgICAgc3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpKU1ZhbHVlLCBSZWZQdHI8RE9NV2luZG93PiYgcmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAKaW5k
ZXggZmU2YzhiYS4uMTAzMWIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAKQEAgLTMxLDEzICszMSwxNCBA
QAogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2Fu
dmFzSW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3Jp
cHRPYmplY3QuaD4KKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CisKICNpZiBFTkFCTEUoV0VCR0wp
CiAjaW5jbHVkZSAiSlNEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiSlNXZWJHTFJlbmRlcmluZ0Nv
bnRleHQuaCIKICNpbmNsdWRlICJXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmgiCiAjZW5kaWYKLSNp
bmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3Vz
dG9tLmNwcAppbmRleCA4M2Q1OTVmLi5hYWI1ODY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCkBAIC01
MCw4ICs1MCw4IEBACiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAiSlNOb2RlTGlzdC5o
IgogI2luY2x1ZGUgIkpTU3RvcmFnZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5j
bHVkZSAiU3RvcmFnZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5j
bHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHBhcnNlci9Tb3Vy
Y2VDb2RlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9EYXRlSW5zdGFuY2UuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApp
bmRleCAyZGJlMmRlLi5iNDgyM2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBACiAj
aW5jbHVkZSAiSlNET01XaW5kb3dDdXN0b20uaCIKICNpbmNsdWRlICJKU0luamVjdGVkU2NyaXB0
SG9zdC5oIgogI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgotI2luY2x1ZGUgIlNj
cmlwdE9iamVjdC5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgogI2luY2x1
ZGUgPHBhcnNlci9Tb3VyY2VDb2RlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKaW5kZXgg
MDZjNTFjYS4uOTE3M2VkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NoZWR1bGVkQWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hl
ZHVsZWRBY3Rpb24uY3BwCkBAIC0zNyw5ICszNyw5IEBACiAjaW5jbHVkZSAiU2NyaXB0Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJT
Y3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJX
b3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorI2luY2x1ZGUg
PGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KIAog
dXNpbmcgbmFtZXNwYWNlIEpTQzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKaW5kZXggNWQ2NmM0ZC4uMDdlNTM2YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9y
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFj
dG9yeS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIK
ICNpbmNsdWRlICJTY3JpcHRDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2su
aCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZh
bHVlLmg+CiAjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg+CiAjaW5jbHVkZSA8aW50
ZXJwcmV0ZXIvQ2FsbEZyYW1lSW5saW5lcy5oPgogI2luY2x1ZGUgPGludGVycHJldGVyL1N0YWNr
VmlzaXRvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcAppbmRleCAyYzNlZjkzYWYuLmY2YjM2NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC00MCw3ICs0MCw2IEBACiAjaW5j
bHVkZSAiUGx1Z2luVmlldy5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1
ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1
ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAj
aW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZS5oIgpAQCAtNDgsNiArNDcsNyBAQAogI2luY2x1ZGUg
IldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgogI2lu
Y2x1ZGUgInJ1bnRpbWVfcm9vdC5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+
CiAjaW5jbHVkZSA8ZGVidWdnZXIvRGVidWdnZXIuaD4KICNpbmNsdWRlIDxoZWFwL1N0cm9uZ0lu
bGluZXMuaD4KICNpbmNsdWRlIDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAppbmRleCAzNjZiNzI0
Li45OGU0YjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5oCkBAIC00MSw2ICs0MSw3IEBAIHN0cnVjdCBOUE9iamVjdDsKIG5hbWVzcGFjZSBKU0Mg
ewogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEV4ZWNTdGF0ZTsKKyAgICBj
bGFzcyBTY3JpcHRWYWx1ZTsKIAogICAgIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAgICAgICAgIGNs
YXNzIEluc3RhbmNlOwpAQCAtNTMsNyArNTQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBIVE1MUGx1Z0luRWxlbWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgU2NyaXB0U291cmNlQ29k
ZTsKLWNsYXNzIFNjcmlwdFZhbHVlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBXaWRn
ZXQ7CiAKQEAgLTk0LDkgKzk0LDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgZ2V0QWxs
V29ybGRzKFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4mKTsKIAotICAgIFNjcmlwdFZhbHVl
IGV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYpOwotICAgIFNjcmlwdFZhbHVl
IGV4ZWN1dGVTY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVy
ZSA9IGZhbHNlKTsKLSAgICBTY3JpcHRWYWx1ZSBleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFw
cGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0g
ZmFsc2UpOworICAgIEpTQzo6U2NyaXB0VmFsdWUgZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRT
b3VyY2VDb2RlJik7CisgICAgSlNDOjpTY3JpcHRWYWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFN0
cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUgPSBmYWxzZSk7CisgICAgSlNDOjpT
Y3JpcHRWYWx1ZSBleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBjb25zdCBT
dHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOwogCiAgICAgLy8g
UmV0dXJucyB0cnVlIGlmIGFyZ3VtZW50IGlzIGEgSmF2YVNjcmlwdCBVUkwuCiAgICAgYm9vbCBl
eGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYsIFNob3VsZFJlcGxhY2VEb2N1bWVudElm
SmF2YVNjcmlwdFVSTCBzaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgPSBSZXBs
YWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwpOwpAQCAtMTA1LDggKzEwNSw4IEBAIHB1YmxpYzoK
ICAgICAvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVsZTogaXQgaXMgT0sgdG8g
Y2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20gYW55IHRocmVhZCwgZXZlbiByZWVudHJhbnRseS4KICAg
ICBzdGF0aWMgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CiAKLSAgICBTY3JpcHRWYWx1ZSBl
dmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7Ci0gICAgU2NyaXB0VmFsdWUgZXZhbHVh
dGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmKTsKKyAg
ICBKU0M6OlNjcmlwdFZhbHVlIGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKKyAg
ICBKU0M6OlNjcmlwdFZhbHVlIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2Rl
JiwgRE9NV3JhcHBlcldvcmxkJik7CiAKICAgICBXVEY6OlRleHRQb3NpdGlvbiBldmVudEhhbmRs
ZXJQb3NpdGlvbigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggYWRiNTc3OC4uMjllZmQwNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtNDEsOCAr
NDEsOCBAQAogI2luY2x1ZGUgIlBhZ2VDb25zb2xlLmgiCiAjaW5jbHVkZSAiU2NyaXB0QnJlYWtw
b2ludC5oIgogI2luY2x1ZGUgIlNjcmlwdERlYnVnTGlzdGVuZXIuaCIKLSNpbmNsdWRlICJTY3Jp
cHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNvdW5kLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0
VmFsdWUuaD4KICNpbmNsdWRlIDxkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oPgogI2luY2x1
ZGUgPHBhcnNlci9Tb3VyY2VQcm92aWRlci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZl
ci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRl
eCAyZmU5YWRhLi4wMDFlZmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdERlYnVnU2VydmVyLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJTY3JpcHREZWJ1
Z0xpc3RlbmVyLmgiCiAjaW5jbHVkZSAiU291cmNlSUQuaCIKICNpbmNsdWRlICJUaW1lci5oIgor
I2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgogI2luY2x1ZGUgPGRlYnVnZ2VyL0Rl
YnVnZ2VyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgpAQCAtNTAsMTIgKzUxLDkgQEAgY2xhc3MgRGVidWdnZXJDYWxsRnJhbWU7CiBjbGFzcyBK
U0dsb2JhbE9iamVjdDsKIGNsYXNzIEV4ZWNTdGF0ZTsKIH0KKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBTY3JpcHREZWJ1Z0xpc3RlbmVyOwotY2xhc3MgU2NyaXB0T2JqZWN0OwotY2xh
c3MgU2NyaXB0VmFsdWU7Ci0KIGNsYXNzIFNjcmlwdERlYnVnU2VydmVyIDogcHVibGljIEpTQzo6
RGVidWdnZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjcmlwdERlYnVnU2VydmVyKTsg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC02NCw4ICs2Miw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNsZWFyQnJlYWtwb2ludHMoKTsKIAogICAgIGJvb2wgY2FuU2V0U2NyaXB0
U291cmNlKCk7Ci0gICAgYm9vbCBzZXRTY3JpcHRTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2VJ
RCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBib29sIHByZXZpZXcsIFN0cmluZyogZXJyb3Is
IFNjcmlwdFZhbHVlKiBuZXdDYWxsRnJhbWVzLCBTY3JpcHRPYmplY3QqIHJlc3VsdCk7Ci0gICAg
dm9pZCB1cGRhdGVDYWxsU3RhY2soU2NyaXB0VmFsdWUqIGNhbGxGcmFtZSk7CisgICAgYm9vbCBz
ZXRTY3JpcHRTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU3RyaW5nJiBuZXdD
b250ZW50LCBib29sIHByZXZpZXcsIFN0cmluZyogZXJyb3IsIEpTQzo6U2NyaXB0VmFsdWUqIG5l
d0NhbGxGcmFtZXMsIEpTQzo6U2NyaXB0T2JqZWN0KiByZXN1bHQpOworICAgIHZvaWQgdXBkYXRl
Q2FsbFN0YWNrKEpTQzo6U2NyaXB0VmFsdWUqIGNhbGxGcmFtZSk7CiAKICAgICBib29sIGNhdXNl
c1JlY29tcGlsYXRpb24oKSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBzdXBwb3J0c1NlcGFy
YXRlU2NyaXB0Q29tcGlsYXRpb25BbmRFeGVjdXRpb24oKSB7IHJldHVybiBmYWxzZTsgfQpAQCAt
ODIsNyArODAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNvbXBpbGVTY3JpcHQoSlNDOjpFeGVj
U3RhdGUqLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
LCBTdHJpbmcqIHNjcmlwdElELCBTdHJpbmcqIGV4Y2VwdGlvbk1lc3NhZ2UpOwogICAgIHZvaWQg
Y2xlYXJDb21waWxlZFNjcmlwdHMoKTsKLSAgICB2b2lkIHJ1blNjcmlwdChKU0M6OkV4ZWNTdGF0
ZSosIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIFNjcmlwdFZhbHVlKiByZXN1bHQsIGJvb2wqIHdh
c1Rocm93biwgU3RyaW5nKiBleGNlcHRpb25NZXNzYWdlKTsKKyAgICB2b2lkIHJ1blNjcmlwdChK
U0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIEpTQzo6U2NyaXB0VmFsdWUq
IHJlc3VsdCwgYm9vbCogd2FzVGhyb3duLCBTdHJpbmcqIGV4Y2VwdGlvbk1lc3NhZ2UpOwogCiAg
ICAgY2xhc3MgVGFzayB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKaW5kZXgg
MDE0NmIyZS4uODMwYWZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0RnVuY3Rpb25DYWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRGdW5jdGlvbkNhbGwuY3BwCkBAIC0zMyw4ICszMyw3IEBACiAKICNpbmNsdWRlICJKU0RP
TUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKLSNpbmNsdWRl
ICJTY3JpcHRWYWx1ZS5oIgotCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNp
bmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlv
bkNhbGwuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5o
CmluZGV4IGFhZWNiOWQuLmY1ZTZhZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oCkBAIC0zMSwyNSArMzEsMjMgQEAKICNpZm5kZWYgU2Ny
aXB0RnVuY3Rpb25DYWxsX2gKICNkZWZpbmUgU2NyaXB0RnVuY3Rpb25DYWxsX2gKIAotI2luY2x1
ZGUgIlNjcmlwdE9iamVjdC5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCi0KKyNpbmNsdWRl
IDxiaW5kaW5ncy9TY3JpcHRPYmplY3QuaD4KICNpbmNsdWRlIDxydW50aW1lL0FyZ0xpc3QuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci0gICAg
Y2xhc3MgSlNWYWx1ZTsKK2NsYXNzIEpTVmFsdWU7CitjbGFzcyBTY3JpcHRWYWx1ZTsKIH0KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIFNjcmlwdFZhbHVlOwogCiAgICAgY2xhc3Mg
U2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlciB7CiAgICAgcHVibGljOgogICAgICAgICBTY3JpcHRD
YWxsQXJndW1lbnRIYW5kbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkgOiBtX2V4ZWMoc3RhdGUp
IHsgfQogCi0gICAgICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoY29uc3QgU2NyaXB0T2JqZWN0Jik7
Ci0gICAgICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoY29uc3QgU2NyaXB0VmFsdWUmKTsKKyAgICAg
ICAgdm9pZCBhcHBlbmRBcmd1bWVudChjb25zdCBKU0M6OlNjcmlwdE9iamVjdCYpOworICAgICAg
ICB2b2lkIGFwcGVuZEFyZ3VtZW50KGNvbnN0IEpTQzo6U2NyaXB0VmFsdWUmKTsKICAgICAgICAg
dm9pZCBhcHBlbmRBcmd1bWVudChjb25zdCBjaGFyKik7CiAgICAgICAgIHZvaWQgYXBwZW5kQXJn
dW1lbnQoY29uc3QgU3RyaW5nJik7CiAgICAgICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoSlNDOjpK
U1ZhbHVlKTsKQEAgLTczLDI0ICs3MSwyNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBj
bGFzcyBTY3JpcHRGdW5jdGlvbkNhbGwgOiBwdWJsaWMgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxl
ciB7CiAgICAgcHVibGljOgotICAgICAgICBTY3JpcHRGdW5jdGlvbkNhbGwoY29uc3QgU2NyaXB0
T2JqZWN0JiB0aGlzT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgICAgICBTY3JpcHRW
YWx1ZSBjYWxsKGJvb2wmIGhhZEV4Y2VwdGlvbiwgYm9vbCByZXBvcnRFeGNlcHRpb25zID0gdHJ1
ZSk7Ci0gICAgICAgIFNjcmlwdFZhbHVlIGNhbGwoKTsKLSAgICAgICAgU2NyaXB0T2JqZWN0IGNv
bnN0cnVjdChib29sJiBoYWRFeGNlcHRpb24sIGJvb2wgcmVwb3J0RXhjZXB0aW9ucyA9IHRydWUp
OworICAgICAgICBTY3JpcHRGdW5jdGlvbkNhbGwoY29uc3QgSlNDOjpTY3JpcHRPYmplY3QmIHRo
aXNPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgICAgIEpTQzo6U2NyaXB0VmFsdWUg
Y2FsbChib29sJiBoYWRFeGNlcHRpb24sIGJvb2wgcmVwb3J0RXhjZXB0aW9ucyA9IHRydWUpOwor
ICAgICAgICBKU0M6OlNjcmlwdFZhbHVlIGNhbGwoKTsKKyAgICAgICAgSlNDOjpTY3JpcHRPYmpl
Y3QgY29uc3RydWN0KGJvb2wmIGhhZEV4Y2VwdGlvbiwgYm9vbCByZXBvcnRFeGNlcHRpb25zID0g
dHJ1ZSk7CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIFNjcmlwdE9iamVjdCBtX3RoaXNPYmpl
Y3Q7CisgICAgICAgIEpTQzo6U2NyaXB0T2JqZWN0IG1fdGhpc09iamVjdDsKICAgICAgICAgU3Ry
aW5nIG1fbmFtZTsKICAgICB9OwogCiAgICAgY2xhc3MgU2NyaXB0Q2FsbGJhY2sgOiBwdWJsaWMg
U2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlciB7CiAgICAgcHVibGljOgotICAgICAgICBTY3JpcHRD
YWxsYmFjayhKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFNjcmlwdFZhbHVlJik7CisgICAgICAgIFNj
cmlwdENhbGxiYWNrKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpTY3JpcHRWYWx1ZSYpOwog
Ci0gICAgICAgIFNjcmlwdFZhbHVlIGNhbGwoKTsKKyAgICAgICAgSlNDOjpTY3JpcHRWYWx1ZSBj
YWxsKCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBTY3JpcHRWYWx1ZSBtX2Z1bmN0aW9uOwor
ICAgICAgICBKU0M6OlNjcmlwdFZhbHVlIG1fZnVuY3Rpb247CiAgICAgfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9i
amVjdC5jcHAKc2ltaWxhcml0eSBpbmRleCA5MiUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNwcApyZW5hbWUgdG8gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0LmNwcAppbmRleCBhZDkzMjc5Li5mOGRmN2EyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5jcHAKQEAg
LTI5LDEwICsyOSwxMCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJT
Y3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlICJTY3JpcHRHbG9iYWxPYmplY3QuaCIKIAogI2luY2x1
ZGUgIkpTRE9NQmluZGluZy5oIgotCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0T2JqZWN0Lmg+
CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCkBA
IC00OCwxOCArNDgsNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVNjcmlwdE9iamVjdDo6U2NyaXB0T2JqZWN0KEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRT
dGF0ZSwgSlNPYmplY3QqIG9iamVjdCkKLSAgICA6IFNjcmlwdFZhbHVlKHNjcmlwdFN0YXRlLT52
bSgpLCBvYmplY3QpCi0gICAgLCBtX3NjcmlwdFN0YXRlKHNjcmlwdFN0YXRlKQotewotfQotCi1T
Y3JpcHRPYmplY3Q6OlNjcmlwdE9iamVjdChKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNv
bnN0IFNjcmlwdFZhbHVlJiBzY3JpcHRWYWx1ZSkKLSAgICA6IFNjcmlwdFZhbHVlKHNjcmlwdFN0
YXRlLT52bSgpLCBzY3JpcHRWYWx1ZS5qc1ZhbHVlKCkpCi0gICAgLCBtX3NjcmlwdFN0YXRlKHNj
cmlwdFN0YXRlKQotewotfQotCiBzdGF0aWMgYm9vbCBoYW5kbGVFeGNlcHRpb24oSlNDOjpFeGVj
U3RhdGUqIHNjcmlwdFN0YXRlKQogewogICAgIGlmICghc2NyaXB0U3RhdGUtPmhhZEV4Y2VwdGlv
bigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuaApz
aW1pbGFyaXR5IGluZGV4IDY1JQpjb3B5IGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNsaWVudC5jcHAKY29weSB0byBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRHbG9iYWxPYmplY3QuaAppbmRleCA4ZTI3ZThhLi5hMmZlM2FiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjgsMzQgKzI4LDM3IEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpbmNsdWRlICJjb25maWcuaCIKKyNpZm5kZWYgU2NyaXB0
R2xvYmFsT2JqZWN0X2gKKyNkZWZpbmUgU2NyaXB0R2xvYmFsT2JqZWN0X2gKIAotI2lmIEVOQUJM
RShJTlNQRUNUT1IpCi0KLSNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQuaCIKLQotI2luY2x1ZGUg
Ik1haW5GcmFtZS5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJTY3JpcHRDb250cm9s
bGVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZh
bHVlLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotYm9vbCBJbnNwZWN0b3JDbGllbnQ6OmRvRGlzcGF0Y2hNZXNzYWdlT25Gcm9udGVuZFBh
Z2UoUGFnZSogZnJvbnRlbmRQYWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgaWYg
KCFmcm9udGVuZFBhZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFN0cmluZyBkaXNw
YXRjaFRvRnJvbnRlbmQgPSAiSW5zcGVjdG9yRnJvbnRlbmRBUEkuZGlzcGF0Y2hNZXNzYWdlQXN5
bmMoIiArIG1lc3NhZ2UgKyAiKTsiOwotCi0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGV4ZWN1
dGUgdGhlIHNjcmlwdCBpbiB0aGUgYXBwcm9wcmlhdGUgd29ybGQuCi0gICAgZnJvbnRlbmRQYWdl
LT5tYWluRnJhbWUoKS5zY3JpcHQoKS5ldmFsdWF0ZShTY3JpcHRTb3VyY2VDb2RlKGRpc3BhdGNo
VG9Gcm9udGVuZCkpOwotICAgIHJldHVybiB0cnVlOworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBF
eGVjU3RhdGU7CitjbGFzcyBTY3JpcHRPYmplY3Q7CiB9CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgSW5qZWN0ZWRTY3JpcHRIb3N0OworY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRIb3N0
OworY2xhc3MgTWVkaWFDb250cm9sc0hvc3Q7CisKK2NsYXNzIFNjcmlwdEdsb2JhbE9iamVjdCB7
CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgc2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hh
ciogbmFtZSwgY29uc3QgSlNDOjpTY3JpcHRPYmplY3QmKTsKKyNpZiBFTkFCTEUoSU5TUEVDVE9S
KQorICAgIHN0YXRpYyBib29sIHNldChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUs
IEluc3BlY3RvckZyb250ZW5kSG9zdCopOworICAgIHN0YXRpYyBib29sIHNldChKU0M6OkV4ZWNT
dGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIEluamVjdGVkU2NyaXB0SG9zdCopOworI2VuZGlmCisj
aWYgRU5BQkxFKE1FRElBX0NPTlRST0xTX1NDUklQVCkKKyAgICBzdGF0aWMgYm9vbCBzZXQoSlND
OjpFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lLCBNZWRpYUNvbnRyb2xzSG9zdCopOworI2Vu
ZGlmCisKKyAgICBzdGF0aWMgYm9vbCBnZXQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiBu
YW1lLCBKU0M6OlNjcmlwdE9iamVjdCYpOworICAgIHN0YXRpYyBib29sIHJlbW92ZShKU0M6OkV4
ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUpOworcHJpdmF0ZToKKyAgICBTY3JpcHRHbG9iYWxP
YmplY3QoKSB7IH0KK307CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVO
QUJMRShJTlNQRUNUT1IpCisjZW5kaWYgLy8gU2NyaXB0R2xvYmFsT2JqZWN0X2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmNwcAppbmRleCBmZGUyN2QwLi4w
MDFlYjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9m
aWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIu
Y3BwCkBAIC0zNSwxMSArMzUsMTQgQEAKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1
ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmpl
Y3QuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1Njcmlw
dE9iamVjdC5oPgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8
cHJvZmlsZXIvTGVnYWN5UHJvZmlsZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCit1
c2luZyBuYW1lc3BhY2UgSlNDOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgU2NyaXB0
UHJvZmlsZXI6OmNvbGxlY3RHYXJiYWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRQcm9maWxlci5oCmluZGV4IDcyN2M2ZWUuLjZkYjE4YzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuaApAQCAtMjgsMjAgKzI4LDI0IEBACiAjZGVm
aW5lIFNjcmlwdFByb2ZpbGVyX2gKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQor
CiAjaW5jbHVkZSAiU2NyaXB0SGVhcFNuYXBzaG90LmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmls
ZS5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIFNj
cmlwdE9iamVjdDsKK2NsYXNzIFNjcmlwdFZhbHVlOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEV4dGVybmFsQXJyYXlWaXNpdG9yOwogY2xhc3MgRXh0ZXJuYWxTdHJpbmdWaXNp
dG9yOwogY2xhc3MgV3JhcHBlZE5vZGVWaXNpdG9yOwogY2xhc3MgUGFnZTsKLWNsYXNzIFNjcmlw
dE9iamVjdDsKLWNsYXNzIFNjcmlwdFZhbHVlOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAK
IGNsYXNzIFNjcmlwdFByb2ZpbGVyIHsKQEAgLTU3LDggKzYxLDggQEAgcHVibGljOgogICAgIH07
CiAKICAgICBzdGF0aWMgdm9pZCBjb2xsZWN0R2FyYmFnZSgpOwotICAgIHN0YXRpYyBTY3JpcHRP
YmplY3Qgb2JqZWN0QnlIZWFwT2JqZWN0SWQodW5zaWduZWQgaWQpOwotICAgIHN0YXRpYyB1bnNp
Z25lZCBnZXRIZWFwT2JqZWN0SWQoY29uc3QgU2NyaXB0VmFsdWUmKTsKKyAgICBzdGF0aWMgSlND
OjpTY3JpcHRPYmplY3Qgb2JqZWN0QnlIZWFwT2JqZWN0SWQodW5zaWduZWQgaWQpOworICAgIHN0
YXRpYyB1bnNpZ25lZCBnZXRIZWFwT2JqZWN0SWQoY29uc3QgSlNDOjpTY3JpcHRWYWx1ZSYpOwog
ICAgIHN0YXRpYyB2b2lkIHN0YXJ0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRs
ZSk7CiAgICAgc3RhdGljIHZvaWQgc3RhcnRGb3JQYWdlKFBhZ2UqLCBjb25zdCBTdHJpbmcmIHRp
dGxlKTsKICAgICBzdGF0aWMgdm9pZCBzdGFydEZvcldvcmtlckdsb2JhbFNjb3BlKFdvcmtlckds
b2JhbFNjb3BlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0U3RhdGUuaAppbmRleCAzNDlkOTRhLi43MGQxNGM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKQEAgLTEsMTEgKzEsMTEgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKGMpIDIwMDgsIDIwMTEgR29vZ2xlIEluYy4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKiAKKyAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKICAqIG1ldDoKLSAqIAor
ICoKICAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CiAgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCkBAIC0xNSw3ICsxNSw3IEBACiAg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCiAgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQogICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqIAorICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKICAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCiAgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKQEAgLTM0LDcgKzM0LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiBjbGFzcyBFeGVjU3RhdGU7Ci1jbGFzcyBKU0dsb2JhbE9iamVjdDsKIH0KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggYTUzNWMzNC4uMjg5ZmVhNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC00
MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAiSlNNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIkpTTmF2
aWdhdG9yLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJTY3JpcHRW
YWx1ZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0Ns
aWVudERhdGEuaCIKICNpbmNsdWRlIDxsaW1pdHM+CkBAIC0yMDUzLDYgKzIwNTIsMjMgQEAgUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Ym9v
bGVhblZhbHVlKGJvb2wgdmFsdWUKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZShidWZmZXIpKTsKIH0KIAorUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6c2VyaWFsaXplKGNvbnN0IFNjcmlwdFZhbHVlJiB2
YWx1ZSwgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBTZXJpYWxpemF0aW9uRXJyb3JNb2Rl
IHRocm93RXhjZXB0aW9ucykKK3sKKyAgICByZXR1cm4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUoc2NyaXB0U3RhdGUsIHZhbHVlLmpzVmFsdWUoKSwgbnVsbHB0ciwgbnVsbHB0ciwgdGhy
b3dFeGNlcHRpb25zKTsKK30KKworUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6c2VyaWFsaXplKGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1ZSwg
SlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBNZXNzYWdlUG9ydEFycmF5KiBtZXNzYWdlUG9y
dHMsIEFycmF5QnVmZmVyQXJyYXkqIGFycmF5QnVmZmVycywgYm9vbCYgZGlkVGhyb3cpCit7Cisg
ICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoc2NyaXB0U3RhdGUsIHZhbHVlLmpzVmFsdWUoKSwgbWVz
c2FnZVBvcnRzLCBhcnJheUJ1ZmZlcnMpOworICAgIGRpZFRocm93ID0gc2NyaXB0U3RhdGUtPmhh
ZEV4Y2VwdGlvbigpOworICAgIHJldHVybiBzZXJpYWxpemVkVmFsdWUucmVsZWFzZSgpOworfQor
CitTY3JpcHRWYWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKEpTQzo6RXhl
Y1N0YXRlKiBzY3JpcHRTdGF0ZSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiB2YWx1ZSwgU2VyaWFs
aXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCit7CisgICAgcmV0dXJuIFNjcmlwdFZh
bHVlKHNjcmlwdFN0YXRlLT52bSgpLCB2YWx1ZS0+ZGVzZXJpYWxpemUoc2NyaXB0U3RhdGUsIHNj
cmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIDAsIHRocm93RXhjZXB0aW9ucykpOwor
fQorCiB2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bWF5YmVUaHJvd0V4Y2VwdGlvbklmU2Vy
aWFsaXphdGlvbkZhaWxlZChFeGVjU3RhdGUqIGV4ZWMsIFNlcmlhbGl6YXRpb25SZXR1cm5Db2Rl
IGNvZGUpCiB7CiAgICAgaWYgKGNvZGUgPT0gU3VjY2Vzc2Z1bGx5Q29tcGxldGVkKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRl
eCA2OWQyNWY2Li5hNDdkMGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtMjgsNiArMjgsNyBAQAogI2RlZmluZSBTZXJp
YWxpemVkU2NyaXB0VmFsdWVfaAogCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKKyNpbmNsdWRl
IDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPGhlYXAvU3Ryb25nLmg+CiAjaW5j
bHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1
ZS5oPgpAQCAtNTcsNyArNTgsNiBAQCBlbnVtIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIHsKICAg
ICAKIGVudW0gU2VyaWFsaXphdGlvbkVycm9yTW9kZSB7IE5vblRocm93aW5nLCBUaHJvd2luZyB9
OwogCi1jbGFzcyBTY3JpcHRWYWx1ZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlIDoKQEAgLTY3LDggKzY3LDcgQEAgY2xhc3MgU2VyaWFsaXplZFNj
cmlwdFZhbHVlIDoKICAgICBwdWJsaWMgUmVmQ291bnRlZDxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHsKICNlbmRpZgogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBNZXNzYWdlUG9y
dEFycmF5KiwgQXJyYXlCdWZmZXJBcnJheSosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU2VyaWFsaXphdGlvbkVycm9yTW9kZSA9IFRocm93aW5n
KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgTWVzc2FnZVBvcnRBcnJheSosIEFycmF5QnVm
ZmVyQXJyYXkqLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcpOwogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpTQ29udGV4dFJlZiwg
SlNWYWx1ZVJlZiwgTWVzc2FnZVBvcnRBcnJheSosIEFycmF5QnVmZmVyQXJyYXkqLCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gY3JlYXRlKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKTsKIApAQCAtODMsNiArODIsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdW5kZWZpbmVkVmFsdWUoKTsKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGJvb2xlYW5WYWx1ZShib29sIHZhbHVlKTsK
IAorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXpl
KGNvbnN0IEpTQzo6U2NyaXB0VmFsdWUmLCBKU0M6OkV4ZWNTdGF0ZSosIFNlcmlhbGl6YXRpb25F
cnJvck1vZGUgPSBUaHJvd2luZyk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBzZXJpYWxpemUoY29uc3QgSlNDOjpTY3JpcHRWYWx1ZSYsIEpTQzo6RXhlY1N0
YXRlKiwgTWVzc2FnZVBvcnRBcnJheSosIEFycmF5QnVmZmVyQXJyYXkqLCBib29sJik7CisgICAg
c3RhdGljIEpTQzo6U2NyaXB0VmFsdWUgZGVzZXJpYWxpemUoSlNDOjpFeGVjU3RhdGUqLCBTZXJp
YWxpemVkU2NyaXB0VmFsdWUqLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcpOwor
CiAgICAgc3RhdGljIHVpbnQzMl90IHdpcmVGb3JtYXRWZXJzaW9uKCk7CiAKICAgICBTdHJpbmcg
dG9TdHJpbmcoKTsKQEAgLTkyLDcgKzk1LDcgQEAgcHVibGljOgogICAgIEpTVmFsdWVSZWYgZGVz
ZXJpYWxpemUoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogCiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKLSAgICBTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUZvckluc3BlY3RvcihK
U0M6OkV4ZWNTdGF0ZSopOworICAgIEpTQzo6U2NyaXB0VmFsdWUgZGVzZXJpYWxpemVGb3JJbnNw
ZWN0b3IoSlNDOjpFeGVjU3RhdGUqKTsKICNlbmRpZgogCiAgICAgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDI5MGIx
ZjEuLjY1Y2ZiNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtl
clNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dv
cmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0zMSwxMiArMzEsMTIgQEAKICNpbmNsdWRlICJK
U0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgi
CiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgIldvcmtlckdsb2Jh
bFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyT2JqZWN0UHJveHkuaCIKICNpbmNsdWRlICJXb3Jr
ZXJTY3JpcHREZWJ1Z1NlcnZlci5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorI2luY2x1
ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8aGVhcC9TdHJvbmdJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaD4KICNpbmNsdWRlIDxydW50
aW1lL0NvbXBsZXRpb24uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dv
cmtlclNjcmlwdENvbnRyb2xsZXIuaAppbmRleCA4YmI3ZjQ5Li45MzYyNzM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oCkBA
IC0zNCwxNCArMzQsMTQgQEAKICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewotICAgIGNsYXNzIFZNOworY2xhc3MgU2NyaXB0VmFsdWU7CitjbGFzcyBWTTsKIH0K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgSlNXb3JrZXJHbG9iYWxTY29wZTsK
ICAgICBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOwotICAgIGNsYXNzIFNjcmlwdFZhbHVlOwogICAg
IGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwogCiAgICAgY2xhc3MgV29ya2VyU2NyaXB0Q29udHJv
bGxlciB7CkBAIC01Nyw5ICs1Nyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgfQog
CiAgICAgICAgIHZvaWQgZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYpOwotICAgICAg
ICB2b2lkIGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBTY3JpcHRWYWx1ZSogZXhj
ZXB0aW9uKTsKKyAgICAgICAgdm9pZCBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwg
SlNDOjpTY3JpcHRWYWx1ZSogZXhjZXB0aW9uKTsKIAotICAgICAgICB2b2lkIHNldEV4Y2VwdGlv
bihjb25zdCBTY3JpcHRWYWx1ZSYpOworICAgICAgICB2b2lkIHNldEV4Y2VwdGlvbihjb25zdCBK
U0M6OlNjcmlwdFZhbHVlJik7CiAKICAgICAgICAgLy8gQXN5bmMgcmVxdWVzdCB0byB0ZXJtaW5h
dGUgYSBKUyBydW4gZXhlY3V0aW9uLiBFdmVudHVhbGx5IGNhdXNlcyB0ZXJtaW5hdGlvbgogICAg
ICAgICAvLyBleGNlcHRpb24gcmFpc2VkIGR1cmluZyBKUyBleGVjdXRpb24sIGlmIHRoZSB3b3Jr
ZXIgdGhyZWFkIGhhcHBlbnMgdG8gcnVuIEpTLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0N1c3RvbUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5jcHAK
aW5kZXggYjBmYmE5OS4uMGMwYmU0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1
c3RvbUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuY3BwCkBA
IC00OCw3ICs0OCw3IEBAIEN1c3RvbUV2ZW50Ojp+Q3VzdG9tRXZlbnQoKQogewogfQogCi12b2lk
IEN1c3RvbUV2ZW50Ojppbml0Q3VzdG9tRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBTY3JpcHRWYWx1ZSYgZGV0YWls
KQordm9pZCBDdXN0b21FdmVudDo6aW5pdEN1c3RvbUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgY29uc3QgSlNDOjpTY3JpcHRW
YWx1ZSYgZGV0YWlsKQogewogICAgIEFTU0VSVCghbV9zZXJpYWxpemVkU2NyaXB0VmFsdWUuZ2V0
KCkpOwogICAgIGlmIChkaXNwYXRjaGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ3VzdG9tRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5oCmluZGV4
IGJjODkwOTYuLjE5ZWRlMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21F
dmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5oCkBAIC0yNywxNSAr
MjcsMTUgQEAKICNkZWZpbmUgQ3VzdG9tRXZlbnRfaAogCiAjaW5jbHVkZSAiRXZlbnQuaCIKLSNp
bmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
IgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RydWN0IEN1c3RvbUV2ZW50SW5pdCA6IHB1YmxpYyBFdmVudEluaXQgewogICAgIEN1
c3RvbUV2ZW50SW5pdCgpOwogCi0gICAgU2NyaXB0VmFsdWUgZGV0YWlsOworICAgIEpTQzo6U2Ny
aXB0VmFsdWUgZGV0YWlsOwogfTsKIAogY2xhc3MgQ3VzdG9tRXZlbnQgOiBwdWJsaWMgRXZlbnQg
ewpAQCAtNTIsMTggKzUyLDE4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBDdXN0b21FdmVudCh0eXBlLCBpbml0aWFsaXplcikpOwogICAgIH0KIAotICAgIHZvaWQgaW5p
dEN1c3RvbUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJv
b2wgY2FuY2VsYWJsZSwgY29uc3QgU2NyaXB0VmFsdWUmIGRldGFpbCk7CisgICAgdm9pZCBpbml0
Q3VzdG9tRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBjb25zdCBKU0M6OlNjcmlwdFZhbHVlJiBkZXRhaWwpOwogCiAgICAgdmly
dHVhbCBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0OwogCi0gICAgY29uc3Qg
U2NyaXB0VmFsdWUmIGRldGFpbCgpIGNvbnN0IHsgcmV0dXJuIG1fZGV0YWlsOyB9CisgICAgY29u
c3QgSlNDOjpTY3JpcHRWYWx1ZSYgZGV0YWlsKCkgY29uc3QgeyByZXR1cm4gbV9kZXRhaWw7IH0K
ICAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFNjcmlwdFZh
bHVlKCkgeyByZXR1cm4gbV9zZXJpYWxpemVkU2NyaXB0VmFsdWU7IH0KIAogcHJpdmF0ZToKICAg
ICBDdXN0b21FdmVudCgpOwogICAgIEN1c3RvbUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgY29uc3QgQ3VzdG9tRXZlbnRJbml0JiBpbml0aWFsaXplcik7CiAKLSAgICBTY3JpcHRWYWx1
ZSBtX2RldGFpbDsKKyAgICBKU0M6OlNjcmlwdFZhbHVlIG1fZGV0YWlsOwogICAgIFJlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1fc2VyaWFsaXplZFNjcmlwdFZhbHVlOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAppbmRleCBmZDg2OTc4Li4wNDhjNDk5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcApAQCAtMjEsMTMgKzIxLDE0IEBACiAgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICoKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2
ZW50LmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCmluZGV4IGI5N2E3MDMuLjkzYWQ0NDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTWVzc2FnZUV2ZW50LmgKQEAgLTMyLDggKzMyLDggQEAKICNpbmNsdWRlICJET01XaW5k
b3cuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCi0jaW5j
bHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIK
KyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvQXJy
YXlCdWZmZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDMsNyArNDMsNyBAQCBjbGFz
cyBFdmVudFRhcmdldDsKIHN0cnVjdCBNZXNzYWdlRXZlbnRJbml0IDogcHVibGljIEV2ZW50SW5p
dCB7CiAgICAgTWVzc2FnZUV2ZW50SW5pdCgpOwogCi0gICAgU2NyaXB0VmFsdWUgZGF0YTsKKyAg
ICBKU0M6OlNjcmlwdFZhbHVlIGRhdGE7CiAgICAgU3RyaW5nIG9yaWdpbjsKICAgICBTdHJpbmcg
bGFzdEV2ZW50SWQ7CiAgICAgUmVmUHRyPEV2ZW50VGFyZ2V0PiBzb3VyY2U7CkBAIC01Niw3ICs1
Niw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVzc2Fn
ZUV2ZW50KTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVzc2FnZUV2ZW50PiBjcmVh
dGUoUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cywgY29uc3QgU2NyaXB0VmFsdWUm
IGRhdGEgPSBTY3JpcHRWYWx1ZSgpLCBjb25zdCBTdHJpbmcmIG9yaWdpbiA9IFN0cmluZygpLCBj
b25zdCBTdHJpbmcmIGxhc3RFdmVudElkID0gU3RyaW5nKCksIFBhc3NSZWZQdHI8RXZlbnRUYXJn
ZXQ+IHNvdXJjZSA9IDApCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVzc2FnZUV2ZW50PiBjcmVh
dGUoUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cywgY29uc3QgSlNDOjpTY3JpcHRW
YWx1ZSYgZGF0YSA9IEpTQzo6U2NyaXB0VmFsdWUoKSwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSBT
dHJpbmcoKSwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9IFN0cmluZygpLCBQYXNzUmVmUHRy
PEV2ZW50VGFyZ2V0PiBzb3VyY2UgPSAwKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBNZXNzYWdlRXZlbnQoZGF0YSwgb3JpZ2luLCBsYXN0RXZlbnRJZCwgc291cmNlLCBwb3J0
cykpOwogICAgIH0KQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFs
IH5NZXNzYWdlRXZlbnQoKTsKIAotICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IFNj
cmlwdFZhbHVlJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0
RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4p
OworICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJv
b2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IEpTQzo6U2NyaXB0VmFsdWUmIGRh
dGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBET01X
aW5kb3cqIHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5Pik7CiAgICAgdm9pZCBp
bml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUs
IGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEs
IGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBET01XaW5k
b3cqIHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5Pik7CiAKICAgICBjb25zdCBT
dHJpbmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CkBAIC0xMDcsNyArMTA3
LDcgQEAgcHVibGljOgogICAgICAgICBEYXRhVHlwZUFycmF5QnVmZmVyCiAgICAgfTsKICAgICBE
YXRhVHlwZSBkYXRhVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YVR5cGU7IH0KLSAgICBjb25z
dCBTY3JpcHRWYWx1ZSYgZGF0YUFzU2NyaXB0VmFsdWUoKSBjb25zdCB7IEFTU0VSVChtX2RhdGFU
eXBlID09IERhdGFUeXBlU2NyaXB0VmFsdWUpOyByZXR1cm4gbV9kYXRhQXNTY3JpcHRWYWx1ZTsg
fQorICAgIGNvbnN0IEpTQzo6U2NyaXB0VmFsdWUmIGRhdGFBc1NjcmlwdFZhbHVlKCkgY29uc3Qg
eyBBU1NFUlQobV9kYXRhVHlwZSA9PSBEYXRhVHlwZVNjcmlwdFZhbHVlKTsgcmV0dXJuIG1fZGF0
YUFzU2NyaXB0VmFsdWU7IH0KICAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
ZGF0YUFzU2VyaWFsaXplZFNjcmlwdFZhbHVlKCkgY29uc3QgeyBBU1NFUlQobV9kYXRhVHlwZSA9
PSBEYXRhVHlwZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7IHJldHVybiBtX2RhdGFBc1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTsgfQogICAgIFN0cmluZyBkYXRhQXNTdHJpbmcoKSBjb25zdCB7IEFTU0VS
VChtX2RhdGFUeXBlID09IERhdGFUeXBlU3RyaW5nKTsgcmV0dXJuIG1fZGF0YUFzU3RyaW5nOyB9
CiAgICAgQmxvYiogZGF0YUFzQmxvYigpIGNvbnN0IHsgQVNTRVJUKG1fZGF0YVR5cGUgPT0gRGF0
YVR5cGVCbG9iKTsgcmV0dXJuIG1fZGF0YUFzQmxvYi5nZXQoKTsgfQpAQCAtMTE2LDcgKzExNiw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgTWVzc2FnZUV2ZW50KCk7CiAgICAgTWVzc2FnZUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IE1lc3NhZ2VFdmVudEluaXQmKTsKLSAgICBN
ZXNzYWdlRXZlbnQoY29uc3QgU2NyaXB0VmFsdWUmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
LCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBzb3Vy
Y2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4pOworICAgIE1lc3NhZ2VFdmVudChjb25z
dCBKU0M6OlNjcmlwdFZhbHVlJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBsYXN0RXZlbnRJZCwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gc291cmNlLCBQYXNzT3du
UHRyPE1lc3NhZ2VQb3J0QXJyYXk+KTsKICAgICBNZXNzYWdlRXZlbnQoUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJp
bmcmIGxhc3RFdmVudElkLCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBzb3VyY2UsIFBhc3NPd25Q
dHI8TWVzc2FnZVBvcnRBcnJheT4pOwogCiAgICAgZXhwbGljaXQgTWVzc2FnZUV2ZW50KGNvbnN0
IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pOwpAQCAtMTI0LDcgKzEyNCw3IEBA
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgTWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8QXJyYXlCdWZm
ZXI+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luKTsKIAogICAgIERhdGFUeXBlIG1fZGF0YVR5
cGU7Ci0gICAgU2NyaXB0VmFsdWUgbV9kYXRhQXNTY3JpcHRWYWx1ZTsKKyAgICBKU0M6OlNjcmlw
dFZhbHVlIG1fZGF0YUFzU2NyaXB0VmFsdWU7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gbV9kYXRhQXNTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAgICAgU3RyaW5nIG1fZGF0YUFz
U3RyaW5nOwogICAgIFJlZlB0cjxCbG9iPiBtX2RhdGFBc0Jsb2I7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0
YXRlRXZlbnQuaAppbmRleCAyMjE5M2E0Li5iM2MyYWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vUG9wU3RhdGVFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0
ZUV2ZW50LmgKQEAgLTI4LDE0ICsyOCwxNCBAQAogI2RlZmluZSBQb3BTdGF0ZUV2ZW50X2gKIAog
I2luY2x1ZGUgIkV2ZW50LmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxi
aW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBQ
b3BTdGF0ZUV2ZW50SW5pdCA6IHB1YmxpYyBFdmVudEluaXQgewogICAgIFBvcFN0YXRlRXZlbnRJ
bml0KCk7CiAKLSAgICBTY3JpcHRWYWx1ZSBzdGF0ZTsKKyAgICBKU0M6OlNjcmlwdFZhbHVlIHN0
YXRlOwogfTsKIAogY2xhc3MgSGlzdG9yeTsKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFBvcFN0YXRlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJp
bmcmLCBjb25zdCBQb3BTdGF0ZUV2ZW50SW5pdCYpOwogCiAgICAgUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VyaWFs
aXplZFN0YXRlOyB9Ci0gICAgY29uc3QgU2NyaXB0VmFsdWUmIHN0YXRlKCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZTsgfQorICAgIGNvbnN0IEpTQzo6U2NyaXB0VmFsdWUmIHN0YXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0ZTsgfQogICAgIEhpc3RvcnkqIGhpc3RvcnkoKSBjb25zdCB7IHJldHVy
biBtX2hpc3RvcnkuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgRXZlbnRJbnRlcmZhY2UgZXZlbnRJ
bnRlcmZhY2UoKSBjb25zdDsKQEAgLTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICBQb3BTdGF0
ZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFBvcFN0YXRlRXZlbnRJbml0Jik7CiAg
ICAgZXhwbGljaXQgUG9wU3RhdGVFdmVudChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4sIFBhc3NSZWZQdHI8SGlzdG9yeT4pOwogCi0gICAgU2NyaXB0VmFsdWUgbV9zdGF0ZTsKKyAg
ICBKU0M6OlNjcmlwdFZhbHVlIG1fc3RhdGU7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gbV9zZXJpYWxpemVkU3RhdGU7CiAgICAgUmVmUHRyPEhpc3Rvcnk+IG1faGlzdG9yeTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggMTU3YzRjYS4uZDk2ODc1
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApAQCAtNDIsMTEgKzQyLDExIEBA
CiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdFJ1bm5lci5o
IgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5o
IgogI2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIlNlY3Vy
aXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0Tm9kZVRy
YXZlcnNhbC5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAppbmRleCAwNmIyMjJmLi5hZTQyOThmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTEzMiw4ICsxMzIsOSBAQAogI2lmIEVOQUJM
RShNRURJQV9DT05UUk9MU19TQ1JJUFQpCiAjaW5jbHVkZSAiSlNNZWRpYUNvbnRyb2xzSG9zdC5o
IgogI2luY2x1ZGUgIk1lZGlhQ29udHJvbHNIb3N0LmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0
LmgiCisjaW5jbHVkZSAiU2NyaXB0R2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiVXNlckFnZW50
U2NyaXB0cy5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgogI2VuZGlmCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db25zb2xlTWVzc2FnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1l
c3NhZ2UuY3BwCmluZGV4IDczMjE2ZGMuLmVhOTc4MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcApAQCAtNDIsMTAgKzQyLDExIEBACiAjaW5jbHVkZSAi
U2NyaXB0Q2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisj
aW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5z
cGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAordXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2Fn
ZS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgKaW5kZXggMDcw
NWI5Ni4uN2ZkMTZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNv
bGVNZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdl
LmgKQEAgLTQ5LDcgKzQ5LDYgQEAgY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3Mg
U2NyaXB0QXJndW1lbnRzOwogY2xhc3MgU2NyaXB0Q2FsbEZyYW1lOwogY2xhc3MgU2NyaXB0Q2Fs
bFN0YWNrOwotY2xhc3MgU2NyaXB0VmFsdWU7CiAKIGNsYXNzIENvbnNvbGVNZXNzYWdlIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb25zb2xlTWVzc2FnZSk7IFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKaW5k
ZXggMWU1OGQ0ZS4uNjgxZTUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHQuY3BwCkBAIC0zOCwxMCArMzgsMTMgQEAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlw
dE1vZHVsZS5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJTY3JpcHRGdW5jdGlvbkNh
bGwuaCIKLSNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxiaW5k
aW5ncy9TY3JpcHRPYmplY3QuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVz
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK3VzaW5nIEpTQzo6U2NyaXB0
VmFsdWU7Cit1c2luZyBKU0M6OlNjcmlwdE9iamVjdDsKKwogdXNpbmcgV2ViQ29yZTo6VHlwZUJ1
aWxkZXI6OkFycmF5OwogdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxs
RnJhbWU7CiB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UHJvcGVydHlEZXNj
cmlwdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaAppbmRleCA5
YjZhZDJmLi44ZTE1MjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHQuaApAQCAtMzUsMTcgKzM1LDE5IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKICNpbmNsdWRlICJTY3JpcHRB
cmd1bWVudHMuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCituYW1lc3BhY2UgSlNDIHsKK2Ns
YXNzIFNjcmlwdE9iamVjdDsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmpl
Y3RlZFNjcmlwdE1vZHVsZTsKIGNsYXNzIE5vZGU7Ci1jbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFs
dWU7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCkBAIC03MSw3ICs3Myw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVt
b3RlT2JqZWN0PiogcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgVHlwZUJ1aWxkZXI6
Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKTsKICAgICB2b2lkIGV2YWx1YXRlT25DYWxsRnJh
bWUoRXJyb3JTdHJpbmcqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTY3Jp
cHRWYWx1ZSYgY2FsbEZyYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
SlNDOjpTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLApAQCAtODcsMTMgKzg5LDEzIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlbGVhc2VPYmplY3QoY29uc3QgU3RyaW5nJiBvYmplY3RJZCk7CiAKICNpZiBF
TkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpB
cnJheTxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IHdyYXBDYWxsRnJhbWVzKGNv
bnN0IFNjcmlwdFZhbHVlJik7CisgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlw
ZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiB3cmFwQ2FsbEZyYW1lcyhjb25zdCBKU0M6
OlNjcmlwdFZhbHVlJik7CiAjZW5kaWYKIAotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdD4gd3JhcE9iamVjdChjb25zdCBTY3JpcHRWYWx1ZSYsIGNvbnN0
IFN0cmluZyYgZ3JvdXBOYW1lLCBib29sIGdlbmVyYXRlUHJldmlldyA9IGZhbHNlKSBjb25zdDsK
LSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHdyYXBU
YWJsZShjb25zdCBTY3JpcHRWYWx1ZSYgdGFibGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBjb2x1bW5z
KSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmpl
Y3Q+IHdyYXBPYmplY3QoY29uc3QgSlNDOjpTY3JpcHRWYWx1ZSYsIGNvbnN0IFN0cmluZyYgZ3Jv
dXBOYW1lLCBib29sIGdlbmVyYXRlUHJldmlldyA9IGZhbHNlKSBjb25zdDsKKyAgICBQYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHdyYXBUYWJsZShjb25zdCBK
U0M6OlNjcmlwdFZhbHVlJiB0YWJsZSwgY29uc3QgSlNDOjpTY3JpcHRWYWx1ZSYgY29sdW1ucykg
Y29uc3Q7CiAgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0
PiB3cmFwTm9kZShOb2RlKiwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUpOwotICAgIFNjcmlwdFZh
bHVlIGZpbmRPYmplY3RCeUlkKGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpIGNvbnN0OworICAgIEpT
Qzo6U2NyaXB0VmFsdWUgZmluZE9iamVjdEJ5SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJZCkgY29u
c3Q7CiAKICAgICB2b2lkIGluc3BlY3ROb2RlKE5vZGUqKTsKICAgICB2b2lkIHJlbGVhc2VPYmpl
Y3RHcm91cChjb25zdCBTdHJpbmcmKTsKQEAgLTEwMSw5ICsxMDMsOSBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIGZyaWVuZCBjbGFzcyBJbmplY3RlZFNjcmlwdE1vZHVsZTsKICAgICBmcmllbmQg
SW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcihK
U0M6OkV4ZWNTdGF0ZSopOwotICAgIEluamVjdGVkU2NyaXB0KFNjcmlwdE9iamVjdCwgSW5zcGVj
dGVkU3RhdGVBY2Nlc3NDaGVjayk7CisgICAgSW5qZWN0ZWRTY3JpcHQoSlNDOjpTY3JpcHRPYmpl
Y3QsIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOwogCi0gICAgU2NyaXB0VmFsdWUgbm9kZUFz
U2NyaXB0VmFsdWUoTm9kZSopOworICAgIEpTQzo6U2NyaXB0VmFsdWUgbm9kZUFzU2NyaXB0VmFs
dWUoTm9kZSopOwogfTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdEJhc2UuY3BwCmluZGV4IGE3ZDQ5NjcuLmU2MzA1MzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwCkBAIC00Miw2ICs0
Miw3IEBACiAKIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmpl
Y3Q7CiAKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRCYXNlLmgKaW5kZXggMTNhZWM0ZS4uMTFmZWY5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaApAQCAtMzIsNyArMzIsNyBAQAogI2Rl
ZmluZSBJbmplY3RlZFNjcmlwdEJhc2VfaAogCiAjaW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxk
ZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3Jp
cHRPYmplY3QuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KIApAQCAtNTksMTggKzU5LDE4IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICB0eXBl
ZGVmIGJvb2wgKCpJbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKShKU0M6OkV4ZWNTdGF0ZSopOwog
ICAgIEluamVjdGVkU2NyaXB0QmFzZShjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIEluamVjdGVk
U2NyaXB0QmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIFNjcmlwdE9iamVjdCwgSW5zcGVjdGVkU3Rh
dGVBY2Nlc3NDaGVjayk7CisgICAgSW5qZWN0ZWRTY3JpcHRCYXNlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgSlNDOjpTY3JpcHRPYmplY3QsIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOwogCi0gICAg
dm9pZCBpbml0aWFsaXplKFNjcmlwdE9iamVjdCwgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayk7
CisgICAgdm9pZCBpbml0aWFsaXplKEpTQzo6U2NyaXB0T2JqZWN0LCBJbnNwZWN0ZWRTdGF0ZUFj
Y2Vzc0NoZWNrKTsKICAgICBib29sIGNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdygpIGNvbnN0Owot
ICAgIGNvbnN0IFNjcmlwdE9iamVjdCYgaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSBjb25zdDsKLSAg
ICBTY3JpcHRWYWx1ZSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoU2NyaXB0RnVuY3Rpb25D
YWxsJiwgYm9vbCYgaGFkRXhjZXB0aW9uKSBjb25zdDsKKyAgICBjb25zdCBKU0M6OlNjcmlwdE9i
amVjdCYgaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSBjb25zdDsKKyAgICBKU0M6OlNjcmlwdFZhbHVl
IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChTY3JpcHRGdW5jdGlvbkNhbGwmLCBib29sJiBo
YWRFeGNlcHRpb24pIGNvbnN0OwogICAgIHZvaWQgbWFrZUNhbGwoU2NyaXB0RnVuY3Rpb25DYWxs
JiwgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwogICAgIHZvaWQg
bWFrZUV2YWxDYWxsKEVycm9yU3RyaW5nKiwgU2NyaXB0RnVuY3Rpb25DYWxsJiwgUmVmUHRyPFR5
cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsIFR5cGVCdWlsZGVyOjpP
cHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbmFt
ZTsKLSAgICBTY3JpcHRPYmplY3QgbV9pbmplY3RlZFNjcmlwdE9iamVjdDsKKyAgICBKU0M6OlNj
cmlwdE9iamVjdCBtX2luamVjdGVkU2NyaXB0T2JqZWN0OwogICAgIEluc3BlY3RlZFN0YXRlQWNj
ZXNzQ2hlY2sgbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5jcHAK
aW5kZXggNzk5MWMxYy4uZWYwM2YzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuY3BwCkBAIC0zOCw3ICszOCw3IEBA
CiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGVTb3VyY2UuaCIKICNpbmNsdWRl
ICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKICNpbmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwu
aCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRP
YmplY3QuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAKIHVzaW5n
IFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpBcnJheTsKQEAgLTQ4LDYgKzQ4LDcgQEAgdXNpbmcgV2Vi
Q29yZTo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VTdGF0ZTsKIHVzaW5nIFdlYkNvcmU6
OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nOwogdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxk
ZXI6OkNhbnZhczo6VHJhY2VMb2dJZDsKIAordXNpbmcgbmFtZXNwYWNlIEpTQzsKIHVzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmgKaW5kZXgg
ZjMzMTEyYy4uNzRlY2Y4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmgKQEAgLTM1LDEwICszNSwxMyBAQAogI2luY2x1
ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25h
bWVzcGFjZSBKU0MgeworY2xhc3MgU2NyaXB0T2JqZWN0OworfQorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKLWNsYXNzIFNjcmlwdE9iamVjdDsK
IAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKQEAgLTUwLDkgKzUzLDkgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlIG1vZHVsZUZvclN0YXRlKEluamVj
dGVkU2NyaXB0TWFuYWdlciosIEpTQzo6RXhlY1N0YXRlKik7CiAKLSAgICBTY3JpcHRPYmplY3Qg
d3JhcENhbnZhczJEQ29udGV4dChjb25zdCBTY3JpcHRPYmplY3QmKTsKKyAgICBKU0M6OlNjcmlw
dE9iamVjdCB3cmFwQ2FudmFzMkRDb250ZXh0KGNvbnN0IEpTQzo6U2NyaXB0T2JqZWN0Jik7CiAj
aWYgRU5BQkxFKFdFQkdMKQotICAgIFNjcmlwdE9iamVjdCB3cmFwV2ViR0xDb250ZXh0KGNvbnN0
IFNjcmlwdE9iamVjdCYpOworICAgIEpTQzo6U2NyaXB0T2JqZWN0IHdyYXBXZWJHTENvbnRleHQo
Y29uc3QgSlNDOjpTY3JpcHRPYmplY3QmKTsKICNlbmRpZgogICAgIHZvaWQgbWFya0ZyYW1lRW5k
KCk7CiAKQEAgLTY2LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzb3VyY2VTdGF0ZShF
cnJvclN0cmluZyosIGNvbnN0IFR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQmLCBjb25z
dCBUeXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJjZUlkJiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpD
YW52YXM6OlJlc291cmNlU3RhdGU+Kik7CiAKIHByaXZhdGU6Ci0gICAgU2NyaXB0T2JqZWN0IGNh
bGxXcmFwQ29udGV4dEZ1bmN0aW9uKGNvbnN0IFN0cmluZyYsIGNvbnN0IFNjcmlwdE9iamVjdCYp
OworICAgIEpTQzo6U2NyaXB0T2JqZWN0IGNhbGxXcmFwQ29udGV4dEZ1bmN0aW9uKGNvbnN0IFN0
cmluZyYsIGNvbnN0IEpTQzo6U2NyaXB0T2JqZWN0Jik7CiAgICAgdm9pZCBjYWxsU3RhcnRDYXB0
dXJpbmdGdW5jdGlvbihjb25zdCBTdHJpbmcmLCBFcnJvclN0cmluZyosIFN0cmluZyopOwogICAg
IHZvaWQgY2FsbFZvaWRGdW5jdGlvbldpdGhUcmFjZUxvZ0lkQXJndW1lbnQoY29uc3QgU3RyaW5n
JiwgRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwCmluZGV4IDNhNjVkMWUuLmQ0Njg0Yjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3Bw
CkBAIC00OSwxNyArNDksMTcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2lu
Y2x1ZGUgIlBhc3RlYm9hcmQuaCIKICNpbmNsdWRlICJTdG9yYWdlLmgiCi0jaW5jbHVkZSA8aW5z
cGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgotCi0jaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSNp
bmNsdWRlICJEYXRhYmFzZS5oIgotI2VuZGlmCi0KICNpbmNsdWRlICJtYXJrdXAuaCIKLQorI2lu
Y2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3Bl
Y3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorI2luY2x1ZGUgIkRhdGFi
YXNlLmgiCisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKIHVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaAppbmRleCBhMjEyNTkzLi4yNTdlY2M1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oCkBAIC0zNiw2ICsz
NiwxMCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIFNjcmlwdFZhbHVlOworfQorCiBuYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKIGNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3BlY3RvclZh
bHVlOwpAQCAtNTMsOCArNTcsNiBAQCBjbGFzcyBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OwogY2xh
c3MgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBTY3JpcHREZWJ1
Z1NlcnZlcjsKLWNsYXNzIFNjcmlwdE9iamVjdDsKLWNsYXNzIFNjcmlwdFZhbHVlOwogY2xhc3Mg
U3RvcmFnZTsKIAogc3RydWN0IEV2ZW50TGlzdGVuZXJJbmZvOwpAQCAtODgsMTUgKzkwLDE1IEBA
IHB1YmxpYzoKICNlbmRpZgogICAgIH0KIAotICAgIHN0YXRpYyBOb2RlKiBzY3JpcHRWYWx1ZUFz
Tm9kZShTY3JpcHRWYWx1ZSk7Ci0gICAgc3RhdGljIFNjcmlwdFZhbHVlIG5vZGVBc1NjcmlwdFZh
bHVlKEpTQzo6RXhlY1N0YXRlKiwgTm9kZSopOworICAgIHN0YXRpYyBOb2RlKiBzY3JpcHRWYWx1
ZUFzTm9kZShKU0M6OlNjcmlwdFZhbHVlKTsKKyAgICBzdGF0aWMgSlNDOjpTY3JpcHRWYWx1ZSBu
b2RlQXNTY3JpcHRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIE5vZGUqKTsKIAogICAgIHZvaWQgZGlz
Y29ubmVjdCgpOwogCiAgICAgY2xhc3MgSW5zcGVjdGFibGVPYmplY3QgewogICAgICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgU2NyaXB0
VmFsdWUgZ2V0KEpTQzo6RXhlY1N0YXRlKik7CisgICAgICAgIHZpcnR1YWwgSlNDOjpTY3JpcHRW
YWx1ZSBnZXQoSlNDOjpFeGVjU3RhdGUqKTsKICAgICAgICAgdmlydHVhbCB+SW5zcGVjdGFibGVP
YmplY3QoKSB7IH0KICAgICB9OwogICAgIHZvaWQgYWRkSW5zcGVjdGVkT2JqZWN0KFBhc3NPd25Q
dHI8SW5zcGVjdGFibGVPYmplY3Q+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggZGVkZTg0MS4uMWNiYjQ1OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAK
QEAgLTM3LDEwICszNywxMSBAQAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAjaW5jbHVk
ZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRTb3VyY2Uu
aCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRP
YmplY3QuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAordXNpbmcgbmFtZXNwYWNlIEpTQzsKIHVzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaAppbmRleCA3YjI4MzY2Li5iMTI5
ZDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFu
YWdlci5oCkBAIC0zNSw2ICszNSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgU2Ny
aXB0T2JqZWN0OworfQorCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIGNsYXNzIEluc3BlY3Rvck9i
amVjdDsKIH0KQEAgLTQ0LDcgKzQ4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRE9N
V2luZG93OwogY2xhc3MgSW5qZWN0ZWRTY3JpcHQ7CiBjbGFzcyBJbmplY3RlZFNjcmlwdEhvc3Q7
Ci1jbGFzcyBTY3JpcHRPYmplY3Q7CiAKIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlciB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKTsgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CkBAIC03Miw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQg
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOwogCiAgICAg
U3RyaW5nIGluamVjdGVkU2NyaXB0U291cmNlKCk7Ci0gICAgU2NyaXB0T2JqZWN0IGNyZWF0ZUlu
amVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBKU0M6OkV4ZWNTdGF0ZSosIGludCBp
ZCk7CisgICAgSlNDOjpTY3JpcHRPYmplY3QgY3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3Ry
aW5nJiBzb3VyY2UsIEpTQzo6RXhlY1N0YXRlKiwgaW50IGlkKTsKIAogICAgIHN0YXRpYyBib29s
IGNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdyhKU0M6OkV4ZWNTdGF0ZSopOwogICAgIHN0YXRpYyBi
b29sIGNhbkFjY2Vzc0luc3BlY3RlZFdvcmtlckdsb2JhbFNjb3BlKEpTQzo6RXhlY1N0YXRlKik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNw
cAppbmRleCA4ZDU5ODU3Li5hNTg4NmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAKQEAgLTM3LDggKzM3LDkgQEAKICNpbmNsdWRl
ICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgog
I2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5o
IgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgogCit1c2luZyBuYW1lc3BhY2Ug
SlNDOwogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKaW5kZXggZjFjYWFl
MS4uMmExM2MwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQu
Y3BwCkBAIC00OCw3ICs0OCw2IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5j
bHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5o
IgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFs
dWVzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2Fu
dmFzQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0Fn
ZW50LmNwcAppbmRleCA4MDVjODdlLi4zYTZlZTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKQEAgLTQ3LDkgKzQ3LDkgQEAKICNp
bmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlBh
Z2UuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxl
ci5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0
T2JqZWN0Lmg+CiAKIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpBcnJheTsKIHVzaW5nIFdl
YkNvcmU6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlSWQ7CkBAIC01OSw2ICs1OSw3IEBA
IHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nOwogdXNpbmcgV2Vi
Q29yZTo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZDsKIHVzaW5nIFdlYkNvcmU6OlR5
cGVCdWlsZGVyOjpOZXR3b3JrOjpGcmFtZUlkOwogCit1c2luZyBuYW1lc3BhY2UgSlNDOwogdXNp
bmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaAppbmRleCAyYzY3Mjk3
Li5hYTI3ODJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q2FudmFzQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2Fu
dmFzQWdlbnQuaApAQCAtNDMsNiArNDMsMTAgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgSlNDIHsKK2Ns
YXNzIFNjcmlwdE9iamVjdDsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFt
ZTsKQEAgLTUwLDcgKzU0LDYgQEAgY2xhc3MgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU7CiBj
bGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CiBj
bGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwotY2xhc3MgU2NyaXB0T2JqZWN0OwogCiB0eXBlZGVm
IFN0cmluZyBFcnJvclN0cmluZzsKIApAQCAtNzAsOSArNzMsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkaWRCZWdpbkZyYW1lKCk7CiAKICAgICAvLyBDYWxsZWQgZnJvbSBJbnNwZWN0b3JDYW52YXNJ
bnN0cnVtZW50YXRpb24uCi0gICAgU2NyaXB0T2JqZWN0IHdyYXBDYW52YXMyRFJlbmRlcmluZ0Nv
bnRleHRGb3JJbnN0cnVtZW50YXRpb24oY29uc3QgU2NyaXB0T2JqZWN0Jik7CisgICAgSlNDOjpT
Y3JpcHRPYmplY3Qgd3JhcENhbnZhczJEUmVuZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlv
bihjb25zdCBKU0M6OlNjcmlwdE9iamVjdCYpOwogI2lmIEVOQUJMRShXRUJHTCkKLSAgICBTY3Jp
cHRPYmplY3Qgd3JhcFdlYkdMUmVuZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlvbihjb25z
dCBTY3JpcHRPYmplY3QmKTsKKyAgICBKU0M6OlNjcmlwdE9iamVjdCB3cmFwV2ViR0xSZW5kZXJp
bmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKGNvbnN0IEpTQzo6U2NyaXB0T2JqZWN0Jik7CiAj
ZW5kaWYKIAogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCkBAIC05MiwxMiArOTUs
MTIgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JDYW52YXNBZ2VudChJbnN0cnVtZW50aW5nQWdl
bnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKik7CiAKICAg
ICBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZSBpbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZShF
cnJvclN0cmluZyosIEpTQzo6RXhlY1N0YXRlKik7Ci0gICAgSW5qZWN0ZWRTY3JpcHRDYW52YXNN
b2R1bGUgaW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTY3Jp
cHRPYmplY3QmKTsKKyAgICBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZSBpbmplY3RlZFNjcmlw
dENhbnZhc01vZHVsZShFcnJvclN0cmluZyosIGNvbnN0IEpTQzo6U2NyaXB0T2JqZWN0Jik7CiAg
ICAgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUgaW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgZmluZEZyYW1lc1dpdGhV
bmluc3RydW1lbnRlZENhbnZhc2VzKCk7CiAgICAgYm9vbCBjaGVja0lzRW5hYmxlZChFcnJvclN0
cmluZyopIGNvbnN0OwotICAgIFNjcmlwdE9iamVjdCBub3RpZnlSZW5kZXJpbmdDb250ZXh0V2Fz
V3JhcHBlZChjb25zdCBTY3JpcHRPYmplY3QmKTsKKyAgICBKU0M6OlNjcmlwdE9iamVjdCBub3Rp
ZnlSZW5kZXJpbmdDb250ZXh0V2FzV3JhcHBlZChjb25zdCBKU0M6OlNjcmlwdE9iamVjdCYpOwog
CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAgICBJbmplY3RlZFNjcmlw
dE1hbmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0luc3RydW1lbnRhdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0luc3RydW1lbnRhdGlvbi5oCmluZGV4
IGQzZmRhNjAuLjVkNzI0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDYW52YXNJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzSW5zdHJ1bWVudGF0aW9uLmgKQEAgLTM0LDExICszNCwxMSBA
QAogI2luY2x1ZGUgIkluc3BlY3RvckNhbnZhc0FnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgotI2lu
Y2x1ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNjcmlwdE9iamVjdCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndyYXBDYW52YXMyRFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24o
RG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTY3JpcHRPYmplY3QmIGNvbnRleHQpCitKU0M6OlNj
cmlwdE9iamVjdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndyYXBDYW52YXMyRFJlbmRlcmlu
Z0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24oRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBKU0M6
OlNjcmlwdE9iamVjdCYgY29udGV4dCkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlm
IChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGlu
Z0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkgewpAQCAtNDksMTEgKzQ5LDExIEBAIFNjcmlw
dE9iamVjdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndyYXBDYW52YXMyRFJlbmRlcmluZ0Nv
bnRleHRGb3JJbnN0cnVtZW50CiAgICAgVU5VU0VEX1BBUkFNKGRvY3VtZW50KTsKICAgICBVTlVT
RURfUEFSQU0oY29udGV4dCk7CiAjZW5kaWYKLSAgICByZXR1cm4gU2NyaXB0T2JqZWN0KCk7Cisg
ICAgcmV0dXJuIEpTQzo6U2NyaXB0T2JqZWN0KCk7CiB9CiAKICNpZiBFTkFCTEUoV0VCR0wpCi1T
Y3JpcHRPYmplY3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3cmFwV2ViR0xSZW5kZXJpbmdD
b250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU2NyaXB0
T2JqZWN0JiBnbENvbnRleHQpCitKU0M6OlNjcmlwdE9iamVjdCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndyYXBXZWJHTFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24oRG9jdW1l
bnQqIGRvY3VtZW50LCBjb25zdCBKU0M6OlNjcmlwdE9iamVjdCYgZ2xDb250ZXh0KQogewogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKSB7
CkBAIC02NCw3ICs2NCw3IEBAIFNjcmlwdE9iamVjdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndyYXBXZWJHTFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpCiAgICAgVU5VU0VEX1BB
UkFNKGRvY3VtZW50KTsKICAgICBVTlVTRURfUEFSQU0oZ2xDb250ZXh0KTsKICNlbmRpZgotICAg
IHJldHVybiBTY3JpcHRPYmplY3QoKTsKKyAgICByZXR1cm4gSlNDOjpTY3JpcHRPYmplY3QoKTsK
IH0KICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNsaWVudC5jcHAKaW5kZXggOGUyN2U4YS4uYzMzZTZhYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAK
ICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1
ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1
ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xl
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2Vu
dC5jcHAKaW5kZXggMzk0M2U5Ny4uNjlmMmUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKQEAgLTQzLDE0ICs0MywxNSBAQAog
I2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFja0Zh
Y3RvcnkuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0
T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZXIuaCIKKyNpbmNsdWRlIDxiaW5kaW5n
cy9TY3JpcHRPYmplY3QuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHAKaW5kZXggODBkMzMyNS4uNDM3NzU4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNzAsNyArNzAs
NiBAQAogI2luY2x1ZGUgIlBhZ2VEZWJ1Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAiUGFnZVJ1bnRp
bWVBZ2VudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmNwcAppbmRleCA2NWEzMTdiLi5mNzQzYTU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTEwMSw2ICsxMDEsNyBAQAog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAordXNpbmcgbmFtZXNwYWNlIEpTQzsKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmgKaW5kZXggNDE4NDNhZi4uNTQxZjg5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTQ5LDcgKzQ5LDEyIEBACiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgog
CituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIFNjcmlwdFZhbHVlOworfQorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CisKIGNsYXNzIENvbnRhaW5lck5vZGU7CiBjbGFzcyBDaGFyYWN0ZXJEYXRhOwogY2xh
c3MgRE9NRWRpdG9yOwpAQCAtNjYsNyArNzEsNiBAQCBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRz
OwogY2xhc3MgTmFtZU5vZGVNYXA7CiBjbGFzcyBOb2RlOwogY2xhc3MgUmV2YWxpZGF0ZVN0eWxl
QXR0cmlidXRlVGFzazsKLWNsYXNzIFNjcmlwdFZhbHVlOwogY2xhc3MgU2hhZG93Um9vdDsKIAog
c3RydWN0IEhpZ2hsaWdodENvbmZpZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCAxZjc3MmUzLi4wMWYwMmQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQu
Y3BwCkBAIC00MSw3ICs0MSw4IEBACiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgog
I2luY2x1ZGUgIlJlZ3VsYXJFeHByZXNzaW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2
ZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3Jp
cHRPYmplY3QuaD4KKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUg
PGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIApAQCAtNTAsNiArNTEsNyBAQCB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6RGVi
dWdnZXI6OkZ1bmN0aW9uRGV0YWlsczsKIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpEZWJ1
Z2dlcjo6U2NyaXB0SWQ7CiB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVt
b3RlT2JqZWN0OwogCit1c2luZyBuYW1lc3BhY2UgSlNDOwogdXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggYTQxY2ZlYy4uNWNkMWZjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5o
CkBAIC01MCw2ICs1MCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgU2NyaXB0VmFs
dWU7Cit9CisKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBj
bGFzcyBJbnNwZWN0b3JPYmplY3Q7CkBAIC02MSw3ICs2NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2Vu
dHM7CiBjbGFzcyBTY3JpcHREZWJ1Z1NlcnZlcjsKLWNsYXNzIFNjcmlwdFZhbHVlOwogCiB0eXBl
ZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIApAQCAtMTQ2LDcgKzE0OSw3IEBAIHByb3RlY3RlZDoK
IAogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZSgp
OwotICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFNjcmlw
dFZhbHVlJiBjYWxsRnJhbWVzLCBjb25zdCBTY3JpcHRWYWx1ZSYgZXhjZXB0aW9uKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUGF1c2UoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OlNjcmlwdFZh
bHVlJiBjYWxsRnJhbWVzLCBjb25zdCBKU0M6OlNjcmlwdFZhbHVlJiBleGNlcHRpb24pOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRDb250aW51ZSgpOwogICAgIHZvaWQgcmVzZXQoKTsKIApAQCAtMTc1
LDcgKzE3OCw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckRlYnVn
Z2VyRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICBSZWZQdHI8
SW5zcGVjdG9yRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsK
ICAgICBKU0M6OkV4ZWNTdGF0ZSogbV9wYXVzZWRTY3JpcHRTdGF0ZTsKLSAgICBTY3JpcHRWYWx1
ZSBtX2N1cnJlbnRDYWxsU3RhY2s7CisgICAgSlNDOjpTY3JpcHRWYWx1ZSBtX2N1cnJlbnRDYWxs
U3RhY2s7CiAgICAgU2NyaXB0c01hcCBtX3NjcmlwdHM7CiAgICAgQnJlYWtwb2ludElkZW50aWZp
ZXJUb0RlYnVnU2VydmVyQnJlYWtwb2ludElEc01hcCBtX2JyZWFrcG9pbnRJZGVudGlmaWVyVG9E
ZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHM7CiAgICAgQnJlYWtwb2ludElkZW50aWZpZXJUb0JyZWFr
cG9pbnRNYXAgbV9qYXZhU2NyaXB0QnJlYWtwb2ludHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKaW5kZXgg
MjViYzYzNy4uMWY0NWU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcApAQCAtNDksNyArNDksNyBAQAog
I2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisjaW5j
bHVkZSAiU2NyaXB0R2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNp
bmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCkBAIC01OSw2ICs1OSw3IEBA
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCit1c2luZyBuYW1lc3BhY2UgSlNDOwogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3Rv
cjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAppbmRleCA2ODlkMTg3Li44NTA4ZDZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNw
cApAQCAtNTQsMTAgKzU0LDEzIEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5o
IgorI2luY2x1ZGUgIlNjcmlwdEdsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIlNjcmlwdFN0YXRl
LmgiCiAjaW5jbHVkZSAiU291bmQuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5o
IgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAordXNpbmcgbmFtZXNwYWNlIEpTQzsK
IHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdl
bnQuY3BwCmluZGV4IDgyZTE3YTguLjM1Y2MyMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNwcApAQCAtMzksNiAr
MzksNyBAQAogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJTY3Jp
cHRQcm9maWxlci5oIgogCit1c2luZyBuYW1lc3BhY2UgSlNDOwogdXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IGJkNWM5NTIuLmY1N2M2
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgKQEAgLTQ1LDYgKzQ1LDEwIEBACiAjaW5jbHVkZSAiV2ViU29ja2V0RnJhbWUu
aCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgU2Ny
aXB0T2JqZWN0OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU1J1bGU7CkBA
IC03Nyw3ICs4MSw2IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTY3JpcHRBcmd1
bWVudHM7CiBjbGFzcyBTY3JpcHRDYWxsU3RhY2s7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OwotY2xhc3MgU2NyaXB0T2JqZWN0OwogY2xhc3MgU2NyaXB0UHJvZmlsZTsKIGNsYXNzIFNl
Y3VyaXR5T3JpZ2luOwogY2xhc3MgU2hhZG93Um9vdDsKQEAgLTI3Niw5ICsyNzksOSBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lRXJyb3IoRG9jdW1l
bnQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
KTsKICNlbmRpZgogCi0gICAgc3RhdGljIFNjcmlwdE9iamVjdCB3cmFwQ2FudmFzMkRSZW5kZXJp
bmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKERvY3VtZW50KiwgY29uc3QgU2NyaXB0T2JqZWN0
Jik7CisgICAgc3RhdGljIEpTQzo6U2NyaXB0T2JqZWN0IHdyYXBDYW52YXMyRFJlbmRlcmluZ0Nv
bnRleHRGb3JJbnN0cnVtZW50YXRpb24oRG9jdW1lbnQqLCBjb25zdCBKU0M6OlNjcmlwdE9iamVj
dCYpOwogI2lmIEVOQUJMRShXRUJHTCkKLSAgICBzdGF0aWMgU2NyaXB0T2JqZWN0IHdyYXBXZWJH
TFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24oRG9jdW1lbnQqLCBjb25zdCBTY3Jp
cHRPYmplY3QmKTsKKyAgICBzdGF0aWMgSlNDOjpTY3JpcHRPYmplY3Qgd3JhcFdlYkdMUmVuZGVy
aW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlvbihEb2N1bWVudCosIGNvbnN0IEpTQzo6U2NyaXB0
T2JqZWN0Jik7CiAjZW5kaWYKIAogICAgIHN0YXRpYyB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQo
UGFnZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92
ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3Bw
CmluZGV4IGZkYTJhNzAuLmE4NWQ4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yT3ZlcmxheS5jcHAKQEAgLTU0LDkgKzU0LDkgQEAKICNpbmNsdWRlICJSZW5kZXJW
aWV3LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdFNv
dXJjZUNvZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1Njcmlw
dFZhbHVlLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCA4MzQ3NmE4Li4yZjcyZWJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAt
NzAsMTIgKzcwLDEyIEBACiAjaW5jbHVkZSAiUmVndWxhckV4cHJlc3Npb24uaCIKICNpbmNsdWRl
ICJSZXNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNs
dWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiVGV4
dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCisj
aW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5z
cGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8
d3RmL0xpc3RIYXNoU2V0Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKaW5kZXggYmRiNDBjZi4uM2RhZWE1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcApA
QCAtNDUsMTUgKzQ1LDE2IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VTY3Jp
cHREZWJ1Z1NlcnZlci5oIgogI2luY2x1ZGUgIlNjcmlwdEhlYXBTbmFwc2hvdC5oIgotI2luY2x1
ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGUuaCIKICNpbmNsdWRl
ICJTY3JpcHRQcm9maWxlci5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdERlYnVnU2VydmVyLmgi
CisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0T2JqZWN0Lmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9y
L0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5o
PgogCit1c2luZyBuYW1lc3BhY2UgSlNDOwogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1BhZ2VDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25z
b2xlQWdlbnQuY3BwCmluZGV4IGE4OTAzZWEuLjYwMTRmZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHAKQEAgLTQwLDggKzQwLDggQEAKICNpbmNs
dWRlICJJbnNwZWN0b3JBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCiAj
aW5jbHVkZSAiTm9kZS5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogCit1c2luZyBuYW1l
c3BhY2UgSlNDOwogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNwcAppbmRl
eCAzNDVjMDgxLi5iNDAyZWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
U2NyaXB0QXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0
QXJndW1lbnRzLmNwcApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEFyZ3VtZW50cy5oIgogCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNp
bmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogCi11c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOwordXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmgKaW5kZXggMTc0MzlhMC4uZjY1
MjlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaApAQCAt
MSwxMCArMSwxMCBAQAogLyoKICAqIENvcHlyaWdodCAoYykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogCisgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CiAgKiBtZXQ6Ci0gKiAKKyAqCiAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpAQCAt
MTQsNyArMTQsNyBAQAogICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwogICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KICAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKKyAqCiAgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCiAgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAogICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkBAIC00MCwxOSArNDAsMTggQEAK
IG5hbWVzcGFjZSBKU0MgewogY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgSlNHbG9iYWxPYmplY3Q7
CitjbGFzcyBTY3JpcHRWYWx1ZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBT
Y3JpcHRWYWx1ZTsKLQogY2xhc3MgU2NyaXB0QXJndW1lbnRzIDogcHVibGljIFJlZkNvdW50ZWQ8
U2NyaXB0QXJndW1lbnRzPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2NyaXB0
QXJndW1lbnRzPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqLCBWZWN0b3I8U2NyaXB0VmFsdWU+JiBh
cmd1bWVudHMpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gY3JlYXRl
KEpTQzo6RXhlY1N0YXRlKiwgVmVjdG9yPEpTQzo6U2NyaXB0VmFsdWU+JiBhcmd1bWVudHMpOwog
CiAgICAgflNjcmlwdEFyZ3VtZW50cygpOwogCi0gICAgY29uc3QgU2NyaXB0VmFsdWUmIGFyZ3Vt
ZW50QXQoc2l6ZV90KSBjb25zdDsKKyAgICBjb25zdCBKU0M6OlNjcmlwdFZhbHVlJiBhcmd1bWVu
dEF0KHNpemVfdCkgY29uc3Q7CiAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQoKSBjb25zdCB7IHJl
dHVybiBtX2FyZ3VtZW50cy5zaXplKCk7IH0KIAogICAgIEpTQzo6RXhlY1N0YXRlKiBnbG9iYWxT
dGF0ZSgpIGNvbnN0OwpAQCAtNjEsMTAgKzYwLDEwIEBAIHB1YmxpYzoKICAgICBib29sIGlzRXF1
YWwoU2NyaXB0QXJndW1lbnRzKikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgU2NyaXB0QXJndW1l
bnRzKEpTQzo6RXhlY1N0YXRlKiwgVmVjdG9yPFNjcmlwdFZhbHVlPiYgYXJndW1lbnRzKTsKKyAg
ICBTY3JpcHRBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUqLCBWZWN0b3I8SlNDOjpTY3JpcHRWYWx1
ZT4mIGFyZ3VtZW50cyk7CiAKICAgICBKU0M6OlN0cm9uZzxKU0M6OkpTR2xvYmFsT2JqZWN0PiBt
X2dsb2JhbE9iamVjdDsKLSAgICBWZWN0b3I8U2NyaXB0VmFsdWU+IG1fYXJndW1lbnRzOworICAg
IFZlY3RvcjxKU0M6OlNjcmlwdFZhbHVlPiBtX2FyZ3VtZW50czsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRE
ZWJ1Z0xpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdMaXN0
ZW5lci5oCmluZGV4IDViY2E3NTEuLjM1ZGY4ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1NjcmlwdERlYnVnTGlzdGVuZXIuaApAQCAtMzcsOCArMzcsMTEgQEAKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1l
c3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSlNDIHsKIGNsYXNzIFNjcmlwdFZhbHVlOworfQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcmlwdERlYnVnTGlzdGVuZXIgewogcHVi
bGljOgpAQCAtNjgsNyArNzEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUGFy
c2VTb3VyY2UoU291cmNlSUQsIGNvbnN0IFNjcmlwdCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZmFpbGVkVG9QYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBkYXRh
LCBpbnQgZmlyc3RMaW5lLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0
IFNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBjb25zdCBTY3JpcHRWYWx1ZSYgZXhjZXB0aW9uKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlND
OjpTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywgY29uc3QgSlNDOjpTY3JpcHRWYWx1ZSYgZXhjZXB0
aW9uKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbnRpbnVlKCkgPSAwOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ29uc29sZS5jcHAKaW5kZXggZGRlNjVlMy4uMzI3ZWE0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnNvbGUuY3BwCkBAIC00Nyw5ICs0Nyw5IEBACiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrRmFj
dG9yeS5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGUuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9m
aWxlci5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2NyaXB0YWJsZURv
Y3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlIDxiaW5kaW5n
cy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcAppbmRleCAzZDg2MTY0Li42ZTRhODE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtODYs
NyArODYsNiBAQAogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRW
YWx1ZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKQEAgLTEwNCw2ICsxMDMsNyBA
QAogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgIm5wcnVudGltZV9pbXBsLmgiCiAjaW5j
bHVkZSAicnVudGltZV9yb290LmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4K
ICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVh
a0NvdW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZUNvbnNvbGUuY3BwCmluZGV4IDRmYWFlNmQuLjliY2MyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZUNvbnNvbGUuY3BwCkBAIC00Miw5ICs0Miw5IEBACiAjaW5jbHVkZSAiU2NyaXB0QXJndW1l
bnRzLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2Fs
bFN0YWNrRmFjdG9yeS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0YWJsZURvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRl
IDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZDYwYzg4NS4uZDljMDUyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC02MSw3ICs2MSw2IEBACiAjaW5j
bHVkZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAi
U2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlVzZXJH
ZXN0dXJlSW5kaWNhdG9yLmgiCkBAIC02OSw2ICs2OCw3IEBACiAjaW5jbHVkZSAiY19pbnN0YW5j
ZS5oIgogI2luY2x1ZGUgIm5wcnVudGltZV9pbXBsLmgiCiAjaW5jbHVkZSAicnVudGltZV9yb290
LmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxydW50aW1l
L0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgogI2luY2x1ZGUgPHd0
Zi9BU0NJSUNUeXBlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggN2M0
YjNkMC4uYWUyODdmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTY1
LDYgKzE2NSw3IEBAIHVzaW5nIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOwogdXNpbmcgSlNDOjpK
U0Z1bmN0aW9uOwogdXNpbmcgSlNDOjpKU1ZhbHVlOwogdXNpbmcgSlNDOjpTY3JpcHRFeGVjdXRh
YmxlOwordXNpbmcgSlNDOjpTY3JpcHRWYWx1ZTsKIHVzaW5nIEpTQzo6U3RhY2tWaXNpdG9yOwog
CiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgK
aW5kZXggMjViY2FmZS4uYmUwMDA5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBA
IC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIK
ICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJOb2RlTGlz
dC5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0
VmFsdWUuaD4KICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8cnVu
dGltZS9GbG9hdDMyQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtMTgx
LDcgKzE4MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVtaXRJbnNwZWN0b3JEaWRCZWdpbkZyYW1l
KCk7CiAgICAgdm9pZCBlbWl0SW5zcGVjdG9yRGlkQ2FuY2VsRnJhbWUoKTsKIAotICAgIFN0cmlu
ZyBwYXJzZXJNZXRhRGF0YShTY3JpcHRWYWx1ZSA9IFNjcmlwdFZhbHVlKCkpOworICAgIFN0cmlu
ZyBwYXJzZXJNZXRhRGF0YShKU0M6OlNjcmlwdFZhbHVlID0gSlNDOjpTY3JpcHRWYWx1ZSgpKTsK
IAogICAgIGJvb2wgaGFzU3BlbGxpbmdNYXJrZXIoaW50IGZyb20sIGludCBsZW5ndGgsIEV4Y2Vw
dGlvbkNvZGUmKTsKICAgICBib29sIGhhc0dyYW1tYXJNYXJrZXIoaW50IGZyb20sIGludCBsZW5n
dGgsIEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
U2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFy
ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggZTE3N2E3MC4uMGFlM2Y1MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAg
LTQyLDYgKzQyLDggQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNo
YXJlZFdvcmtlclRocmVhZC5oIgogCit1c2luZyBuYW1lc3BhY2UgSlNDOworCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8TWVzc2FnZUV2ZW50PiBjcmVhdGVDb25uZWN0RXZlbnQo
UGFzc1JlZlB0cjxNZXNzYWdlUG9ydD4gcHJwUG9ydCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggZWMyZDE5MC4uMzZlNDU5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTQ0LDcgKzQ0LDYg
QEAKICNpbmNsdWRlICJTY2hlZHVsZWRBY3Rpb24uaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3Rh
Y2suaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFs
dWUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIldvcmtlckluc3Bl
Y3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXb3JrZXJMb2NhdGlvbi5oIgpAQCAtNTQsNiAr
NTMsNyBAQAogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgIldvcmtlclRocmVh
ZGFibGVMb2FkZXIuaCIKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbi5oIgorI2lu
Y2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9O
UykKQEAgLTYyLDYgKzYyLDggQEAKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKIAordXNp
bmcgbmFtZXNwYWNlIEpTQzsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDbG9zZVdv
cmtlckdsb2JhbFNjb3BlVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAppbmRleCA1MGJmYTFkLi5m
ZWYzZTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCkBAIC0zMSw3
ICszMSw2IEBACiAjaW5jbHVkZSAiRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VD
b2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgogI2luY2x1ZGUgIlRocmVhZEdsb2JhbERhdGEuaCIKICNpbmNsdWRlICJVUkwuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxUcmVlVmlld2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxUcmVlVmlld2VyLmNwcAppbmRleCAxNjFkZDAxLi5jMzllNzUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCkBAIC0zOCwxMCArMzgsMTAgQEAKICNpbmNs
dWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJT
Y3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJU
ZXh0LmgiCiAjaW5jbHVkZSAiWE1MVmlld2VyQ1NTLmgiCiAjaW5jbHVkZSAiWE1MVmlld2VySlMu
aCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5j
cHAKaW5kZXggNzRhN2QwMC4uOTBlZmQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1s
L3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTQ2LDcgKzQ2LDYgQEAKICNpbmNsdWRlICJS
ZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RWxlbWVudC5oIgogI2luY2x1ZGUg
IlNjcmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUg
IlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJUcmVlRGVwdGhMaW1pdC5oIgogI2lu
Y2x1ZGUgIlhNTEVycm9ycy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IDQ2YTkyZGIuLjUyYjhmOTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4
bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2Vy
TGlieG1sMi5jcHAKQEAgLTUyLDcgKzUyLDYgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RWxlbWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNv
ZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVy
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAppbmRleCBlNzFmNGZj
Li40ZWVmZDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKQEAg
LTExOCw3ICsxMTgsNiBAQAogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgogI2luY2x1ZGUgIlNj
cmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVk
ZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiU2VsZWN0aW9uSGFuZGxlci5oIgpAQCAtMTcyLDYg
KzE3MSw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0UmVmLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWYuaD4KICNpbmNsdWRlIDxTaGFyZWRQb2lu
dGVyLmg+CisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxjbWF0
aD4KICNpbmNsdWRlIDxzeXMva2V5Y29kZXMuaD4KICNpbmNsdWRlIDx1bmljb2RlL3VzdHJpbmcu
aD4gLy8gcGxhdGZvcm0gSUNVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwppbmRleCAwNDQ2
YWIxLi4yNDBjYjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MiBAQAorMjAxMy0xMi0wNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgor
CisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggTW9yZSBJbnNwZWN0b3IgUmVxdWlyZWQgQ2xh
c3NlcyBEb3duIGludG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTMyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogQXBpL1dlYlBhZ2UuY3BwOgorCiAyMDEzLTEyLTAzICBK
b3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogUHVzaCBSZW1vdGUgSW5zcGVjdG9yIGRlYnVnZ2luZyBjb25uZWN0aW9uIG1hbmFnZW1l
bnQgaW50byBKYXZhU2NyaXB0Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDMxZWUyYjUuLjdkZDVl
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0xMi0wNSAgSm9zZXBo
IFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFB1c2ggTW9yZSBJbnNwZWN0b3IgUmVxdWlyZWQgQ2xhc3NlcyBEb3duIGludG8gSmF2YVNjcmlw
dENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
NTMyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
ZXdrL2V3a19mcmFtZS5jcHA6CisKIDIwMTMtMTItMDMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29y
YXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIFJlbW90ZSBJbnNw
ZWN0b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFuYWdlbWVudCBpbnRvIEphdmFTY3JpcHRDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCmluZGV4IGYyYTIwYzMuLmEwNTJhYTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCkBAIC01Myw3ICs1Myw2IEBACiAjaW5jbHVk
ZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5j
bHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5j
bHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU3Vic3RpdHV0ZURhdGEuaCIKICNpbmNs
dWRlICJXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oIgpAQCAtNjUsNiArNjQsNyBAQAogI2luY2x1ZGUg
PEVjb3JlX0lucHV0Lmg+CiAjaW5jbHVkZSA8RWluYS5oPgogI2luY2x1ZGUgPEV2YXMuaD4KKyNp
bmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPGVpbmFfc2FmZXR5X2No
ZWNrcy5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCAyYzZmNTJmLi44NzQ4NTk2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMTItMDUgIEpvc2VwaCBQZWNvcmFybyAgPHBl
Y29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5z
cGVjdG9yIFJlcXVpcmVkIENsYXNzZXMgRG93biBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYmtpdC93ZWJraXR3
ZWJ2aWV3LmNwcDoKKwogMjAxMy0xMi0wMyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBw
bGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggUmVtb3RlIEluc3BlY3RvciBk
ZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2VtZW50IGludG8gSmF2YVNjcmlwdENvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCBmOWQ5YjFkZC4uNjAy
MzI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAt
ODUsNyArODUsNiBAQAogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiUnVu
dGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKLSNp
bmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAi
V2ViS2l0RE9NRG9jdW1lbnRQcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0ZG93bmxvYWQuaCIK
QEAgLTExNCw2ICsxMTMsNyBAQAogI2luY2x1ZGUgIndlYmtpdHdlYnBsdWdpbmRhdGFiYXNlcHJp
dmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmgiCiAjaW5jbHVkZSAi
d2Via2l0d2Vidmlld3ByaXZhdGUuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5o
PgogI2luY2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIu
aD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXgg
NjI2MDJlMy4uMzBjMzk2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEz
LTEyLTA1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAg
V2ViIEluc3BlY3RvcjogUHVzaCBNb3JlIEluc3BlY3RvciBSZXF1aXJlZCBDbGFzc2VzIERvd24g
aW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTI1MzI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgICogV2ViVmlldy5jcHA6CisKIDIw
MTMtMTItMDMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBQdXNoIFJlbW90ZSBJbnNwZWN0b3IgZGVidWdnaW5nIGNvbm5lY3Rp
b24gbWFuYWdlbWVudCBpbnRvIEphdmFTY3JpcHRDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKaW5k
ZXggZWE4YmQxOC4uNDlkNjZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcApAQCAtOTksMTIgKzk5
LDEyIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SXRlcmF0b3IuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0pTRE9NQmluZGluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nl
Y3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0xvY2suaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdC5oPgorI2lu
Y2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KIAogI2lmIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKaW5kZXggN2E5MTRjZC4uMzdkNzc3
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTEzNyw3ICsxMzcsNiBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1l
UmVnaXN0cnkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxiYXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGJhclRoZW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZWN1cml0eU9yaWdpbi5oPgpAQCAtMTQ3LDYgKzE0Niw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9TeXN0ZW1JbmZvLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dNZXNzYWdlQnJvYWRjYXN0
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd3NUb3VjaC5oPgorI2luY2x1ZGUgPGJpbmRp
bmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogI2lmIFVT
RShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCA3ZTdmNjA2Li43MGY4NzBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC01LDYg
KzUsMTcgQEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisKKzIwMTMtMTItMDUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJv
QGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVjdG9y
IFJlcXVpcmVkIENsYXNzZXMgRG93biBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJJbnNwZWN0b3IuY3BwOgogICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0
b3IuaDoKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCmluZGV4IDk3Mzg0NjAuLmFmNjczYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTYzLDEyICs2MywxMiBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVuZGVyRW1iZWRkZWRPYmplY3QuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlTG9hZFNjaGVkdWxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJv
bGxlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1Njcm9sbFZpZXcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eVBvbGljeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0
dGluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg+CisjaW5j
bHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCmluZGV4IDc3MzVmNmMuLjEwNWJh
YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3IuY3BwCkBAIC0zOCw3ICszOCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9NYWluRnJhbWUu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENv
bnRyb2xsZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdFZhbHVlLmg+CisjaW5jbHVkZSA8
YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRl
bmF0ZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBjMjIyNGI4Li4xZGMzODdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xMjgs
NyArMTI4LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
Y3JpcHRDb250cm9sbGVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRWYWx1ZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZXR0aW5ncy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhZG93Um9vdC5oPgpAQCAtMTM5LDYg
KzEzOCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9WaXNpYmxlUG9zaXRpb24uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Zpc2libGVVbml0cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvbWFya3VwLmg+Cisj
aW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0pT
VmFsdWUuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgogI2luY2x1ZGUgPHJ1bnRpbWUv
T3BlcmF0aW9ucy5oPgo=
</data>
<flag name="review"
          id="242018"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218558</attachid>
            <date>2013-12-05 17:21:59 -0800</date>
            <delta_ts>2013-12-11 14:02:45 -0800</delta_ts>
            <desc>[PATCH] PART 3: ScriptFunctionCall</desc>
            <filename>part-3-1.patch</filename>
            <type>text/plain</type>
            <size>55807</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA5MDY5OGE4Li5kMTI3ZTcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00Niw2ICs0Niw3IEBAIHNldChK
YXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmNwcAog
ICAgIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5jcHAKIAorICAgIGJpbmRpbmdz
L1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKICAgICBiaW5kaW5ncy9TY3JpcHRPYmplY3QuY3BwCiAg
ICAgYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4
IDMzMjdmNjQuLjk2MzIwNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtNiw2ICs2LDI0
IEBACiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCiAgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICog
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBiaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcC4KKyAgICAgICAgKEpT
Qzo6U2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQpOgorICAgICAgICAo
SlNDOjpTY3JpcHRGdW5jdGlvbkNhbGw6OlNjcmlwdEZ1bmN0aW9uQ2FsbCk6CisgICAgICAgIChK
U0M6OlNjcmlwdEZ1bmN0aW9uQ2FsbDo6Y2FsbCk6CisgICAgICAgICogYmluZGluZ3MvU2NyaXB0
RnVuY3Rpb25DYWxsLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRGdW5jdGlvbkNhbGwuaC4KKworMjAxMy0xMi0wNSAgSm9zZXBoIFBlY29yYXJvICA8cGVj
b3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggTW9yZSBJbnNw
ZWN0b3IgUmVxdWlyZWQgQ2xhc3NlcyBEb3duIGludG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTMyNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CiAgICAgICAgICogR05VbWFrZWZpbGUuYW06CiAgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5h
bToKICAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2o6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5h
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDYyYmE4
YzIuLjA0YzA0ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CkBAIC05NSw2ICs5NSw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL1NINEFzc2VtYmxlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBcCisgICAgU291cmNlL0phdmFTY3JpcHRD
b3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oIFwKICAgICBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYmluZGluZ3MvU2NyaXB0T2JqZWN0LmNwcCBcCiAgICAgU291cmNlL0phdmFTY3JpcHRD
b3JlL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5oIFwKICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qCmluZGV4IDBkMGQ3MTcuLjYzZmJmYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvagpAQCAtMjk0LDYgKzI5NCw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxhc3NlbWJsZXJcTWFjcm9Bc3NlbWJsZXIuY3BwIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cQVBJXEpTQ1Rlc3RSdW5uZXJVdGlscy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cYXNzZW1ibGVyXE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNwcCIgLz4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGJpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2Fs
bC5jcHAiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xiaW5kaW5ncy9T
Y3JpcHRPYmplY3QuY3BwIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3Nc
YmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
Ynl0ZWNvZGVcQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAiIC8+CkBAIC03NTIsNiArNzUzLDcg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxNYWNyb0Fzc2VtYmxlclg4
Nl82NC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXFJlcGF0Y2hC
dWZmZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxYODZBc3Nl
bWJsZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGJpbmRpbmdz
L1NjcmlwdEZ1bmN0aW9uQ2FsbC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmlu
ZGluZ3NcYmluZGluZ3MvU2NyaXB0T2JqZWN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxiaW5kaW5nc1xiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIiAvPgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IDhmZGEx
MjAuLjM1Y2E1YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qLmZpbHRlcnMKQEAgLTEwOCw2ICsxMDgsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cYXNzZW1ibGVyXE1hY3JvQXNzZW1ibGVyLmNwcCI+CiAgICAgICA8RmlsdGVyPmFzc2VtYmxl
cjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
YmluZGluZ3NcU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCI+CisgICAgICA8RmlsdGVyPmJpbmRpbmdz
PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxi
aW5kaW5nc1xTY3JpcHRPYmplY3QuY3BwIj4KICAgICAgIDxGaWx0ZXI+YmluZGluZ3M8L0ZpbHRl
cj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTE0MDYsNiArMTQwOSw5IEBACiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcWDg2QXNzZW1ibGVyLmgiPgogICAgICAgPEZpbHRlcj5h
c3NlbWJsZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdEZ1bmN0aW9uQ2FsbC5oIj4KKyAgICAgIDxGaWx0ZXI+Ymlu
ZGluZ3M8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGJpbmRpbmdzXFNjcmlwdE9iamVjdC5oIj4KICAgICAgIDxGaWx0ZXI+YmluZGluZ3M8L0Zp
bHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
YzVjNGUwNy4uNThkNzM5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg5Miw2
ICs4OTIsOCBAQAogCQlBNTRDRjJGNjE4NEVBQjI0MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NENGMkYzMTg0
RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1NENGMkY5MTg0RUFFREEwMDIzN0YxOSAvKiBTY3Jp
cHRPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTU0Q0YyRjcxODRFQUVEQTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5jcHAgKi87IH07CiAJ
CUE1NENGMkZBMTg0RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NENGMkY4MTg0RUFFREEwMDIzN0Yx
OSAvKiBTY3JpcHRPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlBNTVEOTNBNTE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25D
YWxsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
NUQ5M0EzMTg1MDEyQTgwMDQwMERFRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwICovOyB9Owor
CQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTVEOTNBNDE4NTAxMkE4
MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTU5M0NGN0MxODQwMzYwMzAwQkZDRTI3IC8qIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1OTNDRjdBMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci5jcHAgKi87IH07CiAJCUE1OTNDRjdEMTg0MDM2MDMwMEJGQ0UyNyAv
KiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5M0NGN0IxODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQTU5M0NGN0YxODQwMzYyQzAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50
QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5
M0NGN0UxODQwMzYyQzAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50QmFzZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMjI4LDYgKzIyMzAsOCBA
QAogCQlBNTRDRjJGMzE4NEVBQjI0MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTU0Q0YyRjcxODRFQUVEQTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRPYmplY3QuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTRDRjJGODE4NEVBRURBMDAyMzdGMTkgLyog
U2NyaXB0T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdE9i
amVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTVEOTNBMzE4NTAxMkE4MDA0
MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE1NUQ5M0E0MTg1MDEyQTgwMDQwMERFRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0RnVuY3Rpb25DYWxsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1OTNDRjdBMTg0MDM2MDMwMEJGQ0UyNyAv
KiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHA7IHBhdGggPSBpbnNw
ZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNTkzQ0Y3QjE4NDAzNjAzMDBCRkNFMjcgLyogSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIuaDsgcGF0aCA9IGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTkzQ0Y3RTE4NDAzNjJDMDBC
RkNFMjcgLyogSW5zcGVjdG9yQWdlbnRCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEluc3BlY3RvckFnZW50QmFzZS5oOyBwYXRoID0gaW5zcGVjdG9yL0luc3BlY3RvckFn
ZW50QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDIwNiw2ICs0MjEwLDgg
QEAKIAkJQTU0Q0YyRUExODRFQTczOTAwMjM3RjE5IC8qIGJpbmRpbmdzICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlBNTVEOTNBMzE4NTAxMkE4MDA0MDBE
RUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCAqLywKKwkJCQlBNTVEOTNBNDE4NTAxMkE4MDA0
MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggKi8sCiAJCQkJQTU0Q0YyRjcxODRFQUVEQTAw
MjM3RjE5IC8qIFNjcmlwdE9iamVjdC5jcHAgKi8sCiAJCQkJQTU0Q0YyRjgxODRFQUVEQTAwMjM3
RjE5IC8qIFNjcmlwdE9iamVjdC5oICovLAogCQkJCUE1NENGMkYyMTg0RUFCMjQwMDIzN0YxOSAv
KiBTY3JpcHRWYWx1ZS5jcHAgKi8sCkBAIC00OTgyLDYgKzQ5ODgsNyBAQAogCQkJCTQ1MTUzOUI5
MTJEQzk5NDUwMEVGN0FDNCAvKiBZYXJyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjY2NkVDRDE4
MzZCMzdFMDBEMDE3RjEgLyogREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvblBoYXNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NjcwNEI4NTEyREJBMzM3MDBBOUZFN0IgLyogWWFyckludGVycHJl
dGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2Ny
aXB0RnVuY3Rpb25DYWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI4NzEyREJBMzM3MDBB
OUZFN0IgLyogWWFyckpJVC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY3MDRCODgxMkRCQTMzNzAw
QTlGRTdCIC8qIFlhcnJQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NzA0QjhBMTJEQkEz
MzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oIGluIEhlYWRlcnMgKi8sCkBAIC01NTQyLDYgKzU1
NDksNyBAQAogCQkJCTBGQkUwRjc2MTZDMURCMEYwMDgyQzVFOCAvKiBERkdVbmlmaWNhdGlvblBo
YXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzRCMTQ5MTZENDIwMTAwMDFDREE1QSAvKiBE
RkdVc2VLaW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0IzQTJCMTU0NzUwMDAwMDNFRDBG
RiAvKiBERkdWYWxpZGF0ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNTVEOTNBNTE4NTAxMkE4
MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MkJEQzRGMTUyMjhCRjMwMENEODkxMCAvKiBERkdWYWx1ZVNvdXJjZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkREQkZCNTE2NjZFRUQ4MDBDNTVGRUYgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRh
RHVtcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCREM1MTE1MjI4RkZEMDBDRDg5MTAgLyog
REZHVmFyaWFibGVFdmVudC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcApzaW1pbGFyaXR5IGluZGV4
IDg5JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlv
bkNhbGwuY3BwCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0
RnVuY3Rpb25DYWxsLmNwcAppbmRleCA5ODRmZjUwLi5lZGJmMmRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCkBAIC0xLDQg
KzEsNSBAQAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTMxLDE0ICszMiwxMSBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5oIgogCi0jaW5jbHVkZSAi
SlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCi0jaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUu
aD4KLSNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgorI2luY2x1ZGUgIkpTTG9jay5oIgorI2lu
Y2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
LXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBK
U0MgewogCiB2b2lkIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KGNv
bnN0IFNjcmlwdE9iamVjdCYgYXJndW1lbnQpCiB7CkBAIC01Nyw3ICs1NSw3IEBAIHZvaWQgU2Ny
aXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQoY29uc3QgU2NyaXB0VmFsdWUm
IGFyZ3VtZW50KQogdm9pZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1bWVu
dChjb25zdCBTdHJpbmcmIGFyZ3VtZW50KQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKG1fZXhl
Yyk7Ci0gICAgbV9hcmd1bWVudHMuYXBwZW5kKGpzU3RyaW5nV2l0aENhY2hlKG1fZXhlYywgYXJn
dW1lbnQpKTsKKyAgICBtX2FyZ3VtZW50cy5hcHBlbmQoanNTdHJpbmcobV9leGVjLCBhcmd1bWVu
dCkpOwogfQogCiB2b2lkIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50
KGNvbnN0IGNoYXIqIGFyZ3VtZW50KQpAQCAtNjYsNyArNjQsNyBAQCB2b2lkIFNjcmlwdENhbGxB
cmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KGNvbnN0IGNoYXIqIGFyZ3VtZW50KQogICAg
IG1fYXJndW1lbnRzLmFwcGVuZChqc1N0cmluZyhtX2V4ZWMsIFN0cmluZyhhcmd1bWVudCkpKTsK
IH0KIAotdm9pZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1bWVudChKU0M6
OkpTVmFsdWUgYXJndW1lbnQpCit2b2lkIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVu
ZEFyZ3VtZW50KEpTVmFsdWUgYXJndW1lbnQpCiB7CiAgICAgbV9hcmd1bWVudHMuYXBwZW5kKGFy
Z3VtZW50KTsKIH0KQEAgLTEwNiw4ICsxMDQsOSBAQCB2b2lkIFNjcmlwdENhbGxBcmd1bWVudEhh
bmRsZXI6OmFwcGVuZEFyZ3VtZW50KGJvb2wgYXJndW1lbnQpCiAgICAgbV9hcmd1bWVudHMuYXBw
ZW5kKGpzQm9vbGVhbihhcmd1bWVudCkpOwogfQogCi1TY3JpcHRGdW5jdGlvbkNhbGw6OlNjcmlw
dEZ1bmN0aW9uQ2FsbChjb25zdCBTY3JpcHRPYmplY3QmIHRoaXNPYmplY3QsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKK1NjcmlwdEZ1bmN0aW9uQ2FsbDo6U2NyaXB0RnVuY3Rpb25DYWxsKGNvbnN0IFNj
cmlwdE9iamVjdCYgdGhpc09iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBTY3JpcHRGdW5jdGlv
bkNhbGxIYW5kbGVyIGNhbGxIYW5kbGVyKQogICAgIDogU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxl
cih0aGlzT2JqZWN0LnNjcmlwdFN0YXRlKCkpCisgICAgLCBtX2NhbGxIYW5kbGVyKGNhbGxIYW5k
bGVyKQogICAgICwgbV90aGlzT2JqZWN0KHRoaXNPYmplY3QpCiAgICAgLCBtX25hbWUobmFtZSkK
IHsKQEAgLTEzMSw4ICsxMzAsOCBAQCBTY3JpcHRWYWx1ZSBTY3JpcHRGdW5jdGlvbkNhbGw6OmNh
bGwoYm9vbCYgaGFkRXhjZXB0aW9uKQogICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoKTsKIAog
ICAgIEpTVmFsdWUgcmVzdWx0OwotICAgIGlmIChpc01haW5UaHJlYWQoKSkKLSAgICAgICAgcmVz
dWx0ID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKG1fZXhlYywgZnVuY3Rpb24sIGNhbGxU
eXBlLCBjYWxsRGF0YSwgdGhpc09iamVjdCwgbV9hcmd1bWVudHMpOworICAgIGlmIChtX2NhbGxI
YW5kbGVyKQorICAgICAgICByZXN1bHQgPSBtX2NhbGxIYW5kbGVyKG1fZXhlYywgZnVuY3Rpb24s
IGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc09iamVjdCwgbV9hcmd1bWVudHMpOwogICAgIGVsc2UK
ICAgICAgICAgcmVzdWx0ID0gSlNDOjpjYWxsKG1fZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBj
YWxsRGF0YSwgdGhpc09iamVjdCwgbV9hcmd1bWVudHMpOwogCkBAIC0xNTAsNCArMTQ5LDQgQEAg
U2NyaXB0VmFsdWUgU2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKCkKICAgICByZXR1cm4gY2FsbCho
YWRFeGNlcHRpb24pOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0
aW9uQ2FsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9u
Q2FsbC5oCnNpbWlsYXJpdHkgaW5kZXggNTElCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmgKaW5kZXggODc4MjRmZi4uYWEzZDUx
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25D
YWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9u
Q2FsbC5oCkBAIC0xLDQgKzEsNSBAQAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTMxLDU1ICszMiw1
MiBAQAogI2lmbmRlZiBTY3JpcHRGdW5jdGlvbkNhbGxfaAogI2RlZmluZSBTY3JpcHRGdW5jdGlv
bkNhbGxfaAogCi0jaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0T2JqZWN0Lmg+Ci0jaW5jbHVkZSA8
cnVudGltZS9BcmdMaXN0Lmg+CisjaW5jbHVkZSAiQXJnTGlzdC5oIgorI2luY2x1ZGUgIlNjcmlw
dE9iamVjdC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKLWNsYXNzIEpTVmFsdWU7Ci1jbGFzcyBTY3JpcHRWYWx1ZTsKLX0KIAotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi0gICAgY2xhc3MgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlciB7Ci0gICAg
cHVibGljOgotICAgICAgICBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyKEpTQzo6RXhlY1N0YXRl
KiBzdGF0ZSkgOiBtX2V4ZWMoc3RhdGUpIHsgfQotCi0gICAgICAgIHZvaWQgYXBwZW5kQXJndW1l
bnQoY29uc3QgSlNDOjpTY3JpcHRPYmplY3QmKTsKLSAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVu
dChjb25zdCBKU0M6OlNjcmlwdFZhbHVlJik7Ci0gICAgICAgIHZvaWQgYXBwZW5kQXJndW1lbnQo
Y29uc3QgY2hhciopOwotICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGNvbnN0IFN0cmluZyYp
OwotICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KEpTQzo6SlNWYWx1ZSk7Ci0gICAgICAgIHZv
aWQgYXBwZW5kQXJndW1lbnQobG9uZyk7Ci0gICAgICAgIHZvaWQgYXBwZW5kQXJndW1lbnQobG9u
ZyBsb25nKTsKLSAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVudCh1bnNpZ25lZCBpbnQpOwotICAg
ICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KHVuc2lnbmVkIGxvbmcpOwotICAgICAgICB2b2lkIGFw
cGVuZEFyZ3VtZW50KGludCk7Ci0gICAgICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoYm9vbCk7Ci0K
LSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgbV9hcmd1
bWVudHM7Ci0gICAgICAgIEpTQzo6RXhlY1N0YXRlKiBtX2V4ZWM7Ci0KLSAgICBwcml2YXRlOgot
ICAgICAgICAvLyBNYXJrZWRBcmd1bWVudEJ1ZmZlciBtdXN0IGJlIHN0YWNrIGFsbG9jYXRlZCwg
c28gcHJldmVudCBoZWFwCi0gICAgICAgIC8vIGFsbG9jIG9mIFNjcmlwdEZ1bmN0aW9uQ2FsbCBh
cyB3ZWxsLgotICAgICAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90KSB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMHhiYWRiZWVmKTsgfQot
ICAgICAgICB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QpIHsgQVNTRVJUX05PVF9SRUFDSEVE
KCk7IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigweGJhZGJlZWYpOyB9Ci0gICAgfTsK
LQotICAgIGNsYXNzIFNjcmlwdEZ1bmN0aW9uQ2FsbCA6IHB1YmxpYyBTY3JpcHRDYWxsQXJndW1l
bnRIYW5kbGVyIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbChjb25z
dCBKU0M6OlNjcmlwdE9iamVjdCYgdGhpc09iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAg
ICAgICAgSlNDOjpTY3JpcHRWYWx1ZSBjYWxsKGJvb2wmIGhhZEV4Y2VwdGlvbik7Ci0gICAgICAg
IEpTQzo6U2NyaXB0VmFsdWUgY2FsbCgpOwotCi0gICAgcHJvdGVjdGVkOgotICAgICAgICBKU0M6
OlNjcmlwdE9iamVjdCBtX3RoaXNPYmplY3Q7Ci0gICAgICAgIFN0cmluZyBtX25hbWU7Ci0gICAg
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgU2Ny
aXB0Q2FsbEFyZ3VtZW50SGFuZGxlciB7CitwdWJsaWM6CisgICAgU2NyaXB0Q2FsbEFyZ3VtZW50
SGFuZGxlcihFeGVjU3RhdGUqIHN0YXRlKSA6IG1fZXhlYyhzdGF0ZSkgeyB9CisKKyAgICB2b2lk
IGFwcGVuZEFyZ3VtZW50KGNvbnN0IFNjcmlwdE9iamVjdCYpOworICAgIHZvaWQgYXBwZW5kQXJn
dW1lbnQoY29uc3QgU2NyaXB0VmFsdWUmKTsKKyAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGNvbnN0
IGNoYXIqKTsKKyAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGNvbnN0IFN0cmluZyYpOworICAgIHZv
aWQgYXBwZW5kQXJndW1lbnQoSlNWYWx1ZSk7CisgICAgdm9pZCBhcHBlbmRBcmd1bWVudChsb25n
KTsKKyAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGxvbmcgbG9uZyk7CisgICAgdm9pZCBhcHBlbmRB
cmd1bWVudCh1bnNpZ25lZCBpbnQpOworICAgIHZvaWQgYXBwZW5kQXJndW1lbnQodW5zaWduZWQg
bG9uZyk7CisgICAgdm9pZCBhcHBlbmRBcmd1bWVudChpbnQpOworICAgIHZvaWQgYXBwZW5kQXJn
dW1lbnQoYm9vbCk7CisKK3Byb3RlY3RlZDoKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBtX2Fy
Z3VtZW50czsKKyAgICBFeGVjU3RhdGUqIG1fZXhlYzsKKworcHJpdmF0ZToKKyAgICAvLyBNYXJr
ZWRBcmd1bWVudEJ1ZmZlciBtdXN0IGJlIHN0YWNrIGFsbG9jYXRlZCwgc28gcHJldmVudCBoZWFw
CisgICAgLy8gYWxsb2Mgb2YgU2NyaXB0RnVuY3Rpb25DYWxsIGFzIHdlbGwuCisgICAgdm9pZCog
b3BlcmF0b3IgbmV3KHNpemVfdCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KDB4YmFkYmVlZik7IH0KKyAgICB2b2lkKiBvcGVyYXRvciBuZXdb
XShzaXplX3QpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiByZWludGVycHJldF9jYXN0
PHZvaWQqPigweGJhZGJlZWYpOyB9Cit9OworCitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBTY3Jp
cHRGdW5jdGlvbkNhbGwgOiBwdWJsaWMgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlciB7CitwdWJs
aWM6CisgICAgdHlwZWRlZiBKU1ZhbHVlICgqU2NyaXB0RnVuY3Rpb25DYWxsSGFuZGxlcikoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBDYWxsVHlwZSBjYWxsVHlwZSwg
Y29uc3QgQ2FsbERhdGEmIGNhbGxEYXRhLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlz
dCYgYXJncyk7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsKGNvbnN0IFNjcmlwdE9iamVjdCYgdGhp
c09iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBTY3JpcHRGdW5jdGlvbkNhbGxIYW5kbGVyIGhh
bmRsZXIgPSBudWxscHRyKTsKKyAgICBTY3JpcHRWYWx1ZSBjYWxsKGJvb2wmIGhhZEV4Y2VwdGlv
bik7CisgICAgU2NyaXB0VmFsdWUgY2FsbCgpOworCitwcm90ZWN0ZWQ6CisgICAgU2NyaXB0RnVu
Y3Rpb25DYWxsSGFuZGxlciBtX2NhbGxIYW5kbGVyOworICAgIFNjcmlwdE9iamVjdCBtX3RoaXNP
YmplY3Q7CisgICAgU3RyaW5nIG1fbmFtZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwogCiAj
ZW5kaWYgLy8gU2NyaXB0RnVuY3Rpb25DYWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVkMjJlNy4uMmM3MzRl
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtNSw2ICs1LDY4IEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCiAKKyAgICAgICAgUGFydCAzOiBQdXNoIERvd24gU2NyaXB0RnVuY3Rpb25D
YWxsCisKKyAgICAgICAgICAtIE1vdmUgU2NyaXB0RnVuY3Rpb25DYWxsIHRvIEphdmFTY3JpcHRD
b3JlL2JpbmRpbmdzIGludG8gbmFtZXNwYWNlIEpTQworICAgICAgICAgIC0gR2l2ZSBjb25zdHJ1
Y3RvciBhIGZ1bmN0aW9uIHRvIGFsbCBmb3IgYSBkaWZmZXJlbnQgSlNDOjpjYWxsLCBiZWNhdXNl
CisgICAgICAgICAgICBXZWJDb3JlIFNjcmlwdEZ1bmN0aW9uQ2FsbCdzIHVzZSBKU01haW5UaHJl
YWRFeGVjU3RhdGUgd2hlbiBpc01haW5UaHJlYWQuCisgICAgICAgICAgLSBQcmVmZXIgSlNDOjpT
Y3JpcHRGdW5jdGlvbkNhbGwgZXZlcnl3aGVyZSBpdCBpcyB1c2VkIGluIFdlYkNvcmUuCisKKyAg
ICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaDog
QWRkZWQuCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBVc2VKU0Mu
Y21ha2U6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAg
ICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNYWluVGhy
ZWFkRXhlY1N0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJG
cm9tQW55VGhyZWFkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3Rh
dGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y3VycmVudFN0
YXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
amVjdGVkU2NyaXB0OjpjYWxsRnVuY3Rpb25Pbik6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3Rl
ZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3Rl
ZFNjcmlwdDo6Z2V0RnVuY3Rpb25EZXRhaWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVk
U2NyaXB0OjpnZXRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0
OjpnZXRJbnRlcm5hbFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3Jp
cHQ6Om5vZGVGb3JPYmplY3RJZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6
cmVsZWFzZU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6d3JhcENh
bGxGcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBPYmplY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBUYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6ZmluZE9iamVjdEJ5SWQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5qZWN0ZWRTY3JpcHQ6Omluc3BlY3ROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
amVjdGVkU2NyaXB0OjpyZWxlYXNlT2JqZWN0R3JvdXApOgorICAgICAgICAqIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRC
YXNlOjpjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5q
ZWN0ZWRTY3JpcHRCYXNlOjptYWtlQ2FsbCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNj
cmlwdEJhc2U6Om1ha2VFdmFsQ2FsbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0QmFzZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVs
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6Y2Fs
bFdyYXBDb250ZXh0RnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRD
YW52YXNNb2R1bGU6Om1hcmtGcmFtZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNj
cmlwdENhbnZhc01vZHVsZTo6Y2FsbFN0YXJ0Q2FwdHVyaW5nRnVuY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OmNhbGxWb2lkRnVuY3Rpb25XaXRo
VHJhY2VMb2dJZEFyZ3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Q2Fu
dmFzTW9kdWxlOjp0cmFjZUxvZyk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdENh
bnZhc01vZHVsZTo6cmVwbGF5VHJhY2VMb2cpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRT
Y3JpcHRDYW52YXNNb2R1bGU6OnJlc291cmNlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpJbmpl
Y3RlZFNjcmlwdENhbnZhc01vZHVsZTo6cmVzb3VyY2VTdGF0ZSk6CisgICAgICAgICogaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVk
U2NyaXB0TW9kdWxlOjplbnN1cmVJbmplY3RlZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcm9udGVuZE1lbnVQcm92aWRlcjo6Y29udGV4dE1lbnVJ
dGVtU2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJvbnRlbmRNZW51UHJvdmlkZXI6OmNv
bnRleHRNZW51Q2xlYXJlZCk6CisKKzIwMTMtMTItMDUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29y
YXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVj
dG9yIFJlcXVpcmVkIENsYXNzZXMgRG93biBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBQYXJ0IDI6IFB1c2ggU2NyaXB0
IHdyYXBwZXIgY2xhc3NlcyBkb3duIGludG8gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MuCiAKICAg
ICAgICAgICAtIE1vdmUgU2NyaXB0T2JqZWN0IGFuZCBTY3JpcHRWYWx1ZSBpbnRvIEphdmFTY3Jp
cHRDb3JlIGFuZCBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3
YXJkaW5nSGVhZGVycy9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaCBiL1NvdXJjZS9XZWJD
b3JlL0ZvcndhcmRpbmdIZWFkZXJzL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1ZDJhMDUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9iaW5kaW5ncy9TY3JpcHRGdW5jdGlv
bkNhbGwuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfU2NyaXB0RnVuY3Rp
b25DYWxsX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfU2NyaXB0RnVuY3Rpb25DYWxsX2gKKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRGdW5jdGlvbkNhbGwuaD4KKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZjZiMTkxNy4uZjE2MmE4ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yNDQ2LDggKzI0NDYsNiBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCBcCiAJ
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oIFwKLQlTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwIFwKLQlTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuaCBcCiAJU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0SGVhcFNuYXBzaG90LmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdEdsb2JhbE9iamVjdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdEdsb2JhbE9iamVjdC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1VzZUpT
Qy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQppbmRleCAwZThmZjkyLi42Mzg0
NTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKKysrIGIvU291cmNl
L1dlYkNvcmUvVXNlSlNDLmNtYWtlCkBAIC0xMjQsNyArMTI0LDYgQEAgbGlzdChBUFBFTkQgV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAK
ICAgICBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAogICAgIGJpbmRpbmdzL2pzL1Nj
cmlwdERlYnVnU2VydmVyLmNwcAotICAgIGJpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5j
cHAKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuY3BwCiAgICAgYmluZGluZ3Mv
anMvU2NyaXB0UHJvZmlsZS5jcHAKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4
IGZhN2VmZmMuLmYwZTdlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvagpAQCAtMTcyNzQsMjAgKzE3Mjc0LDYgQEAKICAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1By
b2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1By
b2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+
Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRGdW5jdGlvbkNh
bGwuY3BwIj4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
LSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdz
XGpzXFNjcmlwdEdsb2JhbE9iamVjdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxiaW5kaW5nc1xqc1xTY3JpcHRQcm9maWxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdFByb2ZpbGVyLmNwcCI+CkBAIC0xODU0OCw2ICsxODUz
NCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcV2ViQ29yZVxEZXJpdmVkU291cmNlc1xKU1dlYkdM
VmVydGV4QXJyYXlPYmplY3RPRVMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFj
Y2Vzc2liaWxpdHlcQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGNzc1xDU1NJbWFnZVNldFZhbHVlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRp
bmdzXFNjcmlwdE9iamVjdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2Fy
ZGluZ0hlYWRlcnNcYmluZGluZ3NcU2NyaXB0VmFsdWUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGhlYXBcQWxsb2NhdGlvblNwYWNlLmgiIC8+CkBA
IC0yMDYwNiw3ICsyMDU5Myw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5n
c1xqc1xTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRDb250cm9sbGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHREZWJ1Z1NlcnZlci5oIiAvPgotICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0RnVuY3Rpb25DYWxsLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRIZWFwU25hcHNob3Qu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdEdsb2Jh
bE9iamVjdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2Ny
aXB0UHJvZmlsZS5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IDZmZjEwNDYuLjgxMjBiNWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmls
dGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
LmZpbHRlcnMKQEAgLTQ1NjMsOSArNDU2Myw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxiaW5kaW5nc1xqc1xTY3JpcHREZWJ1Z1NlcnZlci5jcHAiPgogICAgICAgPEZpbHRlcj5iaW5k
aW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCI+Ci0gICAgICA8RmlsdGVy
PmJpbmRpbmdzXGpzPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRHbG9iYWxPYmplY3QuY3BwIj4KICAgICAgIDxG
aWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTExNDk2LDkg
KzExNDkzLDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlw
dERlYnVnU2VydmVyLmgiPgogICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgogICAg
IDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2Ny
aXB0RnVuY3Rpb25DYWxsLmgiPgotICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgot
ICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNc
U2NyaXB0SGVhcFNuYXBzaG90LmgiPgogICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVy
PgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMTIxNzcsNiArMTIxNzEsOSBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cc3ZnXHByb3BlcnRpZXNcU1ZHVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVh
ck9mZi5oIj4KICAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nXHN2Z1xwcm9wZXJ0aWVzPC9GaWx0ZXI+
CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5n
SGVhZGVyc1xiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuaCI+CisgICAgICA8RmlsdGVyPkZv
cndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5nc1xTY3JpcHRP
YmplY3QuaCI+CiAgICAgICA8RmlsdGVyPkZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzPC9GaWx0
ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjkzNzYxNy4uZDczNDk0OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIyMSw4
ICsxMjIxLDYgQEAKIAkJNDA5RUJEQzUxNkI3RjNDQTAwQ0JBM0ZDIC8qIEpTQ1NTRm9udEZhY2VM
b2FkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDA5RUJEQzQxNkI3RjNDQTAwQ0JBM0ZDIC8qIEpTQ1NTRm9udEZhY2VMb2FkRXZlbnQuY3Bw
ICovOyB9OwogCQk0MEVDQUU3RTE2QjhCNjcyMDBDMzYxMDMgLyogSlNET01FcnJvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDBFQ0FFN0QxNkI4QjY3
MjAwQzM2MTAzIC8qIEpTRE9NRXJyb3IuaCAqLzsgfTsKIAkJNDBFQ0FFODExNkI4QjY4QTAwQzM2
MTAzIC8qIEpTRE9NRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDBFQ0FFODAxNkI4QjY4QTAwQzM2MTAzIC8qIEpTRE9NRXJyb3IuY3BwICov
OyB9OwotCQk0MTAwMkNDRDBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTAwMkNDQjBG
NjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggKi87IH07Ci0JCTQxMDAyQ0NF
MEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwMDJDQ0MwRjY2RURFRjAwOUU2NjBE
IC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgKi87IH07CiAJCTQxMEI3RTcyMTA0NUZBQjAwMEQ4
MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTBCN0U3MTEwNDVGQUIwMDBEODIyNEYgLyogSlNNZXNz
YWdlRXZlbnRDdXN0b20uY3BwICovOyB9OwogCQk0MTIzMDgxQjEzOEM0Mjk3MDBCQ0NGQ0EgLyog
V2ViQ29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0YxOUIxQTA4MjQ1RTVBMDAxRTlBQkMgLyogV2ViQ29yZS5mcmFtZXdvcmsg
Ki87IH07CiAJCTQxMjMwOTEzMTM4QzQyRkYwMEJDQ0ZDQSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFt
ZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
ODIxNjI5OTAyOUY0RkI1MDEwMDAxMzEgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9
OwpAQCAtNzg4OSw4ICs3ODg3LDYgQEAKIAkJNDA5RUJEQzQxNkI3RjNDQTAwQ0JBM0ZDIC8qIEpT
Q1NTRm9udEZhY2VMb2FkRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNDU1NGb250RmFjZUxvYWRFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQwRUNBRTdEMTZCOEI2NzIwMEMzNjEwMyAvKiBKU0RPTUVycm9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDBFQ0FFODAxNkI4QjY4QTAwQzM2MTAzIC8qIEpTRE9NRXJyb3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01FcnJvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxMDAyQ0NCMEY2NkVERUYwMDlFNjYwRCAvKiBTY3Jp
cHRGdW5jdGlvbkNhbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0
RnVuY3Rpb25DYWxsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxMDAyQ0NDMEY2
NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0RnVuY3Rpb25DYWxsLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDEwQjdFNzExMDQ1RkFCMDAwRDgyMjRGIC8qIEpTTWVzc2FnZUV2
ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVz
c2FnZUV2ZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEyN0Q1
MzYwRjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDEzOEQzMzMxMjQ0MDU0ODAwMzIzRDMzIC8qIEV2ZW50Q29udGV4dC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudENvbnRleHQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NjIzLDggKzE5NjE5LDYgQEAKIAkJCQlBODNFMUM3MjBFNDkw
NDJCMDAxNDBCOUMgLyogU2NyaXB0Q29udHJvbGxlck1hYy5tbSAqLywKIAkJCQk5RjZGQzE5NDEx
MjJFODJBMDBFODAxOTYgLyogU2NyaXB0RGVidWdTZXJ2ZXIuY3BwICovLAogCQkJCTlGNkZDMTk1
MTEyMkU4MkEwMEU4MDE5NiAvKiBTY3JpcHREZWJ1Z1NlcnZlci5oICovLAotCQkJCTQxMDAyQ0ND
MEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwICovLAotCQkJCTQxMDAy
Q0NCMEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCAqLywKIAkJCQk5RjNC
OTQ3RDEyMjQxNzU4MDA1MzA0RTcgLyogU2NyaXB0SGVhcFNuYXBzaG90LmggKi8sCiAJCQkJNDFG
MDY2RTMwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdEdsb2JhbE9iamVjdC5jcHAgKi8sCiAJCQkJ
NDFGMDY2RTIwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdEdsb2JhbE9iamVjdC5oICovLApAQCAt
MjQ0ODMsNyArMjQ0NzcsNiBAQAogCQkJCTA4QTQ4NDc4MEU1MjcyQzUwMEMzRkU3NiAvKiBTY3Jp
cHRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTFDOUQ5QjBFQjM2ODEyMDBFNDA5REIg
LyogU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RENzA4OTcx
ODM1OUY2RjAwMkIzREM2IC8qIFNhbXBsZU1hcC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDEwMDJD
Q0QwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOUYzQjk0N0UxMjI0MTc1ODAwNTMwNEU3IC8qIFNjcmlwdEhlYXBTbmFwc2hvdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDFGMDY2RTQwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdEdsb2Jh
bE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMzYxMkIwMjY3NjAwQzFBMzU5IC8q
IFNjcmlwdFByb2Nlc3Nvck5vZGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjc3MTgsNyArMjc3MTEs
NiBAQAogCQkJCTQ5OThBRUQxMTNGQjIyNEQwMDkwQjFBQSAvKiBTY3JpcHRlZEFuaW1hdGlvbkNv
bnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDhBNDg0NzcwRTUyNzJDNTAwQzNGRTc2
IC8qIFNjcmlwdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTExQzlEQjAwRUIzNjk5
NTAwRTQwOURCIC8qIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJNDEwMDJDQ0UwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0MUYwNjZFNTBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0R2xvYmFs
T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MDM1MTJCMDI2NzYwMEMxQTM1OSAv
KiBTY3JpcHRQcm9jZXNzb3JOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUYzM0YwMjgyMTIw
OTQ3RjIwMEU1NzQzQSAvKiBTY3JpcHRQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKaW5kZXgg
NTc3OTg5YS4uYTMwZjc5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNCaW5kaW5nc0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0JpbmRpbmdzQWxsSW5PbmUuY3BwCkBAIC0xNDksNyArMTQ5LDYgQEAKICNpbmNsdWRlICJTY3Jp
cHRDYWxsU3RhY2tGYWN0b3J5LmNwcCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmNwcCIK
ICNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5jcHAiCi0jaW5jbHVkZSAiU2NyaXB0RnVuY3Rp
b25DYWxsLmNwcCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlci5jcHAiCiAjaW5jbHVkZSAiU2Ny
aXB0U3RhdGUuY3BwIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmNw
cAppbmRleCA0MjkzYTQ2Li5hNThjOGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAKQEAgLTQ2LDQgKzQ2LDEyIEBAIHZv
aWQgSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpkaWRMZWF2ZVNjcmlwdENvbnRleHQoKQogICAgIE11
dGF0aW9uT2JzZXJ2ZXI6OmRlbGl2ZXJBbGxNdXRhdGlvbnMoKTsKIH0KIAorSlNDOjpKU1ZhbHVl
IGZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBK
U0M6OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0
IEpTQzo6Q2FsbERhdGEmIGNhbGxEYXRhLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBK
U0M6OkFyZ0xpc3QmIGFyZ3MpCit7CisgICAgaWYgKGlzTWFpblRocmVhZCgpKQorICAgICAgICBy
ZXR1cm4gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uT2JqZWN0LCBj
YWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7CisgICAgZWxzZQorICAgICAgICBy
ZXR1cm4gSlNDOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsVHlwZSwgY2FsbERhdGEs
IHRoaXNWYWx1ZSwgYXJncyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgKaW5kZXgg
MzNiN2JkOS4uMmZhNjYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNNYWluVGhyZWFkRXhlY1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNNYWluVGhyZWFkRXhlY1N0YXRlLmgKQEAgLTI4LDkgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkpT
RE9NQmluZGluZy5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvQ29tcGxldGlvbi5oPgotI2lmbmRlZiBO
REVCVUcKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2VuZGlmCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNDIsNyArNDAsNyBAQCBjbGFzcyBKU01haW5UaHJlYWRFeGVjU3RhdGUg
ewogICAgIGZyaWVuZCBjbGFzcyBKU01haW5UaHJlYWROdWxsU3RhdGU7CiBwdWJsaWM6CiAgICAg
c3RhdGljIEpTQzo6RXhlY1N0YXRlKiBjdXJyZW50U3RhdGUoKQotICAgIHsgCisgICAgewogICAg
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICByZXR1cm4gc19tYWluVGhyZWFk
U3RhdGU7CiAgICAgfTsKQEAgLTUzLDggKzUxLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
SlNDOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNW
YWx1ZSwgYXJncyk7CiAgICAgfTsKIAotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUgaW5zdHJ1bWVudEZ1bmN0aW9uQ2FsbChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
SlNDOjpDYWxsVHlwZSwgY29uc3QgSlNDOjpDYWxsRGF0YSYpOwotCiAgICAgc3RhdGljIEpTQzo6
SlNWYWx1ZSBldmFsdWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNDOjpTb3VyY2VD
b2RlJiBzb3VyY2UsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIEpTQzo6SlNWYWx1ZSogZXhjZXB0
aW9uKQogICAgIHsKICAgICAgICAgSlNNYWluVGhyZWFkRXhlY1N0YXRlIGN1cnJlbnRTdGF0ZShl
eGVjKTsKQEAgLTYyLDYgKzU4LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSlNDOjpldmFs
dWF0ZShleGVjLCBzb3VyY2UsIHRoaXNWYWx1ZSwgZXhjZXB0aW9uKTsKICAgICB9OwogCisgICAg
c3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBpbnN0cnVtZW50RnVuY3Rpb25D
YWxsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBKU0M6OkNhbGxUeXBlLCBjb25zdCBKU0M6OkNh
bGxEYXRhJik7CisKICAgICBleHBsaWNpdCBKU01haW5UaHJlYWRFeGVjU3RhdGUoSlNDOjpFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgICAgIDogbV9wcmV2aW91c1N0YXRlKHNfbWFpblRocmVhZFN0YXRl
KQogICAgIHsKQEAgLTExMCw2ICsxMDgsOCBAQCBwcml2YXRlOgogICAgIEpTQzo6RXhlY1N0YXRl
KiBtX3ByZXZpb3VzU3RhdGU7CiB9OwogCitKU0M6OkpTVmFsdWUgZnVuY3Rpb25DYWxsSGFuZGxl
ckZyb21BbnlUaHJlYWQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBmdW5jdGlv
bk9iamVjdCwgSlNDOjpDYWxsVHlwZSBjYWxsVHlwZSwgY29uc3QgSlNDOjpDYWxsRGF0YSYgY2Fs
bERhdGEsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncyk7
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEpTTWFpblRocmVhZEV4ZWNT
dGF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcAppbmRl
eCA2ODFlNTEzLi41YTIyYjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdC5jcHAKQEAgLTM2LDggKzM2LDkgQEAKIAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0
SG9zdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TW9kdWxlLmgiCisjaW5jbHVkZSAiSlNN
YWluVGhyZWFkRXhlY1N0YXRlLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgotI2luY2x1ZGUgIlNjcmlw
dEZ1bmN0aW9uQ2FsbC5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5o
PgogI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgogI2luY2x1ZGUgPGluc3BlY3Rv
ci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAg
LTY4LDcgKzY5LDcgQEAgSW5qZWN0ZWRTY3JpcHQ6OkluamVjdGVkU2NyaXB0KFNjcmlwdE9iamVj
dCBpbmplY3RlZFNjcmlwdE9iamVjdCwgSW5zcGVjdGVkU3RhdGUKIAogdm9pZCBJbmplY3RlZFNj
cmlwdDo6ZXZhbHVhdGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGV4
cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRM
aW5lQVBJLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwgVHlwZUJ1aWxkZXI6
Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQogewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBm
dW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZXZhbHVhdGUiKTsKKyAgICBKU0M6OlNj
cmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZXZhbHVh
dGUiLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAgZnVu
Y3Rpb24uYXBwZW5kQXJndW1lbnQoZXhwcmVzc2lvbik7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJn
dW1lbnQob2JqZWN0R3JvdXApOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGluY2x1ZGVD
b21tYW5kTGluZUFQSSk7CkBAIC03OSw3ICs4MCw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2
YWx1YXRlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBleHByZXNzaW9u
CiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9u
LCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50cywgYm9vbCByZXR1cm5CeVZhbHVlLCBib29sIGdlbmVy
YXRlUHJldmlldywgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiBy
ZXN1bHQsIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKIHsKLSAgICBT
Y3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImNhbGxG
dW5jdGlvbk9uIik7CisgICAgSlNDOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0
ZWRTY3JpcHRPYmplY3QoKSwgImNhbGxGdW5jdGlvbk9uIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxs
SGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVj
dElkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChleHByZXNzaW9uKTsKICAgICBmdW5j
dGlvbi5hcHBlbmRBcmd1bWVudChhcmd1bWVudHMpOwpAQCAtOTAsNyArOTEsNyBAQCB2b2lkIElu
amVjdGVkU2NyaXB0OjpjYWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNv
bnN0IFN0cmluZyYgb2JqZQogCiB2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZy
YW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFt
ZXMsIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwg
Y29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGJv
b2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxSZW1vdGVPYmpl
Y3Q+KiByZXN1bHQsIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKIHsK
LSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwg
ImV2YWx1YXRlT25DYWxsRnJhbWUiKTsKKyAgICBKU0M6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5j
dGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZXZhbHVhdGVPbkNhbGxGcmFtZSIsIFdlYkNv
cmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBl
bmRBcmd1bWVudChjYWxsRnJhbWVzKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYWxs
RnJhbWVJZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZXhwcmVzc2lvbik7CkBAIC0x
MDMsNyArMTA0LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFNjcmlwdFYKIAogdm9pZCBJbmplY3RlZFNj
cmlwdDo6Z2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8RnVuY3Rpb25EZXRhaWxzPiogcmVzdWx0KQogewot
ICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAi
Z2V0RnVuY3Rpb25EZXRhaWxzIik7CisgICAgSlNDOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rp
b24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImdldEZ1bmN0aW9uRGV0YWlscyIsIFdlYkNvcmU6
OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRB
cmd1bWVudChmdW5jdGlvbklkKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdFZh
bHVlOwogICAgIG1ha2VDYWxsKGZ1bmN0aW9uLCAmcmVzdWx0VmFsdWUpOwpAQCAtMTE3LDcgKzEx
OCw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYKIAogdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0
UHJvcGVydGllcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0
SWQsIGJvb2wgb3duUHJvcGVydGllcywgUmVmUHRyPEFycmF5PFByb3BlcnR5RGVzY3JpcHRvcj4+
KiBwcm9wZXJ0aWVzKQogewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3Rl
ZFNjcmlwdE9iamVjdCgpLCAiZ2V0UHJvcGVydGllcyIpOworICAgIEpTQzo6U2NyaXB0RnVuY3Rp
b25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJnZXRQcm9wZXJ0aWVzIiwg
V2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAgIGZ1bmN0aW9u
LmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChv
d25Qcm9wZXJ0aWVzKTsKIApAQCAtMTMyLDcgKzEzMyw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6
OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9i
amVjCiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEludGVybmFsUHJvcGVydGllcyhFcnJvclN0
cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIFJlZlB0cjxBcnJheTxJ
bnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+KiBwcm9wZXJ0aWVzKQogewotICAgIFNjcmlwdEZ1
bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZ2V0SW50ZXJuYWxQ
cm9wZXJ0aWVzIik7CisgICAgSlNDOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0
ZWRTY3JpcHRPYmplY3QoKSwgImdldEludGVybmFsUHJvcGVydGllcyIsIFdlYkNvcmU6OmZ1bmN0
aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVu
dChvYmplY3RJZCk7CiAKICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdDsKQEAgLTE1
MSw3ICsxNTIsNyBAQCBOb2RlKiBJbmplY3RlZFNjcmlwdDo6bm9kZUZvck9iamVjdElkKGNvbnN0
IFN0cmluZyYgb2JqZWN0SWQpCiAgICAgaWYgKGhhc05vVmFsdWUoKSB8fCAhY2FuQWNjZXNzSW5z
cGVjdGVkV2luZG93KCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgU2NyaXB0RnVuY3Rpb25D
YWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJub2RlRm9yT2JqZWN0SWQiKTsK
KyAgICBKU0M6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVj
dCgpLCAibm9kZUZvck9iamVjdElkIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21B
bnlUaHJlYWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKIAogICAg
IGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7CkBAIC0xNjMsNyArMTY0LDcgQEAgTm9kZSogSW5q
ZWN0ZWRTY3JpcHQ6Om5vZGVGb3JPYmplY3RJZChjb25zdCBTdHJpbmcmIG9iamVjdElkKQogCiB2
b2lkIEluamVjdGVkU2NyaXB0OjpyZWxlYXNlT2JqZWN0KGNvbnN0IFN0cmluZyYgb2JqZWN0SWQp
CiB7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0
KCksICJyZWxlYXNlT2JqZWN0Iik7CisgICAgSlNDOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rp
b24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgInJlbGVhc2VPYmplY3QiLCBXZWJDb3JlOjpmdW5j
dGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1l
bnQob2JqZWN0SWQpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0OwogICAgIG1h
a2VDYWxsKGZ1bmN0aW9uLCAmcmVzdWx0KTsKQEAgLTE3Myw3ICsxNzQsNyBAQCB2b2lkIEluamVj
dGVkU2NyaXB0OjpyZWxlYXNlT2JqZWN0KGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpCiBQYXNzUmVm
UHRyPEFycmF5PENhbGxGcmFtZT4+IEluamVjdGVkU2NyaXB0Ojp3cmFwQ2FsbEZyYW1lcyhjb25z
dCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcykKIHsKICAgICBBU1NFUlQoIWhhc05vVmFsdWUoKSk7
Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCks
ICJ3cmFwQ2FsbEZyYW1lcyIpOworICAgIEpTQzo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9u
KGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJ3cmFwQ2FsbEZyYW1lcyIsIFdlYkNvcmU6OmZ1bmN0
aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVu
dChjYWxsRnJhbWVzKTsKICAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwogICAgIFNjcmlw
dFZhbHVlIGNhbGxGcmFtZXNWYWx1ZSA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5j
dGlvbiwgaGFkRXhjZXB0aW9uKTsKQEAgLTE4OCw3ICsxODksNyBAQCBQYXNzUmVmUHRyPEFycmF5
PENhbGxGcmFtZT4+IEluamVjdGVkU2NyaXB0Ojp3cmFwQ2FsbEZyYW1lcyhjb25zdCBTY3JpcHRW
YWx1ZSYgYwogUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJ
bmplY3RlZFNjcmlwdDo6d3JhcE9iamVjdChjb25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0
IFN0cmluZyYgZ3JvdXBOYW1lLCBib29sIGdlbmVyYXRlUHJldmlldykgY29uc3QKIHsKICAgICBB
U1NFUlQoIWhhc05vVmFsdWUoKSk7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIHdyYXBGdW5jdGlv
bihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAid3JhcE9iamVjdCIpOworICAgIEpTQzo6U2NyaXB0
RnVuY3Rpb25DYWxsIHdyYXBGdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAid3JhcE9i
amVjdCIpOwogICAgIHdyYXBGdW5jdGlvbi5hcHBlbmRBcmd1bWVudCh2YWx1ZSk7CiAgICAgd3Jh
cEZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGdyb3VwTmFtZSk7CiAgICAgd3JhcEZ1bmN0aW9uLmFw
cGVuZEFyZ3VtZW50KGNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdygpKTsKQEAgLTIwNCw3ICsyMDUs
NyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVj
dGVkU2NyaXB0Ojp3cmFwT2JqZWN0KGNvbnN0CiBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwVGFibGUoY29uc3QgU2NyaXB0
VmFsdWUmIHRhYmxlLCBjb25zdCBTY3JpcHRWYWx1ZSYgY29sdW1ucykgY29uc3QKIHsKICAgICBB
U1NFUlQoIWhhc05vVmFsdWUoKSk7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIHdyYXBGdW5jdGlv
bihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAid3JhcFRhYmxlIik7CisgICAgSlNDOjpTY3JpcHRG
dW5jdGlvbkNhbGwgd3JhcEZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJ3cmFwVGFi
bGUiKTsKICAgICB3cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY2FuQWNjZXNzSW5zcGVjdGVk
V2luZG93KCkpOwogICAgIHdyYXBGdW5jdGlvbi5hcHBlbmRBcmd1bWVudCh0YWJsZSk7CiAgICAg
aWYgKGNvbHVtbnMuaGFzTm9WYWx1ZSgpKQpAQCAtMjI3LDcgKzIyOCw3IEBAIFBhc3NSZWZQdHI8
VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBO
b2RlKE5vZGUqIG5vCiBTY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdDo6ZmluZE9iamVjdEJ5SWQo
Y29uc3QgU3RyaW5nJiBvYmplY3RJZCkgY29uc3QKIHsKICAgICBBU1NFUlQoIWhhc05vVmFsdWUo
KSk7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0
KCksICJmaW5kT2JqZWN0QnlJZCIpOworICAgIEpTQzo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0
aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJmaW5kT2JqZWN0QnlJZCIsIFdlYkNvcmU6OmZ1
bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1
bWVudChvYmplY3RJZCk7CiAKICAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwpAQCAtMjM5
LDcgKzI0MCw3IEBAIFNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0OjpmaW5kT2JqZWN0QnlJZChj
b25zdCBTdHJpbmcmIG9iamVjdElkKSBjb25zdAogdm9pZCBJbmplY3RlZFNjcmlwdDo6aW5zcGVj
dE5vZGUoTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQoIWhhc05vVmFsdWUoKSk7Ci0gICAgU2Ny
aXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJpbnNwZWN0
Tm9kZSIpOworICAgIEpTQzo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2Ny
aXB0T2JqZWN0KCksICJpbnNwZWN0Tm9kZSIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJG
cm9tQW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChub2RlQXNTY3JpcHRW
YWx1ZShub2RlKSk7CiAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHQ7CiAgICAgbWFr
ZUNhbGwoZnVuY3Rpb24sICZyZXN1bHQpOwpAQCAtMjQ4LDcgKzI0OSw3IEBAIHZvaWQgSW5qZWN0
ZWRTY3JpcHQ6Omluc3BlY3ROb2RlKE5vZGUqIG5vZGUpCiB2b2lkIEluamVjdGVkU2NyaXB0Ojpy
ZWxlYXNlT2JqZWN0R3JvdXAoY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCkKIHsKICAgICBBU1NF
UlQoIWhhc05vVmFsdWUoKSk7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIHJlbGVhc2VGdW5jdGlv
bihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAicmVsZWFzZU9iamVjdEdyb3VwIik7CisgICAgSlND
OjpTY3JpcHRGdW5jdGlvbkNhbGwgcmVsZWFzZUZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0
KCksICJyZWxlYXNlT2JqZWN0R3JvdXAiLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJv
bUFueVRocmVhZCk7CiAgICAgcmVsZWFzZUZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdEdy
b3VwKTsKICAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwogICAgIGNhbGxGdW5jdGlvbldp
dGhFdmFsRW5hYmxlZChyZWxlYXNlRnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwCmluZGV4IGU2MzA1MzMu
LjAyODkwZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dEJhc2UuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRCYXNl
LmgiCiAKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJT
Y3JpcHRGdW5jdGlvbkNhbGwuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNh
bGwuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgpAQCAtNzYsNyArNzYsNyBAQCBjb25zdCBTY3JpcHRPYmplY3QmIEluamVjdGVkU2NyaXB0QmFz
ZTo6aW5qZWN0ZWRTY3JpcHRPYmplY3QoKSBjb25zdAogICAgIHJldHVybiBtX2luamVjdGVkU2Ny
aXB0T2JqZWN0OwogfQogCi1TY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdEJhc2U6OmNhbGxGdW5j
dGlvbldpdGhFdmFsRW5hYmxlZChTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uLCBib29sJiBo
YWRFeGNlcHRpb24pIGNvbnN0CitTY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdEJhc2U6OmNhbGxG
dW5jdGlvbldpdGhFdmFsRW5hYmxlZChKU0M6OlNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24s
IGJvb2wmIGhhZEV4Y2VwdGlvbikgY29uc3QKIHsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVj
U3RhdGUobV9pbmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpKTsKICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsQ2FsbEZ1bmN0aW9uKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIG5hbWUoKSwgMSk7CkBA
IC05OSw3ICs5OSw3IEBAIFNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0QmFzZTo6Y2FsbEZ1bmN0
aW9uV2l0aEV2YWxFbmFibGVkKFNjcmlwdEZ1bmN0aW9uQ2FsbCYKICAgICByZXR1cm4gcmVzdWx0
VmFsdWU7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtlQ2FsbChTY3JpcHRGdW5j
dGlvbkNhbGwmIGZ1bmN0aW9uLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCit2b2lk
IEluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUNhbGwoSlNDOjpTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1
bmN0aW9uLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCiB7CiAgICAgaWYgKGhhc05v
VmFsdWUoKSB8fCAhY2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KCkpIHsKICAgICAgICAgKnJlc3Vs
dCA9IEluc3BlY3RvclZhbHVlOjpudWxsKCk7CkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBJbmpl
Y3RlZFNjcmlwdEJhc2U6Om1ha2VDYWxsKFNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24sIFJl
ZlB0cjxJbnNwZWN0b3IKICAgICAgICAgKnJlc3VsdCA9IEluc3BlY3RvclN0cmluZzo6Y3JlYXRl
KCJFeGNlcHRpb24gd2hpbGUgbWFraW5nIGEgY2FsbC4iKTsKIH0KIAotdm9pZCBJbmplY3RlZFNj
cmlwdEJhc2U6Om1ha2VFdmFsQ2FsbChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFNjcmlwdEZ1
bmN0aW9uQ2FsbCYgZnVuY3Rpb24sIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0Piogb2JqZWN0UmVzdWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNU
aHJvd24pCit2b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUV2YWxDYWxsKEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgSlNDOjpTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uLCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIG9iamVjdFJlc3VsdCwgVHlwZUJ1
aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQogewogICAgIFJlZlB0cjxJbnNwZWN0
b3JWYWx1ZT4gcmVzdWx0OwogICAgIG1ha2VDYWxsKGZ1bmN0aW9uLCAmcmVzdWx0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaAppbmRleCAxMWZlZjk1
Li5iMTJhMWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
QmFzZS5oCkBAIC0zNiwxNCArMzYsMTYgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBTY3JpcHRGdW5j
dGlvbkNhbGw7Cit9CisKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3MgSW5zcGVjdG9yVmFs
dWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2NyaXB0RnVuY3Rpb25DYWxs
OwotCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CkBAIC02NCw5ICs2Niw5IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGluaXRpYWxpemUoSlNDOjpT
Y3JpcHRPYmplY3QsIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOwogICAgIGJvb2wgY2FuQWNj
ZXNzSW5zcGVjdGVkV2luZG93KCkgY29uc3Q7CiAgICAgY29uc3QgSlNDOjpTY3JpcHRPYmplY3Qm
IGluamVjdGVkU2NyaXB0T2JqZWN0KCkgY29uc3Q7Ci0gICAgSlNDOjpTY3JpcHRWYWx1ZSBjYWxs
RnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoU2NyaXB0RnVuY3Rpb25DYWxsJiwgYm9vbCYgaGFkRXhj
ZXB0aW9uKSBjb25zdDsKLSAgICB2b2lkIG1ha2VDYWxsKFNjcmlwdEZ1bmN0aW9uQ2FsbCYsIFJl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKLSAgICB2b2lkIG1ha2VF
dmFsQ2FsbChFcnJvclN0cmluZyosIFNjcmlwdEZ1bmN0aW9uQ2FsbCYsIFJlZlB0cjxUeXBlQnVp
bGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0
cHV0PGJvb2w+KiB3YXNUaHJvd24pOworICAgIEpTQzo6U2NyaXB0VmFsdWUgY2FsbEZ1bmN0aW9u
V2l0aEV2YWxFbmFibGVkKEpTQzo6U2NyaXB0RnVuY3Rpb25DYWxsJiwgYm9vbCYgaGFkRXhjZXB0
aW9uKSBjb25zdDsKKyAgICB2b2lkIG1ha2VDYWxsKEpTQzo6U2NyaXB0RnVuY3Rpb25DYWxsJiwg
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOworICAgIHZvaWQgbWFr
ZUV2YWxDYWxsKEVycm9yU3RyaW5nKiwgSlNDOjpTY3JpcHRGdW5jdGlvbkNhbGwmLCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwgVHlwZUJ1aWxkZXI6
Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9u
YW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
Q2FudmFzTW9kdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dENhbnZhc01vZHVsZS5jcHAKaW5kZXggZWYwM2YzYi4uOWJlYTE5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuY3Bw
CkBAIC0zNyw3ICszNyw4IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRl
ICJJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5oIgogI2luY2x1ZGUgIkluamVjdGVk
U2NyaXB0TWFuYWdlci5oIgotI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5oIgorI2luY2x1
ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdEZ1
bmN0aW9uQ2FsbC5oPgogI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgogI2luY2x1
ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KIApAQCAtODQsNyArODUsNyBAQCBTY3Jp
cHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OndyYXBXZWJHTENvbnRleHQoY29u
c3QgU2NyaXB0T2JqZWN0JiBnbAogCiBTY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRDYW52YXNN
b2R1bGU6OmNhbGxXcmFwQ29udGV4dEZ1bmN0aW9uKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1l
LCBjb25zdCBTY3JpcHRPYmplY3QmIGNvbnRleHQpCiB7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxs
IGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksIGZ1bmN0aW9uTmFtZSk7CisgICAgSlND
OjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgZnVu
Y3Rpb25OYW1lLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAg
ICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY29udGV4dCk7CiAgICAgYm9vbCBoYWRFeGNlcHRp
b24gPSBmYWxzZTsKICAgICBTY3JpcHRWYWx1ZSByZXN1bHRWYWx1ZSA9IGNhbGxGdW5jdGlvbldp
dGhFdmFsRW5hYmxlZChmdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKQEAgLTk3LDcgKzk4LDcgQEAg
U2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjpjYWxsV3JhcENvbnRleHRG
dW5jdGlvbihjb25zdCBTdHJpbmcmIGYKIAogdm9pZCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVs
ZTo6bWFya0ZyYW1lRW5kKCkKIHsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5q
ZWN0ZWRTY3JpcHRPYmplY3QoKSwgIm1hcmtGcmFtZUVuZCIpOworICAgIEpTQzo6U2NyaXB0RnVu
Y3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJtYXJrRnJhbWVFbmQi
LCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAgUmVmUHRy
PEluc3BlY3RvclZhbHVlPiByZXN1bHRWYWx1ZTsKICAgICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJl
c3VsdFZhbHVlKTsKICAgICBBU1NFUlQocmVzdWx0VmFsdWUpOwpAQCAtMTE1LDcgKzExNiw3IEBA
IHZvaWQgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OnN0YXJ0Q2FwdHVyaW5nKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgVHJhY2VMCiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1
bGU6OmNhbGxTdGFydENhcHR1cmluZ0Z1bmN0aW9uKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1l
LCBFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFRyYWNlTG9nSWQqIHRyYWNlTG9nSWQpCiB7Ci0g
ICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksIGZ1
bmN0aW9uTmFtZSk7CisgICAgSlNDOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0
ZWRTY3JpcHRPYmplY3QoKSwgZnVuY3Rpb25OYW1lLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5k
bGVyRnJvbUFueVRocmVhZCk7CiAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHRWYWx1
ZTsKICAgICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJlc3VsdFZhbHVlKTsKICAgICBpZiAoIXJlc3Vs
dFZhbHVlIHx8IHJlc3VsdFZhbHVlLT50eXBlKCkgIT0gSW5zcGVjdG9yVmFsdWU6OlR5cGVTdHJp
bmcgfHwgIXJlc3VsdFZhbHVlLT5hc1N0cmluZyh0cmFjZUxvZ0lkKSkKQEAgLTEzNCw3ICsxMzUs
NyBAQCB2b2lkIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjpkcm9wVHJhY2VMb2coRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBUcgogCiB2b2lkIEluamVjdGVkU2NyaXB0Q2FudmFz
TW9kdWxlOjpjYWxsVm9pZEZ1bmN0aW9uV2l0aFRyYWNlTG9nSWRBcmd1bWVudChjb25zdCBTdHJp
bmcmIGZ1bmN0aW9uTmFtZSwgRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBUcmFjZUxv
Z0lkJiB0cmFjZUxvZ0lkKQogewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmpl
Y3RlZFNjcmlwdE9iamVjdCgpLCBmdW5jdGlvbk5hbWUpOworICAgIEpTQzo6U2NyaXB0RnVuY3Rp
b25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksIGZ1bmN0aW9uTmFtZSwgV2Vi
Q29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAgIGZ1bmN0aW9uLmFw
cGVuZEFyZ3VtZW50KHRyYWNlTG9nSWQpOwogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7
CiAgICAgY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24p
OwpAQCAtMTQ1LDcgKzE0Niw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OmNh
bGxWb2lkRnVuY3Rpb25XaXRoVHJhY2VMb2dJZEFyZ3VtZW50KGNvbnN0IFN0CiAKIHZvaWQgSW5q
ZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OnRyYWNlTG9nKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgY29uc3QgVHJhY2VMb2dJZCYgdHJhY2VMb2dJZCwgY29uc3QgaW50KiBzdGFydE9mZnNldCwg
Y29uc3QgaW50KiBtYXhMZW5ndGgsIFJlZlB0cjxUcmFjZUxvZz4qIHRyYWNlTG9nKQogewotICAg
IFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAidHJh
Y2VMb2ciKTsKKyAgICBKU0M6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNj
cmlwdE9iamVjdCgpLCAidHJhY2VMb2ciLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJv
bUFueVRocmVhZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQodHJhY2VMb2dJZCk7CiAg
ICAgaWYgKHN0YXJ0T2Zmc2V0KQogICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudCgqc3Rh
cnRPZmZzZXQpOwpAQCAtMTYzLDcgKzE2NCw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRDYW52YXNN
b2R1bGU6OnRyYWNlTG9nKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgVHJhY2VMCiAK
IHZvaWQgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OnJlcGxheVRyYWNlTG9nKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgY29uc3QgVHJhY2VMb2dJZCYgdHJhY2VMb2dJZCwgaW50IHN0ZXBO
bywgUmVmUHRyPFJlc291cmNlU3RhdGU+KiByZXN1bHQpCiB7Ci0gICAgU2NyaXB0RnVuY3Rpb25D
YWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJyZXBsYXlUcmFjZUxvZyIpOwor
ICAgIEpTQzo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0
KCksICJyZXBsYXlUcmFjZUxvZyIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55
VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudCh0cmFjZUxvZ0lkKTsKICAgICBm
dW5jdGlvbi5hcHBlbmRBcmd1bWVudChzdGVwTm8pOwogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1
ZT4gcmVzdWx0VmFsdWU7CkBAIC0xNzgsNyArMTc5LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdENh
bnZhc01vZHVsZTo6cmVwbGF5VHJhY2VMb2coRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25z
dAogCiB2b2lkIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjpyZXNvdXJjZUluZm8oRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZXNvdXJjZUlkJiByZXNvdXJjZUlkLCBSZWZQdHI8
UmVzb3VyY2VJbmZvPiogcmVzdWx0KQogewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlv
bihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAicmVzb3VyY2VJbmZvIik7CisgICAgSlNDOjpTY3Jp
cHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgInJlc291cmNl
SW5mbyIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICBm
dW5jdGlvbi5hcHBlbmRBcmd1bWVudChyZXNvdXJjZUlkKTsKICAgICBSZWZQdHI8SW5zcGVjdG9y
VmFsdWU+IHJlc3VsdFZhbHVlOwogICAgIG1ha2VDYWxsKGZ1bmN0aW9uLCAmcmVzdWx0VmFsdWUp
OwpAQCAtMTkyLDcgKzE5Myw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OnJl
c291cmNlSW5mbyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlCiAKIHZvaWQgSW5q
ZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OnJlc291cmNlU3RhdGUoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBjb25zdCBUcmFjZUxvZ0lkJiB0cmFjZUxvZ0lkLCBjb25zdCBSZXNvdXJjZUlkJiBy
ZXNvdXJjZUlkLCBSZWZQdHI8UmVzb3VyY2VTdGF0ZT4qIHJlc3VsdCkKIHsKLSAgICBTY3JpcHRG
dW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgInJlc291cmNlU3Rh
dGUiKTsKKyAgICBKU0M6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlw
dE9iamVjdCgpLCAicmVzb3VyY2VTdGF0ZSIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJG
cm9tQW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudCh0cmFjZUxvZ0lkKTsK
ICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChyZXNvdXJjZUlkKTsKICAgICBSZWZQdHI8SW5z
cGVjdG9yVmFsdWU+IHJlc3VsdFZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAKaW5kZXggYTU4ODZiNi4uYzdjMmM1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwCkBA
IC0zNiw3ICszNiw4IEBACiAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUg
IkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgotI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5o
IgorI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdz
L1NjcmlwdEZ1bmN0aW9uQ2FsbC5oPgogI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5o
PgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwpAQCAtNTcsMTMgKzU4LDEzIEBAIHZvaWQgSW5qZWN0
ZWRTY3JpcHRNb2R1bGU6OmVuc3VyZUluamVjdGVkKEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5q
ZWN0ZWRTY3JpcHRNCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1FOiBNYWtlIHRoZSBJ
bmplY3RlZFNjcmlwdCBhIG1vZHVsZSBpdHNlbGYuCi0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1
bmN0aW9uKGluamVjdGVkU2NyaXB0LmluamVjdGVkU2NyaXB0T2JqZWN0KCksICJtb2R1bGUiKTsK
KyAgICBKU0M6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdC5pbmpl
Y3RlZFNjcmlwdE9iamVjdCgpLCAibW9kdWxlIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxl
ckZyb21BbnlUaHJlYWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG5hbWUoKSk7CiAg
ICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKICAgICBTY3JpcHRWYWx1ZSByZXN1bHRWYWx1
ZSA9IGluamVjdGVkU2NyaXB0LmNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbiwg
aGFkRXhjZXB0aW9uKTsKICAgICBBU1NFUlQoIWhhZEV4Y2VwdGlvbik7CiAgICAgaWYgKGhhZEV4
Y2VwdGlvbiB8fCByZXN1bHRWYWx1ZS5oYXNOb1ZhbHVlKCkgfHwgIXJlc3VsdFZhbHVlLmlzT2Jq
ZWN0KCkpIHsKLSAgICAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2Ny
aXB0LmluamVjdGVkU2NyaXB0T2JqZWN0KCksICJpbmplY3RNb2R1bGUiKTsKKyAgICAgICAgSlND
OjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHQuaW5qZWN0ZWRTY3Jp
cHRPYmplY3QoKSwgImluamVjdE1vZHVsZSIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJG
cm9tQW55VGhyZWFkKTsKICAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQobmFtZSgpKTsK
ICAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoc291cmNlKCkpOwogICAgICAgICByZXN1
bHRWYWx1ZSA9IGluamVjdGVkU2NyaXB0LmNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5j
dGlvbiwgaGFkRXhjZXB0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QWdlbnQuY3BwCmluZGV4IDJhMTNjMGEuLmJkYjY5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFnZW50LmNwcApAQCAtNDcsOSArNDcsOSBAQAogI2luY2x1ZGUgIlBh
Z2UuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJTY3JpcHRDb250
cm9sbGVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCiAjaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgPGJpbmRpbmdz
L1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWwuY3BwCmluZGV4IDFmNDVlNGQuLmU1ZjVlZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAK
QEAgLTQ4LDEzICs0OCwxMyBAQAogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIlBh
Z2UuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0RnVu
Y3Rpb25DYWxsLmgiCiAjaW5jbHVkZSAiU2NyaXB0R2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAi
U2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRpbWVyLmgi
CiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJXaW5kb3dGZWF0
dXJlcy5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8d3Rm
L0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LmNwcAppbmRleCA4NTA4ZDZmLi4wOGEzOTA0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcApAQCAtNDYs
NiArNDYsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmgiCisj
aW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgi
CiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTUzLDExICs1
NCwxMSBAQAogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJl
cXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiU2NyaXB0
RnVuY3Rpb25DYWxsLmgiCiAjaW5jbHVkZSAiU2NyaXB0R2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTb3VuZC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0
dXJlSW5kaWNhdG9yLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmg+
CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwpA
QCAtMTA0LDcgKzEwNSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBVc2VyR2VzdHVyZUluZGlj
YXRvciBnZXN0dXJlSW5kaWNhdG9yKERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwog
ICAgICAgICAgICAgaW50IGl0ZW1OdW1iZXIgPSBpdGVtLT5hY3Rpb24oKSAtIENvbnRleHRNZW51
SXRlbUJhc2VDdXN0b21UYWc7CiAKLSAgICAgICAgICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5j
dGlvbihtX2Zyb250ZW5kQXBpT2JqZWN0LCAiY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQiKTsKKyAg
ICAgICAgICAgIEpTQzo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1fZnJvbnRlbmRBcGlP
YmplY3QsICJjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhh
bmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICAgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50
KGl0ZW1OdW1iZXIpOwogICAgICAgICAgICAgZnVuY3Rpb24uY2FsbCgpOwogICAgICAgICB9CkBA
IC0xMTMsNyArMTE0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dE1lbnVD
bGVhcmVkKCkKICAgICB7CiAgICAgICAgIGlmIChtX2Zyb250ZW5kSG9zdCkgewotICAgICAgICAg
ICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1fZnJvbnRlbmRBcGlPYmplY3QsICJjb250
ZXh0TWVudUNsZWFyZWQiKTsKKyAgICAgICAgICAgIEpTQzo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1
bmN0aW9uKG1fZnJvbnRlbmRBcGlPYmplY3QsICJjb250ZXh0TWVudUNsZWFyZWQiLCBXZWJDb3Jl
OjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAgICAgICAgICBmdW5jdGlv
bi5jYWxsKCk7CiAKICAgICAgICAgICAgIG1fZnJvbnRlbmRIb3N0LT5tX21lbnVQcm92aWRlciA9
IDA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218559</attachid>
            <date>2013-12-05 17:26:01 -0800</date>
            <delta_ts>2013-12-11 14:02:51 -0800</delta_ts>
            <desc>[PATCH] PART 4: InspectorTypeBuilder</desc>
            <filename>part-4-1.patch</filename>
            <type>text/plain</type>
            <size>299857</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBkMTI3ZTcwLi5lYzMxYTYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMjEsNiArMjIxLDcgQEAgc2V0
KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKIAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJl
Z2lzdHJ5LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAK
KyAgICBpbnNwZWN0b3IvSW5zcGVjdG9yVHlwZUJ1aWxkZXIuY3BwCiAgICAgaW5zcGVjdG9yL0lu
c3BlY3RvclZhbHVlcy5jcHAKIAogICAgIGludGVycHJldGVyL0Fic3RyYWN0UEMuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwppbmRleCA5NjMyMDY3Li42Y2Y2MWFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cKQEAgLTEsNSArMSw0MCBAQAogMjAxMy0xMi0wNSAgSm9zZXBoIFBlY29yYXJvICA8
cGVjb3Jhcm9AYXBwbGUuY29tPgogCisgICAgICAgIFBBUlQgNjogRXh0cmFjdCBHZW5lcmljIElu
c3BlY3RvclR5cGVCdWlsZGVyCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBNb3JlIElu
c3BlY3RvciBSZXF1aXJlZCBDbGFzc2VzIERvd24gaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1MzI0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JUeXBlQnVpbGRlci5oOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDo6T3B0T3V0cHV0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDo6b3BlcmF0b3I9KToKKyAgICAgICAgKEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDo6aXNBc3NpZ25lZCk6CisgICAgICAgIChJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ6OmdldFZhbHVlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkV4YWN0bHlJbnQ6OkV4YWN0bHlJbnQpOgorICAgICAgICAoSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6RXhhY3RseUludDo6b3BlcmF0b3IgaW50KToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkV4YWN0bHlJbnQ6OmNhc3RfdG9faW50KToKKyAgICAgICAgKElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OmludCk6CisgICAgICAgIChJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZSk6CisgICAgICAgIChJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0QW55KToKKyAgICAgICAgKElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRJbnQpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk6OkFycmF5KToKKyAgICAgICAgKElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5OjpvcGVuQWNjZXNzb3JzKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5OjphZGRJdGVtKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5OjpjcmVhdGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk6OnJ1bnRpbWVDYXN0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkFycmF5Ojphc3NlcnRDb3JyZWN0VmFsdWUpOgorICAgICAgICAoSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6U3RydWN0SXRlbVRyYWl0czo6cHVzaFJlZlB0cik6CisgICAgICAgIChJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpTdHJ1Y3RJdGVtVHJhaXRzOjphc3NlcnRDb3JyZWN0VmFsdWUp
OgorCisyMDEzLTEyLTA1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBNb3JlIEluc3BlY3RvciBSZXF1aXJlZCBDbGFz
c2VzIERvd24gaW50byBKYXZhU2NyaXB0Q29yZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1MzI0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KaW5kZXggMDRjMDRlZi4uOTA5Mjk5YyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTYyMiw2ICs2MjIsOCBAQCBqYXZhc2NyaXB0
Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIFwKKwlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclR5cGVCdWlsZGVyLmNwcCBcCisJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUeXBlQnVpbGRlci5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAgXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9BYnN0cmFjdFBDLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvagppbmRleCA2M2ZiZmMyLi45MDgxMzUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTQ2MCw2ICs0NjAsNyBAQAogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5caGVhcFxXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0
b3JcSW5zcGVjdG9yVHlwZUJ1aWxkZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5caW5zcGVjdG9yXEluc3BlY3RvclZhbHVlcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxpbnRlcnByZXRlclxBYnN0cmFjdFBDLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGludGVycHJldGVyXENhbGxGcmFtZS5jcHAiIC8+CkBAIC0xMDA3LDYgKzEwMDgs
NyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckFnZW50
UmVnaXN0cnkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aW5zcGVjdG9yXEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIiAvPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvclR5cGVCdWlsZGVyLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yVmFsdWVzLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxBYnN0cmFjdFBDLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxDYWNoZWRDYWxsLmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggMzVj
YTVjNS4uMzUwNTQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ouZmlsdGVycwpAQCAtMjk3LDYgKzI5Nyw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIj4KICAgICAgIDxG
aWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yVHlwZUJ1aWxkZXIuY3BwIj4KKyAgICAg
IDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yVmFsdWVzLmNwcCI+CiAgICAgICA8
RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMTc1Nyw2ICsx
NzYwLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwuaCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAg
IDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3Bl
Y3RvclR5cGVCdWlsZGVyLmgiPgorICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KKyAg
ICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNw
ZWN0b3JWYWx1ZXMuaCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwv
Q2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1OGQ3MzlhLi43MjQ4
OThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODk0LDYgKzg5NCw3IEBACiAJ
CUE1NENGMkZBMTg0RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NENGMkY4MTg0RUFFREEwMDIzN0Yx
OSAvKiBTY3JpcHRPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlBNTVEOTNBNTE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25D
YWxsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
NUQ5M0EzMTg1MDEyQTgwMDQwMERFRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwICovOyB9Owog
CQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTVEOTNBNDE4NTAxMkE4
MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTU1RDkzQUMxODUxNEY3OTAwNDAwREVEIC8qIElu
c3BlY3RvclR5cGVCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTVEOTNBQjE4NTE0Rjc5MDA0MDBERUQgLyogSW5zcGVjdG9yVHlwZUJ1aWxk
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlB
NTkzQ0Y3QzE4NDAzNjAzMDBCRkNFMjcgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5M0NGN0Ex
ODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCAqLzsgfTsK
IAkJQTU5M0NGN0QxODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTkzQ0Y3
QjE4NDAzNjAzMDBCRkNFMjcgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTkzQ0Y3RjE4NDAz
NjJDMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTkzQ0Y3RTE4NDAzNjJDMDBCRkNFMjcgLyogSW5z
cGVjdG9yQWdlbnRCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTIyMzIsNiArMjIzMyw3IEBACiAJCUE1NENGMkY4MTg0RUFFREEwMDIzN0Yx
OSAvKiBTY3JpcHRPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Ny
aXB0T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1NUQ5M0EzMTg1MDEy
QTgwMDQwMERFRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0RnVuY3Rpb25DYWxsLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTU1RDkzQTQxODUwMTJBODAwNDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9u
Q2FsbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRGdW5jdGlvbkNh
bGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU1RDkzQUIxODUxNEY3OTAwNDAw
REVEIC8qIEluc3BlY3RvclR5cGVCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEluc3BlY3RvclR5cGVCdWlsZGVyLmg7IHBhdGggPSBpbnNwZWN0b3IvSW5zcGVjdG9y
VHlwZUJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU5M0NGN0ExODQw
MzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNw
cDsgcGF0aCA9IGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1OTNDRjdCMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oOyBwYXRoID0gaW5zcGVjdG9yL0luc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1OTND
RjdFMTg0MDM2MkMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudEJhc2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gSW5zcGVjdG9yQWdlbnRCYXNlLmg7IHBhdGggPSBpbnNwZWN0
b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00
MjMwLDYgKzQyMzIsNyBAQAogCQkJCUE1OTNDRjdBMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgKi8sCiAJCQkJQTU5M0NGN0IxODQwMzYwMzAwQkZDRTI3
IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggKi8sCiAJCQkJQTU5NDU1OTQxODI0NzlF
QjAwQ0MzODQzIC8qIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oICovLAorCQkJCUE1NUQ5M0FC
MTg1MTRGNzkwMDQwMERFRCAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5oICovLAogCQkJCUE1OTND
RjgwMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwICovLAogCQkJCUE1OTND
RjgxMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuaCAqLywKIAkJCSk7CkBAIC00
OTc1LDYgKzQ5NzgsNyBAQAogCQkJCTE0QkU3RDMzMTcxMzVDRjQwMEQxODA3QSAvKiBXZWFrSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdDQTNBRTQxN0RBNDFBRTAwNjUzOEFGIC8qIFdl
YWtNYXBDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdDQTNBRUMxN0RBNTE2ODAw
NjUzOEFGIC8qIFdlYWtNYXBEYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTVEOTNBQzE4NTE0
Rjc5MDA0MDBERUQgLyogSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3Q0EzQUU2MTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNDIwQkU3QjEwQUE2RERCMDBGNDU1RDIgLyogV2Vha1JhbmRvbS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYyNDJEQTcxM0YzQjFFODAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VI
YXJ2ZXN0ZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUeXBlQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUeXBlQnVpbGRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjhlYTc2ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclR5cGVCdWlsZGVyLmgKQEAgLTAsMCArMSwzMzcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEluc3BlY3RvclR5cGVCdWlsZGVyX2gKKyNkZWZpbmUgSW5zcGVjdG9yVHlwZUJ1
aWxkZXJfaAorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgIkluc3BlY3RvclZh
bHVlcy5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK25hbWVzcGFjZSBUeXBlQnVpbGRl
ciB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBPcHRPdXRwdXQgeworcHVibGljOgor
ICAgIE9wdE91dHB1dCgpIDogbV9hc3NpZ25lZChmYWxzZSkgeyB9CisKKyAgICB2b2lkIG9wZXJh
dG9yPShUIHZhbHVlKQorICAgIHsKKyAgICAgICAgbV92YWx1ZSA9IHZhbHVlOworICAgICAgICBt
X2Fzc2lnbmVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICBib29sIGlzQXNzaWduZWQoKSBjb25zdCB7
IHJldHVybiBtX2Fzc2lnbmVkOyB9CisKKyAgICBUIGdldFZhbHVlKCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChpc0Fzc2lnbmVkKCkpOworICAgICAgICByZXR1cm4gbV92YWx1ZTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgVCBtX3ZhbHVlOworICAgIGJvb2wgbV9hc3NpZ25lZDsKKworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKE9wdE91dHB1dCk7Cit9OworCisKKy8vIEEgc21hbGwgdHJhbnNp
ZW50IHdyYXBwZXIgYXJvdW5kIGludCB0eXBlLCB0aGF0IGNhbiBiZSB1c2VkIGFzIGEgZnVuY2l0
b24gcGFyYW1ldGVyIHR5cGUKKy8vIGNsZXZlcmx5IGRpc2FsbG93aW5nIEMrKyBpbXBsaWNpdCBj
YXN0cyBmcm9tIGZsb2F0IG9yIGRvdWJsZS4KK2NsYXNzIEV4YWN0bHlJbnQgeworcHVibGljOgor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgRXhhY3RseUludChUIHQpIDogbV92YWx1ZShj
YXN0X3RvX2ludDxUPih0KSkgeyB9CisgICAgRXhhY3RseUludCgpIHsgfQorCisgICAgb3BlcmF0
b3IgaW50KCkgeyByZXR1cm4gbV92YWx1ZTsgfQorCitwcml2YXRlOgorICAgIGludCBtX3ZhbHVl
OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBzdGF0aWMgaW50IGNhc3RfdG9faW50
KFQpIHsgcmV0dXJuIFQ6OmRlZmF1bHRfY2FzZV9jYXN0X2lzX25vdF9zdXBwb3J0ZWQoKTsgfQor
fTsKKwordGVtcGxhdGU8PgoraW5saW5lIGludCBFeGFjdGx5SW50OjpjYXN0X3RvX2ludDxpbnQ+
KGludCBpKSB7IHJldHVybiBpOyB9CisKK3RlbXBsYXRlPD4KK2lubGluZSBpbnQgRXhhY3RseUlu
dDo6Y2FzdF90b19pbnQ8dW5zaWduZWQgaW50Pih1bnNpZ25lZCBpbnQgaSkgeyByZXR1cm4gaTsg
fQorCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorY2xhc3MgUnVudGltZUNhc3RIZWxwZXIgeworcHVi
bGljOgorICAgIHRlbXBsYXRlPEluc3BlY3RvclZhbHVlOjpUeXBlIFRZUEU+CisgICAgc3RhdGlj
IHZvaWQgYXNzZXJ0VHlwZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCisgICAgeworICAgICAgICBB
U1NFUlQodmFsdWUtPnR5cGUoKSA9PSBUWVBFKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBh
c3NlcnRBbnkoSW5zcGVjdG9yVmFsdWUqKQorICAgIHsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9p
ZCBhc3NlcnRJbnQoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgZG91Ymxl
IHY7CisgICAgICAgIGJvb2wgY2FzdFJlcyA9IHZhbHVlLT5hc051bWJlcigmdik7CisgICAgICAg
IEFTU0VSVF9VTlVTRUQoY2FzdFJlcywgY2FzdFJlcyk7CisgICAgICAgIEFTU0VSVChzdGF0aWNf
Y2FzdDxkb3VibGU+KHN0YXRpY19jYXN0PGludD4odikpID09IHYpOworICAgIH0KK307CisjZW5k
aWYKKworCisvLyBUaGlzIGNsYXNzIHByb3ZpZGVzICJUcmFpdHMiIHR5cGUgZm9yIHRoZSBpbnB1
dCB0eXBlIFQuIEl0IGlzIHByb2dyYW1tZWQgdXNpbmcgQysrIHRlbXBsYXRlIHNwZWNpYWxpemF0
aW9uCisvLyB0ZWNobmlxdWUuIEJ5IGRlZmF1bHQgaXQgc2ltcGx5IHRha2VzICJJdGVtVHJhaXRz
IiB0eXBlIGZyb20gVCwgYnV0IGl0IGRvZXNuJ3Qgd29yayB3aXRoIHRoZSBiYXNlIHR5cGVzLgor
dGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBBcnJheUl0ZW1IZWxwZXIgeworICAgIHR5cGVk
ZWYgdHlwZW5hbWUgVDo6SXRlbVRyYWl0cyBUcmFpdHM7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgorY2xhc3MgQXJyYXkgOiBwdWJsaWMgSW5zcGVjdG9yQXJyYXlCYXNlIHsKK3ByaXZhdGU6
CisgICAgQXJyYXkoKSB7IH0KKworICAgIEluc3BlY3RvckFycmF5KiBvcGVuQWNjZXNzb3JzKCkK
KyAgICB7CisgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihJbnNwZWN0b3JBcnJheSkgPT0g
c2l6ZW9mKEFycmF5PFQ+KSwgY2Fubm90X2Nhc3QpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SW5zcGVjdG9yQXJyYXkqPihzdGF0aWNfY2FzdDxJbnNwZWN0b3JBcnJheUJhc2UqPih0aGlz
KSk7CisgICAgfQorCitwdWJsaWM6CisgICAgdm9pZCBhZGRJdGVtKFBhc3NSZWZQdHI8VD4gdmFs
dWUpCisgICAgeworICAgICAgICBBcnJheUl0ZW1IZWxwZXI8VD46OlRyYWl0czo6cHVzaFJlZlB0
cih0aGlzLT5vcGVuQWNjZXNzb3JzKCksIHZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZEl0
ZW0oVCB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFycmF5SXRlbUhlbHBlcjxUPjo6VHJhaXRzOjpw
dXNoUmF3KHRoaXMtPm9wZW5BY2Nlc3NvcnMoKSwgdmFsdWUpOworICAgIH0KKworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEFycmF5PFQ+PiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBBcnJheTxUPigpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxB
cnJheTxUPj4gcnVudGltZUNhc3QoUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpCisg
ICAgeworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFycmF5OworICAgICAgICBib29s
IGNhc3RSZXMgPSB2YWx1ZS0+YXNBcnJheSgmYXJyYXkpOworICAgICAgICBBU1NFUlRfVU5VU0VE
KGNhc3RSZXMsIGNhc3RSZXMpOworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgYXNzZXJ0
Q29ycmVjdFZhbHVlKGFycmF5LmdldCgpKTsKKyNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECisg
ICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihBcnJheTxUPikgPT0gc2l6ZW9mKEluc3BlY3Rv
ckFycmF5KSwgdHlwZV9jYXN0X3Byb2JsZW0pOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
QXJyYXk8VD4qPihzdGF0aWNfY2FzdDxJbnNwZWN0b3JBcnJheUJhc2UqPihhcnJheS5nZXQoKSkp
OworICAgIH0KKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBzdGF0aWMgdm9pZCBhc3NlcnRD
b3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgUmVmUHRy
PEluc3BlY3RvckFycmF5PiBhcnJheTsKKyAgICAgICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFz
QXJyYXkoJmFycmF5KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChjYXN0UmVzLCBjYXN0UmVzKTsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFycmF5LT5sZW5ndGgoKTsgaSsrKQor
ICAgICAgICAgICAgQXJyYXlJdGVtSGVscGVyPFQ+OjpUcmFpdHM6OnRlbXBsYXRlIGFzc2VydENv
cnJlY3RWYWx1ZTxUPihhcnJheS0+Z2V0KGkpLmdldCgpKTsKKyAgICB9CisjZW5kaWYgLy8gIUFT
U0VSVF9ESVNBQkxFRAorfTsKKworc3RydWN0IFN0cnVjdEl0ZW1UcmFpdHMgeworICAgIHN0YXRp
YyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiB2YWx1ZSkKKyAgICB7CisgICAgICAgIGFycmF5LT5wdXNoVmFsdWUodmFsdWUp
OworICAgIH0KKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgorICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFs
dWUpCisgICAgeworICAgICAgICBUOjphc3NlcnRDb3JyZWN0VmFsdWUodmFsdWUpOworICAgIH0K
KyNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgQXJy
YXlJdGVtSGVscGVyPFN0cmluZz4geworICAgIHN0cnVjdCBUcmFpdHMgeworICAgICAgICBzdGF0
aWMgdm9pZCBwdXNoUmF3KEluc3BlY3RvckFycmF5KiBhcnJheSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSkKKyAgICAgICAgeworICAgICAgICAgICAgYXJyYXktPnB1c2hTdHJpbmcodmFsdWUpOworICAg
ICAgICB9CisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CisgICAgICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1
ZSogdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3Nl
cnRUeXBlPEluc3BlY3RvclZhbHVlOjpUeXBlU3RyaW5nPih2YWx1ZSk7CisgICAgICAgIH0KKyNl
bmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECisgICAgfTsKK307CisKK3RlbXBsYXRlPD4KK3N0cnVj
dCBBcnJheUl0ZW1IZWxwZXI8aW50PiB7CisgICAgc3RydWN0IFRyYWl0cyB7CisgICAgICAgIHN0
YXRpYyB2b2lkIHB1c2hSYXcoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBpbnQgdmFsdWUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGFycmF5LT5wdXNoSW50KHZhbHVlKTsKKyAgICAgICAgfQorCisj
aWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgICAg
ICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQor
ICAgICAgICB7CisgICAgICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0SW50KHZhbHVl
KTsKKyAgICAgICAgfQorI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKKyAgICB9OworfTsKKwor
dGVtcGxhdGU8Pgorc3RydWN0IEFycmF5SXRlbUhlbHBlcjxkb3VibGU+IHsKKyAgICBzdHJ1Y3Qg
VHJhaXRzIHsKKyAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJhdyhJbnNwZWN0b3JBcnJheSogYXJy
YXksIGRvdWJsZSB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgYXJyYXktPnB1c2hOdW1i
ZXIodmFsdWUpOworICAgICAgICB9CisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1
ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIFJ1bnRpbWVD
YXN0SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3RvclZhbHVlOjpUeXBlTnVtYmVyPih2YWx1ZSk7
CisgICAgICAgIH0KKyNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECisgICAgfTsKK307CisKK3Rl
bXBsYXRlPD4KK3N0cnVjdCBBcnJheUl0ZW1IZWxwZXI8Ym9vbD4geworICAgIHN0cnVjdCBUcmFp
dHMgeworICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmF3KEluc3BlY3RvckFycmF5KiBhcnJheSwg
Ym9vbCB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgYXJyYXktPnB1c2hCb29sZWFuKHZh
bHVlKTsKKyAgICAgICAgfQorCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorICAgICAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5z
cGVjdG9yVmFsdWUqIHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBSdW50aW1lQ2FzdEhl
bHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZUJvb2xlYW4+KHZhbHVlKTsKKyAg
ICAgICAgfQorI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKKyAgICB9OworfTsKKwordGVtcGxh
dGU8Pgorc3RydWN0IEFycmF5SXRlbUhlbHBlcjxJbnNwZWN0b3JWYWx1ZT4geworICAgIHN0cnVj
dCBUcmFpdHMgeworICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmVmUHRyKEluc3BlY3RvckFycmF5
KiBhcnJheSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGFycmF5LT5wdXNoVmFsdWUodmFsdWUpOworICAgICAgICB9CisKKyNpZiAhQVNT
RVJUX0RJU0FCTEVECisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgICAgIHN0YXRp
YyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRBbnkodmFsdWUpOworICAg
ICAgICB9CisjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAorICAgIH07Cit9OworCit0ZW1wbGF0
ZTw+CitzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPEluc3BlY3Rvck9iamVjdD4geworICAgIHN0cnVj
dCBUcmFpdHMgeworICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmVmUHRyKEluc3BlY3RvckFycmF5
KiBhcnJheSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGFycmF5LT5wdXNoVmFsdWUodmFsdWUpOworICAgICAgICB9CisKKyNpZiAhQVNT
RVJUX0RJU0FCTEVECisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgICAgIHN0YXRp
YyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3RvclZh
bHVlOjpUeXBlT2JqZWN0Pih2YWx1ZSk7CisgICAgICAgIH0KKyNlbmRpZiAvLyAhQVNTRVJUX0RJ
U0FCTEVECisgICAgfTsKK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBBcnJheUl0ZW1IZWxwZXI8
SW5zcGVjdG9yQXJyYXk+IHsKKyAgICBzdHJ1Y3QgVHJhaXRzIHsKKyAgICAgICAgc3RhdGljIHZv
aWQgcHVzaFJlZlB0cihJbnNwZWN0b3JBcnJheSogYXJyYXksIFBhc3NSZWZQdHI8SW5zcGVjdG9y
QXJyYXk+IHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBhcnJheS0+cHVzaEFycmF5KHZh
bHVlKTsKKyAgICAgICAgfQorCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorICAgICAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5z
cGVjdG9yVmFsdWUqIHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBSdW50aW1lQ2FzdEhl
bHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZUFycmF5Pih2YWx1ZSk7CisgICAg
ICAgIH0KKyNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECisgICAgfTsKK307CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPFR5cGVCdWlsZGVyOjpBcnJheTxU
Pj4geworICAgIHN0cnVjdCBUcmFpdHMgeworICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmVmUHRy
KEluc3BlY3RvckFycmF5KiBhcnJheSwgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VD4+
IHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBhcnJheS0+cHVzaFZhbHVlKHZhbHVlKTsK
KyAgICAgICAgfQorCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBTPgorICAgICAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9y
VmFsdWUqIHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBTOjphc3NlcnRDb3JyZWN0VmFs
dWUodmFsdWUpOworICAgICAgICB9CisjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAorICAgIH07
Cit9OworCit9IC8vIG5hbWVzcGFjZSBUeXBlQnVpbGRlcgorCit9IC8vIG5hbWVzcGFjZSBJbnNw
ZWN0b3IKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCisKKyNlbmRpZiAvLyAhZGVmaW5l
ZChJbnNwZWN0b3JUeXBlQnVpbGRlcl9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBhYzk1NjJl
Li4wMDljODMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMzA0MiwxMiArMzA0MiwxMiBAQCBh
ZGRfY3VzdG9tX2NvbW1hbmQoCiAKICMgQWxsIFdlYiBJbnNwZWN0b3IgZ2VuZXJhdGVkIGZpbGVz
IGFyZSBjcmVhdGVkIHdpdGggdGhpcyBvbmUgY2FsbCB0byBDb2RlR2VuZXJhdG9ySW5zcGVjdG9y
LnBtCiBhZGRfY3VzdG9tX2NvbW1hbmQoCi0gICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VTX1dF
QkNPUkVfRElSfS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwICR7REVSSVZFRF9TT1VS
Q0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCAke0RFUklWRURf
U09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yRnJvbnRlbmQuY3BwICR7REVSSVZFRF9TT1VS
Q0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3JGcm9udGVuZC5oICR7REVSSVZFRF9TT1VSQ0VTX1dF
QkNPUkVfRElSfS9JbnNwZWN0b3JUeXBlQnVpbGRlci5jcHAgJHtERVJJVkVEX1NPVVJDRVNfV0VC
Q09SRV9ESVJ9L0luc3BlY3RvclR5cGVCdWlsZGVyLmgKKyAgICBPVVRQVVQgJHtERVJJVkVEX1NP
VVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5jcHAgJHtERVJJ
VkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oICR7
REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3JGcm9udGVuZC5jcHAgJHtERVJJ
VkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3RvckZyb250ZW5kLmggJHtERVJJVkVEX1NP
VVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3RvcldlYlR5cGVCdWlsZGVycy5jcHAgJHtERVJJVkVE
X1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oCiAgICAgTUFJ
Tl9ERVBFTkRFTkNZICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3IuanNv
bgogICAgIERFUEVORFMgJHtXRUJDT1JFX0RJUn0vaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNw
ZWN0b3IucHkgJHtXRUJDT1JFX0RJUn0vaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3JT
dHJpbmdzLnB5CiAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke1dFQkNPUkVfRElS
fS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSAke0RFUklWRURfU09VUkNFU19X
RUJDT1JFX0RJUn0vSW5zcGVjdG9yLmpzb24gLS1vdXRwdXRfaF9kaXIgIiR7REVSSVZFRF9TT1VS
Q0VTX1dFQkNPUkVfRElSfSIgLS1vdXRwdXRfY3BwX2RpciAiJHtERVJJVkVEX1NPVVJDRVNfV0VC
Q09SRV9ESVJ9IiAtLW91dHB1dF9qc19kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElS
fSIgLS13cml0ZV9hbHdheXMKICAgICBWRVJCQVRJTSkKLWxpc3QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUyAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXJzLmNwcCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yRnJvbnRl
bmQuY3BwICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3JUeXBlQnVpbGRl
ci5jcHApCitsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VC
Q09SRV9ESVJ9L0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5jcHAgJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9L0luc3BlY3RvckZyb250ZW5kLmNwcCAke0RFUklWRURfU09VUkNFU19X
RUJDT1JFX0RJUn0vSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmNwcCkKIAogCiAjIEdlbmVyYXRl
IEluc3BlY3Rvck92ZXJsYXlQYWdlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyYzczNGVkLi5iOTE1NzJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC01LDYgKzUsMjQzIEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCiAKKyAgICAgICAgUGFydCA0OiBFeHRyYWN0IEluc3BlY3RvclR5cGVCdWlsZGVy
IGhlbHBlciBmdW5jdGlvbnMKKworICAgICAgICAgIC0gVGhlcmUgaXMgYSBjaHVuayBvZiBJbnNw
ZWN0b3JUeXBlQnVpbGRlciB0aGF0IG5ldmVyIGNoYW5nZXMuIEV4dHJhY3QgaXQgaW50bworICAg
ICAgICAgICAgaXRzIG93biBmaWxlLCBJbnNwZWN0b3JUeXBlQnVpbGRlci5oIGluIEpTQy9pbnNw
ZWN0b3IsIEluc3BlY3RvciBuYW1lc3BhY2UuCisgICAgICAgICAgLSBUaGlzIG1vdmVzIFR5cGVC
dWlsZGVyIGZyb20gbmFtZXNwYWNlIFdlYkNvcmUgdG8gbmFtZXNwYWNlIEluc3BlY3RvcgorICAg
ICAgICAgIC0gUmVuYW1lIHRoZSBXZWJDb3JlIGdlbmVyYXRlZCBJbnNwZWN0b3JUeXBlQnVpbGRl
ciB0byBJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMsCisgICAgICAgICAgICBldmVudHVhbGx5IHRo
ZSBDb2RlR2VuZXJhdG9yIHNjcmlwdCB3aWxsIGRvIHRoaXMgZm9yIG1vcmUgdGhlbiBUeXBlQnVp
bGRlcnMKKyAgICAgICAgICAgIGFuZCB0aGVyZSB3aWxsIGJlICJKUyIgVHlwZUJ1aWxkZXJzIGFu
ZCAiV2ViIiBUeXBlQnVpbGRlcnMgZmlsZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yVHlwZUJ1aWxk
ZXIuaDogQWRkZWQuCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
OgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmlu
ZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZEluc3Bl
Y3Rvck9iamVjdEZvcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQcm9maWxlOjpidWlsZElu
c3BlY3Rvck9iamVjdEZvckhlYWQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvZmlsZTo6
YnVpbGRJbnNwZWN0b3JPYmplY3RGb3JCb3R0b21VcEhlYWQpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1NjcmlwdFByb2ZpbGUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvcklu
c3BlY3Rvci5weToKKyAgICAgICAgKENvbW1hbmRSZXR1cm5QYXNzTW9kZWwuT3B0T3V0cHV0Lmdl
dF9yZXR1cm5fdmFyX3R5cGUpOgorICAgICAgICAoQ29tbWFuZFJldHVyblBhc3NNb2RlbC5PcHRP
dXRwdXQuZ2V0X291dHB1dF9wYXJhbWV0ZXJfdHlwZSk6CisgICAgICAgIChUeXBlTW9kZWwuRXhh
Y3RseUludC5nZXRfaW5wdXRfcGFyYW1fdHlwZV90ZXh0KToKKyAgICAgICAgKFR5cGVNb2RlbC5F
eGFjdGx5SW50LmdldF9vcHRfb3V0cHV0X3R5cGVfKToKKyAgICAgICAgKFR5cGVCaW5kaW5ncy5j
cmVhdGVfbmFtZWRfdHlwZV9kZWNsYXJhdGlvbi5IZWxwZXIpOgorICAgICAgICAoVHlwZUJpbmRp
bmdzLmNyZWF0ZV90eXBlX2RlY2xhcmF0aW9uXy5FbnVtQmluZGluZy5nZXRfc2V0dGVyX3ZhbHVl
X2V4cHJlc3Npb25fcGF0dGVybik6CisgICAgICAgIChJbnNwZWN0b3IpOgorICAgICAgICAoQXJy
YXlCaW5kaW5nLmdldF9hcnJheV9pdGVtX2NfdHlwZV90ZXh0KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvQ29kZUdlbmVyYXRvckluc3BlY3RvclN0cmluZ3MucHk6CisgICAgICAgIChJbnNwZWN0b3JG
cm9udGVuZF9oKToKKyAgICAgICAgKEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyc19oKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
bWVzc2FnZVNvdXJjZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Om1lc3NhZ2VUeXBlVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6bWVzc2FnZUxldmVsVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9D
b250ZW50U2VhcmNoVXRpbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlYXJjaFV0
aWxzOjpidWlsZE9iamVjdEZvclNlYXJjaE1hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRTZWFyY2hVdGlsczo6c2VhcmNoSW5UZXh0QnlMaW5lcyk6CisgICAgICAgICogaW5zcGVjdG9y
L0NvbnRlbnRTZWFyY2hVdGlscy5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlw
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmNhbGxGdW5jdGlvbk9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Ojp3cmFwT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkluamVjdGVkU2NyaXB0Ojp3cmFwVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRT
Y3JpcHQ6OndyYXBOb2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUV2YWxDYWxsKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0Q2FudmFzTW9kdWxlLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRDYW52YXNNb2R1bGUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdEltcGwp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JBZ2VudDo6aW5zcGVjdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQ6OmdldEZyYW1lc1dpdGhNYW5pZmVzdHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpnZXRBcHBsaWNhdGlvbkNhY2hlRm9yRnJhbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpidWlsZE9i
amVjdEZvckFwcGxpY2F0aW9uQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50OjpidWlsZEFycmF5Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNl
cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmJ1
aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yUHJvZmls
ZTo6dG9JbnNwZWN0b3JPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdl
bnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNTU0FnZW50OjpnZXRJbmxpbmVTdHlsZXNGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNTU0FnZW50OjpnZXRDb21wdXRlZFN0eWxlRm9yTm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0QWxsU3R5bGVTaGVldHMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDU1NBZ2VudDo6c2V0UHJvcGVydHlUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNTU0FnZW50Ojp0b2dnbGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDU1NBZ2VudDo6c2V0UnVsZVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNTU0FnZW50OjphZGRSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0Fn
ZW50OjpnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNTU0FnZW50OjpnZXROYW1lZEZsb3dDb2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNTU0FnZW50OjpzdG9wU2VsZWN0b3JQcm9maWxlcik6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6c3RvcFNlbGVjdG9yUHJvZmlsZXJJbXBsKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50Ojphc0luc3BlY3RvclN0eWxlU2hlZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmNvbGxlY3RTdHlsZVNoZWV0cyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6dmlhSW5zcGVjdG9yU3R5bGVT
aGVldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZGV0ZWN0T3JpZ2lu
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvclJ1
bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JS
dWxlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJh
eUZvck1hdGNoZWRSdWxlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2Vu
dDo6YnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JSZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvck5hbWVkRmxvdyk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhc0FnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFz
QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldERvY3VtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnF1ZXJ5U2VsZWN0b3JBbGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlzdGVu
ZXJzRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0U2Vh
cmNoUmVzdWx0cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cmVzb2x2
ZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldEF0dHJpYnV0
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9y
Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZv
ckVsZW1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50
OjpidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkSW5zZXJ0RE9NTm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6c3R5bGVBdHRyaWJ1dGVJbnZhbGlkYXRlZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudDo6ZGVzY3JpcHRpb25Gb3JET01FdmVudCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmdldERPTVN0b3JhZ2VJdGVtcyk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OnN0b3JhZ2VJZCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZERpc3BhdGNoRE9NU3RvcmFn
ZUV2ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6Z2V0RGF0YWJhc2VUYWJsZU5hbWVz
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U6OmJpbmQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJyZWFr
cG9pbnRBY3Rpb25UeXBlRm9yU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRCeVVybCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlc29sdmVCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNlYXJjaEluQ29udGVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRTY3JpcHRTb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Z2V0RnVuY3Rpb25EZXRhaWxzKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmV2YWx1YXRlT25DYWxs
RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y29tcGls
ZVNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpydW5T
Y3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y3VycmVu
dENhbGxGcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
ZGlkUGFyc2VTb3VyY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpjcmVhdGVT
bmFwc2hvdEhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JIZWFwUHJvZmlsZXJB
Z2VudDo6Z2V0UHJvZmlsZUhlYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySGVh
cFByb2ZpbGVyQWdlbnQ6OmdldE9iamVjdEJ5SGVhcE9iamVjdElkKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JMYXllclRyZWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRy
ZWVBZ2VudDo6bGF5ZXJzRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXll
clRyZWVBZ2VudDo6Z2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJPYmplY3RIaWVyYXJjaHkpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmdhdGhlckxheWVyc1VzaW5n
UmVuZGVyTGF5ZXJIaWVyYXJjaHkpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9ySW50UmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6cmVhc29uc0ZvckNvbXBvc2l0aW5nTGF5ZXIp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQ
YWdlQWdlbnQ6OnJlc291cmNlVHlwZUpzb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZVR5cGVKc29uKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1
aWxkT2JqZWN0Rm9yQ29va2llKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkQXJyYXlGb3JDb29r
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0Q29va2llcyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldFJlc291cmNlVHJlZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3VyY2Up
OgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JTZWFyY2hSZXN1bHQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpidWlsZE9iamVjdEZvckZyYW1l
VHJlZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmNyZWF0ZVByb2ZpbGVIZWFkZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Y3JlYXRlU25hcHNob3RIZWFkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0UHJvZmlsZUhl
YWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0Q1BV
UHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRP
YmplY3RCeUhlYXBPYmplY3RJZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclByb2Zp
bGVyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvclRpbWluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpidWlsZE9iamVjdEZvclJlc291cmNlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6YnVp
bGRPYmplY3RGb3JDYWNoZWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpidWlsZEluaXRpYXRv
ck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxs
U2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVXZWJT
b2NrZXRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojpk
aWRTZW5kV2ViU29ja2V0RnJhbWUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZEVycm9yUmFuZ2VPYmplY3QpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpwYXJzZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclJ1bnRpbWVBZ2VudDo6Y2FsbEZ1bmN0aW9uT24pOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yUnVudGltZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRTb3VyY2VSYW5nZU9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZE1lZGlhT2JqZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OmZpbGxNZWRpYUxpc3RDaGFpbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHls
ZTo6YnVpbGRPYmplY3RGb3JTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHls
ZTo6YnVpbGRBcnJheUZvckNvbXB1dGVkU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yU3R5bGVTaGVldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxl
U2hlZXQ6Okluc3BlY3RvclN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
U3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU3R5bGVTaGVldEluZm8pOgorICAg
ICAgICAoV2ViQ29yZTo6c2VsZWN0b3JzRnJvbVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdEZvclNlbGVjdG9yTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdEZvclJ1bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpyZXNvdXJjZVN0eWxlU2hl
ZXRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkQXJy
YXlGb3JSdWxlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9y
SW5saW5lU3R5bGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNo
ZWV0Rm9ySW5saW5lU3R5bGU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmNhbkJpbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvUHJvdG9jb2wp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW5uZXJBZGRSZWNv
cmRUb1RpbWVsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OnNldERPTUNvdW50ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OnNlbmRFdmVudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdl
bnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAg
ICogaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDYWxsRnJhbWU6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
U2NyaXB0Q2FsbEZyYW1lLmg6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsU3RhY2s6OmJ1aWxkSW5zcGVjdG9yQXJy
YXkpOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaDoKKworMjAxMy0xMi0w
NSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IFB1c2ggTW9yZSBJbnNwZWN0b3IgUmVxdWlyZWQgQ2xhc3NlcyBEb3duIGludG8g
SmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyNTMyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAg
ICAgICAgIFBhcnQgMzogUHVzaCBEb3duIFNjcmlwdEZ1bmN0aW9uQ2FsbAogCiAgICAgICAgICAg
LSBNb3ZlIFNjcmlwdEZ1bmN0aW9uQ2FsbCB0byBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncyBpbnRv
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFk
ZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JUeXBlQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvclR5cGVCdWlsZGVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY5ZTExMwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JUeXBlQnVp
bGRlci5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9JbnNwZWN0b3JUeXBl
QnVpbGRlcl9oCisjZGVmaW5lIFdlYkNvcmVfRldEX0luc3BlY3RvclR5cGVCdWlsZGVyX2gKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JUeXBlQnVpbGRlci5oPgorI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCmluZGV4IDIxYTA4ZmMuLjYwN2RiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCkBAIC0zNjIsOCArMzYyLDggQEAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3Iu
anNvbjogJChXZWJDb3JlKS9pbnNwZWN0b3IvU2NyaXB0cy9nZW5lcmF0ZS1jb20KICMgQWxsIFdl
YiBJbnNwZWN0b3IgZ2VuZXJhdGVkIGZpbGVzIGFyZSBjcmVhdGVkIHdpdGggdGhpcyBvbmUgY2Fs
bCB0byBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5CiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0lu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5jcHA6IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5z
cGVjdG9yLmpzb24gJChXZWJDb3JlKS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5w
eSAkKFdlYkNvcmUpL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weQog
CSQoQU1fVl9HRU4pJChQWVRIT04pICQoV2ViQ29yZSkvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJ
bnNwZWN0b3IucHkgJDwgLS1vdXRwdXRfaF9kaXIgJChHRU5TT1VSQ0VTX1dFQkNPUkUpIC0tb3V0
cHV0X2NwcF9kaXIgJChHRU5TT1VSQ0VTX1dFQkNPUkUpIC0tb3V0cHV0X2pzX2RpciAkKEdFTlNP
VVJDRVNfV0VCQ09SRSkKLURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yVHlwZUJ1aWxk
ZXIuaDogRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JUeXBlQnVpbGRlci5jcHAKLURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yVHlwZUJ1aWxkZXIuY3BwOiBEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0luc3BlY3RvckZyb250ZW5kLmgKK0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmg6IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVj
dG9yV2ViVHlwZUJ1aWxkZXJzLmNwcAorRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JX
ZWJUeXBlQnVpbGRlcnMuY3BwOiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3RvckZyb250
ZW5kLmgKIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmQuaDogRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZC5jcHAKIERlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSW5zcGVjdG9yRnJvbnRlbmQuY3BwOiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3Bl
Y3RvckJhY2tlbmRDb21tYW5kcy5qcwogRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JC
YWNrZW5kQ29tbWFuZHMuanM6IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXJzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGYxNjJhOGQu
LjY0OWE2NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
KysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjYsOCArMjYsOCBA
QCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5z
cGVjdG9yRnJvbnRlbmQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3RvckZy
b250ZW5kLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yT3ZlcmxheVBhZ2Uu
aCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JUeXBlQnVpbGRlci5jcHAgXAot
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCBcCisJRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuY3BwIFwKKwlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0luc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIFwKIAlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTQWJzdHJhY3RXb3JrZXIuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTQWJzdHJhY3RXb3JrZXIuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0FsbEF1
ZGlvQ2FwYWJpbGl0aWVzLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvagppbmRleCBmMGU3ZWU5Li4wMmUyZmNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTc0Miw3ICs3NDIsNyBA
QAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEhUTUxO
YW1lcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JGcm9udGVuZC5jcHAi
IC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2Jq
JChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5z
cGVjdG9yVHlwZUJ1aWxkZXIuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcV2ViQ29yZVxEZXJpdmVkU291cmNlc1xKU0Fic3RyYWN0V29ya2VyLmNw
cCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgog
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC0xODA2
NCw3ICsxODA2NCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yRnJvbnRlbmQuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmok
KFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNw
ZWN0b3JPdmVybGF5UGFnZS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEluc3BlY3RvclR5cGVCdWlsZGVyLmgiIC8+CisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yV2ViVHlwZUJ1aWxk
ZXJzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcV2ViQ29yZVxEZXJpdmVkU291cmNlc1xKU0Fi
c3RyYWN0V29ya2VyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcSlNBdHRyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcSlNCYXJQcm9wLmgiIC8+CkBAIC0xODU0Niw2ICsxODU0Niw3IEBA
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3Jc
SW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
Rm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0
b3JcSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3Rv
clxJbnNwZWN0b3JWYWx1ZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndh
cmRpbmdIZWFkZXJzXG1hc21cWDg2QXNzZW1ibGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xwYXJzZXJcU291cmNlQ29kZS5oIiAvPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzCmluZGV4IDgxMjBiNWEuLmUxNGI2YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTUyNzIsNyArNTI3
Miw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
SW5zcGVjdG9yRnJvbnRlbmQuY3BwIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0Zp
bHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1l
KVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JUeXBlQnVpbGRlci5jcHAiPgorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvcldlYlR5cGVCdWls
ZGVycy5jcHAiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgogICAgIDwv
Q2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcSlNB
YnN0cmFjdFdvcmtlci5jcHAiPgpAQCAtMTIyMzcsNiArMTIyMzcsOSBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbC5oIj4KICAgICAgIDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9y
PC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxG
b3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCI+CisgICAg
ICA8RmlsdGVyPkZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvcjwvRmlsdGVyPgorICAgIDwvQ2xJ
bmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5z
cGVjdG9yXEluc3BlY3RvclZhbHVlcy5oIj4KICAgICAgIDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRl
cnNcaW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0xMzA2NCw3ICsxMzA2
Nyw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
SW5zcGVjdG9yT3ZlcmxheVBhZ2UuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9G
aWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCI+CisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yV2ViVHlwZUJ1aWxk
ZXJzLmgiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJ
bmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcSlNBYnN0
cmFjdFdvcmtlci5oIj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBkNzM0OTQ5Li5mNGM2NWIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODg5LDkgKzE4ODks
OSBAQAogCQk1M0VGNzY2QzE2NTMxOTk0MDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCBpbiBD
b3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUzRUY3NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oICovOyB9OwogCQk1
NTBBMEJDOTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDNzA4NUY2MDM5MDA3MzUz
RDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgKi87IH07CiAJCTU1MEEwQkNBMDg1RjYwMzkwMDczNTNE
NiAvKiBRdWFsaWZpZWROYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTU3M0QxMzQ3
MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzNEMTM0NTE0Q0UzOUZGMDA1N0FC
Q0EgLyogSW5zcGVjdG9yVHlwZUJ1aWxkZXIuY3BwICovOyB9OworCQk1NzNEMTM0NzE0Q0UzOUZG
MDA1N0FCQ0EgLyogSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3M0QxMzQ1MTRDRTM5RkYwMDU3QUJDQSAv
KiBJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuY3BwICovOyB9OwogCQk1NzhEQTIwRTE1MjBFQjhD
MDA2MTQxQzEgLyogSW5zcGVjdG9yRnJvbnRlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNEY1RkZDMTFDQkQzMDEwMEExODZCRiAvKiBJbnNwZWN0
b3JGcm9udGVuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07Ci0JCTU3OERBMjBGMTUyMEVCQTMwMDYxNDFDMSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczRDEzNDYx
NENFMzlGRjAwNTdBQkNBIC8qIEluc3BlY3RvclR5cGVCdWlsZGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTc4REEyMEYxNTIwRUJBMzAwNjE0
MUMxIC8qIEluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczRDEzNDYxNENFMzlGRjAwNTdBQkNBIC8qIEluc3Bl
Y3RvcldlYlR5cGVCdWlsZGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTU3Qjc5MUEzMTRDNkE2MjkwMEYyMDJEMSAvKiBDb250ZW50RGlzdHJp
YnV0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTdCNzkxOUYxNEM2QTYyOTAwRjIwMkQxIC8qIENvbnRlbnREaXN0cmlidXRvci5jcHAgKi87IH07
CiAJCTU3Qjc5MUE0MTRDNkE2MjkwMEYyMDJEMSAvKiBDb250ZW50RGlzdHJpYnV0b3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3Qjc5MUEwMTRDNkE2
MjkwMEYyMDJEMSAvKiBDb250ZW50RGlzdHJpYnV0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1N0NGNDk3NDE0RUUzNkQ3MDBFQ0ZGMTQgLyog
SW5zZXJ0aW9uUG9pbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTdDRjQ5NzIxNEVFMzZENzAwRUNGRjE0IC8qIEluc2VydGlvblBvaW50LmNwcCAq
LzsgfTsKQEAgLTg2MzQsOCArODYzNCw4IEBACiAJCTUzRUY3NjZBMTY1MzBBNjEwMDRDQkU0OSAv
KiBTZXR0aW5nc01hY3Jvcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXR0
aW5nc01hY3Jvcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTBBMEJDNzA4NUY2
MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBRdWFsaWZpZWROYW1lLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTU1MEEw
QkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1YWxpZmllZE5hbWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07Ci0JCTU3M0Qx
MzQ1MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JUeXBlQnVpbGRlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3M0QxMzQ2MTRDRTM5RkYwMDU3QUJDQSAvKiBJ
bnNwZWN0b3JUeXBlQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bnNwZWN0b3JUeXBlQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzNE
MTM0NTE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvcldlYlR5cGVCdWlsZGVy
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3M0QxMzQ2MTRDRTM5RkYwMDU3
QUJDQSAvKiBJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTU3Qjc5MTlGMTRDNkE2MjkwMEYyMDJEMSAvKiBDb250ZW50RGlzdHJpYnV0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGVudERpc3Ry
aWJ1dG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdCNzkxQTAxNEM2QTYy
OTAwRjIwMkQxIC8qIENvbnRlbnREaXN0cmlidXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDb250ZW50RGlzdHJpYnV0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTdDRjQ5NzIxNEVFMzZENzAwRUNGRjE0IC8qIEluc2VydGlvblBvaW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc2VydGlvblBvaW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NDA1LDggKzE0NDA1LDggQEAKIAkJCQk0Rjcw
N0E5ODExRUY2Nzk0MDBBQ0RBNjkgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmggKi8s
CiAJCQkJNEY0RjVGRkExMUNCRDJEMjAwQTE4NkJGIC8qIEluc3BlY3RvckZyb250ZW5kLmNwcCAq
LywKIAkJCQk0RjRGNUZGQzExQ0JEMzAxMDBBMTg2QkYgLyogSW5zcGVjdG9yRnJvbnRlbmQuaCAq
LywKLQkJCQk1NzNEMTM0NTE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yVHlwZUJ1aWxkZXIu
Y3BwICovLAotCQkJCTU3M0QxMzQ2MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JUeXBlQnVp
bGRlci5oICovLAorCQkJCTU3M0QxMzQ1MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JXZWJU
eXBlQnVpbGRlcnMuY3BwICovLAorCQkJCTU3M0QxMzQ2MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNw
ZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCAqLywKIAkJCQk3QTBFNzZEODEwQkYwNTk4MDBBMDI3NkUg
LyogSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwICovLAogCQkJCTdBMEU3NkQ5MTBCRjA1OTgwMEEw
Mjc2RSAvKiBKU0luamVjdGVkU2NyaXB0SG9zdC5oICovLAogCQkJCTdBMEU3NzFDMTBDMDBEQjEw
MEEwMjc2RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgKi8sCkBAIC0yMzM1OSw3ICsy
MzM1OSw3IEBACiAJCQkJODJBQjE3NzQxMjVDODI2NzAwQzUwNjlEIC8qIEluc3BlY3RvclN0eWxl
U2hlZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTgyODg5QjREMTNDNjIzOTIwMDlBNjE1NiAvKiBJ
bnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTc1NDEzM0E4MTAy
RTAwRTgwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmggaW4gSGVhZGVycyAqLywK
LQkJCQk1NzhEQTIwRjE1MjBFQkEzMDA2MTQxQzEgLyogSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTU3OERBMjBGMTUyMEVCQTMwMDYxNDFDMSAvKiBJbnNwZWN0b3JX
ZWJUeXBlQnVpbGRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUYzODEwQzFDMTM2NUE0OTYwMEVE
NkUzMyAvKiBJbnNwZWN0b3JXb3JrZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc4RTA5
MjkxN0QxNEQxQzAwNDIwQUExIC8qIFJUQ1N0YXRzQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAog
CQkJCUYzNzVDQzA3MTE1MEQzMDAwMDhEREI4MSAvKiBJbnNwZWN0b3JXb3JrZXJSZXNvdXJjZS5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNjYwNyw3ICsyNjYwNyw3IEBACiAJCQkJODI4ODlCNEMxM0M2
MjM5MjAwOUE2MTU2IC8qIEluc3BlY3RvclN0eWxlVGV4dEVkaXRvci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwNzI3N0U0RTE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbUF1ZGlvRGVz
dGluYXRpb25Ob2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc1NDEzM0FBMTAyRTAwRjQwMDA3
NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTU3
M0QxMzQ3MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk1NzNEMTM0NzE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yV2ViVHlw
ZUJ1aWxkZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUYzODEwQzFCMTM2NUE0OTYwMEVENkUz
MyAvKiBJbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGMzUwQjcz
NTEzRjEzNzdEMDA4ODBDNDMgLyogSW5zdHJ1bWVudGluZ0FnZW50cy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCMjc1MzU2MDBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFBy
b2ZpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5jcHAK
aW5kZXggYTIyMDMwNC4uMjEyNDQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0UHJvZmlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0UHJvZmlsZS5jcHAKQEAgLTc0LDE2ICs3NCwxNiBAQCBkb3VibGUgU2NyaXB0UHJvZmls
ZTo6aWRsZVRpbWUoKSBjb25zdAogfQogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLXN0YXRpYyBQ
YXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+IGJ1aWxkSW5z
cGVjdG9yT2JqZWN0Rm9yKGNvbnN0IEpTQzo6UHJvZmlsZU5vZGUqIG5vZGUpCitzdGF0aWMgUGFz
c1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+
IGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9yKGNvbnN0IEpTQzo6UHJvZmlsZU5vZGUqIG5vZGUpCiB7
CiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEpTQzo6UHJvZmlsZU5vZGU+PiBQcm9maWxlTm9k
ZXNMaXN0OwogICAgIGNvbnN0IFByb2ZpbGVOb2Rlc0xpc3QmIG5vZGVDaGlsZHJlbiA9IG5vZGUt
PmNoaWxkcmVuKCk7CiAgICAgUHJvZmlsZU5vZGVzTGlzdDo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
bm9kZUNoaWxkcmVuLmVuZCgpOwotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1
aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZT4+IGNoaWxkcmVuID0gVHlwZUJ1aWxkZXI6
OkFycmF5PFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+OjpjcmVhdGUoKTsK
KyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlPj4gY2hpbGRyZW4gPSBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BV
UHJvZmlsZU5vZGU+OjpjcmVhdGUoKTsKICAgICBmb3IgKFByb2ZpbGVOb2Rlc0xpc3Q6OmNvbnN0
X2l0ZXJhdG9yIGl0ZXIgPSBub2RlQ2hpbGRyZW4uYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRl
cikKICAgICAgICAgY2hpbGRyZW4tPmFkZEl0ZW0oYnVpbGRJbnNwZWN0b3JPYmplY3RGb3IoaXRl
ci0+Z2V0KCkpKTsKIAotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2Zp
bGVOb2RlPiByZXN1bHQgPSBUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlOjpj
cmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BV
UHJvZmlsZU5vZGU+IHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpD
UFVQcm9maWxlTm9kZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldEZ1bmN0aW9uTmFtZShub2RlLT5m
dW5jdGlvbk5hbWUoKSkKICAgICAgICAgLnNldFVybChub2RlLT51cmwoKSkKICAgICAgICAgLnNl
dExpbmVOdW1iZXIobm9kZS0+bGluZU51bWJlcigpKQpAQCAtOTYsMTIgKzk2LDEyIEBAIHN0YXRp
YyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+IGJ1aWxk
SW5zcGVjdG9yT2JqZWN0Rm9yCiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLVBh
c3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZT4gU2NyaXB0UHJv
ZmlsZTo6YnVpbGRJbnNwZWN0b3JPYmplY3RGb3JIZWFkKCkgY29uc3QKK1Bhc3NSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlPiBTY3JpcHRQcm9m
aWxlOjpidWlsZEluc3BlY3Rvck9iamVjdEZvckhlYWQoKSBjb25zdAogewogICAgIHJldHVybiBi
dWlsZEluc3BlY3Rvck9iamVjdEZvcihtX3Byb2ZpbGUtPmhlYWQoKSk7CiB9CiAKLVBhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZT4gU2NyaXB0UHJvZmlsZTo6
YnVpbGRJbnNwZWN0b3JPYmplY3RGb3JCb3R0b21VcEhlYWQoKSBjb25zdAorUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+IFNjcmlwdFBy
b2ZpbGU6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9yQm90dG9tVXBIZWFkKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdFByb2ZpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUu
aAppbmRleCBmMzA1MTJjLi4zYjI0MzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRQcm9maWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0UHJvZmlsZS5oCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRl
ci5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIgogI2VuZGlmCiAKIG5h
bWVzcGFjZSBKU0MgewpAQCAtNTUsOCArNTUsOCBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGlkbGVU
aW1lKCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIFBhc3NSZWZQdHI8VHlw
ZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZT4gYnVpbGRJbnNwZWN0b3JPYmplY3RG
b3JIZWFkKCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQ
VVByb2ZpbGVOb2RlPiBidWlsZEluc3BlY3Rvck9iamVjdEZvckJvdHRvbVVwSGVhZCgpIGNvbnN0
OworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVBy
b2ZpbGVOb2RlPiBidWlsZEluc3BlY3Rvck9iamVjdEZvckhlYWQoKSBjb25zdDsKKyAgICBQYXNz
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZT4g
YnVpbGRJbnNwZWN0b3JPYmplY3RGb3JCb3R0b21VcEhlYWQoKSBjb25zdDsKICNlbmRpZgogCiBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0
b3JJbnNwZWN0b3IucHkgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvcklu
c3BlY3Rvci5weQppbmRleCBkMDNiMDcwLi4xY2MxMzczIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQpAQCAtNTkwLDcgKzU5MCw3
IEBAIGNsYXNzIENvbW1hbmRSZXR1cm5QYXNzTW9kZWw6CiAgICAgICAgICAgICBzZWxmLnZhcl90
eXBlID0gdmFyX3R5cGUKIAogICAgICAgICBkZWYgZ2V0X3JldHVybl92YXJfdHlwZShzZWxmKToK
LSAgICAgICAgICAgIHJldHVybiAiVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDwlcz4iICUgc2VsZi52
YXJfdHlwZQorICAgICAgICAgICAgcmV0dXJuICJJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRP
dXRwdXQ8JXM+IiAlIHNlbGYudmFyX3R5cGUKIAogICAgICAgICBAc3RhdGljbWV0aG9kCiAgICAg
ICAgIGRlZiBnZXRfb3V0cHV0X2FyZ3VtZW50X3ByZWZpeCgpOgpAQCAtNjAxLDcgKzYwMSw3IEBA
IGNsYXNzIENvbW1hbmRSZXR1cm5QYXNzTW9kZWw6CiAgICAgICAgICAgICByZXR1cm4gIiVzLmdl
dFZhbHVlKCkiCiAKICAgICAgICAgZGVmIGdldF9vdXRwdXRfcGFyYW1ldGVyX3R5cGUoc2VsZik6
Ci0gICAgICAgICAgICByZXR1cm4gIlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8JXM+KiIgJSBzZWxm
LnZhcl90eXBlCisgICAgICAgICAgICByZXR1cm4gIkluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9w
dE91dHB1dDwlcz4qIiAlIHNlbGYudmFyX3R5cGUKIAogICAgICAgICBAc3RhdGljbWV0aG9kCiAg
ICAgICAgIGRlZiBnZXRfc2V0X3JldHVybl9jb25kaXRpb24oKToKQEAgLTcxMiwxMCArNzEyLDEw
IEBAIGNsYXNzIFR5cGVNb2RlbDoKICAgICAgICAgICAgIFR5cGVNb2RlbC5WYWx1ZVR5cGUuX19p
bml0X18oc2VsZiwgImludCIsIEZhbHNlKQogCiAgICAgICAgIGRlZiBnZXRfaW5wdXRfcGFyYW1f
dHlwZV90ZXh0KHNlbGYpOgotICAgICAgICAgICAgcmV0dXJuICJUeXBlQnVpbGRlcjo6RXhhY3Rs
eUludCIKKyAgICAgICAgICAgIHJldHVybiAiSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RXhhY3Rs
eUludCIKIAogICAgICAgICBkZWYgZ2V0X29wdF9vdXRwdXRfdHlwZV8oc2VsZik6Ci0gICAgICAg
ICAgICByZXR1cm4gIlR5cGVCdWlsZGVyOjpFeGFjdGx5SW50IgorICAgICAgICAgICAgcmV0dXJu
ICJJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpFeGFjdGx5SW50IgogCiAgICAgQGNsYXNzbWV0aG9k
CiAgICAgZGVmIGluaXRfY2xhc3MoY2xzKToKQEAgLTgzNyw4ICs4MzcsOCBAQCBjbGFzcyBUeXBl
QmluZGluZ3M6CiAKICAgICAgICAgY2xhc3MgSGVscGVyOgogICAgICAgICAgICAgaXNfYWRfaG9j
ID0gRmFsc2UKLSAgICAgICAgICAgIGZ1bGxfbmFtZV9wcmVmaXhfZm9yX3VzZSA9ICJUeXBlQnVp
bGRlcjo6IiArIGNvbnRleHRfZG9tYWluX25hbWUgKyAiOjoiCi0gICAgICAgICAgICBmdWxsX25h
bWVfcHJlZml4X2Zvcl9pbXBsID0gIlR5cGVCdWlsZGVyOjoiICsgY29udGV4dF9kb21haW5fbmFt
ZSArICI6OiIKKyAgICAgICAgICAgIGZ1bGxfbmFtZV9wcmVmaXhfZm9yX3VzZSA9ICJJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjoiICsgY29udGV4dF9kb21haW5fbmFtZSArICI6OiIKKyAgICAgICAg
ICAgIGZ1bGxfbmFtZV9wcmVmaXhfZm9yX2ltcGwgPSAiSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
IiArIGNvbnRleHRfZG9tYWluX25hbWUgKyAiOjoiCiAKICAgICAgICAgICAgIEBzdGF0aWNtZXRo
b2QKICAgICAgICAgICAgIGRlZiB3cml0ZV9kb2Mod3JpdGVyKToKQEAgLTk4MCw3ICs5ODAsNyBA
QCBjbGFzcyBUeXBlQmluZGluZ3M6CiAKICAgICAgICAgICAgICAgICAgICAgQHN0YXRpY21ldGhv
ZAogICAgICAgICAgICAgICAgICAgICBkZWYgZ2V0X3NldHRlcl92YWx1ZV9leHByZXNzaW9uX3Bh
dHRlcm4oKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiVHlwZUJ1aWxkZXI6Omdl
dEVudW1Db25zdGFudFZhbHVlKCVzKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAi
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Z2V0RW51bUNvbnN0YW50VmFsdWUoJXMpIgogCiAgICAg
ICAgICAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKICAgICAgICAgICAgICAgICAgICAgZGVmIHJl
ZHVjZV90b19yYXdfdHlwZSgpOgpAQCAtMTIzNCw3ICsxMjM0LDcgQEAgY2xhc3MgVHlwZUJpbmRp
bmdzOgogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lX211
bHRpbGluZShDb2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5jbGFzc19iaW5kaW5nX2J1aWxk
ZXJfcGFydF80KQogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXds
aW5lKCIgICAgdHlwZWRlZiBUeXBlQnVpbGRlcjo6U3RydWN0SXRlbVRyYWl0cyBJdGVtVHJhaXRz
O1xuIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAg
ICB0eXBlZGVmIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlN0cnVjdEl0ZW1UcmFpdHMgSXRlbVRy
YWl0cztcbiIpCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHByb3BfZGF0
YSBpbiByZXNvbHZlX2RhdGEub3B0aW9uYWxfcHJvcGVydGllczoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHByb3BfbmFtZSA9IHByb3BfZGF0YS5wWyJuYW1lIl0KQEAgLTE1
MTksNyArMTUxOSw3IEBAIGNsYXNzIFR5cGVCaW5kaW5nczoKIAogICAgICAgICAgICAgICAgICAg
ICBAY2xhc3NtZXRob2QKICAgICAgICAgICAgICAgICAgICAgZGVmIGdldF9hcnJheV9pdGVtX2Nf
dHlwZV90ZXh0KGNscyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVwbGFjZV9y
aWdodF9zaGlmdCgiVHlwZUJ1aWxkZXI6OkFycmF5PCVzPiIgJSBjbHMucmVzb2x2ZV9kYXRhXy5p
dGVtX3R5cGVfYmluZGluZy5nZXRfYXJyYXlfaXRlbV9jX3R5cGVfdGV4dCgpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VfcmlnaHRfc2hpZnQoIkluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFycmF5PCVzPiIgJSBjbHMucmVzb2x2ZV9kYXRhXy5pdGVtX3R5cGVfYmluZGlu
Zy5nZXRfYXJyYXlfaXRlbV9jX3R5cGVfdGV4dCgpKQogCiAgICAgICAgICAgICAgICAgICAgIEBz
dGF0aWNtZXRob2QKICAgICAgICAgICAgICAgICAgICAgZGVmIGdldF9zZXR0ZXJfdmFsdWVfZXhw
cmVzc2lvbl9wYXR0ZXJuKCk6CkBAIC0yNDEzLDggKzI0MTMsOCBAQCBiYWNrZW5kX2NwcF9maWxl
ID0gU21hcnRPdXRwdXQob3V0cHV0X2NwcF9kaXJuYW1lICsgIi9JbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcgogZnJvbnRlbmRfaF9maWxlID0gU21hcnRPdXRwdXQob3V0cHV0X2hlYWRlcl9kaXJu
YW1lICsgIi9JbnNwZWN0b3JGcm9udGVuZC5oIikKIGZyb250ZW5kX2NwcF9maWxlID0gU21hcnRP
dXRwdXQob3V0cHV0X2NwcF9kaXJuYW1lICsgIi9JbnNwZWN0b3JGcm9udGVuZC5jcHAiKQogCi10
eXBlYnVpbGRlcl9oX2ZpbGUgPSBTbWFydE91dHB1dChvdXRwdXRfaGVhZGVyX2Rpcm5hbWUgKyAi
L0luc3BlY3RvclR5cGVCdWlsZGVyLmgiKQotdHlwZWJ1aWxkZXJfY3BwX2ZpbGUgPSBTbWFydE91
dHB1dChvdXRwdXRfY3BwX2Rpcm5hbWUgKyAiL0luc3BlY3RvclR5cGVCdWlsZGVyLmNwcCIpCit0
eXBlYnVpbGRlcl9oX2ZpbGUgPSBTbWFydE91dHB1dChvdXRwdXRfaGVhZGVyX2Rpcm5hbWUgKyAi
L0luc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIikKK3R5cGVidWlsZGVyX2NwcF9maWxlID0gU21h
cnRPdXRwdXQob3V0cHV0X2NwcF9kaXJuYW1lICsgIi9JbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMu
Y3BwIikKIAogYmFja2VuZF9qc19maWxlID0gU21hcnRPdXRwdXQob3V0cHV0X2pzX2Rpcm5hbWUg
KyAiL0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcyIpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weSBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weQppbmRl
eCBhN2IyMjdiLi4wMWZlNTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
Q29kZUdlbmVyYXRvckluc3BlY3RvclN0cmluZ3MucHkKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5CkBAIC0xMjUsNyArMTI1LDcg
QEAgZnJvbnRlbmRfaCA9ICgKICIiIiNpZm5kZWYgSW5zcGVjdG9yRnJvbnRlbmRfaAogI2RlZmlu
ZSBJbnNwZWN0b3JGcm9udGVuZF9oCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5o
IgorI2luY2x1ZGUgIkluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckZvcndhcmRpbmcuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTE0OCw3ICsxNDgsNyBAQCBiYWNrZW5k
X2ggPSAoCiAiIiIjaWZuZGVmIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyc19oCiAjZGVmaW5l
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyc19oCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JUeXBl
QnVpbGRlci5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIgogI2luY2x1
ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0yMTQs
MjkxICsyMTQsMjAgQEAgJG1ldGhvZHMKIAogdHlwZWJ1aWxkZXJfaCA9ICgKICIiIgotI2lmbmRl
ZiBJbnNwZWN0b3JUeXBlQnVpbGRlcl9oCi0jZGVmaW5lIEluc3BlY3RvclR5cGVCdWlsZGVyX2gK
Ky8vIEZJWE1FOiBUWVBFLgorI2lmbmRlZiBJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnNfaAorI2Rl
ZmluZSBJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnNfaAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
IAotI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KKyNpbmNsdWRlIDxpbnNw
ZWN0b3IvSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25h
bWVzcGFjZSBJbnNwZWN0b3IgewogCiBuYW1lc3BhY2UgVHlwZUJ1aWxkZXIgewogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBUPgotY2xhc3MgT3B0T3V0cHV0IHsKLXB1YmxpYzoKLSAgICBPcHRPdXRwdXQo
KSA6IG1fYXNzaWduZWQoZmFsc2UpIHsgfQotCi0gICAgdm9pZCBvcGVyYXRvcj0oVCB2YWx1ZSkK
LSAgICB7Ci0gICAgICAgIG1fdmFsdWUgPSB2YWx1ZTsKLSAgICAgICAgbV9hc3NpZ25lZCA9IHRy
dWU7Ci0gICAgfQotCi0gICAgYm9vbCBpc0Fzc2lnbmVkKCkgeyByZXR1cm4gbV9hc3NpZ25lZDsg
fQotCi0gICAgVCBnZXRWYWx1ZSgpCi0gICAgewotICAgICAgICBBU1NFUlQoaXNBc3NpZ25lZCgp
KTsKLSAgICAgICAgcmV0dXJuIG1fdmFsdWU7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFQgbV92
YWx1ZTsKLSAgICBib29sIG1fYXNzaWduZWQ7Ci0KLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShP
cHRPdXRwdXQpOwotfTsKLQotCi0vLyBBIHNtYWxsIHRyYW5zaWVudCB3cmFwcGVyIGFyb3VuZCBp
bnQgdHlwZSwgdGhhdCBjYW4gYmUgdXNlZCBhcyBhIGZ1bmNpdG9uIHBhcmFtZXRlciB0eXBlCi0v
LyBjbGV2ZXJseSBkaXNhbGxvd2luZyBDKysgaW1wbGljaXQgY2FzdHMgZnJvbSBmbG9hdCBvciBk
b3VibGUuCi1jbGFzcyBFeGFjdGx5SW50IHsKLXB1YmxpYzoKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgotICAgIEV4YWN0bHlJbnQoVCB0KSA6IG1fdmFsdWUoY2FzdF90b19pbnQ8VD4odCkpIHt9
Ci0KLSAgICBFeGFjdGx5SW50KCkge30KLQotICAgIG9wZXJhdG9yIGludCgpIHsgcmV0dXJuIG1f
dmFsdWU7IH0KLXByaXZhdGU6Ci0gICAgaW50IG1fdmFsdWU7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgotICAgIHN0YXRpYyBpbnQgY2FzdF90b19pbnQoVCkgeyByZXR1cm4gVDo6ZGVmYXVs
dF9jYXNlX2Nhc3RfaXNfbm90X3N1cHBvcnRlZCgpOyB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1pbmxp
bmUgaW50IEV4YWN0bHlJbnQ6OmNhc3RfdG9faW50PGludD4oaW50IGkpIHsgcmV0dXJuIGk7IH0K
LQotdGVtcGxhdGU8PgotaW5saW5lIGludCBFeGFjdGx5SW50OjpjYXN0X3RvX2ludDx1bnNpZ25l
ZCBpbnQ+KHVuc2lnbmVkIGludCBpKSB7IHJldHVybiBpOyB9Ci0KLWNsYXNzIFJ1bnRpbWVDYXN0
SGVscGVyIHsKLXB1YmxpYzoKLSNpZiAkdmFsaWRhdG9ySWZkZWZOYW1lCi0gICAgdGVtcGxhdGU8
SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZTo6VHlwZSBUWVBFPgotICAgIHN0YXRpYyB2b2lkIGFz
c2VydFR5cGUoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCi0gICAgewotICAgICAg
ICBBU1NFUlQodmFsdWUtPnR5cGUoKSA9PSBUWVBFKTsKLSAgICB9Ci0gICAgc3RhdGljIHZvaWQg
YXNzZXJ0QW55KEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqKTsKLSAgICBzdGF0aWMgdm9pZCBh
c3NlcnRJbnQoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogdmFsdWUpOwotI2VuZGlmCi19Owot
Ci0KLS8vIFRoaXMgY2xhc3MgcHJvdmlkZXMgIlRyYWl0cyIgdHlwZSBmb3IgdGhlIGlucHV0IHR5
cGUgVC4gSXQgaXMgcHJvZ3JhbW1lZCB1c2luZyBDKysgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24K
LS8vIHRlY2huaXF1ZS4gQnkgZGVmYXVsdCBpdCBzaW1wbHkgdGFrZXMgIkl0ZW1UcmFpdHMiIHR5
cGUgZnJvbSBULCBidXQgaXQgZG9lc24ndCB3b3JrIHdpdGggdGhlIGJhc2UgdHlwZXMuCi10ZW1w
bGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IEFycmF5SXRlbUhlbHBlciB7Ci0gICAgdHlwZWRlZiB0
eXBlbmFtZSBUOjpJdGVtVHJhaXRzIFRyYWl0czsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+
Ci1jbGFzcyBBcnJheSA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5QmFzZSB7Ci1w
cml2YXRlOgotICAgIEFycmF5KCkgeyB9Ci0KLSAgICBJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5
KiBvcGVuQWNjZXNzb3JzKCkgewotICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoSW5zcGVj
dG9yOjpJbnNwZWN0b3JBcnJheSkgPT0gc2l6ZW9mKEFycmF5PFQ+KSwgY2Fubm90X2Nhc3QpOwot
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSo+KHN0
YXRpY19jYXN0PEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXlCYXNlKj4odGhpcykpOwotICAgIH0K
LQotcHVibGljOgotICAgIHZvaWQgYWRkSXRlbShQYXNzUmVmUHRyPFQ+IHZhbHVlKQotICAgIHsK
LSAgICAgICAgQXJyYXlJdGVtSGVscGVyPFQ+OjpUcmFpdHM6OnB1c2hSZWZQdHIodGhpcy0+b3Bl
bkFjY2Vzc29ycygpLCB2YWx1ZSk7Ci0gICAgfQotCi0gICAgdm9pZCBhZGRJdGVtKFQgdmFsdWUp
Ci0gICAgewotICAgICAgICBBcnJheUl0ZW1IZWxwZXI8VD46OlRyYWl0czo6cHVzaFJhdyh0aGlz
LT5vcGVuQWNjZXNzb3JzKCksIHZhbHVlKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxBcnJheTxUPj4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
QXJyYXk8VD4oKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8QXJyYXk8VD4+IHJ1
bnRpbWVDYXN0KFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpCi0g
ICAgewotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4gYXJyYXk7Ci0g
ICAgICAgIGJvb2wgY2FzdFJlcyA9IHZhbHVlLT5hc0FycmF5KCZhcnJheSk7Ci0gICAgICAgIEFT
U0VSVF9VTlVTRUQoY2FzdFJlcywgY2FzdFJlcyk7Ci0jaWYgJHZhbGlkYXRvcklmZGVmTmFtZQot
ICAgICAgICBhc3NlcnRDb3JyZWN0VmFsdWUoYXJyYXkuZ2V0KCkpOwotI2VuZGlmICAvLyAkdmFs
aWRhdG9ySWZkZWZOYW1lCi0gICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihBcnJheTxUPikg
PT0gc2l6ZW9mKEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkpLCB0eXBlX2Nhc3RfcHJvYmxlbSk7
Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTxUPio+KHN0YXRpY19jYXN0PEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQXJyYXlCYXNlKj4oYXJyYXkuZ2V0KCkpKTsKLSAgICB9Ci0KLSNpZiAk
dmFsaWRhdG9ySWZkZWZOYW1lCi0gICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKElu
c3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVlKQotICAgIHsKLSAgICAgICAgUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+IGFycmF5OwotICAgICAgICBib29sIGNhc3RSZXMgPSB2
YWx1ZS0+YXNBcnJheSgmYXJyYXkpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKGNhc3RSZXMsIGNh
c3RSZXMpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJyYXktPmxlbmd0aCgp
OyBpKyspCi0gICAgICAgICAgICBBcnJheUl0ZW1IZWxwZXI8VD46OlRyYWl0czo6dGVtcGxhdGUg
YXNzZXJ0Q29ycmVjdFZhbHVlPFQ+KGFycmF5LT5nZXQoaSkuZ2V0KCkpOwotICAgIH0KLQotI2Vu
ZGlmIC8vICR2YWxpZGF0b3JJZmRlZk5hbWUKLX07Ci0KLXN0cnVjdCBTdHJ1Y3RJdGVtVHJhaXRz
IHsKLSAgICBzdGF0aWMgdm9pZCBwdXNoUmVmUHRyKEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkq
IGFycmF5LCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQotICAg
IHsKLSAgICAgICAgYXJyYXktPnB1c2hWYWx1ZSh2YWx1ZSk7Ci0gICAgfQotCi0jaWYgJHZhbGlk
YXRvcklmZGVmTmFtZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHZvaWQg
YXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVlKSB7Ci0g
ICAgICAgIFQ6OmFzc2VydENvcnJlY3RWYWx1ZSh2YWx1ZSk7Ci0gICAgfQotI2VuZGlmICAvLyAk
dmFsaWRhdG9ySWZkZWZOYW1lCi19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgQXJyYXlJdGVtSGVs
cGVyPFN0cmluZz4gewotICAgIHN0cnVjdCBUcmFpdHMgewotICAgICAgICBzdGF0aWMgdm9pZCBw
dXNoUmF3KEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkqIGFycmF5LCBjb25zdCBTdHJpbmcmIHZh
bHVlKQotICAgICAgICB7Ci0gICAgICAgICAgICBhcnJheS0+cHVzaFN0cmluZyh2YWx1ZSk7Ci0g
ICAgICAgIH0KLQotI2lmICR2YWxpZGF0b3JJZmRlZk5hbWUKLSAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3Rv
cjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVlKSB7Ci0gICAgICAgICAgICBSdW50aW1lQ2FzdEhlbHBl
cjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlOjpUeXBlU3RyaW5nPih2YWx1
ZSk7Ci0gICAgICAgIH0KLSNlbmRpZiAgLy8gJHZhbGlkYXRvcklmZGVmTmFtZQotICAgIH07Ci19
OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPGludD4gewotICAgIHN0cnVj
dCBUcmFpdHMgewotICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmF3KEluc3BlY3Rvcjo6SW5zcGVj
dG9yQXJyYXkqIGFycmF5LCBpbnQgdmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGFycmF5
LT5wdXNoSW50KHZhbHVlKTsKLSAgICAgICAgfQotCi0jaWYgJHZhbGlkYXRvcklmZGVmTmFtZQot
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgdm9pZCBhc3NlcnRD
b3JyZWN0VmFsdWUoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogdmFsdWUpIHsKLSAgICAgICAg
ICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRJbnQodmFsdWUpOwotICAgICAgICB9Ci0jZW5k
aWYgIC8vICR2YWxpZGF0b3JJZmRlZk5hbWUKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3Ry
dWN0IEFycmF5SXRlbUhlbHBlcjxkb3VibGU+IHsKLSAgICBzdHJ1Y3QgVHJhaXRzIHsKLSAgICAg
ICAgc3RhdGljIHZvaWQgcHVzaFJhdyhJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5KiBhcnJheSwg
ZG91YmxlIHZhbHVlKQotICAgICAgICB7Ci0gICAgICAgICAgICBhcnJheS0+cHVzaE51bWJlcih2
YWx1ZSk7Ci0gICAgICAgIH0KLQotI2lmICR2YWxpZGF0b3JJZmRlZk5hbWUKLSAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVl
KEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVlKSB7Ci0gICAgICAgICAgICBSdW50aW1l
Q2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlOjpUeXBlTnVt
YmVyPih2YWx1ZSk7Ci0gICAgICAgIH0KLSNlbmRpZiAgLy8gJHZhbGlkYXRvcklmZGVmTmFtZQot
ICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPGJvb2w+IHsK
LSAgICBzdHJ1Y3QgVHJhaXRzIHsKLSAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJhdyhJbnNwZWN0
b3I6Okluc3BlY3RvckFycmF5KiBhcnJheSwgYm9vbCB2YWx1ZSkKLSAgICAgICAgewotICAgICAg
ICAgICAgYXJyYXktPnB1c2hCb29sZWFuKHZhbHVlKTsKLSAgICAgICAgfQotCi0jaWYgJHZhbGlk
YXRvcklmZGVmTmFtZQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0
aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogdmFs
dWUpIHsKLSAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3Rv
cjo6SW5zcGVjdG9yVmFsdWU6OlR5cGVCb29sZWFuPih2YWx1ZSk7Ci0gICAgICAgIH0KLSNlbmRp
ZiAgLy8gJHZhbGlkYXRvcklmZGVmTmFtZQotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1
Y3QgQXJyYXlJdGVtSGVscGVyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHsKLSAgICBzdHJ1
Y3QgVHJhaXRzIHsKLSAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0b3I6Oklu
c3BlY3RvckFycmF5KiBhcnJheSwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVl
PiB2YWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgYXJyYXktPnB1c2hWYWx1ZSh2YWx1ZSk7
Ci0gICAgICAgIH0KLQotI2lmICR2YWxpZGF0b3JJZmRlZk5hbWUKLSAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVlKSB7Ci0gICAgICAgICAgICBSdW50aW1lQ2FzdEhl
bHBlcjo6YXNzZXJ0QW55KHZhbHVlKTsKLSAgICAgICAgfQotI2VuZGlmICAvLyAkdmFsaWRhdG9y
SWZkZWZOYW1lCi0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBBcnJheUl0ZW1IZWxw
ZXI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHsKLSAgICBzdHJ1Y3QgVHJhaXRzIHsKLSAg
ICAgICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5KiBh
cnJheSwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiB2YWx1ZSkKLSAgICAg
ICAgewotICAgICAgICAgICAgYXJyYXktPnB1c2hWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIH0KLQot
I2lmICR2YWxpZGF0b3JJZmRlZk5hbWUKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAg
ICAgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3Rvcjo6SW5zcGVjdG9y
VmFsdWUqIHZhbHVlKSB7Ci0gICAgICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlw
ZTxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlOjpUeXBlT2JqZWN0Pih2YWx1ZSk7Ci0gICAgICAg
IH0KLSNlbmRpZiAgLy8gJHZhbGlkYXRvcklmZGVmTmFtZQotICAgIH07Ci19OwotCi10ZW1wbGF0
ZTw+Ci1zdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+IHsK
LSAgICBzdHJ1Y3QgVHJhaXRzIHsKLSAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNw
ZWN0b3I6Okluc3BlY3RvckFycmF5KiBhcnJheSwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3RvckFycmF5PiB2YWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgYXJyYXktPnB1c2hBcnJh
eSh2YWx1ZSk7Ci0gICAgICAgIH0KLQotI2lmICR2YWxpZGF0b3JJZmRlZk5hbWUKLSAgICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZh
bHVlKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVlKSB7Ci0gICAgICAgICAgICBSdW50
aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlOjpUeXBl
QXJyYXk+KHZhbHVlKTsKLSAgICAgICAgfQotI2VuZGlmICAvLyAkdmFsaWRhdG9ySWZkZWZOYW1l
Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgQXJyYXlJdGVtSGVs
cGVyPFR5cGVCdWlsZGVyOjpBcnJheTxUPj4gewotICAgIHN0cnVjdCBUcmFpdHMgewotICAgICAg
ICBzdGF0aWMgdm9pZCBwdXNoUmVmUHRyKEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkqIGFycmF5
LCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUPj4gdmFsdWUpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGFycmF5LT5wdXNoVmFsdWUodmFsdWUpOwotICAgICAgICB9Ci0KLSNpZiAkdmFs
aWRhdG9ySWZkZWZOYW1lCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFM+Ci0gICAgICAgIHN0
YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiB2
YWx1ZSkgewotICAgICAgICAgICAgUzo6YXNzZXJ0Q29ycmVjdFZhbHVlKHZhbHVlKTsKLSAgICAg
ICAgfQotI2VuZGlmICAvLyAkdmFsaWRhdG9ySWZkZWZOYW1lCi0gICAgfTsKLX07Ci0KICR7Zm9y
d2FyZHN9CiAKIFN0cmluZyBnZXRFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSk7CkBAIC01MDYs
MTIgKzIzNSwxMSBAQCBTdHJpbmcgZ2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpOwogJHt0
eXBlQnVpbGRlcnN9CiB9IC8vIG5hbWVzcGFjZSBUeXBlQnVpbGRlcgogCi0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxF
KElOU1BFQ1RPUikKIAotI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvclR5cGVCdWlsZGVyX2gp
CisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzX2gpCiAKICIiIikK
IApAQCAtNTIxLDEyICsyNDksMTIgQEAgdHlwZWJ1aWxkZXJfY3BwID0gKAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JUeXBl
QnVpbGRlci5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAot
bmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIG5hbWVzcGFjZSBU
eXBlQnVpbGRlciB7CiAKQEAgLTU0MywyNSArMjcxLDExIEBAICRpbXBsQ29kZQogCiAjaWYgJHZh
bGlkYXRvcklmZGVmTmFtZQogCi12b2lkIFR5cGVCdWlsZGVyOjpSdW50aW1lQ2FzdEhlbHBlcjo6
YXNzZXJ0QW55KEluc3BlY3RvclZhbHVlKikKLXsKLSAgICAvLyBOby1vcC4KLX0KLQotCi12b2lk
IFR5cGVCdWlsZGVyOjpSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0SW50KEluc3BlY3RvclZhbHVl
KiB2YWx1ZSkKLXsKLSAgICBkb3VibGUgdjsKLSAgICBib29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNO
dW1iZXIoJnYpOwotICAgIEFTU0VSVF9VTlVTRUQoY2FzdFJlcywgY2FzdFJlcyk7Ci0gICAgQVNT
RVJUKHN0YXRpY19jYXN0PGRvdWJsZT4oc3RhdGljX2Nhc3Q8aW50Pih2KSkgPT0gdik7Ci19Ci0K
ICR2YWxpZGF0b3JDb2RlCiAKICNlbmRpZiAvLyAkdmFsaWRhdG9ySWZkZWZOYW1lCiAKLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8g
RU5BQkxFKElOU1BFQ1RPUikKICIiIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Db25zb2xlTWVzc2FnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29s
ZU1lc3NhZ2UuY3BwCmluZGV4IGVhOTc4MmUuLjNlYjY4NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcApAQCAtMTQyLDU3ICsxNDIsNTcgQEAgdm9pZCBD
b25zb2xlTWVzc2FnZTo6YXV0b2dlbmVyYXRlTWV0YWRhdGEoYm9vbCBjYW5HZW5lcmF0ZUNhbGxT
dGFjaywgSlNDOjpFeGVjU3QKIH0KIAogLy8gS2VlcCBpbiBzeW5jIHdpdGggaW5zcGVjdG9yL2Zy
b250LWVuZC9Db25zb2xlVmlldy5qcwotc3RhdGljIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25z
b2xlTWVzc2FnZTo6U291cmNlOjpFbnVtIG1lc3NhZ2VTb3VyY2VWYWx1ZShNZXNzYWdlU291cmNl
IHNvdXJjZSkKK3N0YXRpYyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xl
TWVzc2FnZTo6U291cmNlOjpFbnVtIG1lc3NhZ2VTb3VyY2VWYWx1ZShNZXNzYWdlU291cmNlIHNv
dXJjZSkKIHsKICAgICBzd2l0Y2ggKHNvdXJjZSkgewotICAgIGNhc2UgWE1MTWVzc2FnZVNvdXJj
ZTogcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpY
TUw7Ci0gICAgY2FzZSBKU01lc3NhZ2VTb3VyY2U6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29s
ZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6SmF2YXNjcmlwdDsKLSAgICBjYXNlIE5ldHdvcmtN
ZXNzYWdlU291cmNlOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdl
OjpTb3VyY2U6Ok5ldHdvcms7Ci0gICAgY2FzZSBDb25zb2xlQVBJTWVzc2FnZVNvdXJjZTogcmV0
dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpDb25zb2xl
QVBJOwotICAgIGNhc2UgU3RvcmFnZU1lc3NhZ2VTb3VyY2U6IHJldHVybiBUeXBlQnVpbGRlcjo6
Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6U3RvcmFnZTsKLSAgICBjYXNlIEFwcENh
Y2hlTWVzc2FnZVNvdXJjZTogcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVz
c2FnZTo6U291cmNlOjpBcHBjYWNoZTsKLSAgICBjYXNlIFJlbmRlcmluZ01lc3NhZ2VTb3VyY2U6
IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6UmVu
ZGVyaW5nOwotICAgIGNhc2UgQ1NTTWVzc2FnZVNvdXJjZTogcmV0dXJuIFR5cGVCdWlsZGVyOjpD
b25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpDU1M7Ci0gICAgY2FzZSBTZWN1cml0eU1l
c3NhZ2VTb3VyY2U6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6
OlNvdXJjZTo6U2VjdXJpdHk7Ci0gICAgY2FzZSBPdGhlck1lc3NhZ2VTb3VyY2U6IHJldHVybiBU
eXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6T3RoZXI7CisgICAg
Y2FzZSBYTUxNZXNzYWdlU291cmNlOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29u
c29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6WE1MOworICAgIGNhc2UgSlNNZXNzYWdlU291
cmNlOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3Nh
Z2U6OlNvdXJjZTo6SmF2YXNjcmlwdDsKKyAgICBjYXNlIE5ldHdvcmtNZXNzYWdlU291cmNlOiBy
ZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNv
dXJjZTo6TmV0d29yazsKKyAgICBjYXNlIENvbnNvbGVBUElNZXNzYWdlU291cmNlOiByZXR1cm4g
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6
Q29uc29sZUFQSTsKKyAgICBjYXNlIFN0b3JhZ2VNZXNzYWdlU291cmNlOiByZXR1cm4gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6U3RvcmFn
ZTsKKyAgICBjYXNlIEFwcENhY2hlTWVzc2FnZVNvdXJjZTogcmV0dXJuIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6OkFwcGNhY2hlOworICAg
IGNhc2UgUmVuZGVyaW5nTWVzc2FnZVNvdXJjZTogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6OlJlbmRlcmluZzsKKyAgICBjYXNl
IENTU01lc3NhZ2VTb3VyY2U6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xl
OjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpDU1M7CisgICAgY2FzZSBTZWN1cml0eU1lc3NhZ2VT
b3VyY2U6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVz
c2FnZTo6U291cmNlOjpTZWN1cml0eTsKKyAgICBjYXNlIE90aGVyTWVzc2FnZVNvdXJjZTogcmV0
dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3Vy
Y2U6Ok90aGVyOwogICAgIH0KLSAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNv
bGVNZXNzYWdlOjpTb3VyY2U6Ok90aGVyOworICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpPdGhlcjsKIH0KIAotc3RhdGlj
IFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6RW51bSBtZXNzYWdl
VHlwZVZhbHVlKE1lc3NhZ2VUeXBlIHR5cGUpCitzdGF0aWMgSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkVudW0gbWVzc2FnZVR5cGVWYWx1ZShN
ZXNzYWdlVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgTG9nTWVz
c2FnZVR5cGU6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5
cGU6OkxvZzsKLSAgICBjYXNlIENsZWFyTWVzc2FnZVR5cGU6IHJldHVybiBUeXBlQnVpbGRlcjo6
Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkNsZWFyOwotICAgIGNhc2UgRGlyTWVzc2Fn
ZVR5cGU6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6
OkRpcjsKLSAgICBjYXNlIERpclhNTE1lc3NhZ2VUeXBlOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNv
bnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpEaXJYTUw7Ci0gICAgY2FzZSBUYWJsZU1lc3Nh
Z2VUeXBlOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBl
OjpUYWJsZTsKLSAgICBjYXNlIFRyYWNlTWVzc2FnZVR5cGU6IHJldHVybiBUeXBlQnVpbGRlcjo6
Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlRyYWNlOwotICAgIGNhc2UgU3RhcnRHcm91
cE1lc3NhZ2VUeXBlOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdl
OjpUeXBlOjpTdGFydEdyb3VwOwotICAgIGNhc2UgU3RhcnRHcm91cENvbGxhcHNlZE1lc3NhZ2VU
eXBlOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpT
dGFydEdyb3VwQ29sbGFwc2VkOwotICAgIGNhc2UgRW5kR3JvdXBNZXNzYWdlVHlwZTogcmV0dXJu
IFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6RW5kR3JvdXA7Ci0g
ICAgY2FzZSBBc3NlcnRNZXNzYWdlVHlwZTogcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpD
b25zb2xlTWVzc2FnZTo6VHlwZTo6QXNzZXJ0OwotICAgIGNhc2UgVGltaW5nTWVzc2FnZVR5cGU6
IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlRpbWlu
ZzsKLSAgICBjYXNlIFByb2ZpbGVNZXNzYWdlVHlwZTogcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25z
b2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6UHJvZmlsZTsKLSAgICBjYXNlIFByb2ZpbGVFbmRN
ZXNzYWdlVHlwZTogcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6
VHlwZTo6UHJvZmlsZUVuZDsKKyAgICBjYXNlIExvZ01lc3NhZ2VUeXBlOiByZXR1cm4gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkxvZzsKKyAg
ICBjYXNlIENsZWFyTWVzc2FnZVR5cGU6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
b25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6Q2xlYXI7CisgICAgY2FzZSBEaXJNZXNzYWdl
VHlwZTogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNz
YWdlOjpUeXBlOjpEaXI7CisgICAgY2FzZSBEaXJYTUxNZXNzYWdlVHlwZTogcmV0dXJuIEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpEaXJYTUw7
CisgICAgY2FzZSBUYWJsZU1lc3NhZ2VUeXBlOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlRhYmxlOworICAgIGNhc2UgVHJhY2VN
ZXNzYWdlVHlwZTogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNv
bGVNZXNzYWdlOjpUeXBlOjpUcmFjZTsKKyAgICBjYXNlIFN0YXJ0R3JvdXBNZXNzYWdlVHlwZTog
cmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpU
eXBlOjpTdGFydEdyb3VwOworICAgIGNhc2UgU3RhcnRHcm91cENvbGxhcHNlZE1lc3NhZ2VUeXBl
OiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6
OlR5cGU6OlN0YXJ0R3JvdXBDb2xsYXBzZWQ7CisgICAgY2FzZSBFbmRHcm91cE1lc3NhZ2VUeXBl
OiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6
OlR5cGU6OkVuZEdyb3VwOworICAgIGNhc2UgQXNzZXJ0TWVzc2FnZVR5cGU6IHJldHVybiBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6QXNzZXJ0
OworICAgIGNhc2UgVGltaW5nTWVzc2FnZVR5cGU6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6VGltaW5nOworICAgIGNhc2UgUHJv
ZmlsZU1lc3NhZ2VUeXBlOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6
Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlByb2ZpbGU7CisgICAgY2FzZSBQcm9maWxlRW5kTWVzc2Fn
ZVR5cGU6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVz
c2FnZTo6VHlwZTo6UHJvZmlsZUVuZDsKICAgICB9Ci0gICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpD
b25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6TG9nOworICAgIHJldHVybiBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6TG9nOwogfQogCi1z
dGF0aWMgVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbDo6RW51bSBt
ZXNzYWdlTGV2ZWxWYWx1ZShNZXNzYWdlTGV2ZWwgbGV2ZWwpCitzdGF0aWMgSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpFbnVtIG1lc3NhZ2VM
ZXZlbFZhbHVlKE1lc3NhZ2VMZXZlbCBsZXZlbCkKIHsKICAgICBzd2l0Y2ggKGxldmVsKSB7Ci0g
ICAgY2FzZSBEZWJ1Z01lc3NhZ2VMZXZlbDogcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpD
b25zb2xlTWVzc2FnZTo6TGV2ZWw6OkRlYnVnOwotICAgIGNhc2UgTG9nTWVzc2FnZUxldmVsOiBy
ZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbDo6TG9nOwot
ICAgIGNhc2UgV2FybmluZ01lc3NhZ2VMZXZlbDogcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xl
OjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6Oldhcm5pbmc7Ci0gICAgY2FzZSBFcnJvck1lc3NhZ2VM
ZXZlbDogcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6
OkVycm9yOworICAgIGNhc2UgRGVidWdNZXNzYWdlTGV2ZWw6IHJldHVybiBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6OkRlYnVnOworICAgIGNh
c2UgTG9nTWVzc2FnZUxldmVsOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29s
ZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpMb2c7CisgICAgY2FzZSBXYXJuaW5nTWVzc2FnZUxl
dmVsOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3Nh
Z2U6OkxldmVsOjpXYXJuaW5nOworICAgIGNhc2UgRXJyb3JNZXNzYWdlTGV2ZWw6IHJldHVybiBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6OkVy
cm9yOwogICAgIH0KLSAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNz
YWdlOjpMZXZlbDo6TG9nOworICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25z
b2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6OkxvZzsKIH0KIAogdm9pZCBDb25zb2xlTWVzc2Fn
ZTo6YWRkVG9Gcm9udGVuZChJbnNwZWN0b3JDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyKiBjb25z
b2xlRnJvbnRlbmREaXNwYXRjaGVyLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2Ny
aXB0TWFuYWdlciwgYm9vbCBnZW5lcmF0ZVByZXZpZXcpCiB7Ci0gICAgUmVmUHRyPFR5cGVCdWls
ZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZT4ganNvbk9iaiA9IFR5cGVCdWlsZGVyOjpDb25z
b2xlOjpDb25zb2xlTWVzc2FnZTo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U+IGpzb25PYmogPSBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6Y3JlYXRlKCkKICAgICAgICAgLnNl
dFNvdXJjZShtZXNzYWdlU291cmNlVmFsdWUobV9zb3VyY2UpKQogICAgICAgICAuc2V0TGV2ZWwo
bWVzc2FnZUxldmVsVmFsdWUobV9sZXZlbCkpCiAgICAgICAgIC5zZXRUZXh0KG1fbWVzc2FnZSk7
CkBAIC0yMDcsMTEgKzIwNywxMSBAQCB2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5k
KEluc3BlY3RvckNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIqIGNvbnNvbGVGcgogICAgIGlmICht
X2FyZ3VtZW50cyAmJiBtX2FyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgpKSB7CiAgICAgICAgIElu
amVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmpl
Y3RlZFNjcmlwdEZvcihtX2FyZ3VtZW50cy0+Z2xvYmFsU3RhdGUoKSk7CiAgICAgICAgIGlmICgh
aW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+PiBqc29uQXJn
cyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0
Pjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pj4ganNv
bkFyZ3MgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGlmICht
X3R5cGUgPT0gVGFibGVNZXNzYWdlVHlwZSAmJiBnZW5lcmF0ZVByZXZpZXcgJiYgbV9hcmd1bWVu
dHMtPmFyZ3VtZW50Q291bnQoKSkgewogICAgICAgICAgICAgICAgIFNjcmlwdFZhbHVlIHRhYmxl
ID0gbV9hcmd1bWVudHMtPmFyZ3VtZW50QXQoMCk7CiAgICAgICAgICAgICAgICAgU2NyaXB0VmFs
dWUgY29sdW1ucyA9IG1fYXJndW1lbnRzLT5hcmd1bWVudENvdW50KCkgPiAxID8gbV9hcmd1bWVu
dHMtPmFyZ3VtZW50QXQoMSkgOiBTY3JpcHRWYWx1ZSgpOwotICAgICAgICAgICAgICAgIFJlZlB0
cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBpbnNwZWN0b3JWYWx1ZSA9IGlu
amVjdGVkU2NyaXB0LndyYXBUYWJsZSh0YWJsZSwgY29sdW1ucyk7CisgICAgICAgICAgICAgICAg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gaW5z
cGVjdG9yVmFsdWUgPSBpbmplY3RlZFNjcmlwdC53cmFwVGFibGUodGFibGUsIGNvbHVtbnMpOwog
ICAgICAgICAgICAgICAgIGlmICghaW5zcGVjdG9yVmFsdWUpIHsKICAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAg
LTIxOSw3ICsyMTksNyBAQCB2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKEluc3Bl
Y3RvckNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIqIGNvbnNvbGVGcgogICAgICAgICAgICAgICAg
IGpzb25BcmdzLT5hZGRJdGVtKGluc3BlY3RvclZhbHVlKTsKICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYXJndW1lbnRzLT5h
cmd1bWVudENvdW50KCk7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8VHlwZUJ1
aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gaW5zcGVjdG9yVmFsdWUgPSBpbmplY3RlZFNj
cmlwdC53cmFwT2JqZWN0KG1fYXJndW1lbnRzLT5hcmd1bWVudEF0KGkpLCAiY29uc29sZSIsIGdl
bmVyYXRlUHJldmlldyk7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IGluc3BlY3RvclZhbHVlID0gaW5qZWN0
ZWRTY3JpcHQud3JhcE9iamVjdChtX2FyZ3VtZW50cy0+YXJndW1lbnRBdChpKSwgImNvbnNvbGUi
LCBnZW5lcmF0ZVByZXZpZXcpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWluc3BlY3RvclZh
bHVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAKaW5kZXggYjNkOWFhOC4uZWExYTBlNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAKQEAgLTEy
MCw5ICsxMjAsOSBAQCBQYXNzT3duUHRyPFZlY3RvcjxzaXplX3Q+PiBsaW5lRW5kaW5ncyhjb25z
dCBTdHJpbmcmIHRleHQpCiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLXN0YXRp
YyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hNYXRjaD4gYnVpbGRPYmplY3RG
b3JTZWFyY2hNYXRjaChpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBsaW5lQ29udGVudCkK
K3N0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaE1h
dGNoPiBidWlsZE9iamVjdEZvclNlYXJjaE1hdGNoKGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJp
bmcmIGxpbmVDb250ZW50KQogewotICAgIHJldHVybiBUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNo
TWF0Y2g6OmNyZWF0ZSgpCisgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6
OlNlYXJjaE1hdGNoOjpjcmVhdGUoKQogICAgICAgICAuc2V0TGluZU51bWJlcihsaW5lTnVtYmVy
KQogICAgICAgICAuc2V0TGluZUNvbnRlbnQobGluZUNvbnRlbnQpCiAgICAgICAgIC5yZWxlYXNl
KCk7CkBAIC0xNTMsOSArMTUzLDkgQEAgaW50IGNvdW50UmVndWxhckV4cHJlc3Npb25NYXRjaGVz
KGNvbnN0IFJlZ3VsYXJFeHByZXNzaW9uJiByZWdleCwgY29uc3QgU3RyaW5nJgogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVy
OjpQYWdlOjpTZWFyY2hNYXRjaD4+IHNlYXJjaEluVGV4dEJ5TGluZXMoY29uc3QgU3RyaW5nJiB0
ZXh0LCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sIGNhc2VTZW5zaXRpdmUsIGNvbnN0
IGJvb2wgaXNSZWdleCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0Y2g+PiBzZWFyY2hJblRleHRC
eUxpbmVzKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9v
bCBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sIGlzUmVnZXgpCiB7Ci0gICAgUmVmUHRyPFR5cGVC
dWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0Y2g+PiByZXN1bHQgPSBU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaE1hdGNoPjo6Y3JlYXRl
KCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaE1hdGNoPj4gcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0Y2g+
OjpjcmVhdGUoKTsKIAogICAgIFJlZ3VsYXJFeHByZXNzaW9uIHJlZ2V4ID0gQ29udGVudFNlYXJj
aFV0aWxzOjpjcmVhdGVTZWFyY2hSZWdleChxdWVyeSwgY2FzZVNlbnNpdGl2ZSwgaXNSZWdleCk7
CiAgICAgVmVjdG9yPHBhaXI8aW50LCBTdHJpbmc+PiBtYXRjaGVzID0gZ2V0UmVndWxhckV4cHJl
c3Npb25NYXRjaGVzQnlMaW5lcyhyZWdleCwgdGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmgKaW5kZXggN2I1ZGYyZC4uMzExYjYyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbHMuaApAQCAtMzEsNyAr
MzEsNyBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvclR5
cGVCdWlsZGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmgiCiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3Bh
Y2UgQ29udGVudFNlYXJjaFV0aWxzIHsKIAogUmVndWxhckV4cHJlc3Npb24gY3JlYXRlU2VhcmNo
UmVnZXgoY29uc3QgU3RyaW5nJiBxdWVyeSwgYm9vbCBjYXNlU2Vuc2l0aXZlLCBib29sIGlzUmVn
ZXgpOwogaW50IGNvdW50UmVndWxhckV4cHJlc3Npb25NYXRjaGVzKGNvbnN0IFJlZ3VsYXJFeHBy
ZXNzaW9uJiwgY29uc3QgU3RyaW5nJik7Ci1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxU
eXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0Y2g+PiBzZWFyY2hJblRleHRCeUxpbmVzKGNvbnN0
IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCBjYXNlU2Vuc2l0
aXZlLCBjb25zdCBib29sIGlzUmVnZXgpOworUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hNYXRjaD4+IHNl
YXJjaEluVGV4dEJ5TGluZXMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIHF1ZXJ5
LCBjb25zdCBib29sIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wgaXNSZWdleCk7CiBUZXh0UG9z
aXRpb24gdGV4dFBvc2l0aW9uRnJvbU9mZnNldChzaXplX3Qgb2Zmc2V0LCBjb25zdCBWZWN0b3I8
c2l6ZV90PiYgbGluZUVuZGluZ3MpOwogUGFzc093blB0cjxWZWN0b3I8c2l6ZV90Pj4gbGluZUVu
ZGluZ3MoY29uc3QgU3RyaW5nJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHQuY3BwCmluZGV4IDVhMjJiNzUuLmU4OTJkYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcApAQCAtNDYsMTIgKzQ2LDEyIEBACiB1c2luZyBK
U0M6OlNjcmlwdFZhbHVlOwogdXNpbmcgSlNDOjpTY3JpcHRPYmplY3Q7CiAKLXVzaW5nIFdlYkNv
cmU6OlR5cGVCdWlsZGVyOjpBcnJheTsKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpEZWJ1
Z2dlcjo6Q2FsbEZyYW1lOwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlBy
b3BlcnR5RGVzY3JpcHRvcjsKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpJ
bnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcjsKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpE
ZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzOwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdDsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5
OwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZTsKK3Vz
aW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM7Cit1
c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I7
Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5
RGVzY3JpcHRvcjsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdDsKIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIApAQCAtNjcsNyArNjcsNyBA
QCBJbmplY3RlZFNjcmlwdDo6SW5qZWN0ZWRTY3JpcHQoU2NyaXB0T2JqZWN0IGluamVjdGVkU2Ny
aXB0T2JqZWN0LCBJbnNwZWN0ZWRTdGF0ZQogewogfQogCi12b2lkIEluamVjdGVkU2NyaXB0Ojpl
dmFsdWF0ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lv
biwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEks
IGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxUeXBlQnVp
bGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0
cHV0PGJvb2w+KiB3YXNUaHJvd24pCit2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZShFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3Ry
aW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGJvb2wgcmV0dXJu
QnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQogewogICAgIEpTQzo6U2NyaXB0RnVuY3Rp
b25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJldmFsdWF0ZSIsIFdlYkNv
cmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBl
bmRBcmd1bWVudChleHByZXNzaW9uKTsKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBJbmplY3RlZFNj
cmlwdDo6ZXZhbHVhdGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGV4
cHJlc3Npb24KICAgICBtYWtlRXZhbENhbGwoZXJyb3JTdHJpbmcsIGZ1bmN0aW9uLCByZXN1bHQs
IHdhc1Rocm93bik7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmNhbGxGdW5jdGlvbk9uKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3Ry
aW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50cywgYm9vbCByZXR1cm5CeVZh
bHVlLCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpS
ZW1vdGVPYmplY3Q+KiByZXN1bHQsIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Ro
cm93bikKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBleHByZXNz
aW9uLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50cywgYm9vbCByZXR1cm5CeVZhbHVlLCBib29sIGdl
bmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJl
bW90ZU9iamVjdD4qIHJlc3VsdCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJv
b2w+KiB3YXNUaHJvd24pCiB7CiAgICAgSlNDOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24o
aW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImNhbGxGdW5jdGlvbk9uIiwgV2ViQ29yZTo6ZnVuY3Rp
b25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50
KG9iamVjdElkKTsKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Y2FsbEZ1
bmN0aW9uT24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamUKICAg
ICBtYWtlRXZhbENhbGwoZXJyb3JTdHJpbmcsIGZ1bmN0aW9uLCByZXN1bHQsIHdhc1Rocm93bik7
CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywgY29uc3QgU3Ry
aW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcm
IG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgYm9vbCByZXR1cm5CeVZh
bHVlLCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPFJlbW90ZU9iamVjdD4qIHJlc3VsdCwg
VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQordm9pZCBJbmplY3RlZFNj
cmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0
IFNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25z
dCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5j
bHVkZUNvbW1hbmRMaW5lQVBJLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2
aWV3LCBSZWZQdHI8UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKIHsKICAgICBKU0M6OlNjcmlwdEZ1bmN0aW9u
Q2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZXZhbHVhdGVPbkNhbGxGcmFt
ZSIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICBmdW5j
dGlvbi5hcHBlbmRBcmd1bWVudChjYWxsRnJhbWVzKTsKQEAgLTE4Niw3ICsxODYsNyBAQCBQYXNz
UmVmUHRyPEFycmF5PENhbGxGcmFtZT4+IEluamVjdGVkU2NyaXB0Ojp3cmFwQ2FsbEZyYW1lcyhj
b25zdCBTY3JpcHRWYWx1ZSYgYwogfQogI2VuZGlmCiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBPYmplY3QoY29uc3Qg
U2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSwgYm9vbCBnZW5lcmF0
ZVByZXZpZXcpIGNvbnN0CitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRp
bWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBPYmplY3QoY29uc3QgU2NyaXB0
VmFsdWUmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSwgYm9vbCBnZW5lcmF0ZVByZXZp
ZXcpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwogICAgIEpTQzo6U2NyaXB0
RnVuY3Rpb25DYWxsIHdyYXBGdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAid3JhcE9i
amVjdCIpOwpAQCAtMTk5LDEwICsxOTksMTAgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcE9iamVjdChjb25zdAogICAg
IGlmIChoYWRFeGNlcHRpb24pCiAgICAgICAgIHJldHVybiAwOwogICAgIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IHJhd1Jlc3VsdCA9IHIudG9JbnNwZWN0b3JWYWx1ZShzY3JpcHRTdGF0ZSgpKS0+
YXNPYmplY3QoKTsKLSAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVj
dDo6cnVudGltZUNhc3QocmF3UmVzdWx0KTsKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0OjpydW50aW1lQ2FzdChyYXdSZXN1bHQpOwogfQog
Ci1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVk
U2NyaXB0Ojp3cmFwVGFibGUoY29uc3QgU2NyaXB0VmFsdWUmIHRhYmxlLCBjb25zdCBTY3JpcHRW
YWx1ZSYgY29sdW1ucykgY29uc3QKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcFRhYmxlKGNvbnN0IFNj
cmlwdFZhbHVlJiB0YWJsZSwgY29uc3QgU2NyaXB0VmFsdWUmIGNvbHVtbnMpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwogICAgIEpTQzo6U2NyaXB0RnVuY3Rpb25DYWxsIHdy
YXBGdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAid3JhcFRhYmxlIik7CkBAIC0yMTcs
MTAgKzIxNywxMCBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmpl
Y3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwVGFibGUoY29uc3QgUwogICAgIGlmIChoYWRFeGNlcHRp
b24pCiAgICAgICAgIHJldHVybiAwOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJhd1Jl
c3VsdCA9IHIudG9JbnNwZWN0b3JWYWx1ZShzY3JpcHRTdGF0ZSgpKS0+YXNPYmplY3QoKTsKLSAg
ICByZXR1cm4gVHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDo6cnVudGltZUNhc3Qo
cmF3UmVzdWx0KTsKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6
UmVtb3RlT2JqZWN0OjpydW50aW1lQ2FzdChyYXdSZXN1bHQpOwogfQogCi1QYXNzUmVmUHRyPFR5
cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwTm9k
ZShOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSkKK1Bhc3NSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6
d3JhcE5vZGUoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUpCiB7CiAgICAgcmV0
dXJuIHdyYXBPYmplY3Qobm9kZUFzU2NyaXB0VmFsdWUobm9kZSksIGdyb3VwTmFtZSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCmluZGV4IDhlMTUyNjcuLjQw
N2IxODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCkBAIC0z
Myw3ICszMyw3IEBACiAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEJhc2UuaCIKICNpbmNsdWRl
ICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRl
ci5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIgogI2luY2x1ZGUgIlNj
cmlwdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CkBAIC02MiwxNiArNjIsMTYgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgICAgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksCiAgICAgICAgICAgICAgICAgICBib29s
IHJldHVybkJ5VmFsdWUsCiAgICAgICAgICAgICAgICAgICBib29sIGdlbmVyYXRlUHJldmlldywK
LSAgICAgICAgICAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0PiogcmVzdWx0LAotICAgICAgICAgICAgICAgICAgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxi
b29sPiogd2FzVGhyb3duKTsKKyAgICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsCisgICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7
CiAgICAgdm9pZCBjYWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyosCiAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBTdHJpbmcmIG9iamVjdElkLAogICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgU3RyaW5nJiBleHByZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
U3RyaW5nJiBhcmd1bWVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJldHVybkJ5
VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGdlbmVyYXRlUHJldmlldywKLSAg
ICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0PiogcmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgVHlwZUJ1aWxkZXI6Ok9w
dE91dHB1dDxib29sPiogd2FzVGhyb3duKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQs
CisgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRw
dXQ8Ym9vbD4qIHdhc1Rocm93bik7CiAgICAgdm9pZCBldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9y
U3RyaW5nKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSlNDOjpTY3JpcHRW
YWx1ZSYgY2FsbEZyYW1lcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3Ry
aW5nJiBjYWxsRnJhbWVJZCwKQEAgLTgwLDIxICs4MCwyMSBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIHJldHVybkJ5VmFsdWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3Vs
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxi
b29sPiogd2FzVGhyb3duKTsKLSAgICB2b2lkIGdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dl
cjo6RnVuY3Rpb25EZXRhaWxzPiogcmVzdWx0KTsKLSAgICB2b2lkIGdldFByb3BlcnRpZXMoRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIG93blByb3BlcnRpZXMsIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlByb3BlcnR5RGVz
Y3JpcHRvcj4+KiByZXN1bHQpOwotICAgIHZvaWQgZ2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJh
eTxUeXBlQnVpbGRlcjo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiogcmVz
dWx0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3
YXNUaHJvd24pOworICAgIHZvaWQgZ2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVi
dWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4qIHJlc3VsdCk7CisgICAgdm9pZCBnZXRQcm9wZXJ0aWVz
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgYm9vbCBvd25Qcm9wZXJ0aWVz
LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4qIHJlc3VsdCk7CisgICAgdm9pZCBn
ZXRJbnRlcm5hbFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElk
LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiogcmVzdWx0KTsKICAg
ICBOb2RlKiBub2RlRm9yT2JqZWN0SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJZCk7CiAgICAgdm9p
ZCByZWxlYXNlT2JqZWN0KGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpOwogCiAjaWYgRU5BQkxFKEpB
VkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlw
ZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiB3cmFwQ2FsbEZyYW1lcyhjb25zdCBKU0M6
OlNjcmlwdFZhbHVlJik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpB
cnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4gd3JhcENh
bGxGcmFtZXMoY29uc3QgSlNDOjpTY3JpcHRWYWx1ZSYpOwogI2VuZGlmCiAKLSAgICBQYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHdyYXBPYmplY3QoY29uc3Qg
SlNDOjpTY3JpcHRWYWx1ZSYsIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lLCBib29sIGdlbmVyYXRl
UHJldmlldyA9IGZhbHNlKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q+IHdyYXBUYWJsZShjb25zdCBKU0M6OlNjcmlwdFZhbHVlJiB0YWJs
ZSwgY29uc3QgSlNDOjpTY3JpcHRWYWx1ZSYgY29sdW1ucykgY29uc3Q7Ci0gICAgUGFzc1JlZlB0
cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiB3cmFwTm9kZShOb2RlKiwgY29u
c3QgU3RyaW5nJiBncm91cE5hbWUpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiB3cmFwT2JqZWN0KGNvbnN0IEpTQzo6U2NyaXB0
VmFsdWUmLCBjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcgPSBm
YWxzZSkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q+IHdyYXBUYWJsZShjb25zdCBKU0M6OlNjcmlwdFZhbHVlJiB0YWJs
ZSwgY29uc3QgSlNDOjpTY3JpcHRWYWx1ZSYgY29sdW1ucykgY29uc3Q7CisgICAgUGFzc1JlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHdyYXBOb2Rl
KE5vZGUqLCBjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSk7CiAgICAgSlNDOjpTY3JpcHRWYWx1ZSBm
aW5kT2JqZWN0QnlJZChjb25zdCBTdHJpbmcmIG9iamVjdElkKSBjb25zdDsKIAogICAgIHZvaWQg
aW5zcGVjdE5vZGUoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRCYXNlLmNwcAppbmRleCAwMjg5MGVlLi5hMTM3Zjk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcApAQCAtNDAsNyArNDAsNyBA
QAogI2luY2x1ZGUgPHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJl
bW90ZU9iamVjdDsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdDsKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6Om1ha2VDYWxs
KEpTQzo6U2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwgUmVmUHRyPEluc3AKICAgICAgICAg
KnJlc3VsdCA9IEluc3BlY3RvclN0cmluZzo6Y3JlYXRlKCJFeGNlcHRpb24gd2hpbGUgbWFraW5n
IGEgY2FsbC4iKTsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6Om1ha2VFdmFsQ2FsbChF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIEpTQzo6U2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlv
biwgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiBvYmplY3RSZXN1
bHQsIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKK3ZvaWQgSW5qZWN0
ZWRTY3JpcHRCYXNlOjptYWtlRXZhbENhbGwoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBKU0M6
OlNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24sIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiBvYmplY3RSZXN1bHQsIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQogewogICAgIFJlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4gcmVzdWx0OwogICAgIG1ha2VDYWxsKGZ1bmN0aW9uLCAmcmVzdWx0KTsKQEAg
LTE0Miw3ICsxNDIsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUV2YWxDYWxsKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgSlNDOjpTY3JpcHRGdW5jdAogICAgICAgICAqZXJyb3JT
dHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IHJlc3VsdCBpcyBub3QgYSBwYWlyIG9mIHZhbHVlIGFu
ZCB3YXNUaHJvd24gZmxhZyI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgKm9iamVjdFJl
c3VsdCA9IFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q6OnJ1bnRpbWVDYXN0KHJl
c3VsdE9iaik7CisgICAgKm9iamVjdFJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdDo6cnVudGltZUNhc3QocmVzdWx0T2JqKTsKICAgICAqd2FzVGhy
b3duID0gd2FzVGhyb3duVmFsOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRCYXNlLmgKaW5kZXggYjEyYTFlZS4uYTRmNjBiZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaApAQCAtMzEsNyArMzEsNyBAQAog
I2lmbmRlZiBJbmplY3RlZFNjcmlwdEJhc2VfaAogI2RlZmluZSBJbmplY3RlZFNjcmlwdEJhc2Vf
aAogCi0jaW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0
b3JXZWJUeXBlQnVpbGRlcnMuaCIKICNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3QuaD4K
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTY4
LDcgKzY4LDcgQEAgcHJvdGVjdGVkOgogICAgIGNvbnN0IEpTQzo6U2NyaXB0T2JqZWN0JiBpbmpl
Y3RlZFNjcmlwdE9iamVjdCgpIGNvbnN0OwogICAgIEpTQzo6U2NyaXB0VmFsdWUgY2FsbEZ1bmN0
aW9uV2l0aEV2YWxFbmFibGVkKEpTQzo6U2NyaXB0RnVuY3Rpb25DYWxsJiwgYm9vbCYgaGFkRXhj
ZXB0aW9uKSBjb25zdDsKICAgICB2b2lkIG1ha2VDYWxsKEpTQzo6U2NyaXB0RnVuY3Rpb25DYWxs
JiwgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwotICAgIHZvaWQg
bWFrZUV2YWxDYWxsKEVycm9yU3RyaW5nKiwgSlNDOjpTY3JpcHRGdW5jdGlvbkNhbGwmLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwgVHlwZUJ1aWxk
ZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKTsKKyAgICB2b2lkIG1ha2VFdmFsQ2FsbChF
cnJvclN0cmluZyosIEpTQzo6U2NyaXB0RnVuY3Rpb25DYWxsJiwgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwgSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOwogCiBwcml2YXRlOgogICAg
IFN0cmluZyBtX25hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmNwcAppbmRleCA5YmVhMTkyLi5lMDE1ODMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZh
c01vZHVsZS5jcHAKQEAgLTQyLDEyICs0MiwxMiBAQAogI2luY2x1ZGUgPGJpbmRpbmdzL1Njcmlw
dE9iamVjdC5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KIAotdXNp
bmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkFycmF5OwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxk
ZXI6OkNhbnZhczo6UmVzb3VyY2VJZDsKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpDYW52
YXM6OlJlc291cmNlSW5mbzsKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlJl
c291cmNlU3RhdGU7Ci11c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFjZUxv
ZzsKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQ7Cit1c2lu
ZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VJZDsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNhbnZhczo6UmVzb3VyY2VJbmZvOwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q2Fu
dmFzOjpSZXNvdXJjZVN0YXRlOwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q2FudmFz
OjpUcmFjZUxvZzsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VM
b2dJZDsKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52
YXNNb2R1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZh
c01vZHVsZS5oCmluZGV4IDc0ZWNmOGYuLmQ3Yzg0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5oCkBAIC01OSwxNCAr
NTksMTQgQEAgcHVibGljOgogI2VuZGlmCiAgICAgdm9pZCBtYXJrRnJhbWVFbmQoKTsKIAotICAg
IHZvaWQgY2FwdHVyZUZyYW1lKEVycm9yU3RyaW5nKiwgVHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJh
Y2VMb2dJZCopOwotICAgIHZvaWQgc3RhcnRDYXB0dXJpbmcoRXJyb3JTdHJpbmcqLCBUeXBlQnVp
bGRlcjo6Q2FudmFzOjpUcmFjZUxvZ0lkKik7Ci0gICAgdm9pZCBzdG9wQ2FwdHVyaW5nKEVycm9y
U3RyaW5nKiwgY29uc3QgVHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCYpOwotICAgIHZv
aWQgZHJvcFRyYWNlTG9nKEVycm9yU3RyaW5nKiwgY29uc3QgVHlwZUJ1aWxkZXI6OkNhbnZhczo6
VHJhY2VMb2dJZCYpOwotICAgIHZvaWQgdHJhY2VMb2coRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBpbnQqLCBjb25zdCBpbnQqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNhbnZhczo6
VHJhY2VMb2c+Kik7Ci0gICAgdm9pZCByZXBsYXlUcmFjZUxvZyhFcnJvclN0cmluZyosIGNvbnN0
IFR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQmLCBpbnQsIFJlZlB0cjxUeXBlQnVpbGRl
cjo6Q2FudmFzOjpSZXNvdXJjZVN0YXRlPiopOwotICAgIHZvaWQgcmVzb3VyY2VJbmZvKEVycm9y
U3RyaW5nKiwgY29uc3QgVHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VJZCYsIFJlZlB0cjxU
eXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJjZUluZm8+Kik7Ci0gICAgdm9pZCByZXNvdXJjZVN0
YXRlKEVycm9yU3RyaW5nKiwgY29uc3QgVHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCYs
IGNvbnN0IFR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlSWQmLCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkNhbnZhczo6UmVzb3VyY2VTdGF0ZT4qKTsKKyAgICB2b2lkIGNhcHR1cmVGcmFtZShFcnJv
clN0cmluZyosIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCopOwor
ICAgIHZvaWQgc3RhcnRDYXB0dXJpbmcoRXJyb3JTdHJpbmcqLCBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQqKTsKKyAgICB2b2lkIHN0b3BDYXB0dXJpbmcoRXJyb3JT
dHJpbmcqLCBjb25zdCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQm
KTsKKyAgICB2b2lkIGRyb3BUcmFjZUxvZyhFcnJvclN0cmluZyosIGNvbnN0IEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCYpOworICAgIHZvaWQgdHJhY2VMb2coRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBpbnQqLCBjb25zdCBpbnQqLCBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFjZUxvZz4qKTsKKyAgICB2b2lkIHJl
cGxheVRyYWNlTG9nKEVycm9yU3RyaW5nKiwgY29uc3QgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q2FudmFzOjpUcmFjZUxvZ0lkJiwgaW50LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q2FudmFzOjpSZXNvdXJjZVN0YXRlPiopOworICAgIHZvaWQgcmVzb3VyY2VJbmZvKEVycm9yU3Ry
aW5nKiwgY29uc3QgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJjZUlkJiwg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VJbmZvPiopOwor
ICAgIHZvaWQgcmVzb3VyY2VTdGF0ZShFcnJvclN0cmluZyosIGNvbnN0IEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCYsIGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNhbnZhczo6UmVzb3VyY2VJZCYsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
YW52YXM6OlJlc291cmNlU3RhdGU+Kik7CiAKIHByaXZhdGU6CiAgICAgSlNDOjpTY3JpcHRPYmpl
Y3QgY2FsbFdyYXBDb250ZXh0RnVuY3Rpb24oY29uc3QgU3RyaW5nJiwgY29uc3QgSlNDOjpTY3Jp
cHRPYmplY3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
SG9zdC5jcHAKaW5kZXggZDQ2ODRiOS4uYmRiNTMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBJ
bmplY3RlZFNjcmlwdEhvc3Q6OmRpc2Nvbm5lY3QoKQogdm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6
Omluc3BlY3RJbXBsKFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IG9iamVjdCwgUGFzc1JlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4gaGludHMpCiB7CiAgICAgaWYgKG1faW5zcGVjdG9yQWdlbnQpIHsK
LSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHJlbW90
ZU9iamVjdCA9IFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q6OnJ1bnRpbWVDYXN0
KG9iamVjdCk7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1l
OjpSZW1vdGVPYmplY3Q+IHJlbW90ZU9iamVjdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdDo6cnVudGltZUNhc3Qob2JqZWN0KTsKICAgICAgICAgbV9pbnNw
ZWN0b3JBZ2VudC0+aW5zcGVjdChyZW1vdGVPYmplY3QsIGhpbnRzLT5hc09iamVjdCgpKTsKICAg
ICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcAppbmRl
eCBiZGI2OTE2Li4xOTRiNzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JBZ2VudC5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIEluc3BlY3RvckFnZW50OjpzZXRJ
bmplY3RlZFNjcmlwdEZvck9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaQog
ICAgIG1faW5qZWN0ZWRTY3JpcHRGb3JPcmlnaW4uc2V0KG9yaWdpbiwgc291cmNlKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JBZ2VudDo6aW5zcGVjdChQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q+IG9iamVjdFRvSW5zcGVjdCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IGhpbnRzKQordm9pZCBJbnNwZWN0b3JBZ2VudDo6aW5zcGVjdChQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gb2JqZWN0VG9JbnNw
ZWN0LCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gaGludHMpCiB7CiAgICAgaWYgKG1fZW5h
YmxlZCAmJiBtX2Zyb250ZW5kRGlzcGF0Y2hlcikgewogICAgICAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlci0+aW5zcGVjdChvYmplY3RUb0luc3BlY3QsIGhpbnRzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFnZW50LmgKaW5kZXggYjE1ZGQ2My4uN2Q2MDEyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBzZXRJbmplY3RlZFNjcmlwdEZvck9yaWdpbihjb25zdCBTdHJpbmcm
IG9yaWdpbiwgY29uc3QgU3RyaW5nJiBzb3VyY2UpOwogCi0gICAgdm9pZCBpbnNwZWN0KFBhc3NS
ZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gb2JqZWN0VG9JbnNwZWN0
LCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBoaW50cyk7CisgICAgdm9p
ZCBpbnNwZWN0KFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVt
b3RlT2JqZWN0PiBvYmplY3RUb0luc3BlY3QsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3Q+IGhpbnRzKTsKIAogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JBZ2VudChQYWdlKiwg
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSW5zdHJ1bWVudGluZ0FnZW50cyopOwpAQCAtOTYsNyAr
OTYsNyBAQCBwcml2YXRlOgogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXI7CiAKICAgICBWZWN0b3I8cGFpcjxsb25nLCBTdHJpbmc+PiBtX3BlbmRpbmdF
dmFsdWF0ZVRlc3RDb21tYW5kczsKLSAgICBwYWlyPFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0PiwgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Pj4gbV9w
ZW5kaW5nSW5zcGVjdERhdGE7CisgICAgcGFpcjxSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiwgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0Pj4gbV9wZW5kaW5nSW5zcGVjdERhdGE7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4g
bV9pbmplY3RlZFNjcmlwdEZvck9yaWdpbjsKIAogICAgIGJvb2wgbV9lbmFibGVkOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50LmNwcAppbmRleCBiYTQ2NjU5Li42ZDdkODA1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
LmNwcApAQCAtOTQsOSArOTQsOSBAQCB2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dDo6bmV0d29ya1N0YXRlQ2hhbmdlZCgpCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPm5ldHdv
cmtTdGF0ZVVwZGF0ZWQoaXNOb3dPbmxpbmUpOwogfQogCi12b2lkIEluc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudDo6Z2V0RnJhbWVzV2l0aE1hbmlmZXN0cyhFcnJvclN0cmluZyosIFJlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkZyYW1l
V2l0aE1hbmlmZXN0Pj4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50OjpnZXRGcmFtZXNXaXRoTWFuaWZlc3RzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9u
Q2FjaGU6OkZyYW1lV2l0aE1hbmlmZXN0Pj4mIHJlc3VsdCkKIHsKLSAgICByZXN1bHQgPSBUeXBl
QnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkZyYW1lV2l0aE1h
bmlmZXN0Pjo6Y3JlYXRlKCk7CisgICAgcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRo
TWFuaWZlc3Q+OjpjcmVhdGUoKTsKIAogICAgIEZyYW1lKiBtYWluRnJhbWUgPSBtX3BhZ2VBZ2Vu
dC0+bWFpbkZyYW1lKCk7CiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWU7IGZyYW1l
OyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KG1haW5GcmFtZSkpIHsKQEAgLTEw
OCw3ICsxMDgsNyBAQCB2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0RnJh
bWVzV2l0aE1hbmlmZXN0cyhFcnJvclN0cmluZyosIFJlZlB0cgogICAgICAgICBBcHBsaWNhdGlv
bkNhY2hlSG9zdDo6Q2FjaGVJbmZvIGluZm8gPSBob3N0LT5hcHBsaWNhdGlvbkNhY2hlSW5mbygp
OwogICAgICAgICBTdHJpbmcgbWFuaWZlc3RVUkwgPSBpbmZvLm1fbWFuaWZlc3Quc3RyaW5nKCk7
CiAgICAgICAgIGlmICghbWFuaWZlc3RVUkwuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkZyYW1lV2l0aE1hbmlmZXN0PiB2YWx1
ZSA9IFR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVzdDo6Y3Jl
YXRlKCkKKyAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBsaWNh
dGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVzdD4gdmFsdWUgPSBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVzdDo6Y3JlYXRlKCkKICAgICAg
ICAgICAgICAgICAuc2V0RnJhbWVJZChtX3BhZ2VBZ2VudC0+ZnJhbWVJZChmcmFtZSkpCiAgICAg
ICAgICAgICAgICAgLnNldE1hbmlmZXN0VVJMKG1hbmlmZXN0VVJMKQogICAgICAgICAgICAgICAg
IC5zZXRTdGF0dXMoc3RhdGljX2Nhc3Q8aW50Pihob3N0LT5zdGF0dXMoKSkpOwpAQCAtMTM2LDcg
KzEzNiw3IEBAIHZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpnZXRNYW5pZmVz
dEZvckZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluCiAgICAgKm1hbmlmZXN0VVJMID0gaW5m
by5tX21hbmlmZXN0LnN0cmluZygpOwogfQogCi12b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudDo6Z2V0QXBwbGljYXRpb25DYWNoZUZvckZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFwcGxpY2F0
aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU+JiBhcHBsaWNhdGlvbkNhY2hlKQordm9pZCBJbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmdldEFwcGxpY2F0aW9uQ2FjaGVGb3JGcmFtZShF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU+
JiBhcHBsaWNhdGlvbkNhY2hlKQogewogICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRl
ciA9IGFzc2VydEZyYW1lV2l0aERvY3VtZW50TG9hZGVyKGVycm9yU3RyaW5nLCBmcmFtZUlkKTsK
ICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQpAQCAtMTUxLDkgKzE1MSw5IEBAIHZvaWQgSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpnZXRBcHBsaWNhdGlvbkNhY2hlRm9yRnJhbWUoRXJy
b3JTdHJpbmcqIGVyCiAgICAgYXBwbGljYXRpb25DYWNoZSA9IGJ1aWxkT2JqZWN0Rm9yQXBwbGlj
YXRpb25DYWNoZShyZXNvdXJjZXMsIGluZm8pOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlPiBJbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZShjb25zdCBBcHBsaWNh
dGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvTGlzdCYgYXBwbGljYXRpb25DYWNoZVJlc291cmNl
cywgY29uc3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OkNhY2hlSW5mbyYgYXBwbGljYXRpb25DYWNo
ZUluZm8pCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2Fj
aGU6OkFwcGxpY2F0aW9uQ2FjaGU+IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6YnVp
bGRPYmplY3RGb3JBcHBsaWNhdGlvbkNhY2hlKGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpS
ZXNvdXJjZUluZm9MaXN0JiBhcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzLCBjb25zdCBBcHBsaWNh
dGlvbkNhY2hlSG9zdDo6Q2FjaGVJbmZvJiBhcHBsaWNhdGlvbkNhY2hlSW5mbykKIHsKLSAgICBy
ZXR1cm4gVHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU6OmNy
ZWF0ZSgpCisgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2Fj
aGU6OkFwcGxpY2F0aW9uQ2FjaGU6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRNYW5pZmVzdFVSTChh
cHBsaWNhdGlvbkNhY2hlSW5mby5tX21hbmlmZXN0LnN0cmluZygpKQogICAgICAgICAuc2V0U2l6
ZShhcHBsaWNhdGlvbkNhY2hlSW5mby5tX3NpemUpCiAgICAgICAgIC5zZXRDcmVhdGlvblRpbWUo
YXBwbGljYXRpb25DYWNoZUluZm8ubV9jcmVhdGlvblRpbWUpCkBAIC0xNjIsOSArMTYyLDkgQEAg
UGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNo
ZT4gSW5zcGVjdG9yQXBwbGljYXRpb24KICAgICAgICAgLnJlbGVhc2UoKTsKIH0KIAotUGFzc1Jl
ZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4+IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6
YnVpbGRBcnJheUZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMoY29uc3QgQXBwbGljYXRpb25D
YWNoZUhvc3Q6OlJlc291cmNlSW5mb0xpc3QmIGFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMpCitQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4+IEluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6YnVpbGRBcnJheUZvckFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZXMoY29uc3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mb0xpc3QmIGFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMpCiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJh
eTxUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNl
Pj4gcmVzb3VyY2VzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpBcHBsaWNhdGlv
bkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXBw
bGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlPj4gcmVzb3VyY2VzID0gSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXBwbGlj
YXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlPjo6Y3JlYXRlKCk7CiAKICAgICBB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvTGlzdDo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gYXBwbGljYXRpb25DYWNoZVJlc291cmNlcy5lbmQoKTsKICAgICBBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6UmVzb3VyY2VJbmZvTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBhcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2VzLmJlZ2luKCk7CkBAIC0xNzQsNyArMTc0LDcgQEAgUGFzc1JlZlB0cjxUeXBl
QnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9u
Q2FjaGVSZXMKICAgICByZXR1cm4gcmVzb3VyY2VzOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IEluc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6YnVpbGRPYmplY3RGb3JBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UoY29uc3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mbyYgcmVzb3VyY2VJ
bmZvKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hl
OjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dDo6YnVpbGRPYmplY3RGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoY29uc3QgQXBwbGljYXRp
b25DYWNoZUhvc3Q6OlJlc291cmNlSW5mbyYgcmVzb3VyY2VJbmZvKQogewogICAgIFN0cmluZyB0
eXBlczsKICAgICBpZiAocmVzb3VyY2VJbmZvLm1faXNNYXN0ZXIpCkBAIC0xOTIsNyArMTkyLDcg
QEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25D
YWNoZVJlc291cmNlPiBJbnNwZWN0b3JBcHAKICAgICBpZiAocmVzb3VyY2VJbmZvLm1faXNFeHBs
aWNpdCkKICAgICAgICAgdHlwZXMuYXBwZW5kKCJFeHBsaWNpdCAiKTsKIAotICAgIFJlZlB0cjxU
eXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiB2
YWx1ZSA9IFR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxp
Y2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gdmFsdWUgPSBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6
OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRVcmwocmVzb3VyY2VJbmZvLm1fcmVzb3VyY2Uuc3RyaW5n
KCkpCiAgICAgICAgIC5zZXRTaXplKHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VJbmZvLm1fc2l6
ZSkpCiAgICAgICAgIC5zZXRUeXBlKHR5cGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaAppbmRleCBhN2I5
NmM2Li40NjljMmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCkBAIC02NywxNSArNjcsMTUgQEAgcHVi
bGljOgogICAgIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZCgpOwogCiAgICAgdmlydHVhbCB2b2lk
IGVuYWJsZShFcnJvclN0cmluZyopOwotICAgIHZpcnR1YWwgdm9pZCBnZXRGcmFtZXNXaXRoTWFu
aWZlc3RzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRl
cjo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+PiYgcmVzdWx0KTsKKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0RnJhbWVzV2l0aE1hbmlmZXN0cyhFcnJvclN0cmluZyosIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBs
aWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVzdD4+JiByZXN1bHQpOwogICAgIHZpcnR1YWwg
dm9pZCBnZXRNYW5pZmVzdEZvckZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFt
ZUlkLCBTdHJpbmcqIG1hbmlmZXN0VVJMKTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QXBwbGljYXRp
b25DYWNoZUZvckZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU+Jik7Cisg
ICAgdmlydHVhbCB2b2lkIGdldEFwcGxpY2F0aW9uQ2FjaGVGb3JGcmFtZShFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFw
cGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU+Jik7CiAKIHByaXZhdGU6CiAgICAgSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0
b3JQYWdlQWdlbnQqKTsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNh
Y2hlOjpBcHBsaWNhdGlvbkNhY2hlPiBidWlsZE9iamVjdEZvckFwcGxpY2F0aW9uQ2FjaGUoY29u
c3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mb0xpc3QmLCBjb25zdCBBcHBsaWNh
dGlvbkNhY2hlSG9zdDo6Q2FjaGVJbmZvJik7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6
QXJyYXk8VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZT4+IGJ1aWxkQXJyYXlGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzKGNvbnN0IEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm9MaXN0Jik7Ci0gICAgUGFzc1JlZlB0cjxUeXBl
QnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBidWls
ZE9iamVjdEZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShjb25zdCBBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6UmVzb3VyY2VJbmZvJik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlPiBidWlsZE9iamVjdEZvckFw
cGxpY2F0aW9uQ2FjaGUoY29uc3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mb0xp
c3QmLCBjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Q2FjaGVJbmZvJik7CisgICAgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+PiBidWlsZEFycmF5
Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlcyhjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
UmVzb3VyY2VJbmZvTGlzdCYpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBidWlsZE9iamVj
dEZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
UmVzb3VyY2VJbmZvJik7CiAKICAgICBEb2N1bWVudExvYWRlciogYXNzZXJ0RnJhbWVXaXRoRG9j
dW1lbnRMb2FkZXIoRXJyb3JTdHJpbmcqLCBTdHJpbmcgZnJhbWVJZCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IDY2MTA3YmEuLjgz
YzQyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50
LmNwcApAQCAtNDMsNyArNDMsNyBAQAogI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckhpc3Rvcnku
aCIKLSNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgorI2luY2x1ZGUgIkluc3BlY3Rv
cldlYlR5cGVCdWlsZGVycy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNp
bmNsdWRlICJOYW1lZEZsb3dDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgpAQCAtMTE4
LDcgKzExOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0U2VsZWN0b3IoY29uc3QgQ1NTU3R5
bGVSdWxlKik7CiAgICAgdm9pZCBjb21taXRTZWxlY3Rvcihib29sKTsKICAgICB2b2lkIGNvbW1p
dFNlbGVjdG9yVGltZSgpOwotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0
b3JQcm9maWxlPiB0b0luc3BlY3Rvck9iamVjdCgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+IHRvSW5zcGVjdG9yT2Jq
ZWN0KCkgY29uc3Q7CiAKIHByaXZhdGU6CiAKQEAgLTIwNiwxMSArMjA2LDExIEBAIGlubGluZSB2
b2lkIFNlbGVjdG9yUHJvZmlsZTo6Y29tbWl0U2VsZWN0b3JUaW1lKCkKICAgICBpdC0+dmFsdWUu
dG90YWxUaW1lICs9IHByb2Nlc3NpbmdUaW1lTVM7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlPiBTZWxlY3RvclByb2ZpbGU6OnRvSW5zcGVjdG9yT2Jq
ZWN0KCkgY29uc3QKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxl
Y3RvclByb2ZpbGU+IFNlbGVjdG9yUHJvZmlsZTo6dG9JbnNwZWN0b3JPYmplY3QoKSBjb25zdAog
ewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0
b3JQcm9maWxlRW50cnk+PiBzZWxlY3RvclByb2ZpbGVEYXRhID0gVHlwZUJ1aWxkZXI6OkFycmF5
PFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZUVudHJ5Pjo6Y3JlYXRlKCk7CisgICAg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlRW50cnk+PiBzZWxlY3RvclByb2ZpbGVEYXRhID0gSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpT
ZWxlY3RvclByb2ZpbGVFbnRyeT46OmNyZWF0ZSgpOwogICAgIGZvciAoUnVsZU1hdGNoaW5nU3Rh
dHNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9ydWxlTWF0Y2hpbmdTdGF0cy5iZWdpbigpOyBp
dCAhPSBtX3J1bGVNYXRjaGluZ1N0YXRzLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIFJlZlB0cjxU
eXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGVFbnRyeT4gZW50cnkgPSBUeXBlQnVpbGRl
cjo6Q1NTOjpTZWxlY3RvclByb2ZpbGVFbnRyeTo6Y3JlYXRlKCkKKyAgICAgICAgUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlRW50cnk+IGVudHJ5ID0g
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGVFbnRyeTo6Y3JlYXRl
KCkKICAgICAgICAgICAgIC5zZXRTZWxlY3RvcihpdC0+dmFsdWUuc2VsZWN0b3IpCiAgICAgICAg
ICAgICAuc2V0VXJsKGl0LT52YWx1ZS51cmwpCiAgICAgICAgICAgICAuc2V0TGluZU51bWJlcihp
dC0+dmFsdWUubGluZU51bWJlcikKQEAgLTIyMCw3ICsyMjAsNyBAQCBQYXNzUmVmUHRyPFR5cGVC
dWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZT4gU2VsZWN0b3JQcm9maWxlOjp0b0luc3BlY3Rv
ck9iamVjdAogICAgICAgICBzZWxlY3RvclByb2ZpbGVEYXRhLT5hZGRJdGVtKGVudHJ5LnJlbGVh
c2UoKSk7CiAgICAgfQogCi0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJv
ZmlsZT4gcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlOjpjcmVhdGUo
KQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmls
ZT4gcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU6
OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRUb3RhbFRpbWUodG90YWxNYXRjaGluZ1RpbWVNcygpKQog
ICAgICAgICAuc2V0RGF0YShzZWxlY3RvclByb2ZpbGVEYXRhKTsKICAgICByZXR1cm4gcmVzdWx0
LnJlbGVhc2UoKTsKQEAgLTgxMSw3ICs4MTEsNyBAQCBib29sIEluc3BlY3RvckNTU0FnZW50Ojpm
b3JjZVBzZXVkb1N0YXRlKEVsZW1lbnQqIGVsZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1ZG9UeQog
ICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxlc0Zvck5v
ZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBib29sKiBpbmNs
dWRlUHNldWRvLCBjb25zdCBib29sKiBpbmNsdWRlSW5oZXJpdGVkLCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRjaD4+JiBtYXRjaGVkQ1NTUnVsZXMs
IFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6UHNldWRvSWRNYXRj
aGVzPj4mIHBzZXVkb0lkTWF0Y2hlcywgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVp
bGRlcjo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5Pj4mIGluaGVyaXRlZEVudHJpZXMpCit2b2lk
IEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IGJvb2wqIGluY2x1ZGVQc2V1ZG8sIGNvbnN0
IGJvb2wqIGluY2x1ZGVJbmhlcml0ZWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpB
cnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRjaD4+JiBtYXRjaGVkQ1NT
UnVsZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz4+JiBwc2V1ZG9JZE1hdGNoZXMsIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6OkluaGVyaXRlZFN0eWxlRW50cnk+PiYgaW5oZXJpdGVkRW50cmllcykKIHsKICAgICBFbGVt
ZW50KiBlbGVtZW50ID0gZWxlbWVudEZvcklkKGVycm9yU3RyaW5nLCBub2RlSWQpOwogICAgIGlm
ICghZWxlbWVudCkKQEAgLTgyNCwxMSArODI0LDExIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5v
CiAKICAgICAvLyBQc2V1ZG8gZWxlbWVudHMuCiAgICAgaWYgKCFpbmNsdWRlUHNldWRvIHx8ICpp
bmNsdWRlUHNldWRvKSB7Ci0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1
aWxkZXI6OkNTUzo6UHNldWRvSWRNYXRjaGVzPj4gcHNldWRvRWxlbWVudHMgPSBUeXBlQnVpbGRl
cjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6UHNldWRvSWRNYXRjaGVzPjo6Y3JlYXRlKCk7Cisg
ICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz4+IHBzZXVkb0VsZW1lbnRzID0gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpQc2V1
ZG9JZE1hdGNoZXM+OjpjcmVhdGUoKTsKICAgICAgICAgZm9yIChQc2V1ZG9JZCBwc2V1ZG9JZCA9
IEZJUlNUX1BVQkxJQ19QU0VVRE9JRDsgcHNldWRvSWQgPCBBRlRFUl9MQVNUX0lOVEVSTkFMX1BT
RVVET0lEOyBwc2V1ZG9JZCA9IHN0YXRpY19jYXN0PFBzZXVkb0lkPihwc2V1ZG9JZCArIDEpKSB7
CiAgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiBtYXRjaGVkUnVsZXMg
PSBzdHlsZVJlc29sdmVyLnBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KGVsZW1lbnQsIHBzZXVk
b0lkLCBTdHlsZVJlc29sdmVyOjpBbGxDU1NSdWxlcyk7CiAgICAgICAgICAgICBpZiAoIW1hdGNo
ZWRSdWxlcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkNTUzo6UHNldWRvSWRNYXRjaGVzPiBtYXRjaGVzID0gVHlwZUJ1aWxkZXI6OkNTUzo6UHNldWRv
SWRNYXRjaGVzOjpjcmVhdGUoKQorICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz4gbWF0Y2hlcyA9IEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6UHNldWRvSWRNYXRjaGVzOjpjcmVhdGUoKQogICAgICAgICAgICAgICAg
ICAgICAuc2V0UHNldWRvSWQoc3RhdGljX2Nhc3Q8aW50Pihwc2V1ZG9JZCkpCiAgICAgICAgICAg
ICAgICAgICAgIC5zZXRNYXRjaGVzKGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QobWF0Y2hl
ZFJ1bGVzLCBzdHlsZVJlc29sdmVyLCBlbGVtZW50KSk7CiAgICAgICAgICAgICAgICAgcHNldWRv
RWxlbWVudHMtPmFkZEl0ZW0obWF0Y2hlcy5yZWxlYXNlKCkpOwpAQCAtODQwLDEyICs4NDAsMTIg
QEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm8KIAogICAgIC8vIEluaGVyaXRlZCBzdHlsZXMuCiAg
ICAgaWYgKCFpbmNsdWRlSW5oZXJpdGVkIHx8ICppbmNsdWRlSW5oZXJpdGVkKSB7Ci0gICAgICAg
IFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6SW5oZXJpdGVkU3R5
bGVFbnRyeT4+IGVudHJpZXMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6
SW5oZXJpdGVkU3R5bGVFbnRyeT46OmNyZWF0ZSgpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpJbmhlcml0
ZWRTdHlsZUVudHJ5Pj4gZW50cmllcyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT46OmNyZWF0ZSgp
OwogICAgICAgICBFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVu
dCgpOwogICAgICAgICB3aGlsZSAocGFyZW50RWxlbWVudCkgewogICAgICAgICAgICAgU3R5bGVS
ZXNvbHZlciYgcGFyZW50U3R5bGVSZXNvbHZlciA9IHBhcmVudEVsZW1lbnQtPmRvY3VtZW50KCku
ZW5zdXJlU3R5bGVSZXNvbHZlcigpOwogICAgICAgICAgICAgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1
bGVCYXNlPj4gcGFyZW50TWF0Y2hlZFJ1bGVzID0gcGFyZW50U3R5bGVSZXNvbHZlci5zdHlsZVJ1
bGVzRm9yRWxlbWVudChwYXJlbnRFbGVtZW50LCBTdHlsZVJlc29sdmVyOjpBbGxDU1NSdWxlcyk7
Ci0gICAgICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRy
eT4gZW50cnkgPSBUeXBlQnVpbGRlcjo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5OjpjcmVhdGUo
KQorICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6SW5oZXJp
dGVkU3R5bGVFbnRyeT4gZW50cnkgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkluaGVy
aXRlZFN0eWxlRW50cnk6OmNyZWF0ZSgpCiAgICAgICAgICAgICAgICAgLnNldE1hdGNoZWRDU1NS
dWxlcyhidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KHBhcmVudE1hdGNoZWRSdWxlcywgc3R5
bGVSZXNvbHZlciwgcGFyZW50RWxlbWVudCkpOwogICAgICAgICAgICAgaWYgKHBhcmVudEVsZW1l
bnQtPnN0eWxlKCkgJiYgcGFyZW50RWxlbWVudC0+c3R5bGUoKS0+bGVuZ3RoKCkpIHsKICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUqIHN0eWxlU2hlZXQg
PSBhc0luc3BlY3RvclN0eWxlU2hlZXQocGFyZW50RWxlbWVudCk7CkBAIC04NjEsNyArODYxLDcg
QEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm8KICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NT
QWdlbnQ6OmdldElubGluZVN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBp
bnQgbm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiBpbmxpbmVTdHls
ZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgYXR0cmlidXRlc1N0eWxlKQor
dm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0SW5saW5lU3R5bGVzRm9yTm9kZShFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDU1M6OkNTU1N0eWxlPiYgaW5saW5lU3R5bGUsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDU1M6OkNTU1N0eWxlPiYgYXR0cmlidXRlc1N0eWxlKQogewogICAgIEVsZW1lbnQqIGVs
ZW1lbnQgPSBlbGVtZW50Rm9ySWQoZXJyb3JTdHJpbmcsIG5vZGVJZCk7CiAgICAgaWYgKCFlbGVt
ZW50KQpAQCAtODcyLDExICs4NzIsMTEgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0SW5s
aW5lU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2QKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaW5saW5lU3R5bGUgPSBzdHlsZVNoZWV0LT5idWlsZE9iamVjdEZv
clN0eWxlKGVsZW1lbnQtPnN0eWxlKCkpOwotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NTdHlsZT4gYXR0cmlidXRlcyA9IGJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRlc1N0eWxlKGVsZW1l
bnQpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBh
dHRyaWJ1dGVzID0gYnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5bGUoZWxlbWVudCk7CiAgICAg
YXR0cmlidXRlc1N0eWxlID0gYXR0cmlidXRlcyA/IGF0dHJpYnV0ZXMucmVsZWFzZSgpIDogMDsK
IH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+JiBzdHlsZSkK
K3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVBy
b3BlcnR5Pj4mIHN0eWxlKQogewogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBlbGVtZW50Rm9ySWQo
ZXJyb3JTdHJpbmcsIG5vZGVJZCk7CiAgICAgaWYgKCFlbGVtZW50KQpAQCAtODg3LDkgKzg4Nyw5
IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vCiAgICAgc3R5bGUgPSBpbnNwZWN0b3JTdHlsZS0+
YnVpbGRBcnJheUZvckNvbXB1dGVkU3R5bGUoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2Vu
dDo6Z2V0QWxsU3R5bGVTaGVldHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+PiYgc3R5bGVJbmZvcykK
K3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldEFsbFN0eWxlU2hlZXRzKEVycm9yU3RyaW5nKiwg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4+JiBzdHlsZUluZm9zKQogewotICAgIHN0eWxl
SW5mb3MgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVl
dEhlYWRlcj46OmNyZWF0ZSgpOworICAgIHN0eWxlSW5mb3MgPSBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFk
ZXI+OjpjcmVhdGUoKTsKICAgICBWZWN0b3I8RG9jdW1lbnQqPiBkb2N1bWVudHMgPSBtX2RvbUFn
ZW50LT5kb2N1bWVudHMoKTsKICAgICBmb3IgKFZlY3RvcjxEb2N1bWVudCo+OjppdGVyYXRvciBp
dCA9IGRvY3VtZW50cy5iZWdpbigpOyBpdCAhPSBkb2N1bWVudHMuZW5kKCk7ICsraXQpIHsKICAg
ICAgICAgU3R5bGVTaGVldExpc3QqIGxpc3QgPSAoKml0KS0+c3R5bGVTaGVldHMoKTsKQEAgLTkw
MSw3ICs5MDEsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRBbGxTdHlsZVNoZWV0cyhF
cnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYQogICAgIH0KIH0KIAotdm9pZCBJ
bnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3R5bGVTaGVldChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
U3R5bGVTaGVldEJvZHk+JiBzdHlsZVNoZWV0T2JqZWN0KQordm9pZCBJbnNwZWN0b3JDU1NBZ2Vu
dDo6Z2V0U3R5bGVTaGVldChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYg
c3R5bGVTaGVldElkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHls
ZVNoZWV0Qm9keT4mIHN0eWxlU2hlZXRPYmplY3QpCiB7CiAgICAgSW5zcGVjdG9yU3R5bGVTaGVl
dCogaW5zcGVjdG9yU3R5bGVTaGVldCA9IGFzc2VydFN0eWxlU2hlZXRGb3JJZChlcnJvclN0cmlu
Zywgc3R5bGVTaGVldElkKTsKICAgICBpZiAoIWluc3BlY3RvclN0eWxlU2hlZXQpCkBAIC05MzAs
NyArOTMwLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVTaGVldFRleHQoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcKICAgICAqZXJyb3JTdHJpbmcgPSBJ
bnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhlYyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
Q1NTQWdlbnQ6OnNldFN0eWxlVGV4dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBmdWxsU3R5bGVJZCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpCit2b2lkIEluc3BlY3Rv
ckNTU0FnZW50OjpzZXRTdHlsZVRleHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgZnVsbFN0eWxlSWQsIGNvbnN0IFN0cmluZyYgdGV4dCwg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpCiB7
CiAgICAgSW5zcGVjdG9yQ1NTSWQgY29tcG91bmRJZChmdWxsU3R5bGVJZCk7CiAgICAgQVNTRVJU
KCFjb21wb3VuZElkLmlzRW1wdHkoKSk7CkBAIC05NDYsNyArOTQ2LDcgQEAgdm9pZCBJbnNwZWN0
b3JDU1NBZ2VudDo6c2V0U3R5bGVUZXh0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3Qg
UmVmUHRyPEluc3AKICAgICAqZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJv
clN0cmluZyhlYyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFByb3BlcnR5VGV4
dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
JiBmdWxsU3R5bGVJZCwgaW50IHByb3BlcnR5SW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCwgYm9v
bCBvdmVyd3JpdGUsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4mIHJlc3VsdCkK
K3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFByb3BlcnR5VGV4dChFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBmdWxsU3R5bGVJZCwgaW50
IHByb3BlcnR5SW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBvdmVyd3JpdGUsIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KQogewogICAg
IEluc3BlY3RvckNTU0lkIGNvbXBvdW5kSWQoZnVsbFN0eWxlSWQpOwogICAgIEFTU0VSVCghY29t
cG91bmRJZC5pc0VtcHR5KCkpOwpAQCAtOTYyLDcgKzk2Miw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NT
QWdlbnQ6OnNldFByb3BlcnR5VGV4dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJl
ZlB0cjxJCiAgICAgKmVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJp
bmcoZWMpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50Ojp0b2dnbGVQcm9wZXJ0eShFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBmdWxs
U3R5bGVJZCwgaW50IHByb3BlcnR5SW5kZXgsIGJvb2wgZGlzYWJsZSwgUmVmUHRyPFR5cGVCdWls
ZGVyOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6dG9n
Z2xlUHJvcGVydHkoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiYgZnVsbFN0eWxlSWQsIGludCBwcm9wZXJ0eUluZGV4LCBib29sIGRpc2FibGUs
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KQog
ewogICAgIEluc3BlY3RvckNTU0lkIGNvbXBvdW5kSWQoZnVsbFN0eWxlSWQpOwogICAgIEFTU0VS
VCghY29tcG91bmRJZC5pc0VtcHR5KCkpOwpAQCAtOTc4LDcgKzk3OCw3IEBAIHZvaWQgSW5zcGVj
dG9yQ1NTQWdlbnQ6OnRvZ2dsZVByb3BlcnR5KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29u
c3QgUmVmUHRyPEluCiAgICAgKmVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJy
b3JTdHJpbmcoZWMpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0
b3IoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiYgZnVsbFJ1bGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpDU1M6OkNTU1J1bGU+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRSdWxl
U2VsZWN0b3IoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiYgZnVsbFJ1bGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCkKIHsKICAgICBJbnNwZWN0
b3JDU1NJZCBjb21wb3VuZElkKGZ1bGxSdWxlSWQpOwogICAgIEFTU0VSVCghY29tcG91bmRJZC5p
c0VtcHR5KCkpOwpAQCAtOTk1LDcgKzk5NSw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNl
dFJ1bGVTZWxlY3RvcihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJCiAg
ICAgKmVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcoZWMpOwog
fQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjphZGRSdWxlKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgY29uc3QgaW50IGNvbnRleHROb2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JD
U1NBZ2VudDo6YWRkUnVsZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IGludCBjb250
ZXh0Tm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KQogewogICAgIE5vZGUqIG5vZGUgPSBtX2Rv
bUFnZW50LT5hc3NlcnROb2RlKGVycm9yU3RyaW5nLCBjb250ZXh0Tm9kZUlkKTsKICAgICBpZiAo
IW5vZGUpCkBAIC0xMDIxLDEyICsxMDIxLDEyIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmFk
ZFJ1bGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBpbnQgY29udGV4dE5vZGVJCiAg
ICAgcmVzdWx0ID0gaW5zcGVjdG9yU3R5bGVTaGVldC0+YnVpbGRPYmplY3RGb3JSdWxlKHJ1bGUp
OwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVz
KEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NQcm9wZXJ0eUluZm8+PiYgY3NzUHJvcGVydGllcykKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdl
bnQ6OmdldFN1cHBvcnRlZENTU1Byb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQ
cm9wZXJ0eUluZm8+PiYgY3NzUHJvcGVydGllcykKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5SW5mbz4+IHByb3BlcnRpZXMgPSBU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHlJbmZvPjo6Y3Jl
YXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHlJbmZvPj4gcHJvcGVydGllcyA9IEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
UHJvcGVydHlJbmZvPjo6Y3JlYXRlKCk7CiAgICAgZm9yIChpbnQgaSA9IGZpcnN0Q1NTUHJvcGVy
dHk7IGkgPD0gbGFzdENTU1Byb3BlcnR5OyArK2kpIHsKICAgICAgICAgQ1NTUHJvcGVydHlJRCBp
ZCA9IGNvbnZlcnRUb0NTU1Byb3BlcnR5SUQoaSk7Ci0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+IHByb3BlcnR5ID0gVHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
UHJvcGVydHlJbmZvOjpjcmVhdGUoKQorICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+IHByb3BlcnR5ID0gSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eUluZm86OmNyZWF0ZSgpCiAgICAgICAgICAgICAuc2V0TmFt
ZShnZXRQcm9wZXJ0eU5hbWVTdHJpbmcoaWQpKTsKIAogICAgICAgICBjb25zdCBTdHlsZVByb3Bl
cnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQgPSBzaG9ydGhhbmRGb3JQcm9wZXJ0eShpZCk7CkBAIC0x
MDM0LDcgKzEwMzQsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRTdXBwb3J0ZWRDU1NQ
cm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZAogICAgICAgICAgICAgcHJv
cGVydGllcy0+YWRkSXRlbShwcm9wZXJ0eS5yZWxlYXNlKCkpOwogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+
PiBsb25naGFuZHMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CisgICAg
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBsb25naGFu
ZHMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHNob3J0aGFuZC5sZW5ndGgoKTsgKytqKSB7
CiAgICAgICAgICAgICBDU1NQcm9wZXJ0eUlEIGxvbmdoYW5kSUQgPSBzaG9ydGhhbmQucHJvcGVy
dGllcygpW2pdOwogICAgICAgICAgICAgbG9uZ2hhbmRzLT5hZGRJdGVtKGdldFByb3BlcnR5TmFt
ZVN0cmluZyhsb25naGFuZElEKSk7CkBAIC0xMDY1LDcgKzEwNjUsNyBAQCB2b2lkIEluc3BlY3Rv
ckNTU0FnZW50Ojpmb3JjZVBzZXVkb1N0YXRlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50
IG5vZGVJZCwgYwogICAgIGVsZW1lbnQtPmRvY3VtZW50KCkuc3R5bGVSZXNvbHZlckNoYW5nZWQo
UmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6Omdl
dE5hbWVkRmxvd0NvbGxlY3Rpb24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgZG9jdW1l
bnROb2RlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6TmFt
ZWRGbG93Pj4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE5hbWVkRmxvd0Nv
bGxlY3Rpb24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgZG9jdW1lbnROb2RlSWQsIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDU1M6Ok5hbWVkRmxvdz4+JiByZXN1bHQpCiB7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
bV9kb21BZ2VudC0+YXNzZXJ0RG9jdW1lbnQoZXJyb3JTdHJpbmcsIGRvY3VtZW50Tm9kZUlkKTsK
ICAgICBpZiAoIWRvY3VtZW50KQpAQCAtMTA3NCw3ICsxMDc0LDcgQEAgdm9pZCBJbnNwZWN0b3JD
U1NBZ2VudDo6Z2V0TmFtZWRGbG93Q29sbGVjdGlvbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGludCBkb2MKICAgICBtX25hbWVkRmxvd0NvbGxlY3Rpb25zUmVxdWVzdGVkLmFkZChkb2N1bWVu
dE5vZGVJZCk7CiAKICAgICBWZWN0b3I8UmVmUHRyPFdlYktpdE5hbWVkRmxvdz4+IG5hbWVkRmxv
d3NWZWN0b3IgPSBkb2N1bWVudC0+bmFtZWRGbG93cygpLT5uYW1lZEZsb3dzKCk7Ci0gICAgUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+PiBuYW1l
ZEZsb3dzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz46
OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4+IG5hbWVkRmxvd3MgPSBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVk
Rmxvdz46OmNyZWF0ZSgpOwogCiAgICAgZm9yIChWZWN0b3I8UmVmUHRyPFdlYktpdE5hbWVkRmxv
dz4+OjppdGVyYXRvciBpdCA9IG5hbWVkRmxvd3NWZWN0b3IuYmVnaW4oKTsgaXQgIT0gbmFtZWRG
bG93c1ZlY3Rvci5lbmQoKTsgKytpdCkKICAgICAgICAgbmFtZWRGbG93cy0+YWRkSXRlbShidWls
ZE9iamVjdEZvck5hbWVkRmxvdyhlcnJvclN0cmluZywgaXQtPmdldCgpLCBkb2N1bWVudE5vZGVJ
ZCkpOwpAQCAtMTA4NywxNiArMTA4NywxNiBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzdGFy
dFNlbGVjdG9yUHJvZmlsZXIoRXJyb3JTdHJpbmcqKQogICAgIG1fY3VycmVudFNlbGVjdG9yUHJv
ZmlsZSA9IGFkb3B0UHRyKG5ldyBTZWxlY3RvclByb2ZpbGUoKSk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yQ1NTQWdlbnQ6OnN0b3BTZWxlY3RvclByb2ZpbGVyKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZT4mIHJlc3VsdCkKK3Zv
aWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnN0b3BTZWxlY3RvclByb2ZpbGVyKEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQ
cm9maWxlPiYgcmVzdWx0KQogewogICAgIHJlc3VsdCA9IHN0b3BTZWxlY3RvclByb2ZpbGVySW1w
bChlcnJvclN0cmluZywgdHJ1ZSk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6
U2VsZWN0b3JQcm9maWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6c3RvcFNlbGVjdG9yUHJvZmlsZXJJ
bXBsKEVycm9yU3RyaW5nKiwgYm9vbCBuZWVkUHJvZmlsZSkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+IEluc3BlY3RvckNTU0FnZW50Ojpz
dG9wU2VsZWN0b3JQcm9maWxlckltcGwoRXJyb3JTdHJpbmcqLCBib29sIG5lZWRQcm9maWxlKQog
ewogICAgIGlmICghbV9jdXJyZW50U2VsZWN0b3JQcm9maWxlKQogICAgICAgICByZXR1cm4gMDsK
LSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlPiByZXN1bHQ7Cisg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlPiBy
ZXN1bHQ7CiAgICAgaWYgKG1fZnJvbnRlbmREaXNwYXRjaGVyICYmIG5lZWRQcm9maWxlKQogICAg
ICAgICByZXN1bHQgPSBtX2N1cnJlbnRTZWxlY3RvclByb2ZpbGUtPnRvSW5zcGVjdG9yT2JqZWN0
KCk7CiAgICAgbV9jdXJyZW50U2VsZWN0b3JQcm9maWxlLmNsZWFyKCk7CkBAIC0xMTM3LDcgKzEx
MzcsNyBAQCBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUqIEluc3BlY3RvckNTU0Fn
ZW50Ojphc0luc3BlY3RvclN0eWxlU2hlZXQoRWxlbQogICAgICAgICAgICAgcmV0dXJuIDA7CiAK
ICAgICAgICAgU3RyaW5nIG5ld1N0eWxlU2hlZXRJZCA9IFN0cmluZzo6bnVtYmVyKG1fbGFzdFN0
eWxlU2hlZXRJZCsrKTsKLSAgICAgICAgUmVmUHRyPEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxp
bmVTdHlsZT4gaW5zcGVjdG9yU3R5bGVTaGVldCA9IEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxp
bmVTdHlsZTo6Y3JlYXRlKG1fZG9tQWdlbnQtPnBhZ2VBZ2VudCgpLCBuZXdTdHlsZVNoZWV0SWQs
IGVsZW1lbnQsIFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlJlZ3VsYXIsIHRo
aXMpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlPiBp
bnNwZWN0b3JTdHlsZVNoZWV0ID0gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpj
cmVhdGUobV9kb21BZ2VudC0+cGFnZUFnZW50KCksIG5ld1N0eWxlU2hlZXRJZCwgZWxlbWVudCwg
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpSZWd1bGFyLCB0
aGlzKTsKICAgICAgICAgbV9pZFRvSW5zcGVjdG9yU3R5bGVTaGVldC5zZXQobmV3U3R5bGVTaGVl
dElkLCBpbnNwZWN0b3JTdHlsZVNoZWV0KTsKICAgICAgICAgbV9ub2RlVG9JbnNwZWN0b3JTdHls
ZVNoZWV0LnNldChlbGVtZW50LCBpbnNwZWN0b3JTdHlsZVNoZWV0KTsKICAgICAgICAgcmV0dXJu
IGluc3BlY3RvclN0eWxlU2hlZXQuZ2V0KCk7CkBAIC0xMTY5LDcgKzExNjksNyBAQCBpbnQgSW5z
cGVjdG9yQ1NTQWdlbnQ6OmRvY3VtZW50Tm9kZVdpdGhSZXF1ZXN0ZWRGbG93c0lkKERvY3VtZW50
KiBkb2N1bWVudCkKICAgICByZXR1cm4gZG9jdW1lbnROb2RlSWQ7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yQ1NTQWdlbnQ6OmNvbGxlY3RTdHlsZVNoZWV0cyhDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0
LCBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRl
cj4qIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmNvbGxlY3RTdHlsZVNoZWV0cyhD
U1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+KiByZXN1bHQp
CiB7CiAgICAgSW5zcGVjdG9yU3R5bGVTaGVldCogaW5zcGVjdG9yU3R5bGVTaGVldCA9IGJpbmRT
dHlsZVNoZWV0KHN0YXRpY19jYXN0PENTU1N0eWxlU2hlZXQqPihzdHlsZVNoZWV0KSk7CiAgICAg
cmVzdWx0LT5hZGRJdGVtKGluc3BlY3RvclN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9yU3R5bGVT
aGVldEluZm8oKSk7CkBAIC0xMjQyLDcgKzEyNDIsNyBAQCBJbnNwZWN0b3JTdHlsZVNoZWV0KiBJ
bnNwZWN0b3JDU1NBZ2VudDo6dmlhSW5zcGVjdG9yU3R5bGVTaGVldChEb2N1bWVudCogZG9jdW1l
bgogICAgICAgICByZXR1cm4gMDsKIAogICAgIFN0cmluZyBpZCA9IFN0cmluZzo6bnVtYmVyKG1f
bGFzdFN0eWxlU2hlZXRJZCsrKTsKLSAgICBpbnNwZWN0b3JTdHlsZVNoZWV0ID0gSW5zcGVjdG9y
U3R5bGVTaGVldDo6Y3JlYXRlKG1fZG9tQWdlbnQtPnBhZ2VBZ2VudCgpLCBpZCwgY3NzU3R5bGVT
aGVldCwgVHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6SW5zcGVjdG9yLCBJbnNw
ZWN0b3JET01BZ2VudDo6ZG9jdW1lbnRVUkxTdHJpbmcoZG9jdW1lbnQpLCB0aGlzKTsKKyAgICBp
bnNwZWN0b3JTdHlsZVNoZWV0ID0gSW5zcGVjdG9yU3R5bGVTaGVldDo6Y3JlYXRlKG1fZG9tQWdl
bnQtPnBhZ2VBZ2VudCgpLCBpZCwgY3NzU3R5bGVTaGVldCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpJbnNwZWN0b3IsIEluc3BlY3RvckRPTUFnZW50Ojpk
b2N1bWVudFVSTFN0cmluZyhkb2N1bWVudCksIHRoaXMpOwogICAgIG1faWRUb0luc3BlY3RvclN0
eWxlU2hlZXQuc2V0KGlkLCBpbnNwZWN0b3JTdHlsZVNoZWV0KTsKICAgICBtX2Nzc1N0eWxlU2hl
ZXRUb0luc3BlY3RvclN0eWxlU2hlZXQuc2V0KGNzc1N0eWxlU2hlZXQsIGluc3BlY3RvclN0eWxl
U2hlZXQpOwogICAgIG1fZG9jdW1lbnRUb0luc3BlY3RvclN0eWxlU2hlZXQuc2V0KGRvY3VtZW50
LCBpbnNwZWN0b3JTdHlsZVNoZWV0KTsKQEAgLTEyNTksMjIgKzEyNTksMjIgQEAgSW5zcGVjdG9y
U3R5bGVTaGVldCogSW5zcGVjdG9yQ1NTQWdlbnQ6OmFzc2VydFN0eWxlU2hlZXRGb3JJZChFcnJv
clN0cmluZyogZXJyb3IKICAgICByZXR1cm4gaXQtPnZhbHVlLmdldCgpOwogfQogCi1UeXBlQnVp
bGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpFbnVtIEluc3BlY3RvckNTU0FnZW50OjpkZXRl
Y3RPcmlnaW4oQ1NTU3R5bGVTaGVldCogcGFnZVN0eWxlU2hlZXQsIERvY3VtZW50KiBvd25lckRv
Y3VtZW50KQorSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpF
bnVtIEluc3BlY3RvckNTU0FnZW50OjpkZXRlY3RPcmlnaW4oQ1NTU3R5bGVTaGVldCogcGFnZVN0
eWxlU2hlZXQsIERvY3VtZW50KiBvd25lckRvY3VtZW50KQogewotICAgIFR5cGVCdWlsZGVyOjpD
U1M6OlN0eWxlU2hlZXRPcmlnaW46OkVudW0gb3JpZ2luID0gVHlwZUJ1aWxkZXI6OkNTUzo6U3R5
bGVTaGVldE9yaWdpbjo6UmVndWxhcjsKKyAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
OlN0eWxlU2hlZXRPcmlnaW46OkVudW0gb3JpZ2luID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpSZWd1bGFyOwogICAgIGlmIChwYWdlU3R5bGVTaGVldCAm
JiAhcGFnZVN0eWxlU2hlZXQtPm93bmVyTm9kZSgpICYmIHBhZ2VTdHlsZVNoZWV0LT5ocmVmKCku
aXNFbXB0eSgpKQotICAgICAgICBvcmlnaW4gPSBUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0
T3JpZ2luOjpVc2VyQWdlbnQ7CisgICAgICAgIG9yaWdpbiA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6VXNlckFnZW50OwogICAgIGVsc2UgaWYgKHBhZ2VT
dHlsZVNoZWV0ICYmIHBhZ2VTdHlsZVNoZWV0LT5vd25lck5vZGUoKSAmJiBwYWdlU3R5bGVTaGVl
dC0+b3duZXJOb2RlKCktPm5vZGVOYW1lKCkgPT0gIiNkb2N1bWVudCIpCi0gICAgICAgIG9yaWdp
biA9IFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlVzZXI7CisgICAgICAgIG9y
aWdpbiA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6VXNl
cjsKICAgICBlbHNlIHsKICAgICAgICAgSW5zcGVjdG9yU3R5bGVTaGVldCogdmlhSW5zcGVjdG9y
U3R5bGVTaGVldEZvck93bmVyID0gdmlhSW5zcGVjdG9yU3R5bGVTaGVldChvd25lckRvY3VtZW50
LCBmYWxzZSk7CiAgICAgICAgIGlmICh2aWFJbnNwZWN0b3JTdHlsZVNoZWV0Rm9yT3duZXIgJiYg
cGFnZVN0eWxlU2hlZXQgPT0gdmlhSW5zcGVjdG9yU3R5bGVTaGVldEZvck93bmVyLT5wYWdlU3R5
bGVTaGVldCgpKQotICAgICAgICAgICAgb3JpZ2luID0gVHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVT
aGVldE9yaWdpbjo6SW5zcGVjdG9yOworICAgICAgICAgICAgb3JpZ2luID0gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpJbnNwZWN0b3I7CiAgICAgfQogICAg
IHJldHVybiBvcmlnaW47CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVs
ZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZShTdHlsZVJ1bGUqIHN0eWxl
UnVsZSwgU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKK1Bhc3NSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmpl
Y3RGb3JSdWxlKFN0eWxlUnVsZSogc3R5bGVSdWxlLCBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29s
dmVyKQogewogICAgIGlmICghc3R5bGVSdWxlKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEyODgs
NyArMTI4OCw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gSW5zcGVj
dG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZShTdHlsCiAgICAgcmV0dXJuIGluc3BlY3Rv
clN0eWxlU2hlZXQgPyBpbnNwZWN0b3JTdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclJ1bGUoY3Nz
b21XcmFwcGVyKSA6IDA7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVs
ZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZShDU1NTdHlsZVJ1bGUqIHJ1
bGUpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gSW5z
cGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZShDU1NTdHlsZVJ1bGUqIHJ1bGUpCiB7
CiAgICAgaWYgKCFydWxlKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEyOTgsMTUgKzEyOTgsMTUg
QEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiBJbnNwZWN0b3JDU1NBZ2Vu
dDo6YnVpbGRPYmplY3RGb3JSdWxlKENTU1MKICAgICByZXR1cm4gaW5zcGVjdG9yU3R5bGVTaGVl
dCA/IGluc3BlY3RvclN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9yUnVsZShydWxlKSA6IDA7CiB9
CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1
bGU+PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvclJ1bGVMaXN0KENTU1J1bGVMaXN0
KiBydWxlTGlzdCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPj4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1
aWxkQXJyYXlGb3JSdWxlTGlzdChDU1NSdWxlTGlzdCogcnVsZUxpc3QpCiB7Ci0gICAgUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPj4gcmVzdWx0ID0g
VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+OjpjcmVhdGUoKTsK
KyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NSdWxlPj4gcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPjo6Y3JlYXRlKCk7CiAg
ICAgaWYgKCFydWxlTGlzdCkKICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiAKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBzaXplID0gcnVsZUxpc3QtPmxlbmd0aCgpOyBpIDwgc2l6
ZTsgKytpKSB7CiAgICAgICAgIENTU1N0eWxlUnVsZSogcnVsZSA9IGFzQ1NTU3R5bGVSdWxlKHJ1
bGVMaXN0LT5pdGVtKGkpKTsKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1
bGU+IHJ1bGVPYmplY3QgPSBidWlsZE9iamVjdEZvclJ1bGUocnVsZSk7CisgICAgICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+IHJ1bGVPYmplY3QgPSBidWls
ZE9iamVjdEZvclJ1bGUocnVsZSk7CiAgICAgICAgIGlmICghcnVsZU9iamVjdCkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICByZXN1bHQtPmFkZEl0ZW0ocnVsZU9iamVjdCk7CkBAIC0x
MzE0LDE4ICsxMzE0LDE4IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpDU1M6OkNTU1J1bGU+PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpCiAgICAgcmV0dXJuIHJl
c3VsdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVC
dWlsZGVyOjpDU1M6OlJ1bGVNYXRjaD4+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9y
TWF0Y2hlZFJ1bGVMaXN0KGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBtYXRj
aGVkUnVsZXMsIFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIEVsZW1lbnQqIGVsZW1lbnQp
CitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6UnVsZU1hdGNoPj4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlG
b3JNYXRjaGVkUnVsZUxpc3QoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIG1h
dGNoZWRSdWxlcywgU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgRWxlbWVudCogZWxlbWVu
dCkKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlJ1
bGVNYXRjaD4+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpS
dWxlTWF0Y2g+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g+PiByZXN1bHQgPSBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
OlJ1bGVNYXRjaD46OmNyZWF0ZSgpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1h
dGNoZWRSdWxlcy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoIW1hdGNoZWRSdWxlc1tpXS0+
aXNTdHlsZVJ1bGUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBTdHlsZVJ1bGUq
IG1hdGNoZWRTdHlsZVJ1bGUgPSBzdGF0aWNfY2FzdDxTdHlsZVJ1bGUqPihtYXRjaGVkUnVsZXNb
aV0uZ2V0KCkpOwotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gcnVs
ZU9iamVjdCA9IGJ1aWxkT2JqZWN0Rm9yUnVsZShtYXRjaGVkU3R5bGVSdWxlLCBzdHlsZVJlc29s
dmVyKTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVs
ZT4gcnVsZU9iamVjdCA9IGJ1aWxkT2JqZWN0Rm9yUnVsZShtYXRjaGVkU3R5bGVSdWxlLCBzdHls
ZVJlc29sdmVyKTsKICAgICAgICAgaWYgKCFydWxlT2JqZWN0KQogICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4gbWF0Y2hpbmdTZWxl
Y3RvcnMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CisgICAgICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+PiBtYXRjaGluZ1NlbGVjdG9ycyA9
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PGludD46OmNyZWF0ZSgpOwogICAgICAgICBj
b25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCA9IG1hdGNoZWRTdHlsZVJ1bGUtPnNl
bGVjdG9yTGlzdCgpOwogICAgICAgICBsb25nIGluZGV4ID0gMDsKICAgICAgICAgZm9yIChjb25z
dCBDU1NTZWxlY3Rvciogc2VsZWN0b3IgPSBzZWxlY3Rvckxpc3QuZmlyc3QoKTsgc2VsZWN0b3I7
IHNlbGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHNlbGVjdG9yKSkgewpAQCAtMTMzNCw3
ICsxMzM0LDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNT
Uzo6UnVsZU1hdGNoPj4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmIKICAgICAgICAgICAgICAgICBtYXRj
aGluZ1NlbGVjdG9ycy0+YWRkSXRlbShpbmRleCk7CiAgICAgICAgICAgICArK2luZGV4OwogICAg
ICAgICB9Ci0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g+IG1hdGNo
ID0gVHlwZUJ1aWxkZXI6OkNTUzo6UnVsZU1hdGNoOjpjcmVhdGUoKQorICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g+IG1hdGNoID0gSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g6OmNyZWF0ZSgpCiAgICAgICAgICAgICAuc2V0
UnVsZShydWxlT2JqZWN0KQogICAgICAgICAgICAgLnNldE1hdGNoaW5nU2VsZWN0b3JzKG1hdGNo
aW5nU2VsZWN0b3JzKTsKICAgICAgICAgcmVzdWx0LT5hZGRJdGVtKG1hdGNoKTsKQEAgLTEzNDMs
NyArMTM0Myw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpD
U1M6OlJ1bGVNYXRjaD4+IEluc3BlY3RvckNTU0FnZW50OjpiCiAgICAgcmV0dXJuIHJlc3VsdC5y
ZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IElu
c3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNTdHlsZShFbGVtZW50KiBl
bGVtZW50KQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxl
PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5bGUoRWxlbWVu
dCogZWxlbWVudCkKIHsKICAgICBpZiAoIWVsZW1lbnQtPmlzU3R5bGVkRWxlbWVudCgpKQogICAg
ICAgICByZXR1cm4gMDsKQEAgLTEzNjAsMjIgKzEzNjAsMjIgQEAgUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQXR0
cmlidXQKICAgICByZXR1cm4gaW5zcGVjdG9yU3R5bGUtPmJ1aWxkT2JqZWN0Rm9yU3R5bGUoKTsK
IH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6UmVn
aW9uPj4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JSZWdpb25zKEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgUGFzc1JlZlB0cjxOb2RlTGlzdD4gcmVnaW9uTGlzdCwgaW50IGRvY3Vt
ZW50Tm9kZUlkKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbj4+IEluc3BlY3RvckNTU0FnZW50OjpidWls
ZEFycmF5Rm9yUmVnaW9ucyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFBhc3NSZWZQdHI8Tm9k
ZUxpc3Q+IHJlZ2lvbkxpc3QsIGludCBkb2N1bWVudE5vZGVJZCkKIHsKLSAgICBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbj4+IHJlZ2lvbnMgPSBUeXBl
QnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uPjo6Y3JlYXRlKCk7CisgICAg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6UmVnaW9uPj4gcmVnaW9ucyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uPjo6Y3JlYXRlKCk7CiAKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaW9uTGlzdC0+bGVuZ3RoKCk7ICsraSkgewotICAg
ICAgICBUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb246OlJlZ2lvbk92ZXJzZXQ6OkVudW0gcmVnaW9u
T3ZlcnNldDsKKyAgICAgICAgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb246OlJl
Z2lvbk92ZXJzZXQ6OkVudW0gcmVnaW9uT3ZlcnNldDsKIAogICAgICAgICBzd2l0Y2ggKHRvRWxl
bWVudChyZWdpb25MaXN0LT5pdGVtKGkpKS0+cmVuZGVyUmVnaW9uKCktPnJlZ2lvbk92ZXJzZXRT
dGF0ZSgpKSB7CiAgICAgICAgIGNhc2UgUmVnaW9uRml0OgotICAgICAgICAgICAgcmVnaW9uT3Zl
cnNldCA9IFR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbjo6UmVnaW9uT3ZlcnNldDo6Rml0OworICAg
ICAgICAgICAgcmVnaW9uT3ZlcnNldCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UmVn
aW9uOjpSZWdpb25PdmVyc2V0OjpGaXQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBSZWdpb25FbXB0eToKLSAgICAgICAgICAgIHJlZ2lvbk92ZXJzZXQgPSBUeXBlQnVpbGRlcjo6
Q1NTOjpSZWdpb246OlJlZ2lvbk92ZXJzZXQ6OkVtcHR5OworICAgICAgICAgICAgcmVnaW9uT3Zl
cnNldCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uOjpSZWdpb25PdmVyc2V0
OjpFbXB0eTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFJlZ2lvbk92ZXJzZXQ6
Ci0gICAgICAgICAgICByZWdpb25PdmVyc2V0ID0gVHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uOjpS
ZWdpb25PdmVyc2V0OjpPdmVyc2V0OworICAgICAgICAgICAgcmVnaW9uT3ZlcnNldCA9IEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uOjpSZWdpb25PdmVyc2V0OjpPdmVyc2V0Owog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUmVnaW9uVW5kZWZpbmVkOgogICAgICAg
ICAgICAgY29udGludWU7CkBAIC0xMzg0LDcgKzEzODQsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb24+PiBJbnNwZWN0b3JDU1NBZ2VudDo6
YnVpbAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uPiByZWdpb24gPSBUeXBlQnVpbGRlcjo6Q1NTOjpSZWdp
b246OmNyZWF0ZSgpCisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
OlJlZ2lvbj4gcmVnaW9uID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb246OmNy
ZWF0ZSgpCiAgICAgICAgICAgICAuc2V0UmVnaW9uT3ZlcnNldChyZWdpb25PdmVyc2V0KQogICAg
ICAgICAgICAgLy8gZG9jdW1lbnROb2RlSWQgd2FzIHByZXZpb3VzbHkgYXNzZXJ0ZWQKICAgICAg
ICAgICAgIC5zZXROb2RlSWQobV9kb21BZ2VudC0+cHVzaE5vZGVUb0Zyb250ZW5kKGVycm9yU3Ry
aW5nLCBkb2N1bWVudE5vZGVJZCwgcmVnaW9uTGlzdC0+aXRlbShpKSkpOwpAQCAtMTM5NSwxNyAr
MTM5NSwxNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NT
OjpSZWdpb24+PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbAogICAgIHJldHVybiByZWdpb25zLnJl
bGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+IElu
c3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvck5hbWVkRmxvdyhFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIFdlYktpdE5hbWVkRmxvdyogd2Via2l0TmFtZWRGbG93LCBpbnQgZG9jdW1lbnRO
b2RlSWQpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93
PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JOYW1lZEZsb3coRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBXZWJLaXROYW1lZEZsb3cqIHdlYmtpdE5hbWVkRmxvdywgaW50IGRvY3Vt
ZW50Tm9kZUlkKQogewogICAgIFJlZlB0cjxOb2RlTGlzdD4gY29udGVudExpc3QgPSB3ZWJraXRO
YW1lZEZsb3ctPmdldENvbnRlbnQoKTsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PGlu
dD4+IGNvbnRlbnQgPSBUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CisgICAgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PGludD4+IGNvbnRlbnQgPSBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKIAogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBjb250ZW50TGlzdC0+bGVuZ3RoKCk7ICsraSkgewogICAgICAgICAvLyBk
b2N1bWVudE5vZGVJZCB3YXMgcHJldmlvdXNseSBhc3NlcnRlZAogICAgICAgICBjb250ZW50LT5h
ZGRJdGVtKG1fZG9tQWdlbnQtPnB1c2hOb2RlVG9Gcm9udGVuZChlcnJvclN0cmluZywgZG9jdW1l
bnROb2RlSWQsIGNvbnRlbnRMaXN0LT5pdGVtKGkpKSk7CiAgICAgfQogCi0gICAgUmVmUHRyPFR5
cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4gbmFtZWRGbG93ID0gVHlwZUJ1aWxkZXI6OkNTUzo6
TmFtZWRGbG93OjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6Ok5hbWVkRmxvdz4gbmFtZWRGbG93ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpO
YW1lZEZsb3c6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXREb2N1bWVudE5vZGVJZChkb2N1bWVudE5v
ZGVJZCkKICAgICAgICAgLnNldE5hbWUod2Via2l0TmFtZWRGbG93LT5uYW1lKCkuc3RyaW5nKCkp
CiAgICAgICAgIC5zZXRPdmVyc2V0KHdlYmtpdE5hbWVkRmxvdy0+b3ZlcnNldCgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAppbmRleCBlZjA0MzU0Li4w
ZGNhNDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NT
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQu
aApAQCAtMTEyLDI2ICsxMTIsMjYgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVnaXN0ZXJOYW1l
ZEZsb3dDb250ZW50RWxlbWVudChEb2N1bWVudCosIFdlYktpdE5hbWVkRmxvdyosIE5vZGUqIGNv
bnRlbnRFbGVtZW50LCBOb2RlKiBuZXh0Q29udGVudEVsZW1lbnQgPSBudWxscHRyKTsKICAgICB2
b2lkIGRpZFVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChEb2N1bWVudCosIFdlYktp
dE5hbWVkRmxvdyosIE5vZGUqIGNvbnRlbnRFbGVtZW50KTsKIAotICAgIHZpcnR1YWwgdm9pZCBn
ZXRDb21wdXRlZFN0eWxlRm9yTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIFJlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3Bl
cnR5Pj4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5saW5lU3R5bGVzRm9yTm9kZShFcnJvclN0
cmluZyosIGludCBub2RlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4mIGlu
bGluZVN0eWxlLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiBhdHRyaWJ1dGVz
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcq
LCBpbnQgbm9kZUlkLCBjb25zdCBib29sKiBpbmNsdWRlUHNldWRvLCBjb25zdCBib29sKiBpbmNs
dWRlSW5oZXJpdGVkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6
OlJ1bGVNYXRjaD4+JiBtYXRjaGVkQ1NTUnVsZXMsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8
VHlwZUJ1aWxkZXI6OkNTUzo6UHNldWRvSWRNYXRjaGVzPj4mIHBzZXVkb0lkTWF0Y2hlcywgUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVu
dHJ5Pj4mIGluaGVyaXRlZEVudHJpZXMpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRBbGxTdHlsZVNo
ZWV0cyhFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4+JiBzdHlsZVNoZWV0SW5mb3MpOwotICAgIHZpcnR1
YWwgdm9pZCBnZXRTdHlsZVNoZWV0KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzdHlsZVNo
ZWV0SWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0Qm9keT4mIHJlc3Vs
dCk7CisgICAgdmlydHVhbCB2b2lkIGdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5n
KiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4mKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZ2V0SW5saW5lU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyosIGludCBu
b2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgaW5s
aW5lU3R5bGUsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYg
YXR0cmlidXRlcyk7CisgICAgdmlydHVhbCB2b2lkIGdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVy
cm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgYm9vbCogaW5jbHVkZVBzZXVkbywgY29uc3Qg
Ym9vbCogaW5jbHVkZUluaGVyaXRlZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFy
cmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UnVsZU1hdGNoPj4mIG1hdGNoZWRDU1NS
dWxlcywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6UHNldWRvSWRNYXRjaGVzPj4mIHBzZXVkb0lkTWF0Y2hlcywgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNT
Uzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4+JiBpbmhlcml0ZWRFbnRyaWVzKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZ2V0QWxsU3R5bGVTaGVldHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNo
ZWV0SGVhZGVyPj4mIHN0eWxlU2hlZXRJbmZvcyk7CisgICAgdmlydHVhbCB2b2lkIGdldFN0eWxl
U2hlZXQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEJvZHk+JiByZXN1bHQpOwog
ICAgIHZpcnR1YWwgdm9pZCBnZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYgc3R5bGVTaGVldElkLCBTdHJpbmcqIHJlc3VsdCk7CiAgICAgdmlydHVhbCB2b2lkIHNl
dFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQs
IGNvbnN0IFN0cmluZyYgdGV4dCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldFN0eWxlVGV4dChFcnJv
clN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIHN0eWxl
SWQsIGNvbnN0IFN0cmluZyYgdGV4dCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxl
PiYgcmVzdWx0KTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UHJvcGVydHlUZXh0KEVycm9yU3RyaW5n
KiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgc3R5bGVJZCwgaW50
IHByb3BlcnR5SW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBvdmVyd3JpdGUsIFJlZlB0
cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4mIHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2b2lk
IHRvZ2dsZVByb3BlcnR5KEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiYgc3R5bGVJZCwgaW50IHByb3BlcnR5SW5kZXgsIGJvb2wgZGlzYWJsZSwg
UmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KTsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0PiYgcnVsZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2b2lk
IGFkZFJ1bGUoRXJyb3JTdHJpbmcqLCBpbnQgY29udGV4dE5vZGVJZCwgY29uc3QgU3RyaW5nJiBz
ZWxlY3RvciwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+JiByZXN1bHQpOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwgUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+
PiYgcmVzdWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U3R5bGVUZXh0KEVycm9yU3RyaW5nKiwg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgc3R5bGVJZCwgY29uc3Qg
U3RyaW5nJiB0ZXh0LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHls
ZT4mIHJlc3VsdCk7CisgICAgdmlydHVhbCB2b2lkIHNldFByb3BlcnR5VGV4dChFcnJvclN0cmlu
ZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIHN0eWxlSWQsIGlu
dCBwcm9wZXJ0eUluZGV4LCBjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wgb3ZlcndyaXRlLCBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4mIHJlc3VsdCk7CisgICAg
dmlydHVhbCB2b2lkIHRvZ2dsZVByb3BlcnR5KEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgc3R5bGVJZCwgaW50IHByb3BlcnR5SW5kZXgsIGJv
b2wgZGlzYWJsZSwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+
JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCBzZXRSdWxlU2VsZWN0b3IoRXJyb3JTdHJpbmcq
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBydWxlSWQsIGNvbnN0
IFN0cmluZyYgc2VsZWN0b3IsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNT
U1J1bGU+JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCBhZGRSdWxlKEVycm9yU3RyaW5nKiwg
aW50IGNvbnRleHROb2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9p
ZCBnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJv
cGVydHlJbmZvPj4mIHJlc3VsdCk7CiAgICAgdmlydHVhbCB2b2lkIGZvcmNlUHNldWRvU3RhdGUo
RXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JBcnJheT4mIGZvcmNlZFBzZXVkb0NsYXNzZXMpOwotICAgIHZpcnR1YWwgdm9pZCBnZXROYW1l
ZEZsb3dDb2xsZWN0aW9uKEVycm9yU3RyaW5nKiwgaW50IGRvY3VtZW50Tm9kZUlkLCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4+JiByZXN1bHQp
OworICAgIHZpcnR1YWwgdm9pZCBnZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3RyaW5nKiwg
aW50IGRvY3VtZW50Tm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+PiYgcmVzdWx0KTsKIAogICAg
IHZpcnR1YWwgdm9pZCBzdGFydFNlbGVjdG9yUHJvZmlsZXIoRXJyb3JTdHJpbmcqKTsKLSAgICB2
aXJ0dWFsIHZvaWQgc3RvcFNlbGVjdG9yUHJvZmlsZXIoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlPiYpOworICAgIHZpcnR1YWwgdm9pZCBzdG9w
U2VsZWN0b3JQcm9maWxlcihFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZT4mKTsKIAotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlPiBzdG9wU2VsZWN0b3JQcm9maWxlckltcGwoRXJyb3JT
dHJpbmcqLCBib29sIG5lZWRQcm9maWxlKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlPiBzdG9wU2VsZWN0b3JQcm9maWxlckltcGwo
RXJyb3JTdHJpbmcqLCBib29sIG5lZWRQcm9maWxlKTsKICAgICB2b2lkIHdpbGxNYXRjaFJ1bGUo
U3R5bGVSdWxlKiwgSW5zcGVjdG9yQ1NTT01XcmFwcGVycyYsIERvY3VtZW50U3R5bGVTaGVldENv
bGxlY3Rpb24mKTsKICAgICB2b2lkIGRpZE1hdGNoUnVsZShib29sKTsKICAgICB2b2lkIHdpbGxQ
cm9jZXNzUnVsZShTdHlsZVJ1bGUqLCBTdHlsZVJlc29sdmVyJik7CkBAIC0xNTgsMjAgKzE1OCwy
MCBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSogYXNJ
bnNwZWN0b3JTdHlsZVNoZWV0KEVsZW1lbnQqIGVsZW1lbnQpOwogICAgIEVsZW1lbnQqIGVsZW1l
bnRGb3JJZChFcnJvclN0cmluZyosIGludCBub2RlSWQpOwogICAgIGludCBkb2N1bWVudE5vZGVX
aXRoUmVxdWVzdGVkRmxvd3NJZChEb2N1bWVudCopOwotICAgIHZvaWQgY29sbGVjdFN0eWxlU2hl
ZXRzKENTU1N0eWxlU2hlZXQqLCBUeXBlQnVpbGRlcjo6QXJyYXk8V2ViQ29yZTo6VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4qKTsKKyAgICB2b2lkIGNvbGxlY3RTdHlsZVNo
ZWV0cyhDU1NTdHlsZVNoZWV0KiwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPiopOwogCiAgICAgSW5z
cGVjdG9yU3R5bGVTaGVldCogYmluZFN0eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCopOwogICAgIElu
c3BlY3RvclN0eWxlU2hlZXQqIHZpYUluc3BlY3RvclN0eWxlU2hlZXQoRG9jdW1lbnQqLCBib29s
IGNyZWF0ZUlmQWJzZW50KTsKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBhc3NlcnRTdHlsZVNo
ZWV0Rm9ySWQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmKTsKLSAgICBUeXBlQnVpbGRlcjo6
Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpFbnVtIGRldGVjdE9yaWdpbihDU1NTdHlsZVNoZWV0KiBw
YWdlU3R5bGVTaGVldCwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQpOworICAgIEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6RW51bSBkZXRlY3RPcmlnaW4oQ1NT
U3R5bGVTaGVldCogcGFnZVN0eWxlU2hlZXQsIERvY3VtZW50KiBvd25lckRvY3VtZW50KTsKIAot
ICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gYnVpbGRPYmplY3RGb3JS
dWxlKFN0eWxlUnVsZSosIFN0eWxlUmVzb2x2ZXImKTsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9yUnVsZShDU1NTdHlsZVJ1bGUqKTsKLSAg
ICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxl
Pj4gYnVpbGRBcnJheUZvclJ1bGVMaXN0KENTU1J1bGVMaXN0Kik7Ci0gICAgUGFzc1JlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6UnVsZU1hdGNoPj4gYnVpbGRBcnJh
eUZvck1hdGNoZWRSdWxlTGlzdChjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYs
IFN0eWxlUmVzb2x2ZXImLCBFbGVtZW50Kik7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NTdHlsZT4gYnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5bGUoRWxlbWVudCopOwot
ICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lv
bj4+IGJ1aWxkQXJyYXlGb3JSZWdpb25zKEVycm9yU3RyaW5nKiwgUGFzc1JlZlB0cjxOb2RlTGlz
dD4sIGludCBkb2N1bWVudE5vZGVJZCk7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NT
OjpOYW1lZEZsb3c+IGJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KEVycm9yU3RyaW5nKiwgV2ViS2l0
TmFtZWRGbG93KiwgaW50IGRvY3VtZW50Tm9kZUlkKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gYnVpbGRPYmplY3RGb3JSdWxlKFN0eWxlUnVs
ZSosIFN0eWxlUmVzb2x2ZXImKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTUnVsZT4gYnVpbGRPYmplY3RGb3JSdWxlKENTU1N0eWxlUnVsZSopOworICAg
IFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NSdWxlPj4gYnVpbGRBcnJheUZvclJ1bGVMaXN0KENTU1J1bGVMaXN0
Kik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRjaD4+IGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVs
ZUxpc3QoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mLCBTdHlsZVJlc29sdmVy
JiwgRWxlbWVudCopOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NTdHlsZT4gYnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5bGUoRWxlbWVudCopOworICAg
IFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q1NTOjpSZWdpb24+PiBidWlsZEFycmF5Rm9yUmVnaW9ucyhFcnJvclN0cmluZyos
IFBhc3NSZWZQdHI8Tm9kZUxpc3Q+LCBpbnQgZG9jdW1lbnROb2RlSWQpOworICAgIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+IGJ1aWxkT2JqZWN0Rm9y
TmFtZWRGbG93KEVycm9yU3RyaW5nKiwgV2ViS2l0TmFtZWRGbG93KiwgaW50IGRvY3VtZW50Tm9k
ZUlkKTsKIAogICAgIC8vIEluc3BlY3RvckRPTUFnZW50OjpET01MaXN0ZW5lciBpbXBsZW1lbnRh
dGlvbgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVEb2N1bWVudChEb2N1bWVudCopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKaW5k
ZXggM2E2ZWU0Yy4uNTBlMzQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCkBAIC01MSwxMyArNTEsMTMgQEAKICNpbmNsdWRlICJT
Y3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgogCi11c2lu
ZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6QXJyYXk7Ci11c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRl
cjo6Q2FudmFzOjpSZXNvdXJjZUlkOwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkNhbnZh
czo6UmVzb3VyY2VJbmZvOwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVz
b3VyY2VTdGF0ZTsKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9n
OwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZDsKLXVzaW5n
IFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpGcmFtZUlkOwordXNpbmcgSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6QXJyYXk7Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52
YXM6OlJlc291cmNlSWQ7Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlJl
c291cmNlSW5mbzsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3Vy
Y2VTdGF0ZTsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2c7
Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQ7Cit1c2lu
ZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpGcmFtZUlkOwogCiB1c2luZyBuYW1l
c3BhY2UgSlNDOwogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmgKaW5kZXggYWEyNzgyZi4uNDc1N2Q5
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0Fn
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50
LmgKQEAgLTM1LDcgKzM1LDcgQEAKIAogI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVycy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCi0jaW5jbHVkZSAiSW5zcGVj
dG9yVHlwZUJ1aWxkZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCIK
ICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckFnZW50QmFzZS5o
IgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC04MSwxNSArODEsMTUgQEAgcHVibGljOgog
ICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCiAgICAgdmlydHVhbCB2b2lkIGVuYWJs
ZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7
Ci0gICAgdmlydHVhbCB2b2lkIGRyb3BUcmFjZUxvZyhFcnJvclN0cmluZyosIGNvbnN0IFR5cGVC
dWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJvcFRyYWNl
TG9nKEVycm9yU3RyaW5nKiwgY29uc3QgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpU
cmFjZUxvZ0lkJik7CiAgICAgdmlydHVhbCB2b2lkIGhhc1VuaW5zdHJ1bWVudGVkQ2FudmFzZXMo
RXJyb3JTdHJpbmcqLCBib29sKik7Ci0gICAgdmlydHVhbCB2b2lkIGNhcHR1cmVGcmFtZShFcnJv
clN0cmluZyosIGNvbnN0IFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpGcmFtZUlkKiwgVHlwZUJ1aWxk
ZXI6OkNhbnZhczo6VHJhY2VMb2dJZCopOwotICAgIHZpcnR1YWwgdm9pZCBzdGFydENhcHR1cmlu
ZyhFcnJvclN0cmluZyosIGNvbnN0IFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpGcmFtZUlkKiwgVHlw
ZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCopOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wQ2Fw
dHVyaW5nKEVycm9yU3RyaW5nKiwgY29uc3QgVHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJ
ZCYpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUcmFjZUxvZyhFcnJvclN0cmluZyosIGNvbnN0IFR5
cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQmLCBjb25zdCBpbnQqLCBjb25zdCBpbnQqLCBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2c+Jik7Ci0gICAgdmlydHVhbCB2b2lk
IHJlcGxheVRyYWNlTG9nKEVycm9yU3RyaW5nKiwgY29uc3QgVHlwZUJ1aWxkZXI6OkNhbnZhczo6
VHJhY2VMb2dJZCYsIGludCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlU3Rh
dGU+Jik7Ci0gICAgdmlydHVhbCB2b2lkIGdldFJlc291cmNlSW5mbyhFcnJvclN0cmluZyosIGNv
bnN0IFR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlSWQmLCBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkNhbnZhczo6UmVzb3VyY2VJbmZvPiYpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRSZXNvdXJjZVN0
YXRlKEVycm9yU3RyaW5nKiwgY29uc3QgVHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCYs
IGNvbnN0IFR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlSWQmLCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkNhbnZhczo6UmVzb3VyY2VTdGF0ZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FwdHVyZUZy
YW1lKEVycm9yU3RyaW5nKiwgY29uc3QgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6
RnJhbWVJZCosIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCopOwor
ICAgIHZpcnR1YWwgdm9pZCBzdGFydENhcHR1cmluZyhFcnJvclN0cmluZyosIGNvbnN0IEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkZyYW1lSWQqLCBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcENhcHR1cmlu
ZyhFcnJvclN0cmluZyosIGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJh
Y2VMb2dJZCYpOworICAgIHZpcnR1YWwgdm9pZCBnZXRUcmFjZUxvZyhFcnJvclN0cmluZyosIGNv
bnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCYsIGNvbnN0IGlu
dCosIGNvbnN0IGludCosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRy
YWNlTG9nPiYpOworICAgIHZpcnR1YWwgdm9pZCByZXBsYXlUcmFjZUxvZyhFcnJvclN0cmluZyos
IGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCYsIGludCwg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VTdGF0ZT4mKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVzb3VyY2VJbmZvKEVycm9yU3RyaW5nKiwgY29uc3QgSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJjZUlkJiwgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VJbmZvPiYpOworICAgIHZpcnR1YWwgdm9p
ZCBnZXRSZXNvdXJjZVN0YXRlKEVycm9yU3RyaW5nKiwgY29uc3QgSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q2FudmFzOjpUcmFjZUxvZ0lkJiwgY29uc3QgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q2FudmFzOjpSZXNvdXJjZUlkJiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZh
czo6UmVzb3VyY2VTdGF0ZT4mKTsKIAogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JDYW52YXNBZ2Vu
dChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmNwcAppbmRleCBmNzQzYTU0Li5hOWU1OWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTQyMyw3ICs0MjMsNyBAQCBFbGVtZW50
KiBJbnNwZWN0b3JET01BZ2VudDo6YXNzZXJ0RWRpdGFibGVFbGVtZW50KEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgaW50CiAgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6OmdldERvY3VtZW50KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgUmVmUHRyPFR5
cGVCdWlsZGVyOjpET006Ok5vZGU+JiByb290KQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0
RG9jdW1lbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6RE9NOjpOb2RlPiYgcm9vdCkKIHsKICAgICBtX2RvY3VtZW50UmVxdWVzdGVkID0g
dHJ1ZTsKIApAQCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hD
aGlsZE5vZGVzVG9Gcm9udGVuZChpbnQgbm9kZUlkLCBpbnQgZGVwdGgpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpE
T006Ok5vZGU+PiBjaGlsZHJlbiA9IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihub2Rl
LCBkZXB0aCwgbm9kZU1hcCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFy
cmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4+IGNoaWxkcmVuID0gYnVpbGRB
cnJheUZvckNvbnRhaW5lckNoaWxkcmVuKG5vZGUsIGRlcHRoLCBub2RlTWFwKTsKICAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlci0+c2V0Q2hpbGROb2Rlcyhub2RlSWQsIGNoaWxkcmVuLnJlbGVhc2Uo
KSk7CiB9CiAKQEAgLTU0MSw3ICs1NDEsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpxdWVy
eVNlbGVjdG9yKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29ucwogICAg
ICAgICAqZWxlbWVudElkID0gcHVzaE5vZGVQYXRoVG9Gcm9udGVuZChlbGVtZW50LmdldCgpKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cXVlcnlTZWxlY3RvckFsbChFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PGludD4+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpxdWVyeVNlbGVjdG9yQWxsKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJ
ZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxpbnQ+PiYgcmVzdWx0KQogewogICAgIE5vZGUqIG5vZGUgPSBhc3NlcnROb2RlKGVy
cm9yU3RyaW5nLCBub2RlSWQpOwogICAgIGlmICghbm9kZSkKQEAgLTU1OCw3ICs1NTgsNyBAQCB2
b2lkIEluc3BlY3RvckRPTUFnZW50OjpxdWVyeVNlbGVjdG9yQWxsKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgaW50IG5vZGVJZCwgYwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcmVz
dWx0ID0gVHlwZUJ1aWxkZXI6OkFycmF5PGludD46OmNyZWF0ZSgpOworICAgIHJlc3VsdCA9IElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PGludD46OmNyZWF0ZSgpOwogCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG5vZGVzLT5sZW5ndGgoKTsgKytpKQogICAgICAgICByZXN1bHQt
PmFkZEl0ZW0ocHVzaE5vZGVQYXRoVG9Gcm9udGVuZChub2Rlcy0+aXRlbShpKSkpOwpAQCAtNTg5
LDcgKzU4OSw3IEBAIGludCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQYXRoVG9Gcm9udGVu
ZChOb2RlKiBub2RlVG9QdXNoKQogICAgICAgICAgICAgT3duUHRyPE5vZGVUb0lkTWFwPiBuZXdN
YXAgPSBhZG9wdFB0cihuZXcgTm9kZVRvSWRNYXApOwogICAgICAgICAgICAgZGFuZ2xpbmdNYXAg
PSBuZXdNYXAuZ2V0KCk7CiAgICAgICAgICAgICBtX2RhbmdsaW5nTm9kZVRvSWRNYXBzLmFwcGVu
ZChuZXdNYXAucmVsZWFzZSgpKTsKLSAgICAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJy
YXk8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4+IGNoaWxkcmVuID0gVHlwZUJ1aWxkZXI6OkFycmF5
PFR5cGVCdWlsZGVyOjpET006Ok5vZGU+OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006
Ok5vZGU+PiBjaGlsZHJlbiA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT46OmNyZWF0ZSgpOwogICAgICAgICAgICAgY2hpbGRy
ZW4tPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JOb2RlKG5vZGUsIDAsIGRhbmdsaW5nTWFwKSk7CiAg
ICAgICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+c2V0Q2hpbGROb2RlcygwLCBjaGlsZHJl
bik7CiAgICAgICAgICAgICBicmVhazsKQEAgLTgxNiw5ICs4MTYsOSBAQCB2b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpzZXROb2RlVmFsdWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9k
ZUlkLCBjb25zdAogICAgIG1fZG9tRWRpdG9yLT5yZXBsYWNlV2hvbGVUZXh0KHRvVGV4dChub2Rl
KSwgdmFsdWUsIGVycm9yU3RyaW5nKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0
RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJ
ZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxU
eXBlQnVpbGRlcjo6RE9NOjpFdmVudExpc3RlbmVyPj4mIGxpc3RlbmVyc0FycmF5KQordm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6Z2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRP
TTo6RXZlbnRMaXN0ZW5lcj4+JiBsaXN0ZW5lcnNBcnJheSkKIHsKLSAgICBsaXN0ZW5lcnNBcnJh
eSA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RE9NOjpFdmVudExpc3RlbmVyPjo6
Y3JlYXRlKCk7CisgICAgbGlzdGVuZXJzQXJyYXkgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpB
cnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI+OjpjcmVhdGUo
KTsKICAgICBOb2RlKiBub2RlID0gYXNzZXJ0Tm9kZShlcnJvclN0cmluZywgbm9kZUlkKTsKICAg
ICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybjsKQEAgLTkyNCw3ICs5MjQsNyBAQCB2b2lkIElu
c3BlY3RvckRPTUFnZW50OjpwZXJmb3JtU2VhcmNoKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW5nJiB3aAogICAgICpyZXN1bHRDb3VudCA9IHJlc3VsdHNWZWN0b3Iuc2l6ZSgp
OwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRTZWFyY2hSZXN1bHRzKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCwgaW50IGZyb21JbmRleCwg
aW50IHRvSW5kZXgsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4mIG5vZGVJZHMpCit2
b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRTZWFyY2hSZXN1bHRzKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCwgaW50IGZyb21JbmRleCwgaW50IHRvSW5k
ZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+PiYgbm9kZUlkcykK
IHsKICAgICBTZWFyY2hSZXN1bHRzOjppdGVyYXRvciBpdCA9IG1fc2VhcmNoUmVzdWx0cy5maW5k
KHNlYXJjaElkKTsKICAgICBpZiAoaXQgPT0gbV9zZWFyY2hSZXN1bHRzLmVuZCgpKSB7CkBAIC05
MzgsNyArOTM4LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0U2VhcmNoUmVzdWx0cyhF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIG5vZGVJZHMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7
CisgICAgbm9kZUlkcyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PGludD46OmNyZWF0
ZSgpOwogICAgIGZvciAoaW50IGkgPSBmcm9tSW5kZXg7IGkgPCB0b0luZGV4OyArK2kpCiAgICAg
ICAgIG5vZGVJZHMtPmFkZEl0ZW0ocHVzaE5vZGVQYXRoVG9Gcm9udGVuZCgoaXQtPnZhbHVlKVtp
XS5nZXQoKSkpOwogfQpAQCAtMTIxNSw3ICsxMjE1LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6c2V0RmlsZUlucHV0RmlsZXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlk
LAogICAgIGVsZW1lbnQtPnNldEZpbGVzKGZpbGVMaXN0KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6cmVzb2x2ZU5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlk
LCBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJl
c29sdmVOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgU3Ry
aW5nKiBjb25zdCBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCkKIHsKICAgICBTdHJpbmcgb2JqZWN0R3JvdXBO
YW1lID0gb2JqZWN0R3JvdXAgPyAqb2JqZWN0R3JvdXAgOiAiIjsKICAgICBOb2RlKiBub2RlID0g
bm9kZUZvcklkKG5vZGVJZCk7CkBAIC0xMjIzLDcgKzEyMjMsNyBAQCB2b2lkIEluc3BlY3RvckRP
TUFnZW50OjpyZXNvbHZlTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQs
IGNvbnN0CiAgICAgICAgICplcnJvclN0cmluZyA9ICJObyBub2RlIHdpdGggZ2l2ZW4gaWQgZm91
bmQiOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0PiBvYmplY3QgPSByZXNvbHZlTm9kZShub2RlLCBvYmplY3RHcm91
cE5hbWUpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+IG9iamVjdCA9IHJlc29sdmVOb2RlKG5vZGUsIG9iamVjdEdyb3VwTmFtZSk7CiAg
ICAgaWYgKCFvYmplY3QpIHsKICAgICAgICAgKmVycm9yU3RyaW5nID0gIk5vZGUgd2l0aCBnaXZl
biBpZCBkb2VzIG5vdCBiZWxvbmcgdG8gdGhlIGRvY3VtZW50IjsKICAgICAgICAgcmV0dXJuOwpA
QCAtMTIzMSw3ICsxMjMxLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cmVzb2x2ZU5vZGUo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdAogICAgIHJlc3VsdCA9
IG9iamVjdDsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0QXR0cmlidXRlcyhFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJy
YXk8U3RyaW5nPj4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldEF0dHJpYnV0
ZXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4mIHJlc3VsdCkKIHsKICAgICBFbGVtZW50KiBl
bGVtZW50ID0gYXNzZXJ0RWxlbWVudChlcnJvclN0cmluZywgbm9kZUlkKTsKICAgICBpZiAoIWVs
ZW1lbnQpCkBAIC0xMjYzLDcgKzEyNjMsNyBAQCBzdGF0aWMgU3RyaW5nIGRvY3VtZW50QmFzZVVS
TFN0cmluZyhEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgcmV0dXJuIGRvY3VtZW50LT5jb21wbGV0
ZVVSTCgiIikuc3RyaW5nKCk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9k
ZT4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiBub2RlLCBpbnQg
ZGVwdGgsIE5vZGVUb0lkTWFwKiBub2Rlc01hcCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6RE9NOjpOb2RlPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JOb2Rl
KE5vZGUqIG5vZGUsIGludCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKQogewogICAgIGlu
dCBpZCA9IGJpbmQobm9kZSwgbm9kZXNNYXApOwogICAgIFN0cmluZyBub2RlTmFtZTsKQEAgLTEy
OTIsNyArMTI5Miw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4gSW5zcGVj
dG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiBuCiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiB2YWx1ZSA9IFR5cGVC
dWlsZGVyOjpET006Ok5vZGU6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkRPTTo6Tm9kZT4gdmFsdWUgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5v
ZGU6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXROb2RlSWQoaWQpCiAgICAgICAgIC5zZXROb2RlVHlw
ZShzdGF0aWNfY2FzdDxpbnQ+KG5vZGUtPm5vZGVUeXBlKCkpKQogICAgICAgICAuc2V0Tm9kZU5h
bWUobm9kZU5hbWUpCkBAIC0xMzAyLDcgKzEzMDIsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVy
OjpET006Ok5vZGU+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvck5vZGUoTm9kZSog
bgogICAgIGlmIChub2RlLT5pc0NvbnRhaW5lck5vZGUoKSkgewogICAgICAgICBpbnQgbm9kZUNv
dW50ID0gaW5uZXJDaGlsZE5vZGVDb3VudChub2RlKTsKICAgICAgICAgdmFsdWUtPnNldENoaWxk
Tm9kZUNvdW50KG5vZGVDb3VudCk7Ci0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8
VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4+IGNoaWxkcmVuID0gYnVpbGRBcnJheUZvckNvbnRhaW5l
ckNoaWxkcmVuKG5vZGUsIGRlcHRoLCBub2Rlc01hcCk7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+
PiBjaGlsZHJlbiA9IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihub2RlLCBkZXB0aCwg
bm9kZXNNYXApOwogICAgICAgICBpZiAoY2hpbGRyZW4tPmxlbmd0aCgpID4gMCkKICAgICAgICAg
ICAgIHZhbHVlLT5zZXRDaGlsZHJlbihjaGlsZHJlbi5yZWxlYXNlKCkpOwogICAgIH0KQEAgLTEz
MjEsNyArMTMyMSw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4gSW5zcGVj
dG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiBuCiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoU2hhZG93Um9vdCogcm9vdCA9IGVsZW1lbnQtPnNoYWRvd1Jvb3QoKSkgewotICAg
ICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RE9NOjpOb2Rl
Pj4gc2hhZG93Um9vdHMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9k
ZT46OmNyZWF0ZSgpOworICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4+IHNoYWRvd1Jvb3RzID0g
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9N
OjpOb2RlPjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBzaGFkb3dSb290cy0+YWRkSXRlbShidWls
ZE9iamVjdEZvck5vZGUocm9vdCwgMCwgbm9kZXNNYXApKTsKICAgICAgICAgICAgIHZhbHVlLT5z
ZXRTaGFkb3dSb290cyhzaGFkb3dSb290cyk7CiAgICAgICAgIH0KQEAgLTEzNDksOSArMTM0OSw5
IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4gSW5zcGVjdG9yRE9NQWdlbnQ6
OmJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiBuCiAgICAgcmV0dXJuIHZhbHVlLnJlbGVhc2UoKTsK
IH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gSW5zcGVjdG9yRE9N
QWdlbnQ6OmJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmlidXRlcyhFbGVtZW50KiBlbGVtZW50KQor
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBJbnNwZWN0
b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckVsZW1lbnRBdHRyaWJ1dGVzKEVsZW1lbnQqIGVsZW1l
bnQpCiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBhdHRyaWJ1dGVz
VmFsdWUgPSBUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IGF0dHJpYnV0ZXNWYWx1ZSA9
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwogICAgIC8v
IEdvIHRocm91Z2ggYWxsIGF0dHJpYnV0ZXMgYW5kIHNlcmlhbGl6ZSB0aGVtLgogICAgIGlmICgh
ZWxlbWVudC0+aGFzQXR0cmlidXRlcygpKQogICAgICAgICByZXR1cm4gYXR0cmlidXRlc1ZhbHVl
LnJlbGVhc2UoKTsKQEAgLTEzNjUsOSArMTM2NSw5IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6
OkFycmF5PFN0cmluZz4+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yRWxlbWVudEF0
CiAgICAgcmV0dXJuIGF0dHJpYnV0ZXNWYWx1ZS5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpET006Ok5vZGU+PiBJbnNwZWN0b3JET01B
Z2VudDo6YnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKE5vZGUqIGNvbnRhaW5lciwgaW50
IGRlcHRoLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4+IEluc3Bl
Y3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4oTm9kZSogY29udGFp
bmVyLCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFwKiBub2Rlc01hcCkKIHsKLSAgICBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpET006Ok5vZGU+PiBjaGlsZHJlbiA9IFR5cGVC
dWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPjo6Y3JlYXRlKCk7CisgICAgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkRPTTo6Tm9kZT4+IGNoaWxkcmVuID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPjo6Y3JlYXRlKCk7CiAgICAgaWYgKGRlcHRo
ID09IDApIHsKICAgICAgICAgLy8gU3BlY2lhbC1jYXNlIHRoZSBvbmx5IHRleHQgY2hpbGQgLSBw
cmV0ZW5kIHRoYXQgY29udGFpbmVyJ3MgY2hpbGRyZW4gaGF2ZSBiZWVuIHJlcXVlc3RlZC4KICAg
ICAgICAgTm9kZSogZmlyc3RDaGlsZCA9IGNvbnRhaW5lci0+Zmlyc3RDaGlsZCgpOwpAQCAtMTM4
OSw3ICsxMzg5LDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6
OkRPTTo6Tm9kZT4+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEEKICAgICByZXR1cm4gY2hpbGRy
ZW4ucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlz
dGVuZXI+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIoY29u
c3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImIHJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLCBjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nKiBvYmpl
Y3RHcm91cElkKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006OkV2ZW50
TGlzdGVuZXI+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIo
Y29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImIHJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLCBj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nKiBv
YmplY3RHcm91cElkKQogewogICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVy
ID0gcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIubGlzdGVuZXI7CiAKQEAgLTE0MTcsNyArMTQxNyw3
IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gSW5zcGVjdG9y
RE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRXZlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gdmFsdWUgPSBUeXBlQnVpbGRlcjo6
RE9NOjpFdmVudExpc3RlbmVyOjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI+IHZhbHVlID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6RE9NOjpFdmVudExpc3RlbmVyOjpjcmVhdGUoKQogICAgICAgICAuc2V0VHlwZShldmVudFR5
cGUpCiAgICAgICAgIC5zZXRVc2VDYXB0dXJlKHJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLnVzZUNh
cHR1cmUpCiAgICAgICAgIC5zZXRJc0F0dHJpYnV0ZShldmVudExpc3RlbmVyLT5pc0F0dHJpYnV0
ZSgpKQpAQCAtMTQyOSw3ICsxNDI5LDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpF
dmVudExpc3RlbmVyPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JFdmUKICAgICAg
ICAgICAgIHZhbHVlLT5zZXRIYW5kbGVyKGluamVjdGVkU2NyaXB0LndyYXBPYmplY3QoU2NyaXB0
VmFsdWUoc3RhdGUtPnZtKCksIGhhbmRsZXIpLCAqb2JqZWN0R3JvdXBJZCkpOwogICAgIH0KICAg
ICBpZiAoIXNjcmlwdElELmlzTnVsbCgpKSB7Ci0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6
RGVidWdnZXI6OkxvY2F0aW9uPiBsb2NhdGlvbiA9IFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9j
YXRpb246OmNyZWF0ZSgpCisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpE
ZWJ1Z2dlcjo6TG9jYXRpb24+IGxvY2F0aW9uID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVi
dWdnZXI6OkxvY2F0aW9uOjpjcmVhdGUoKQogICAgICAgICAgICAgLnNldFNjcmlwdElkKHNjcmlw
dElEKQogICAgICAgICAgICAgLnNldExpbmVOdW1iZXIobGluZU51bWJlcik7CiAgICAgICAgIHZh
bHVlLT5zZXRMb2NhdGlvbihsb2NhdGlvbi5yZWxlYXNlKCkpOwpAQCAtMTUxMiw3ICsxNTEyLDcg
QEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkQ29tbWl0TG9hZChEb2N1bWVudCogZG9jdW1l
bnQpCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmNoaWxkTm9kZVJlbW92ZWQocGFyZW50SWQs
IGZyYW1lT3duZXJJZCk7CiAgICAgdW5iaW5kKGZyYW1lT3duZXIsICZtX2RvY3VtZW50Tm9kZVRv
SWRNYXApOwogCi0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpET006Ok5vZGU+IHZhbHVlID0gYnVp
bGRPYmplY3RGb3JOb2RlKGZyYW1lT3duZXIsIDAsICZtX2RvY3VtZW50Tm9kZVRvSWRNYXApOwor
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+IHZhbHVlID0gYnVp
bGRPYmplY3RGb3JOb2RlKGZyYW1lT3duZXIsIDAsICZtX2RvY3VtZW50Tm9kZVRvSWRNYXApOwog
ICAgIE5vZGUqIHByZXZpb3VzU2libGluZyA9IGlubmVyUHJldmlvdXNTaWJsaW5nKGZyYW1lT3du
ZXIpOwogICAgIGludCBwcmV2SWQgPSBwcmV2aW91c1NpYmxpbmcgPyBtX2RvY3VtZW50Tm9kZVRv
SWRNYXAuZ2V0KHByZXZpb3VzU2libGluZykgOiAwOwogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVy
LT5jaGlsZE5vZGVJbnNlcnRlZChwYXJlbnRJZCwgcHJldklkLCB2YWx1ZS5yZWxlYXNlKCkpOwpA
QCAtMTU0Miw3ICsxNTQyLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkSW5zZXJ0RE9N
Tm9kZShOb2RlKiBub2RlKQogICAgICAgICAvLyBDaGlsZHJlbiBoYXZlIGJlZW4gcmVxdWVzdGVk
IC0+IHJldHVybiB2YWx1ZSBvZiBhIG5ldyBjaGlsZC4KICAgICAgICAgTm9kZSogcHJldlNpYmxp
bmcgPSBpbm5lclByZXZpb3VzU2libGluZyhub2RlKTsKICAgICAgICAgaW50IHByZXZJZCA9IHBy
ZXZTaWJsaW5nID8gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldChwcmV2U2libGluZykgOiAwOwot
ICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4gdmFsdWUgPSBidWlsZE9iamVj
dEZvck5vZGUobm9kZSwgMCwgJm1fZG9jdW1lbnROb2RlVG9JZE1hcCk7CisgICAgICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+IHZhbHVlID0gYnVpbGRPYmplY3RG
b3JOb2RlKG5vZGUsIDAsICZtX2RvY3VtZW50Tm9kZVRvSWRNYXApOwogICAgICAgICBtX2Zyb250
ZW5kRGlzcGF0Y2hlci0+Y2hpbGROb2RlSW5zZXJ0ZWQocGFyZW50SWQsIHByZXZJZCwgdmFsdWUu
cmVsZWFzZSgpKTsKICAgICB9CiB9CkBAIC0xNjA3LDcgKzE2MDcsNyBAQCB2b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpkaWRSZW1vdmVET01BdHRyKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEF0b21p
Y1N0cmluZyYgbgogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzdHlsZUF0dHJpYnV0ZUludmFs
aWRhdGVkKGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGVsZW1lbnRzKQogewotICAgIFJlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4gbm9kZUlkcyA9IFR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+
OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8aW50
Pj4gbm9kZUlkcyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PGludD46OmNyZWF0ZSgp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBlbGVtZW50cy5zaXplKCk7IGkgPCBz
aXplOyArK2kpIHsKICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IGVsZW1lbnRzLmF0KGkpOwog
ICAgICAgICBpbnQgaWQgPSBib3VuZE5vZGVJZChlbGVtZW50KTsKQEAgLTE3MzIsNyArMTczMiw3
IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlQnlCYWNrZW5kSWRUb0Zyb250ZW5k
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1
aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5zcGVjdG9yRE9NQWdlbnQ6OnJlc29sdmVO
b2RlKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApCitQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5zcGVjdG9yRE9N
QWdlbnQ6OnJlc29sdmVOb2RlKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAp
CiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlm
ICghZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5o
CmluZGV4IDU0MWY4OTMuLjk1ZWRlMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5oCkBAIC0xMjIsOCArMTIyLDggQEAgcHVibGljOgogCiAgICAgLy8g
TWV0aG9kcyBjYWxsZWQgZnJvbSB0aGUgZnJvbnRlbmQgZm9yIERPTSBub2RlcyBpbnNwZWN0aW9u
LgogICAgIHZpcnR1YWwgdm9pZCBxdWVyeVNlbGVjdG9yKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJ
ZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIGludCogZWxlbWVudElkKTsKLSAgICB2aXJ0dWFs
IHZvaWQgcXVlcnlTZWxlY3RvckFsbChFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0
cmluZyYgc2VsZWN0b3JzLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PGludD4+JiByZXN1bHQp
OwotICAgIHZpcnR1YWwgdm9pZCBnZXREb2N1bWVudChFcnJvclN0cmluZyosIFJlZlB0cjxUeXBl
QnVpbGRlcjo6RE9NOjpOb2RlPiYgcm9vdCk7CisgICAgdmlydHVhbCB2b2lkIHF1ZXJ5U2VsZWN0
b3JBbGwoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PGludD4+JiByZXN1bHQpOworICAg
IHZpcnR1YWwgdm9pZCBnZXREb2N1bWVudChFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+JiByb290KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dENoaWxkTm9kZXMoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBpbnQqIGRlcHRoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0QXR0cmlidXRlVmFsdWUoRXJyb3JTdHJpbmcqLCBpbnQgZWxl
bWVudElkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRBdHRyaWJ1dGVzQXNUZXh0KEVycm9yU3RyaW5nKiwgaW50IGVsZW1lbnRJ
ZCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcqIG5hbWUpOwpAQCAtMTMzLDEyICsx
MzMsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRPdXRlckhUTUwoRXJyb3JTdHJp
bmcqLCBpbnQgbm9kZUlkLCBXVEY6OlN0cmluZyogb3V0ZXJIVE1MKTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0T3V0ZXJIVE1MKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBv
dXRlckhUTUwpOwogICAgIHZpcnR1YWwgdm9pZCBzZXROb2RlVmFsdWUoRXJyb3JTdHJpbmcqLCBp
bnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0RXZl
bnRMaXN0ZW5lcnNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgV1RGOjpT
dHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVy
OjpET006OkV2ZW50TGlzdGVuZXI+PiYgbGlzdGVuZXJzQXJyYXkpOworICAgIHZpcnR1YWwgdm9p
ZCBnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25z
dCBXVEY6OlN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI+PiYgbGlz
dGVuZXJzQXJyYXkpOwogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtU2VhcmNoKEVycm9yU3RyaW5n
KiwgY29uc3QgU3RyaW5nJiB3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5LCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JBcnJheT4qIG5vZGVJZHMsIFN0cmluZyogc2VhcmNoSWQsIGludCog
cmVzdWx0Q291bnQpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTZWFyY2hSZXN1bHRzKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCwgaW50IGZyb21JbmRleCwgaW50IHRvSW5kZXgs
IFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0
U2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2VhcmNoSWQsIGludCBm
cm9tSW5kZXgsIGludCB0b0luZGV4LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8aW50Pj4mKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY2FyZFNlYXJjaFJlc3VsdHMoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIHNlYXJjaElkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2
ZU5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3Vw
LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCk7Ci0g
ICAgdmlydHVhbCB2b2lkIGdldEF0dHJpYnV0ZXMoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+JiByZXN1bHQpOworICAgIHZpcnR1YWwg
dm9pZCByZXNvbHZlTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyog
b2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCBnZXRBdHRyaWJ1dGVzKEVycm9y
U3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5
PFN0cmluZz4+JiByZXN1bHQpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnNwZWN0TW9kZUVuYWJs
ZWQoRXJyb3JTdHJpbmcqLCBib29sIGVuYWJsZWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdD4qIGhpZ2hsaWdodENvbmZpZyk7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVl
c3ROb2RlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgaW50KiBub2RlSWQp
OwogICAgIHZpcnR1YWwgdm9pZCBwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIHBhdGgsIGludCogbm9kZUlkKTsKQEAgLTE4Niw3ICsxODYsNyBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgU3RyaW5nIGRvY3VtZW50VVJMU3RyaW5nKERvY3VtZW50Kik7
CiAKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHJl
c29sdmVOb2RlKE5vZGUqLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKTsKKyAgICBQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gcmVzb2x2
ZU5vZGUoTm9kZSosIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApOwogICAgIGJvb2wgaGFuZGxl
TW91c2VQcmVzcygpOwogICAgIGJvb2wgaGFuZGxlVG91Y2hFdmVudChOb2RlKik7CiAgICAgdm9p
ZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiwgdW5zaWduZWQg
bW9kaWZpZXJGbGFncyk7CkBAIC0yMzIsMTAgKzIzMiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQg
dXBkYXRlU3VidHJlZUJyZWFrcG9pbnRzKE5vZGUqIHJvb3QsIHVpbnQzMl90IHJvb3RNYXNrLCBi
b29sIHZhbHVlKTsKICAgICB2b2lkIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQoTm9kZSogdGFyZ2V0
LCBpbnQgYnJlYWtwb2ludFR5cGUsIGJvb2wgaW5zZXJ0aW9uLCBQYXNzUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0PiBkZXNjcmlwdGlvbik7CiAKLSAgICBQYXNzUmVmUHRyPFR5cGVC
dWlsZGVyOjpET006Ok5vZGU+IGJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiwgaW50IGRlcHRoLCBO
b2RlVG9JZE1hcCopOwotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+
IGJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmlidXRlcyhFbGVtZW50Kik7Ci0gICAgUGFzc1JlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4+IGJ1aWxkQXJyYXlG
b3JDb250YWluZXJDaGlsZHJlbihOb2RlKiBjb250YWluZXIsIGludCBkZXB0aCwgTm9kZVRvSWRN
YXAqIG5vZGVzTWFwKTsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlz
dGVuZXI+IGJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihjb25zdCBSZWdpc3RlcmVkRXZlbnRM
aXN0ZW5lciYsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBOb2RlKiwgY29uc3QgU3Ry
aW5nKiBvYmplY3RHcm91cElkKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkRPTTo6Tm9kZT4gYnVpbGRPYmplY3RGb3JOb2RlKE5vZGUqLCBpbnQgZGVwdGgsIE5vZGVU
b0lkTWFwKik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxT
dHJpbmc+PiBidWlsZEFycmF5Rm9yRWxlbWVudEF0dHJpYnV0ZXMoRWxlbWVudCopOworICAgIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6RE9NOjpOb2RlPj4gYnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKE5vZGUqIGNv
bnRhaW5lciwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApOworICAgIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpFdmVudExpc3RlbmVyPiBidWlsZE9iamVj
dEZvckV2ZW50TGlzdGVuZXIoY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImLCBjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgTm9kZSosIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXBJ
ZCk7CiAKICAgICBOb2RlKiBub2RlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dC5jcHAKaW5kZXggMjE2MGY2Yi4uMTQzMTcwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcApAQCAtMzE2LDcgKzMx
Niw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGVzY3JpcHRpb25Gb3JET01F
dmVudChOb2RlKiB0YXJnZXQsIGludCBicmVha3BvCiAgICAgaWYgKCgxIDw8IGJyZWFrcG9pbnRU
eXBlKSAmIGluaGVyaXRhYmxlRE9NQnJlYWtwb2ludFR5cGVzTWFzaykgewogICAgICAgICAvLyBG
b3IgaW5oZXJpdGFibGUgYnJlYWtwb2ludCB0eXBlcywgdGFyZ2V0IG5vZGUgaXNuJ3QgYWx3YXlz
IHRoZSBzYW1lIGFzIHRoZSBub2RlIHRoYXQgb3ducyBhIGJyZWFrcG9pbnQuCiAgICAgICAgIC8v
IFRhcmdldCBub2RlIG1heSBiZSB1bmtub3duIHRvIGZyb250ZW5kLCBzbyB3ZSBuZWVkIHRvIHB1
c2ggaXQgZmlyc3QuCi0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0PiB0YXJnZXROb2RlT2JqZWN0ID0gbV9kb21BZ2VudC0+cmVzb2x2ZU5vZGUodGFyZ2V0
LCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpiYWNrdHJhY2VPYmplY3RHcm91cCk7CisgICAgICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHRh
cmdldE5vZGVPYmplY3QgPSBtX2RvbUFnZW50LT5yZXNvbHZlTm9kZSh0YXJnZXQsIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OmJhY2t0cmFjZU9iamVjdEdyb3VwKTsKICAgICAgICAgZGVzY3JpcHRp
b24tPnNldFZhbHVlKCJ0YXJnZXROb2RlIiwgdGFyZ2V0Tm9kZU9iamVjdCk7CiAKICAgICAgICAg
Ly8gRmluZCBicmVha3BvaW50IG93bmVyIG5vZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCmluZGV4IGFlODY3MjIuLjlj
NTliMWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50LmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIEluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiAgICAgbV9lbmFibGVkID0gZmFsc2U7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpnZXRET01TdG9yYWdlSXRlbXMo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYg
c3RvcmFnZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpBcnJheTxT
dHJpbmc+Pj4mIGl0ZW1zKQordm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmdldERPTVN0
b3JhZ2VJdGVtcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+JiBzdG9yYWdlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJh
eTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+Pj4mIGl0ZW1zKQogewogICAg
IEZyYW1lKiBmcmFtZTsKICAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhID0gZmlu
ZFN0b3JhZ2VBcmVhKGVycm9yU3RyaW5nLCBzdG9yYWdlSWQsIGZyYW1lKTsKQEAgLTEwNCwxMyAr
MTA0LDEzIEBAIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpnZXRET01TdG9yYWdlSXRl
bXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpBcnJheTxTdHJp
bmc+Pj4gc3RvcmFnZUl0ZW1zID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpBcnJh
eTxTdHJpbmc+Pjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+PiBzdG9yYWdlSXRl
bXMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxTdHJpbmc+Pjo6Y3JlYXRlKCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgc3RvcmFnZUFyZWEtPmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgU3RyaW5nIGtleSA9IHN0
b3JhZ2VBcmVhLT5rZXkoaSk7CiAgICAgICAgIFN0cmluZyB2YWx1ZSA9IHN0b3JhZ2VBcmVhLT5p
dGVtKGtleSk7CiAKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBl
bnRyeSA9IFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICAgICAgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IGVudHJ5ID0gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgICAgIGVudHJ5
LT5hZGRJdGVtKGtleSk7CiAgICAgICAgIGVudHJ5LT5hZGRJdGVtKHZhbHVlKTsKICAgICAgICAg
c3RvcmFnZUl0ZW1zLT5hZGRJdGVtKGVudHJ5LnJlbGVhc2UoKSk7CkBAIC0xNTgsOSArMTU4LDkg
QEAgU3RyaW5nIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6c3RvcmFnZUlkKFN0b3JhZ2UqIHN0
b3JhZ2UpCiAgICAgcmV0dXJuIHN0b3JhZ2VJZChzZWN1cml0eU9yaWdpbi5nZXQoKSwgaXNMb2Nh
bFN0b3JhZ2UpLT50b0pTT05TdHJpbmcoKTsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6
RE9NU3RvcmFnZTo6U3RvcmFnZUlkPiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OnN0b3JhZ2VJ
ZChTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGJvb2wgaXNMb2NhbFN0b3JhZ2UpCitQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZD4g
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpzdG9yYWdlSWQoU2VjdXJpdHlPcmlnaW4qIHNlY3Vy
aXR5T3JpZ2luLCBib29sIGlzTG9jYWxTdG9yYWdlKQogewotICAgIHJldHVybiBUeXBlQnVpbGRl
cjo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkOjpjcmVhdGUoKQorICAgIHJldHVybiBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpET01TdG9yYWdlOjpTdG9yYWdlSWQ6OmNyZWF0ZSgpCiAgICAgICAgIC5z
ZXRTZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbi0+dG9SYXdTdHJpbmcoKSkKICAgICAgICAg
LnNldElzTG9jYWxTdG9yYWdlKGlzTG9jYWxTdG9yYWdlKS5yZWxlYXNlKCk7CiB9CkBAIC0xNzAs
NyArMTcwLDcgQEAgdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZERpc3BhdGNoRE9N
U3RvcmFnZUV2ZW50KGNvbnN0IFN0cmluZyYga2V5LCBjb24KICAgICBpZiAoIW1fZnJvbnRlbmRE
aXNwYXRjaGVyIHx8ICFtX2VuYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxU
eXBlQnVpbGRlcjo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkPiBpZCA9IHN0b3JhZ2VJZChzZWN1cml0
eU9yaWdpbiwgc3RvcmFnZVR5cGUgPT0gTG9jYWxTdG9yYWdlKTsKKyAgICBSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkPiBpZCA9IHN0b3JhZ2VJZChz
ZWN1cml0eU9yaWdpbiwgc3RvcmFnZVR5cGUgPT0gTG9jYWxTdG9yYWdlKTsKIAogICAgIGlmIChr
ZXkuaXNOdWxsKCkpCiAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5kb21TdG9yYWdlSXRl
bXNDbGVhcmVkKGlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQuaAppbmRleCBmMTFiOGEzLi5kZDAzM2U5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCkBAIC02
NiwxMyArNjYsMTMgQEAgcHVibGljOgogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9udC1lbmQu
CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7Ci0gICAgdmlydHVhbCB2b2lkIGdldERPTVN0b3JhZ2VJ
dGVtcyhFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4mIHN0b3JhZ2VJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6QXJy
YXk8U3RyaW5nPj4+JiBpdGVtcyk7CisgICAgdmlydHVhbCB2b2lkIGdldERPTVN0b3JhZ2VJdGVt
cyhFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4m
IHN0b3JhZ2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+PiYgaXRlbXMpOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRET01TdG9yYWdlSXRlbShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdD4mIHN0b3JhZ2VJZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0
cmluZyYgdmFsdWUpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVET01TdG9yYWdlSXRlbShFcnJv
clN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIHN0b3Jh
Z2VJZCwgY29uc3QgU3RyaW5nJiBrZXkpOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGluamVj
dGVkIHNjcmlwdC4KICAgICBTdHJpbmcgc3RvcmFnZUlkKFN0b3JhZ2UqKTsKLSAgICBQYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpET01TdG9yYWdlOjpTdG9yYWdlSWQ+IHN0b3JhZ2VJZChTZWN1cml0
eU9yaWdpbiosIGJvb2wgaXNMb2NhbFN0b3JhZ2UpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkPiBzdG9yYWdlSWQoU2VjdXJpdHlP
cmlnaW4qLCBib29sIGlzTG9jYWxTdG9yYWdlKTsKIAogICAgIC8vIENhbGxlZCBmcm9tIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbgogICAgIHZvaWQgZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQo
Y29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYg
bmV3VmFsdWUsIFN0b3JhZ2VUeXBlLCBTZWN1cml0eU9yaWdpbiosIFBhZ2UqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAppbmRl
eCBhZTZhY2FjLi45Yjg1NWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCkBAIC02MSw3ICs2MSw3IEBAIG5hbWVzcGFjZSB7
CiAKIHZvaWQgcmVwb3J0VHJhbnNhY3Rpb25GYWlsZWQoRXhlY3V0ZVNRTENhbGxiYWNrKiByZXF1
ZXN0Q2FsbGJhY2ssIFNRTEVycm9yKiBlcnJvcikKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkRhdGFiYXNlOjpFcnJvcj4gZXJyb3JPYmplY3QgPSBUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkVy
cm9yOjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEYXRhYmFz
ZTo6RXJyb3I+IGVycm9yT2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6
OkVycm9yOjpjcmVhdGUoKQogICAgICAgICAuc2V0TWVzc2FnZShlcnJvci0+bWVzc2FnZSgpKQog
ICAgICAgICAuc2V0Q29kZShlcnJvci0+Y29kZSgpKTsKICAgICByZXF1ZXN0Q2FsbGJhY2stPnNl
bmRTdWNjZXNzKDAsIDAsIGVycm9yT2JqZWN0LnJlbGVhc2UoKSk7CkBAIC04MCwxMiArODAsMTIg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgU1FMUmVzdWx0U2V0Um93TGlzdCogcm93TGlzdCA9
IHJlc3VsdFNldC0+cm93cygpOwogCi0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8
U3RyaW5nPj4gY29sdW1uTmFtZXMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRl
KCk7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+
PiBjb2x1bW5OYW1lcyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz46OmNy
ZWF0ZSgpOwogICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29sdW1ucyA9IHJvd0xpc3Qt
PmNvbHVtbk5hbWVzKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29sdW1ucy5z
aXplKCk7ICsraSkKICAgICAgICAgICAgIGNvbHVtbk5hbWVzLT5hZGRJdGVtKGNvbHVtbnNbaV0p
OwogCi0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yVmFsdWU+PiB2
YWx1ZXMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yVmFsdWU+OjpjcmVhdGUoKTsKKyAg
ICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3RvclZhbHVl
Pj4gdmFsdWVzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yVmFsdWU+
OjpjcmVhdGUoKTsKICAgICAgICAgY29uc3QgVmVjdG9yPFNRTFZhbHVlPiYgZGF0YSA9IHJvd0xp
c3QtPnZhbHVlcygpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRhdGEuc2l6ZSgp
OyArK2kpIHsKICAgICAgICAgICAgIGNvbnN0IFNRTFZhbHVlJiB2YWx1ZSA9IHJvd0xpc3QtPnZh
bHVlcygpW2ldOwpAQCAtMjU0LDE0ICsyNTQsMTQgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFn
ZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKICAgICBtX2VuYWJsZWQgPSBmYWxzZTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpnZXREYXRhYmFzZVRhYmxlTmFtZXMoRXJyb3JT
dHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWQsIFJlZlB0cjxUeXBlQnVpbGRl
cjo6QXJyYXk8U3RyaW5nPj4mIG5hbWVzKQordm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50Ojpn
ZXREYXRhYmFzZVRhYmxlTmFtZXMoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIGRh
dGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiYg
bmFtZXMpCiB7CiAgICAgaWYgKCFtX2VuYWJsZWQpIHsKICAgICAgICAgKmVycm9yID0gIkRhdGFi
YXNlIGFnZW50IGlzIG5vdCBlbmFibGVkIjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IG5hbWVzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgIG5hbWVz
ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAKICAg
ICBEYXRhYmFzZSogZGF0YWJhc2UgPSBkYXRhYmFzZUZvcklkKGRhdGFiYXNlSWQpOwogICAgIGlm
IChkYXRhYmFzZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRhdGFiYXNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
YXRhYmFzZUFnZW50LmgKaW5kZXggNzEyYzNkZS4uN2VhNDlhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCkBAIC02Niw3ICs2Niw3
IEBAIHB1YmxpYzoKICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgZnJvbnQtZW5kLgogICAgIHZpcnR1
YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShF
cnJvclN0cmluZyopOwotICAgIHZpcnR1YWwgdm9pZCBnZXREYXRhYmFzZVRhYmxlTmFtZXMoRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6
QXJyYXk8U3RyaW5nPj4mIG5hbWVzKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VUYWJs
ZU5hbWVzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkLCBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4mIG5hbWVzKTsKICAgICB2aXJ0dWFs
IHZvaWQgZXhlY3V0ZVNRTChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZCwg
Y29uc3QgU3RyaW5nJiBxdWVyeSwgUGFzc1JlZlB0cjxFeGVjdXRlU1FMQ2FsbGJhY2s+KTsKIAog
ICAgIC8vIENhbGxlZCBmcm9tIHRoZSBpbmplY3RlZCBzY3JpcHQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAKaW5kZXgg
M2JhZjg4MS4uMjVhMzE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcApAQCAtNjAsNyArNjAsNyBAQCBJbnNwZWN0
b3JEYXRhYmFzZVJlc291cmNlOjpJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlKFBhc3NSZWZQdHI8
RGF0YWJhc2U+IGRhdGFiYQogCiB2b2lkIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U6OmJpbmQo
SW5zcGVjdG9yRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXIqIGRhdGFiYXNlRnJvbnRlbmREaXNw
YXRjaGVyKQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkRhdGFiYXNlPiBq
c29uT2JqZWN0ID0gVHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpEYXRhYmFzZTo6Y3JlYXRlKCkKKyAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkRhdGFiYXNlPiBqc29u
T2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkRhdGFiYXNlOjpjcmVh
dGUoKQogICAgICAgICAuc2V0SWQobV9pZCkKICAgICAgICAgLnNldERvbWFpbihtX2RvbWFpbikK
ICAgICAgICAgLnNldE5hbWUobV9uYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDAxZjAyZDQuLjIyZmYyMTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAKQEAgLTQ2LDEwICs0NiwxMCBAQAogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JW
YWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotdXNpbmcgV2ViQ29y
ZTo6VHlwZUJ1aWxkZXI6OkFycmF5OwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkRlYnVn
Z2VyOjpGdW5jdGlvbkRldGFpbHM7Ci11c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6RGVidWdn
ZXI6OlNjcmlwdElkOwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdDsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5OwordXNpbmcgSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlsczsKK3VzaW5nIElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpTY3JpcHRJZDsKK3VzaW5nIEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDsKIAogdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CkBAIC0yMDQsMTUgKzIwNCwxNSBAQCBz
dGF0aWMgYm9vbCBtYXRjaGVzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdHRl
cm4sIGJvb2wgaXNSZWdleCkKIAogc3RhdGljIGJvb2wgYnJlYWtwb2ludEFjdGlvblR5cGVGb3JT
dHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlU3RyaW5nLCBTY3JpcHRCcmVha3BvaW50QWN0aW9uVHlw
ZSogb3V0cHV0KQogewotICAgIGlmICh0eXBlU3RyaW5nID09IFR5cGVCdWlsZGVyOjpnZXRFbnVt
Q29uc3RhbnRWYWx1ZShUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5
cGU6OkxvZykpIHsKKyAgICBpZiAodHlwZVN0cmluZyA9PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6
QnJlYWtwb2ludEFjdGlvbjo6VHlwZTo6TG9nKSkgewogICAgICAgICAqb3V0cHV0ID0gU2NyaXB0
QnJlYWtwb2ludEFjdGlvblR5cGVMb2c7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAg
ICBpZiAodHlwZVN0cmluZyA9PSBUeXBlQnVpbGRlcjo6Z2V0RW51bUNvbnN0YW50VmFsdWUoVHlw
ZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlOjpFdmFsdWF0ZSkpIHsK
KyAgICBpZiAodHlwZVN0cmluZyA9PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpnZXRFbnVtQ29u
c3RhbnRWYWx1ZShJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFj
dGlvbjo6VHlwZTo6RXZhbHVhdGUpKSB7CiAgICAgICAgICpvdXRwdXQgPSBTY3JpcHRCcmVha3Bv
aW50QWN0aW9uVHlwZUV2YWx1YXRlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAg
aWYgKHR5cGVTdHJpbmcgPT0gVHlwZUJ1aWxkZXI6OmdldEVudW1Db25zdGFudFZhbHVlKFR5cGVC
dWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6VHlwZTo6U291bmQpKSB7CisgICAg
aWYgKHR5cGVTdHJpbmcgPT0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Z2V0RW51bUNvbnN0YW50
VmFsdWUoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246
OlR5cGU6OlNvdW5kKSkgewogICAgICAgICAqb3V0cHV0ID0gU2NyaXB0QnJlYWtwb2ludEFjdGlv
blR5cGVTb3VuZDsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjU5LDkgKzI1OSw5
IEBAIHN0YXRpYyBib29sIGJyZWFrcG9pbnRBY3Rpb25zRnJvbVByb3RvY29sKEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgUmVmUHRyPEluc3BlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxV
UkwsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBjb25z
dCBvcHRpb25hbENvbHVtbk51bWJlciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG9w
dGlvbnMsIFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiBvdXRCcmVha3BvaW50
SWRlbnRpZmllciwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RGVidWdn
ZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9ucykKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
c2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IGxpbmVOdW1i
ZXIsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogY29uc3Qg
b3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBjb25zdCBvcHRpb25hbENvbHVtbk51bWJlciwg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG9wdGlvbnMsIEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9pbnRJZGVudGlmaWVyLCBS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9ucykKIHsKLSAgICBsb2NhdGlvbnMgPSBB
cnJheTxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPjo6Y3JlYXRlKCk7CisgICAgbG9j
YXRpb25zID0gQXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9u
Pjo6Y3JlYXRlKCk7CiAgICAgaWYgKCFvcHRpb25hbFVSTCA9PSAhb3B0aW9uYWxVUkxSZWdleCkg
ewogICAgICAgICAqZXJyb3JTdHJpbmcgPSAiRWl0aGVyIHVybCBvciB1cmxSZWdleCBtdXN0IGJl
IHNwZWNpZmllZC4iOwogICAgICAgICByZXR1cm47CkBAIC0yOTgsNyArMjk4LDcgQEAgdm9pZCBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBpbnQgbGkKICAgICAgICAgaWYgKCFtYXRjaGVzKHNjcmlwdFVSTCwgdXJsLCBp
c1JlZ2V4KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFJlZlB0cjxUeXBlQnVp
bGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiBsb2NhdGlvbiA9IHJlc29sdmVCcmVha3BvaW50KGJy
ZWFrcG9pbnRJZGVudGlmaWVyLCBpdC0+a2V5LCBicmVha3BvaW50KTsKKyAgICAgICAgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gbG9jYXRpb24gPSBy
ZXNvbHZlQnJlYWtwb2ludChicmVha3BvaW50SWRlbnRpZmllciwgaXQtPmtleSwgYnJlYWtwb2lu
dCk7CiAgICAgICAgIGlmIChsb2NhdGlvbikKICAgICAgICAgICAgIGxvY2F0aW9ucy0+YWRkSXRl
bShsb2NhdGlvbik7CiAgICAgfQpAQCAtMzIwLDcgKzMyMCw3IEBAIHN0YXRpYyBib29sIHBhcnNl
TG9jYXRpb24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBJbnNwZWN0b3JPYmplY3QqIGxvY2F0
aW9uLCBTCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6c2V0QnJlYWtwb2ludChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+JiBsb2NhdGlvbiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4q
IG9wdGlvbnMsIFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiBvdXRCcmVha3Bv
aW50SWRlbnRpZmllciwgUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+JiBh
Y3R1YWxMb2NhdGlvbikKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2lu
dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
JiBsb2NhdGlvbiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG9wdGlvbnMsIEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9pbnRJ
ZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0
aW9uPiYgYWN0dWFsTG9jYXRpb24pCiB7CiAgICAgU291cmNlSUQgc291cmNlSUQ7CiAgICAgdW5z
aWduZWQgbGluZU51bWJlcjsKQEAgLTM4Nyw3ICszODcsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OmNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNv
bnN0CiAgICAgcmVzdW1lKGVycm9yU3RyaW5nKTsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRl
cjo6RGVidWdnZXI6OkxvY2F0aW9uPiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXNvbHZlQnJl
YWtwb2ludChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZGVudGlmaWVyLCBTb3VyY2VJRCBzb3Vy
Y2VJRCwgY29uc3QgU2NyaXB0QnJlYWtwb2ludCYgYnJlYWtwb2ludCkKK1Bhc3NSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpyZXNvbHZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZGVudGlm
aWVyLCBTb3VyY2VJRCBzb3VyY2VJRCwgY29uc3QgU2NyaXB0QnJlYWtwb2ludCYgYnJlYWtwb2lu
dCkKIHsKICAgICBTY3JpcHRzTWFwOjppdGVyYXRvciBzY3JpcHRJdGVyYXRvciA9IG1fc2NyaXB0
cy5maW5kKHNvdXJjZUlEKTsKICAgICBpZiAoc2NyaXB0SXRlcmF0b3IgPT0gbV9zY3JpcHRzLmVu
ZCgpKQpAQCAtNDA3LDcgKzQwNyw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2Vy
OjpMb2NhdGlvbj4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzb2x2ZUJyZWFrCiAgICAgICAg
IGRlYnVnU2VydmVyQnJlYWtwb2ludElEc0l0ZXJhdG9yID0gbV9icmVha3BvaW50SWRlbnRpZmll
clRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SURzLnNldChicmVha3BvaW50SWRlbnRpZmllciwgVmVj
dG9yPEJyZWFrcG9pbnRJRD4oKSkuaXRlcmF0b3I7CiAgICAgZGVidWdTZXJ2ZXJCcmVha3BvaW50
SURzSXRlcmF0b3ItPnZhbHVlLmFwcGVuZChkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRCk7CiAKLSAg
ICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gbG9jYXRpb24gPSBUeXBl
QnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uOjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IGxvY2F0aW9uID0gSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uOjpjcmVhdGUoKQogICAgICAgICAuc2V0
U2NyaXB0SWQoU3RyaW5nOjpudW1iZXIoc291cmNlSUQpKQogICAgICAgICAuc2V0TGluZU51bWJl
cihhY3R1YWxMaW5lTnVtYmVyKTsKICAgICBsb2NhdGlvbi0+c2V0Q29sdW1uTnVtYmVyKGFjdHVh
bENvbHVtbk51bWJlcik7CkBAIC00MjQsNyArNDI0LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBzY3JpcHRUb0luc3BlY3Rvck9iamVjdChTY3JpcHRPYmplY3Qgc2NyaXB0
T2IKICAgICByZXR1cm4gdmFsdWUtPmFzT2JqZWN0KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3Ry
aW5nJiBzY3JpcHRJRFN0ciwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogY29uc3Qg
b3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbElzUmVnZXgs
IFJlZlB0cjxBcnJheTxXZWJDb3JlOjpUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0Y2g+PiYg
cmVzdWx0cykKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2VhcmNoSW5Db250ZW50KEVy
cm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRFN0ciwgY29uc3QgU3RyaW5n
JiBxdWVyeSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBi
b29sKiBjb25zdCBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxBcnJheTxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpQYWdlOjpTZWFyY2hNYXRjaD4+JiByZXN1bHRzKQogewogICAgIGJvb2wgaXNSZWdl
eCA9IG9wdGlvbmFsSXNSZWdleCA/ICpvcHRpb25hbElzUmVnZXggOiBmYWxzZTsKICAgICBib29s
IGNhc2VTZW5zaXRpdmUgPSBvcHRpb25hbENhc2VTZW5zaXRpdmUgPyAqb3B0aW9uYWxDYXNlU2Vu
c2l0aXZlIDogZmFsc2U7CkBAIC00MzcsNyArNDM3LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpzZWFyY2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcm
IHMKICAgICAgICAgKmVycm9yID0gIk5vIHNjcmlwdCBmb3IgaWQ6ICIgKyBzY3JpcHRJRFN0cjsK
IH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRTY3JpcHRTb3VyY2UoRXJyb3JT
dHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmlwdElELCBjb25zdCBTdHJpbmcmIG5ld0Nv
bnRlbnQsIGNvbnN0IGJvb2wqIGNvbnN0IHByZXZpZXcsIFJlZlB0cjxBcnJheTxUeXBlQnVpbGRl
cjo6RGVidWdnZXI6OkNhbGxGcmFtZT4+JiBuZXdDYWxsRnJhbWVzLCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRTY3JpcHRT
b3VyY2UoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmlwdElELCBjb25zdCBT
dHJpbmcmIG5ld0NvbnRlbnQsIGNvbnN0IGJvb2wqIGNvbnN0IHByZXZpZXcsIFJlZlB0cjxBcnJh
eTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4mIG5ld0NhbGxG
cmFtZXMsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiByZXN1bHQpCiB7CiAgICAgYm9vbCBwcmV2
aWV3T25seSA9IHByZXZpZXcgJiYgKnByZXZpZXc7CiAgICAgU2NyaXB0T2JqZWN0IHJlc3VsdE9i
amVjdDsKQEAgLTQ1OSw3ICs0NTksNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Omdl
dFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgcwogICAgICAg
ICAqZXJyb3IgPSAiTm8gc2NyaXB0IGZvciBpZDogIiArIHNjcmlwdElEU3RyOwogfQogCi12b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiYgZGV0YWlscykKK3ZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6Z2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4mIGRldGFpbHMpCiB7CiAgICAgSW5qZWN0ZWRTY3Jp
cHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3Jp
cHRGb3JPYmplY3RJZChmdW5jdGlvbklkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9W
YWx1ZSgpKSB7CkBAIC01NTEsNyArNTUxLDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpzZXRQYXVzZU9uRXhjZXB0aW9uc0ltcGwoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLAogICAg
ICAgICAqZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3IuIENvdWxkIG5vdCBjaGFuZ2UgcGF1
c2Ugb24gZXhjZXB0aW9ucyBzdGF0ZSI7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5n
KiBjb25zdCBvYmplY3RHcm91cCwgY29uc3QgYm9vbCogY29uc3QgaW5jbHVkZUNvbW1hbmRMaW5l
QVBJLCBjb25zdCBib29sKiBjb25zdCBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNv
bGUsIGNvbnN0IGJvb2wqIGNvbnN0IHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGdlbmVyYXRl
UHJldmlldywgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1
bHQsIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKK3ZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lv
biwgY29uc3QgU3RyaW5nKiBjb25zdCBvYmplY3RHcm91cCwgY29uc3QgYm9vbCogY29uc3QgaW5j
bHVkZUNvbW1hbmRMaW5lQVBJLCBjb25zdCBib29sKiBjb25zdCBkb05vdFBhdXNlT25FeGNlcHRp
b25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGJvb2wqIGNvbnN0IHJldHVybkJ5VmFsdWUsIGNvbnN0
IGJvb2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0
T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCiB7CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRT
Y3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJ
ZChjYWxsRnJhbWVJZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewpA
QCAtNTc1LDcgKzU3NSw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZXZhbHVhdGVP
bkNhbGxGcmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0CiAgICAgfQogfQogCi12
b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNvbXBpbGVTY3JpcHQoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMLCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PFNjcmlwdElkPiogc2NyaXB0SUQsIFR5cGVCdWls
ZGVyOjpPcHRPdXRwdXQ8U3RyaW5nPiogc3ludGF4RXJyb3JNZXNzYWdlKQordm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50Ojpjb21waWxlU2NyaXB0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PFNjcmlwdElkPiogc2NyaXB0SUQsIEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxTdHJpbmc+KiBzeW50YXhFcnJvck1lc3NhZ2UpCiB7
CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdEZvckV2
YWwoZXJyb3JTdHJpbmcsIDApOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkp
IHsKQEAgLTU5NCw3ICs1OTQsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNvbXBp
bGVTY3JpcHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbgogICAgICpzY3Jp
cHRJRCA9IHNjcmlwdElEVmFsdWU7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
cnVuU2NyaXB0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU2NyaXB0SWQmIHNjcmlw
dElELCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCwgY29uc3QgU3RyaW5nKiBjb25zdCBv
YmplY3RHcm91cCwgY29uc3QgYm9vbCogY29uc3QgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11
dGVDb25zb2xlLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJl
c3VsdCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQordm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpydW5TY3JpcHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBj
b25zdCBTY3JpcHRJZCYgc2NyaXB0SUQsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkLCBj
b25zdCBTdHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBjb25zdCBkb05vdFBh
dXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQogewogICAgIEluamVjdGVkU2NyaXB0IGlu
amVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKGVycm9yU3RyaW5nLCBleGVjdXRp
b25Db250ZXh0SWQpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKQEAg
LTY0MiwxNCArNjQyLDE0IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2NyaXB0RXhl
Y3V0aW9uQmxvY2tlZEJ5Q1NQKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlCiAgICAgfQogfQogCi1Q
YXNzUmVmUHRyPEFycmF5PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4gSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6Y3VycmVudENhbGxGcmFtZXMoKQorUGFzc1JlZlB0cjxBcnJheTxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4gSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6Y3VycmVudENhbGxGcmFtZXMoKQogewogICAgIGlmICghbV9wYXVzZWRTY3Jp
cHRTdGF0ZSkKLSAgICAgICAgcmV0dXJuIEFycmF5PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2Fs
bEZyYW1lPjo6Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBBcnJheTxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPjo6Y3JlYXRlKCk7CiAgICAgSW5qZWN0ZWRTY3Jp
cHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3Jp
cHRGb3IobV9wYXVzZWRTY3JpcHRTdGF0ZSk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05v
VmFsdWUoKSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
IEFycmF5PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPjo6Y3JlYXRlKCk7CisgICAg
ICAgIHJldHVybiBBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZy
YW1lPjo6Y3JlYXRlKCk7CiAgICAgfQogICAgIHJldHVybiBpbmplY3RlZFNjcmlwdC53cmFwQ2Fs
bEZyYW1lcyhtX2N1cnJlbnRDYWxsU3RhY2spOwogfQpAQCAtNzE5LDcgKzcxOSw3IEBAIHZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGFyc2VTb3VyY2UoU291cmNlSUQgc291cmNlSUQs
IGNvbnN0IFNjcmlwdCYgaW5TCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0g
ICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiBsb2NhdGlvbiA9
IHJlc29sdmVCcmVha3BvaW50KGl0LT5rZXksIHNvdXJjZUlELCBicmVha3BvaW50KTsKKyAgICAg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gbG9j
YXRpb24gPSByZXNvbHZlQnJlYWtwb2ludChpdC0+a2V5LCBzb3VyY2VJRCwgYnJlYWtwb2ludCk7
CiAgICAgICAgIGlmIChsb2NhdGlvbikKICAgICAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVy
LT5icmVha3BvaW50UmVzb2x2ZWQoaXQtPmtleSwgbG9jYXRpb24pOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCmluZGV4IDVj
ZDFmY2QuLmVkZmQ4NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtOTEsMTUgKzkxLDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBzZXRCcmVh
a3BvaW50c0FjdGl2ZShFcnJvclN0cmluZyosIGJvb2wgYWN0aXZlKTsKIAotICAgIHZpcnR1YWwg
dm9pZCBzZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJpbmcqLCBpbnQgbGluZU51bWJlciwgY29u
c3QgU3RyaW5nKiBvcHRpb25hbFVSTCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFVSTFJlZ2V4LCBj
b25zdCBpbnQqIG9wdGlvbmFsQ29sdW1uTnVtYmVyLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3Q+KiBvcHRpb25zLCBUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9p
bnRJZCosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpM
b2NhdGlvbj4+JiBsb2NhdGlvbnMpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRCcmVha3BvaW50KEVy
cm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgbG9j
YXRpb24sIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG9wdGlvbnMs
IFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpEZWJ1Z2dlcjo6TG9jYXRpb24+JiBhY3R1YWxMb2NhdGlvbik7CisgICAgdmlydHVhbCB2b2lk
IHNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyosIGludCBsaW5lTnVtYmVyLCBjb25zdCBT
dHJpbmcqIG9wdGlvbmFsVVJMLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0
IGludCogb3B0aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdD4qIG9wdGlvbnMsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpC
cmVha3BvaW50SWQqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9ucyk7CisgICAg
dmlydHVhbCB2b2lkIHNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBsb2NhdGlvbiwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0Piogb3B0aW9ucywgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVi
dWdnZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1
Z2dlcjo6TG9jYXRpb24+JiBhY3R1YWxMb2NhdGlvbik7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92
ZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZGVudGlm
aWVyKTsKICAgICB2aXJ0dWFsIHZvaWQgY29udGludWVUb0xvY2F0aW9uKEVycm9yU3RyaW5nKiwg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgbG9jYXRpb24pOwogCi0g
ICAgdmlydHVhbCB2b2lkIHNlYXJjaEluQ29udGVudChFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0SUQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2Fz
ZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hNYXRjaD4+Jik7Ci0gICAgdmlydHVh
bCB2b2lkIHNldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0
SUQsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudCwgY29uc3QgYm9vbCogcHJldmlldywgUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZT4+JiBu
ZXdDYWxsRnJhbWVzLCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiByZXN1bHQp
OworICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIHNjcmlwdElELCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBvcHRpb25h
bENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlNl
YXJjaE1hdGNoPj4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2NyaXB0U291cmNlKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBj
b25zdCBib29sKiBwcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZT4+JiBuZXdDYWxsRnJh
bWVzLCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiByZXN1bHQpOwogICAgIHZp
cnR1YWwgdm9pZCBnZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNj
cmlwdElELCBTdHJpbmcqIHNjcmlwdFNvdXJjZSk7Ci0gICAgdmlydHVhbCB2b2lkIGdldEZ1bmN0
aW9uRGV0YWlscyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRy
PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiYpOworICAgIHZpcnR1YWwg
dm9pZCBnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZ1bmN0
aW9uSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6RnVuY3Rpb25E
ZXRhaWxzPiYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXVzZShFcnJvclN0cmluZyopOwogICAgIHZp
cnR1YWwgdm9pZCByZXN1bWUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RlcE92
ZXIoRXJyb3JTdHJpbmcqKTsKQEAgLTExNCwxMCArMTE0LDEwIEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCogZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0Fu
ZE11dGVDb25zb2xlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sKiBy
ZXR1cm5CeVZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sKiBn
ZW5lcmF0ZVByZXZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxUeXBl
QnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOwot
ICAgIHZvaWQgY29tcGlsZVNjcmlwdChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZXhwcmVz
c2lvbiwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8VHlw
ZUJ1aWxkZXI6OkRlYnVnZ2VyOjpTY3JpcHRJZD4qLCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PFN0
cmluZz4qIHN5bnRheEVycm9yTWVzc2FnZSk7Ci0gICAgdm9pZCBydW5TY3JpcHQoRXJyb3JTdHJp
bmcqLCBjb25zdCBUeXBlQnVpbGRlcjo6RGVidWdnZXI6OlNjcmlwdElkJiwgY29uc3QgaW50KiBl
eGVjdXRpb25Db250ZXh0SWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wq
IGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8
Ym9vbD4qIHdhc1Rocm93bik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91
dHB1dDxib29sPiogd2FzVGhyb3duKTsKKyAgICB2b2lkIGNvbXBpbGVTY3JpcHQoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
RGVidWdnZXI6OlNjcmlwdElkPiosIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxT
dHJpbmc+KiBzeW50YXhFcnJvck1lc3NhZ2UpOworICAgIHZvaWQgcnVuU2NyaXB0KEVycm9yU3Ry
aW5nKiwgY29uc3QgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OlNjcmlwdElkJiwg
Y29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAs
IGNvbnN0IGJvb2wqIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwg
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRPdmVybGF5TWVzc2FnZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyopOwogCiAgICAgdm9pZCBzY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KEluc3BlY3RvckRl
YnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkVudW0gYnJlYWtSZWFzb24sIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGRhdGEpOwpAQCAtMTU2LDE0ICsxNTYs
MTQgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2VuYWJsZWQ7IH07CiAKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxU
eXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IGN1cnJlbnRDYWxsRnJhbWVzKCk7Cisg
ICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4gY3VycmVudENhbGxGcmFtZXMoKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBkaWRQYXJzZVNvdXJjZShTb3VyY2VJRCwgY29uc3QgU2NyaXB0Jikg
T1ZFUlJJREUgRklOQUw7CiAgICAgdmlydHVhbCB2b2lkIGZhaWxlZFRvUGFyc2VTb3VyY2UoY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZGF0YSwgaW50IGZpcnN0TGluZSwgaW50IGVy
cm9yTGluZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIE9WRVJSSURFIEZJTkFMOwogCiAg
ICAgdm9pZCBzZXRQYXVzZU9uRXhjZXB0aW9uc0ltcGwoRXJyb3JTdHJpbmcqLCBpbnQpOwogCi0g
ICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiByZXNvbHZlQnJl
YWtwb2ludChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZGVudGlmaWVyLCBTb3VyY2VJRCwgY29u
c3QgU2NyaXB0QnJlYWtwb2ludCYpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiByZXNvbHZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcm
IGJyZWFrcG9pbnRJZGVudGlmaWVyLCBTb3VyY2VJRCwgY29uc3QgU2NyaXB0QnJlYWtwb2ludCYp
OwogICAgIHZvaWQgY2xlYXIoKTsKICAgICBib29sIGFzc2VydFBhdXNlZChFcnJvclN0cmluZyop
OwogICAgIHZvaWQgY2xlYXJCcmVha0RldGFpbHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IDM1Y2My
MGYuLjJhYWNhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JIZWFwUHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNwcApAQCAtMTAyLDkgKzEwMiw5IEBAIHZvaWQgSW5z
cGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OmNvbGxlY3RHYXJiYWdlKFdlYkNvcmU6OkVycm9yU3Ry
aW5nKikKICAgICBTY3JpcHRQcm9maWxlcjo6Y29sbGVjdEdhcmJhZ2UoKTsKIH0KIAotUGFzc1Jl
ZlB0cjxUeXBlQnVpbGRlcjo6SGVhcFByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPiBJbnNwZWN0b3JI
ZWFwUHJvZmlsZXJBZ2VudDo6Y3JlYXRlU25hcHNob3RIZWFkZXIoY29uc3QgU2NyaXB0SGVhcFNu
YXBzaG90JiBzbmFwc2hvdCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6SGVh
cFByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPiBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6Y3Jl
YXRlU25hcHNob3RIZWFkZXIoY29uc3QgU2NyaXB0SGVhcFNuYXBzaG90JiBzbmFwc2hvdCkKIHsK
LSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkhlYXBQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4gaGVh
ZGVyID0gVHlwZUJ1aWxkZXI6OkhlYXBQcm9maWxlcjo6UHJvZmlsZUhlYWRlcjo6Y3JlYXRlKCkK
KyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6SGVhcFByb2ZpbGVyOjpQcm9maWxl
SGVhZGVyPiBoZWFkZXIgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpIZWFwUHJvZmlsZXI6OlBy
b2ZpbGVIZWFkZXI6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRVaWQoc25hcHNob3QudWlkKCkpCiAg
ICAgICAgIC5zZXRUaXRsZShzbmFwc2hvdC50aXRsZSgpKTsKICAgICBoZWFkZXItPnNldE1heEpT
T2JqZWN0SWQoc25hcHNob3QubWF4U25hcHNob3RKU09iamVjdElkKCkpOwpAQCAtMTE2LDEwICsx
MTYsMTAgQEAgdm9pZCBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6aGFzSGVhcFByb2ZpbGVy
KEVycm9yU3RyaW5nKiwgYm9vbCogcmVzdWx0KQogICAgICpyZXN1bHQgPSBTY3JpcHRQcm9maWxl
cjo6aGFzSGVhcFByb2ZpbGVyKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdl
bnQ6OmdldFByb2ZpbGVIZWFkZXJzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpB
cnJheTxUeXBlQnVpbGRlcjo6SGVhcFByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPj4mIGhlYWRlcnMp
Cit2b2lkIEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpnZXRQcm9maWxlSGVhZGVycyhFcnJv
clN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpIZWFwUHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+PiYgaGVhZGVycykKIHsK
ICAgICBtX3Byb2ZpbGVIZWFkZXJzUmVxdWVzdGVkID0gdHJ1ZTsKLSAgICBoZWFkZXJzID0gVHlw
ZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpIZWFwUHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+
OjpjcmVhdGUoKTsKKyAgICBoZWFkZXJzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6SGVhcFByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPjo6Y3Jl
YXRlKCk7CiAKICAgICBJZFRvSGVhcFNuYXBzaG90TWFwOjppdGVyYXRvciBzbmFwc2hvdHNFbmQg
PSBtX3NuYXBzaG90cy5lbmQoKTsKICAgICBmb3IgKElkVG9IZWFwU25hcHNob3RNYXA6Oml0ZXJh
dG9yIGl0ID0gbV9zbmFwc2hvdHMuYmVnaW4oKTsgaXQgIT0gc25hcHNob3RzRW5kOyArK2l0KQpA
QCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQgSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OnRha2VI
ZWFwU25hcHNob3QoRXJyb3JTdHJpbmcqLCBjb25zdCBib29sKiByZXBvCiAgICAgfQogfQogCi12
b2lkIEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpnZXRPYmplY3RCeUhlYXBPYmplY3RJZChF
cnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgaGVhcFNuYXBzaG90T2JqZWN0SWQsIGNv
bnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVt
b3RlT2JqZWN0PiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6Z2V0
T2JqZWN0QnlIZWFwT2JqZWN0SWQoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIGhl
YXBTbmFwc2hvdE9iamVjdElkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0KQogewog
ICAgIGJvb2wgb2s7CiAgICAgdW5zaWduZWQgaWQgPSBoZWFwU25hcHNob3RPYmplY3RJZC50b1VJ
bnQoJm9rKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JI
ZWFwUHJvZmlsZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhl
YXBQcm9maWxlckFnZW50LmgKaW5kZXggZDE3MDAwYy4uYzc1Mjg4YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmgKQEAg
LTYyLDcgKzYyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGhhc0hlYXBQcm9maWxl
cihFcnJvclN0cmluZyosIGJvb2wqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9maWxlSGVh
ZGVycyhFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6
OkhlYXBQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4+Jik7CisgICAgdmlydHVhbCB2b2lkIGdldFBy
b2ZpbGVIZWFkZXJzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkhlYXBQcm9maWxlcjo6UHJvZmlsZUhlYWRl
cj4+Jik7CiAgICAgdmlydHVhbCB2b2lkIGdldEhlYXBTbmFwc2hvdChFcnJvclN0cmluZyosIGlu
dCB1aWQpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVQcm9maWxlKEVycm9yU3RyaW5nKiwgaW50
IHVpZCk7CiAKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHRh
a2VIZWFwU25hcHNob3QoRXJyb3JTdHJpbmcqLCBjb25zdCBib29sKiByZXBvcnRQcm9ncmVzcyk7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0T2JqZWN0QnlIZWFwT2JqZWN0SWQoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIGhlYXBTbmFwc2hvdE9iamVjdElkLCBjb25zdCBTdHJpbmcqIG9iamVj
dEdyb3VwLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3Vs
dCk7CisgICAgdmlydHVhbCB2b2lkIGdldE9iamVjdEJ5SGVhcE9iamVjdElkKEVycm9yU3RyaW5n
KiwgY29uc3QgU3RyaW5nJiBoZWFwU25hcHNob3RPYmplY3RJZCwgY29uc3QgU3RyaW5nKiBvYmpl
Y3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4mIHJlc3VsdCk7CiAgICAgdmlydHVhbCB2b2lkIGdldEhlYXBPYmplY3RJZChFcnJvclN0
cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIFN0cmluZyogaGVhcFNuYXBzaG90T2JqZWN0
SWQpOwogCiBwcml2YXRlOgpAQCAtODEsNyArODEsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBy
ZXNldEZyb250ZW5kUHJvZmlsZXMoKTsKIAotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6Okhl
YXBQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4gY3JlYXRlU25hcHNob3RIZWFkZXIoY29uc3QgU2Ny
aXB0SGVhcFNuYXBzaG90Jik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpIZWFwUHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+IGNyZWF0ZVNuYXBzaG90SGVhZGVyKGNvbnN0
IFNjcmlwdEhlYXBTbmFwc2hvdCYpOwogCiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9ySGVhcFBy
b2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmlu
ZGV4IGZlYWRhZGYuLmZiNDJmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApAQCAtNjYsMTQgKzY2LDE0IEBACiAjaW5j
bHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkFycmF5OwotdXNpbmcgV2ViQ29yZTo6
VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6RGF0YWJhc2VXaXRoT2JqZWN0U3RvcmVzOwotdXNpbmcg
V2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6RGF0YUVudHJ5OwotdXNpbmcgV2ViQ29y
ZTo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6S2V5OwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxk
ZXI6OkluZGV4ZWREQjo6S2V5UGF0aDsKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpJbmRl
eGVkREI6OktleVJhbmdlOwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6
T2JqZWN0U3RvcmU7Ci11c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpPYmpl
Y3RTdG9yZUluZGV4OwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk7Cit1c2lu
ZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6OkRhdGFiYXNlV2l0aE9iamVjdFN0
b3JlczsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6RGF0YUVudHJ5
OwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpLZXk7Cit1c2luZyBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6OktleVBhdGg7Cit1c2luZyBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6OktleVJhbmdlOwordXNpbmcgSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6SW5kZXhlZERCOjpPYmplY3RTdG9yZTsKK3VzaW5nIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmVJbmRleDsKIAogdHlwZWRlZiBJbnNwZWN0
b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UgUmVxdWVzdENhbGxi
YWNrOwogdHlwZWRlZiBXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hl
ckhhbmRsZXI6OlJlcXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJhY2sgUmVxdWVzdERhdGFiYXNlTmFt
ZXNDYWxsYmFjazsKQEAgLTEyNCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAg
ICAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gZGF0YWJhc2VOYW1lc0xpc3QgPSByZXF1ZXN0UmVz
dWx0LT5kb21TdHJpbmdMaXN0KCk7Ci0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8
U3RyaW5nPj4gZGF0YWJhc2VOYW1lcyA9IFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVh
dGUoKTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmlu
Zz4+IGRhdGFiYXNlTmFtZXMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+
OjpjcmVhdGUoKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkYXRhYmFzZU5hbWVz
TGlzdC0+bGVuZ3RoKCk7ICsraSkKICAgICAgICAgICAgIGRhdGFiYXNlTmFtZXMtPmFkZEl0ZW0o
ZGF0YWJhc2VOYW1lc0xpc3QtPml0ZW0oaSkpOwogICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+
c2VuZFN1Y2Nlc3MoZGF0YWJhc2VOYW1lcy5yZWxlYXNlKCkpOwpAQCAtMjUxLDcgKzI1MSw3IEBA
IHN0YXRpYyBQYXNzUmVmUHRyPEtleVBhdGg+IGtleVBhdGhGcm9tSURCS2V5UGF0aChjb25zdCBJ
REJLZXlQYXRoJiBpZGJLZXlQYXRoKQogICAgICAgICBicmVhazsKICAgICBjYXNlIElEQktleVBh
dGg6OkFycmF5VHlwZTogewogICAgICAgICBrZXlQYXRoID0gS2V5UGF0aDo6Y3JlYXRlKCkuc2V0
VHlwZShLZXlQYXRoOjpUeXBlOjpBcnJheSk7Ci0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6
QXJyYXk8U3RyaW5nPj4gYXJyYXkgPSBUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRl
KCk7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+
PiBhcnJheSA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgp
OwogICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RyaW5nQXJyYXkgPSBpZGJLZXlQYXRo
LmFycmF5KCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RyaW5nQXJyYXkuc2l6
ZSgpOyArK2kpCiAgICAgICAgICAgICBhcnJheS0+YWRkSXRlbShzdHJpbmdBcnJheVtpXSk7CkBA
IC0yODYsMTIgKzI4NiwxMiBAQCBwdWJsaWM6CiAKICAgICAgICAgY29uc3QgSURCRGF0YWJhc2VN
ZXRhZGF0YSBkYXRhYmFzZU1ldGFkYXRhID0gaWRiRGF0YWJhc2UtPm1ldGFkYXRhKCk7CiAKLSAg
ICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpP
YmplY3RTdG9yZT4+IG9iamVjdFN0b3JlcyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRl
cjo6SW5kZXhlZERCOjpPYmplY3RTdG9yZT46OmNyZWF0ZSgpOworICAgICAgICBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6SW5kZXhl
ZERCOjpPYmplY3RTdG9yZT4+IG9iamVjdFN0b3JlcyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmU+Ojpj
cmVhdGUoKTsKIAogICAgICAgICBmb3IgKElEQkRhdGFiYXNlTWV0YWRhdGE6Ok9iamVjdFN0b3Jl
TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGRhdGFiYXNlTWV0YWRhdGEub2JqZWN0U3RvcmVzLmJl
Z2luKCk7IGl0ICE9IGRhdGFiYXNlTWV0YWRhdGEub2JqZWN0U3RvcmVzLmVuZCgpOyArK2l0KSB7
CiAgICAgICAgICAgICBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZU1l
dGFkYXRhID0gaXQtPnZhbHVlOwogCi0gICAgICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlSW5kZXg+PiBpbmRleGVzID0g
VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlSW5k
ZXg+OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlSW5k
ZXg+PiBpbmRleGVzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6SW5kZXhlZERCOjpPYmplY3RTdG9yZUluZGV4Pjo6Y3JlYXRlKCk7CiAKICAg
ICAgICAgICAgIGZvciAoSURCT2JqZWN0U3RvcmVNZXRhZGF0YTo6SW5kZXhNYXA6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gb2JqZWN0U3RvcmVNZXRhZGF0YS5pbmRleGVzLmJlZ2luKCk7IGl0ICE9IG9i
amVjdFN0b3JlTWV0YWRhdGEuaW5kZXhlcy5lbmQoKTsgKytpdCkgewogICAgICAgICAgICAgICAg
IGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEgPSBpdC0+dmFsdWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNw
cAppbmRleCBjMjAwMWNmLi5jNDE1YmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKQEAgLTEwNyw5ICsxMDcsOSBAQCB2
b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojpwc2V1ZG9FbGVtZW50RGVzdHJveWVkKFBzZXVk
b0VsZW1lbnQqIHBzZXVkb0VsZW1lbgogICAgIHVuYmluZFBzZXVkb0VsZW1lbnQocHNldWRvRWxl
bWVudCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmxheWVyc0Zvck5vZGUo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkFycmF5PFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPj4mIGxheWVycykKK3ZvaWQgSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmxheWVyc0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4+JiBsYXllcnMpCiB7Ci0gICAg
bGF5ZXJzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVy
Pjo6Y3JlYXRlKCk7CisgICAgbGF5ZXJzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj46OmNyZWF0ZSgpOwogCiAg
ICAgTm9kZSogbm9kZSA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRE9NQWdlbnQo
KS0+bm9kZUZvcklkKG5vZGVJZCk7CiAgICAgaWYgKCFub2RlKSB7CkBAIC0xMjYsNyArMTI2LDcg
QEAgdm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6bGF5ZXJzRm9yTm9kZShFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQKICAgICBnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9i
amVjdEhpZXJhcmNoeShlcnJvclN0cmluZywgcmVuZGVyZXIsIGxheWVycyk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmdhdGhlckxheWVyc1VzaW5nUmVuZGVyT2JqZWN0SGll
cmFyY2h5KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwg
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4+
JiBsYXllcnMpCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpnYXRoZXJMYXllcnNVc2lu
Z1JlbmRlck9iamVjdEhpZXJhcmNoeShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFJlbmRlck9i
amVjdCogcmVuZGVyZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPj4mIGxheWVycykKIHsKICAgICBp
ZiAocmVuZGVyZXItPmhhc0xheWVyKCkpIHsKICAgICAgICAgZ2F0aGVyTGF5ZXJzVXNpbmdSZW5k
ZXJMYXllckhpZXJhcmNoeShlcnJvclN0cmluZywgdG9SZW5kZXJMYXllck1vZGVsT2JqZWN0KHJl
bmRlcmVyKS0+bGF5ZXIoKSwgbGF5ZXJzKTsKQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIEluc3Bl
Y3RvckxheWVyVHJlZUFnZW50OjpnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNo
eShFcnJvclN0cmluZwogICAgICAgICBnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJh
cmNoeShlcnJvclN0cmluZywgcmVuZGVyZXIsIGxheWVycyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQ6OmdhdGhlckxheWVyc1VzaW5nUmVuZGVyTGF5ZXJIaWVyYXJjaHkoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIsIFJlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+PiYgbGF5ZXJz
KQordm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6Z2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJM
YXllckhpZXJhcmNoeShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFJlbmRlckxheWVyKiByZW5k
ZXJMYXllciwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+PiYgbGF5ZXJzKQogewogICAgIGlmIChyZW5k
ZXJMYXllci0+aXNDb21wb3NpdGVkKCkpCiAgICAgICAgIGxheWVycy0+YWRkSXRlbShidWlsZE9i
amVjdEZvckxheWVyKGVycm9yU3RyaW5nLCByZW5kZXJMYXllcikpOwpAQCAtMTQ2LDcgKzE0Niw3
IEBAIHZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmdhdGhlckxheWVyc1VzaW5nUmVuZGVy
TGF5ZXJIaWVyYXJjaHkoRXJyb3JTdHJpbmcqCiAgICAgICAgIGdhdGhlckxheWVyc1VzaW5nUmVu
ZGVyTGF5ZXJIaWVyYXJjaHkoZXJyb3JTdHJpbmcsIHJlbmRlckxheWVyLCBsYXllcnMpOwogfQog
Ci1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPiBJbnNwZWN0b3JMYXll
clRyZWVBZ2VudDo6YnVpbGRPYmplY3RGb3JMYXllcihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IFJlbmRlckxheWVyKiByZW5kZXJMYXllcikKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2Jq
ZWN0Rm9yTGF5ZXIoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBSZW5kZXJMYXllciogcmVuZGVy
TGF5ZXIpCiB7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9ICZyZW5kZXJMYXllci0+cmVu
ZGVyZXIoKTsKICAgICBSZW5kZXJMYXllckJhY2tpbmcqIGJhY2tpbmcgPSByZW5kZXJMYXllci0+
YmFja2luZygpOwpAQCAtMTY2LDcgKzE2Niw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6Okxh
eWVyVHJlZTo6TGF5ZXI+IEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpidWlsZE9iamVjdEZvCiAg
ICAgICAgIG5vZGUgPSByZW5kZXJlci0+cGFyZW50KCktPmVsZW1lbnQoKTsKIAogICAgIC8vIEJh
c2ljIHNldCBvZiBwcm9wZXJ0aWVzLgotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVl
OjpMYXllcj4gbGF5ZXJPYmplY3QgPSBUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcjo6Y3Jl
YXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXll
cj4gbGF5ZXJPYmplY3QgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVy
OjpjcmVhdGUoKQogICAgICAgICAuc2V0TGF5ZXJJZChiaW5kKHJlbmRlckxheWVyKSkKICAgICAg
ICAgLnNldE5vZGVJZChpZEZvck5vZGUoZXJyb3JTdHJpbmcsIG5vZGUpKQogICAgICAgICAuc2V0
Qm91bmRzKGJ1aWxkT2JqZWN0Rm9ySW50UmVjdChyZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3QoKSkpCkBAIC0yMTgsMTYgKzIxOCwxNiBAQCBpbnQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQ6OmlkRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIE5vZGUqIG5vZGUpCiAgICAg
cmV0dXJuIG5vZGVJZDsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpJ
bnRSZWN0PiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6YnVpbGRPYmplY3RGb3JJbnRSZWN0KGNv
bnN0IEludFJlY3QmIHJlY3QpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Okxh
eWVyVHJlZTo6SW50UmVjdD4gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9y
SW50UmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIHJldHVybiBUeXBlQnVpbGRlcjo6
TGF5ZXJUcmVlOjpJbnRSZWN0OjpjcmVhdGUoKQorICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpMYXllclRyZWU6OkludFJlY3Q6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRYKHJlY3Qu
eCgpKQogICAgICAgICAuc2V0WShyZWN0LnkoKSkKICAgICAgICAgLnNldFdpZHRoKHJlY3Qud2lk
dGgoKSkKICAgICAgICAgLnNldEhlaWdodChyZWN0LmhlaWdodCgpKS5yZWxlYXNlKCk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OnJlYXNvbnNGb3JDb21wb3NpdGluZ0xheWVy
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBsYXllcklkLCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6Q29tcG9zaXRpbmdSZWFzb25zPiYgY29tcG9zaXRpbmdS
ZWFzb25zKQordm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6cmVhc29uc0ZvckNvbXBvc2l0
aW5nTGF5ZXIoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGxheWVySWQs
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkNvbXBvc2l0aW5nUmVh
c29ucz4mIGNvbXBvc2l0aW5nUmVhc29ucykKIHsKICAgICBjb25zdCBSZW5kZXJMYXllciogcmVu
ZGVyTGF5ZXIgPSBtX2lkVG9MYXllci5nZXQobGF5ZXJJZCk7CiAKQEAgLTIzNyw3ICsyMzcsNyBA
QCB2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpyZWFzb25zRm9yQ29tcG9zaXRpbmdMYXll
cihFcnJvclN0cmluZyogZXJyb3JTdHJpbgogICAgIH0KIAogICAgIENvbXBvc2l0aW5nUmVhc29u
cyByZWFzb25zQml0bWFzayA9IHJlbmRlckxheWVyLT5jb21wb3NpdG9yKCkucmVhc29uc0ZvckNv
bXBvc2l0aW5nKCpyZW5kZXJMYXllcik7Ci0gICAgY29tcG9zaXRpbmdSZWFzb25zID0gVHlwZUJ1
aWxkZXI6OkxheWVyVHJlZTo6Q29tcG9zaXRpbmdSZWFzb25zOjpjcmVhdGUoKTsKKyAgICBjb21w
b3NpdGluZ1JlYXNvbnMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkNvbXBv
c2l0aW5nUmVhc29uczo6Y3JlYXRlKCk7CiAKICAgICBpZiAocmVhc29uc0JpdG1hc2sgJiBDb21w
b3NpdGluZ1JlYXNvbjNEVHJhbnNmb3JtKQogICAgICAgICBjb21wb3NpdGluZ1JlYXNvbnMtPnNl
dFRyYW5zZm9ybTNEKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckxheWVyVHJlZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQuaAppbmRleCA0ODkzZDkwLi42ZDViMTk4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaApAQCAt
MzMsNyArMzMsNyBAQAogCiAjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JUeXBl
QnVpbGRlci5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIgogI2luY2x1
ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnRCYXNlLmgiCiAjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTY2LDggKzY2LDggQEAgcHVibGljOgogICAgIC8v
IENhbGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJv
clN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7Ci0gICAg
dmlydHVhbCB2b2lkIGxheWVyc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPj4mKTsK
LSAgICB2aXJ0dWFsIHZvaWQgcmVhc29uc0ZvckNvbXBvc2l0aW5nTGF5ZXIoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIGxheWVySWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpD
b21wb3NpdGluZ1JlYXNvbnM+Jik7CisgICAgdmlydHVhbCB2b2lkIGxheWVyc0Zvck5vZGUoRXJy
b3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4+Jik7CisgICAgdmly
dHVhbCB2b2lkIHJlYXNvbnNGb3JDb21wb3NpdGluZ0xheWVyKEVycm9yU3RyaW5nKiwgY29uc3Qg
U3RyaW5nJiBsYXllcklkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TGF5ZXJUcmVl
OjpDb21wb3NpdGluZ1JlYXNvbnM+Jik7CiAKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyopOwpAQCAtNzYsMTEgKzc2LDExIEBAIHByaXZh
dGU6CiAgICAgU3RyaW5nIGJpbmQoY29uc3QgUmVuZGVyTGF5ZXIqKTsKICAgICB2b2lkIHVuYmlu
ZChjb25zdCBSZW5kZXJMYXllciopOwogCi0gICAgdm9pZCBnYXRoZXJMYXllcnNVc2luZ1JlbmRl
ck9iamVjdEhpZXJhcmNoeShFcnJvclN0cmluZyosIFJlbmRlck9iamVjdCosIFJlZlB0cjxUeXBl
QnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+PiYpOwotICAgIHZv
aWQgZ2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJMYXllckhpZXJhcmNoeShFcnJvclN0cmluZyosIFJl
bmRlckxheWVyKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TGF5ZXJU
cmVlOjpMYXllcj4+Jik7CisgICAgdm9pZCBnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhp
ZXJhcmNoeShFcnJvclN0cmluZyosIFJlbmRlck9iamVjdCosIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVy
Pj4mKTsKKyAgICB2b2lkIGdhdGhlckxheWVyc1VzaW5nUmVuZGVyTGF5ZXJIaWVyYXJjaHkoRXJy
b3JTdHJpbmcqLCBSZW5kZXJMYXllciosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpB
cnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPj4mKTsKIAotICAg
IFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+IGJ1aWxkT2JqZWN0Rm9y
TGF5ZXIoRXJyb3JTdHJpbmcqLCBSZW5kZXJMYXllciopOwotICAgIFBhc3NSZWZQdHI8VHlwZUJ1
aWxkZXI6OkxheWVyVHJlZTo6SW50UmVjdD4gYnVpbGRPYmplY3RGb3JJbnRSZWN0KGNvbnN0IElu
dFJlY3QmKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJl
ZTo6TGF5ZXI+IGJ1aWxkT2JqZWN0Rm9yTGF5ZXIoRXJyb3JTdHJpbmcqLCBSZW5kZXJMYXllciop
OworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpJbnRS
ZWN0PiBidWlsZE9iamVjdEZvckludFJlY3QoY29uc3QgSW50UmVjdCYpOwogCiAgICAgaW50IGlk
Rm9yTm9kZShFcnJvclN0cmluZyosIE5vZGUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKaW5kZXggYjRlZjAzOS4uMzJkMDFmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQu
Y3BwCkBAIC01OCw4ICs1OCw4IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IC8vIFVzZSBhIHR5cGUgYWxpYXMgaW5zdGVhZCBvZiAndXNpbmcnIGhlcmUgd2hpY2ggd291bGQg
Y2F1c2UgYSBjb25mbGljdCBvbiBNYWMuCi10eXBlZGVmIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpN
ZW1vcnk6Ok1lbW9yeUJsb2NrIEluc3BlY3Rvck1lbW9yeUJsb2NrOwotdHlwZWRlZiBXZWJDb3Jl
OjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IEluc3BlY3Rvck1lbW9y
eUJsb2NrczsKK3R5cGVkZWYgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TWVtb3J5OjpNZW1vcnlC
bG9jayBJbnNwZWN0b3JNZW1vcnlCbG9jazsKK3R5cGVkZWYgSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IEluc3BlY3Rvck1lbW9yeUJsb2NrczsKIAog
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCAyZjcyZWJiLi5iY2NlZDc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMjk2
LDI3ICsyOTYsMjcgQEAgQ2FjaGVkUmVzb3VyY2UqIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVk
UmVzb3VyY2UoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gY2FjaGVk
UmVzb3VyY2U7CiB9CiAKLVR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkVudW0gSW5z
cGVjdG9yUGFnZUFnZW50OjpyZXNvdXJjZVR5cGVKc29uKEluc3BlY3RvclBhZ2VBZ2VudDo6UmVz
b3VyY2VUeXBlIHJlc291cmNlVHlwZSkKK0luc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlJl
c291cmNlVHlwZTo6RW51bSBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlVHlwZUpzb24oSW5z
cGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKQogewogICAgIHN3aXRj
aCAocmVzb3VyY2VUeXBlKSB7CiAgICAgY2FzZSBEb2N1bWVudFJlc291cmNlOgotICAgICAgICBy
ZXR1cm4gVHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6RG9jdW1lbnQ7CisgICAgICAg
IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkRvY3Vt
ZW50OwogICAgIGNhc2UgSW1hZ2VSZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVy
OjpQYWdlOjpSZXNvdXJjZVR5cGU6OkltYWdlOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpJbWFnZTsKICAgICBjYXNlIEZvbnRSZXNv
dXJjZToKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkZv
bnQ7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJj
ZVR5cGU6OkZvbnQ7CiAgICAgY2FzZSBTdHlsZXNoZWV0UmVzb3VyY2U6Ci0gICAgICAgIHJldHVy
biBUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpTdHlsZXNoZWV0OworICAgICAgICBy
ZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpTdHlsZXNo
ZWV0OwogICAgIGNhc2UgU2NyaXB0UmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRl
cjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpTY3JpcHQ7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OlNjcmlwdDsKICAgICBjYXNlIFhIUlJl
c291cmNlOgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6
WEhSOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3Vy
Y2VUeXBlOjpYSFI7CiAgICAgY2FzZSBXZWJTb2NrZXRSZXNvdXJjZToKLSAgICAgICAgcmV0dXJu
IFR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OldlYlNvY2tldDsKKyAgICAgICAgcmV0
dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6V2ViU29ja2V0
OwogICAgIGNhc2UgT3RoZXJSZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpQ
YWdlOjpSZXNvdXJjZVR5cGU6Ok90aGVyOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpPdGhlcjsKICAgICB9Ci0gICAgcmV0dXJuIFR5
cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6Ok90aGVyOworICAgIHJldHVybiBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6Ok90aGVyOwogfQogCiBJbnNwZWN0
b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSBJbnNwZWN0b3JQYWdlQWdlbnQ6OmNhY2hlZFJlc291
cmNlVHlwZShjb25zdCBDYWNoZWRSZXNvdXJjZSYgY2FjaGVkUmVzb3VyY2UpCkBAIC0zNDQsNyAr
MzQ0LDcgQEAgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgSW5zcGVjdG9yUGFnZUFn
ZW50OjpjYWNoZWRSZXNvdXJjZVR5cGUoY29uc3QgQ2EKICAgICByZXR1cm4gSW5zcGVjdG9yUGFn
ZUFnZW50OjpPdGhlclJlc291cmNlOwogfQogCi1UeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VU
eXBlOjpFbnVtIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2VUeXBlSnNvbihjb25z
dCBDYWNoZWRSZXNvdXJjZSYgY2FjaGVkUmVzb3VyY2UpCitJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpQYWdlOjpSZXNvdXJjZVR5cGU6OkVudW0gSW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNv
dXJjZVR5cGVKc29uKGNvbnN0IENhY2hlZFJlc291cmNlJiBjYWNoZWRSZXNvdXJjZSkKIHsKICAg
ICByZXR1cm4gcmVzb3VyY2VUeXBlSnNvbihjYWNoZWRSZXNvdXJjZVR5cGUoY2FjaGVkUmVzb3Vy
Y2UpKTsKIH0KQEAgLTQ1OSw5ICs0NTksOSBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6bmF2
aWdhdGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVybCkKICAgICBmcmFtZS5sb2FkZXIo
KS5jaGFuZ2VMb2NhdGlvbihmcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBmcmFt
ZS5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1cmwpLCAiIiwgZmFsc2UsIGZhbHNlKTsKIH0KIAot
c3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OkNvb2tpZT4gYnVpbGRPYmplY3RG
b3JDb29raWUoY29uc3QgQ29va2llJiBjb29raWUpCitzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpDb29raWU+IGJ1aWxkT2JqZWN0Rm9yQ29va2llKGNvbnN0
IENvb2tpZSYgY29va2llKQogewotICAgIHJldHVybiBUeXBlQnVpbGRlcjo6UGFnZTo6Q29va2ll
OjpjcmVhdGUoKQorICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpDb29r
aWU6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXROYW1lKGNvb2tpZS5uYW1lKQogICAgICAgICAuc2V0
VmFsdWUoY29va2llLnZhbHVlKQogICAgICAgICAuc2V0RG9tYWluKGNvb2tpZS5kb21haW4pCkBA
IC00NzQsOSArNDc0LDkgQEAgc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OkNv
b2tpZT4gYnVpbGRPYmplY3RGb3JDb29raWUoY29uc3QgQ29va2llJgogICAgICAgICAucmVsZWFz
ZSgpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxk
ZXI6OlBhZ2U6OkNvb2tpZT4+IGJ1aWxkQXJyYXlGb3JDb29raWVzKExpc3RIYXNoU2V0PENvb2tp
ZT4mIGNvb2tpZXNMaXN0KQorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6Q29va2llPj4gYnVpbGRBcnJh
eUZvckNvb2tpZXMoTGlzdEhhc2hTZXQ8Q29va2llPiYgY29va2llc0xpc3QpCiB7Ci0gICAgUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6Q29va2llPj4gY29va2ll
cyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6Q29va2llPjo6Y3JlYXRl
KCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OlBhZ2U6OkNvb2tpZT4+IGNvb2tpZXMgPSBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpDb29raWU+OjpjcmVhdGUo
KTsKIAogICAgIExpc3RIYXNoU2V0PENvb2tpZT46Oml0ZXJhdG9yIGVuZCA9IGNvb2tpZXNMaXN0
LmVuZCgpOwogICAgIExpc3RIYXNoU2V0PENvb2tpZT46Oml0ZXJhdG9yIGl0ID0gY29va2llc0xp
c3QuYmVnaW4oKTsKQEAgLTUyNyw3ICs1MjcsNyBAQCBzdGF0aWMgVmVjdG9yPFVSTD4gYWxsUmVz
b3VyY2VzVVJMc0ZvckZyYW1lKEZyYW1lKiBmcmFtZSkKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0Q29va2llcyhFcnJvclN0cmluZyosIFJlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OkNvb2tpZT4+JiBjb29raWVz
LCBXVEY6OlN0cmluZyogY29va2llc1N0cmluZykKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojpn
ZXRDb29raWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFy
cmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkNvb2tpZT4+JiBjb29raWVzLCBXVEY6
OlN0cmluZyogY29va2llc1N0cmluZykKIHsKICAgICAvLyBJZiB3ZSBjYW4gZ2V0IHJhdyBjb29r
aWVzLgogICAgIExpc3RIYXNoU2V0PENvb2tpZT4gcmF3Q29va2llc0xpc3Q7CkBAIC01NjcsNyAr
NTY3LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMoRXJyb3JTdHJpbmcq
LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGUKICAgICAgICAgY29va2llcyA9IGJ1aWxk
QXJyYXlGb3JDb29raWVzKHJhd0Nvb2tpZXNMaXN0KTsKICAgICAgICAgKmNvb2tpZXNTdHJpbmcg
PSAiIjsKICAgICB9IGVsc2UgewotICAgICAgICBjb29raWVzID0gVHlwZUJ1aWxkZXI6OkFycmF5
PFR5cGVCdWlsZGVyOjpQYWdlOjpDb29raWU+OjpjcmVhdGUoKTsKKyAgICAgICAgY29va2llcyA9
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBh
Z2U6OkNvb2tpZT46OmNyZWF0ZSgpOwogICAgICAgICAqY29va2llc1N0cmluZyA9IHN0cmluZ0Nv
b2tpZXNMaXN0LnRvU3RyaW5nKCk7CiAgICAgfQogfQpAQCAtNTc5LDcgKzU3OSw3IEBAIHZvaWQg
SW5zcGVjdG9yUGFnZUFnZW50OjpkZWxldGVDb29raWUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIGNvb2tpZU5hbWUsIGNvCiAgICAgICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShmcmFtZS0+
ZG9jdW1lbnQoKSwgcGFyc2VkVVJMLCBjb29raWVOYW1lKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OmdldFJlc291cmNlVHJlZShFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRl
cjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+JiBvYmplY3QpCit2b2lkIEluc3BlY3RvclBhZ2VB
Z2VudDo6Z2V0UmVzb3VyY2VUcmVlKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiYgb2JqZWN0KQogewogICAgIG9iamVj
dCA9IGJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKCZtX3BhZ2UtPm1haW5GcmFtZSgpKTsKIH0KQEAg
LTYwNiw5ICs2MDYsOSBAQCBzdGF0aWMgYm9vbCB0ZXh0Q29udGVudEZvckNhY2hlZFJlc291cmNl
KENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSwgU3RyaW5nKgogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3VyY2UoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNv
bnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJh
eTxUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0Y2g+PiYgcmVzdWx0cykKK3ZvaWQgSW5zcGVj
dG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3Qg
Ym9vbCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBjb25zdCBvcHRp
b25hbElzUmVnZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hNYXRjaD4+JiByZXN1bHRzKQogewotICAgIHJl
c3VsdHMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaE1hdGNo
Pjo6Y3JlYXRlKCk7CisgICAgcmVzdWx0cyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaE1hdGNoPjo6Y3JlYXRlKCk7CiAK
ICAgICBib29sIGlzUmVnZXggPSBvcHRpb25hbElzUmVnZXggPyAqb3B0aW9uYWxJc1JlZ2V4IDog
ZmFsc2U7CiAgICAgYm9vbCBjYXNlU2Vuc2l0aXZlID0gb3B0aW9uYWxDYXNlU2Vuc2l0aXZlID8g
Km9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSA6IGZhbHNlOwpAQCAtNjQwLDE4ICs2NDAsMTggQEAgdm9p
ZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIGZyYW1lSWQsIGMKICAgICByZXN1bHRzID0gQ29udGVudFNlYXJjaFV0aWxzOjpz
ZWFyY2hJblRleHRCeUxpbmVzKGNvbnRlbnQsIHF1ZXJ5LCBjYXNlU2Vuc2l0aXZlLCBpc1JlZ2V4
KTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaFJlc3Vs
dD4gYnVpbGRPYmplY3RGb3JTZWFyY2hSZXN1bHQoY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25z
dCBTdHJpbmcmIHVybCwgaW50IG1hdGNoZXNDb3VudCkKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaFJlc3VsdD4gYnVpbGRPYmplY3RGb3JTZWFy
Y2hSZXN1bHQoY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgaW50IG1h
dGNoZXNDb3VudCkKIHsKLSAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaFJlc3Vs
dDo6Y3JlYXRlKCkKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6U2Vh
cmNoUmVzdWx0OjpjcmVhdGUoKQogICAgICAgICAuc2V0VXJsKHVybCkKICAgICAgICAgLnNldEZy
YW1lSWQoZnJhbWVJZCkKICAgICAgICAgLnNldE1hdGNoZXNDb3VudChtYXRjaGVzQ291bnQpCiAg
ICAgICAgIC5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJ
blJlc291cmNlcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgYm9vbCog
Y29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbElz
UmVnZXgsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJj
aFJlc3VsdD4+JiByZXN1bHRzKQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVz
b3VyY2VzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBib29sKiBjb25z
dCBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdl
eCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OlBhZ2U6OlNlYXJjaFJlc3VsdD4+JiByZXN1bHRzKQogewotICAgIFJlZlB0cjxUeXBl
QnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaFJlc3VsdD4+IHNlYXJjaFJl
c3VsdHMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaFJlc3Vs
dD46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiBzZWFyY2hSZXN1bHRz
ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
UGFnZTo6U2VhcmNoUmVzdWx0Pjo6Y3JlYXRlKCk7CiAKICAgICBib29sIGlzUmVnZXggPSBvcHRp
b25hbElzUmVnZXggPyAqb3B0aW9uYWxJc1JlZ2V4IDogZmFsc2U7CiAgICAgYm9vbCBjYXNlU2Vu
c2l0aXZlID0gb3B0aW9uYWxDYXNlU2Vuc2l0aXZlID8gKm9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSA6
IGZhbHNlOwpAQCAtMTAzNyw5ICsxMDM3LDkgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNj
cmlwdHNFbmFibGVkKGJvb2wgaXNFbmFibGVkKQogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5z
Y3JpcHRzRW5hYmxlZChpc0VuYWJsZWQpOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQ
YWdlOjpGcmFtZT4gSW5zcGVjdG9yUGFnZUFnZW50OjpidWlsZE9iamVjdEZvckZyYW1lKEZyYW1l
KiBmcmFtZSkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWU+
IEluc3BlY3RvclBhZ2VBZ2VudDo6YnVpbGRPYmplY3RGb3JGcmFtZShGcmFtZSogZnJhbWUpCiB7
Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZT4gZnJhbWVPYmplY3QgPSBUeXBl
QnVpbGRlcjo6UGFnZTo6RnJhbWU6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lPiBmcmFtZU9iamVjdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OlBhZ2U6OkZyYW1lOjpjcmVhdGUoKQogICAgICAgICAuc2V0SWQoZnJhbWVJZChmcmFtZSkp
CiAgICAgICAgIC5zZXRMb2FkZXJJZChsb2FkZXJJZChmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRM
b2FkZXIoKSkpCiAgICAgICAgIC5zZXRVcmwoZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmlu
ZygpKQpAQCAtMTA1NywxMSArMTA1NywxMSBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQYWdl
OjpGcmFtZT4gSW5zcGVjdG9yUGFnZUFnZW50OjpidWlsZE9iamVjdEZvckZyYW1lKEZyYQogICAg
IHJldHVybiBmcmFtZU9iamVjdDsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UGFnZTo6
RnJhbWVSZXNvdXJjZVRyZWU+IEluc3BlY3RvclBhZ2VBZ2VudDo6YnVpbGRPYmplY3RGb3JGcmFt
ZVRyZWUoRnJhbWUqIGZyYW1lKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQ
YWdlOjpGcmFtZVJlc291cmNlVHJlZT4gSW5zcGVjdG9yUGFnZUFnZW50OjpidWlsZE9iamVjdEZv
ckZyYW1lVHJlZShGcmFtZSogZnJhbWUpCiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpQYWdl
OjpGcmFtZT4gZnJhbWVPYmplY3QgPSBidWlsZE9iamVjdEZvckZyYW1lKGZyYW1lKTsKLSAgICBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNl
VHJlZTo6UmVzb3VyY2VzPj4gc3VicmVzb3VyY2VzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVC
dWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZTo6UmVzb3VyY2VzPjo6Y3JlYXRlKCk7Ci0g
ICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT4gcmVzdWx0ID0g
VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlOjpjcmVhdGUoKQorICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZT4gZnJhbWVPYmplY3QgPSBidWls
ZE9iamVjdEZvckZyYW1lKGZyYW1lKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU6
OlJlc291cmNlcz4+IHN1YnJlc291cmNlcyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlOjpSZXNvdXJj
ZXM+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6
RnJhbWVSZXNvdXJjZVRyZWU+IHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6
OkZyYW1lUmVzb3VyY2VUcmVlOjpjcmVhdGUoKQogICAgICAgICAgLnNldEZyYW1lKGZyYW1lT2Jq
ZWN0KQogICAgICAgICAgLnNldFJlc291cmNlcyhzdWJyZXNvdXJjZXMpOwogCkBAIC0xMDY5LDcg
KzEwNjksNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJl
ZT4gSW5zcGVjdG9yUGFnZUFnZW50OjpidWlsZE9iamVjdAogICAgIGZvciAoVmVjdG9yPENhY2hl
ZFJlc291cmNlKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gYWxsUmVzb3VyY2VzLmJlZ2luKCk7IGl0
ICE9IGFsbFJlc291cmNlcy5lbmQoKTsgKytpdCkgewogICAgICAgICBDYWNoZWRSZXNvdXJjZSog
Y2FjaGVkUmVzb3VyY2UgPSAqaXQ7CiAKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpQYWdl
OjpGcmFtZVJlc291cmNlVHJlZTo6UmVzb3VyY2VzPiByZXNvdXJjZU9iamVjdCA9IFR5cGVCdWls
ZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZTo6UmVzb3VyY2VzOjpjcmVhdGUoKQorICAgICAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU6
OlJlc291cmNlcz4gcmVzb3VyY2VPYmplY3QgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdl
OjpGcmFtZVJlc291cmNlVHJlZTo6UmVzb3VyY2VzOjpjcmVhdGUoKQogICAgICAgICAgICAgLnNl
dFVybChjYWNoZWRSZXNvdXJjZS0+dXJsKCkpCiAgICAgICAgICAgICAuc2V0VHlwZShjYWNoZWRS
ZXNvdXJjZVR5cGVKc29uKCpjYWNoZWRSZXNvdXJjZSkpCiAgICAgICAgICAgICAuc2V0TWltZVR5
cGUoY2FjaGVkUmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSk7CkBAIC0xMDgzLDEwICsx
MDgzLDEwIEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVl
PiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0CiAgICAgICAgIHN1YnJlc291cmNlcy0+
YWRkSXRlbShyZXNvdXJjZU9iamVjdCk7CiAgICAgfQogCi0gICAgUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+PiBjaGlsZHJlbkFy
cmF5OworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT4+IGNoaWxkcmVuQXJyYXk7CiAg
ICAgZm9yIChGcmFtZSogY2hpbGQgPSBmcmFtZS0+dHJlZSgpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7
IGNoaWxkID0gY2hpbGQtPnRyZWUoKS5uZXh0U2libGluZygpKSB7CiAgICAgICAgIGlmICghY2hp
bGRyZW5BcnJheSkgewotICAgICAgICAgICAgY2hpbGRyZW5BcnJheSA9IFR5cGVCdWlsZGVyOjpB
cnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+OjpjcmVhdGUoKTsKKyAg
ICAgICAgICAgIGNoaWxkcmVuQXJyYXkgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT46OmNyZWF0ZSgp
OwogICAgICAgICAgICAgcmVzdWx0LT5zZXRDaGlsZEZyYW1lcyhjaGlsZHJlbkFycmF5KTsKICAg
ICAgICAgfQogICAgICAgICBjaGlsZHJlbkFycmF5LT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yRnJh
bWVUcmVlKGNoaWxkKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFn
ZUFnZW50LmgKaW5kZXggNWYwNTMxYS4uM2NjYzIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtOTQsOSArOTQsOSBAQCBwdWJsaWM6CiAK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YShGcmFtZSos
IGNvbnN0IFVSTCYsIFN0cmluZyogdGV4dEVuY29kaW5nTmFtZSk7CiAgICAgc3RhdGljIENhY2hl
ZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZShGcmFtZSosIGNvbnN0IFVSTCYpOwotICAgIHN0YXRp
YyBUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpFbnVtIHJlc291cmNlVHlwZUpzb24o
UmVzb3VyY2VUeXBlKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6
UmVzb3VyY2VUeXBlOjpFbnVtIHJlc291cmNlVHlwZUpzb24oUmVzb3VyY2VUeXBlKTsKICAgICBz
dGF0aWMgUmVzb3VyY2VUeXBlIGNhY2hlZFJlc291cmNlVHlwZShjb25zdCBDYWNoZWRSZXNvdXJj
ZSYpOwotICAgIHN0YXRpYyBUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpFbnVtIGNh
Y2hlZFJlc291cmNlVHlwZUpzb24oY29uc3QgQ2FjaGVkUmVzb3VyY2UmKTsKKyAgICBzdGF0aWMg
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpFbnVtIGNhY2hlZFJl
c291cmNlVHlwZUpzb24oY29uc3QgQ2FjaGVkUmVzb3VyY2UmKTsKIAogICAgIC8vIFBhZ2UgQVBJ
IGZvciBJbnNwZWN0b3JGcm9udGVuZAogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJp
bmcqKTsKQEAgLTEwNSwxMiArMTA1LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllcik7CiAgICAgdmlydHVhbCB2b2lkIHJlbG9hZChFcnJvclN0cmluZyosIGNvbnN0IGJv
b2wqIG9wdGlvbmFsSWdub3JlQ2FjaGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxTY3JpcHRUb0V2
YWx1YXRlT25Mb2FkLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsU2NyaXB0UHJlcHJvY2Vzc29yKTsK
ICAgICB2aXJ0dWFsIHZvaWQgbmF2aWdhdGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVy
bCk7Ci0gICAgdmlydHVhbCB2b2lkIGdldENvb2tpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpDb29raWU+PiYgY29va2llcywgV1RG
OjpTdHJpbmcqIGNvb2tpZXNTdHJpbmcpOworICAgIHZpcnR1YWwgdm9pZCBnZXRDb29raWVzKEVy
cm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkNvb2tpZT4+JiBjb29raWVzLCBXVEY6OlN0cmluZyogY29v
a2llc1N0cmluZyk7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYgY29va2llTmFtZSwgY29uc3QgU3RyaW5nJiB1cmwpOwotICAgIHZpcnR1
YWwgdm9pZCBnZXRSZXNvdXJjZVRyZWUoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6
OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiYpOworICAgIHZpcnR1YWwgdm9pZCBnZXRSZXNvdXJj
ZVRyZWUoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6
RnJhbWVSZXNvdXJjZVRyZWU+Jik7CiAgICAgdmlydHVhbCB2b2lkIGdldFJlc291cmNlQ29udGVu
dChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmws
IFN0cmluZyogY29udGVudCwgYm9vbCogYmFzZTY0RW5jb2RlZCk7Ci0gICAgdmlydHVhbCB2b2lk
IHNlYXJjaEluUmVzb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBvcHRpb25h
bENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPFR5cGVC
dWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0Y2g+PiYpOwotICAgIHZp
cnR1YWwgdm9pZCBzZWFyY2hJblJlc291cmNlcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYs
IGNvbnN0IGJvb2wqIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGlzUmVnZXgsIFJlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaFJlc3VsdD4+Jik7Cisg
ICAgdmlydHVhbCB2b2lkIHNlYXJjaEluUmVzb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25z
dCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdl
eCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OlBhZ2U6OlNlYXJjaE1hdGNoPj4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoSW5S
ZXNvdXJjZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBib29sKiBjYXNlU2Vu
c2l0aXZlLCBjb25zdCBib29sKiBpc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0RG9jdW1lbnRDb250ZW50KEVycm9yU3RyaW5nKiwgY29uc3Qg
U3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIGh0bWwpOwogICAgIHZpcnR1YWwgdm9pZCBj
YW5PdmVycmlkZURldmljZU1ldHJpY3MoRXJyb3JTdHJpbmcqLCBib29sKik7CiAgICAgdmlydHVh
bCB2b2lkIHNldERldmljZU1ldHJpY3NPdmVycmlkZShFcnJvclN0cmluZyosIGludCB3aWR0aCwg
aW50IGhlaWdodCwgZG91YmxlIGZvbnRTY2FsZUZhY3RvciwgYm9vbCBmaXRXaW5kb3cpOwpAQCAt
MTkzLDggKzE5Myw4IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgbWFpblJlc291cmNlQ29u
dGVudChGcmFtZSosIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOwogICAg
IHN0YXRpYyBib29sIGRhdGFDb250ZW50KGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIHNpemUs
IGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBT
dHJpbmcqIHJlc3VsdCk7CiAKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQYWdlOjpGcmFt
ZT4gYnVpbGRPYmplY3RGb3JGcmFtZShGcmFtZSopOwotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxk
ZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiBidWlsZE9iamVjdEZvckZyYW1lVHJlZShGcmFt
ZSopOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWU+
IGJ1aWxkT2JqZWN0Rm9yRnJhbWUoRnJhbWUqKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiBidWlsZE9iamVjdEZvckZyYW1l
VHJlZShGcmFtZSopOwogICAgIFBhZ2UqIG1fcGFnZTsKICAgICBJbnNwZWN0b3JBZ2VudCogbV9p
bnNwZWN0b3JBZ2VudDsKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clByb2ZpbGVyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBy
b2ZpbGVyQWdlbnQuY3BwCmluZGV4IDNkYWVhNWIuLmE1ZDg0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKQEAgLTE3MSwx
OSArMTcxLDE5IEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Y29sbGVjdEdhcmJhZ2Uo
V2ViQ29yZTo6RXJyb3JTdHJpbmcqKQogICAgIFNjcmlwdFByb2ZpbGVyOjpjb2xsZWN0R2FyYmFn
ZSgpOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRl
cj4gSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Y3JlYXRlUHJvZmlsZUhlYWRlcihjb25zdCBTY3Jp
cHRQcm9maWxlJiBwcm9maWxlKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQ
cm9maWxlcjo6UHJvZmlsZUhlYWRlcj4gSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Y3JlYXRlUHJv
ZmlsZUhlYWRlcihjb25zdCBTY3JpcHRQcm9maWxlJiBwcm9maWxlKQogewotICAgIHJldHVybiBU
eXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI6OmNyZWF0ZSgpCi0gICAgICAgIC5z
ZXRUeXBlSWQoVHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyOjpUeXBlSWQ6OkNQ
VSkKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVI
ZWFkZXI6OmNyZWF0ZSgpCisgICAgICAgIC5zZXRUeXBlSWQoSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI6OlR5cGVJZDo6Q1BVKQogICAgICAgICAuc2V0VWlk
KHByb2ZpbGUudWlkKCkpCiAgICAgICAgIC5zZXRUaXRsZShwcm9maWxlLnRpdGxlKCkpCiAgICAg
ICAgIC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQ
cm9maWxlSGVhZGVyPiBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpjcmVhdGVTbmFwc2hvdEhlYWRl
cihjb25zdCBTY3JpcHRIZWFwU25hcHNob3QmIHNuYXBzaG90KQorUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4gSW5zcGVjdG9yUHJvZmls
ZXJBZ2VudDo6Y3JlYXRlU25hcHNob3RIZWFkZXIoY29uc3QgU2NyaXB0SGVhcFNuYXBzaG90JiBz
bmFwc2hvdCkKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVh
ZGVyPiBoZWFkZXIgPSBUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI6OmNyZWF0
ZSgpCi0gICAgICAgIC5zZXRUeXBlSWQoVHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVh
ZGVyOjpUeXBlSWQ6OkhFQVApCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBy
b2ZpbGVyOjpQcm9maWxlSGVhZGVyPiBoZWFkZXIgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQ
cm9maWxlcjo6UHJvZmlsZUhlYWRlcjo6Y3JlYXRlKCkKKyAgICAgICAgLnNldFR5cGVJZChJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcjo6VHlwZUlkOjpIRUFQ
KQogICAgICAgICAuc2V0VWlkKHNuYXBzaG90LnVpZCgpKQogICAgICAgICAuc2V0VGl0bGUoc25h
cHNob3QudGl0bGUoKSk7CiAgICAgaGVhZGVyLT5zZXRNYXhKU09iamVjdElkKHNuYXBzaG90Lm1h
eFNuYXBzaG90SlNPYmplY3RJZCgpKTsKQEAgLTI0MywxMCArMjQzLDEwIEBAIFN0cmluZyBJbnNw
ZWN0b3JQcm9maWxlckFnZW50OjpnZXRDdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOYW1lKGJv
b2wgaW5jcmVtZW50CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoVXNlckluaXRpYXRlZFByb2ZpbGVO
YW1lLCAnLicsIFN0cmluZzo6bnVtYmVyKG1fY3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTnVt
YmVyKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0UHJvZmlsZUhlYWRl
cnMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQ
cm9maWxlcjo6UHJvZmlsZUhlYWRlcj4+JiBoZWFkZXJzKQordm9pZCBJbnNwZWN0b3JQcm9maWxl
ckFnZW50OjpnZXRQcm9maWxlSGVhZGVycyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJv
ZmlsZUhlYWRlcj4+JiBoZWFkZXJzKQogewogICAgIG1fcHJvZmlsZUhlYWRlcnNSZXF1ZXN0ZWQg
PSB0cnVlOwotICAgIGhlYWRlcnMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBy
b2ZpbGVyOjpQcm9maWxlSGVhZGVyPjo6Y3JlYXRlKCk7CisgICAgaGVhZGVycyA9IEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQ
cm9maWxlSGVhZGVyPjo6Y3JlYXRlKCk7CiAKICAgICBQcm9maWxlc01hcDo6aXRlcmF0b3IgcHJv
ZmlsZXNFbmQgPSBtX3Byb2ZpbGVzLmVuZCgpOwogICAgIGZvciAoUHJvZmlsZXNNYXA6Oml0ZXJh
dG9yIGl0ID0gbV9wcm9maWxlcy5iZWdpbigpOyBpdCAhPSBwcm9maWxlc0VuZDsgKytpdCkKQEAg
LTI3MSw3ICsyNzEsNyBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZQogCi12b2lkIEluc3Bl
Y3RvclByb2ZpbGVyQWdlbnQ6OmdldENQVVByb2ZpbGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBpbnQgcmF3VWlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlPiYg
cHJvZmlsZU9iamVjdCkKK3ZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0Q1BVUHJvZmls
ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCByYXdVaWQsIFJlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZT4mIHByb2ZpbGVPYmplY3QpCiB7CiAg
ICAgdW5zaWduZWQgdWlkID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJhd1VpZCk7CiAgICAgUHJv
ZmlsZXNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wcm9maWxlcy5maW5kKHVpZCk7CkBAIC0yNzksNyAr
Mjc5LDcgQEAgdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRDUFVQcm9maWxlKEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgaW50IHJhd1VpZCwKICAgICAgICAgKmVycm9yU3RyaW5nID0g
IlByb2ZpbGUgd2Fzbid0IGZvdW5kIjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBwcm9m
aWxlT2JqZWN0ID0gVHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlOjpjcmVhdGUoKTsK
KyAgICBwcm9maWxlT2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQ
VVByb2ZpbGU6OmNyZWF0ZSgpOwogICAgIHByb2ZpbGVPYmplY3QtPnNldEhlYWQoaXQtPnZhbHVl
LT5idWlsZEluc3BlY3Rvck9iamVjdEZvckhlYWQoKSk7CiAgICAgcHJvZmlsZU9iamVjdC0+c2V0
SWRsZVRpbWUoaXQtPnZhbHVlLT5pZGxlVGltZSgpKTsKIH0KQEAgLTQxNyw3ICs0MTcsNyBAQCB2
b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnRvZ2dsZVJlY29yZEJ1dHRvbihib29sIGlzUHJv
ZmlsaW5nKQogICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+c2V0UmVjb3JkaW5nUHJvZmls
ZShpc1Byb2ZpbGluZyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0T2Jq
ZWN0QnlIZWFwT2JqZWN0SWQoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIGhlYXBT
bmFwc2hvdE9iamVjdElkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8VHlwZUJ1
aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudDo6Z2V0T2JqZWN0QnlIZWFwT2JqZWN0SWQoRXJyb3JTdHJpbmcqIGVycm9yLCBj
b25zdCBTdHJpbmcmIGhlYXBTbmFwc2hvdE9iamVjdElkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdy
b3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0
PiYgcmVzdWx0KQogewogICAgIGJvb2wgb2s7CiAgICAgdW5zaWduZWQgaWQgPSBoZWFwU25hcHNo
b3RPYmplY3RJZC50b1VJbnQoJm9rKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oCmluZGV4IDFmYTA3YzUuLjY2ZmJiYmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaApAQCAt
ODcsOCArODcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmFibGUoYm9vbCBza2lwUmVjb21waWxl
KTsKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KICAgICBT
dHJpbmcgZ2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZShib29sIGluY3JlbWVudFBy
b2ZpbGVOdW1iZXIgPSBmYWxzZSk7Ci0gICAgdmlydHVhbCB2b2lkIGdldFByb2ZpbGVIZWFkZXJz
KEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UHJv
ZmlsZXI6OlByb2ZpbGVIZWFkZXI+PiYpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRDUFVQcm9maWxl
KEVycm9yU3RyaW5nKiwgaW50IHVpZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BV
UHJvZmlsZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvZmlsZUhlYWRlcnMoRXJyb3JTdHJp
bmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+PiYpOworICAgIHZpcnR1YWwgdm9pZCBn
ZXRDUFVQcm9maWxlKEVycm9yU3RyaW5nKiwgaW50IHVpZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlPiYpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRI
ZWFwU25hcHNob3QoRXJyb3JTdHJpbmcqLCBpbnQgdWlkKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlUHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlwZSwgaW50IHVpZCk7CiAK
QEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0YWtlSGVhcFNuYXBz
aG90KEVycm9yU3RyaW5nKiwgY29uc3QgYm9vbCogcmVwb3J0UHJvZ3Jlc3MpOwogICAgIHZvaWQg
dG9nZ2xlUmVjb3JkQnV0dG9uKGJvb2wgaXNQcm9maWxpbmcpOwogCi0gICAgdmlydHVhbCB2b2lk
IGdldE9iamVjdEJ5SGVhcE9iamVjdElkKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBoZWFw
U25hcHNob3RPYmplY3RJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgUmVmUHRyPFR5cGVC
dWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9p
ZCBnZXRPYmplY3RCeUhlYXBPYmplY3RJZChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgaGVh
cFNuYXBzaG90T2JqZWN0SWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpOwogICAg
IHZpcnR1YWwgdm9pZCBnZXRIZWFwT2JqZWN0SWQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcm
IG9iamVjdElkLCBTdHJpbmcqIGhlYXBTbmFwc2hvdE9iamVjdElkKTsKIAogcHJvdGVjdGVkOgpA
QCAtMTEzLDggKzExMyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNldEZyb250ZW5kUHJvZmls
ZXMoKTsKICAgICB2b2lkIHJlc3RvcmVFbmFibGVtZW50KCk7CiAKLSAgICBQYXNzUmVmUHRyPFR5
cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4gY3JlYXRlUHJvZmlsZUhlYWRlcihj
b25zdCBTY3JpcHRQcm9maWxlJik7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UHJvZmls
ZXI6OlByb2ZpbGVIZWFkZXI+IGNyZWF0ZVNuYXBzaG90SGVhZGVyKGNvbnN0IFNjcmlwdEhlYXBT
bmFwc2hvdCYpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UHJvZmls
ZXI6OlByb2ZpbGVIZWFkZXI+IGNyZWF0ZVByb2ZpbGVIZWFkZXIoY29uc3QgU2NyaXB0UHJvZmls
ZSYpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlBy
b2ZpbGVIZWFkZXI+IGNyZWF0ZVNuYXBzaG90SGVhZGVyKGNvbnN0IFNjcmlwdEhlYXBTbmFwc2hv
dCYpOwogCiAgICAgSW5zcGVjdG9yQ29uc29sZUFnZW50KiBtX2NvbnNvbGVBZ2VudDsKICAgICBJ
bmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4
IDVmYWRiNDEuLjU3NjhiZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTEwMSw5ICsxMDEsOSBAQCBzdGF0aWMgUGFz
c1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9ySGVhZGVycyhjb25zdCBIVFRQ
SGVhZGVyTWFwJiBoZQogICAgIHJldHVybiBoZWFkZXJzT2JqZWN0OwogfQogCi1zdGF0aWMgUGFz
c1JlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVzb3VyY2VUaW1pbmc+IGJ1aWxkT2JqZWN0
Rm9yVGltaW5nKGNvbnN0IFJlc291cmNlTG9hZFRpbWluZyYgdGltaW5nLCBEb2N1bWVudExvYWRl
ciogbG9hZGVyKQorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0
d29yazo6UmVzb3VyY2VUaW1pbmc+IGJ1aWxkT2JqZWN0Rm9yVGltaW5nKGNvbnN0IFJlc291cmNl
TG9hZFRpbWluZyYgdGltaW5nLCBEb2N1bWVudExvYWRlciogbG9hZGVyKQogewotICAgIHJldHVy
biBUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVzb3VyY2VUaW1pbmc6OmNyZWF0ZSgpCisgICAgcmV0
dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc291cmNlVGltaW5nOjpjcmVh
dGUoKQogICAgICAgICAuc2V0UmVxdWVzdFRpbWUobG9hZGVyLT50aW1pbmcoKS0+bW9ub3Rvbmlj
VGltZVRvUHNldWRvV2FsbFRpbWUodGltaW5nLmNvbnZlcnRSZXNvdXJjZUxvYWRUaW1lVG9Nb25v
dG9uaWNUaW1lKDApKSkKICAgICAgICAgLnNldFByb3h5U3RhcnQodGltaW5nLnByb3h5U3RhcnQp
CiAgICAgICAgIC5zZXRQcm94eUVuZCh0aW1pbmcucHJveHlFbmQpCkBAIC0xMTksOSArMTE5LDkg
QEAgc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc291cmNlVGltaW5n
PiBidWlsZE9iamVjdEZvclRpbWluZyhjb24KICAgICAgICAgLnJlbGVhc2UoKTsKIH0KIAotc3Rh
dGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlcXVlc3Q+IGJ1aWxkT2JqZWN0
Rm9yUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3N0YXRp
YyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlcXVlc3Q+IGJ1
aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlcXVlc3Q+IHJlcXVlc3RP
YmplY3QgPSBUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVxdWVzdDo6Y3JlYXRlKCkKKyAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVxdWVzdD4gcmVxdWVzdE9iamVj
dCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlcXVlc3Q6OmNyZWF0ZSgpCiAg
ICAgICAgIC5zZXRVcmwocmVxdWVzdC51cmwoKS5zdHJpbmcoKSkKICAgICAgICAgLnNldE1ldGhv
ZChyZXF1ZXN0Lmh0dHBNZXRob2QoKSkKICAgICAgICAgLnNldEhlYWRlcnMoYnVpbGRPYmplY3RG
b3JIZWFkZXJzKHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygpKSk7CkBAIC0xMzAsNyArMTMwLDcg
QEAgc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlcXVlc3Q+IGJ1aWxk
T2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KGMKICAgICByZXR1cm4gcmVxdWVzdE9iamVjdDsKIH0K
IAotc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc3BvbnNlPiBidWls
ZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCitzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNwb25zZT4gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBEb2N1bWVudExvYWRlciog
bG9hZGVyKQogewogICAgIGlmIChyZXNwb25zZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7
CkBAIC0xMzgsNyArMTM4LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdv
cms6OlJlc3BvbnNlPiBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UKICAgICBkb3VibGUg
c3RhdHVzID0gcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKTsKICAgICBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBoZWFkZXJzID0gYnVpbGRPYmplY3RGb3JIZWFkZXJzKHJlc3BvbnNlLmh0dHBIZWFk
ZXJGaWVsZHMoKSk7CiAKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc3BvbnNl
PiByZXNwb25zZU9iamVjdCA9IFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNwb25zZTo6Y3JlYXRl
KCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVzcG9uc2U+
IHJlc3BvbnNlT2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVzcG9u
c2U6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRVcmwocmVzcG9uc2UudXJsKCkuc3RyaW5nKCkpCiAg
ICAgICAgIC5zZXRTdGF0dXMoc3RhdHVzKQogICAgICAgICAuc2V0U3RhdHVzVGV4dChyZXNwb25z
ZS5odHRwU3RhdHVzVGV4dCgpKQpAQCAtMTU0LDE0ICsxNTQsMTQgQEAgc3RhdGljIFBhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc3BvbnNlPiBidWlsZE9iamVjdEZvclJlc291cmNl
UmVzcG9uc2UKICAgICByZXR1cm4gcmVzcG9uc2VPYmplY3Q7CiB9CiAKLXN0YXRpYyBQYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpDYWNoZWRSZXNvdXJjZT4gYnVpbGRPYmplY3RGb3JD
YWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UsIERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIpCitzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpO
ZXR3b3JrOjpDYWNoZWRSZXNvdXJjZT4gYnVpbGRPYmplY3RGb3JDYWNoZWRSZXNvdXJjZShDYWNo
ZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7Ci0g
ICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpDYWNoZWRSZXNvdXJjZT4gcmVzb3VyY2VP
YmplY3QgPSBUeXBlQnVpbGRlcjo6TmV0d29yazo6Q2FjaGVkUmVzb3VyY2U6OmNyZWF0ZSgpCisg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkNhY2hlZFJlc291cmNl
PiByZXNvdXJjZU9iamVjdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkNhY2hl
ZFJlc291cmNlOjpjcmVhdGUoKQogICAgICAgICAuc2V0VXJsKGNhY2hlZFJlc291cmNlLT51cmwo
KSkKICAgICAgICAgLnNldFR5cGUoSW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZVR5
cGVKc29uKCpjYWNoZWRSZXNvdXJjZSkpCiAgICAgICAgIC5zZXRCb2R5U2l6ZShjYWNoZWRSZXNv
dXJjZS0+ZW5jb2RlZFNpemUoKSk7CiAKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6
OlJlc3BvbnNlPiByZXNvdXJjZVJlc3BvbnNlID0gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3Bv
bnNlKGNhY2hlZFJlc291cmNlLT5yZXNwb25zZSgpLCBsb2FkZXIpOworICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNwb25zZT4gcmVzb3VyY2VSZXNwb25zZSA9
IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShjYWNoZWRSZXNvdXJjZS0+cmVzcG9uc2Uo
KSwgbG9hZGVyKTsKICAgICBpZiAocmVzb3VyY2VSZXNwb25zZSkKICAgICAgICAgcmVzb3VyY2VP
YmplY3QtPnNldFJlc3BvbnNlKHJlc291cmNlUmVzcG9uc2UpOwogCkBAIC0yMTcsOSArMjE3LDkg
QEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudEwKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVy
RmllbGQoIkNhY2hlLUNvbnRyb2wiLCAibm8tY2FjaGUiKTsKICAgICB9CiAKLSAgICBUeXBlQnVp
bGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpFbnVtIHJlc291cmNlVHlwZSA9IEluc3BlY3RvclBh
Z2VBZ2VudDo6cmVzb3VyY2VUeXBlSnNvbih0eXBlKTsKKyAgICBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkVudW0gcmVzb3VyY2VUeXBlID0gSW5zcGVjdG9yUGFn
ZUFnZW50OjpyZXNvdXJjZVR5cGVKc29uKHR5cGUpOwogCi0gICAgUmVmUHRyPFR5cGVCdWlsZGVy
OjpOZXR3b3JrOjpJbml0aWF0b3I+IGluaXRpYXRvck9iamVjdCA9IGJ1aWxkSW5pdGlhdG9yT2Jq
ZWN0KGxvYWRlci0+ZnJhbWUoKSA/IGxvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSA6IDApOwor
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IGlu
aXRpYXRvck9iamVjdCA9IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KGxvYWRlci0+ZnJhbWUoKSA/IGxv
YWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSA6IDApOwogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVy
LT5yZXF1ZXN0V2lsbEJlU2VudChyZXF1ZXN0SWQsIG1fcGFnZUFnZW50LT5mcmFtZUlkKGxvYWRl
ci0+ZnJhbWUoKSksIG1fcGFnZUFnZW50LT5sb2FkZXJJZChsb2FkZXIpLCBsb2FkZXItPnVybCgp
LnN0cmluZygpLCBidWlsZE9iamVjdEZvclJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwgY3VycmVu
dFRpbWUoKSwgaW5pdGlhdG9yT2JqZWN0LCBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2Uo
cmVkaXJlY3RSZXNwb25zZSwgbG9hZGVyKSwgdHlwZSAhPSBJbnNwZWN0b3JQYWdlQWdlbnQ6Ok90
aGVyUmVzb3VyY2UgPyAmcmVzb3VyY2VUeXBlIDogMCk7CiB9CiAKQEAgLTIzMSw3ICsyMzEsNyBA
QCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6Om1hcmtSZXNvdXJjZUFzQ2FjaGVkKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllcikKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxv
YWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVyKiBy
ZXNvdXJjZUxvYWRlcikKIHsKICAgICBTdHJpbmcgcmVxdWVzdElkID0gSWRlbnRpZmllcnNGYWN0
b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllcik7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3
b3JrOjpSZXNwb25zZT4gcmVzb3VyY2VSZXNwb25zZSA9IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VS
ZXNwb25zZShyZXNwb25zZSwgbG9hZGVyKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6TmV0d29yazo6UmVzcG9uc2U+IHJlc291cmNlUmVzcG9uc2UgPSBidWlsZE9iamVjdEZv
clJlc291cmNlUmVzcG9uc2UocmVzcG9uc2UsIGxvYWRlcik7CiAKICAgICBib29sIGlzTm90TW9k
aWZpZWQgPSByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsKIApAQCAtMjQ0LDcgKzI0
NCw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lCiAgICAgaWYgKGNhY2hlZFJlc291cmNlKSB7
CiAgICAgICAgIC8vIFVzZSBtaW1lIHR5cGUgZnJvbSBjYWNoZWQgcmVzb3VyY2UgaW4gY2FzZSB0
aGUgb25lIGluIHJlc3BvbnNlIGlzIGVtcHR5LgogICAgICAgICBpZiAocmVzb3VyY2VSZXNwb25z
ZSAmJiByZXNwb25zZS5taW1lVHlwZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJlc291cmNl
UmVzcG9uc2UtPnNldFN0cmluZyhUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVzcG9uc2U6Ok1pbWVU
eXBlLCBjYWNoZWRSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpKTsKKyAgICAgICAgICAg
IHJlc291cmNlUmVzcG9uc2UtPnNldFN0cmluZyhJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3
b3JrOjpSZXNwb25zZTo6TWltZVR5cGUsIGNhY2hlZFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVU
eXBlKCkpOwogICAgICAgICBtX3Jlc291cmNlc0RhdGEtPmFkZENhY2hlZFJlc291cmNlKHJlcXVl
c3RJZCwgY2FjaGVkUmVzb3VyY2UpOwogICAgIH0KIApAQCAtMzM2LDcgKzMzNiw3IEBAIHZvaWQg
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERv
Y3VtZW50TG9hZGVyKiBsb2FkCiAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+cmV1c2VYSFJSZXBs
YXlEYXRhKHJlcXVlc3RJZCwgcmF3UmVxdWVzdElkKTsKICAgICB9CiAKLSAgICBSZWZQdHI8VHlw
ZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4gaW5pdGlhdG9yT2JqZWN0ID0gYnVpbGRJbml0
aWF0b3JPYmplY3QobG9hZGVyLT5mcmFtZSgpID8gbG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgp
IDogMCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRp
YXRvcj4gaW5pdGlhdG9yT2JqZWN0ID0gYnVpbGRJbml0aWF0b3JPYmplY3QobG9hZGVyLT5mcmFt
ZSgpID8gbG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpIDogMCk7CiAKICAgICBtX2Zyb250ZW5k
RGlzcGF0Y2hlci0+cmVxdWVzdFNlcnZlZEZyb21NZW1vcnlDYWNoZShyZXF1ZXN0SWQsIGZyYW1l
SWQsIGxvYWRlcklkLCBsb2FkZXItPnVybCgpLnN0cmluZygpLCBjdXJyZW50VGltZSgpLCBpbml0
aWF0b3JPYmplY3QsIGJ1aWxkT2JqZWN0Rm9yQ2FjaGVkUmVzb3VyY2UocmVzb3VyY2UsIGxvYWRl
cikpOwogfQpAQCAtNDQxLDE5ICs0NDEsMTkgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50
OjpkaWRTY2hlZHVsZVN0eWxlUmVjYWxjdWxhdGlvbihEb2N1bWVudCogZG9jdW1lbnQpCiAgICAg
ICAgIG1fc3R5bGVSZWNhbGN1bGF0aW9uSW5pdGlhdG9yID0gYnVpbGRJbml0aWF0b3JPYmplY3Qo
ZG9jdW1lbnQpOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0
b3I+IEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmJ1aWxkSW5pdGlhdG9yT2JqZWN0KERvY3VtZW50
KiBkb2N1bWVudCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6
SW5pdGlhdG9yPiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpidWlsZEluaXRpYXRvck9iamVjdChE
b2N1bWVudCogZG9jdW1lbnQpCiB7CiAgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gc3RhY2tU
cmFjZSA9IGNyZWF0ZVNjcmlwdENhbGxTdGFjayhTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFj
a1NpemVUb0NhcHR1cmUsIHRydWUpOwogICAgIGlmIChzdGFja1RyYWNlICYmIHN0YWNrVHJhY2Ut
PnNpemUoKSA+IDApIHsKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0
aWF0b3I+IGluaXRpYXRvck9iamVjdCA9IFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I6
OmNyZWF0ZSgpCi0gICAgICAgICAgICAuc2V0VHlwZShUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5p
dGlhdG9yOjpUeXBlOjpTY3JpcHQpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6TmV0d29yazo6SW5pdGlhdG9yPiBpbml0aWF0b3JPYmplY3QgPSBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I6OmNyZWF0ZSgpCisgICAgICAgICAgICAuc2V0
VHlwZShJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I6OlR5cGU6OlNj
cmlwdCk7CiAgICAgICAgIGluaXRpYXRvck9iamVjdC0+c2V0U3RhY2tUcmFjZShzdGFja1RyYWNl
LT5idWlsZEluc3BlY3RvckFycmF5KCkpOwogICAgICAgICByZXR1cm4gaW5pdGlhdG9yT2JqZWN0
OwogICAgIH0KIAogICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC0+c2NyaXB0YWJsZURvY3Vt
ZW50UGFyc2VyKCkpIHsKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0
aWF0b3I+IGluaXRpYXRvck9iamVjdCA9IFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I6
OmNyZWF0ZSgpCi0gICAgICAgICAgICAuc2V0VHlwZShUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5p
dGlhdG9yOjpUeXBlOjpQYXJzZXIpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6TmV0d29yazo6SW5pdGlhdG9yPiBpbml0aWF0b3JPYmplY3QgPSBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I6OmNyZWF0ZSgpCisgICAgICAgICAgICAuc2V0
VHlwZShJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I6OlR5cGU6OlBh
cnNlcik7CiAgICAgICAgIGluaXRpYXRvck9iamVjdC0+c2V0VXJsKGRvY3VtZW50LT51cmwoKS5z
dHJpbmcoKSk7CiAgICAgICAgIGluaXRpYXRvck9iamVjdC0+c2V0TGluZU51bWJlcihkb2N1bWVu
dC0+c2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCktPmxpbmVOdW1iZXIoKS5vbmVCYXNlZEludCgp
KTsKICAgICAgICAgcmV0dXJuIGluaXRpYXRvck9iamVjdDsKQEAgLTQ2Miw4ICs0NjIsOCBAQCBQ
YXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IEluc3BlY3RvclJlc291
cmNlQWdlbnQ6OmJ1aWxkSW5pdGlhdAogICAgIGlmIChtX2lzUmVjYWxjdWxhdGluZ1N0eWxlICYm
IG1fc3R5bGVSZWNhbGN1bGF0aW9uSW5pdGlhdG9yKQogICAgICAgICByZXR1cm4gbV9zdHlsZVJl
Y2FsY3VsYXRpb25Jbml0aWF0b3I7CiAKLSAgICByZXR1cm4gVHlwZUJ1aWxkZXI6Ok5ldHdvcms6
OkluaXRpYXRvcjo6Y3JlYXRlKCkKLSAgICAgICAgLnNldFR5cGUoVHlwZUJ1aWxkZXI6Ok5ldHdv
cms6OkluaXRpYXRvcjo6VHlwZTo6T3RoZXIpCisgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcjo6Y3JlYXRlKCkKKyAgICAgICAgLnNldFR5cGUoSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yOjpUeXBlOjpPdGhlcikKICAg
ICAgICAgLnJlbGVhc2UoKTsKIH0KIApAQCAtNDc2LDE0ICs0NzYsMTQgQEAgdm9pZCBJbnNwZWN0
b3JSZXNvdXJjZUFnZW50OjpkaWRDcmVhdGVXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdAogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxTZW5kV2ViU29j
a2V0SGFuZHNoYWtlUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6
OldlYlNvY2tldFJlcXVlc3Q+IHJlcXVlc3RPYmplY3QgPSBUeXBlQnVpbGRlcjo6TmV0d29yazo6
V2ViU29ja2V0UmVxdWVzdDo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6TmV0d29yazo6V2ViU29ja2V0UmVxdWVzdD4gcmVxdWVzdE9iamVjdCA9IEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OldlYlNvY2tldFJlcXVlc3Q6OmNyZWF0ZSgpCiAgICAg
ICAgIC5zZXRIZWFkZXJzKGJ1aWxkT2JqZWN0Rm9ySGVhZGVycyhyZXF1ZXN0Lmh0dHBIZWFkZXJG
aWVsZHMoKSkpOwogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT53ZWJTb2NrZXRXaWxsU2VuZEhh
bmRzaGFrZVJlcXVlc3QoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllciks
IGN1cnJlbnRUaW1lKCksIHJlcXVlc3RPYmplY3QpOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291
cmNlQWdlbnQ6OmRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAg
IFJlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6V2ViU29ja2V0UmVzcG9uc2U+IHJlc3BvbnNl
T2JqZWN0ID0gVHlwZUJ1aWxkZXI6Ok5ldHdvcms6OldlYlNvY2tldFJlc3BvbnNlOjpjcmVhdGUo
KQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpXZWJTb2NrZXRS
ZXNwb25zZT4gcmVzcG9uc2VPYmplY3QgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3Jr
OjpXZWJTb2NrZXRSZXNwb25zZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldFN0YXR1cyhyZXNwb25z
ZS5odHRwU3RhdHVzQ29kZSgpKQogICAgICAgICAuc2V0U3RhdHVzVGV4dChyZXNwb25zZS5odHRw
U3RhdHVzVGV4dCgpKQogICAgICAgICAuc2V0SGVhZGVycyhidWlsZE9iamVjdEZvckhlYWRlcnMo
cmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpKSk7CkBAIC00OTcsNyArNDk3LDcgQEAgdm9pZCBJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRDbG9zZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIpCiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNv
Y2tldEZyYW1lKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViU29ja2V0RnJhbWUm
IGZyYW1lKQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6V2ViU29ja2V0RnJh
bWU+IGZyYW1lT2JqZWN0ID0gVHlwZUJ1aWxkZXI6Ok5ldHdvcms6OldlYlNvY2tldEZyYW1lOjpj
cmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpXZWJT
b2NrZXRGcmFtZT4gZnJhbWVPYmplY3QgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3Jr
OjpXZWJTb2NrZXRGcmFtZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldE9wY29kZShmcmFtZS5vcENv
ZGUpCiAgICAgICAgIC5zZXRNYXNrKGZyYW1lLm1hc2tlZCkKICAgICAgICAgLnNldFBheWxvYWRE
YXRhKFN0cmluZyhmcmFtZS5wYXlsb2FkLCBmcmFtZS5wYXlsb2FkTGVuZ3RoKSk7CkBAIC01MDYs
NyArNTA2LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlV2ViU29j
a2V0RnJhbWUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLAogCiB2b2lkIEluc3BlY3RvclJlc291
cmNlQWdlbnQ6OmRpZFNlbmRXZWJTb2NrZXRGcmFtZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IFdlYlNvY2tldEZyYW1lJiBmcmFtZSkKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6
Ok5ldHdvcms6OldlYlNvY2tldEZyYW1lPiBmcmFtZU9iamVjdCA9IFR5cGVCdWlsZGVyOjpOZXR3
b3JrOjpXZWJTb2NrZXRGcmFtZTo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6TmV0d29yazo6V2ViU29ja2V0RnJhbWU+IGZyYW1lT2JqZWN0ID0gSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6TmV0d29yazo6V2ViU29ja2V0RnJhbWU6OmNyZWF0ZSgpCiAgICAgICAg
IC5zZXRPcGNvZGUoZnJhbWUub3BDb2RlKQogICAgICAgICAuc2V0TWFzayhmcmFtZS5tYXNrZWQp
CiAgICAgICAgIC5zZXRQYXlsb2FkRGF0YShTdHJpbmcoZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5
bG9hZExlbmd0aCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZUFnZW50LmgKaW5kZXggMzI0ODc0ZC4uNDM1NjU5MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCkBAIC0xMTUsNyArMTE1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjYWxjdWxhdGVTdHlsZSgpOwogICAgIHZvaWQg
ZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24oRG9jdW1lbnQqKTsKIAotICAgIFBhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4gYnVpbGRJbml0aWF0b3JPYmplY3Qo
RG9jdW1lbnQqKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdv
cms6OkluaXRpYXRvcj4gYnVpbGRJbml0aWF0b3JPYmplY3QoRG9jdW1lbnQqKTsKIAogI2lmIEVO
QUJMRShXRUJfU09DS0VUUykKICAgICB2b2lkIGRpZENyZWF0ZVdlYlNvY2tldCh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCk7CkBAIC0xNjQsNyArMTY0LDcg
QEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8VGhyZWFkYWJsZUxvYWRlckNsaWVudCos
IFJlZlB0cjxYSFJSZXBsYXlEYXRhPj4gUGVuZGluZ1hIUlJlcGxheURhdGFNYXA7CiAgICAgUGVu
ZGluZ1hIUlJlcGxheURhdGFNYXAgbV9wZW5kaW5nWEhSUmVwbGF5RGF0YTsKICAgICAvLyBGSVhN
RTogSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCBzaG91bGQgbm93IGJlIGF3YXJlIG9mIHN0eWxlIHJl
Y2FsY3VsYXRpb24uCi0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+
IG1fc3R5bGVSZWNhbGN1bGF0aW9uSW5pdGlhdG9yOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IG1fc3R5bGVSZWNhbGN1bGF0aW9uSW5pdGlh
dG9yOwogICAgIGJvb2wgbV9pc1JlY2FsY3VsYXRpbmdTdHlsZTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggNmVh
MmY5Yy4uYWQ4YzQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5jcHAKQEAgLTg0LDE1ICs4NCwxNSBAQCBzdGF0aWMgU2NyaXB0RGVi
dWdTZXJ2ZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGUgc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0
ZShTY3JpcAogfQogI2VuZGlmCiAKLXN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50
aW1lOjpFcnJvclJhbmdlPiBidWlsZEVycm9yUmFuZ2VPYmplY3QoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiB0b2tlbkxvY2F0aW9uKQorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6UnVudGltZTo6RXJyb3JSYW5nZT4gYnVpbGRFcnJvclJhbmdlT2JqZWN0KGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgdG9rZW5Mb2NhdGlvbikKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6
OlJ1bnRpbWU6OkVycm9yUmFuZ2U+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpSdW50aW1lOjpFcnJv
clJhbmdlOjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50
aW1lOjpFcnJvclJhbmdlPiByZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1l
OjpFcnJvclJhbmdlOjpjcmVhdGUoKQogICAgICAgICAuc2V0U3RhcnRPZmZzZXQodG9rZW5Mb2Nh
dGlvbi5zdGFydE9mZnNldCkKICAgICAgICAgLnNldEVuZE9mZnNldCh0b2tlbkxvY2F0aW9uLmVu
ZE9mZnNldCk7CiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yUnVudGltZUFnZW50OjpwYXJzZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZXhwcmVz
c2lvbiwgVHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZTo6RW51bSogcmVzdWx0
LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PFN0cmluZz4qIG1lc3NhZ2UsIFJlZlB0cjxUeXBlQnVp
bGRlcjo6UnVudGltZTo6RXJyb3JSYW5nZT4mIHJhbmdlKQordm9pZCBJbnNwZWN0b3JSdW50aW1l
QWdlbnQ6OnBhcnNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGU6OkVudW0qIHJlc3Vs
dCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PFN0cmluZz4qIG1lc3NhZ2UsIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpFcnJvclJhbmdlPiYgcmFuZ2Up
CiB7CiAgICAgVk0qIHZtID0gSlNET01XaW5kb3dCYXNlOjpjb21tb25WTSgpOwogICAgIEpTTG9j
a0hvbGRlciBsb2NrKHZtKTsKQEAgLTEwMiwxNiArMTAyLDE2IEBAIHZvaWQgSW5zcGVjdG9yUnVu
dGltZUFnZW50OjpwYXJzZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwg
VHlwZUJ1CiAKICAgICBzd2l0Y2ggKGVycm9yLm1fc3ludGF4RXJyb3JUeXBlKSB7CiAgICAgY2Fz
ZSBQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3JOb25lOgotICAgICAgICAqcmVzdWx0ID0gVHlwZUJ1
aWxkZXI6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZTo6Tm9uZTsKKyAgICAgICAgKnJlc3VsdCA9
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZTo6Tm9uZTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3JJcnJlY292
ZXJhYmxlOgotICAgICAgICAqcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlN5bnRheEVy
cm9yVHlwZTo6SXJyZWNvdmVyYWJsZTsKKyAgICAgICAgKnJlc3VsdCA9IEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZTo6SXJyZWNvdmVyYWJsZTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3JVbnRlcm1pbmF0ZWRM
aXRlcmFsOgotICAgICAgICAqcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlN5bnRheEVy
cm9yVHlwZTo6VW50ZXJtaW5hdGVkTGl0ZXJhbDsKKyAgICAgICAgKnJlc3VsdCA9IEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZTo6VW50ZXJtaW5hdGVkTGl0
ZXJhbDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3JS
ZWNvdmVyYWJsZToKLSAgICAgICAgKnJlc3VsdCA9IFR5cGVCdWlsZGVyOjpSdW50aW1lOjpTeW50
YXhFcnJvclR5cGU6OlJlY292ZXJhYmxlOworICAgICAgICAqcmVzdWx0ID0gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBlOjpSZWNvdmVyYWJsZTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBJbnNwZWN0b3JSdW50
aW1lQWdlbnQ6OnBhcnNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBU
eXBlQnUKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpldmFsdWF0ZShF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3Qg
U3RyaW5nKiBjb25zdCBvYmplY3RHcm91cCwgY29uc3QgYm9vbCogY29uc3QgaW5jbHVkZUNvbW1h
bmRMaW5lQVBJLCBjb25zdCBib29sKiBjb25zdCBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0
ZUNvbnNvbGUsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkLCBjb25zdCBib29sKiBjb25z
dCByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxUeXBl
QnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBUeXBlQnVpbGRlcjo6T3B0
T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZXZh
bHVhdGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24s
IGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGNvbnN0IGluY2x1
ZGVDb21tYW5kTGluZUFQSSwgY29uc3QgYm9vbCogY29uc3QgZG9Ob3RQYXVzZU9uRXhjZXB0aW9u
c0FuZE11dGVDb25zb2xlLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCwgY29uc3QgYm9v
bCogY29uc3QgcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0
LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKIHsK
ICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0Rm9yRXZh
bChlcnJvclN0cmluZywgZXhlY3V0aW9uQ29udGV4dElkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3Jp
cHQuaGFzTm9WYWx1ZSgpKQpAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGlt
ZUFnZW50OjpldmFsdWF0ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYg
ZXhwCiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Y2FsbEZ1bmN0aW9u
T24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25z
dCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIGNvbnN0
IG9wdGlvbmFsQXJndW1lbnRzLCBjb25zdCBib29sKiBjb25zdCBkb05vdFBhdXNlT25FeGNlcHRp
b25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGJvb2wqIGNvbnN0IHJldHVybkJ5VmFsdWUsIGNvbnN0
IGJvb2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+JiByZXN1bHQsIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93
bikKK3ZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpjYWxsRnVuY3Rpb25PbihFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhw
cmVzc2lvbiwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiogY29uc3Qgb3B0aW9uYWxBcmd1
bWVudHMsIGNvbnN0IGJvb2wqIGNvbnN0IGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29u
c29sZSwgY29uc3QgYm9vbCogY29uc3QgcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJh
dGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4q
IHdhc1Rocm93bikKIHsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKG9iamVjdElkKTsK
ICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CkBAIC0xNzMsNyArMTczLDcg
QEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgY29uc3QgU3RyaW4KICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yUnVu
dGltZUFnZW50OjpnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCogY29uc3Qgb3duUHJvcGVydGllcywgUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlw
dG9yPj4mIHJlc3VsdCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UnVu
dGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgaW50ZXJuYWxQcm9wZXJ0aWVzKQor
dm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBib29sKiBjb25zdCBvd25Q
cm9wZXJ0aWVzLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4mIHJlc3VsdCwgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4mIGludGVybmFsUHJvcGVydGll
cykKIHsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKG9iamVjdElkKTsKICAgICBpZiAo
aW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKaW5kZXggMjA4MmMzYS4uZGU0NjkzMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaApA
QCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgLy8gUGFydCBvZiB0aGUgcHJvdG9jb2wuCiAg
ICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopIHsgbV9lbmFibGVkID0gdHJ1ZTsg
fQogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKikgeyBtX2VuYWJsZWQgPSBm
YWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBwYXJzZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgZXhwcmVzc2lvbiwgVHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZTo6RW51
bSogcmVzdWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PFN0cmluZz4qIG1lc3NhZ2UsIFJlZlB0
cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6RXJyb3JSYW5nZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQg
cGFyc2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZTo6RW51bSogcmVzdWx0LCBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8U3RyaW5nPiogbWVzc2FnZSwgUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkVycm9yUmFuZ2U+Jik7CiAgICAgdmlydHVh
bCB2b2lkIGV2YWx1YXRlKEVycm9yU3RyaW5nKiwKICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0
cmluZyYgZXhwcmVzc2lvbiwKICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyogb2JqZWN0
R3JvdXAsCkBAIC03Myw4ICs3Myw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgIGNvbnN0
IGludCogZXhlY3V0aW9uQ29udGV4dElkLAogICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCog
cmV0dXJuQnlWYWx1ZSwKICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJl
dmlldywKLSAgICAgICAgICAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVt
b3RlT2JqZWN0PiYgcmVzdWx0LAotICAgICAgICAgICAgICAgICAgVHlwZUJ1aWxkZXI6Ok9wdE91
dHB1dDxib29sPiogd2FzVGhyb3duKTsKKyAgICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsCisgICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Ro
cm93bik7CiAgICAgdmlydHVhbCB2b2lkIGNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nKiwKICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sCkBAIC04MiwxMCArODIsMTAg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCogZG9Ob3RQYXVz
ZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLAogICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJv
b2wqIGdlbmVyYXRlUHJldmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxUeXBl
QnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1l
OjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7CiAgICAgdmlydHVh
bCB2b2lkIHJlbGVhc2VPYmplY3QoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElk
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIG93blByb3BlcnRpZXMsIFJlZlB0cjxUeXBlQnVp
bGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiBy
ZXN1bHQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6Oklu
dGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4mIGludGVybmFsUHJvcGVydGllcyk7CisgICAgdmly
dHVhbCB2b2lkIGdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVj
dElkLCBjb25zdCBib29sKiBvd25Qcm9wZXJ0aWVzLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UHJvcGVydHlEZXNj
cmlwdG9yPj4mIHJlc3VsdCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9y
Pj4mIGludGVybmFsUHJvcGVydGllcyk7CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VPYmplY3RH
cm91cChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApOwogICAgIHZpcnR1
YWwgdm9pZCBydW4oRXJyb3JTdHJpbmcqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IDcxNjAxNjEuLmNhYTQ0Y2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAg
LTY1LDcgKzY1LDcgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgogCi11c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6QXJyYXk7
Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTsKIHVzaW5nIFdlYkNvcmU6OlJ1
bGVTb3VyY2VEYXRhTGlzdDsKIHVzaW5nIFdlYkNvcmU6OkNTU1J1bGVTb3VyY2VEYXRhOwogCkBA
IC0xNTQsMTQgKzE1NCwxNCBAQCBlbnVtIE1lZGlhTGlzdFNvdXJjZSB7CiAgICAgTWVkaWFMaXN0
U291cmNlSW1wb3J0UnVsZQogfTsKIAotc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNT
Uzo6U291cmNlUmFuZ2U+IGJ1aWxkU291cmNlUmFuZ2VPYmplY3QoY29uc3QgU291cmNlUmFuZ2Um
IHJhbmdlLCBWZWN0b3I8c2l6ZV90PiogbGluZUVuZGluZ3MpCitzdGF0aWMgUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNvdXJjZVJhbmdlPiBidWlsZFNvdXJjZVJhbmdl
T2JqZWN0KGNvbnN0IFNvdXJjZVJhbmdlJiByYW5nZSwgVmVjdG9yPHNpemVfdD4qIGxpbmVFbmRp
bmdzKQogewogICAgIGlmICghbGluZUVuZGluZ3MpCiAgICAgICAgIHJldHVybiAwOwogICAgIFRl
eHRQb3NpdGlvbiBzdGFydCA9IENvbnRlbnRTZWFyY2hVdGlsczo6dGV4dFBvc2l0aW9uRnJvbU9m
ZnNldChyYW5nZS5zdGFydCwgKmxpbmVFbmRpbmdzKTsKICAgICBUZXh0UG9zaXRpb24gZW5kID0g
Q29udGVudFNlYXJjaFV0aWxzOjp0ZXh0UG9zaXRpb25Gcm9tT2Zmc2V0KHJhbmdlLmVuZCwgKmxp
bmVFbmRpbmdzKTsKIAotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTb3VyY2VSYW5nZT4g
cmVzdWx0ID0gVHlwZUJ1aWxkZXI6OkNTUzo6U291cmNlUmFuZ2U6OmNyZWF0ZSgpCisgICAgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U291cmNlUmFuZ2U+IHJlc3VsdCA9IElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U291cmNlUmFuZ2U6OmNyZWF0ZSgpCiAgICAgICAg
IC5zZXRTdGFydExpbmUoc3RhcnQubV9saW5lLnplcm9CYXNlZEludCgpKQogICAgICAgICAuc2V0
U3RhcnRDb2x1bW4oc3RhcnQubV9jb2x1bW4uemVyb0Jhc2VkSW50KCkpCiAgICAgICAgIC5zZXRF
bmRMaW5lKGVuZC5tX2xpbmUuemVyb0Jhc2VkSW50KCkpCkBAIC0xNjksMjYgKzE2OSwyNiBAQCBz
dGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTb3VyY2VSYW5nZT4gYnVpbGRTb3Vy
Y2VSYW5nZU9iamVjdChjb25zdCBTbwogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQog
Ci1zdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYT4gYnVpbGRNZWRp
YU9iamVjdChjb25zdCBNZWRpYUxpc3QqIG1lZGlhLCBNZWRpYUxpc3RTb3VyY2UgbWVkaWFMaXN0
U291cmNlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE+IGJ1aWxkTWVkaWFPYmplY3QoY29uc3Qg
TWVkaWFMaXN0KiBtZWRpYSwgTWVkaWFMaXN0U291cmNlIG1lZGlhTGlzdFNvdXJjZSwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwpCiB7CiAgICAgLy8gTWFrZSBjZXJ0YWluIGNvbXBpbGVycyBoYXBw
eSBieSBpbml0aWFsaXppbmcgfHNvdXJjZXwgdXAtZnJvbnQuCi0gICAgVHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTTWVkaWE6OlNvdXJjZTo6RW51bSBzb3VyY2UgPSBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NN
ZWRpYTo6U291cmNlOjpJbmxpbmVTaGVldDsKKyAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6OkNTU01lZGlhOjpTb3VyY2U6OkVudW0gc291cmNlID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NNZWRpYTo6U291cmNlOjpJbmxpbmVTaGVldDsKICAgICBzd2l0Y2ggKG1lZGlh
TGlzdFNvdXJjZSkgewogICAgIGNhc2UgTWVkaWFMaXN0U291cmNlTWVkaWFSdWxlOgotICAgICAg
ICBzb3VyY2UgPSBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYTo6U291cmNlOjpNZWRpYVJ1bGU7
CisgICAgICAgIHNvdXJjZSA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE6
OlNvdXJjZTo6TWVkaWFSdWxlOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lZGlhTGlzdFNv
dXJjZUltcG9ydFJ1bGU6Ci0gICAgICAgIHNvdXJjZSA9IFR5cGVCdWlsZGVyOjpDU1M6OkNTU01l
ZGlhOjpTb3VyY2U6OkltcG9ydFJ1bGU7CisgICAgICAgIHNvdXJjZSA9IEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE6OlNvdXJjZTo6SW1wb3J0UnVsZTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBNZWRpYUxpc3RTb3VyY2VMaW5rZWRTaGVldDoKLSAgICAgICAgc291cmNl
ID0gVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE6OlNvdXJjZTo6TGlua2VkU2hlZXQ7CisgICAg
ICAgIHNvdXJjZSA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE6OlNvdXJj
ZTo6TGlua2VkU2hlZXQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVkaWFMaXN0U291cmNl
SW5saW5lU2hlZXQ6Ci0gICAgICAgIHNvdXJjZSA9IFR5cGVCdWlsZGVyOjpDU1M6OkNTU01lZGlh
OjpTb3VyY2U6OklubGluZVNoZWV0OworICAgICAgICBzb3VyY2UgPSBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6OkNTU01lZGlhOjpTb3VyY2U6OklubGluZVNoZWV0OwogICAgICAgICBicmVh
azsKICAgICB9CiAKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE+IG1lZGlh
T2JqZWN0ID0gVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE6OmNyZWF0ZSgpCisgICAgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE+IG1lZGlhT2JqZWN0ID0gSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYTo6Y3JlYXRlKCkKICAgICAgICAgLnNl
dFRleHQobWVkaWEtPm1lZGlhVGV4dCgpKQogICAgICAgICAuc2V0U291cmNlKHNvdXJjZSk7CiAK
QEAgLTIzOSw3ICsyMzksNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gYXNDU1NS
dWxlTGlzdChDU1NSdWxlKiBydWxlKQogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBm
aWxsTWVkaWFMaXN0Q2hhaW4oQ1NTUnVsZSogcnVsZSwgQXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTTWVkaWE+KiBtZWRpYUFycmF5KQorc3RhdGljIHZvaWQgZmlsbE1lZGlhTGlzdENoYWluKENT
U1J1bGUqIHJ1bGUsIEFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE+
KiBtZWRpYUFycmF5KQogewogICAgIE1lZGlhTGlzdCogbWVkaWFMaXN0OwogICAgIENTU1J1bGUq
IHBhcmVudFJ1bGUgPSBydWxlOwpAQCAtMzE3LDExICszMTcsMTEgQEAgSW5zcGVjdG9yU3R5bGU6
On5JbnNwZWN0b3JTdHlsZSgpCiB7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpidWlsZE9iamVjdEZvclN0eWxlKCkgY29uc3QKK1Bh
c3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9y
U3R5bGU6OmJ1aWxkT2JqZWN0Rm9yU3R5bGUoKSBjb25zdAogewotICAgIFJlZlB0cjxUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NTdHlsZT4gcmVzdWx0ID0gc3R5bGVXaXRoUHJvcGVydGllcygpOworICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiByZXN1bHQgPSBz
dHlsZVdpdGhQcm9wZXJ0aWVzKCk7CiAgICAgaWYgKCFtX3N0eWxlSWQuaXNFbXB0eSgpKQotICAg
ICAgICByZXN1bHQtPnNldFN0eWxlSWQobV9zdHlsZUlkLmFzUHJvdG9jb2xWYWx1ZTxUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NTdHlsZUlkPigpKTsKKyAgICAgICAgcmVzdWx0LT5zZXRTdHlsZUlkKG1f
c3R5bGVJZC5hc1Byb3RvY29sVmFsdWU8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NT
dHlsZUlkPigpKTsKIAogICAgIHJlc3VsdC0+c2V0V2lkdGgobV9zdHlsZS0+Z2V0UHJvcGVydHlW
YWx1ZSgid2lkdGgiKSk7CiAgICAgcmVzdWx0LT5zZXRIZWlnaHQobV9zdHlsZS0+Z2V0UHJvcGVy
dHlWYWx1ZSgiaGVpZ2h0IikpOwpAQCAtMzMzLDE1ICszMzMsMTUgQEAgUGFzc1JlZlB0cjxUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OmJ1aWxkT2JqZWN0Rm9yU3R5
bGUoKSBjb24KICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3Bl
cnR5Pj4gSW5zcGVjdG9yU3R5bGU6OmJ1aWxkQXJyYXlGb3JDb21wdXRlZFN0eWxlKCkgY29uc3QK
K1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+PiBJbnNwZWN0b3JTdHlsZTo6
YnVpbGRBcnJheUZvckNvbXB1dGVkU3R5bGUoKSBjb25zdAogewotICAgIFJlZlB0cjxUeXBlQnVp
bGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4g
cmVzdWx0ID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU0NvbXB1dGVk
U3R5bGVQcm9wZXJ0eT46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQ
cm9wZXJ0eT4+IHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pjo6Y3JlYXRlKCk7
CiAgICAgVmVjdG9yPEluc3BlY3RvclN0eWxlUHJvcGVydHk+IHByb3BlcnRpZXM7CiAgICAgcG9w
dWxhdGVBbGxQcm9wZXJ0aWVzKCZwcm9wZXJ0aWVzKTsKIAogICAgIGZvciAoVmVjdG9yPEluc3Bl
Y3RvclN0eWxlUHJvcGVydHk+OjppdGVyYXRvciBpdCA9IHByb3BlcnRpZXMuYmVnaW4oKSwgaXRF
bmQgPSBwcm9wZXJ0aWVzLmVuZCgpOyBpdCAhPSBpdEVuZDsgKytpdCkgewogICAgICAgICBjb25z
dCBDU1NQcm9wZXJ0eVNvdXJjZURhdGEmIHByb3BlcnR5RW50cnkgPSBpdC0+c291cmNlRGF0YTsK
LSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0
eT4gZW50cnkgPSBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk6OmNy
ZWF0ZSgpCisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU0Nv
bXB1dGVkU3R5bGVQcm9wZXJ0eT4gZW50cnkgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eTo6Y3JlYXRlKCkKICAgICAgICAgICAgIC5zZXROYW1l
KHByb3BlcnR5RW50cnkubmFtZSkKICAgICAgICAgICAgIC5zZXRWYWx1ZShwcm9wZXJ0eUVudHJ5
LnZhbHVlKTsKICAgICAgICAgcmVzdWx0LT5hZGRJdGVtKGVudHJ5KTsKQEAgLTUyMCwxNCArNTIw
LDE0IEBAIGJvb2wgSW5zcGVjdG9yU3R5bGU6OnBvcHVsYXRlQWxsUHJvcGVydGllcyhWZWN0b3I8
SW5zcGVjdG9yU3R5bGVQcm9wZXJ0eT4qIHJlc3VsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBh
c3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpzdHls
ZVdpdGhQcm9wZXJ0aWVzKCkgY29uc3QKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBj
b25zdAogewogICAgIFZlY3RvcjxJbnNwZWN0b3JTdHlsZVByb3BlcnR5PiBwcm9wZXJ0aWVzOwog
ICAgIHBvcHVsYXRlQWxsUHJvcGVydGllcygmcHJvcGVydGllcyk7CiAKLSAgICBSZWZQdHI8QXJy
YXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk+PiBwcm9wZXJ0aWVzT2JqZWN0ID0gQXJy
YXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk+OjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8
QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6U2hvcnRoYW5kRW50cnk+PiBzaG9ydGhhbmRFbnRyaWVz
ID0gQXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6U2hvcnRoYW5kRW50cnk+OjpjcmVhdGUoKTsKLSAg
ICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5Pj4g
cHJvcGVydHlOYW1lVG9QcmV2aW91c0FjdGl2ZVByb3BlcnR5OworICAgIFJlZlB0cjxBcnJheTxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5Pj4gcHJvcGVydGllc09iamVj
dCA9IEFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk+OjpjcmVh
dGUoKTsKKyAgICBSZWZQdHI8QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTaG9y
dGhhbmRFbnRyeT4+IHNob3J0aGFuZEVudHJpZXMgPSBBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDU1M6OlNob3J0aGFuZEVudHJ5Pjo6Y3JlYXRlKCk7CisgICAgSGFzaE1hcDxTdHJpbmcs
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5Pj4gcHJvcGVy
dHlOYW1lVG9QcmV2aW91c0FjdGl2ZVByb3BlcnR5OwogICAgIEhhc2hTZXQ8U3RyaW5nPiBmb3Vu
ZFNob3J0aGFuZHM7CiAgICAgU3RyaW5nIHByZXZpb3VzUHJpb3JpdHk7CiAgICAgU3RyaW5nIHBy
ZXZpb3VzU3RhdHVzOwpAQCAtNTM5LDkgKzUzOSw5IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVzKCkgY29u
CiAgICAgICAgIGNvbnN0IENTU1Byb3BlcnR5U291cmNlRGF0YSYgcHJvcGVydHlFbnRyeSA9IGl0
LT5zb3VyY2VEYXRhOwogICAgICAgICBjb25zdCBTdHJpbmcmIG5hbWUgPSBwcm9wZXJ0eUVudHJ5
Lm5hbWU7CiAKLSAgICAgICAgVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlN0YXR1czo6
RW51bSBzdGF0dXMgPSBpdC0+ZGlzYWJsZWQgPyBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0
eTo6U3RhdHVzOjpEaXNhYmxlZCA6IFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpTdGF0
dXM6OkFjdGl2ZTsKKyAgICAgICAgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9w
ZXJ0eTo6U3RhdHVzOjpFbnVtIHN0YXR1cyA9IGl0LT5kaXNhYmxlZCA/IEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlN0YXR1czo6RGlzYWJsZWQgOiBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpTdGF0dXM6OkFjdGl2ZTsKIAotICAgICAg
ICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk+IHByb3BlcnR5ID0gVHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OmNyZWF0ZSgpCisgICAgICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5PiBwcm9wZXJ0eSA9IEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OmNyZWF0ZSgpCiAgICAgICAgICAgICAuc2V0
TmFtZShuYW1lKQogICAgICAgICAgICAgLnNldFZhbHVlKHByb3BlcnR5RW50cnkudmFsdWUpOwog
CkBAIC01NzQsMjIgKzU3NCwyMiBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0
eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcygpIGNvbgogICAgICAgICAg
ICAgICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCA9IGNzc1Byb3BlcnR5SUQobmFtZSk7CiAg
ICAgICAgICAgICAgICAgLy8gQ2Fub25pY2FsaXplIHByb3BlcnR5IG5hbWVzIHRvIHRyZWF0IG5v
bi1wcmVmaXhlZCBhbmQgdmVuZG9yLXByZWZpeGVkIHByb3BlcnR5IG5hbWVzIHRoZSBzYW1lIChv
cGFjaXR5IHZzLiAtd2Via2l0LW9wYWNpdHkpLgogICAgICAgICAgICAgICAgIFN0cmluZyBjYW5v
bmljYWxQcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eUlkID8gZ2V0UHJvcGVydHlOYW1lU3RyaW5nKHBy
b3BlcnR5SWQpIDogbmFtZTsKLSAgICAgICAgICAgICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRy
PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5Pj46Oml0ZXJhdG9yIGFjdGl2ZUl0ID0gcHJv
cGVydHlOYW1lVG9QcmV2aW91c0FjdGl2ZVByb3BlcnR5LmZpbmQoY2Fub25pY2FsUHJvcGVydHlO
YW1lKTsKKyAgICAgICAgICAgICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk+Pjo6aXRlcmF0b3IgYWN0aXZlSXQgPSBwcm9w
ZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHkuZmluZChjYW5vbmljYWxQcm9wZXJ0eU5h
bWUpOwogICAgICAgICAgICAgICAgIGlmIChhY3RpdmVJdCAhPSBwcm9wZXJ0eU5hbWVUb1ByZXZp
b3VzQWN0aXZlUHJvcGVydHkuZW5kKCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3Bl
cnR5RW50cnkucGFyc2VkT2spIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3VjY2Vz
c1ByaW9yaXR5ID0gYWN0aXZlSXQtPnZhbHVlLT5nZXRTdHJpbmcoVHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTUHJvcGVydHk6OlByaW9yaXR5LCAmcHJldmlvdXNQcmlvcml0eSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBib29sIHN1Y2Nlc3NTdGF0dXMgPSBhY3RpdmVJdC0+dmFsdWUtPmdldFN0cmlu
ZyhUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eTo6U3RhdHVzLCAmcHJldmlvdXNTdGF0dXMp
OworICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzdWNjZXNzUHJpb3JpdHkgPSBhY3RpdmVJ
dC0+dmFsdWUtPmdldFN0cmluZyhJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3Bl
cnR5OjpQcmlvcml0eSwgJnByZXZpb3VzUHJpb3JpdHkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBzdWNjZXNzU3RhdHVzID0gYWN0aXZlSXQtPnZhbHVlLT5nZXRTdHJpbmcoSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eTo6U3RhdHVzLCAmcHJldmlvdXNTdGF0
dXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1Y2Nlc3NTdGF0dXMgJiYgcHJldmlv
dXNTdGF0dXMgIT0gImluYWN0aXZlIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChwcm9wZXJ0eUVudHJ5LmltcG9ydGFudCB8fCAhc3VjY2Vzc1ByaW9yaXR5KSAvLyBQcmlvcml0
eSBub3Qgc2V0ID09ICJub3QgaW1wb3J0YW50Ii4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2hvdWxkSW5hY3RpdmF0ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZSBpZiAoc3RhdHVzID09IFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpTdGF0
dXM6OkFjdGl2ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN0YXR1
cyA9PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpTdGF0dXM6OkFj
dGl2ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbmFjdGl2YXRlIGEg
bm9uLWltcG9ydGFudCBwcm9wZXJ0eSBmb2xsb3dpbmcgdGhlIHNhbWUtbmFtZWQgaW1wb3J0YW50
IHByb3BlcnR5LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eTo6U3RhdHVzOjpJbmFjdGl2ZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NQcm9wZXJ0eTo6U3RhdHVzOjpJbmFjdGl2ZTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHByZXZpb3VzUGFyc2VkT2s7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBib29sIHN1Y2Nlc3MgPSBhY3RpdmVJdC0+dmFsdWUtPmdl
dEJvb2xlYW4oVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlBhcnNlZE9rLCAmcHJldmlv
dXNQYXJzZWRPayk7CisgICAgICAgICAgICAgICAgICAgICAgICBib29sIHN1Y2Nlc3MgPSBhY3Rp
dmVJdC0+dmFsdWUtPmdldEJvb2xlYW4oSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQ
cm9wZXJ0eTo6UGFyc2VkT2ssICZwcmV2aW91c1BhcnNlZE9rKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChzdWNjZXNzICYmICFwcmV2aW91c1BhcnNlZE9rKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNob3VsZEluYWN0aXZhdGUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAg
ICB9CkBAIC01OTcsNyArNTk3LDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NT
dHlsZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjb24KICAgICAgICAg
ICAgICAgICAgICAgcHJvcGVydHlOYW1lVG9QcmV2aW91c0FjdGl2ZVByb3BlcnR5LnNldChjYW5v
bmljYWxQcm9wZXJ0eU5hbWUsIHByb3BlcnR5KTsKIAogICAgICAgICAgICAgICAgIGlmIChzaG91
bGRJbmFjdGl2YXRlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFjdGl2ZUl0LT52YWx1ZS0+c2V0
U3RhdHVzKFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpTdGF0dXM6OkluYWN0aXZlKTsK
KyAgICAgICAgICAgICAgICAgICAgYWN0aXZlSXQtPnZhbHVlLT5zZXRTdGF0dXMoSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eTo6U3RhdHVzOjpJbmFjdGl2ZSk7CiAgICAg
ICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVRvUHJldmlvdXNBY3RpdmVQcm9wZXJ0eS5zZXQo
Y2Fub25pY2FsUHJvcGVydHlOYW1lLCBwcm9wZXJ0eSk7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfSBlbHNlIHsKQEAgLTYwNSwxMyArNjA1LDEzIEBAIFBhc3NSZWZQdHI8VHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVz
KCkgY29uCiAgICAgICAgICAgICAgICAgLy8gRGVmYXVsdCAiaW1wbGljaXQiID09IGZhbHNlLgog
ICAgICAgICAgICAgICAgIGlmIChpbXBsaWNpdCkKICAgICAgICAgICAgICAgICAgICAgcHJvcGVy
dHktPnNldEltcGxpY2l0KHRydWUpOwotICAgICAgICAgICAgICAgIHN0YXR1cyA9IFR5cGVCdWls
ZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpTdGF0dXM6OlN0eWxlOworICAgICAgICAgICAgICAgIHN0
YXR1cyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlN0YXR1czo6
U3R5bGU7CiAKICAgICAgICAgICAgICAgICBTdHJpbmcgc2hvcnRoYW5kID0gbV9zdHlsZS0+Z2V0
UHJvcGVydHlTaG9ydGhhbmQobmFtZSk7CiAgICAgICAgICAgICAgICAgaWYgKCFzaG9ydGhhbmQu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghZm91bmRTaG9ydGhhbmRzLmNv
bnRhaW5zKHNob3J0aGFuZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kU2hvcnRo
YW5kcy5hZGQoc2hvcnRoYW5kKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxUeXBl
QnVpbGRlcjo6Q1NTOjpTaG9ydGhhbmRFbnRyeT4gZW50cnkgPSBUeXBlQnVpbGRlcjo6Q1NTOjpT
aG9ydGhhbmRFbnRyeTo6Y3JlYXRlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNob3J0aGFuZEVudHJ5PiBlbnRyeSA9IEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2hvcnRoYW5kRW50cnk6OmNyZWF0ZSgpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLnNldE5hbWUoc2hvcnRoYW5kKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC5zZXRWYWx1ZShzaG9ydGhhbmRWYWx1ZShzaG9ydGhhbmQpKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHNob3J0aGFuZEVudHJpZXMtPmFkZEl0ZW0oZW50cnkpOwpAQCAt
NjIxLDExICs2MjEsMTEgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4g
SW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjb24KICAgICAgICAgfQogCiAg
ICAgICAgIC8vIERlZmF1bHQgInN0YXR1cyIgPT0gInN0eWxlIi4KLSAgICAgICAgaWYgKHN0YXR1
cyAhPSBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eTo6U3RhdHVzOjpTdHlsZSkKKyAgICAg
ICAgaWYgKHN0YXR1cyAhPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5
OjpTdGF0dXM6OlN0eWxlKQogICAgICAgICAgICAgcHJvcGVydHktPnNldFN0YXR1cyhzdGF0dXMp
OwogICAgIH0KIAotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gcmVzdWx0
ID0gVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRDc3NQcm9wZXJ0
aWVzKHByb3BlcnRpZXNPYmplY3QpCiAgICAgICAgIC5zZXRTaG9ydGhhbmRFbnRyaWVzKHNob3J0
aGFuZEVudHJpZXMpOwogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwpAQCAtNzYwLDcgKzc2
MCw3IEBAIE5ld0xpbmVBbmRXaGl0ZXNwYWNlJiBJbnNwZWN0b3JTdHlsZTo6bmV3TGluZUFuZFdo
aXRlc3BhY2VEZWxpbWl0ZXJzKCkgY29uc3QKICAgICByZXR1cm4gbV9mb3JtYXQ7CiB9CiAKLVBh
c3NSZWZQdHI8SW5zcGVjdG9yU3R5bGVTaGVldD4gSW5zcGVjdG9yU3R5bGVTaGVldDo6Y3JlYXRl
KEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVm
UHRyPENTU1N0eWxlU2hlZXQ+IHBhZ2VTdHlsZVNoZWV0LCBUeXBlQnVpbGRlcjo6Q1NTOjpTdHls
ZVNoZWV0T3JpZ2luOjpFbnVtIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBkb2N1bWVudFVSTCwgTGlz
dGVuZXIqIGxpc3RlbmVyKQorUGFzc1JlZlB0cjxJbnNwZWN0b3JTdHlsZVNoZWV0PiBJbnNwZWN0
b3JTdHlsZVNoZWV0OjpjcmVhdGUoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0
IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4gcGFnZVN0eWxlU2hlZXQsIElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6RW51bSBvcmlnaW4s
IGNvbnN0IFN0cmluZyYgZG9jdW1lbnRVUkwsIExpc3RlbmVyKiBsaXN0ZW5lcikKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEluc3BlY3RvclN0eWxlU2hlZXQocGFnZUFnZW50LCBpZCwgcGFn
ZVN0eWxlU2hlZXQsIG9yaWdpbiwgZG9jdW1lbnRVUkwsIGxpc3RlbmVyKSk7CiB9CkBAIC03NzMs
NyArNzczLDcgQEAgU3RyaW5nIEluc3BlY3RvclN0eWxlU2hlZXQ6OnN0eWxlU2hlZXRVUkwoQ1NT
U3R5bGVTaGVldCogcGFnZVN0eWxlU2hlZXQpCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9
CiAKLUluc3BlY3RvclN0eWxlU2hlZXQ6Okluc3BlY3RvclN0eWxlU2hlZXQoSW5zcGVjdG9yUGFn
ZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8Q1NTU3R5bGVT
aGVldD4gcGFnZVN0eWxlU2hlZXQsIFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46
OkVudW0gb3JpZ2luLCBjb25zdCBTdHJpbmcmIGRvY3VtZW50VVJMLCBMaXN0ZW5lciogbGlzdGVu
ZXIpCitJbnNwZWN0b3JTdHlsZVNoZWV0OjpJbnNwZWN0b3JTdHlsZVNoZWV0KEluc3BlY3RvclBh
Z2VBZ2VudCogcGFnZUFnZW50LCBjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPENTU1N0eWxl
U2hlZXQ+IHBhZ2VTdHlsZVNoZWV0LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0eWxl
U2hlZXRPcmlnaW46OkVudW0gb3JpZ2luLCBjb25zdCBTdHJpbmcmIGRvY3VtZW50VVJMLCBMaXN0
ZW5lciogbGlzdGVuZXIpCiAgICAgOiBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCiAgICAgLCBtX2lk
KGlkKQogICAgICwgbV9wYWdlU3R5bGVTaGVldChwYWdlU3R5bGVTaGVldCkKQEAgLTk2NCw3ICs5
NjQsNyBAQCBDU1NTdHlsZVJ1bGUqIEluc3BlY3RvclN0eWxlU2hlZXQ6OnJ1bGVGb3JJZChjb25z
dCBJbnNwZWN0b3JDU1NJZCYgaWQpIGNvbnN0CiAKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NTdHlsZVNoZWV0Qm9keT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmpl
Y3RGb3JTdHlsZVNoZWV0KCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NTdHlsZVNoZWV0Qm9keT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JT
dHlsZVNoZWV0KCkKIHsKICAgICBDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0ID0gcGFnZVN0eWxl
U2hlZXQoKTsKICAgICBpZiAoIXN0eWxlU2hlZXQpCkBAIC05NzIsNyArOTcyLDcgQEAgUGFzc1Jl
ZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0Qm9keT4gSW5zcGVjdG9yU3R5bGVT
aGVldDo6YnVpbGRPYmplY3QKIAogICAgIFJlZlB0cjxDU1NSdWxlTGlzdD4gY3NzUnVsZUxpc3Qg
PSBhc0NTU1J1bGVMaXN0KHN0eWxlU2hlZXQpOwogCi0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpD
U1M6OkNTU1N0eWxlU2hlZXRCb2R5PiByZXN1bHQgPSBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHls
ZVNoZWV0Qm9keTo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NTdHlsZVNoZWV0Qm9keT4gcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NTdHlsZVNoZWV0Qm9keTo6Y3JlYXRlKCkKICAgICAgICAgLnNldFN0eWxlU2hlZXRJ
ZChpZCgpKQogICAgICAgICAuc2V0UnVsZXMoYnVpbGRBcnJheUZvclJ1bGVMaXN0KGNzc1J1bGVM
aXN0LmdldCgpKSk7CiAKQEAgLTk4NCw3ICs5ODQsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVy
OjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5PiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVj
dAogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxk
T2JqZWN0Rm9yU3R5bGVTaGVldEluZm8oKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxk
T2JqZWN0Rm9yU3R5bGVTaGVldEluZm8oKQogewogICAgIENTU1N0eWxlU2hlZXQqIHN0eWxlU2hl
ZXQgPSBwYWdlU3R5bGVTaGVldCgpOwogICAgIGlmICghc3R5bGVTaGVldCkKQEAgLTk5Miw3ICs5
OTIsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+
IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZQogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50
ID0gc3R5bGVTaGVldC0+b3duZXJEb2N1bWVudCgpOwogICAgIEZyYW1lKiBmcmFtZSA9IGRvY3Vt
ZW50ID8gZG9jdW1lbnQtPmZyYW1lKCkgOiAwOwotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NTdHlsZVNoZWV0SGVhZGVyPiByZXN1bHQgPSBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHls
ZVNoZWV0SGVhZGVyOjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+IHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcjo6Y3JlYXRlKCkKICAgICAgICAgLnNldFN0eWxl
U2hlZXRJZChpZCgpKQogICAgICAgICAuc2V0T3JpZ2luKG1fb3JpZ2luKQogICAgICAgICAuc2V0
RGlzYWJsZWQoc3R5bGVTaGVldC0+ZGlzYWJsZWQoKSkKQEAgLTEwMDMsMTAgKzEwMDMsMTAgQEAg
UGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPiBJbnNwZWN0
b3JTdHlsZVNoZWV0OjpidWlsZE9iamUKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0K
IAotc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IHNlbGVjdG9y
c0Zyb21Tb3VyY2UoY29uc3QgQ1NTUnVsZVNvdXJjZURhdGEqIHNvdXJjZURhdGEsIGNvbnN0IFN0
cmluZyYgc2hlZXRUZXh0KQorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8U3RyaW5nPj4gc2VsZWN0b3JzRnJvbVNvdXJjZShjb25zdCBDU1NSdWxlU291cmNl
RGF0YSogc291cmNlRGF0YSwgY29uc3QgU3RyaW5nJiBzaGVldFRleHQpCiB7CiAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChSZWd1bGFyRXhwcmVzc2lvbiwgY29tbWVudCwgKCIvXFwqW15dKj9cXCov
IiwgVGV4dENhc2VTZW5zaXRpdmUsIE11bHRpbGluZUVuYWJsZWQpKTsKLSAgICBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpBcnJheTxTdHJp
bmc+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8
U3RyaW5nPj4gcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPjo6
Y3JlYXRlKCk7CiAgICAgY29uc3QgU2VsZWN0b3JSYW5nZUxpc3QmIHJhbmdlcyA9IHNvdXJjZURh
dGEtPnNlbGVjdG9yUmFuZ2VzOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gcmFuZ2Vz
LnNpemUoKTsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBjb25zdCBTb3VyY2VSYW5nZSYgcmFu
Z2UgPSByYW5nZXMuYXQoaSk7CkBAIC0xMDE5LDEyICsxMDE5LDEyIEBAIHN0YXRpYyBQYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBzZWxlY3RvcnNGcm9tU291cmNlKGNvbnN0
IENTU1J1bGVTCiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8
VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JMaXN0PiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWls
ZE9iamVjdEZvclNlbGVjdG9yTGlzdChDU1NTdHlsZVJ1bGUqIHJ1bGUpCitQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JMaXN0PiBJbnNwZWN0b3JTdHlsZVNo
ZWV0OjpidWlsZE9iamVjdEZvclNlbGVjdG9yTGlzdChDU1NTdHlsZVJ1bGUqIHJ1bGUpCiB7CiAg
ICAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBzb3VyY2VEYXRhOwogICAgIGlmIChlbnN1cmVQ
YXJzZWREYXRhUmVhZHkoKSkKICAgICAgICAgc291cmNlRGF0YSA9IHJ1bGVTb3VyY2VEYXRhRm9y
KHJ1bGUtPnN0eWxlKCkpOwotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4g
c2VsZWN0b3JzOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJp
bmc+PiBzZWxlY3RvcnM7CiAKICAgICAvLyBUaGlzIGludGVudGlvbmFsbHkgZG9lcyBub3QgcmVs
eSBvbiB0aGUgc291cmNlIGRhdGEgdG8gYXZvaWQgY2F0Y2hpbmcgdGhlIHRyYWlsaW5nIGNvbW1l
bnRzIChiZWZvcmUgdGhlIGRlY2xhcmF0aW9uIHN0YXJ0aW5nICd7JykuCiAgICAgU3RyaW5nIHNl
bGVjdG9yVGV4dCA9IHJ1bGUtPnNlbGVjdG9yVGV4dCgpOwpAQCAtMTAzMiwxMiArMTAzMiwxMiBA
QCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yTGlzdD4gSW5zcGVjdG9yU3R5
bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTZQogICAgIGlmIChzb3VyY2VEYXRhKQogICAgICAgICBz
ZWxlY3RvcnMgPSBzZWxlY3RvcnNGcm9tU291cmNlKHNvdXJjZURhdGEuZ2V0KCksIG1fcGFyc2Vk
U3R5bGVTaGVldC0+dGV4dCgpKTsKICAgICBlbHNlIHsKLSAgICAgICAgc2VsZWN0b3JzID0gVHlw
ZUJ1aWxkZXI6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgICAgICBzZWxlY3RvcnMgPSBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICAgICAg
Y29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QgPSBydWxlLT5zdHlsZVJ1bGUoKS0+
c2VsZWN0b3JMaXN0KCk7CiAgICAgICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9y
ID0gc2VsZWN0b3JMaXN0LmZpcnN0KCk7IHNlbGVjdG9yOyBzZWxlY3RvciA9IENTU1NlbGVjdG9y
TGlzdDo6bmV4dChzZWxlY3RvcikpCiAgICAgICAgICAgICBzZWxlY3RvcnMtPmFkZEl0ZW0oc2Vs
ZWN0b3ItPnNlbGVjdG9yVGV4dCgpKTsKICAgICB9Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpD
U1M6OlNlbGVjdG9yTGlzdD4gcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JMaXN0
OjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNlbGVj
dG9yTGlzdD4gcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3Rvckxp
c3Q6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRTZWxlY3RvcnMoc2VsZWN0b3JzKQogICAgICAgICAu
c2V0VGV4dChzZWxlY3RvclRleHQpCiAgICAgICAgIC5yZWxlYXNlKCk7CkBAIC0xMDQ2LDI5ICsx
MDQ2LDI5IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JMaXN0PiBJbnNw
ZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdEZvclNlCiAgICAgcmV0dXJuIHJlc3VsdC5yZWxl
YXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gSW5zcGVj
dG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JSdWxlKENTU1N0eWxlUnVsZSogcnVsZSkKK1Bh
c3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiBJbnNwZWN0b3JT
dHlsZVNoZWV0OjpidWlsZE9iamVjdEZvclJ1bGUoQ1NTU3R5bGVSdWxlKiBydWxlKQogewogICAg
IENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQgPSBwYWdlU3R5bGVTaGVldCgpOwogICAgIGlmICgh
c3R5bGVTaGVldCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTUnVsZT4gcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZTo6Y3JlYXRl
KCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiByZXN1
bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU6OmNyZWF0ZSgpCiAgICAg
ICAgIC5zZXRTZWxlY3Rvckxpc3QoYnVpbGRPYmplY3RGb3JTZWxlY3Rvckxpc3QocnVsZSkpCiAg
ICAgICAgIC5zZXRTb3VyY2VMaW5lKHJ1bGUtPnN0eWxlUnVsZSgpLT5zb3VyY2VMaW5lKCkpCiAg
ICAgICAgIC5zZXRPcmlnaW4obV9vcmlnaW4pCiAgICAgICAgIC5zZXRTdHlsZShidWlsZE9iamVj
dEZvclN0eWxlKHJ1bGUtPnN0eWxlKCkpKTsKIAogICAgIC8vICJzb3VyY2VVUkwiIGlzIHByZXNl
bnQgb25seSBmb3IgcmVndWxhciBydWxlcywgb3RoZXJ3aXNlICJvcmlnaW4iIHNob3VsZCBiZSB1
c2VkIGluIHRoZSBmcm9udGVuZC4KLSAgICBpZiAobV9vcmlnaW4gPT0gVHlwZUJ1aWxkZXI6OkNT
Uzo6U3R5bGVTaGVldE9yaWdpbjo6UmVndWxhcikKKyAgICBpZiAobV9vcmlnaW4gPT0gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpSZWd1bGFyKQogICAgICAg
ICByZXN1bHQtPnNldFNvdXJjZVVSTChmaW5hbFVSTCgpKTsKIAogICAgIGlmIChjYW5CaW5kKCkp
IHsKICAgICAgICAgSW5zcGVjdG9yQ1NTSWQgaWQocnVsZUlkKHJ1bGUpKTsKICAgICAgICAgaWYg
KCFpZC5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXN1bHQtPnNldFJ1bGVJZChpZC5hc1Byb3Rv
Y29sVmFsdWU8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZUlkPigpKTsKKyAgICAgICAgICAgIHJl
c3VsdC0+c2V0UnVsZUlkKGlkLmFzUHJvdG9jb2xWYWx1ZTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDU1M6OkNTU1J1bGVJZD4oKSk7CiAgICAgfQogCi0gICAgUmVmUHRyPEFycmF5PFR5cGVCdWls
ZGVyOjpDU1M6OkNTU01lZGlhPj4gbWVkaWFBcnJheSA9IEFycmF5PFR5cGVCdWlsZGVyOjpDU1M6
OkNTU01lZGlhPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTTWVkaWE+PiBtZWRpYUFycmF5ID0gQXJyYXk8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NNZWRpYT46OmNyZWF0ZSgpOwogCiAgICAgZmlsbE1lZGlhTGlzdENo
YWluKHJ1bGUsIG1lZGlhQXJyYXkuZ2V0KCkpOwogICAgIGlmIChtZWRpYUFycmF5LT5sZW5ndGgo
KSkKQEAgLTEwNzcsNyArMTA3Nyw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
UnVsZT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JSdWxlKENTCiAgICAgcmV0
dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU3R5bGUoQ1NTU3R5
bGVEZWNsYXJhdGlvbiogc3R5bGUpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU3R5bGUo
Q1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpCiB7CiAgICAgUmVmUHRyPENTU1J1bGVTb3VyY2VE
YXRhPiBzb3VyY2VEYXRhOwogICAgIGlmIChlbnN1cmVQYXJzZWREYXRhUmVhZHkoKSkKQEAgLTEw
ODUsMTMgKzEwODUsMTMgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4g
SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTdHlsZSgKIAogICAgIEluc3BlY3Rv
ckNTU0lkIGlkID0gcnVsZU9yU3R5bGVJZChzdHlsZSk7CiAgICAgaWYgKGlkLmlzRW1wdHkoKSkg
ewotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IGJvZ3VzU3R5bGUg
PSBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZTo6Y3JlYXRlKCkKLSAgICAgICAgICAgIC5zZXRD
c3NQcm9wZXJ0aWVzKEFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5Pjo6Y3JlYXRl
KCkpCi0gICAgICAgICAgICAuc2V0U2hvcnRoYW5kRW50cmllcyhBcnJheTxUeXBlQnVpbGRlcjo6
Q1NTOjpTaG9ydGhhbmRFbnRyeT46OmNyZWF0ZSgpKTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IGJvZ3VzU3R5bGUgPSBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlOjpjcmVhdGUoKQorICAgICAgICAgICAgLnNldENzc1By
b3BlcnRpZXMoQXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eT46
OmNyZWF0ZSgpKQorICAgICAgICAgICAgLnNldFNob3J0aGFuZEVudHJpZXMoQXJyYXk8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTaG9ydGhhbmRFbnRyeT46OmNyZWF0ZSgpKTsKICAgICAg
ICAgcmV0dXJuIGJvZ3VzU3R5bGUucmVsZWFzZSgpOwogICAgIH0KICAgICBSZWZQdHI8SW5zcGVj
dG9yU3R5bGU+IGluc3BlY3RvclN0eWxlID0gaW5zcGVjdG9yU3R5bGVGb3JJZChpZCk7Ci0gICAg
UmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiByZXN1bHQgPSBpbnNwZWN0b3JTdHls
ZS0+YnVpbGRPYmplY3RGb3JTdHlsZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDU1M6OkNTU1N0eWxlPiByZXN1bHQgPSBpbnNwZWN0b3JTdHlsZS0+YnVpbGRPYmplY3RG
b3JTdHlsZSgpOwogCiAgICAgLy8gU3R5bGUgdGV4dCBjYW5ub3QgYmUgcmV0cmlldmVkIHdpdGhv
dXQgc3R5bGVzaGVldCwgc28gc2V0IGNzc1RleHQgaGVyZS4KICAgICBpZiAoc291cmNlRGF0YSkg
ewpAQCAtMTM3NSw3ICsxMzc1LDcgQEAgYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0OjpvcmlnaW5h
bFN0eWxlU2hlZXRUZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdAogCiBib29sIEluc3BlY3RvclN0
eWxlU2hlZXQ6OnJlc291cmNlU3R5bGVTaGVldFRleHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0CiB7
Ci0gICAgaWYgKG1fb3JpZ2luID09IFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46
OlVzZXIgfHwgbV9vcmlnaW4gPT0gVHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6
VXNlckFnZW50KQorICAgIGlmIChtX29yaWdpbiA9PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6OlN0eWxlU2hlZXRPcmlnaW46OlVzZXIgfHwgbV9vcmlnaW4gPT0gSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpVc2VyQWdlbnQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIGlmICghbV9wYWdlU3R5bGVTaGVldCB8fCAhb3duZXJEb2N1bWVudCgp
IHx8ICFvd25lckRvY3VtZW50KCktPmZyYW1lKCkpCkBAIC0xNDA3LDkgKzE0MDcsOSBAQCBib29s
IEluc3BlY3RvclN0eWxlU2hlZXQ6OmlubGluZVN0eWxlU2hlZXRUZXh0KFN0cmluZyogcmVzdWx0
KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpB
cnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPj4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVp
bGRBcnJheUZvclJ1bGVMaXN0KENTU1J1bGVMaXN0KiBydWxlTGlzdCkKK1Bhc3NSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NSdWxlPj4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRBcnJheUZvclJ1bGVMaXN0KENTU1J1
bGVMaXN0KiBydWxlTGlzdCkKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVC
dWlsZGVyOjpDU1M6OkNTU1J1bGU+PiByZXN1bHQgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTUnVsZT46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+PiBy
ZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDU1M6OkNTU1J1bGU+OjpjcmVhdGUoKTsKICAgICBpZiAoIXJ1bGVMaXN0KQogICAgICAg
ICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIApAQCAtMTQ0MSwxMiArMTQ0MSwxMiBAQCB2b2lk
IEluc3BlY3RvclN0eWxlU2hlZXQ6OmNvbGxlY3RGbGF0UnVsZXMoUGFzc1JlZlB0cjxDU1NSdWxl
TGlzdD4gcnVsZUxpc3QsIENTUwogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3JTdHls
ZVNoZWV0Rm9ySW5saW5lU3R5bGU+IEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6
Y3JlYXRlKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBjb25zdCBTdHJpbmcmIGlkLCBQ
YXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQsIFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRP
cmlnaW46OkVudW0gb3JpZ2luLCBMaXN0ZW5lciogbGlzdGVuZXIpCitQYXNzUmVmUHRyPEluc3Bl
Y3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZT4gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGlu
ZVN0eWxlOjpjcmVhdGUoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0IFN0cmlu
ZyYgaWQsIFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpFbnVtIG9yaWdpbiwgTGlzdGVuZXIqIGxpc3RlbmVy
KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGlu
ZVN0eWxlKHBhZ2VBZ2VudCwgaWQsIGVsZW1lbnQsIG9yaWdpbiwgbGlzdGVuZXIpKTsKIH0KIAot
SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9y
SW5saW5lU3R5bGUoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0IFN0cmluZyYg
aWQsIFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCwgVHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVT
aGVldE9yaWdpbjo6RW51bSBvcmlnaW4sIExpc3RlbmVyKiBsaXN0ZW5lcikKK0luc3BlY3RvclN0
eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxl
KEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVm
UHRyPEVsZW1lbnQ+IGVsZW1lbnQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVT
aGVldE9yaWdpbjo6RW51bSBvcmlnaW4sIExpc3RlbmVyKiBsaXN0ZW5lcikKICAgICA6IEluc3Bl
Y3RvclN0eWxlU2hlZXQocGFnZUFnZW50LCBpZCwgMCwgb3JpZ2luLCAiIiwgbGlzdGVuZXIpCiAg
ICAgLCBtX2VsZW1lbnQoZWxlbWVudCkKICAgICAsIG1fcnVsZVNvdXJjZURhdGEoMCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCmluZGV4IDNiNzli
NjEuLjJiMzE2YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0
eWxlU2hlZXQuaApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkNTU1N0eWxlRGVjbGFyYXRp
b24uaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yU3R5
bGVUZXh0RWRpdG9yLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKKyNpbmNs
dWRlICJJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5z
cGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBz
dHlsZVNoZWV0SWQoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlU2hlZXRJZDsgfQogICAgIHVuc2ln
bmVkIG9yZGluYWwoKSBjb25zdCB7IHJldHVybiBtX29yZGluYWw7IH0KIAotICAgIC8vIElEIHR5
cGUgaXMgZWl0aGVyIFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlSWQgb3IgVHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTUnVsZUlkLgorICAgIC8vIElEIHR5cGUgaXMgZWl0aGVyIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVJZCBvciBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
OkNTU1J1bGVJZC4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJRD4KICAgICBQYXNzUmVmUHRyPElE
PiBhc1Byb3RvY29sVmFsdWUoKSBjb25zdAogICAgIHsKQEAgLTEzOSw4ICsxMzksOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yU3R5bGUoKTsKIAogICAgIENTU1N0eWxlRGVjbGFy
YXRpb24qIGNzc1N0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZS5nZXQoKTsgfQotICAgIFBh
c3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IGJ1aWxkT2JqZWN0Rm9yU3R5bGUo
KSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+PiBidWlsZEFycmF5Rm9yQ29tcHV0ZWRTdHls
ZSgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NTdHlsZT4gYnVpbGRPYmplY3RGb3JTdHlsZSgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NDb21wdXRlZFN0eWxlUHJvcGVydHk+PiBidWlsZEFycmF5Rm9yQ29tcHV0ZWRTdHlsZSgpIGNv
bnN0OwogICAgIGJvb2wgaGFzRGlzYWJsZWRQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gIW1f
ZGlzYWJsZWRQcm9wZXJ0aWVzLmlzRW1wdHkoKTsgfQogICAgIGJvb2wgc2V0UHJvcGVydHlUZXh0
KHVuc2lnbmVkIGluZGV4LCBjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wgb3ZlcndyaXRlLCBTdHJp
bmcqIG9sZFRleHQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBib29sIHRvZ2dsZVByb3BlcnR5KHVu
c2lnbmVkIGluZGV4LCBib29sIGRpc2FibGUsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTE1Niw3ICsx
NTYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgYXBwbHlTdHlsZVRleHQoY29uc3QgU3RyaW5nJiB0
ZXh0KSB7IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOyByZXR1cm4gc2V0VGV4dCh0ZXh0LCBlYyk7IH0K
IAogICAgIGJvb2wgcG9wdWxhdGVBbGxQcm9wZXJ0aWVzKFZlY3RvcjxJbnNwZWN0b3JTdHlsZVBy
b3BlcnR5PiogcmVzdWx0KSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6
OkNTU1N0eWxlPiBzdHlsZVdpdGhQcm9wZXJ0aWVzKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBzdHlsZVdpdGhQcm9wZXJ0aWVz
KCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gZXh0cmFjdFNvdXJj
ZURhdGEoKSBjb25zdDsKICAgICBTdHJpbmcgc2hvcnRoYW5kVmFsdWUoY29uc3QgU3RyaW5nJiBz
aG9ydGhhbmRQcm9wZXJ0eSkgY29uc3Q7CiAgICAgU3RyaW5nIHNob3J0aGFuZFByaW9yaXR5KGNv
bnN0IFN0cmluZyYgc2hvcnRoYW5kUHJvcGVydHkpIGNvbnN0OwpAQCAtMTgxLDcgKzE4MSw3IEBA
IHB1YmxpYzoKICAgICB9OwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPENTU1N0eWxlRGVjbGFyYXRp
b24qLCBSZWZQdHI8SW5zcGVjdG9yU3R5bGU+PiBJbnNwZWN0b3JTdHlsZU1hcDsKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JTdHlsZVNoZWV0PiBjcmVhdGUoSW5zcGVjdG9yUGFnZUFn
ZW50KiwgY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBwYWdlU3R5
bGVTaGVldCwgVHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6RW51bSwgY29uc3Qg
U3RyaW5nJiBkb2N1bWVudFVSTCwgTGlzdGVuZXIqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JTdHlsZVNoZWV0PiBjcmVhdGUoSW5zcGVjdG9yUGFnZUFnZW50KiwgY29uc3QgU3Ry
aW5nJiBpZCwgUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBwYWdlU3R5bGVTaGVldCwgSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpFbnVtLCBjb25zdCBTdHJp
bmcmIGRvY3VtZW50VVJMLCBMaXN0ZW5lciopOwogICAgIHN0YXRpYyBTdHJpbmcgc3R5bGVTaGVl
dFVSTChDU1NTdHlsZVNoZWV0KiBwYWdlU3R5bGVTaGVldCk7CiAKICAgICB2aXJ0dWFsIH5JbnNw
ZWN0b3JTdHlsZVNoZWV0KCk7CkBAIC0xOTYsMTAgKzE5NiwxMCBAQCBwdWJsaWM6CiAgICAgQ1NT
U3R5bGVSdWxlKiBhZGRSdWxlKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICBib29sIGRlbGV0ZVJ1bGUoY29uc3QgSW5zcGVjdG9yQ1NTSWQmLCBFeGNlcHRpb25D
b2RlJik7CiAgICAgQ1NTU3R5bGVSdWxlKiBydWxlRm9ySWQoY29uc3QgSW5zcGVjdG9yQ1NTSWQm
KSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRC
b2R5PiBidWlsZE9iamVjdEZvclN0eWxlU2hlZXQoKTsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+IGJ1aWxkT2JqZWN0Rm9yU3R5bGVTaGVldElu
Zm8oKTsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2Jq
ZWN0Rm9yUnVsZShDU1NTdHlsZVJ1bGUqKTsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpD
U1M6OkNTU1N0eWxlPiBidWlsZE9iamVjdEZvclN0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qKTsK
KyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVl
dEJvZHk+IGJ1aWxkT2JqZWN0Rm9yU3R5bGVTaGVldCgpOworICAgIFBhc3NSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPiBidWlsZE9iamVjdEZv
clN0eWxlU2hlZXRJbmZvKCk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9yUnVsZShDU1NTdHlsZVJ1bGUqKTsKKyAgICBQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IGJ1aWxkT2Jq
ZWN0Rm9yU3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiopOwogICAgIGJvb2wgc2V0U3R5bGVUZXh0
KGNvbnN0IEluc3BlY3RvckNTU0lkJiwgY29uc3QgU3RyaW5nJiB0ZXh0LCBTdHJpbmcqIG9sZFRl
eHQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBib29sIHNldFByb3BlcnR5VGV4dChjb25zdCBJbnNw
ZWN0b3JDU1NJZCYsIHVuc2lnbmVkIHByb3BlcnR5SW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCwg
Ym9vbCBvdmVyd3JpdGUsIFN0cmluZyogb2xkUHJvcGVydHlUZXh0LCBFeGNlcHRpb25Db2RlJik7
CiAgICAgYm9vbCB0b2dnbGVQcm9wZXJ0eShjb25zdCBJbnNwZWN0b3JDU1NJZCYsIHVuc2lnbmVk
IHByb3BlcnR5SW5kZXgsIGJvb2wgZGlzYWJsZSwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtMjEyLDkg
KzIxMiw5IEBAIHB1YmxpYzoKICAgICBJbnNwZWN0b3JDU1NJZCBzdHlsZUlkKENTU1N0eWxlRGVj
bGFyYXRpb24qIHN0eWxlKSBjb25zdCB7IHJldHVybiBydWxlT3JTdHlsZUlkKHN0eWxlKTsgfQog
CiBwcm90ZWN0ZWQ6Ci0gICAgSW5zcGVjdG9yU3R5bGVTaGVldChJbnNwZWN0b3JQYWdlQWdlbnQq
LCBjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPENTU1N0eWxlU2hlZXQ+IHBhZ2VTdHlsZVNo
ZWV0LCBUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpFbnVtLCBjb25zdCBTdHJp
bmcmIGRvY3VtZW50VVJMLCBMaXN0ZW5lciopOworICAgIEluc3BlY3RvclN0eWxlU2hlZXQoSW5z
cGVjdG9yUGFnZUFnZW50KiwgY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxDU1NTdHlsZVNo
ZWV0PiBwYWdlU3R5bGVTaGVldCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNo
ZWV0T3JpZ2luOjpFbnVtLCBjb25zdCBTdHJpbmcmIGRvY3VtZW50VVJMLCBMaXN0ZW5lciopOwog
Ci0gICAgYm9vbCBjYW5CaW5kKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW4gIT0gVHlwZUJ1aWxk
ZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6VXNlckFnZW50ICYmIG1fb3JpZ2luICE9IFR5cGVC
dWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlVzZXI7IH0KKyAgICBib29sIGNhbkJpbmQo
KSBjb25zdCB7IHJldHVybiBtX29yaWdpbiAhPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
OlN0eWxlU2hlZXRPcmlnaW46OlVzZXJBZ2VudCAmJiBtX29yaWdpbiAhPSBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlVzZXI7IH0KICAgICBJbnNwZWN0b3JD
U1NJZCBydWxlT3JTdHlsZUlkKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKSBjb25zdDsKICAg
ICB2aXJ0dWFsIERvY3VtZW50KiBvd25lckRvY3VtZW50KCkgY29uc3Q7CiAgICAgdmlydHVhbCBS
ZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IHJ1bGVTb3VyY2VEYXRhRm9yKENTU1N0eWxlRGVjbGFy
YXRpb24qIHN0eWxlKSBjb25zdDsKQEAgLTI0MiwxMyArMjQyLDEzIEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBvcmlnaW5hbFN0eWxlU2hlZXRUZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdDsKICAgICBi
b29sIHJlc291cmNlU3R5bGVTaGVldFRleHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0OwogICAgIGJv
b2wgaW5saW5lU3R5bGVTaGVldFRleHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0OwotICAgIFBhc3NS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+PiBidWls
ZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3QqKTsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpDU1M6OlNlbGVjdG9yTGlzdD4gYnVpbGRPYmplY3RGb3JTZWxlY3Rvckxpc3QoQ1NTU3R5
bGVSdWxlKik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+PiBidWlsZEFycmF5Rm9yUnVsZUxp
c3QoQ1NTUnVsZUxpc3QqKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNTUzo6U2VsZWN0b3JMaXN0PiBidWlsZE9iamVjdEZvclNlbGVjdG9yTGlzdChDU1NTdHlsZVJ1
bGUqKTsKIAogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CiAgICAgU3RyaW5n
IG1faWQ7CiAgICAgUmVmUHRyPENTU1N0eWxlU2hlZXQ+IG1fcGFnZVN0eWxlU2hlZXQ7Ci0gICAg
VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6RW51bSBtX29yaWdpbjsKKyAgICBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OkVudW0gbV9vcmln
aW47CiAgICAgU3RyaW5nIG1fZG9jdW1lbnRVUkw7CiAgICAgYm9vbCBtX2lzUmV2YWxpZGF0aW5n
OwogICAgIFBhcnNlZFN0eWxlU2hlZXQqIG1fcGFyc2VkU3R5bGVTaGVldDsKQEAgLTI1OSwxNCAr
MjU5LDE0IEBAIHByaXZhdGU6CiAKIGNsYXNzIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVT
dHlsZSA6IHB1YmxpYyBJbnNwZWN0b3JTdHlsZVNoZWV0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU+IGNyZWF0ZShJbnNw
ZWN0b3JQYWdlQWdlbnQqLCBjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPEVsZW1lbnQ+LCBU
eXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpFbnVtLCBMaXN0ZW5lciopOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZT4gY3Jl
YXRlKEluc3BlY3RvclBhZ2VBZ2VudCosIGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8RWxl
bWVudD4sIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6RW51
bSwgTGlzdGVuZXIqKTsKIAogICAgIHZvaWQgZGlkTW9kaWZ5RWxlbWVudEF0dHJpYnV0ZSgpOwog
ICAgIHZpcnR1YWwgYm9vbCBnZXRUZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdDsKICAgICB2aXJ0
dWFsIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlRm9ySWQoY29uc3QgSW5zcGVjdG9yQ1NTSWQm
IGlkKSBjb25zdCB7IEFTU0VSVF9VTlVTRUQoaWQsICFpZC5vcmRpbmFsKCkpOyByZXR1cm4gaW5s
aW5lU3R5bGUoKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklu
bGluZVN0eWxlKEluc3BlY3RvclBhZ2VBZ2VudCosIGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQ
dHI8RWxlbWVudD4sIFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OkVudW0sIExp
c3RlbmVyKik7CisgICAgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlKEluc3BlY3Rv
clBhZ2VBZ2VudCosIGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8RWxlbWVudD4sIEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6RW51bSwgTGlzdGVuZXIq
KTsKIAogICAgIHZpcnR1YWwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQoKSBjb25zdDsKICAgICB2
aXJ0dWFsIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gcnVsZVNvdXJjZURhdGFGb3IoQ1NTU3R5
bGVEZWNsYXJhdGlvbiogc3R5bGUpIGNvbnN0IHsgQVNTRVJUX1VOVVNFRChzdHlsZSwgc3R5bGUg
PT0gaW5saW5lU3R5bGUoKSk7IHJldHVybiBtX3J1bGVTb3VyY2VEYXRhOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKaW5kZXgg
NGIxYzhhNy4uMjQ3MmVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApAQCAtNDI0LDk5ICs0MjQsOTkgQEAgdm9pZCBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50OjphZGRSZWNvcmRUb1RpbWVsaW5lKFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiByZWMKICAgICBpbm5lckFkZFJlY29yZFRvVGltZWxpbmUocmVjb3JkLCB0eXBl
KTsKIH0KIAotc3RhdGljIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpFbnVtIHRv
UHJvdG9jb2woVGltZWxpbmVSZWNvcmRUeXBlIHR5cGUpCitzdGF0aWMgSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6RW51bSB0b1Byb3RvY29sKFRpbWVsaW5lUmVj
b3JkVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgVGltZWxpbmVS
ZWNvcmRUeXBlOjpFdmVudERpc3BhdGNoOgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRp
bWVsaW5lOjpFdmVudFR5cGU6OkV2ZW50RGlzcGF0Y2g7CisgICAgICAgIHJldHVybiBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpFdmVudERpc3BhdGNoOwogICAg
IGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpCZWdpbkZyYW1lOgotICAgICAgICByZXR1cm4gVHlw
ZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OkJlZ2luRnJhbWU7CisgICAgICAgIHJldHVy
biBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpCZWdpbkZyYW1l
OwogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpTY2hlZHVsZVN0eWxlUmVjYWxjdWxhdGlv
bjoKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpTY2hl
ZHVsZVN0eWxlUmVjYWxjdWxhdGlvbjsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlNjaGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9uOwog
ICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpSZWNhbGN1bGF0ZVN0eWxlczoKLSAgICAgICAg
cmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpSZWNhbGN1bGF0ZVN0eWxl
czsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVu
dFR5cGU6OlJlY2FsY3VsYXRlU3R5bGVzOwogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpJ
bnZhbGlkYXRlTGF5b3V0OgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpF
dmVudFR5cGU6OkludmFsaWRhdGVMYXlvdXQ7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpJbnZhbGlkYXRlTGF5b3V0OwogICAgIGNh
c2UgVGltZWxpbmVSZWNvcmRUeXBlOjpMYXlvdXQ6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRl
cjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6TGF5b3V0OworICAgICAgICByZXR1cm4gSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6TGF5b3V0OwogICAgIGNhc2UgVGlt
ZWxpbmVSZWNvcmRUeXBlOjpQYWludDoKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1l
bGluZTo6RXZlbnRUeXBlOjpQYWludDsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlBhaW50OwogICAgIGNhc2UgVGltZWxpbmVSZWNv
cmRUeXBlOjpTY3JvbGxMYXllcjoKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGlu
ZTo6RXZlbnRUeXBlOjpTY3JvbGxMYXllcjsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlNjcm9sbExheWVyOwogICAgIGNhc2UgVGlt
ZWxpbmVSZWNvcmRUeXBlOjpSZXNpemVJbWFnZToKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVy
OjpUaW1lbGluZTo6RXZlbnRUeXBlOjpSZXNpemVJbWFnZTsKKyAgICAgICAgcmV0dXJuIEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlJlc2l6ZUltYWdlOwogICAg
IGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpDb21wb3NpdGVMYXllcnM6Ci0gICAgICAgIHJldHVy
biBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6Q29tcG9zaXRlTGF5ZXJzOworICAg
ICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6
Q29tcG9zaXRlTGF5ZXJzOwogCiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlBhcnNlSFRN
TDoKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpQYXJz
ZUhUTUw7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6
RXZlbnRUeXBlOjpQYXJzZUhUTUw7CiAKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6VGlt
ZXJJbnN0YWxsOgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5
cGU6OlRpbWVySW5zdGFsbDsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OlRpbWVsaW5lOjpFdmVudFR5cGU6OlRpbWVySW5zdGFsbDsKICAgICBjYXNlIFRpbWVsaW5lUmVj
b3JkVHlwZTo6VGltZXJSZW1vdmU6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxp
bmU6OkV2ZW50VHlwZTo6VGltZXJSZW1vdmU7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpUaW1lclJlbW92ZTsKICAgICBjYXNlIFRp
bWVsaW5lUmVjb3JkVHlwZTo6VGltZXJGaXJlOgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6
OlRpbWVsaW5lOjpFdmVudFR5cGU6OlRpbWVyRmlyZTsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlRpbWVyRmlyZTsKIAogICAgIGNh
c2UgVGltZWxpbmVSZWNvcmRUeXBlOjpFdmFsdWF0ZVNjcmlwdDoKLSAgICAgICAgcmV0dXJuIFR5
cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpFdmFsdWF0ZVNjcmlwdDsKKyAgICAgICAg
cmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OkV2YWx1
YXRlU2NyaXB0OwogCiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6Ok1hcmtMb2FkOgotICAg
ICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6Ok1hcmtMb2FkOwor
ICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlw
ZTo6TWFya0xvYWQ7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6Ok1hcmtET01Db250ZW50
OgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6Ok1hcmtE
T01Db250ZW50OworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxp
bmU6OkV2ZW50VHlwZTo6TWFya0RPTUNvbnRlbnQ7CiAKICAgICBjYXNlIFRpbWVsaW5lUmVjb3Jk
VHlwZTo6VGltZVN0YW1wOgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpF
dmVudFR5cGU6OlRpbWVTdGFtcDsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlRpbWVTdGFtcDsKICAgICBjYXNlIFRpbWVsaW5lUmVj
b3JkVHlwZTo6VGltZToKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZl
bnRUeXBlOjpUaW1lOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGlt
ZWxpbmU6OkV2ZW50VHlwZTo6VGltZTsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6VGlt
ZUVuZDoKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpU
aW1lRW5kOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6
OkV2ZW50VHlwZTo6VGltZUVuZDsKIAogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpTY2hl
ZHVsZVJlc291cmNlUmVxdWVzdDoKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGlu
ZTo6RXZlbnRUeXBlOjpTY2hlZHVsZVJlc291cmNlUmVxdWVzdDsKKyAgICAgICAgcmV0dXJuIElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlNjaGVkdWxlUmVzb3Vy
Y2VSZXF1ZXN0OwogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpSZXNvdXJjZVNlbmRSZXF1
ZXN0OgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlJl
c291cmNlU2VuZFJlcXVlc3Q7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpUaW1lbGluZTo6RXZlbnRUeXBlOjpSZXNvdXJjZVNlbmRSZXF1ZXN0OwogICAgIGNhc2UgVGlt
ZWxpbmVSZWNvcmRUeXBlOjpSZXNvdXJjZVJlY2VpdmVSZXNwb25zZToKLSAgICAgICAgcmV0dXJu
IFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpSZXNvdXJjZVJlY2VpdmVSZXNwb25z
ZTsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVu
dFR5cGU6OlJlc291cmNlUmVjZWl2ZVJlc3BvbnNlOwogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRU
eXBlOjpSZXNvdXJjZVJlY2VpdmVkRGF0YToKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpU
aW1lbGluZTo6RXZlbnRUeXBlOjpSZXNvdXJjZVJlY2VpdmVkRGF0YTsKKyAgICAgICAgcmV0dXJu
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlJlc291cmNlUmVj
ZWl2ZWREYXRhOwogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpSZXNvdXJjZUZpbmlzaDoK
LSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpSZXNvdXJj
ZUZpbmlzaDsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5l
OjpFdmVudFR5cGU6OlJlc291cmNlRmluaXNoOwogCiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5
cGU6OlhIUlJlYWR5U3RhdGVDaGFuZ2U6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGlt
ZWxpbmU6OkV2ZW50VHlwZTo6WEhSUmVhZHlTdGF0ZUNoYW5nZTsKKyAgICAgICAgcmV0dXJuIElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlhIUlJlYWR5U3RhdGVD
aGFuZ2U7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlhIUkxvYWQ6Ci0gICAgICAgIHJl
dHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6WEhSTG9hZDsKKyAgICAgICAg
cmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlhIUkxv
YWQ7CiAKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6RnVuY3Rpb25DYWxsOgotICAgICAg
ICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OkZ1bmN0aW9uQ2FsbDsK
KyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5
cGU6OkZ1bmN0aW9uQ2FsbDsKIAogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpSZXF1ZXN0
QW5pbWF0aW9uRnJhbWU6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2
ZW50VHlwZTo6UmVxdWVzdEFuaW1hdGlvbkZyYW1lOworICAgICAgICByZXR1cm4gSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6UmVxdWVzdEFuaW1hdGlvbkZyYW1l
OwogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpDYW5jZWxBbmltYXRpb25GcmFtZToKLSAg
ICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpDYW5jZWxBbmlt
YXRpb25GcmFtZTsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVs
aW5lOjpFdmVudFR5cGU6OkNhbmNlbEFuaW1hdGlvbkZyYW1lOwogICAgIGNhc2UgVGltZWxpbmVS
ZWNvcmRUeXBlOjpGaXJlQW5pbWF0aW9uRnJhbWU6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRl
cjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6RmlyZUFuaW1hdGlvbkZyYW1lOworICAgICAgICByZXR1
cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6RmlyZUFuaW1h
dGlvbkZyYW1lOwogCiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OldlYlNvY2tldENyZWF0
ZToKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpXZWJT
b2NrZXRDcmVhdGU7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1l
bGluZTo6RXZlbnRUeXBlOjpXZWJTb2NrZXRDcmVhdGU7CiAgICAgY2FzZSBUaW1lbGluZVJlY29y
ZFR5cGU6OldlYlNvY2tldFNlbmRIYW5kc2hha2VSZXF1ZXN0OgotICAgICAgICByZXR1cm4gVHlw
ZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OldlYlNvY2tldFNlbmRIYW5kc2hha2VSZXF1
ZXN0OworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2
ZW50VHlwZTo6V2ViU29ja2V0U2VuZEhhbmRzaGFrZVJlcXVlc3Q7CiAgICAgY2FzZSBUaW1lbGlu
ZVJlY29yZFR5cGU6OldlYlNvY2tldFJlY2VpdmVIYW5kc2hha2VSZXNwb25zZToKLSAgICAgICAg
cmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpXZWJTb2NrZXRSZWNlaXZl
SGFuZHNoYWtlUmVzcG9uc2U7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpUaW1lbGluZTo6RXZlbnRUeXBlOjpXZWJTb2NrZXRSZWNlaXZlSGFuZHNoYWtlUmVzcG9uc2U7
CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OldlYlNvY2tldERlc3Ryb3k6Ci0gICAgICAg
IHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6V2ViU29ja2V0RGVzdHJv
eTsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVu
dFR5cGU6OldlYlNvY2tldERlc3Ryb3k7CiAgICAgfQogCi0gICAgcmV0dXJuIFR5cGVCdWlsZGVy
OjpUaW1lbGluZTo6RXZlbnRUeXBlOjpUaW1lU3RhbXA7CisgICAgcmV0dXJuIEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlRpbWVTdGFtcDsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50Ojppbm5lckFkZFJlY29yZFRvVGltZWxpbmUoUGFzc1JlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IHBycFJlY29yZCwgVGltZWxpbmVSZWNvcmRUeXBlIHR5cGUpCiB7
Ci0gICAgcHJwUmVjb3JkLT5zZXRTdHJpbmcoInR5cGUiLCBUeXBlQnVpbGRlcjo6Z2V0RW51bUNv
bnN0YW50VmFsdWUodG9Qcm90b2NvbCh0eXBlKSkpOworICAgIHBycFJlY29yZC0+c2V0U3RyaW5n
KCJ0eXBlIiwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Z2V0RW51bUNvbnN0YW50VmFsdWUodG9Q
cm90b2NvbCh0eXBlKSkpOwogCi0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6VGlt
ZWxpbmVFdmVudD4gcmVjb3JkID0gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50
OjpydW50aW1lQ2FzdChwcnBSZWNvcmQpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpUaW1lbGluZTo6VGltZWxpbmVFdmVudD4gcmVjb3JkID0gSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ6OnJ1bnRpbWVDYXN0KHBycFJlY29yZCk7CiAK
ICAgICBzZXRET01Db3VudGVycyhyZWNvcmQuZ2V0KCkpOwogCkBAIC01MzMsNyArNTMzLDcgQEAg
c3RhdGljIHNpemVfdCB1c2VkSGVhcFNpemUoKQogICAgIHJldHVybiBKU0RPTVdpbmRvdzo6Y29t
bW9uVk0oKS0+aGVhcC5zaXplKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
c2V0RE9NQ291bnRlcnMoVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50KiByZWNv
cmQpCit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnNldERPTUNvdW50ZXJzKEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50KiByZWNvcmQpCiB7CiAgICAg
cmVjb3JkLT5zZXRVc2VkSGVhcFNpemUodXNlZEhlYXBTaXplKCkpOwogCkBAIC01NDUsNyArNTQ1
LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzZXRET01Db3VudGVycyhUeXBlQnVp
bGRlcjo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQKICAgICAgICAgICAgIG5vZGVDb3VudCA9IElu
c3BlY3RvckNvdW50ZXJzOjpjb3VudGVyVmFsdWUoSW5zcGVjdG9yQ291bnRlcnM6Ok5vZGVDb3Vu
dGVyKTsKICAgICAgICAgfQogICAgICAgICBpbnQgbGlzdGVuZXJDb3VudCA9IFRocmVhZExvY2Fs
SW5zcGVjdG9yQ291bnRlcnM6OmN1cnJlbnQoKS5jb3VudGVyVmFsdWUoVGhyZWFkTG9jYWxJbnNw
ZWN0b3JDb3VudGVyczo6SlNFdmVudExpc3RlbmVyQ291bnRlcik7Ci0gICAgICAgIFJlZlB0cjxU
eXBlQnVpbGRlcjo6VGltZWxpbmU6OkRPTUNvdW50ZXJzPiBjb3VudGVycyA9IFR5cGVCdWlsZGVy
OjpUaW1lbGluZTo6RE9NQ291bnRlcnM6OmNyZWF0ZSgpCisgICAgICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RE9NQ291bnRlcnM+IGNvdW50ZXJzID0gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkRPTUNvdW50ZXJzOjpjcmVhdGUoKQogICAgICAg
ICAgICAgLnNldERvY3VtZW50cyhkb2N1bWVudENvdW50KQogICAgICAgICAgICAgLnNldE5vZGVz
KG5vZGVDb3VudCkKICAgICAgICAgICAgIC5zZXRKc0V2ZW50TGlzdGVuZXJzKGxpc3RlbmVyQ291
bnQpOwpAQCAtNjA2LDcgKzYwNiw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6YXBw
ZW5kUmVjb3JkKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhLCBUaW1lCiB2b2lkIElu
c3BlY3RvclRpbWVsaW5lQWdlbnQ6OnNlbmRFdmVudChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gZXZlbnQpCiB7CiAgICAgLy8gRklYTUU6IHJ1bnRpbWVDYXN0IGlzIGEgaGFjay4gV2UgZG8g
aXQgYmVjYXVzZSB3ZSBjYW4ndCBidWlsZCBUaW1lbGluZUV2ZW50IGRpcmVjdGx5IG5vdy4KLSAg
ICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50PiByZWNvcmRDaGVj
a2VkID0gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50OjpydW50aW1lQ2FzdChl
dmVudCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpUaW1l
bGluZUV2ZW50PiByZWNvcmRDaGVja2VkID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxp
bmU6OlRpbWVsaW5lRXZlbnQ6OnJ1bnRpbWVDYXN0KGV2ZW50KTsKICAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlci0+ZXZlbnRSZWNvcmRlZChyZWNvcmRDaGVja2VkLnJlbGVhc2UoKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCmlu
ZGV4IDhmZmFhODUuLmUzYTM0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaApAQCAtMjM4LDcgKzIzOCw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBhcHBlbmRSZWNvcmQoUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4gZGF0YSwgVGltZWxpbmVSZWNvcmRUeXBlLCBib29sIGNhcHR1cmVDYWxsU3RhY2ssIEZyYW1l
Kik7CiAgICAgdm9pZCBwdXNoQ3VycmVudFJlY29yZChQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiwgVGltZWxpbmVSZWNvcmRUeXBlLCBib29sIGNhcHR1cmVDYWxsU3RhY2ss
IEZyYW1lKik7CiAKLSAgICB2b2lkIHNldERPTUNvdW50ZXJzKFR5cGVCdWlsZGVyOjpUaW1lbGlu
ZTo6VGltZWxpbmVFdmVudCogcmVjb3JkKTsKKyAgICB2b2lkIHNldERPTUNvdW50ZXJzKEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50KiByZWNvcmQpOwogICAg
IHZvaWQgc2V0RnJhbWVJZGVudGlmaWVyKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiByZWNv
cmQsIEZyYW1lKik7CiAKICAgICB2b2lkIGRpZENvbXBsZXRlQ3VycmVudFJlY29yZChUaW1lbGlu
ZVJlY29yZFR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VS
dW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdl
bnQuY3BwCmluZGV4IDU0ODc2MzkuLmExYjY3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAKICNpbmNsdWRlICJT
Y3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKIAotdXNpbmcg
V2ViQ29yZTo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHREZXNjcmlwdGlv
bjsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRl
eHREZXNjcmlwdGlvbjsKIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcAppbmRleCA2NmY3OGFiLi5hYmU5
ZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcApA
QCAtNjAsOSArNjAsOSBAQCBib29sIFNjcmlwdENhbGxGcmFtZTo6aXNFcXVhbChjb25zdCBTY3Jp
cHRDYWxsRnJhbWUmIG8pIGNvbnN0CiB9CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotUGFzc1Jl
ZlB0cjxUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q2FsbEZyYW1lPiBTY3JpcHRDYWxsRnJhbWU6OmJ1
aWxkSW5zcGVjdG9yT2JqZWN0KCkgY29uc3QKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q29uc29sZTo6Q2FsbEZyYW1lPiBTY3JpcHRDYWxsRnJhbWU6OmJ1aWxkSW5zcGVjdG9y
T2JqZWN0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNhbGxG
cmFtZTo6Y3JlYXRlKCkKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29s
ZTo6Q2FsbEZyYW1lOjpjcmVhdGUoKQogICAgICAgICAuc2V0RnVuY3Rpb25OYW1lKG1fZnVuY3Rp
b25OYW1lKQogICAgICAgICAuc2V0VXJsKG1fc2NyaXB0TmFtZSkKICAgICAgICAgLnNldExpbmVO
dW1iZXIobV9saW5lTnVtYmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1NjcmlwdENhbGxGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxG
cmFtZS5oCmluZGV4IDI0MjUxNGIuLmQ2ZGNmYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvU2NyaXB0Q2FsbEZyYW1lLmgKQEAgLTMyLDcgKzMyLDcgQEAKICNkZWZpbmUgU2NyaXB0Q2Fs
bEZyYW1lX2gKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0jaW5jbHVkZSAiSW5zcGVjdG9yVHlw
ZUJ1aWxkZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCIKICNlbmRp
ZgogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgog
ICAgIGJvb2wgaXNFcXVhbChjb25zdCBTY3JpcHRDYWxsRnJhbWUmKSBjb25zdDsKIAogI2lmIEVO
QUJMRShJTlNQRUNUT1IpCi0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q2Fs
bEZyYW1lPiBidWlsZEluc3BlY3Rvck9iamVjdCgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q2FsbEZyYW1lPiBidWlsZEluc3BlY3Rvck9i
amVjdCgpIGNvbnN0OwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwCmluZGV4IDM2YzUwMDguLmM0YWYxYjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwCkBAIC0zMSw3ICszMSw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAK
LSNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgorI2luY2x1ZGUgIkluc3BlY3Rvcldl
YlR5cGVCdWlsZGVycy5oIgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKQEAgLTgxLDkgKzgxLDkgQEAgYm9vbCBTY3Jp
cHRDYWxsU3RhY2s6OmlzRXF1YWwoU2NyaXB0Q2FsbFN0YWNrKiBvKSBjb25zdAogfQogCiAjaWYg
RU5BQkxFKElOU1BFQ1RPUikKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpDb25zb2xlOjpDYWxsRnJhbWU+PiBTY3JpcHRDYWxsU3RhY2s6OmJ1aWxkSW5zcGVjdG9y
QXJyYXkoKSBjb25zdAorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDYWxsRnJhbWU+PiBTY3JpcHRDYWxsU3Rh
Y2s6OmJ1aWxkSW5zcGVjdG9yQXJyYXkoKSBjb25zdAogewotICAgIFJlZlB0cjxUeXBlQnVpbGRl
cjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNhbGxGcmFtZT4+IGZyYW1lcyA9IFR5cGVC
dWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q2FsbEZyYW1lPjo6Y3JlYXRlKCk7
CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNvbnNvbGU6OkNhbGxGcmFtZT4+IGZyYW1lcyA9IEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNhbGxGcmFtZT46
OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mcmFtZXMuc2l6ZSgpOyBp
KyspCiAgICAgICAgIGZyYW1lcy0+YWRkSXRlbShtX2ZyYW1lcy5hdChpKS5idWlsZEluc3BlY3Rv
ck9iamVjdCgpKTsKICAgICByZXR1cm4gZnJhbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1NjcmlwdENhbGxTdGFjay5oCmluZGV4IGQ4ZWMzNTYuLjE5NzVkYTVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oCkBAIC0zMiw3ICszMiw3IEBACiAjZGVm
aW5lIFNjcmlwdENhbGxTdGFja19oCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotI2luY2x1ZGUg
Ikluc3BlY3RvclR5cGVCdWlsZGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViVHlwZUJ1aWxk
ZXJzLmgiCiAjZW5kaWYKIAogI2luY2x1ZGUgIlNjcmlwdENhbGxGcmFtZS5oIgpAQCAtNTYsNyAr
NTYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VxdWFsKFNjcmlwdENhbGxTdGFjayopIGNvbnN0
OwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpB
cnJheTxUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q2FsbEZyYW1lPj4gYnVpbGRJbnNwZWN0b3JBcnJh
eSgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q2FsbEZyYW1lPj4gYnVpbGRJbnNwZWN0
b3JBcnJheSgpIGNvbnN0OwogI2VuZGlmCiAKIHByaXZhdGU6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218632</attachid>
            <date>2013-12-06 16:42:55 -0800</date>
            <delta_ts>2013-12-09 11:26:02 -0800</delta_ts>
            <desc>[PATCH] For Bots 1</desc>
            <filename>for-bots.patch</filename>
            <type>text/plain</type>
            <size>242293</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">Y29tbWl0IDY3N2NjNTM1ODA4MmI0M2U5MjM2MjA2MjE5NWM0ZmY4ZDViZTZjOGIKQXV0aG9yOiBK
b3NlcGggUGVjb3Jhcm8gPHBlY29yYXJvQGFwcGxlLmNvbT4KRGF0ZTogICBTYXQgTm92IDIzIDIy
OjU1OjQ4IDIwMTMgLTA4MDAKCiAgICBQQVJUIDE6IFB1c2ggRG93biBTb21lIENvcmUgSW5zcGVj
dG9yIENsYXNzZXMKCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNjkwOTM5
ZC4uNzNjMDUwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjE0LDYg
KzIxNCwxMCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGhlYXAvV2Vha1NldC5j
cHAKICAgICBoZWFwL1dyaXRlQmFycmllclN1cHBvcnQuY3BwCiAKKyAgICBpbnNwZWN0b3IvSW5z
cGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAKKyAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIuY3BwCisgICAgaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKKwogICAgIGlu
dGVycHJldGVyL0Fic3RyYWN0UEMuY3BwCiAgICAgaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAog
ICAgIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5k
ZXggNmY3M2JmNS4uNzczZmVlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjggQEAKKzIwMTMtMTItMDUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVjdG9yIFJlcXVpcmVkIENs
YXNzZXMgRG93biBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFnZW50
QmFzZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdl
bnRSZWdpc3RyeS5oLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudEJhc2U6On5J
bnNwZWN0b3JBZ2VudEJhc2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudEJh
c2U6OmRpc2NhcmRBZ2VudCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50QmFz
ZTo6SW5zcGVjdG9yQWdlbnRCYXNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdl
bnRSZWdpc3RyeS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFn
ZW50UmVnaXN0cnk6OmFwcGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFnZW50
UmVnaXN0cnkuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckFnZW50UmVnaXN0cnkuaC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcC4KKyAgICAgICAgKEluc3BlY3Rvcjo6Z2V0UHJvcGVy
dHlWYWx1ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIuaC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3Bw
LgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaC4KKwogMjAxMy0xMi0wNiAg
TWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBTcGxpdCBzaXpp
bmcgb2YgVmFyQXJncyBmcmFtZXMgZnJvbSBsb2FkaW5nIGFyZ3VtZW50cyBmb3IgdGhlIGZyYW1l
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDdmYWFiYmUu
LjliNzVlYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC02MTAsNyArNjEwLDE0IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pY3UvdW5pY29kZS91dGZfb2xkLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pY3UvdW5pY29kZS91dHlwZXMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ljdS91
bmljb2RlL3V2ZXJzaW9uLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQWdlbnRCYXNlLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBcCisJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIFwKKwlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAgXAorCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmggXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9BYnN0cmFjdFBDLmNwcCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Fic3RyYWN0UEMuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENhbGwuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvagppbmRleCA1MzY3MDc2Li43MGJhYjFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTQ1NSw2ICs0NTUsOSBAQAogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5caGVhcFxXZWFrSGFuZGxlT3duZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5caGVhcFxXZWFrU2V0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXGhlYXBcV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAiIC8+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
Y3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvclZh
bHVlcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxBYnN0
cmFjdFBDLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGludGVycHJldGVyXENh
bGxGcmFtZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxJ
bnRlcnByZXRlci5jcHAiIC8+CkBAIC05OTUsNyArOTk4LDExIEBACiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxoZWFwXFdlYWtTZXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGhlYXBcV2Vha1NldElubGluZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhl
YXBcV3JpdGVCYXJyaWVyU3VwcG9ydC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aW5zcGVjdG9yXEluc3BlY3RvckFnZW50QmFzZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCIgLz4KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3Bl
Y3RvclZhbHVlcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJc
QWJzdHJhY3RQQy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJc
Q2FjaGVkQ2FsbC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJc
Q2FsbEZyYW1lLmgiIC8+CkBAIC0xMzQzLDQgKzEzNTAsNCBAQAogICA8SW1wb3J0R3JvdXAgTGFi
ZWw9IkV4dGVuc2lvblRhcmdldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQ
YXRoKVxCdWlsZEN1c3RvbWl6YXRpb25zXG1hc20udGFyZ2V0cyIgLz4KICAgPC9JbXBvcnRHcm91
cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXgg
YTI2MTBmNy4uMzNhZmE5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ouZmlsdGVycwpAQCAtMjc5LDYgKzI3OSwxNSBAQAogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5caGVhcFxXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcCI+CiAgICAgICA8RmlsdGVyPmhl
YXA8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGluc3BlY3RvclxJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcCI+CisgICAgICA8RmlsdGVyPmlu
c3BlY3RvcjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCI+CisgICAgICA8
RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvclZhbHVlcy5jcHAiPgorICAgICAgPEZp
bHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGludGVycHJldGVyXEFic3RyYWN0UEMuY3BwIj4KICAgICAgIDxGaWx0ZXI+
aW50ZXJwcmV0ZXI8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTE3MTUsOSArMTcyNCwy
MSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxXcml0ZUJhcnJpZXJTdXBwb3J0
LmgiPgogICAgICAgPEZpbHRlcj5oZWFwPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQWdlbnRCYXNlLmgiPgor
ICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Lmgi
PgorICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlci5oIj4KKyAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1
ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsLmgiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0Ns
SW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JW
YWx1ZXMuaCI+CisgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNs
dWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcQWJzdHJhY3RQQy5o
Ij4KICAgICAgIDxGaWx0ZXI+aW50ZXJwcmV0ZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4K
QEAgLTMxNzAsNCArMzE5MSw0IEBACiAgICAgICA8RmlsdGVyPmppdDwvRmlsdGVyPgogICAgIDwv
TUFTTT4KICAgPC9JdGVtR3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5MjE1N2U2
Li44YWVhNzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODkwLDYgKzg5MCwx
MyBAQAogCQlBMTcxMkI0MTExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTcxMkI0MDExQzdCMjM1MDA3
QTUzMTUgLyogUmVnRXhwS2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQTFBMDA5QzAxODMxQTIyRDAwQ0Y4NzExIC8qIE1hY3JvQXNzZW1ibGVy
QVJNNjQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
NDA5MjNDMTU2RUVEM0IwMDU2NkNCMiAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTFBMDA5QzExODMxQTI2
RTAwQ0Y4NzExIC8qIEFSTTY0QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NjQwOTIzQjE1NkVFRDNCMDA1NjZDQjIgLyogQVJNNjRBc3Nl
bWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlBNTkzQ0Y3QzE4NDAzNjAzMDBCRkNFMjcgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5M0NG
N0ExODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCAqLzsg
fTsKKwkJQTU5M0NGN0QxODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTkz
Q0Y3QjE4NDAzNjAzMDBCRkNFMjcgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNTkzQ0Y3RjE4
NDAzNjJDMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTkzQ0Y3RTE4NDAzNjJDMDBCRkNFMjcgLyog
SW5zcGVjdG9yQWdlbnRCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJQTU5M0NGODIxODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVl
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTkz
Q0Y4MDE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCAqLzsgfTsKKwkJQTU5
M0NGODMxODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5M0NGODExODQwMzc3MTAwQkZDRTI3
IC8qIEluc3BlY3RvclZhbHVlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUE1OTNDRjg2MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2Vu
dFJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1OTNDRjg0MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNw
cCAqLzsgfTsKKwkJQTU5M0NGODcxODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVn
aXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
OTNDRjg1MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTU5NDU1OEYxODI0
NUVGRDAwQ0MzODQzIC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5NDU1OEUxODI0NUVERTAwQ0Mz
ODQzIC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwICovOyB9OwogCQlBNTk0NTU5MjE4
MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OTQ1NTkwMTgyNDc0NDcwMEND
Mzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwICovOyB9OwogCQlBNTk0NTU5MzE4
MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTk0NTU5MTE4MjQ3NDQ3MDBDQzM4
NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmggKi87IH07CkBAIC0yMjE3LDYgKzIyMjQs
MTMgQEAKIAkJQTE3MTJCM0ExMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ0V4cENhY2hlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3MTJCM0UxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4
cENhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cENhY2hlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNzEyQjQwMTFDN0IyMzUwMDdBNTMxNSAv
KiBSZWdFeHBLZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwS2V5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTNDRjdBMTg0MDM2MDMwMEJGQ0Uy
NyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHA7IHBhdGggPSBp
bnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBNTkzQ0Y3QjE4NDAzNjAzMDBCRkNFMjcgLyogSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIuaDsgcGF0aCA9IGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTkzQ0Y3RTE4NDAzNjJD
MDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEluc3BlY3RvckFnZW50QmFzZS5oOyBwYXRoID0gaW5zcGVjdG9yL0luc3BlY3Rv
ckFnZW50QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTkzQ0Y4MDE4NDAz
NzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEluc3BlY3RvclZhbHVlcy5jcHA7IHBhdGggPSBpbnNwZWN0b3IvSW5z
cGVjdG9yVmFsdWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU5M0NGODEx
ODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBJbnNwZWN0b3JWYWx1ZXMuaDsgcGF0aCA9IGluc3BlY3Rvci9JbnNwZWN0
b3JWYWx1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU5M0NGODQxODQwMzhD
QTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHA7IHBhdGggPSBp
bnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE1OTNDRjg1MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lz
dHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEluc3BlY3RvckFnZW50UmVn
aXN0cnkuaDsgcGF0aCA9IGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1OTQ1NThFMTgyNDVFREUwMENDMzg0MyAvKiBSZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwOyBwYXRoID0gaW5zcGVjdG9yL3Jl
bW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTU5NDU1OTAxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdn
YWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0dsb2JhbE9i
amVjdERlYnVnZ2FibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTk0NTU5
MTE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDE5MCw3ICs0MjA0LDE0IEBACiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUE1QkExNUUwMTgyMzQwOUQwMEE4MkU2OSAv
KiByZW1vdGUgKi8sCisJCQkJQTU5M0NGN0UxODQwMzYyQzAwQkZDRTI3IC8qIEluc3BlY3RvckFn
ZW50QmFzZS5oICovLAorCQkJCUE1OTNDRjg0MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JB
Z2VudFJlZ2lzdHJ5LmNwcCAqLywKKwkJCQlBNTkzQ0Y4NTE4NDAzOENBMDBCRkNFMjcgLyogSW5z
cGVjdG9yQWdlbnRSZWdpc3RyeS5oICovLAorCQkJCUE1OTNDRjdBMTg0MDM2MDMwMEJGQ0UyNyAv
KiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgKi8sCisJCQkJQTU5M0NGN0IxODQwMzYw
MzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggKi8sCiAJCQkJQTU5NDU1
OTQxODI0NzlFQjAwQ0MzODQzIC8qIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oICovLAorCQkJ
CUE1OTNDRjgwMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwICovLAorCQkJ
CUE1OTNDRjgxMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuaCAqLywKIAkJCSk7
CiAJCQluYW1lID0gaW5zcGVjdG9yOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTQz
MzEsNiArNDM1Miw3IEBACiAJCQkJMEYyQjY2REYxN0I2QjVBQjAwQTdBRTNGIC8qIERhdGFWaWV3
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0QyMDM0QTBFMTcxMzVFMDAyQzdFODIgLyogRGF0ZUNv
bnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTM1OUNGMzBGREQ4OUFEMDAyMDYxODAg
LyogRGF0ZUNvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUE1OTNDRjdGMTg0MDM2MkMw
MEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTE2
NjAyMEUxOTk3QjQwMDgwNjZERCAvKiBEYXRlSW5zdGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTE0QTE1NjMyMTA5NjYzNjUwMDZGQTI2MCAvKiBEYXRlSW5zdGFuY2VDYWNoZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkNEMjAzNEMwRTE3MTM1RTAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUuaCBp
biBIZWFkZXJzICovLApAQCAtNDM2Miw2ICs0Mzg0LDcgQEAKIAkJCQkwRjgzNjRCNzE2NEIwQzEx
MDA1MzMyOUEgLyogREZHQnJhbmNoRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUEw
MDlDMDE4MzFBMjJEMDBDRjg3MTEgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODZFQzlEQzUxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0J5dGVDb2RlUGFyc2VyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlBNTkzQ0Y4NzE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9y
QWdlbnRSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNTZDMzYxNjI3QjBBRDAwN0Yy
NzgzIC8qIERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjdCMjk0QjE0QzNDRDJGMDA3QzNEQjEgLyogREZHQ2FwYWJpbGl0aWVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkZGQzk1ODE0RUY5MEEyMDBDNzI1MzIgLyogREZHQ0ZBUGhh
c2UuaCBpbiBIZWFkZXJzICovLApAQCAtNDQ0OCw2ICs0NDcxLDcgQEAKIAkJCQk4NkVDOUREMzEz
MjhERjgyMDAyQjJBRDcgLyogREZHU3BlY3VsYXRpdmVKSVQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3RDg5RDAwMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdTU0FDb252ZXJzaW9uUGhhc2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGOUZCNEY1MTdGQ0I5MTcwMENCNjdGOCAvKiBERkdTdGFja0xheW91
dFBoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTkzQ0Y4MzE4NDAzNzcxMDBCRkNFMjcgLyog
SW5zcGVjdG9yVmFsdWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYzOTQ3ODE1RENFMzRCMDA2
QTU5N0MgLyogREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZDMDk3QTIxNDZCMjhDQzAwQ0YyNDQyIC8qIERGR1RodW5rcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZEOEEzMjgxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhh
c2UuaCBpbiBIZWFkZXJzICovLApAQCAtNDgyNiw2ICs0ODUwLDcgQEAKIAkJCQkwRjBDRDRDMjE1
RjFBNjA3MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5kZXhNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjlGQzhDNTE0RTFCNjA0MDBENTJBRTAgLyogUHV0S2luZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTQ3Qjg0NjMwRTZERTZCMTAwNDc3NUE0IC8qIFB1dFByb3BlcnR5U2xvdC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQTU5M0NGN0QxODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY2MEFDMjE2NzQwRjgzMDAwMjk3Nzkg
LyogUmVkdWNlV2hpdGVzcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NUEwRTE2RjVD
RDAwQjM0NDYwIC8qIFJlZ0V4cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE3MTJCM0YxMUM3QjIy
ODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggaW4gSGVhZGVycyAqLywKQEAgLTU0NDcsNiArNTQ3
Miw3IEBACiAJCQkJMEZGNDI3NjQxNTkxQTFDQzAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4MUFEMjE1NEZCNEVFMDA5ODNFNzIgLyogREZHRG9t
aW5hdG9ycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQzQzgyNjE0MTE1RDQwMDBGRDgxQ0Ig
LyogREZHRHJpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1OTNDRjgyMTg0MDM3NzEwMEJG
Q0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGMEYxOUUx
NkI3MkEwQjAwNURGOTVCIC8qIERGR0VkZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc0REVG
OTMxODJEOTkxNDAwNTIyQzIyIC8qIE1hcEl0ZXJhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGQkMwQUU3MTQ5NkM3QzQwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTU1NTAsNiArNTU3Niw3IEBACiAJCQkJMEY5RDMzOUExODAzQURC
NzAwNzNDMkJDIC8qIEZUTFN0YWNrTWFwcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEx
NjE3MDZCQjkwMDBCQjcyMkMgLyogRlRMU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYy
MzVCRTExNzE3OEUxQzAwNjkwQzdGIC8qIEZUTFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlBNTkzQ0Y3QzE4NDAzNjAzMDBCRkNFMjcgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMzVCRTMxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTFZh
bHVlRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUNCMTA3RUMzNzYwMDQyN0E0
OCAvKiBGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjBGMTlG
MTZCNzJBMTcwMDVERjk1QiAvKiBGdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtNTgxOCw2ICs1ODQ1LDcgQEAKIAkJCQk4NjcwNEI4NDEyREJBMzM3MDBBOUZFN0Ig
LyogWWFyckludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0Qjg2MTJEQkEz
MzcwMEE5RkU3QiAvKiBZYXJySklULmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0Qjg5MTJE
QkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNTkz
Q0Y4NjE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk4NjcwNEI0MjEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNr
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQWdlbnRSZWdpc3RyeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBZ2VudEJhc2UuaApzaW1pbGFyaXR5IGluZGV4IDY4JQpjb3B5IGZyb20gU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaApjb3B5IHRvIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmgKaW5kZXggNGZk
MDM1My4uMjBhZDcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckFnZW50UmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckFnZW50QmFzZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBA
IC0yNCwyOSArMjQsMzMgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBJbnNwZWN0
b3JBZ2VudFJlZ2lzdHJ5X2gKLSNkZWZpbmUgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeV9oCisjaWZu
ZGVmIEluc3BlY3RvckFnZW50QmFzZV9oCisjZGVmaW5lIEluc3BlY3RvckFnZW50QmFzZV9oCiAK
LSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIGNs
YXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOworY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsOwogCi1jbGFzcyBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5IHsKK2NsYXNzIEluc3BlY3Rv
ckFnZW50QmFzZSB7CiBwdWJsaWM6Ci0gICAgdm9pZCBhcHBlbmQoUGFzc093blB0cjxJbnNwZWN0
b3JCYXNlQWdlbnQ+KTsKKyAgICB2aXJ0dWFsIH5JbnNwZWN0b3JBZ2VudEJhc2UoKSB7IH0KIAot
ICAgIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKik7Ci0gICAgdm9pZCB3aWxsRGVzdHJv
eUZyb250ZW5kQW5kQmFja2VuZCgpOwotICAgIHZvaWQgZGlzY2FyZEFnZW50cygpOworICAgIHZp
cnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBkaXNjYXJkQWdlbnQoKSB7IH0KIAotcHJpdmF0ZToKLSAgICBWZWN0b3I8T3duUHRyPEluc3Bl
Y3RvckJhc2VBZ2VudD4+IG1fYWdlbnRzOworcHJvdGVjdGVkOgorICAgIEluc3BlY3RvckFnZW50
QmFzZShjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgICAgIDogbV9uYW1lKG5hbWUpCisgICAgewor
ICAgIH0KKworICAgIFN0cmluZyBtX25hbWU7CiB9OworICAgIAorfSAvLyBuYW1lc3BhY2UgSW5z
cGVjdG9yCiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vICFkZWZpbmVkKElu
c3BlY3RvckFnZW50UmVnaXN0cnlfaCkKKyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JBZ2Vu
dEJhc2VfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JB
Z2VudFJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQWdlbnRSZWdpc3RyeS5jcHAKc2ltaWxhcml0eSBpbmRleCA5NCUKcmVuYW1lIGZyb20gU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwCnJlbmFtZSB0
byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnku
Y3BwCmluZGV4IDA5OWQxYTMuLjQ2ZTkyMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwCkBAIC0yNSwxNCArMjUs
MTMgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoSU5TUEVDVE9S
KQotCiAjaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIgogCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotdm9pZCBJbnNwZWN0b3JBZ2VudFJlZ2lz
dHJ5OjphcHBlbmQoUGFzc093blB0cjxJbnNwZWN0b3JCYXNlQWdlbnQ+IGFnZW50KQorbmFtZXNw
YWNlIEluc3BlY3RvciB7CisKK3ZvaWQgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6YXBwZW5kKFBh
c3NPd25QdHI8SW5zcGVjdG9yQWdlbnRCYXNlPiBhZ2VudCkKIHsKICAgICBtX2FnZW50cy5hcHBl
bmQoYWdlbnQpOwogfQpAQCAtNTUsNiArNTQsNiBAQCB2b2lkIEluc3BlY3RvckFnZW50UmVnaXN0
cnk6OmRpc2NhcmRBZ2VudHMoKQogICAgICAgICBtX2FnZW50c1tpXS0+ZGlzY2FyZEFnZW50KCk7
CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIEluc3BlY3Rvcgog
CiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaApzaW1pbGFyaXR5IGluZGV4IDg3
JQpjb3B5IGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0
cnkuaApjb3B5IHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdl
bnRSZWdpc3RyeS5oCmluZGV4IDRmZDAzNTMuLmNiNjU3MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgKQEAgLTI3LDI2
ICsyNywyNyBAQAogI2lmbmRlZiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5X2gKICNkZWZpbmUgSW5z
cGVjdG9yQWdlbnRSZWdpc3RyeV9oCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIK
KyNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudEJhc2UuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFt
ZXNwYWNlIEluc3BlY3RvciB7CiAKIGNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwor
Y2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogCi1jbGFzcyBJbnNwZWN0b3JBZ2VudFJl
Z2lzdHJ5IHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvckFnZW50UmVnaXN0cnkg
ewogcHVibGljOgotICAgIHZvaWQgYXBwZW5kKFBhc3NPd25QdHI8SW5zcGVjdG9yQmFzZUFnZW50
Pik7CisgICAgdm9pZCBhcHBlbmQoUGFzc093blB0cjxJbnNwZWN0b3JBZ2VudEJhc2U+KTsKIAog
ICAgIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKik7CiAgICAgdm9pZCB3aWxsRGVzdHJv
eUZyb250ZW5kQW5kQmFja2VuZCgpOwogICAgIHZvaWQgZGlzY2FyZEFnZW50cygpOwogCiBwcml2
YXRlOgotICAgIFZlY3RvcjxPd25QdHI8SW5zcGVjdG9yQmFzZUFnZW50Pj4gbV9hZ2VudHM7Cisg
ICAgVmVjdG9yPE93blB0cjxJbnNwZWN0b3JBZ2VudEJhc2U+PiBtX2FnZW50czsKIH07CiAKLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYg
Ly8gIWRlZmluZWQoSW5zcGVjdG9yQWdlbnRSZWdpc3RyeV9oKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3Bw
CnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAKcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCmluZGV4IGJm
YTRjNGIuLmMyNjY4NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAKQEAgLTI5LDEyICsyOSwxMiBA
QAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvckZvcndhcmRp
bmcuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFj
ZSBJbnNwZWN0b3IgewogCiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNl
OjpDYWxsYmFja0Jhc2UoUGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gYmFj
a2VuZERpc3BhdGNoZXIsIGludCBpZCkKICAgICA6IG1fYmFja2VuZERpc3BhdGNoZXIoYmFja2Vu
ZERpc3BhdGNoZXIpCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcjo6cmVwb3J0UHJvdG9jb2xFcnJvcihjb25zdCBsb25nKiBjb25zdCBjYWxsSWQsIEMK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuVmFsdWVUeXBlLCB0eXBlbmFtZSBWYWx1ZVR5
cGUsIHR5cGVuYW1lIERlZmF1bHRWYWx1ZVR5cGU+Ci1SZXR1cm5WYWx1ZVR5cGUgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI6OmdldFByb3BlcnR5VmFsdWUoSW5zcGVjdG9yT2JqZWN0KiBvYmpl
Y3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yQXJyYXkq
IHByb3RvY29sRXJyb3JzLCBEZWZhdWx0VmFsdWVUeXBlIGRlZmF1bHRWYWx1ZSwgYm9vbCAoKmFz
TWV0aG9kKShJbnNwZWN0b3JWYWx1ZSosIFZhbHVlVHlwZSopLCBjb25zdCBjaGFyKiB0eXBlTmFt
ZSkKK3N0YXRpYyBSZXR1cm5WYWx1ZVR5cGUgZ2V0UHJvcGVydHlWYWx1ZShJbnNwZWN0b3JPYmpl
Y3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0
b3JBcnJheSogcHJvdG9jb2xFcnJvcnMsIERlZmF1bHRWYWx1ZVR5cGUgZGVmYXVsdFZhbHVlLCBi
b29sICgqYXNNZXRob2QpKEluc3BlY3RvclZhbHVlKiwgVmFsdWVUeXBlKiksIGNvbnN0IGNoYXIq
IHR5cGVOYW1lKQogewogICAgIEFTU0VSVChwcm90b2NvbEVycm9ycyk7CiAKQEAgLTI1OSw2ICsy
NTksNiBAQCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcjo6Z2V0QXJyYXkoSW5zcGVjdG9yT2JqZWN0KgogICAgIHJldHVybiBnZXRQcm9wZXJ0eVZh
bHVlPFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+LCBJ
bnNwZWN0b3JBcnJheSo+KG9iamVjdCwgbmFtZSwgdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMs
IG51bGxwdHIsIEFzTWV0aG9kQnJpZGdlczo6YXNBcnJheSwgIkFycmF5Iik7CiB9CiAKLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8g
RU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oCnNpbWlsYXJpdHkgaW5kZXggODclCnJl
bmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlci5oCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyLmgKaW5kZXggYTZlNGQyZi4uNTBmZTYzYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlci5oCkBAIC0yNywxMiArMjcsMTIgQEAKICNpZm5kZWYgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXJfaAogI2RlZmluZSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcl9oCiAKLSNpbmNsdWRl
ICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgorI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewor
bmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIGNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwpAQCAtNDcsMTUgKzQ3LDEzIEBAIHBy
b3RlY3RlZDoKICAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2Vu
ZERpc3BhdGNoZXI7CiB9OwogCi1jbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciA6IHB1
YmxpYyBSZWZDb3VudGVkPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiB7CitjbGFzcyBKU19F
WFBPUlRfUFJJVkFURSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IGNyZWF0ZShJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqKTsKLSAgICB2aXJ0dWFsIH5JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcigp
IHsgfQogCi0gICAgY2xhc3MgQ2FsbGJhY2tCYXNlOiBwdWJsaWMgUmVmQ291bnRlZDxDYWxsYmFj
a0Jhc2U+IHsKKyAgICBjbGFzcyBDYWxsYmFja0Jhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxDYWxs
YmFja0Jhc2U+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIENhbGxiYWNrQmFzZShQYXNzUmVmUHRy
PEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiwgaW50IGlkKTsKLSAgICAgICAgdmlydHVhbCB+
Q2FsbGJhY2tCYXNlKCkgeyB9CiAKICAgICAgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0OwogICAg
ICAgICB2b2lkIHNlbmRGYWlsdXJlKGNvbnN0IEVycm9yU3RyaW5nJik7CkBAIC05OCwxMyArOTYs
MTAgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcihJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgOiBtX2lu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbChpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIHsgfQogCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuVmFsdWVUeXBlLCB0eXBlbmFtZSBWYWx1ZVR5cGUs
IHR5cGVuYW1lIERlZmF1bHRWYWx1ZVR5cGU+Ci0gICAgc3RhdGljIFJldHVyblZhbHVlVHlwZSBn
ZXRQcm9wZXJ0eVZhbHVlKEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5h
bWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3RvckFycmF5KiBwcm90b2NvbEVycm9ycywgRGVm
YXVsdFZhbHVlVHlwZSBkZWZhdWx0VmFsdWUsIGJvb2wgKCphc01ldGhvZCkoSW5zcGVjdG9yVmFs
dWUqLCBWYWx1ZVR5cGUqKSwgY29uc3QgY2hhciogdHlwZU5hbWUpOwotCiAgICAgSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKICAgICBIYXNoTWFw
PFN0cmluZywgSW5zcGVjdG9yU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIqPiBtX2Rpc3Bh
dGNoZXJzOwogfTsKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgSW5z
cGVjdG9yCiAKICNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcl9o
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAK
c2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclZhbHVlcy5jcHAKcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcAppbmRleCA4ZmNlMzJkLi4yNDE5ZGVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKQEAgLTM1
LDcgKzM1LDcgQEAKICNpbmNsdWRlIDx3dGYvZHRvYS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CiAKIG5hbWVzcGFjZSB7CiAKQEAgLTgzMyw0ICs4MzMsNCBAQCBQYXNzUmVmUHRyPEluc3Bl
Y3RvckJhc2ljVmFsdWU+IEluc3BlY3RvckJhc2ljVmFsdWU6OmNyZWF0ZShkb3VibGUgdmFsdWUp
CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbnNwZWN0b3JCYXNpY1ZhbHVlKHZhbHVlKSk7CiB9
CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaApzaW1pbGFyaXR5
IGluZGV4IDk1JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
VmFsdWVzLmgKcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yVmFsdWVzLmgKaW5kZXggY2JiN2Y3MS4uMDEyYTFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKQEAgLTM4LDEyICszOCwxMiBAQAogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIGNs
YXNzIEluc3BlY3RvckFycmF5OwogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogCi1jbGFzcyBJbnNw
ZWN0b3JWYWx1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3BlY3RvclZhbHVlPiB7CitjbGFzcyBK
U19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JWYWx1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3Bl
Y3RvclZhbHVlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGludCBtYXhEZXB0aCA9IDEw
MDA7CiAKQEAgLTkwLDcgKzkwLDcgQEAgcHJpdmF0ZToKICAgICBUeXBlIG1fdHlwZTsKIH07CiAK
LWNsYXNzIEluc3BlY3RvckJhc2ljVmFsdWUgOiBwdWJsaWMgSW5zcGVjdG9yVmFsdWUgeworY2xh
c3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yQmFzaWNWYWx1ZSA6IHB1YmxpYyBJbnNwZWN0
b3JWYWx1ZSB7CiBwdWJsaWM6CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JCYXNp
Y1ZhbHVlPiBjcmVhdGUoYm9vbCk7CkBAIC0xMTcsNyArMTE3LDcgQEAgcHJpdmF0ZToKICAgICB9
OwogfTsKIAotY2xhc3MgSW5zcGVjdG9yU3RyaW5nIDogcHVibGljIEluc3BlY3RvclZhbHVlIHsK
K2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvclN0cmluZyA6IHB1YmxpYyBJbnNwZWN0
b3JWYWx1ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yU3RyaW5n
PiBjcmVhdGUoY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9y
U3RyaW5nPiBjcmVhdGUoY29uc3QgY2hhciopOwpAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6
CiAgICAgU3RyaW5nIG1fc3RyaW5nVmFsdWU7CiB9OwogCi1jbGFzcyBJbnNwZWN0b3JPYmplY3RC
YXNlIDogcHVibGljIEluc3BlY3RvclZhbHVlIHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIElu
c3BlY3Rvck9iamVjdEJhc2UgOiBwdWJsaWMgSW5zcGVjdG9yVmFsdWUgewogcHJpdmF0ZToKICAg
ICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+PiBEaWN0aW9u
YXJ5OwogCkBAIC0xOTIsNyArMTkyLDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgSW5zcGVjdG9yT2Jq
ZWN0IDogcHVibGljIEluc3BlY3Rvck9iamVjdEJhc2UgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlKCk7CisgICAgc3RhdGljIEpTX0VYUE9S
VF9QUklWQVRFIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGUoKTsKIAogICAgIHVz
aW5nIEluc3BlY3Rvck9iamVjdEJhc2U6OmFzT2JqZWN0OwogCkBAIC0yMjAsNyArMjIwLDcgQEAg
cHVibGljOgogfTsKIAogCi1jbGFzcyBJbnNwZWN0b3JBcnJheUJhc2UgOiBwdWJsaWMgSW5zcGVj
dG9yVmFsdWUgeworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yQXJyYXlCYXNlIDog
cHVibGljIEluc3BlY3RvclZhbHVlIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQ
dHI8SW5zcGVjdG9yVmFsdWU+Pjo6aXRlcmF0b3IgaXRlcmF0b3I7CiAgICAgdHlwZWRlZiBWZWN0
b3I8UmVmUHRyPEluc3BlY3RvclZhbHVlPj46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9y
OwpAQCAtMjYwLDcgKzI2MCw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIEluc3BlY3RvckFycmF5IDog
cHVibGljIEluc3BlY3RvckFycmF5QmFzZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+IGNyZWF0ZSgpOworICAgIHN0YXRpYyBKU19FWFBPUlRfUFJJVkFU
RSBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBjcmVhdGUoKTsKIAogICAgIHVzaW5nIEluc3Bl
Y3RvckFycmF5QmFzZTo6YXNBcnJheTsKIApAQCAtMzYzLDYgKzM2Myw2IEBAIGlubGluZSB2b2lk
IEluc3BlY3RvckFycmF5QmFzZTo6cHVzaEFycmF5KFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
IHZhbHVlKQogICAgIG1fZGF0YS5hcHBlbmQodmFsdWUpOwogfQogCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vICFkZWZpbmVkKElu
c3BlY3RvclZhbHVlc19oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBjZmEzNDJkLi4yY2M4ZWU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTU3Niw5ICsxNTc2LDcgQEAgc2V0KFdlYkNvcmVf
U09VUkNFUwogICAgIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCiAgICAgaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JB
Z2VudC5jcHAKLSAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAKICAgICBp
bnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAotICAgIGluc3BlY3Rv
ci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAogICAg
IGluc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuY3BwCkBAIC0xNjA5LDcgKzE2MDcsNiBAQCBzZXQo
V2ViQ29yZV9TT1VSQ0VTCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCiAg
ICAgaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlVGV4dEVkaXRvci5jcHAKICAgICBpbnNwZWN0b3Iv
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKLSAgICBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVz
LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKICAgICBpbnNwZWN0
b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5jcHAKICAgICBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDY4ZjMzMS4uYzIxM2RmZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE5MyBAQAorMjAxMy0xMi0wNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBw
bGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggTW9yZSBJbnNwZWN0b3IgUmVx
dWlyZWQgQ2xhc3NlcyBEb3duIGludG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTMyNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhcnQgMTogUHVzaCBkb3duIGNvcmUgaW5z
cGVjdG9yIGNsYXNzZXMuCisKKyAgICAgICAgICAtIE1vdmUgSW5zcGVjdEFnZW50QmFzZSwgSW5z
cGVjdG9yQWdlbnRSZWdpc3RyeSwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIsIEluc3BlY3Rv
clZhbHVlcworICAgICAgICAgICAgZG93biB0byBKYXZhU2NyaXB0Q29yZSBhbmQgaW50byB0aGUg
SW5zcGVjdG9yIG5hbWVzcGFjZS4KKyAgICAgICAgICAtIEFkZCBmb3J3YXJkaW5nIGhlYWRlcnMg
Zm9yIEphdmFTY3JpcHRDb3JlL2luc3BlY3RvciBmaWxlcy4KKyAgICAgICAgICAtIFVzZSB0aGUg
SW5zcGVjdG9yIG5hbWVzcGFjZSB3aGVyZSBhcHByb3ByaWF0ZS4KKyAgICAgICAgICAtIFJlbmFt
ZSBJbnNwZWN0b3JCYXNlQWdlbnQgdG8gSW5zcGVjdG9yQWdlbnRCYXNlIGZvciBjbGFyaXR5Lgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMv
aW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3YXJk
aW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oOiBBZGRlZC4KKyAg
ICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIuaDogQWRkZWQuCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0lu
c3BlY3RvclZhbHVlcy5oOiBBZGRlZC4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5m
aWx0ZXJzOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHA6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
anMvU2NyaXB0UHJvZmlsZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNw
cDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5oOgorICAgICAgICAqIGh0bWwv
cGFyc2VyL1hTU0F1ZGl0b3IuY3BwOgorICAgICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3JE
ZWxlZ2F0ZS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3Iu
cHk6CisgICAgICAgIChSYXdUeXBlcy5CYXNlVHlwZS5nZXRfcmF3X3ZhbGlkYXRvcl9jYWxsX3Rl
eHQpOgorICAgICAgICAoUmF3VHlwZXMuT2JqZWN0LmdldF9hcnJheV9pdGVtX3Jhd19jX3R5cGVf
dGV4dCk6CisgICAgICAgIChSYXdUeXBlcy5BbnkuZ2V0X2FycmF5X2l0ZW1fcmF3X2NfdHlwZV90
ZXh0KToKKyAgICAgICAgKFJhd1R5cGVzLkFycmF5LmdldF9hcnJheV9pdGVtX3Jhd19jX3R5cGVf
dGV4dCk6CisgICAgICAgIChUeXBlTW9kZWwuaW5pdF9jbGFzcyk6CisgICAgICAgIChUeXBlQmlu
ZGluZ3MuY3JlYXRlX3R5cGVfZGVjbGFyYXRpb25fLkVudW1CaW5kaW5nLmdldF9jb2RlX2dlbmVy
YXRvci5Db2RlR2VuZXJhdG9yLmdlbmVyYXRlX3R5cGVfYnVpbGRlcik6CisgICAgICAgIChUeXBl
QmluZGluZ3MuY3JlYXRlX3R5cGVfZGVjbGFyYXRpb25fLkNsYXNzQmluZGluZy5nZXRfY29kZV9n
ZW5lcmF0b3IuQ29kZUdlbmVyYXRvci5nZW5lcmF0ZV90eXBlX2J1aWxkZXIpOgorICAgICAgICAo
R2VuZXJhdG9yLmdvKToKKyAgICAgICAgKEdlbmVyYXRvci5wcm9jZXNzX2NvbW1hbmQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weToKKyAgICAg
ICAgKHZvaWQpOgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRfaCk6CisgICAgICAgIChJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnNfaCk6CisgICAgICAgIChBcnJheSk6CisgICAgICAgICog
aW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29s
ZU1lc3NhZ2UuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmNwcDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRCYXNlLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmNwcDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0TWFuYWdlci5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFu
YWdlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHA6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckFnZW50OjpJbnNwZWN0b3JBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdl
bnRCYXNlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QWdlbnRSZWdpc3RyeS5oLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQWdlbnRCYXNlOjpJ
bnNwZWN0b3JBZ2VudEJhc2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBbGxJbk9u
ZS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6
Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYXNlQWdlbnQuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ1NTQWdlbnQ6Okluc3BlY3RvckNTU0FnZW50KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNTU0FnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JDYW52YXNBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52
YXNBZ2VudDo6SW5zcGVjdG9yQ2FudmFzQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ2FudmFzQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5o
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjpJbnNwZWN0b3JDb25zb2xlQWdlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjpkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdl
bnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRP
TUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01E
ZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQ6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpJbnNwZWN0b3JEYXRh
YmFzZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckRhdGFiYXNlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VS
ZXNvdXJjZS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9y
RGVidWdnZXJBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZvcndh
cmRpbmcuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHA6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpJbnNwZWN0b3JIZWFwUHJv
ZmlsZXJBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2Vu
dDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhlZERC
QWdlbnQ6Okluc3BlY3RvckluZGV4ZWREQkFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckluZGV4ZWREQkFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
cklucHV0QWdlbnQ6Okluc3BlY3RvcklucHV0QWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5wdXRBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5wdXRBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JMYXllclRyZWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRy
ZWVBZ2VudDo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvck1lbW9yeUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6Okluc3BlY3Rvck1lbW9yeUFnZW50KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ck92ZXJsYXkuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6SW5zcGVjdG9yUGFnZUFnZW50
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6SW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxl
ckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdl
bnQ6Okluc3BlY3RvclJlc291cmNlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6Okluc3Bl
Y3RvclJ1bnRpbWVBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ1NTSWQ6Okluc3BlY3RvckNTU0lkKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yU3R5bGVUZXh0RWRpdG9yLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yVGltZWxpbmVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OlRpbWVsaW5lUmVjb3JkRW50cnk6OlRpbWVsaW5lUmVj
b3JkRW50cnkpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JXb3JrZXJBZ2VudDo6SW5zcGVjdG9yV29ya2Vy
QWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvcldvcmtl
ckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuY3BwOgor
ICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgICog
aW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9QYWdl
RGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZVJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxs
RnJhbWUuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
U2NyaXB0Q2FsbFN0YWNrLmg6CisgICAgICAgICogaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFj
dG9yeS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5oOgor
ICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVXZWJTb2NrZXRD
cmVhdGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3Jl
YXRlR2VuZXJpY1dlYlNvY2tldERhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJDb25z
b2xlQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNw
cDoKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlclJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50Lmg6CisgICAgICAgICogcGFnZS9Db250ZW50
U2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKwog
MjAxMy0xMi0wNiAgUm9iIEJ1aXMgIDxyb2IuYnVpc0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBb
Q1NTIFNoYXBlc10gU2hhcGVPdXRzaWRlSW5mbyBuZWVkcyB0byB1c2UgdGhlIHBhcmVudCdzIHdy
aXRpbmcgbW9kZSB3aGVuIGNhbGN1bGF0aW5nIG9mZnNldHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2Vu
dEJhc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMWEzNWZjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9y
L0luc3BlY3RvckFnZW50QmFzZS5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZX
RF9JbnNwZWN0b3JBZ2VudEJhc2VfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9JbnNwZWN0b3JBZ2Vu
dEJhc2VfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckFnZW50QmFzZS5oPgor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNw
ZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGlu
Z0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOWRiOTVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0
cnkuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfSW5zcGVjdG9yQWdlbnRS
ZWdpc3RyeV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX0luc3BlY3RvckFnZW50UmVnaXN0cnlfaAor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaD4KKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9y
L0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTVlODdkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0luc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXJfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDk4NWY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCkBA
IC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9JbnNwZWN0b3JWYWx1ZXNfaAorI2Rl
ZmluZSBXZWJDb3JlX0ZXRF9JbnNwZWN0b3JWYWx1ZXNfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0luc3BlY3RvclZhbHVlcy5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQppbmRleCA4MWFiMTlkLi42YzJlYzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
QEAgLTM3ODEsMTMgKzM3ODEsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQWdlbnQuaCBcCi0JU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFn
ZW50UmVnaXN0cnkuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdl
bnRSZWdpc3RyeS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oIFwKLQlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCBcCi0JU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckJhc2VBZ2VudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ2FudmFzQWdlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q2FudmFzQWdlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZh
c0luc3RydW1lbnRhdGlvbi5oIFwKQEAgLTM4NTMsOCArMzg0OCw3IEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlVGV4dEVkaXRv
ci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50Lmgg
XAotCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwIFwKLQlTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmggXAorCVNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvcldvcmtlckFnZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JXb3JrZXJSZXNvdXJjZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggMzEzZGE3
YS4uNjY1YTU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTE1MDIsNyArMTUwMiw2IEBAIF9f
Wk5LN1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uMzFnZXRDbGlwcGVkVmlzaWJsZVRleHRSZWN0YW5n
bGVzRVJOM1dURjZWZWN0b3JJTlNfCiBfX1pOSzdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjM2cm9v
dEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50RXYKIF9fWk5LN1dlYkNvcmUxNEZyYW1l
U2VsZWN0aW9uNmJvdW5kc0ViCiBfX1pOSzdXZWJDb3JlMTRJbnNlcnRpb25Qb2ludDhpc0FjdGl2
ZUV2Ci1fX1pOSzdXZWJDb3JlMTRJbnNwZWN0b3JWYWx1ZTEydG9KU09OU3RyaW5nRXYKIF9fWk5L
N1dlYkNvcmUxNFJlbmRlckxpc3RJdGVtMTBtYXJrZXJUZXh0RXYKIF9fWk5LN1dlYkNvcmUxNFJl
c291cmNlQnVmZmVyNGRhdGFFdgogX19aTks3V2ViQ29yZTE0UmVzb3VyY2VCdWZmZXI0c2l6ZUV2
CkBAIC0yNjI1LDcgKzI2MjQsNyBAQCBfX1pON1dlYkNvcmUxNkhUTUxJbnB1dEVsZW1lbnQyNXNl
bGVjdENvbG9ySW5Db2xvckNob29zZXJFUktOU181Q29sb3JFCiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKIF9fWk43V2ViQ29yZTE1SW5zcGVjdG9yQ2xpZW50MzFkb0Rpc3BhdGNoTWVzc2FnZU9uRnJv
bnRlbmRQYWdlRVBOU180UGFnZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE3SW5zcGVj
dG9yQ291bnRlcnMxMmNvdW50ZXJWYWx1ZUVOUzBfMTFDb3VudGVyVHlwZUUKLV9fWk43V2ViQ29y
ZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE1Y29ubmVjdEZyb250ZW5kRVBOU18yNEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbEUKK19fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE1Y29ubmVj
dEZyb250ZW5kRVBOOUluc3BlY3RvcjI0SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsRQogX19aTjdX
ZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMThkaXNjb25uZWN0RnJvbnRlbmRFdgogX19aTjdX
ZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMThzZXRQcm9maWxlckVuYWJsZWRFYgogX19aTjdX
ZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMjVldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kRWxS
S04zV1RGNlN0cmluZ0UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qCmluZGV4IGEzZjgwOTcuLmYxZmJhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtMTc2MzMsMTQgKzE3NjMzLDYgQEAK
ICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
ICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAg
ICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5z
cGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAiPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9F
eGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMy
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCci
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckFsbEluT25lLmNwcCI+CiAgICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC0xNzY1NywxNCArMTc2NDks
NiBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3Rv
clxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAiPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxX
aW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98
V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2lu
Q2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0
aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0
aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgIDwvQ2xDb21waWxlPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckNhbnZhc0FnZW50LmNw
cCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAt
MTc5MDUsMTQgKzE3ODg5LDYgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yVmFsdWVzLmNwcCI+Ci0gICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5D
YWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1By
b2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1By
b2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgPC9DbENvbXBpbGU+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yV29ya2VyQWdl
bnQuY3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CkBAIC0xODU4MCw2ICsxODU1NiwxMSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9y
d2FyZGluZ0hlYWRlcnNcaGVhcFxTbG90VmlzaXRvci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaGVhcFxTdHJvbmdJbmxpbmVzLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xoZWFwXFdlYWsuaCIgLz4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvclxJ
bnNwZWN0b3JBZ2VudEJhc2UuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndh
cmRpbmdIZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgiIC8+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZv
cndhcmRpbmdIZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIgLz4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvclxJ
bnNwZWN0b3JWYWx1ZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRp
bmdIZWFkZXJzXG1hc21cWDg2QXNzZW1ibGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xwYXJzZXJcU291cmNlQ29kZS5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNccGFyc2VyXFNvdXJjZVByb3ZpZGVy
LmgiIC8+CkBAIC0yMDk0Nyw4ICsyMDkyOCw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxpbnNwZWN0b3JcSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JBZ2VudC5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oIiAv
PgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5z
cGVjdG9yQmFzZUFnZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0
b3JcSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGluc3BlY3RvclxJbnNwZWN0b3JDYW52YXNJbnN0cnVtZW50YXRpb24uaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JDbGllbnQuaCIgLz4KQEAgLTIw
OTg0LDcgKzIwOTYzLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJ
bnNwZWN0b3JTdHlsZVNoZWV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNw
ZWN0b3JcSW5zcGVjdG9yU3R5bGVUZXh0RWRpdG9yLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIiAvPgotICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvclZhbHVlcy5oIiAvPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvcldlYkFnZW50QmFzZS5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvcldvcmtlckFn
ZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9y
V29ya2VyUmVzb3VyY2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3Rv
clxJbnN0cnVtZW50aW5nQWdlbnRzLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggZjBiMDI2Ni4uN2Y0
MjhhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2ouZmlsdGVycwpAQCAtNDgyNCwxOCArNDgyNCwxMiBAQAogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckFnZW50LmNwcCI+CiAgICAgICA8Rmls
dGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwIj4KLSAgICAg
IDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQWxsSW5PbmUuY3BwIj4KICAgICAg
IDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
LmNwcCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxl
PgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmNwcCI+Ci0gICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgotICAgIDwv
Q2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3Rv
ckNhbnZhc0FnZW50LmNwcCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAg
IDwvQ2xDb21waWxlPgpAQCAtNDkyNiw5ICs0OTIwLDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCI+CiAgICAgICA8Rmls
dGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvclZhbHVlcy5jcHAiPgotICAgICAgPEZpbHRl
cj5pbnNwZWN0b3I8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAiPgogICAgICAgPEZp
bHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTEyMjQwLDkgKzEy
MjMxLDIxIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xo
ZWFwXFN0cm9uZy5oIj4KICAgICAgIDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRlcnNcaGVhcDwvRmls
dGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2Fy
ZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvckFnZW50QmFzZS5oIj4KKyAgICAgIDxGaWx0
ZXI+Rm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3Jc
SW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIj4KKyAgICAgIDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRl
cnNcaW5zcGVjdG9yPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIuaCI+CisgICAgICA8RmlsdGVyPkZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3Rvcjwv
RmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9y
d2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIj4KICAg
ICAgIDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9D
bEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xp
bnNwZWN0b3JcSW5zcGVjdG9yVmFsdWVzLmgiPgorICAgICAgPEZpbHRlcj5Gb3J3YXJkaW5nSGVh
ZGVyc1xpbnNwZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGhpc3RvcnlcQmFja0ZvcndhcmRDbGllbnQuaCI+CiAgICAgICA8RmlsdGVy
Pmhpc3Rvcnk8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTEyMzk2LDEyICsxMjM5OSw2
IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50LmgiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAg
ICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIj4KLSAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0
ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0
b3JcSW5zcGVjdG9yQmFzZUFnZW50LmgiPgotICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRl
cj4KLSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3Rv
clxJbnNwZWN0b3JDYW52YXNBZ2VudC5oIj4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0
ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0xMjUwNyw3ICsxMjUwNCw3IEBACiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIj4KICAg
ICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yVmFsdWVzLmgiPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvcldlYkFnZW50QmFzZS5oIj4K
ICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yV29ya2VyQWdlbnQuaCI+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNjk1NWJiNC4uNjE5MzM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTYwNSw4ICsxNjA1LDYgQEAKIAkJNEYxNTM0
RTAxMUI1MzMwMjAwMjFGRDg2IC8qIEVkaXRpbmdCZWhhdmlvclR5cGVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjE1MzRERjExQjUzMzAyMDAyMUZE
ODYgLyogRWRpdGluZ0JlaGF2aW9yVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0RjJEMjA1NDEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVj
dG9yQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRGMkQyMDUyMTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRGMkQyMDU1MTJFQUU3QjMw
MDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0RjJEMjA1MzEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9y
QWdlbnQuY3BwICovOyB9OwotCQk0RjMyODlCNTExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9y
VmFsdWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRGMzI4OUIzMTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwICovOyB9Owot
CQk0RjMyODlCNjExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjMyODlCNDExQTQyQUFCMDA1
QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEY0RjVGRkIxMUNCRDJFMTAwQTE4NkJGIC8qIEluc3BlY3Rv
ckZyb250ZW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRGNEY1RkZBMTFDQkQyRDIwMEExODZCRiAvKiBJbnNwZWN0b3JGcm9udGVuZC5jcHAgKi87
IH07CiAJCTRGNkZERDY0MTM0MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEY2RkRENjIx
MzQxREVERDAwMUY4RUUzIC8qIEluc3BlY3RvclBhZ2VBZ2VudC5jcHAgKi87IH07CiAJCTRGNkZE
RDY1MTM0MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNkZERDYzMTM0MURFREQwMDFGOEVF
MyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuaCAqLzsgfTsKQEAgLTIxOTcsNyArMjE5NSw2IEBACiAJ
CTdBNzRFQ0JCMTAxODM5QTYwMEJGOTM5RSAvKiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBNzRFQ0I5MTAx
ODM5QTYwMEJGOTM5RSAvKiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCAqLzsgfTsKIAkJN0E3
NEVDQkQxMDE4MzlEQTAwQkY5MzlFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBNzRFQ0JD
MTAxODM5REEwMEJGOTM5RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgKi87
IH07CiAJCTdBQTM2NUVFMTJFNzI2NTQwMERDQTI0MiAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FBMzY1
RUQxMkU3MjY1NDAwRENBMjQyIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAgKi87IH07Ci0J
CTdBQTUxQjZFMTQ4M0I2MTYwMEFEMjc1MiAvKiBJbnNwZWN0b3JCYXNlQWdlbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQTUxQjZDMTQ4M0I2MTYw
MEFEMjc1MiAvKiBJbnNwZWN0b3JCYXNlQWdlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QUE1MURENTE0ODUwNkE5MDBBRDI3NTIgLyogSW5z
cGVjdG9yTWVtb3J5QWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0FBNTFERDMxNDg1MDZBOTAwQUQyNzUyIC8qIEluc3BlY3Rvck1lbW9yeUFn
ZW50LmNwcCAqLzsgfTsKIAkJN0FBNTFERDYxNDg1MDZBOTAwQUQyNzUyIC8qIEluc3BlY3Rvck1l
bW9yeUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QUE1MURENDE0ODUwNkE5MDBBRDI3NTIgLyogSW5zcGVjdG9yTWVtb3J5QWdlbnQuaCAqLzsg
fTsKIAkJN0FBQkEyNTkxNEJDNjEzMzAwQUE5QTExIC8qIERPTUVkaXRvci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUFCQTI1NzE0QkM2MTMzMDBB
QTlBMTEgLyogRE9NRWRpdG9yLmNwcCAqLzsgfTsKQEAgLTM1MjAsMTUgKzM1MTcsMTIgQEAKIAkJ
QTUxM0IzRDgxMTRCMTY2QTAwMUM0MjlCIC8qIEtleUV2ZW50Q29jb2EubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUM5NzREMDExNDg1RkYxMDA2NkYy
QUIgLyogS2V5RXZlbnRDb2NvYS5tbSAqLzsgfTsKIAkJQTU0QTgyRUMxNTIyOEQyRjAwQzcyQkE2
IC8qIERPTU5vZGVQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTRBODJFQTE1MjI4Q0EzMDBDNzJCQTYgLyogRE9NTm9kZVByaXZhdGUuaCAq
LzsgfTsKIAkJQTU0QTgyRjExNTIyOERGNjAwQzcyQkE2IC8qIERPTU5vZGVQcml2YXRlLmggaW4g
Q29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNTRBODJFQTE1MjI4Q0EzMDBDNzJCQTYgLyogRE9NTm9kZVByaXZhdGUuaCAqLzsgfTsKLQkJ
QTU1NkMyODgxODMyMDZBODAwOENCNzIwIC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1NkMyODYxODMy
MDZBODAwOENCNzIwIC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwICovOyB9OwotCQlBNTU2
QzI4OTE4MzIwNkE4MDA4Q0I3MjAgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1NkMyODcxODMyMDZBODAw
OENCNzIwIC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTczMkIwQTEzNkExNjFEMDA1QzhEN0MgLyog
RGF0ZUNvbXBvbmVudHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTU3MzJCMDgxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmNwcCAq
LzsgfTsKIAkJQTU3MzJCMEIxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTczMkIwOTEzNkEx
NjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCAqLzsgfTsKKwkJQTU5M0NGOEIxODQwNTM1
MjAwQkZDRTI3IC8qIEluc3BlY3RvcldlYkFnZW50QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5M0NGOEExODQwNTM1MjAwQkZDRTI3IC8qIElu
c3BlY3RvcldlYkFnZW50QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUE1QTJBRjBCMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJs
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUEy
QUYwOTE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuY3BwICovOyB9OwogCQlBNUEy
QUYwQzE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QTJBRjBBMTgyOTczNDMwMERFMTcyOSAv
KiBQYWdlRGVidWdnYWJsZS5oICovOyB9OwogCQlBNUFCQjc4NzEzQjkwNEJDMDBGMTk3RTMgLyog
TGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNUFCQjc4NjEzQjkwNEJDMDBGMTk3RTMgLyogTGluZUJyZWFrSXRl
cmF0b3JQb29sSUNVLmggKi87IH07Ci0JCUE1QUM0QUVGMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNUFDNEFFRDE4MzM2OTc1MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIuY3BwICovOyB9OwotCQlBNUFDNEFGMDE4MzM2OTc1MDA3MTE0RTAgLyog
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1QUM0QUVFMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUE1QUZCMzRGMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBRkIzNEQxMTUx
NTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5jcHAgKi87IH07CiAJCUE1QUZCMzUwMTE1MTUxQTcw
MEIwNDVDQiAvKiBTdGVwUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1QUZCMzRFMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNUM1NjZBQjEy
N0EzQUFEMDBFOEEzRkYgLyogRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QzU2NkFBMTI3QTNBQUQwMEU4QTNG
RiAvKiBEaXNrSW1hZ2VDYWNoZUNsaWVudElPUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04MzM2LDggKzgzMzAsNiBAQAogCQk0RjE1MzRERjEx
QjUzMzAyMDAyMUZEODYgLyogRWRpdGluZ0JlaGF2aW9yVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRWRpdGluZ0JlaGF2aW9yVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNEYyRDIwNTIxMkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3RvckFnZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckFnZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGMkQyMDUzMTJFQUU3QjMwMDVDMjg3NCAvKiBJ
bnNwZWN0b3JBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bnNwZWN0b3JBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTRGMzI4OUIz
MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yVmFsdWVzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNEYzMjg5QjQxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVl
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JWYWx1ZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEY0RjVGRkExMUNCRDJEMjAwQTE4NkJGIC8q
IEluc3BlY3RvckZyb250ZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEluc3BlY3RvckZyb250ZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NEY0RjVGRkMxMUNCRDMwMTAwQTE4NkJGIC8qIEluc3BlY3RvckZyb250ZW5kLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckZyb250ZW5kLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTRGNkZERDYyMTM0MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQ
YWdlQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVj
dG9yUGFnZUFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg5ODgsNyAr
ODk4MCw2IEBACiAJCTdBNzRFQ0I5MTAxODM5QTYwMEJGOTM5RSAvKiBJbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBNzRFQ0JDMTAx
ODM5REEwMEJGOTM5RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0luc3BlY3RvckZyb250ZW5kSG9zdEN1
c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBQTM2NUVEMTJFNzI2NTQw
MERDQTI0MiAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJN0FBNTFCNkMxNDgzQjYxNjAwQUQyNzUyIC8qIEluc3BlY3RvckJh
c2VBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JCYXNl
QWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FBNTFERDMxNDg1MDZBOTAw
QUQyNzUyIC8qIEluc3BlY3Rvck1lbW9yeUFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rvck1lbW9yeUFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0FBNTFERDQxNDg1MDZBOTAwQUQyNzUyIC8qIEluc3BlY3Rvck1lbW9y
eUFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3Rvck1lbW9y
eUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBQUJBMjU3MTRCQzYxMzMw
MEFBOUExMSAvKiBET01FZGl0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRE9NRWRpdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMzM2
LDE5ICsxMDMyNywxNiBAQAogCQlBNTE4MjI1NDE3RTJBMEQ0MDBBOUJBMUQgLyogSW5zcGVjdG9y
T3ZlcmxheVBhZ2UuY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBJbnNwZWN0b3JPdmVybGF5UGFnZS5jc3M7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MTgyMjU1MTdFMkEwRDQwMEE5QkExRCAvKiBJbnNw
ZWN0b3JPdmVybGF5UGFnZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEluc3BlY3Rvck92ZXJs
YXlQYWdlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTRBODJFQTE1MjI4Q0Ez
MDBDNzJCQTYgLyogRE9NTm9kZVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRE9NTm9kZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU1
NkMyODYxODMyMDZBODAwOENCNzIwIC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1NTZDMjg3MTgzMjA2QTgwMDhDQjcy
MCAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEluc3BlY3RvckFnZW50UmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTU3MzJCMDgxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGVDb21wb25lbnRzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3MzJCMDkxMzZBMTYxRDAwNUM4RDdDIC8qIERh
dGVDb21wb25lbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGVDb21w
b25lbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1OTNDRjcyMTg0MDJDRTkw
MEJGQ0UyNyAvKiBwcm90b2NvbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9IHByb3RvY29sOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNTkzQ0Y3MzE4NDAyRDRCMDBCRkNFMjcgLyogQ29kZUdlbmVyYXRvckluc3Bl
Y3Rvci5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IENvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHk7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1OTNDRjc0MTg0MDJENEIwMEJGQ0UyNyAvKiBD
b2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IENvZGVH
ZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNTkzQ0Y3NTE4NDAyRDRCMDBCRkNFMjcgLyogY29tYmluZS1qYXZhc2NyaXB0LXJlc291cmNl
cy5wbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuc2NyaXB0LnBlcmw7IHBhdGggPSAiY29tYmluZS1qYXZhc2NyaXB0LXJlc291cmNlcy5wbCI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTNDRjhBMTg0MDUzNTIwMEJGQ0UyNyAv
KiBJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE1QTJBRjA5MTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlRGVidWdnYWJsZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QTJBRjBBMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVi
dWdnYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlRGVidWdnYWJs
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUFCQjc4NjEzQjkwNEJDMDBGMTk3
RTMgLyogTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlBNUFDNEFFRDE4MzM2OTc1MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlB
NUFDNEFFRTE4MzM2OTc1MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVBRkIzNEQxMTUxNTFBNzAwQjA0
NUNCIC8qIFN0ZXBSYW5nZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTdGVwUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUFGQjM0RTEx
NTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFN0ZXBSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUM1NjZB
QTEyN0EzQUFEMDBFOEEzRkYgLyogRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NDg0LDEzICsxNDQ3Miw4IEBACiAJCQkJN0E1NjNG
OTUxMkRGNUM5MTAwRjQ1MzZEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmpzICovLAogCQkJCTRG
MkQyMDUzMTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5jcHAgKi8sCiAJCQkJNEYy
RDIwNTIxMkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3RvckFnZW50LmggKi8sCi0JCQkJQTU1NkMy
ODYxODMyMDZBODAwOENCNzIwIC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwICovLAotCQkJ
CUE1NTZDMjg3MTgzMjA2QTgwMDhDQjcyMCAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggKi8s
CiAJCQkJQjg4NUU4RDIxMUUwNkREMjAwOUZGQkY0IC8qIEluc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudC5jcHAgKi8sCiAJCQkJQjg4NUU4RDMxMUUwNkREMjAwOUZGQkY0IC8qIEluc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oICovLAotCQkJCUE1QUM0QUVEMTgzMzY5NzUwMDcxMTRF
MCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgKi8sCi0JCQkJQTVBQzRBRUUxODMz
Njk3NTAwNzExNEUwIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggKi8sCi0JCQkJN0FB
NTFCNkMxNDgzQjYxNjAwQUQyNzUyIC8qIEluc3BlY3RvckJhc2VBZ2VudC5oICovLAogCQkJCUFB
RDc2NkU4MTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAgKi8sCiAJ
CQkJQUFENzY2RTkxNTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvckNhbnZhc0FnZW50LmggKi8s
CiAJCQkJQUFENzY2RUExNTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvckNhbnZhc0luc3RydW1l
bnRhdGlvbi5oICovLApAQCAtMTQ1NjAsOCArMTQ1NDMsNyBAQAogCQkJCTgyODg5QjRCMTNDNjIz
OTIwMDlBNjE1NiAvKiBJbnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuaCAqLywKIAkJCQk3NTQxMzNB
OTEwMkUwMEY0MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgKi8sCiAJCQkJ
NzU0MTMzQTcxMDJFMDBFODAwMDc1RDAwIC8qIEluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCAqLywK
LQkJCQk0RjMyODlCMzExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCAqLywK
LQkJCQk0RjMyODlCNDExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmggKi8sCisJ
CQkJQTU5M0NGOEExODQwNTM1MjAwQkZDRTI3IC8qIEluc3BlY3RvcldlYkFnZW50QmFzZS5oICov
LAogCQkJCUYzODEwQzE5MTM2NUE0OTYwMEVENkUzMyAvKiBJbnNwZWN0b3JXb3JrZXJBZ2VudC5j
cHAgKi8sCiAJCQkJRjM4MTBDMUExMzY1QTQ5NjAwRUQ2RTMzIC8qIEluc3BlY3RvcldvcmtlckFn
ZW50LmggKi8sCiAJCQkJRjM3NUNDMDYxMTUwRDMwMDAwOEREQjgxIC8qIEluc3BlY3Rvcldvcmtl
clJlc291cmNlLmggKi8sCkBAIC0yMjA5Nyw3ICsyMjA3OSw2IEBACiAJCQkJMjlBODEyM0YwRkJC
OUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMjlBODEyMzEwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlU
YWJsZVJvdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjVEMzFERkIxMUNGNjEwQjAwOUYyMkI0IC8q
IEFjdGl2ZURPTUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNTU2QzI4OTE4MzIwNkE4
MDA4Q0I3MjAgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTFDNERFNjkwRUE3NUMxRTAwMjNDQ0Q2IC8qIEFjdGl2ZURPTU9iamVjdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkNGN0U0OTExMzdDRDdDNzAwMUREQUU3IC8qIEFkanVzdFZpZXdTaXplT3JOb3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTg0RDBDNDA2MTExNUYxRUEwMDE4QUEzNCAvKiBBZmZpbmVU
cmFuc2Zvcm0uaCBpbiBIZWFkZXJzICovLApAQCAtMjI0MDEsNyArMjIzODIsNiBAQAogCQkJCUE4
MEU2RDAxMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NJbmhlcml0ZWRWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTgwRTZEMDgwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU0luaXRpYWxWYWx1ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkM3NzJFMTMxMzMxNjIwQzAwMUVDOUNFIC8qIENTU0xpbmVCb3hD
b250YWluVmFsdWUuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1QUM0QUYwMTgzMzY5NzUwMDcxMTRF
MCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgw
RTZEMDMwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU01lZGlhUnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRjk4RkZGNDUxMUEyNjc2MjAwRjU0OEU4IC8qIENTU09NVXRpbHMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE4MEU2RDAwMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQYWdlUnVsZS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yMzM2Miw3ICsyMzM0Miw2IEBACiAJCQkJNEYyRDIwNTQxMkVBRTdCMzAwNUMy
ODc0IC8qIEluc3BlY3RvckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCODg1RThENTExRTA2
REQyMDA5RkZCRjQgLyogSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0RjcwN0E5QTExRUY2Nzk0MDBBQ0RBNjkgLyogSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLywKLQkJCQk3QUE1MUI2RTE0ODNCNjE2MDBBRDI3NTIg
LyogSW5zcGVjdG9yQmFzZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBQUQ3NjZFQzE1N0U1
MDJGMDBFODU0MjMgLyogSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUFBRDc2NkVEMTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JDYW52YXNJbnN0cnVtZW50YXRp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFDODFCOTVDMEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNw
ZWN0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjM0MDIsNyArMjMzODEsNiBAQAogCQkJ
CTgyODg5QjREMTNDNjIzOTIwMDlBNjE1NiAvKiBJbnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCTc1NDEzM0E4MTAyRTAwRTgwMDA3NUQwMCAvKiBJbnNwZWN0b3JU
aW1lbGluZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzhEQTIwRjE1MjBFQkEzMDA2MTQx
QzEgLyogSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTRGMzI4OUI2
MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUYzODEwQzFDMTM2NUE0OTYwMEVENkUzMyAvKiBJbnNwZWN0b3JXb3JrZXJBZ2VudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDc4RTA5MjkxN0QxNEQxQzAwNDIwQUExIC8qIFJUQ1N0YXRzQ2FsbGJh
Y2suaCBpbiBIZWFkZXJzICovLAogCQkJCUYzNzVDQzA3MTE1MEQzMDAwMDhEREI4MSAvKiBJbnNw
ZWN0b3JXb3JrZXJSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDkyNCw2ICsyNDkwMiw3
IEBACiAJCQkJMDg4QTBFMEExMjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwODFERDQ5QzEzQkExQTYwMDBEQzc2MjcgLyogU1ZHUHJvcGVydHlJbmZv
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCNTdDQjUyRTE4MkEzRUZDMDA3OUE2NDcgLyogSW5saW5l
RWxlbWVudEJveC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU5M0NGOEIxODQwNTM1MjAwQkZDRTI3
IC8qIEluc3BlY3RvcldlYkFnZW50QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg4QTBFMEIx
MjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDg4QTBFMEMxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5VHJhaXRzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMjIyN0E5QTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI1Nzc1LDcgKzI1NzU0LDYgQEAKIAkJCQk1
OUI1OTc3MzExMDg2NTZCMDA3MTU5RTggLyogQnJpZGdlSlNDLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUY1NUIzREFGMTI1MUYxMkQwMDNFRjI2OSAvKiBCdXR0b25JbnB1dFR5cGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUE1NjlDRjcwRDdFMkI4MjAwN0MzOTgzIC8qIGNfY2xhc3MuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJQTVBQzRBRUYxODMzNjk3NTAwNzExNEUwIC8qIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5Q0Y5MEQ3RTJCODIw
MDdDMzk4MyAvKiBjX2luc3RhbmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5Q0ZCMEQ3
RTJCODIwMDdDMzk4MyAvKiBjX3J1bnRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlD
RkQwRDdFMkI4MjAwN0MzOTgzIC8qIGNfdXRpbGl0eS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2
NjU0LDcgKzI2NjMyLDYgQEAKIAkJCQkwNzI3N0U0RTE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRp
YVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc1NDEz
M0FBMTAyRTAwRjQwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTU3M0QxMzQ3MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JUeXBlQnVp
bGRlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0RjMyODlCNTExQTQyQUFCMDA1QUJFN0UgLyog
SW5zcGVjdG9yVmFsdWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUYzODEwQzFCMTM2NUE0OTYw
MEVENkUzMyAvKiBJbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlG
MzUwQjczNTEzRjEzNzdEMDA4ODBDNDMgLyogSW5zdHJ1bWVudGluZ0FnZW50cy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCMjc1MzU2MDBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTI3ODU3LDcgKzI3ODM0LDYgQEAKIAkJCQlBQTJBNUFENTE2QTQ4
NjE0MDA5NzVBMjUgLyogU3BlZWNoU3ludGhlc2lzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFB
MkE1QUQzMTZBNDg2MEQwMDk3NUEyNSAvKiBTcGVlY2hTeW50aGVzaXNFdmVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBQTJBNUFEMTE2QTQ4NjA3MDA5NzVBMjUgLyogU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE1NTZDMjg4MTgzMjA2QTgwMDhDQjcy
MCAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFBMkE1
QUNEMTZBNDg1RkEwMDk3NUEyNSAvKiBTcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBNzhGRTEzQjEyMzY2QjEwMDBBQ0U4RDAgLyogU3BlbGxDaGVja2VyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUI4REJEQjREMTMwQjBGOEEwMEY1Q0RCMSAvKiBTcGVsbGluZ0Nv
cnJlY3Rpb25Db21tYW5kLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCmluZGV4
IDY5OTlmYmUuLjgzZDU5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKQEAgLTQ0LDcgKzQ0LDYgQEAK
ICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01B
Z2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKLSNpbmNsdWRlICJJ
bnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRl
ICJKU0hUTUxBbGxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSlNIVE1MQ29sbGVjdGlvbi5oIgpA
QCAtNTMsNiArNTIsNyBAQAogI2luY2x1ZGUgIkpTU3RvcmFnZS5oIgogI2luY2x1ZGUgIlNjcmlw
dFZhbHVlLmgiCiAjaW5jbHVkZSAiU3RvcmFnZS5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNw
ZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDxwYXJzZXIvU291cmNlQ29kZS5oPgogI2luY2x1ZGUg
PHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmNwcAppbmRleCA0NTA1MGFl
Li5hMjIwMzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQ
cm9maWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxl
LmNwcApAQCAtMzAsOCArMzAsOCBAQAogCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZS5oIgogCi0j
aW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisj
aW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHByb2ZpbGVy
L1Byb2ZpbGUuaD4KICNpbmNsdWRlIDxwcm9maWxlci9Qcm9maWxlTm9kZS5oPgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmgKaW5kZXggODA5NWZlOC4uZjMwNTEy
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUuaApAQCAtNDQs
OCArNDQsNiBAQCBjbGFzcyBQcm9maWxlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IEluc3BlY3Rvck9iamVjdDsKLQogY2xhc3MgU2NyaXB0UHJvZmlsZSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFNjcmlwdFByb2ZpbGU+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTY3Jp
cHRQcm9maWxlPiBjcmVhdGUoUGFzc1JlZlB0cjxKU0M6OlByb2ZpbGU+IHByb2ZpbGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwCmluZGV4IDZkOWZiMWQuLjc5
MTg0NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAKQEAg
LTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1
ZS5oIgogCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSlNET01CaW5k
aW5nLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAKQEAgLTM4LDkgKzM3
LDExIEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZVJlZi5oPgogCiAjaW5jbHVk
ZSA8aGVhcC9TdHJvbmcuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+
CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKK3Vz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmgKaW5kZXggMDEyMTBmNS4uZThiMGFmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5oCkBAIC00MCw5ICs0MCwx
MiBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQorbmFtZXNwYWNlIEluc3BlY3RvciB7
CiBjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCiBjbGFz
cyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAKIGNsYXNzIFNjcmlwdFZhbHVlIHsKQEAgLTcwLDcg
KzczLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZShKU0M6
OkV4ZWNTdGF0ZSosIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIFNlcmlhbGl6YXRpb25FcnJvck1v
ZGUgPSBUaHJvd2luZyk7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIFBhc3NSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+IHRvSW5zcGVjdG9yVmFsdWUoSlNDOjpFeGVjU3RhdGUqKSBjb25zdDsK
KyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHRvSW5zcGVjdG9yVmFs
dWUoSlNDOjpFeGVjU3RhdGUqKSBjb25zdDsKICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAppbmRleCBlZDczMGI0Li43ZmY0Y2Y4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcApAQCAtMzcsMTcgKzM3
LDE1IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBhcmFtRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JW
YWx1ZXMuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURl
Y29kZXIuaCIKICNpbmNsdWRlICJYTGlua05hbWVzLmgiCi0KLSNpZiBFTkFCTEUoU1ZHKQotI2lu
Y2x1ZGUgIlNWR05hbWVzLmgiCi0jZW5kaWYKLQogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlNWR05hbWVzLmgiCisjZW5kaWYKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5jcHAKaW5kZXggYWQz
M2UwMC4uZDA2MDY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNT
QXVkaXRvckRlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NB
dWRpdG9yRGVsZWdhdGUuY3BwCkBAIC0zNSwxMiArMzUsMTQgQEAKICNpbmNsdWRlICJGcmFtZUxv
YWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSFRNTFBh
cnNlcklkaW9tcy5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIlBp
bmdMb2FkZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgPGluc3Bl
Y3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5z
cGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFhTU0F1ZGl0b3JEZWxlZ2F0ZTo6WFNT
QXVkaXRvckRlbGVnYXRlKERvY3VtZW50JiBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKaW5kZXggYjgzMDZjOS4uMGU1
NzY5MSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJ
bnNwZWN0b3IucHkKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJ
bnNwZWN0b3IucHkKQEAgLTI2Miw3ICsyNjIsNyBAQCBjbGFzcyBSYXdUeXBlcyhvYmplY3QpOgog
CiAgICAgICAgIEBjbGFzc21ldGhvZAogICAgICAgICBkZWYgZ2V0X3Jhd192YWxpZGF0b3JfY2Fs
bF90ZXh0KGNscyk6Ci0gICAgICAgICAgICByZXR1cm4gIlJ1bnRpbWVDYXN0SGVscGVyOjphc3Nl
cnRUeXBlPEluc3BlY3RvclZhbHVlOjpUeXBlJXM+IiAlIGNscy5nZXRfdmFsaWRhdGVfbWV0aG9k
X3BhcmFtcygpLnRlbXBsYXRlX3R5cGUKKyAgICAgICAgICAgIHJldHVybiAiUnVudGltZUNhc3RI
ZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZTo6VHlwZSVzPiIgJSBj
bHMuZ2V0X3ZhbGlkYXRlX21ldGhvZF9wYXJhbXMoKS50ZW1wbGF0ZV90eXBlCiAKICAgICBjbGFz
cyBTdHJpbmcoQmFzZVR5cGUpOgogICAgICAgICBAc3RhdGljbWV0aG9kCkBAIC00NTEsNyArNDUx
LDcgQEAgY2xhc3MgUmF3VHlwZXMob2JqZWN0KToKIAogICAgICAgICBAc3RhdGljbWV0aG9kCiAg
ICAgICAgIGRlZiBnZXRfYXJyYXlfaXRlbV9yYXdfY190eXBlX3RleHQoKToKLSAgICAgICAgICAg
IHJldHVybiAiSW5zcGVjdG9yT2JqZWN0IgorICAgICAgICAgICAgcmV0dXJuICJJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdCIKIAogICAgICAgICBAc3RhdGljbWV0aG9kCiAgICAgICAgIGRlZiBn
ZXRfcmF3X3R5cGVfbW9kZWwoKToKQEAgLTQ4Niw3ICs0ODYsNyBAQCBjbGFzcyBSYXdUeXBlcyhv
YmplY3QpOgogCiAgICAgICAgIEBzdGF0aWNtZXRob2QKICAgICAgICAgZGVmIGdldF9hcnJheV9p
dGVtX3Jhd19jX3R5cGVfdGV4dCgpOgotICAgICAgICAgICAgcmV0dXJuICJJbnNwZWN0b3JWYWx1
ZSIKKyAgICAgICAgICAgIHJldHVybiAiSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSIKIAogICAg
ICAgICBAc3RhdGljbWV0aG9kCiAgICAgICAgIGRlZiBnZXRfcmF3X3R5cGVfbW9kZWwoKToKQEAg
LTUyOSw3ICs1MjksNyBAQCBjbGFzcyBSYXdUeXBlcyhvYmplY3QpOgogCiAgICAgICAgIEBzdGF0
aWNtZXRob2QKICAgICAgICAgZGVmIGdldF9hcnJheV9pdGVtX3Jhd19jX3R5cGVfdGV4dCgpOgot
ICAgICAgICAgICAgcmV0dXJuICJJbnNwZWN0b3JBcnJheSIKKyAgICAgICAgICAgIHJldHVybiAi
SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSIKIAogICAgICAgICBAc3RhdGljbWV0aG9kCiAgICAg
ICAgIGRlZiBnZXRfcmF3X3R5cGVfbW9kZWwoKToKQEAgLTcyNiw5ICs3MjYsOSBAQCBjbGFzcyBU
eXBlTW9kZWw6CiAgICAgICAgICAgICBjbHMuSW50ID0gY2xzLlZhbHVlVHlwZSgiaW50IiwgRmFs
c2UpCiAgICAgICAgIGNscy5OdW1iZXIgPSBjbHMuVmFsdWVUeXBlKCJkb3VibGUiLCBGYWxzZSkK
ICAgICAgICAgY2xzLlN0cmluZyA9IGNscy5WYWx1ZVR5cGUoIlN0cmluZyIsIFRydWUsKQotICAg
ICAgICBjbHMuT2JqZWN0ID0gY2xzLlJlZlB0ckJhc2VkKCJJbnNwZWN0b3JPYmplY3QiKQotICAg
ICAgICBjbHMuQXJyYXkgPSBjbHMuUmVmUHRyQmFzZWQoIkluc3BlY3RvckFycmF5IikKLSAgICAg
ICAgY2xzLkFueSA9IGNscy5SZWZQdHJCYXNlZCgiSW5zcGVjdG9yVmFsdWUiKQorICAgICAgICBj
bHMuT2JqZWN0ID0gY2xzLlJlZlB0ckJhc2VkKCJJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCIp
CisgICAgICAgIGNscy5BcnJheSA9IGNscy5SZWZQdHJCYXNlZCgiSW5zcGVjdG9yOjpJbnNwZWN0
b3JBcnJheSIpCisgICAgICAgIGNscy5BbnkgPSBjbHMuUmVmUHRyQmFzZWQoIkluc3BlY3Rvcjo6
SW5zcGVjdG9yVmFsdWUiKQogCiBUeXBlTW9kZWwuaW5pdF9jbGFzcygpCiAKQEAgLTkyOCw3ICs5
MjgsNyBAQCBjbGFzcyBUeXBlQmluZGluZ3M6CiAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgZW51bV9iaW5kaW5nX2Nscy5uZWVkX2ludGVybmFsX3J1bnRpbWVfY2FzdF86CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKCIjaWYgJXNc
biIgJSBWQUxJREFUT1JfSUZERUZfTkFNRSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVl
KEluc3BlY3RvclZhbHVlKiB2YWx1ZSk7XG4iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFs
dWUoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogdmFsdWUpO1xuIikKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQoIiNlbmRpZiAgLy8gJXNcbiIgJSBW
QUxJREFUT1JfSUZERUZfTkFNRSkKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFsaWRhdG9yX3dyaXRlciA9IGdlbmVyYXRlX2NvbnRleHQudmFsaWRhdG9yX3dyaXRlcgpA
QCAtOTM4LDcgKzkzOCw3IEBAIGNsYXNzIFR5cGVCaW5kaW5nczoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIGRvbWFpbl9ndWFyZDoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkb21haW5fZ3VhcmQuZ2VuZXJhdGVfb3Blbih2YWxpZGF0b3Jf
d3JpdGVyKQogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jf
d3JpdGVyLm5ld2xpbmUoInZvaWQgJXMlczo6YXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZh
bHVlKiB2YWx1ZSlcbiIgJSAoaGVscGVyLmZ1bGxfbmFtZV9wcmVmaXhfZm9yX2ltcGwsIGVudW1f
bmFtZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3Jp
dGVyLm5ld2xpbmUoInZvaWQgJXMlczo6YXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3Rvcjo6SW5z
cGVjdG9yVmFsdWUqIHZhbHVlKVxuIiAlIChoZWxwZXIuZnVsbF9uYW1lX3ByZWZpeF9mb3JfaW1w
bCwgZW51bV9uYW1lKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlk
YXRvcl93cml0ZXIubmV3bGluZSgie1xuIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhbGlkYXRvcl93cml0ZXIubmV3bGluZSgiICAgIFdURjo6U3RyaW5nIHM7XG4iKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXds
aW5lKCIgICAgYm9vbCBjYXN0X3JlcyA9IHZhbHVlLT5hc1N0cmluZygmcyk7XG4iKQpAQCAtMTE3
Miw5ICsxMTcyLDkgQEAgY2xhc3MgVHlwZUJpbmRpbmdzOgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3cml0ZXIuYXBwZW5kKGNsYXNzX25hbWUpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQoIiA6IHB1YmxpYyAiKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiBpc19vcGVuX3R5cGU6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKCJJbnNwZWN0b3JPYmplY3QiKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVuZCgiSW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3QiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVuZCgiSW5zcGVjdG9y
T2JqZWN0QmFzZSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIu
YXBwZW5kKCJJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdEJhc2UiKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKCIge1xuIikKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoInB1YmxpYzpcbiIpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFkX2hvY190eXBlX3dyaXRlciA9IHdyaXRlci5pbnNlcnRfd3Jp
dGVyKCIgICAgIikKQEAgLTEyNTEsMjUgKzEyNTEsMjUgQEAgY2xhc3MgVHlwZUJpbmRpbmdzOgog
CiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNldHRlcl9uYW1lIGlu
IElOU1BFQ1RPUl9PQkpFQ1RfU0VUVEVSX05BTUVTOgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0
QmFzZTo6JXM7XG5cbiIgJSBzZXR0ZXJfbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgIHVzaW5nIEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0QmFzZTo6JXM7XG5cbiIgJSBzZXR0ZXJfbmFtZSkKIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiBjbGFzc19iaW5kaW5nX2Nscy5uZWVkX3VzZXJfcnVudGltZV9j
YXN0XzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5l
KCIgICAgc3RhdGljIFBhc3NSZWZQdHI8JXM+IHJ1bnRpbWVDYXN0KFBhc3NSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+IHZhbHVlKVxuIiAlIGNsYXNzX25hbWUpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgIHN0YXRpYyBQYXNzUmVmUHRyPCVzPiBy
dW50aW1lQ2FzdChQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHZhbHVlKVxu
IiAlIGNsYXNzX25hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0
ZXIubmV3bGluZSgiICAgIHtcbiIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3cml0ZXIubmV3bGluZSgiICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3Q7
XG4iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUo
IiAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBvYmplY3Q7XG4iKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICAg
ICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFzT2JqZWN0KCZvYmplY3QpO1xuIikKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgICAgIEFTU0VS
VF9VTlVTRUQoY2FzdFJlcywgY2FzdFJlcyk7XG4iKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd3JpdGVyLmFwcGVuZCgiI2lmICVzXG4iICUgVkFMSURBVE9SX0lGREVGX05B
TUUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgi
ICAgICAgICBhc3NlcnRDb3JyZWN0VmFsdWUob2JqZWN0LmdldCgpKTtcbiIpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKCIjZW5kaWYgIC8vICVzXG4i
ICUgVkFMSURBVE9SX0lGREVGX05BTUUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB3cml0ZXIubmV3bGluZSgiICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoJXMpID09
IHNpemVvZihJbnNwZWN0b3JPYmplY3RCYXNlKSwgdHlwZV9jYXN0X3Byb2JsZW0pO1xuIiAlIGNs
YXNzX25hbWUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3
bGluZSgiICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8JXMqPihzdGF0aWNfY2FzdDxJbnNwZWN0
b3JPYmplY3RCYXNlKj4ob2JqZWN0LmdldCgpKSk7XG4iICUgY2xhc3NfbmFtZSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgICAgIENPTVBJ
TEVfQVNTRVJUKHNpemVvZiglcykgPT0gc2l6ZW9mKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
QmFzZSksIHR5cGVfY2FzdF9wcm9ibGVtKTtcbiIgJSBjbGFzc19uYW1lKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PCVzKj4oc3RhdGljX2Nhc3Q8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3RCYXNl
Kj4ob2JqZWN0LmdldCgpKSk7XG4iICUgY2xhc3NfbmFtZSkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgfVxuIikKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQoIlxuIikKIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiBjbGFzc19iaW5kaW5nX2Nscy5uZWVkX2ludGVybmFsX3J1
bnRpbWVfY2FzdF86CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIu
YXBwZW5kKCIjaWYgJXNcbiIgJSBWQUxJREFUT1JfSUZERUZfTkFNRSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgc3RhdGljIHZvaWQgYXNz
ZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSk7XG4iKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICBzdGF0aWMgdm9pZCBh
c3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogdmFsdWUpO1xuIikK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQoIiNlbmRp
ZiAgLy8gJXNcbiIgJSBWQUxJREFUT1JfSUZERUZfTkFNRSkKIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2xvc2VkX2ZpZWxkX3NldCA9IChjb250ZXh0X2RvbWFpbl9uYW1l
ICsgIi4iICsgY2xhc3NfbmFtZSkgbm90IGluIFRZUEVTX1dJVEhfT1BFTl9GSUVMRF9MSVNUX1NF
VApAQCAtMTI4MSw3ICsxMjgxLDcgQEAgY2xhc3MgVHlwZUJpbmRpbmdzOgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgZG9tYWluX2d1YXJkOgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbl9ndWFyZC5nZW5lcmF0ZV9vcGVuKHZhbGlk
YXRvcl93cml0ZXIpCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlk
YXRvcl93cml0ZXIubmV3bGluZSgidm9pZCAlcyVzOjphc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVj
dG9yVmFsdWUqIHZhbHVlKVxuIiAlIChoZWxwZXIuZnVsbF9uYW1lX3ByZWZpeF9mb3JfaW1wbCwg
Y2xhc3NfbmFtZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0
b3Jfd3JpdGVyLm5ld2xpbmUoInZvaWQgJXMlczo6YXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3Rv
cjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVlKVxuIiAlIChoZWxwZXIuZnVsbF9uYW1lX3ByZWZpeF9m
b3JfaW1wbCwgY2xhc3NfbmFtZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoIntcbiIpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoIiAgICBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBvYmplY3Q7XG4iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCIgICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFz
T2JqZWN0KCZvYmplY3QpO1xuIikKQEAgLTE4OTYsMTAgKzE4OTYsMTAgQEAgY2xhc3MgR2VuZXJh
dG9yOgogICAgICAgICAgICAgZGlzcGF0Y2hlcl9uYW1lID0gIkluc3BlY3RvciIgKyBDYXBpdGFs
aXplci5sb3dlcl9jYW1lbF9jYXNlX3RvX3VwcGVyKGRvbWFpbl9uYW1lKSArICJCYWNrZW5kRGlz
cGF0Y2hlciIKICAgICAgICAgICAgIGFnZW50X2ludGVyZmFjZV9uYW1lID0gZGlzcGF0Y2hlcl9u
YW1lICsgIkhhbmRsZXIiCiAKLSAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3BhdGNo
ZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCJjbGFzcyAlcyBGSU5BTCA6IHB1YmxpYyBJbnNwZWN0
b3JTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciB7XG4iICUgZGlzcGF0Y2hlcl9uYW1lKQor
ICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfZGlzcGF0Y2hlcl9pbnRlcmZhY2VfbGlzdC5h
cHBlbmQoImNsYXNzICVzIEZJTkFMIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yU3VwcGxl
bWVudGFsQmFja2VuZERpc3BhdGNoZXIge1xuIiAlIGRpc3BhdGNoZXJfbmFtZSkKICAgICAgICAg
ICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3BhdGNoZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCJw
dWJsaWM6XG4iKQotICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfZGlzcGF0Y2hlcl9pbnRl
cmZhY2VfbGlzdC5hcHBlbmQoIiAgICBzdGF0aWMgUGFzc1JlZlB0cjwlcz4gY3JlYXRlKEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKiwgJXMqKTtcbiIgJSAoZGlzcGF0Y2hlcl9uYW1lLCBhZ2Vu
dF9pbnRlcmZhY2VfbmFtZSkpCi0gICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9kaXNwYXRj
aGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgiICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChsb25n
IGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBtZXNzYWdlKSBPVkVSUklERTtcbiIpCisgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9k
aXNwYXRjaGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgiICAgIHN0YXRpYyBQYXNzUmVmUHRyPCVz
PiBjcmVhdGUoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciosICVzKik7XG4i
ICUgKGRpc3BhdGNoZXJfbmFtZSwgYWdlbnRfaW50ZXJmYWNlX25hbWUpKQorICAgICAgICAgICAg
R2VuZXJhdG9yLmJhY2tlbmRfZGlzcGF0Y2hlcl9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoIiAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBtZXNzYWdlKSBPVkVSUklERTtc
biIpCiAgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9kaXNwYXRjaGVyX2ludGVyZmFjZV9s
aXN0LmFwcGVuZCgicHJpdmF0ZTpcbiIpCiAKICAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5k
X2hhbmRsZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCJjbGFzcyAlcyB7XG4iICUgYWdlbnRfaW50
ZXJmYWNlX25hbWUpCkBAIC0xOTE4LDcgKzE5MTgsNyBAQCBjbGFzcyBHZW5lcmF0b3I6CiAgICAg
ICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9oYW5kbGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgi
fTtcblxuIikKIAogICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfZGlzcGF0Y2hlcl9pbnRl
cmZhY2VfbGlzdC5hcHBlbmQoInByaXZhdGU6XG4iKQotICAgICAgICAgICAgR2VuZXJhdG9yLmJh
Y2tlbmRfZGlzcGF0Y2hlcl9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoIiAgICAlcyhJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlciosICVzKik7XG4iICUgKGRpc3BhdGNoZXJfbmFtZSwgYWdlbnRfaW50
ZXJmYWNlX25hbWUpKQorICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfZGlzcGF0Y2hlcl9p
bnRlcmZhY2VfbGlzdC5hcHBlbmQoIiAgICAlcyhJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKiwgJXMqKTtcbiIgJSAoZGlzcGF0Y2hlcl9uYW1lLCBhZ2VudF9pbnRlcmZhY2Vf
bmFtZSkpCiAgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9kaXNwYXRjaGVyX2ludGVyZmFj
ZV9saXN0LmFwcGVuZCgiICAgICVzKiBtX2FnZW50O1xuIiAlIGFnZW50X2ludGVyZmFjZV9uYW1l
KQogICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfZGlzcGF0Y2hlcl9pbnRlcmZhY2VfbGlz
dC5hcHBlbmQoIn07XG5cbiIpCiAKQEAgLTE5OTksNyArMTk5OSw3IEBAIGNsYXNzIEdlbmVyYXRv
cjoKICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfaGFuZGxlcl9pbnRlcmZhY2VfbGlzdC5hcHBl
bmQoYWRfaG9jX3R5cGVfb3V0cHV0KQogICAgICAgICBhZF9ob2NfdHlwZV93cml0ZXIgPSBXcml0
ZXIoYWRfaG9jX3R5cGVfb3V0cHV0LCAiICAgICIpCiAKLSAgICAgICAgR2VuZXJhdG9yLmJhY2tl
bmRfZGlzcGF0Y2hlcl9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoIiAgICB2b2lkICVzKGxvbmcgY2Fs
bElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpO1xuIiAlIGpzb25fY29tbWFuZF9u
YW1lKQorICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9kaXNwYXRjaGVyX2ludGVyZmFjZV9saXN0
LmFwcGVuZCgiICAgIHZvaWQgJXMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0JiBtZXNzYWdlKTtcbiIgJSBqc29uX2NvbW1hbmRfbmFtZSkKIAogICAgICAgICBH
ZW5lcmF0b3IuYmFja2VuZF9oYW5kbGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgiICAgIHZpcnR1
YWwgdm9pZCAlcyhFcnJvclN0cmluZyoiICUganNvbl9jb21tYW5kX25hbWUpCiAKQEAgLTIwOTQs
OSArMjA5NCw5IEBAIGNsYXNzIEdlbmVyYXRvcjoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9tZXRob2RfaW1wbGVtZW50YXRpb25f
bGlzdCwgVGVtcGxhdGVzLmNhbGxiYWNrX21ldGhvZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7ImNhbGxiYWNrTmFtZSI6IGNhbGxiYWNrX25hbWUsICJoYW5k
bGVyTmFtZSI6IGFnZW50X2ludGVyZmFjZV9uYW1lfSkKIAotICAgICAgICAgICAgY2FsbGJhY2tf
d3JpdGVyLm5ld2xpbmUoImNsYXNzICIgKyBjYWxsYmFja19uYW1lICsgIiA6IHB1YmxpYyBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlIHtcbiIpCisgICAgICAgICAgICBj
YWxsYmFja193cml0ZXIubmV3bGluZSgiY2xhc3MgIiArIGNhbGxiYWNrX25hbWUgKyAiIDogcHVi
bGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZSB7
XG4iKQogICAgICAgICAgICAgY2FsbGJhY2tfd3JpdGVyLm5ld2xpbmUoInB1YmxpYzpcbiIpCi0g
ICAgICAgICAgICBjYWxsYmFja193cml0ZXIubmV3bGluZSgiICAgICIgKyBjYWxsYmFja19uYW1l
ICsgIihQYXNzUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiwgaW50IGlkKTtcbiIp
CisgICAgICAgICAgICBjYWxsYmFja193cml0ZXIubmV3bGluZSgiICAgICIgKyBjYWxsYmFja19u
YW1lICsgIihQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+
LCBpbnQgaWQpO1xuIikKICAgICAgICAgICAgIGNhbGxiYWNrX3dyaXRlci5uZXdsaW5lKCIgICAg
dm9pZCBzZW5kU3VjY2VzcygiICsgIiwgIi5qb2luKGRlY2xfcGFyYW1ldGVyX2xpc3QpICsgIik7
XG4iKQogICAgICAgICAgICAgY2FsbGJhY2tfd3JpdGVyLm5ld2xpbmUoIn07XG4iKQogCkBAIC0y
MTA1LDcgKzIxMDUsNyBAQCBjbGFzcyBHZW5lcmF0b3I6CiAgICAgICAgICAgICBtZXRob2RfZGlz
cGF0Y2hfaGFuZGxpbmcuYXBwZW5kKCIgICAgUmVmUHRyPCVzOjolcz4gY2FsbGJhY2sgPSBhZG9w
dFJlZihuZXcgJXM6OiVzKG1fYmFja2VuZERpc3BhdGNoZXIsY2FsbElkKSk7XG4iICUgKGFnZW50
X2ludGVyZmFjZV9uYW1lLCBjYWxsYmFja19uYW1lLCBhZ2VudF9pbnRlcmZhY2VfbmFtZSwgY2Fs
bGJhY2tfbmFtZSkpCiAgICAgICAgICAgICBtZXRob2RfZW5kaW5nX2hhbmRsaW5nLmFwcGVuZCgi
ICAgIGlmIChlcnJvci5sZW5ndGgoKSkge1xuIikKICAgICAgICAgICAgIG1ldGhvZF9lbmRpbmdf
aGFuZGxpbmcuYXBwZW5kKCIgICAgICAgIGNhbGxiYWNrLT5kaXNhYmxlKCk7XG4iKQotICAgICAg
ICAgICAgbWV0aG9kX2VuZGluZ19oYW5kbGluZy5hcHBlbmQoIiAgICAgICAgbV9iYWNrZW5kRGlz
cGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcjo6U2VydmVyRXJyb3IsIGVycm9yKTtcbiIpCisgICAgICAgICAgICBtZXRob2RfZW5k
aW5nX2hhbmRsaW5nLmFwcGVuZCgiICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQ
cm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI6OlNlcnZlckVycm9yLCBlcnJvcik7XG4iKQogICAgICAgICAgICAgbWV0aG9kX2VuZGluZ19o
YW5kbGluZy5hcHBlbmQoIiAgICAgICAgcmV0dXJuO1xuIikKICAgICAgICAgICAgIG1ldGhvZF9l
bmRpbmdfaGFuZGxpbmcuYXBwZW5kKCIgICAgfSIpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weSBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weQppbmRleCA0
MWUzMzg3Li42YzdiODExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29k
ZUdlbmVyYXRvckluc3BlY3RvclN0cmluZ3MucHkKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5CkBAIC03MCw3ICs3MCw3IEBAIGJh
Y2tlbmRfZGlzcGF0Y2hlcl9kaXNwYXRjaF9tZXRob2QgPSAoCiB7CiAgICAgUmVmPCR7ZGlzcGF0
Y2hlck5hbWV9PiBwcm90ZWN0KCp0aGlzKTsKIAotICAgIHR5cGVkZWYgdm9pZCAoJHtkaXNwYXRj
aGVyTmFtZX06OipDYWxsSGFuZGxlcikobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVj
dCYgbWVzc2FnZSk7CisgICAgdHlwZWRlZiB2b2lkICgke2Rpc3BhdGNoZXJOYW1lfTo6KkNhbGxI
YW5kbGVyKShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIG1l
c3NhZ2UpOwogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIENhbGxIYW5kbGVyPiBEaXNwYXRj
aE1hcDsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKERpc3BhdGNoTWFwLCBkaXNwYXRjaE1hcCwg
KCkpOwogICAgIGlmIChkaXNwYXRjaE1hcC5pc0VtcHR5KCkpIHsKQEAgLTExMiw3ICsxMTIsNyBA
QCAkY29kZQogIiIiKQogCiBjYWxsYmFja19tZXRob2QgPSAoCi0iIiIke2hhbmRsZXJOYW1lfTo6
JHtjYWxsYmFja05hbWV9Ojoke2NhbGxiYWNrTmFtZX0oUGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcj4gYmFja2VuZERpc3BhdGNoZXIsIGludCBpZCkgOiBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlKGJhY2tlbmREaXNwYXRjaGVyLCBpZCkgeyB9Cisi
IiIke2hhbmRsZXJOYW1lfTo6JHtjYWxsYmFja05hbWV9Ojoke2NhbGxiYWNrTmFtZX0oUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gYmFja2VuZERpc3BhdGNoZXIsIGludCBp
ZCkgOiBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2Uo
YmFja2VuZERpc3BhdGNoZXIsIGlkKSB7IH0KIAogdm9pZCAke2hhbmRsZXJOYW1lfTo6JHtjYWxs
YmFja05hbWV9OjpzZW5kU3VjY2Vzcygke3BhcmFtZXRlcnN9KQogewpAQCAtMTI2LDE0ICsxMjYs
MTMgQEAgZnJvbnRlbmRfaCA9ICgKICNkZWZpbmUgSW5zcGVjdG9yRnJvbnRlbmRfaAogCiAjaW5j
bHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMu
aCIKKyNpbmNsdWRlICJJbnNwZWN0b3JGb3J3YXJkaW5nLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9y
L0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwotCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAogJGRv
bWFpbkNsYXNzTGlzdApAQCAtMTQ5LDE2ICsxNDgsMTMgQEAgYmFja2VuZF9oID0gKAogIiIiI2lm
bmRlZiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnNfaAogI2RlZmluZSBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcnNfaAogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgorI2luY2x1ZGUgPGluc3BlY3Rv
ci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwotY2xhc3MgSW5zcGVjdG9yQXJyYXk7Ci0KIHR5
cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCiAkaGFuZGxlckludGVyZmFjZXMKQEAgLTE3OCwx
MSArMTc0LDEzIEBAIGJhY2tlbmRfY3BwID0gKAogI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVycy5oIgogCiAjaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnQuaCIKLSNpbmNsdWRlICJJ
bnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGb3J3YXJkaW5nLmgiCisjaW5j
bHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAordXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAkbWV0aG9kcwpAQCAtMjAw
LDEwICsxOTgsMTEgQEAgZnJvbnRlbmRfY3BwID0gKAogCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJv
bnRlbmQuaCIKIAotI2luY2x1ZGUgIkluc3BlY3RvckZvcndhcmRpbmcuaCIKICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK3Vz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogJG1ldGhv
ZHMKQEAgLTIyMCw3ICsyMTksNyBAQCB0eXBlYnVpbGRlcl9oID0gKAogCiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgorI2luY2x1ZGUgPGluc3Bl
Y3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKQEAgLTI4MSwxMyArMjgwLDEzIEBAIGlubGluZSBp
bnQgRXhhY3RseUludDo6Y2FzdF90b19pbnQ8dW5zaWduZWQgaW50Pih1bnNpZ25lZCBpbnQgaSkg
eyByZXR1cm4gaTsgfQogY2xhc3MgUnVudGltZUNhc3RIZWxwZXIgewogcHVibGljOgogI2lmICR2
YWxpZGF0b3JJZmRlZk5hbWUKLSAgICB0ZW1wbGF0ZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZSBUWVBF
PgotICAgIHN0YXRpYyB2b2lkIGFzc2VydFR5cGUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQorICAg
IHRlbXBsYXRlPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU6OlR5cGUgVFlQRT4KKyAgICBzdGF0
aWMgdm9pZCBhc3NlcnRUeXBlKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVlKQogICAg
IHsKICAgICAgICAgQVNTRVJUKHZhbHVlLT50eXBlKCkgPT0gVFlQRSk7CiAgICAgfQotICAgIHN0
YXRpYyB2b2lkIGFzc2VydEFueShJbnNwZWN0b3JWYWx1ZSopOwotICAgIHN0YXRpYyB2b2lkIGFz
c2VydEludChJbnNwZWN0b3JWYWx1ZSogdmFsdWUpOworICAgIHN0YXRpYyB2b2lkIGFzc2VydEFu
eShJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKik7CisgICAgc3RhdGljIHZvaWQgYXNzZXJ0SW50
KEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVlKTsKICNlbmRpZgogfTsKIApAQCAtMzAw
LDEzICsyOTksMTMgQEAgc3RydWN0IEFycmF5SXRlbUhlbHBlciB7CiB9OwogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgotY2xhc3MgQXJyYXkgOiBwdWJsaWMgSW5zcGVjdG9yQXJyYXlCYXNlIHsKK2Ns
YXNzIEFycmF5IDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXlCYXNlIHsKIHByaXZh
dGU6CiAgICAgQXJyYXkoKSB7IH0KIAotICAgIEluc3BlY3RvckFycmF5KiBvcGVuQWNjZXNzb3Jz
KCkgewotICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoSW5zcGVjdG9yQXJyYXkpID09IHNp
emVvZihBcnJheTxUPiksIGNhbm5vdF9jYXN0KTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEluc3BlY3RvckFycmF5Kj4oc3RhdGljX2Nhc3Q8SW5zcGVjdG9yQXJyYXlCYXNlKj4odGhpcykp
OworICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkqIG9wZW5BY2Nlc3NvcnMoKSB7CisgICAg
ICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5KSA9PSBz
aXplb2YoQXJyYXk8VD4pLCBjYW5ub3RfY2FzdCk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5Kj4oc3RhdGljX2Nhc3Q8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JBcnJheUJhc2UqPih0aGlzKSk7CiAgICAgfQogCiBwdWJsaWM6CkBAIC0zMjUsMjIgKzMy
NCwyMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXJyYXk8VD4oKSk7
CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8QXJyYXk8VD4+IHJ1bnRpbWVDYXN0KFBh
c3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFy
cmF5PFQ+PiBydW50aW1lQ2FzdChQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+
IHZhbHVlKQogICAgIHsKLSAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcnJheTsKKyAg
ICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+IGFycmF5OwogICAgICAgICBi
b29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNBcnJheSgmYXJyYXkpOwogICAgICAgICBBU1NFUlRfVU5V
U0VEKGNhc3RSZXMsIGNhc3RSZXMpOwogI2lmICR2YWxpZGF0b3JJZmRlZk5hbWUKICAgICAgICAg
YXNzZXJ0Q29ycmVjdFZhbHVlKGFycmF5LmdldCgpKTsKICNlbmRpZiAgLy8gJHZhbGlkYXRvcklm
ZGVmTmFtZQotICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoQXJyYXk8VD4pID09IHNpemVv
ZihJbnNwZWN0b3JBcnJheSksIHR5cGVfY2FzdF9wcm9ibGVtKTsKLSAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEFycmF5PFQ+Kj4oc3RhdGljX2Nhc3Q8SW5zcGVjdG9yQXJyYXlCYXNlKj4oYXJy
YXkuZ2V0KCkpKTsKKyAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEFycmF5PFQ+KSA9PSBz
aXplb2YoSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSksIHR5cGVfY2FzdF9wcm9ibGVtKTsKKyAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5PFQ+Kj4oc3RhdGljX2Nhc3Q8SW5zcGVjdG9y
OjpJbnNwZWN0b3JBcnJheUJhc2UqPihhcnJheS5nZXQoKSkpOwogICAgIH0KIAogI2lmICR2YWxp
ZGF0b3JJZmRlZk5hbWUKLSAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVj
dG9yVmFsdWUqIHZhbHVlKQorICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNw
ZWN0b3I6Okluc3BlY3RvclZhbHVlKiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIFJlZlB0cjxJbnNw
ZWN0b3JBcnJheT4gYXJyYXk7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFy
cmF5PiBhcnJheTsKICAgICAgICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFzQXJyYXkoJmFycmF5
KTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChjYXN0UmVzLCBjYXN0UmVzKTsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGFycmF5LT5sZW5ndGgoKTsgaSsrKQpAQCAtMzUxLDE0ICsz
NTAsMTQgQEAgcHVibGljOgogfTsKIAogc3RydWN0IFN0cnVjdEl0ZW1UcmFpdHMgewotICAgIHN0
YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRyPElu
c3BlY3RvclZhbHVlPiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBwdXNoUmVmUHRyKEluc3BlY3Rv
cjo6SW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
VmFsdWU+IHZhbHVlKQogICAgIHsKICAgICAgICAgYXJyYXktPnB1c2hWYWx1ZSh2YWx1ZSk7CiAg
ICAgfQogCiAjaWYgJHZhbGlkYXRvcklmZGVmTmFtZQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
Ci0gICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1
ZSkgeworICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3I6Okluc3Bl
Y3RvclZhbHVlKiB2YWx1ZSkgewogICAgICAgICBUOjphc3NlcnRDb3JyZWN0VmFsdWUodmFsdWUp
OwogICAgIH0KICNlbmRpZiAgLy8gJHZhbGlkYXRvcklmZGVmTmFtZQpAQCAtMzY3LDE1ICszNjYs
MTUgQEAgc3RydWN0IFN0cnVjdEl0ZW1UcmFpdHMgewogdGVtcGxhdGU8Pgogc3RydWN0IEFycmF5
SXRlbUhlbHBlcjxTdHJpbmc+IHsKICAgICBzdHJ1Y3QgVHJhaXRzIHsKLSAgICAgICAgc3RhdGlj
IHZvaWQgcHVzaFJhdyhJbnNwZWN0b3JBcnJheSogYXJyYXksIGNvbnN0IFN0cmluZyYgdmFsdWUp
CisgICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSYXcoSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSog
YXJyYXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIGFycmF5
LT5wdXNoU3RyaW5nKHZhbHVlKTsKICAgICAgICAgfQogCiAjaWYgJHZhbGlkYXRvcklmZGVmTmFt
ZQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgdm9pZCBhc3Nl
cnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKSB7Ci0gICAgICAgICAgICBSdW50
aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZVN0cmluZz4odmFs
dWUpOworICAgICAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JWYWx1ZSogdmFsdWUpIHsKKyAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjph
c3NlcnRUeXBlPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU6OlR5cGVTdHJpbmc+KHZhbHVlKTsK
ICAgICAgICAgfQogI2VuZGlmICAvLyAkdmFsaWRhdG9ySWZkZWZOYW1lCiAgICAgfTsKQEAgLTM4
NCwxNCArMzgzLDE0IEBAIHN0cnVjdCBBcnJheUl0ZW1IZWxwZXI8U3RyaW5nPiB7CiB0ZW1wbGF0
ZTw+CiBzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPGludD4gewogICAgIHN0cnVjdCBUcmFpdHMgewot
ICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmF3KEluc3BlY3RvckFycmF5KiBhcnJheSwgaW50IHZh
bHVlKQorICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmF3KEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJy
YXkqIGFycmF5LCBpbnQgdmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIGFycmF5LT5wdXNo
SW50KHZhbHVlKTsKICAgICAgICAgfQogCiAjaWYgJHZhbGlkYXRvcklmZGVmTmFtZQogICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0
VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKSB7CisgICAgICAgIHN0YXRpYyB2b2lkIGFzc2Vy
dENvcnJlY3RWYWx1ZShJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiB2YWx1ZSkgewogICAgICAg
ICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydEludCh2YWx1ZSk7CiAgICAgICAgIH0KICNl
bmRpZiAgLy8gJHZhbGlkYXRvcklmZGVmTmFtZQpAQCAtNDAxLDE1ICs0MDAsMTUgQEAgc3RydWN0
IEFycmF5SXRlbUhlbHBlcjxpbnQ+IHsKIHRlbXBsYXRlPD4KIHN0cnVjdCBBcnJheUl0ZW1IZWxw
ZXI8ZG91YmxlPiB7CiAgICAgc3RydWN0IFRyYWl0cyB7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1
c2hSYXcoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBkb3VibGUgdmFsdWUpCisgICAgICAgIHN0YXRp
YyB2b2lkIHB1c2hSYXcoSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSogYXJyYXksIGRvdWJsZSB2
YWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAgYXJyYXktPnB1c2hOdW1iZXIodmFsdWUpOwog
ICAgICAgICB9CiAKICNpZiAkdmFsaWRhdG9ySWZkZWZOYW1lCiAgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0
b3JWYWx1ZSogdmFsdWUpIHsKLSAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRU
eXBlPEluc3BlY3RvclZhbHVlOjpUeXBlTnVtYmVyPih2YWx1ZSk7CisgICAgICAgIHN0YXRpYyB2
b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiB2YWx1ZSkg
eworICAgICAgICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JWYWx1ZTo6VHlwZU51bWJlcj4odmFsdWUpOwogICAgICAgICB9CiAjZW5kaWYgIC8v
ICR2YWxpZGF0b3JJZmRlZk5hbWUKICAgICB9OwpAQCAtNDE4LDMxICs0MTcsMzEgQEAgc3RydWN0
IEFycmF5SXRlbUhlbHBlcjxkb3VibGU+IHsKIHRlbXBsYXRlPD4KIHN0cnVjdCBBcnJheUl0ZW1I
ZWxwZXI8Ym9vbD4gewogICAgIHN0cnVjdCBUcmFpdHMgewotICAgICAgICBzdGF0aWMgdm9pZCBw
dXNoUmF3KEluc3BlY3RvckFycmF5KiBhcnJheSwgYm9vbCB2YWx1ZSkKKyAgICAgICAgc3RhdGlj
IHZvaWQgcHVzaFJhdyhJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5KiBhcnJheSwgYm9vbCB2YWx1
ZSkKICAgICAgICAgewogICAgICAgICAgICAgYXJyYXktPnB1c2hCb29sZWFuKHZhbHVlKTsKICAg
ICAgICAgfQogCiAjaWYgJHZhbGlkYXRvcklmZGVmTmFtZQogICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgotICAgICAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9y
VmFsdWUqIHZhbHVlKSB7Ci0gICAgICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlw
ZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZUJvb2xlYW4+KHZhbHVlKTsKKyAgICAgICAgc3RhdGljIHZv
aWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVlKSB7
CisgICAgICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3I6Oklu
c3BlY3RvclZhbHVlOjpUeXBlQm9vbGVhbj4odmFsdWUpOwogICAgICAgICB9CiAjZW5kaWYgIC8v
ICR2YWxpZGF0b3JJZmRlZk5hbWUKICAgICB9OwogfTsKIAogdGVtcGxhdGU8Pgotc3RydWN0IEFy
cmF5SXRlbUhlbHBlcjxJbnNwZWN0b3JWYWx1ZT4geworc3RydWN0IEFycmF5SXRlbUhlbHBlcjxJ
bnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiB7CiAgICAgc3RydWN0IFRyYWl0cyB7Ci0gICAgICAg
IHN0YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRy
PEluc3BlY3RvclZhbHVlPiB2YWx1ZSkKKyAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0cihJ
bnNwZWN0b3I6Okluc3BlY3RvckFycmF5KiBhcnJheSwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3RvclZhbHVlPiB2YWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAgYXJyYXktPnB1c2hW
YWx1ZSh2YWx1ZSk7CiAgICAgICAgIH0KIAogI2lmICR2YWxpZGF0b3JJZmRlZk5hbWUKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVj
dFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkgeworICAgICAgICBzdGF0aWMgdm9pZCBhc3Nl
cnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogdmFsdWUpIHsKICAgICAg
ICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRBbnkodmFsdWUpOwogICAgICAgICB9CiAj
ZW5kaWYgIC8vICR2YWxpZGF0b3JJZmRlZk5hbWUKQEAgLTQ1MCwzNCArNDQ5LDM0IEBAIHN0cnVj
dCBBcnJheUl0ZW1IZWxwZXI8SW5zcGVjdG9yVmFsdWU+IHsKIH07CiAKIHRlbXBsYXRlPD4KLXN0
cnVjdCBBcnJheUl0ZW1IZWxwZXI8SW5zcGVjdG9yT2JqZWN0PiB7CitzdHJ1Y3QgQXJyYXlJdGVt
SGVscGVyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiB7CiAgICAgc3RydWN0IFRyYWl0cyB7
Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQ
YXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSkKKyAgICAgICAgc3RhdGljIHZvaWQgcHVz
aFJlZlB0cihJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5KiBhcnJheSwgUGFzc1JlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3RvclZhbHVlPiB2YWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAgYXJy
YXktPnB1c2hWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIH0KIAogI2lmICR2YWxpZGF0b3JJZmRlZk5h
bWUKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIHZvaWQgYXNz
ZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkgewotICAgICAgICAgICAgUnVu
dGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFsdWU6OlR5cGVPYmplY3Q+KHZh
bHVlKTsKKyAgICAgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3Rvcjo6
SW5zcGVjdG9yVmFsdWUqIHZhbHVlKSB7CisgICAgICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6
YXNzZXJ0VHlwZTxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlOjpUeXBlT2JqZWN0Pih2YWx1ZSk7
CiAgICAgICAgIH0KICNlbmRpZiAgLy8gJHZhbGlkYXRvcklmZGVmTmFtZQogICAgIH07CiB9Owog
CiB0ZW1wbGF0ZTw+Ci1zdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPEluc3BlY3RvckFycmF5PiB7Citz
dHJ1Y3QgQXJyYXlJdGVtSGVscGVyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+IHsKICAgICBz
dHJ1Y3QgVHJhaXRzIHsKLSAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0b3JB
cnJheSogYXJyYXksIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHZhbHVlKQorICAgICAgICBz
dGF0aWMgdm9pZCBwdXNoUmVmUHRyKEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+IHZhbHVlKQogICAgICAgICB7CiAg
ICAgICAgICAgICBhcnJheS0+cHVzaEFycmF5KHZhbHVlKTsKICAgICAgICAgfQogCiAjaWYgJHZh
bGlkYXRvcklmZGVmTmFtZQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBz
dGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKSB7Ci0g
ICAgICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6
VHlwZUFycmF5Pih2YWx1ZSk7CisgICAgICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1
ZShJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiB2YWx1ZSkgeworICAgICAgICAgICAgUnVudGlt
ZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZTo6VHlwZUFy
cmF5Pih2YWx1ZSk7CiAgICAgICAgIH0KICNlbmRpZiAgLy8gJHZhbGlkYXRvcklmZGVmTmFtZQog
ICAgIH07CkBAIC00ODYsMTQgKzQ4NSwxNCBAQCBzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPEluc3Bl
Y3RvckFycmF5PiB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RydWN0IEFycmF5SXRlbUhlbHBl
cjxUeXBlQnVpbGRlcjo6QXJyYXk8VD4+IHsKICAgICBzdHJ1Y3QgVHJhaXRzIHsKLSAgICAgICAg
c3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0b3JBcnJheSogYXJyYXksIFBhc3NSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PFQ+PiB2YWx1ZSkKKyAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJl
ZlB0cihJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5KiBhcnJheSwgUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6QXJyYXk8VD4+IHZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBhcnJheS0+cHVz
aFZhbHVlKHZhbHVlKTsKICAgICAgICAgfQogCiAjaWYgJHZhbGlkYXRvcklmZGVmTmFtZQogICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTPgotICAgICAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3Jy
ZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKSB7CisgICAgICAgIHN0YXRpYyB2b2lkIGFz
c2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiB2YWx1ZSkgewogICAg
ICAgICAgICAgUzo6YXNzZXJ0Q29ycmVjdFZhbHVlKHZhbHVlKTsKICAgICAgICAgfQogI2VuZGlm
ICAvLyAkdmFsaWRhdG9ySWZkZWZOYW1lCkBAIC01MjUsNiArNTI0LDggQEAgdHlwZWJ1aWxkZXJf
Y3BwID0gKAogI2luY2x1ZGUgIkluc3BlY3RvclR5cGVCdWlsZGVyLmgiCiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBUeXBlQnVpbGRlciB7CkBAIC01ODQsMTQgKzU4NSwx
NCBAQCBjbGFzc19iaW5kaW5nX2J1aWxkZXJfcGFydF8xID0gKAogICAgIHRlbXBsYXRlPGludCBT
VEFURT4KICAgICBjbGFzcyBCdWlsZGVyIHsKICAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKIAogICAgICAgICB0ZW1wbGF0ZTxpbnQgU1RFUD4gQnVp
bGRlcjxTVEFURSB8IFNURVA+JiBjYXN0U3RhdGUoKQogICAgICAgICB7CiAgICAgICAgICAgICBy
ZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8QnVpbGRlcjxTVEFURSB8IFNURVA+Kj4odGhpcyk7CiAg
ICAgICAgIH0KIAotICAgICAgICBCdWlsZGVyKFBhc3NSZWZQdHI8LyolcyovSW5zcGVjdG9yT2Jq
ZWN0PiBwdHIpCisgICAgICAgIEJ1aWxkZXIoUGFzc1JlZlB0cjwvKiVzKi9JbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdD4gcHRyKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VS
VChTVEFURSA9PSBOb0ZpZWxkc1NldCwgYnVpbGRlcl9jcmVhdGVkX2luX25vbl9pbml0X3N0YXRl
KTsKICAgICAgICAgICAgIG1fcmVzdWx0ID0gcHRyOwpAQCAtNjEzLDcgKzYxNCw3IEBAIGNsYXNz
X2JpbmRpbmdfYnVpbGRlcl9wYXJ0XzMgPSAoIiIiCiAgICAgICAgIG9wZXJhdG9yIFJlZlB0cjwl
cz4mICgpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IEFs
bEZpZWxkc1NldCwgcmVzdWx0X2lzX25vdF9yZWFkeSk7Ci0gICAgICAgICAgICBDT01QSUxFX0FT
U0VSVChzaXplb2YoJXMpID09IHNpemVvZihJbnNwZWN0b3JPYmplY3QpLCBjYW5ub3RfY2FzdCk7
CisgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoJXMpID09IHNpemVvZihJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKICAgICAgICAgICAgIHJldHVybiAq
cmVpbnRlcnByZXRfY2FzdDxSZWZQdHI8JXM+Kj4oJm1fcmVzdWx0KTsKICAgICAgICAgfQogCkBA
IC02MjgsNiArNjI5LDYgQEAgY2xhc3NfYmluZGluZ19idWlsZGVyX3BhcnRfMyA9ICgiIiIKIGNs
YXNzX2JpbmRpbmdfYnVpbGRlcl9wYXJ0XzQgPSAoCiAiIiIgICAgc3RhdGljIEJ1aWxkZXI8Tm9G
aWVsZHNTZXQ+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxk
c1NldD4oSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CisgICAgICAgIHJldHVybiBCdWlsZGVy
PE5vRmllbGRzU2V0PihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOwogICAg
IH0KICIiIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVz
c2FnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCmlu
ZGV4IDBjOTcwYjguLjczMjE2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db25zb2xlTWVzc2FnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNv
bGVNZXNzYWdlLmNwcApAQCAtMzgsMTQgKzM4LDE2IEBACiAjaW5jbHVkZSAiSWRlbnRpZmllcnNG
YWN0b3J5LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRl
ICJTY3JpcHRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsRnJhbWUuaCIKICNpbmNs
dWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5
LmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVj
dG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAordXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDb25zb2xlTWVzc2FnZTo6
Q29uc29sZU1lc3NhZ2UoYm9vbCBjYW5HZW5lcmF0ZUNhbGxTdGFjaywgTWVzc2FnZVNvdXJjZSBz
b3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaAppbmRleCAwN2Y4OGI2Li4wNzA1Yjk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaApAQCAtMzgsMTEgKzM4LDE0
IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
K25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworfQorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERPTVdpbmRvdzsKIGNsYXNzIEluamVjdGVkU2NyaXB0
TWFuYWdlcjsKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIFNjcmlwdEFyZ3VtZW50czsK
IGNsYXNzIFNjcmlwdENhbGxGcmFtZTsKIGNsYXNzIFNjcmlwdENhbGxTdGFjazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAKaW5kZXggMDNhODA1
Zi4uYjNkOWFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRT
ZWFyY2hVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFy
Y2hVdGlscy5jcHAKQEAgLTMxLDE0ICszMSwxNCBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAK
ICNpbmNsdWRlICJDb250ZW50U2VhcmNoVXRpbHMuaCIKLQotI2luY2x1ZGUgIkluc3BlY3RvclZh
bHVlcy5oIgogI2luY2x1ZGUgIlJlZ3VsYXJFeHByZXNzaW9uLmgiCi0KKyNpbmNsdWRlIDxpbnNw
ZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL0J1bXBQb2ludGVyQWxsb2Nh
dG9yLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHlhcnIvWWFy
ci5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBuYW1lc3BhY2UgQ29udGVudFNlYXJjaFV0aWxzIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5oCmluZGV4IDYwYWQ2NzguLjdiNWRmMmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmgKQEAgLTM4LDcg
KzM4LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbnNwZWN0b3JBcnJheTsK
IGNsYXNzIFJlZ3VsYXJFeHByZXNzaW9uOwogCiBuYW1lc3BhY2UgQ29udGVudFNlYXJjaFV0aWxz
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCmluZGV4IDc3
Zjc4MGMuLjFlNThkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0LmNwcApAQCAtMzYsMTAgKzM2LDEwIEBACiAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhv
c3QuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1vZHVsZS5oIgotI2luY2x1ZGUgIkluc3Bl
Y3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJTY3JpcHRGdW5jdGlv
bkNhbGwuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxp
bnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpBcnJheTsKQEAgLTQ5LDYgKzQ5LDgg
QEAgdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlE
ZXNjcmlwdG9yOwogdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpGdW5jdGlv
bkRldGFpbHM7CiB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0OwogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIEluamVjdGVkU2NyaXB0OjpJbmplY3RlZFNjcmlwdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwCmluZGV4IGQ5ZmJhNDAuLmE3ZDQ5Njcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3Bw
CkBAIC0zNSwxMyArMzUsMTUgQEAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEJhc2UuaCIKIAog
I2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIkluc3BlY3Rv
clZhbHVlcy5oIgogI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5oIgorI2luY2x1ZGUgPGlu
c3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIFdlYkNvcmU6
OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q7CiAKK3VzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW5qZWN0ZWRTY3JpcHRCYXNlOjpJ
bmplY3RlZFNjcmlwdEJhc2UoY29uc3QgU3RyaW5nJiBuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5oCmluZGV4IDc5NmY2YzAuLjEzYWVjNGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmgKQEAgLTM2
LDkgKzM2LDEyIEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQorbmFtZXNwYWNlIEluc3BlY3RvciB7CiBj
bGFzcyBJbnNwZWN0b3JWYWx1ZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCiBjbGFzcyBT
Y3JpcHRGdW5jdGlvbkNhbGw7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwpAQCAtNjIs
NyArNjUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3co
KSBjb25zdDsKICAgICBjb25zdCBTY3JpcHRPYmplY3QmIGluamVjdGVkU2NyaXB0T2JqZWN0KCkg
Y29uc3Q7CiAgICAgU2NyaXB0VmFsdWUgY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKFNjcmlw
dEZ1bmN0aW9uQ2FsbCYsIGJvb2wmIGhhZEV4Y2VwdGlvbikgY29uc3Q7Ci0gICAgdm9pZCBtYWtl
Q2FsbChTY3JpcHRGdW5jdGlvbkNhbGwmLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQp
OworICAgIHZvaWQgbWFrZUNhbGwoU2NyaXB0RnVuY3Rpb25DYWxsJiwgUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwogICAgIHZvaWQgbWFrZUV2YWxDYWxsKEVycm9y
U3RyaW5nKiwgU2NyaXB0RnVuY3Rpb25DYWxsJiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1l
OjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdh
c1Rocm93bik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmNwcAppbmRleCBmYWQ3OThiLi43OTkxYzFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52
YXNNb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dENhbnZhc01vZHVsZS5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJJbmplY3RlZFNj
cmlwdE1hbmFnZXIuaCIKICNpbmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwuaCIKICNpbmNsdWRl
ICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+
CiAKIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpBcnJheTsKIHVzaW5nIFdlYkNvcmU6OlR5
cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlSWQ7CkBAIC00Nyw2ICs0OCw4IEBAIHVzaW5nIFdl
YkNvcmU6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlU3RhdGU7CiB1c2luZyBXZWJDb3Jl
OjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFjZUxvZzsKIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWls
ZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQ7CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OkluamVj
dGVkU2NyaXB0Q2FudmFzTW9kdWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0SG9zdC5jcHAKaW5kZXggZWY1MzNhYS4uM2E2NWQxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAKQEAgLTQ3LDkgKzQ3
LDkgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCi0j
aW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogI2lu
Y2x1ZGUgIlN0b3JhZ2UuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+
CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogI2luY2x1ZGUgIkRhdGFiYXNlLmgiCkBAIC02
MCw2ICs2MCw4IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBQYXNzUmVmUHRyPEluamVjdGVkU2NyaXB0SG9zdD4gSW5qZWN0ZWRTY3JpcHRI
b3N0OjpjcmVhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0SG9zdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
SG9zdC5oCmluZGV4IDRhODQxODIuLmEyMTI1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgKQEAgLTM2LDYgKzM2LDExIEBACiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKK25hbWVzcGFjZSBJ
bnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworY2xhc3MgSW5zcGVjdG9yVmFsdWU7
Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGF0YWJhc2U7CkBAIC00Niw4ICs1
MSw2IEBAIGNsYXNzIEluc3BlY3RvckRPTUFnZW50OwogY2xhc3MgSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDsKIGNsYXNzIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0b3JPYmplY3Q7Ci1jbGFzcyBJbnNwZWN0b3JWYWx1
ZTsKIGNsYXNzIE5vZGU7CiBjbGFzcyBTY3JpcHREZWJ1Z1NlcnZlcjsKIGNsYXNzIFNjcmlwdE9i
amVjdDsKQEAgLTEwMCw3ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckluc3BlY3Rl
ZE9iamVjdHMoKTsKICAgICBJbnNwZWN0YWJsZU9iamVjdCogaW5zcGVjdGVkT2JqZWN0KHVuc2ln
bmVkIGludCBudW0pOwogCi0gICAgdm9pZCBpbnNwZWN0SW1wbChQYXNzUmVmUHRyPEluc3BlY3Rv
clZhbHVlPiBvYmplY3RUb0luc3BlY3QsIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGhpbnRz
KTsKKyAgICB2b2lkIGluc3BlY3RJbXBsKFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JW
YWx1ZT4gb2JqZWN0VG9JbnNwZWN0LCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFs
dWU+IGhpbnRzKTsKICAgICB2b2lkIGdldEV2ZW50TGlzdGVuZXJzSW1wbChOb2RlKiwgVmVjdG9y
PEV2ZW50TGlzdGVuZXJJbmZvPiYgbGlzdGVuZXJzQXJyYXkpOwogCiAgICAgdm9pZCBjbGVhckNv
bnNvbGVNZXNzYWdlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmNwcAppbmRleCA3YWEzZDQzLi5kZWRlODQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApAQCAtMzcs
MTAgKzM3LDEyIEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbmpl
Y3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdFNvdXJjZS5oIgotI2lu
Y2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgorI2lu
Y2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIFBhc3NPd25QdHI8SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPiBJbmplY3RlZFNjcmlwdE1h
bmFnZXI6OmNyZWF0ZUZvclBhZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0TWFuYWdlci5oCmluZGV4IDY4MWU0MDguLjdiMjgzNjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKQEAgLTM1LDEy
ICszNSwxNSBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yT2Jq
ZWN0OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERPTVdpbmRvdzsKIGNsYXNz
IEluamVjdGVkU2NyaXB0OwogY2xhc3MgSW5qZWN0ZWRTY3JpcHRIb3N0OwotY2xhc3MgSW5zcGVj
dG9yT2JqZWN0OwogY2xhc3MgU2NyaXB0T2JqZWN0OwogCiBjbGFzcyBJbmplY3RlZFNjcmlwdE1h
bmFnZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0TW9kdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1v
ZHVsZS5jcHAKaW5kZXggZGIyMDc3OS4uOGQ1OTg1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwCkBAIC0zOSw2ICszOSw4IEBACiAj
aW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0Lmgi
CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
SW5qZWN0ZWRTY3JpcHRNb2R1bGU6OkluamVjdGVkU2NyaXB0TW9kdWxlKGNvbnN0IFN0cmluZyYg
bmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCmluZGV4
IGVhN2I0MjAuLmYxY2FhZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckFnZW50LmNwcApAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1
ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNs
dWRlICJQYWdlLmgiCkBAIC01MiwxMyArNTEsMTYgQEAKICNpbmNsdWRlICJTY3JpcHRPYmplY3Qu
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisj
aW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5z
cGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEluc3BlY3RvckFnZW50OjpJbnNwZWN0
b3JBZ2VudChQYWdlKiBwYWdlLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0
TWFuYWdlciwgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICA6
IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIkluc3BlY3RvciIpLCBpbnN0cnVtZW50
aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiSW5zcGVj
dG9yIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX2luc3BlY3RlZFBhZ2UocGFnZSkK
ICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAg
ICAsIG1fZW5hYmxlZChmYWxzZSkKQEAgLTkzLDcgKzk1LDcgQEAgdm9pZCBJbnNwZWN0b3JBZ2Vu
dDo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lKiBmcmFtZSwgRE9NV3JhcHBlcldv
cmxkJgogICAgIGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KHNjcmlwdFNvdXJjZS50b1N0
cmluZygpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckFn
ZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
IGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3JJbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5k
Q2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvckluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaAppbmRleCBmYjRiZDI1Li4yOTlkZmM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaApAQCAtMzAsMTEg
KzMwLDE3IEBACiAjaWZuZGVmIEluc3BlY3RvckFnZW50X2gKICNkZWZpbmUgSW5zcGVjdG9yQWdl
bnRfaAogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNl
LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCitu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNzIEluc3BlY3Rvck9iamVjdDsKK30KKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CkBAIC00MiwxMyArNDgsMTIg
QEAgY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEluamVjdGVkU2Ny
aXB0TWFuYWdlcjsKIGNsYXNzIEluc3BlY3Rvckluc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcjsK
LWNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFz
cyBQYWdlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9y
QWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9ySW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckFnZW50IDogcHVi
bGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvckluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQWdl
bnQpOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckFnZW50PiBjcmVh
dGUoUGFnZSogcGFnZSwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFn
ZXIsIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCkBAIC02NCw3ICs2
OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwogICAgIHZvaWQg
ZGlzYWJsZShFcnJvclN0cmluZyopOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0
b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICB2b2lk
IGRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSosIERPTVdyYXBwZXJXb3JsZCYpOwpA
QCAtNzksNyArODQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEluamVjdGVkU2NyaXB0Rm9y
T3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIHNvdXJjZSk7CiAKLSAg
ICB2b2lkIGluc3BlY3QoUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0PiBvYmplY3RUb0luc3BlY3QsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBoaW50cyk7
CisgICAgdm9pZCBpbnNwZWN0KFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdD4gb2JqZWN0VG9JbnNwZWN0LCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0PiBoaW50cyk7CiAKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yQWdlbnQoUGFnZSosIElu
amVjdGVkU2NyaXB0TWFuYWdlciosIEluc3RydW1lbnRpbmdBZ2VudHMqKTsKQEAgLTkwLDcgKzk1
LDcgQEAgcHJpdmF0ZToKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyOwogCiAgICAgVmVjdG9yPHBhaXI8bG9uZywgU3RyaW5nPj4gbV9wZW5kaW5nRXZh
bHVhdGVUZXN0Q29tbWFuZHM7Ci0gICAgcGFpcjxSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6
OlJlbW90ZU9iamVjdD4sIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+PiBtX3BlbmRpbmdJbnNwZWN0
RGF0YTsKKyAgICBwYWlyPFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0
PiwgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Pj4gbV9wZW5kaW5nSW5zcGVjdERh
dGE7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbV9pbmplY3RlZFNjcmlwdEZvck9yaWdp
bjsKIAogICAgIGJvb2wgbV9lbmFibGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBbGxJbk9uZS5jcHAKaW5kZXggMjYzYmRkOS4uNTMwMGQ5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwCkBAIC0zNyw5ICszNyw3
IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCIKICNpbmNsdWRlICJJbmpl
Y3RlZFNjcmlwdE1vZHVsZS5jcHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnQuY3BwIgotI2lu
Y2x1ZGUgIkluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwIgogI2luY2x1ZGUgIkluc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIuY3BwIgogI2luY2x1ZGUgIkluc3BlY3RvckNTU0FnZW50LmNwcCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JDYW52YXNBZ2VudC5jcHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmNwcCIK
QEAgLTcwLDcgKzY4LDYgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCIKICNp
bmNsdWRlICJJbnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuY3BwIgogI2luY2x1ZGUgIkluc3BlY3Rv
clRpbWVsaW5lQWdlbnQuY3BwIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5jcHAiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdB
Z2VudHMuY3BwIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudC5jcHAKaW5kZXggMDRjYzUzYS4uYmE0NjY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5j
cHAKQEAgLTM2LDIxICszNiwyMyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckFnZW50LmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQu
aCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5n
QWdlbnRzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0YXRlTm90aWZpZXIuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUgPGluc3BlY3Rv
ci9JbnNwZWN0b3JWYWx1ZXMuaD4KKwordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6Okluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKLSAgICA6IEluc3BlY3Rv
ckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIkFwcGxpY2F0aW9uQ2FjaGUiKSwgaW5zdHJ1bWVudGlu
Z0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkFwcGxpY2F0
aW9uQ2FjaGUiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fcGFnZUFnZW50KHBhZ2VB
Z2VudCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5k
Q2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQor
dm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFu
bmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAg
ICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9i
YWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaApp
bmRleCBlYjA2YzhmLi4zZTI0ZTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCkBAIC0yOCwyNyArMjgs
MzAgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNo
ZUhvc3QuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5o
IgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKK25hbWVzcGFjZSBJbnNw
ZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworY2xhc3MgSW5zcGVjdG9yVmFsdWU7Cit9
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRnJhbWU7Ci1jbGFzcyBJbnNwZWN0b3JB
cnJheTsKIGNsYXNzIEluc3BlY3RvckFnZW50OwogY2xhc3MgSW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUZyb250ZW5kRGlzcGF0Y2hlcjsKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIElu
c3BlY3RvclBhZ2VBZ2VudDsKLWNsYXNzIEluc3BlY3RvclZhbHVlOwogY2xhc3MgSW5zdHJ1bWVu
dGluZ0FnZW50czsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiB0eXBl
ZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNo
ZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIElu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCk7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KQpAQCAtNTcs
MTUgKzYwLDEyIEBAIHB1YmxpYzoKICAgICB9CiAgICAgfkluc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudCgpIHsgfQogCi0gICAgLy8gSW5zcGVjdG9yQmFzZUFnZW50Ci0gICAgdmlydHVhbCB2
b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
LCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZF
UlJJREU7CiAKLSAgICAvLyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gQVBJCiAgICAgdm9pZCB1
cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzKEZyYW1lKik7CiAgICAgdm9pZCBuZXR3b3JrU3Rh
dGVDaGFuZ2VkKCk7CiAKLSAgICAvLyBBcHBsaWNhdGlvbkNhY2hlIEFQSSBmb3IgSW5zcGVjdG9y
RnJvbnRlbmQKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdmly
dHVhbCB2b2lkIGdldEZyYW1lc1dpdGhNYW5pZmVzdHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhN
YW5pZmVzdD4+JiByZXN1bHQpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRNYW5pZmVzdEZvckZyYW1l
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBTdHJpbmcqIG1hbmlmZXN0VVJM
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYXNlQWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYXNlQWdlbnQuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGI5MDkzOC4uMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFzZUFnZW50LmgKKysrIC9kZXYvbnVsbApAQCAt
MSw2MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBt
ZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2lmbmRlZiBJbnNwZWN0b3JCYXNlQWdlbnRfaAotI2RlZmluZSBJbnNwZWN0
b3JCYXNlQWdlbnRfaAotCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgi
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwotY2xhc3MgSW5zdHJ1bWVudGluZ0Fn
ZW50czsKLQotY2xhc3MgSW5zcGVjdG9yQmFzZUFnZW50IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFs
IH5JbnNwZWN0b3JCYXNlQWdlbnQoKSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkQWdlbnQoKSB7IH0K
LQotcHJvdGVjdGVkOgotICAgIEluc3BlY3RvckJhc2VBZ2VudChjb25zdCBTdHJpbmcmIG5hbWUs
IEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCi0gICAgICAgIDogbV9p
bnN0cnVtZW50aW5nQWdlbnRzKGluc3RydW1lbnRpbmdBZ2VudHMpCi0gICAgICAgICwgbV9uYW1l
KG5hbWUpCi0gICAgewotICAgIH0KLQotICAgIEluc3RydW1lbnRpbmdBZ2VudHMqIG1faW5zdHJ1
bWVudGluZ0FnZW50czsKLSAgICBTdHJpbmcgbV9uYW1lOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yQmFzZUFnZW50X2gpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCBiYjE3
YzY1Li42NjEwN2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
U1NBZ2VudC5jcHAKQEAgLTQ0LDcgKzQ0LDYgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2Vu
dC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckhpc3RvcnkuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JU
eXBlQnVpbGRlci5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIklu
c3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJOYW1lZEZsb3dDb2xsZWN0aW9uLmgiCiAj
aW5jbHVkZSAiTm9kZS5oIgpAQCAtNTcsNyArNTYsNyBAQAogI2luY2x1ZGUgIlN0eWxlUnVsZS5o
IgogI2luY2x1ZGUgIlN0eWxlU2hlZXRMaXN0LmgiCiAjaW5jbHVkZSAiV2ViS2l0TmFtZWRGbG93
LmgiCi0KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8
d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmLmg+CkBAIC02NSw2ICs2NCw4IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKK3VzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBGb3JjZVBzZXVk
b0NsYXNzRmxhZ3MgewpAQCAtNjE2LDcgKzYxNyw3IEBAIENTU1N0eWxlUnVsZSogSW5zcGVjdG9y
Q1NTQWdlbnQ6OmFzQ1NTU3R5bGVSdWxlKENTU1J1bGUqIHJ1bGUpCiB9CiAKIEluc3BlY3RvckNT
U0FnZW50OjpJbnNwZWN0b3JDU1NBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzLCBJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQpCi0gICAgOiBJbnNwZWN0b3JC
YXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJDU1MiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6
IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkNTUyIpLCBpbnN0cnVtZW50aW5nQWdl
bnRzKQogICAgICwgbV9kb21BZ2VudChkb21BZ2VudCkKICAgICAsIG1fbGFzdFN0eWxlU2hlZXRJ
ZCgxKQogewpAQCAtNjI5LDcgKzYzMCw3IEBAIEluc3BlY3RvckNTU0FnZW50Ojp+SW5zcGVjdG9y
Q1NTQWdlbnQoKQogICAgIHJlc2V0KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250
ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVy
KQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250
ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQ1NTRnJvbnRlbmREaXNw
YXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNw
ZWN0b3JDU1NCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKaW5kZXgg
OWQzYjQwZC4uZWEwZWIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNTU0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNTU0FnZW50LmgKQEAgLTI3LDEyICsyNywxMiBAQAogCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3Iu
aCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKLSNpbmNsdWRlICJJbnNwZWN0
b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclN0eWxl
U2hlZXQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKyNpbmNsdWRlICJJbnNwZWN0
b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRlICJTZWN1cml0eUNvbnRleHQuaCIKLQorI2luY2x1
ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
QEAgLTY0LDcgKzY0LDcgQEAgY2xhc3MgQ2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s7CiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKIAogY2xhc3MgSW5zcGVjdG9yQ1NTQWdlbnQKLSAgICA6IHB1YmxpYyBJ
bnNwZWN0b3JCYXNlQWdlbnQKKyAgICA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UKICAgICAs
IHB1YmxpYyBJbnNwZWN0b3JET01BZ2VudDo6RE9NTGlzdGVuZXIKICAgICAsIHB1YmxpYyBJbnNw
ZWN0b3JDU1NCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKICAgICAsIHB1YmxpYyBJbnNwZWN0b3JT
dHlsZVNoZWV0OjpMaXN0ZW5lciB7CkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKICAgICB+SW5z
cGVjdG9yQ1NTQWdlbnQoKTsKIAogICAgIGJvb2wgZm9yY2VQc2V1ZG9TdGF0ZShFbGVtZW50Kiwg
Q1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVj
dG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBkaXNjYXJkQWdlbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3Ry
aW5nKik7CkBAIC0xMTksMTMgKzExOSwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdl
dFN0eWxlU2hlZXQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgUmVm
UHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5PiYgcmVzdWx0KTsKICAgICB2
aXJ0dWFsIHZvaWQgZ2V0U3R5bGVTaGVldFRleHQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcm
IHN0eWxlU2hlZXRJZCwgU3RyaW5nKiByZXN1bHQpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTdHls
ZVNoZWV0VGV4dChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBjb25z
dCBTdHJpbmcmIHRleHQpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTdHlsZVRleHQoRXJyb3JTdHJp
bmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgc3R5bGVJZCwgY29uc3QgU3RyaW5n
JiB0ZXh0LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRQcm9wZXJ0eVRleHQoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiYgc3R5bGVJZCwgaW50IHByb3BlcnR5SW5kZXgsIGNvbnN0IFN0cmlu
ZyYgdGV4dCwgYm9vbCBvdmVyd3JpdGUsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHls
ZT4mIHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2b2lkIHRvZ2dsZVByb3BlcnR5KEVycm9yU3RyaW5n
KiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHN0eWxlSWQsIGludCBwcm9wZXJ0eUlu
ZGV4LCBib29sIGRpc2FibGUsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4mIHJl
c3VsdCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldFJ1bGVTZWxlY3RvcihFcnJvclN0cmluZyosIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBydWxlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0
b3IsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0U3R5bGVUZXh0KEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0PiYgc3R5bGVJZCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRQcm9wZXJ0eVRleHQoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+JiBzdHlsZUlkLCBpbnQgcHJvcGVydHlJbmRleCwgY29uc3QgU3RyaW5nJiB0
ZXh0LCBib29sIG92ZXJ3cml0ZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYg
cmVzdWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlUHJvcGVydHkoRXJyb3JTdHJpbmcqLCBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBzdHlsZUlkLCBpbnQgcHJv
cGVydHlJbmRleCwgYm9vbCBkaXNhYmxlLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5
bGU+JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCBzZXRSdWxlU2VsZWN0b3IoRXJyb3JTdHJp
bmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBydWxlSWQsIGNv
bnN0IFN0cmluZyYgc2VsZWN0b3IsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiYg
cmVzdWx0KTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkUnVsZShFcnJvclN0cmluZyosIGludCBjb250
ZXh0Tm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTUnVsZT4mIHJlc3VsdCk7CiAgICAgdmlydHVhbCB2b2lkIGdldFN1cHBvcnRlZENTU1By
b3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpDU1M6OkNTU1Byb3BlcnR5SW5mbz4+JiByZXN1bHQpOwotICAgIHZpcnR1YWwgdm9pZCBm
b3JjZVBzZXVkb1N0YXRlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgUmVmUHRyPElu
c3BlY3RvckFycmF5PiYgZm9yY2VkUHNldWRvQ2xhc3Nlcyk7CisgICAgdmlydHVhbCB2b2lkIGZv
cmNlUHNldWRvU3RhdGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mIGZvcmNlZFBzZXVkb0NsYXNzZXMpOwogICAgIHZpcnR1
YWwgdm9pZCBnZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3RyaW5nKiwgaW50IGRvY3VtZW50
Tm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVk
Rmxvdz4+JiByZXN1bHQpOwogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0U2VsZWN0b3JQcm9maWxl
cihFcnJvclN0cmluZyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNhbnZhc0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXNBZ2VudC5jcHAKaW5kZXggZjlmNzJmMi4uODA1Yzg3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCkBAIC01OSwxMCAr
NTksMTIgQEAgdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2c7CiB1
c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFjZUxvZ0lkOwogdXNpbmcgV2Vi
Q29yZTo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkZyYW1lSWQ7CiAKK3VzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW5zcGVjdG9yQ2FudmFzQWdlbnQ6
Okluc3BlY3RvckNhbnZhc0FnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdB
Z2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBJbmplY3RlZFNjcmlwdE1hbmFn
ZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJ
SUxpdGVyYWwoIkNhbnZhcyIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9y
QWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiQ2FudmFzIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAg
ICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdl
cihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBtX2VuYWJsZWQoZmFsc2UpCkBAIC03Myw3
ICs3NSw3IEBAIEluc3BlY3RvckNhbnZhc0FnZW50Ojp+SW5zcGVjdG9yQ2FudmFzQWdlbnQoKQog
ewogfQogCi12b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yQ2Fu
dmFzQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNhbnZhc0Zyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRl
bmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yQ2FudmFzQmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCmluZGV4IDQ5ZDAz
ZTguLmViODY0MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXNBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
YW52YXNBZ2VudC5oCkBAIC0zMyw5ICszMywxMCBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
IAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2Vu
dEJhc2UuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTUzLDcgKzU0LDcgQEAgY2xhc3Mg
U2NyaXB0T2JqZWN0OwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5z
cGVjdG9yQ2FudmFzQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5z
cGVjdG9yQ2FudmFzQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckNh
bnZhc0FnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3RvckNh
bnZhc0JhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NP
d25QdHI8SW5zcGVjdG9yQ2FudmFzQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgewpAQCAtNjEsNyAr
NjIsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIH5JbnNwZWN0b3JDYW52YXNBZ2VudCgpOwogCi0g
ICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRC
YWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICB2b2lkIGZyYW1lTmF2aWdhdGVkKEZyYW1lKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IGM2NzIx
NDIuLjhlMjdlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGll
bnQuY3BwCkBAIC00MCw2ICs0MCw4IEBACiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgog
I2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBJbnNwZWN0b3JDbGllbnQ6OmRvRGlzcGF0Y2hN
ZXNzYWdlT25Gcm9udGVuZFBhZ2UoUGFnZSogZnJvbnRlbmRQYWdlLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXgg
NDRlN2VhMTZhLi5kZjM4OWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNsaWVudC5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaWZuZGVmIEluc3BlY3RvckNsaWVudF9oCiAj
ZGVmaW5lIEluc3BlY3RvckNsaWVudF9oCiAKKyNpbmNsdWRlICJJbnNwZWN0b3JGb3J3YXJkaW5n
LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC0zNCw3ICszNSw2IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEluc3BlY3RvckNvbnRyb2xsZXI7Ci1jbGFzcyBJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWw7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIFBhZ2U7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKaW5kZXggZGFhOWM1
Yi4uMzk0M2U5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnNvbGVBZ2VudC5jcHAKQEAgLTUxLDYgKzUxLDggQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK3VzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNv
bnN0IHVuc2lnbmVkIG1heGltdW1Db25zb2xlTWVzc2FnZXMgPSAxMDAwOwpAQCAtNTksNyArNjEs
NyBAQCBzdGF0aWMgY29uc3QgaW50IGV4cGlyZUNvbnNvbGVNZXNzYWdlc1N0ZXAgPSAxMDA7CiBp
bnQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpzX2VuYWJsZWRBZ2VudENvdW50ID0gMDsKIAogSW5z
cGVjdG9yQ29uc29sZUFnZW50OjpJbnNwZWN0b3JDb25zb2xlQWdlbnQoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3Rl
ZFNjcmlwdE1hbmFnZXIpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJD
b25zb2xlIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2Uo
QVNDSUlMaXRlcmFsKCJDb25zb2xlIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBtX3ByZXZp
b3VzTWVzc2FnZSgwKQogICAgICwgbV9leHBpcmVkQ29uc29sZU1lc3NhZ2VDb3VudCgwKQpAQCAt
MTIyLDcgKzEyNCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpyZXNldCgpCiAgICAg
bV9jb3VudHMuY2xlYXIoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5k
Q2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQor
dm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9u
dGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNvbnNvbGVGcm9udGVu
ZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9
IEluc3BlY3RvckNvbnNvbGVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRj
aGVyLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb25zb2xlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25z
b2xlQWdlbnQuaAppbmRleCBjMGYwYWRjLi45OTQ1NWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCkBAIC0yOSw4ICsyOSw5IEBACiAK
ICNpbmNsdWRlICJDb25zb2xlQVBJVHlwZXMuaCIKICNpbmNsdWRlICJDb25zb2xlVHlwZXMuaCIK
LSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgorI2luY2x1
ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNTIs
NyArNTMsNyBAQCBjbGFzcyBTY3JpcHRQcm9maWxlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0
cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yQ29uc29sZUFnZW50IDogcHVibGljIEluc3BlY3RvckJh
c2VBZ2VudCwgcHVibGljIEluc3BlY3RvckNvbnNvbGVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIg
eworY2xhc3MgSW5zcGVjdG9yQ29uc29sZUFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFz
ZSwgcHVibGljIEluc3BlY3RvckNvbnNvbGVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckNvbnNvbGVBZ2VudCk7CiBwdWJsaWM6CiAg
ICAgSW5zcGVjdG9yQ29uc29sZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbmplY3RlZFNj
cmlwdE1hbmFnZXIqKTsKQEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgogICAgIGJvb2wgZW5hYmxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQogICAgIHZvaWQgcmVzZXQoKTsKIAotICAg
IHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZCgpIE9WRVJSSURFOwogCiAgICAgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VT
b3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
SlNDOjpFeGVjU3RhdGUqLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4sIHVuc2lnbmVkIGxv
bmcgcmVxdWVzdElkZW50aWZpZXIgPSAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBlMjNmZTA3Li44MGQzMzI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC00
Miw3ICs0Miw2IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnQuaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcnMuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JDU1NBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNhbnZhc0FnZW50Lmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCkBAIC03Myw2ICs3Miw5IEBACiAjaW5jbHVk
ZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg+CisK
K3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggYTZl
MmQ3ZC4uZjZlNmQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5oCkBAIC0zMywxMyArMzMsMTggQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CiAKLSNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgiCi0jaW5jbHVkZSAiSW5zcGVj
dG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0
cnkuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yT2JqZWN0Owor
Y2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOworY2xhc3MgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NV3JhcHBlcldv
cmxkOwpAQCAtNDgsMTUgKzUzLDEyIEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIElu
amVjdGVkU2NyaXB0TWFuYWdlcjsKIGNsYXNzIEluc3BlY3RvckFnZW50OwogY2xhc3MgSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50OwotY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JET01BZ2VudDsKIGNs
YXNzIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OwotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogY2xhc3MgSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JNZW1vcnlBZ2VudDsKLWNsYXNzIEluc3BlY3Rv
ck9iamVjdDsKIGNsYXNzIEluc3BlY3Rvck92ZXJsYXk7CiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdl
bnQ7CiBjbGFzcyBJbnNwZWN0b3JQcm9maWxlckFnZW50OwpAQCAtOTUsNyArOTcsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBoYXNMb2NhbEZyb250ZW5kKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNSZW1v
dGVGcm9udGVuZCgpIGNvbnN0OwogCi0gICAgdm9pZCBjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKik7CisgICAgdm9pZCBjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKTsKICAgICB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZCgp
OwogICAgIHZvaWQgc2V0UHJvY2Vzc0lkKGxvbmcpOwogCkBAIC0xMTEsNyArMTEzLDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBzZXRJbmRpY2F0aW5nKGJvb2wpOwogCi0gICAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlKCkgY29uc3Q7Cisg
ICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JI
aWdobGlnaHRlZE5vZGUoKSBjb25zdDsKIAogICAgIGJvb2wgaXNVbmRlclRlc3QoKTsKICAgICB2
b2lkIGV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYg
c2NyaXB0KTsKQEAgLTE1NCwxMiArMTU2LDEyIEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudCogbV9wcm9maWxlckFnZW50OwogI2VuZGlmCiAKLSAgICBSZWZQdHI8SW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI+IG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CisgICAg
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1faW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI7CiAgICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5kQ2xpZW50PiBt
X2luc3BlY3RvckZyb250ZW5kQ2xpZW50OwotICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCog
bV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CisgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogICAgIFBhZ2UqIG1fcGFn
ZTsKICAgICBJbnNwZWN0b3JDbGllbnQqIG1faW5zcGVjdG9yQ2xpZW50OwotICAgIEluc3BlY3Rv
ckFnZW50UmVnaXN0cnkgbV9hZ2VudHM7CisgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudFJl
Z2lzdHJ5IG1fYWdlbnRzOwogICAgIGJvb2wgbV9pc1VuZGVyVGVzdDsKIAogI2lmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5jcHAKaW5kZXggMzcwMzQzOC4uNjVhMzE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xMDEsNiArMTAxLDggQEAKICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTIxMCw3ICsyMTIsNyBAQCBTdHJpbmcg
SW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcoY29uc3QgRXhjZXB0aW9uQ29kZSYgZWMp
CiB9CiAKIEluc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2Vu
dCwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3BlY3Rv
ck92ZXJsYXkqIG92ZXJsYXksIEluc3BlY3RvckNsaWVudCogY2xpZW50KQotICAgIDogSW5zcGVj
dG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiRE9NIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisg
ICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJET00iKSwgaW5zdHJ1bWVudGlu
Z0FnZW50cykKICAgICAsIG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkKICAgICAsIG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1fb3ZlcmxheShvdmVy
bGF5KQpAQCAtMjMwLDcgKzIzMiw3IEBAIEluc3BlY3RvckRPTUFnZW50Ojp+SW5zcGVjdG9yRE9N
QWdlbnQoKQogICAgIEFTU0VSVCghbV9zZWFyY2hpbmdGb3JOb2RlKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciog
YmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250
ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVy
KQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3JET01Gcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5k
RGlzcGF0Y2hlciA9IEluc3BlY3RvckRPTUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2Vu
ZERpc3BhdGNoZXIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuaAppbmRleCBhNWQ2MGJjLi40ZDI2M2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtMzMsMTMgKzMzLDEzIEBACiAjaW5jbHVk
ZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUg
IkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5o
IgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIklu
c3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yT3ZlcmxheS5oIgotI2luY2x1
ZGUgIkluc3BlY3RvclZhbHVlcy5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5o
IgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKLQorI2luY2x1
ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC04
OSw3ICs4OSw3IEBAIHN0cnVjdCBFdmVudExpc3RlbmVySW5mbyB7CiAgICAgY29uc3QgRXZlbnRM
aXN0ZW5lclZlY3RvciBldmVudExpc3RlbmVyVmVjdG9yOwogfTsKIAotY2xhc3MgSW5zcGVjdG9y
RE9NQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yRE9N
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckRPTUFnZW50IDogcHVi
bGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3RvckRPTUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yRE9NQWdlbnQp
OwogcHVibGljOgogICAgIHN0cnVjdCBET01MaXN0ZW5lciB7CkBAIC0xMTAsNyArMTEwLDcgQEAg
cHVibGljOgogCiAgICAgfkluc3BlY3RvckRPTUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklE
RTsKIAogICAgIFZlY3RvcjxEb2N1bWVudCo+IGRvY3VtZW50cygpOwpAQCAtMTMwLDI4ICsxMzAs
MjggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRPdXRlckhUTUwoRXJyb3JTdHJpbmcq
LCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIG91dGVySFRNTCk7CiAgICAgdmlydHVhbCB2b2lk
IHNldE5vZGVWYWx1ZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgdmFs
dWUpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUoRXJyb3JTdHJp
bmcqLCBpbnQgbm9kZUlkLCBjb25zdCBXVEY6OlN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRPTTo6RXZlbnRMaXN0ZW5lcj4+JiBsaXN0
ZW5lcnNBcnJheSk7Ci0gICAgdmlydHVhbCB2b2lkIHBlcmZvcm1TZWFyY2goRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIHdoaXRlc3BhY2VUcmltbWVkUXVlcnksIGNvbnN0IFJlZlB0cjxJbnNw
ZWN0b3JBcnJheT4qIG5vZGVJZHMsIFN0cmluZyogc2VhcmNoSWQsIGludCogcmVzdWx0Q291bnQp
OworICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtU2VhcmNoKEVycm9yU3RyaW5nKiwgY29uc3QgU3Ry
aW5nJiB3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JBcnJheT4qIG5vZGVJZHMsIFN0cmluZyogc2VhcmNoSWQsIGludCogcmVzdWx0Q291bnQp
OwogICAgIHZpcnR1YWwgdm9pZCBnZXRTZWFyY2hSZXN1bHRzKEVycm9yU3RyaW5nKiwgY29uc3Qg
U3RyaW5nJiBzZWFyY2hJZCwgaW50IGZyb21JbmRleCwgaW50IHRvSW5kZXgsIFJlZlB0cjxUeXBl
QnVpbGRlcjo6QXJyYXk8aW50Pj4mKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY2FyZFNlYXJjaFJl
c3VsdHMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNlYXJjaElkKTsKICAgICB2aXJ0dWFs
IHZvaWQgcmVzb2x2ZU5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcq
IG9iamVjdEdyb3VwLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4m
IHJlc3VsdCk7CiAgICAgdmlydHVhbCB2b2lkIGdldEF0dHJpYnV0ZXMoRXJyb3JTdHJpbmcqLCBp
bnQgbm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+JiByZXN1bHQpOwot
ICAgIHZpcnR1YWwgdm9pZCBzZXRJbnNwZWN0TW9kZUVuYWJsZWQoRXJyb3JTdHJpbmcqLCBib29s
IGVuYWJsZWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBoaWdobGlnaHRDb25maWcp
OworICAgIHZpcnR1YWwgdm9pZCBzZXRJbnNwZWN0TW9kZUVuYWJsZWQoRXJyb3JTdHJpbmcqLCBi
b29sIGVuYWJsZWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIGhp
Z2hsaWdodENvbmZpZyk7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3ROb2RlKEVycm9yU3RyaW5n
KiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgaW50KiBub2RlSWQpOwogICAgIHZpcnR1YWwgdm9p
ZCBwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHBh
dGgsIGludCogbm9kZUlkKTsKICAgICB2aXJ0dWFsIHZvaWQgcHVzaE5vZGVCeUJhY2tlbmRJZFRv
RnJvbnRlbmQoRXJyb3JTdHJpbmcqLCBCYWNrZW5kTm9kZUlkLCBpbnQqIG5vZGVJZCk7CiAgICAg
dmlydHVhbCB2b2lkIHJlbGVhc2VCYWNrZW5kTm9kZUlkcyhFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYgbm9kZUdyb3VwKTsKICAgICB2aXJ0dWFsIHZvaWQgaGlkZUhpZ2hsaWdodChFcnJvclN0
cmluZyopOwotICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHRSZWN0KEVycm9yU3RyaW5nKiwgaW50
IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xv
ciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKTsKLSAgICB2aXJ0dWFsIHZvaWQgaGln
aGxpZ2h0UXVhZChFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIHF1
YWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5h
dGVzKTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0Tm9kZShFcnJvclN0cmluZyosIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBoaWdobGlnaHRDb25maWcsIGNvbnN0IGludCogbm9k
ZUlkLCBjb25zdCBTdHJpbmcqIG9iamVjdElkKTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0
RnJhbWUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91
dGxpbmVDb2xvcik7CisgICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodFJlY3QoRXJyb3JTdHJpbmcq
LCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5h
dGVzKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0UXVhZChFcnJvclN0cmluZyosIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYgcXVhZCwgY29uc3QgUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3Jk
aW5hdGVzKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0Tm9kZShFcnJvclN0cmluZyosIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIGhpZ2hsaWdodENvbmZpZywg
Y29uc3QgaW50KiBub2RlSWQsIGNvbnN0IFN0cmluZyogb2JqZWN0SWQpOworICAgIHZpcnR1YWwg
dm9pZCBoaWdobGlnaHRGcmFtZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvcik7CiAKICAgICB2
aXJ0dWFsIHZvaWQgbW92ZVRvKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgaW50IHRhcmdldE5v
ZGVJZCwgY29uc3QgaW50KiBhbmNob3JOb2RlSWQsIGludCogbmV3Tm9kZUlkKTsKICAgICB2aXJ0
dWFsIHZvaWQgdW5kbyhFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCByZWRvKEVycm9y
U3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIG1hcmtVbmRvYWJsZVN0YXRlKEVycm9yU3RyaW5n
Kik7CiAgICAgdmlydHVhbCB2b2lkIGZvY3VzKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCk7Ci0g
ICAgdmlydHVhbCB2b2lkIHNldEZpbGVJbnB1dEZpbGVzKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJ
ZCwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgZmlsZXMpOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRGaWxlSW5wdXRGaWxlcyhFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYgZmlsZXMpOwogCiAgICAgdm9pZCBnZXRFdmVu
dExpc3RlbmVycyhOb2RlKiwgVmVjdG9yPEV2ZW50TGlzdGVuZXJJbmZvPiYgbGlzdGVuZXJzQXJy
YXksIGJvb2wgaW5jbHVkZUFuY2VzdG9ycyk7CiAKQEAgLTIxMCw4ICsyMTAsOCBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIEluc3BlY3RvckRPTUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJ
bnNwZWN0b3JQYWdlQWdlbnQqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnNwZWN0b3JPdmVy
bGF5KiwgSW5zcGVjdG9yQ2xpZW50Kik7CiAKLSAgICB2b2lkIHNldFNlYXJjaGluZ0Zvck5vZGUo
RXJyb3JTdHJpbmcqLCBib29sIGVuYWJsZWQsIEluc3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0Q29u
ZmlnKTsKLSAgICBQYXNzT3duUHRyPEhpZ2hsaWdodENvbmZpZz4gaGlnaGxpZ2h0Q29uZmlnRnJv
bUluc3BlY3Rvck9iamVjdChFcnJvclN0cmluZyosIEluc3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0
SW5zcGVjdG9yT2JqZWN0KTsKKyAgICB2b2lkIHNldFNlYXJjaGluZ0Zvck5vZGUoRXJyb3JTdHJp
bmcqLCBib29sIGVuYWJsZWQsIEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBoaWdobGlnaHRD
b25maWcpOworICAgIFBhc3NPd25QdHI8SGlnaGxpZ2h0Q29uZmlnPiBoaWdobGlnaHRDb25maWdG
cm9tSW5zcGVjdG9yT2JqZWN0KEVycm9yU3RyaW5nKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3QqIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7CiAKICAgICAvLyBOb2RlLXJlbGF0ZWQgbWV0
aG9kcy4KICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPE5vZGU+LCBpbnQ+IE5vZGVUb0lkTWFw
OwpAQCAtMjI2LDcgKzIyNiw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGhhc0JyZWFrcG9pbnQo
Tm9kZSosIGludCB0eXBlKTsKICAgICB2b2lkIHVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhOb2Rl
KiByb290LCB1aW50MzJfdCByb290TWFzaywgYm9vbCB2YWx1ZSk7Ci0gICAgdm9pZCBkZXNjcmlw
dGlvbkZvckRPTUV2ZW50KE5vZGUqIHRhcmdldCwgaW50IGJyZWFrcG9pbnRUeXBlLCBib29sIGlu
c2VydGlvbiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRlc2NyaXB0aW9uKTsKKyAgICB2
b2lkIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQoTm9kZSogdGFyZ2V0LCBpbnQgYnJlYWtwb2ludFR5
cGUsIGJvb2wgaW5zZXJ0aW9uLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiBkZXNjcmlwdGlvbik7CiAKICAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpET006Ok5vZGU+
IGJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCopOwogICAg
IFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IGJ1aWxkQXJyYXlGb3JFbGVt
ZW50QXR0cmlidXRlcyhFbGVtZW50Kik7CkBAIC0yMzcsNyArMjM3LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgZGlzY2FyZEJpbmRpbmdzKCk7CiAKLSAgICB2b2lkIGlubmVySGlnaGxpZ2h0UXVh
ZChQYXNzT3duUHRyPEZsb2F0UXVhZD4sIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBj
b2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvciwgY29uc3Qg
Ym9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKTsKKyAgICB2b2lkIGlubmVySGlnaGxpZ2h0UXVhZChQ
YXNzT3duUHRyPEZsb2F0UXVhZD4sIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdD4qIGNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBv
dXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcyk7CiAKICAgICBJbnNw
ZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50OwogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciog
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggODlmZjZlOS4uMjE2MGY2
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01E
ZWJ1Z2dlckFnZW50LmNwcApAQCAtNDAsOCArNDAsOCBAQAogI2luY2x1ZGUgIkluc3BlY3RvckRl
YnVnZ2VyQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUg
Ikluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5o
IgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3Iv
SW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSB7CkBAIC02MSw2ICs2MSw4IEBAIGNvbnN0IGludCBkb21CcmVha3BvaW50RGVyaXZl
ZFR5cGVTaGlmdCA9IDE2OwogCiB9CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc093blB0cjxJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
PiBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50LCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50LCBJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9y
QWdlbnQpCkBAIC02OSw3ICs3MSw3IEBAIFBhc3NPd25QdHI8SW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudD4gSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6Y3JlYXRlKEluc3RydW1lCiB9CiAKIElu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yRE9NQWdlbnQqIGRv
bUFnZW50LCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50LCBJbnNwZWN0b3JB
Z2VudCopCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJET01EZWJ1Z2dl
ciIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJ
TGl0ZXJhbCgiRE9NRGVidWdnZXIiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fZG9t
QWdlbnQoZG9tQWdlbnQpCiAgICAgLCBtX2RlYnVnZ2VyQWdlbnQoZGVidWdnZXJBZ2VudCkKICAg
ICAsIG1fcGF1c2VJbk5leHRFdmVudExpc3RlbmVyKGZhbHNlKQpAQCAtMTExLDcgKzExMyw3IEBA
IHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlzYWJsZSgpCiAgICAgY2xlYXIoKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIp
CiB7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckRPTURlYnVnZ2VyQmFja2Vu
ZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaApp
bmRleCA5NmY4OGE5Li5hM2RhYWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKQEAgLTMzLDI2ICszMywzMCBAQAogCiAj
aWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNp
bmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCisjaW5j
bHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3Ig
eworY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEVsZW1lbnQ7CiBjbGFzcyBJbnNwZWN0b3JBZ2VudDsKIGNsYXNzIEluc3BlY3RvckRPTUFn
ZW50OwogY2xhc3MgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDsKLWNsYXNzIEluc3BlY3Rvck9iamVj
dDsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBOb2RlOwogCiB0eXBlZGVmIFN0
cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCA6IHB1
YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpM
aXN0ZW5lciwgcHVibGljIEluc3BlY3RvckRPTURlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyIHsKK2NsYXNzIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9y
QWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6TGlzdGVuZXIsIHB1Ymxp
YyBJbnNwZWN0b3JET01EZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCk7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudD4gY3JlYXRlKElu
c3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JET01BZ2VudCosIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQqLCBJbnNwZWN0b3JBZ2VudCopOwpAQCAtNzksNyArODMsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCB3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICB2b2lk
IHBhdXNlT25OYXRpdmVFdmVudElmTmVlZGVkKGJvb2wgaXNET01FdmVudCwgY29uc3QgU3RyaW5n
JiBldmVudE5hbWUsIGJvb2wgc3luY2hyb25vdXMpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
LCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc2NhcmRBZ2VudCgpOwogCkBAIC05Myw3ICs5Nyw3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKCk7CiAgICAgdm9pZCBkaXNhYmxlKCk7CiAK
LSAgICB2b2lkIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQoTm9kZSogdGFyZ2V0LCBpbnQgYnJlYWtw
b2ludFR5cGUsIGJvb2wgaW5zZXJ0aW9uLCBJbnNwZWN0b3JPYmplY3QqIGRlc2NyaXB0aW9uKTsK
KyAgICB2b2lkIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQoTm9kZSogdGFyZ2V0LCBpbnQgYnJlYWtw
b2ludFR5cGUsIGJvb2wgaW5zZXJ0aW9uLCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogZGVz
Y3JpcHRpb24pOwogICAgIHZvaWQgdXBkYXRlU3VidHJlZUJyZWFrcG9pbnRzKE5vZGUqLCB1aW50
MzJfdCByb290TWFzaywgYm9vbCBzZXQpOwogICAgIGJvb2wgaGFzQnJlYWtwb2ludChOb2RlKiwg
aW50IHR5cGUpOwogICAgIHZvaWQgZGlzY2FyZEJpbmRpbmdzKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCmluZGV4IDY0
NmRlMjMuLmFlODY3MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCkBAIC00MSw3ICs0MSw2IEBACiAjaW5jbHVkZSAi
RnJhbWUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvclBhZ2VBZ2VudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUg
Ikluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFn
ZUdyb3VwLmgiCkBAIC01MCwxMyArNDksMTUgQEAKICNpbmNsdWRlICJTdG9yYWdlQXJlYS5oIgog
I2luY2x1ZGUgIlN0b3JhZ2VOYW1lc3BhY2UuaCIKICNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIK
LQorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpJbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFn
ZUFnZW50KiBwYWdlQWdlbnQpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFs
KCJET01TdG9yYWdlIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2Vu
dEJhc2UoQVNDSUlMaXRlcmFsKCJET01TdG9yYWdlIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAg
ICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCiAgICAgLCBtX2VuYWJsZWQoZmFsc2UpCiB7CkBA
IC02OSw3ICs3MCw3IEBAIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6fkluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudCgpCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzID0gMDsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciog
YmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3RvckRPTVN0b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5k
Q2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckRPTVN0b3JhZ2VC
YWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaApp
bmRleCAyY2QxN2IzLi4yNGQ0NzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCkBAIC0yOSwyNyArMjksMzAgQEAKICNpZm5k
ZWYgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50X2gKICNkZWZpbmUgSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50X2gKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIklu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50
QmFzZS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNzIEluc3BlY3RvckFycmF5Owor
fQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lOwotY2xhc3MgSW5zcGVjdG9y
QXJyYXk7CiBjbGFzcyBJbnNwZWN0b3JET01TdG9yYWdlRnJvbnRlbmREaXNwYXRjaGVyOwogY2xh
c3MgSW5zcGVjdG9yUGFnZUFnZW50OwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNz
IFBhZ2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFN0b3JhZ2U7Ci1jbGFzcyBTdG9y
YWdlQXJlYTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNw
ZWN0b3JET01TdG9yYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNw
ZWN0b3JET01TdG9yYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ+IGNyZWF0ZShJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBh
Z2VBZ2VudCkKICAgICB7CkBAIC01NywxNSArNjAsMTUgQEAgcHVibGljOgogICAgIH0KICAgICB+
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIElu
c3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAg
IC8vIENhbGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShF
cnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7Ci0g
ICAgdmlydHVhbCB2b2lkIGdldERPTVN0b3JhZ2VJdGVtcyhFcnJvclN0cmluZyosIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBzdG9yYWdlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJy
YXk8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+PiYgaXRlbXMpOwotICAgIHZpcnR1YWwgdm9p
ZCBzZXRET01TdG9yYWdlSXRlbShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+JiBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVl
KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRE9NU3RvcmFnZUl0ZW0oRXJyb3JTdHJpbmcqLCBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgc3RvcmFnZUlkLCBjb25zdCBTdHJpbmcmIGtl
eSk7CisgICAgdmlydHVhbCB2b2lkIGdldERPTVN0b3JhZ2VJdGVtcyhFcnJvclN0cmluZyosIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIHN0b3JhZ2VJZCwgUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4+JiBpdGVtcyk7
CisgICAgdmlydHVhbCB2b2lkIHNldERPTVN0b3JhZ2VJdGVtKEVycm9yU3RyaW5nKiwgY29uc3Qg
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgc3RvcmFnZUlkLCBjb25zdCBTdHJp
bmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZURP
TVN0b3JhZ2VJdGVtKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0PiYgc3RvcmFnZUlkLCBjb25zdCBTdHJpbmcmIGtleSk7CiAKICAgICAvLyBDYWxs
ZWQgZnJvbSB0aGUgaW5qZWN0ZWQgc2NyaXB0LgogICAgIFN0cmluZyBzdG9yYWdlSWQoU3RvcmFn
ZSopOwpAQCAtNzgsNyArODEsNyBAQCBwcml2YXRlOgogCiAgICAgSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKIAotICAg
IFBhc3NSZWZQdHI8U3RvcmFnZUFyZWE+IGZpbmRTdG9yYWdlQXJlYShFcnJvclN0cmluZyosIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiwgRnJhbWUqJik7CisgICAgUGFzc1JlZlB0cjxT
dG9yYWdlQXJlYT4gZmluZFN0b3JhZ2VBcmVhKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYsIEZyYW1lKiYpOwogCiAgICAgSW5zcGVjdG9yUGFn
ZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRE9NU3Rv
cmFnZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKaW5kZXgg
YzU4MDBlYS4uYWU2YWNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcApAQCAtMzcsOCArMzcsNiBAQAogI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRhdGFiYXNlUmVz
b3VyY2UuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgotCi0jaW5jbHVkZSAiSW5z
cGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1
ZGUgIlNRTEVycm9yLmgiCiAjaW5jbHVkZSAiU1FMUmVzdWx0U2V0LmgiCkBAIC01MCwxMSArNDgs
MTMgQEAKICNpbmNsdWRlICJTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaCIKICNpbmNsdWRl
ICJTUUxWYWx1ZS5oIgogI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgotCisjaW5jbHVkZSA8aW5z
cGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogdHlw
ZWRlZiBXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6
RXhlY3V0ZVNRTENhbGxiYWNrIEV4ZWN1dGVTUUxDYWxsYmFjazsKIAordXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgewpAQCAtMjEx
LDcgKzIxMSw3IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6Y2xlYXJSZXNvdXJjZXMo
KQogfQogCiBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50KElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCi0gICAgOiBJbnNwZWN0b3JC
YXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJEYXRhYmFzZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQor
ICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiRGF0YWJhc2UiKSwgaW5zdHJ1
bWVudGluZ0FnZW50cykKICAgICAsIG1fZW5hYmxlZChmYWxzZSkKIHsKICAgICBtX2luc3RydW1l
bnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckRhdGFiYXNlQWdlbnQodGhpcyk7CkBAIC0yMjIsNyAr
MjIyLDcgQEAgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6fkluc3BlY3RvckRhdGFiYXNlQWdlbnQo
KQogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yRGF0YWJhc2VBZ2VudCgw
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9y
RGF0YWJhc2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI+
KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckRh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VB
Z2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQu
aAppbmRleCBhMzJmMDY0Li41NDUzNzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgKQEAgLTMxLDIyICszMSwyNiBAQAogCiAjaWYg
RU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIklu
c3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
cy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9y
V2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKK2NsYXNzIEluc3BlY3RvckFycmF5OworfQorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIERhdGFiYXNlOwotY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBjbGFzcyBJ
bnNwZWN0b3JEYXRhYmFzZVJlc291cmNlOwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIAog
dHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckRhdGFiYXNlQWdl
bnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudCA6
IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JEYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGVySGFuZGxlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5z
cGVjdG9yRGF0YWJhc2VBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMpCiAgICAgewpAQCAtNTQsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAg
IH5JbnNwZWN0b3JEYXRhYmFzZUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIElu
c3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAg
IHZvaWQgY2xlYXJSZXNvdXJjZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcAppbmRleCA5ZDRiNzNmLi4zYmFmODgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VS
ZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFi
YXNlUmVzb3VyY2UuY3BwCkBAIC0zNiw3ICszNiw5IEBACiAKICNpbmNsdWRlICJEYXRhYmFzZS5o
IgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFs
dWVzLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgorCit1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBh
YzJiNzBlLi4xZjc3MmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0zOCwxMSArMzgsMTEgQEAKICNpbmNsdWRlICJJ
bmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgog
I2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVl
cy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJSZWd1bGFy
RXhwcmVzc2lvbi5oIgogI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSAi
U2NyaXB0T2JqZWN0LmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2luZyBXZWJDb3JlOjpUeXBlQnVp
bGRlcjo6QXJyYXk7CkBAIC01MCwxMiArNTAsMTQgQEAgdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxk
ZXI6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM7CiB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRl
cjo6RGVidWdnZXI6OlNjcmlwdElkOwogdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OlJ1bnRp
bWU6OlJlbW90ZU9iamVjdDsKIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjb25zdCBjaGFyKiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpiYWNr
dHJhY2VPYmplY3RHcm91cCA9ICJiYWNrdHJhY2UiOwogCiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQot
ICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiRGVidWdnZXIiKSwgaW5zdHJ1
bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkRl
YnVnZ2VyIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFu
YWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBtX3BhdXNlZFNjcmlwdFN0YXRlKDAp
CiAgICAgLCBtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJRChub0JyZWFrcG9pbnRJRCkK
QEAgLTEzNiw3ICsxMzgsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpc2FibGUo
RXJyb3JTdHJpbmcqKQogICAgIGRpc2FibGUoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5k
RGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVu
ZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikK
IHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNr
ZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckRlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0
ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAppbmRleCA0YmU2MDAwLi44ZTUzNjcyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgK
QEAgLTMxLDEyICszMSwxNCBAQAogI2RlZmluZSBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50X2gKIAog
I2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEUoSU5TUEVDVE9SKQorCiAj
aW5jbHVkZSAiQnJlYWtwb2ludElELmgiCiAjaW5jbHVkZSAiQ29uc29sZUFQSVR5cGVzLmgiCiAj
aW5jbHVkZSAiQ29uc29sZVR5cGVzLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKLSNp
bmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgIlNjcmlwdEJyZWFrcG9pbnQuaCIK
ICNpbmNsdWRlICJTY3JpcHREZWJ1Z0xpc3RlbmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUu
aCIKQEAgLTQ4LDE5ICs1MCwyMiBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOworbmFtZXNwYWNlIEluc3BlY3RvciB7CiBjbGFzcyBJbnNw
ZWN0b3JBcnJheTsKIGNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3BlY3RvclZhbHVl
OworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdl
cjsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBTY3JpcHREZWJ1Z1NlcnZlcjsK
IGNsYXNzIFNjcmlwdFZhbHVlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xh
c3MgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1
YmxpYyBTY3JpcHREZWJ1Z0xpc3RlbmVyLCBwdWJsaWMgSW5zcGVjdG9yRGVidWdnZXJCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCA6IHB1Ymxp
YyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBTY3JpcHREZWJ1Z0xpc3RlbmVyLCBwdWJsaWMg
SW5zcGVjdG9yRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgY2hhciogYmFja3RyYWNlT2JqZWN0R3Jv
dXA7CkBAIC03MSw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2FuU2V0U2Ny
aXB0U291cmNlKEVycm9yU3RyaW5nKiwgYm9vbCopOwogICAgIHZpcnR1YWwgdm9pZCBzdXBwb3J0
c1NlcGFyYXRlU2NyaXB0Q29tcGlsYXRpb25BbmRFeGVjdXRpb24oRXJyb3JTdHJpbmcqLCBib29s
Kik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9u
dGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIGJvb2wgaXNQYXVzZWQoKTsKQEAgLTgz
LDEzICs4OCwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJp
bmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QnJlYWtwb2ludHNBY3RpdmUoRXJyb3JTdHJpbmcq
LCBib29sIGFjdGl2ZSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QnJlYWtwb2ludEJ5VXJsKEVy
cm9yU3RyaW5nKiwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxVUkwsIGNv
bnN0IFN0cmluZyogb3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBvcHRpb25hbENvbHVtbk51
bWJlciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG9wdGlvbnMsIFR5cGVCdWlsZGVy
OjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBl
QnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9ucyk7Ci0gICAgdmlydHVhbCB2
b2lkIHNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiYgbG9jYXRpb24sIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvcHRpb25zLCBU
eXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxUeXBlQnVpbGRlcjo6
RGVidWdnZXI6OkxvY2F0aW9uPiYgYWN0dWFsTG9jYXRpb24pOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJpbmcqLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3Ry
aW5nKiBvcHRpb25hbFVSTCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFVSTFJlZ2V4LCBjb25zdCBp
bnQqIG9wdGlvbmFsQ29sdW1uTnVtYmVyLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3Q+KiBvcHRpb25zLCBUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCos
IFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlv
bj4+JiBsb2NhdGlvbnMpOworICAgIHZpcnR1YWwgdm9pZCBzZXRCcmVha3BvaW50KEVycm9yU3Ry
aW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgbG9jYXRpb24s
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG9wdGlvbnMsIFR5cGVC
dWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1
Z2dlcjo6TG9jYXRpb24+JiBhY3R1YWxMb2NhdGlvbik7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92
ZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZGVudGlm
aWVyKTsKLSAgICB2aXJ0dWFsIHZvaWQgY29udGludWVUb0xvY2F0aW9uKEVycm9yU3RyaW5nKiwg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGxvY2F0aW9uKTsKKyAgICB2aXJ0dWFsIHZv
aWQgY29udGludWVUb0xvY2F0aW9uKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0PiYgbG9jYXRpb24pOwogCiAgICAgdmlydHVhbCB2b2lkIHNlYXJj
aEluQ29udGVudChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIGNvbnN0IFN0
cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9v
bCogb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVy
OjpQYWdlOjpTZWFyY2hNYXRjaD4+Jik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNjcmlwdFNvdXJj
ZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIGNvbnN0IFN0cmluZyYgbmV3
Q29udGVudCwgY29uc3QgYm9vbCogcHJldmlldywgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxU
eXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZT4+JiBuZXdDYWxsRnJhbWVzLCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiYgcmVzdWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2NyaXB0U291
cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgY29uc3QgU3RyaW5nJiBu
ZXdDb250ZW50LCBjb25zdCBib29sKiBwcmV2aWV3LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5
PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4mIG5ld0NhbGxGcmFtZXMsIFJlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIHJlc3VsdCk7CiAgICAgdmlydHVhbCB2b2lk
IGdldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIFN0
cmluZyogc2NyaXB0U291cmNlKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RnVuY3Rpb25EZXRhaWxz
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+Jik7CiAgICAgdmlydHVhbCB2b2lkIHBhdXNl
KEVycm9yU3RyaW5nKik7CkBAIC0xMTIsOSArMTE3LDkgQEAgcHVibGljOgogICAgIHZvaWQgcnVu
U2NyaXB0KEVycm9yU3RyaW5nKiwgY29uc3QgVHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpTY3JpcHRJ
ZCYsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdy
b3VwLCBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBUeXBlQnVp
bGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOwogICAgIHZpcnR1YWwgdm9pZCBzZXRP
dmVybGF5TWVzc2FnZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyopOwogCi0gICAgdm9pZCBz
Y2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNw
YXRjaGVyOjpSZWFzb246OkVudW0gYnJlYWtSZWFzb24sIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBkYXRhKTsKKyAgICB2b2lkIHNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoSW5zcGVj
dG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RW51bSBicmVha1JlYXNvbiwg
UGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gZGF0YSk7CiAgICAgdm9pZCBj
YW5jZWxQYXVzZU9uTmV4dFN0YXRlbWVudCgpOwotICAgIHZvaWQgYnJlYWtQcm9ncmFtKEluc3Bl
Y3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkVudW0gYnJlYWtSZWFzb24s
IFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhKTsKKyAgICB2b2lkIGJyZWFrUHJvZ3Jh
bShJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpFbnVtIGJyZWFr
UmVhc29uLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBkYXRhKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2NyaXB0RXhlY3V0aW9uQmxvY2tlZEJ5Q1NQKGNvbnN0IFN0cmluZyYg
ZGlyZWN0aXZlVGV4dCk7CiAKICAgICBjbGFzcyBMaXN0ZW5lciB7CkBAIC0xNjQsNyArMTY5LDcg
QEAgcHJpdmF0ZToKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxTb3VyY2VJRCwgU2NyaXB0PiBTY3Jp
cHRzTWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxCcmVha3BvaW50SUQ+
PiBCcmVha3BvaW50SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SURzTWFwOwotICAg
IHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+PiBCcmVha3Bv
aW50SWRlbnRpZmllclRvQnJlYWtwb2ludE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5n
LCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+PiBCcmVha3BvaW50SWRlbnRpZmll
clRvQnJlYWtwb2ludE1hcDsKIAogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckRlYnVnZ2VyRnJv
bnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKQEAgLTE3Niw3ICsxODEsNyBA
QCBwcml2YXRlOgogICAgIEJyZWFrcG9pbnRJZGVudGlmaWVyVG9CcmVha3BvaW50TWFwIG1famF2
YVNjcmlwdEJyZWFrcG9pbnRzOwogICAgIEJyZWFrcG9pbnRJRCBtX2NvbnRpbnVlVG9Mb2NhdGlv
bkJyZWFrcG9pbnRJRDsKICAgICBJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6
UmVhc29uOjpFbnVtIG1fYnJlYWtSZWFzb247Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
bV9icmVha0F1eERhdGE7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBt
X2JyZWFrQXV4RGF0YTsKICAgICBib29sIG1fZW5hYmxlZDsKICAgICBib29sIG1famF2YVNjcmlw
dFBhdXNlU2NoZWR1bGVkOwogICAgIExpc3RlbmVyKiBtX2xpc3RlbmVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZvcndhcmRpbmcuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGb3J3YXJkaW5nLmgKaW5kZXggZjYwNjU5NC4uZjY4
ZmNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZvcndh
cmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRm9yd2FyZGlu
Zy5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kQ2hhbm5lbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwg
eyB9OwordHlwZWRlZiBJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCBJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWw7CiB9CiAKICNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JGb3J3
YXJkaW5nX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKaW5kZXggODcxMWE4ZS4uMjViYzYzNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsLmNwcApAQCAtNTksNiArNTksOCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAordXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgY2hhciog
aW5zcGVjdG9yQXR0YWNoZWRIZWlnaHRTZXR0aW5nID0gImluc3BlY3RvckF0dGFjaGVkSGVpZ2h0
IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9z
dC5jcHAKaW5kZXggYmUyNGUxZS4uNjg5ZDE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKQEAgLTU4LDYgKzU4LDggQEAKICNp
bmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNwcAppbmRleCAwODE0YTBm
Li44MmUxN2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SGVhcFByb2ZpbGVyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5jcHAKQEAgLTM5LDYgKzM5LDggQEAKICNpbmNsdWRlICJJ
bnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZXIuaCIKIAordXNp
bmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMg
Y29uc3QgY2hhciogY29uc3QgVXNlckluaXRpYXRlZFByb2ZpbGVOYW1lSGVhcCA9ICJvcmcud2Vi
a2l0LnByb2ZpbGVzLnVzZXItaW5pdGlhdGVkIjsKQEAgLTQ5LDcgKzUxLDcgQEAgUGFzc093blB0
cjxJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudD4gSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6
OmNyZWF0ZShJbnN0cnUKIH0KIAogSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6Okluc3BlY3Rv
ckhlYXBQcm9maWxlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgIDog
SW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiSGVhcFByb2ZpbGVyIiksIGluc3RydW1l
bnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJIZWFw
UHJvZmlsZXIiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1fbmV4dFVzZXJJbml0aWF0ZWRI
ZWFwU25hcHNob3ROdW1iZXIoMSkKICAgICAsIG1fcHJvZmlsZUhlYWRlcnNSZXF1ZXN0ZWQoZmFs
c2UpCkBAIC04MCw3ICs4Miw3IEBAIHZvaWQgSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OnJl
c2V0RnJvbnRlbmRQcm9maWxlcygpCiAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXNl
dFByb2ZpbGVzKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5k
Q2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQor
dm9pZCBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWws
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9ySGVhcFByb2Zp
bGVyRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERp
c3BhdGNoZXIgPSBJbnNwZWN0b3JIZWFwUHJvZmlsZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRl
KGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmgKaW5kZXggY2MzNjg2OC4uMzAzMzg1
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9m
aWxlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQ
cm9maWxlckFnZW50LmgKQEAgLTMzLDggKzMzLDkgQEAKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBU
X0RFQlVHR0VSKSAmJiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFz
ZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJh
c2UuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC00OSw3ICs1MCw3IEBAIGNsYXNzIFNj
cmlwdFByb2ZpbGU7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNw
ZWN0b3JIZWFwUHJvZmlsZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1Ymxp
YyBJbnNwZWN0b3JIZWFwUHJvZmlsZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3Mg
SW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBw
dWJsaWMgSW5zcGVjdG9ySGVhcFByb2ZpbGVyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudCk7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3Bl
Y3RvckhlYXBQcm9maWxlckFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluamVj
dGVkU2NyaXB0TWFuYWdlciopOwpAQCAtNjUsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGdldEhlYXBTbmFwc2hvdChFcnJvclN0cmluZyosIGludCB1aWQpOwogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVQcm9maWxlKEVycm9yU3RyaW5nKiwgaW50IHVpZCk7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
KSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCB0YWtlSGVhcFNuYXBzaG90KEVycm9yU3Ry
aW5nKiwgY29uc3QgYm9vbCogcmVwb3J0UHJvZ3Jlc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXggYTAyNTcxMy4u
ZmVhZGFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
ZGV4ZWREQkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQuY3BwCkBAIC02MSwxMCArNjEsOSBAQAogI2luY2x1ZGUgIkluamVjdGVk
U2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JQYWdlQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRl
ICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLQor
I2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpBcnJheTsKQEAgLTc2LDEyICs3
NSwxNCBAQCB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpLZXlSYW5nZTsK
IHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlOwogdXNp
bmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmVJbmRleDsKIAor
dHlwZWRlZiBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jh
c2UgUmVxdWVzdENhbGxiYWNrOwogdHlwZWRlZiBXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlcXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJhY2sgUmVx
dWVzdERhdGFiYXNlTmFtZXNDYWxsYmFjazsKIHR5cGVkZWYgV2ViQ29yZTo6SW5zcGVjdG9ySW5k
ZXhlZERCQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXF1ZXN0RGF0YWJhc2VDYWxsYmFjayBS
ZXF1ZXN0RGF0YWJhc2VDYWxsYmFjazsKIHR5cGVkZWYgV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhl
ZERCQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXF1ZXN0RGF0YUNhbGxiYWNrIFJlcXVlc3RE
YXRhQ2FsbGJhY2s7Ci10eXBlZGVmIFdlYkNvcmU6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
OjpDYWxsYmFja0Jhc2UgUmVxdWVzdENhbGxiYWNrOwogdHlwZWRlZiBXZWJDb3JlOjpJbnNwZWN0
b3JJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkNsZWFyT2JqZWN0U3RvcmVDYWxs
YmFjayBDbGVhck9iamVjdFN0b3JlQ2FsbGJhY2s7CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIHsKQEAgLTU1Nyw3ICs1NTgs
NyBAQCBwdWJsaWM6CiB9IC8vIG5hbWVzcGFjZQogCiBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cywgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIElu
c3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFT
Q0lJTGl0ZXJhbCgiSW5kZXhlZERCIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNw
ZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJJbmRleGVkREIiKSwgaW5zdHJ1bWVudGluZ0Fn
ZW50cykKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdl
cikKICAgICAsIG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkKIHsKQEAgLTU2Nyw3ICs1NjgsNyBAQCBJ
bnNwZWN0b3JJbmRleGVkREJBZ2VudDo6fkluc3BlY3RvckluZGV4ZWREQkFnZW50KCkKIHsKIH0K
IAotdm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
KiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAg
ICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9ySW5kZXhlZERCQmFja2VuZERpc3BhdGNo
ZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCmluZGV4IGJhMzc1OWEu
LmI5NTUyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bmRleGVkREJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bmRleGVkREJBZ2VudC5oCkBAIC0zMyw3ICszMyw4IEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KSAmJiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VB
Z2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgorI2luY2x1
ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQ0LDcgKzQ1LDcgQEAgY2xh
c3MgSW5zcGVjdG9yUGFnZUFnZW50OwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAot
Y2xhc3MgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50
LCBwdWJsaWMgSW5zcGVjdG9ySW5kZXhlZERCQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2Ns
YXNzIEluc3BlY3RvckluZGV4ZWREQkFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwg
cHVibGljIEluc3BlY3RvckluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ+IGNyZWF0
ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbmplY3RlZFNjcmlw
dE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdl
QWdlbnQpCiAgICAgewpAQCAtNTIsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIH5JbnNw
ZWN0b3JJbmRleGVkREJBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0
b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICAvLyBD
YWxsZWQgZnJvbSB0aGUgZnJvbnQtZW5kLgpAQCAtNjAsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVx
dWVzdERhdGFiYXNlTmFtZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3Jp
Z2luLCBQYXNzUmVmUHRyPFJlcXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJhY2s+KTsKICAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdERhdGFiYXNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWN1
cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIFBhc3NSZWZQdHI8UmVxdWVz
dERhdGFiYXNlQ2FsbGJhY2s+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERhdGEoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFi
YXNlTmFtZSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5k
ZXhOYW1lLCBpbnQgc2tpcENvdW50LCBpbnQgcGFnZVNpemUsIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+KiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YUNhbGxiYWNrPik7Cisg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3REYXRhKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBz
ZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYg
b2JqZWN0U3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgaW50IHNraXBDb3VudCwg
aW50IHBhZ2VTaXplLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBr
ZXlSYW5nZSwgUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YUNhbGxiYWNrPik7CiAgICAgdmlydHVhbCB2
b2lkIGNsZWFyT2JqZWN0U3RvcmUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGluX3NlY3Vy
aXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGluX2RhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBp
bl9vYmplY3RTdG9yZU5hbWUsIFBhc3NSZWZQdHI8Q2xlYXJPYmplY3RTdG9yZUNhbGxiYWNrPik7
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5wdXRBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5w
dXRBZ2VudC5jcHAKaW5kZXggN2VjY2I4ZC4uYzRiODc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcklucHV0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50LmNwcApAQCAtNDksMTAgKzQ5LDEyIEBA
CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogSW5zcGVjdG9ySW5wdXRBZ2VudDo6SW5zcGVjdG9ySW5wdXRBZ2VudChJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBQYWdlKiBwYWdlKQotICAgIDogSW5zcGVj
dG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiSW5wdXQiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykK
KyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIklucHV0IiksIGluc3RydW1l
bnRpbmdBZ2VudHMpCiAgICAgLCBtX3BhZ2UocGFnZSkKIHsKIH0KQEAgLTYxLDcgKzYzLDcgQEAg
SW5zcGVjdG9ySW5wdXRBZ2VudDo6fkluc3BlY3RvcklucHV0QWdlbnQoKQogewogfQogCi12b2lk
IEluc3BlY3RvcklucHV0QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERp
c3BhdGNoZXIpCit2b2lkIEluc3BlY3RvcklucHV0QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2JhY2tlbmREaXNw
YXRjaGVyID0gSW5zcGVjdG9ySW5wdXRCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmRE
aXNwYXRjaGVyLCB0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnB1dEFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5wdXRBZ2VudC5oCmluZGV4IGFjYmEyOTkuLjRlMDYyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcklucHV0QWdlbnQuaApAQCAtMzMsOCArMzMsOCBAQAog
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5o
IgotCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgUGFnZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JT
dHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvcklucHV0QWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFz
ZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9ySW5wdXRCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewor
Y2xhc3MgSW5zcGVjdG9ySW5wdXRBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1
YmxpYyBJbnNwZWN0b3JJbnB1dEJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9ySW5wdXRBZ2VudCk7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NPd25QdHI8SW5zcGVjdG9ySW5wdXRBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIFBhZ2UqIHBhZ2UpCkBAIC01NCw3ICs1NCw3IEBAIHB1
YmxpYzoKIAogICAgIH5JbnNwZWN0b3JJbnB1dEFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklE
RTsKIAogICAgIC8vIE1ldGhvZHMgY2FsbGVkIGZyb20gdGhlIGZyb250ZW5kIGZvciBzaW11bGF0
aW5nIGlucHV0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBjNGM1MWNiLi4xMTdkYjE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApA
QCAtODMsNiArODMsOCBAQAogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHJlcXVlc3RBbmlt
YXRpb25GcmFtZUV2ZW50TmFtZSA9ICJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKaW5k
ZXggZDI3ZjkwOS4uYzIwMDFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCkBAIC00NiwxMCArNDYsMTIgQEAKICNpbmNs
dWRlICJSZW5kZXJMYXllckNvbXBvc2l0b3IuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAK
K3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Okluc3BlY3RvckxheWVyVHJlZUFnZW50KEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQo
QVNDSUlMaXRlcmFsKCJMYXllclRyZWUiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IElu
c3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkxheWVyVHJlZSIpLCBpbnN0cnVtZW50aW5n
QWdlbnRzKQogewogfQogCkBAIC01OCw3ICs2MCw3IEBAIEluc3BlY3RvckxheWVyVHJlZUFnZW50
Ojp+SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKQogICAgIHJlc2V0KCk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNr
ZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91
bmlxdWU8SW5zcGVjdG9yTGF5ZXJUcmVlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5u
ZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JMYXllclRyZWVCYWNrZW5k
RGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKaW5kZXggYWY1
NWE5Mi4uMzBiY2IxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckxheWVyVHJlZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckxheWVyVHJlZUFnZW50LmgKQEAgLTMxLDkgKzMxLDEwIEBACiAKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSAiSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgorI2luY2x1ZGUgIkluc3BlY3Rv
cldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNDYsNyArNDcs
NyBAQCBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0
cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9y
QmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yTGF5ZXJUcmVlQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyIHsKK2NsYXNzIEluc3BlY3RvckxheWVyVHJlZUFnZW50IDogcHVibGljIEluc3BlY3RvckFn
ZW50QmFzZSwgcHVibGljIEluc3BlY3RvckxheWVyVHJlZUJhY2tlbmREaXNwYXRjaGVySGFuZGxl
ciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAg
IHsKQEAgLTU0LDcgKzU1LDcgQEAgcHVibGljOgogICAgIH0KICAgICB+SW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVz
dHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogICAgIHZvaWQgcmVzZXQoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAK
aW5kZXggNzU4YjdiNC4uYjRlZjAzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCkBAIC00MSwxMyArNDEsMTMgQEAKICNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAj
aW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgi
CiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIk5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRl
ICJTY3JpcHRQcm9maWxlci5oIgogI2luY2x1ZGUgIlN0eWxlZEVsZW1lbnQuaCIKKyNpbmNsdWRl
IDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1
ZmZlclZpZXcuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KQEAgLTYxLDEzICs2MSwxNSBAQAogdHlwZWRlZiBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6
TWVtb3J5OjpNZW1vcnlCbG9jayBJbnNwZWN0b3JNZW1vcnlCbG9jazsKIHR5cGVkZWYgV2ViQ29y
ZTo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiBJbnNwZWN0b3JNZW1v
cnlCbG9ja3M7CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogSW5zcGVjdG9yTWVtb3J5QWdlbnQ6On5JbnNwZWN0b3JNZW1vcnlBZ2VudCgpCiB7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50OjpkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
LCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAg
bV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvck1lbW9yeUJhY2tlbmREaXNwYXRjaGVyOjpj
cmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQpAQCAtODUsNyArODcsNyBAQCB2b2lk
IEluc3BlY3Rvck1lbW9yeUFnZW50OjpnZXRET01Db3VudGVycyhFcnJvclN0cmluZyosIGludCog
ZG9jdW1lbnRzLCBpbnQqIG5vZAogfQogCiBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6SW5zcGVjdG9y
TWVtb3J5QWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKLSAg
ICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIk1lbW9yeSIpLCBpbnN0cnVtZW50
aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiTWVtb3J5
IiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKaW5kZXggZTE5MTBkZS4uOGYxNTY1NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKQEAg
LTMzLDggKzMzLDggQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNw
ZWN0b3JCYXNlQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgorI2luY2x1
ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3Rvcldl
YkFnZW50QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogCkBAIC00NSwxMyArNDUsMTMgQEAgY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50
czsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3Rvck1lbW9y
eUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3Rvck1lbW9y
eUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JNZW1vcnlBZ2VudCA6
IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JNZW1vcnlCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3Rvck1l
bW9yeUFnZW50KTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JNZW1v
cnlBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMp
OwogICAgIHZpcnR1YWwgfkluc3BlY3Rvck1lbW9yeUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCos
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVS
UklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRET01Db3VudGVycyhFcnJvclN0cmluZyosIGlu
dCogZG9jdW1lbnRzLCBpbnQqIG5vZGVzLCBpbnQqIGpzRXZlbnRMaXN0ZW5lcnMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCmluZGV4IDI4Njg0MWYu
LmZkYTJhNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JP
dmVybGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zlcmxh
eS5jcHAKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JDbGllbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5UGFn
ZS5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIk1haW5GcmFtZS5o
IgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC01OCw4ICs1NywxMSBA
QAogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNs
dWRlICJTdHlsZWRFbGVtZW50LmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVl
cy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAordXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmgKaW5kZXggZWY5OTIzMC4u
YjUyOTIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92
ZXJsYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5o
CkBAIC0zMiwyMCArMzIsMjIgQEAKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkZsb2F0
UXVhZC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKLQogI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworY2xhc3Mg
SW5zcGVjdG9yVmFsdWU7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7
CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7Ci1jbGFzcyBJ
bnNwZWN0b3JWYWx1ZTsKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEludFJlY3Q7CiBj
bGFzcyBOb2RlOwogY2xhc3MgUGFnZTsKQEAgLTEyNCw3ICsxMjYsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGRpZFNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVkKTsKIAotICAgIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZSgpIGNv
bnN0OworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2Jq
ZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlKCkgY29uc3Q7CiAKICAgICB2b2lkIGZyZWVQYWdlKCk7CiBw
cml2YXRlOgpAQCAtMTM3LDcgKzEzOSw3IEBAIHByaXZhdGU6CiAgICAgUGFnZSogb3ZlcmxheVBh
Z2UoKTsKICAgICB2b2lkIHJlc2V0KGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3Qg
SW50U2l6ZSYgZnJhbWVWaWV3RnVsbFNpemUpOwogICAgIHZvaWQgZXZhbHVhdGVJbk92ZXJsYXko
Y29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFN0cmluZyYgYXJndW1lbnQpOwotICAgIHZvaWQg
ZXZhbHVhdGVJbk92ZXJsYXkoY29uc3QgU3RyaW5nJiBtZXRob2QsIFBhc3NSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+IGFyZ3VtZW50KTsKKyAgICB2b2lkIGV2YWx1YXRlSW5PdmVybGF5KGNvbnN0IFN0
cmluZyYgbWV0aG9kLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IGFyZ3Vt
ZW50KTsKIAogICAgIFBhZ2UqIG1fcGFnZTsKICAgICBJbnNwZWN0b3JDbGllbnQqIG1fY2xpZW50
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApp
bmRleCBjMGJlZDllLi5jM2JhMmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtNjYsNyArNjYsNiBAQAogI2luY2x1ZGUgIkluc3Bl
Y3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yT3ZlcmxheS5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5o
IgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJNYWluRnJhbWUu
aCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgpAQCAtODAsNiArNzksNyBAQAogI2luY2x1ZGUg
IlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNs
dWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0
b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYv
TGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC05MCw2ICs5MCw4IEBA
CiAjaW5jbHVkZSAiTGVnYWN5V2ViQXJjaGl2ZS5oIgogI2VuZGlmCiAKK3VzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGJvb2wgZGVjb2Rl
QnVmZmVyKGNvbnN0IGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0
ZXh0RW5jb2RpbmdOYW1lLCBTdHJpbmcqIHJlc3VsdCkKQEAgLTM1MSw3ICszNTMsNyBAQCBUeXBl
QnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpFbnVtIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2Fj
aGVkUmVzb3VyY2VUeXBlSnNvbgogfQogCiBJbnNwZWN0b3JQYWdlQWdlbnQ6Okluc3BlY3RvclBh
Z2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBQYWdlKiBw
YWdlLCBJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQsIEluamVjdGVkU2NyaXB0TWFuYWdl
ciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCwgSW5zcGVj
dG9yT3ZlcmxheSogb3ZlcmxheSkKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVy
YWwoIlBhZ2UiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFz
ZShBU0NJSUxpdGVyYWwoIlBhZ2UiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fcGFn
ZShwYWdlKQogICAgICwgbV9pbnNwZWN0b3JBZ2VudChpbnNwZWN0b3JBZ2VudCkKICAgICAsIG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKQEAgLTM3MSw3ICsz
NzMsNyBAQCBJbnNwZWN0b3JQYWdlQWdlbnQ6Okluc3BlY3RvclBhZ2VBZ2VudChJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLAogewogfQogCi12b2lkIEluc3BlY3RvclBh
Z2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2Vu
ZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENo
YW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsK
ICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yUGFn
ZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNw
YXRjaGVyID0gSW5zcGVjdG9yUGFnZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERp
c3BhdGNoZXIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBh
Z2VBZ2VudC5oCmluZGV4IDFiMjZiNmUuLjM4ZDdkMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTM1LDggKzM1LDkgQEAKIAogI2luY2x1
ZGUgIkRldmljZU9yaWVudGF0aW9uRGF0YS5oIgogI2luY2x1ZGUgIkdlb2xvY2F0aW9uUG9zaXRp
b24uaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgor
I2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgIkludFNpemUuaCIK
ICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTQ0
LDYgKzQ1LDExIEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNzIEluc3BlY3RvckFy
cmF5OworY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIENhY2hlZFJlc291cmNlOwpAQCAtNTQsOSArNjAsNyBAQCBjbGFzcyBGcm9udGVuZDsK
IGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKIGNs
YXNzIEluc3BlY3RvckFnZW50OwotY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBjbGFzcyBJbnNwZWN0
b3JDbGllbnQ7Ci1jbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnNwZWN0b3JPdmVybGF5
OwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFVSTDsKQEAgLTY3LDcgKzcxLDcg
QEAgY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJp
bmc7CiAKLWNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdl
bnQsIHB1YmxpYyBJbnNwZWN0b3JQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNz
IEluc3BlY3RvclBhZ2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJ
bnNwZWN0b3JQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShJbnNwZWN0b3JQYWdlQWdlbnQpOwogcHVibGljOgogICAgIGVudW0gUmVzb3VyY2VU
eXBlIHsKQEAgLTE2Myw3ICsxNjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY3JpcHRzRW5hYmxl
ZChib29sIGlzRW5hYmxlZCk7CiAKICAgICAvLyBJbnNwZWN0b3IgQ29udHJvbGxlciBBUEkKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJh
Y2tlbmQoKSBPVkVSUklERTsKIAogICAgIC8vIENyb3NzLWFnZW50cyBBUEkKQEAgLTIxOCw3ICsy
MjIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pZ25vcmVTY3JpcHRzRW5hYmxlZE5vdGlmaWNh
dGlvbjsKICAgICBib29sIG1fc2hvd1BhaW50UmVjdHM7CiAgICAgU3RyaW5nIG1fZW11bGF0ZWRN
ZWRpYTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtX3NjcmlwdHNUb0V2YWx1YXRlT25M
b2FkOworICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gbV9zY3JpcHRzVG9F
dmFsdWF0ZU9uTG9hZDsKICAgICBSZWZQdHI8R2VvbG9jYXRpb25Qb3NpdGlvbj4gbV9nZW9sb2Nh
dGlvblBvc2l0aW9uOwogICAgIFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBtX3BsYXRmb3Jt
R2VvbG9jYXRpb25Qb3NpdGlvbjsKICAgICBSZWZQdHI8RGV2aWNlT3JpZW50YXRpb25EYXRhPiBt
X2RldmljZU9yaWVudGF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IGJhZjUxZjQuLmJkYjQwY2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAK
QEAgLTQwLDcgKzQwLDYgQEAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JDb25zb2xlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVu
ZC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRp
bmdBZ2VudHMuaCIKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC01MCwx
MCArNDksMTMgQEAKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlLmgiCiAjaW5jbHVkZSAiU2NyaXB0
UHJvZmlsZXIuaCIKICNpbmNsdWRlICJXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5oIgorI2luY2x1
ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRp
bWUuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
Q29uY2F0ZW5hdGUuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgVXNlckluaXRpYXRlZFByb2Zp
bGVOYW1lID0gIm9yZy53ZWJraXQucHJvZmlsZXMudXNlci1pbml0aWF0ZWQiOwpAQCAtMTE5LDcg
KzEyMSw3IEBAIFBhc3NPd25QdHI8SW5zcGVjdG9yUHJvZmlsZXJBZ2VudD4gSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudDo6Y3JlYXRlKEluc3RydW1lbnRpbmdBCiB9CiAKIEluc3BlY3RvclByb2ZpbGVy
QWdlbnQ6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cywgSW5zcGVjdG9yQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQsIEluamVj
dGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgIDogSW5zcGVjdG9y
QmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiUHJvZmlsZXIiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykK
KyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIlByb2ZpbGVyIiksIGluc3Ry
dW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX2NvbnNvbGVBZ2VudChjb25zb2xlQWdlbnQpCiAgICAg
LCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBt
X2VuYWJsZWQoZmFsc2UpCkBAIC0zMjcsNyArMzI5LDcgQEAgdm9pZCBJbnNwZWN0b3JQcm9maWxl
ckFnZW50OjpyZXNldEZyb250ZW5kUHJvZmlsZXMoKQogICAgICAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlci0+cmVzZXRQcm9maWxlcygpOwogfQogCi12b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6
OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZy
b250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRj
aGVyKQordm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5l
bCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAg
IG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JQcm9maWxl
ckZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNw
YXRjaGVyID0gSW5zcGVjdG9yUHJvZmlsZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tl
bmREaXNwYXRjaGVyLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUHJvZmlsZXJBZ2VudC5oCmluZGV4IDUzNzA5YzUuLjlhZjcwY2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaApAQCAtMzIs
MjAgKzMyLDI0IEBACiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxF
KElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250
ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9y
QXJyYXk7CitjbGFzcyBJbnNwZWN0b3JPYmplY3Q7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBj
bGFzcyBJbnNwZWN0b3JDb25zb2xlQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFz
cyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgUGFnZTsKIGNsYXNzIFNjcmlwdEhlYXBTbmFw
c2hvdDsKQEAgLTU0LDcgKzU4LDcgQEAgY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAKIHR5cGVk
ZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JQcm9maWxlckFnZW50IDog
cHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3RvclByb2ZpbGVyQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvclByb2ZpbGVyQWdlbnQgOiBwdWJs
aWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yUHJvZmlsZXJCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvclByb2Zp
bGVyQWdlbnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc093blB0cjxJbnNwZWN0b3JQcm9maWxlckFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0Fn
ZW50cyosIEluc3BlY3RvckNvbnNvbGVBZ2VudCosIFBhZ2UqLCBJbmplY3RlZFNjcmlwdE1hbmFn
ZXIqKTsKQEAgLTg4LDcgKzkyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRIZWFw
U25hcHNob3QoRXJyb3JTdHJpbmcqLCBpbnQgdWlkKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
UHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlwZSwgaW50IHVpZCk7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJh
Y2tlbmQoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCB0YWtlSGVhcFNuYXBzaG90KEVy
cm9yU3RyaW5nKiwgY29uc3QgYm9vbCogcmVwb3J0UHJvZ3Jlc3MpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IDM4ZGNk
YWEuLjVmYWRiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTQ4LDcgKzQ4LDYgQEAKICNpbmNsdWRlICJJbnNwZWN0
b3JDbGllbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIklu
c3BlY3RvclBhZ2VBZ2VudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1
ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJN
ZW1vcnlDYWNoZS5oIgpAQCAtNjcsMTYgKzY2LDE4IEBACiAjaW5jbHVkZSAiU3VicmVzb3VyY2VM
b2FkZXIuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRGcmFtZS5oIgogI2luY2x1ZGUgIlhNTEh0dHBS
ZXF1ZXN0LmgiCi0KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5j
bHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50
OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBm
cm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0
Y2hlcikKK3ZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5u
ZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAg
ICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yTmV0d29y
a0Zyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNw
YXRjaGVyID0gSW5zcGVjdG9yTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2Vu
ZERpc3BhdGNoZXIsIHRoaXMpOwpAQCAtNjUwLDcgKzY1MSw3IEBAIHZvaWQgSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6bWFpbkZyYW1lTmF2aWdhdGVkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB9
CiAKIEluc3BlY3RvclJlc291cmNlQWdlbnQ6Okluc3BlY3RvclJlc291cmNlQWdlbnQoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBw
YWdlQWdlbnQsIEluc3BlY3RvckNsaWVudCogY2xpZW50KQotICAgIDogSW5zcGVjdG9yQmFzZUFn
ZW50KEFTQ0lJTGl0ZXJhbCgiTmV0d29yayIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDog
SW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiTmV0d29yayIpLCBpbnN0cnVtZW50aW5n
QWdlbnRzKQogICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQogICAgICwgbV9jbGllbnQoY2xp
ZW50KQogICAgICwgbV9yZXNvdXJjZXNEYXRhKGFkb3B0UHRyKG5ldyBOZXR3b3JrUmVzb3VyY2Vz
RGF0YSgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudC5oCmluZGV4IDhjMjdmOTQuLjI0ODMxYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaApAQCAtMzEsOSArMzEsOSBAQAog
I2lmbmRlZiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50X2gKICNkZWZpbmUgSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudF9oCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVu
ZC5oIgotCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KQEAgLTQxLDggKzQxLDkgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAK
LW5hbWVzcGFjZSBXVEYgewotY2xhc3MgU3RyaW5nOworbmFtZXNwYWNlIEluc3BlY3RvciB7Citj
bGFzcyBJbnNwZWN0b3JBcnJheTsKK2NsYXNzIEluc3BlY3Rvck9iamVjdDsKIH0KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNTMsOSArNTQsNyBAQCBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNs
YXNzIEZvcm1EYXRhOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBIVFRQSGVhZGVyTWFwOwotY2xhc3Mg
SW5zcGVjdG9yQXJyYXk7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7Ci1jbGFzcyBJbnNwZWN0b3JP
YmplY3Q7CiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdl
bnRzOwogY2xhc3MgVVJMOwpAQCAtNzYsNyArNzUsNyBAQCBzdHJ1Y3QgV2ViU29ja2V0RnJhbWU7
CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3Rvck5ldHdv
cmtCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JOZXR3b3JrQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIEluc3BlY3RvckNs
aWVudCogY2xpZW50KQogICAgIHsKQEAgLTg1LDcgKzg0LDcgQEAgcHVibGljOgogCiAgICAgfklu
c3BlY3RvclJlc291cmNlQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVj
dG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgdm9p
ZCB3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRl
ciosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVz
cG9uc2UpOwpAQCAtMTM1LDcgKzEzNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5h
YmxlKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcq
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VXNlckFnZW50T3ZlcnJpZGUoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIHVzZXJBZ2VudCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldEV4dHJhSFRUUEhl
YWRlcnMoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYpOworICAg
IHZpcnR1YWwgdm9pZCBzZXRFeHRyYUhUVFBIZWFkZXJzKEVycm9yU3RyaW5nKiwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRS
ZXNwb25zZUJvZHkoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgU3RyaW5n
KiBjb250ZW50LCBib29sKiBiYXNlNjRFbmNvZGVkKTsKIAogICAgIHZpcnR1YWwgdm9pZCByZXBs
YXlYSFIoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CkBAIC0xNjAsNyAr
MTU5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZW5hYmxlZDsKICAgICBib29sIG1fY2FjaGVE
aXNhYmxlZDsKICAgICBib29sIG1fbG9hZGluZ1hIUlN5bmNocm9ub3VzbHk7Ci0gICAgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gbV9leHRyYVJlcXVlc3RIZWFkZXJzOworICAgIFJlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gbV9leHRyYVJlcXVlc3RIZWFkZXJzOwogCiAgICAgdHlw
ZWRlZiBIYXNoTWFwPFRocmVhZGFibGVMb2FkZXJDbGllbnQqLCBSZWZQdHI8WEhSUmVwbGF5RGF0
YT4+IFBlbmRpbmdYSFJSZXBsYXlEYXRhTWFwOwogICAgIFBlbmRpbmdYSFJSZXBsYXlEYXRhTWFw
IG1fcGVuZGluZ1hIUlJlcGxheURhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCmluZGV4IDhiMzQ2OTAuLjZlYTJmOWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3Bw
CkBAIC0zNiw4ICszNiw4IEBACiAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1
ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5o
IgogI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNw
ZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDxwYXJzZXIvUGFyc2VyRXJyb3IuaD4KICNpbmNsdWRl
IDxwYXJzZXIvU291cmNlQ29kZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvQ29tcGxldGlvbi5oPgpA
QCAtNTAsNiArNTAsOCBAQAogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCit1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBib29sIGFzQm9v
bChjb25zdCBib29sKiBjb25zdCBiKQpAQCAtNTgsNyArNjAsNyBAQCBzdGF0aWMgYm9vbCBhc0Jv
b2woY29uc3QgYm9vbCogY29uc3QgYikKIH0KIAogSW5zcGVjdG9yUnVudGltZUFnZW50OjpJbnNw
ZWN0b3JSdW50aW1lQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
cywgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgOiBJ
bnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJSdW50aW1lIiksIGluc3RydW1lbnRpbmdB
Z2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJSdW50aW1lIiks
IGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX2VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAjaWYgRU5BQkxFKEpB
VkFTQ1JJUFRfREVCVUdHRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUnVudGltZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUnVudGltZUFnZW50LmgKaW5kZXggOWI1N2UyYi4uMmU5MTU5YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaApAQCAtMzMsMjUgKzMz
LDI5IEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFz
ZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCisjaW5j
bHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEluamVjdGVkU2NyaXB0OwotY2xhc3MgSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyOworbmFtZXNwYWNlIEluc3BlY3RvciB7CiBjbGFzcyBJbnNwZWN0
b3JBcnJheTsKIGNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3BlY3RvclZhbHVlOwor
fQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEluamVjdGVkU2NyaXB0OworY2xhc3Mg
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNz
IFNjcmlwdERlYnVnU2VydmVyOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAKIHR5cGVkZWYg
U3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JSdW50aW1lQWdlbnQgOiBwdWJs
aWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yUnVudGltZUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JSdW50aW1lQWdlbnQgOiBwdWJsaWMgSW5z
cGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yUnVudGltZUJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yUnVudGltZUFnZW50
KTsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JSdW50aW1lQWdlbnQoKTsKQEAgLTc0
LDcgKzc4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjYWxsRnVuY3Rpb25PbihFcnJv
clN0cmluZyosCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIG9iamVjdElk
LAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5Piogb3B0aW9u
YWxBcmd1bWVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yOjpJbnNwZWN0b3JBcnJheT4qIG9wdGlvbmFsQXJndW1lbnRzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgYm9vbCogZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xl
LAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCA2
NzY2MjJiLi43MTYwMTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclN0eWxlU2hlZXQuY3BwCkBAIC00OSw3ICs0OSw2IEBACiAjaW5jbHVkZSAiSFRNTFN0eWxl
RWxlbWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNTU0FnZW50LmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yUGFnZUFnZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVk
ZSAiTm9kZS5oIgogI2luY2x1ZGUgIlJlZ3VsYXJFeHByZXNzaW9uLmgiCiAjaW5jbHVkZSAiU1ZH
TmFtZXMuaCIKQEAgLTYwLDcgKzU5LDcgQEAKICNpbmNsdWRlICJTdHlsZVNoZWV0Q29udGVudHMu
aCIKICNpbmNsdWRlICJTdHlsZVNoZWV0TGlzdC5oIgogI2luY2x1ZGUgIldlYktpdENTU0tleWZy
YW1lc1J1bGUuaCIKLQorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0xNDQsNiArMTQzLDggQEAgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpDU1NSdWxlU291cmNlRGF0YT4gUGFyc2VkU3R5bGVTaGVldDo6cnVsZVNvdXJjZURhdGFBdCh1
bnNpZ24KICAgICByZXR1cm4gbV9zb3VyY2VEYXRhLT5hdChpbmRleCk7CiB9CiAKK3VzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBNZWRpYUxp
c3RTb3VyY2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmgKaW5kZXggZjUwMzliNC4uM2I3OWI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCkBAIC0zMCw4ICszMCw3IEBACiAjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvclN0eWxlVGV4dEVkaXRvci5oIgog
I2luY2x1ZGUgIkluc3BlY3RvclR5cGVCdWlsZGVyLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFs
dWVzLmgiCi0KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CkBAIC02NCwxMiArNjMsMTIgQEAgcHVibGljOgogICAgIHsKICAgICB9
CiAKLSAgICBleHBsaWNpdCBJbnNwZWN0b3JDU1NJZChSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiB2
YWx1ZSkKKyAgICBleHBsaWNpdCBJbnNwZWN0b3JDU1NJZChSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+IHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKCF2YWx1ZS0+Z2V0U3RyaW5n
KCJzdHlsZVNoZWV0SWQiLCAmbV9zdHlsZVNoZWV0SWQpKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAKLSAgICAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBvcmRpbmFsVmFsdWUgPSB2
YWx1ZS0+Z2V0KCJvcmRpbmFsIik7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
clZhbHVlPiBvcmRpbmFsVmFsdWUgPSB2YWx1ZS0+Z2V0KCJvcmRpbmFsIik7CiAgICAgICAgIGlm
ICghb3JkaW5hbFZhbHVlIHx8ICFvcmRpbmFsVmFsdWUtPmFzTnVtYmVyKCZtX29yZGluYWwpKQog
ICAgICAgICAgICAgbV9zdHlsZVNoZWV0SWQgPSAiIjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVUZXh0RWRpdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuY3BwCmluZGV4IGI2
ZWM0ZGIuLmYzMDk5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JTdHlsZVRleHRFZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuY3BwCkBAIC0zMiw2ICszMiw4IEBACiAjaW5jbHVkZSAi
SFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkluc3BlY3RvclN0eWxlU2hlZXQuaCIKIAor
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbnNw
ZWN0b3JTdHlsZVRleHRFZGl0b3I6Okluc3BlY3RvclN0eWxlVGV4dEVkaXRvcihWZWN0b3I8SW5z
cGVjdG9yU3R5bGVQcm9wZXJ0eT4qIGFsbFByb3BlcnRpZXMsIFZlY3RvcjxJbnNwZWN0b3JTdHls
ZVByb3BlcnR5PiogZGlzYWJsZWRQcm9wZXJ0aWVzLCBjb25zdCBTdHJpbmcmIHN0eWxlVGV4dCwg
Y29uc3QgTmV3TGluZUFuZFdoaXRlc3BhY2UmIGZvcm1hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAppbmRleCA0Yzg4YjFiLi40
YjFjOGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRp
bWVsaW5lQWdlbnQuY3BwCkBAIC01NCw2ICs1NCw4IEBACiAjaW5jbHVkZSAiVGltZWxpbmVSZWNv
cmRGYWN0b3J5LmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKK3VzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBUaW1lbGluZVRp
bWVDb252ZXJ0ZXI6OnJlc2V0KCkKQEAgLTY1LDcgKzY3LDcgQEAgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6fkluc3BlY3RvclRpbWVsaW5lQWdlbnQoKQogewogfQogCi12b2lkIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJh
Y2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZy
b250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRj
aGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3JUaW1lbGluZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBt
X2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yVGltZWxpbmVCYWNrZW5kRGlzcGF0Y2hlcjo6
Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKQEAgLTU4MCw3ICs1ODIsNyBAQCB2b2lk
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZENvbXBsZXRlQ3VycmVudFJlY29yZChUaW1lbGlu
ZVJlY29yZFR5cGUgdHlwZSkKIH0KIAogSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6SW5zcGVjdG9y
VGltZWxpbmVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJ
bnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5zcGVjdG9yTWVtb3J5QWdlbnQqIG1lbW9y
eUFnZW50LCBJbnNwZWN0b3JUeXBlIHR5cGUsIEluc3BlY3RvckNsaWVudCogY2xpZW50KQotICAg
IDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiVGltZWxpbmUiKSwgaW5zdHJ1bWVu
dGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIlRpbWVs
aW5lIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQp
CiAgICAgLCBtX21lbW9yeUFnZW50KG1lbW9yeUFnZW50KQogICAgICwgbV9pZCgxKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKaW5kZXgg
NDVkYzJmMy4uN2JmYTU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclRpbWVsaW5lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5oCkBAIC0zMywxMCArMzMsMTEgQEAKIAogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVu
ZC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgorI2luY2x1ZGUgIkluc3BlY3Rvcldl
YkFnZW50QmFzZS5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKKyNpbmNsdWRlIDxpbnNwZWN0
b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTEyMSw3ICsx
MjIsNyBAQCBwcml2YXRlOgogfTsKIAogY2xhc3MgSW5zcGVjdG9yVGltZWxpbmVBZ2VudAotICAg
IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudAorICAgIDogcHVibGljIEluc3BlY3RvckFnZW50
QmFzZQogICAgICwgcHVibGljIEluc3BlY3RvclRpbWVsaW5lQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JUaW1lbGluZUFnZW50KTsK
IHB1YmxpYzoKQEAgLTEzNCw3ICsxMzUsNyBAQCBwdWJsaWM6CiAKICAgICB+SW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQg
c3RhcnQoRXJyb3JTdHJpbmcqLCBjb25zdCBpbnQqIG1heENhbGxTdGFja0RlcHRoLCBjb25zdCBi
b29sKiBpbmNsdWRlRG9tQ291bnRlcnMpOwpAQCAtMjIwLDMzICsyMjEsMzMgQEAgcHJpdmF0ZToK
ICAgICBmcmllbmQgY2xhc3MgVGltZWxpbmVSZWNvcmRTdGFjazsKIAogICAgIHN0cnVjdCBUaW1l
bGluZVJlY29yZEVudHJ5IHsKLSAgICAgICAgVGltZWxpbmVSZWNvcmRFbnRyeShQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gcmVjb3JkLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0
YSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gY2hpbGRyZW4sIFRpbWVsaW5lUmVjb3JkVHlw
ZSB0eXBlLCBzaXplX3QgdXNlZEhlYXBTaXplQXRTdGFydCkKKyAgICAgICAgVGltZWxpbmVSZWNv
cmRFbnRyeShQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQsIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGRhdGEsIFBhc3NSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JBcnJheT4gY2hpbGRyZW4sIFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBl
LCBzaXplX3QgdXNlZEhlYXBTaXplQXRTdGFydCkKICAgICAgICAgICAgIDogcmVjb3JkKHJlY29y
ZCksIGRhdGEoZGF0YSksIGNoaWxkcmVuKGNoaWxkcmVuKSwgdHlwZSh0eXBlKSwgdXNlZEhlYXBT
aXplQXRTdGFydCh1c2VkSGVhcFNpemVBdFN0YXJ0KQogICAgICAgICB7CiAgICAgICAgIH0KLSAg
ICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVjb3JkOwotICAgICAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBkYXRhOwotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGNoaWxk
cmVuOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHJlY29yZDsK
KyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBkYXRhOworICAgICAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4gY2hpbGRyZW47CiAgICAgICAgIFRp
bWVsaW5lUmVjb3JkVHlwZSB0eXBlOwogICAgICAgICBzaXplX3QgdXNlZEhlYXBTaXplQXRTdGFy
dDsKICAgICB9OwogCiAgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudChJbnN0cnVtZW50aW5nQWdl
bnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yTWVtb3J5QWdlbnQqLCBJbnNwZWN0
b3JUeXBlLCBJbnNwZWN0b3JDbGllbnQqKTsKIAotICAgIHZvaWQgc2VuZEV2ZW50KFBhc3NSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0Pik7Ci0gICAgdm9pZCBhcHBlbmRSZWNvcmQoUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGRhdGEsIFRpbWVsaW5lUmVjb3JkVHlwZSwgYm9vbCBjYXB0dXJlQ2Fs
bFN0YWNrLCBGcmFtZSopOwotICAgIHZvaWQgcHVzaEN1cnJlbnRSZWNvcmQoUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+LCBUaW1lbGluZVJlY29yZFR5cGUsIGJvb2wgY2FwdHVyZUNhbGxTdGFj
aywgRnJhbWUqKTsKKyAgICB2b2lkIHNlbmRFdmVudChQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0Pik7CisgICAgdm9pZCBhcHBlbmRSZWNvcmQoUGFzc1JlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdD4gZGF0YSwgVGltZWxpbmVSZWNvcmRUeXBlLCBib29sIGNhcHR1
cmVDYWxsU3RhY2ssIEZyYW1lKik7CisgICAgdm9pZCBwdXNoQ3VycmVudFJlY29yZChQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiwgVGltZWxpbmVSZWNvcmRUeXBlLCBib29s
IGNhcHR1cmVDYWxsU3RhY2ssIEZyYW1lKik7CiAKICAgICB2b2lkIHNldERPTUNvdW50ZXJzKFR5
cGVCdWlsZGVyOjpUaW1lbGluZTo6VGltZWxpbmVFdmVudCogcmVjb3JkKTsKLSAgICB2b2lkIHNl
dEZyYW1lSWRlbnRpZmllcihJbnNwZWN0b3JPYmplY3QqIHJlY29yZCwgRnJhbWUqKTsKKyAgICB2
b2lkIHNldEZyYW1lSWRlbnRpZmllcihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogcmVjb3Jk
LCBGcmFtZSopOwogCiAgICAgdm9pZCBkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoVGltZWxpbmVS
ZWNvcmRUeXBlKTsKIAotICAgIHZvaWQgc2V0SGVhcFNpemVTdGF0aXN0aWNzKEluc3BlY3Rvck9i
amVjdCogcmVjb3JkKTsKKyAgICB2b2lkIHNldEhlYXBTaXplU3RhdGlzdGljcyhJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdCogcmVjb3JkKTsKICAgICB2b2lkIGNvbW1pdEZyYW1lUmVjb3JkKCk7
CiAKLSAgICB2b2lkIGFkZFJlY29yZFRvVGltZWxpbmUoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+LCBUaW1lbGluZVJlY29yZFR5cGUpOwotICAgIHZvaWQgaW5uZXJBZGRSZWNvcmRUb1RpbWVs
aW5lKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiwgVGltZWxpbmVSZWNvcmRUeXBlKTsKKyAg
ICB2b2lkIGFkZFJlY29yZFRvVGltZWxpbmUoUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4sIFRpbWVsaW5lUmVjb3JkVHlwZSk7CisgICAgdm9pZCBpbm5lckFkZFJlY29yZFRv
VGltZWxpbmUoUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4sIFRpbWVsaW5l
UmVjb3JkVHlwZSk7CiAgICAgdm9pZCBjbGVhclJlY29yZFN0YWNrKCk7CiAKICAgICB2b2lkIGxv
Y2FsVG9QYWdlUXVhZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBMYXlvdXRSZWN0JiwgRmxv
YXRRdWFkKik7CkBAIC0yNjYsNyArMjY3LDcgQEAgcHJpdmF0ZToKIAogICAgIGludCBtX2lkOwog
ICAgIGludCBtX21heENhbGxTdGFja0RlcHRoOwotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IG1fcGVuZGluZ0ZyYW1lUmVjb3JkOworICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdD4gbV9wZW5kaW5nRnJhbWVSZWNvcmQ7CiAgICAgSW5zcGVjdG9yVHlwZSBtX2luc3BlY3Rv
clR5cGU7CiAgICAgSW5zcGVjdG9yQ2xpZW50KiBtX2NsaWVudDsKICAgICBXZWFrUHRyRmFjdG9y
eTxJbnNwZWN0b3JUaW1lbGluZUFnZW50PiBtX3dlYWtGYWN0b3J5OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXZWJBZ2VudEJhc2UuaApzaW1pbGFyaXR5IGluZGV4
IDY5JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRS
ZWdpc3RyeS5oCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV2Vi
QWdlbnRCYXNlLmgKaW5kZXggNGZkMDM1My4uZGZjYzRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKQEAgLTI0LDI5ICsyNCwyOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jaWZuZGVmIEluc3BlY3RvckFnZW50UmVnaXN0cnlfaAotI2RlZmluZSBJbnNwZWN0b3JBZ2Vu
dFJlZ2lzdHJ5X2gKKyNpZm5kZWYgSW5zcGVjdG9yV2ViQWdlbnRCYXNlX2gKKyNkZWZpbmUgSW5z
cGVjdG9yV2ViQWdlbnRCYXNlX2gKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgot
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2lu
Y2x1ZGUgIkluc3BlY3RvckZvcndhcmRpbmcuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVj
dG9yQWdlbnRCYXNlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CitjbGFz
cyBJbnN0cnVtZW50aW5nQWdlbnRzOwogCi1jbGFzcyBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5IHsK
LXB1YmxpYzoKLSAgICB2b2lkIGFwcGVuZChQYXNzT3duUHRyPEluc3BlY3RvckJhc2VBZ2VudD4p
OworY2xhc3MgSW5zcGVjdG9yQWdlbnRCYXNlIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9y
QWdlbnRCYXNlIHsKK3Byb3RlY3RlZDoKKyAgICBJbnNwZWN0b3JBZ2VudEJhc2UoY29uc3QgU3Ry
aW5nJiBuYW1lLCBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAg
ICAgICA6IEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnRCYXNlKG5hbWUpCisgICAgICAgICwgbV9p
bnN0cnVtZW50aW5nQWdlbnRzKGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgeworICAgIH0KIAot
ICAgIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKik7Ci0gICAgdm9pZCB3aWxsRGVzdHJv
eUZyb250ZW5kQW5kQmFja2VuZCgpOwotICAgIHZvaWQgZGlzY2FyZEFnZW50cygpOwotCi1wcml2
YXRlOgotICAgIFZlY3RvcjxPd25QdHI8SW5zcGVjdG9yQmFzZUFnZW50Pj4gbV9hZ2VudHM7Cisg
ICAgSW5zdHJ1bWVudGluZ0FnZW50cyogbV9pbnN0cnVtZW50aW5nQWdlbnRzOwogfTsKLQorICAg
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9y
QWdlbnRSZWdpc3RyeV9oKQorI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvcldlYkFnZW50QmFz
ZV9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcldvcmtl
ckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2Vu
dC5jcHAKaW5kZXggMzI4MDFjNi4uODg0NTZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCkBAIC0zNiwxMyArMzYsMTUgQEAKIAog
I2luY2x1ZGUgIkluc3BlY3RvckZvcndhcmRpbmcuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9u
dGVuZC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1l
bnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxT
Y29wZVByb3h5LmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCit1c2lu
ZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElu
c3BlY3RvcldvcmtlckFnZW50OjpXb3JrZXJGcm9udGVuZENoYW5uZWwgOiBwdWJsaWMgV29ya2Vy
R2xvYmFsU2NvcGVQcm94eTo6UGFnZUluc3BlY3RvciB7CkBAIC0xMDcsNyArMTA5LDcgQEAgUGFz
c093blB0cjxJbnNwZWN0b3JXb3JrZXJBZ2VudD4gSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmNyZWF0
ZShJbnN0cnVtZW50aW5nQWdlbnQKIH0KIAogSW5zcGVjdG9yV29ya2VyQWdlbnQ6Okluc3BlY3Rv
cldvcmtlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCi0g
ICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJXb3JrZXIiKSwgaW5zdHJ1bWVu
dGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIldvcmtl
ciIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9lbmFibGVkKGZhbHNlKQogICAgICwg
bV9zaG91bGRQYXVzZURlZGljYXRlZFdvcmtlck9uU3RhcnQoZmFsc2UpCiB7CkBAIC0xMTksNyAr
MTIxLDcgQEAgSW5zcGVjdG9yV29ya2VyQWdlbnQ6On5JbnNwZWN0b3JXb3JrZXJBZ2VudCgpCiAg
ICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JXb3JrZXJBZ2VudCgwKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvcldvcmtlckFn
ZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
IGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3JXb3JrZXJGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hh
bm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvcldvcmtlckJhY2tlbmRE
aXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaAppbmRleCBhYjYyMjFhLi5l
YTQ3NWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29y
a2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2Vy
QWdlbnQuaApAQCAtMzEsMTIgKzMxLDE2IEBACiAjaWZuZGVmIEluc3BlY3RvcldvcmtlckFnZW50
X2gKICNkZWZpbmUgSW5zcGVjdG9yV29ya2VyQWdlbnRfaAogCi0jaW5jbHVkZSAiSW5zcGVjdG9y
QmFzZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCisj
aW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1l
c3BhY2UgSW5zcGVjdG9yIHsKIGNsYXNzIEluc3BlY3Rvck9iamVjdDsKK30KKworbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgSW5zcGVjdG9yV29ya2VyRnJvbnRlbmREaXNwYXRjaGVyOwogY2xh
c3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFVSTDsKQEAgLTQ0LDEyICs0OCwxMiBAQCBj
bGFzcyBXb3JrZXJHbG9iYWxTY29wZVByb3h5OwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmlu
ZzsKIAotY2xhc3MgSW5zcGVjdG9yV29ya2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFn
ZW50LCBwdWJsaWMgSW5zcGVjdG9yV29ya2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2Ns
YXNzIEluc3BlY3RvcldvcmtlckFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVi
bGljIEluc3BlY3RvcldvcmtlckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yV29ya2VyQWdlbnQ+IGNyZWF0ZShJbnN0cnVt
ZW50aW5nQWdlbnRzKik7CiAgICAgfkluc3BlY3RvcldvcmtlckFnZW50KCk7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
KSBPVkVSUklERTsKIAogICAgIC8vIENhbGxlZCBmcm9tIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bgpAQCAtNjMsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNhbkluc3BlY3RX
b3JrZXJzKEVycm9yU3RyaW5nKiwgYm9vbCopOwogICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0VG9X
b3JrZXIoRXJyb3JTdHJpbmcqLCBpbnQgd29ya2VySWQpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNj
b25uZWN0RnJvbVdvcmtlcihFcnJvclN0cmluZyosIGludCB3b3JrZXJJZCk7Ci0gICAgdmlydHVh
bCB2b2lkIHNlbmRNZXNzYWdlVG9Xb3JrZXIoRXJyb3JTdHJpbmcqLCBpbnQgd29ya2VySWQsIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBtZXNzYWdlKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2VuZE1lc3NhZ2VUb1dvcmtlcihFcnJvclN0cmluZyosIGludCB3b3JrZXJJZCwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgbWVzc2FnZSk7CiAgICAgdmlydHVhbCB2
b2lkIHNldEF1dG9jb25uZWN0VG9Xb3JrZXJzKEVycm9yU3RyaW5nKiwgYm9vbCB2YWx1ZSk7CiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVu
dGluZ0FnZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0Fn
ZW50cy5jcHAKaW5kZXggOGNmYjMyOC4uNjI4ZjEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmNwcApAQCAtNDAsNiArNDAsOCBAQAogI2lu
Y2x1ZGUgIldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIEluc3RydW1lbnRpbmdBZ2VudHM6Okluc3RydW1lbnRpbmdBZ2VudHMoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXgg
OTY5ZDMwZC4uNWNjYTQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05l
dHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0
d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC00Niw2ICs0Niw4IEBAIHN0YXRpYyBzaXplX3QgbWF4
aW11bVJlc291cmNlc0NvbnRlbnRTaXplID0gMTAwICogMTAwMCAqIDEwMDA7CiBzdGF0aWMgc2l6
ZV90IG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplID0gMTAgKiAxMDAwICogMTAwMDsK
IH0KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmNwcAppbmRl
eCBiY2Q4OWYyLi5hODkwM2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
UGFnZUNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VD
b25zb2xlQWdlbnQuY3BwCkBAIC00Miw2ICs0Miw4IEBACiAjaW5jbHVkZSAiTm9kZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhZ2VDb25zb2xlQWdlbnQ6OlBhZ2VDb25zb2xlQWdlbnQo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yQWdlbnQq
IGluc3BlY3RvckFnZW50LCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFu
YWdlciwgSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggODdmYWJlZS4uMDRkNDc5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCkBAIC00
MSw2ICs0MSw4IEBACiAjaW5jbHVkZSAiUGFnZUNvbnNvbGUuaCIKICNpbmNsdWRlICJQYWdlU2Ny
aXB0RGVidWdTZXJ2ZXIuaCIKIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBQYXNzT3duUHRyPFBhZ2VEZWJ1Z2dlckFnZW50PiBQYWdlRGVidWdn
ZXJBZ2VudDo6Y3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMs
IEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGlu
amVjdGVkU2NyaXB0TWFuYWdlciwgSW5zcGVjdG9yT3ZlcmxheSogb3ZlcmxheSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmgKaW5kZXggNTU4NjMxMS4uYTVm
ODE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFn
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmgK
QEAgLTMyLDYgKzMyLDcgQEAKICNkZWZpbmUgUGFnZURlYnVnZ2VyQWdlbnRfaAogCiAjaWYgRU5B
QkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRShJTlNQRUNUT1IpCisKICNpbmNsdWRl
ICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAiUGFnZVNjcmlwdERlYnVnU2Vy
dmVyLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGlt
ZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNw
cAppbmRleCA1N2IzYjMwLi41NDg3NjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1BhZ2VSdW50aW1lQWdlbnQuY3BwCkBAIC00Nyw2ICs0Nyw4IEBACiAKIHVzaW5nIFdlYkNvcmU6
OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0RGVzY3JpcHRpb247CiAKK3Vz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFnZVJ1
bnRpbWVBZ2VudDo6UGFnZVJ1bnRpbWVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdl
ciwgUGFnZSogcGFnZSwgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQpCkBAIC02Myw3ICs2
NSw3IEBAIFBhZ2VSdW50aW1lQWdlbnQ6On5QYWdlUnVudGltZUFnZW50KCkKICAgICBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMtPnNldFBhZ2VSdW50aW1lQWdlbnQoMCk7CiB9CiAKLXZvaWQgUGFnZVJ1
bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFj
a2VuZERpc3BhdGNoZXIpCit2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRD
aGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7
CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclJ1
bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5k
RGlzcGF0Y2hlciA9IEluc3BlY3RvclJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJh
Y2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9QYWdlUnVudGltZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1
bnRpbWVBZ2VudC5oCmluZGV4IGU4YjMzYjIuLmNkMDRkOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgUGFnZVJ1bnRpbWVBZ2VudChpbnN0cnVtZW50aW5n
QWdlbnRzLCBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIHBhZ2UsIHBhZ2VBZ2VudCkpOwogICAgIH0K
ICAgICB2aXJ0dWFsIH5QYWdlUnVudGltZUFnZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
LCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNhYmxlKEVycm9yU3RyaW5nKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvU2NyaXB0QXJndW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRB
cmd1bWVudHMuY3BwCmluZGV4IDg5YjlhMGIuLjM0NWMwODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwCkBAIC0zMyw2ICszMyw4IEBACiAKICNpbmNs
dWRlICJTY3JpcHRWYWx1ZS5oIgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBTY3JpcHRBcmd1
bWVudHM6OmNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIFZlY3RvcjxTY3JpcHRW
YWx1ZT4mIGFyZ3VtZW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9T
Y3JpcHRDYWxsRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxG
cmFtZS5jcHAKaW5kZXggMWFiYmQ3NS4uNjZmNzhhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHAKQEAgLTMyLDkgKzMyLDExIEBACiAjaW5jbHVkZSAi
U2NyaXB0Q2FsbEZyYW1lLmgiCiAKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgotI2lu
Y2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JW
YWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2NyaXB0Q2FsbEZyYW1lOjpTY3JpcHRD
YWxsRnJhbWUoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgc2NyaXB0
TmFtZSwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5oCmluZGV4IDY3ZjBkMzYuLjI0MjUxNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmgKQEAgLTM4LDkgKzM4
LDExIEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotCituYW1lc3BhY2UgSW5zcGVjdG9yIHsK
IGNsYXNzIEluc3BlY3Rvck9iamVjdDsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBTY3JpcHRDYWxsRnJhbWUgIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1NjcmlwdENhbGxTdGFjay5jcHAKaW5kZXggZTY5NGJmMS4uMzZjNTAwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHAKQEAgLTMyLDcgKzMyLDkgQEAK
ICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKIAogI2luY2x1ZGUgIkluc3BlY3RvclR5cGVC
dWlsZGVyLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCisjaW5jbHVkZSA8aW5zcGVj
dG9yL0luc3BlY3RvclZhbHVlcy5oPgorCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9TY3JpcHRDYWxsU3RhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxs
U3RhY2suaAppbmRleCBlMGQ3ZmQ1Li5kOGVjMzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1NjcmlwdENhbGxTdGFjay5oCkBAIC00Miw4ICs0Miw2IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgSW5zcGVjdG9yQXJyYXk7Ci0KIGNsYXNzIFNjcmlwdENhbGxTdGFjayA6
IHB1YmxpYyBSZWZDb3VudGVkPFNjcmlwdENhbGxTdGFjaz4gewogcHVibGljOgogICAgIHN0YXRp
YyBjb25zdCBzaXplX3QgbWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSA9IDIwMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAKaW5kZXgg
OGJhYWI5ZS4uOWYyZjdmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Rp
bWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Rp
bWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAKQEAgLTM2LDE1ICszNiwxNyBAQAogCiAjaW5jbHVkZSAi
RXZlbnQuaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1
ZXMuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIK
ICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2tG
YWN0b3J5LmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1
ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGlu
ZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNSZWNvcmQoZG91YmxlIHN0YXJ0VGltZSwgaW50
IG1heENhbGxTdGFja0RlcHRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVs
aW5lUmVjb3JkRmFjdG9yeS5oCmluZGV4IGRiNDRiMWUuLmU0YmY5MGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmgKQEAgLTMxLDkgKzMx
LDggQEAKICNpZm5kZWYgVGltZWxpbmVSZWNvcmRGYWN0b3J5X2gKICNkZWZpbmUgVGltZWxpbmVS
ZWNvcmRGYWN0b3J5X2gKIAotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUg
IlVSTC5oIgotI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5z
cGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDEsNjQgKzQwLDYyIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgIGNsYXNzIEV2ZW50OwogICAgIGNsYXNzIEZsb2F0UXVhZDsKLSAgICBjbGFzcyBJ
bnNwZWN0b3JPYmplY3Q7Ci0gICAgY2xhc3MgSW50UmVjdDsKICAgICBjbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIAogICAgIGNsYXNzIFRpbWVsaW5l
UmVjb3JkRmFjdG9yeSB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUdlbmVyaWNSZWNvcmQoZG91YmxlIHN0YXJ0VGltZSwgaW50
IG1heENhbGxTdGFja0RlcHRoKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBjcmVhdGVCYWNrZ3JvdW5kUmVjb3JkKGRvdWJsZSBzdGFydFRpbWUsIGNvbnN0IFN0
cmluZyYgdGhyZWFkKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+IGNyZWF0ZUdlbmVyaWNSZWNvcmQoZG91YmxlIHN0YXJ0VGltZSwgaW50IG1h
eENhbGxTdGFja0RlcHRoKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUJhY2tncm91bmRSZWNvcmQoZG91YmxlIHN0YXJ0VGltZSwg
Y29uc3QgU3RyaW5nJiB0aHJlYWQpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gY3JlYXRlR0NFdmVudERhdGEoY29uc3Qgc2l6ZV90IHVzZWRIZWFwU2l6ZURl
bHRhKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q+IGNyZWF0ZUdDRXZlbnREYXRhKGNvbnN0IHNpemVfdCB1c2VkSGVhcFNpemVEZWx0YSk7CiAK
LSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVGdW5jdGlv
bkNhbGxEYXRhKGNvbnN0IFN0cmluZyYgc2NyaXB0TmFtZSwgaW50IHNjcmlwdExpbmUpOworICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRl
RnVuY3Rpb25DYWxsRGF0YShjb25zdCBTdHJpbmcmIHNjcmlwdE5hbWUsIGludCBzY3JpcHRMaW5l
KTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUV2
ZW50RGlzcGF0Y2hEYXRhKGNvbnN0IEV2ZW50Jik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVFdmVudERpc3BhdGNoRGF0YShjb25z
dCBFdmVudCYpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
Y3JlYXRlR2VuZXJpY1RpbWVyRGF0YShpbnQgdGltZXJJZCk7CisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVHZW5lcmljVGltZXJEYXRh
KGludCB0aW1lcklkKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGNyZWF0ZVRpbWVySW5zdGFsbERhdGEoaW50IHRpbWVySWQsIGludCB0aW1lb3V0LCBib29s
IHNpbmdsZVNob3QpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdD4gY3JlYXRlVGltZXJJbnN0YWxsRGF0YShpbnQgdGltZXJJZCwgaW50IHRpbWVv
dXQsIGJvb2wgc2luZ2xlU2hvdCk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBjcmVhdGVYSFJSZWFkeVN0YXRlQ2hhbmdlRGF0YShjb25zdCBTdHJpbmcmIHVy
bCwgaW50IHJlYWR5U3RhdGUpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlWEhSUmVhZHlTdGF0ZUNoYW5nZURhdGEoY29uc3QgU3Ry
aW5nJiB1cmwsIGludCByZWFkeVN0YXRlKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVhIUkxvYWREYXRhKGNvbnN0IFN0cmluZyYgdXJsKTsKKyAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0
ZVhIUkxvYWREYXRhKGNvbnN0IFN0cmluZyYgdXJsKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUV2YWx1YXRlU2NyaXB0RGF0YShjb25zdCBTdHJp
bmcmLCBkb3VibGUgbGluZU51bWJlcik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVFdmFsdWF0ZVNjcmlwdERhdGEoY29uc3QgU3Ry
aW5nJiwgZG91YmxlIGxpbmVOdW1iZXIpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gY3JlYXRlVGltZVN0YW1wRGF0YShjb25zdCBTdHJpbmcmKTsKKyAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVRp
bWVTdGFtcERhdGEoY29uc3QgU3RyaW5nJik7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVSZXNvdXJjZVNlbmRSZXF1ZXN0RGF0YShjb25zdCBTdHJp
bmcmIHJlcXVlc3RJZCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVSZXNvdXJjZVNlbmRS
ZXF1ZXN0RGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
Jik7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVT
Y2hlZHVsZVJlc291cmNlUmVxdWVzdERhdGEoY29uc3QgU3RyaW5nJik7CisgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVTY2hlZHVsZVJl
c291cmNlUmVxdWVzdERhdGEoY29uc3QgU3RyaW5nJik7CiAKLSAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVSZXNvdXJjZVJlY2VpdmVSZXNwb25zZURhdGEo
Y29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVJl
c291cmNlUmVjZWl2ZVJlc3BvbnNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gY3JlYXRlUmVjZWl2ZVJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCwgaW50IGxlbmd0aCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiBjcmVhdGVSZWNlaXZlUmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBpbnQgbGVuZ3RoKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IGNyZWF0ZVJlc291cmNlRmluaXNoRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCwgYm9vbCBkaWRGYWlsLCBkb3VibGUgZmluaXNoVGltZSk7CisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVSZXNvdXJjZUZpbmlzaERh
dGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGJvb2wgZGlkRmFpbCwgZG91YmxlIGZpbmlzaFRp
bWUpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRl
TGF5b3V0RGF0YSh1bnNpZ25lZCBkaXJ0eU9iamVjdHMsIHVuc2lnbmVkIHRvdGFsT2JqZWN0cywg
Ym9vbCBwYXJ0aWFsTGF5b3V0KTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUxheW91dERhdGEodW5zaWduZWQgZGlydHlPYmplY3Rz
LCB1bnNpZ25lZCB0b3RhbE9iamVjdHMsIGJvb2wgcGFydGlhbExheW91dCk7CiAKLSAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVEZWNvZGVJbWFnZURhdGEo
Y29uc3QgU3RyaW5nJiBpbWFnZVR5cGUpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlRGVjb2RlSW1hZ2VEYXRhKGNvbnN0IFN0cmlu
ZyYgaW1hZ2VUeXBlKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGNyZWF0ZVJlc2l6ZUltYWdlRGF0YShib29sIHNob3VsZENhY2hlKTsKKyAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVJlc2l6ZUlt
YWdlRGF0YShib29sIHNob3VsZENhY2hlKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGNyZWF0ZU1hcmtEYXRhKGJvb2wgaXNNYWluRnJhbWUpOworICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlTWFy
a0RhdGEoYm9vbCBpc01haW5GcmFtZSk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBjcmVhdGVQYXJzZUhUTUxEYXRhKHVuc2lnbmVkIHN0YXJ0TGluZSk7Cisg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVh
dGVQYXJzZUhUTUxEYXRhKHVuc2lnbmVkIHN0YXJ0TGluZSk7CiAKLSAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVBbmltYXRpb25GcmFtZURhdGEoaW50IGNh
bGxiYWNrSWQpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4gY3JlYXRlQW5pbWF0aW9uRnJhbWVEYXRhKGludCBjYWxsYmFja0lkKTsKIAotICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVBhaW50RGF0YShj
b25zdCBGbG9hdFF1YWQmKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVBhaW50RGF0YShjb25zdCBGbG9hdFF1YWQmKTsKIAotICAg
ICAgICBzdGF0aWMgdm9pZCBhcHBlbmRMYXlvdXRSb290KEluc3BlY3Rvck9iamVjdCogZGF0YSwg
Y29uc3QgRmxvYXRRdWFkJik7CisgICAgICAgIHN0YXRpYyB2b2lkIGFwcGVuZExheW91dFJvb3Qo
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIGRhdGEsIGNvbnN0IEZsb2F0UXVhZCYpOwogCiAj
aWYgRU5BQkxFKFdFQl9TT0NLRVRTKQotICAgICAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVXZWJTb2NrZXRDcmVhdGVEYXRhKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCisgICAg
ICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4g
Y3JlYXRlV2ViU29ja2V0Q3JlYXRlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUo
KTsKKyAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gZGF0YSA9
IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGRhdGEt
PnNldE51bWJlcigiaWRlbnRpZmllciIsIGlkZW50aWZpZXIpOwogICAgICAgICAgICAgZGF0YS0+
c2V0U3RyaW5nKCJ1cmwiLCB1cmwuc3RyaW5nKCkpOwogICAgICAgICAgICAgaWYgKCFwcm90b2Nv
bC5pc051bGwoKSkKQEAgLTEwNiw5ICsxMDMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgICAgICByZXR1cm4gZGF0YS5yZWxlYXNlKCk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0
aWMgaW5saW5lIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVHZW5lcmljV2ViU29j
a2V0RGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCisgICAgICAgIHN0YXRpYyBpbmxpbmUg
UGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlR2VuZXJpY1dlYlNv
Y2tldERhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUo
KTsKKyAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gZGF0YSA9
IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGRhdGEt
PnNldE51bWJlcigiaWRlbnRpZmllciIsIGlkZW50aWZpZXIpOwogICAgICAgICAgICAgcmV0dXJu
IGRhdGEucmVsZWFzZSgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Xb3JrZXJDb25zb2xlQWdlbnQuY3BwCmluZGV4IDE1YmI3YTguLjY2NmE4ZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQuY3BwCkBAIC0zNCw2
ICszNCw4IEBACiAKICNpbmNsdWRlICJXb3JrZXJDb25zb2xlQWdlbnQuaCIKIAordXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXb3JrZXJDb25zb2xl
QWdlbnQ6OldvcmtlckNvbnNvbGVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcApp
bmRleCA3MTM2ZTQ2Li45N2QwMGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0zOCw2ICszOCw4IEBACiAjaW5jbHVkZSAiV29y
a2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8d3RmL01lc3NhZ2VRdWV1ZS5oPgogCit1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKaW5kZXggZWYyMzAzNy4uN2Y1ZTcwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNTEsOCAr
NTEsMTEgQEAKICNpbmNsdWRlICJXb3JrZXJSZXBvcnRpbmdQcm94eS5oIgogI2luY2x1ZGUgIldv
cmtlclJ1bnRpbWVBZ2VudC5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorI2luY2x1ZGUg
PGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgogI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogbmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDU4YmRhMjAuLmFhMGQ5MGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRy
b2xsZXIuaApAQCAtMzMsMTkgKzMzLDIxIEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0j
aW5jbHVkZSAiSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIgotI2luY2x1ZGUgIkluc3BlY3RvckJh
c2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgorI2luY2x1ZGUg
PGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RN
YWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOwotY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7Ci1jbGFzcyBJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWw7CiBjbGFzcyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb247CiBjbGFzcyBJ
bnNwZWN0b3JSdW50aW1lQWdlbnQ7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwpAQCAtNzIs
OSArNzQsOSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJbnN0cnVtZW50aW5nQWdlbnRzPiBtX2lu
c3RydW1lbnRpbmdBZ2VudHM7CiAgICAgT3duUHRyPEluamVjdGVkU2NyaXB0TWFuYWdlcj4gbV9p
bmplY3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgSW5zcGVjdG9yUnVudGltZUFnZW50KiBtX3J1bnRp
bWVBZ2VudDsKLSAgICBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5IG1fYWdlbnRzOworICAgIEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQWdlbnRSZWdpc3RyeSBtX2FnZW50czsKICAgICBPd25QdHI8SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsPiBtX2Zyb250ZW5kQ2hhbm5lbDsKLSAgICBSZWZQdHI8SW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVu
dGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdl
bnQuY3BwCmluZGV4IGIwN2I2MzMuLjFlZjgzNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCkBAIC00Miw2ICs0Miw4IEBACiAjaW5jbHVk
ZSAiV29ya2VyUnVuTG9vcC5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogCit1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdvcmtlclJ1bnRp
bWVBZ2VudDo6V29ya2VyUnVudGltZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LCBXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUpCkBAIC01Nyw3ICs1OSw3IEBA
IFdvcmtlclJ1bnRpbWVBZ2VudDo6fldvcmtlclJ1bnRpbWVBZ2VudCgpCiAgICAgbV9pbnN0cnVt
ZW50aW5nQWdlbnRzLT5zZXRXb3JrZXJSdW50aW1lQWdlbnQoMCk7CiB9CiAKLXZvaWQgV29ya2Vy
UnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVy
KQordm9pZCBXb3JrZXJSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0g
SW5zcGVjdG9yUnVudGltZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNo
ZXIsIHRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtl
clJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVB
Z2VudC5oCmluZGV4IDY3ZGUwOGEuLjViNjI5YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAg
IH0KICAgICB2aXJ0dWFsIH5Xb3JrZXJSdW50aW1lQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJS
SURFOwogCiAgICAgLy8gUHJvdG9jb2wgY29tbWFuZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKaW5kZXggMGJlOWY5OC4uY2M2NjM2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcApAQCAtMzUsNyAr
MzUsNiBAQAogI2luY2x1ZGUgIkZvcm1EYXRhTGlzdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9y
VmFsdWVzLmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUGluZ0xvYWRlci5oIgogI2lu
Y2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKQEAgLTQ2LDEwICs0NSwxMyBAQAogI2lu
Y2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3lWaW9sYXRp
b25FdmVudC5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgorI2luY2x1ZGUgPGluc3BlY3Rv
ci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IC8vIE5vcm1hbGx5IFdlYktpdCB1c2VzICJzdGF0aWMiIGZvciBpbnRlcm5hbCBsaW5rYWdlLCBi
dXQgdXNpbmcgInN0YXRpYyIgZm9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5k
ZXggYzdlYmM5Ny4uN2M0YjNkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApA
QCAtNjMsNyArNjMsNiBAQAogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JPdmVybGF5LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAi
SW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIkludGVybmFsU2V0dGluZ3MuaCIKICNp
bmNsdWRlICJJbnRSZWN0LmgiCkBAIC05Niw2ICs5NSw3IEBACiAjaW5jbHVkZSAiVmlld3BvcnRB
cmd1bWVudHMuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDxieXRlY29k
ZS9Db2RlQmxvY2suaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAj
aW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oPgpAQCAtMTY3LDYgKzE2Nyw4
IEBAIHVzaW5nIEpTQzo6SlNWYWx1ZTsKIHVzaW5nIEpTQzo6U2NyaXB0RXhlY3V0YWJsZTsKIHVz
aW5nIEpTQzo6U3RhY2tWaXNpdG9yOwogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
aW5kZXggZTA3MDNhOS4uMDcwMDAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEz
LTEyLTA1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAg
V2ViIEluc3BlY3RvcjogUHVzaCBNb3JlIEluc3BlY3RvciBSZXF1aXJlZCBDbGFzc2VzIERvd24g
aW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTI1MzI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmg6CisKIDIwMTMtMTItMDYgIERh
biBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MTU2MDY4NzI+IFJFR1JFU1NJT04gKHIxNjAxNDgpOiBNYWlsIHRocm93cyBhbiBleGNlcHRpb24g
ZHVyaW5nIGxhdW5jaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViSW5zcGVjdG9yLmNwcAppbmRleCBhODkwZjViLi43NzM1ZjZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcApAQCAtMzQsNyAr
MzQsNiBAQAogI2luY2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JDb250cm9sbGVyLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGb3J3YXJkaW5nLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZy
YW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKaW5kZXggZTY0ZjZkMy4uNDJhZWM1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rv
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3Iu
aApAQCAtMzAsMTggKzMwLDE0IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRl
ICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGb3J3YXJkaW5nLmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbDsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50OwogY2xhc3MgV2ViUGFnZTsKLXN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzOwogCiBjbGFzcyBXZWJJbnNwZWN0b3IgOiBwdWJsaWMgQVBJOjpUeXBlZE9iamVjdDxBUEk6
Ok9iamVjdDo6VHlwZTo6QnVuZGxlSW5zcGVjdG9yPiB7CiBwdWJsaWM6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218637</attachid>
            <date>2013-12-06 17:43:10 -0800</date>
            <delta_ts>2013-12-11 14:02:56 -0800</delta_ts>
            <desc>[PATCH] PART 2: ScriptObject, ScriptValue (namespace Deprecated)</desc>
            <filename>deprecated-stuff.patch</filename>
            <type>text/plain</type>
            <size>235150</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">Y29tbWl0IGJkYTg4ODIyNDJjOTVlMmQ5NzRhYmQ3YmQ5ZmU4NGM5NTk2MGE2NDUKQXV0aG9yOiBK
b3NlcGggUGVjb3Jhcm8gPHBlY29yYXJvQGFwcGxlLmNvbT4KRGF0ZTogICBXZWQgRGVjIDQgMTY6
MjU6MjggMjAxMyAtMDgwMAoKICAgIFBBUlQgMjogUHVzaCBEb3duIFNjcmlwdE9iamVjdCBhbmQg
U2NyaXB0VmFsdWUKCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNzNjMDUw
Yy4uZGFmMzdjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNCw2ICs0
LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L0FQSSIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L0ZvcndhcmRp
bmdIZWFkZXJzIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYXNzZW1ibGVyIgorICAgICIk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vYmluZGluZ3MiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElS
fS9ieXRlY29kZSIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J5dGVjb21waWxlciIKICAg
ICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2RmZyIKQEAgLTQ1LDYgKzQ2LDkgQEAgc2V0KEphdmFT
Y3JpcHRDb3JlX1NPVVJDRVMKICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCiAgICAg
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNwcAogCisgICAgYmluZGluZ3MvU2Ny
aXB0T2JqZWN0LmNwcAorICAgIGJpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAorCiAgICAgYnl0ZWNv
ZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9BcnJheVByb2ZpbGUu
Y3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcApAQCAtNTg2LDYgKzU5MCw3
IEBAIGVuZGZvcmVhY2ggKCkKIAogc2V0KEphdmFTY3JpcHRDb3JlX0ZPUldBUkRJTkdfSEVBREVS
U19ESVJFQ1RPUklFUwogICAgIGFzc2VtYmxlcgorICAgIGJpbmRpbmdzCiAgICAgYnl0ZWNvZGUK
ICAgICBjb2xsZWN0b3IvaGFuZGxlcwogICAgIGRlYnVnZ2VyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZwppbmRleCA3NzNmZWU2Li5hM2QzNTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTYs
NiArNiwzNSBAQAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAogICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovY29weS1maWxlcy5jbWQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9TY3JpcHRPYmplY3QuY3Bw
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNw
cC4KKyAgICAgICAgKEpTQzo6U2NyaXB0T2JqZWN0OjpTY3JpcHRPYmplY3QpOgorICAgICAgICAq
IGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0T2JqZWN0LmguCisgICAgICAgIChKU0M6OlNjcmlwdE9iamVjdDo6U2Ny
aXB0T2JqZWN0KToKKyAgICAgICAgKEpTQzo6U2NyaXB0T2JqZWN0Ojpqc09iamVjdCk6CisgICAg
ICAgIChKU0M6OlNjcmlwdE9iamVjdDo6c2NyaXB0U3RhdGUpOgorICAgICAgICAqIGJpbmRpbmdz
L1NjcmlwdFZhbHVlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdFZhbHVlLmNwcC4KKyAgICAgICAgKEpTQzo6U2NyaXB0VmFsdWU6On5TY3JpcHRWYWx1
ZSk6CisgICAgICAgIChKU0M6OlNjcmlwdFZhbHVlOjpnZXRTdHJpbmcpOgorICAgICAgICAoSlND
OjpTY3JpcHRWYWx1ZTo6dG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpTY3JpcHRWYWx1ZTo6aXNF
cXVhbCk6CisgICAgICAgIChKU0M6OmpzVG9JbnNwZWN0b3JWYWx1ZSk6CisgICAgICAgIChKU0M6
OlNjcmlwdFZhbHVlOjp0b0luc3BlY3RvclZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9TY3Jp
cHRWYWx1ZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
VmFsdWUuaC4KKworMjAxMy0xMi0wNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUu
Y29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggTW9yZSBJbnNwZWN0b3IgUmVxdWly
ZWQgQ2xhc3NlcyBEb3duIGludG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTMyNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CiAgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbToKICAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2o6CiAgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZp
bGUuYW0KaW5kZXggMDg1ZmNhNy4uNzVkYmVlNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtl
ZmlsZS5hbQpAQCAtNTIsNiArNTIsNyBAQCBqYXZhc2NyaXB0Y29yZV9jcHBmbGFncyArPSBcCiAJ
LUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSSBcCiAJLUkkKHNyY2RpcikvU291
cmNlL0phdmFTY3JpcHRDb3JlL0ZvcndhcmRpbmdIZWFkZXJzIFwKIAktSSQoc3JjZGlyKS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyIFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYmluZGluZ3MgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZSBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggOWI3NWVhMC4uZWUwYTc5
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTk1LDYg
Kzk1LDEwIEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL1NINEFzc2VtYmxlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1g4NkFzc2VtYmxlci5oIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mv
U2NyaXB0T2JqZWN0LmNwcCBcCisgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Nj
cmlwdE9iamVjdC5oIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0
VmFsdWUuY3BwIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFs
dWUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5QWxsb2NhdGlvblBy
b2ZpbGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlBbGxvY2F0
aW9uUHJvZmlsZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9m
aWxlLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagppbmRleCA3MGJh
YjFjLi4yOWNmMjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKQEAg
LTI5NCw2ICsyOTQsOCBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXE1h
Y3JvQXNzZW1ibGVyLmNwcCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEFQSVxKU0NU
ZXN0UnVubmVyVXRpbHMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFzc2VtYmxl
clxNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5jcHAiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxiaW5kaW5nc1xiaW5kaW5ncy9TY3JpcHRPYmplY3QuY3BwIiAvPgorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheVByb2ZpbGUu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQnl0ZWNvZGVCYXNp
Y0Jsb2NrLmNwcCIgLz4KQEAgLTc1MSw2ICs3NTMsOCBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cYXNzZW1ibGVyXE1hY3JvQXNzZW1ibGVyWDg2XzY0LmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcUmVwYXRjaEJ1ZmZlci5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXFg4NkFzc2VtYmxlci5oIiAvPgorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcYmluZGluZ3MvU2NyaXB0T2JqZWN0LmgiIC8+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0aW9uUHJv
ZmlsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlQcm9m
aWxlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxCeVZhbEluZm8u
aCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVy
cwppbmRleCAzM2FmYTkxLi44ZmRhMTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC00LDYgKzQsOSBAQAogICAgIDxGaWx0ZXIgSW5j
bHVkZT0iYXNzZW1ibGVyIj4KICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0Mjk3ODNhMS01ZDZh
LTQwMTktYWQxYS1kZGIyYzk4ZjliNmN9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVy
PgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iYmluZGluZ3MiPgorICAgICAgPFVuaXF1ZUlkZW50aWZp
ZXI+ezBiYWNlMTIzLTQ1ODItZWViYy05MzE0LTc4MTliMzc2YzE5OH08L1VuaXF1ZUlkZW50aWZp
ZXI+CisgICAgPC9GaWx0ZXI+CiAgICAgPEZpbHRlciBJbmNsdWRlPSJieXRlY29kZSI+CiAgICAg
ICA8VW5pcXVlSWRlbnRpZmllcj57NzY2MDg4YTAtMTIxNi00ODU0LWFhNDMtNTYwYzVlMjgzNjY4
fTwvVW5pcXVlSWRlbnRpZmllcj4KICAgICA8L0ZpbHRlcj4KQEAgLTEwNSw2ICsxMDgsMTIgQEAK
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxNYWNyb0Fzc2VtYmxlci5jcHAi
PgogICAgICAgPEZpbHRlcj5hc3NlbWJsZXI8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdE9iamVjdC5jcHAiPgorICAg
ICAgPEZpbHRlcj5iaW5kaW5nczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0VmFsdWUuY3BwIj4KKyAgICAgIDxGaWx0
ZXI+YmluZGluZ3M8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIj4KICAgICAgIDxG
aWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTEzOTcsNiArMTQw
NiwxMiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXFg4NkFzc2VtYmxl
ci5oIj4KICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRPYmplY3QuaCI+Cisg
ICAgICA8RmlsdGVyPmJpbmRpbmdzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRWYWx1ZS5oIj4KKyAgICAgIDxGaWx0
ZXI+YmluZGluZ3M8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCI+CiAgICAgICA8Rmls
dGVyPmJ5dGVjb2RlPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9jb3B5LWZpbGVzLmNtZCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL2NvcHktZmlsZXMu
Y21kCmluZGV4IGY3ZTQyOTQuLjg4MmNlODMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL2NvcHktZmlsZXMuY21kCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL2NvcHktZmlsZXMuY21kCkBAIC0z
OSw2ICszOSw3IEBAIGVjaG8gQ29weWluZyBwcml2YXRlIGhlYWRlcnMuLi4KIG1rZGlyICIlUHJp
dmF0ZUhlYWRlcnNEaXJlY3RvcnklIiAyPk5VTA0KIGZvciAlJWQgaW4gKA0KICAgICBhc3NlbWJs
ZXINCisgICAgYmluZGluZ3MNCiAgICAgYnl0ZWNvZGUNCiAgICAgZGZnDQogICAgIGRpc2Fzc2Vt
Ymxlcg0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOGFlYTc2YS4uYmIwMjEwMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg5MCw2ICs4OTAsMTAgQEAKIAkJQTE3
MTJCNDExMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJl
Z0V4cEtleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUExQTAwOUMwMTgzMUEyMkQwMENGODcxMSAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjQwOTIzQzE1NkVF
RDNCMDA1NjZDQjIgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAv
KiBBUk02NEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODY0MDkyM0IxNTZFRUQzQjAwNTY2Q0IyIC8qIEFSTTY0QXNzZW1ibGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTU0Q0YyRjUx
ODRFQUIyNDAwMjM3RjE5IC8qIFNjcmlwdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NENGMkYyMTg0RUFCMjQwMDIzN0YxOSAvKiBTY3Jp
cHRWYWx1ZS5jcHAgKi87IH07CisJCUE1NENGMkY2MTg0RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRW
YWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU0
Q0YyRjMxODRFQUIyNDAwMjM3RjE5IC8qIFNjcmlwdFZhbHVlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTU0Q0YyRjkxODRFQUVEQTAwMjM3RjE5
IC8qIFNjcmlwdE9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTRDRjJGNzE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2JqZWN0LmNwcCAq
LzsgfTsKKwkJQTU0Q0YyRkExODRFQUVEQTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU0Q0YyRjgxODRFQUVE
QTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUE1OTNDRjdDMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNTkzQ0Y3QTE4NDAzNjAzMDBCRkNFMjcgLyogSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIuY3BwICovOyB9OwogCQlBNTkzQ0Y3RDE4NDAzNjAzMDBCRkNFMjcgLyogSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE1OTNDRjdCMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUE1OTNDRjdGMTg0MDM2MkMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudEJhc2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OTNDRjdF
MTg0MDM2MkMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudEJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjIyNCw2ICsyMjI4LDEwIEBACiAJ
CUExNzEyQjNBMTFDN0IyMTIwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUExNzEyQjNFMTFDN0IyMjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBDYWNoZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMTcxMkI0MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhw
S2V5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cEtleS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTRDRjJGMjE4NEVBQjI0MDAyMzdGMTkgLyogU2Ny
aXB0VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0
VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTRDRjJGMzE4NEVBQjI0
MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2NyaXB0VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU0Q0YyRjcx
ODRFQUVEQTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTY3JpcHRPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBNTRDRjJGODE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2JqZWN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdE9iamVjdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNTkzQ0Y3QTE4NDAzNjAzMDBCRkNFMjcgLyogSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwOyBwYXRoID0gaW5zcGVjdG9yL0luc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU5
M0NGN0IxODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
Lmg7IHBhdGggPSBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU5M0NGN0UxODQwMzYyQzAwQkZDRTI3IC8qIEluc3Bl
Y3RvckFnZW50QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJbnNwZWN0
b3JBZ2VudEJhc2UuaDsgcGF0aCA9IGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3MzEsNiArMjczOSw3IEBACiAJCQkJQTdDMjI1
Q0MxMzk5ODFGMTAwRkYxNjYyIC8qIEtleXdvcmRMb29rdXBHZW5lcmF0b3IucHkgKi8sCiAJCQkJ
MTQzMkVCRDcwQTM0Q0FENDAwNzE3QjlGIC8qIEFQSSAqLywKIAkJCQk5Njg4Q0IxMjBFRDEyQjRF
MDAxRDY0OUYgLyogYXNzZW1ibGVyICovLAorCQkJCUE1NENGMkVBMTg0RUE3MzkwMDIzN0YxOSAv
KiBiaW5kaW5ncyAqLywKIAkJCQk5NjlBMDc4RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUg
Ki8sCiAJCQkJN0UzOUQ4MUQwRUMzOEVGQTAwM0FGMTFBIC8qIGJ5dGVjb21waWxlciAqLywKIAkJ
CQkxQzkwNTEzRTBCQTlFODgzMDA4MUU5RDAgLyogQ29uZmlndXJhdGlvbnMgKi8sCkBAIC00MjAw
LDYgKzQyMDksMTcgQEAKIAkJCXBhdGggPSBieXRlY29kZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CiAJCX07CisJCUE1NENGMkVBMTg0RUE3MzkwMDIzN0YxOSAvKiBiaW5kaW5ncyAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQTU0Q0YyRjcxODRF
QUVEQTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5jcHAgKi8sCisJCQkJQTU0Q0YyRjgxODRFQUVE
QTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5oICovLAorCQkJCUE1NENGMkYyMTg0RUFCMjQwMDIz
N0YxOSAvKiBTY3JpcHRWYWx1ZS5jcHAgKi8sCisJCQkJQTU0Q0YyRjMxODRFQUIyNDAwMjM3RjE5
IC8qIFNjcmlwdFZhbHVlLmggKi8sCisJCQkpOworCQkJcGF0aCA9IGJpbmRpbmdzOworCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJQTVCQTE1REYxODIzNDA5MjAwQTgyRTY5IC8q
IGluc3BlY3RvciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBA
IC00NTA2LDYgKzQ1MjYsNyBAQAogCQkJCTBGQjEwNTg2MTY3NTQ4MTIwMEY4QUI2RSAvKiBFeGl0
S2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQUIxNEJDRjVCQjAwODg1QjRGIC8qIEV4
cHJlc3Npb25SYW5nZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjM4MTdBREI1RjMw
MDVBQjE3NCAvKiBGbG9hdDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1NENGMkY2MTg0
RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFG
MzkxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyNEU1NDMxN0VBOUY1OTAwQUJCMjE3IC8qIEZQUkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRkM5OUQ1MTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9p
bnQuaCBpbiBIZWFkZXJzICovLApAQCAtNDg5Miw2ICs0OTEzLDcgQEAKIAkJCQkwRkQ4MkU1NDE0
MURBRUVFMDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
QzFFQUYyMTc5ODdBQjYwMDI5OURCMiAvKiBTdGFja1Zpc2l0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCTE0REYwNERBMTZCMzk5NkQwMDE2QTUxMyAvKiBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlBNTRDRjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2Jq
ZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNENBOTU4QjE2QUI1MERFMDA5MzhBMDYgLyogU3Rh
dGljUHJvcGVydHlBbmFseXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTczMEI2MTIxMjUwMDY4
RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxBY3RpdmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzE4QzQ2NjBFMTZGNUNEMDBCMzQ0NjAgLyogU3RyaW5nQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJz
ICovLApAQCAtNTU0Nyw2ICs1NTY5LDcgQEAKIAkJCQkwRjU2QTFENTE1MDAxQ0Y0MDAyOTkyQjEg
LyogRXhlY3V0aW9uQ291bnRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTk0NTU5MjE4MjQ3
NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGQjEwNTg1MTY3NTQ4MEYwMEY4QUI2RSAvKiBFeGl0S2luZC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlBNTRDRjJGNTE4NEVBQjI0MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMUMxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0
SGVhcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEExRTE3MDhCMDA3MDBCQjcyMkMgLyog
RlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEw
OTE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtNTcyNyw2ICs1NzUwLDcgQEAKIAkJCQk4NkVCRjJGRjE1NjBGMDZBMDA4RTkyMjIgLyogTmFt
ZUNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUJGMzAxMTU2MEYwNkEwMDhF
OTIyMiAvKiBOYW1lSW5zdGFuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZFQkYzMDMxNTYw
RjA2QTAwOEU5MjIyIC8qIE5hbWVQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTU0
Q0YyRjkxODRFQUVEQTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxNDQ2OURFMDEwN0VDN0U3MDA2NTA0NDYgLyogTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFMTEwN0VDN0U3MDA2NTA0NDYgLyogTmF0aXZl
RXJyb3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ4RjIxQjcxMDdFQzU0NzAw
NDJFQzJDIC8qIE5vZGVzLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYmluZGluZ3MvU2NyaXB0T2JqZWN0LmNwcApzaW1pbGFyaXR5IGluZGV4IDY3JQpjb3B5IGZy
b20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5jcHAKY29weSB0byBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0T2JqZWN0LmNwcAppbmRleCA4ZTI3
ZThhLi5jY2Y3YWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0
T2JqZWN0LmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKQEAgLTI5LDMzICszMCwyMiBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJTY3JpcHRPYmplY3QuaCIKIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCit1c2luZyBu
YW1lc3BhY2UgSlNDOwogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCituYW1lc3BhY2Ug
RGVwcmVjYXRlZCB7CiAKLSNpbmNsdWRlICJNYWluRnJhbWUuaCIKLSNpbmNsdWRlICJQYWdlLmgi
Ci0jaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNv
ZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgotCi11c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWJvb2wgSW5zcGVjdG9yQ2xpZW50Ojpkb0Rp
c3BhdGNoTWVzc2FnZU9uRnJvbnRlbmRQYWdlKFBhZ2UqIGZyb250ZW5kUGFnZSwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQorU2NyaXB0T2JqZWN0OjpTY3JpcHRPYmplY3QoRXhlY1N0YXRlKiBzY3Jp
cHRTdGF0ZSwgSlNPYmplY3QqIG9iamVjdCkKKyAgICA6IFNjcmlwdFZhbHVlKHNjcmlwdFN0YXRl
LT52bSgpLCBvYmplY3QpCisgICAgLCBtX3NjcmlwdFN0YXRlKHNjcmlwdFN0YXRlKQogewotICAg
IGlmICghZnJvbnRlbmRQYWdlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBTdHJpbmcg
ZGlzcGF0Y2hUb0Zyb250ZW5kID0gIkluc3BlY3RvckZyb250ZW5kQVBJLmRpc3BhdGNoTWVzc2Fn
ZUFzeW5jKCIgKyBtZXNzYWdlICsgIik7IjsKLQotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBl
eGVjdXRlIHRoZSBzY3JpcHQgaW4gdGhlIGFwcHJvcHJpYXRlIHdvcmxkLgotICAgIGZyb250ZW5k
UGFnZS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXZhbHVhdGUoU2NyaXB0U291cmNlQ29kZShkaXNw
YXRjaFRvRnJvbnRlbmQpKTsKLSAgICByZXR1cm4gdHJ1ZTsKIH0KIAotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorU2NyaXB0T2JqZWN0OjpTY3JpcHRPYmplY3QoRXhlY1N0YXRlKiBzY3JpcHRTdGF0
ZSwgY29uc3QgU2NyaXB0VmFsdWUmIHNjcmlwdFZhbHVlKQorICAgIDogU2NyaXB0VmFsdWUoc2Ny
aXB0U3RhdGUtPnZtKCksIHNjcmlwdFZhbHVlLmpzVmFsdWUoKSkKKyAgICAsIG1fc2NyaXB0U3Rh
dGUoc2NyaXB0U3RhdGUpCit7Cit9CiAKLSNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQorfSAv
LyBuYW1lc3BhY2UgRGVwcmVjYXRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2Ny
aXB0T2JqZWN0LmgKc2ltaWxhcml0eSBpbmRleCA2MiUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmgKcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iaW5kaW5ncy9TY3JpcHRPYmplY3QuaAppbmRleCAzZmJlNjcxLi44ZjdiMGRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0T2JqZWN0LmgKQEAgLTEsNCArMSw1
IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzEsNDAgKzMyLDI0IEBACiAjaWZuZGVmIFNjcmlw
dE9iamVjdF9oCiAjZGVmaW5lIFNjcmlwdE9iamVjdF9oCiAKLSNpbmNsdWRlICJTY3JpcHRTdGF0
ZS5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKIAot
I2luY2x1ZGUgPGhlYXAvU3Ryb25nLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU09iamVjdC5oPgor
bmFtZXNwYWNlIERlcHJlY2F0ZWQgewogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTY3Jp
cHRPYmplY3QgOiBwdWJsaWMgU2NyaXB0VmFsdWUgeworcHVibGljOgorICAgIEpTX0VYUE9SVF9Q
UklWQVRFIFNjcmlwdE9iamVjdChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBTY3JpcHRPYmplY3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBT
Y3JpcHRWYWx1ZSYpOworICAgIFNjcmlwdE9iamVjdCgpIDogbV9zY3JpcHRTdGF0ZShudWxscHRy
KSB7IH0KIAotICAgIGNsYXNzIEluc3BlY3RvckZyb250ZW5kSG9zdDsKKyAgICBKU0M6OkpTT2Jq
ZWN0KiBqc09iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGFzT2JqZWN0KGpzVmFsdWUoKSk7IH0KKyAg
ICBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdFN0
YXRlOyB9CiAKLSAgICBjbGFzcyBTY3JpcHRPYmplY3QgOiBwdWJsaWMgU2NyaXB0VmFsdWUgewot
ICAgIHB1YmxpYzoKLSAgICAgICAgU2NyaXB0T2JqZWN0KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpK
U09iamVjdCopOwotICAgICAgICBTY3JpcHRPYmplY3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBT
Y3JpcHRWYWx1ZSYpOwotICAgICAgICBTY3JpcHRPYmplY3QoKSA6IG1fc2NyaXB0U3RhdGUoMCkg
eyB9Ci0gICAgICAgIEpTQzo6SlNPYmplY3QqIGpzT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gYXNP
YmplY3QoanNWYWx1ZSgpKTsgfQotICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUo
KSBjb25zdCB7IHJldHVybiBtX3NjcmlwdFN0YXRlOyB9Citwcm90ZWN0ZWQ6CisgICAgSlNDOjpF
eGVjU3RhdGUqIG1fc2NyaXB0U3RhdGU7Cit9OwogCi0gICAgcHJvdGVjdGVkOgotICAgICAgICBK
U0M6OkV4ZWNTdGF0ZSogbV9zY3JpcHRTdGF0ZTsKLSAgICB9OwotCi0gICAgY2xhc3MgU2NyaXB0
R2xvYmFsT2JqZWN0IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBib29sIHNldChKU0M6
OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFNjcmlwdE9iamVjdCYpOwotI2lm
IEVOQUJMRShJTlNQRUNUT1IpCi0gICAgICAgIHN0YXRpYyBib29sIHNldChKU0M6OkV4ZWNTdGF0
ZSosIGNvbnN0IGNoYXIqIG5hbWUsIEluc3BlY3RvckZyb250ZW5kSG9zdCopOwotI2VuZGlmCi0g
ICAgICAgIHN0YXRpYyBib29sIGdldChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUs
IFNjcmlwdE9iamVjdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCByZW1vdmUoSlNDOjpFeGVjU3Rh
dGUqLCBjb25zdCBjaGFyKiBuYW1lKTsKLSAgICBwcml2YXRlOgotICAgICAgICBTY3JpcHRHbG9i
YWxPYmplY3QoKSB7IH0KLSAgICB9OwotCi19Cit9IC8vIG5hbWVzcGFjZSBEZXByZWNhdGVkCiAK
ICNlbmRpZiAvLyBTY3JpcHRPYmplY3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdz
L1NjcmlwdFZhbHVlLmNwcApzaW1pbGFyaXR5IGluZGV4IDcxJQpyZW5hbWUgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAKcmVuYW1lIHRvIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAKaW5kZXggNzkxODQ0YS4uNWM2MGIx
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywg
MjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KGMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKQEAgLTcsMTMgKzcsMTMgQEAKICAqIGFyZSBtZXQ6CiAgKgogICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLiAKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCiAgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVz
IG9mCiAgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKiAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgogICoKICAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCiAgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECkBAIC0zMCwyMiArMzAsMjAgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogCi0jaW5jbHVk
ZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCi0K
LSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNWYWx1ZVJlZi5oPgotCi0jaW5jbHVkZSA8aGVhcC9TdHJvbmcuaD4KLSNpbmNsdWRl
IDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU0xvY2su
aD4KKyNpbmNsdWRlICJBUElDYXN0LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCisj
aW5jbHVkZSAiSlNMb2NrLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiB1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOwogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgRGVwcmVjYXRl
ZCB7CiAKLWJvb2wgU2NyaXB0VmFsdWU6OmdldFN0cmluZyhKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0
U3RhdGUsIFN0cmluZyYgcmVzdWx0KSBjb25zdAorU2NyaXB0VmFsdWU6On5TY3JpcHRWYWx1ZSgp
Cit7Cit9CisKK2Jvb2wgU2NyaXB0VmFsdWU6OmdldFN0cmluZyhFeGVjU3RhdGUqIHNjcmlwdFN0
YXRlLCBTdHJpbmcmIHJlc3VsdCkgY29uc3QKIHsKICAgICBpZiAoIW1fdmFsdWUpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTU1LDcgKzUzLDcgQEAgYm9vbCBTY3JpcHRWYWx1ZTo6Z2V0U3Ry
aW5nKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgU3RyaW5nJiByZXN1bHQpIGNvbnN0CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLVN0cmluZyBTY3JpcHRWYWx1ZTo6dG9TdHJpbmcoSlNDOjpF
eGVjU3RhdGUqIHNjcmlwdFN0YXRlKSBjb25zdAorU3RyaW5nIFNjcmlwdFZhbHVlOjp0b1N0cmlu
ZyhFeGVjU3RhdGUqIHNjcmlwdFN0YXRlKSBjb25zdAogewogICAgIFN0cmluZyByZXN1bHQgPSBt
X3ZhbHVlLmdldCgpLnRvU3RyaW5nKHNjcmlwdFN0YXRlKS0+dmFsdWUoc2NyaXB0U3RhdGUpOwog
ICAgIC8vIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSBhbiBleGNlcHRpb24gaXMgdGhyb3duIGFzIHBh
cnQgb2YgaW52b2tpbmcgdG9TdHJpbmcgb24gdGhlIG9iamVjdC4KQEAgLTY0LDEyICs2MiwxMSBA
QCBTdHJpbmcgU2NyaXB0VmFsdWU6OnRvU3RyaW5nKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0
ZSkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1ib29sIFNjcmlwdFZhbHVlOjppc0Vx
dWFsKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0VmFsdWUmIGFub3Ro
ZXJWYWx1ZSkgY29uc3QKK2Jvb2wgU2NyaXB0VmFsdWU6OmlzRXF1YWwoRXhlY1N0YXRlKiBzY3Jp
cHRTdGF0ZSwgY29uc3QgU2NyaXB0VmFsdWUmIGFub3RoZXJWYWx1ZSkgY29uc3QKIHsKICAgICBp
ZiAoaGFzTm9WYWx1ZSgpKQogICAgICAgICByZXR1cm4gYW5vdGhlclZhbHVlLmhhc05vVmFsdWUo
KTsKLQotICAgIHJldHVybiBKU1ZhbHVlSXNFcXVhbCh0b1JlZihzY3JpcHRTdGF0ZSksIHRvUmVm
KHNjcmlwdFN0YXRlLCBqc1ZhbHVlKCkpLCB0b1JlZihzY3JpcHRTdGF0ZSwgYW5vdGhlclZhbHVl
LmpzVmFsdWUoKSksIDApOworICAgIHJldHVybiBKU1ZhbHVlSXNFcXVhbCh0b1JlZihzY3JpcHRT
dGF0ZSksIHRvUmVmKHNjcmlwdFN0YXRlLCBqc1ZhbHVlKCkpLCB0b1JlZihzY3JpcHRTdGF0ZSwg
YW5vdGhlclZhbHVlLmpzVmFsdWUoKSksIG51bGxwdHIpOwogfQogCiBib29sIFNjcmlwdFZhbHVl
Ojppc051bGwoKSBjb25zdApAQCAtOTksMzMgKzk2LDE3IEBAIGJvb2wgU2NyaXB0VmFsdWU6Omlz
RnVuY3Rpb24oKSBjb25zdAogICAgIHJldHVybiBnZXRDYWxsRGF0YShtX3ZhbHVlLmdldCgpLCBj
YWxsRGF0YSkgIT0gQ2FsbFR5cGVOb25lOwogfQogCi1QYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gU2NyaXB0VmFsdWU6OnNlcmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3Rh
dGUsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQotewotICAgIHJldHVy
biBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzY3JpcHRTdGF0ZSwganNWYWx1ZSgpLCAw
LCAwLCB0aHJvd0V4Y2VwdGlvbnMpOwotfQotCi1QYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gU2NyaXB0VmFsdWU6OnNlcmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUs
IE1lc3NhZ2VQb3J0QXJyYXkqIG1lc3NhZ2VQb3J0cywgQXJyYXlCdWZmZXJBcnJheSogYXJyYXlC
dWZmZXJzLCBib29sJiBkaWRUaHJvdykKLXsKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBzZXJpYWxpemVkVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzY3Jp
cHRTdGF0ZSwganNWYWx1ZSgpLCBtZXNzYWdlUG9ydHMsIGFycmF5QnVmZmVycyk7Ci0gICAgZGlk
VGhyb3cgPSBzY3JpcHRTdGF0ZS0+aGFkRXhjZXB0aW9uKCk7Ci0gICAgcmV0dXJuIHNlcmlhbGl6
ZWRWYWx1ZS5yZWxlYXNlKCk7Ci19Ci0KLVNjcmlwdFZhbHVlIFNjcmlwdFZhbHVlOjpkZXNlcmlh
bGl6ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSog
dmFsdWUsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQotewotICAgIHJl
dHVybiBTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZS0+dm0oKSwgdmFsdWUtPmRlc2VyaWFsaXplKHNj
cmlwdFN0YXRlLCBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAwLCB0aHJvd0V4
Y2VwdGlvbnMpKTsKLX0KLQogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi1zdGF0aWMgUGFzc1JlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4ganNUb0luc3BlY3RvclZhbHVlKEpTQzo6RXhlY1N0YXRlKiBzY3Jp
cHRTdGF0ZSwgSlNWYWx1ZSB2YWx1ZSwgaW50IG1heERlcHRoKQorc3RhdGljIFBhc3NSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+IGpzVG9JbnNwZWN0b3JWYWx1ZShFeGVjU3RhdGUqIHNjcmlwdFN0YXRl
LCBKU1ZhbHVlIHZhbHVlLCBpbnQgbWF4RGVwdGgpCiB7CiAgICAgaWYgKCF2YWx1ZSkgewogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIAogICAgIGlmICghbWF4RGVwdGgpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIG1heERlcHRoLS07CiAKICAgICBp
ZiAodmFsdWUuaXNOdWxsKCkgfHwgdmFsdWUuaXNVbmRlZmluZWQoKSkKQEAgLTEzOCw2ICsxMTks
NyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4ganNUb0luc3BlY3RvclZhbHVl
KEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZQogICAgICAgICBTdHJpbmcgcyA9IHZhbHVlLmdl
dFN0cmluZyhzY3JpcHRTdGF0ZSk7CiAgICAgICAgIHJldHVybiBJbnNwZWN0b3JTdHJpbmc6OmNy
ZWF0ZShTdHJpbmcocy5jaGFyYWN0ZXJzKCksIHMubGVuZ3RoKCkpKTsKICAgICB9CisKICAgICBp
ZiAodmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICBpZiAoaXNKU0FycmF5KHZhbHVlKSkgewog
ICAgICAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBpbnNwZWN0b3JBcnJheSA9IEluc3Bl
Y3RvckFycmF5OjpjcmVhdGUoKTsKQEAgLTE0Nyw3ICsxMjksNyBAQCBzdGF0aWMgUGFzc1JlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4ganNUb0luc3BlY3RvclZhbHVlKEpTQzo6RXhlY1N0YXRlKiBzY3Jp
cHRTdGF0ZQogICAgICAgICAgICAgICAgIEpTVmFsdWUgZWxlbWVudCA9IGFycmF5LT5nZXRJbmRl
eChzY3JpcHRTdGF0ZSwgaSk7CiAgICAgICAgICAgICAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVl
PiBlbGVtZW50VmFsdWUgPSBqc1RvSW5zcGVjdG9yVmFsdWUoc2NyaXB0U3RhdGUsIGVsZW1lbnQs
IG1heERlcHRoKTsKICAgICAgICAgICAgICAgICBpZiAoIWVsZW1lbnRWYWx1ZSkKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgICAgICAgICAgICAgIGluc3BlY3RvckFycmF5LT5wdXNoVmFsdWUoZWxlbWVudFZhbHVl
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBpbnNwZWN0b3JBcnJheTsKQEAg
LTE2MSwyMCArMTQzLDIxIEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBqc1Rv
SW5zcGVjdG9yVmFsdWUoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlCiAgICAgICAgICAgICBK
U1ZhbHVlIHByb3BlcnR5VmFsdWUgPSBvYmplY3QtPmdldChzY3JpcHRTdGF0ZSwgbmFtZSk7CiAg
ICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGluc3BlY3RvclZhbHVlID0ganNUb0lu
c3BlY3RvclZhbHVlKHNjcmlwdFN0YXRlLCBwcm9wZXJ0eVZhbHVlLCBtYXhEZXB0aCk7CiAgICAg
ICAgICAgICBpZiAoIWluc3BlY3RvclZhbHVlKQotICAgICAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgaW5zcGVjdG9yT2Jq
ZWN0LT5zZXRWYWx1ZShTdHJpbmcobmFtZS5jaGFyYWN0ZXJzKCksIG5hbWUubGVuZ3RoKCkpLCBp
bnNwZWN0b3JWYWx1ZSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGluc3BlY3Rvck9iamVj
dDsKICAgICB9CisKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKKyAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gU2NyaXB0
VmFsdWU6OnRvSW5zcGVjdG9yVmFsdWUoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlKSBjb25z
dAorUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gU2NyaXB0VmFsdWU6OnRvSW5zcGVjdG9yVmFs
dWUoRXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSkgY29uc3QKIHsKLSAgICBKU0M6OkpTTG9ja0hvbGRl
ciBob2xkZXIoc2NyaXB0U3RhdGUpOworICAgIEpTTG9ja0hvbGRlciBob2xkZXIoc2NyaXB0U3Rh
dGUpOwogICAgIHJldHVybiBqc1RvSW5zcGVjdG9yVmFsdWUoc2NyaXB0U3RhdGUsIG1fdmFsdWUu
Z2V0KCksIEluc3BlY3RvclZhbHVlOjptYXhEZXB0aCk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKElO
U1BFQ1RPUikKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgRGVwcmVj
YXRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5oCnNpbWlsYXJp
dHkgaW5kZXggNzklCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dFZhbHVlLmgKcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRW
YWx1ZS5oCmluZGV4IGU4YjBhZmIuLmQ1ZmFkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Jp
bmRpbmdzL1NjcmlwdFZhbHVlLmgKQEAgLTEsMTAgKzEsMTEgQEAKIC8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChj
KSAyMDA4LCAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKKyAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKICAqIG1ldDoKLSAqIAorICoKICAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CiAgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCiAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCkBAIC0xNCw3ICsxNSw3IEBACiAgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCiAgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQogICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqIAorICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKICAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCiAgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKQEAgLTMxLDEyICszMiwxMCBAQAogI2lmbmRlZiBTY3JpcHRWYWx1ZV9oCiAjZGVm
aW5lIFNjcmlwdFZhbHVlX2gKIAotI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgot
I2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCi0jaW5jbHVkZSA8aGVhcC9TdHJvbmcuaD4KLSNpbmNs
dWRlIDxoZWFwL1N0cm9uZ0lubGluZXMuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUu
aD4KLSNpbmNsdWRlIDxydW50aW1lL09wZXJhdGlvbnMuaD4KKyNpbmNsdWRlICJKU0NKU1ZhbHVl
LmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIlN0cm9uZy5oIgorI2luY2x1
ZGUgIlN0cm9uZ0lubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00NCwxNSArNDMsMTMgQEAgbmFtZXNwYWNl
IEluc3BlY3RvciB7CiBjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKIH0KIAotbmFtZXNwYWNlIFdlYkNv
cmUgeworbmFtZXNwYWNlIERlcHJlY2F0ZWQgewogCi1jbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFs
dWU7Ci0KLWNsYXNzIFNjcmlwdFZhbHVlIHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFNjcmlw
dFZhbHVlIHsKIHB1YmxpYzoKICAgICBTY3JpcHRWYWx1ZSgpIHsgfQotICAgIFNjcmlwdFZhbHVl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFsdWUpIDogbV92YWx1ZSh2bSwgdmFsdWUpIHt9
Ci0gICAgdmlydHVhbCB+U2NyaXB0VmFsdWUoKSB7fQorICAgIFNjcmlwdFZhbHVlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTVmFsdWUgdmFsdWUpIDogbV92YWx1ZSh2bSwgdmFsdWUpIHsgfQorICAgIHZp
cnR1YWwgflNjcmlwdFZhbHVlKCk7CiAKICAgICBKU0M6OkpTVmFsdWUganNWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdmFsdWUuZ2V0KCk7IH0KICAgICBib29sIGdldFN0cmluZyhKU0M6OkV4ZWNT
dGF0ZSosIFN0cmluZyYgcmVzdWx0KSBjb25zdDsKQEAgLTY4LDEwICs2NSw2IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRWYWx1ZSYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuIG1fdmFsdWUgPT0gb3RoZXIubV92YWx1ZTsgfQogCi0gICAgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSosIFNlcmlhbGl6YXRp
b25FcnJvck1vZGUgPSBUaHJvd2luZyk7Ci0gICAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IHNlcmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSosIE1lc3NhZ2VQb3J0QXJyYXkqLCBBcnJh
eUJ1ZmZlckFycmF5KiwgYm9vbCYpOwotICAgIHN0YXRpYyBTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6
ZShKU0M6OkV4ZWNTdGF0ZSosIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIFNlcmlhbGl6YXRpb25F
cnJvck1vZGUgPSBUaHJvd2luZyk7Ci0KICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gdG9JbnNwZWN0b3JWYWx1ZShKU0M6OkV4
ZWNTdGF0ZSopIGNvbnN0OwogI2VuZGlmCkBAIC04MCw2ICs3Myw2IEBAIHByaXZhdGU6CiAgICAg
SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPiBtX3ZhbHVlOwogfTsKIAotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgRGVwcmVjYXRlZAogCiAjZW5kaWYgLy8gU2NyaXB0VmFs
dWVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGMyMTNkZmQuLmExNjIzYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTUsNiAr
NSwxNDQgQEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAg
ICBQYXJ0IDI6IFB1c2ggU2NyaXB0IHdyYXBwZXIgY2xhc3NlcyBkb3duIGludG8gSmF2YVNjcmlw
dENvcmUvYmluZGluZ3MuCisKKyAgICAgICAgICAtIE1vdmUgU2NyaXB0T2JqZWN0IGFuZCBTY3Jp
cHRWYWx1ZSBpbnRvIEphdmFTY3JpcHRDb3JlIGJ1dCBuYW1lc3BhY2UgRGVwcmVjYXRlZAorICAg
ICAgICAgIC0gQWRkIGZvcndhcmRpbmcgaGVhZGVycworICAgICAgICAgIC0gVXNlIERlcHJlY2F0
ZWQ6OlNjcmlwdE9iamVjdCBhbmQgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZXZlcnl3aGVyZS4K
KworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkFueS5jcHA6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
QW55Lmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJGYWN0b3J5LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5Lmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4Lmg6CisgICAgICAgIChXZWJDb3JlOjpJ
REJJbmRleDo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6b3Blbktl
eUN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuY3BwOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmg6CisgICAgICAgIChXZWJD
b3JlOjpJREJLZXlSYW5nZTo6bG93ZXJCb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlS
YW5nZTo6dXBwZXJCb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlSYW5nZTo6Ym91bmQp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
UmVxdWVzdC5jcHA6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmNwcDoKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5oOgorICAgICAgICAqIE1v
ZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHA6CisgICAgICAgICog
TW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lmg6CisgICAgICAgICog
VXNlSlNDLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dl
YkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9EaWN0aW9uYXJ5Lmg6CisgICAgICAg
IChXZWJDb3JlOjpEaWN0aW9uYXJ5OjpnZXRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlc2Vy
aWFsaXplSURCVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6ZGVzZXJpYWxpemVJREJWYWx1ZUJ1
ZmZlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNEaWN0aW9uYXJ5Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxl
bWVudEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhv
c3RDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1Nl
cnZlci5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nj
cmlwdEdsb2JhbE9iamVjdC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRPYmplY3QuY3BwLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEdsb2Jh
bE9iamVjdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q2xpZW50LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEdsb2JhbE9iamVjdDo6U2NyaXB0
R2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5jcHA6
CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHRTdGF0ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OnNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRl
c2VyaWFsaXplKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICog
ZG9tL0N1c3RvbUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUV2ZW50Ojppbml0
Q3VzdG9tRXZlbnQpOgorICAgICAgICAqIGRvbS9DdXN0b21FdmVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VzdG9tRXZlbnQ6OmRldGFpbCk6CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5j
cHA6CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6TWVz
c2FnZUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50OjpkYXRh
QXNTY3JpcHRWYWx1ZSk6CisgICAgICAgICogZG9tL1BvcFN0YXRlRXZlbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlBvcFN0YXRlRXZlbnQ6OnN0YXRlKToKKyAgICAgICAgKiBkb20vU2NyaXB0RWxl
bWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9Db25z
b2xlTWVzc2FnZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHA6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0QmFzZS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0QmFzZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVs
ZS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHA6CisgICAgICAgICog
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oOgorICAgICAgICAqIGluc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1hbmFnZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3Bw
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHA6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQ2FudmFzQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFz
SW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndyYXBDYW52YXMyRFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3cmFwV2ViR0xSZW5k
ZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFn
ZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHA6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNwcDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFn
ZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHA6CisgICAg
ICAgICogaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5jcHA6CisgICAgICAgICogaW5zcGVjdG9y
L1NjcmlwdEFyZ3VtZW50cy5oOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHREZWJ1Z0xpc3Rl
bmVyLmg6CisgICAgICAgICogcGFnZS9Db25zb2xlLmNwcDoKKyAgICAgICAgKiBwYWdlL0ZyYW1l
LmNwcDoKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25zb2xlLmNwcDoKKyAgICAgICAgKiBwbHVnaW5z
L1BsdWdpblZpZXcuY3BwOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHdvcmtlcnMvU2hhcmVkV29ya2Vy
R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3Bw
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKiB4bWwvWE1M
VHJlZVZpZXdlci5jcHA6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5j
cHA6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgor
CisyMDEzLTEyLTA1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBNb3JlIEluc3BlY3RvciBSZXF1aXJlZCBDbGFzc2Vz
IERvd24gaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTI1MzI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKICAgICAgICAgUGFydCAxOiBQdXNoIGRvd24gY29yZSBpbnNwZWN0b3IgY2xhc3Nl
cy4KIAogICAgICAgICAgIC0gTW92ZSBJbnNwZWN0QWdlbnRCYXNlLCBJbnNwZWN0b3JBZ2VudFJl
Z2lzdHJ5LCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9yVmFsdWVzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9iaW5kaW5ncy9TY3JpcHRP
YmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2JpbmRpbmdzL1Njcmlw
dE9iamVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczNmI4MjcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9iaW5kaW5n
cy9TY3JpcHRPYmplY3QuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfU2Ny
aXB0T2JqZWN0X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfU2NyaXB0T2JqZWN0X2gKKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRPYmplY3QuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvYmluZGluZ3MvU2NyaXB0VmFsdWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc4YWY1MAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2JpbmRpbmdzL1NjcmlwdFZhbHVl
LmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX1NjcmlwdFZhbHVlX2gKKyNk
ZWZpbmUgV2ViQ29yZV9GV0RfU2NyaXB0VmFsdWVfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1NjcmlwdFZhbHVlLmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4
IDZjMmVjODAuLjcwMjQ0N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjQ0
OSw4ICsyNDQ5LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0SGVhcFNuYXBzaG90LmggXAotCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dE9iamVjdC5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5o
IFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuY3BwIFwK
KwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuaCBcCiAJU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0UHJvZmlsZU5vZGUuaCBcCkBAIC0yNDU5LDggKzI0NTksNiBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNv
ZGUuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oIFwKLQlTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdFZhbHVlLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFdy
YXBwYWJsZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGVJ
bmxpbmVzLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQW55LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5jcHAK
aW5kZXggY2IxZTYzZS4uODI3YTRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQW55LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJBbnkuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgUGFzc1JlZlB0cjxJREJUcmFuc2Fj
dGlvbj4gSURCQW55OjppZGJUcmFuc2FjdGlvbigpCiAgICAgcmV0dXJuIG1faWRiVHJhbnNhY3Rp
b247CiB9CiAKLWNvbnN0IFNjcmlwdFZhbHVlJiBJREJBbnk6OnNjcmlwdFZhbHVlKCkKK2NvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBJREJBbnk6OnNjcmlwdFZhbHVlKCkKIHsKICAgICBB
U1NFUlQobV90eXBlID09IFNjcmlwdFZhbHVlVHlwZSk7CiAgICAgcmV0dXJuIG1fc2NyaXB0VmFs
dWU7CkBAIC0xODYsNyArMTg2LDcgQEAgSURCQW55OjpJREJBbnkoUGFzc1JlZlB0cjxJREJPYmpl
Y3RTdG9yZT4gdmFsdWUpCiB7CiB9CiAKLUlEQkFueTo6SURCQW55KGNvbnN0IFNjcmlwdFZhbHVl
JiB2YWx1ZSkKK0lEQkFueTo6SURCQW55KGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2
YWx1ZSkKICAgICA6IG1fdHlwZShTY3JpcHRWYWx1ZVR5cGUpCiAgICAgLCBtX3NjcmlwdFZhbHVl
KHZhbHVlKQogICAgICwgbV9pbnRlZ2VyKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkFueS5oCmluZGV4IDZkZTQ1Y2YuLmQ3Mjg0NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5oCkBAIC0yOSw4ICsyOSw4IEBACiAjaWYgRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCiAKICNpbmNsdWRlICJJREJLZXlQYXRoLmgiCi0jaW5jbHVkZSAiU2Ny
aXB0VmFsdWUuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKKyNpbmNsdWRlIDxiaW5k
aW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0xMDEsNyAr
MTAxLDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8SURCSW5kZXg+IGlkYkluZGV4KCk7CiAg
ICAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gaWRiT2JqZWN0U3RvcmUoKTsKICAgICBQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uPiBpZGJUcmFuc2FjdGlvbigpOwotICAgIGNvbnN0IFNjcmlw
dFZhbHVlJiBzY3JpcHRWYWx1ZSgpOworICAgIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
JiBzY3JpcHRWYWx1ZSgpOwogICAgIGludDY0X3QgaW50ZWdlcigpOwogICAgIGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKCk7CiAgICAgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCgpIHsgcmV0dXJuIG1f
aWRiS2V5UGF0aDsgfTsKQEAgLTExOCw3ICsxMTgsNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0
IElEQkFueShQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPik7CiAgICAgZXhwbGljaXQgSURCQW55
KGNvbnN0IElEQktleVBhdGgmKTsKICAgICBleHBsaWNpdCBJREJBbnkoY29uc3QgU3RyaW5nJik7
Ci0gICAgZXhwbGljaXQgSURCQW55KGNvbnN0IFNjcmlwdFZhbHVlJik7CisgICAgZXhwbGljaXQg
SURCQW55KGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJik7CiAgICAgZXhwbGljaXQgSURC
QW55KGludDY0X3QpOwogCiAgICAgY29uc3QgVHlwZSBtX3R5cGU7CkBAIC0xMzMsNyArMTMzLDcg
QEAgcHJpdmF0ZToKICAgICBjb25zdCBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG1faWRiT2JqZWN0
U3RvcmU7CiAgICAgY29uc3QgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX2lkYlRyYW5zYWN0aW9u
OwogICAgIGNvbnN0IElEQktleVBhdGggbV9pZGJLZXlQYXRoOwotICAgIGNvbnN0IFNjcmlwdFZh
bHVlIG1fc2NyaXB0VmFsdWU7CisgICAgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgbV9z
Y3JpcHRWYWx1ZTsKICAgICBjb25zdCBTdHJpbmcgbV9zdHJpbmc7CiAgICAgY29uc3QgaW50NjRf
dCBtX2ludGVnZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvci5jcHAKaW5kZXggZWYwNjU0NC4uYjk5ZDgzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCkBAIC05OCwxOSArOTgsMTkgQEAgY29u
c3QgU3RyaW5nJiBJREJDdXJzb3I6OmRpcmVjdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIGRpcmVj
dGlvblRvU3RyaW5nKG1fZGlyZWN0aW9uKTsKIH0KIAotY29uc3QgU2NyaXB0VmFsdWUmIElEQkN1
cnNvcjo6a2V5KCkgY29uc3QKK2NvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBJREJDdXJz
b3I6OmtleSgpIGNvbnN0CiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJDdXJzb3I6OmtleSIp
OwogICAgIHJldHVybiBtX2N1cnJlbnRLZXlWYWx1ZTsKIH0KIAotY29uc3QgU2NyaXB0VmFsdWUm
IElEQkN1cnNvcjo6cHJpbWFyeUtleSgpIGNvbnN0Citjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYgSURCQ3Vyc29yOjpwcmltYXJ5S2V5KCkgY29uc3QKIHsKICAgICBMT0coU3RvcmFnZUFQ
SSwgIklEQkN1cnNvcjo6cHJpbWFyeUtleSIpOwogICAgIHJldHVybiBtX2N1cnJlbnRQcmltYXJ5
S2V5VmFsdWU7CiB9CiAKLWNvbnN0IFNjcmlwdFZhbHVlJiBJREJDdXJzb3I6OnZhbHVlKCkgY29u
c3QKK2NvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBJREJDdXJzb3I6OnZhbHVlKCkgY29u
c3QKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgIklEQkN1cnNvcjo6dmFsdWUiKTsKICAgICByZXR1
cm4gbV9jdXJyZW50VmFsdWU7CkBAIC0xMjEsNyArMTIxLDcgQEAgSURCQW55KiBJREJDdXJzb3I6
OnNvdXJjZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc291cmNlLmdldCgpOwogfQogCi1QYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IElEQkN1cnNvcjo6dXBkYXRlKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
U2NyaXB0VmFsdWUmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVx
dWVzdD4gSURCQ3Vyc29yOjp1cGRhdGUoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIExPRyhTdG9y
YWdlQVBJLCAiSURCQ3Vyc29yOjp1cGRhdGUiKTsKIApAQCAtMTc3LDcgKzE3Nyw3IEBAIHZvaWQg
SURCQ3Vyc29yOjphZHZhbmNlKHVuc2lnbmVkIGxvbmcgY291bnQsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogICAgIEFTU0VSVCghZWMpOwogfQogCi12b2lkIElEQkN1cnNvcjo6Y29udGludWVGdW5jdGlv
bihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5
VmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rp
b24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmIGtleVZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBET01SZXF1ZXN0
U3RhdGUgcmVxdWVzdFN0YXRlKGNvbnRleHQpOwogICAgIFJlZlB0cjxJREJLZXk+IGtleSA9IHNj
cmlwdFZhbHVlVG9JREJLZXkoJnJlcXVlc3RTdGF0ZSwga2V5VmFsdWUpOwpAQCAtMjYzLDcgKzI2
Myw3IEBAIHZvaWQgSURCQ3Vyc29yOjpjbG9zZSgpCiAgICAgfQogfQogCi12b2lkIElEQkN1cnNv
cjo6c2V0VmFsdWVSZWFkeShET01SZXF1ZXN0U3RhdGUqIHN0YXRlLCBQYXNzUmVmUHRyPElEQktl
eT4ga2V5LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgU2NyaXB0VmFsdWUmIHZhbHVl
KQordm9pZCBJREJDdXJzb3I6OnNldFZhbHVlUmVhZHkoRE9NUmVxdWVzdFN0YXRlKiBzdGF0ZSwg
UGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSkKIHsKICAgICBtX2N1cnJlbnRLZXkgPSBrZXk7
CiAgICAgbV9jdXJyZW50S2V5VmFsdWUgPSBpZGJLZXlUb1NjcmlwdFZhbHVlKHN0YXRlLCBtX2N1
cnJlbnRLZXkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQ3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3Iu
aAppbmRleCBjNmE3NDRmLi4wNGViMzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDdXJzb3IuaApAQCAtMzEsOCArMzEsOCBAQAogI2luY2x1ZGUgIklEQktleS5o
IgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiSW5kZXhlZERCLmgiCi0j
aW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKKyNp
bmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CkBAIC02MywyMiArNjMsMjIgQEAgcHVibGljOgogCiAgICAgLy8gSW1wbGVtZW50IHRoZSBJREwK
ICAgICBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbigpIGNvbnN0OwotICAgIGNvbnN0IFNjcmlwdFZh
bHVlJiBrZXkoKSBjb25zdDsKLSAgICBjb25zdCBTY3JpcHRWYWx1ZSYgcHJpbWFyeUtleSgpIGNv
bnN0OwotICAgIGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1ZSgpIGNvbnN0OworICAgIGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXkoKSBjb25zdDsKKyAgICBjb25zdCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYgcHJpbWFyeUtleSgpIGNvbnN0OworICAgIGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiB2YWx1ZSgpIGNvbnN0OwogICAgIElEQkFueSogc291cmNlKCkgY29uc3Q7
CiAKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHVwZGF0ZShKU0M6OkV4ZWNTdGF0ZSosIFNj
cmlwdFZhbHVlJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
dXBkYXRlKEpTQzo6RXhlY1N0YXRlKiwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBFeGNlcHRp
b25Db2RlJik7CiAgICAgdm9pZCBhZHZhbmNlKHVuc2lnbmVkIGxvbmcsIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICAvLyBGSVhNRTogVHJ5IHRvIG1vZGlmeSB0aGUgY29kZSBnZW5lcmF0b3Igc28gdGhp
cyBvdmVybG9hZCBpcyB1bm5lZWRlZC4KICAgICB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IGNvbnRpbnVlRnVuY3Rpb24o
c3RhdGljX2Nhc3Q8SURCS2V5Kj4oMCksIGVjKTsgfQotICAgIHZvaWQgY29udGludWVGdW5jdGlv
bihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0
aW9uQ29kZSYpOworICAgIHZvaWQgY29udGludWVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYp
OwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZvaWQgY29udGludWVGdW5jdGlv
bihQYXNzUmVmUHRyPElEQktleT4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHBvc3RTdWNj
ZXNzSGFuZGxlckNhbGxiYWNrKCk7CiAgICAgdm9pZCBjbG9zZSgpOwotICAgIHZvaWQgc2V0VmFs
dWVSZWFkeShET01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8
SURCS2V5PiBwcmltYXJ5S2V5LCBTY3JpcHRWYWx1ZSYpOworICAgIHZvaWQgc2V0VmFsdWVSZWFk
eShET01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5
PiBwcmltYXJ5S2V5LCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYpOwogICAgIFBhc3NSZWZQdHI8
SURCS2V5PiBpZGJQcmltYXJ5S2V5KCkgeyByZXR1cm4gbV9jdXJyZW50UHJpbWFyeUtleTsgfQog
CiBwcm90ZWN0ZWQ6CkBAIC05NywxMSArOTcsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZ290
VmFsdWU7CiAgICAgLy8gVGhlc2UgdmFsdWVzIGFyZSBoZWxkIGJlY2F1c2UgbV9iYWNrZW5kIG1h
eSBhZHZhbmNlIHdoaWxlIHRoZXkKICAgICAvLyBhcmUgc3RpbGwgdmFsaWQgZm9yIHRoZSBjdXJy
ZW50IHN1Y2Nlc3MgaGFuZGxlcnMuCi0gICAgU2NyaXB0VmFsdWUgbV9jdXJyZW50S2V5VmFsdWU7
Ci0gICAgU2NyaXB0VmFsdWUgbV9jdXJyZW50UHJpbWFyeUtleVZhbHVlOworICAgIERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlIG1fY3VycmVudEtleVZhbHVlOworICAgIERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlIG1fY3VycmVudFByaW1hcnlLZXlWYWx1ZTsKICAgICBSZWZQdHI8SURCS2V5PiBtX2N1
cnJlbnRLZXk7CiAgICAgUmVmUHRyPElEQktleT4gbV9jdXJyZW50UHJpbWFyeUtleTsKLSAgICBT
Y3JpcHRWYWx1ZSBtX2N1cnJlbnRWYWx1ZTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBt
X2N1cnJlbnRWYWx1ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKaW5kZXggOWY0MDZmYS4u
ZDI4YTU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFj
dG9yeS5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCBQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+
IElEQkZhY3Rvcnk6OmRlbGV0ZURhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqCiAgICAg
cmV0dXJuIHJlcXVlc3Q7CiB9CiAKLXNob3J0IElEQkZhY3Rvcnk6OmNtcChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYgZmlyc3RWYWx1ZSwgY29uc3Qg
U2NyaXB0VmFsdWUmIHNlY29uZFZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKK3Nob3J0IElEQkZh
Y3Rvcnk6OmNtcChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYgZmlyc3RWYWx1ZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUmIHNlY29uZFZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBET01SZXF1ZXN0U3Rh
dGUgcmVxdWVzdFN0YXRlKGNvbnRleHQpOwogICAgIFJlZlB0cjxJREJLZXk+IGZpcnN0ID0gc2Ny
aXB0VmFsdWVUb0lEQktleSgmcmVxdWVzdFN0YXRlLCBmaXJzdFZhbHVlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaAppbmRleCA3Mzc0ZWNmLi43Nzhm
ZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0
b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5o
CkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVl
c3Q+IG9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgdW5z
aWduZWQgbG9uZyBsb25nIHZlcnNpb24sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRy
PElEQk9wZW5EQlJlcXVlc3Q+IGRlbGV0ZURhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIHNob3J0IGNtcChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU2NyaXB0VmFsdWUmIGZpcnN0LCBjb25zdCBT
Y3JpcHRWYWx1ZSYgc2Vjb25kLCBFeGNlcHRpb25Db2RlJik7CisgICAgc2hvcnQgY21wKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZmlyc3Qs
IGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBzZWNvbmQsIEV4Y2VwdGlvbkNvZGUmKTsK
IAogcHJpdmF0ZToKICAgICBJREJGYWN0b3J5KElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKaW5kZXgg
ZGY2MzczNC4uZWRmNGIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCSW5kZXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkluZGV4LmNwcApAQCAtNzUsNyArNzUsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElE
QkluZGV4OjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhcwog
ICAgIHJldHVybiByZXF1ZXN0OwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4
OjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlw
dFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykK
K1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwg
Y29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIExPRyhT
dG9yYWdlQVBJLCAiSURCSW5kZXg6Om9wZW5DdXJzb3IiKTsKICAgICBSZWZQdHI8SURCS2V5UmFu
Z2U+IGtleVJhbmdlID0gSURCS2V5UmFuZ2U6Om9ubHkoY29udGV4dCwga2V5LCBlYyk7CkBAIC0x
MDAsNyArMTAwLDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Y291bnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlAKICAgICByZXR1cm4gcmVxdWVz
dDsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Y291bnQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9u
Q29kZSYgZWMpCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4Ojpjb3VudChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYg
a2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgIklEQkluZGV4
Ojpjb3VudCIpOwogICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBJREJLZXlSYW5n
ZTo6b25seShjb250ZXh0LCBrZXksIGVjKTsKQEAgLTEzMCw3ICsxMzAsNyBAQCBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsCiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4
Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3Blbktl
eUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJJbmRleDo6b3BlbktleUN1cnNvciIp
OwogICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBJREJLZXlSYW5nZTo6b25seShj
b250ZXh0LCBrZXksIGVjKTsKQEAgLTEzOSw3ICsxMzksNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsCiAgICAgcmV0dXJuIG9wZW5LZXlDdXJzb3IoY29udGV4dCwga2V5UmFuZ2UucmVsZWFzZSgp
LCBkaXJlY3Rpb24sIGVjKTsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6
Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBr
ZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6
Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIExPRyhTdG9yYWdlQVBJ
LCAiSURCSW5kZXg6OmdldCIpOwogICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBJ
REJLZXlSYW5nZTo6b25seShjb250ZXh0LCBrZXksIGVjKTsKQEAgLTE2OSw3ICsxNjksNyBAQCBQ
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgUGFzc1JlZlB0cgogICAgIHJldHVybiByZXF1ZXN0OwogfQogCi1QYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpnZXRLZXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpnZXRLZXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJJbmRleDo6Z2V0S2V5Iik7CiAg
ICAgUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSA9IElEQktleVJhbmdlOjpvbmx5KGNvbnRl
eHQsIGtleSwgZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCSW5kZXguaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4
LmgKaW5kZXggMjYxNGUwMi4uZjk1NGFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCSW5kZXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJJbmRleC5oCkBAIC02MywyMyArNjMsMjMgQEAgcHVibGljOgogICAgIC8vIEZJ
WE1FOiBUcnkgdG8gbW9kaWZ5IHRoZSBjb2RlIGdlbmVyYXRvciBzbyB0aGlzIGlzIHVubmVlZGVk
LgogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3BlbkN1cnNvcihj
b250ZXh0LCBzdGF0aWNfY2FzdDxJREJLZXlSYW5nZSo+KDApLCBlYyk7IH0KICAgICBQYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7
IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIGtleVJhbmdlLCBJREJDdXJzb3I6OmRpcmVjdGlv
bk5leHQoKSwgZWMpOyB9Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4
Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIGtleSwgSURCQ3Vy
c29yOjpkaXJlY3Rpb25OZXh0KCksIGVjKTsgfQorICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3BlbkN1
cnNvcihjb250ZXh0LCBrZXksIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCgpLCBlYyk7IH0KICAg
ICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhj
ZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgY29uc3QgU3RyaW5n
JiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJik7
CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gY291bnQoY29udGV4dCwgc3Rh
dGljX2Nhc3Q8SURCS2V5UmFuZ2UqPigwKSwgZWMpOyB9CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5n
ZT4sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25D
b2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29k
ZSYpOwogCiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBvcGVu
S2V5Q3Vyc29yKGNvbnRleHQsIHN0YXRpY19jYXN0PElEQktleVJhbmdlKj4oMCksIGVjKTsgfQog
ICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgRXhjZXB0
aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5LZXlDdXJzb3IoY29udGV4dCwga2V5UmFuZ2UsIElE
QkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCgpLCBlYyk7IH0KLSAgICBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5LZXlDdXJz
b3IoY29udGV4dCwga2V5LCBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHQoKSwgZWMpOyB9CisgICAg
UGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlv
bkNvZGUmIGVjKSB7IHJldHVybiBvcGVuS2V5Q3Vyc29yKGNvbnRleHQsIGtleSwgSURCQ3Vyc29y
OjpkaXJlY3Rpb25OZXh0KCksIGVjKTsgfQogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3Bl
bktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5n
ZT4sIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBTY3JpcHRWYWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9u
Q29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbktleUN1cnNvcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgY29u
c3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gZ2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZ2V0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRp
b25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBnZXQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNv
ZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGdldEtleShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQ
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IGdldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29u
c3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURC
UmVxdWVzdD4gZ2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CiAKICAgICB2b2lkIG1hcmtEZWxl
dGVkKCkgeyBtX2RlbGV0ZWQgPSB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmNwcAppbmRleCA3MjhmOTUzLi4zZDU0ZmMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuY3BwCkBA
IC00OSwxMyArNDksMTMgQEAgSURCS2V5UmFuZ2U6OklEQktleVJhbmdlKFBhc3NSZWZQdHI8SURC
S2V5PiBsb3dlciwgUGFzc1JlZlB0cjxJREJLZXk+IHVwcGVyLCBMb3cKIHsKIH0KIAotU2NyaXB0
VmFsdWUgSURCS2V5UmFuZ2U6Omxvd2VyVmFsdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCkgY29uc3QKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIElEQktleVJhbmdlOjpsb3dlclZh
bHVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgRE9NUmVx
dWVzdFN0YXRlIHJlcXVlc3RTdGF0ZShjb250ZXh0KTsKICAgICByZXR1cm4gaWRiS2V5VG9TY3Jp
cHRWYWx1ZSgmcmVxdWVzdFN0YXRlLCBtX2xvd2VyKTsKIH0KIAotU2NyaXB0VmFsdWUgSURCS2V5
UmFuZ2U6OnVwcGVyVmFsdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkgY29uc3QK
K0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIElEQktleVJhbmdlOjp1cHBlclZhbHVlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgRE9NUmVxdWVzdFN0YXRlIHJl
cXVlc3RTdGF0ZShjb250ZXh0KTsKICAgICByZXR1cm4gaWRiS2V5VG9TY3JpcHRWYWx1ZSgmcmVx
dWVzdFN0YXRlLCBtX3VwcGVyKTsKQEAgLTcyLDcgKzcyLDcgQEAgUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4gSURCS2V5UmFuZ2U6Om9ubHkoUGFzc1JlZlB0cjxJREJLZXk+IHBycEtleSwgRXhjZXB0
aW9uQ28KICAgICByZXR1cm4gSURCS2V5UmFuZ2U6OmNyZWF0ZShrZXksIGtleSwgTG93ZXJCb3Vu
ZENsb3NlZCwgVXBwZXJCb3VuZENsb3NlZCk7CiB9CiAKLVBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+
IElEQktleVJhbmdlOjpvbmx5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0
IFNjcmlwdFZhbHVlJiBrZXlWYWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElE
QktleVJhbmdlPiBJREJLZXlSYW5nZTo6b25seShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5VmFsdWUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewogICAgIERPTVJlcXVlc3RTdGF0ZSByZXF1ZXN0U3RhdGUoY29udGV4dCk7CiAg
ICAgUmVmUHRyPElEQktleT4ga2V5ID0gc2NyaXB0VmFsdWVUb0lEQktleSgmcmVxdWVzdFN0YXRl
LCBrZXlWYWx1ZSk7CkBAIC04NCw3ICs4NCw3IEBAIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IElE
QktleVJhbmdlOjpvbmx5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0CiAg
ICAgcmV0dXJuIElEQktleVJhbmdlOjpjcmVhdGUoa2V5LCBrZXksIExvd2VyQm91bmRDbG9zZWQs
IFVwcGVyQm91bmRDbG9zZWQpOwogfQogCi1QYXNzUmVmUHRyPElEQktleVJhbmdlPiBJREJLZXlS
YW5nZTo6bG93ZXJCb3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
Y3JpcHRWYWx1ZSYgYm91bmRWYWx1ZSwgYm9vbCBvcGVuLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+IElEQktleVJhbmdlOjpsb3dlckJvdW5kKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBib3Vu
ZFZhbHVlLCBib29sIG9wZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIERPTVJlcXVlc3RT
dGF0ZSByZXF1ZXN0U3RhdGUoY29udGV4dCk7CiAgICAgUmVmUHRyPElEQktleT4gYm91bmQgPSBz
Y3JpcHRWYWx1ZVRvSURCS2V5KCZyZXF1ZXN0U3RhdGUsIGJvdW5kVmFsdWUpOwpAQCAtOTYsNyAr
OTYsNyBAQCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBJREJLZXlSYW5nZTo6bG93ZXJCb3VuZChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgIHJldHVybiBJREJLZXlSYW5nZTo6
Y3JlYXRlKGJvdW5kLCAwLCBvcGVuID8gTG93ZXJCb3VuZE9wZW4gOiBMb3dlckJvdW5kQ2xvc2Vk
LCBVcHBlckJvdW5kT3Blbik7CiB9CiAKLVBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IElEQktleVJh
bmdlOjp1cHBlckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNj
cmlwdFZhbHVlJiBib3VuZFZhbHVlLCBib29sIG9wZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFz
c1JlZlB0cjxJREJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6OnVwcGVyQm91bmQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGJvdW5k
VmFsdWUsIGJvb2wgb3BlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgRE9NUmVxdWVzdFN0
YXRlIHJlcXVlc3RTdGF0ZShjb250ZXh0KTsKICAgICBSZWZQdHI8SURCS2V5PiBib3VuZCA9IHNj
cmlwdFZhbHVlVG9JREJLZXkoJnJlcXVlc3RTdGF0ZSwgYm91bmRWYWx1ZSk7CkBAIC0xMDgsNyAr
MTA4LDcgQEAgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6OnVwcGVyQm91bmQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKICAgICByZXR1cm4gSURCS2V5UmFuZ2U6
OmNyZWF0ZSgwLCBib3VuZCwgTG93ZXJCb3VuZE9wZW4sIG9wZW4gPyBVcHBlckJvdW5kT3BlbiA6
IFVwcGVyQm91bmRDbG9zZWQpOwogfQogCi1QYXNzUmVmUHRyPElEQktleVJhbmdlPiBJREJLZXlS
YW5nZTo6Ym91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0
VmFsdWUmIGxvd2VyVmFsdWUsIGNvbnN0IFNjcmlwdFZhbHVlJiB1cHBlclZhbHVlLCBib29sIGxv
d2VyT3BlbiwgYm9vbCB1cHBlck9wZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6OmJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBsb3dlclZhbHVlLCBjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdXBwZXJWYWx1ZSwgYm9vbCBsb3dlck9wZW4sIGJvb2wg
dXBwZXJPcGVuLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBET01SZXF1ZXN0U3RhdGUgcmVx
dWVzdFN0YXRlKGNvbnRleHQpOwogICAgIFJlZlB0cjxJREJLZXk+IGxvd2VyID0gc2NyaXB0VmFs
dWVUb0lEQktleSgmcmVxdWVzdFN0YXRlLCBsb3dlclZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5oCmluZGV4IDU0NzY5NWEuLmU1NTFjZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaApA
QCAtNTksMjMgKzU5LDIzIEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQktleT4gbG93ZXIo
KSBjb25zdCB7IHJldHVybiBtX2xvd2VyOyB9CiAgICAgUGFzc1JlZlB0cjxJREJLZXk+IHVwcGVy
KCkgY29uc3QgeyByZXR1cm4gbV91cHBlcjsgfQogCi0gICAgU2NyaXB0VmFsdWUgbG93ZXJWYWx1
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgY29uc3Q7Ci0gICAgU2NyaXB0VmFsdWUgdXBwZXJW
YWx1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgY29uc3Q7CisgICAgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUgbG93ZXJWYWx1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgY29uc3Q7CisgICAg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgdXBwZXJWYWx1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KikgY29uc3Q7CiAgICAgYm9vbCBsb3dlck9wZW4oKSBjb25zdCB7IHJldHVybiBtX2xvd2VyVHlw
ZSA9PSBMb3dlckJvdW5kT3BlbjsgfQogICAgIGJvb2wgdXBwZXJPcGVuKCkgY29uc3QgeyByZXR1
cm4gbV91cHBlclR5cGUgPT0gVXBwZXJCb3VuZE9wZW47IH0KIAogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPElEQktleVJhbmdlPiBvbmx5KFBhc3NSZWZQdHI8SURCS2V5PiB2YWx1ZSwgRXhjZXB0aW9u
Q29kZSYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBvbmx5KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IG9ubHkoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNv
ZGUmKTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBsb3dlckJvdW5kKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBib3VuZCwg
RXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGxvd2VyQm91bmQoY29udGV4dCwgYm91bmQsIGZh
bHNlLCBlYyk7IH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gbG93ZXJCb3Vu
ZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU2NyaXB0VmFsdWUmIGJvdW5kLCBib29s
IG9wZW4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXlSYW5n
ZT4gbG93ZXJCb3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYgYm91bmQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBs
b3dlckJvdW5kKGNvbnRleHQsIGJvdW5kLCBmYWxzZSwgZWMpOyB9CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SURCS2V5UmFuZ2U+IGxvd2VyQm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBib3VuZCwgYm9vbCBvcGVuLCBFeGNlcHRpb25D
b2RlJik7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gdXBwZXJCb3VuZChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYgYm91bmQs
IEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiB1cHBlckJvdW5kKGNvbnRleHQsIGJvdW5kLCBm
YWxzZSwgZWMpOyB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHVwcGVyQm91
bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBib3VuZCwgYm9v
bCBvcGVuLCBFeGNlcHRpb25Db2RlJik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5UmFu
Z2U+IHVwcGVyQm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmIGJvdW5kLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4g
dXBwZXJCb3VuZChjb250ZXh0LCBib3VuZCwgZmFsc2UsIGVjKTsgfQorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPElEQktleVJhbmdlPiB1cHBlckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgYm91bmQsIGJvb2wgb3BlbiwgRXhjZXB0aW9u
Q29kZSYpOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGJvdW5kKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBsb3dlciwgY29u
c3QgU2NyaXB0VmFsdWUmIHVwcGVyLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gYm91bmQo
Y29udGV4dCwgbG93ZXIsIHVwcGVyLCBmYWxzZSwgZmFsc2UsIGVjKTsgfQotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPElEQktleVJhbmdlPiBib3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYgbG93ZXIsIGNvbnN0IFNjcmlwdFZhbHVlJiB1cHBlciwg
Ym9vbCBsb3dlck9wZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBib3VuZChjb250ZXh0
LCBsb3dlciwgdXBwZXIsIGxvd2VyT3BlbiwgZmFsc2UsIGVjKTsgfQotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPElEQktleVJhbmdlPiBib3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3Qg
U2NyaXB0VmFsdWUmIGxvd2VyLCBjb25zdCBTY3JpcHRWYWx1ZSYgdXBwZXIsIGJvb2wgbG93ZXJP
cGVuLCBib29sIHVwcGVyT3BlbiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBQYXNzUmVm
UHRyPElEQktleVJhbmdlPiBib3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBj
b25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgbG93ZXIsIGNvbnN0IERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlJiB1cHBlciwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGJvdW5kKGNvbnRl
eHQsIGxvd2VyLCB1cHBlciwgZmFsc2UsIGZhbHNlLCBlYyk7IH0KKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4gYm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Y29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGxvd2VyLCBjb25zdCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSYgdXBwZXIsIGJvb2wgbG93ZXJPcGVuLCBFeGNlcHRpb25Db2RlJiBlYykgeyBy
ZXR1cm4gYm91bmQoY29udGV4dCwgbG93ZXIsIHVwcGVyLCBsb3dlck9wZW4sIGZhbHNlLCBlYyk7
IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gYm91bmQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBsb3dlciwgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHVwcGVyLCBib29sIGxvd2VyT3BlbiwgYm9vbCB1cHBl
ck9wZW4sIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIGJvb2wgaXNPbmx5S2V5KCkgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
LmNwcAppbmRleCA2OWJhYmYxLi43ODY3ZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC04Niw3ICs4Niw3IEBAIFBh
c3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmdldChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXNzCiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwogfQog
Ci1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpnZXQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpnZXQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPElEQktleVJhbmdlPiBrZXlS
YW5nZSA9IElEQktleVJhbmdlOjpvbmx5KGNvbnRleHQsIGtleSwgZWMpOwogICAgIGlmIChlYykK
QEAgLTk0LDcgKzk0LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6
Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnMKICAgICByZXR1cm4gZ2V0
KGNvbnRleHQsIGtleVJhbmdlLnJlbGVhc2UoKSwgZWMpOwogfQogCi1zdGF0aWMgdm9pZCBnZW5l
cmF0ZUluZGV4S2V5c0ZvclZhbHVlKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBjb25z
dCBJREJJbmRleE1ldGFkYXRhJiBpbmRleE1ldGFkYXRhLCBjb25zdCBTY3JpcHRWYWx1ZSYgb2Jq
ZWN0VmFsdWUsIElEQk9iamVjdFN0b3JlOjpJbmRleEtleXMqIGluZGV4S2V5cykKK3N0YXRpYyB2
b2lkIGdlbmVyYXRlSW5kZXhLZXlzRm9yVmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3Rh
dGUsIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEsIGNvbnN0IERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlJiBvYmplY3RWYWx1ZSwgSURCT2JqZWN0U3RvcmU6OkluZGV4S2V5cyog
aW5kZXhLZXlzKQogewogICAgIEFTU0VSVChpbmRleEtleXMpOwogICAgIFJlZlB0cjxJREJLZXk+
IGluZGV4S2V5ID0gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChyZXF1ZXN0
U3RhdGUsIG9iamVjdFZhbHVlLCBpbmRleE1ldGFkYXRhLmtleVBhdGgpOwpAQCAtMTE3LDMxICsx
MTcsMzEgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVJbmRleEtleXNGb3JWYWx1ZShET01SZXF1ZXN0
U3RhdGUqIHJlcXVlc3RTdGF0ZSwgY29uc3QgSURCSW4KICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmFkZChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFNj
cmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjphZGQoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIExPRyhT
dG9yYWdlQVBJLCAiSURCT2JqZWN0U3RvcmU6OmFkZCIpOwogICAgIHJldHVybiBwdXQoSURCRGF0
YWJhc2VCYWNrZW5kOjpBZGRPbmx5LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgc3RhdGUsIHZhbHVl
LCBrZXksIGVjKTsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6
YWRkKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgU2NyaXB0VmFsdWUmIHZhbHVlLCBFeGNlcHRpb25D
b2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmFkZChKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJPYmplY3RTdG9yZTo6YWRk
Iik7CiAgICAgcmV0dXJuIHB1dChJREJEYXRhYmFzZUJhY2tlbmQ6OkFkZE9ubHksIElEQkFueTo6
Y3JlYXRlKHRoaXMpLCBzdGF0ZSwgdmFsdWUsIHN0YXRpY19jYXN0PElEQktleSo+KDApLCBlYyk7
CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU2NyaXB0VmFsdWUmIGtl
eSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0
b3JlOjpwdXQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYg
dmFsdWUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewogICAgIExPRyhTdG9yYWdlQVBJLCAiSURCT2JqZWN0U3RvcmU6OnB1dCIpOwogICAg
IHJldHVybiBwdXQoSURCRGF0YWJhc2VCYWNrZW5kOjpBZGRPclVwZGF0ZSwgSURCQW55OjpjcmVh
dGUodGhpcyksIHN0YXRlLCB2YWx1ZSwga2V5LCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFNjcmlwdFZh
bHVlJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElE
Qk9iamVjdFN0b3JlOjpwdXQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIExPRyhTdG9yYWdlQVBJ
LCAiSURCT2JqZWN0U3RvcmU6OnB1dCIpOwogICAgIHJldHVybiBwdXQoSURCRGF0YWJhc2VCYWNr
ZW5kOjpBZGRPclVwZGF0ZSwgSURCQW55OjpjcmVhdGUodGhpcyksIHN0YXRlLCB2YWx1ZSwgc3Rh
dGljX2Nhc3Q8SURCS2V5Kj4oMCksIGVjKTsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJ
REJPYmplY3RTdG9yZTo6cHV0KElEQkRhdGFiYXNlQmFja2VuZDo6UHV0TW9kZSBwdXRNb2RlLCBQ
YXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFNjcmlwdFZh
bHVlJiB2YWx1ZSwgY29uc3QgU2NyaXB0VmFsdWUmIGtleVZhbHVlLCBFeGNlcHRpb25Db2RlJiBl
YykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChJREJEYXRhYmFz
ZUJhY2tlbmQ6OlB1dE1vZGUgcHV0TW9kZSwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgSlND
OjpFeGVjU3RhdGUqIHN0YXRlLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXlWYWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRGcm9tRXhlY1N0YXRlKHN0YXRlKTsKICAgICBET01SZXF1ZXN0U3RhdGUgcmVxdWVzdFN0
YXRlKGNvbnRleHQpOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
SURCT2JqZWN0U3RvcmU6OnB1dChJREJEYXRhYmFzZUJhY2tlbmQ6OlB1dE1vZGUgcHV0TW9kZSwK
ICAgICByZXR1cm4gcHV0KHB1dE1vZGUsIHNvdXJjZSwgc3RhdGUsIHZhbHVlLCBrZXkucmVsZWFz
ZSgpLCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1
dChJREJEYXRhYmFzZUJhY2tlbmQ6OlB1dE1vZGUgcHV0TW9kZSwgUGFzc1JlZlB0cjxJREJBbnk+
IHNvdXJjZSwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBTY3JpcHRWYWx1ZSYgdmFsdWUsIFBhc3NS
ZWZQdHI8SURCS2V5PiBwcnBLZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KElEQkRhdGFiYXNlQmFja2VuZDo6UHV0TW9kZSBw
dXRNb2RlLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUs
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IHBycEtl
eSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPElEQktleT4ga2V5ID0gcHJwS2V5
OwogICAgIGlmIChtX2RlbGV0ZWQpIHsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBQYXNzUmVmUHRyPElE
QlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoSURCRGF0YWJhc2VCYWNrZW5kOjpQdXRNb2Rl
IHB1dE1vZGUsCiAKICAgICAvLyBGSVhNRTogRXhwb3NlIHRoZSBKUyBlbmdpbmUgZXhjZXB0aW9u
IHN0YXRlIHRocm91Z2ggU2NyaXB0U3RhdGUuCiAgICAgYm9vbCBkaWRUaHJvdyA9IGZhbHNlOwot
ICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IHZhbHVl
LnNlcmlhbGl6ZShzdGF0ZSwgMCwgMCwgZGlkVGhyb3cpOworICAgIFJlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6c2Vy
aWFsaXplKHZhbHVlLCBzdGF0ZSwgbnVsbHB0ciwgbnVsbHB0ciwgZGlkVGhyb3cpOwogICAgIGlm
IChkaWRUaHJvdykgewogICAgICAgICAvLyBTZXR0aW5nIGFuIGV4cGxpY2l0IEV4Y2VwdGlvbkNv
ZGUgaGVyZSB3b3VsZCBkZWZlciBoYW5kbGluZyB0aGUgYWxyZWFkeSB0aHJvd24gZXhjZXB0aW9u
LgogICAgICAgICByZXR1cm4gMDsKQEAgLTI2Miw3ICsyNjIsNyBAQCBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IElEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjbwogICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlv
bihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8SURCS2V5UmFu
Z2U+IGtleVJhbmdlID0gSURCS2V5UmFuZ2U6Om9ubHkoY29udGV4dCwga2V5LCBlYyk7CiAgICAg
aWYgKGVjKQpAQCAtMzM2LDcgKzMzNiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjdXJzb3It
PmNvbnRpbnVlRnVuY3Rpb24oc3RhdGljX2Nhc3Q8SURCS2V5Kj4oMCksIEFTU0VSVF9OT19FWENF
UFRJT04pOwogCiAgICAgICAgICAgICBSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5ID0gY3Vyc29y
LT5pZGJQcmltYXJ5S2V5KCk7Ci0gICAgICAgICAgICBTY3JpcHRWYWx1ZSB2YWx1ZSA9IGN1cnNv
ci0+dmFsdWUoKTsKKyAgICAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHZhbHVlID0g
Y3Vyc29yLT52YWx1ZSgpOwogCiAgICAgICAgICAgICBJREJPYmplY3RTdG9yZTo6SW5kZXhLZXlz
IGluZGV4S2V5czsKICAgICAgICAgICAgIGdlbmVyYXRlSW5kZXhLZXlzRm9yVmFsdWUocmVxdWVz
dC0+cmVxdWVzdFN0YXRlKCksIG1faW5kZXhNZXRhZGF0YSwgdmFsdWUsICZpbmRleEtleXMpOwpA
QCAtNTAyLDcgKzUwMiw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6
Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4CiAgICAgcmV0dXJuIG9w
ZW5DdXJzb3IoY29udGV4dCwga2V5UmFuZ2UsIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCgpLCBl
Yyk7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJz
b3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGtl
eSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0
b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIHJl
dHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIGtleSwgSURCQ3Vyc29yOjpkaXJlY3Rpb25OZXh0KCks
IGVjKTsKIH0KQEAgLTUzNCw3ICs1MzQsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9i
amVjdFN0b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleAogICAg
IHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJ
REJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0
aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpvcGVu
Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlID0gSURCS2V5UmFuZ2U6
Om9ubHkoY29udGV4dCwga2V5LCBlYyk7CiAgICAgaWYgKGVjKQpAQCAtNTU4LDcgKzU1OCw3IEBA
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmNvdW50KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhCiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwog
fQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjb3VudChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRp
b25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmNvdW50
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFJlZlB0cjxJREJLZXlSYW5n
ZT4ga2V5UmFuZ2UgPSBJREJLZXlSYW5nZTo6b25seShjb250ZXh0LCBrZXksIGVjKTsKICAgICBp
ZiAoZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuaAppbmRleCBmZmY1ZmY5Li5kYTY1YTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKQEAgLTY1LDIxICs2NSwyMSBAQCBw
dWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX3RyYW5zYWN0aW9uOyB9CiAgICAgYm9vbCBhdXRvSW5jcmVtZW50KCkgY29u
c3QgeyByZXR1cm4gbV9tZXRhZGF0YS5hdXRvSW5jcmVtZW50OyB9CiAKLSAgICBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IGFkZChKU0M6OkV4ZWNTdGF0ZSosIFNjcmlwdFZhbHVlJiwgRXhjZXB0aW9u
Q29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gcHV0KEpTQzo6RXhlY1N0YXRlKiwg
U2NyaXB0VmFsdWUmLCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0
PiBhZGQoSlNDOjpFeGVjU3RhdGUqLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHB1dChKU0M6OkV4ZWNTdGF0ZSos
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0
aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIEV4Y2VwdGlvbkNvZGUm
KTsKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQ
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKICAg
ICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIGNvbnN0IFN0cmlu
ZyYgZGlyZWN0aW9uLCBJREJEYXRhYmFzZUJhY2tlbmQ6OlRhc2tUeXBlLCBFeGNlcHRpb25Db2Rl
Jik7Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlv
biwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNv
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
IGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIFBh
c3NSZWZQdHI8SURCUmVxdWVzdD4gZ2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBT
Y3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IGdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIEV4
Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGFkZChKU0M6OkV4ZWNT
dGF0ZSosIFNjcmlwdFZhbHVlJiwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29k
ZSYpOwotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gcHV0KEpTQzo6RXhlY1N0YXRlKiwgU2Ny
aXB0VmFsdWUmLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CisgICAg
UGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBhZGQoSlNDOjpFeGVjU3RhdGUqLCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSYsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHB1dChKU0M6OkV4ZWNTdGF0ZSos
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
IGtleSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZGVsZXRl
RnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+
LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBkZWxldGVGdW5j
dGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhj
ZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZGVsZXRlRnVuY3Rpb24o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBr
ZXksIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNsZWFyKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBQYXNzUmVmUHRy
PElEQkluZGV4PiBjcmVhdGVJbmRleChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgY29uc3QgRGljdGlvbmFy
eSYgb3B0aW9ucywgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGNyZWF0ZUluZGV4KGNvbnRl
eHQsIG5hbWUsIElEQktleVBhdGgoa2V5UGF0aCksIG9wdGlvbnMsIGVjKTsgfQpAQCAtOTIsMTAg
KzkyLDEwIEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY291bnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJu
IGNvdW50KGNvbnRleHQsIHN0YXRpY19jYXN0PElEQktleVJhbmdlKj4oMCksIGVjKTsgfQogICAg
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU2NyaXB0VmFs
dWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY291
bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
JiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gcHV0
KElEQkRhdGFiYXNlQmFja2VuZDo6UHV0TW9kZSwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwg
SlNDOjpFeGVjU3RhdGUqLCBTY3JpcHRWYWx1ZSYsIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4
Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHB1dChJREJEYXRhYmFz
ZUJhY2tlbmQ6OlB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIEpTQzo6RXhlY1N0
YXRlKiwgU2NyaXB0VmFsdWUmLCBQYXNzUmVmUHRyPElEQktleT4sIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHB1dChJREJEYXRhYmFzZUJhY2tlbmQ6OlB1dE1v
ZGUsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIEpTQzo6RXhlY1N0YXRlKiwgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUmLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNl
cHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBwdXQoSURCRGF0YWJhc2VC
YWNrZW5kOjpQdXRNb2RlLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBKU0M6OkV4ZWNTdGF0
ZSosIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgUGFzc1JlZlB0cjxJREJLZXk+LCBFeGNlcHRp
b25Db2RlJik7CiAgICAgdm9pZCBtYXJrRGVsZXRlZCgpIHsgbV9kZWxldGVkID0gdHJ1ZTsgfQog
ICAgIHZvaWQgdHJhbnNhY3Rpb25GaW5pc2hlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCmluZGV4IDAwNDllZGEuLmQ1NjQ2MDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCkBA
IC0yMTMsNyArMjEzLDcgQEAgUGFzc1JlZlB0cjxJREJDdXJzb3I+IElEQlJlcXVlc3Q6OmdldFJl
c3VsdEN1cnNvcigpCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgSURCUmVxdWVzdDo6c2V0UmVz
dWx0Q3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yPiBjdXJzb3IsIFBhc3NSZWZQdHI8SURCS2V5
PiBrZXksIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBjb25zdCBTY3JpcHRWYWx1ZSYg
dmFsdWUpCit2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdEN1cnNvcihQYXNzUmVmUHRyPElEQkN1
cnNvcj4gY3Vyc29yLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQktleT4g
cHJpbWFyeUtleSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlKQogewogICAg
IEFTU0VSVChtX3JlYWR5U3RhdGUgPT0gUEVORElORyk7CiAgICAgbV9jdXJzb3JLZXkgPSBrZXk7
CkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0
cjxJREJDdXJzb3JCYWNrZW5kPiBiYWNrZW5kLCBQYXNzUmVmUHRyPElEQksKICAgICAgICAgcmV0
dXJuOwogCiAgICAgRE9NUmVxdWVzdFN0YXRlOjpTY29wZSBzY29wZShtX3JlcXVlc3RTdGF0ZSk7
Ci0gICAgU2NyaXB0VmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKHJlcXVl
c3RTdGF0ZSgpLCBidWZmZXIpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHZhbHVlID0g
ZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihyZXF1ZXN0U3RhdGUoKSwgYnVmZmVyKTsKICAgICBB
U1NFUlQoIW1fcGVuZGluZ0N1cnNvcik7CiAgICAgUmVmUHRyPElEQkN1cnNvcj4gY3Vyc29yOwog
ICAgIHN3aXRjaCAobV9jdXJzb3JUeXBlKSB7CkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBJREJS
ZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlQnVmZmVyKQog
ICAgICAgICByZXR1cm47CiAKICAgICBET01SZXF1ZXN0U3RhdGU6OlNjb3BlIHNjb3BlKG1fcmVx
dWVzdFN0YXRlKTsKLSAgICBTY3JpcHRWYWx1ZSB2YWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVC
dWZmZXIocmVxdWVzdFN0YXRlKCksIHZhbHVlQnVmZmVyKTsKKyAgICBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSB2YWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIocmVxdWVzdFN0YXRlKCks
IHZhbHVlQnVmZmVyKTsKICAgICBvblN1Y2Nlc3NJbnRlcm5hbCh2YWx1ZSk7CiB9CiAKQEAgLTM0
OCw3ICszNDgsNyBAQCB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gdmFsdWVCdWZmZXIsIFBhc3NSZWZQdHI8SURCSwogICAgIEFTU0VSVChrZXlQYXRo
ID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKG1fc291cmNlKS0+a2V5UGF0aCgpKTsKICNlbmRpZgog
ICAgIERPTVJlcXVlc3RTdGF0ZTo6U2NvcGUgc2NvcGUobV9yZXF1ZXN0U3RhdGUpOwotICAgIFNj
cmlwdFZhbHVlIHZhbHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihyZXF1ZXN0U3RhdGUo
KSwgdmFsdWVCdWZmZXIpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHZhbHVlID0gZGVz
ZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihyZXF1ZXN0U3RhdGUoKSwgdmFsdWVCdWZmZXIpOwogCiAg
ICAgUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSA9IHBycFByaW1hcnlLZXk7CiAjaWZuZGVmIE5E
RUJVRwpAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzSW50ZXJu
YWwoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlKQogICAgIHJldHVybiBv
blN1Y2Nlc3NJbnRlcm5hbChkZXNlcmlhbGl6ZUlEQlZhbHVlKHJlcXVlc3RTdGF0ZSgpLCB2YWx1
ZSkpOwogfQogCi12b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2Vzc0ludGVybmFsKGNvbnN0IFNjcmlw
dFZhbHVlJiB2YWx1ZSkKK3ZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzSW50ZXJuYWwoY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlKQogewogICAgIG1fcmVzdWx0ID0gSURCQW55
OjpjcmVhdGUodmFsdWUpOwogICAgIGlmIChtX3BlbmRpbmdDdXJzb3IpIHsKQEAgLTQwMCw3ICs0
MDAsNyBAQCB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4ga2V5
LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleQogICAgICAgICByZXR1cm47CiAKICAgICBE
T01SZXF1ZXN0U3RhdGU6OlNjb3BlIHNjb3BlKG1fcmVxdWVzdFN0YXRlKTsKLSAgICBTY3JpcHRW
YWx1ZSB2YWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIocmVxdWVzdFN0YXRlKCksIGJ1
ZmZlcik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZUlE
QlZhbHVlQnVmZmVyKHJlcXVlc3RTdGF0ZSgpLCBidWZmZXIpOwogICAgIEFTU0VSVChtX3BlbmRp
bmdDdXJzb3IpOwogICAgIHNldFJlc3VsdEN1cnNvcihtX3BlbmRpbmdDdXJzb3IucmVsZWFzZSgp
LCBrZXksIHByaW1hcnlLZXksIHZhbHVlKTsKICAgICBlbnF1ZXVlRXZlbnQoY3JlYXRlU3VjY2Vz
c0V2ZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVz
dC5oCmluZGV4IDQzMDU4OWUuLmFjNzVkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKQEAgLTEyMCw3ICsxMjAsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBlbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwogICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRFbnF1ZXVlRXZlbnQoKSBjb25zdDsKICAgICB2b2lkIG9uU3VjY2Vzc0ludGVybmFs
KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7Ci0gICAgdm9pZCBvblN1Y2Nlc3NJ
bnRlcm5hbChjb25zdCBTY3JpcHRWYWx1ZSYpOworICAgIHZvaWQgb25TdWNjZXNzSW50ZXJuYWwo
Y29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmKTsKIAogICAgIFJlZlB0cjxJREJBbnk+IG1f
cmVzdWx0OwogICAgIHVuc2lnbmVkIHNob3J0IG1fZXJyb3JDb2RlOwpAQCAtMTQwLDcgKzE0MCw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklE
RSBGSU5BTCB7IGRlcmVmKCk7IH0KIAogICAgIFBhc3NSZWZQdHI8SURCQ3Vyc29yPiBnZXRSZXN1
bHRDdXJzb3IoKTsKLSAgICB2b2lkIHNldFJlc3VsdEN1cnNvcihQYXNzUmVmUHRyPElEQkN1cnNv
cj4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIGNv
bnN0IFNjcmlwdFZhbHVlJik7CisgICAgdm9pZCBzZXRSZXN1bHRDdXJzb3IoUGFzc1JlZlB0cjxJ
REJDdXJzb3I+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5
S2V5LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYpOwogCiAgICAgUmVmUHRyPElEQkFu
eT4gbV9zb3VyY2U7CiAgICAgY29uc3QgSURCRGF0YWJhc2VCYWNrZW5kOjpUYXNrVHlwZSBtX3Rh
c2tUeXBlOwpAQCAtMTU1LDcgKzE1NSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPElEQkN1cnNv
cj4gbV9wZW5kaW5nQ3Vyc29yOwogICAgIFJlZlB0cjxJREJLZXk+IG1fY3Vyc29yS2V5OwogICAg
IFJlZlB0cjxJREJLZXk+IG1fY3Vyc29yUHJpbWFyeUtleTsKLSAgICBTY3JpcHRWYWx1ZSBtX2N1
cnNvclZhbHVlOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG1fY3Vyc29yVmFsdWU7CiAg
ICAgYm9vbCBtX2RpZEZpcmVVcGdyYWRlTmVlZGVkRXZlbnQ7CiAgICAgYm9vbCBtX3ByZXZlbnRQ
cm9wYWdhdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9DYXBhYmlsaXR5UmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9DYXBhYmlsaXR5UmFuZ2UuY3BwCmluZGV4IDBkM2QyNmUuLjZjMTI1YTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5n
ZS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2lu
Y2x1ZGUgIk1lZGlhU291cmNlU3RhdGVzLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNp
bmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPGludGVycHJldGVyL0Nh
bGxGcmFtZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgogCkBAIC01MCw3ICs1
MCw3IEBAIENhcGFiaWxpdHlSYW5nZTo6Q2FwYWJpbGl0eVJhbmdlKGNvbnN0IE1lZGlhU3RyZWFt
U291cmNlQ2FwYWJpbGl0eVJhbmdlJiByYW5nZUluCiB7CiB9CiAKLXN0YXRpYyBTY3JpcHRWYWx1
ZSBzY3JpcHRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlQ2Fw
YWJpbGl0eVJhbmdlOjpWYWx1ZVVuaW9uJiB2YWx1ZSwgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmls
aXR5UmFuZ2U6OlR5cGUgdHlwZSkKK3N0YXRpYyBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBzY3Jp
cHRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0
eVJhbmdlOjpWYWx1ZVVuaW9uJiB2YWx1ZSwgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFu
Z2U6OlR5cGUgdHlwZSkKIHsKICAgICAvLyBOT1RFOiB0aGUgc3BlYyBzYXlzOgogICAgIC8vICAg
ICAgLi4uIGFuIGltcGxlbWVudGF0aW9uIHNob3VsZCBtYWtlIGEgcmVhc29uYWJsZSBhdHRlbXB0
IHRvIHRyYW5zbGF0ZSBhbmQgc2NhbGUgdGhlIGhhcmR3YXJlJ3Mgc2V0dGluZwpAQCAtNjMsMjYg
KzYzLDI2IEBAIHN0YXRpYyBTY3JpcHRWYWx1ZSBzY3JpcHRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0CiAgICAgCiAgICAgc3dpdGNoICh0eXBl
KSB7CiAgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZTo6RmxvYXQ6Ci0g
ICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBKU1ZhbHVlKHZhbHVlLmFzRmxv
YXQpKTsKKyAgICAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKGV4ZWMtPnZtKCks
IEpTVmFsdWUodmFsdWUuYXNGbG9hdCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lZGlh
U3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlOjpVTG9uZzoKLSAgICAgICAgcmV0dXJuIFNjcmlw
dFZhbHVlKGV4ZWMtPnZtKCksIEpTVmFsdWUodmFsdWUuYXNVTG9uZykpOworICAgICAgICByZXR1
cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwgSlNWYWx1ZSh2YWx1ZS5hc1VM
b25nKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmls
aXR5UmFuZ2U6OlVuZGVmaW5lZDoKLSAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKGV4ZWMtPnZt
KCksIGpzVW5kZWZpbmVkKCkpOworICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUoZXhlYy0+dm0oKSwganNVbmRlZmluZWQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBTY3JpcHRWYWx1ZShleGVjLT52
bSgpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUo
ZXhlYy0+dm0oKSwganNVbmRlZmluZWQoKSk7CiB9CiAKLVNjcmlwdFZhbHVlIENhcGFiaWxpdHlS
YW5nZTo6bWluKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
IENhcGFiaWxpdHlSYW5nZTo6bWluKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKICAgICByZXR1
cm4gc2NyaXB0VmFsdWUoZXhlYywgbV9yYW5nZUluZm8ubWluKCksIG1fcmFuZ2VJbmZvLnR5cGUo
KSk7CiB9CiAKLVNjcmlwdFZhbHVlIENhcGFiaWxpdHlSYW5nZTo6bWF4KEV4ZWNTdGF0ZSogZXhl
YykgY29uc3QKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIENhcGFiaWxpdHlSYW5nZTo6bWF4KEV4
ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKICAgICByZXR1cm4gc2NyaXB0VmFsdWUoZXhlYywgbV9y
YW5nZUluZm8ubWF4KCksIG1fcmFuZ2VJbmZvLnR5cGUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaAppbmRleCAzNjg0
MDY2Li45MDVhZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL0NhcGFiaWxpdHlSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmgKQEAgLTMwLDggKzMwLDggQEAKICNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQogCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMuaCIK
LSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgor
I2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8aW50ZXJwcmV0ZXIv
Q2FsbEZyYW1lLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtNDMsOCArNDMs
OCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVmUHRyPENhcGFiaWxpdHlSYW5nZT4gY3JlYXRl
KGNvbnN0IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlJik7CiAKLSAgICBTY3JpcHRW
YWx1ZSBtaW4oSlNDOjpFeGVjU3RhdGUqKSBjb25zdDsKLSAgICBTY3JpcHRWYWx1ZSBtYXgoSlND
OjpFeGVjU3RhdGUqKSBjb25zdDsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBtaW4oSlND
OjpFeGVjU3RhdGUqKSBjb25zdDsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBtYXgoSlND
OjpFeGVjU3RhdGUqKSBjb25zdDsKICAgICBib29sIHN1cHBvcnRlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmFuZ2VJbmZvLnN1cHBvcnRlZCgpOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmgK
aW5kZXggZmQyOTQ4MS4uMmE5M2ZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnQuaApAQCAtMzMsOSArMzMs
MTEgQEAKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KK25hbWVzcGFjZSBEZXByZWNhdGVkIHsK
IGNsYXNzIFNjcmlwdFZhbHVlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1l
ZGlhVHJhY2tDb25zdHJhaW50IDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFUcmFja0NvbnN0cmFp
bnQ+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1l
bnQuY3BwCmluZGV4IDgyYjg2ZTkuLjBjMjkzNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNw
cApAQCAtNDEsNyArNDEsNiBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJF
bGVtZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNjcmlw
dE9iamVjdC5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJVc2Vy
QWdlbnRTY3JpcHRzLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJl
cGxhY2VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbnQuaAppbmRleCBkYWFlN2IxLi41YTE5MDdjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQuaApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiUGx1Z2luUmVwbGFjZW1lbnQu
aCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisj
aW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0T2JqZWN0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCmlu
ZGV4IGE5NzFmYTAuLjBlOGZmOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKQEAgLTEyNSwxMSArMTI1LDEw
IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuY3BwCiAgICAgYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCiAgICAg
YmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAotICAgIGJpbmRpbmdzL2pzL1Njcmlw
dE9iamVjdC5jcHAKKyAgICBiaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuY3BwCiAgICAg
YmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5jcHAKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRQcm9m
aWxlci5jcHAKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKLSAgICBiaW5kaW5ncy9q
cy9TY3JpcHRWYWx1ZS5jcHAKICAgICBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwCiAgICAgYmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCmluZGV4IDY2NWE1NzQuLmNhN2JkYWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCkBAIC0xNDMwLDcgKzE0MzAsNiBAQCBfX1pOSzdXZWJDb3JlMTFSZW5kZXJMYXllcjI0bmVl
ZHNDb21wb3NpdGVkU2Nyb2xsaW5nRXYKIF9fWk5LN1dlYkNvcmUxMVJlbmRlclN0eWxlMTFmb250
TWV0cmljc0V2CiBfX1pOSzdXZWJDb3JlMTFSZW5kZXJTdHlsZTIxdmlzaXRlZERlcGVuZGVudENv
bG9yRWkKIF9fWk5LN1dlYkNvcmUxMVJlbmRlclN0eWxlNGZvbnRFdgotX19aTks3V2ViQ29yZTEx
U2NyaXB0VmFsdWU5Z2V0U3RyaW5nRVBOM0pTQzlFeGVjU3RhdGVFUk4zV1RGNlN0cmluZ0UKIF9f
Wk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDE0ZW5jbG9zaW5nTGF5ZXJFdgogX19aTks3V2ViQ29y
ZTEyUmVuZGVyT2JqZWN0MTVsb2NhbFRvQWJzb2x1dGVFUktOU18xMEZsb2F0UG9pbnRFagogX19a
Tks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTZyZXBhaW50UmVjdGFuZ2xlRVJLTlNfMTBMYXlvdXRS
ZWN0RWIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
CmluZGV4IGYxZmJhNjIuLjdhZWViYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtMTcyOTAsNyArMTcyOTAsNyBAQAogICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29t
cGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdE9iamVj
dC5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRH
bG9iYWxPYmplY3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3Nc
anNcU2NyaXB0UHJvZmlsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5k
aW5nc1xqc1xTY3JpcHRQcm9maWxlci5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE3MzIwLDcgKzE3MzIwLDYgQEAKICAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENv
bXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRWYWx1
ZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KQEAgLTE4NTUxLDYgKzE4NTUwLDggQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVxXZWJD
b3JlXERlcml2ZWRTb3VyY2VzXEpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYWNjZXNzaWJpbGl0eVxBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY3NzXENTU0ltYWdlU2V0VmFs
dWUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGJp
bmRpbmdzXFNjcmlwdE9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9y
d2FyZGluZ0hlYWRlcnNcYmluZGluZ3NcU2NyaXB0VmFsdWUuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGhlYXBcQWxsb2NhdGlvblNwYWNlLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xoZWFwXEhlYXAu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGhlYXBc
U2xvdFZpc2l0b3IuaCIgLz4KQEAgLTIwNjExLDEzICsyMDYxMiwxMiBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0RGVidWdTZXJ2ZXIuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdEZ1bmN0aW9uQ2FsbC5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0SGVhcFNuYXBz
aG90LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRP
YmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlw
dEdsb2JhbE9iamVjdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3Nc
anNcU2NyaXB0UHJvZmlsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGlu
Z3NcanNcU2NyaXB0UHJvZmlsZU5vZGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGJpbmRpbmdzXGpzXFNjcmlwdFByb2ZpbGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRTb3VyY2VDb2RlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRTdGF0ZS5oIiAvPgotICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0VmFsdWUuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdFdyYXBwYWJsZS5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTb3VyY2VJRC5oIiAvPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
ai5maWx0ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
ai5maWx0ZXJzCmluZGV4IDdmNDI4YWEuLmFiZjRhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTI1Myw2
ICsyNTMsOSBAQAogICAgIDxGaWx0ZXIgSW5jbHVkZT0iRm9yd2FyZGluZ0hlYWRlcnMiPgogICAg
ICAgPFVuaXF1ZUlkZW50aWZpZXI+ezk1MjE2YTcwLWEzYjItNDUzYy1hNjZmLWE4MWNjMWFiZWZl
ZX08L1VuaXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRl
PSJGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5ncyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57
MjEzNDMxMjQtMTIzNC00NTQyLWE4YWEtZWJhYzg3ODEyMzEyfTwvVW5pcXVlSWRlbnRpZmllcj4K
KyAgICA8L0ZpbHRlcj4KICAgICA8RmlsdGVyIEluY2x1ZGU9IkZvcndhcmRpbmdIZWFkZXJzXHlh
cnIiPgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezNiOWIxODE5LTFiMzEtNDc3MS1iMTJhLTMy
YzIxMGY4NDc2ZH08L1VuaXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+CkBAIC00NTY2LDcg
KzQ1NjksNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0
RnVuY3Rpb25DYWxsLmNwcCI+CiAgICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAg
ICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xT
Y3JpcHRPYmplY3QuY3BwIj4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpz
XFNjcmlwdEdsb2JhbE9iamVjdC5jcHAiPgogICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmls
dGVyPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGlu
Z3NcanNcU2NyaXB0UHJvZmlsZS5jcHAiPgpAQCAtNDU3OCw5ICs0NTgxLDYgQEAKICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdFN0YXRlLmNwcCI+CiAgICAgICA8
RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRWYWx1ZS5jcHAiPgotICAgICAgPEZp
bHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCI+CiAg
ICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0x
MTUwOCw3ICsxMTUwOCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xq
c1xTY3JpcHRIZWFwU25hcHNob3QuaCI+CiAgICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0
ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5n
c1xqc1xTY3JpcHRPYmplY3QuaCI+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5n
c1xqc1xTY3JpcHRHbG9iYWxPYmplY3QuaCI+CiAgICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9G
aWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5k
aW5nc1xqc1xTY3JpcHRQcm9maWxlLmgiPgpAQCAtMTE1MjYsOSArMTE1MjYsNiBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0U3RhdGUuaCI+CiAgICAgICA8
RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRWYWx1ZS5oIj4KLSAgICAgIDxGaWx0
ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdFdyYXBwYWJsZS5oIj4KICAgICAgIDxGaWx0
ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTEyMTg2LDYgKzEy
MTgzLDEyIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxzdmdccHJvcGVydGllc1xTVkdU
cmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2ZmLmgiPgogICAgICAgPEZpbHRlcj5yZW5kZXJpbmdc
c3ZnXHByb3BlcnRpZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzXFNjcmlwdE9iamVjdC5oIj4K
KyAgICAgIDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3M8L0ZpbHRlcj4KKyAgICA8
L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJz
XGJpbmRpbmdzXFNjcmlwdFZhbHVlLmgiPgorICAgICAgPEZpbHRlcj5Gb3J3YXJkaW5nSGVhZGVy
c1xiaW5kaW5nczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZVxBcmdMaXN0LmgiPgogICAgICAgPEZp
bHRlcj5Gb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNjE5MzM5YS4uMjVlMDUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI5MSw4ICsxMjkxLDggQEAKIAkJNDFGMDYx
OEYwRjVGMDY5ODAwQTA3RUFDIC8qIENvbnNvbGVNZXNzYWdlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjA2MThEMEY1RjA2OTgwMEEwN0VBQyAv
KiBDb25zb2xlTWVzc2FnZS5jcHAgKi87IH07CiAJCTQxRjA2MjE0MEY1RjE5MjYwMEEwN0VBQyAv
KiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjIxMjBGNUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9y
RGF0YWJhc2VSZXNvdXJjZS5oICovOyB9OwogCQk0MUYwNjIxNTBGNUYxOTI2MDBBMDdFQUMgLyog
SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjIxMzBGNUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9y
RGF0YWJhc2VSZXNvdXJjZS5jcHAgKi87IH07Ci0JCTQxRjA2NkU0MEY2NEJDRjYwMEEwN0VBQyAv
KiBTY3JpcHRPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxRjA2NkUyMEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRPYmplY3QuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk0MUYwNjZFNTBGNjRC
Q0Y2MDBBMDdFQUMgLyogU2NyaXB0T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjA2NkUzMEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRP
YmplY3QuY3BwICovOyB9OworCQk0MUYwNjZFNDBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0R2xv
YmFsT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MUYwNjZFMjBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0R2xvYmFsT2JqZWN0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDFGMDY2RTUwRjY0
QkNGNjAwQTA3RUFDIC8qIFNjcmlwdEdsb2JhbE9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjZFMzBGNjRCQ0Y2MDBBMDdFQUMgLyog
U2NyaXB0R2xvYmFsT2JqZWN0LmNwcCAqLzsgfTsKIAkJNDFGMUQyMUYwRUYzNUMyQTAwREE4NzUz
IC8qIFNjcmlwdENhY2hlZEZyYW1lRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFGMUQyMUQwRUYzNUMyQTAwREE4NzUzIC8qIFNjcmlwdENhY2hl
ZEZyYW1lRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQxRjFEMjIwMEVGMzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURhdGEu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGMUQy
MUUwRUYzNUMyQTAwREE4NzUzIC8qIFNjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAgKi87IH07CiAJ
CTQxRjU4NEM3MTA0NjUyQ0IwMDlDQUE2NCAvKiBKU01lc3NhZ2VQb3J0Q3VzdG9tLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUY1ODRDNjEwNDY1MkNC
MDA5Q0FBNjQgLyogSlNNZXNzYWdlUG9ydEN1c3RvbS5oICovOyB9OwpAQCAtMzAxNCw4ICszMDE0
LDYgQEAKIAkJOTM0NDJDOUUwRDJCMzM1QzAwMzM4RkY5IC8qIEhUTUxUYWJsZVJvd3NDb2xsZWN0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzQ0
MkM5RDBEMkIzMzVDMDAzMzhGRjkgLyogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uaCAqLzsgfTsK
IAkJOTM0NDJDQTAwRDJCMzM2MDAwMzM4RkY5IC8qIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNDQyQzlG
MEQyQjMzNjAwMDMzOEZGOSAvKiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAgKi87IH07CiAJ
CTkzNDkwN0U0MTI1QkJCQzgwMDdGMjNBMCAvKiBHcmFwaGljc0NvbnRleHRDRy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0OTA3RTMxMjVCQkJDODAw
N0YyM0EwIC8qIEdyYXBoaWNzQ29udGV4dENHLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTM0Q0MwRTEwRUQzOUQ2RjAwQTY1OEYyIC8qIFNjcmlw
dFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzNENDMERGMEVEMzlENkYwMEE2NThGMiAvKiBTY3JpcHRWYWx1ZS5jcHAgKi87IH07Ci0JCTkz
NENDMEUyMEVEMzlENkYwMEE2NThGMiAvKiBTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0Q0MwRTAwRUQzOUQ2RjAwQTY1OEYyIC8q
IFNjcmlwdFZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOTM0Q0MxMEEwRURCMjIzOTAwQTY1OEYyIC8qIFNjcmlwdFNvdXJjZUNvZGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNENDMTA5MEVE
QjIyMzkwMEE2NThGMiAvKiBTY3JpcHRTb3VyY2VDb2RlLmggKi87IH07CiAJCTkzNEQ5QkE1MEI4
QzExNkIwMDdCNDJBOSAvKiBXZWJDb3JlTlNTdHJpbmdFeHRyYXMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzREOUJBNDBCOEMxMTZCMDA3QjQyQTkg
LyogV2ViQ29yZU5TU3RyaW5nRXh0cmFzLm1tICovOyB9OwogCQk5MzREOUJBNzBCOEMxMTc1MDA3
QjQyQTkgLyogV2ViQ29yZU5TU3RyaW5nRXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzREOUJBNjBCOEMxMTc1MDA3QjQyQTkgLyogV2ViQ29y
ZU5TU3RyaW5nRXh0cmFzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTc3MjQsOCArNzcyMiw4IEBACiAJCTMxNDZGRTY1MTg0NDIwODcwMDFBOTM3
QyAvKiBPRVNUZXh0dXJlRmxvYXRMaW5lYXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gT0VTVGV4dHVyZUZsb2F0TGluZWFyLmNwcDsgcGF0aCA9IGNhbnZhcy9PRVNU
ZXh0dXJlRmxvYXRMaW5lYXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTQ2
RkU2NjE4NDQyMDg3MDAxQTkzN0MgLyogT0VTVGV4dHVyZUZsb2F0TGluZWFyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE9FU1RleHR1cmVGbG9hdExpbmVhci5oOyBwYXRoID0g
Y2FudmFzL09FU1RleHR1cmVGbG9hdExpbmVhci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzMTQ2RkU2NzE4NDQyMDg3MDAxQTkzN0MgLyogT0VTVGV4dHVyZUZsb2F0TGluZWFyLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBPRVNUZXh0dXJlRmxvYXRMaW5lYXIuaWRsOyBwYXRo
ID0gY2FudmFzL09FU1RleHR1cmVGbG9hdExpbmVhci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTMxNDZGRTcwMTg0NDIzNjcwMDFBOTM3QyAvKiBKU09FU1RleHR1cmVGbG9hdExp
bmVhci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU09FU1RleHR1
cmVGbG9hdExpbmVhci5jcHA7IHBhdGggPSBKU09FU1RleHR1cmVGbG9hdExpbmVhci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNDZGRTcxMTg0NDIzNjcwMDFBOTM3QyAvKiBK
U09FU1RleHR1cmVGbG9hdExpbmVhci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBKU09FU1RleHR1cmVGbG9hdExpbmVhci5oOyBwYXRoID0gSlNPRVNUZXh0dXJlRmxvYXRMaW5l
YXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE0NkZFNzAxODQ0MjM2NzAwMUE5
MzdDIC8qIEpTT0VTVGV4dHVyZUZsb2F0TGluZWFyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTT0VTVGV4dHVyZUZsb2F0TGluZWFyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMzE0NkZFNzExODQ0MjM2NzAwMUE5MzdDIC8qIEpTT0VTVGV4dHVy
ZUZsb2F0TGluZWFyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTT0VTVGV4
dHVyZUZsb2F0TGluZWFyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNjAyM0VG
MTUzMkM0MEMwMEQ1MEZGNCAvKiBEaWN0aW9uYXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERpY3Rpb25hcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE2
MTFFNTQwRTFDNEQ0QTAwRjZBNTc5IC8qIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNjExRTU4MEUxQzRERTAwMEY2QTU3OSAvKiBKU1dlYktp
dENTU1RyYW5zZm9ybVZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNzk3MCw4ICs3OTY4LDggQEAKIAkJNDFGMDYxOEQwRjVGMDY5ODAwQTA3RUFDIC8q
IENvbnNvbGVNZXNzYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENvbnNvbGVNZXNzYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGMDYy
MTIwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUYwNjIxMzBGNUYxOTI2MDBBMDdFQUMgLyog
SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNDFGMDY2RTIwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdE9iamVjdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRPYmplY3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDFGMDY2RTMwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlw
dE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRP
YmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUYwNjZFMjBGNjRCQ0Y2
MDBBMDdFQUMgLyogU2NyaXB0R2xvYmFsT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNjcmlwdEdsb2JhbE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MUYwNjZFMzBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0R2xvYmFsT2JqZWN0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEdsb2JhbE9iamVjdC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRjFEMjFEMEVGMzVDMkEwMERBODc1
MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxRjFEMjFFMEVGMzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURhdGEuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0Q2FjaGVkRnJhbWVE
YXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGNTg0QzYxMDQ2NTJDQjAw
OUNBQTY0IC8qIEpTTWVzc2FnZVBvcnRDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNNZXNzYWdlUG9ydEN1c3RvbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtOTc4Niw4ICs5Nzg0LDYgQEAKIAkJOTM0NDJDOUQwRDJCMzM1QzAwMzM4RkY5IC8qIEhU
TUxUYWJsZVJvd3NDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzNDQyQzlGMEQyQjMzNjAwMDMzOEZGOSAvKiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MVGFibGVSb3dzQ29sbGVj
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNDkwN0UzMTI1QkJCQzgw
MDdGMjNBMCAvKiBHcmFwaGljc0NvbnRleHRDRy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBHcmFwaGljc0NvbnRleHRDRy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk5MzRDQzBERjBFRDM5RDZGMDBBNjU4RjIgLyogU2NyaXB0VmFsdWUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk5MzRDQzBFMDBFRDM5RDZGMDBBNjU4RjIgLyogU2NyaXB0VmFsdWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0VmFsdWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM0Q0MxMDkwRURCMjIzOTAwQTY1OEYyIC8qIFNjcmlw
dFNvdXJjZUNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0U291
cmNlQ29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzREOUJBNDBCOEMxMTZC
MDA3QjQyQTkgLyogV2ViQ29yZU5TU3RyaW5nRXh0cmFzLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvcmVOU1N0cmluZ0V4dHJhcy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM0RDlCQTYwQjhDMTE3NTAwN0I0MkE5IC8qIFdlYkNvcmVO
U1N0cmluZ0V4dHJhcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29y
ZU5TU3RyaW5nRXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTYzNSw4
ICsxOTYzMSw4IEBACiAJCQkJNDEwMDJDQ0MwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0
aW9uQ2FsbC5jcHAgKi8sCiAJCQkJNDEwMDJDQ0IwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1
bmN0aW9uQ2FsbC5oICovLAogCQkJCTlGM0I5NDdEMTIyNDE3NTgwMDUzMDRFNyAvKiBTY3JpcHRI
ZWFwU25hcHNob3QuaCAqLywKLQkJCQk0MUYwNjZFMzBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0
T2JqZWN0LmNwcCAqLywKLQkJCQk0MUYwNjZFMjBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0T2Jq
ZWN0LmggKi8sCisJCQkJNDFGMDY2RTMwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdEdsb2JhbE9i
amVjdC5jcHAgKi8sCisJCQkJNDFGMDY2RTIwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdEdsb2Jh
bE9iamVjdC5oICovLAogCQkJCUYzM0YwMjgxMTIwOTQ3RjIwMEU1NzQzQSAvKiBTY3JpcHRQcm9m
aWxlLmNwcCAqLywKIAkJCQk5RjcyMzA0QzExMTg0QjQxMDBBRDAxMjYgLyogU2NyaXB0UHJvZmls
ZS5oICovLAogCQkJCTlGQTM3RUUzMTE3MkZDODAwMEM0Q0Q1NSAvKiBTY3JpcHRQcm9maWxlTm9k
ZS5oICovLApAQCAtMTk2NDUsOCArMTk2NDEsNiBAQAogCQkJCTkzNENDMTA5MEVEQjIyMzkwMEE2
NThGMiAvKiBTY3JpcHRTb3VyY2VDb2RlLmggKi8sCiAJCQkJNDEyN0Q1MzYwRjhBQUIxRDAwRTQy
NEY1IC8qIFNjcmlwdFN0YXRlLmNwcCAqLywKIAkJCQk0MUM3NjBCMDBFREUwM0QzMDBDMTY1NUYg
LyogU2NyaXB0U3RhdGUuaCAqLywKLQkJCQk5MzRDQzBERjBFRDM5RDZGMDBBNjU4RjIgLyogU2Ny
aXB0VmFsdWUuY3BwICovLAotCQkJCTkzNENDMEUwMEVEMzlENkYwMEE2NThGMiAvKiBTY3JpcHRW
YWx1ZS5oICovLAogCQkJCTIyOEMyODQ0MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFi
bGUuaCAqLywKIAkJCQkxNDAwRDdBNzE3MTM2RUE3MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxl
SW5saW5lcy5oICovLAogCQkJCUE3NUU0OTc1MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwICovLApAQCAtMjQ1MDIsNyArMjQ0OTYsNyBAQAogCQkJCUNERDcwODk3
MTgzNTlGNkYwMDJCM0RDNiAvKiBTYW1wbGVNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMDAy
Q0NEMEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTlGM0I5NDdFMTIyNDE3NTgwMDUzMDRFNyAvKiBTY3JpcHRIZWFwU25hcHNob3QuaCBp
biBIZWFkZXJzICovLAotCQkJCTQxRjA2NkU0MEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRPYmpl
Y3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRjA2NkU0MEY2NEJDRjYwMEEwN0VBQyAvKiBTY3Jp
cHRHbG9iYWxPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDM2MTJCMDI2NzYwMEMx
QTM1OSAvKiBTY3JpcHRQcm9jZXNzb3JOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5RjcyMzA0
RjExMTg0QjQxMDBBRDAxMjYgLyogU2NyaXB0UHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OUZBMzdFRTQxMTcyRkM4MDAwQzRDRDU1IC8qIFNjcmlwdFByb2ZpbGVOb2RlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTI0NTEwLDcgKzI0NTA0LDYgQEAKIAkJCQk4QTQxM0FFMDEyMDdCQkE1MDA4MjAx
NkUgLyogU2NyaXB0UnVubmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzRDQzEwQTBFREIyMjM5
MDBBNjU4RjIgLyogU2NyaXB0U291cmNlQ29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFDNzYw
QjEwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggaW4gSGVhZGVycyAqLywKLQkJCQk5
MzRDQzBFMjBFRDM5RDZGMDBBNjU4RjIgLyogU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTIyOEMyODQ1MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0MDBEN0E4MTcxMzZFQTcwMDc3Q0UwNSAvKiBTY3JpcHRXcmFwcGFibGVJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzhBRTM0RjEyRUEwOTZBMDBFQjNBRTYgLyog
U2Nyb2xsYWJsZUFyZWEuaCBpbiBIZWFkZXJzICovLApAQCAtMjc3MzYsMTMgKzI3NzI5LDEyIEBA
CiAJCQkJMDhBNDg0NzcwRTUyNzJDNTAwQzNGRTc2IC8qIFNjcmlwdEVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRTExQzlEQjAwRUIzNjk5NTAwRTQwOURCIC8qIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEwMDJDQ0UwRjY2RURFRjAwOUU2NjBE
IC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0MUYwNjZFNTBG
NjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQx
RjA2NkU1MEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRHbG9iYWxPYmplY3QuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRkQzMTYwMzUxMkIwMjY3NjAwQzFBMzU5IC8qIFNjcmlwdFByb2Nlc3Nvck5v
ZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjMzRjAyODIxMjA5NDdGMjAwRTU3NDNBIC8qIFNj
cmlwdFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOUY3MjMwNTAxMTE4NEI0MTAwQUQw
MTI2IC8qIFNjcmlwdFByb2ZpbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCThBNDEzQUUxMTIw
N0JCQTUwMDgyMDE2RSAvKiBTY3JpcHRSdW5uZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEy
N0Q1MzcwRjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCTkzNENDMEUxMEVEMzlENkYwMEE2NThGMiAvKiBTY3JpcHRWYWx1ZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQzhBRTM0RTEyRUEwOTZBMDBFQjNBRTYgLyogU2Nyb2xsYWJsZUFyZWEuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQ0EzQkY2N0MxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFu
aW1hdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNTExNTZFMTJCMTc0OUMwMEM5Njc1NCAv
KiBTY3JvbGxBbmltYXRvck1hYy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvRGljdGlvbmFyeS5oCmluZGV4IDk0ZGE4NzguLmZkNGJlZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmgKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJK
U0RpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8Ymlu
ZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAg
LTkyLDcgKzkyLDcgQEAgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBEaWN0aW9uYXJ5OjpnZXRF
dmVudExpc3RlbmVyKGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwKICAgICBpZiAoIW1fZGljdGlv
bmFyeS5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgU2NyaXB0VmFsdWUgZXZl
bnRMaXN0ZW5lcjsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBldmVudExpc3RlbmVyOwog
ICAgIGlmICghbV9kaWN0aW9uYXJ5LnRyeUdldFByb3BlcnR5KHByb3BlcnR5TmFtZSwgZXZlbnRM
aXN0ZW5lcikpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChldmVudExpc3RlbmVyLmhhc05v
VmFsdWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRp
bmdVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0
aWxpdGllcy5jcHAKaW5kZXggYjhmMWJjOC4uN2E3N2RiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKQEAgLTE3OCw3ICsxNzgs
NyBAQCBzdGF0aWMgSlNWYWx1ZSBnZXROdGhWYWx1ZU9uS2V5UGF0aChFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgcm9vdFZhbHVlLCBjb25zdCBWZQogICAgIHJldHVybiBjdXJyZW50VmFsdWU7CiB9
CiAKLXN0YXRpYyBQYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVl
QW5kS2V5UGF0aChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29u
c3QgU3RyaW5nJiBrZXlQYXRoKQorc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJL
ZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCiB7CiAgICAg
VmVjdG9yPFN0cmluZz4ga2V5UGF0aEVsZW1lbnRzOwogICAgIElEQktleVBhdGhQYXJzZUVycm9y
IGVycm9yOwpAQCAtMjI4LDcgKzIyOCw3IEBAIHN0YXRpYyBib29sIGNhbkluamVjdE50aFZhbHVl
T25LZXlQYXRoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSByb290VmFsdWUsIGNvbnN0CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgaW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKERPTVJl
cXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBTY3JpcHRW
YWx1ZSYgdmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCitib29sIGluamVjdElEQktl
eUludG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgUGFzc1JlZlB0
cjxJREJLZXk+IGtleSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBJREJL
ZXlQYXRoJiBrZXlQYXRoKQogewogICAgIExPRyhTdG9yYWdlQVBJLCAiaW5qZWN0SURCS2V5SW50
b1NjcmlwdFZhbHVlIik7CiAKQEAgLTI1NCw3ICsyNTQsNyBAQCBib29sIGluamVjdElEQktleUlu
dG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgUGFzc1JlZlB0cjxJ
REJLZQogICAgIHJldHVybiB0cnVlOwogfQogCi1QYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURC
S2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0
ZSwgY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQor
UGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgo
RE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlJiB2YWx1ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKIHsKICAgICBMT0coU3RvcmFn
ZUFQSSwgImNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgiKTsKICAgICBBU1NF
UlQoIWtleVBhdGguaXNOdWxsKCkpOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIFBhc3NSZWZQdHI8SURC
S2V5PiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKERPTVJlcXVlc3RTdGF0
ZSogcmVxdWVzCiAgICAgcmV0dXJuIGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBh
dGgoZXhlYywgdmFsdWUsIGtleVBhdGguc3RyaW5nKCkpOwogfQogCi1ib29sIGNhbkluamVjdElE
QktleUludG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgY29uc3Qg
U2NyaXB0VmFsdWUmIHNjcmlwdFZhbHVlLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQorYm9v
bCBjYW5JbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0
U3RhdGUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBzY3JpcHRWYWx1ZSwgY29uc3Qg
SURCS2V5UGF0aCYga2V5UGF0aCkKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgImNhbkluamVjdElE
QktleUludG9TY3JpcHRWYWx1ZSIpOwogCkBAIC0yOTQsMTYgKzI5NCwxNiBAQCBib29sIGNhbklu
amVjdElEQktleUludG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwg
Y29uc3QgU2NyaXB0VgogICAgIHJldHVybiBjYW5JbmplY3ROdGhWYWx1ZU9uS2V5UGF0aChleGVj
LCBzY3JpcHRWYWx1ZS5qc1ZhbHVlKCksIGtleVBhdGhFbGVtZW50cywga2V5UGF0aEVsZW1lbnRz
LnNpemUoKSAtIDEpOwogfQogCi1TY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVlKERPTVJl
cXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gcHJwVmFsdWUpCitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVl
KERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gcHJwVmFsdWUpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gcmVxdWVzdFN0YXRl
LT5leGVjKCk7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZh
bHVlID0gcHJwVmFsdWU7CiAgICAgaWYgKHNlcmlhbGl6ZWRWYWx1ZSkKLSAgICAgICAgcmV0dXJu
IFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShleGVjLCBzZXJpYWxpemVkVmFsdWUuZ2V0KCksIE5v
blRocm93aW5nKTsKLSAgICByZXR1cm4gU2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwganNOdWxsKCkp
OworICAgICAgICByZXR1cm4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShleGVj
LCBzZXJpYWxpemVkVmFsdWUuZ2V0KCksIE5vblRocm93aW5nKTsKKyAgICByZXR1cm4gRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwganNOdWxsKCkpOwogfQogCi1TY3JpcHRWYWx1
ZSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRl
LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcHJwQnVmZmVyKQorRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUgZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RT
dGF0ZSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHBycEJ1ZmZlcikKIHsKICAgICBFeGVjU3Rh
dGUqIGV4ZWMgPSByZXF1ZXN0U3RhdGUtPmV4ZWMoKTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBwcnBCdWZmZXI7CkBAIC0zMTIsMTggKzMxMiwxOCBAQCBTY3JpcHRWYWx1ZSBk
ZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBQ
YXNzUmVmUHRyPAogICAgICAgICBWZWN0b3I8dWludDhfdD4gdmFsdWU7CiAgICAgICAgIHZhbHVl
LmFwcGVuZChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICBSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0ZXModmFsdWUpOwotICAgICAgICByZXR1cm4gU2NyaXB0
VmFsdWU6OmRlc2VyaWFsaXplKGV4ZWMsIHNlcmlhbGl6ZWRWYWx1ZS5nZXQoKSwgTm9uVGhyb3dp
bmcpOworICAgICAgICByZXR1cm4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShl
eGVjLCBzZXJpYWxpemVkVmFsdWUuZ2V0KCksIE5vblRocm93aW5nKTsKICAgICB9Ci0gICAgcmV0
dXJuIFNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIGpzTnVsbCgpKTsKKyAgICByZXR1cm4gRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwganNOdWxsKCkpOwogfQogCi1TY3JpcHRWYWx1
ZSBpZGJLZXlUb1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBQYXNz
UmVmUHRyPElEQktleT4ga2V5KQorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgaWRiS2V5VG9TY3Jp
cHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgUGFzc1JlZlB0cjxJREJLZXk+
IGtleSkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSByZXF1ZXN0U3RhdGUtPmV4ZWMoKTsKLSAg
ICByZXR1cm4gU2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwgaWRiS2V5VG9KU1ZhbHVlKGV4ZWMsIGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIGtl
eS5nZXQoKSkpOworICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShleGVjLT52bSgp
LCBpZGJLZXlUb0pTVmFsdWUoZXhlYywganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwga2V5LmdldCgpKSk7CiB9CiAKLVBhc3NSZWZQdHI8SURC
S2V5PiBzY3JpcHRWYWx1ZVRvSURCS2V5KERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBj
b25zdCBTY3JpcHRWYWx1ZSYgc2NyaXB0VmFsdWUpCitQYXNzUmVmUHRyPElEQktleT4gc2NyaXB0
VmFsdWVUb0lEQktleShET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmIHNjcmlwdFZhbHVlKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9
IHJlcXVlc3RTdGF0ZS0+ZXhlYygpOwogICAgIHJldHVybiBjcmVhdGVJREJLZXlGcm9tVmFsdWUo
ZXhlYywgc2NyaXB0VmFsdWUuanNWYWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaAppbmRleCA5MDhjN2ZkLi5mMDEyYWVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oCkBA
IC0yOSw3ICsyOSw3IEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKICNpbmNsdWRl
ICJEaWN0aW9uYXJ5LmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxiaW5k
aW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTQxLDEzICs0MSwxMyBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIElE
QktleVBhdGggaWRiS2V5UGF0aEZyb21WYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1
ZSk7CiAKLWJvb2wgaW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSos
IFBhc3NSZWZQdHI8SURCS2V5PiwgU2NyaXB0VmFsdWUmLCBjb25zdCBJREJLZXlQYXRoJik7Ci1Q
YXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChE
T01SZXF1ZXN0U3RhdGUqLCBjb25zdCBTY3JpcHRWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsK
LWJvb2wgY2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSosIGNv
bnN0IFNjcmlwdFZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOwotU2NyaXB0VmFsdWUgZGVzZXJp
YWxpemVJREJWYWx1ZShET01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4pOwotU2NyaXB0VmFsdWUgZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihET01SZXF1
ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pOwotU2NyaXB0VmFsdWUgaWRiS2V5
VG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPElEQktleT4pOwotUGFz
c1JlZlB0cjxJREJLZXk+IHNjcmlwdFZhbHVlVG9JREJLZXkoRE9NUmVxdWVzdFN0YXRlKiwgY29u
c3QgU2NyaXB0VmFsdWUmKTsKK2Jvb2wgaW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKERPTVJl
cXVlc3RTdGF0ZSosIFBhc3NSZWZQdHI8SURCS2V5PiwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
LCBjb25zdCBJREJLZXlQYXRoJik7CitQYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJv
bVNjcmlwdFZhbHVlQW5kS2V5UGF0aChET01SZXF1ZXN0U3RhdGUqLCBjb25zdCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsKK2Jvb2wgY2FuSW5qZWN0SURCS2V5
SW50b1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOworRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZGVz
ZXJpYWxpemVJREJWYWx1ZShET01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4pOworRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZGVzZXJpYWxpemVJREJWYWx1
ZUJ1ZmZlcihET01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pOworRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUgaWRiS2V5VG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUq
LCBQYXNzUmVmUHRyPElEQktleT4pOworUGFzc1JlZlB0cjxJREJLZXk+IHNjcmlwdFZhbHVlVG9J
REJLZXkoRE9NUmVxdWVzdFN0YXRlKiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmKTsK
IAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25h
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAppbmRl
eCA3ZWRiMWQ1Li40YzI4ODI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGlj
dGlvbmFyeS5jcHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJKU1N0b3JhZ2UuaCIKICNp
bmNsdWRlICJKU1RyYWNrQ3VzdG9tLmgiCiAjaW5jbHVkZSAiSlNWb2lkQ2FsbGJhY2suaCIKLSNp
bmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
IgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNUeXBlZEFycmF5cy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CkBAIC0xNDQsOSArMTQzLDkgQEAgdm9pZCBKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFZlY3RvcjxTdHJpbmc+JgogICAgIH0K
IH0KIAotdm9pZCBKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgdmFsdWUsIFNjcmlwdFZhbHVlJiByZXN1bHQpCit2b2lkIEpTRGljdGlvbmFyeTo6Y29u
dmVydFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmIHJlc3VsdCkKIHsKLSAgICByZXN1bHQgPSBTY3JpcHRWYWx1ZShleGVjLT52bSgp
LCB2YWx1ZSk7CisgICAgcmVzdWx0ID0gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoZXhlYy0+dm0o
KSwgdmFsdWUpOwogfQogCiB2b2lkIEpTRGljdGlvbmFyeTo6Y29udmVydFZhbHVlKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mIHJl
c3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFy
eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmgKaW5kZXggYTI5
MDU2Zi4uM2E4ZTJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
aWN0aW9uYXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5
LmgKQEAgLTM0LDYgKzM0LDEwIEBACiAjaW5jbHVkZSA8cnVudGltZS9VaW50OEFycmF5Lmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAorbmFtZXNwYWNlIERlcHJlY2F0ZWQgeworY2xhc3Mg
U2NyaXB0VmFsdWU7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXJyYXlWYWx1
ZTsKQEAgLTQ2LDcgKzUwLDYgQEAgY2xhc3MgTWVkaWFLZXlFcnJvcjsKIGNsYXNzIE1lZGlhU3Ry
ZWFtOwogY2xhc3MgTWVkaWFTdHJlYW1UcmFjazsKIGNsYXNzIE5vZGU7Ci1jbGFzcyBTY3JpcHRW
YWx1ZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIGNsYXNzIFN0b3JhZ2U7CiBjbGFz
cyBUcmFja0Jhc2U7CkBAIC0xMDgsNyArMTExLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9p
ZCBjb252ZXJ0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGRvdWJsZSYgcmVz
dWx0KTsKICAgICBzdGF0aWMgdm9pZCBjb252ZXJ0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTVmFsdWUsIERpY3Rpb25hcnkmIHJlc3VsdCk7CiAgICAgc3RhdGljIHZvaWQgY29udmVydFZh
bHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBTdHJpbmcmIHJlc3VsdCk7Ci0gICAg
c3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBT
Y3JpcHRWYWx1ZSYgcmVzdWx0KTsKKyAgICBzdGF0aWMgdm9pZCBjb252ZXJ0VmFsdWUoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiByZXN1bHQp
OwogICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNW
YWx1ZSwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCk7CiAgICAgc3RhdGljIHZvaWQgY29udmVydFZh
bHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiYgcmVzdWx0KTsKICAgICBzdGF0aWMgdm9pZCBjb252ZXJ0VmFsdWUoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkpTVmFsdWUsIFJlZlB0cjxET01XaW5kb3c+JiByZXN1bHQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3Vz
dG9tLmNwcAppbmRleCBmZTZjOGJhLi43YWQzNmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcApAQCAtMzEs
MTMgKzMxLDE0IEBACiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JDYW52YXNJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJKU0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUgPGJp
bmRpbmdzL1NjcmlwdE9iamVjdC5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKwogI2lmIEVO
QUJMRShXRUJHTCkKICNpbmNsdWRlICJKU0RpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJKU1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCIK
ICNlbmRpZgotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IApAQCAtODUsOCArODYsOCBAQCBKU1ZhbHVlIEpTSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRl
eHQoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAgICAgSlNWYWx1
ZSBqc1ZhbHVlID0gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoY29udGV4
dCkpOwogICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNhbnZhc0FnZW50RW5hYmxl
ZCgmY2FudmFzLmRvY3VtZW50KCkpKSB7Ci0gICAgICAgIFNjcmlwdE9iamVjdCBjb250ZXh0T2Jq
ZWN0KGV4ZWMsIGpzVmFsdWUuZ2V0T2JqZWN0KCkpOwotICAgICAgICBTY3JpcHRPYmplY3Qgd3Jh
cHBlZDsKKyAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IGNvbnRleHRPYmplY3QoZXhl
YywganNWYWx1ZS5nZXRPYmplY3QoKSk7CisgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVj
dCB3cmFwcGVkOwogICAgICAgICBpZiAoY29udGV4dC0+aXMyZCgpKQogICAgICAgICAgICAgd3Jh
cHBlZCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d3JhcENhbnZhczJEUmVuZGVyaW5nQ29u
dGV4dEZvckluc3RydW1lbnRhdGlvbigmY2FudmFzLmRvY3VtZW50KCksIGNvbnRleHRPYmplY3Qp
OwogI2lmIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAppbmRleCA4M2Q1OTVmLi4wYjQ1
MjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2Ny
aXB0SG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmpl
Y3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCkBAIC01MCw4ICs1MCw4IEBACiAjaW5jbHVkZSAiSlNO
b2RlLmgiCiAjaW5jbHVkZSAiSlNOb2RlTGlzdC5oIgogI2luY2x1ZGUgIkpTU3RvcmFnZS5oIgot
I2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU3RvcmFnZS5oIgorI2luY2x1ZGUg
PGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZh
bHVlcy5oPgogI2luY2x1ZGUgPHBhcnNlci9Tb3VyY2VDb2RlLmg+CiAjaW5jbHVkZSA8cnVudGlt
ZS9EYXRlSW5zdGFuY2UuaD4KQEAgLTY5LDIwICs2OSwyMCBAQCB1c2luZyBuYW1lc3BhY2UgSlND
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU5vZGUqIEluamVjdGVkU2NyaXB0SG9zdDo6c2Ny
aXB0VmFsdWVBc05vZGUoU2NyaXB0VmFsdWUgdmFsdWUpCitOb2RlKiBJbmplY3RlZFNjcmlwdEhv
c3Q6OnNjcmlwdFZhbHVlQXNOb2RlKERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHZhbHVlKQogewog
ICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSB8fCB2YWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgcmV0dXJuIHRvTm9kZSh2YWx1ZS5qc1ZhbHVlKCkpOwogfQogCi1TY3JpcHRW
YWx1ZSBJbmplY3RlZFNjcmlwdEhvc3Q6Om5vZGVBc1NjcmlwdFZhbHVlKEpTQzo6RXhlY1N0YXRl
KiBzdGF0ZSwgTm9kZSogbm9kZSkKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIEluamVjdGVkU2Ny
aXB0SG9zdDo6bm9kZUFzU2NyaXB0VmFsdWUoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBOb2RlKiBu
b2RlKQogewogICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb05vZGUoc3RhdGUsIG5vZGUpKQot
ICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoc3RhdGUtPnZtKCksIGpzTnVsbCgpKTsKKyAgICAg
ICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKHN0YXRlLT52bSgpLCBqc051bGwoKSk7
CiAKICAgICBKU0xvY2tIb2xkZXIgbG9jayhzdGF0ZSk7Ci0gICAgcmV0dXJuIFNjcmlwdFZhbHVl
KHN0YXRlLT52bSgpLCB0b0pTKHN0YXRlLCBkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90
eXBlKHN0YXRlKSwgbm9kZSkpOworICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShz
dGF0ZS0+dm0oKSwgdG9KUyhzdGF0ZSwgZGVwcmVjYXRlZEdsb2JhbE9iamVjdEZvclByb3RvdHlw
ZShzdGF0ZSksIG5vZGUpKTsKIH0KIAogSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6aW5z
cGVjdGVkT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKQEAgLTk1LDcgKzk1LDcgQEAgSlNWYWx1ZSBK
U0luamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdGVkT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVj
KTsKLSAgICBTY3JpcHRWYWx1ZSBzY3JpcHRWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMpOworICAg
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHNjcmlwdFZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYyk7
CiAgICAgaWYgKHNjcmlwdFZhbHVlLmhhc05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CiAKQEAgLTI0Nyw4ICsyNDcsOCBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRI
b3N0OjpnZXRFdmVudExpc3RlbmVycyhFeGVjU3RhdGUqIGV4ZWMpCiBKU1ZhbHVlIEpTSW5qZWN0
ZWRTY3JpcHRIb3N0OjppbnNwZWN0KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoZXhlYy0+
YXJndW1lbnRDb3VudCgpID49IDIpIHsKLSAgICAgICAgU2NyaXB0VmFsdWUgb2JqZWN0KGV4ZWMt
PnZtKCksIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKLSAgICAgICAgU2NyaXB0VmFsdWUg
aGludHMoZXhlYy0+dm0oKSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSkpOworICAgICAgICBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBvYmplY3QoZXhlYy0+dm0oKSwgZXhlYy0+dW5jaGVja2Vk
QXJndW1lbnQoMCkpOworICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBoaW50cyhleGVj
LT52bSgpLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKSk7CiAgICAgICAgIGltcGwoKS5pbnNw
ZWN0SW1wbChvYmplY3QudG9JbnNwZWN0b3JWYWx1ZShleGVjKSwgaGludHMudG9JbnNwZWN0b3JW
YWx1ZShleGVjKSk7CiAgICAgfQogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3Bw
CmluZGV4IDJkYmUyZGUuLmE2ZGE2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAK
ICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgogI2luY2x1ZGUgIkpTSW5qZWN0ZWRTY3Jp
cHRIb3N0LmgiCiAjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCi0jaW5jbHVkZSAi
U2NyaXB0T2JqZWN0LmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0T2JqZWN0Lmg+CiAjaW5j
bHVkZSA8cGFyc2VyL1NvdXJjZUNvZGUuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgog
CkBAIC00OSw3ICs0OSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotU2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0
ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0
ZSwgaW50IGlkKQorRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0TWFuYWdl
cjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEpTQzo6RXhlY1N0
YXRlKiBzY3JpcHRTdGF0ZSwgaW50IGlkKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKHNjcmlw
dFN0YXRlKTsKIApAQCAtNjYsMTMgKzY2LDEzIEBAIFNjcmlwdE9iamVjdCBJbmplY3RlZFNjcmlw
dE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBKCiAg
ICAgICAgIGV2YWx1YXRpb25SZXR1cm5WYWx1ZSA9IEpTQzo6ZXZhbHVhdGUoc2NyaXB0U3RhdGUs
IHNvdXJjZUNvZGUsIGdsb2JhbFRoaXNWYWx1ZSwgJmV2YWx1YXRpb25FeGNlcHRpb24pOwogICAg
IH0KICAgICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIFNjcmlwdE9i
amVjdCgpOworICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KCk7CiAKICAg
ICBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBldmFsdWF0aW9uUmV0dXJuVmFsdWU7CiAgICAgQ2Fs
bERhdGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5j
dGlvblZhbHVlLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkK
LSAgICAgICAgcmV0dXJuIFNjcmlwdE9iamVjdCgpOworICAgICAgICByZXR1cm4gRGVwcmVjYXRl
ZDo6U2NyaXB0T2JqZWN0KCk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAg
IGFyZ3MuYXBwZW5kKHRvSlMoc2NyaXB0U3RhdGUsIGdsb2JhbE9iamVjdCwgbV9pbmplY3RlZFNj
cmlwdEhvc3QuZ2V0KCkpKTsKQEAgLTgxLDggKzgxLDggQEAgU2NyaXB0T2JqZWN0IEluamVjdGVk
U2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2Us
IEoKIAogICAgIEpTVmFsdWUgcmVzdWx0ID0gSlNDOjpjYWxsKHNjcmlwdFN0YXRlLCBmdW5jdGlv
blZhbHVlLCBjYWxsVHlwZSwgY2FsbERhdGEsIGdsb2JhbFRoaXNWYWx1ZSwgYXJncyk7CiAgICAg
aWYgKHJlc3VsdC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gU2NyaXB0T2JqZWN0KHNjcmlw
dFN0YXRlLCByZXN1bHQuZ2V0T2JqZWN0KCkpOwotICAgIHJldHVybiBTY3JpcHRPYmplY3QoKTsK
KyAgICAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdChzY3JpcHRTdGF0ZSwgcmVz
dWx0LmdldE9iamVjdCgpKTsKKyAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KCk7
CiB9CiAKIGJvb2wgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5k
b3coSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwCmluZGV4IDBhOWE0YzEuLmM4NGNh
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVu
dEN1c3RvbS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgSlNWYWx1ZSBKU01lc3NhZ2VFdmVudDo6ZGF0
YShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICAgSlNWYWx1ZSByZXN1bHQ7CiAgICAgc3dpdGNo
IChldmVudC5kYXRhVHlwZSgpKSB7CiAgICAgY2FzZSBNZXNzYWdlRXZlbnQ6OkRhdGFUeXBlU2Ny
aXB0VmFsdWU6IHsKLSAgICAgICAgU2NyaXB0VmFsdWUgc2NyaXB0VmFsdWUgPSBldmVudC5kYXRh
QXNTY3JpcHRWYWx1ZSgpOworICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBzY3JpcHRW
YWx1ZSA9IGV2ZW50LmRhdGFBc1NjcmlwdFZhbHVlKCk7CiAgICAgICAgIGlmIChzY3JpcHRWYWx1
ZS5oYXNOb1ZhbHVlKCkpCiAgICAgICAgICAgICByZXN1bHQgPSBqc051bGwoKTsKICAgICAgICAg
ZWxzZQpAQCAtMTA1LDcgKzEwNSw3IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUgaGFuZGxlSW5pdE1l
c3NhZ2VFdmVudChKU01lc3NhZ2VFdmVudCoganNFdmVudCwgSlNDOjpFeGVjU3RhCiAgICAgICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogICAgIH0KLSAgICBTY3JpcHRWYWx1ZSBkYXRhQXJnID0gU2NyaXB0VmFsdWUoZXhlYy0+
dm0oKSwgZXhlYy0+YXJndW1lbnQoMykpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRh
dGFBcmcgPSBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBleGVjLT5hcmd1bWVu
dCgzKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2No
ZWR1bGVkQWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFj
dGlvbi5jcHAKaW5kZXggMDZjNTFjYS4uOTE3M2VkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCkBAIC0zNyw5ICszNyw5IEBACiAjaW5jbHVk
ZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUu
aCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlclRocmVh
ZC5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8cnVudGlt
ZS9KU0xvY2suaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKaW5kZXggNWQ2NmM0
ZC4uN2Q2OTVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q2FsbFN0YWNrRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlICJTY3Jp
cHRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJT
Y3JpcHRDYWxsU3RhY2suaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPGJp
bmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg+
CiAjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lSW5saW5lcy5oPgogI2luY2x1ZGUgPGlu
dGVycHJldGVyL1N0YWNrVmlzaXRvci5oPgpAQCAtMTk5LDEwICsxOTksMTAgQEAgUGFzc1JlZlB0
cjxTY3JpcHRDYWxsU3RhY2s+IGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMKIAogUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGNyZWF0ZVNjcmlw
dEFyZ3VtZW50cyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgc2tpcEFyZ3VtZW50Q291
bnQpCiB7Ci0gICAgVmVjdG9yPFNjcmlwdFZhbHVlPiBhcmd1bWVudHM7CisgICAgVmVjdG9yPERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlPiBhcmd1bWVudHM7CiAgICAgc2l6ZV90IGFyZ3VtZW50Q291
bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IHNraXBBcmd1
bWVudENvdW50OyBpIDwgYXJndW1lbnRDb3VudDsgKytpKQotICAgICAgICBhcmd1bWVudHMuYXBw
ZW5kKFNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKSk7
CisgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoZXhlYy0+
dm0oKSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkpKTsKICAgICByZXR1cm4gU2NyaXB0QXJn
dW1lbnRzOjpjcmVhdGUoZXhlYywgYXJndW1lbnRzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCAyYzNlZjkzYWYuLjAwN2Iw
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
Y3BwCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgogI2luY2x1ZGUg
IlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNs
dWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5o
IgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZS5oIgpA
QCAtNDgsNiArNDcsNyBAQAogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNs
dWRlICJucHJ1bnRpbWVfaW1wbC5oIgogI2luY2x1ZGUgInJ1bnRpbWVfcm9vdC5oIgorI2luY2x1
ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8ZGVidWdnZXIvRGVidWdnZXIu
aD4KICNpbmNsdWRlIDxoZWFwL1N0cm9uZ0lubGluZXMuaD4KICNpbmNsdWRlIDxydW50aW1lL0lu
aXRpYWxpemVUaHJlYWRpbmcuaD4KQEAgLTExNyw3ICsxMTcsNyBAQCBKU0RPTVdpbmRvd1NoZWxs
KiBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVXaW5kb3dTaGVsbChET01XcmFwcGVyV29ybGQmIHdv
cmxkKQogICAgIHJldHVybiB3aW5kb3dTaGVsbC5nZXQoKTsKIH0KIAotU2NyaXB0VmFsdWUgU2Ny
aXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNv
dXJjZUNvZGUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCitEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYgc291cmNlQ29kZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKICAgICBjb25zdCBTb3Vy
Y2VDb2RlJiBqc1NvdXJjZUNvZGUgPSBzb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpOwogICAgIFN0
cmluZyBzb3VyY2VVUkwgPSBqc1NvdXJjZUNvZGUucHJvdmlkZXIoKS0+dXJsKCk7CkBAIC0xNDks
MTQgKzE0OSwxNCBAQCBTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29y
bGQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZQogICAgIGlmIChldmFsdWF0aW9u
RXhjZXB0aW9uKSB7CiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihleGVjLCBldmFsdWF0aW9uRXhj
ZXB0aW9uLCBzb3VyY2VDb2RlLmNhY2hlZFNjcmlwdCgpKTsKICAgICAgICAgbV9zb3VyY2VVUkwg
PSBzYXZlZFNvdXJjZVVSTDsKLSAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7CisgICAgICAg
IHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSgpOwogICAgIH0KIAogICAgIG1fc291cmNl
VVJMID0gc2F2ZWRTb3VyY2VVUkw7Ci0gICAgcmV0dXJuIFNjcmlwdFZhbHVlKGV4ZWMtPnZtKCks
IHJldHVyblZhbHVlKTsKKyAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoZXhlYy0+
dm0oKSwgcmV0dXJuVmFsdWUpOwogfQogCi1TY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpl
dmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKSAKK0RlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJj
ZUNvZGUmIHNvdXJjZUNvZGUpIAogewogICAgIHJldHVybiBldmFsdWF0ZUluV29ybGQoc291cmNl
Q29kZSwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwogfQpAQCAtNDU4LDEzICs0NTgsMTMgQEAg
dm9pZCBTY3JpcHRDb250cm9sbGVyOjpjbGVhclNjcmlwdE9iamVjdHMoKQogI2VuZGlmCiB9CiAK
LVNjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdy
YXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdl
c3R1cmUpCitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRl
U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlw
dCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQogewogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdl
c3R1cmVJbmRpY2F0b3IoZm9yY2VVc2VyR2VzdHVyZSA/IERlZmluaXRlbHlQcm9jZXNzaW5nVXNl
ckdlc3R1cmUgOiBQb3NzaWJseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAgICAgU2NyaXB0U291
cmNlQ29kZSBzb3VyY2VDb2RlKHNjcmlwdCwgbV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSk7CiAK
ICAgICBpZiAoIWNhbkV4ZWN1dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBpc1Bh
dXNlZCgpKQotICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCk7CiAKICAgICByZXR1cm4gZXZhbHVhdGVJbldvcmxkKHNv
dXJjZUNvZGUsIHdvcmxkKTsKIH0KQEAgLTUwMCwxNiArNTAwLDE2IEBAIGJvb2wgU2NyaXB0Q29u
dHJvbGxlcjo6Y2FuRXhlY3V0ZVNjcmlwdHMoUmVhc29uRm9yQ2FsbGluZ0NhbkV4ZWN1dGVTY3Jp
cHRzIHJlYXNvCiAgICAgcmV0dXJuIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuYWxsb3dTY3Jp
cHQobV9mcmFtZS5zZXR0aW5ncygpLmlzU2NyaXB0RW5hYmxlZCgpKTsKIH0KIAotU2NyaXB0VmFs
dWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCwg
Ym9vbCBmb3JjZVVzZXJHZXN0dXJlKQorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgU2NyaXB0Q29u
dHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVz
ZXJHZXN0dXJlKQogewogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3Io
Zm9yY2VVc2VyR2VzdHVyZSA/IERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUgOiBQb3Nz
aWJseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAgICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHQoU2Ny
aXB0U291cmNlQ29kZShzY3JpcHQsIG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpKTsKIH0KIAot
U2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRT
b3VyY2VDb2RlJiBzb3VyY2VDb2RlKQorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgU2NyaXB0Q29u
dHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2Rl
KQogewogICAgIGlmICghY2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpIHx8
IGlzUGF1c2VkKCkpCi0gICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOworICAgICAgICByZXR1
cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKTsKIAogICAgIFJlZjxGcmFtZT4gcHJvdGVjdCht
X2ZyYW1lKTsgLy8gU2NyaXB0IGV4ZWN1dGlvbiBjYW4gZGVzdHJveSB0aGUgZnJhbWUsIGFuZCB0
aHVzIHRoZSBTY3JpcHRDb250cm9sbGVyLgogCkBAIC01MzIsNyArNTMyLDcgQEAgYm9vbCBTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYgdXJsLCBTaG91
bGRSZXBsYWNlRG9jdW0KICAgICBjb25zdCBpbnQgamF2YXNjcmlwdFNjaGVtZUxlbmd0aCA9IHNp
emVvZigiamF2YXNjcmlwdDoiKSAtIDE7CiAKICAgICBTdHJpbmcgZGVjb2RlZFVSTCA9IGRlY29k
ZVVSTEVzY2FwZVNlcXVlbmNlcyh1cmwuc3RyaW5nKCkpOwotICAgIFNjcmlwdFZhbHVlIHJlc3Vs
dCA9IGV4ZWN1dGVTY3JpcHQoZGVjb2RlZFVSTC5zdWJzdHJpbmcoamF2YXNjcmlwdFNjaGVtZUxl
bmd0aCkpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHJlc3VsdCA9IGV4ZWN1dGVTY3Jp
cHQoZGVjb2RlZFVSTC5zdWJzdHJpbmcoamF2YXNjcmlwdFNjaGVtZUxlbmd0aCkpOwogCiAgICAg
Ly8gSWYgZXhlY3V0aW5nIHNjcmlwdCBjYXVzZWQgdGhpcyBmcmFtZSB0byBiZSByZW1vdmVkIGZy
b20gdGhlIHBhZ2UsIHdlCiAgICAgLy8gZG9uJ3Qgd2FudCB0byB0cnkgdG8gcmVwbGFjZSBpdHMg
ZG9jdW1lbnQhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmgKaW5kZXggMzY2YjcyNC4uNjdlOTZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuaApAQCAtMzgsNiArMzgsMTAgQEAgT0JKQ19DTEFTUyBKU0Nv
bnRleHQ7CiAKIHN0cnVjdCBOUE9iamVjdDsKIAorbmFtZXNwYWNlIERlcHJlY2F0ZWQgeworY2xh
c3MgU2NyaXB0VmFsdWU7Cit9CisKIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFs
T2JqZWN0OwogICAgIGNsYXNzIEV4ZWNTdGF0ZTsKQEAgLTUzLDcgKzU3LDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgSFRNTFBsdWdJbkVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNz
IFNjcmlwdFNvdXJjZUNvZGU7Ci1jbGFzcyBTY3JpcHRWYWx1ZTsKIGNsYXNzIFNlY3VyaXR5T3Jp
Z2luOwogY2xhc3MgV2lkZ2V0OwogCkBAIC05NCw5ICs5Nyw5IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyB2b2lkIGdldEFsbFdvcmxkcyhWZWN0b3I8UmVmPERPTVdyYXBwZXJXb3JsZD4+Jik7CiAK
LSAgICBTY3JpcHRWYWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsK
LSAgICBTY3JpcHRWYWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29s
IGZvcmNlVXNlckdlc3R1cmUgPSBmYWxzZSk7Ci0gICAgU2NyaXB0VmFsdWUgZXhlY3V0ZVNjcmlw
dEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9y
Y2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBleGVj
dXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKKyAgICBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNl
ckdlc3R1cmUgPSBmYWxzZSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZXhlY3V0ZVNj
cmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wg
Zm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhcmd1
bWVudCBpcyBhIEphdmFTY3JpcHQgVVJMLgogICAgIGJvb2wgZXhlY3V0ZUlmSmF2YVNjcmlwdFVS
TChjb25zdCBVUkwmLCBTaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgc2hvdWxk
UmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMID0gUmVwbGFjZURvY3VtZW50SWZKYXZhU2Ny
aXB0VVJMKTsKQEAgLTEwNSw4ICsxMDgsOCBAQCBwdWJsaWM6CiAgICAgLy8gRGFyd2luIGlzIGFu
IGV4Y2VwdGlvbiB0byB0aGlzIHJ1bGU6IGl0IGlzIE9LIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBm
cm9tIGFueSB0aHJlYWQsIGV2ZW4gcmVlbnRyYW50bHkuCiAgICAgc3RhdGljIHZvaWQgaW5pdGlh
bGl6ZVRocmVhZGluZygpOwogCi0gICAgU2NyaXB0VmFsdWUgZXZhbHVhdGUoY29uc3QgU2NyaXB0
U291cmNlQ29kZSYpOwotICAgIFNjcmlwdFZhbHVlIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3Jp
cHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUgZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYpOworICAgIERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9N
V3JhcHBlcldvcmxkJik7CiAKICAgICBXVEY6OlRleHRQb3NpdGlvbiBldmVudEhhbmRsZXJQb3Np
dGlvbigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAKaW5kZXggYWRiNTc3OC4uMjNkNGE2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtNDEsOCArNDEsOCBA
QAogI2luY2x1ZGUgIlBhZ2VDb25zb2xlLmgiCiAjaW5jbHVkZSAiU2NyaXB0QnJlYWtwb2ludC5o
IgogI2luY2x1ZGUgIlNjcmlwdERlYnVnTGlzdGVuZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1
ZS5oIgogI2luY2x1ZGUgIlNvdW5kLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUu
aD4KICNpbmNsdWRlIDxkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oPgogI2luY2x1ZGUgPHBh
cnNlci9Tb3VyY2VQcm92aWRlci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CkBAIC0x
MzAsMTQgKzEzMCwxNCBAQCBib29sIFNjcmlwdERlYnVnU2VydmVyOjpjYW5TZXRTY3JpcHRTb3Vy
Y2UoKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0
U2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGJvb2wsIFN0cmluZyos
IFNjcmlwdFZhbHVlKiwgU2NyaXB0T2JqZWN0KikKK2Jvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OnNl
dFNjcmlwdFNvdXJjZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sLCBTdHJpbmcq
LCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSosIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCopCiB7
CiAgICAgLy8gRklYTUUoNDAzMDApOiBpbXBsZW1lbnQgdGhpcy4KICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKIAotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6dXBkYXRlQ2FsbFN0YWNrKFNjcmlwdFZh
bHVlKikKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnVwZGF0ZUNhbGxTdGFjayhEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSopCiB7CiAgICAgLy8gVGhpcyBtZXRob2QgaXMgdXNlZCBmb3IgcmVzdGFy
dCBmcmFtZSBmZWF0dXJlIHRoYXQgaXMgbm90IGltcGxlbWVudGVkIHlldC4KICAgICAvLyBGSVhN
RSg0MDMwMCk6IGltcGxlbWVudCB0aGlzLgpAQCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQgU2NyaXB0
RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRGlkUGF1c2UoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVu
ZXIpCiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAganNDYWxsRnJhbWUgPSBqc1VuZGVmaW5l
ZCgpOwogICAgIH0KLSAgICBsaXN0ZW5lci0+ZGlkUGF1c2Uoc3RhdGUsIFNjcmlwdFZhbHVlKHN0
YXRlLT52bSgpLCBqc0NhbGxGcmFtZSksIFNjcmlwdFZhbHVlKCkpOworICAgIGxpc3RlbmVyLT5k
aWRQYXVzZShzdGF0ZSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoc3RhdGUtPnZtKCksIGpzQ2Fs
bEZyYW1lKSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKSk7CiB9CiAKIHZvaWQgU2NyaXB0RGVi
dWdTZXJ2ZXI6OmRpc3BhdGNoRGlkQ29udGludWUoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVu
ZXIpCkBAIC0zMTksNyArMzE5LDcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y2xlYXJDb21w
aWxlZFNjcmlwdHMoKQogICAgIC8vIEZJWE1FKDg5NjUyKTogaW1wbGVtZW50IHRoaXMuCiB9CiAK
LXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJ1blNjcmlwdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0
IFN0cmluZyYsIFNjcmlwdFZhbHVlKiwgYm9vbCosIFN0cmluZyopCit2b2lkIFNjcmlwdERlYnVn
U2VydmVyOjpydW5TY3JpcHQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmLCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSosIGJvb2wqLCBTdHJpbmcqKQogewogICAgIC8vIEZJWE1FKDg5NjUy
KTogaW1wbGVtZW50IHRoaXMuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0RGVidWdTZXJ2ZXIuaAppbmRleCAyZmU5YWRhLi5hNzAxOGM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgKQEAgLTM3LDYgKzM3LDcgQEAK
ICNpbmNsdWRlICJTY3JpcHREZWJ1Z0xpc3RlbmVyLmgiCiAjaW5jbHVkZSAiU291cmNlSUQuaCIK
ICNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgog
I2luY2x1ZGUgPGRlYnVnZ2VyL0RlYnVnZ2VyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtNTAsMTIgKzUxLDkgQEAgY2xhc3MgRGVidWdn
ZXJDYWxsRnJhbWU7CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsKIGNsYXNzIEV4ZWNTdGF0ZTsKIH0K
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTY3JpcHREZWJ1Z0xpc3RlbmVyOwotY2xh
c3MgU2NyaXB0T2JqZWN0OwotY2xhc3MgU2NyaXB0VmFsdWU7Ci0KIGNsYXNzIFNjcmlwdERlYnVn
U2VydmVyIDogcHVibGljIEpTQzo6RGVidWdnZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFNjcmlwdERlYnVnU2VydmVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBA
IC02NCw4ICs2Miw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyQnJlYWtwb2ludHMoKTsKIAog
ICAgIGJvb2wgY2FuU2V0U2NyaXB0U291cmNlKCk7Ci0gICAgYm9vbCBzZXRTY3JpcHRTb3VyY2Uo
Y29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBib29sIHBy
ZXZpZXcsIFN0cmluZyogZXJyb3IsIFNjcmlwdFZhbHVlKiBuZXdDYWxsRnJhbWVzLCBTY3JpcHRP
YmplY3QqIHJlc3VsdCk7Ci0gICAgdm9pZCB1cGRhdGVDYWxsU3RhY2soU2NyaXB0VmFsdWUqIGNh
bGxGcmFtZSk7CisgICAgYm9vbCBzZXRTY3JpcHRTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2VJ
RCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBib29sIHByZXZpZXcsIFN0cmluZyogZXJyb3Is
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKiBuZXdDYWxsRnJhbWVzLCBEZXByZWNhdGVkOjpTY3Jp
cHRPYmplY3QqIHJlc3VsdCk7CisgICAgdm9pZCB1cGRhdGVDYWxsU3RhY2soRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUqIGNhbGxGcmFtZSk7CiAKICAgICBib29sIGNhdXNlc1JlY29tcGlsYXRpb24o
KSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBzdXBwb3J0c1NlcGFyYXRlU2NyaXB0Q29tcGls
YXRpb25BbmRFeGVjdXRpb24oKSB7IHJldHVybiBmYWxzZTsgfQpAQCAtODIsNyArODAsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGNvbXBpbGVTY3JpcHQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBT
dHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBTdHJpbmcqIHNjcmlw
dElELCBTdHJpbmcqIGV4Y2VwdGlvbk1lc3NhZ2UpOwogICAgIHZvaWQgY2xlYXJDb21waWxlZFNj
cmlwdHMoKTsKLSAgICB2b2lkIHJ1blNjcmlwdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0SUQsIFNjcmlwdFZhbHVlKiByZXN1bHQsIGJvb2wqIHdhc1Rocm93biwgU3RyaW5n
KiBleGNlcHRpb25NZXNzYWdlKTsKKyAgICB2b2lkIHJ1blNjcmlwdChKU0M6OkV4ZWNTdGF0ZSos
IGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKiByZXN1bHQs
IGJvb2wqIHdhc1Rocm93biwgU3RyaW5nKiBleGNlcHRpb25NZXNzYWdlKTsKIAogICAgIGNsYXNz
IFRhc2sgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCmluZGV4IDJlYTJiNGIu
LjdkMzA0YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1
bmN0aW9uQ2FsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVu
Y3Rpb25DYWxsLmNwcApAQCAtMzIsOCArMzIsNyBAQAogI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9u
Q2FsbC5oIgogCiAjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCi0jaW5jbHVkZSAi
U2NyaXB0VmFsdWUuaCIKLQorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5j
bHVkZSA8cnVudGltZS9KU0xvY2suaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IApAQCAtNDEsNyArNDAsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQo
Y29uc3QgU2NyaXB0T2JqZWN0JiBhcmd1bWVudCkKK3ZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFu
ZGxlcjo6YXBwZW5kQXJndW1lbnQoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiBhcmd1
bWVudCkKIHsKICAgICBpZiAoYXJndW1lbnQuc2NyaXB0U3RhdGUoKSAhPSBtX2V4ZWMpIHsKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01MCw3ICs0OSw3IEBAIHZvaWQgU2NyaXB0
Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQoY29uc3QgU2NyaXB0T2JqZWN0JiBh
cmd1bWVudCkKICAgICBtX2FyZ3VtZW50cy5hcHBlbmQoYXJndW1lbnQuanNPYmplY3QoKSk7CiB9
CiAKLXZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQoY29uc3Qg
U2NyaXB0VmFsdWUmIGFyZ3VtZW50KQordm9pZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyOjph
cHBlbmRBcmd1bWVudChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgYXJndW1lbnQpCiB7
CiAgICAgbV9hcmd1bWVudHMuYXBwZW5kKGFyZ3VtZW50LmpzVmFsdWUoKSk7CiB9CkBAIC0xMDcs
MTQgKzEwNiwxNCBAQCB2b2lkIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3Vt
ZW50KGJvb2wgYXJndW1lbnQpCiAgICAgbV9hcmd1bWVudHMuYXBwZW5kKGpzQm9vbGVhbihhcmd1
bWVudCkpOwogfQogCi1TY3JpcHRGdW5jdGlvbkNhbGw6OlNjcmlwdEZ1bmN0aW9uQ2FsbChjb25z
dCBTY3JpcHRPYmplY3QmIHRoaXNPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSkKK1NjcmlwdEZ1
bmN0aW9uQ2FsbDo6U2NyaXB0RnVuY3Rpb25DYWxsKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9i
amVjdCYgdGhpc09iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIDogU2NyaXB0Q2FsbEFy
Z3VtZW50SGFuZGxlcih0aGlzT2JqZWN0LnNjcmlwdFN0YXRlKCkpCiAgICAgLCBtX3RoaXNPYmpl
Y3QodGhpc09iamVjdCkKICAgICAsIG1fbmFtZShuYW1lKQogewogfQogCi1TY3JpcHRWYWx1ZSBT
Y3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwoYm9vbCYgaGFkRXhjZXB0aW9uKQorRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUgU2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKGJvb2wmIGhhZEV4Y2VwdGlvbikK
IHsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IG1fdGhpc09iamVjdC5qc09iamVjdCgpOwog
CkBAIC0xMjMsMTMgKzEyMiwxMyBAQCBTY3JpcHRWYWx1ZSBTY3JpcHRGdW5jdGlvbkNhbGw6OmNh
bGwoYm9vbCYgaGFkRXhjZXB0aW9uKQogICAgIEpTVmFsdWUgZnVuY3Rpb24gPSB0aGlzT2JqZWN0
LT5nZXQobV9leGVjLCBJZGVudGlmaWVyKG1fZXhlYywgbV9uYW1lKSk7CiAgICAgaWYgKG1fZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAgaGFkRXhjZXB0aW9uID0gdHJ1ZTsKLSAgICAg
ICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7CisgICAgICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSgpOwogICAgIH0KIAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBl
IGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBpZiAoY2Fs
bFR5cGUgPT0gQ2FsbFR5cGVOb25lKQotICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoKTsKKyAg
ICAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCk7CiAKICAgICBKU1ZhbHVlIHJl
c3VsdDsKICAgICBpZiAoaXNNYWluVGhyZWFkKCkpCkBAIC0xMzksMTMgKzEzOCwxMyBAQCBTY3Jp
cHRWYWx1ZSBTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwoYm9vbCYgaGFkRXhjZXB0aW9uKQogCiAg
ICAgaWYgKG1fZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAgaGFkRXhjZXB0aW9uID0g
dHJ1ZTsKLSAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7CisgICAgICAgIHJldHVybiBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSgpOwogICAgIH0KIAotICAgIHJldHVybiBTY3JpcHRWYWx1ZSht
X2V4ZWMtPnZtKCksIHJlc3VsdCk7CisgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
KG1fZXhlYy0+dm0oKSwgcmVzdWx0KTsKIH0KIAotU2NyaXB0VmFsdWUgU2NyaXB0RnVuY3Rpb25D
YWxsOjpjYWxsKCkKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIFNjcmlwdEZ1bmN0aW9uQ2FsbDo6
Y2FsbCgpCiB7CiAgICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKICAgICByZXR1cm4gY2Fs
bChoYWRFeGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0RnVuY3Rpb25DYWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRG
dW5jdGlvbkNhbGwuaAppbmRleCA1NmZhNDdjLi4zNzQzMjBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuaApAQCAtMzEsMjUgKzMxLDI2IEBA
CiAjaWZuZGVmIFNjcmlwdEZ1bmN0aW9uQ2FsbF9oCiAjZGVmaW5lIFNjcmlwdEZ1bmN0aW9uQ2Fs
bF9oCiAKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5o
IgotCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0T2JqZWN0Lmg+CiAjaW5jbHVkZSA8cnVudGlt
ZS9BcmdMaXN0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFj
ZSBEZXByZWNhdGVkIHsKK2NsYXNzIFNjcmlwdFZhbHVlOworfQorCiBuYW1lc3BhY2UgSlNDIHsK
LSAgICBjbGFzcyBKU1ZhbHVlOworY2xhc3MgSlNWYWx1ZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewotICAgIGNsYXNzIFNjcmlwdFZhbHVlOwogCiAgICAgY2xhc3MgU2NyaXB0Q2FsbEFyZ3Vt
ZW50SGFuZGxlciB7CiAgICAgcHVibGljOgogICAgICAgICBTY3JpcHRDYWxsQXJndW1lbnRIYW5k
bGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkgOiBtX2V4ZWMoc3RhdGUpIHsgfQogCi0gICAgICAg
IHZvaWQgYXBwZW5kQXJndW1lbnQoY29uc3QgU2NyaXB0T2JqZWN0Jik7Ci0gICAgICAgIHZvaWQg
YXBwZW5kQXJndW1lbnQoY29uc3QgU2NyaXB0VmFsdWUmKTsKKyAgICAgICAgdm9pZCBhcHBlbmRB
cmd1bWVudChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmKTsKKyAgICAgICAgdm9pZCBh
cHBlbmRBcmd1bWVudChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYpOwogICAgICAgICB2
b2lkIGFwcGVuZEFyZ3VtZW50KGNvbnN0IGNoYXIqKTsKICAgICAgICAgdm9pZCBhcHBlbmRBcmd1
bWVudChjb25zdCBTdHJpbmcmKTsKICAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVudChKU0M6OkpT
VmFsdWUpOwpAQCAtNzMsMTIgKzc0LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNs
YXNzIFNjcmlwdEZ1bmN0aW9uQ2FsbCA6IHB1YmxpYyBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVy
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbChjb25zdCBTY3JpcHRP
YmplY3QmIHRoaXNPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgICAgIFNjcmlwdFZh
bHVlIGNhbGwoYm9vbCYgaGFkRXhjZXB0aW9uKTsKLSAgICAgICAgU2NyaXB0VmFsdWUgY2FsbCgp
OworICAgICAgICBTY3JpcHRGdW5jdGlvbkNhbGwoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2Jq
ZWN0JiB0aGlzT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgICAgICBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSBjYWxsKGJvb2wmIGhhZEV4Y2VwdGlvbik7CisgICAgICAgIERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlIGNhbGwoKTsKIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgU2NyaXB0
T2JqZWN0IG1fdGhpc09iamVjdDsKKyAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IG1f
dGhpc09iamVjdDsKICAgICAgICAgU3RyaW5nIG1fbmFtZTsKICAgICB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0LmNwcApzaW1pbGFyaXR5IGluZGV4
IDg2JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3Qu
Y3BwCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmpl
Y3QuY3BwCmluZGV4IDE0MmU3MjMuLmE4YjVhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0LmNwcApAQCAtMjksMTAgKzI5LDEwIEBACiAgKi8KIAog
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUg
IlNjcmlwdEdsb2JhbE9iamVjdC5oIgogCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0KKyNp
bmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3QuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9j
ay5oPgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKQEAgLTQzLDE4ICs0Myw2IEBAIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2NyaXB0T2JqZWN0OjpTY3Jp
cHRPYmplY3QoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBKU09iamVjdCogb2JqZWN0KQot
ICAgIDogU2NyaXB0VmFsdWUoc2NyaXB0U3RhdGUtPnZtKCksIG9iamVjdCkKLSAgICAsIG1fc2Ny
aXB0U3RhdGUoc2NyaXB0U3RhdGUpCi17Ci19Ci0KLVNjcmlwdE9iamVjdDo6U2NyaXB0T2JqZWN0
KEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0VmFsdWUmIHNjcmlwdFZh
bHVlKQotICAgIDogU2NyaXB0VmFsdWUoc2NyaXB0U3RhdGUtPnZtKCksIHNjcmlwdFZhbHVlLmpz
VmFsdWUoKSkKLSAgICAsIG1fc2NyaXB0U3RhdGUoc2NyaXB0U3RhdGUpCi17Ci19Ci0KIHN0YXRp
YyBib29sIGhhbmRsZUV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUpCiB7CiAg
ICAgaWYgKCFzY3JpcHRTdGF0ZS0+aGFkRXhjZXB0aW9uKCkpCkBAIC02NCw3ICs1Miw3IEBAIHN0
YXRpYyBib29sIGhhbmRsZUV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUpCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KEpTQzo6
RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgY29uc3QgU2NyaXB0T2Jq
ZWN0JiB2YWx1ZSkKK2Jvb2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQoSlNDOjpFeGVjU3RhdGUq
IHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRP
YmplY3QmIHZhbHVlKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKHNjcmlwdFN0YXRlKTsKICAg
ICBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5wdXREaXJlY3Qoc2NyaXB0U3Rh
dGUtPnZtKCksIElkZW50aWZpZXIoc2NyaXB0U3RhdGUsIG5hbWUpLCB2YWx1ZS5qc09iamVjdCgp
KTsKQEAgLTgxLDcgKzY5LDcgQEAgYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OnNldChKU0M6OkV4
ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUsIEluc3AKIH0KICNlbmRpZiAv
LyBFTkFCTEUoSU5TUEVDVE9SKQogCi1ib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6Z2V0KEpTQzo6
RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgU2NyaXB0T2JqZWN0JiB2
YWx1ZSkKK2Jvb2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpnZXQoSlNDOjpFeGVjU3RhdGUqIHNjcmlw
dFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmIHZhbHVl
KQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKHNjcmlwdFN0YXRlKTsKICAgICBKU1ZhbHVlIGpz
VmFsdWUgPSBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5nZXQoc2NyaXB0U3Rh
dGUsIElkZW50aWZpZXIoc2NyaXB0U3RhdGUsIG5hbWUpKTsKQEAgLTkxLDcgKzc5LDcgQEAgYm9v
bCBTY3JpcHRHbG9iYWxPYmplY3Q6OmdldChKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNv
bnN0IGNoYXIqIG5hbWUsIFNjcmkKICAgICBpZiAoIWpzVmFsdWUuaXNPYmplY3QoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdmFsdWUgPSBTY3JpcHRPYmplY3Qoc2NyaXB0U3RhdGUs
IGFzT2JqZWN0KGpzVmFsdWUpKTsKKyAgICB2YWx1ZSA9IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVj
dChzY3JpcHRTdGF0ZSwgYXNPYmplY3QoanNWYWx1ZSkpOwogICAgIHJldHVybiB0cnVlOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5oCnNpbWls
YXJpdHkgaW5kZXggNjQlCmNvcHkgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ2xpZW50LmNwcApjb3B5IHRvIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEds
b2JhbE9iamVjdC5oCmluZGV4IDhlMjdlOGEuLmJlMWVhNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yOCwzNCArMjgsNDAgQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotI2luY2x1ZGUgImNvbmZpZy5oIgorI2lmbmRlZiBTY3JpcHRHbG9i
YWxPYmplY3RfaAorI2RlZmluZSBTY3JpcHRHbG9iYWxPYmplY3RfaAogCi0jaWYgRU5BQkxFKElO
U1BFQ1RPUikKK25hbWVzcGFjZSBEZXByZWNhdGVkIHsKK2NsYXNzIFNjcmlwdE9iamVjdDsKK30K
IAotI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgotCi0jaW5jbHVkZSAiTWFpbkZyYW1lLmgi
Ci0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNs
dWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKLQotdXNp
bmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRXhlY1N0YXRl
OworfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgSW5zcGVjdG9yQ2xpZW50Ojpkb0Rp
c3BhdGNoTWVzc2FnZU9uRnJvbnRlbmRQYWdlKFBhZ2UqIGZyb250ZW5kUGFnZSwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQotewotICAgIGlmICghZnJvbnRlbmRQYWdlKQotICAgICAgICByZXR1cm4g
ZmFsc2U7CitjbGFzcyBJbmplY3RlZFNjcmlwdEhvc3Q7CitjbGFzcyBJbnNwZWN0b3JGcm9udGVu
ZEhvc3Q7CitjbGFzcyBNZWRpYUNvbnRyb2xzSG9zdDsKIAotICAgIFN0cmluZyBkaXNwYXRjaFRv
RnJvbnRlbmQgPSAiSW5zcGVjdG9yRnJvbnRlbmRBUEkuZGlzcGF0Y2hNZXNzYWdlQXN5bmMoIiAr
IG1lc3NhZ2UgKyAiKTsiOworY2xhc3MgU2NyaXB0R2xvYmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgYm9vbCBzZXQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lLCBjb25z
dCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmKTsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAg
IHN0YXRpYyBib29sIHNldChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIEluc3Bl
Y3RvckZyb250ZW5kSG9zdCopOworICAgIHN0YXRpYyBib29sIHNldChKU0M6OkV4ZWNTdGF0ZSos
IGNvbnN0IGNoYXIqIG5hbWUsIEluamVjdGVkU2NyaXB0SG9zdCopOworI2VuZGlmCisjaWYgRU5B
QkxFKE1FRElBX0NPTlRST0xTX1NDUklQVCkKKyAgICBzdGF0aWMgYm9vbCBzZXQoSlNDOjpFeGVj
U3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lLCBNZWRpYUNvbnRyb2xzSG9zdCopOworI2VuZGlmCiAK
LSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgZXhlY3V0ZSB0aGUgc2NyaXB0IGluIHRoZSBhcHBy
b3ByaWF0ZSB3b3JsZC4KLSAgICBmcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV2
YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUoZGlzcGF0Y2hUb0Zyb250ZW5kKSk7Ci0gICAgcmV0dXJu
IHRydWU7Ci19CisgICAgc3RhdGljIGJvb2wgZ2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hh
ciogbmFtZSwgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0Jik7CisgICAgc3RhdGljIGJvb2wgcmVt
b3ZlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciogbmFtZSk7Citwcml2YXRlOgorICAgIFNj
cmlwdEdsb2JhbE9iamVjdCgpIHsgfQorfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0j
ZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKKyNlbmRpZiAvLyBTY3JpcHRHbG9iYWxPYmplY3Rf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuY3BwCmluZGV4
IGZkZTI3ZDAuLmZjOTM5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdFByb2ZpbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRQcm9maWxlci5jcHAKQEAgLTM1LDggKzM1LDkgQEAKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5o
IgogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJT
Y3JpcHRPYmplY3QuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgorI2luY2x1ZGUgPGJpbmRp
bmdzL1NjcmlwdE9iamVjdC5oPgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAj
aW5jbHVkZSA8cHJvZmlsZXIvTGVnYWN5UHJvZmlsZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogCkBAIC00NywxMiArNDgsMTIgQEAgdm9pZCBTY3JpcHRQcm9maWxlcjo6Y29sbGVjdEdh
cmJhZ2UoKQogICAgIGdjQ29udHJvbGxlcigpLmdhcmJhZ2VDb2xsZWN0U29vbigpOwogfQogCi1T
Y3JpcHRPYmplY3QgU2NyaXB0UHJvZmlsZXI6Om9iamVjdEJ5SGVhcE9iamVjdElkKHVuc2lnbmVk
KQorRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IFNjcmlwdFByb2ZpbGVyOjpvYmplY3RCeUhlYXBP
YmplY3RJZCh1bnNpZ25lZCkKIHsKLSAgICByZXR1cm4gU2NyaXB0T2JqZWN0KCk7CisgICAgcmV0
dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCgpOwogfQogCi11bnNpZ25lZCBTY3JpcHRQcm9m
aWxlcjo6Z2V0SGVhcE9iamVjdElkKGNvbnN0IFNjcmlwdFZhbHVlJikKK3Vuc2lnbmVkIFNjcmlw
dFByb2ZpbGVyOjpnZXRIZWFwT2JqZWN0SWQoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
KQogewogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0UHJvZmlsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dFByb2ZpbGVyLmgKaW5kZXggNzI3YzZlZS4uYzJmZGQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5oCkBAIC0yOCwyMCArMjgsMjQgQEAKICNkZWZpbmUg
U2NyaXB0UHJvZmlsZXJfaAogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisKICNp
bmNsdWRlICJTY3JpcHRIZWFwU25hcHNob3QuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKK25hbWVzcGFjZSBEZXByZWNhdGVkIHsKK2NsYXNz
IFNjcmlwdE9iamVjdDsKK2NsYXNzIFNjcmlwdFZhbHVlOworfQorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEV4dGVybmFsQXJyYXlWaXNpdG9yOwogY2xhc3MgRXh0ZXJuYWxTdHJpbmdW
aXNpdG9yOwogY2xhc3MgV3JhcHBlZE5vZGVWaXNpdG9yOwogY2xhc3MgUGFnZTsKLWNsYXNzIFNj
cmlwdE9iamVjdDsKLWNsYXNzIFNjcmlwdFZhbHVlOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7
CiAKIGNsYXNzIFNjcmlwdFByb2ZpbGVyIHsKQEAgLTU3LDggKzYxLDggQEAgcHVibGljOgogICAg
IH07CiAKICAgICBzdGF0aWMgdm9pZCBjb2xsZWN0R2FyYmFnZSgpOwotICAgIHN0YXRpYyBTY3Jp
cHRPYmplY3Qgb2JqZWN0QnlIZWFwT2JqZWN0SWQodW5zaWduZWQgaWQpOwotICAgIHN0YXRpYyB1
bnNpZ25lZCBnZXRIZWFwT2JqZWN0SWQoY29uc3QgU2NyaXB0VmFsdWUmKTsKKyAgICBzdGF0aWMg
RGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IG9iamVjdEJ5SGVhcE9iamVjdElkKHVuc2lnbmVkIGlk
KTsKKyAgICBzdGF0aWMgdW5zaWduZWQgZ2V0SGVhcE9iamVjdElkKGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJik7CiAgICAgc3RhdGljIHZvaWQgc3RhcnQoSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBTdHJpbmcmIHRpdGxlKTsKICAgICBzdGF0aWMgdm9pZCBzdGFydEZvclBhZ2UoUGFnZSos
IGNvbnN0IFN0cmluZyYgdGl0bGUpOwogICAgIHN0YXRpYyB2b2lkIHN0YXJ0Rm9yV29ya2VyR2xv
YmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUqLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCmluZGV4IDM0OWQ5NGEuLjcwZDE0Yzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaApAQCAtMSwxMSArMSwx
MSBAQAogLyoKICAqIENvcHlyaWdodCAoYykgMjAwOCwgMjAxMSBHb29nbGUgSW5jLgogICogQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqIAorICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQogICogbWV0OgotICogCisgKgogICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKQEAg
LTE1LDcgKzE1LDcgQEAKICAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKICAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCiAgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICogCisgKgogICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwogICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKICAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgpAQCAtMzQsNyArMzQsNiBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEV4ZWNTdGF0ZTsKLWNsYXNzIEpTR2xvYmFsT2JqZWN0
OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCBhNTM1YzM0Li41YTMyZjgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAKQEAgLTQwLDcgKzQwLDYgQEAKICNpbmNsdWRlICJKU01lc3NhZ2VQb3J0Lmgi
CiAjaW5jbHVkZSAiSlNOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgot
I2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5j
bHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPGxpbWl0cz4KQEAgLTIwMDYs
MTAgKzIwMDUsMTAgQEAgSlNWYWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXpl
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2IKIH0KIAogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCi1TY3JpcHRWYWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXpl
Rm9ySW5zcGVjdG9yKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSkKK0RlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemVGb3JJbnNwZWN0b3Io
SlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBkZXNl
cmlhbGl6ZShzY3JpcHRTdGF0ZSwgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
MCk7Ci0gICAgcmV0dXJuIFNjcmlwdFZhbHVlKHNjcmlwdFN0YXRlLT52bSgpLCB2YWx1ZSk7Cisg
ICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKHNjcmlwdFN0YXRlLT52bSgpLCB2YWx1
ZSk7CiB9CiAjZW5kaWYKIApAQCAtMjA1Myw2ICsyMDUyLDIzIEBAIFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmJvb2xlYW5WYWx1ZShib29s
IHZhbHVlCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoYnVm
ZmVyKSk7CiB9CiAKK1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OnNlcmlhbGl6ZShjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFs
dWUsIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB0
aHJvd0V4Y2VwdGlvbnMpCit7CisgICAgcmV0dXJuIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3Jl
YXRlKHNjcmlwdFN0YXRlLCB2YWx1ZS5qc1ZhbHVlKCksIG51bGxwdHIsIG51bGxwdHIsIHRocm93
RXhjZXB0aW9ucyk7Cit9CisKK1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OnNlcmlhbGl6ZShjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYgdmFsdWUsIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgTWVzc2FnZVBvcnRBcnJheSog
bWVzc2FnZVBvcnRzLCBBcnJheUJ1ZmZlckFycmF5KiBhcnJheUJ1ZmZlcnMsIGJvb2wmIGRpZFRo
cm93KQoreworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1
ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHNjcmlwdFN0YXRlLCB2YWx1ZS5qc1Zh
bHVlKCksIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJzKTsKKyAgICBkaWRUaHJvdyA9IHNjcmlw
dFN0YXRlLT5oYWRFeGNlcHRpb24oKTsKKyAgICByZXR1cm4gc2VyaWFsaXplZFZhbHVlLnJlbGVh
c2UoKTsKK30KKworRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpkZXNlcmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSogdmFsdWUsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQor
eworICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZS0+dm0oKSwg
dmFsdWUtPmRlc2VyaWFsaXplKHNjcmlwdFN0YXRlLCBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLCAwLCB0aHJvd0V4Y2VwdGlvbnMpKTsKK30KKwogdm9pZCBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6Om1heWJlVGhyb3dFeGNlcHRpb25JZlNlcmlhbGl6YXRpb25GYWlsZWQoRXhlY1N0
YXRlKiBleGVjLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBjb2RlKQogewogICAgIGlmIChjb2Rl
ID09IFN1Y2Nlc3NmdWxseUNvbXBsZXRlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggNjlkMjVmNi4uODU5ODFiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNkZWZpbmUgU2VyaWFsaXplZFNjcmlwdFZhbHVlX2gKIAog
I2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUu
aD4KICNpbmNsdWRlIDxoZWFwL1N0cm9uZy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZm
ZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KQEAgLTU3LDcgKzU4LDYgQEAg
ZW51bSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSB7CiAgICAgCiBlbnVtIFNlcmlhbGl6YXRpb25F
cnJvck1vZGUgeyBOb25UaHJvd2luZywgVGhyb3dpbmcgfTsKIAotY2xhc3MgU2NyaXB0VmFsdWU7
CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6CkBA
IC02Nyw4ICs2Nyw3IEBAIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6CiAgICAgcHVibGlj
IFJlZkNvdW50ZWQ8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB7CiAjZW5kaWYKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgTWVzc2FnZVBvcnRBcnJheSosIEFycmF5QnVmZmVyQXJy
YXkqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
VmFsdWUsIE1lc3NhZ2VQb3J0QXJyYXkqLCBBcnJheUJ1ZmZlckFycmF5KiwgU2VyaWFsaXphdGlv
bkVycm9yTW9kZSA9IFRocm93aW5nKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IGNyZWF0ZShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYsIE1lc3NhZ2VQb3J0
QXJyYXkqLCBBcnJheUJ1ZmZlckFycmF5KiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShKU0NvbnRleHRS
ZWYsIEpTVmFsdWVSZWYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CiAKQEAgLTgzLDYgKzgyLDEw
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHVuZGVmaW5lZFZhbHVlKCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBib29sZWFuVmFsdWUoYm9vbCB2YWx1ZSk7CiAKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZShjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYsIEpTQzo6RXhlY1N0YXRlKiwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSA9IFRocm93
aW5nKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlh
bGl6ZShjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIEpTQzo6RXhlY1N0YXRlKiwgTWVz
c2FnZVBvcnRBcnJheSosIEFycmF5QnVmZmVyQXJyYXkqLCBib29sJik7CisgICAgc3RhdGljIERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRlc2VyaWFsaXplKEpTQzo6RXhlY1N0YXRlKiwgU2VyaWFs
aXplZFNjcmlwdFZhbHVlKiwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSA9IFRocm93aW5nKTsKKwog
ICAgIHN0YXRpYyB1aW50MzJfdCB3aXJlRm9ybWF0VmVyc2lvbigpOwogCiAgICAgU3RyaW5nIHRv
U3RyaW5nKCk7CkBAIC05Miw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICBKU1ZhbHVlUmVmIGRlc2Vy
aWFsaXplKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKIAogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCi0gICAgU2NyaXB0VmFsdWUgZGVzZXJpYWxpemVGb3JJbnNwZWN0b3IoSlND
OjpFeGVjU3RhdGUqKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUZv
ckluc3BlY3RvcihKU0M6OkV4ZWNTdGF0ZSopOwogI2VuZGlmCiAKICAgICBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXgg
MjkwYjFmMS4uNWRlNjA0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
V29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTMxLDEyICszMSwxMiBAQAogI2luY2x1
ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGUuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFs
dWUuaCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSAiV29ya2Vy
R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJPYmplY3RQcm94eS5oIgogI2luY2x1ZGUg
IldvcmtlclNjcmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisj
aW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxoZWFwL1N0cm9uZ0lu
bGluZXMuaD4KICNpbmNsdWRlIDxpbnRlcnByZXRlci9JbnRlcnByZXRlci5oPgogI2luY2x1ZGUg
PHJ1bnRpbWUvQ29tcGxldGlvbi5oPgpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgV29ya2VyU2Ny
aXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29k
ZSkKICAgICBpZiAoaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgU2NyaXB0VmFsdWUgZXhjZXB0aW9uOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGV4
Y2VwdGlvbjsKICAgICBldmFsdWF0ZShzb3VyY2VDb2RlLCAmZXhjZXB0aW9uKTsKICAgICBpZiAo
ZXhjZXB0aW9uLmpzVmFsdWUoKSkgewogICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSgpKTsK
QEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRl
KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCiAgICAgfQogfQogCi12b2lkIFdv
cmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNv
dXJjZUNvZGUsIFNjcmlwdFZhbHVlKiBleGNlcHRpb24pCit2b2lkIFdvcmtlclNjcmlwdENvbnRy
b2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlKiBleGNlcHRpb24pCiB7CiAgICAgaWYgKGlzRXhlY3V0aW9uRm9y
YmlkZGVuKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE0NSwxMyArMTQ1LDEzIEBAIHZvaWQgV29y
a2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291
cmNlQ29kZSwgU2NyaXB0CiAgICAgICAgIGludCBjb2x1bW5OdW1iZXIgPSAwOwogICAgICAgICBT
dHJpbmcgc291cmNlVVJMID0gc291cmNlQ29kZS51cmwoKS5zdHJpbmcoKTsKICAgICAgICAgaWYg
KG1fd29ya2VyR2xvYmFsU2NvcGUtPnNhbml0aXplU2NyaXB0RXJyb3IoZXJyb3JNZXNzYWdlLCBs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCwgc291cmNlQ29kZS5jYWNoZWRTY3Jp
cHQoKSkpCi0gICAgICAgICAgICAqZXhjZXB0aW9uID0gU2NyaXB0VmFsdWUoKm1fdm0sIGV4ZWMt
PnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgZXJyb3JNZXNzYWdl
LmltcGwoKSkpKTsKKyAgICAgICAgICAgICpleGNlcHRpb24gPSBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSgqbV92bSwgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihl
eGVjLCBlcnJvck1lc3NhZ2UuaW1wbCgpKSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICAq
ZXhjZXB0aW9uID0gU2NyaXB0VmFsdWUoKm1fdm0sIGV2YWx1YXRpb25FeGNlcHRpb24pOworICAg
ICAgICAgICAgKmV4Y2VwdGlvbiA9IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCptX3ZtLCBldmFs
dWF0aW9uRXhjZXB0aW9uKTsKICAgICB9CiB9CiAKLXZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxl
cjo6c2V0RXhjZXB0aW9uKGNvbnN0IFNjcmlwdFZhbHVlJiBleGNlcHRpb24pCit2b2lkIFdvcmtl
clNjcmlwdENvbnRyb2xsZXI6OnNldEV4Y2VwdGlvbihjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYgZXhjZXB0aW9uKQogewogICAgIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9i
YWxFeGVjKCktPnZtKCkudGhyb3dFeGNlcHRpb24obV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIt
Pmdsb2JhbEV4ZWMoKSwgZXhjZXB0aW9uLmpzVmFsdWUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKaW5kZXggOGJiN2Y0
OS4uMDI1YzM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2Vy
U2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtl
clNjcmlwdENvbnRyb2xsZXIuaApAQCAtMzMsMTUgKzMzLDE4IEBACiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKK25hbWVzcGFjZSBEZXByZWNh
dGVkIHsKK2NsYXNzIFNjcmlwdFZhbHVlOworfQorCiBuYW1lc3BhY2UgSlNDIHsKLSAgICBjbGFz
cyBWTTsKK2NsYXNzIFZNOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBK
U1dvcmtlckdsb2JhbFNjb3BlOwogICAgIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7Ci0gICAgY2xh
c3MgU2NyaXB0VmFsdWU7CiAgICAgY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAKICAgICBjbGFz
cyBXb3JrZXJTY3JpcHRDb250cm9sbGVyIHsKQEAgLTU3LDkgKzYwLDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBldmFsdWF0ZShjb25zdCBTY3JpcHRT
b3VyY2VDb2RlJik7Ci0gICAgICAgIHZvaWQgZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYsIFNjcmlwdFZhbHVlKiBleGNlcHRpb24pOworICAgICAgICB2b2lkIGV2YWx1YXRlKGNvbnN0
IFNjcmlwdFNvdXJjZUNvZGUmLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSogZXhjZXB0aW9uKTsK
IAotICAgICAgICB2b2lkIHNldEV4Y2VwdGlvbihjb25zdCBTY3JpcHRWYWx1ZSYpOworICAgICAg
ICB2b2lkIHNldEV4Y2VwdGlvbihjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYpOwogCiAg
ICAgICAgIC8vIEFzeW5jIHJlcXVlc3QgdG8gdGVybWluYXRlIGEgSlMgcnVuIGV4ZWN1dGlvbi4g
RXZlbnR1YWxseSBjYXVzZXMgdGVybWluYXRpb24KICAgICAgICAgLy8gZXhjZXB0aW9uIHJhaXNl
ZCBkdXJpbmcgSlMgZXhlY3V0aW9uLCBpZiB0aGUgd29ya2VyIHRocmVhZCBoYXBwZW5zIHRvIHJ1
biBKUy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KaW5kZXggYWYwNDQyYS4uYTY4ZjdkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTMyMzQsNyArMzIzNCw3
IEBAIG15ICVuYXRpdmVUeXBlID0gKAogICAgICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiID0+ICJS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiIsCiAgICAgIkRhdGUiID0+ICJkb3VibGUiLAog
ICAgICJEaWN0aW9uYXJ5IiA9PiAiRGljdGlvbmFyeSIsCi0gICAgImFueSIgPT4gIlNjcmlwdFZh
bHVlIiwKKyAgICAiYW55IiA9PiAiRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUiLAogICAgICJib29s
ZWFuIiA9PiAiYm9vbCIsCiAgICAgImRvdWJsZSIgPT4gImRvdWJsZSIsCiAgICAgImZsb2F0IiA9
PiAiZmxvYXQiLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCA5MzFkYjI2Li43NzY0Yzg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApA
QCAtMTY1MSw3ICsxNjUxLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpBbnlBdHRyaWJ1dGUoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSB2YWwKICAgICBVTlVTRURf
UEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9i
aio+KHRoaXNPYmplY3QpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
Ci0gICAgU2NyaXB0VmFsdWUgbmF0aXZlVmFsdWUoZXhlYy0+dm0oKSwgdmFsdWUpOworICAgIERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG5hdGl2ZVZhbHVlKGV4ZWMtPnZtKCksIHZhbHVlKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKICAgICBpbXBsLnNl
dEFueUF0dHJpYnV0ZShuYXRpdmVWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ3VzdG9tRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmNwcApp
bmRleCBiMGZiYTk5Li5kNWVmMGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3Vz
dG9tRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5jcHAKQEAg
LTQ4LDcgKzQ4LDcgQEAgQ3VzdG9tRXZlbnQ6On5DdXN0b21FdmVudCgpCiB7CiB9CiAKLXZvaWQg
Q3VzdG9tRXZlbnQ6OmluaXRDdXN0b21FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJv
b2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBkZXRhaWwp
Cit2b2lkIEN1c3RvbUV2ZW50Ojppbml0Q3VzdG9tRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSYgZGV0YWlsKQogewogICAgIEFTU0VSVCghbV9zZXJpYWxpemVkU2NyaXB0VmFs
dWUuZ2V0KCkpOwogICAgIGlmIChkaXNwYXRjaGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ3VzdG9tRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5o
CmluZGV4IGJjODkwOTYuLjdmNGMxY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
dXN0b21FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5oCkBAIC0y
NywxNSArMjcsMTUgQEAKICNkZWZpbmUgQ3VzdG9tRXZlbnRfaAogCiAjaW5jbHVkZSAiRXZlbnQu
aCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RydWN0IEN1c3RvbUV2ZW50SW5pdCA6IHB1YmxpYyBFdmVudEluaXQgewog
ICAgIEN1c3RvbUV2ZW50SW5pdCgpOwogCi0gICAgU2NyaXB0VmFsdWUgZGV0YWlsOworICAgIERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRldGFpbDsKIH07CiAKIGNsYXNzIEN1c3RvbUV2ZW50IDog
cHVibGljIEV2ZW50IHsKQEAgLTUyLDE4ICs1MiwxOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgQ3VzdG9tRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIpKTsKICAgICB9CiAK
LSAgICB2b2lkIGluaXRDdXN0b21FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wg
Y2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBkZXRhaWwpOwor
ICAgIHZvaWQgaW5pdEN1c3RvbUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBj
YW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
IGRldGFpbCk7CiAKICAgICB2aXJ0dWFsIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkg
Y29uc3Q7CiAKLSAgICBjb25zdCBTY3JpcHRWYWx1ZSYgZGV0YWlsKCkgY29uc3QgeyByZXR1cm4g
bV9kZXRhaWw7IH0KKyAgICBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZGV0YWlsKCkg
Y29uc3QgeyByZXR1cm4gbV9kZXRhaWw7IH0KICAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gc2VyaWFsaXplZFNjcmlwdFZhbHVlKCkgeyByZXR1cm4gbV9zZXJpYWxpemVkU2Ny
aXB0VmFsdWU7IH0KIAogcHJpdmF0ZToKICAgICBDdXN0b21FdmVudCgpOwogICAgIEN1c3RvbUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgQ3VzdG9tRXZlbnRJbml0JiBpbml0
aWFsaXplcik7CiAKLSAgICBTY3JpcHRWYWx1ZSBtX2RldGFpbDsKKyAgICBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSBtX2RldGFpbDsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBt
X3NlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NZXNzYWdlRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5j
cHAKaW5kZXggZmQ4Njk3OC4uNDM4OGM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L01lc3NhZ2VFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5j
cHAKQEAgLTIxLDE0ICsyMSwxMyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqCiAgKi8KIAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgogCi0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRTb3VyY2UoRXZlbnRUYXJnZXQq
IHNvdXJjZSkKQEAgLTU2LDcgKzU1LDcgQEAgTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBNZXNzYWdlRXZlbnRJbml0JiBpbmkKIHsKIH0K
IAotTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoY29uc3QgU2NyaXB0VmFsdWUmIGRhdGEsIGNv
bnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBQYXNzUmVmUHRy
PEV2ZW50VGFyZ2V0PiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMp
CitNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQs
IFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFy
cmF5PiBwb3J0cykKICAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQsIGZhbHNl
LCBmYWxzZSkKICAgICAsIG1fZGF0YVR5cGUoRGF0YVR5cGVTY3JpcHRWYWx1ZSkKICAgICAsIG1f
ZGF0YUFzU2NyaXB0VmFsdWUoZGF0YSkKQEAgLTEwOCw3ICsxMDcsNyBAQCBNZXNzYWdlRXZlbnQ6
On5NZXNzYWdlRXZlbnQoKQogewogfQogCi12b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29u
c3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIFBhc3NPd25QdHI8TWVz
c2FnZVBvcnRBcnJheT4gcG9ydHMpCit2b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFi
bGUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9y
aWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIFBhc3NP
d25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMpCiB7CiAgICAgaWYgKGRpc3BhdGNoZWQoKSkK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VF
dmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCmluZGV4IGI5N2E3MDMu
LjY4NjBkMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKQEAgLTMyLDggKzMyLDggQEAK
ICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VQb3J0LmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXJpYWxp
emVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2lu
Y2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NDMsNyArNDMsNyBAQCBjbGFzcyBFdmVudFRhcmdldDsKIHN0cnVjdCBNZXNzYWdlRXZlbnRJbml0
IDogcHVibGljIEV2ZW50SW5pdCB7CiAgICAgTWVzc2FnZUV2ZW50SW5pdCgpOwogCi0gICAgU2Ny
aXB0VmFsdWUgZGF0YTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBkYXRhOwogICAgIFN0
cmluZyBvcmlnaW47CiAgICAgU3RyaW5nIGxhc3RFdmVudElkOwogICAgIFJlZlB0cjxFdmVudFRh
cmdldD4gc291cmNlOwpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IE1lc3NhZ2VFdmVudCk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPE1lc3NhZ2VFdmVudD4gY3JlYXRlKFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4g
cG9ydHMsIGNvbnN0IFNjcmlwdFZhbHVlJiBkYXRhID0gU2NyaXB0VmFsdWUoKSwgY29uc3QgU3Ry
aW5nJiBvcmlnaW4gPSBTdHJpbmcoKSwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9IFN0cmlu
ZygpLCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBzb3VyY2UgPSAwKQorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPE1lc3NhZ2VFdmVudD4gY3JlYXRlKFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4g
cG9ydHMsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBkYXRhID0gRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUoKSwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSBTdHJpbmcoKSwgY29uc3QgU3Ry
aW5nJiBsYXN0RXZlbnRJZCA9IFN0cmluZygpLCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBzb3Vy
Y2UgPSAwKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZXNzYWdlRXZlbnQo
ZGF0YSwgb3JpZ2luLCBsYXN0RXZlbnRJZCwgc291cmNlLCBwb3J0cykpOwogICAgIH0KQEAgLTgy
LDcgKzgyLDcgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5NZXNzYWdlRXZlbnQoKTsK
IAotICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJv
b2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBkYXRhLCBj
b25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93
KiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4pOworICAgIHZvaWQgaW5pdE1l
c3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29s
IGNhbmNlbGFibGUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBkYXRhLCBjb25zdCBT
dHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3Vy
Y2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4pOwogICAgIHZvaWQgaW5pdE1lc3NhZ2VF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJp
bmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2Us
IFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4pOwogCiAgICAgY29uc3QgU3RyaW5nJiBvcmln
aW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQpAQCAtMTA3LDcgKzEwNyw3IEBAIHB1Ymxp
YzoKICAgICAgICAgRGF0YVR5cGVBcnJheUJ1ZmZlcgogICAgIH07CiAgICAgRGF0YVR5cGUgZGF0
YVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGFUeXBlOyB9Ci0gICAgY29uc3QgU2NyaXB0VmFs
dWUmIGRhdGFBc1NjcmlwdFZhbHVlKCkgY29uc3QgeyBBU1NFUlQobV9kYXRhVHlwZSA9PSBEYXRh
VHlwZVNjcmlwdFZhbHVlKTsgcmV0dXJuIG1fZGF0YUFzU2NyaXB0VmFsdWU7IH0KKyAgICBjb25z
dCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZGF0YUFzU2NyaXB0VmFsdWUoKSBjb25zdCB7IEFT
U0VSVChtX2RhdGFUeXBlID09IERhdGFUeXBlU2NyaXB0VmFsdWUpOyByZXR1cm4gbV9kYXRhQXNT
Y3JpcHRWYWx1ZTsgfQogICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRh
QXNTZXJpYWxpemVkU2NyaXB0VmFsdWUoKSBjb25zdCB7IEFTU0VSVChtX2RhdGFUeXBlID09IERh
dGFUeXBlU2VyaWFsaXplZFNjcmlwdFZhbHVlKTsgcmV0dXJuIG1fZGF0YUFzU2VyaWFsaXplZFNj
cmlwdFZhbHVlOyB9CiAgICAgU3RyaW5nIGRhdGFBc1N0cmluZygpIGNvbnN0IHsgQVNTRVJUKG1f
ZGF0YVR5cGUgPT0gRGF0YVR5cGVTdHJpbmcpOyByZXR1cm4gbV9kYXRhQXNTdHJpbmc7IH0KICAg
ICBCbG9iKiBkYXRhQXNCbG9iKCkgY29uc3QgeyBBU1NFUlQobV9kYXRhVHlwZSA9PSBEYXRhVHlw
ZUJsb2IpOyByZXR1cm4gbV9kYXRhQXNCbG9iLmdldCgpOyB9CkBAIC0xMTYsNyArMTE2LDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBNZXNzYWdlRXZlbnQoKTsKICAgICBNZXNzYWdlRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgTWVzc2FnZUV2ZW50SW5pdCYpOwotICAgIE1lc3Nh
Z2VFdmVudChjb25zdCBTY3JpcHRWYWx1ZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNv
bnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHNvdXJjZSwg
UGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5Pik7CisgICAgTWVzc2FnZUV2ZW50KGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBsYXN0RXZlbnRJZCwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gc291cmNlLCBQYXNz
T3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+KTsKICAgICBNZXNzYWdlRXZlbnQoUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBT
dHJpbmcmIGxhc3RFdmVudElkLCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBzb3VyY2UsIFBhc3NP
d25QdHI8TWVzc2FnZVBvcnRBcnJheT4pOwogCiAgICAgZXhwbGljaXQgTWVzc2FnZUV2ZW50KGNv
bnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pOwpAQCAtMTI0LDcgKzEyNCw3
IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8QXJyYXlC
dWZmZXI+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luKTsKIAogICAgIERhdGFUeXBlIG1fZGF0
YVR5cGU7Ci0gICAgU2NyaXB0VmFsdWUgbV9kYXRhQXNTY3JpcHRWYWx1ZTsKKyAgICBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSBtX2RhdGFBc1NjcmlwdFZhbHVlOwogICAgIFJlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IG1fZGF0YUFzU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogICAgIFN0cmlu
ZyBtX2RhdGFBc1N0cmluZzsKICAgICBSZWZQdHI8QmxvYj4gbV9kYXRhQXNCbG9iOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Qb3BTdGF0ZUV2ZW50LmgKaW5kZXggMjIxOTNhNC4uNTY4MjM0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUG9wU3RhdGVFdmVudC5oCkBAIC0yOCwxNCArMjgsMTQgQEAKICNkZWZpbmUgUG9wU3RhdGVF
dmVudF9oCiAKICNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisj
aW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdHJ1Y3QgUG9wU3RhdGVFdmVudEluaXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKICAgICBQb3BT
dGF0ZUV2ZW50SW5pdCgpOwogCi0gICAgU2NyaXB0VmFsdWUgc3RhdGU7CisgICAgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUgc3RhdGU7CiB9OwogCiBjbGFzcyBIaXN0b3J5OwpAQCAtNDksNyArNDks
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UG9wU3RhdGVFdmVudD4gY3JlYXRl
KGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFBvcFN0YXRlRXZlbnRJbml0Jik7CiAKICAgICBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFN0YXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9zZXJpYWxpemVkU3RhdGU7IH0KLSAgICBjb25zdCBTY3JpcHRWYWx1ZSYgc3Rh
dGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CisgICAgY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQogICAgIEhpc3Rvcnkq
IGhpc3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2hpc3RvcnkuZ2V0KCk7IH0KIAogICAgIHZpcnR1
YWwgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdDsKQEAgLTU5LDcgKzU5LDcg
QEAgcHJpdmF0ZToKICAgICBQb3BTdGF0ZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0
IFBvcFN0YXRlRXZlbnRJbml0Jik7CiAgICAgZXhwbGljaXQgUG9wU3RhdGVFdmVudChQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SGlzdG9yeT4pOwogCi0gICAg
U2NyaXB0VmFsdWUgbV9zdGF0ZTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBtX3N0YXRl
OwogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1fc2VyaWFsaXplZFN0YXRlOwog
ICAgIFJlZlB0cjxIaXN0b3J5PiBtX2hpc3Rvcnk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVs
ZW1lbnQuY3BwCmluZGV4IDE1N2M0Y2EuLmQ5Njg3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RWxlbWVudC5jcHAKQEAgLTQyLDExICs0MiwxMSBAQAogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJTY3JpcHRSdW5uZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VD
b2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTY3JpcHRhYmxlRG9j
dW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dE5vZGVUcmF2ZXJzYWwuaCIKKyNpbmNsdWRlIDxiaW5k
aW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SGFzaC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggMDZi
MjIyZi4uYWU0Mjk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CkBAIC0xMzIsOCArMTMyLDkgQEAKICNpZiBFTkFCTEUoTUVESUFfQ09OVFJPTFNfU0NSSVBUKQog
I2luY2x1ZGUgIkpTTWVkaWFDb250cm9sc0hvc3QuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xz
SG9zdC5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUgIlNjcmlwdEdsb2Jh
bE9iamVjdC5oIgogI2luY2x1ZGUgIlVzZXJBZ2VudFNjcmlwdHMuaCIKKyNpbmNsdWRlIDxiaW5k
aW5ncy9TY3JpcHRPYmplY3QuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAppbmRleCA3MzIxNmRjLi5i
NDkzN2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3Nh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAK
QEAgLTQyLDcgKzQyLDcgQEAKICNpbmNsdWRlICJTY3JpcHRDYWxsRnJhbWUuaCIKICNpbmNsdWRl
ICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmgi
Ci0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1
ZS5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgogCkBAIC0yMDgsOCArMjA4LDggQEAgdm9pZCBDb25zb2xlTWVzc2Fn
ZTo6YWRkVG9Gcm9udGVuZChJbnNwZWN0b3JDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyKiBjb25z
b2xlRnIKICAgICAgICAgaWYgKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKICAgICAg
ICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJl
bW90ZU9iamVjdD4+IGpzb25BcmdzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGlmIChtX3R5cGUg
PT0gVGFibGVNZXNzYWdlVHlwZSAmJiBnZW5lcmF0ZVByZXZpZXcgJiYgbV9hcmd1bWVudHMtPmFy
Z3VtZW50Q291bnQoKSkgewotICAgICAgICAgICAgICAgIFNjcmlwdFZhbHVlIHRhYmxlID0gbV9h
cmd1bWVudHMtPmFyZ3VtZW50QXQoMCk7Ci0gICAgICAgICAgICAgICAgU2NyaXB0VmFsdWUgY29s
dW1ucyA9IG1fYXJndW1lbnRzLT5hcmd1bWVudENvdW50KCkgPiAxID8gbV9hcmd1bWVudHMtPmFy
Z3VtZW50QXQoMSkgOiBTY3JpcHRWYWx1ZSgpOworICAgICAgICAgICAgICAgIERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlIHRhYmxlID0gbV9hcmd1bWVudHMtPmFyZ3VtZW50QXQoMCk7CisgICAgICAg
ICAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgY29sdW1ucyA9IG1fYXJndW1lbnRzLT5h
cmd1bWVudENvdW50KCkgPiAxID8gbV9hcmd1bWVudHMtPmFyZ3VtZW50QXQoMSkgOiBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSgpOwogICAgICAgICAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6
UnVudGltZTo6UmVtb3RlT2JqZWN0PiBpbnNwZWN0b3JWYWx1ZSA9IGluamVjdGVkU2NyaXB0Lndy
YXBUYWJsZSh0YWJsZSwgY29sdW1ucyk7CiAgICAgICAgICAgICAgICAgaWYgKCFpbnNwZWN0b3JW
YWx1ZSkgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgKaW5kZXggMDcwNWI5Ni4uN2ZkMTZm
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgKQEAgLTQ5LDcg
KzQ5LDYgQEAgY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3MgU2NyaXB0QXJndW1l
bnRzOwogY2xhc3MgU2NyaXB0Q2FsbEZyYW1lOwogY2xhc3MgU2NyaXB0Q2FsbFN0YWNrOwotY2xh
c3MgU2NyaXB0VmFsdWU7CiAKIGNsYXNzIENvbnNvbGVNZXNzYWdlIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShDb25zb2xlTWVzc2FnZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKaW5kZXggMWU1OGQ0ZS4u
M2U2MmUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3Bw
CkBAIC0zOCw3ICszOCw3IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaCIKICNp
bmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCi0jaW5jbHVk
ZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0T2Jq
ZWN0Lmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC01OCw3ICs1OCw3IEBAIEluamVjdGVkU2NyaXB0
OjpJbmplY3RlZFNjcmlwdCgpCiB7CiB9CiAKLUluamVjdGVkU2NyaXB0OjpJbmplY3RlZFNjcmlw
dChTY3JpcHRPYmplY3QgaW5qZWN0ZWRTY3JpcHRPYmplY3QsIEluc3BlY3RlZFN0YXRlQWNjZXNz
Q2hlY2sgYWNjZXNzQ2hlY2spCitJbmplY3RlZFNjcmlwdDo6SW5qZWN0ZWRTY3JpcHQoRGVwcmVj
YXRlZDo6U2NyaXB0T2JqZWN0IGluamVjdGVkU2NyaXB0T2JqZWN0LCBJbnNwZWN0ZWRTdGF0ZUFj
Y2Vzc0NoZWNrIGFjY2Vzc0NoZWNrKQogICAgIDogSW5qZWN0ZWRTY3JpcHRCYXNlKCJJbmplY3Rl
ZFNjcmlwdCIsIGluamVjdGVkU2NyaXB0T2JqZWN0LCBhY2Nlc3NDaGVjaykKIHsKIH0KQEAgLTg1
LDcgKzg1LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamUKICAgICBtYWtlRXZhbENhbGwoZXJy
b3JTdHJpbmcsIGZ1bmN0aW9uLCByZXN1bHQsIHdhc1Rocm93bik7CiB9CiAKLXZvaWQgSW5qZWN0
ZWRTY3JpcHQ6OmV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBj
b25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwg
Y29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBib29s
IGluY2x1ZGVDb21tYW5kTGluZUFQSSwgYm9vbCByZXR1cm5CeVZhbHVlLCBib29sIGdlbmVyYXRl
UHJldmlldywgUmVmUHRyPFJlbW90ZU9iamVjdD4qIHJlc3VsdCwgVHlwZUJ1aWxkZXI6Ok9wdE91
dHB1dDxib29sPiogd2FzVGhyb3duKQordm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNh
bGxGcmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlJiBjYWxsRnJhbWVzLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJp
bmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNv
bW1hbmRMaW5lQVBJLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBS
ZWZQdHI8UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+
KiB3YXNUaHJvd24pCiB7CiAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVk
U2NyaXB0T2JqZWN0KCksICJldmFsdWF0ZU9uQ2FsbEZyYW1lIik7CiAgICAgZnVuY3Rpb24uYXBw
ZW5kQXJndW1lbnQoY2FsbEZyYW1lcyk7CkBAIC0xNTIsNyArMTUyLDcgQEAgTm9kZSogSW5qZWN0
ZWRTY3JpcHQ6Om5vZGVGb3JPYmplY3RJZChjb25zdCBTdHJpbmcmIG9iamVjdElkKQogICAgIGZ1
bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKIAogICAgIGJvb2wgaGFkRXhjZXB0aW9u
ID0gZmFsc2U7Ci0gICAgU2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBjYWxsRnVuY3Rpb25XaXRo
RXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CisgICAgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rp
b24sIGhhZEV4Y2VwdGlvbik7CiAgICAgQVNTRVJUKCFoYWRFeGNlcHRpb24pOwogCiAgICAgcmV0
dXJuIEluamVjdGVkU2NyaXB0SG9zdDo6c2NyaXB0VmFsdWVBc05vZGUocmVzdWx0VmFsdWUpOwpA
QCAtMTY3LDEzICsxNjcsMTMgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6cmVsZWFzZU9iamVjdChj
b25zdCBTdHJpbmcmIG9iamVjdElkKQogfQogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdH
RVIpCi1QYXNzUmVmUHRyPEFycmF5PENhbGxGcmFtZT4+IEluamVjdGVkU2NyaXB0Ojp3cmFwQ2Fs
bEZyYW1lcyhjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcykKK1Bhc3NSZWZQdHI8QXJyYXk8
Q2FsbEZyYW1lPj4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVzKGNvbnN0IERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzKQogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgp
KTsKICAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3Qo
KSwgIndyYXBDYWxsRnJhbWVzIik7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY2FsbEZy
YW1lcyk7CiAgICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKLSAgICBTY3JpcHRWYWx1ZSBj
YWxsRnJhbWVzVmFsdWUgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhh
ZEV4Y2VwdGlvbik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgY2FsbEZyYW1lc1ZhbHVl
ID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwog
ICAgIEFTU0VSVCghaGFkRXhjZXB0aW9uKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJl
c3VsdCA9IGNhbGxGcmFtZXNWYWx1ZS50b0luc3BlY3RvclZhbHVlKHNjcmlwdFN0YXRlKCkpOwog
ICAgIGlmIChyZXN1bHQtPnR5cGUoKSA9PSBJbnNwZWN0b3JWYWx1ZTo6VHlwZUFycmF5KQpAQCAt
MTgyLDcgKzE4Miw3IEBAIFBhc3NSZWZQdHI8QXJyYXk8Q2FsbEZyYW1lPj4gSW5qZWN0ZWRTY3Jp
cHQ6OndyYXBDYWxsRnJhbWVzKGNvbnN0IFNjcmlwdFZhbHVlJiBjCiB9CiAjZW5kaWYKIAotUGFz
c1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNjcmlw
dDo6d3JhcE9iamVjdChjb25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IFN0cmluZyYgZ3Jv
dXBOYW1lLCBib29sIGdlbmVyYXRlUHJldmlldykgY29uc3QKK1Bhc3NSZWZQdHI8VHlwZUJ1aWxk
ZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBPYmplY3QoY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGdyb3VwTmFt
ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVl
KCkpOwogICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCB3cmFwRnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRP
YmplY3QoKSwgIndyYXBPYmplY3QiKTsKQEAgLTE5MSwxNCArMTkxLDE0IEBAIFBhc3NSZWZQdHI8
VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBP
YmplY3QoY29uc3QKICAgICB3cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY2FuQWNjZXNzSW5z
cGVjdGVkV2luZG93KCkpOwogICAgIHdyYXBGdW5jdGlvbi5hcHBlbmRBcmd1bWVudChnZW5lcmF0
ZVByZXZpZXcpOwogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgU2NyaXB0VmFs
dWUgciA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZCh3cmFwRnVuY3Rpb24sIGhhZEV4Y2Vw
dGlvbik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgciA9IGNhbGxGdW5jdGlvbldpdGhF
dmFsRW5hYmxlZCh3cmFwRnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CiAgICAgaWYgKGhhZEV4Y2Vw
dGlvbikKICAgICAgICAgcmV0dXJuIDA7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmF3
UmVzdWx0ID0gci50b0luc3BlY3RvclZhbHVlKHNjcmlwdFN0YXRlKCkpLT5hc09iamVjdCgpOwog
ICAgIHJldHVybiBUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0OjpydW50aW1lQ2Fz
dChyYXdSZXN1bHQpOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwVGFibGUoY29uc3QgU2NyaXB0VmFsdWUmIHRh
YmxlLCBjb25zdCBTY3JpcHRWYWx1ZSYgY29sdW1ucykgY29uc3QKK1Bhc3NSZWZQdHI8VHlwZUJ1
aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBUYWJsZShj
b25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdGFibGUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlJiBjb2x1bW5zKSBjb25zdAogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsK
ICAgICBTY3JpcHRGdW5jdGlvbkNhbGwgd3JhcEZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0
KCksICJ3cmFwVGFibGUiKTsKQEAgLTIwOSw3ICsyMDksNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwVGFibGUoY29u
c3QgUwogICAgIGVsc2UKICAgICAgICAgd3JhcEZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNvbHVt
bnMpOwogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgU2NyaXB0VmFsdWUgciA9
IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZCh3cmFwRnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7
CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgciA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5h
YmxlZCh3cmFwRnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CiAgICAgaWYgKGhhZEV4Y2VwdGlvbikK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmF3UmVzdWx0
ID0gci50b0luc3BlY3RvclZhbHVlKHNjcmlwdFN0YXRlKCkpLT5hc09iamVjdCgpOwpAQCAtMjIx
LDE0ICsyMjEsMTQgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcE5vZGUoTm9kZSogbm8KICAgICByZXR1cm4gd3JhcE9i
amVjdChub2RlQXNTY3JpcHRWYWx1ZShub2RlKSwgZ3JvdXBOYW1lKTsKIH0KIAotU2NyaXB0VmFs
dWUgSW5qZWN0ZWRTY3JpcHQ6OmZpbmRPYmplY3RCeUlkKGNvbnN0IFN0cmluZyYgb2JqZWN0SWQp
IGNvbnN0CitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdDo6ZmluZE9iamVj
dEJ5SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJZCkgY29uc3QKIHsKICAgICBBU1NFUlQoIWhhc05v
VmFsdWUoKSk7CiAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0
T2JqZWN0KCksICJmaW5kT2JqZWN0QnlJZCIpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50
KG9iamVjdElkKTsKIAogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgU2NyaXB0
VmFsdWUgcmVzdWx0VmFsdWUgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24s
IGhhZEV4Y2VwdGlvbik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUg
PSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CiAg
ICAgQVNTRVJUKCFoYWRFeGNlcHRpb24pOwogICAgIHJldHVybiByZXN1bHRWYWx1ZTsKIH0KQEAg
LTI1Miw3ICsyNTIsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpyZWxlYXNlT2JqZWN0R3JvdXAo
Y29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCkKICAgICBBU1NFUlQoIWhhZEV4Y2VwdGlvbik7CiB9
CiAKLVNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0Ojpub2RlQXNTY3JpcHRWYWx1ZShOb2RlKiBu
b2RlKQorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHQ6Om5vZGVBc1Njcmlw
dFZhbHVlKE5vZGUqIG5vZGUpCiB7CiAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdDo6bm9k
ZUFzU2NyaXB0VmFsdWUoc2NyaXB0U3RhdGUoKSwgbm9kZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCmluZGV4IDliNmFkMmYuLmE5NjE4MWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCkBAIC0zNSwxNyArMzUsMTkgQEAK
ICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JU
eXBlQnVpbGRlci5oIgogI2luY2x1ZGUgIlNjcmlwdEFyZ3VtZW50cy5oIgotI2luY2x1ZGUgIlNj
cmlwdE9iamVjdC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAKK25hbWVzcGFjZSBEZXByZWNhdGVkIHsKK2NsYXNzIFNjcmlwdE9iamVjdDsK
K30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmplY3RlZFNjcmlwdE1vZHVsZTsK
IGNsYXNzIE5vZGU7Ci1jbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQogCkBAIC03MSw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAg
ICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0
LAogICAgICAgICAgICAgICAgICAgICAgICAgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiog
d2FzVGhyb3duKTsKICAgICB2b2lkIGV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1l
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUmIGNhbGxGcmFtZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0
cmluZyYgY2FsbEZyYW1lSWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0
cmluZyYgZXhwcmVzc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3Ry
aW5nJiBvYmplY3RHcm91cCwKQEAgLTg3LDEzICs4OSwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZWxlYXNlT2JqZWN0KGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpOwogCiAjaWYgRU5BQkxFKEpBVkFT
Q1JJUFRfREVCVUdHRVIpCi0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1
aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiB3cmFwQ2FsbEZyYW1lcyhjb25zdCBTY3JpcHRW
YWx1ZSYpOworICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpE
ZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4gd3JhcENhbGxGcmFtZXMoY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmKTsKICNlbmRpZgogCi0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0PiB3cmFwT2JqZWN0KGNvbnN0IFNjcmlwdFZhbHVlJiwgY29uc3QgU3Ry
aW5nJiBncm91cE5hbWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3ID0gZmFsc2UpIGNvbnN0OwotICAg
IFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gd3JhcFRhYmxl
KGNvbnN0IFNjcmlwdFZhbHVlJiB0YWJsZSwgY29uc3QgU2NyaXB0VmFsdWUmIGNvbHVtbnMpIGNv
bnN0OworICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4g
d3JhcE9iamVjdChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0IFN0cmluZyYg
Z3JvdXBOYW1lLCBib29sIGdlbmVyYXRlUHJldmlldyA9IGZhbHNlKSBjb25zdDsKKyAgICBQYXNz
UmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHdyYXBUYWJsZShjb25z
dCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdGFibGUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlJiBjb2x1bW5zKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q+IHdyYXBOb2RlKE5vZGUqLCBjb25zdCBTdHJpbmcmIGdyb3VwTmFt
ZSk7Ci0gICAgU2NyaXB0VmFsdWUgZmluZE9iamVjdEJ5SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJ
ZCkgY29uc3Q7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZmluZE9iamVjdEJ5SWQoY29u
c3QgU3RyaW5nJiBvYmplY3RJZCkgY29uc3Q7CiAKICAgICB2b2lkIGluc3BlY3ROb2RlKE5vZGUq
KTsKICAgICB2b2lkIHJlbGVhc2VPYmplY3RHcm91cChjb25zdCBTdHJpbmcmKTsKQEAgLTEwMSw5
ICsxMDMsOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBJbmplY3RlZFNj
cmlwdE1vZHVsZTsKICAgICBmcmllbmQgSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOjppbmplY3RlZFNjcmlwdEZvcihKU0M6OkV4ZWNTdGF0ZSopOwotICAgIEluamVjdGVkU2Ny
aXB0KFNjcmlwdE9iamVjdCwgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayk7CisgICAgSW5qZWN0
ZWRTY3JpcHQoRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0LCBJbnNwZWN0ZWRTdGF0ZUFjY2Vzc0No
ZWNrKTsKIAotICAgIFNjcmlwdFZhbHVlIG5vZGVBc1NjcmlwdFZhbHVlKE5vZGUqKTsKKyAgICBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBub2RlQXNTY3JpcHRWYWx1ZShOb2RlKik7CiB9OwogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5j
cHAKaW5kZXggYTdkNDk2Ny4uOGM5ODZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAKQEAgLTUyLDE0ICs1MiwxNCBAQCBJbmplY3RlZFNj
cmlwdEJhc2U6OkluamVjdGVkU2NyaXB0QmFzZShjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiB9CiAK
LUluamVjdGVkU2NyaXB0QmFzZTo6SW5qZWN0ZWRTY3JpcHRCYXNlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgU2NyaXB0T2JqZWN0IGluamVjdGVkU2NyaXB0T2JqZWN0LCBJbnNwZWN0ZWRTdGF0ZUFjY2Vz
c0NoZWNrIGFjY2Vzc0NoZWNrKQorSW5qZWN0ZWRTY3JpcHRCYXNlOjpJbmplY3RlZFNjcmlwdEJh
c2UoY29uc3QgU3RyaW5nJiBuYW1lLCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgaW5qZWN0ZWRT
Y3JpcHRPYmplY3QsIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sgYWNjZXNzQ2hlY2spCiAgICAg
OiBtX25hbWUobmFtZSkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRPYmplY3QoaW5qZWN0ZWRTY3Jp
cHRPYmplY3QpCiAgICAgLCBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2soYWNjZXNzQ2hlY2sp
CiB7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHRCYXNlOjppbml0aWFsaXplKFNjcmlwdE9iamVj
dCBpbmplY3RlZFNjcmlwdE9iamVjdCwgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayBhY2Nlc3ND
aGVjaykKK3ZvaWQgSW5qZWN0ZWRTY3JpcHRCYXNlOjppbml0aWFsaXplKERlcHJlY2F0ZWQ6OlNj
cmlwdE9iamVjdCBpbmplY3RlZFNjcmlwdE9iamVjdCwgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVj
ayBhY2Nlc3NDaGVjaykKIHsKICAgICBtX2luamVjdGVkU2NyaXB0T2JqZWN0ID0gaW5qZWN0ZWRT
Y3JpcHRPYmplY3Q7CiAgICAgbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrID0gYWNjZXNzQ2hl
Y2s7CkBAIC03MCwxMiArNzAsMTIgQEAgYm9vbCBJbmplY3RlZFNjcmlwdEJhc2U6OmNhbkFjY2Vz
c0luc3BlY3RlZFdpbmRvdygpIGNvbnN0CiAgICAgcmV0dXJuIG1faW5zcGVjdGVkU3RhdGVBY2Nl
c3NDaGVjayhtX2luamVjdGVkU2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRlKCkpOwogfQogCi1jb25z
dCBTY3JpcHRPYmplY3QmIEluamVjdGVkU2NyaXB0QmFzZTo6aW5qZWN0ZWRTY3JpcHRPYmplY3Qo
KSBjb25zdAorY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiBJbmplY3RlZFNjcmlwdEJh
c2U6OmluamVjdGVkU2NyaXB0T2JqZWN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pbmplY3Rl
ZFNjcmlwdE9iamVjdDsKIH0KIAotU2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHRCYXNlOjpjYWxs
RnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoU2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwgYm9v
bCYgaGFkRXhjZXB0aW9uKSBjb25zdAorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgSW5qZWN0ZWRT
Y3JpcHRCYXNlOjpjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoU2NyaXB0RnVuY3Rpb25DYWxs
JiBmdW5jdGlvbiwgYm9vbCYgaGFkRXhjZXB0aW9uKSBjb25zdAogewogICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250
ZXh0RnJvbUV4ZWNTdGF0ZShtX2luamVjdGVkU2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRlKCkpOwog
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxDYWxsRnVuY3Rpb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgbmFt
ZSgpLCAxKTsKQEAgLTg5LDcgKzg5LDcgQEAgU2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHRCYXNl
OjpjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoU2NyaXB0RnVuY3Rpb25DYWxsJgogICAgICAg
ICAgICAgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+c2V0RXZhbEVuYWJsZWQo
dHJ1ZSk7CiAgICAgfQogCi0gICAgU2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBmdW5jdGlvbi5j
YWxsKGhhZEV4Y2VwdGlvbik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgcmVzdWx0VmFs
dWUgPSBmdW5jdGlvbi5jYWxsKGhhZEV4Y2VwdGlvbik7CiAKICAgICBpZiAoZXZhbElzRGlzYWJs
ZWQpCiAgICAgICAgIHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnNldEV2YWxF
bmFibGVkKGZhbHNlKTsKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0QmFz
ZTo6bWFrZUNhbGwoU2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwgUmVmUHRyPEluc3BlY3Rv
cgogICAgIH0KIAogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgU2NyaXB0VmFs
dWUgcmVzdWx0VmFsdWUgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhh
ZEV4Y2VwdGlvbik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBj
YWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CiAKICAg
ICBBU1NFUlQoIWhhZEV4Y2VwdGlvbik7CiAgICAgaWYgKCFoYWRFeGNlcHRpb24pIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaAppbmRleCAxM2FlYzRl
Li5mY2U5YjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
QmFzZS5oCkBAIC0zMiw3ICszMiw3IEBACiAjZGVmaW5lIEluamVjdGVkU2NyaXB0QmFzZV9oCiAK
ICNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVj
dC5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC01OSwxOCArNTksMTggQEAg
cHVibGljOgogcHJvdGVjdGVkOgogICAgIHR5cGVkZWYgYm9vbCAoKkluc3BlY3RlZFN0YXRlQWNj
ZXNzQ2hlY2spKEpTQzo6RXhlY1N0YXRlKik7CiAgICAgSW5qZWN0ZWRTY3JpcHRCYXNlKGNvbnN0
IFN0cmluZyYgbmFtZSk7Ci0gICAgSW5qZWN0ZWRTY3JpcHRCYXNlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgU2NyaXB0T2JqZWN0LCBJbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKTsKKyAgICBJbmplY3Rl
ZFNjcmlwdEJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3Qs
IEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOwogCi0gICAgdm9pZCBpbml0aWFsaXplKFNjcmlw
dE9iamVjdCwgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayk7CisgICAgdm9pZCBpbml0aWFsaXpl
KERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCwgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayk7CiAg
ICAgYm9vbCBjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coKSBjb25zdDsKLSAgICBjb25zdCBTY3Jp
cHRPYmplY3QmIGluamVjdGVkU2NyaXB0T2JqZWN0KCkgY29uc3Q7Ci0gICAgU2NyaXB0VmFsdWUg
Y2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKFNjcmlwdEZ1bmN0aW9uQ2FsbCYsIGJvb2wmIGhh
ZEV4Y2VwdGlvbikgY29uc3Q7CisgICAgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiBp
bmplY3RlZFNjcmlwdE9iamVjdCgpIGNvbnN0OworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChTY3JpcHRGdW5jdGlvbkNhbGwmLCBib29sJiBo
YWRFeGNlcHRpb24pIGNvbnN0OwogICAgIHZvaWQgbWFrZUNhbGwoU2NyaXB0RnVuY3Rpb25DYWxs
JiwgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwogICAgIHZvaWQg
bWFrZUV2YWxDYWxsKEVycm9yU3RyaW5nKiwgU2NyaXB0RnVuY3Rpb25DYWxsJiwgUmVmUHRyPFR5
cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsIFR5cGVCdWlsZGVyOjpP
cHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbmFt
ZTsKLSAgICBTY3JpcHRPYmplY3QgbV9pbmplY3RlZFNjcmlwdE9iamVjdDsKKyAgICBEZXByZWNh
dGVkOjpTY3JpcHRPYmplY3QgbV9pbmplY3RlZFNjcmlwdE9iamVjdDsKICAgICBJbnNwZWN0ZWRT
dGF0ZUFjY2Vzc0NoZWNrIG1faW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjazsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVs
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1
bGUuY3BwCmluZGV4IDc5OTFjMWMuLjg4ZjhmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmNwcApAQCAtMzgsNyAr
MzgsNyBAQAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLmgiCiAj
aW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RnVuY3Rp
b25DYWxsLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisjaW5jbHVkZSA8YmluZGluZ3Mv
U2NyaXB0T2JqZWN0Lmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgog
CiB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6QXJyYXk7CkBAIC02OSwyOSArNjksMjkgQEAg
U3RyaW5nIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjpzb3VyY2UoKSBjb25zdAogICAgIHJl
dHVybiBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oSW5qZWN0ZWRTY3JpcHRD
YW52YXNNb2R1bGVTb3VyY2VfanMpLCBzaXplb2YoSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGVT
b3VyY2VfanMpKTsKIH0KIAotU2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxl
Ojp3cmFwQ2FudmFzMkRDb250ZXh0KGNvbnN0IFNjcmlwdE9iamVjdCYgY29udGV4dCkKK0RlcHJl
Y2F0ZWQ6OlNjcmlwdE9iamVjdCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6d3JhcENhbnZh
czJEQ29udGV4dChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmIGNvbnRleHQpCiB7CiAg
ICAgcmV0dXJuIGNhbGxXcmFwQ29udGV4dEZ1bmN0aW9uKCJ3cmFwQ2FudmFzMkRDb250ZXh0Iiwg
Y29udGV4dCk7CiB9CiAKICNpZiBFTkFCTEUoV0VCR0wpCi1TY3JpcHRPYmplY3QgSW5qZWN0ZWRT
Y3JpcHRDYW52YXNNb2R1bGU6OndyYXBXZWJHTENvbnRleHQoY29uc3QgU2NyaXB0T2JqZWN0JiBn
bENvbnRleHQpCitEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRDYW52YXNN
b2R1bGU6OndyYXBXZWJHTENvbnRleHQoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiBn
bENvbnRleHQpCiB7CiAgICAgcmV0dXJuIGNhbGxXcmFwQ29udGV4dEZ1bmN0aW9uKCJ3cmFwV2Vi
R0xDb250ZXh0IiwgZ2xDb250ZXh0KTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAKLVNj
cmlwdE9iamVjdCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6Y2FsbFdyYXBDb250ZXh0RnVu
Y3Rpb24oY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFNjcmlwdE9iamVjdCYgY29u
dGV4dCkKK0RlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVs
ZTo6Y2FsbFdyYXBDb250ZXh0RnVuY3Rpb24oY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgY29udGV4dCkKIHsKICAgICBTY3JpcHRGdW5j
dGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgZnVuY3Rpb25OYW1lKTsK
ICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjb250ZXh0KTsKICAgICBib29sIGhhZEV4Y2Vw
dGlvbiA9IGZhbHNlOwotICAgIFNjcmlwdFZhbHVlIHJlc3VsdFZhbHVlID0gY2FsbEZ1bmN0aW9u
V2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOworICAgIERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlIHJlc3VsdFZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1
bmN0aW9uLCBoYWRFeGNlcHRpb24pOwogICAgIGlmIChoYWRFeGNlcHRpb24gfHwgcmVzdWx0VmFs
dWUuaGFzTm9WYWx1ZSgpIHx8ICFyZXN1bHRWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gU2NyaXB0T2JqZWN0KCk7CisgICAg
ICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QoKTsKICAgICB9Ci0gICAgcmV0dXJu
IFNjcmlwdE9iamVjdChjb250ZXh0LnNjcmlwdFN0YXRlKCksIHJlc3VsdFZhbHVlKTsKKyAgICBy
ZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KGNvbnRleHQuc2NyaXB0U3RhdGUoKSwgcmVz
dWx0VmFsdWUpOwogfQogCiB2b2lkIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjptYXJrRnJh
bWVFbmQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0Q2FudmFzTW9kdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRDYW52YXNNb2R1bGUuaAppbmRleCBmMzMxMTJjLi45OTQ5NTU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuaApAQCAt
MzUsMTAgKzM1LDEzIEBACiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIERlcHJlY2F0ZWQgeworY2xhc3MgU2NyaXB0
T2JqZWN0OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEluamVjdGVkU2NyaXB0
TWFuYWdlcjsKLWNsYXNzIFNjcmlwdE9iamVjdDsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAK
QEAgLTUwLDkgKzUzLDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEluamVjdGVkU2NyaXB0Q2Fu
dmFzTW9kdWxlIG1vZHVsZUZvclN0YXRlKEluamVjdGVkU2NyaXB0TWFuYWdlciosIEpTQzo6RXhl
Y1N0YXRlKik7CiAKLSAgICBTY3JpcHRPYmplY3Qgd3JhcENhbnZhczJEQ29udGV4dChjb25zdCBT
Y3JpcHRPYmplY3QmKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3Qgd3JhcENhbnZhczJE
Q29udGV4dChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmKTsKICNpZiBFTkFCTEUoV0VC
R0wpCi0gICAgU2NyaXB0T2JqZWN0IHdyYXBXZWJHTENvbnRleHQoY29uc3QgU2NyaXB0T2JqZWN0
Jik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IHdyYXBXZWJHTENvbnRleHQoY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0Jik7CiAjZW5kaWYKICAgICB2b2lkIG1hcmtGcmFtZUVu
ZCgpOwogCkBAIC02Niw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc291cmNlU3RhdGUo
RXJyb3JTdHJpbmcqLCBjb25zdCBUeXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFjZUxvZ0lkJiwgY29u
c3QgVHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VJZCYsIFJlZlB0cjxUeXBlQnVpbGRlcjo6
Q2FudmFzOjpSZXNvdXJjZVN0YXRlPiopOwogCiBwcml2YXRlOgotICAgIFNjcmlwdE9iamVjdCBj
YWxsV3JhcENvbnRleHRGdW5jdGlvbihjb25zdCBTdHJpbmcmLCBjb25zdCBTY3JpcHRPYmplY3Qm
KTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgY2FsbFdyYXBDb250ZXh0RnVuY3Rpb24o
Y29uc3QgU3RyaW5nJiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0Jik7CiAgICAgdm9p
ZCBjYWxsU3RhcnRDYXB0dXJpbmdGdW5jdGlvbihjb25zdCBTdHJpbmcmLCBFcnJvclN0cmluZyos
IFN0cmluZyopOwogICAgIHZvaWQgY2FsbFZvaWRGdW5jdGlvbldpdGhUcmFjZUxvZ0lkQXJndW1l
bnQoY29uc3QgU3RyaW5nJiwgRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmKTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwCmluZGV4IDNh
NjVkMWUuLmU0YzZkNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdEhvc3QuY3BwCkBAIC00OSwxNyArNDksMTYgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JG
cm9udGVuZC5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmQuaCIKICNpbmNsdWRlICJTdG9yYWdlLmgi
Ci0jaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgotCi0jaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKLSNpbmNsdWRlICJEYXRhYmFzZS5oIgotI2VuZGlmCi0KICNpbmNsdWRlICJt
YXJrdXAuaCIKLQorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CisjaW5jbHVkZSA8
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQor
I2luY2x1ZGUgIkRhdGFiYXNlLmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3Rv
cjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTIzLDkgKzEyMiw5IEBAIHZvaWQgSW5qZWN0
ZWRTY3JpcHRIb3N0Ojpjb3B5VGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgUGFzdGVib2Fy
ZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCktPndyaXRlUGxhaW5UZXh0KHRleHQsIFBhc3RlYm9h
cmQ6OkNhbm5vdFNtYXJ0UmVwbGFjZSk7CiB9CiAKLVNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0
SG9zdDo6SW5zcGVjdGFibGVPYmplY3Q6OmdldChKU0M6OkV4ZWNTdGF0ZSopCitEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdEhvc3Q6Okluc3BlY3RhYmxlT2JqZWN0OjpnZXQo
SlNDOjpFeGVjU3RhdGUqKQogewotICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOworICAgIHJldHVy
biBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSgpOwogfTsKIAogdm9pZCBJbmplY3RlZFNjcmlwdEhv
c3Q6OmFkZEluc3BlY3RlZE9iamVjdChQYXNzT3duUHRyPEluamVjdGVkU2NyaXB0SG9zdDo6SW5z
cGVjdGFibGVPYmplY3Q+IG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdEhvc3QuaAppbmRleCBhMjEyNTkzLi44YzQ0ZDc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oCkBAIC0zNiw2ICszNiwxMCBAQAog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCitu
YW1lc3BhY2UgRGVwcmVjYXRlZCB7CitjbGFzcyBTY3JpcHRWYWx1ZTsKK30KKwogbmFtZXNwYWNl
IEluc3BlY3RvciB7CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnNwZWN0b3JWYWx1
ZTsKQEAgLTUzLDggKzU3LDYgQEAgY2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDsKIGNsYXNz
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ7CiBjbGFzcyBOb2RlOwogY2xhc3MgU2NyaXB0RGVidWdT
ZXJ2ZXI7Ci1jbGFzcyBTY3JpcHRPYmplY3Q7Ci1jbGFzcyBTY3JpcHRWYWx1ZTsKIGNsYXNzIFN0
b3JhZ2U7CiAKIHN0cnVjdCBFdmVudExpc3RlbmVySW5mbzsKQEAgLTg4LDE1ICs5MCwxNSBAQCBw
dWJsaWM6CiAjZW5kaWYKICAgICB9CiAKLSAgICBzdGF0aWMgTm9kZSogc2NyaXB0VmFsdWVBc05v
ZGUoU2NyaXB0VmFsdWUpOwotICAgIHN0YXRpYyBTY3JpcHRWYWx1ZSBub2RlQXNTY3JpcHRWYWx1
ZShKU0M6OkV4ZWNTdGF0ZSosIE5vZGUqKTsKKyAgICBzdGF0aWMgTm9kZSogc2NyaXB0VmFsdWVB
c05vZGUoRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUpOworICAgIHN0YXRpYyBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSBub2RlQXNTY3JpcHRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIE5vZGUqKTsKIAog
ICAgIHZvaWQgZGlzY29ubmVjdCgpOwogCiAgICAgY2xhc3MgSW5zcGVjdGFibGVPYmplY3Qgewog
ICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6Ci0gICAgICAgIHZp
cnR1YWwgU2NyaXB0VmFsdWUgZ2V0KEpTQzo6RXhlY1N0YXRlKik7CisgICAgICAgIHZpcnR1YWwg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZ2V0KEpTQzo6RXhlY1N0YXRlKik7CiAgICAgICAgIHZp
cnR1YWwgfkluc3BlY3RhYmxlT2JqZWN0KCkgeyB9CiAgICAgfTsKICAgICB2b2lkIGFkZEluc3Bl
Y3RlZE9iamVjdChQYXNzT3duUHRyPEluc3BlY3RhYmxlT2JqZWN0Pik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCmluZGV4IGRlZGU4
NDEuLjEyNzZjNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRT
Y3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJJbmpl
Y3RlZFNjcmlwdFNvdXJjZS5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUg
PGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JW
YWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCkBAIC0xNzUsNyArMTc1LDcg
QEAgSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZv
cihKU0M6OkV4ZWNTdGF0ZSogaW5zcGVjdGUKICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0
KCk7CiAKICAgICBpbnQgaWQgPSBpbmplY3RlZFNjcmlwdElkRm9yKGluc3BlY3RlZEV4ZWNTdGF0
ZSk7Ci0gICAgU2NyaXB0T2JqZWN0IGluamVjdGVkU2NyaXB0T2JqZWN0ID0gY3JlYXRlSW5qZWN0
ZWRTY3JpcHQoaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKSwgaW5zcGVjdGVkRXhlY1N0YXRlLCBpZCk7
CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IGluamVjdGVkU2NyaXB0T2JqZWN0ID0gY3Jl
YXRlSW5qZWN0ZWRTY3JpcHQoaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKSwgaW5zcGVjdGVkRXhlY1N0
YXRlLCBpZCk7CiAgICAgSW5qZWN0ZWRTY3JpcHQgcmVzdWx0KGluamVjdGVkU2NyaXB0T2JqZWN0
LCBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOwogICAgIG1faWRUb0luamVjdGVkU2NyaXB0
LnNldChpZCwgcmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oCmluZGV4IDdiMjgzNjYuLjdiNDhk
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1h
bmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmgKQEAgLTM1LDYgKzM1LDEwIEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIERlcHJlY2F0ZWQgeworY2xh
c3MgU2NyaXB0T2JqZWN0OworfQorCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIGNsYXNzIEluc3Bl
Y3Rvck9iamVjdDsKIH0KQEAgLTQ0LDcgKzQ4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgRE9NV2luZG93OwogY2xhc3MgSW5qZWN0ZWRTY3JpcHQ7CiBjbGFzcyBJbmplY3RlZFNjcmlw
dEhvc3Q7Ci1jbGFzcyBTY3JpcHRPYmplY3Q7CiAKIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdl
ciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC03Miw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOwog
CiAgICAgU3RyaW5nIGluamVjdGVkU2NyaXB0U291cmNlKCk7Ci0gICAgU2NyaXB0T2JqZWN0IGNy
ZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBKU0M6OkV4ZWNTdGF0ZSos
IGludCBpZCk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IGNyZWF0ZUluamVjdGVkU2Ny
aXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBKU0M6OkV4ZWNTdGF0ZSosIGludCBpZCk7CiAKICAg
ICBzdGF0aWMgYm9vbCBjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coSlNDOjpFeGVjU3RhdGUqKTsK
ICAgICBzdGF0aWMgYm9vbCBjYW5BY2Nlc3NJbnNwZWN0ZWRXb3JrZXJHbG9iYWxTY29wZShKU0M6
OkV4ZWNTdGF0ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0TW9kdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdE1vZHVsZS5jcHAKaW5kZXggOGQ1OTg1Ny4uMmQ2OTI1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwCkBAIC0zNyw3ICszNyw3
IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlw
dE1hbmFnZXIuaCIKICNpbmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwuaCIKLSNpbmNsdWRlICJT
Y3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3QuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIApAQCAtNTksNyArNTksNyBAQCB2b2lkIEluamVjdGVk
U2NyaXB0TW9kdWxlOjplbnN1cmVJbmplY3RlZChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVj
dGVkU2NyaXB0TQogICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlw
dC5pbmplY3RlZFNjcmlwdE9iamVjdCgpLCAibW9kdWxlIik7CiAgICAgZnVuY3Rpb24uYXBwZW5k
QXJndW1lbnQobmFtZSgpKTsKICAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwotICAgIFNj
cmlwdFZhbHVlIHJlc3VsdFZhbHVlID0gaW5qZWN0ZWRTY3JpcHQuY2FsbEZ1bmN0aW9uV2l0aEV2
YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOworICAgIERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlIHJlc3VsdFZhbHVlID0gaW5qZWN0ZWRTY3JpcHQuY2FsbEZ1bmN0aW9uV2l0aEV2YWxF
bmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwogICAgIEFTU0VSVCghaGFkRXhjZXB0aW9u
KTsKICAgICBpZiAoaGFkRXhjZXB0aW9uIHx8IHJlc3VsdFZhbHVlLmhhc05vVmFsdWUoKSB8fCAh
cmVzdWx0VmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVu
Y3Rpb24oaW5qZWN0ZWRTY3JpcHQuaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImluamVjdE1vZHVs
ZSIpOwpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0TW9kdWxlOjplbnN1cmVJ
bmplY3RlZChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TQogICAgICAgICB9
CiAgICAgfQogCi0gICAgU2NyaXB0T2JqZWN0IG1vZHVsZU9iamVjdChzY3JpcHRTdGF0ZSwgcmVz
dWx0VmFsdWUpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBtb2R1bGVPYmplY3Qoc2Ny
aXB0U3RhdGUsIHJlc3VsdFZhbHVlKTsKICAgICBpbml0aWFsaXplKG1vZHVsZU9iamVjdCwgaW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKCkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcAppbmRleCBmMWNhYWUx
Li4yYTEzYzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5j
cHAKQEAgLTQ4LDcgKzQ4LDYgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNs
dWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgi
Ci0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1
ZXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52
YXNBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdl
bnQuY3BwCmluZGV4IDgwNWM4N2UuLjAzNjAzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcApAQCAtNDcsOSArNDcsOSBAQAogI2lu
Y2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGVy
LmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRP
YmplY3QuaD4KIAogdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkFycmF5OwogdXNpbmcgV2Vi
Q29yZTo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VJZDsKQEAgLTE4MCwyNyArMTgwLDI3
IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmdldFJlc291cmNlU3RhdGUoRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBjb25zdCBUcmFjCiAgICAgICAgIG1vZHVsZS5yZXNvdXJjZVN0YXRl
KGVycm9yU3RyaW5nLCB0cmFjZUxvZ0lkLCByZXNvdXJjZUlkLCAmcmVzdWx0KTsKIH0KIAotU2Ny
aXB0T2JqZWN0IEluc3BlY3RvckNhbnZhc0FnZW50Ojp3cmFwQ2FudmFzMkRSZW5kZXJpbmdDb250
ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKGNvbnN0IFNjcmlwdE9iamVjdCYgY29udGV4dCkKK0RlcHJl
Y2F0ZWQ6OlNjcmlwdE9iamVjdCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6d3JhcENhbnZhczJEUmVu
ZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlvbihjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRP
YmplY3QmIGNvbnRleHQpCiB7CiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgSW5qZWN0ZWRT
Y3JpcHRDYW52YXNNb2R1bGUgbW9kdWxlID0gaW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUoJmVy
cm9yLCBjb250ZXh0KTsKICAgICBpZiAobW9kdWxlLmhhc05vVmFsdWUoKSkKLSAgICAgICAgcmV0
dXJuIFNjcmlwdE9iamVjdCgpOworICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0T2Jq
ZWN0KCk7CiAgICAgcmV0dXJuIG5vdGlmeVJlbmRlcmluZ0NvbnRleHRXYXNXcmFwcGVkKG1vZHVs
ZS53cmFwQ2FudmFzMkRDb250ZXh0KGNvbnRleHQpKTsKIH0KIAogI2lmIEVOQUJMRShXRUJHTCkK
LVNjcmlwdE9iamVjdCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6d3JhcFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEZvckluc3RydW1lbnRhdGlvbihjb25zdCBTY3JpcHRPYmplY3QmIGdsQ29udGV4dCkKK0Rl
cHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6d3JhcFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlvbihjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRP
YmplY3QmIGdsQ29udGV4dCkKIHsKICAgICBFcnJvclN0cmluZyBlcnJvcjsKICAgICBJbmplY3Rl
ZFNjcmlwdENhbnZhc01vZHVsZSBtb2R1bGUgPSBpbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZSgm
ZXJyb3IsIGdsQ29udGV4dCk7CiAgICAgaWYgKG1vZHVsZS5oYXNOb1ZhbHVlKCkpCi0gICAgICAg
IHJldHVybiBTY3JpcHRPYmplY3QoKTsKKyAgICAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlw
dE9iamVjdCgpOwogICAgIHJldHVybiBub3RpZnlSZW5kZXJpbmdDb250ZXh0V2FzV3JhcHBlZCht
b2R1bGUud3JhcFdlYkdMQ29udGV4dChnbENvbnRleHQpKTsKIH0KICNlbmRpZgogCi1TY3JpcHRP
YmplY3QgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6Om5vdGlmeVJlbmRlcmluZ0NvbnRleHRXYXNXcmFw
cGVkKGNvbnN0IFNjcmlwdE9iamVjdCYgd3JhcHBlZENvbnRleHQpCitEZXByZWNhdGVkOjpTY3Jp
cHRPYmplY3QgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6Om5vdGlmeVJlbmRlcmluZ0NvbnRleHRXYXNX
cmFwcGVkKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgd3JhcHBlZENvbnRleHQpCiB7
CiAgICAgQVNTRVJUKG1fZnJvbnRlbmREaXNwYXRjaGVyKTsKICAgICBKU0M6OkV4ZWNTdGF0ZSog
c2NyaXB0U3RhdGUgPSB3cmFwcGVkQ29udGV4dC5zY3JpcHRTdGF0ZSgpOwpAQCAtMjI2LDEzICsy
MjYsMTMgQEAgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6
OmluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlKEVycm8KICAgICByZXR1cm4gbW9kdWxlOwogfQog
Ci1JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZSBJbnNwZWN0b3JDYW52YXNBZ2VudDo6aW5qZWN0
ZWRTY3JpcHRDYW52YXNNb2R1bGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTY3Jp
cHRPYmplY3QmIHNjcmlwdE9iamVjdCkKK0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlIEluc3Bl
Y3RvckNhbnZhc0FnZW50OjppbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZShFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgc2NyaXB0T2JqZWN0
KQogewogICAgIGlmICghY2hlY2tJc0VuYWJsZWQoZXJyb3JTdHJpbmcpKQogICAgICAgICByZXR1
cm4gSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUoKTsKICAgICBpZiAoc2NyaXB0T2JqZWN0Lmhh
c05vVmFsdWUoKSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgKmVy
cm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yOiBvcmlnaW5hbCBTY3JpcHRPYmplY3QgaGFzIG5v
IHZhbHVlIjsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yOiBvcmlnaW5h
bCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgaGFzIG5vIHZhbHVlIjsKICAgICAgICAgcmV0dXJu
IEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlKCk7CiAgICAgfQogICAgIHJldHVybiBpbmplY3Rl
ZFNjcmlwdENhbnZhc01vZHVsZShlcnJvclN0cmluZywgc2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRl
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZh
c0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQu
aAppbmRleCBlYjg2NDJlLi40ZjE4N2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaApAQCAtNDMsNiArNDMsMTAgQEAKICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1l
c3BhY2UgRGVwcmVjYXRlZCB7CitjbGFzcyBTY3JpcHRPYmplY3Q7Cit9CisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRnJhbWU7CkBAIC01MCw3ICs1NCw2IEBAIGNsYXNzIEluamVjdGVk
U2NyaXB0Q2FudmFzTW9kdWxlOwogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3Mg
SW5zcGVjdG9yUGFnZUFnZW50OwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKLWNsYXNzIFNj
cmlwdE9iamVjdDsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKQEAgLTcwLDkgKzcz
LDkgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQmVnaW5GcmFtZSgpOwogCiAgICAgLy8gQ2FsbGVk
IGZyb20gSW5zcGVjdG9yQ2FudmFzSW5zdHJ1bWVudGF0aW9uLgotICAgIFNjcmlwdE9iamVjdCB3
cmFwQ2FudmFzMkRSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKGNvbnN0IFNjcmlw
dE9iamVjdCYpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCB3cmFwQ2FudmFzMkRSZW5k
ZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9i
amVjdCYpOwogI2lmIEVOQUJMRShXRUJHTCkKLSAgICBTY3JpcHRPYmplY3Qgd3JhcFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlvbihjb25zdCBTY3JpcHRPYmplY3QmKTsKKyAg
ICBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3Qgd3JhcFdlYkdMUmVuZGVyaW5nQ29udGV4dEZvcklu
c3RydW1lbnRhdGlvbihjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmKTsKICNlbmRpZgog
CiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZyb250LWVuZC4KQEAgLTkyLDEyICs5NSwxMiBAQCBw
cml2YXRlOgogICAgIEluc3BlY3RvckNhbnZhc0FnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJ
bnNwZWN0b3JQYWdlQWdlbnQqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKIAogICAgIEluamVj
dGVkU2NyaXB0Q2FudmFzTW9kdWxlIGluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlKEVycm9yU3Ry
aW5nKiwgSlNDOjpFeGVjU3RhdGUqKTsKLSAgICBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZSBp
bmplY3RlZFNjcmlwdENhbnZhc01vZHVsZShFcnJvclN0cmluZyosIGNvbnN0IFNjcmlwdE9iamVj
dCYpOworICAgIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlIGluamVjdGVkU2NyaXB0Q2FudmFz
TW9kdWxlKEVycm9yU3RyaW5nKiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0Jik7CiAg
ICAgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUgaW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgZmluZEZyYW1lc1dpdGhV
bmluc3RydW1lbnRlZENhbnZhc2VzKCk7CiAgICAgYm9vbCBjaGVja0lzRW5hYmxlZChFcnJvclN0
cmluZyopIGNvbnN0OwotICAgIFNjcmlwdE9iamVjdCBub3RpZnlSZW5kZXJpbmdDb250ZXh0V2Fz
V3JhcHBlZChjb25zdCBTY3JpcHRPYmplY3QmKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRPYmpl
Y3Qgbm90aWZ5UmVuZGVyaW5nQ29udGV4dFdhc1dyYXBwZWQoY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0T2JqZWN0Jik7CiAKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50OwogICAg
IEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzSW5zdHJ1bWVudGF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzSW5zdHJ1bWVu
dGF0aW9uLmgKaW5kZXggZDNmZGE2MC4uMDE1MGM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0luc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNJbnN0cnVtZW50YXRpb24uaApAQCAt
MzQsMTEgKzM0LDExIEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5n
QWdlbnRzLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisjaW5jbHVkZSA8YmluZGluZ3Mv
U2NyaXB0T2JqZWN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2NyaXB0T2JqZWN0IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d3JhcENhbnZhczJEUmVuZGVyaW5nQ29udGV4dEZvcklu
c3RydW1lbnRhdGlvbihEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFNjcmlwdE9iamVjdCYgY29u
dGV4dCkKK0RlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndyYXBDYW52YXMyRFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24oRG9jdW1lbnQq
IGRvY3VtZW50LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmIGNvbnRleHQpCiB7CiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChkb2N1bWVudCkp
IHsKQEAgLTQ5LDExICs0OSwxMSBAQCBTY3JpcHRPYmplY3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3cmFwQ2FudmFzMkRSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudAogICAgIFVOVVNF
RF9QQVJBTShkb2N1bWVudCk7CiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogI2VuZGlmCi0g
ICAgcmV0dXJuIFNjcmlwdE9iamVjdCgpOworICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRP
YmplY3QoKTsKIH0KIAogI2lmIEVOQUJMRShXRUJHTCkKLVNjcmlwdE9iamVjdCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndyYXBXZWJHTFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRp
b24oRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTY3JpcHRPYmplY3QmIGdsQ29udGV4dCkKK0Rl
cHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndyYXBXZWJH
TFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24oRG9jdW1lbnQqIGRvY3VtZW50LCBj
b25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmIGdsQ29udGV4dCkKIHsKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkgewpAQCAtNjQs
NyArNjQsNyBAQCBTY3JpcHRPYmplY3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3cmFwV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aQogICAgIFVOVVNFRF9QQVJBTShkb2N1
bWVudCk7CiAgICAgVU5VU0VEX1BBUkFNKGdsQ29udGV4dCk7CiAjZW5kaWYKLSAgICByZXR1cm4g
U2NyaXB0T2JqZWN0KCk7CisgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCgpOwog
fQogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCA4ZTI3ZThhLi5jMzNlNmFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtMzgsNyArMzgsNyBAQAog
I2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVk
ZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50
LmNwcAppbmRleCAzOTQzZTk3Li5kZTE2ZjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcApAQCAtNDMsOCArNDMsOCBAQAogI2lu
Y2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFja0ZhY3Rv
cnkuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZXIuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9T
Y3JpcHRPYmplY3QuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTMyMiw3ICszMjIs
NyBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRkQ29uc29sZU1lc3NhZ2UoUGFzc093
blB0cjxDb25zb2xlTWVzc2FnZT4gY29uc29sZQogY2xhc3MgSW5zcGVjdGFibGVIZWFwT2JqZWN0
IDogcHVibGljIEluamVjdGVkU2NyaXB0SG9zdDo6SW5zcGVjdGFibGVPYmplY3QgewogcHVibGlj
OgogICAgIGV4cGxpY2l0IEluc3BlY3RhYmxlSGVhcE9iamVjdChpbnQgaGVhcE9iamVjdElkKSA6
IG1faGVhcE9iamVjdElkKGhlYXBPYmplY3RJZCkgeyB9Ci0gICAgdmlydHVhbCBTY3JpcHRWYWx1
ZSBnZXQoSlNDOjpFeGVjU3RhdGUqKQorICAgIHZpcnR1YWwgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUgZ2V0KEpTQzo6RXhlY1N0YXRlKikKICAgICB7CiAgICAgICAgIHJldHVybiBTY3JpcHRQcm9m
aWxlcjo6b2JqZWN0QnlIZWFwT2JqZWN0SWQobV9oZWFwT2JqZWN0SWQpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA4
MGQzMzI1Li40Mzc3NTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCkBAIC03MCw3ICs3MCw2IEBACiAjaW5jbHVkZSAiUGFnZURlYnVn
Z2VyQWdlbnQuaCIKICNpbmNsdWRlICJQYWdlUnVudGltZUFnZW50LmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAj
aW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg+CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDY1YTMx
N2IuLjBjZGZiZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TUFnZW50LmNwcApAQCAtMTQyNSw3ICsxNDI1LDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6
RE9NOjpFdmVudExpc3RlbmVyPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JFdmUK
ICAgICBpZiAob2JqZWN0R3JvdXBJZCAmJiBoYW5kbGVyICYmIHN0YXRlKSB7CiAgICAgICAgIElu
amVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmlu
amVjdGVkU2NyaXB0Rm9yKHN0YXRlKTsKICAgICAgICAgaWYgKCFpbmplY3RlZFNjcmlwdC5oYXNO
b1ZhbHVlKCkpCi0gICAgICAgICAgICB2YWx1ZS0+c2V0SGFuZGxlcihpbmplY3RlZFNjcmlwdC53
cmFwT2JqZWN0KFNjcmlwdFZhbHVlKHN0YXRlLT52bSgpLCBoYW5kbGVyKSwgKm9iamVjdEdyb3Vw
SWQpKTsKKyAgICAgICAgICAgIHZhbHVlLT5zZXRIYW5kbGVyKGluamVjdGVkU2NyaXB0LndyYXBP
YmplY3QoRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoc3RhdGUtPnZtKCksIGhhbmRsZXIpLCAqb2Jq
ZWN0R3JvdXBJZCkpOwogICAgIH0KICAgICBpZiAoIXNjcmlwdElELmlzTnVsbCgpKSB7CiAgICAg
ICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiBsb2NhdGlvbiA9IFR5
cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb246OmNyZWF0ZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IDRkMjYzZDIuLjBlZjE2ZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC00OSw3
ICs0OSwxMiBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9B
dG9taWNTdHJpbmcuaD4KIAorbmFtZXNwYWNlIERlcHJlY2F0ZWQgeworY2xhc3MgU2NyaXB0VmFs
dWU7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKwogY2xhc3MgQ29udGFpbmVyTm9kZTsKIGNs
YXNzIENoYXJhY3RlckRhdGE7CiBjbGFzcyBET01FZGl0b3I7CkBAIC02Niw3ICs3MSw2IEBAIGNs
YXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBOYW1lTm9kZU1hcDsKIGNsYXNzIE5vZGU7
CiBjbGFzcyBSZXZhbGlkYXRlU3R5bGVBdHRyaWJ1dGVUYXNrOwotY2xhc3MgU2NyaXB0VmFsdWU7
CiBjbGFzcyBTaGFkb3dSb290OwogCiBzdHJ1Y3QgSGlnaGxpZ2h0Q29uZmlnOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4
IDFmNzcyZTMuLmYyOTM5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTQxLDcgKzQxLDggQEAKICNpbmNsdWRlICJJ
bnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiUmVndWxhckV4cHJlc3Npb24uaCIKICNp
bmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgor
I2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgorI2luY2x1ZGUgPGJpbmRpbmdzL1Nj
cmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00MTIsNyArNDEzLDcgQEAgUGFzc1Jl
ZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpyZXNvbHZlQnJlYWsKICAgICByZXR1cm4gbG9jYXRpb247CiB9CiAKLXN0YXRpYyBQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gc2NyaXB0VG9JbnNwZWN0b3JPYmplY3QoU2NyaXB0T2Jq
ZWN0IHNjcmlwdE9iamVjdCkKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gc2Ny
aXB0VG9JbnNwZWN0b3JPYmplY3QoRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IHNjcmlwdE9iamVj
dCkKIHsKICAgICBpZiAoc2NyaXB0T2JqZWN0Lmhhc05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJu
IDA7CkBAIC00MzgsNyArNDM5LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZWFy
Y2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHMKIHZvaWQgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5nKiBlcnJvciwg
Y29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBjb25zdCBi
b29sKiBjb25zdCBwcmV2aWV3LCBSZWZQdHI8QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpD
YWxsRnJhbWU+PiYgbmV3Q2FsbEZyYW1lcywgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHJlc3Vs
dCkKIHsKICAgICBib29sIHByZXZpZXdPbmx5ID0gcHJldmlldyAmJiAqcHJldmlldzsKLSAgICBT
Y3JpcHRPYmplY3QgcmVzdWx0T2JqZWN0OworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBy
ZXN1bHRPYmplY3Q7CiAgICAgaWYgKCFzY3JpcHREZWJ1Z1NlcnZlcigpLnNldFNjcmlwdFNvdXJj
ZShzY3JpcHRJRCwgbmV3Q29udGVudCwgcHJldmlld09ubHksIGVycm9yLCAmbV9jdXJyZW50Q2Fs
bFN0YWNrLCAmcmVzdWx0T2JqZWN0KSkKICAgICAgICAgcmV0dXJuOwogICAgIG5ld0NhbGxGcmFt
ZXMgPSBjdXJyZW50Q2FsbEZyYW1lcygpOwpAQCAtNjA3LDcgKzYwOCw3IEBAIHZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6cnVuU2NyaXB0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29u
c3QgU2NyaXB0SWQmCiAgICAgICAgIG11dGVDb25zb2xlKCk7CiAgICAgfQogCi0gICAgU2NyaXB0
VmFsdWUgdmFsdWU7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgdmFsdWU7CiAgICAgYm9v
bCB3YXNUaHJvd25WYWx1ZTsKICAgICBTdHJpbmcgZXhjZXB0aW9uTWVzc2FnZTsKICAgICBzY3Jp
cHREZWJ1Z1NlcnZlcigpLnJ1blNjcmlwdChpbmplY3RlZFNjcmlwdC5zY3JpcHRTdGF0ZSgpLCBz
Y3JpcHRJRCwgJnZhbHVlLCAmd2FzVGhyb3duVmFsdWUsICZleGNlcHRpb25NZXNzYWdlKTsKQEAg
LTcyOCw3ICs3MjksNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmZhaWxlZFRvUGFy
c2VTb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZwogICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyLT5zY3JpcHRGYWlsZWRUb1BhcnNlKHVybCwgZGF0YSwgZmlyc3RMaW5lLCBlcnJv
ckxpbmUsIGVycm9yTWVzc2FnZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
ZGlkUGF1c2UoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcHRWYWx1ZSYg
Y2FsbEZyYW1lcywgY29uc3QgU2NyaXB0VmFsdWUmIGV4Y2VwdGlvbikKK3ZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25z
dCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywgY29uc3QgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUmIGV4Y2VwdGlvbikKIHsKICAgICBBU1NFUlQoc2NyaXB0U3RhdGUgJiYgIW1f
cGF1c2VkU2NyaXB0U3RhdGUpOwogICAgIG1fcGF1c2VkU2NyaXB0U3RhdGUgPSBzY3JpcHRTdGF0
ZTsKQEAgLTc1Nyw3ICs3NTgsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBh
dXNlKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0Vgogdm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRDb250aW51ZSgpCiB7CiAgICAgbV9wYXVzZWRTY3JpcHRT
dGF0ZSA9IDA7Ci0gICAgbV9jdXJyZW50Q2FsbFN0YWNrID0gU2NyaXB0VmFsdWUoKTsKKyAgICBt
X2N1cnJlbnRDYWxsU3RhY2sgPSBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSgpOwogICAgIGNsZWFy
QnJlYWtEZXRhaWxzKCk7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlc3VtZWQoKTsKIH0K
QEAgLTc3Miw3ICs3NzMsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrUHJv
Z3JhbShJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6Ugogdm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpjbGVhcigpCiB7CiAgICAgbV9wYXVzZWRTY3JpcHRTdGF0ZSA9IDA7
Ci0gICAgbV9jdXJyZW50Q2FsbFN0YWNrID0gU2NyaXB0VmFsdWUoKTsKKyAgICBtX2N1cnJlbnRD
YWxsU3RhY2sgPSBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSgpOwogICAgIG1fc2NyaXB0cy5jbGVh
cigpOwogICAgIG1fYnJlYWtwb2ludElkZW50aWZpZXJUb0RlYnVnU2VydmVyQnJlYWtwb2ludElE
cy5jbGVhcigpOwogICAgIG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElEID0gbm9CcmVh
a3BvaW50SUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVn
Z2VyQWdlbnQuaAppbmRleCA4ZTUzNjcyLi41YjJlODA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTUwLDYgKzUwLDEwIEBA
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KIAorbmFtZXNwYWNlIERlcHJlY2F0ZWQgeworY2xhc3MgU2NyaXB0VmFsdWU7Cit9CisKIG5h
bWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBjbGFzcyBJbnNwZWN0
b3JPYmplY3Q7CkBAIC02MSw3ICs2NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIElu
amVjdGVkU2NyaXB0TWFuYWdlcjsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBT
Y3JpcHREZWJ1Z1NlcnZlcjsKLWNsYXNzIFNjcmlwdFZhbHVlOwogCiB0eXBlZGVmIFN0cmluZyBF
cnJvclN0cmluZzsKIApAQCAtMTQ2LDcgKzE0OSw3IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1
YWwgdm9pZCBlbmFibGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZSgpOwotICAgIHZpcnR1
YWwgdm9pZCBkaWRQYXVzZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFNjcmlwdFZhbHVlJiBjYWxs
RnJhbWVzLCBjb25zdCBTY3JpcHRWYWx1ZSYgZXhjZXB0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkUGF1c2UoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYg
Y2FsbEZyYW1lcywgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGV4Y2VwdGlvbik7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZENvbnRpbnVlKCk7CiAgICAgdm9pZCByZXNldCgpOwogCkBAIC0x
NzUsNyArMTc4LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRGVi
dWdnZXJGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwogICAgIFJlZlB0
cjxJbnNwZWN0b3JEZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVy
OwogICAgIEpTQzo6RXhlY1N0YXRlKiBtX3BhdXNlZFNjcmlwdFN0YXRlOwotICAgIFNjcmlwdFZh
bHVlIG1fY3VycmVudENhbGxTdGFjazsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBtX2N1
cnJlbnRDYWxsU3RhY2s7CiAgICAgU2NyaXB0c01hcCBtX3NjcmlwdHM7CiAgICAgQnJlYWtwb2lu
dElkZW50aWZpZXJUb0RlYnVnU2VydmVyQnJlYWtwb2ludElEc01hcCBtX2JyZWFrcG9pbnRJZGVu
dGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHM7CiAgICAgQnJlYWtwb2ludElkZW50aWZp
ZXJUb0JyZWFrcG9pbnRNYXAgbV9qYXZhU2NyaXB0QnJlYWtwb2ludHM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5j
cHAKaW5kZXggMjViYzYzNy4uMGVkYWUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcApAQCAtNDksNyAr
NDksNyBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0
LmgiCisjaW5jbHVkZSAiU2NyaXB0R2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0U3Rh
dGUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCkBAIC0zNDYs
NyArMzQ2LDcgQEAgYm9vbCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjppc1VuZGVyVGVz
dCgpCiAKIGJvb2wgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZXZhbHVhdGVBc0Jvb2xl
YW4oY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKQogewotICAgIFNjcmlwdFZhbHVlIHZhbHVlID0g
bV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoZXhwcmVz
c2lvbik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgdmFsdWUgPSBtX2Zyb250ZW5kUGFn
ZS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChleHByZXNzaW9uKTsKICAgICBy
ZXR1cm4gdmFsdWUudG9TdHJpbmcobWFpbldvcmxkRXhlY1N0YXRlKCZtX2Zyb250ZW5kUGFnZS0+
bWFpbkZyYW1lKCkpKSA9PSAidHJ1ZSI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKaW5kZXggNjg5ZDE4Ny4uMTlkNzFiMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9z
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9z
dC5jcHAKQEAgLTU0LDYgKzU0LDggQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNp
bmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxs
LmgiCisjaW5jbHVkZSAiU2NyaXB0R2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiU2NyaXB0U3Rh
dGUuaCIKICNpbmNsdWRlICJTb3VuZC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9y
LmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtNjUsMTkgKzY3LDE5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKIGNsYXNzIEZyb250
ZW5kTWVudVByb3ZpZGVyIDogcHVibGljIENvbnRleHRNZW51UHJvdmlkZXIgewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZyb250ZW5kTWVudVByb3ZpZGVyPiBjcmVhdGUoSW5zcGVj
dG9yRnJvbnRlbmRIb3N0KiBmcm9udGVuZEhvc3QsIFNjcmlwdE9iamVjdCBmcm9udGVuZEFwaU9i
amVjdCwgY29uc3QgVmVjdG9yPENvbnRleHRNZW51SXRlbT4mIGl0ZW1zKQorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEZyb250ZW5kTWVudVByb3ZpZGVyPiBjcmVhdGUoSW5zcGVjdG9yRnJvbnRlbmRI
b3N0KiBmcm9udGVuZEhvc3QsIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBmcm9udGVuZEFwaU9i
amVjdCwgY29uc3QgVmVjdG9yPENvbnRleHRNZW51SXRlbT4mIGl0ZW1zKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGcm9udGVuZE1lbnVQcm92aWRlcihmcm9udGVuZEhvc3Qs
IGZyb250ZW5kQXBpT2JqZWN0LCBpdGVtcykpOwogICAgIH0KICAgICAKICAgICB2b2lkIGRpc2Nv
bm5lY3QoKQogICAgIHsKLSAgICAgICAgbV9mcm9udGVuZEFwaU9iamVjdCA9IFNjcmlwdE9iamVj
dCgpOworICAgICAgICBtX2Zyb250ZW5kQXBpT2JqZWN0ID0gRGVwcmVjYXRlZDo6U2NyaXB0T2Jq
ZWN0KCk7CiAgICAgICAgIG1fZnJvbnRlbmRIb3N0ID0gMDsKICAgICB9CiAgICAgCiBwcml2YXRl
OgotICAgIEZyb250ZW5kTWVudVByb3ZpZGVyKEluc3BlY3RvckZyb250ZW5kSG9zdCogZnJvbnRl
bmRIb3N0LCBTY3JpcHRPYmplY3QgZnJvbnRlbmRBcGlPYmplY3QsIGNvbnN0IFZlY3RvcjxDb250
ZXh0TWVudUl0ZW0+JiBpdGVtcykKKyAgICBGcm9udGVuZE1lbnVQcm92aWRlcihJbnNwZWN0b3JG
cm9udGVuZEhvc3QqIGZyb250ZW5kSG9zdCwgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IGZyb250
ZW5kQXBpT2JqZWN0LCBjb25zdCBWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiYgaXRlbXMpCiAgICAg
ICAgIDogbV9mcm9udGVuZEhvc3QoZnJvbnRlbmRIb3N0KQogICAgICAgICAsIG1fZnJvbnRlbmRB
cGlPYmplY3QoZnJvbnRlbmRBcGlPYmplY3QpCiAgICAgICAgICwgbV9pdGVtcyhpdGVtcykKQEAg
LTExOSw3ICsxMjEsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIEluc3BlY3RvckZyb250ZW5k
SG9zdCogbV9mcm9udGVuZEhvc3Q7Ci0gICAgU2NyaXB0T2JqZWN0IG1fZnJvbnRlbmRBcGlPYmpl
Y3Q7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IG1fZnJvbnRlbmRBcGlPYmplY3Q7CiAg
ICAgVmVjdG9yPENvbnRleHRNZW51SXRlbT4gbV9pdGVtczsKIH07CiAjZW5kaWYKQEAgLTI3NCw3
ICsyNzYsNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6c2hvd0NvbnRleHRNZW51KEV2
ZW50KiBldmVudCwgY29uc3QgVmVjdG9yPENvbnRleHRNZQogCiAgICAgQVNTRVJUKG1fZnJvbnRl
bmRQYWdlKTsKICAgICBKU0M6OkV4ZWNTdGF0ZSogZnJvbnRlbmRFeGVjU3RhdGUgPSBleGVjU3Rh
dGVGcm9tUGFnZShkZWJ1Z2dlcldvcmxkKCksIG1fZnJvbnRlbmRQYWdlKTsKLSAgICBTY3JpcHRP
YmplY3QgZnJvbnRlbmRBcGlPYmplY3Q7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IGZy
b250ZW5kQXBpT2JqZWN0OwogICAgIGlmICghU2NyaXB0R2xvYmFsT2JqZWN0OjpnZXQoZnJvbnRl
bmRFeGVjU3RhdGUsICJJbnNwZWN0b3JGcm9udGVuZEFQSSIsIGZyb250ZW5kQXBpT2JqZWN0KSkg
ewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2Vu
dC5jcHAKaW5kZXggODJlMTdhOC4uOTA5OGZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuY3BwCkBAIC0yMDAsNyAr
MjAwLDcgQEAgdm9pZCBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6Z2V0T2JqZWN0QnlIZWFw
T2JqZWN0SWQoRXJyb3JTdHJpbmcqIGVycm9yLCBjb24KICAgICAgICAgKmVycm9yID0gIkludmFs
aWQgaGVhcCBzbmFwc2hvdCBvYmplY3QgaWQiOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IFNjcmlwdE9iamVjdCBoZWFwT2JqZWN0ID0gU2NyaXB0UHJvZmlsZXI6Om9iamVjdEJ5SGVhcE9i
amVjdElkKGlkKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgaGVhcE9iamVjdCA9IFNj
cmlwdFByb2ZpbGVyOjpvYmplY3RCeUhlYXBPYmplY3RJZChpZCk7CiAgICAgaWYgKGhlYXBPYmpl
Y3QuaGFzTm9WYWx1ZSgpKSB7CiAgICAgICAgICplcnJvciA9ICJPYmplY3QgaXMgbm90IGF2YWls
YWJsZSI7CiAgICAgICAgIHJldHVybjsKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIEluc3BlY3Rv
ckhlYXBQcm9maWxlckFnZW50OjpnZXRIZWFwT2JqZWN0SWQoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBjb25zdAogICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW5zcGVjdGVkIGNvbnRleHQgaGFz
IGdvbmUiOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIFNjcmlwdFZhbHVlIHZhbHVlID0g
aW5qZWN0ZWRTY3JpcHQuZmluZE9iamVjdEJ5SWQob2JqZWN0SWQpOworICAgIERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlIHZhbHVlID0gaW5qZWN0ZWRTY3JpcHQuZmluZE9iamVjdEJ5SWQob2JqZWN0
SWQpOwogICAgIGlmICh2YWx1ZS5oYXNOb1ZhbHVlKCkgfHwgdmFsdWUuaXNVbmRlZmluZWQoKSkg
ewogICAgICAgICAqZXJyb3JTdHJpbmcgPSAiT2JqZWN0IHdpdGggZ2l2ZW4gaWQgbm90IGZvdW5k
IjsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IGJkNWM5NTIuLjMzYjZiYzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgK
QEAgLTQ1LDYgKzQ1LDEwIEBACiAjaW5jbHVkZSAiV2ViU29ja2V0RnJhbWUuaCIKICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAKK25hbWVzcGFjZSBEZXByZWNhdGVkIHsKK2NsYXNzIFNjcmlwdE9i
amVjdDsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NSdWxlOwpAQCAtNzcs
NyArODEsNiBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2NyaXB0QXJndW1lbnRz
OwogY2xhc3MgU2NyaXB0Q2FsbFN0YWNrOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
LWNsYXNzIFNjcmlwdE9iamVjdDsKIGNsYXNzIFNjcmlwdFByb2ZpbGU7CiBjbGFzcyBTZWN1cml0
eU9yaWdpbjsKIGNsYXNzIFNoYWRvd1Jvb3Q7CkBAIC0yNzYsOSArMjc5LDkgQEAgcHVibGljOgog
ICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZUVycm9yKERvY3VtZW50Kiwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAj
ZW5kaWYKIAotICAgIHN0YXRpYyBTY3JpcHRPYmplY3Qgd3JhcENhbnZhczJEUmVuZGVyaW5nQ29u
dGV4dEZvckluc3RydW1lbnRhdGlvbihEb2N1bWVudCosIGNvbnN0IFNjcmlwdE9iamVjdCYpOwor
ICAgIHN0YXRpYyBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3Qgd3JhcENhbnZhczJEUmVuZGVyaW5n
Q29udGV4dEZvckluc3RydW1lbnRhdGlvbihEb2N1bWVudCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNj
cmlwdE9iamVjdCYpOwogI2lmIEVOQUJMRShXRUJHTCkKLSAgICBzdGF0aWMgU2NyaXB0T2JqZWN0
IHdyYXBXZWJHTFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24oRG9jdW1lbnQqLCBj
b25zdCBTY3JpcHRPYmplY3QmKTsKKyAgICBzdGF0aWMgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0
IHdyYXBXZWJHTFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24oRG9jdW1lbnQqLCBj
b25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmKTsKICNlbmRpZgogCiAgICAgc3RhdGljIHZv
aWQgbmV0d29ya1N0YXRlQ2hhbmdlZChQYWdlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKaW5kZXggZmRhMmE3MC4uYTg1ZDhjNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcApAQCAtNTQsOSArNTQs
OSBAQAogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVl
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCisj
aW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5z
cGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4
IGMzYmEyYTkuLjg3YTliYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC03MywxMiArNzMsMTIgQEAKICNpbmNsdWRlICJSZWd1bGFy
RXhwcmVzc2lvbi5oIgogI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0RW5j
b2RpbmcuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiVXNl
ckdlc3R1cmVJbmRpY2F0b3IuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgog
I2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvQ3Vy
cmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAppbmRleCBiZGI0
MGNmLi40Njc3NjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclByb2ZpbGVyQWdlbnQuY3BwCkBAIC00NSwxMCArNDUsMTAgQEAKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiUGFnZVNjcmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0
SGVhcFNuYXBzaG90LmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2Ny
aXB0UHJvZmlsZS5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGVyLmgiCiAjaW5jbHVkZSAiV29y
a2VyU2NyaXB0RGVidWdTZXJ2ZXIuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3Qu
aD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3Rm
L0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtNDI0LDcgKzQyNCw3
IEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0T2JqZWN0QnlIZWFwT2JqZWN0SWQo
RXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTCiAgICAgICAgICplcnJvciA9ICJJbnZhbGlkIGhl
YXAgc25hcHNob3Qgb2JqZWN0IGlkIjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBTY3Jp
cHRPYmplY3QgaGVhcE9iamVjdCA9IFNjcmlwdFByb2ZpbGVyOjpvYmplY3RCeUhlYXBPYmplY3RJ
ZChpZCk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IGhlYXBPYmplY3QgPSBTY3JpcHRQ
cm9maWxlcjo6b2JqZWN0QnlIZWFwT2JqZWN0SWQoaWQpOwogICAgIGlmIChoZWFwT2JqZWN0Lmhh
c05vVmFsdWUoKSkgewogICAgICAgICAqZXJyb3IgPSAiT2JqZWN0IGlzIG5vdCBhdmFpbGFibGUi
OwogICAgICAgICByZXR1cm47CkBAIC00NDYsNyArNDQ2LDcgQEAgdm9pZCBJbnNwZWN0b3JQcm9m
aWxlckFnZW50OjpnZXRIZWFwT2JqZWN0SWQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25z
dCBTdHIKICAgICAgICAgKmVycm9yU3RyaW5nID0gIkluc3BlY3RlZCBjb250ZXh0IGhhcyBnb25l
IjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBTY3JpcHRWYWx1ZSB2YWx1ZSA9IGluamVj
dGVkU2NyaXB0LmZpbmRPYmplY3RCeUlkKG9iamVjdElkKTsKKyAgICBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSB2YWx1ZSA9IGluamVjdGVkU2NyaXB0LmZpbmRPYmplY3RCeUlkKG9iamVjdElkKTsK
ICAgICBpZiAodmFsdWUuaGFzTm9WYWx1ZSgpIHx8IHZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKICAg
ICAgICAgKmVycm9yU3RyaW5nID0gIk9iamVjdCB3aXRoIGdpdmVuIGlkIG5vdCBmb3VuZCI7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdl
Q29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFn
ZW50LmNwcAppbmRleCBhODkwM2VhLi5jZWFiYmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAi
SW5zcGVjdG9yQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgogI2luY2x1
ZGUgIk5vZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKIAogdXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKIApAQCAtNjgsNyArNjcsNyBAQCB2b2lkIFBhZ2VDb25zb2xlQWdlbnQ6OmNs
ZWFyTWVzc2FnZXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nKQogY2xhc3MgSW5zcGVjdGFibGVO
b2RlIDogcHVibGljIEluamVjdGVkU2NyaXB0SG9zdDo6SW5zcGVjdGFibGVPYmplY3QgewogcHVi
bGljOgogICAgIGV4cGxpY2l0IEluc3BlY3RhYmxlTm9kZShOb2RlKiBub2RlKSA6IG1fbm9kZShu
b2RlKSB7IH0KLSAgICB2aXJ0dWFsIFNjcmlwdFZhbHVlIGdldChKU0M6OkV4ZWNTdGF0ZSogc3Rh
dGUpCisgICAgdmlydHVhbCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBnZXQoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlKQogICAgIHsKICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdDo6bm9k
ZUFzU2NyaXB0VmFsdWUoc3RhdGUsIG1fbm9kZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNwcAppbmRleCAzNDVjMDgxLi4zNjU3YTk4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNwcApAQCAtMzEsMTgg
KzMxLDE2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2NyaXB0QXJndW1lbnRz
LmgiCiAKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgotCi11c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOworI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IFNjcmlwdEFyZ3VtZW50czo6Y3Jl
YXRlKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgVmVjdG9yPFNjcmlwdFZhbHVlPiYgYXJn
dW1lbnRzKQorUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IFNjcmlwdEFyZ3VtZW50czo6Y3Jl
YXRlKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgVmVjdG9yPERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlPiYgYXJndW1lbnRzKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2NyaXB0QXJn
dW1lbnRzKHNjcmlwdFN0YXRlLCBhcmd1bWVudHMpKTsKIH0KIAotU2NyaXB0QXJndW1lbnRzOjpT
Y3JpcHRBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBWZWN0b3I8U2NyaXB0
VmFsdWU+JiBhcmd1bWVudHMpCitTY3JpcHRBcmd1bWVudHM6OlNjcmlwdEFyZ3VtZW50cyhKU0M6
OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIFZlY3RvcjxEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZT4m
IGFyZ3VtZW50cykKICAgICA6IG1fZ2xvYmFsT2JqZWN0KHNjcmlwdFN0YXRlLT52bSgpLCBzY3Jp
cHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKQogewogICAgIG1fYXJndW1lbnRzLnN3YXAo
YXJndW1lbnRzKTsKQEAgLTUyLDcgKzUwLDcgQEAgU2NyaXB0QXJndW1lbnRzOjp+U2NyaXB0QXJn
dW1lbnRzKCkKIHsKIH0KIAotY29uc3QgU2NyaXB0VmFsdWUgJlNjcmlwdEFyZ3VtZW50czo6YXJn
dW1lbnRBdChzaXplX3QgaW5kZXgpIGNvbnN0Citjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSAmU2NyaXB0QXJndW1lbnRzOjphcmd1bWVudEF0KHNpemVfdCBpbmRleCkgY29uc3QKIHsKICAg
ICBBU1NFUlQobV9hcmd1bWVudHMuc2l6ZSgpID4gaW5kZXgpOwogICAgIHJldHVybiBtX2FyZ3Vt
ZW50c1tpbmRleF07CkBAIC03MCw3ICs2OCw3IEBAIGJvb2wgU2NyaXB0QXJndW1lbnRzOjpnZXRG
aXJzdEFyZ3VtZW50QXNTdHJpbmcoU3RyaW5nJiByZXN1bHQsIGJvb2wgY2hlY2tGb3JOdWxsCiAg
ICAgaWYgKCFhcmd1bWVudENvdW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGNv
bnN0IFNjcmlwdFZhbHVlJiB2YWx1ZSA9IGFyZ3VtZW50QXQoMCk7CisgICAgY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlID0gYXJndW1lbnRBdCgwKTsKICAgICBpZiAoY2hlY2tG
b3JOdWxsT3JVbmRlZmluZWQgJiYgKHZhbHVlLmlzTnVsbCgpIHx8IHZhbHVlLmlzVW5kZWZpbmVk
KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9T
Y3JpcHRBcmd1bWVudHMuaAppbmRleCAxNzQzOWEwLi40N2E5NjIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oCkBAIC0xLDEwICsxLDEwIEBACiAvKgogICog
Q29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAK
KyAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKICAqIG1ldDoKLSAqIAorICoKICAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CiAgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCiAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCkBAIC0xNCw3ICsxNCw3IEBACiAgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCiAg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQogICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSAqIAorICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKICAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCiAg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKQEAgLTM3LDYgKzM3LDEwIEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgRGVwcmVjYXRl
ZCB7CitjbGFzcyBTY3JpcHRWYWx1ZTsKK30KKwogbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBFeGVj
U3RhdGU7CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsKQEAgLTQ0LDE1ICs0OCwxMyBAQCBjbGFzcyBK
U0dsb2JhbE9iamVjdDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTY3JpcHRWYWx1
ZTsKLQogY2xhc3MgU2NyaXB0QXJndW1lbnRzIDogcHVibGljIFJlZkNvdW50ZWQ8U2NyaXB0QXJn
dW1lbnRzPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRz
PiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqLCBWZWN0b3I8U2NyaXB0VmFsdWU+JiBhcmd1bWVudHMp
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gY3JlYXRlKEpTQzo6RXhl
Y1N0YXRlKiwgVmVjdG9yPERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlPiYgYXJndW1lbnRzKTsKIAog
ICAgIH5TY3JpcHRBcmd1bWVudHMoKTsKIAotICAgIGNvbnN0IFNjcmlwdFZhbHVlJiBhcmd1bWVu
dEF0KHNpemVfdCkgY29uc3Q7CisgICAgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGFy
Z3VtZW50QXQoc2l6ZV90KSBjb25zdDsKICAgICBzaXplX3QgYXJndW1lbnRDb3VudCgpIGNvbnN0
IHsgcmV0dXJuIG1fYXJndW1lbnRzLnNpemUoKTsgfQogCiAgICAgSlNDOjpFeGVjU3RhdGUqIGds
b2JhbFN0YXRlKCkgY29uc3Q7CkBAIC02MSwxMCArNjMsMTAgQEAgcHVibGljOgogICAgIGJvb2wg
aXNFcXVhbChTY3JpcHRBcmd1bWVudHMqKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBTY3JpcHRB
cmd1bWVudHMoSlNDOjpFeGVjU3RhdGUqLCBWZWN0b3I8U2NyaXB0VmFsdWU+JiBhcmd1bWVudHMp
OworICAgIFNjcmlwdEFyZ3VtZW50cyhKU0M6OkV4ZWNTdGF0ZSosIFZlY3RvcjxEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZT4mIGFyZ3VtZW50cyk7CiAKICAgICBKU0M6OlN0cm9uZzxKU0M6OkpTR2xv
YmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKLSAgICBWZWN0b3I8U2NyaXB0VmFsdWU+IG1fYXJn
dW1lbnRzOworICAgIFZlY3RvcjxEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZT4gbV9hcmd1bWVudHM7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1NjcmlwdERlYnVnTGlzdGVuZXIuaAppbmRleCA1YmNhNzUxLi4wZWI0ZmIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdMaXN0ZW5lci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmgKQEAgLTM3LDgg
KzM3LDExIEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIERlcHJlY2F0ZWQg
ewogY2xhc3MgU2NyaXB0VmFsdWU7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
U2NyaXB0RGVidWdMaXN0ZW5lciB7CiBwdWJsaWM6CkBAIC02OCw3ICs3MSw3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgdm9pZCBkaWRQYXJzZVNvdXJjZShTb3VyY2VJRCwgY29uc3QgU2NyaXB0
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmYWlsZWRUb1BhcnNlU291cmNlKGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBTdHJpbmcmIGRhdGEsIGludCBmaXJzdExpbmUsIGludCBlcnJvckxpbmUs
IGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFBh
dXNlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNvbnN0
IFNjcmlwdFZhbHVlJiBleGNlcHRpb24pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2Uo
SlNDOjpFeGVjU3RhdGUqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgY2FsbEZyYW1l
cywgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGV4Y2VwdGlvbikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRDb250aW51ZSgpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3Bw
CmluZGV4IGRkZTY1ZTMuLjMyN2VhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q29uc29sZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcApAQCAtNDcs
OSArNDcsOSBAQAogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCIKICNpbmNsdWRl
ICJTY3JpcHRQcm9maWxlLmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZXIuaCIKLSNpbmNsdWRl
ICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4K
ICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggNDllMTg3
Yi4uYjhkODc3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTg2LDcgKzg2LDYgQEAKICNpbmNs
dWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRl
ICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRl
ICJTY3JvbGxpbmdDb29yZGluYXRvci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVk
ZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCkBAIC0xMDQsNiArMTAzLDcgQEAKICNpbmNsdWRlICJtYXJr
dXAuaCIKICNpbmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgogI2luY2x1ZGUgInJ1bnRpbWVfcm9v
dC5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlQ29uc29sZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlLmNwcApp
bmRleCA0ZmFhZTZkLi45YmNjMjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VDb25zb2xlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlLmNwcApA
QCAtNDIsOSArNDIsOSBAQAogI2luY2x1ZGUgIlNjcmlwdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUg
IlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCIK
LSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBh
cnNlci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0
VmFsdWUuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1Bs
dWdpblZpZXcuY3BwCmluZGV4IGQ2MGM4ODUuLmY4NDVjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcApAQCAtNjEsNyArNjEsNiBAQAogI2luY2x1ZGUgIlJlbmRlckJveC5o
IgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIu
aCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5o
IgpAQCAtNjksNiArNjgsNyBAQAogI2luY2x1ZGUgImNfaW5zdGFuY2UuaCIKICNpbmNsdWRlICJu
cHJ1bnRpbWVfaW1wbC5oIgogI2luY2x1ZGUgInJ1bnRpbWVfcm9vdC5oIgorI2luY2x1ZGUgPGJp
bmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAj
aW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgpA
QCAtNDY3LDcgKzQ2Nyw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QoUGx1Z2lu
UmVxdWVzdCogcmVxdWVzdCkKICAgICAKICAgICAvLyBFeGVjdXRpbmcgYSBzY3JpcHQgY2FuIGNh
dXNlIHRoZSBwbHVnaW4gdmlldyB0byBiZSBkZXN0cm95ZWQsIHNvIHdlIGtlZXAgYSByZWZlcmVu
Y2UgdG8gaXQuCiAgICAgUmVmUHRyPFBsdWdpblZpZXc+IHByb3RlY3Rvcih0aGlzKTsKLSAgICBT
Y3JpcHRWYWx1ZSByZXN1bHQgPSBtX3BhcmVudEZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0
KGpzU3RyaW5nLCByZXF1ZXN0LT5zaG91bGRBbGxvd1BvcHVwcygpKTsKKyAgICBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSByZXN1bHQgPSBtX3BhcmVudEZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2Ny
aXB0KGpzU3RyaW5nLCByZXF1ZXN0LT5zaG91bGRBbGxvd1BvcHVwcygpKTsKIAogICAgIGlmICh0
YXJnZXRGcmFtZU5hbWUuaXNOdWxsKCkpIHsKICAgICAgICAgU3RyaW5nIHJlc3VsdFN0cmluZzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA3YzRiM2QwLi43NzQzZDdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xMjg0LDcgKzEyODQsNyBAQCBw
cml2YXRlOgogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CiB9OwogCi1TdHJpbmcgSW50ZXJu
YWxzOjpwYXJzZXJNZXRhRGF0YShTY3JpcHRWYWx1ZSB2YWx1ZSkKK1N0cmluZyBJbnRlcm5hbHM6
OnBhcnNlck1ldGFEYXRhKERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHZhbHVlKQogewogICAgIEpT
Qzo6Vk0qIHZtID0gY29udGV4dERvY3VtZW50KCktPnZtKCk7CiAgICAgSlNDOjpFeGVjU3RhdGUq
IGV4ZWMgPSB2bS0+dG9wQ2FsbEZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5k
ZXggMjViY2FmZS4uMTA5MjVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0z
MSw3ICszMSw3IEBACiAjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKICNp
bmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5o
IgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFs
dWUuaD4KICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8cnVudGlt
ZS9GbG9hdDMyQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtMTgxLDcg
KzE4MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVtaXRJbnNwZWN0b3JEaWRCZWdpbkZyYW1lKCk7
CiAgICAgdm9pZCBlbWl0SW5zcGVjdG9yRGlkQ2FuY2VsRnJhbWUoKTsKIAotICAgIFN0cmluZyBw
YXJzZXJNZXRhRGF0YShTY3JpcHRWYWx1ZSA9IFNjcmlwdFZhbHVlKCkpOworICAgIFN0cmluZyBw
YXJzZXJNZXRhRGF0YShEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSA9IERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlKCkpOwogCiAgICAgYm9vbCBoYXNTcGVsbGluZ01hcmtlcihpbnQgZnJvbSwgaW50IGxl
bmd0aCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIGJvb2wgaGFzR3JhbW1hck1hcmtlcihpbnQgZnJv
bSwgaW50IGxlbmd0aCwgRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCBlMTc3YTcwLi4xMzhiZmFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckdsb2JhbFNj
b3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckdsb2JhbFNj
b3BlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBQYXNzUmVmUHRy
PE1lc3NhZ2VFdmVudD4gY3JlYXRlQ29ubmVjdEV2ZW50KFBhc3NSZWZQdHI8TWVzc2FnZVBvcnQ+
IHBycFBvcnQpCiB7CiAgICAgUmVmUHRyPE1lc3NhZ2VQb3J0PiBwb3J0ID0gcHJwUG9ydDsKLSAg
ICBSZWZQdHI8TWVzc2FnZUV2ZW50PiBldmVudCA9IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKGFkb3B0
UHRyKG5ldyBNZXNzYWdlUG9ydEFycmF5KDEsIHBvcnQpKSwgU2NyaXB0VmFsdWUoKSwgU3RyaW5n
KCksIFN0cmluZygpLCBwb3J0KTsKKyAgICBSZWZQdHI8TWVzc2FnZUV2ZW50PiBldmVudCA9IE1l
c3NhZ2VFdmVudDo6Y3JlYXRlKGFkb3B0UHRyKG5ldyBNZXNzYWdlUG9ydEFycmF5KDEsIHBvcnQp
KSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKSwgU3RyaW5nKCksIFN0cmluZygpLCBwb3J0KTsK
ICAgICBldmVudC0+aW5pdEV2ZW50KGV2ZW50TmFtZXMoKS5jb25uZWN0RXZlbnQsIGZhbHNlLCBm
YWxzZSk7CiAgICAgcmV0dXJuIGV2ZW50LnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggZWMyZDE5MC4uZmNiZjY0NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTM3LDYg
KzM3LDcgQEAKICNpbmNsdWRlICJFcnJvckV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNp
bmNsdWRlICJFdmVudEV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JDb25zb2xlSW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKQEAgLTQ0LDcgKzQ1LDYgQEAKICNpbmNsdWRl
ICJTY2hlZHVsZWRBY3Rpb24uaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNs
dWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIldvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJXb3JrZXJMb2NhdGlvbi5oIgpAQCAtNTQsMTQgKzU0LDEzIEBACiAj
aW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkYWJsZUxvYWRl
ci5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uLmgiCisjaW5jbHVkZSA8Ymlu
ZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKICNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogI2luY2x1
ZGUgIk5vdGlmaWNhdGlvbkNlbnRlci5oIgogI2VuZGlmCiAKLSNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2xvc2VXb3JrZXJHbG9iYWxT
Y29wZVRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CkBAIC0yNDEs
NyArMjQwLDcgQEAgdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6aW1wb3J0U2NyaXB0cyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgdXJscywgRXhjZXB0aW9uQ29kZSYKIAogICAgICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
c2NyaXB0TG9hZGVyLT5pZGVudGlmaWVyKCksIHNjcmlwdExvYWRlci0+c2NyaXB0KCkpOwogCi0g
ICAgICAgIFNjcmlwdFZhbHVlIGV4Y2VwdGlvbjsKKyAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUgZXhjZXB0aW9uOwogICAgICAgICBtX3NjcmlwdC0+ZXZhbHVhdGUoU2NyaXB0U291cmNl
Q29kZShzY3JpcHRMb2FkZXItPnNjcmlwdCgpLCBzY3JpcHRMb2FkZXItPnJlc3BvbnNlVVJMKCkp
LCAmZXhjZXB0aW9uKTsKICAgICAgICAgaWYgKCFleGNlcHRpb24uaGFzTm9WYWx1ZSgpKSB7CiAg
ICAgICAgICAgICBtX3NjcmlwdC0+c2V0RXhjZXB0aW9uKGV4Y2VwdGlvbik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXggNTBiZmExZC4uZmVmM2U1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2lu
Y2x1ZGUgIkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1
ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRl
ICJUaHJlYWRHbG9iYWxEYXRhLmgiCiAjaW5jbHVkZSAiVVJMLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
VHJlZVZpZXdlci5jcHAKaW5kZXggMTYxZGQwMS4uYzM5ZTc1MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxUcmVlVmlld2VyLmNwcApAQCAtMzgsMTAgKzM4LDEwIEBACiAjaW5jbHVkZSAiRnJhbWUuaCIK
ICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29k
ZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1
ZGUgIlhNTFZpZXdlckNTUy5oIgogI2luY2x1ZGUgIlhNTFZpZXdlckpTLmgiCisjaW5jbHVkZSA8
YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDc0YTdk
MDAuLjkwZWZkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9j
dW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXIuY3BwCkBAIC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25z
ZS5oIgogI2luY2x1ZGUgIlNjcmlwdEVsZW1lbnQuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VD
b2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VE
ZWNvZGVyLmgiCiAjaW5jbHVkZSAiVHJlZURlcHRoTGltaXQuaCIKICNpbmNsdWRlICJYTUxFcnJv
cnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXJMaWJ4bWwyLmNwcAppbmRleCA0NmE5MmRiLi41MmI4Zjk1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBA
IC01Miw3ICs1Miw2IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUg
IlNjcmlwdEVsZW1lbnQuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVk
ZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUg
IlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKaW5kZXggZTcxZjRmYy4uNGVlZmQzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCkBAIC0xMTgsNyArMTE4LDYg
QEAKICNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVl
LmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5o
IgogI2luY2x1ZGUgIlNlbGVjdGlvbkhhbmRsZXIuaCIKQEAgLTE3Miw2ICsxNzEsNyBAQAogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ29udGV4dFJlZi5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTU3RyaW5nUmVmLmg+CiAjaW5jbHVkZSA8U2hhcmVkUG9pbnRlci5oPgorI2luY2x1
ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8
c3lzL2tleWNvZGVzLmg+CiAjaW5jbHVkZSA8dW5pY29kZS91c3RyaW5nLmg+IC8vIHBsYXRmb3Jt
IElDVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5kZXggMDQ0NmFiMS4uMjQwY2I2YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMTIt
MDUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVjdG9yIFJlcXVpcmVkIENsYXNzZXMgRG93biBpbnRv
IEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjUzMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIEFwaS9XZWJQYWdlLmNwcDoKKwogMjAxMy0xMi0wMyAgSm9zZXBoIFBlY29yYXJv
ICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggUmVt
b3RlIEluc3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2VtZW50IGludG8gSmF2YVNj
cmlwdENvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCAzMWVlMmI1Li43ZGQ1ZTU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMTItMDUgIEpvc2VwaCBQZWNvcmFybyAgPHBl
Y29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5z
cGVjdG9yIFJlcXVpcmVkIENsYXNzZXMgRG93biBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGV3ay9ld2tfZnJhbWUu
Y3BwOgorCiAyMDEzLTEyLTAzICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+
CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBSZW1vdGUgSW5zcGVjdG9yIGRlYnVnZ2lu
ZyBjb25uZWN0aW9uIG1hbmFnZW1lbnQgaW50byBKYXZhU2NyaXB0Q29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX2ZyYW1lLmNwcAppbmRleCBmMmEyMGMzLi5hMDUyYWEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX2ZyYW1lLmNwcApAQCAtNTMsNyArNTMsNiBAQAogI2luY2x1ZGUgIlByb2dyZXNzVHJh
Y2tlci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNjcmlwdENv
bnRyb2xsZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlci5oIgogI2luY2x1ZGUgIlN1YnN0aXR1dGVEYXRhLmgiCiAjaW5jbHVkZSAiV2luZG93c0tl
eWJvYXJkQ29kZXMuaCIKQEAgLTY1LDYgKzY0LDcgQEAKICNpbmNsdWRlIDxFY29yZV9JbnB1dC5o
PgogI2luY2x1ZGUgPEVpbmEuaD4KICNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8YmluZGlu
Z3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxlaW5hX3NhZmV0eV9jaGVja3MuaD4KICNpbmNs
dWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cKaW5kZXggMmI0N2Q0YS4uNjk1YjAyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDEzLTEyLTA1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5j
b20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBNb3JlIEluc3BlY3RvciBSZXF1aXJl
ZCBDbGFzc2VzIERvd24gaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1MzI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisK
IDIwMTMtMTItMDUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtHVEtdIEZpeCBHT2JqZWN0IGludHJvc3BlY3Rpb24gd2FybmluZ3MgaW4gd2Vi
a2l0c3BlbGxjaGVja2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5j
cHAKaW5kZXggZjlkOWIxZGQuLjYwMjMyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2Vidmlldy5jcHAKQEAgLTg1LDcgKzg1LDYgQEAKICNpbmNsdWRlICJSZXNvdXJjZUhh
bmRsZS5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJT
Y3JpcHRDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJT
ZXR0aW5ncy5oIgogI2luY2x1ZGUgIldlYktpdERPTURvY3VtZW50UHJpdmF0ZS5oIgogI2luY2x1
ZGUgIndlYmtpdGRvd25sb2FkLmgiCkBAIC0xMTQsNiArMTEzLDcgQEAKICNpbmNsdWRlICJ3ZWJr
aXR3ZWJwbHVnaW5kYXRhYmFzZXByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ3aW5kb3dm
ZWF0dXJlcy5oIgogI2luY2x1ZGUgIndlYmtpdHdlYnZpZXdwcml2YXRlLmgiCisjaW5jbHVkZSA8
YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxnZGsvZ2Rra2V5c3ltcy5oPgogI2lu
Y2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50Lm1tCmluZGV4IGUyNWViZTkuLmExNGM4ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KQEAgLTQz
LDEyICs0MywxMiBAQAogI2ltcG9ydCAiV2ViVUlEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiV2ViVmll
d0ludGVybmFsLmgiCiAjaW1wb3J0IDxhbGdvcml0aG0+CisjaW1wb3J0IDxiaW5kaW5ncy9TY3Jp
cHRWYWx1ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9JbnNwZWN0b3JDb250cm9sbGVyLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L01haW5GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1NjcmlwdENvbnRyb2xsZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvU2NyaXB0VmFsdWUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcuaD4KICNpbXBvcnQgPFdlYktpdC9ET01FeHRlbnNp
b25zLmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpp
bmRleCA0YjUyYTc1Li5kMDNhNTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTMtMTItMDUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVjdG9yIFJlcXVpcmVkIENsYXNzZXMg
RG93biBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoK
KwogMjAxMy0xMi0wNCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbV2luXSBFeGl0aW5nIGZyb20gTWVkaWEgRnVsbCBTY3JlZW4gbW9kZSB2aWEgJ2VzY2Fw
ZScga2V5IGRvZXMgbm90IHdvcmsgcHJvcGVybHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAppbmRleCBl
YThiZDE4Li40OWQ2NmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCkBAIC05OSwxMiArOTksMTIg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL1RleHRJdGVyYXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SlNET01CaW5kaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJp
dHlPcmlnaW4uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTTG9jay5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0Lmg+CisjaW5jbHVk
ZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgog
CiAjaWYgVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAppbmRleCBmOWY1ZDA2Li4wODM4NDc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJWaWV3LmNwcApAQCAtMTM3LDcgKzEzNyw2IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY2hlbWVSZWdp
c3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGJhci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsYmFyVGhlbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nl
Y3VyaXR5T3JpZ2luLmg+CkBAIC0xNDcsNiArMTQ2LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1N5
c3RlbUluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd01lc3NhZ2VCcm9hZGNhc3Rlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93c1RvdWNoLmg+CisjaW5jbHVkZSA8YmluZGluZ3Mv
U2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiAjaWYgVVNFKENH
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IDA3MDAwMmQuLmQ1Y2ExMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTUsNiArNSwx
NyBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcDoKKworMjAxMy0xMi0wNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBw
bGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggTW9yZSBJbnNwZWN0b3IgUmVx
dWlyZWQgQ2xhc3NlcyBEb3duIGludG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTMyNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3Rvci5jcHA6CiAgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5o
OgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAKaW5kZXggZTAwZDNhMi4uNjEzZDVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNjMsMTIgKzYzLDEyIEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZW5kZXJFbWJlZGRlZE9iamVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VMb2FkU2NoZWR1bGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVy
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2Nyb2xsVmlldy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NlY3VyaXR5UG9saWN5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5n
cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckdlc3R1cmVJbmRpY2F0b3IuaD4KKyNpbmNsdWRl
IDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTExNzksNyArMTE3OSw3IEBAIHZvaWQg
UGx1Z2luVmlldzo6cGVyZm9ybUphdmFTY3JpcHRVUkxSZXF1ZXN0KFVSTFJlcXVlc3QqIHJlcXVl
c3QpCiAgICAgLy8gRXZhbHVhdGUgdGhlIEphdmFTY3JpcHQgY29kZS4gTm90ZSB0aGF0IHJ1bm5p
bmcgSmF2YVNjcmlwdCBoZXJlIGNvdWxkIGNhdXNlIHRoZSBwbHVnLWluIHRvIGJlIGRlc3Ryb3ll
ZCwgc28gd2UKICAgICAvLyBncmFiIHJlZmVyZW5jZXMgdG8gdGhlIHBsdWctaW4gaGVyZS4KICAg
ICBSZWZQdHI8UGx1Z2luPiBwbHVnaW4gPSBtX3BsdWdpbjsKLSAgICBTY3JpcHRWYWx1ZSByZXN1
bHQgPSBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChqc1N0cmluZywgcmVxdWVzdC0+YWxs
b3dQb3B1cHMoKSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgcmVzdWx0ID0gZnJhbWUt
PnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoanNTdHJpbmcsIHJlcXVlc3QtPmFsbG93UG9wdXBzKCkp
OwogCiAgICAgLy8gQ2hlY2sgaWYgZXZhbHVhdGluZyB0aGUgSmF2YVNjcmlwdCBkZXN0cm95ZWQg
dGhlIHBsdWctaW4uCiAgICAgaWYgKCFwbHVnaW4tPmNvbnRyb2xsZXIoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKaW5kZXggNzcz
NWY2Yy4uMTA1YmFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3Rvci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L01haW5GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2NyaXB0Q29udHJvbGxlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0VmFsdWUuaD4K
KyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0NvbmNhdGVuYXRlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGMyMjI0YjguLjFk
YzM4N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKQEAgLTEyOCw3ICsxMjgsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUVuYWJsZWRG
ZWF0dXJlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdFZh
bHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFkb3dSb290Lmg+
CkBAIC0xMzksNiArMTM4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Zpc2libGVQb3NpdGlvbi5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvVmlzaWJsZVVuaXRzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9t
YXJrdXAuaD4KKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHJ1
bnRpbWUvSlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAjaW5jbHVk
ZSA8cnVudGltZS9PcGVyYXRpb25zLmg+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218638</attachid>
            <date>2013-12-06 17:44:18 -0800</date>
            <delta_ts>2013-12-09 11:26:02 -0800</delta_ts>
            <desc>[PATCH] For Bots 2 (parts 1 and 2)</desc>
            <filename>forbots2.patch</filename>
            <type>text/plain</type>
            <size>456659</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA2OTA5MzlkLi5kYWYzN2M5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00LDYgKzQsNyBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vQVBJIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMiCiAg
ICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9hc3NlbWJsZXIiCisgICAgIiR7SkFWQVNDUklQVENP
UkVfRElSfS9iaW5kaW5ncyIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J5dGVjb2RlIgog
ICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnl0ZWNvbXBpbGVyIgogICAgICIke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vZGZnIgpAQCAtNDUsNiArNDYsOSBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09V
UkNFUwogICAgIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5jcHAKICAgICBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZDb21tb24uY3BwCiAKKyAgICBiaW5kaW5ncy9TY3JpcHRPYmplY3QuY3Bw
CisgICAgYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCisKICAgICBieXRlY29kZS9BcnJheUFsbG9j
YXRpb25Qcm9maWxlLmNwcAogICAgIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKICAgICBieXRl
Y29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC0yMTQsNiArMjE4LDEwIEBAIHNldChKYXZh
U2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgaGVhcC9XZWFrU2V0LmNwcAogICAgIGhlYXAvV3JpdGVC
YXJyaWVyU3VwcG9ydC5jcHAKIAorICAgIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5
LmNwcAorICAgIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAKKyAgICBp
bnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcAorCiAgICAgaW50ZXJwcmV0ZXIvQWJzdHJhY3RQ
Qy5jcHAKICAgICBpbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCiAgICAgaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCkBAIC01ODIsNiArNTkwLDcgQEAgZW5kZm9yZWFjaCAoKQogCiBzZXQoSmF2
YVNjcmlwdENvcmVfRk9SV0FSRElOR19IRUFERVJTX0RJUkVDVE9SSUVTCiAgICAgYXNzZW1ibGVy
CisgICAgYmluZGluZ3MKICAgICBieXRlY29kZQogICAgIGNvbGxlY3Rvci9oYW5kbGVzCiAgICAg
ZGVidWdnZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDZmNzNiZjUuLmEzZDM1M2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEzLTEyLTA1ICBKb3Nl
cGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogUHVzaCBNb3JlIEluc3BlY3RvciBSZXF1aXJlZCBDbGFzc2VzIERvd24gaW50byBKYXZhU2Ny
aXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTI1MzI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL2NvcHktZmlsZXMuY21kOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvU2NyaXB0T2JqZWN0LmNwcDog
Q29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5jcHAu
CisgICAgICAgIChKU0M6OlNjcmlwdE9iamVjdDo6U2NyaXB0T2JqZWN0KToKKyAgICAgICAgKiBi
aW5kaW5ncy9TY3JpcHRPYmplY3QuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdE9iamVjdC5oLgorICAgICAgICAoSlNDOjpTY3JpcHRPYmplY3Q6OlNjcmlw
dE9iamVjdCk6CisgICAgICAgIChKU0M6OlNjcmlwdE9iamVjdDo6anNPYmplY3QpOgorICAgICAg
ICAoSlNDOjpTY3JpcHRPYmplY3Q6OnNjcmlwdFN0YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9T
Y3JpcHRWYWx1ZS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRWYWx1ZS5jcHAuCisgICAgICAgIChKU0M6OlNjcmlwdFZhbHVlOjp+U2NyaXB0VmFsdWUp
OgorICAgICAgICAoSlNDOjpTY3JpcHRWYWx1ZTo6Z2V0U3RyaW5nKToKKyAgICAgICAgKEpTQzo6
U2NyaXB0VmFsdWU6OnRvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6U2NyaXB0VmFsdWU6OmlzRXF1
YWwpOgorICAgICAgICAoSlNDOjpqc1RvSW5zcGVjdG9yVmFsdWUpOgorICAgICAgICAoSlNDOjpT
Y3JpcHRWYWx1ZTo6dG9JbnNwZWN0b3JWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvU2NyaXB0
VmFsdWUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZh
bHVlLmguCisKKzIwMTMtMTItMDUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNv
bT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVjdG9yIFJlcXVpcmVk
IENsYXNzZXMgRG93biBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdO
VW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFn
ZW50QmFzZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QWdlbnRSZWdpc3RyeS5oLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudEJhc2U6
On5JbnNwZWN0b3JBZ2VudEJhc2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2Vu
dEJhc2U6OmRpc2NhcmRBZ2VudCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50
QmFzZTo6SW5zcGVjdG9yQWdlbnRCYXNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
QWdlbnRSZWdpc3RyeS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3Rv
ckFnZW50UmVnaXN0cnk6OmFwcGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFn
ZW50UmVnaXN0cnkuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckFnZW50UmVnaXN0cnkuaC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcC4KKyAgICAgICAgKEluc3BlY3Rvcjo6Z2V0UHJv
cGVydHlWYWx1ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIuaC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNw
cDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMu
Y3BwLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaC4KKwogMjAxMy0xMi0w
NiAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBTcGxpdCBz
aXppbmcgb2YgVmFyQXJncyBmcmFtZXMgZnJvbSBsb2FkaW5nIGFyZ3VtZW50cyBmb3IgdGhlIGZy
YW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggMDg1ZmNhNy4uNzVkYmVl
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtNTIsNiArNTIsNyBAQCBq
YXZhc2NyaXB0Y29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSSBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
IFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MgXAogCS1JJChz
cmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZSBcCiAJLUkkKHNyY2RpcikvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KaW5kZXggN2ZhYWJiZS4uZWUwYTc5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTk1LDYgKzk1LDEwIEBAIGphdmFzY3JpcHRjb3JlX3Nv
dXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZl
ci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1NINEFzc2VtYmxlci5oIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oIFwKKyAgICBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0T2JqZWN0LmNwcCBcCisgICAgU291
cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5oIFwKKyAgICBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwIFwKKyAgICBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcCBcCkBAIC02MTAsNyArNjE0LDE0
IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
Y3UvdW5pY29kZS91dGZfb2xkLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5pY29k
ZS91dHlwZXMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ljdS91bmljb2RlL3V2ZXJzaW9u
LmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNl
LmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdp
c3RyeS5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdl
bnRSZWdpc3RyeS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9BYnN0cmFjdFBDLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0Fic3RyYWN0UEMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0NhY2hlZENhbGwuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpp
bmRleCA1MzY3MDc2Li4yOWNmMjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2oKQEAgLTI5NCw2ICsyOTQsOCBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYXNz
ZW1ibGVyXE1hY3JvQXNzZW1ibGVyLmNwcCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XEFQSVxKU0NUZXN0UnVubmVyVXRpbHMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGFzc2VtYmxlclxNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5jcHAiIC8+CisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xiaW5kaW5ncy9TY3JpcHRPYmplY3QuY3BwIiAvPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcYmluZGluZ3MvU2NyaXB0VmFsdWUuY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0aW9u
UHJvZmlsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJh
eVByb2ZpbGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQnl0
ZWNvZGVCYXNpY0Jsb2NrLmNwcCIgLz4KQEAgLTQ1NSw2ICs0NTcsOSBAQAogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5caGVhcFxXZWFrSGFuZGxlT3duZXIuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5caGVhcFxXZWFrU2V0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGhlYXBcV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAiIC8+CisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3Rv
clZhbHVlcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxB
YnN0cmFjdFBDLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGludGVycHJldGVy
XENhbGxGcmFtZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRl
clxJbnRlcnByZXRlci5jcHAiIC8+CkBAIC03NDgsNiArNzUzLDggQEAKICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxNYWNyb0Fzc2VtYmxlclg4Nl82NC5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXFJlcGF0Y2hCdWZmZXIuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxYODZBc3NlbWJsZXIuaCIgLz4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oIiAv
PgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcYmluZGluZ3MvU2NyaXB0VmFs
dWUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2Nh
dGlvblByb2ZpbGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFy
cmF5UHJvZmlsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQnlW
YWxJbmZvLmgiIC8+CkBAIC05OTUsNyArMTAwMiwxMSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5caGVhcFxXZWFrU2V0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFw
XFdlYWtTZXRJbmxpbmVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXFdy
aXRlQmFycmllclN1cHBvcnQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3Bl
Y3RvclxJbnNwZWN0b3JBZ2VudEJhc2UuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGluc3BlY3RvclxJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgiIC8+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JW
YWx1ZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGludGVycHJldGVyXEFic3Ry
YWN0UEMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGludGVycHJldGVyXENhY2hl
ZENhbGwuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGludGVycHJldGVyXENhbGxG
cmFtZS5oIiAvPgpAQCAtMTM0Myw0ICsxMzU0LDQgQEAKICAgPEltcG9ydEdyb3VwIExhYmVsPSJF
eHRlbnNpb25UYXJnZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClc
QnVpbGRDdXN0b21pemF0aW9uc1xtYXNtLnRhcmdldHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+Ci08
L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGEyNjEw
ZjcuLjhmZGExMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qLmZpbHRlcnMKQEAgLTQsNiArNCw5IEBACiAgICAgPEZpbHRlciBJbmNsdWRlPSJhc3NlbWJs
ZXIiPgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezQyOTc4M2ExLTVkNmEtNDAxOS1hZDFhLWRk
YjJjOThmOWI2Y308L1VuaXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRl
ciBJbmNsdWRlPSJiaW5kaW5ncyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57MGJhY2UxMjMt
NDU4Mi1lZWJjLTkzMTQtNzgxOWIzNzZjMTk4fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0Zp
bHRlcj4KICAgICA8RmlsdGVyIEluY2x1ZGU9ImJ5dGVjb2RlIj4KICAgICAgIDxVbmlxdWVJZGVu
dGlmaWVyPns3NjYwODhhMC0xMjE2LTQ4NTQtYWE0My01NjBjNWUyODM2Njh9PC9VbmlxdWVJZGVu
dGlmaWVyPgogICAgIDwvRmlsdGVyPgpAQCAtMTA1LDYgKzEwOCwxMiBAQAogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXE1hY3JvQXNzZW1ibGVyLmNwcCI+CiAgICAgICA8Rmls
dGVyPmFzc2VtYmxlcjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0T2JqZWN0LmNwcCI+CisgICAgICA8RmlsdGVyPmJp
bmRpbmdzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxiaW5kaW5nc1xTY3JpcHRWYWx1ZS5jcHAiPgorICAgICAgPEZpbHRlcj5iaW5kaW5nczwv
RmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0
ZWNvZGVcQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAiPgogICAgICAgPEZpbHRlcj5ieXRlY29k
ZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMjc5LDYgKzI4OCwxNSBAQAogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcCI+CiAgICAg
ICA8RmlsdGVyPmhlYXA8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcCI+CisgICAg
ICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNw
cCI+CisgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvclZhbHVlcy5jcHAi
PgorICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGludGVycHJldGVyXEFic3RyYWN0UEMuY3BwIj4KICAg
ICAgIDxGaWx0ZXI+aW50ZXJwcmV0ZXI8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTEz
ODgsNiArMTQwNiwxMiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXFg4
NkFzc2VtYmxlci5oIj4KICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAgICAgPC9D
bEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRPYmpl
Y3QuaCI+CisgICAgICA8RmlsdGVyPmJpbmRpbmdzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRWYWx1ZS5oIj4KKyAg
ICAgIDxGaWx0ZXI+YmluZGluZ3M8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCI+CiAg
ICAgICA8RmlsdGVyPmJ5dGVjb2RlPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0xNzE1
LDkgKzE3MzksMjEgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcV3JpdGVCYXJy
aWVyU3VwcG9ydC5oIj4KICAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVyPgogICAgIDwvQ2xJbmNs
dWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckFnZW50
QmFzZS5oIj4KKyAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1
ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQWdlbnRS
ZWdpc3RyeS5oIj4KKyAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CisgICAgPC9DbElu
Y2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIuaCI+CisgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgorICAg
IDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbC5oIj4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+
CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3Jc
SW5zcGVjdG9yVmFsdWVzLmgiPgorICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KKyAg
ICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGludGVycHJldGVyXEFi
c3RyYWN0UEMuaCI+CiAgICAgICA8RmlsdGVyPmludGVycHJldGVyPC9GaWx0ZXI+CiAgICAgPC9D
bEluY2x1ZGU+CkBAIC0zMTcwLDQgKzMyMDYsNCBAQAogICAgICAgPEZpbHRlcj5qaXQ8L0ZpbHRl
cj4KICAgICA8L01BU00+CiAgIDwvSXRlbUdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL2NvcHktZmlsZXMuY21kIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovY29weS1maWxlcy5jbWQKaW5kZXggZjdl
NDI5NC4uODgyY2U4MyAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovY29weS1maWxlcy5jbWQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovY29weS1maWxlcy5jbWQKQEAgLTM5LDYgKzM5LDcgQEAg
ZWNobyBDb3B5aW5nIHByaXZhdGUgaGVhZGVycy4uLgogbWtkaXIgIiVQcml2YXRlSGVhZGVyc0Rp
cmVjdG9yeSUiIDI+TlVMDQogZm9yICUlZCBpbiAoDQogICAgIGFzc2VtYmxlcg0KKyAgICBiaW5k
aW5ncw0KICAgICBieXRlY29kZQ0KICAgICBkZmcNCiAgICAgZGlzYXNzZW1ibGVyDQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5MjE1N2U2Li5iYjAyMTAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtODkwLDYgKzg5MCwxNyBAQAogCQlBMTcxMkI0MTExQzdCMjM1
MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMTcxMkI0MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTFBMDA5QzAx
ODMxQTIyRDAwQ0Y4NzExIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NDA5MjNDMTU2RUVEM0IwMDU2NkNCMiAv
KiBNYWNyb0Fzc2VtYmxlckFSTTY0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQTFBMDA5QzExODMxQTI2RTAwQ0Y4NzExIC8qIEFSTTY0QXNzZW1i
bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjQw
OTIzQjE1NkVFRDNCMDA1NjZDQjIgLyogQVJNNjRBc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNTRDRjJGNTE4NEVBQjI0MDAyMzdG
MTkgLyogU2NyaXB0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTU0Q0YyRjIxODRFQUIyNDAwMjM3RjE5IC8qIFNjcmlwdFZhbHVlLmNwcCAq
LzsgfTsKKwkJQTU0Q0YyRjYxODRFQUIyNDAwMjM3RjE5IC8qIFNjcmlwdFZhbHVlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTRDRjJGMzE4NEVBQjI0
MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlBNTRDRjJGOTE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2Jq
ZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
NENGMkY3MTg0RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuY3BwICovOyB9OworCQlBNTRD
RjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTRDRjJGODE4NEVBRURBMDAyMzdGMTkgLyog
U2NyaXB0T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQTU5M0NGN0MxODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1OTNDRjdBMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5j
cHAgKi87IH07CisJCUE1OTNDRjdEMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTU5M0NGN0IxODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTU5
M0NGN0YxODQwMzYyQzAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50QmFzZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5M0NGN0UxODQwMzYyQzAwQkZD
RTI3IC8qIEluc3BlY3RvckFnZW50QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUE1OTNDRjgyMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0
b3JWYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTU5M0NGODAxODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5jcHAgKi87IH07
CisJCUE1OTNDRjgzMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OTNDRjgxMTg0MDM3NzEw
MEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlBNTkzQ0Y4NjE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVj
dG9yQWdlbnRSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTkzQ0Y4NDE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdp
c3RyeS5jcHAgKi87IH07CisJCUE1OTNDRjg3MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JB
Z2VudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTkzQ0Y4NTE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1OTQ1
NThGMTgyNDVFRkQwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OTQ1NThFMTgyNDVF
REUwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCAqLzsgfTsKIAkJQTU5
NDU1OTIxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTk0NTU5MDE4MjQ3
NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcCAqLzsgfTsKIAkJQTU5
NDU1OTMxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5NDU1OTExODI0NzQ0
NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oICovOyB9OwpAQCAtMjIxNyw2
ICsyMjI4LDE3IEBACiAJCUExNzEyQjNBMTFDN0IyMTIwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBDYWNoZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNzEyQjNFMTFDN0IyMjgwMDdBNTMxNSAv
KiBSZWdFeHBDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBD
YWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTcxMkI0MDExQzdCMjM1MDA3
QTUzMTUgLyogUmVnRXhwS2V5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
Z0V4cEtleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTRDRjJGMjE4NEVBQjI0
MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2NyaXB0VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
NTRDRjJGMzE4NEVBQjI0MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTU0Q0YyRjcxODRFQUVEQTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRPYmplY3QuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBNTRDRjJGODE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0
T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdE9iamVjdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTkzQ0Y3QTE4NDAzNjAzMDBCRkNFMjcg
LyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwOyBwYXRoID0gaW5z
cGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTU5M0NGN0IxODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmg7IHBhdGggPSBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU5M0NGN0UxODQwMzYyQzAw
QkZDRTI3IC8qIEluc3BlY3RvckFnZW50QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBJbnNwZWN0b3JBZ2VudEJhc2UuaDsgcGF0aCA9IGluc3BlY3Rvci9JbnNwZWN0b3JB
Z2VudEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU5M0NGODAxODQwMzc3
MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBJbnNwZWN0b3JWYWx1ZXMuY3BwOyBwYXRoID0gaW5zcGVjdG9yL0luc3Bl
Y3RvclZhbHVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTNDRjgxMTg0
MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gSW5zcGVjdG9yVmFsdWVzLmg7IHBhdGggPSBpbnNwZWN0b3IvSW5zcGVjdG9y
VmFsdWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTNDRjg0MTg0MDM4Q0Ew
MEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwOyBwYXRoID0gaW5z
cGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBNTkzQ0Y4NTE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3Ry
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJbnNwZWN0b3JBZ2VudFJlZ2lz
dHJ5Lmg7IHBhdGggPSBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNTk0NTU4RTE4MjQ1RURFMDBDQzM4NDMgLyogUmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcDsgcGF0aCA9IGluc3BlY3Rvci9yZW1v
dGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE1OTQ1NTkwMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2Fi
bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNHbG9iYWxPYmpl
Y3REZWJ1Z2dhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU5NDU1OTEx
ODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3MTcsNiArMjczOSw3IEBACiAJCQkJQTdDMjI1Q0Mx
Mzk5ODFGMTAwRkYxNjYyIC8qIEtleXdvcmRMb29rdXBHZW5lcmF0b3IucHkgKi8sCiAJCQkJMTQz
MkVCRDcwQTM0Q0FENDAwNzE3QjlGIC8qIEFQSSAqLywKIAkJCQk5Njg4Q0IxMjBFRDEyQjRFMDAx
RDY0OUYgLyogYXNzZW1ibGVyICovLAorCQkJCUE1NENGMkVBMTg0RUE3MzkwMDIzN0YxOSAvKiBi
aW5kaW5ncyAqLywKIAkJCQk5NjlBMDc4RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8s
CiAJCQkJN0UzOUQ4MUQwRUMzOEVGQTAwM0FGMTFBIC8qIGJ5dGVjb21waWxlciAqLywKIAkJCQkx
QzkwNTEzRTBCQTlFODgzMDA4MUU5RDAgLyogQ29uZmlndXJhdGlvbnMgKi8sCkBAIC00MTg2LDEx
ICs0MjA5LDI5IEBACiAJCQlwYXRoID0gYnl0ZWNvZGU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwogCQl9OworCQlBNTRDRjJFQTE4NEVBNzM5MDAyMzdGMTkgLyogYmluZGluZ3MgKi8gPSB7
CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUE1NENGMkY3MTg0RUFF
REEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuY3BwICovLAorCQkJCUE1NENGMkY4MTg0RUFFREEw
MDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuaCAqLywKKwkJCQlBNTRDRjJGMjE4NEVBQjI0MDAyMzdG
MTkgLyogU2NyaXB0VmFsdWUuY3BwICovLAorCQkJCUE1NENGMkYzMTg0RUFCMjQwMDIzN0YxOSAv
KiBTY3JpcHRWYWx1ZS5oICovLAorCQkJKTsKKwkJCXBhdGggPSBiaW5kaW5nczsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUE1QkExNURGMTgyMzQwOTIwMEE4MkU2OSAvKiBp
bnNwZWN0b3IgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJ
CUE1QkExNUUwMTgyMzQwOUQwMEE4MkU2OSAvKiByZW1vdGUgKi8sCisJCQkJQTU5M0NGN0UxODQw
MzYyQzAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50QmFzZS5oICovLAorCQkJCUE1OTNDRjg0MTg0
MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcCAqLywKKwkJCQlBNTkz
Q0Y4NTE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oICovLAorCQkJ
CUE1OTNDRjdBMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5j
cHAgKi8sCisJCQkJQTU5M0NGN0IxODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmggKi8sCiAJCQkJQTU5NDU1OTQxODI0NzlFQjAwQ0MzODQzIC8qIEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbC5oICovLAorCQkJCUE1OTNDRjgwMTg0MDM3NzEwMEJGQ0UyNyAvKiBJ
bnNwZWN0b3JWYWx1ZXMuY3BwICovLAorCQkJCUE1OTNDRjgxMTg0MDM3NzEwMEJGQ0UyNyAvKiBJ
bnNwZWN0b3JWYWx1ZXMuaCAqLywKIAkJCSk7CiAJCQluYW1lID0gaW5zcGVjdG9yOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTQzMzEsNiArNDM3Miw3IEBACiAJCQkJMEYyQjY2REYx
N0I2QjVBQjAwQTdBRTNGIC8qIERhdGFWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0QyMDM0
QTBFMTcxMzVFMDAyQzdFODIgLyogRGF0ZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTM1OUNGMzBGREQ4OUFEMDAyMDYxODAgLyogRGF0ZUNvbnZlcnNpb24uaCBpbiBIZWFkZXJz
ICovLAorCQkJCUE1OTNDRjdGMTg0MDM2MkMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudEJhc2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTE2NjAyMEUxOTk3QjQwMDgwNjZERCAvKiBEYXRlSW5z
dGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QTE1NjMyMTA5NjYzNjUwMDZGQTI2MCAvKiBE
YXRlSW5zdGFuY2VDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNEMjAzNEMwRTE3MTM1RTAw
MkM3RTgyIC8qIERhdGVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtNDM2Miw2ICs0NDA0
LDcgQEAKIAkJCQkwRjgzNjRCNzE2NEIwQzExMDA1MzMyOUEgLyogREZHQnJhbmNoRGlyZWN0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUEwMDlDMDE4MzFBMjJEMDBDRjg3MTEgLyogTWFjcm9B
c3NlbWJsZXJBUk02NC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQzlEQzUxMzI4REY4MjAwMkIy
QUQ3IC8qIERGR0J5dGVDb2RlUGFyc2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTkzQ0Y4NzE4
NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYyNTZDMzYxNjI3QjBBRDAwN0YyNzgzIC8qIERGR0NhbGxBcnJheUFsbG9jYXRvclNs
b3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdCMjk0QjE0QzNDRDJGMDA3
QzNEQjEgLyogREZHQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZGQzk1ODE0
RUY5MEEyMDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtNDQ0OCw2
ICs0NDkxLDcgQEAKIAkJCQk4NkVDOUREMzEzMjhERjgyMDAyQjJBRDcgLyogREZHU3BlY3VsYXRp
dmVKSVQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5RDAwMTdBMEI4Q0MwMDc3M0FEOCAvKiBE
RkdTU0FDb252ZXJzaW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOUZCNEY1MTdGQ0I5
MTcwMENCNjdGOCAvKiBERkdTdGFja0xheW91dFBoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlB
NTkzQ0Y4MzE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjYzOTQ3ODE1RENFMzRCMDA2QTU5N0MgLyogREZHU3RydWN0dXJlQWJzdHJhY3RW
YWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3QTIxNDZCMjhDQzAwQ0YyNDQyIC8qIERG
R1RodW5rcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEzMjgxN0Q1MUY1NzAwQ0EyQzQwIC8q
IERGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtNDQ4Miw2
ICs0NTI2LDcgQEAKIAkJCQkwRkIxMDU4NjE2NzU0ODEyMDBGOEFCNkUgLyogRXhpdEtpbmQuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMEI4M0FCMTRCQ0Y1QkIwMDg4NUI0RiAvKiBFeHByZXNzaW9u
UmFuZ2VJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzODE3QURCNUYzMDA1QUIxNzQg
LyogRmxvYXQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTRDRjJGNjE4NEVBQjI0MDAy
MzdGMTkgLyogU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjM5MTdBREI1
RjMwMDVBQjE3NCAvKiBGbG9hdDY0QXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTQz
MTdFQTlGNTkwMEFCQjIxNyAvKiBGUFJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZDOTlE
NTE4NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmggaW4g
SGVhZGVycyAqLywKQEAgLTQ4MjYsNiArNDg3MSw3IEBACiAJCQkJMEYwQ0Q0QzIxNUYxQTYwNzAw
MzJGMUMwIC8qIFB1dERpcmVjdEluZGV4TW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5RkM4
QzUxNEUxQjYwNDAwRDUyQUUwIC8qIFB1dEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0N0I4
NDYzMEU2REU2QjEwMDQ3NzVBNCAvKiBQdXRQcm9wZXJ0eVNsb3QuaCBpbiBIZWFkZXJzICovLAor
CQkJCUE1OTNDRjdEMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNjBBQzIxNjc0MEY4MzAwMDI5Nzc5IC8qIFJlZHVj
ZVdoaXRlc3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDVBMEUxNkY1Q0QwMEIzNDQ2
MCAvKiBSZWdFeHAuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNzEyQjNGMTFDN0IyMjgwMDdBNTMx
NSAvKiBSZWdFeHBDYWNoZS5oIGluIEhlYWRlcnMgKi8sCkBAIC00ODY3LDYgKzQ5MTMsNyBAQAog
CQkJCTBGRDgyRTU0MTQxREFFRUUwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTdDMUVBRjIxNzk4N0FCNjAwMjk5REIyIC8qIFN0YWNrVmlzaXRvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMTRERjA0REExNkIzOTk2RDAwMTZBNTEzIC8qIFN0YXRpY1Byb3Bl
cnR5QW5hbHlzaXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1NENGMkZBMTg0RUFFREEwMDIzN0Yx
OSAvKiBTY3JpcHRPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0Q0E5NThCMTZBQjUwREUw
MDkzOEEwNiAvKiBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NzMwQjYxMjEyNTAwNjhGMDA5RDI1QjEgLyogU3RyaWN0RXZhbEFjdGl2YXRpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMThDNDY2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBTdHJpbmdDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8sCkBAIC01NDQ3LDYgKzU0OTQsNyBAQAogCQkJCTBGRjQyNzY0MTU5
MUExQ0MwMDRDQjlGRiAvKiBERkdEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEZEODFBRDIxNTRGQjRFRTAwOTgzRTcyIC8qIERGR0RvbWluYXRvcnMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEZEM0M4MjYxNDExNUQ0MDAwRkQ4MUNCIC8qIERGR0RyaXZlci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlBNTkzQ0Y4MjE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjBGMTlFMTZCNzJBMEIwMDVERjk1QiAvKiBERkdF
ZGdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3NERFRjkzMTgyRDk5MTQwMDUyMkMyMiAvKiBN
YXBJdGVyYXRvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkJDMEFFNzE0OTZD
N0M0MDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01NTIx
LDYgKzU1NjksNyBAQAogCQkJCTBGNTZBMUQ1MTUwMDFDRjQwMDI5OTJCMSAvKiBFeGVjdXRpb25D
b3VudGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1OTQ1NTkyMTgyNDc0NDcwMENDMzg0MyAv
KiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCMTA1
ODUxNjc1NDgwRjAwRjhBQjZFIC8qIEV4aXRLaW5kLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1
NENGMkY1MTg0RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRkVBMEExQzE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGRUEwQTFFMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEwQTA5MTcwNTEzREIwMEJC
NzIyQyAvKiBGVExDYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01NTUwLDYgKzU1
OTksNyBAQAogCQkJCTBGOUQzMzlBMTgwM0FEQjcwMDczQzJCQyAvKiBGVExTdGFja01hcHMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMTYxNzA2QkI5MDAwQkI3MjJDIC8qIEZUTFN0YXRl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkUxMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExU
aHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTU5M0NGN0MxODQwMzYwMzAwQkZDRTI3IC8q
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1
QkUzMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExWYWx1ZUZvcm1hdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxNDdGMzlDQjEwN0VDMzc2MDA0MjdBNDggLyogRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkYwRjE5RjE2QjcyQTE3MDA1REY5NUIgLyogRnVuY3Rpb25F
eGVjdXRhYmxlRHVtcC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU3MDAsNiArNTc1MCw3IEBACiAJ
CQkJODZFQkYyRkYxNTYwRjA2QTAwOEU5MjIyIC8qIE5hbWVDb25zdHJ1Y3Rvci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk4NkVCRjMwMTE1NjBGMDZBMDA4RTkyMjIgLyogTmFtZUluc3RhbmNlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUJGMzAzMTU2MEYwNkEwMDhFOTIyMiAvKiBOYW1lUHJv
dG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1NENGMkY5MTg0RUFFREEwMDIzN0YxOSAv
KiBTY3JpcHRPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0NjlERTAxMDdFQzdFNzAw
NjUwNDQ2IC8qIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MTQ0NjlERTExMDdFQzdFNzAwNjUwNDQ2IC8qIE5hdGl2ZUVycm9yUHJvdG90eXBlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTE0OEYyMUI3MTA3RUM1NDcwMDQyRUMyQyAvKiBOb2Rlcy5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTU4MTgsNiArNTg2OSw3IEBACiAJCQkJODY3MDRCODQxMkRCQTMzNzAw
QTlGRTdCIC8qIFlhcnJJbnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI4
NjEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4Njcw
NEI4OTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQTU5M0NGODYxODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJODY3MDRCNDIxMkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50
YXhDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1dvcmtlckNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGlu
Z3MvU2NyaXB0T2JqZWN0LmNwcApzaW1pbGFyaXR5IGluZGV4IDcxJQpjb3B5IGZyb20gU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckNvbnNvbGVBZ2VudC5jcHAKY29weSB0byBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0T2JqZWN0LmNwcAppbmRleCAxNWJiN2E4Li5j
Y2Y3YWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyQ29uc29s
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0T2Jq
ZWN0LmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKQEAgLTI5LDMyICszMCwyMiBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJTY3JpcHRPYmplY3QuaCIKIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCit1c2luZyBuYW1l
c3BhY2UgSlNDOwogCi0jaW5jbHVkZSAiV29ya2VyQ29uc29sZUFnZW50LmgiCituYW1lc3BhY2Ug
RGVwcmVjYXRlZCB7CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotV29ya2VyQ29uc29sZUFnZW50
OjpXb3JrZXJDb25zb2xlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50cywgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAg
OiBJbnNwZWN0b3JDb25zb2xlQWdlbnQoaW5zdHJ1bWVudGluZ0FnZW50cywgaW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKQotewotfQotCi1Xb3JrZXJDb25zb2xlQWdlbnQ6On5Xb3JrZXJDb25zb2xlQWdl
bnQoKQorU2NyaXB0T2JqZWN0OjpTY3JpcHRPYmplY3QoRXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwg
SlNPYmplY3QqIG9iamVjdCkKKyAgICA6IFNjcmlwdFZhbHVlKHNjcmlwdFN0YXRlLT52bSgpLCBv
YmplY3QpCisgICAgLCBtX3NjcmlwdFN0YXRlKHNjcmlwdFN0YXRlKQogewogfQogCi12b2lkIFdv
cmtlckNvbnNvbGVBZ2VudDo6YWRkSW5zcGVjdGVkTm9kZShFcnJvclN0cmluZyogZXJyb3IsIGlu
dCkKK1NjcmlwdE9iamVjdDo6U2NyaXB0T2JqZWN0KEV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNv
bnN0IFNjcmlwdFZhbHVlJiBzY3JpcHRWYWx1ZSkKKyAgICA6IFNjcmlwdFZhbHVlKHNjcmlwdFN0
YXRlLT52bSgpLCBzY3JpcHRWYWx1ZS5qc1ZhbHVlKCkpCisgICAgLCBtX3NjcmlwdFN0YXRlKHNj
cmlwdFN0YXRlKQogewotICAgICplcnJvciA9ICJhZGRJbnNwZWN0ZWROb2RlIGlzIG5vdCBzdXBw
b3J0ZWQgZm9yIHdvcmtlcnMiOwogfQogCi1ib29sIFdvcmtlckNvbnNvbGVBZ2VudDo6ZGV2ZWxv
cGVyRXh0cmFzRW5hYmxlZCgpCi17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCit9IC8vIG5hbWVzcGFj
ZSBEZXByZWNhdGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQmFzZUFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0T2Jq
ZWN0LmgKc2ltaWxhcml0eSBpbmRleCA2NCUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckJhc2VBZ2VudC5oCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYmluZGluZ3MvU2NyaXB0T2JqZWN0LmgKaW5kZXggOGI5MDkzOC4uOGY3YjBkYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhc2VBZ2VudC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRPYmplY3QuaApAQCAtMSw1ICsx
LDYgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI4LDM2ICsyOSwy
NyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEluc3BlY3RvckJhc2VBZ2VudF9o
Ci0jZGVmaW5lIEluc3BlY3RvckJhc2VBZ2VudF9oCisjaWZuZGVmIFNjcmlwdE9iamVjdF9oCisj
ZGVmaW5lIFNjcmlwdE9iamVjdF9oCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcnMuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNsdWRlICJKU09i
amVjdC5oIgorI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsK
K25hbWVzcGFjZSBEZXByZWNhdGVkIHsKIAotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
OwotY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKLQotY2xhc3MgSW5zcGVjdG9yQmFzZUFnZW50
IHsKK2NsYXNzIFNjcmlwdE9iamVjdCA6IHB1YmxpYyBTY3JpcHRWYWx1ZSB7CiBwdWJsaWM6Ci0g
ICAgdmlydHVhbCB+SW5zcGVjdG9yQmFzZUFnZW50KCkgeyB9CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgU2NyaXB0T2JqZWN0KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCopOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIFNjcmlwdE9iamVjdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFNjcmlw
dFZhbHVlJik7CisgICAgU2NyaXB0T2JqZWN0KCkgOiBtX3NjcmlwdFN0YXRlKG51bGxwdHIpIHsg
fQogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGRpc2NhcmRBZ2VudCgpIHsgfQorICAgIEpTQzo6SlNPYmplY3QqIGpzT2Jq
ZWN0KCkgY29uc3QgeyByZXR1cm4gYXNPYmplY3QoanNWYWx1ZSgpKTsgfQorICAgIEpTQzo6RXhl
Y1N0YXRlKiBzY3JpcHRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0U3RhdGU7IH0KIAog
cHJvdGVjdGVkOgotICAgIEluc3BlY3RvckJhc2VBZ2VudChjb25zdCBTdHJpbmcmIG5hbWUsIElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCi0gICAgICAgIDogbV9pbnN0
cnVtZW50aW5nQWdlbnRzKGluc3RydW1lbnRpbmdBZ2VudHMpCi0gICAgICAgICwgbV9uYW1lKG5h
bWUpCi0gICAgewotICAgIH0KLQotICAgIEluc3RydW1lbnRpbmdBZ2VudHMqIG1faW5zdHJ1bWVu
dGluZ0FnZW50czsKLSAgICBTdHJpbmcgbV9uYW1lOworICAgIEpTQzo6RXhlY1N0YXRlKiBtX3Nj
cmlwdFN0YXRlOwogfTsKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2Ug
RGVwcmVjYXRlZAogCi0jZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yQmFzZUFnZW50X2gpCisj
ZW5kaWYgLy8gU2NyaXB0T2JqZWN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9T
Y3JpcHRWYWx1ZS5jcHAKc2ltaWxhcml0eSBpbmRleCA3MiUKcmVuYW1lIGZyb20gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCmluZGV4IDZkOWZiMWQuLjVjNjBiMWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIw
MDgsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChj
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CkBAIC03LDEzICs3LDEzIEBACiAgKiBhcmUgbWV0OgogICoKICAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4gCisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgogICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uIAorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgKiAzLiAgTmVpdGhlciB0
aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgogICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICogICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KICAqCiAgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQogICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRApAQCAtMzAsMjEgKzMwLDIwIEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKIAorI2luY2x1ZGUg
IkFQSUNhc3QuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKLSNpbmNsdWRlICJKU0RP
TUJpbmRpbmcuaCIKLSNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLQotI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U1ZhbHVlUmVmLmg+Ci0KLSNpbmNsdWRlIDxoZWFwL1N0cm9uZy5oPgotI2luY2x1ZGUgPHJ1bnRp
bWUvSlNMb2NrLmg+CisjaW5jbHVkZSAiSlNMb2NrLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7
Cit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCituYW1lc3BhY2UgRGVwcmVjYXRlZCB7CiAK
LW5hbWVzcGFjZSBXZWJDb3JlIHsKK1NjcmlwdFZhbHVlOjp+U2NyaXB0VmFsdWUoKQoreworfQog
Ci1ib29sIFNjcmlwdFZhbHVlOjpnZXRTdHJpbmcoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRl
LCBTdHJpbmcmIHJlc3VsdCkgY29uc3QKK2Jvb2wgU2NyaXB0VmFsdWU6OmdldFN0cmluZyhFeGVj
U3RhdGUqIHNjcmlwdFN0YXRlLCBTdHJpbmcmIHJlc3VsdCkgY29uc3QKIHsKICAgICBpZiAoIW1f
dmFsdWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTU0LDcgKzUzLDcgQEAgYm9vbCBTY3Jp
cHRWYWx1ZTo6Z2V0U3RyaW5nKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgU3RyaW5nJiBy
ZXN1bHQpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVN0cmluZyBTY3JpcHRWYWx1ZTo6
dG9TdHJpbmcoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlKSBjb25zdAorU3RyaW5nIFNjcmlw
dFZhbHVlOjp0b1N0cmluZyhFeGVjU3RhdGUqIHNjcmlwdFN0YXRlKSBjb25zdAogewogICAgIFN0
cmluZyByZXN1bHQgPSBtX3ZhbHVlLmdldCgpLnRvU3RyaW5nKHNjcmlwdFN0YXRlKS0+dmFsdWUo
c2NyaXB0U3RhdGUpOwogICAgIC8vIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSBhbiBleGNlcHRpb24g
aXMgdGhyb3duIGFzIHBhcnQgb2YgaW52b2tpbmcgdG9TdHJpbmcgb24gdGhlIG9iamVjdC4KQEAg
LTYzLDEyICs2MiwxMSBAQCBTdHJpbmcgU2NyaXB0VmFsdWU6OnRvU3RyaW5nKEpTQzo6RXhlY1N0
YXRlKiBzY3JpcHRTdGF0ZSkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1ib29sIFNj
cmlwdFZhbHVlOjppc0VxdWFsKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2Ny
aXB0VmFsdWUmIGFub3RoZXJWYWx1ZSkgY29uc3QKK2Jvb2wgU2NyaXB0VmFsdWU6OmlzRXF1YWwo
RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0VmFsdWUmIGFub3RoZXJWYWx1ZSkg
Y29uc3QKIHsKICAgICBpZiAoaGFzTm9WYWx1ZSgpKQogICAgICAgICByZXR1cm4gYW5vdGhlclZh
bHVlLmhhc05vVmFsdWUoKTsKLQotICAgIHJldHVybiBKU1ZhbHVlSXNFcXVhbCh0b1JlZihzY3Jp
cHRTdGF0ZSksIHRvUmVmKHNjcmlwdFN0YXRlLCBqc1ZhbHVlKCkpLCB0b1JlZihzY3JpcHRTdGF0
ZSwgYW5vdGhlclZhbHVlLmpzVmFsdWUoKSksIDApOworICAgIHJldHVybiBKU1ZhbHVlSXNFcXVh
bCh0b1JlZihzY3JpcHRTdGF0ZSksIHRvUmVmKHNjcmlwdFN0YXRlLCBqc1ZhbHVlKCkpLCB0b1Jl
ZihzY3JpcHRTdGF0ZSwgYW5vdGhlclZhbHVlLmpzVmFsdWUoKSksIG51bGxwdHIpOwogfQogCiBi
b29sIFNjcmlwdFZhbHVlOjppc051bGwoKSBjb25zdApAQCAtOTgsMzMgKzk2LDE3IEBAIGJvb2wg
U2NyaXB0VmFsdWU6OmlzRnVuY3Rpb24oKSBjb25zdAogICAgIHJldHVybiBnZXRDYWxsRGF0YSht
X3ZhbHVlLmdldCgpLCBjYWxsRGF0YSkgIT0gQ2FsbFR5cGVOb25lOwogfQogCi1QYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2NyaXB0VmFsdWU6OnNlcmlhbGl6ZShKU0M6OkV4ZWNT
dGF0ZSogc2NyaXB0U3RhdGUsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25z
KQotewotICAgIHJldHVybiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzY3JpcHRTdGF0
ZSwganNWYWx1ZSgpLCAwLCAwLCB0aHJvd0V4Y2VwdGlvbnMpOwotfQotCi1QYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2NyaXB0VmFsdWU6OnNlcmlhbGl6ZShKU0M6OkV4ZWNTdGF0
ZSogc2NyaXB0U3RhdGUsIE1lc3NhZ2VQb3J0QXJyYXkqIG1lc3NhZ2VQb3J0cywgQXJyYXlCdWZm
ZXJBcnJheSogYXJyYXlCdWZmZXJzLCBib29sJiBkaWRUaHJvdykKLXsKLSAgICBSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmNyZWF0ZShzY3JpcHRTdGF0ZSwganNWYWx1ZSgpLCBtZXNzYWdlUG9ydHMsIGFycmF5QnVm
ZmVycyk7Ci0gICAgZGlkVGhyb3cgPSBzY3JpcHRTdGF0ZS0+aGFkRXhjZXB0aW9uKCk7Ci0gICAg
cmV0dXJuIHNlcmlhbGl6ZWRWYWx1ZS5yZWxlYXNlKCk7Ci19Ci0KLVNjcmlwdFZhbHVlIFNjcmlw
dFZhbHVlOjpkZXNlcmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSogdmFsdWUsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRp
b25zKQotewotICAgIHJldHVybiBTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZS0+dm0oKSwgdmFsdWUt
PmRlc2VyaWFsaXplKHNjcmlwdFN0YXRlLCBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLCAwLCB0aHJvd0V4Y2VwdGlvbnMpKTsKLX0KLQogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi1z
dGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4ganNUb0luc3BlY3RvclZhbHVlKEpTQzo6
RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgSlNWYWx1ZSB2YWx1ZSwgaW50IG1heERlcHRoKQorc3Rh
dGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGpzVG9JbnNwZWN0b3JWYWx1ZShFeGVjU3Rh
dGUqIHNjcmlwdFN0YXRlLCBKU1ZhbHVlIHZhbHVlLCBpbnQgbWF4RGVwdGgpCiB7CiAgICAgaWYg
KCF2YWx1ZSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIGlmICghbWF4RGVwdGgp
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIG1heERl
cHRoLS07CiAKICAgICBpZiAodmFsdWUuaXNOdWxsKCkgfHwgdmFsdWUuaXNVbmRlZmluZWQoKSkK
QEAgLTEzNyw2ICsxMTksNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4ganNU
b0luc3BlY3RvclZhbHVlKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZQogICAgICAgICBTdHJp
bmcgcyA9IHZhbHVlLmdldFN0cmluZyhzY3JpcHRTdGF0ZSk7CiAgICAgICAgIHJldHVybiBJbnNw
ZWN0b3JTdHJpbmc6OmNyZWF0ZShTdHJpbmcocy5jaGFyYWN0ZXJzKCksIHMubGVuZ3RoKCkpKTsK
ICAgICB9CisKICAgICBpZiAodmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICBpZiAoaXNKU0Fy
cmF5KHZhbHVlKSkgewogICAgICAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBpbnNwZWN0
b3JBcnJheSA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKQEAgLTE0Niw3ICsxMjksNyBAQCBz
dGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4ganNUb0luc3BlY3RvclZhbHVlKEpTQzo6
RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZQogICAgICAgICAgICAgICAgIEpTVmFsdWUgZWxlbWVudCA9
IGFycmF5LT5nZXRJbmRleChzY3JpcHRTdGF0ZSwgaSk7CiAgICAgICAgICAgICAgICAgUmVmUHRy
PEluc3BlY3RvclZhbHVlPiBlbGVtZW50VmFsdWUgPSBqc1RvSW5zcGVjdG9yVmFsdWUoc2NyaXB0
U3RhdGUsIGVsZW1lbnQsIG1heERlcHRoKTsKICAgICAgICAgICAgICAgICBpZiAoIWVsZW1lbnRW
YWx1ZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgICAgIGluc3BlY3RvckFycmF5LT5wdXNoVmFs
dWUoZWxlbWVudFZhbHVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBpbnNw
ZWN0b3JBcnJheTsKQEAgLTE2MCwyMCArMTQzLDIxIEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiBqc1RvSW5zcGVjdG9yVmFsdWUoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRl
CiAgICAgICAgICAgICBKU1ZhbHVlIHByb3BlcnR5VmFsdWUgPSBvYmplY3QtPmdldChzY3JpcHRT
dGF0ZSwgbmFtZSk7CiAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGluc3BlY3Rv
clZhbHVlID0ganNUb0luc3BlY3RvclZhbHVlKHNjcmlwdFN0YXRlLCBwcm9wZXJ0eVZhbHVlLCBt
YXhEZXB0aCk7CiAgICAgICAgICAgICBpZiAoIWluc3BlY3RvclZhbHVlKQotICAgICAgICAgICAg
ICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAg
ICAgaW5zcGVjdG9yT2JqZWN0LT5zZXRWYWx1ZShTdHJpbmcobmFtZS5jaGFyYWN0ZXJzKCksIG5h
bWUubGVuZ3RoKCkpLCBpbnNwZWN0b3JWYWx1ZSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
IGluc3BlY3Rvck9iamVjdDsKICAgICB9CisKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0
b3JWYWx1ZT4gU2NyaXB0VmFsdWU6OnRvSW5zcGVjdG9yVmFsdWUoSlNDOjpFeGVjU3RhdGUqIHNj
cmlwdFN0YXRlKSBjb25zdAorUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gU2NyaXB0VmFsdWU6
OnRvSW5zcGVjdG9yVmFsdWUoRXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSkgY29uc3QKIHsKLSAgICBK
U0M6OkpTTG9ja0hvbGRlciBob2xkZXIoc2NyaXB0U3RhdGUpOworICAgIEpTTG9ja0hvbGRlciBo
b2xkZXIoc2NyaXB0U3RhdGUpOwogICAgIHJldHVybiBqc1RvSW5zcGVjdG9yVmFsdWUoc2NyaXB0
U3RhdGUsIG1fdmFsdWUuZ2V0KCksIEluc3BlY3RvclZhbHVlOjptYXhEZXB0aCk7CiB9CiAjZW5k
aWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBu
YW1lc3BhY2UgRGVwcmVjYXRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRW
YWx1ZS5oCnNpbWlsYXJpdHkgaW5kZXggNzYlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFZhbHVlLmgKcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
aW5kaW5ncy9TY3JpcHRWYWx1ZS5oCmluZGV4IDAxMjEwZjUuLmQ1ZmFkZTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmgKQEAgLTEsMTAgKzEsMTEgQEAKIC8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChjKSAyMDA4LCAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiAKKyAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKICAqIG1ldDoKLSAq
IAorICoKICAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCkBAIC0xNCw3ICsxNSw3IEBA
CiAgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCiAgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQogICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqIAorICoKICAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKICAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCiAgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKQEAgLTMxLDI1ICszMiwyNCBAQAogI2lmbmRlZiBTY3Jp
cHRWYWx1ZV9oCiAjZGVmaW5lIFNjcmlwdFZhbHVlX2gKIAotI2luY2x1ZGUgIlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCi0jaW5jbHVkZSA8aGVhcC9T
dHJvbmcuaD4KLSNpbmNsdWRlIDxoZWFwL1N0cm9uZ0lubGluZXMuaD4KLSNpbmNsdWRlIDxydW50
aW1lL0pTQ0pTVmFsdWUuaD4KLSNpbmNsdWRlIDxydW50aW1lL09wZXJhdGlvbnMuaD4KKyNpbmNs
dWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIlN0
cm9uZy5oIgorI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KK25hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3MgSW5zcGVjdG9yVmFsdWU7Ci1j
bGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7Cit9CisKK25hbWVzcGFjZSBEZXByZWNhdGVkIHsK
IAotY2xhc3MgU2NyaXB0VmFsdWUgeworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgU2NyaXB0VmFs
dWUgewogcHVibGljOgogICAgIFNjcmlwdFZhbHVlKCkgeyB9Ci0gICAgU2NyaXB0VmFsdWUoSlND
OjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSB2YWx1ZSkgOiBtX3ZhbHVlKHZtLCB2YWx1ZSkge30KLSAg
ICB2aXJ0dWFsIH5TY3JpcHRWYWx1ZSgpIHt9CisgICAgU2NyaXB0VmFsdWUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNWYWx1ZSB2YWx1ZSkgOiBtX3ZhbHVlKHZtLCB2YWx1ZSkgeyB9CisgICAgdmlydHVh
bCB+U2NyaXB0VmFsdWUoKTsKIAogICAgIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV92YWx1ZS5nZXQoKTsgfQogICAgIGJvb2wgZ2V0U3RyaW5nKEpTQzo6RXhlY1N0YXRl
KiwgU3RyaW5nJiByZXN1bHQpIGNvbnN0OwpAQCAtNjUsMTggKzY1LDE0IEBAIHB1YmxpYzoKIAog
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRWYWx1ZSYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuIG1fdmFsdWUgPT0gb3RoZXIubV92YWx1ZTsgfQogCi0gICAgUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSosIFNlcmlhbGl6YXRpb25F
cnJvck1vZGUgPSBUaHJvd2luZyk7Ci0gICAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IHNlcmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSosIE1lc3NhZ2VQb3J0QXJyYXkqLCBBcnJheUJ1
ZmZlckFycmF5KiwgYm9vbCYpOwotICAgIHN0YXRpYyBTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZShK
U0M6OkV4ZWNTdGF0ZSosIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIFNlcmlhbGl6YXRpb25FcnJv
ck1vZGUgPSBUaHJvd2luZyk7Ci0KICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yVmFsdWU+IHRvSW5zcGVjdG9yVmFsdWUoSlNDOjpFeGVjU3RhdGUqKSBjb25z
dDsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHRvSW5zcGVjdG9y
VmFsdWUoSlNDOjpFeGVjU3RhdGUqKSBjb25zdDsKICNlbmRpZgogCiBwcml2YXRlOgogICAgIEpT
Qzo6U3Ryb25nPEpTQzo6VW5rbm93bj4gbV92YWx1ZTsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKK30gLy8gbmFtZXNwYWNlIERlcHJlY2F0ZWQKIAogI2VuZGlmIC8vIFNjcmlwdFZhbHVl
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJl
Z2lzdHJ5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50
QmFzZS5oCnNpbWlsYXJpdHkgaW5kZXggNjglCmNvcHkgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oCmNvcHkgdG8gU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaAppbmRleCA0ZmQwMzUzLi4yMGFkNzFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdp
c3RyeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdl
bnRCYXNlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI0LDI5ICsyNCwz
MyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEluc3BlY3RvckFnZW50UmVnaXN0
cnlfaAotI2RlZmluZSBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5X2gKKyNpZm5kZWYgSW5zcGVjdG9y
QWdlbnRCYXNlX2gKKyNkZWZpbmUgSW5zcGVjdG9yQWdlbnRCYXNlX2gKIAotI2luY2x1ZGUgIklu
c3BlY3RvckJhc2VBZ2VudC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1l
c3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogY2xhc3MgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI7CitjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CiAKLWNs
YXNzIEluc3BlY3RvckFnZW50UmVnaXN0cnkgeworY2xhc3MgSW5zcGVjdG9yQWdlbnRCYXNlIHsK
IHB1YmxpYzoKLSAgICB2b2lkIGFwcGVuZChQYXNzT3duUHRyPEluc3BlY3RvckJhc2VBZ2VudD4p
OworICAgIHZpcnR1YWwgfkluc3BlY3RvckFnZW50QmFzZSgpIHsgfQogCi0gICAgdm9pZCBkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIqKTsKLSAgICB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRC
YWNrZW5kKCk7Ci0gICAgdm9pZCBkaXNjYXJkQWdlbnRzKCk7CisgICAgdmlydHVhbCB2b2lkIGRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpc2NhcmRBZ2Vu
dCgpIHsgfQogCi1wcml2YXRlOgotICAgIFZlY3RvcjxPd25QdHI8SW5zcGVjdG9yQmFzZUFnZW50
Pj4gbV9hZ2VudHM7Ci19OworcHJvdGVjdGVkOgorICAgIEluc3BlY3RvckFnZW50QmFzZShjb25z
dCBTdHJpbmcmIG5hbWUpCisgICAgICAgIDogbV9uYW1lKG5hbWUpCisgICAgeworICAgIH0KIAot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorICAgIFN0cmluZyBtX25hbWU7Cit9OworICAgIAorfSAv
LyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKLSNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JBZ2Vu
dFJlZ2lzdHJ5X2gpCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yQWdlbnRCYXNlX2gpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3Ry
eS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVn
aXN0cnkuY3BwCnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcApyZW5hbWUgdG8gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcAppbmRleCAw
OTlkMWEzLi40NmU5MjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcApAQCAtMjUsMTQgKzI1LDEzIEBACiAgKi8K
IAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluc3BlY3RvckFnZW50UmVnaXN0cnku
aCIKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudFJl
Z2lzdHJ5LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJbnNwZWN0b3Igewog
Ci12b2lkIEluc3BlY3RvckFnZW50UmVnaXN0cnk6OmFwcGVuZChQYXNzT3duUHRyPEluc3BlY3Rv
ckJhc2VBZ2VudD4gYWdlbnQpCit2b2lkIEluc3BlY3RvckFnZW50UmVnaXN0cnk6OmFwcGVuZChQ
YXNzT3duUHRyPEluc3BlY3RvckFnZW50QmFzZT4gYWdlbnQpCiB7CiAgICAgbV9hZ2VudHMuYXBw
ZW5kKGFnZW50KTsKIH0KQEAgLTU1LDYgKzU0LDYgQEAgdm9pZCBJbnNwZWN0b3JBZ2VudFJlZ2lz
dHJ5OjpkaXNjYXJkQWdlbnRzKCkKICAgICAgICAgbV9hZ2VudHNbaV0tPmRpc2NhcmRBZ2VudCgp
OwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IK
IAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgKc2ltaWxhcml0eSBpbmRleCA4
NyUKY29weSBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lz
dHJ5LmgKY29weSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFn
ZW50UmVnaXN0cnkuaAppbmRleCA0ZmQwMzUzLi5jYjY1NzI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oCkBAIC0yNywy
NiArMjcsMjcgQEAKICNpZm5kZWYgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeV9oCiAjZGVmaW5lIElu
c3BlY3RvckFnZW50UmVnaXN0cnlfaAogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50Lmgi
CisjaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25h
bWVzcGFjZSBJbnNwZWN0b3IgewogCiBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsK
K2NsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKIAotY2xhc3MgSW5zcGVjdG9yQWdlbnRS
ZWdpc3RyeSB7CitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5
IHsKIHB1YmxpYzoKLSAgICB2b2lkIGFwcGVuZChQYXNzT3duUHRyPEluc3BlY3RvckJhc2VBZ2Vu
dD4pOworICAgIHZvaWQgYXBwZW5kKFBhc3NPd25QdHI8SW5zcGVjdG9yQWdlbnRCYXNlPik7CiAK
ICAgICB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopOwogICAgIHZvaWQgd2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoKTsKICAgICB2b2lkIGRpc2NhcmRBZ2VudHMoKTsKIAogcHJp
dmF0ZToKLSAgICBWZWN0b3I8T3duUHRyPEluc3BlY3RvckJhc2VBZ2VudD4+IG1fYWdlbnRzOwor
ICAgIFZlY3RvcjxPd25QdHI8SW5zcGVjdG9yQWdlbnRCYXNlPj4gbV9hZ2VudHM7CiB9OwogCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlm
IC8vICFkZWZpbmVkKEluc3BlY3RvckFnZW50UmVnaXN0cnlfaCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNw
cApzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcAppbmRleCBi
ZmE0YzRiLi5jMjY2ODUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCkBAIC0yOSwxMiArMjksMTIg
QEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JGb3J3YXJk
aW5nLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKIAogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFz
ZTo6Q2FsbGJhY2tCYXNlKFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IGJh
Y2tlbmREaXNwYXRjaGVyLCBpbnQgaWQpCiAgICAgOiBtX2JhY2tlbmREaXNwYXRjaGVyKGJhY2tl
bmREaXNwYXRjaGVyKQpAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI6OnJlcG9ydFByb3RvY29sRXJyb3IoY29uc3QgbG9uZyogY29uc3QgY2FsbElkLCBD
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFJldHVyblZhbHVlVHlwZSwgdHlwZW5hbWUgVmFsdWVU
eXBlLCB0eXBlbmFtZSBEZWZhdWx0VmFsdWVUeXBlPgotUmV0dXJuVmFsdWVUeXBlIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyOjpnZXRQcm9wZXJ0eVZhbHVlKEluc3BlY3Rvck9iamVjdCogb2Jq
ZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3RvckFycmF5
KiBwcm90b2NvbEVycm9ycywgRGVmYXVsdFZhbHVlVHlwZSBkZWZhdWx0VmFsdWUsIGJvb2wgKCph
c01ldGhvZCkoSW5zcGVjdG9yVmFsdWUqLCBWYWx1ZVR5cGUqKSwgY29uc3QgY2hhciogdHlwZU5h
bWUpCitzdGF0aWMgUmV0dXJuVmFsdWVUeXBlIGdldFByb3BlcnR5VmFsdWUoSW5zcGVjdG9yT2Jq
ZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVj
dG9yQXJyYXkqIHByb3RvY29sRXJyb3JzLCBEZWZhdWx0VmFsdWVUeXBlIGRlZmF1bHRWYWx1ZSwg
Ym9vbCAoKmFzTWV0aG9kKShJbnNwZWN0b3JWYWx1ZSosIFZhbHVlVHlwZSopLCBjb25zdCBjaGFy
KiB0eXBlTmFtZSkKIHsKICAgICBBU1NFUlQocHJvdG9jb2xFcnJvcnMpOwogCkBAIC0yNTksNiAr
MjU5LDYgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI6OmdldEFycmF5KEluc3BlY3Rvck9iamVjdCoKICAgICByZXR1cm4gZ2V0UHJvcGVydHlW
YWx1ZTxQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiwgUmVmUHRyPEluc3BlY3RvckFycmF5Piwg
SW5zcGVjdG9yQXJyYXkqPihvYmplY3QsIG5hbWUsIHZhbHVlRm91bmQsIHByb3RvY29sRXJyb3Jz
LCBudWxscHRyLCBBc01ldGhvZEJyaWRnZXM6OmFzQXJyYXksICJBcnJheSIpOwogfQogCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8v
IEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaApzaW1pbGFyaXR5IGluZGV4IDg3JQpy
ZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIuaApyZW5hbWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlci5oCmluZGV4IGE2ZTRkMmYuLjUwZmU2M2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIuaApAQCAtMjcsMTIgKzI3LDEyIEBACiAjaWZuZGVmIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyX2gKICNkZWZpbmUgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJfaAogCi0jaW5jbHVk
ZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIK
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsK
K25hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKQEAgLTQ3LDE1ICs0NywxMyBAQCBw
cm90ZWN0ZWQ6CiAgICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tl
bmREaXNwYXRjaGVyOwogfTsKIAotY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgOiBw
dWJsaWMgUmVmQ291bnRlZDxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4geworY2xhc3MgSlNf
RVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgOiBwdWJsaWMgUmVmQ291
bnRlZDxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gewogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBjcmVhdGUoSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKik7Ci0gICAgdmlydHVhbCB+SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIo
KSB7IH0KIAotICAgIGNsYXNzIENhbGxiYWNrQmFzZTogcHVibGljIFJlZkNvdW50ZWQ8Q2FsbGJh
Y2tCYXNlPiB7CisgICAgY2xhc3MgQ2FsbGJhY2tCYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8Q2Fs
bGJhY2tCYXNlPiB7CiAgICAgcHVibGljOgogICAgICAgICBDYWxsYmFja0Jhc2UoUGFzc1JlZlB0
cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4sIGludCBpZCk7Ci0gICAgICAgIHZpcnR1YWwg
fkNhbGxiYWNrQmFzZSgpIHsgfQogCiAgICAgICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKICAg
ICAgICAgdm9pZCBzZW5kRmFpbHVyZShjb25zdCBFcnJvclN0cmluZyYpOwpAQCAtOTgsMTMgKzk2
LDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIo
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIDogbV9p
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwoaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSB7IH0KIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJldHVyblZhbHVlVHlwZSwgdHlwZW5hbWUgVmFsdWVUeXBl
LCB0eXBlbmFtZSBEZWZhdWx0VmFsdWVUeXBlPgotICAgIHN0YXRpYyBSZXR1cm5WYWx1ZVR5cGUg
Z2V0UHJvcGVydHlWYWx1ZShJbnNwZWN0b3JPYmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0b3JBcnJheSogcHJvdG9jb2xFcnJvcnMsIERl
ZmF1bHRWYWx1ZVR5cGUgZGVmYXVsdFZhbHVlLCBib29sICgqYXNNZXRob2QpKEluc3BlY3RvclZh
bHVlKiwgVmFsdWVUeXBlKiksIGNvbnN0IGNoYXIqIHR5cGVOYW1lKTsKLQogICAgIEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CiAgICAgSGFzaE1h
cDxTdHJpbmcsIEluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKj4gbV9kaXNw
YXRjaGVyczsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIElu
c3BlY3RvcgogCiAjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJf
aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3Bw
CnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JWYWx1ZXMuY3BwCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKaW5kZXggOGZjZTMyZC4uMjQxOWRlYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCkBAIC0z
NSw3ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL2R0b2EuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJbnNwZWN0
b3IgewogCiBuYW1lc3BhY2UgewogCkBAIC04MzMsNCArODMzLDQgQEAgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JCYXNpY1ZhbHVlPiBJbnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUoZG91YmxlIHZhbHVl
KQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5zcGVjdG9yQmFzaWNWYWx1ZSh2YWx1ZSkpOwog
fQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKc2ltaWxhcml0
eSBpbmRleCA5NSUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clZhbHVlcy5oCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclZhbHVlcy5oCmluZGV4IGNiYjdmNzEuLjAxMmExYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCkBAIC0zOCwxMiArMzgsMTIgQEAKICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBj
bGFzcyBJbnNwZWN0b3JBcnJheTsKIGNsYXNzIEluc3BlY3Rvck9iamVjdDsKIAotY2xhc3MgSW5z
cGVjdG9yVmFsdWUgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnNwZWN0b3JWYWx1ZT4geworY2xhc3Mg
SlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yVmFsdWUgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnNw
ZWN0b3JWYWx1ZT4gewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4RGVwdGggPSAx
MDAwOwogCkBAIC05MCw3ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgVHlwZSBtX3R5cGU7CiB9Owog
Ci1jbGFzcyBJbnNwZWN0b3JCYXNpY1ZhbHVlIDogcHVibGljIEluc3BlY3RvclZhbHVlIHsKK2Ns
YXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvckJhc2ljVmFsdWUgOiBwdWJsaWMgSW5zcGVj
dG9yVmFsdWUgewogcHVibGljOgogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFz
aWNWYWx1ZT4gY3JlYXRlKGJvb2wpOwpAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZhdGU6CiAgICAg
fTsKIH07CiAKLWNsYXNzIEluc3BlY3RvclN0cmluZyA6IHB1YmxpYyBJbnNwZWN0b3JWYWx1ZSB7
CitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JTdHJpbmcgOiBwdWJsaWMgSW5zcGVj
dG9yVmFsdWUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvclN0cmlu
Zz4gY3JlYXRlKGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rv
clN0cmluZz4gY3JlYXRlKGNvbnN0IGNoYXIqKTsKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRl
OgogICAgIFN0cmluZyBtX3N0cmluZ1ZhbHVlOwogfTsKIAotY2xhc3MgSW5zcGVjdG9yT2JqZWN0
QmFzZSA6IHB1YmxpYyBJbnNwZWN0b3JWYWx1ZSB7CitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJ
bnNwZWN0b3JPYmplY3RCYXNlIDogcHVibGljIEluc3BlY3RvclZhbHVlIHsKIHByaXZhdGU6CiAg
ICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEluc3BlY3RvclZhbHVlPj4gRGljdGlv
bmFyeTsKIApAQCAtMTkyLDcgKzE5Miw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIEluc3BlY3Rvck9i
amVjdCA6IHB1YmxpYyBJbnNwZWN0b3JPYmplY3RCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZSgpOworICAgIHN0YXRpYyBKU19FWFBP
UlRfUFJJVkFURSBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlKCk7CiAKICAgICB1
c2luZyBJbnNwZWN0b3JPYmplY3RCYXNlOjphc09iamVjdDsKIApAQCAtMjIwLDcgKzIyMCw3IEBA
IHB1YmxpYzoKIH07CiAKIAotY2xhc3MgSW5zcGVjdG9yQXJyYXlCYXNlIDogcHVibGljIEluc3Bl
Y3RvclZhbHVlIHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvckFycmF5QmFzZSA6
IHB1YmxpYyBJbnNwZWN0b3JWYWx1ZSB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBWZWN0b3I8UmVm
UHRyPEluc3BlY3RvclZhbHVlPj46Oml0ZXJhdG9yIGl0ZXJhdG9yOwogICAgIHR5cGVkZWYgVmVj
dG9yPFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4+Ojpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRv
cjsKQEAgLTI2MCw3ICsyNjAsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBJbnNwZWN0b3JBcnJheSA6
IHB1YmxpYyBJbnNwZWN0b3JBcnJheUJhc2UgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEluc3BlY3RvckFycmF5PiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgSlNfRVhQT1JUX1BSSVZB
VEUgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gY3JlYXRlKCk7CiAKICAgICB1c2luZyBJbnNw
ZWN0b3JBcnJheUJhc2U6OmFzQXJyYXk7CiAKQEAgLTM2Myw2ICszNjMsNiBAQCBpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JBcnJheUJhc2U6OnB1c2hBcnJheShQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5
PiB2YWx1ZSkKICAgICBtX2RhdGEuYXBwZW5kKHZhbHVlKTsKIH0KIAotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyAhZGVmaW5lZChJ
bnNwZWN0b3JWYWx1ZXNfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggY2ZhMzQyZC4uMmNjOGVl
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE1NzYsOSArMTU3Niw3IEBAIHNldChXZWJDb3Jl
X1NPVVJDRVMKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAogICAgIGlu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9y
QWdlbnQuY3BwCi0gICAgaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwCiAgICAg
aW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKLSAgICBpbnNwZWN0
b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rv
ckNTU0FnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKICAg
ICBpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtMTYwOSw3ICsxNjA3LDYgQEAgc2V0
KFdlYkNvcmVfU09VUkNFUwogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAog
ICAgIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuY3BwCiAgICAgaW5zcGVjdG9y
L0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCi0gICAgaW5zcGVjdG9yL0luc3BlY3RvclZhbHVl
cy5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCiAgICAgaW5zcGVj
dG9yL0luc3RydW1lbnRpbmdBZ2VudHMuY3BwCiAgICAgaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJj
ZXNEYXRhLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQ2OGYzMzEuLmExNjIzYTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzMzEgQEAKKzIwMTMtMTItMDUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVjdG9yIFJl
cXVpcmVkIENsYXNzZXMgRG93biBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXJ0IDI6IFB1c2ggU2NyaXB0IHdyYXBw
ZXIgY2xhc3NlcyBkb3duIGludG8gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MuCisKKyAgICAgICAg
ICAtIE1vdmUgU2NyaXB0T2JqZWN0IGFuZCBTY3JpcHRWYWx1ZSBpbnRvIEphdmFTY3JpcHRDb3Jl
IGJ1dCBuYW1lc3BhY2UgRGVwcmVjYXRlZAorICAgICAgICAgIC0gQWRkIGZvcndhcmRpbmcgaGVh
ZGVycworICAgICAgICAgIC0gVXNlIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBhbmQgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUgZXZlcnl3aGVyZS4KKworICAgICAgICAqIEZvcndhcmRpbmdIZWFk
ZXJzL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5n
SGVhZGVycy9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5saXN0LmFtOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5jcHA6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQW55Lmg6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJD
dXJzb3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcDoKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5Lmg6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCSW5kZXguY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QkluZGV4Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6b3BlbkN1cnNvcik6CisgICAg
ICAgIChXZWJDb3JlOjpJREJJbmRleDo6b3BlbktleUN1cnNvcik6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQktleVJhbmdlLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlSYW5nZTo6bG93ZXJCb3Vu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlSYW5nZTo6dXBwZXJCb3VuZCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJLZXlSYW5nZTo6Ym91bmQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3Jl
OjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmg6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHA6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vQ2FwYWJpbGl0eVJhbmdlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0Nh
cGFiaWxpdHlSYW5nZS5oOgorICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudC5jcHA6CisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBs
dWdpblJlcGxhY2VtZW50Lmg6CisgICAgICAgICogVXNlSlNDLmNtYWtlOgorICAgICAgICAqIFdl
YkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6
CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9EaWN0aW9uYXJ5Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaWN0aW9uYXJ5OjpnZXRF
dmVudExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlc2VyaWFsaXplSURCVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6ZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcik6CisgICAgICAgICogYmluZGluZ3Mv
anMvSURCQmluZGluZ1V0aWxpdGllcy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGljdGlv
bmFyeS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5Lmg6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENh
bGxTdGFja0ZhY3RvcnkuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgICogYmluZGlu
Z3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRG
dW5jdGlvbkNhbGwuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2Fs
bC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5jcHA6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwLgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNwcC4KKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdEdsb2JhbE9iamVjdDo6U2NyaXB0R2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvU2Ny
aXB0UHJvZmlsZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9X
b3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJT
Y3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICogZG9tL0N1c3RvbUV2ZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkN1c3RvbUV2ZW50Ojppbml0Q3VzdG9tRXZlbnQpOgorICAgICAgICAqIGRv
bS9DdXN0b21FdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRXZlbnQ6OmRldGFpbCk6
CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5jcHA6CisgICAgICAgICogZG9tL01lc3NhZ2VF
dmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50OjpkYXRhQXNTY3JpcHRWYWx1ZSk6CisgICAgICAgICog
ZG9tL1BvcFN0YXRlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBvcFN0YXRlRXZlbnQ6OnN0
YXRlKToKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2Uu
Y3BwOgorICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHA6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5jcHA6CisgICAgICAgICogaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0SG9zdC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9z
dC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzSW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndyYXBDYW52YXMyRFJlbmRlcmlu
Z0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0
aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckhlYXBQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3Bw
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdEFyZ3Vt
ZW50cy5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmg6CisgICAgICAgICogcGFnZS9Db25z
b2xlLmNwcDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKiBwYWdlL1BhZ2VD
b25zb2xlLmNwcDoKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgor
ICAgICAgICAqIHdvcmtlcnMvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAq
IHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
VGhyZWFkLmNwcDoKKyAgICAgICAgKiB4bWwvWE1MVHJlZVZpZXdlci5jcHA6CisgICAgICAgICog
eG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgICogeG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorCisyMDEzLTEyLTA1ICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBN
b3JlIEluc3BlY3RvciBSZXF1aXJlZCBDbGFzc2VzIERvd24gaW50byBKYXZhU2NyaXB0Q29yZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1MzI0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFydCAxOiBQ
dXNoIGRvd24gY29yZSBpbnNwZWN0b3IgY2xhc3Nlcy4KKworICAgICAgICAgIC0gTW92ZSBJbnNw
ZWN0QWdlbnRCYXNlLCBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LCBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlciwgSW5zcGVjdG9yVmFsdWVzCisgICAgICAgICAgICBkb3duIHRvIEphdmFTY3JpcHRD
b3JlIGFuZCBpbnRvIHRoZSBJbnNwZWN0b3IgbmFtZXNwYWNlLgorICAgICAgICAgIC0gQWRkIGZv
cndhcmRpbmcgaGVhZGVycyBmb3IgSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yIGZpbGVzLgorICAg
ICAgICAgIC0gVXNlIHRoZSBJbnNwZWN0b3IgbmFtZXNwYWNlIHdoZXJlIGFwcHJvcHJpYXRlLgor
ICAgICAgICAgIC0gUmVuYW1lIEluc3BlY3RvckJhc2VBZ2VudCB0byBJbnNwZWN0b3JBZ2VudEJh
c2UgZm9yIGNsYXJpdHkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBG
b3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmg6IEFkZGVkLgor
ICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lz
dHJ5Lmg6IEFkZGVkLgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5nSGVh
ZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg6IEFkZGVkLgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0
Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmNwcDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmg6CisgICAgICAgICogYmluZGluZ3Mv
anMvU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmg6
CisgICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHA6CisgICAgICAgICogaHRtbC9w
YXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdl
bmVyYXRvckluc3BlY3Rvci5weToKKyAgICAgICAgKFJhd1R5cGVzLkJhc2VUeXBlLmdldF9yYXdf
dmFsaWRhdG9yX2NhbGxfdGV4dCk6CisgICAgICAgIChSYXdUeXBlcy5PYmplY3QuZ2V0X2FycmF5
X2l0ZW1fcmF3X2NfdHlwZV90ZXh0KToKKyAgICAgICAgKFJhd1R5cGVzLkFueS5nZXRfYXJyYXlf
aXRlbV9yYXdfY190eXBlX3RleHQpOgorICAgICAgICAoUmF3VHlwZXMuQXJyYXkuZ2V0X2FycmF5
X2l0ZW1fcmF3X2NfdHlwZV90ZXh0KToKKyAgICAgICAgKFR5cGVNb2RlbC5pbml0X2NsYXNzKToK
KyAgICAgICAgKFR5cGVCaW5kaW5ncy5jcmVhdGVfdHlwZV9kZWNsYXJhdGlvbl8uRW51bUJpbmRp
bmcuZ2V0X2NvZGVfZ2VuZXJhdG9yLkNvZGVHZW5lcmF0b3IuZ2VuZXJhdGVfdHlwZV9idWlsZGVy
KToKKyAgICAgICAgKFR5cGVCaW5kaW5ncy5jcmVhdGVfdHlwZV9kZWNsYXJhdGlvbl8uQ2xhc3NC
aW5kaW5nLmdldF9jb2RlX2dlbmVyYXRvci5Db2RlR2VuZXJhdG9yLmdlbmVyYXRlX3R5cGVfYnVp
bGRlcik6CisgICAgICAgIChHZW5lcmF0b3IuZ28pOgorICAgICAgICAoR2VuZXJhdG9yLnByb2Nl
c3NfY29tbWFuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3JT
dHJpbmdzLnB5OgorICAgICAgICAodm9pZCk6CisgICAgICAgIChJbnNwZWN0b3JGcm9udGVuZF9o
KToKKyAgICAgICAgKEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyc19oKToKKyAgICAgICAgKEFy
cmF5KToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwOgorICAgICAgICAq
IGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9Db250ZW50
U2VhcmNoVXRpbHMuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbHMu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdEJhc2UuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52
YXNNb2R1bGUuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3Bw
OgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0TW9kdWxlLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmguCisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JBZ2VudEJhc2U6Okluc3BlY3RvckFnZW50QmFzZSk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckFsbEluT25lLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudDo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6ZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJhc2VBZ2VudC5o
OiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6SW5zcGVjdG9yQ1NTQWdlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpJbnNwZWN0b3JDYW52YXNBZ2VudCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6Okluc3Bl
Y3RvckNvbnNvbGVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb25zb2xlQWdl
bnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnNvbGVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6SW5zcGVjdG9yRE9NQWdlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6Okluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JE
YXRhYmFzZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdl
bnQ6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RGF0YWJhc2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRm9yd2FyZGluZy5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVy
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6
Okluc3BlY3RvckhlYXBQcm9maWxlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckhlYXBQcm9maWxlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbmRleGVkREJBZ2VudDo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvcklucHV0QWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5wdXRBZ2VudDo6SW5zcGVjdG9ySW5wdXRBZ2VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnB1dEFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckxheWVyVHJlZUFnZW50OjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JNZW1vcnlBZ2VudDo6SW5zcGVjdG9y
TWVtb3J5QWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5o
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpJ
bnNwZWN0b3JQYWdlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50
OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpJbnNw
ZWN0b3JQcm9maWxlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVy
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yUmVzb3VyY2VBZ2VudDo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJ1
bnRpbWVBZ2VudDo6SW5zcGVjdG9yUnVudGltZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yUnVudGltZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0
eWxlU2hlZXQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NJZDo6SW5zcGVjdG9yQ1NTSWQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuY3BwOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6VGltZWxpbmVSZWNvcmRF
bnRyeTo6VGltZWxpbmVSZWNvcmRFbnRyeSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
cldvcmtlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvcldvcmtlckFnZW50
OjpJbnNwZWN0b3JXb3JrZXJBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JXb3Jr
ZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zdHJ1bWVu
dGluZ0FnZW50cy5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAg
ICogaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
UGFnZURlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9QYWdlUnVudGltZUFnZW50Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5jcHA6CisgICAgICAgICogaW5z
cGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdENh
bGxGcmFtZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwOgorICAg
ICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
VGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvVGltZWxpbmVS
ZWNvcmRGYWN0b3J5Lmg6CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVJlY29yZEZhY3Rvcnk6
OmNyZWF0ZVdlYlNvY2tldENyZWF0ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVS
ZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljV2ViU29ja2V0RGF0YSk6CisgICAgICAgICogaW5z
cGVjdG9yL1dvcmtlckNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtl
ckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJv
bGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyUnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaDoKKyAgICAg
ICAgKiBwYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgICogdGVzdGluZy9J
bnRlcm5hbHMuY3BwOgorCiAyMDEzLTEyLTA2ICBSb2IgQnVpcyAgPHJvYi5idWlzQHNhbXN1bmcu
Y29tPgogCiAgICAgICAgIFtDU1MgU2hhcGVzXSBTaGFwZU91dHNpZGVJbmZvIG5lZWRzIHRvIHVz
ZSB0aGUgcGFyZW50J3Mgd3JpdGluZyBtb2RlIHdoZW4gY2FsY3VsYXRpbmcgb2Zmc2V0cwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvYmluZGluZ3MvU2NyaXB0
T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9iaW5kaW5ncy9TY3Jp
cHRPYmplY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzZiODI3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvYmluZGlu
Z3MvU2NyaXB0T2JqZWN0LmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX1Nj
cmlwdE9iamVjdF9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1NjcmlwdE9iamVjdF9oCisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0T2JqZWN0Lmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmggYi9T
b3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3OGFmNTAKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9iaW5kaW5ncy9TY3JpcHRWYWx1
ZS5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9TY3JpcHRWYWx1ZV9oCisj
ZGVmaW5lIFdlYkNvcmVfRldEX1NjcmlwdFZhbHVlX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9TY3JpcHRWYWx1ZS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3
YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjFhMzVmYwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JB
Z2VudEJhc2UuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfSW5zcGVjdG9y
QWdlbnRCYXNlX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfSW5zcGVjdG9yQWdlbnRCYXNlX2gKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBZ2VudEJhc2UuaD4KKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3Bl
Y3RvckFnZW50UmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2lu
c3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZjlkYjk1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgKQEAgLTAs
MCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0luc3BlY3RvckFnZW50UmVnaXN0cnlfaAor
I2RlZmluZSBXZWJDb3JlX0ZXRF9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5X2gKKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Lmg+CisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5z
cGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uOWU1ZTg3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5o
CkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9JbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcl9oCisjZGVmaW5lIFdlYkNvcmVfRldEX0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
X2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5o
PgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9p
bnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVh
ZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYmQ5ODVmNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaApAQCAtMCwwICsxLDQg
QEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfSW5zcGVjdG9yVmFsdWVzX2gKKyNkZWZpbmUgV2ViQ29y
ZV9GV0RfSW5zcGVjdG9yVmFsdWVzX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0
b3JWYWx1ZXMuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggODFh
YjE5ZC4uNzAyNDQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yNDQ5LDgg
KzI0NDksOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdEZ1bmN0aW9uQ2FsbC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRIZWFwU25hcHNob3QuaCBcCi0JU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2Jq
ZWN0LmNwcCBcCi0JU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmggXAor
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5jcHAgXAorCVNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRQcm9maWxlTm9kZS5oIFwKQEAgLTI0NTksOCArMjQ1OSw2IEBAIHdlYmNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmggXAotCVNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0VmFsdWUuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0V3JhcHBh
YmxlLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFdyYXBwYWJsZUlubGlu
ZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcCBcCkBAIC0zNzgxLDEzICszNzc5LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaCBcCiAJU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFnZW50LmggXAotCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcCBcCi0JU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckFnZW50UmVnaXN0cnkuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCBcCi0JU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggXAotCVNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JCYXNlQWdlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNhbnZhc0FnZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNhbnZhc0FnZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXNJbnN0cnVtZW50YXRpb24uaCBcCkBAIC0zODUzLDggKzM4NDYsNyBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVRl
eHRFZGl0b3IuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5l
QWdlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVB
Z2VudC5oIFwKLQlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcCBc
Ci0JU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmggXAogCVNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQW55LmNwcAppbmRleCBjYjFlNjNlLi44MjdhNGNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5jcHAKQEAgLTExMiw3ICsxMTIsNyBA
QCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBJREJBbnk6OmlkYlRyYW5zYWN0aW9uKCkKICAg
ICByZXR1cm4gbV9pZGJUcmFuc2FjdGlvbjsKIH0KIAotY29uc3QgU2NyaXB0VmFsdWUmIElEQkFu
eTo6c2NyaXB0VmFsdWUoKQorY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIElEQkFueTo6
c2NyaXB0VmFsdWUoKQogewogICAgIEFTU0VSVChtX3R5cGUgPT0gU2NyaXB0VmFsdWVUeXBlKTsK
ICAgICByZXR1cm4gbV9zY3JpcHRWYWx1ZTsKQEAgLTE4Niw3ICsxODYsNyBAQCBJREJBbnk6OklE
QkFueShQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiB2YWx1ZSkKIHsKIH0KIAotSURCQW55OjpJ
REJBbnkoY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVlKQorSURCQW55OjpJREJBbnkoY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlKQogICAgIDogbV90eXBlKFNjcmlwdFZhbHVlVHlw
ZSkKICAgICAsIG1fc2NyaXB0VmFsdWUodmFsdWUpCiAgICAgLCBtX2ludGVnZXIoMCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmgKaW5kZXggNmRlNDVjZi4uZDcyODQ1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmgKQEAgLTI5LDgg
KzI5LDggQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIklEQktl
eVBhdGguaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBw
YWJsZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJ
REJJbmRleD4gaWRiSW5kZXgoKTsKICAgICBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBpZGJP
YmplY3RTdG9yZSgpOwogICAgIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IGlkYlRyYW5zYWN0
aW9uKCk7Ci0gICAgY29uc3QgU2NyaXB0VmFsdWUmIHNjcmlwdFZhbHVlKCk7CisgICAgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHNjcmlwdFZhbHVlKCk7CiAgICAgaW50NjRfdCBpbnRl
Z2VyKCk7CiAgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoKTsKICAgICBjb25zdCBJREJLZXlQYXRo
JiBrZXlQYXRoKCkgeyByZXR1cm4gbV9pZGJLZXlQYXRoOyB9OwpAQCAtMTE4LDcgKzExOCw3IEBA
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgSURCQW55KFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+
KTsKICAgICBleHBsaWNpdCBJREJBbnkoY29uc3QgSURCS2V5UGF0aCYpOwogICAgIGV4cGxpY2l0
IElEQkFueShjb25zdCBTdHJpbmcmKTsKLSAgICBleHBsaWNpdCBJREJBbnkoY29uc3QgU2NyaXB0
VmFsdWUmKTsKKyAgICBleHBsaWNpdCBJREJBbnkoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUmKTsKICAgICBleHBsaWNpdCBJREJBbnkoaW50NjRfdCk7CiAKICAgICBjb25zdCBUeXBlIG1f
dHlwZTsKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFJlZlB0cjxJREJP
YmplY3RTdG9yZT4gbV9pZGJPYmplY3RTdG9yZTsKICAgICBjb25zdCBSZWZQdHI8SURCVHJhbnNh
Y3Rpb24+IG1faWRiVHJhbnNhY3Rpb247CiAgICAgY29uc3QgSURCS2V5UGF0aCBtX2lkYktleVBh
dGg7Ci0gICAgY29uc3QgU2NyaXB0VmFsdWUgbV9zY3JpcHRWYWx1ZTsKKyAgICBjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSBtX3NjcmlwdFZhbHVlOwogICAgIGNvbnN0IFN0cmluZyBtX3N0
cmluZzsKICAgICBjb25zdCBpbnQ2NF90IG1faW50ZWdlcjsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAppbmRleCBlZjA2NTQ0Li5iOTlkODNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAK
QEAgLTk4LDE5ICs5OCwxOSBAQCBjb25zdCBTdHJpbmcmIElEQkN1cnNvcjo6ZGlyZWN0aW9uKCkg
Y29uc3QKICAgICByZXR1cm4gZGlyZWN0aW9uVG9TdHJpbmcobV9kaXJlY3Rpb24pOwogfQogCi1j
b25zdCBTY3JpcHRWYWx1ZSYgSURCQ3Vyc29yOjprZXkoKSBjb25zdAorY29uc3QgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUmIElEQkN1cnNvcjo6a2V5KCkgY29uc3QKIHsKICAgICBMT0coU3RvcmFn
ZUFQSSwgIklEQkN1cnNvcjo6a2V5Iik7CiAgICAgcmV0dXJuIG1fY3VycmVudEtleVZhbHVlOwog
fQogCi1jb25zdCBTY3JpcHRWYWx1ZSYgSURCQ3Vyc29yOjpwcmltYXJ5S2V5KCkgY29uc3QKK2Nv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBJREJDdXJzb3I6OnByaW1hcnlLZXkoKSBjb25z
dAogewogICAgIExPRyhTdG9yYWdlQVBJLCAiSURCQ3Vyc29yOjpwcmltYXJ5S2V5Iik7CiAgICAg
cmV0dXJuIG1fY3VycmVudFByaW1hcnlLZXlWYWx1ZTsKIH0KIAotY29uc3QgU2NyaXB0VmFsdWUm
IElEQkN1cnNvcjo6dmFsdWUoKSBjb25zdAorY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
IElEQkN1cnNvcjo6dmFsdWUoKSBjb25zdAogewogICAgIExPRyhTdG9yYWdlQVBJLCAiSURCQ3Vy
c29yOjp2YWx1ZSIpOwogICAgIHJldHVybiBtX2N1cnJlbnRWYWx1ZTsKQEAgLTEyMSw3ICsxMjEs
NyBAQCBJREJBbnkqIElEQkN1cnNvcjo6c291cmNlKCkgY29uc3QKICAgICByZXR1cm4gbV9zb3Vy
Y2UuZ2V0KCk7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCQ3Vyc29yOjp1cGRhdGUo
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBTY3JpcHRWYWx1ZSYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJDdXJzb3I6OnVwZGF0ZShKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJDdXJzb3I6OnVwZGF0ZSIpOwogCkBA
IC0xNzcsNyArMTc3LDcgQEAgdm9pZCBJREJDdXJzb3I6OmFkdmFuY2UodW5zaWduZWQgbG9uZyBj
b3VudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgQVNTRVJUKCFlYyk7CiB9CiAKLXZvaWQgSURC
Q3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IGNvbnN0IFNjcmlwdFZhbHVlJiBrZXlWYWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIElE
QkN1cnNvcjo6Y29udGludWVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5VmFsdWUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewogICAgIERPTVJlcXVlc3RTdGF0ZSByZXF1ZXN0U3RhdGUoY29udGV4dCk7CiAgICAg
UmVmUHRyPElEQktleT4ga2V5ID0gc2NyaXB0VmFsdWVUb0lEQktleSgmcmVxdWVzdFN0YXRlLCBr
ZXlWYWx1ZSk7CkBAIC0yNjMsNyArMjYzLDcgQEAgdm9pZCBJREJDdXJzb3I6OmNsb3NlKCkKICAg
ICB9CiB9CiAKLXZvaWQgSURCQ3Vyc29yOjpzZXRWYWx1ZVJlYWR5KERPTVJlcXVlc3RTdGF0ZSog
c3RhdGUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5
S2V5LCBTY3JpcHRWYWx1ZSYgdmFsdWUpCit2b2lkIElEQkN1cnNvcjo6c2V0VmFsdWVSZWFkeShE
T01SZXF1ZXN0U3RhdGUqIHN0YXRlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRy
PElEQktleT4gcHJpbWFyeUtleSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlKQogewog
ICAgIG1fY3VycmVudEtleSA9IGtleTsKICAgICBtX2N1cnJlbnRLZXlWYWx1ZSA9IGlkYktleVRv
U2NyaXB0VmFsdWUoc3RhdGUsIG1fY3VycmVudEtleSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCmluZGV4IGM2YTc0NGYuLjA0ZWIzODYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCkBAIC0zMSw4ICszMSw4
IEBACiAjaW5jbHVkZSAiSURCS2V5LmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKICNp
bmNsdWRlICJJbmRleGVkREIuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUg
IlNjcmlwdFdyYXBwYWJsZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTYzLDIyICs2MywyMiBAQCBwdWJsaWM6CiAKICAg
ICAvLyBJbXBsZW1lbnQgdGhlIElETAogICAgIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uKCkgY29u
c3Q7Ci0gICAgY29uc3QgU2NyaXB0VmFsdWUmIGtleSgpIGNvbnN0OwotICAgIGNvbnN0IFNjcmlw
dFZhbHVlJiBwcmltYXJ5S2V5KCkgY29uc3Q7Ci0gICAgY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVl
KCkgY29uc3Q7CisgICAgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSgpIGNvbnN0
OworICAgIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBwcmltYXJ5S2V5KCkgY29uc3Q7
CisgICAgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlKCkgY29uc3Q7CiAgICAg
SURCQW55KiBzb3VyY2UoKSBjb25zdDsKIAotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gdXBk
YXRlKEpTQzo6RXhlY1N0YXRlKiwgU2NyaXB0VmFsdWUmLCBFeGNlcHRpb25Db2RlJik7CisgICAg
UGFzc1JlZlB0cjxJREJSZXF1ZXN0PiB1cGRhdGUoSlNDOjpFeGVjU3RhdGUqLCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGFkdmFuY2UodW5zaWdu
ZWQgbG9uZywgRXhjZXB0aW9uQ29kZSYpOwogICAgIC8vIEZJWE1FOiBUcnkgdG8gbW9kaWZ5IHRo
ZSBjb2RlIGdlbmVyYXRvciBzbyB0aGlzIG92ZXJsb2FkIGlzIHVubmVlZGVkLgogICAgIHZvaWQg
Y29udGludWVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYg
ZWMpIHsgY29udGludWVGdW5jdGlvbihzdGF0aWNfY2FzdDxJREJLZXkqPigwKSwgZWMpOyB9Ci0g
ICAgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBT
Y3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBjb250aW51ZUZ1bmN0
aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBkZWxl
dGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpOwogCiAg
ICAgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiwgRXhjZXB0aW9uQ29k
ZSYpOwogICAgIHZvaWQgcG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKTsKICAgICB2b2lkIGNs
b3NlKCk7Ci0gICAgdm9pZCBzZXRWYWx1ZVJlYWR5KERPTVJlcXVlc3RTdGF0ZSosIFBhc3NSZWZQ
dHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIFNjcmlwdFZhbHVlJik7
CisgICAgdm9pZCBzZXRWYWx1ZVJlYWR5KERPTVJlcXVlc3RTdGF0ZSosIFBhc3NSZWZQdHI8SURC
S2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlJik7CiAgICAgUGFzc1JlZlB0cjxJREJLZXk+IGlkYlByaW1hcnlLZXkoKSB7IHJldHVybiBt
X2N1cnJlbnRQcmltYXJ5S2V5OyB9CiAKIHByb3RlY3RlZDoKQEAgLTk3LDExICs5NywxMSBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9nb3RWYWx1ZTsKICAgICAvLyBUaGVzZSB2YWx1ZXMgYXJlIGhl
bGQgYmVjYXVzZSBtX2JhY2tlbmQgbWF5IGFkdmFuY2Ugd2hpbGUgdGhleQogICAgIC8vIGFyZSBz
dGlsbCB2YWxpZCBmb3IgdGhlIGN1cnJlbnQgc3VjY2VzcyBoYW5kbGVycy4KLSAgICBTY3JpcHRW
YWx1ZSBtX2N1cnJlbnRLZXlWYWx1ZTsKLSAgICBTY3JpcHRWYWx1ZSBtX2N1cnJlbnRQcmltYXJ5
S2V5VmFsdWU7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgbV9jdXJyZW50S2V5VmFsdWU7
CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgbV9jdXJyZW50UHJpbWFyeUtleVZhbHVlOwog
ICAgIFJlZlB0cjxJREJLZXk+IG1fY3VycmVudEtleTsKICAgICBSZWZQdHI8SURCS2V5PiBtX2N1
cnJlbnRQcmltYXJ5S2V5OwotICAgIFNjcmlwdFZhbHVlIG1fY3VycmVudFZhbHVlOworICAgIERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG1fY3VycmVudFZhbHVlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0
b3J5LmNwcAppbmRleCA5ZjQwNmZhLi5kMjhhNTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIFBhc3NS
ZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gSURCRmFjdG9yeTo6ZGVsZXRlRGF0YWJhc2UoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCoKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAotc2hvcnQgSURCRmFj
dG9yeTo6Y21wKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZh
bHVlJiBmaXJzdFZhbHVlLCBjb25zdCBTY3JpcHRWYWx1ZSYgc2Vjb25kVmFsdWUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQorc2hvcnQgSURCRmFjdG9yeTo6Y21wKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBmaXJzdFZhbHVlLCBjb25z
dCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgc2Vjb25kVmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewogICAgIERPTVJlcXVlc3RTdGF0ZSByZXF1ZXN0U3RhdGUoY29udGV4dCk7CiAgICAgUmVm
UHRyPElEQktleT4gZmlyc3QgPSBzY3JpcHRWYWx1ZVRvSURCS2V5KCZyZXF1ZXN0U3RhdGUsIGZp
cnN0VmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9y
eS5oCmluZGV4IDczNzRlY2YuLjc3OGZkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJGYWN0b3J5LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIFBh
c3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gb3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Y29uc3QgU3RyaW5nJiBuYW1lLCB1bnNpZ25lZCBsb25nIGxvbmcgdmVyc2lvbiwgRXhjZXB0aW9u
Q29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gZGVsZXRlRGF0YWJhc2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29k
ZSYpOwogCi0gICAgc2hvcnQgY21wKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTY3Jp
cHRWYWx1ZSYgZmlyc3QsIGNvbnN0IFNjcmlwdFZhbHVlJiBzZWNvbmQsIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICBzaG9ydCBjbXAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlJiBmaXJzdCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHNl
Y29uZCwgRXhjZXB0aW9uQ29kZSYpOwogCiBwcml2YXRlOgogICAgIElEQkZhY3RvcnkoSURCRmFj
dG9yeUJhY2tlbmRJbnRlcmZhY2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkluZGV4LmNwcAppbmRleCBkZjYzNzM0Li5lZGY0YjM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCkBAIC03NSw3ICs3NSw3IEBAIFBh
c3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgUGFzCiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKLVBhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rp
b24sIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6
b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJJbmRleDo6b3BlbkN1cnNvciIp
OwogICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBJREJLZXlSYW5nZTo6b25seShj
b250ZXh0LCBrZXksIGVjKTsKQEAgLTEwMCw3ICsxMDAsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IElEQkluZGV4Ojpjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNz
UmVmUAogICAgIHJldHVybiByZXF1ZXN0OwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElE
QkluZGV4Ojpjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3Jp
cHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4g
SURCSW5kZXg6OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIExP
RyhTdG9yYWdlQVBJLCAiSURCSW5kZXg6OmNvdW50Iik7CiAgICAgUmVmUHRyPElEQktleVJhbmdl
PiBrZXlSYW5nZSA9IElEQktleVJhbmdlOjpvbmx5KGNvbnRleHQsIGtleSwgZWMpOwpAQCAtMTMw
LDcgKzEzMCw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5LZXlDdXJz
b3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKICAgICByZXR1cm4gcmVxdWVzdDsK
IH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbktleUN1cnNvcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBjb25z
dCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYg
ZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgIklE
QkluZGV4OjpvcGVuS2V5Q3Vyc29yIik7CiAgICAgUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5n
ZSA9IElEQktleVJhbmdlOjpvbmx5KGNvbnRleHQsIGtleSwgZWMpOwpAQCAtMTM5LDcgKzEzOSw3
IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKICAgICByZXR1cm4gb3BlbktleUN1cnNvcihjb250
ZXh0LCBrZXlSYW5nZS5yZWxlYXNlKCksIGRpcmVjdGlvbiwgZWMpOwogfQogCi1QYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IElEQkluZGV4OjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IElEQkluZGV4OjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJJbmRleDo6Z2V0Iik7CiAgICAgUmVmUHRyPElE
QktleVJhbmdlPiBrZXlSYW5nZSA9IElEQktleVJhbmdlOjpvbmx5KGNvbnRleHQsIGtleSwgZWMp
OwpAQCAtMTY5LDcgKzE2OSw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Omdl
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyCiAgICAgcmV0dXJu
IHJlcXVlc3Q7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldEtleShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBF
eGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldEtl
eShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coU3RvcmFnZUFQSSwg
IklEQkluZGV4OjpnZXRLZXkiKTsKICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlID0g
SURCS2V5UmFuZ2U6Om9ubHkoY29udGV4dCwga2V5LCBlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCSW5kZXguaAppbmRleCAyNjE0ZTAyLi5mOTU0YWQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmgKQEAgLTYzLDIzICs2Mywy
MyBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IFRyeSB0byBtb2RpZnkgdGhlIGNvZGUgZ2VuZXJh
dG9yIHNvIHRoaXMgaXMgdW5uZWVkZWQuCiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVu
Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVj
KSB7IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIHN0YXRpY19jYXN0PElEQktleVJhbmdlKj4o
MCksIGVjKTsgfQogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5n
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwga2V5UmFu
Z2UsIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCgpLCBlYyk7IH0KLSAgICBQYXNzUmVmUHRyPElE
QlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJz
b3IoY29udGV4dCwga2V5LCBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHQoKSwgZWMpOyB9CisgICAg
UGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNv
ZGUmIGVjKSB7IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIGtleSwgSURCQ3Vyc29yOjpkaXJl
Y3Rpb25OZXh0KCksIGVjKTsgfQogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNv
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIGNvbnN0
IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTY3JpcHRW
YWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYpOworICAg
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJl
Y3Rpb24sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJl
dHVybiBjb3VudChjb250ZXh0LCBzdGF0aWNfY2FzdDxJREJLZXlSYW5nZSo+KDApLCBlYyk7IH0K
ICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gY291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFNjcmlw
dFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9u
Q29kZSYgZWMpIHsgcmV0dXJuIG9wZW5LZXlDdXJzb3IoY29udGV4dCwgc3RhdGljX2Nhc3Q8SURC
S2V5UmFuZ2UqPigwKSwgZWMpOyB9CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuS2V5
Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5
UmFuZ2U+IGtleVJhbmdlLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3BlbktleUN1cnNv
cihjb250ZXh0LCBrZXlSYW5nZSwgSURCQ3Vyc29yOjpkaXJlY3Rpb25OZXh0KCksIGVjKTsgfQot
ICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBl
YykgeyByZXR1cm4gb3BlbktleUN1cnNvcihjb250ZXh0LCBrZXksIElEQkN1cnNvcjo6ZGlyZWN0
aW9uTmV4dCgpLCBlYyk7IH0KKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5LZXlDdXJz
b3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5LZXlDdXJzb3Io
Y29udGV4dCwga2V5LCBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHQoKSwgZWMpOyB9CiAgICAgUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2Vw
dGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0cmlu
ZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0
PiBvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29k
ZSYpOwogCiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBnZXQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFNj
cmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IGdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
Z2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwg
RXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZ2V0S2V5KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBnZXRLZXkoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUm
KTsKIAogICAgIHZvaWQgbWFya0RlbGV0ZWQoKSB7IG1fZGVsZXRlZCA9IHRydWU7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuY3BwCmluZGV4
IDcyOGY5NTMuLjNkNTRmYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQktleVJhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJLZXlSYW5nZS5jcHAKQEAgLTQ5LDEzICs0OSwxMyBAQCBJREJLZXlSYW5nZTo6SURC
S2V5UmFuZ2UoUGFzc1JlZlB0cjxJREJLZXk+IGxvd2VyLCBQYXNzUmVmUHRyPElEQktleT4gdXBw
ZXIsIExvdwogewogfQogCi1TY3JpcHRWYWx1ZSBJREJLZXlSYW5nZTo6bG93ZXJWYWx1ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSBjb25zdAorRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUgSURCS2V5UmFuZ2U6Omxvd2VyVmFsdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkgY29uc3QKIHsKICAgICBET01SZXF1ZXN0U3RhdGUgcmVxdWVzdFN0YXRlKGNvbnRleHQpOwog
ICAgIHJldHVybiBpZGJLZXlUb1NjcmlwdFZhbHVlKCZyZXF1ZXN0U3RhdGUsIG1fbG93ZXIpOwog
fQogCi1TY3JpcHRWYWx1ZSBJREJLZXlSYW5nZTo6dXBwZXJWYWx1ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KSBjb25zdAorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgSURCS2V5UmFu
Z2U6OnVwcGVyVmFsdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkgY29uc3QKIHsK
ICAgICBET01SZXF1ZXN0U3RhdGUgcmVxdWVzdFN0YXRlKGNvbnRleHQpOwogICAgIHJldHVybiBp
ZGJLZXlUb1NjcmlwdFZhbHVlKCZyZXF1ZXN0U3RhdGUsIG1fdXBwZXIpOwpAQCAtNzIsNyArNzIs
NyBAQCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBJREJLZXlSYW5nZTo6b25seShQYXNzUmVmUHRy
PElEQktleT4gcHJwS2V5LCBFeGNlcHRpb25DbwogICAgIHJldHVybiBJREJLZXlSYW5nZTo6Y3Jl
YXRlKGtleSwga2V5LCBMb3dlckJvdW5kQ2xvc2VkLCBVcHBlckJvdW5kQ2xvc2VkKTsKIH0KIAot
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6Om9ubHkoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGtleVZhbHVlLCBFeGNlcHRpb25D
b2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IElEQktleVJhbmdlOjpvbmx5KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
JiBrZXlWYWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgRE9NUmVxdWVzdFN0YXRlIHJl
cXVlc3RTdGF0ZShjb250ZXh0KTsKICAgICBSZWZQdHI8SURCS2V5PiBrZXkgPSBzY3JpcHRWYWx1
ZVRvSURCS2V5KCZyZXF1ZXN0U3RhdGUsIGtleVZhbHVlKTsKQEAgLTg0LDcgKzg0LDcgQEAgUGFz
c1JlZlB0cjxJREJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6Om9ubHkoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QKICAgICByZXR1cm4gSURCS2V5UmFuZ2U6OmNyZWF0ZShrZXks
IGtleSwgTG93ZXJCb3VuZENsb3NlZCwgVXBwZXJCb3VuZENsb3NlZCk7CiB9CiAKLVBhc3NSZWZQ
dHI8SURCS2V5UmFuZ2U+IElEQktleVJhbmdlOjpsb3dlckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBib3VuZFZhbHVlLCBib29sIG9wZW4s
IEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6
Omxvd2VyQm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmIGJvdW5kVmFsdWUsIGJvb2wgb3BlbiwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CiAgICAgRE9NUmVxdWVzdFN0YXRlIHJlcXVlc3RTdGF0ZShjb250ZXh0KTsKICAgICBS
ZWZQdHI8SURCS2V5PiBib3VuZCA9IHNjcmlwdFZhbHVlVG9JREJLZXkoJnJlcXVlc3RTdGF0ZSwg
Ym91bmRWYWx1ZSk7CkBAIC05Niw3ICs5Niw3IEBAIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IElE
QktleVJhbmdlOjpsb3dlckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAg
ICAgcmV0dXJuIElEQktleVJhbmdlOjpjcmVhdGUoYm91bmQsIDAsIG9wZW4gPyBMb3dlckJvdW5k
T3BlbiA6IExvd2VyQm91bmRDbG9zZWQsIFVwcGVyQm91bmRPcGVuKTsKIH0KIAotUGFzc1JlZlB0
cjxJREJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6OnVwcGVyQm91bmQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGJvdW5kVmFsdWUsIGJvb2wgb3Blbiwg
RXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQktleVJhbmdlPiBJREJLZXlSYW5nZTo6
dXBwZXJCb3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYgYm91bmRWYWx1ZSwgYm9vbCBvcGVuLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICBET01SZXF1ZXN0U3RhdGUgcmVxdWVzdFN0YXRlKGNvbnRleHQpOwogICAgIFJl
ZlB0cjxJREJLZXk+IGJvdW5kID0gc2NyaXB0VmFsdWVUb0lEQktleSgmcmVxdWVzdFN0YXRlLCBi
b3VuZFZhbHVlKTsKQEAgLTEwOCw3ICsxMDgsNyBAQCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBJ
REJLZXlSYW5nZTo6dXBwZXJCb3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAog
ICAgIHJldHVybiBJREJLZXlSYW5nZTo6Y3JlYXRlKDAsIGJvdW5kLCBMb3dlckJvdW5kT3Blbiwg
b3BlbiA/IFVwcGVyQm91bmRPcGVuIDogVXBwZXJCb3VuZENsb3NlZCk7CiB9CiAKLVBhc3NSZWZQ
dHI8SURCS2V5UmFuZ2U+IElEQktleVJhbmdlOjpib3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYgbG93ZXJWYWx1ZSwgY29uc3QgU2NyaXB0VmFs
dWUmIHVwcGVyVmFsdWUsIGJvb2wgbG93ZXJPcGVuLCBib29sIHVwcGVyT3BlbiwgRXhjZXB0aW9u
Q29kZSYgZWMpCitQYXNzUmVmUHRyPElEQktleVJhbmdlPiBJREJLZXlSYW5nZTo6Ym91bmQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUmIGxvd2VyVmFsdWUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB1cHBlclZhbHVl
LCBib29sIGxvd2VyT3BlbiwgYm9vbCB1cHBlck9wZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIERPTVJlcXVlc3RTdGF0ZSByZXF1ZXN0U3RhdGUoY29udGV4dCk7CiAgICAgUmVmUHRyPElE
QktleT4gbG93ZXIgPSBzY3JpcHRWYWx1ZVRvSURCS2V5KCZyZXF1ZXN0U3RhdGUsIGxvd2VyVmFs
dWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5
UmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmgK
aW5kZXggNTQ3Njk1YS4uZTU1MWNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJLZXlSYW5nZS5oCkBAIC01OSwyMyArNTksMjMgQEAgcHVibGljOgogICAgIFBh
c3NSZWZQdHI8SURCS2V5PiBsb3dlcigpIGNvbnN0IHsgcmV0dXJuIG1fbG93ZXI7IH0KICAgICBQ
YXNzUmVmUHRyPElEQktleT4gdXBwZXIoKSBjb25zdCB7IHJldHVybiBtX3VwcGVyOyB9CiAKLSAg
ICBTY3JpcHRWYWx1ZSBsb3dlclZhbHVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBjb25zdDsK
LSAgICBTY3JpcHRWYWx1ZSB1cHBlclZhbHVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBjb25z
dDsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBsb3dlclZhbHVlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKSBjb25zdDsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB1cHBlclZhbHVl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBjb25zdDsKICAgICBib29sIGxvd2VyT3BlbigpIGNv
bnN0IHsgcmV0dXJuIG1fbG93ZXJUeXBlID09IExvd2VyQm91bmRPcGVuOyB9CiAgICAgYm9vbCB1
cHBlck9wZW4oKSBjb25zdCB7IHJldHVybiBtX3VwcGVyVHlwZSA9PSBVcHBlckJvdW5kT3Blbjsg
fQogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IG9ubHkoUGFzc1JlZlB0cjxJ
REJLZXk+IHZhbHVlLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURC
S2V5UmFuZ2U+IG9ubHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFNjcmlwdFZhbHVl
JiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXlSYW5n
ZT4gb25seShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURC
S2V5UmFuZ2U+IGxvd2VyQm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgU2NyaXB0VmFsdWUmIGJvdW5kLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gbG93ZXJC
b3VuZChjb250ZXh0LCBib3VuZCwgZmFsc2UsIGVjKTsgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PElEQktleVJhbmdlPiBsb3dlckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBT
Y3JpcHRWYWx1ZSYgYm91bmQsIGJvb2wgb3BlbiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBsb3dlckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBib3VuZCwgRXhjZXB0
aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGxvd2VyQm91bmQoY29udGV4dCwgYm91bmQsIGZhbHNlLCBl
Yyk7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gbG93ZXJCb3VuZChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGJvdW5k
LCBib29sIG9wZW4sIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElE
QktleVJhbmdlPiB1cHBlckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFNjcmlwdFZhbHVlJiBib3VuZCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIHVwcGVy
Qm91bmQoY29udGV4dCwgYm91bmQsIGZhbHNlLCBlYyk7IH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxJREJLZXlSYW5nZT4gdXBwZXJCb3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3Qg
U2NyaXB0VmFsdWUmIGJvdW5kLCBib29sIG9wZW4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gdXBwZXJCb3VuZChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgYm91bmQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKSB7IHJldHVybiB1cHBlckJvdW5kKGNvbnRleHQsIGJvdW5kLCBmYWxzZSwg
ZWMpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHVwcGVyQm91bmQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBib3Vu
ZCwgYm9vbCBvcGVuLCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4gYm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U2NyaXB0VmFsdWUmIGxvd2VyLCBjb25zdCBTY3JpcHRWYWx1ZSYgdXBwZXIsIEV4Y2VwdGlvbkNv
ZGUmIGVjKSB7IHJldHVybiBib3VuZChjb250ZXh0LCBsb3dlciwgdXBwZXIsIGZhbHNlLCBmYWxz
ZSwgZWMpOyB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGJvdW5kKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBsb3dlciwgY29u
c3QgU2NyaXB0VmFsdWUmIHVwcGVyLCBib29sIGxvd2VyT3BlbiwgRXhjZXB0aW9uQ29kZSYgZWMp
IHsgcmV0dXJuIGJvdW5kKGNvbnRleHQsIGxvd2VyLCB1cHBlciwgbG93ZXJPcGVuLCBmYWxzZSwg
ZWMpOyB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGJvdW5kKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYgbG93ZXIsIGNvbnN0IFNjcmlwdFZh
bHVlJiB1cHBlciwgYm9vbCBsb3dlck9wZW4sIGJvb2wgdXBwZXJPcGVuLCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGJvdW5kKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBsb3dl
ciwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHVwcGVyLCBFeGNlcHRpb25Db2RlJiBl
YykgeyByZXR1cm4gYm91bmQoY29udGV4dCwgbG93ZXIsIHVwcGVyLCBmYWxzZSwgZmFsc2UsIGVj
KTsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBib3VuZChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgbG93
ZXIsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB1cHBlciwgYm9vbCBsb3dlck9wZW4s
IEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBib3VuZChjb250ZXh0LCBsb3dlciwgdXBwZXIs
IGxvd2VyT3BlbiwgZmFsc2UsIGVjKTsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiBib3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmIGxvd2VyLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdXBwZXIsIGJv
b2wgbG93ZXJPcGVuLCBib29sIHVwcGVyT3BlbiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgYm9v
bCBpc09ubHlLZXkoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCmluZGV4IDY5YmFiZjEuLjc4NjdmNWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5j
cHAKQEAgLTg2LDcgKzg2LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9y
ZTo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3MKICAgICByZXR1cm4g
cmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0
U3RvcmU6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRW
YWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURC
T2JqZWN0U3RvcmU6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBS
ZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlID0gSURCS2V5UmFuZ2U6Om9ubHkoY29udGV4dCwg
a2V5LCBlYyk7CiAgICAgaWYgKGVjKQpAQCAtOTQsNyArOTQsNyBAQCBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IElEQk9iamVjdFN0b3JlOjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgY29ucwogICAgIHJldHVybiBnZXQoY29udGV4dCwga2V5UmFuZ2UucmVsZWFzZSgpLCBlYyk7
CiB9CiAKLXN0YXRpYyB2b2lkIGdlbmVyYXRlSW5kZXhLZXlzRm9yVmFsdWUoRE9NUmVxdWVzdFN0
YXRlKiByZXF1ZXN0U3RhdGUsIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEs
IGNvbnN0IFNjcmlwdFZhbHVlJiBvYmplY3RWYWx1ZSwgSURCT2JqZWN0U3RvcmU6OkluZGV4S2V5
cyogaW5kZXhLZXlzKQorc3RhdGljIHZvaWQgZ2VuZXJhdGVJbmRleEtleXNGb3JWYWx1ZShET01S
ZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYgaW5kZXhN
ZXRhZGF0YSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIG9iamVjdFZhbHVlLCBJREJP
YmplY3RTdG9yZTo6SW5kZXhLZXlzKiBpbmRleEtleXMpCiB7CiAgICAgQVNTRVJUKGluZGV4S2V5
cyk7CiAgICAgUmVmUHRyPElEQktleT4gaW5kZXhLZXkgPSBjcmVhdGVJREJLZXlGcm9tU2NyaXB0
VmFsdWVBbmRLZXlQYXRoKHJlcXVlc3RTdGF0ZSwgb2JqZWN0VmFsdWUsIGluZGV4TWV0YWRhdGEu
a2V5UGF0aCk7CkBAIC0xMTcsMzEgKzExNywzMSBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZUluZGV4
S2V5c0ZvclZhbHVlKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBjb25zdCBJREJJbgog
ICAgIH0KIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6YWRkKEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgU2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTY3JpcHRWYWx1
ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2Jq
ZWN0U3RvcmU6OmFkZChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlJiB2YWx1ZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJPYmplY3RTdG9yZTo6YWRkIik7
CiAgICAgcmV0dXJuIHB1dChJREJEYXRhYmFzZUJhY2tlbmQ6OkFkZE9ubHksIElEQkFueTo6Y3Jl
YXRlKHRoaXMpLCBzdGF0ZSwgdmFsdWUsIGtleSwgZWMpOwogfQogCi1QYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IElEQk9iamVjdFN0b3JlOjphZGQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBTY3JpcHRW
YWx1ZSYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJ
REJPYmplY3RTdG9yZTo6YWRkKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coU3RvcmFnZUFQ
SSwgIklEQk9iamVjdFN0b3JlOjphZGQiKTsKICAgICByZXR1cm4gcHV0KElEQkRhdGFiYXNlQmFj
a2VuZDo6QWRkT25seSwgSURCQW55OjpjcmVhdGUodGhpcyksIHN0YXRlLCB2YWx1ZSwgc3RhdGlj
X2Nhc3Q8SURCS2V5Kj4oMCksIGVjKTsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJP
YmplY3RTdG9yZTo6cHV0KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgU2NyaXB0VmFsdWUmIHZhbHVl
LCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8
SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJP
YmplY3RTdG9yZTo6cHV0Iik7CiAgICAgcmV0dXJuIHB1dChJREJEYXRhYmFzZUJhY2tlbmQ6OkFk
ZE9yVXBkYXRlLCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgc3RhdGUsIHZhbHVlLCBrZXksIGVjKTsK
IH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSwgU2NyaXB0VmFsdWUmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bh
c3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJPYmplY3RTdG9yZTo6cHV0Iik7CiAgICAgcmV0
dXJuIHB1dChJREJEYXRhYmFzZUJhY2tlbmQ6OkFkZE9yVXBkYXRlLCBJREJBbnk6OmNyZWF0ZSh0
aGlzKSwgc3RhdGUsIHZhbHVlLCBzdGF0aWNfY2FzdDxJREJLZXkqPigwKSwgZWMpOwogfQogCi1Q
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoSURCRGF0YWJhc2VCYWNr
ZW5kOjpQdXRNb2RlIHB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSwgU2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5
VmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmpl
Y3RTdG9yZTo6cHV0KElEQkRhdGFiYXNlQmFja2VuZDo6UHV0TW9kZSBwdXRNb2RlLCBQYXNzUmVm
UHRyPElEQkFueT4gc291cmNlLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleVZhbHVl
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoc3RhdGUpOwogICAgIERP
TVJlcXVlc3RTdGF0ZSByZXF1ZXN0U3RhdGUoY29udGV4dCk7CkBAIC0xNDksNyArMTQ5LDcgQEAg
UGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KElEQkRhdGFiYXNlQmFj
a2VuZDo6UHV0TW9kZSBwdXRNb2RlLAogICAgIHJldHVybiBwdXQocHV0TW9kZSwgc291cmNlLCBz
dGF0ZSwgdmFsdWUsIGtleS5yZWxlYXNlKCksIGVjKTsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KElEQkRhdGFiYXNlQmFja2VuZDo6UHV0TW9kZSBwdXRN
b2RlLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFNj
cmlwdFZhbHVlJiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IHBycEtleSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoSURCRGF0
YWJhc2VCYWNrZW5kOjpQdXRNb2RlIHB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2Us
IEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBQ
YXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQ
dHI8SURCS2V5PiBrZXkgPSBwcnBLZXk7CiAgICAgaWYgKG1fZGVsZXRlZCkgewpAQCAtMTY3LDcg
KzE2Nyw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChJREJE
YXRhYmFzZUJhY2tlbmQ6OlB1dE1vZGUgcHV0TW9kZSwKIAogICAgIC8vIEZJWE1FOiBFeHBvc2Ug
dGhlIEpTIGVuZ2luZSBleGNlcHRpb24gc3RhdGUgdGhyb3VnaCBTY3JpcHRTdGF0ZS4KICAgICBi
b29sIGRpZFRocm93ID0gZmFsc2U7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
c2VyaWFsaXplZFZhbHVlID0gdmFsdWUuc2VyaWFsaXplKHN0YXRlLCAwLCAwLCBkaWRUaHJvdyk7
CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpzZXJpYWxpemUodmFsdWUsIHN0YXRlLCBudWxscHRyLCBudWxs
cHRyLCBkaWRUaHJvdyk7CiAgICAgaWYgKGRpZFRocm93KSB7CiAgICAgICAgIC8vIFNldHRpbmcg
YW4gZXhwbGljaXQgRXhjZXB0aW9uQ29kZSBoZXJlIHdvdWxkIGRlZmVyIGhhbmRsaW5nIHRoZSBh
bHJlYWR5IHRocm93biBleGNlcHRpb24uCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjYyLDcgKzI2
Miw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0
aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvCiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFz
ZSgpOwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpkZWxldGVG
dW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1
ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2Jq
ZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewogICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBJREJLZXlSYW5nZTo6b25seShj
b250ZXh0LCBrZXksIGVjKTsKICAgICBpZiAoZWMpCkBAIC0zMzYsNyArMzM2LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIGN1cnNvci0+Y29udGludWVGdW5jdGlvbihzdGF0aWNfY2FzdDxJREJL
ZXkqPigwKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAKICAgICAgICAgICAgIFJlZlB0cjxJREJL
ZXk+IHByaW1hcnlLZXkgPSBjdXJzb3ItPmlkYlByaW1hcnlLZXkoKTsKLSAgICAgICAgICAgIFNj
cmlwdFZhbHVlIHZhbHVlID0gY3Vyc29yLT52YWx1ZSgpOworICAgICAgICAgICAgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUgdmFsdWUgPSBjdXJzb3ItPnZhbHVlKCk7CiAKICAgICAgICAgICAgIElE
Qk9iamVjdFN0b3JlOjpJbmRleEtleXMgaW5kZXhLZXlzOwogICAgICAgICAgICAgZ2VuZXJhdGVJ
bmRleEtleXNGb3JWYWx1ZShyZXF1ZXN0LT5yZXF1ZXN0U3RhdGUoKSwgbV9pbmRleE1ldGFkYXRh
LCB2YWx1ZSwgJmluZGV4S2V5cyk7CkBAIC01MDIsNyArNTAyLDcgQEAgUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXgKICAgICByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCBrZXlSYW5nZSwgSURCQ3Vy
c29yOjpkaXJlY3Rpb25OZXh0KCksIGVjKTsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJ
REJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8
SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CiAgICAgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwga2V5LCBJREJD
dXJzb3I6OmRpcmVjdGlvbk5leHQoKSwgZWMpOwogfQpAQCAtNTM0LDcgKzUzNCw3IEBAIFBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4CiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwogfQogCi1Q
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0
cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVz
dD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBk
aXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFJlZlB0cjxJREJLZXlSYW5nZT4g
a2V5UmFuZ2UgPSBJREJLZXlSYW5nZTo6b25seShjb250ZXh0LCBrZXksIGVjKTsKICAgICBpZiAo
ZWMpCkBAIC01NTgsNyArNTU4LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RT
dG9yZTo6Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGEKICAgICByZXR1
cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2Jq
ZWN0U3RvcmU6OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNj
cmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0
PiBJREJPYmplY3RTdG9yZTo6Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Y29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CiAgICAgUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSA9IElEQktleVJhbmdlOjpvbmx5KGNv
bnRleHQsIGtleSwgZWMpOwogICAgIGlmIChlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCmluZGV4IGZmZjVmZjkuLmRhNjVhMDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
aApAQCAtNjUsMjEgKzY1LDIxIEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uPiB0cmFuc2FjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNhY3Rpb247IH0KICAgICBi
b29sIGF1dG9JbmNyZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhLmF1dG9JbmNyZW1l
bnQ7IH0KIAotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gYWRkKEpTQzo6RXhlY1N0YXRlKiwg
U2NyaXB0VmFsdWUmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0
PiBwdXQoSlNDOjpFeGVjU3RhdGUqLCBTY3JpcHRWYWx1ZSYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGFkZChKU0M6OkV4ZWNTdGF0ZSosIERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVz
dD4gcHV0KEpTQzo6RXhlY1N0YXRlKiwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBFeGNlcHRp
b25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3Bl
bkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwg
RXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtl
eSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNv
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIGNvbnN0
IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElE
QktleVJhbmdlPiwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIElEQkRhdGFiYXNlQmFja2VuZDo6
VGFza1R5cGUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9w
ZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXks
IGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhj
ZXB0aW9uQ29kZSYpOwogCi0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBnZXQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Y29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOwogICAg
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZ2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNz
UmVmUHRyPElEQktleVJhbmdlPiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURC
UmVxdWVzdD4gYWRkKEpTQzo6RXhlY1N0YXRlKiwgU2NyaXB0VmFsdWUmLCBjb25zdCBTY3JpcHRW
YWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBw
dXQoSlNDOjpFeGVjU3RhdGUqLCBTY3JpcHRWYWx1ZSYsIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXks
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGFkZChKU0M6OkV4
ZWNTdGF0ZSosIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVz
dD4gcHV0KEpTQzo6RXhlY1N0YXRlKiwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IGRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25z
dCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gY2xlYXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNv
ZGUmKTsKIAogICAgIFBhc3NSZWZQdHI8SURCSW5kZXg+IGNyZWF0ZUluZGV4KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBr
ZXlQYXRoLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBFeGNlcHRpb25Db2RlJiBlYykgeyBy
ZXR1cm4gY3JlYXRlSW5kZXgoY29udGV4dCwgbmFtZSwgSURCS2V5UGF0aChrZXlQYXRoKSwgb3B0
aW9ucywgZWMpOyB9CkBAIC05MiwxMCArOTIsMTAgQEAgcHVibGljOgogCiAgICAgUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNl
cHRpb25Db2RlJiBlYykgeyByZXR1cm4gY291bnQoY29udGV4dCwgc3RhdGljX2Nhc3Q8SURCS2V5
UmFuZ2UqPigwKSwgZWMpOyB9CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIEV4Y2VwdGlvbkNv
ZGUmKTsKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBwdXQoSURCRGF0YWJhc2VCYWNrZW5kOjpQdXRNb2RlLCBQYXNz
UmVmUHRyPElEQkFueT4gc291cmNlLCBKU0M6OkV4ZWNTdGF0ZSosIFNjcmlwdFZhbHVlJiwgY29u
c3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURC
UmVxdWVzdD4gcHV0KElEQkRhdGFiYXNlQmFja2VuZDo6UHV0TW9kZSwgUGFzc1JlZlB0cjxJREJB
bnk+IHNvdXJjZSwgSlNDOjpFeGVjU3RhdGUqLCBTY3JpcHRWYWx1ZSYsIFBhc3NSZWZQdHI8SURC
S2V5PiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gcHV0KElE
QkRhdGFiYXNlQmFja2VuZDo6UHV0TW9kZSwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgSlND
OjpFeGVjU3RhdGUqLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IHB1dChJREJEYXRhYmFzZUJhY2tlbmQ6OlB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQW55
PiBzb3VyY2UsIEpTQzo6RXhlY1N0YXRlKiwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBQYXNz
UmVmUHRyPElEQktleT4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIG1hcmtEZWxldGVkKCkg
eyBtX2RlbGV0ZWQgPSB0cnVlOyB9CiAgICAgdm9pZCB0cmFuc2FjdGlvbkZpbmlzaGVkKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKaW5k
ZXggMDA0OWVkYS4uZDU2NDYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCUmVxdWVzdC5jcHAKQEAgLTIxMyw3ICsyMTMsNyBAQCBQYXNzUmVmUHRyPElEQkN1
cnNvcj4gSURCUmVxdWVzdDo6Z2V0UmVzdWx0Q3Vyc29yKCkKICAgICByZXR1cm4gMDsKIH0KIAot
dm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHRDdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3I+IGN1
cnNvciwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlL
ZXksIGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1ZSkKK3ZvaWQgSURCUmVxdWVzdDo6c2V0UmVzdWx0
Q3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yPiBjdXJzb3IsIFBhc3NSZWZQdHI8SURCS2V5PiBr
ZXksIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYgdmFsdWUpCiB7CiAgICAgQVNTRVJUKG1fcmVhZHlTdGF0ZSA9PSBQRU5ESU5HKTsK
ICAgICBtX2N1cnNvcktleSA9IGtleTsKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIElEQlJlcXVl
c3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmQ+IGJhY2tlbmQsIFBhc3NS
ZWZQdHI8SURCSwogICAgICAgICByZXR1cm47CiAKICAgICBET01SZXF1ZXN0U3RhdGU6OlNjb3Bl
IHNjb3BlKG1fcmVxdWVzdFN0YXRlKTsKLSAgICBTY3JpcHRWYWx1ZSB2YWx1ZSA9IGRlc2VyaWFs
aXplSURCVmFsdWVCdWZmZXIocmVxdWVzdFN0YXRlKCksIGJ1ZmZlcik7CisgICAgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKHJlcXVlc3RT
dGF0ZSgpLCBidWZmZXIpOwogICAgIEFTU0VSVCghbV9wZW5kaW5nQ3Vyc29yKTsKICAgICBSZWZQ
dHI8SURCQ3Vyc29yPiBjdXJzb3I7CiAgICAgc3dpdGNoIChtX2N1cnNvclR5cGUpIHsKQEAgLTMy
MSw3ICszMjEsNyBAQCB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gdmFsdWVCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIERPTVJlcXVlc3RT
dGF0ZTo6U2NvcGUgc2NvcGUobV9yZXF1ZXN0U3RhdGUpOwotICAgIFNjcmlwdFZhbHVlIHZhbHVl
ID0gZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihyZXF1ZXN0U3RhdGUoKSwgdmFsdWVCdWZmZXIp
OworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHZhbHVlID0gZGVzZXJpYWxpemVJREJWYWx1
ZUJ1ZmZlcihyZXF1ZXN0U3RhdGUoKSwgdmFsdWVCdWZmZXIpOwogICAgIG9uU3VjY2Vzc0ludGVy
bmFsKHZhbHVlKTsKIH0KIApAQCAtMzQ4LDcgKzM0OCw3IEBAIHZvaWQgSURCUmVxdWVzdDo6b25T
dWNjZXNzKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZUJ1ZmZlciwgUGFzc1JlZlB0cjxJ
REJLCiAgICAgQVNTRVJUKGtleVBhdGggPT0gZWZmZWN0aXZlT2JqZWN0U3RvcmUobV9zb3VyY2Up
LT5rZXlQYXRoKCkpOwogI2VuZGlmCiAgICAgRE9NUmVxdWVzdFN0YXRlOjpTY29wZSBzY29wZSht
X3JlcXVlc3RTdGF0ZSk7Ci0gICAgU2NyaXB0VmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZh
bHVlQnVmZmVyKHJlcXVlc3RTdGF0ZSgpLCB2YWx1ZUJ1ZmZlcik7CisgICAgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKHJlcXVlc3RTdGF0
ZSgpLCB2YWx1ZUJ1ZmZlcik7CiAKICAgICBSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5ID0gcHJw
UHJpbWFyeUtleTsKICNpZm5kZWYgTkRFQlVHCkBAIC0zODMsNyArMzgzLDcgQEAgdm9pZCBJREJS
ZXF1ZXN0OjpvblN1Y2Nlc3NJbnRlcm5hbChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gdmFsdWUpCiAgICAgcmV0dXJuIG9uU3VjY2Vzc0ludGVybmFsKGRlc2VyaWFsaXplSURCVmFs
dWUocmVxdWVzdFN0YXRlKCksIHZhbHVlKSk7CiB9CiAKLXZvaWQgSURCUmVxdWVzdDo6b25TdWNj
ZXNzSW50ZXJuYWwoY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVlKQordm9pZCBJREJSZXF1ZXN0Ojpv
blN1Y2Nlc3NJbnRlcm5hbChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUpCiB7
CiAgICAgbV9yZXN1bHQgPSBJREJBbnk6OmNyZWF0ZSh2YWx1ZSk7CiAgICAgaWYgKG1fcGVuZGlu
Z0N1cnNvcikgewpAQCAtNDAwLDcgKzQwMCw3IEBAIHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNz
KFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5CiAg
ICAgICAgIHJldHVybjsKIAogICAgIERPTVJlcXVlc3RTdGF0ZTo6U2NvcGUgc2NvcGUobV9yZXF1
ZXN0U3RhdGUpOwotICAgIFNjcmlwdFZhbHVlIHZhbHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZUJ1
ZmZlcihyZXF1ZXN0U3RhdGUoKSwgYnVmZmVyKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSB2YWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIocmVxdWVzdFN0YXRlKCksIGJ1ZmZl
cik7CiAgICAgQVNTRVJUKG1fcGVuZGluZ0N1cnNvcik7CiAgICAgc2V0UmVzdWx0Q3Vyc29yKG1f
cGVuZGluZ0N1cnNvci5yZWxlYXNlKCksIGtleSwgcHJpbWFyeUtleSwgdmFsdWUpOwogICAgIGVu
cXVldWVFdmVudChjcmVhdGVTdWNjZXNzRXZlbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKaW5kZXggNDMwNTg5ZS4uYWM3NWRhNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaApAQCAtMTIwLDcg
KzEyMCw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2
ZW50Pik7CiAgICAgdmlydHVhbCBib29sIHNob3VsZEVucXVldWVFdmVudCgpIGNvbnN0OwogICAg
IHZvaWQgb25TdWNjZXNzSW50ZXJuYWwoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
KTsKLSAgICB2b2lkIG9uU3VjY2Vzc0ludGVybmFsKGNvbnN0IFNjcmlwdFZhbHVlJik7CisgICAg
dm9pZCBvblN1Y2Nlc3NJbnRlcm5hbChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYpOwog
CiAgICAgUmVmUHRyPElEQkFueT4gbV9yZXN1bHQ7CiAgICAgdW5zaWduZWQgc2hvcnQgbV9lcnJv
ckNvZGU7CkBAIC0xNDAsNyArMTQwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGVy
ZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgZGVyZWYoKTsgfQogCiAgICAgUGFzc1Jl
ZlB0cjxJREJDdXJzb3I+IGdldFJlc3VsdEN1cnNvcigpOwotICAgIHZvaWQgc2V0UmVzdWx0Q3Vy
c29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRy
PElEQktleT4gcHJpbWFyeUtleSwgY29uc3QgU2NyaXB0VmFsdWUmKTsKKyAgICB2b2lkIHNldFJl
c3VsdEN1cnNvcihQYXNzUmVmUHRyPElEQkN1cnNvcj4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFz
c1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
Jik7CiAKICAgICBSZWZQdHI8SURCQW55PiBtX3NvdXJjZTsKICAgICBjb25zdCBJREJEYXRhYmFz
ZUJhY2tlbmQ6OlRhc2tUeXBlIG1fdGFza1R5cGU7CkBAIC0xNTUsNyArMTU1LDcgQEAgcHJpdmF0
ZToKICAgICBSZWZQdHI8SURCQ3Vyc29yPiBtX3BlbmRpbmdDdXJzb3I7CiAgICAgUmVmUHRyPElE
QktleT4gbV9jdXJzb3JLZXk7CiAgICAgUmVmUHRyPElEQktleT4gbV9jdXJzb3JQcmltYXJ5S2V5
OwotICAgIFNjcmlwdFZhbHVlIG1fY3Vyc29yVmFsdWU7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUgbV9jdXJzb3JWYWx1ZTsKICAgICBib29sIG1fZGlkRmlyZVVwZ3JhZGVOZWVkZWRFdmVu
dDsKICAgICBib29sIG1fcHJldmVudFByb3BhZ2F0aW9uOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5jcHAKaW5kZXggMGQz
ZDI2ZS4uNmMxMjVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9DYXBhYmlsaXR5UmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiAjaW5jbHVk
ZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFTb3VyY2VTdGF0ZXMuaCIKLSNpbmNs
dWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAj
aW5jbHVkZSA8aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0NK
U1ZhbHVlLmg+CiAKQEAgLTUwLDcgKzUwLDcgQEAgQ2FwYWJpbGl0eVJhbmdlOjpDYXBhYmlsaXR5
UmFuZ2UoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UmIHJhbmdlSW4KIHsK
IH0KIAotc3RhdGljIFNjcmlwdFZhbHVlIHNjcmlwdFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2U6OlZhbHVlVW5pb24mIHZhbHVlLCBN
ZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZTo6VHlwZSB0eXBlKQorc3RhdGljIERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlIHNjcmlwdFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTWVk
aWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2U6OlZhbHVlVW5pb24mIHZhbHVlLCBNZWRpYVN0
cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZTo6VHlwZSB0eXBlKQogewogICAgIC8vIE5PVEU6IHRo
ZSBzcGVjIHNheXM6CiAgICAgLy8gICAgICAuLi4gYW4gaW1wbGVtZW50YXRpb24gc2hvdWxkIG1h
a2UgYSByZWFzb25hYmxlIGF0dGVtcHQgdG8gdHJhbnNsYXRlIGFuZCBzY2FsZSB0aGUgaGFyZHdh
cmUncyBzZXR0aW5nCkBAIC02MywyNiArNjMsMjYgQEAgc3RhdGljIFNjcmlwdFZhbHVlIHNjcmlw
dFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXQK
ICAgICAKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlQ2Fw
YWJpbGl0eVJhbmdlOjpGbG9hdDoKLSAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKGV4ZWMtPnZt
KCksIEpTVmFsdWUodmFsdWUuYXNGbG9hdCkpOworICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwgSlNWYWx1ZSh2YWx1ZS5hc0Zsb2F0KSk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2U6OlVMb25n
OgotICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwgSlNWYWx1ZSh2YWx1ZS5h
c1VMb25nKSk7CisgICAgICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShleGVjLT52
bSgpLCBKU1ZhbHVlKHZhbHVlLmFzVUxvbmcpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBN
ZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZTo6VW5kZWZpbmVkOgotICAgICAgICByZXR1
cm4gU2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwganNVbmRlZmluZWQoKSk7CisgICAgICAgIHJldHVy
biBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBqc1VuZGVmaW5lZCgpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIFNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIGpzVW5kZWZpbmVkKCkpOworICAgIHJldHVybiBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBqc1VuZGVmaW5lZCgpKTsKIH0KIAot
U2NyaXB0VmFsdWUgQ2FwYWJpbGl0eVJhbmdlOjptaW4oRXhlY1N0YXRlKiBleGVjKSBjb25zdAor
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgQ2FwYWJpbGl0eVJhbmdlOjptaW4oRXhlY1N0YXRlKiBl
eGVjKSBjb25zdAogewogICAgIHJldHVybiBzY3JpcHRWYWx1ZShleGVjLCBtX3JhbmdlSW5mby5t
aW4oKSwgbV9yYW5nZUluZm8udHlwZSgpKTsKIH0KIAotU2NyaXB0VmFsdWUgQ2FwYWJpbGl0eVJh
bmdlOjptYXgoRXhlY1N0YXRlKiBleGVjKSBjb25zdAorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUg
Q2FwYWJpbGl0eVJhbmdlOjptYXgoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogewogICAgIHJldHVy
biBzY3JpcHRWYWx1ZShleGVjLCBtX3JhbmdlSW5mby5tYXgoKSwgbV9yYW5nZUluZm8udHlwZSgp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2Fw
YWJpbGl0eVJhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFi
aWxpdHlSYW5nZS5oCmluZGV4IDM2ODQwNjYuLjkwNWFlM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaApAQCAtMzAsOCAr
MzAsOCBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKICNpbmNsdWRlICJNZWRpYVN0cmVh
bVNvdXJjZUNhcGFiaWxpdGllcy5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0V3JhcHBhYmxlLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4K
ICNpbmNsdWRlIDxpbnRlcnByZXRlci9DYWxsRnJhbWUuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCkBAIC00Myw4ICs0Myw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZWZQdHI8
Q2FwYWJpbGl0eVJhbmdlPiBjcmVhdGUoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5
UmFuZ2UmKTsKIAotICAgIFNjcmlwdFZhbHVlIG1pbihKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0Owot
ICAgIFNjcmlwdFZhbHVlIG1heChKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0OworICAgIERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlIG1pbihKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0OworICAgIERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlIG1heChKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0OwogICAgIGJvb2wgc3Vw
cG9ydGVkKCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZUluZm8uc3VwcG9ydGVkKCk7IH0KIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFUcmFja0NvbnN0cmFpbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFUcmFja0NvbnN0cmFpbnQuaAppbmRleCBmZDI5NDgxLi4yYTkzZmM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29u
c3RyYWludC5oCkBAIC0zMyw5ICszMywxMSBAQAogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5o
IgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQor
bmFtZXNwYWNlIERlcHJlY2F0ZWQgewogY2xhc3MgU2NyaXB0VmFsdWU7Cit9CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFUcmFja0NvbnN0cmFpbnQgOiBwdWJsaWMgUmVmQ291
bnRlZDxNZWRpYVRyYWNrQ29uc3RyYWludD4sIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUgewogcHVi
bGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGlt
ZVBsdWdpblJlcGxhY2VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9R
dWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAKaW5kZXggODJiODZlOS4uMGMyOTM2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJl
cGxhY2VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tU
aW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwCkBAIC00MSw3ICs0MSw2IEBACiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9s
bGVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNl
Q29kZS5oIgogI2luY2x1ZGUgIlVzZXJBZ2VudFNjcmlwdHMuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9BUElDYXN0Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bs
dWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oCmluZGV4IGRhYWU3YjEuLjVh
MTkwN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1Rp
bWVQbHVnaW5SZXBsYWNlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lu
cy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNs
dWRlICJQbHVnaW5SZXBsYWNlbWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCi0jaW5j
bHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3QuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9Vc2VKU0MuY21ha2UKaW5kZXggYTk3MWZhMC4uMGU4ZmY5MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5j
bWFrZQpAQCAtMTI1LDExICsxMjUsMTAgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKICAgICBiaW5kaW5ncy9qcy9TY3Jp
cHREZWJ1Z1NlcnZlci5jcHAKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuY3Bw
Ci0gICAgYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNwcAorICAgIGJpbmRpbmdzL2pzL1Njcmlw
dEdsb2JhbE9iamVjdC5jcHAKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmNwcAogICAg
IGJpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmNwcAogICAgIGJpbmRpbmdzL2pzL1NjcmlwdFN0
YXRlLmNwcAotICAgIGJpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcAogICAgIGJpbmRpbmdzL2pz
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKICAgICBiaW5kaW5ncy9qcy9XZWJDb3JlVHlwZWRB
cnJheUNvbnRyb2xsZXIuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggMzEzZGE3YS4uY2E3
YmRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTE0MzAsNyArMTQzMCw2IEBAIF9fWk5LN1dl
YkNvcmUxMVJlbmRlckxheWVyMjRuZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmdFdgogX19aTks3V2Vi
Q29yZTExUmVuZGVyU3R5bGUxMWZvbnRNZXRyaWNzRXYKIF9fWk5LN1dlYkNvcmUxMVJlbmRlclN0
eWxlMjF2aXNpdGVkRGVwZW5kZW50Q29sb3JFaQogX19aTks3V2ViQ29yZTExUmVuZGVyU3R5bGU0
Zm9udEV2Ci1fX1pOSzdXZWJDb3JlMTFTY3JpcHRWYWx1ZTlnZXRTdHJpbmdFUE4zSlNDOUV4ZWNT
dGF0ZUVSTjNXVEY2U3RyaW5nRQogX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTRlbmNsb3Np
bmdMYXllckV2CiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QxNWxvY2FsVG9BYnNvbHV0ZUVS
S05TXzEwRmxvYXRQb2ludEVqCiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QxNnJlcGFpbnRS
ZWN0YW5nbGVFUktOU18xMExheW91dFJlY3RFYgpAQCAtMTUwMiw3ICsxNTAxLDYgQEAgX19aTks3
V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb24zMWdldENsaXBwZWRWaXNpYmxlVGV4dFJlY3RhbmdsZXNF
Uk4zV1RGNlZlY3RvcklOU18KIF9fWk5LN1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uMzZyb290RWRp
dGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnRFdgogX19aTks3V2ViQ29yZTE0RnJhbWVTZWxl
Y3Rpb242Ym91bmRzRWIKIF9fWk5LN1dlYkNvcmUxNEluc2VydGlvblBvaW50OGlzQWN0aXZlRXYK
LV9fWk5LN1dlYkNvcmUxNEluc3BlY3RvclZhbHVlMTJ0b0pTT05TdHJpbmdFdgogX19aTks3V2Vi
Q29yZTE0UmVuZGVyTGlzdEl0ZW0xMG1hcmtlclRleHRFdgogX19aTks3V2ViQ29yZTE0UmVzb3Vy
Y2VCdWZmZXI0ZGF0YUV2CiBfX1pOSzdXZWJDb3JlMTRSZXNvdXJjZUJ1ZmZlcjRzaXplRXYKQEAg
LTI2MjUsNyArMjYyMyw3IEBAIF9fWk43V2ViQ29yZTE2SFRNTElucHV0RWxlbWVudDI1c2VsZWN0
Q29sb3JJbkNvbG9yQ2hvb3NlckVSS05TXzVDb2xvckUKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQog
X19aTjdXZWJDb3JlMTVJbnNwZWN0b3JDbGllbnQzMWRvRGlzcGF0Y2hNZXNzYWdlT25Gcm9udGVu
ZFBhZ2VFUE5TXzRQYWdlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTdJbnNwZWN0b3JD
b3VudGVyczEyY291bnRlclZhbHVlRU5TMF8xMUNvdW50ZXJUeXBlRQotX19aTjdXZWJDb3JlMTlJ
bnNwZWN0b3JDb250cm9sbGVyMTVjb25uZWN0RnJvbnRlbmRFUE5TXzI0SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsRQorX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMTVjb25uZWN0RnJv
bnRlbmRFUE45SW5zcGVjdG9yMjRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxFCiBfX1pON1dlYkNv
cmUxOUluc3BlY3RvckNvbnRyb2xsZXIxOGRpc2Nvbm5lY3RGcm9udGVuZEV2CiBfX1pON1dlYkNv
cmUxOUluc3BlY3RvckNvbnRyb2xsZXIxOHNldFByb2ZpbGVyRW5hYmxlZEViCiBfX1pON1dlYkNv
cmUxOUluc3BlY3RvckNvbnRyb2xsZXIyNWV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmRFbFJLTjNX
VEY2U3RyaW5nRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dl
YkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2oKaW5kZXggYTNmODA5Ny4uN2FlZWJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC0xNzI5MCw3ICsxNzI5MCw3IEBACiAgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwv
Q2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0
T2JqZWN0LmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNj
cmlwdEdsb2JhbE9iamVjdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5k
aW5nc1xqc1xTY3JpcHRQcm9maWxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGJpbmRpbmdzXGpzXFNjcmlwdFByb2ZpbGVyLmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4z
MiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtMTczMjAsNyArMTczMjAsNiBAQAogICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8
L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlw
dFZhbHVlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgpAQCAtMTc2MzMsMTQgKzE3NjMyLDYgQEAKICAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1
Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1
Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+Ci0g
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQWdlbnRSZWdpc3Ry
eS5jcHAiPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
LSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5z
cGVjdG9yXEluc3BlY3RvckFsbEluT25lLmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMici
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC0xNzY1NywxNCArMTc2NDgsNiBAQAogICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGls
ZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlci5jcHAiPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckNhbnZhc0FnZW50LmNwcCI+CiAgICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtMTc5MDUsMTQgKzE3ODg4LDYg
QEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3Jc
SW5zcGVjdG9yVmFsdWVzLmNwcCI+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwIj4KICAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC0xODU3NSwxMSArMTg1
NTAsMTggQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVxXZWJDb3JlXERlcml2ZWRTb3VyY2VzXEpTV2Vi
R0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
YWNjZXNzaWJpbGl0eVxBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cY3NzXENTU0ltYWdlU2V0VmFsdWUuaCIgLz4KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzXFNjcmlwdE9iamVjdC5oIiAv
PgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3Nc
U2NyaXB0VmFsdWUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdI
ZWFkZXJzXGhlYXBcQWxsb2NhdGlvblNwYWNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xoZWFwXEhlYXAuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGhlYXBcU2xvdFZpc2l0b3IuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGhlYXBcU3Ryb25nSW5saW5l
cy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaGVh
cFxXZWFrLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVy
c1xpbnNwZWN0b3JcSW5zcGVjdG9yQWdlbnRCYXNlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yQWdlbnRSZWdpc3Ry
eS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5z
cGVjdG9yXEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVy
c1xpbnNwZWN0b3JcSW5zcGVjdG9yVmFsdWVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xtYXNtXFg4NkFzc2VtYmxlci5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNccGFyc2VyXFNvdXJjZUNvZGUuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXHBhcnNlclxT
b3VyY2VQcm92aWRlci5oIiAvPgpAQCAtMjA2MzAsMTMgKzIwNjEyLDEyIEBACiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHREZWJ1Z1NlcnZlci5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0RnVuY3Rpb25DYWxsLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRIZWFwU25h
cHNob3QuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlw
dE9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2Ny
aXB0R2xvYmFsT2JqZWN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5n
c1xqc1xTY3JpcHRQcm9maWxlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5k
aW5nc1xqc1xTY3JpcHRQcm9maWxlTm9kZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cYmluZGluZ3NcanNcU2NyaXB0UHJvZmlsZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdFNvdXJjZUNvZGUuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdFN0YXRlLmgiIC8+Ci0gICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRWYWx1ZS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0V3JhcHBhYmxlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNvdXJjZUlELmgiIC8+
CkBAIC0yMDk0Nyw4ICsyMDkyOCw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNw
ZWN0b3JcSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JBZ2VudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oIiAvPgotICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9y
QmFzZUFnZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5z
cGVjdG9yQ2FudmFzQWdlbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3Bl
Y3RvclxJbnNwZWN0b3JDYW52YXNJbnN0cnVtZW50YXRpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JDbGllbnQuaCIgLz4KQEAgLTIwOTg0LDcg
KzIwOTYzLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0
b3JTdHlsZVNoZWV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3Jc
SW5zcGVjdG9yU3R5bGVUZXh0RWRpdG9yLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxpbnNwZWN0b3JcSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIiAvPgotICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvclZhbHVlcy5oIiAvPgorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvcldlYkFnZW50QmFzZS5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvcldvcmtlckFnZW50Lmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yV29ya2Vy
UmVzb3VyY2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnN0
cnVtZW50aW5nQWdlbnRzLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggZjBiMDI2Ni4uYWJmNGE0YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
ai5maWx0ZXJzCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2ouZmlsdGVycwpAQCAtMjUzLDYgKzI1Myw5IEBACiAgICAgPEZpbHRlciBJbmNsdWRlPSJG
b3J3YXJkaW5nSGVhZGVycyI+CiAgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTUyMTZhNzAtYTNi
Mi00NTNjLWE2NmYtYTgxY2MxYWJlZmVlfTwvVW5pcXVlSWRlbnRpZmllcj4KICAgICA8L0ZpbHRl
cj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzIj4KKyAg
ICAgIDxVbmlxdWVJZGVudGlmaWVyPnsyMTM0MzEyNC0xMjM0LTQ1NDItYThhYS1lYmFjODc4MTIz
MTJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgogICAgIDxGaWx0ZXIgSW5jbHVk
ZT0iRm9yd2FyZGluZ0hlYWRlcnNceWFyciI+CiAgICAgICA8VW5pcXVlSWRlbnRpZmllcj57M2I5
YjE4MTktMWIzMS00NzcxLWIxMmEtMzJjMjEwZjg0NzZkfTwvVW5pcXVlSWRlbnRpZmllcj4KICAg
ICA8L0ZpbHRlcj4KQEAgLTQ1NjYsNyArNDU2OSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIj4KICAgICAgIDxGaWx0ZXI+
YmluZGluZ3NcanM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdE9iamVjdC5jcHAiPgorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0R2xvYmFsT2JqZWN0LmNwcCI+CiAgICAgICA8
RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRQcm9maWxlLmNwcCI+CkBAIC00NTc4
LDkgKzQ1ODEsNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2Ny
aXB0U3RhdGUuY3BwIj4KICAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4KICAgICA8
L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlw
dFZhbHVlLmNwcCI+Ci0gICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+Ci0gICAgPC9D
bENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwIj4KICAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4K
ICAgICA8L0NsQ29tcGlsZT4KQEAgLTQ4MjQsMTggKzQ4MjQsMTIgQEAKICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JBZ2VudC5jcHAiPgogICAgICAgPEZpbHRl
cj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcCI+Ci0gICAgICA8
RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckFsbEluT25lLmNwcCI+CiAgICAgICA8
RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5j
cHAiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4K
LSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlci5jcHAiPgotICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KLSAgICA8L0Ns
Q29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JD
YW52YXNBZ2VudC5jcHAiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8
L0NsQ29tcGlsZT4KQEAgLTQ5MjYsOSArNDkyMCw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAiPgogICAgICAgPEZpbHRl
cj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JWYWx1ZXMuY3BwIj4KLSAgICAgIDxGaWx0ZXI+
aW5zcGVjdG9yPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwIj4KICAgICAgIDxGaWx0
ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0xMTUxNyw3ICsxMTUw
OCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRIZWFw
U25hcHNob3QuaCI+CiAgICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAgICAgPC9D
bEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRP
YmplY3QuaCI+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRH
bG9iYWxPYmplY3QuaCI+CiAgICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3Jp
cHRQcm9maWxlLmgiPgpAQCAtMTE1MzUsOSArMTE1MjYsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0U3RhdGUuaCI+CiAgICAgICA8RmlsdGVyPmJpbmRp
bmdzXGpzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRWYWx1ZS5oIj4KLSAgICAgIDxGaWx0ZXI+YmluZGluZ3Nc
anM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGJpbmRpbmdzXGpzXFNjcmlwdFdyYXBwYWJsZS5oIj4KICAgICAgIDxGaWx0ZXI+YmluZGluZ3Nc
anM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTEyMTk1LDYgKzEyMTgzLDEyIEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxzdmdccHJvcGVydGllc1xTVkdUcmFuc2Zvcm1MaXN0
UHJvcGVydHlUZWFyT2ZmLmgiPgogICAgICAgPEZpbHRlcj5yZW5kZXJpbmdcc3ZnXHByb3BlcnRp
ZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XEZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzXFNjcmlwdE9iamVjdC5oIj4KKyAgICAgIDxGaWx0
ZXI+Rm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3M8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzXFNj
cmlwdFZhbHVlLmgiPgorICAgICAgPEZpbHRlcj5Gb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5nczwv
RmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9y
d2FyZGluZ0hlYWRlcnNccnVudGltZVxBcmdMaXN0LmgiPgogICAgICAgPEZpbHRlcj5Gb3J3YXJk
aW5nSGVhZGVyc1xydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0xMjI0MCw5
ICsxMjIzNCwyMSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRl
cnNcaGVhcFxTdHJvbmcuaCI+CiAgICAgICA8RmlsdGVyPkZvcndhcmRpbmdIZWFkZXJzXGhlYXA8
L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZv
cndhcmRpbmdIZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JBZ2VudEJhc2UuaCI+CisgICAgICA8
RmlsdGVyPkZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNs
dWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVj
dG9yXEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCI+CisgICAgICA8RmlsdGVyPkZvcndhcmRpbmdI
ZWFkZXJzXGluc3BlY3RvcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyLmgiPgorICAgICAgPEZpbHRlcj5Gb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0
b3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XEZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCI+
CiAgICAgICA8RmlsdGVyPkZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvcjwvRmlsdGVyPgogICAg
IDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRl
cnNcaW5zcGVjdG9yXEluc3BlY3RvclZhbHVlcy5oIj4KKyAgICAgIDxGaWx0ZXI+Rm9yd2FyZGlu
Z0hlYWRlcnNcaW5zcGVjdG9yPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxoaXN0b3J5XEJhY2tGb3J3YXJkQ2xpZW50LmgiPgogICAgICAgPEZp
bHRlcj5oaXN0b3J5PC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0xMjM5NiwxMiArMTI0
MDIsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5oIj4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+
CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3Jc
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCI+Ci0gICAgICA8RmlsdGVyPmluc3BlY3Rvcjwv
RmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5z
cGVjdG9yXEluc3BlY3RvckJhc2VBZ2VudC5oIj4KLSAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9G
aWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNw
ZWN0b3JcSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3Rvcjwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMTI1MDcsNyArMTI1MDcsNyBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCI+
CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvclZhbHVlcy5oIj4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JXZWJBZ2VudEJhc2Uu
aCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvcldvcmtlckFnZW50
LmgiPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDY5NTViYjQuLjI1ZTA1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyOTEsOCArMTI5MSw4IEBACiAJCTQx
RjA2MThGMEY1RjA2OTgwMEEwN0VBQyAvKiBDb25zb2xlTWVzc2FnZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjE4RDBGNUYwNjk4MDBBMDdF
QUMgLyogQ29uc29sZU1lc3NhZ2UuY3BwICovOyB9OwogCQk0MUYwNjIxNDBGNUYxOTI2MDBBMDdF
QUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGMDYyMTIwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3Bl
Y3RvckRhdGFiYXNlUmVzb3VyY2UuaCAqLzsgfTsKIAkJNDFGMDYyMTUwRjVGMTkyNjAwQTA3RUFD
IC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGMDYyMTMwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3Bl
Y3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwICovOyB9OwotCQk0MUYwNjZFNDBGNjRCQ0Y2MDBBMDdF
QUMgLyogU2NyaXB0T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUYwNjZFMjBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0T2JqZWN0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDFGMDY2RTUw
RjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdE9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjZFMzBGNjRCQ0Y2MDBBMDdFQUMgLyogU2Ny
aXB0T2JqZWN0LmNwcCAqLzsgfTsKKwkJNDFGMDY2RTQwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlw
dEdsb2JhbE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDFGMDY2RTIwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdEdsb2JhbE9iamVjdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxRjA2NkU1
MEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRHbG9iYWxPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGMDY2RTMwRjY0QkNGNjAwQTA3RUFD
IC8qIFNjcmlwdEdsb2JhbE9iamVjdC5jcHAgKi87IH07CiAJCTQxRjFEMjFGMEVGMzVDMkEwMERB
ODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjFEMjFEMEVGMzVDMkEwMERBODc1MyAvKiBTY3JpcHRD
YWNoZWRGcmFtZURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0MUYxRDIyMDBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVE
YXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
RjFEMjFFMEVGMzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwICovOyB9
OwogCQk0MUY1ODRDNzEwNDY1MkNCMDA5Q0FBNjQgLyogSlNNZXNzYWdlUG9ydEN1c3RvbS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGNTg0QzYxMDQ2
NTJDQjAwOUNBQTY0IC8qIEpTTWVzc2FnZVBvcnRDdXN0b20uaCAqLzsgfTsKQEAgLTE2MDUsOCAr
MTYwNSw2IEBACiAJCTRGMTUzNEUwMTFCNTMzMDIwMDIxRkQ4NiAvKiBFZGl0aW5nQmVoYXZpb3JU
eXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYx
NTM0REYxMUI1MzMwMjAwMjFGRDg2IC8qIEVkaXRpbmdCZWhhdmlvclR5cGVzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEYyRDIwNTQxMkVBRTdC
MzAwNUMyODc0IC8qIEluc3BlY3RvckFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0RjJEMjA1MjEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9y
QWdlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0RjJEMjA1NTEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYyRDIwNTMxMkVBRTdCMzAw
NUMyODc0IC8qIEluc3BlY3RvckFnZW50LmNwcCAqLzsgfTsKLQkJNEYzMjg5QjUxMUE0MkFBQjAw
NUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0RjMyODlCMzExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9y
VmFsdWVzLmNwcCAqLzsgfTsKLQkJNEYzMjg5QjYxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3Rv
clZhbHVlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NEYzMjg5QjQxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRGNEY1RkZCMTFDQkQyRTEw
MEExODZCRiAvKiBJbnNwZWN0b3JGcm9udGVuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjRGNUZGQTExQ0JEMkQyMDBBMTg2QkYgLyogSW5zcGVj
dG9yRnJvbnRlbmQuY3BwICovOyB9OwogCQk0RjZGREQ2NDEzNDFERUREMDAxRjhFRTMgLyogSW5z
cGVjdG9yUGFnZUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDRGNkZERDYyMTM0MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwICovOyB9OwogCQk0RjZGREQ2NTEzNDFERUREMDAxRjhFRTMgLyogSW5zcGVjdG9yUGFnZUFn
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjZG
REQ2MzEzNDFERUREMDAxRjhFRTMgLyogSW5zcGVjdG9yUGFnZUFnZW50LmggKi87IH07CkBAIC0y
MTk3LDcgKzIxOTUsNiBAQAogCQk3QTc0RUNCQjEwMTgzOUE2MDBCRjkzOUUgLyogSW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QTc0RUNCOTEwMTgzOUE2MDBCRjkzOUUgLyogSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50LmggKi87IH07CiAJCTdBNzRFQ0JEMTAxODM5REEwMEJGOTM5RSAvKiBKU0luc3BlY3RvckZy
b250ZW5kSG9zdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QTc0RUNCQzEwMTgzOURBMDBCRjkzOUUgLyogSlNJbnNwZWN0b3JGcm9udGVu
ZEhvc3RDdXN0b20uY3BwICovOyB9OwogCQk3QUEzNjVFRTEyRTcyNjU0MDBEQ0EyNDIgLyogSW5z
cGVjdG9yUnVudGltZUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdBQTM2NUVEMTJFNzI2NTQwMERDQTI0MiAvKiBJbnNwZWN0b3JSdW50aW1l
QWdlbnQuY3BwICovOyB9OwotCQk3QUE1MUI2RTE0ODNCNjE2MDBBRDI3NTIgLyogSW5zcGVjdG9y
QmFzZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QUE1MUI2QzE0ODNCNjE2MDBBRDI3NTIgLyogSW5zcGVjdG9yQmFzZUFnZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0FBNTFERDUxNDg1
MDZBOTAwQUQyNzUyIC8qIEluc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQTUxREQzMTQ4NTA2QTkwMEFEMjc1MiAv
KiBJbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgKi87IH07CiAJCTdBQTUxREQ2MTQ4NTA2QTkwMEFE
Mjc1MiAvKiBJbnNwZWN0b3JNZW1vcnlBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0FBNTFERDQxNDg1MDZBOTAwQUQyNzUyIC8qIEluc3BlY3Rv
ck1lbW9yeUFnZW50LmggKi87IH07CiAJCTdBQUJBMjU5MTRCQzYxMzMwMEFBOUExMSAvKiBET01F
ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0FBQkEyNTcxNEJDNjEzMzAwQUE5QTExIC8qIERPTUVkaXRvci5jcHAgKi87IH07CkBAIC0zMDE3
LDggKzMwMTQsNiBAQAogCQk5MzQ0MkM5RTBEMkIzMzVDMDAzMzhGRjkgLyogSFRNTFRhYmxlUm93
c0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzNDQyQzlEMEQyQjMzNUMwMDMzOEZGOSAvKiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5o
ICovOyB9OwogCQk5MzQ0MkNBMDBEMkIzMzYwMDAzMzhGRjkgLyogSFRNTFRhYmxlUm93c0NvbGxl
Y3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTM0NDJDOUYwRDJCMzM2MDAwMzM4RkY5IC8qIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcCAq
LzsgfTsKIAkJOTM0OTA3RTQxMjVCQkJDODAwN0YyM0EwIC8qIEdyYXBoaWNzQ29udGV4dENHLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzQ5MDdFMzEy
NUJCQkM4MDA3RjIzQTAgLyogR3JhcGhpY3NDb250ZXh0Q0cuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk5MzRDQzBFMTBFRDM5RDZGMDBBNjU4RjIg
LyogU2NyaXB0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTM0Q0MwREYwRUQzOUQ2RjAwQTY1OEYyIC8qIFNjcmlwdFZhbHVlLmNwcCAqLzsg
fTsKLQkJOTM0Q0MwRTIwRUQzOUQ2RjAwQTY1OEYyIC8qIFNjcmlwdFZhbHVlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzRDQzBFMDBFRDM5RDZGMDBB
NjU4RjIgLyogU2NyaXB0VmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk5MzRDQzEwQTBFREIyMjM5MDBBNjU4RjIgLyogU2NyaXB0U291cmNl
Q29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0
Q0MxMDkwRURCMjIzOTAwQTY1OEYyIC8qIFNjcmlwdFNvdXJjZUNvZGUuaCAqLzsgfTsKIAkJOTM0
RDlCQTUwQjhDMTE2QjAwN0I0MkE5IC8qIFdlYkNvcmVOU1N0cmluZ0V4dHJhcy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNEQ5QkE0MEI4QzExNkIw
MDdCNDJBOSAvKiBXZWJDb3JlTlNTdHJpbmdFeHRyYXMubW0gKi87IH07CiAJCTkzNEQ5QkE3MEI4
QzExNzUwMDdCNDJBOSAvKiBXZWJDb3JlTlNTdHJpbmdFeHRyYXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNEQ5QkE2MEI4QzExNzUwMDdCNDJBOSAv
KiBXZWJDb3JlTlNTdHJpbmdFeHRyYXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMzUyMCwxNSArMzUxNSwxMiBAQAogCQlBNTEzQjNEODExNEIx
NjZBMDAxQzQyOUIgLyogS2V5RXZlbnRDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1Qzk3NEQwMTE0ODVGRjEwMDY2RjJBQiAvKiBLZXlFdmVu
dENvY29hLm1tICovOyB9OwogCQlBNTRBODJFQzE1MjI4RDJGMDBDNzJCQTYgLyogRE9NTm9kZVBy
aXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
NEE4MkVBMTUyMjhDQTMwMEM3MkJBNiAvKiBET01Ob2RlUHJpdmF0ZS5oICovOyB9OwogCQlBNTRB
ODJGMTE1MjI4REY2MDBDNzJCQTYgLyogRE9NTm9kZVByaXZhdGUuaCBpbiBDb3B5IEdlbmVyYXRl
ZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NEE4MkVBMTUy
MjhDQTMwMEM3MkJBNiAvKiBET01Ob2RlUHJpdmF0ZS5oICovOyB9OwotCQlBNTU2QzI4ODE4MzIw
NkE4MDA4Q0I3MjAgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTU2QzI4NjE4MzIwNkE4MDA4Q0I3MjAg
LyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAgKi87IH07Ci0JCUE1NTZDMjg5MTgzMjA2QTgw
MDhDQjcyMCAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTU2QzI4NzE4MzIwNkE4MDA4Q0I3MjAgLyogSW5z
cGVjdG9yQWdlbnRSZWdpc3RyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUE1NzMyQjBBMTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTcz
MkIwODEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuY3BwICovOyB9OwogCQlBNTcz
MkIwQjEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NzMyQjA5MTM2QTE2MUQwMDVDOEQ3QyAv
KiBEYXRlQ29tcG9uZW50cy5oICovOyB9OworCQlBNTkzQ0Y4QjE4NDA1MzUyMDBCRkNFMjcgLyog
SW5zcGVjdG9yV2ViQWdlbnRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNTkzQ0Y4QTE4NDA1MzUyMDBCRkNFMjcgLyogSW5zcGVjdG9yV2ViQWdl
bnRCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQTVBMkFGMEIxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QTJBRjA5MTgyOTczNDMw
MERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5jcHAgKi87IH07CiAJCUE1QTJBRjBDMTgyOTczNDMw
MERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTVBMkFGMEExODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dh
YmxlLmggKi87IH07CiAJCUE1QUJCNzg3MTNCOTA0QkMwMEYxOTdFMyAvKiBMaW5lQnJlYWtJdGVy
YXRvclBvb2xJQ1UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1QUJCNzg2MTNCOTA0QkMwMEYxOTdFMyAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1Uu
aCAqLzsgfTsKLQkJQTVBQzRBRUYxODMzNjk3NTAwNzExNEUwIC8qIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1QUM0QUVEMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ci5jcHAgKi87IH07Ci0JCUE1QUM0QUYwMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTVBQzRBRUUxODMzNjk3NTAwNzExNEUwIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QTVBRkIzNEYxMTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUFGQjM0RDExNTE1MUE3MDBCMDQ1Q0Ig
LyogU3RlcFJhbmdlLmNwcCAqLzsgfTsKIAkJQTVBRkIzNTAxMTUxNTFBNzAwQjA0NUNCIC8qIFN0
ZXBSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTVBRkIzNEUxMTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1QzU2NkFCMTI3QTNBQUQwMEU4QTNG
RiAvKiBEaXNrSW1hZ2VDYWNoZUNsaWVudElPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTVDNTY2QUExMjdBM0FBRDAwRThBM0ZGIC8qIERpc2tJbWFn
ZUNhY2hlQ2xpZW50SU9TLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTc3MzAsOCArNzcyMiw4IEBACiAJCTMxNDZGRTY1MTg0NDIwODcwMDFBOTM3
QyAvKiBPRVNUZXh0dXJlRmxvYXRMaW5lYXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gT0VTVGV4dHVyZUZsb2F0TGluZWFyLmNwcDsgcGF0aCA9IGNhbnZhcy9PRVNU
ZXh0dXJlRmxvYXRMaW5lYXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTQ2
RkU2NjE4NDQyMDg3MDAxQTkzN0MgLyogT0VTVGV4dHVyZUZsb2F0TGluZWFyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE9FU1RleHR1cmVGbG9hdExpbmVhci5oOyBwYXRoID0g
Y2FudmFzL09FU1RleHR1cmVGbG9hdExpbmVhci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzMTQ2RkU2NzE4NDQyMDg3MDAxQTkzN0MgLyogT0VTVGV4dHVyZUZsb2F0TGluZWFyLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBPRVNUZXh0dXJlRmxvYXRMaW5lYXIuaWRsOyBwYXRo
ID0gY2FudmFzL09FU1RleHR1cmVGbG9hdExpbmVhci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTMxNDZGRTcwMTg0NDIzNjcwMDFBOTM3QyAvKiBKU09FU1RleHR1cmVGbG9hdExp
bmVhci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU09FU1RleHR1
cmVGbG9hdExpbmVhci5jcHA7IHBhdGggPSBKU09FU1RleHR1cmVGbG9hdExpbmVhci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNDZGRTcxMTg0NDIzNjcwMDFBOTM3QyAvKiBK
U09FU1RleHR1cmVGbG9hdExpbmVhci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBKU09FU1RleHR1cmVGbG9hdExpbmVhci5oOyBwYXRoID0gSlNPRVNUZXh0dXJlRmxvYXRMaW5l
YXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE0NkZFNzAxODQ0MjM2NzAwMUE5
MzdDIC8qIEpTT0VTVGV4dHVyZUZsb2F0TGluZWFyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTT0VTVGV4dHVyZUZsb2F0TGluZWFyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMzE0NkZFNzExODQ0MjM2NzAwMUE5MzdDIC8qIEpTT0VTVGV4dHVy
ZUZsb2F0TGluZWFyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTT0VTVGV4
dHVyZUZsb2F0TGluZWFyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNjAyM0VG
MTUzMkM0MEMwMEQ1MEZGNCAvKiBEaWN0aW9uYXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERpY3Rpb25hcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE2
MTFFNTQwRTFDNEQ0QTAwRjZBNTc5IC8qIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNjExRTU4MEUxQzRERTAwMEY2QTU3OSAvKiBKU1dlYktp
dENTU1RyYW5zZm9ybVZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNzk3Niw4ICs3OTY4LDggQEAKIAkJNDFGMDYxOEQwRjVGMDY5ODAwQTA3RUFDIC8q
IENvbnNvbGVNZXNzYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENvbnNvbGVNZXNzYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGMDYy
MTIwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUYwNjIxMzBGNUYxOTI2MDBBMDdFQUMgLyog
SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNDFGMDY2RTIwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdE9iamVjdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRPYmplY3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDFGMDY2RTMwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlw
dE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRP
YmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUYwNjZFMjBGNjRCQ0Y2
MDBBMDdFQUMgLyogU2NyaXB0R2xvYmFsT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNjcmlwdEdsb2JhbE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MUYwNjZFMzBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0R2xvYmFsT2JqZWN0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEdsb2JhbE9iamVjdC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRjFEMjFEMEVGMzVDMkEwMERBODc1
MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxRjFEMjFFMEVGMzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURhdGEuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0Q2FjaGVkRnJhbWVE
YXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGNTg0QzYxMDQ2NTJDQjAw
OUNBQTY0IC8qIEpTTWVzc2FnZVBvcnRDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNNZXNzYWdlUG9ydEN1c3RvbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtODMzNiw4ICs4MzI4LDYgQEAKIAkJNEYxNTM0REYxMUI1MzMwMjAwMjFGRDg2IC8qIEVk
aXRpbmdCZWhhdmlvclR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVk
aXRpbmdCZWhhdmlvclR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGMkQy
MDUyMTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0RjJEMjA1MzEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQWdlbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0RjMyODlCMzExQTQyQUFCMDA1QUJFN0UgLyog
SW5zcGVjdG9yVmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEluc3BlY3RvclZhbHVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTRGMzI4
OUI0MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yVmFsdWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTRGNEY1RkZBMTFDQkQyRDIwMEExODZCRiAvKiBJbnNwZWN0b3JGcm9udGVuZC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JGcm9udGVu
ZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGNEY1RkZDMTFDQkQzMDEwMEEx
ODZCRiAvKiBJbnNwZWN0b3JGcm9udGVuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnNwZWN0b3JGcm9udGVuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
RjZGREQ2MjEzNDFERUREMDAxRjhFRTMgLyogSW5zcGVjdG9yUGFnZUFnZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvclBhZ2VBZ2VudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04OTg4LDcgKzg5NzgsNiBAQAogCQk3QTc0RUNC
OTEwMTgzOUE2MDBCRjkzOUUgLyogSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTc0RUNCQzEwMTgzOURBMDBCRjkzOUUgLyogSlNJ
bnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QUEzNjVFRDEyRTcyNjU0MDBEQ0EyNDIgLyogSW5zcGVjdG9y
UnVudGltZUFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElu
c3BlY3RvclJ1bnRpbWVBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdB
QTUxQjZDMTQ4M0I2MTYwMEFEMjc1MiAvKiBJbnNwZWN0b3JCYXNlQWdlbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQmFzZUFnZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdBQTUxREQzMTQ4NTA2QTkwMEFEMjc1MiAvKiBJbnNwZWN0b3JN
ZW1vcnlBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNw
ZWN0b3JNZW1vcnlBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBQTUx
REQ0MTQ4NTA2QTkwMEFEMjc1MiAvKiBJbnNwZWN0b3JNZW1vcnlBZ2VudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JNZW1vcnlBZ2VudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QUFCQTI1NzE0QkM2MTMzMDBBQTlBMTEgLyogRE9NRWRpdG9y
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTUVkaXRvci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05Nzk1LDggKzk3ODQsNiBAQAogCQk5MzQ0
MkM5RDBEMkIzMzVDMDAzMzhGRjkgLyogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM0NDJDOUYwRDJCMzM2MDAwMzM4RkY5IC8qIEhU
TUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTM0OTA3RTMxMjVCQkJDODAwN0YyM0EwIC8qIEdyYXBoaWNzQ29udGV4dENHLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dENHLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTkzNENDMERGMEVEMzlENkYwMEE2NThGMiAvKiBT
Y3JpcHRWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3Jp
cHRWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTkzNENDMEUwMEVEMzlE
NkYwMEE2NThGMiAvKiBTY3JpcHRWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTY3JpcHRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzRDQzEw
OTBFREIyMjM5MDBBNjU4RjIgLyogU2NyaXB0U291cmNlQ29kZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTY3JpcHRTb3VyY2VDb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzNEQ5QkE0MEI4QzExNkIwMDdCNDJBOSAvKiBXZWJDb3JlTlNTdHJpbmdFeHRy
YXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ29yZU5T
U3RyaW5nRXh0cmFzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzREOUJBNjBC
OEMxMTc1MDA3QjQyQTkgLyogV2ViQ29yZU5TU3RyaW5nRXh0cmFzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlTlNTdHJpbmdFeHRyYXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMzM2LDE5ICsxMDMyMywxNiBAQAogCQlBNTE4MjI1NDE3RTJB
MEQ0MDBBOUJBMUQgLyogSW5zcGVjdG9yT3ZlcmxheVBhZ2UuY3NzICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBJbnNwZWN0
b3JPdmVybGF5UGFnZS5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MTgyMjU1
MTdFMkEwRDQwMEE5QkExRCAvKiBJbnNwZWN0b3JPdmVybGF5UGFnZS5qcyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlw
dDsgcGF0aCA9IEluc3BlY3Rvck92ZXJsYXlQYWdlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNTRBODJFQTE1MjI4Q0EzMDBDNzJCQTYgLyogRE9NTm9kZVByaXZhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NTm9kZVByaXZhdGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU1NkMyODYxODMyMDZBODAwOENCNzIwIC8qIEluc3BlY3Rv
ckFnZW50UmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUE1NTZDMjg3MTgzMjA2QTgwMDhDQjcyMCAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckFnZW50UmVnaXN0cnkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3MzJCMDgxMzZBMTYxRDAwNUM4RDdDIC8q
IERhdGVDb21wb25lbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IERhdGVDb21wb25lbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3MzJC
MDkxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERhdGVDb21wb25lbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE1OTNDRjcyMTg0MDJDRTkwMEJGQ0UyNyAvKiBwcm90b2NvbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9IHByb3Rv
Y29sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTkzQ0Y3MzE4NDAyRDRCMDBCRkNF
MjcgLyogQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IENvZGVH
ZW5lcmF0b3JJbnNwZWN0b3IucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1OTND
Rjc0MTg0MDJENEIwMEJGQ0UyNyAvKiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2Ny
aXB0LnB5dGhvbjsgcGF0aCA9IENvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5OyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTkzQ0Y3NTE4NDAyRDRCMDBCRkNFMjcgLyogY29t
YmluZS1qYXZhc2NyaXB0LXJlc291cmNlcy5wbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IHBhdGggPSAiY29tYmluZS1q
YXZhc2NyaXB0LXJlc291cmNlcy5wbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1
OTNDRjhBMTg0MDUzNTIwMEJGQ0UyNyAvKiBJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QTJBRjA5MTgyOTczNDMwMERFMTcyOSAvKiBQYWdl
RGVidWdnYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdl
RGVidWdnYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QTJBRjBBMTgy
OTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQYWdlRGVidWdnYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNUFCQjc4NjEzQjkwNEJDMDBGMTk3RTMgLyogTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmVCcmVha0l0ZXJhdG9yUG9vbElD
VS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNUFDNEFFRDE4MzM2OTc1MDA3MTE0
RTAgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlBNUFDNEFFRTE4MzM2OTc1MDA3MTE0RTAgLyogSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTVBRkIzNEQxMTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGVwUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBNUFGQjM0RTExNTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0ZXBSYW5nZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNUM1NjZBQTEyN0EzQUFEMDBFOEEzRkYgLyogRGlza0ltYWdlQ2Fj
aGVDbGllbnRJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlza0ltYWdl
Q2FjaGVDbGllbnRJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NDg0LDEz
ICsxNDQ2OCw4IEBACiAJCQkJN0E1NjNGOTUxMkRGNUM5MTAwRjQ1MzZEIC8qIEluamVjdGVkU2Ny
aXB0U291cmNlLmpzICovLAogCQkJCTRGMkQyMDUzMTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0
b3JBZ2VudC5jcHAgKi8sCiAJCQkJNEYyRDIwNTIxMkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3Rv
ckFnZW50LmggKi8sCi0JCQkJQTU1NkMyODYxODMyMDZBODAwOENCNzIwIC8qIEluc3BlY3RvckFn
ZW50UmVnaXN0cnkuY3BwICovLAotCQkJCUE1NTZDMjg3MTgzMjA2QTgwMDhDQjcyMCAvKiBJbnNw
ZWN0b3JBZ2VudFJlZ2lzdHJ5LmggKi8sCiAJCQkJQjg4NUU4RDIxMUUwNkREMjAwOUZGQkY0IC8q
IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgKi8sCiAJCQkJQjg4NUU4RDMxMUUw
NkREMjAwOUZGQkY0IC8qIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oICovLAotCQkJ
CUE1QUM0QUVEMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5j
cHAgKi8sCi0JCQkJQTVBQzRBRUUxODMzNjk3NTAwNzExNEUwIC8qIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmggKi8sCi0JCQkJN0FBNTFCNkMxNDgzQjYxNjAwQUQyNzUyIC8qIEluc3BlY3Rv
ckJhc2VBZ2VudC5oICovLAogCQkJCUFBRDc2NkU4MTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0
b3JDYW52YXNBZ2VudC5jcHAgKi8sCiAJCQkJQUFENzY2RTkxNTdFNTAyRjAwRTg1NDIzIC8qIElu
c3BlY3RvckNhbnZhc0FnZW50LmggKi8sCiAJCQkJQUFENzY2RUExNTdFNTAyRjAwRTg1NDIzIC8q
IEluc3BlY3RvckNhbnZhc0luc3RydW1lbnRhdGlvbi5oICovLApAQCAtMTQ1NjAsOCArMTQ1Mzks
NyBAQAogCQkJCTgyODg5QjRCMTNDNjIzOTIwMDlBNjE1NiAvKiBJbnNwZWN0b3JTdHlsZVRleHRF
ZGl0b3IuaCAqLywKIAkJCQk3NTQxMzNBOTEwMkUwMEY0MDAwNzVEMDAgLyogSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudC5jcHAgKi8sCiAJCQkJNzU0MTMzQTcxMDJFMDBFODAwMDc1RDAwIC8qIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuaCAqLywKLQkJCQk0RjMyODlCMzExQTQyQUFCMDA1QUJFN0UgLyog
SW5zcGVjdG9yVmFsdWVzLmNwcCAqLywKLQkJCQk0RjMyODlCNDExQTQyQUFCMDA1QUJFN0UgLyog
SW5zcGVjdG9yVmFsdWVzLmggKi8sCisJCQkJQTU5M0NGOEExODQwNTM1MjAwQkZDRTI3IC8qIElu
c3BlY3RvcldlYkFnZW50QmFzZS5oICovLAogCQkJCUYzODEwQzE5MTM2NUE0OTYwMEVENkUzMyAv
KiBJbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAgKi8sCiAJCQkJRjM4MTBDMUExMzY1QTQ5NjAwRUQ2
RTMzIC8qIEluc3BlY3RvcldvcmtlckFnZW50LmggKi8sCiAJCQkJRjM3NUNDMDYxMTUwRDMwMDAw
OEREQjgxIC8qIEluc3BlY3RvcldvcmtlclJlc291cmNlLmggKi8sCkBAIC0xOTY1Myw4ICsxOTYz
MSw4IEBACiAJCQkJNDEwMDJDQ0MwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2Fs
bC5jcHAgKi8sCiAJCQkJNDEwMDJDQ0IwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9u
Q2FsbC5oICovLAogCQkJCTlGM0I5NDdEMTIyNDE3NTgwMDUzMDRFNyAvKiBTY3JpcHRIZWFwU25h
cHNob3QuaCAqLywKLQkJCQk0MUYwNjZFMzBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0T2JqZWN0
LmNwcCAqLywKLQkJCQk0MUYwNjZFMjBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0T2JqZWN0Lmgg
Ki8sCisJCQkJNDFGMDY2RTMwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdEdsb2JhbE9iamVjdC5j
cHAgKi8sCisJCQkJNDFGMDY2RTIwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdEdsb2JhbE9iamVj
dC5oICovLAogCQkJCUYzM0YwMjgxMTIwOTQ3RjIwMEU1NzQzQSAvKiBTY3JpcHRQcm9maWxlLmNw
cCAqLywKIAkJCQk5RjcyMzA0QzExMTg0QjQxMDBBRDAxMjYgLyogU2NyaXB0UHJvZmlsZS5oICov
LAogCQkJCTlGQTM3RUUzMTE3MkZDODAwMEM0Q0Q1NSAvKiBTY3JpcHRQcm9maWxlTm9kZS5oICov
LApAQCAtMTk2NjMsOCArMTk2NDEsNiBAQAogCQkJCTkzNENDMTA5MEVEQjIyMzkwMEE2NThGMiAv
KiBTY3JpcHRTb3VyY2VDb2RlLmggKi8sCiAJCQkJNDEyN0Q1MzYwRjhBQUIxRDAwRTQyNEY1IC8q
IFNjcmlwdFN0YXRlLmNwcCAqLywKIAkJCQk0MUM3NjBCMDBFREUwM0QzMDBDMTY1NUYgLyogU2Ny
aXB0U3RhdGUuaCAqLywKLQkJCQk5MzRDQzBERjBFRDM5RDZGMDBBNjU4RjIgLyogU2NyaXB0VmFs
dWUuY3BwICovLAotCQkJCTkzNENDMEUwMEVEMzlENkYwMEE2NThGMiAvKiBTY3JpcHRWYWx1ZS5o
ICovLAogCQkJCTIyOEMyODQ0MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUuaCAq
LywKIAkJCQkxNDAwRDdBNzE3MTM2RUE3MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxlSW5saW5l
cy5oICovLAogCQkJCUE3NUU0OTc1MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwICovLApAQCAtMjIwOTcsNyArMjIwNzMsNiBAQAogCQkJCTI5QTgxMjNGMEZCQjlD
MUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTI5QTgxMjMxMEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5VGFi
bGVSb3cuaCBpbiBIZWFkZXJzICovLAogCQkJCUI1RDMxREZCMTFDRjYxMEIwMDlGMjJCNCAvKiBB
Y3RpdmVET01DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTU1NkMyODkxODMyMDZBODAw
OENCNzIwIC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUUx
QzRERTY5MEVBNzVDMUUwMDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDRjdFNDkxMTM3Q0Q3QzcwMDFEREFFNyAvKiBBZGp1c3RWaWV3U2l6ZU9yTm90Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NEQwQzQwNjExMTVGMUVBMDAxOEFBMzQgLyogQWZmaW5lVHJh
bnNmb3JtLmggaW4gSGVhZGVycyAqLywKQEAgLTIyNDAxLDcgKzIyMzc2LDYgQEAKIAkJCQlBODBF
NkQwMTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTSW5oZXJpdGVkVmFsdWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE4MEU2RDA4MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NJbml0aWFsVmFsdWUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDNzcyRTEzMTMzMTYyMEMwMDFFQzlDRSAvKiBDU1NMaW5lQm94Q29u
dGFpblZhbHVlLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNUFDNEFGMDE4MzM2OTc1MDA3MTE0RTAg
LyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2
RDAzMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NNZWRpYVJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUY5OEZGRjQ1MTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBODBFNkQwMDBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTUGFnZVJ1bGUuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjMzNjIsNyArMjMzMzYsNiBAQAogCQkJCTRGMkQyMDU0MTJFQUU3QjMwMDVDMjg3
NCAvKiBJbnNwZWN0b3JBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjg4NUU4RDUxMUUwNkRE
MjAwOUZGQkY0IC8qIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNEY3MDdBOUExMUVGNjc5NDAwQUNEQTY5IC8qIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVycy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJN0FBNTFCNkUxNDgzQjYxNjAwQUQyNzUyIC8q
IEluc3BlY3RvckJhc2VBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUFENzY2RUMxNTdFNTAy
RjAwRTg1NDIzIC8qIEluc3BlY3RvckNhbnZhc0FnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
QUQ3NjZFRDE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVjdG9yQ2FudmFzSW5zdHJ1bWVudGF0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzgxQjk1QzBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVj
dG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTIzNDAyLDcgKzIzMzc1LDYgQEAKIAkJCQk4
Mjg4OUI0RDEzQzYyMzkyMDA5QTYxNTYgLyogSW5zcGVjdG9yU3R5bGVUZXh0RWRpdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQk3NTQxMzNBODEwMkUwMEU4MDAwNzVEMDAgLyogSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc4REEyMEYxNTIwRUJBMzAwNjE0MUMx
IC8qIEluc3BlY3RvclR5cGVCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk0RjMyODlCNjEx
QTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
MzgxMEMxQzEzNjVBNDk2MDBFRDZFMzMgLyogSW5zcGVjdG9yV29ya2VyQWdlbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTA3OEUwOTI5MTdEMTREMUMwMDQyMEFBMSAvKiBSVENTdGF0c0NhbGxiYWNr
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGMzc1Q0MwNzExNTBEMzAwMDA4RERCODEgLyogSW5zcGVj
dG9yV29ya2VyUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLApAQCAtMjQ1MjQsNyArMjQ0OTYsNyBA
QAogCQkJCUNERDcwODk3MTgzNTlGNkYwMDJCM0RDNiAvKiBTYW1wbGVNYXAuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQxMDAyQ0NEMEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwu
aCBpbiBIZWFkZXJzICovLAogCQkJCTlGM0I5NDdFMTIyNDE3NTgwMDUzMDRFNyAvKiBTY3JpcHRI
ZWFwU25hcHNob3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxRjA2NkU0MEY2NEJDRjYwMEEwN0VB
QyAvKiBTY3JpcHRPYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRjA2NkU0MEY2NEJDRjYw
MEEwN0VBQyAvKiBTY3JpcHRHbG9iYWxPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2
MDM2MTJCMDI2NzYwMEMxQTM1OSAvKiBTY3JpcHRQcm9jZXNzb3JOb2RlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5RjcyMzA0RjExMTg0QjQxMDBBRDAxMjYgLyogU2NyaXB0UHJvZmlsZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOUZBMzdFRTQxMTcyRkM4MDAwQzRDRDU1IC8qIFNjcmlwdFByb2ZpbGVO
b2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTI0NTMyLDcgKzI0NTA0LDYgQEAKIAkJCQk4QTQxM0FF
MDEyMDdCQkE1MDA4MjAxNkUgLyogU2NyaXB0UnVubmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
MzRDQzEwQTBFREIyMjM5MDBBNjU4RjIgLyogU2NyaXB0U291cmNlQ29kZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDFDNzYwQjEwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggaW4gSGVh
ZGVycyAqLywKLQkJCQk5MzRDQzBFMjBFRDM5RDZGMDBBNjU4RjIgLyogU2NyaXB0VmFsdWUuaCBp
biBIZWFkZXJzICovLAogCQkJCTIyOEMyODQ1MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFw
cGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MDBEN0E4MTcxMzZFQTcwMDc3Q0UwNSAvKiBT
Y3JpcHRXcmFwcGFibGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzhBRTM0RjEyRUEw
OTZBMDBFQjNBRTYgLyogU2Nyb2xsYWJsZUFyZWEuaCBpbiBIZWFkZXJzICovLApAQCAtMjQ5MjQs
NiArMjQ4OTUsNyBAQAogCQkJCTA4OEEwRTBBMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgxREQ0OUMxM0JBMUE2MDAwREM3NjI3IC8qIFNWR1By
b3BlcnR5SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjU3Q0I1MkUxODJBM0VGQzAwNzlBNjQ3
IC8qIElubGluZUVsZW1lbnRCb3guaCBpbiBIZWFkZXJzICovLAorCQkJCUE1OTNDRjhCMTg0MDUz
NTIwMEJGQ0UyNyAvKiBJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTA4OEEwRTBCMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTA4OEEwRTBDMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eVRyYWl0
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBOUEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1Jh
ZGlhbEdyYWRpZW50RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTc3NSw3ICsyNTc0Nyw2
IEBACiAJCQkJNTlCNTk3NzMxMTA4NjU2QjAwNzE1OUU4IC8qIEJyaWRnZUpTQy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlGNTVCM0RBRjEyNTFGMTJEMDAzRUYyNjkgLyogQnV0dG9uSW5wdXRUeXBl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5Q0Y3MEQ3RTJCODIwMDdDMzk4MyAvKiBjX2Ns
YXNzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE1QUM0QUVGMTgzMzY5NzUwMDcxMTRFMCAvKiBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUNG
OTBEN0UyQjgyMDA3QzM5ODMgLyogY19pbnN0YW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
QTU2OUNGQjBEN0UyQjgyMDA3QzM5ODMgLyogY19ydW50aW1lLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFBNTY5Q0ZEMEQ3RTJCODIwMDdDMzk4MyAvKiBjX3V0aWxpdHkuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC0yNjY1NCw3ICsyNjYyNSw2IEBACiAJCQkJMDcyNzdFNEUxN0QwMThDQzAwMTU1MzRE
IC8qIEpTTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3NTQxMzNBQTEwMkUwMEY0MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1NzNEMTM0NzE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVj
dG9yVHlwZUJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNEYzMjg5QjUxMUE0MkFBQjAw
NUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGMzgxMEMx
QjEzNjVBNDk2MDBFRDZFMzMgLyogSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRjM1MEI3MzUxM0YxMzc3RDAwODgwQzQzIC8qIEluc3RydW1lbnRpbmdBZ2VudHMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1NjAwQjA1MzgxNDAwMkNFNjRGIC8qIEludFBv
aW50Q0cuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzc1OSwxMyArMjc3MjksMTIgQEAKIAkJCQkw
OEE0ODQ3NzBFNTI3MkM1MDBDM0ZFNzYgLyogU2NyaXB0RWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlFMTFDOURCMDBFQjM2OTk1MDBFNDA5REIgLyogU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTAwMkNDRTBGNjZFREVGMDA5RTY2MEQgLyogU2Ny
aXB0RnVuY3Rpb25DYWxsLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQxRjA2NkU1MEY2NEJDRjYw
MEEwN0VBQyAvKiBTY3JpcHRPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDFGMDY2RTUw
RjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdEdsb2JhbE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlGRDMxNjAzNTEyQjAyNjc2MDBDMUEzNTkgLyogU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlGMzNGMDI4MjEyMDk0N0YyMDBFNTc0M0EgLyogU2NyaXB0UHJv
ZmlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5RjcyMzA1MDExMTg0QjQxMDBBRDAxMjYgLyog
U2NyaXB0UHJvZmlsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOEE0MTNBRTExMjA3QkJBNTAw
ODIwMTZFIC8qIFNjcmlwdFJ1bm5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTI3RDUzNzBG
OEFBQjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJOTM0
Q0MwRTEwRUQzOUQ2RjAwQTY1OEYyIC8qIFNjcmlwdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDOEFFMzRFMTJFQTA5NkEwMEVCM0FFNiAvKiBTY3JvbGxhYmxlQXJlYS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlDQTNCRjY3QzEwRDk5QkFFMDBFNkNFNTMgLyogU2Nyb2xsQW5pbWF0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1MTE1NkUxMkIxNzQ5QzAwQzk2NzU0IC8qIFNjcm9s
bEFuaW1hdG9yTWFjLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0yNzg1Nyw3ICsyNzgyNiw2IEBACiAJ
CQkJQUEyQTVBRDUxNkE0ODYxNDAwOTc1QTI1IC8qIFNwZWVjaFN5bnRoZXNpcy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBQTJBNUFEMzE2QTQ4NjBEMDA5NzVBMjUgLyogU3BlZWNoU3ludGhlc2lz
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUEyQTVBRDExNkE0ODYwNzAwOTc1QTI1IC8q
IFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBNTU2QzI4
ODE4MzIwNkE4MDA4Q0I3MjAgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBQTJBNUFDRDE2QTQ4NUZBMDA5NzVBMjUgLyogU3BlZWNoU3ludGhlc2lzVm9p
Y2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc4RkUxM0IxMjM2NkIxMDAwQUNFOEQwIC8qIFNw
ZWxsQ2hlY2tlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCOERCREI0RDEzMEIwRjhBMDBGNUNE
QjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaAppbmRleCA5NGRhODc4Li5mZDRiZWU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5oCkBAIC0zMCw3ICszMCw3IEBA
CiAjaW5jbHVkZSAiSlNEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgi
CiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgor
I2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CkBAIC05Miw3ICs5Miw3IEBAIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gRGlj
dGlvbmFyeTo6Z2V0RXZlbnRMaXN0ZW5lcihjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsCiAgICAg
aWYgKCFtX2RpY3Rpb25hcnkuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFNj
cmlwdFZhbHVlIGV2ZW50TGlzdGVuZXI7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZXZl
bnRMaXN0ZW5lcjsKICAgICBpZiAoIW1fZGljdGlvbmFyeS50cnlHZXRQcm9wZXJ0eShwcm9wZXJ0
eU5hbWUsIGV2ZW50TGlzdGVuZXIpKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoZXZlbnRM
aXN0ZW5lci5oYXNOb1ZhbHVlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCmluZGV4IGI4ZjFiYzguLjdhNzdkYjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCkBA
IC0xNzgsNyArMTc4LDcgQEAgc3RhdGljIEpTVmFsdWUgZ2V0TnRoVmFsdWVPbktleVBhdGgoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHJvb3RWYWx1ZSwgY29uc3QgVmUKICAgICByZXR1cm4gY3Vy
cmVudFZhbHVlOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZy
b21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTY3JpcHRWYWx1
ZSYgdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKK3N0YXRpYyBQYXNzUmVmUHRyPElEQktl
eT4gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQ
YXRoKQogewogICAgIFZlY3RvcjxTdHJpbmc+IGtleVBhdGhFbGVtZW50czsKICAgICBJREJLZXlQ
YXRoUGFyc2VFcnJvciBlcnJvcjsKQEAgLTIyOCw3ICsyMjgsNyBAQCBzdGF0aWMgYm9vbCBjYW5J
bmplY3ROdGhWYWx1ZU9uS2V5UGF0aChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgcm9vdFZhbHVl
LCBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIGluamVjdElEQktleUludG9TY3Jp
cHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgUGFzc1JlZlB0cjxJREJLZXk+
IGtleSwgU2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQorYm9v
bCBpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3Rh
dGUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1
ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgImlu
amVjdElEQktleUludG9TY3JpcHRWYWx1ZSIpOwogCkBAIC0yNTQsNyArMjU0LDcgQEAgYm9vbCBp
bmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUs
IFBhc3NSZWZQdHI8SURCS2UKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxJREJL
ZXk+IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoRE9NUmVxdWVzdFN0YXRl
KiByZXF1ZXN0U3RhdGUsIGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgSURCS2V5UGF0
aCYga2V5UGF0aCkKK1Bhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFs
dWVBbmRLZXlQYXRoKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCiB7CiAg
ICAgTE9HKFN0b3JhZ2VBUEksICJjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRo
Iik7CiAgICAgQVNTRVJUKCFrZXlQYXRoLmlzTnVsbCgpKTsKQEAgLTI3Nyw3ICsyNzcsNyBAQCBQ
YXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChE
T01SZXF1ZXN0U3RhdGUqIHJlcXVlcwogICAgIHJldHVybiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0
VmFsdWVBbmRLZXlQYXRoKGV4ZWMsIHZhbHVlLCBrZXlQYXRoLnN0cmluZygpKTsKIH0KIAotYm9v
bCBjYW5JbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0
U3RhdGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBzY3JpcHRWYWx1ZSwgY29uc3QgSURCS2V5UGF0aCYg
a2V5UGF0aCkKK2Jvb2wgY2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKERPTVJlcXVlc3RT
dGF0ZSogcmVxdWVzdFN0YXRlLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgc2NyaXB0
VmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEks
ICJjYW5JbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUiKTsKIApAQCAtMjk0LDE2ICsyOTQsMTYg
QEAgYm9vbCBjYW5JbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiBy
ZXF1ZXN0U3RhdGUsIGNvbnN0IFNjcmlwdFYKICAgICByZXR1cm4gY2FuSW5qZWN0TnRoVmFsdWVP
bktleVBhdGgoZXhlYywgc2NyaXB0VmFsdWUuanNWYWx1ZSgpLCBrZXlQYXRoRWxlbWVudHMsIGtl
eVBhdGhFbGVtZW50cy5zaXplKCkgLSAxKTsKIH0KIAotU2NyaXB0VmFsdWUgZGVzZXJpYWxpemVJ
REJWYWx1ZShET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IHBycFZhbHVlKQorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZGVzZXJp
YWxpemVJREJWYWx1ZShET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IHBycFZhbHVlKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9
IHJlcXVlc3RTdGF0ZS0+ZXhlYygpOwogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHNlcmlhbGl6ZWRWYWx1ZSA9IHBycFZhbHVlOwogICAgIGlmIChzZXJpYWxpemVkVmFsdWUpCi0g
ICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoZXhlYywgc2VyaWFsaXplZFZh
bHVlLmdldCgpLCBOb25UaHJvd2luZyk7Ci0gICAgcmV0dXJuIFNjcmlwdFZhbHVlKGV4ZWMtPnZt
KCksIGpzTnVsbCgpKTsKKyAgICAgICAgcmV0dXJuIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVz
ZXJpYWxpemUoZXhlYywgc2VyaWFsaXplZFZhbHVlLmdldCgpLCBOb25UaHJvd2luZyk7CisgICAg
cmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIGpzTnVsbCgpKTsKIH0K
IAotU2NyaXB0VmFsdWUgZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihET01SZXF1ZXN0U3RhdGUq
IHJlcXVlc3RTdGF0ZSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHBycEJ1ZmZlcikKK0RlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIoRE9NUmVxdWVzdFN0
YXRlKiByZXF1ZXN0U3RhdGUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBwcnBCdWZmZXIpCiB7
CiAgICAgRXhlY1N0YXRlKiBleGVjID0gcmVxdWVzdFN0YXRlLT5leGVjKCk7CiAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcHJwQnVmZmVyOwpAQCAtMzEyLDE4ICszMTIsMTggQEAg
U2NyaXB0VmFsdWUgZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihET01SZXF1ZXN0U3RhdGUqIHJl
cXVlc3RTdGF0ZSwgUGFzc1JlZlB0cjwKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZhbHVlOwog
ICAgICAgICB2YWx1ZS5hcHBlbmQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAg
ICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZUJ5dGVzKHZhbHVlKTsKLSAgICAgICAg
cmV0dXJuIFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShleGVjLCBzZXJpYWxpemVkVmFsdWUuZ2V0
KCksIE5vblRocm93aW5nKTsKKyAgICAgICAgcmV0dXJuIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
ZGVzZXJpYWxpemUoZXhlYywgc2VyaWFsaXplZFZhbHVlLmdldCgpLCBOb25UaHJvd2luZyk7CiAg
ICAgfQotICAgIHJldHVybiBTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBqc051bGwoKSk7CisgICAg
cmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIGpzTnVsbCgpKTsKIH0K
IAotU2NyaXB0VmFsdWUgaWRiS2V5VG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqIHJlcXVl
c3RTdGF0ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSkKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
IGlkYktleVRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIFBhc3NS
ZWZQdHI8SURCS2V5PiBrZXkpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gcmVxdWVzdFN0YXRl
LT5leGVjKCk7Ci0gICAgcmV0dXJuIFNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIGlkYktleVRvSlNW
YWx1ZShleGVjLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpLCBrZXkuZ2V0KCkpKTsKKyAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUoZXhlYy0+dm0oKSwgaWRiS2V5VG9KU1ZhbHVlKGV4ZWMsIGpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIGtleS5nZXQoKSkpOwogfQogCi1Q
YXNzUmVmUHRyPElEQktleT4gc2NyaXB0VmFsdWVUb0lEQktleShET01SZXF1ZXN0U3RhdGUqIHJl
cXVlc3RTdGF0ZSwgY29uc3QgU2NyaXB0VmFsdWUmIHNjcmlwdFZhbHVlKQorUGFzc1JlZlB0cjxJ
REJLZXk+IHNjcmlwdFZhbHVlVG9JREJLZXkoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUs
IGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBzY3JpcHRWYWx1ZSkKIHsKICAgICBFeGVj
U3RhdGUqIGV4ZWMgPSByZXF1ZXN0U3RhdGUtPmV4ZWMoKTsKICAgICByZXR1cm4gY3JlYXRlSURC
S2V5RnJvbVZhbHVlKGV4ZWMsIHNjcmlwdFZhbHVlLmpzVmFsdWUoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgKaW5kZXggOTA4YzdmZC4u
ZjAxMmFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGlu
Z1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdV
dGlsaXRpZXMuaApAQCAtMjksNyArMjksNyBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQogCiAjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisj
aW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MSwxMyArNDEsMTMgQEAgY2xhc3MgU2hhcmVk
QnVmZmVyOwogCiBJREJLZXlQYXRoIGlkYktleVBhdGhGcm9tVmFsdWUoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkpTVmFsdWUpOwogCi1ib29sIGluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShET01S
ZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPElEQktleT4sIFNjcmlwdFZhbHVlJiwgY29uc3QgSURC
S2V5UGF0aCYpOwotUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1
ZUFuZEtleVBhdGgoRE9NUmVxdWVzdFN0YXRlKiwgY29uc3QgU2NyaXB0VmFsdWUmLCBjb25zdCBJ
REJLZXlQYXRoJik7Ci1ib29sIGNhbkluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShET01SZXF1
ZXN0U3RhdGUqLCBjb25zdCBTY3JpcHRWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsKLVNjcmlw
dFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWUoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKLVNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWVC
dWZmZXIoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KTsKLVNjcmlw
dFZhbHVlIGlkYktleVRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxJ
REJLZXk+KTsKLVBhc3NSZWZQdHI8SURCS2V5PiBzY3JpcHRWYWx1ZVRvSURCS2V5KERPTVJlcXVl
c3RTdGF0ZSosIGNvbnN0IFNjcmlwdFZhbHVlJik7Citib29sIGluamVjdElEQktleUludG9TY3Jp
cHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPElEQktleT4sIERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOworUGFzc1JlZlB0cjxJREJLZXk+IGNy
ZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoRE9NUmVxdWVzdFN0YXRlKiwgY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBjb25zdCBJREJLZXlQYXRoJik7Citib29sIGNh
bkluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqLCBjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsKK0RlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWUoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRlc2Vy
aWFsaXplSURCVmFsdWVCdWZmZXIoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxTaGFyZWRC
dWZmZXI+KTsKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGlkYktleVRvU2NyaXB0VmFsdWUoRE9N
UmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxJREJLZXk+KTsKK1Bhc3NSZWZQdHI8SURCS2V5PiBz
Y3JpcHRWYWx1ZVRvSURCS2V5KERPTVJlcXVlc3RTdGF0ZSosIGNvbnN0IERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNEaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlv
bmFyeS5jcHAKaW5kZXggN2VkYjFkNS4uNGMyODgyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiSlNT
dG9yYWdlLmgiCiAjaW5jbHVkZSAiSlNUcmFja0N1c3RvbS5oIgogI2luY2x1ZGUgIkpTVm9pZENh
bGxiYWNrLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlIDxydW50aW1lL0pTVHlwZWRBcnJheXMuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMTQ0LDkgKzE0Myw5IEBAIHZvaWQgSlNEaWN0aW9uYXJ5
Ojpjb252ZXJ0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBWZWN0b3I8U3Ry
aW5nPiYKICAgICB9CiB9CiAKLXZvaWQgSlNEaWN0aW9uYXJ5Ojpjb252ZXJ0VmFsdWUoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBTY3JpcHRWYWx1ZSYgcmVzdWx0KQordm9pZCBKU0Rp
Y3Rpb25hcnk6OmNvbnZlcnRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiByZXN1bHQpCiB7Ci0gICAgcmVzdWx0ID0gU2NyaXB0VmFs
dWUoZXhlYy0+dm0oKSwgdmFsdWUpOworICAgIHJlc3VsdCA9IERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlKGV4ZWMtPnZtKCksIHZhbHVlKTsKIH0KIAogdm9pZCBKU0RpY3Rpb25hcnk6OmNvbnZlcnRW
YWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+JiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RpY3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFy
eS5oCmluZGV4IGEyOTA1NmYuLjNhOGUyY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRGljdGlvbmFyeS5oCkBAIC0zNCw2ICszNCwxMCBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvVWlu
dDhBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKK25hbWVzcGFjZSBEZXByZWNh
dGVkIHsKK2NsYXNzIFNjcmlwdFZhbHVlOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEFycmF5VmFsdWU7CkBAIC00Niw3ICs1MCw2IEBAIGNsYXNzIE1lZGlhS2V5RXJyb3I7CiBj
bGFzcyBNZWRpYVN0cmVhbTsKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2s7CiBjbGFzcyBOb2RlOwot
Y2xhc3MgU2NyaXB0VmFsdWU7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiBjbGFzcyBT
dG9yYWdlOwogY2xhc3MgVHJhY2tCYXNlOwpAQCAtMTA4LDcgKzExMSw3IEBAIHByaXZhdGU6CiAg
ICAgc3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVl
LCBkb3VibGUmIHJlc3VsdCk7CiAgICAgc3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBEaWN0aW9uYXJ5JiByZXN1bHQpOwogICAgIHN0YXRpYyB2
b2lkIGNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgU3RyaW5nJiBy
ZXN1bHQpOwotICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6SlNWYWx1ZSwgU2NyaXB0VmFsdWUmIHJlc3VsdCk7CisgICAgc3RhdGljIHZvaWQgY29udmVy
dFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYgcmVzdWx0KTsKICAgICBzdGF0aWMgdm9pZCBjb252ZXJ0VmFsdWUoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkpTVmFsdWUsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpOwogICAgIHN0YXRpYyB2
b2lkIGNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4mIHJlc3VsdCk7CiAgICAgc3RhdGljIHZvaWQgY29udmVydFZh
bHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBSZWZQdHI8RE9NV2luZG93PiYgcmVz
dWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZh
c0VsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2Fu
dmFzRWxlbWVudEN1c3RvbS5jcHAKaW5kZXggZmU2YzhiYS4uN2FkMzZmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3Rv
bS5jcHAKQEAgLTMxLDEzICszMSwxNCBAQAogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2FudmFzSW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAi
SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIK
KyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3QuaD4KKyNpbmNsdWRlIDx3dGYvR2V0UHRy
Lmg+CisKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiSlNEaWN0aW9uYXJ5LmgiCiAjaW5j
bHVkZSAiSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJXZWJHTENvbnRleHRB
dHRyaWJ1dGVzLmgiCiAjZW5kaWYKLSNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKQEAgLTg1LDggKzg2LDggQEAgSlNWYWx1ZSBKU0hUTUxDYW52YXNFbGVt
ZW50OjpnZXRDb250ZXh0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIGpzTnVsbCgp
OwogICAgIEpTVmFsdWUganNWYWx1ZSA9IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIFdURjo6
Z2V0UHRyKGNvbnRleHQpKTsKICAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjYW52
YXNBZ2VudEVuYWJsZWQoJmNhbnZhcy5kb2N1bWVudCgpKSkgewotICAgICAgICBTY3JpcHRPYmpl
Y3QgY29udGV4dE9iamVjdChleGVjLCBqc1ZhbHVlLmdldE9iamVjdCgpKTsKLSAgICAgICAgU2Ny
aXB0T2JqZWN0IHdyYXBwZWQ7CisgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBjb250
ZXh0T2JqZWN0KGV4ZWMsIGpzVmFsdWUuZ2V0T2JqZWN0KCkpOworICAgICAgICBEZXByZWNhdGVk
OjpTY3JpcHRPYmplY3Qgd3JhcHBlZDsKICAgICAgICAgaWYgKGNvbnRleHQtPmlzMmQoKSkKICAg
ICAgICAgICAgIHdyYXBwZWQgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndyYXBDYW52YXMy
RFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24oJmNhbnZhcy5kb2N1bWVudCgpLCBj
b250ZXh0T2JqZWN0KTsKICNpZiBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKaW5kZXgg
Njk5OWZiZS4uMGI0NTIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcApAQCAtNDQsMTUgKzQ0LDE1IEBA
CiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9N
QWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCi0jaW5jbHVkZSAi
SW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVk
ZSAiSlNIVE1MQWxsQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkpTSFRNTENvbGxlY3Rpb24uaCIK
ICNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRlICJKU05vZGVMaXN0LmgiCiAjaW5jbHVkZSAi
SlNTdG9yYWdlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTdG9yYWdl
LmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KKyNpbmNsdWRlIDxpbnNwZWN0
b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8cGFyc2VyL1NvdXJjZUNvZGUuaD4KICNp
bmNsdWRlIDxydW50aW1lL0RhdGVJbnN0YW5jZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3Iu
aD4KQEAgLTY5LDIwICs2OSwyMCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLU5vZGUqIEluamVjdGVkU2NyaXB0SG9zdDo6c2NyaXB0VmFsdWVBc05vZGUo
U2NyaXB0VmFsdWUgdmFsdWUpCitOb2RlKiBJbmplY3RlZFNjcmlwdEhvc3Q6OnNjcmlwdFZhbHVl
QXNOb2RlKERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHZhbHVlKQogewogICAgIGlmICghdmFsdWUu
aXNPYmplY3QoKSB8fCB2YWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0
dXJuIHRvTm9kZSh2YWx1ZS5qc1ZhbHVlKCkpOwogfQogCi1TY3JpcHRWYWx1ZSBJbmplY3RlZFNj
cmlwdEhvc3Q6Om5vZGVBc1NjcmlwdFZhbHVlKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgTm9kZSog
bm9kZSkKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0SG9zdDo6bm9kZUFz
U2NyaXB0VmFsdWUoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBOb2RlKiBub2RlKQogewogICAgIGlm
ICghc2hvdWxkQWxsb3dBY2Nlc3NUb05vZGUoc3RhdGUsIG5vZGUpKQotICAgICAgICByZXR1cm4g
U2NyaXB0VmFsdWUoc3RhdGUtPnZtKCksIGpzTnVsbCgpKTsKKyAgICAgICAgcmV0dXJuIERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlKHN0YXRlLT52bSgpLCBqc051bGwoKSk7CiAKICAgICBKU0xvY2tI
b2xkZXIgbG9jayhzdGF0ZSk7Ci0gICAgcmV0dXJuIFNjcmlwdFZhbHVlKHN0YXRlLT52bSgpLCB0
b0pTKHN0YXRlLCBkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBlKHN0YXRlKSwgbm9k
ZSkpOworICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShzdGF0ZS0+dm0oKSwgdG9K
UyhzdGF0ZSwgZGVwcmVjYXRlZEdsb2JhbE9iamVjdEZvclByb3RvdHlwZShzdGF0ZSksIG5vZGUp
KTsKIH0KIAogSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdGVkT2JqZWN0KEV4
ZWNTdGF0ZSogZXhlYykKQEAgLTk1LDcgKzk1LDcgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0
SG9zdDo6aW5zcGVjdGVkT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICBTY3JpcHRW
YWx1ZSBzY3JpcHRWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMpOworICAgIERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlIHNjcmlwdFZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYyk7CiAgICAgaWYgKHNjcmlw
dFZhbHVlLmhhc05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKQEAg
LTI0Nyw4ICsyNDcsOCBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXRFdmVudExp
c3RlbmVycyhFeGVjU3RhdGUqIGV4ZWMpCiBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0Ojpp
bnNwZWN0KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgp
ID49IDIpIHsKLSAgICAgICAgU2NyaXB0VmFsdWUgb2JqZWN0KGV4ZWMtPnZtKCksIGV4ZWMtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApKTsKLSAgICAgICAgU2NyaXB0VmFsdWUgaGludHMoZXhlYy0+dm0o
KSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSkpOworICAgICAgICBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSBvYmplY3QoZXhlYy0+dm0oKSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwor
ICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBoaW50cyhleGVjLT52bSgpLCBleGVjLT51
bmNoZWNrZWRBcmd1bWVudCgxKSk7CiAgICAgICAgIGltcGwoKS5pbnNwZWN0SW1wbChvYmplY3Qu
dG9JbnNwZWN0b3JWYWx1ZShleGVjKSwgaGludHMudG9JbnNwZWN0b3JWYWx1ZShleGVjKSk7CiAg
ICAgfQogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCmluZGV4IDJkYmUyZGUu
LmE2ZGE2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lu
amVjdGVkU2NyaXB0TWFuYWdlci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRlICJKU0RP
TVdpbmRvd0N1c3RvbS5oIgogI2luY2x1ZGUgIkpTSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5j
bHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0Lmgi
CisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0T2JqZWN0Lmg+CiAjaW5jbHVkZSA8cGFyc2VyL1Nv
dXJjZUNvZGUuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgogCkBAIC00OSw3ICs0OSw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2NyaXB0
T2JqZWN0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3Qg
U3RyaW5nJiBzb3VyY2UsIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgaW50IGlkKQorRGVw
cmVjYXRlZDo6U2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0
ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0
ZSwgaW50IGlkKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKHNjcmlwdFN0YXRlKTsKIApAQCAt
NjYsMTMgKzY2LDEzIEBAIFNjcmlwdE9iamVjdCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0
ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBKCiAgICAgICAgIGV2YWx1YXRp
b25SZXR1cm5WYWx1ZSA9IEpTQzo6ZXZhbHVhdGUoc2NyaXB0U3RhdGUsIHNvdXJjZUNvZGUsIGds
b2JhbFRoaXNWYWx1ZSwgJmV2YWx1YXRpb25FeGNlcHRpb24pOwogICAgIH0KICAgICBpZiAoZXZh
bHVhdGlvbkV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIFNjcmlwdE9iamVjdCgpOworICAgICAg
ICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KCk7CiAKICAgICBKU1ZhbHVlIGZ1bmN0
aW9uVmFsdWUgPSBldmFsdWF0aW9uUmV0dXJuVmFsdWU7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7
CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvblZhbHVlLCBjYWxs
RGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKLSAgICAgICAgcmV0dXJu
IFNjcmlwdE9iamVjdCgpOworICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0
KCk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIGFyZ3MuYXBwZW5kKHRv
SlMoc2NyaXB0U3RhdGUsIGdsb2JhbE9iamVjdCwgbV9pbmplY3RlZFNjcmlwdEhvc3QuZ2V0KCkp
KTsKQEAgLTgxLDggKzgxLDggQEAgU2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6
Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEoKIAogICAgIEpTVmFs
dWUgcmVzdWx0ID0gSlNDOjpjYWxsKHNjcmlwdFN0YXRlLCBmdW5jdGlvblZhbHVlLCBjYWxsVHlw
ZSwgY2FsbERhdGEsIGdsb2JhbFRoaXNWYWx1ZSwgYXJncyk7CiAgICAgaWYgKHJlc3VsdC5pc09i
amVjdCgpKQotICAgICAgICByZXR1cm4gU2NyaXB0T2JqZWN0KHNjcmlwdFN0YXRlLCByZXN1bHQu
Z2V0T2JqZWN0KCkpOwotICAgIHJldHVybiBTY3JpcHRPYmplY3QoKTsKKyAgICAgICAgcmV0dXJu
IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdChzY3JpcHRTdGF0ZSwgcmVzdWx0LmdldE9iamVjdCgp
KTsKKyAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KCk7CiB9CiAKIGJvb2wgSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coSlNDOjpFeGVjU3Rh
dGUqIHNjcmlwdFN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNN
ZXNzYWdlRXZlbnRDdXN0b20uY3BwCmluZGV4IDBhOWE0YzEuLmM4NGNhMGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAKQEAg
LTUzLDcgKzUzLDcgQEAgSlNWYWx1ZSBKU01lc3NhZ2VFdmVudDo6ZGF0YShFeGVjU3RhdGUqIGV4
ZWMpIGNvbnN0CiAgICAgSlNWYWx1ZSByZXN1bHQ7CiAgICAgc3dpdGNoIChldmVudC5kYXRhVHlw
ZSgpKSB7CiAgICAgY2FzZSBNZXNzYWdlRXZlbnQ6OkRhdGFUeXBlU2NyaXB0VmFsdWU6IHsKLSAg
ICAgICAgU2NyaXB0VmFsdWUgc2NyaXB0VmFsdWUgPSBldmVudC5kYXRhQXNTY3JpcHRWYWx1ZSgp
OworICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBzY3JpcHRWYWx1ZSA9IGV2ZW50LmRh
dGFBc1NjcmlwdFZhbHVlKCk7CiAgICAgICAgIGlmIChzY3JpcHRWYWx1ZS5oYXNOb1ZhbHVlKCkp
CiAgICAgICAgICAgICByZXN1bHQgPSBqc051bGwoKTsKICAgICAgICAgZWxzZQpAQCAtMTA1LDcg
KzEwNSw3IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUgaGFuZGxlSW5pdE1lc3NhZ2VFdmVudChKU01l
c3NhZ2VFdmVudCoganNFdmVudCwgSlNDOjpFeGVjU3RhCiAgICAgICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KLSAg
ICBTY3JpcHRWYWx1ZSBkYXRhQXJnID0gU2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwgZXhlYy0+YXJn
dW1lbnQoMykpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRhdGFBcmcgPSBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBleGVjLT5hcmd1bWVudCgzKSk7CiAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKaW5kZXgg
MDZjNTFjYS4uOTE3M2VkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NoZWR1bGVkQWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hl
ZHVsZWRBY3Rpb24uY3BwCkBAIC0zNyw5ICszNyw5IEBACiAjaW5jbHVkZSAiU2NyaXB0Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJT
Y3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJX
b3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorI2luY2x1ZGUg
PGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KIAog
dXNpbmcgbmFtZXNwYWNlIEpTQzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKaW5kZXggNWQ2NmM0ZC4uN2Q2OTVhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9y
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFj
dG9yeS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIK
ICNpbmNsdWRlICJTY3JpcHRDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2su
aCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZh
bHVlLmg+CiAjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg+CiAjaW5jbHVkZSA8aW50
ZXJwcmV0ZXIvQ2FsbEZyYW1lSW5saW5lcy5oPgogI2luY2x1ZGUgPGludGVycHJldGVyL1N0YWNr
VmlzaXRvci5oPgpAQCAtMTk5LDEwICsxOTksMTAgQEAgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3Rh
Y2s+IGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMK
IAogUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhKU0M6
OkV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgc2tpcEFyZ3VtZW50Q291bnQpCiB7Ci0gICAgVmVj
dG9yPFNjcmlwdFZhbHVlPiBhcmd1bWVudHM7CisgICAgVmVjdG9yPERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlPiBhcmd1bWVudHM7CiAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBleGVjLT5hcmd1
bWVudENvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IHNraXBBcmd1bWVudENvdW50OyBpIDwg
YXJndW1lbnRDb3VudDsgKytpKQotICAgICAgICBhcmd1bWVudHMuYXBwZW5kKFNjcmlwdFZhbHVl
KGV4ZWMtPnZtKCksIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKSk7CisgICAgICAgIGFyZ3Vt
ZW50cy5hcHBlbmQoRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwgZXhlYy0+dW5j
aGVja2VkQXJndW1lbnQoaSkpKTsKICAgICByZXR1cm4gU2NyaXB0QXJndW1lbnRzOjpjcmVhdGUo
ZXhlYywgYXJndW1lbnRzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyLmNwcAppbmRleCAyYzNlZjkzYWYuLjAwN2IwMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC00MCw3ICs0
MCw2IEBACiAjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFj
ay5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1
ZS5oIgogI2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZS5oIgpAQCAtNDgsNiArNDcsNyBA
QAogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlICJucHJ1bnRpbWVf
aW1wbC5oIgogI2luY2x1ZGUgInJ1bnRpbWVfcm9vdC5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1Nj
cmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8ZGVidWdnZXIvRGVidWdnZXIuaD4KICNpbmNsdWRlIDxo
ZWFwL1N0cm9uZ0lubGluZXMuaD4KICNpbmNsdWRlIDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRp
bmcuaD4KQEAgLTExNyw3ICsxMTcsNyBAQCBKU0RPTVdpbmRvd1NoZWxsKiBTY3JpcHRDb250cm9s
bGVyOjpjcmVhdGVXaW5kb3dTaGVsbChET01XcmFwcGVyV29ybGQmIHdvcmxkKQogICAgIHJldHVy
biB3aW5kb3dTaGVsbC5nZXQoKTsKIH0KIAotU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6
ZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPTVdy
YXBwZXJXb3JsZCYgd29ybGQpCitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9s
bGVyOjpldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwg
RE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKICAgICBjb25zdCBTb3VyY2VDb2RlJiBqc1NvdXJj
ZUNvZGUgPSBzb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpOwogICAgIFN0cmluZyBzb3VyY2VVUkwg
PSBqc1NvdXJjZUNvZGUucHJvdmlkZXIoKS0+dXJsKCk7CkBAIC0xNDksMTQgKzE0OSwxNCBAQCBT
Y3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0
U291cmNlQ29kZSYgc291cmNlQ29kZQogICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKSB7CiAg
ICAgICAgIHJlcG9ydEV4Y2VwdGlvbihleGVjLCBldmFsdWF0aW9uRXhjZXB0aW9uLCBzb3VyY2VD
b2RlLmNhY2hlZFNjcmlwdCgpKTsKICAgICAgICAgbV9zb3VyY2VVUkwgPSBzYXZlZFNvdXJjZVVS
TDsKLSAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7CisgICAgICAgIHJldHVybiBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSgpOwogICAgIH0KIAogICAgIG1fc291cmNlVVJMID0gc2F2ZWRTb3Vy
Y2VVUkw7Ci0gICAgcmV0dXJuIFNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIHJldHVyblZhbHVlKTsK
KyAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwgcmV0dXJuVmFs
dWUpOwogfQogCi1TY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBT
Y3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKSAKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIFNj
cmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNv
ZGUpIAogewogICAgIHJldHVybiBldmFsdWF0ZUluV29ybGQoc291cmNlQ29kZSwgbWFpblRocmVh
ZE5vcm1hbFdvcmxkKCkpOwogfQpAQCAtNDU4LDEzICs0NTgsMTMgQEAgdm9pZCBTY3JpcHRDb250
cm9sbGVyOjpjbGVhclNjcmlwdE9iamVjdHMoKQogI2VuZGlmCiB9CiAKLVNjcmlwdFZhbHVlIFNj
cmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29y
bGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCitEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChE
T01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVz
ZXJHZXN0dXJlKQogewogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3Io
Zm9yY2VVc2VyR2VzdHVyZSA/IERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUgOiBQb3Nz
aWJseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VD
b2RlKHNjcmlwdCwgbV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSk7CiAKICAgICBpZiAoIWNhbkV4
ZWN1dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBpc1BhdXNlZCgpKQotICAgICAg
ICByZXR1cm4gU2NyaXB0VmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlKCk7CiAKICAgICByZXR1cm4gZXZhbHVhdGVJbldvcmxkKHNvdXJjZUNvZGUsIHdvcmxk
KTsKIH0KQEAgLTUwMCwxNiArNTAwLDE2IEBAIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6Y2FuRXhl
Y3V0ZVNjcmlwdHMoUmVhc29uRm9yQ2FsbGluZ0NhbkV4ZWN1dGVTY3JpcHRzIHJlYXNvCiAgICAg
cmV0dXJuIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuYWxsb3dTY3JpcHQobV9mcmFtZS5zZXR0
aW5ncygpLmlzU2NyaXB0RW5hYmxlZCgpKTsKIH0KIAotU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJv
bGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJH
ZXN0dXJlKQorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0
ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQogewog
ICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoZm9yY2VVc2VyR2VzdHVy
ZSA/IERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUgOiBQb3NzaWJseVByb2Nlc3NpbmdV
c2VyR2VzdHVyZSk7CiAgICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHQoU2NyaXB0U291cmNlQ29kZShz
Y3JpcHQsIG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpKTsKIH0KIAotU2NyaXB0VmFsdWUgU2Ny
aXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3Vy
Y2VDb2RlKQorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0
ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQogewogICAgIGlmICgh
Y2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpIHx8IGlzUGF1c2VkKCkpCi0g
ICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOworICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUoKTsKIAogICAgIFJlZjxGcmFtZT4gcHJvdGVjdChtX2ZyYW1lKTsgLy8gU2Ny
aXB0IGV4ZWN1dGlvbiBjYW4gZGVzdHJveSB0aGUgZnJhbWUsIGFuZCB0aHVzIHRoZSBTY3JpcHRD
b250cm9sbGVyLgogCkBAIC01MzIsNyArNTMyLDcgQEAgYm9vbCBTY3JpcHRDb250cm9sbGVyOjpl
eGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYgdXJsLCBTaG91bGRSZXBsYWNlRG9jdW0K
ICAgICBjb25zdCBpbnQgamF2YXNjcmlwdFNjaGVtZUxlbmd0aCA9IHNpemVvZigiamF2YXNjcmlw
dDoiKSAtIDE7CiAKICAgICBTdHJpbmcgZGVjb2RlZFVSTCA9IGRlY29kZVVSTEVzY2FwZVNlcXVl
bmNlcyh1cmwuc3RyaW5nKCkpOwotICAgIFNjcmlwdFZhbHVlIHJlc3VsdCA9IGV4ZWN1dGVTY3Jp
cHQoZGVjb2RlZFVSTC5zdWJzdHJpbmcoamF2YXNjcmlwdFNjaGVtZUxlbmd0aCkpOworICAgIERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHJlc3VsdCA9IGV4ZWN1dGVTY3JpcHQoZGVjb2RlZFVSTC5z
dWJzdHJpbmcoamF2YXNjcmlwdFNjaGVtZUxlbmd0aCkpOwogCiAgICAgLy8gSWYgZXhlY3V0aW5n
IHNjcmlwdCBjYXVzZWQgdGhpcyBmcmFtZSB0byBiZSByZW1vdmVkIGZyb20gdGhlIHBhZ2UsIHdl
CiAgICAgLy8gZG9uJ3Qgd2FudCB0byB0cnkgdG8gcmVwbGFjZSBpdHMgZG9jdW1lbnQhCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggMzY2Yjcy
NC4uNjdlOTZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuaApAQCAtMzgsNiArMzgsMTAgQEAgT0JKQ19DTEFTUyBKU0NvbnRleHQ7CiAKIHN0cnVj
dCBOUE9iamVjdDsKIAorbmFtZXNwYWNlIERlcHJlY2F0ZWQgeworY2xhc3MgU2NyaXB0VmFsdWU7
Cit9CisKIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNs
YXNzIEV4ZWNTdGF0ZTsKQEAgLTUzLDcgKzU3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgSFRNTFBsdWdJbkVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIFNjcmlwdFNvdXJjZUNv
ZGU7Ci1jbGFzcyBTY3JpcHRWYWx1ZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgV2lk
Z2V0OwogCkBAIC05NCw5ICs5Nyw5IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGdldEFs
bFdvcmxkcyhWZWN0b3I8UmVmPERPTVdyYXBwZXJXb3JsZD4+Jik7CiAKLSAgICBTY3JpcHRWYWx1
ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKLSAgICBTY3JpcHRWYWx1
ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1
cmUgPSBmYWxzZSk7Ci0gICAgU2NyaXB0VmFsdWUgZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3Jh
cHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9
IGZhbHNlKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0
IFNjcmlwdFNvdXJjZUNvZGUmKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBleGVjdXRl
U2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUgPSBmYWxz
ZSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9N
V3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVy
ZSA9IGZhbHNlKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhcmd1bWVudCBpcyBhIEphdmFT
Y3JpcHQgVVJMLgogICAgIGJvb2wgZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTChjb25zdCBVUkwmLCBT
aG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgc2hvdWxkUmVwbGFjZURvY3VtZW50
SWZKYXZhU2NyaXB0VVJMID0gUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMKTsKQEAgLTEw
NSw4ICsxMDgsOCBAQCBwdWJsaWM6CiAgICAgLy8gRGFyd2luIGlzIGFuIGV4Y2VwdGlvbiB0byB0
aGlzIHJ1bGU6IGl0IGlzIE9LIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBmcm9tIGFueSB0aHJlYWQs
IGV2ZW4gcmVlbnRyYW50bHkuCiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygp
OwogCi0gICAgU2NyaXB0VmFsdWUgZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYpOwot
ICAgIFNjcmlwdFZhbHVlIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwg
RE9NV3JhcHBlcldvcmxkJik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZXZhbHVhdGUo
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGV2
YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7
CiAKICAgICBXVEY6OlRleHRQb3NpdGlvbiBldmVudEhhbmRsZXJQb3NpdGlvbigpIGNvbnN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAK
aW5kZXggYWRiNTc3OC4uMjNkNGE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtNDEsOCArNDEsOCBAQAogI2luY2x1ZGUgIlBh
Z2VDb25zb2xlLmgiCiAjaW5jbHVkZSAiU2NyaXB0QnJlYWtwb2ludC5oIgogI2luY2x1ZGUgIlNj
cmlwdERlYnVnTGlzdGVuZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUg
IlNvdW5kLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxk
ZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oPgogI2luY2x1ZGUgPHBhcnNlci9Tb3VyY2VQcm92
aWRlci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CkBAIC0xMzAsMTQgKzEzMCwxNCBA
QCBib29sIFNjcmlwdERlYnVnU2VydmVyOjpjYW5TZXRTY3JpcHRTb3VyY2UoKQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0U291cmNlKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGJvb2wsIFN0cmluZyosIFNjcmlwdFZhbHVlKiwg
U2NyaXB0T2JqZWN0KikKK2Jvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OnNldFNjcmlwdFNvdXJjZShj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sLCBTdHJpbmcqLCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSosIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCopCiB7CiAgICAgLy8gRklYTUUo
NDAzMDApOiBpbXBsZW1lbnQgdGhpcy4KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIAotdm9pZCBT
Y3JpcHREZWJ1Z1NlcnZlcjo6dXBkYXRlQ2FsbFN0YWNrKFNjcmlwdFZhbHVlKikKK3ZvaWQgU2Ny
aXB0RGVidWdTZXJ2ZXI6OnVwZGF0ZUNhbGxTdGFjayhEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSop
CiB7CiAgICAgLy8gVGhpcyBtZXRob2QgaXMgdXNlZCBmb3IgcmVzdGFydCBmcmFtZSBmZWF0dXJl
IHRoYXQgaXMgbm90IGltcGxlbWVudGVkIHlldC4KICAgICAvLyBGSVhNRSg0MDMwMCk6IGltcGxl
bWVudCB0aGlzLgpAQCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRp
c3BhdGNoRGlkUGF1c2UoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIpCiAgICAgICAgIH0g
ZWxzZQogICAgICAgICAgICAganNDYWxsRnJhbWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIH0KLSAg
ICBsaXN0ZW5lci0+ZGlkUGF1c2Uoc3RhdGUsIFNjcmlwdFZhbHVlKHN0YXRlLT52bSgpLCBqc0Nh
bGxGcmFtZSksIFNjcmlwdFZhbHVlKCkpOworICAgIGxpc3RlbmVyLT5kaWRQYXVzZShzdGF0ZSwg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoc3RhdGUtPnZtKCksIGpzQ2FsbEZyYW1lKSwgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUoKSk7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3Bh
dGNoRGlkQ29udGludWUoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIpCkBAIC0zMTksNyAr
MzE5LDcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y2xlYXJDb21waWxlZFNjcmlwdHMoKQog
ICAgIC8vIEZJWE1FKDg5NjUyKTogaW1wbGVtZW50IHRoaXMuCiB9CiAKLXZvaWQgU2NyaXB0RGVi
dWdTZXJ2ZXI6OnJ1blNjcmlwdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYsIFNjcmlw
dFZhbHVlKiwgYm9vbCosIFN0cmluZyopCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpydW5TY3Jp
cHQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSosIGJvb2wqLCBTdHJpbmcqKQogewogICAgIC8vIEZJWE1FKDg5NjUyKTogaW1wbGVtZW50IHRo
aXMuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1
Z1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIu
aAppbmRleCAyZmU5YWRhLi5hNzAxOGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdERlYnVnU2VydmVyLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJTY3Jp
cHREZWJ1Z0xpc3RlbmVyLmgiCiAjaW5jbHVkZSAiU291cmNlSUQuaCIKICNpbmNsdWRlICJUaW1l
ci5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgogI2luY2x1ZGUgPGRlYnVn
Z2VyL0RlYnVnZ2VyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgpAQCAtNTAsMTEgKzUxLDggQEAgY2xhc3MgRGVidWdnZXJDYWxsRnJhbWU7CiBj
bGFzcyBKU0dsb2JhbE9iamVjdDsKIGNsYXNzIEV4ZWNTdGF0ZTsKIH0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgU2NyaXB0RGVidWdMaXN0ZW5lcjsKLWNsYXNzIFNjcmlwdE9iamVjdDsK
LWNsYXNzIFNjcmlwdFZhbHVlOworbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTY3JpcHRE
ZWJ1Z1NlcnZlciA6IHB1YmxpYyBKU0M6OkRlYnVnZ2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShTY3JpcHREZWJ1Z1NlcnZlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNjQs
OCArNjIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckJyZWFrcG9pbnRzKCk7CiAKICAgICBi
b29sIGNhblNldFNjcmlwdFNvdXJjZSgpOwotICAgIGJvb2wgc2V0U2NyaXB0U291cmNlKGNvbnN0
IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudCwgYm9vbCBwcmV2aWV3
LCBTdHJpbmcqIGVycm9yLCBTY3JpcHRWYWx1ZSogbmV3Q2FsbEZyYW1lcywgU2NyaXB0T2JqZWN0
KiByZXN1bHQpOwotICAgIHZvaWQgdXBkYXRlQ2FsbFN0YWNrKFNjcmlwdFZhbHVlKiBjYWxsRnJh
bWUpOworICAgIGJvb2wgc2V0U2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNv
bnN0IFN0cmluZyYgbmV3Q29udGVudCwgYm9vbCBwcmV2aWV3LCBTdHJpbmcqIGVycm9yLCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSogbmV3Q2FsbEZyYW1lcywgRGVwcmVjYXRlZDo6U2NyaXB0T2Jq
ZWN0KiByZXN1bHQpOworICAgIHZvaWQgdXBkYXRlQ2FsbFN0YWNrKERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlKiBjYWxsRnJhbWUpOwogCiAgICAgYm9vbCBjYXVzZXNSZWNvbXBpbGF0aW9uKCkgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgc3VwcG9ydHNTZXBhcmF0ZVNjcmlwdENvbXBpbGF0aW9u
QW5kRXhlY3V0aW9uKCkgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTgyLDcgKzgwLDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBjb21waWxlU2NyaXB0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5n
JiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgU3RyaW5nKiBzY3JpcHRJRCwg
U3RyaW5nKiBleGNlcHRpb25NZXNzYWdlKTsKICAgICB2b2lkIGNsZWFyQ29tcGlsZWRTY3JpcHRz
KCk7Ci0gICAgdm9pZCBydW5TY3JpcHQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHNj
cmlwdElELCBTY3JpcHRWYWx1ZSogcmVzdWx0LCBib29sKiB3YXNUaHJvd24sIFN0cmluZyogZXhj
ZXB0aW9uTWVzc2FnZSk7CisgICAgdm9pZCBydW5TY3JpcHQoSlNDOjpFeGVjU3RhdGUqLCBjb25z
dCBTdHJpbmcmIHNjcmlwdElELCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSogcmVzdWx0LCBib29s
KiB3YXNUaHJvd24sIFN0cmluZyogZXhjZXB0aW9uTWVzc2FnZSk7CiAKICAgICBjbGFzcyBUYXNr
IHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAppbmRleCAyZWEyYjRiLi43ZDMw
NGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlv
bkNhbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9u
Q2FsbC5jcHAKQEAgLTMyLDggKzMyLDcgQEAKICNpbmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwu
aCIKIAogI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgotI2luY2x1ZGUgIlNjcmlw
dFZhbHVlLmgiCi0KKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUg
PHJ1bnRpbWUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAg
LTQxLDcgKzQwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi12b2lkIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KGNvbnN0
IFNjcmlwdE9iamVjdCYgYXJndW1lbnQpCit2b2lkIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6
OmFwcGVuZEFyZ3VtZW50KGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgYXJndW1lbnQp
CiB7CiAgICAgaWYgKGFyZ3VtZW50LnNjcmlwdFN0YXRlKCkgIT0gbV9leGVjKSB7CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTAsNyArNDksNyBAQCB2b2lkIFNjcmlwdENhbGxB
cmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KGNvbnN0IFNjcmlwdE9iamVjdCYgYXJndW1l
bnQpCiAgICAgbV9hcmd1bWVudHMuYXBwZW5kKGFyZ3VtZW50LmpzT2JqZWN0KCkpOwogfQogCi12
b2lkIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KGNvbnN0IFNjcmlw
dFZhbHVlJiBhcmd1bWVudCkKK3ZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5k
QXJndW1lbnQoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGFyZ3VtZW50KQogewogICAg
IG1fYXJndW1lbnRzLmFwcGVuZChhcmd1bWVudC5qc1ZhbHVlKCkpOwogfQpAQCAtMTA3LDE0ICsx
MDYsMTQgQEAgdm9pZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1bWVudChi
b29sIGFyZ3VtZW50KQogICAgIG1fYXJndW1lbnRzLmFwcGVuZChqc0Jvb2xlYW4oYXJndW1lbnQp
KTsKIH0KIAotU2NyaXB0RnVuY3Rpb25DYWxsOjpTY3JpcHRGdW5jdGlvbkNhbGwoY29uc3QgU2Ny
aXB0T2JqZWN0JiB0aGlzT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpCitTY3JpcHRGdW5jdGlv
bkNhbGw6OlNjcmlwdEZ1bmN0aW9uQ2FsbChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3Qm
IHRoaXNPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICA6IFNjcmlwdENhbGxBcmd1bWVu
dEhhbmRsZXIodGhpc09iamVjdC5zY3JpcHRTdGF0ZSgpKQogICAgICwgbV90aGlzT2JqZWN0KHRo
aXNPYmplY3QpCiAgICAgLCBtX25hbWUobmFtZSkKIHsKIH0KIAotU2NyaXB0VmFsdWUgU2NyaXB0
RnVuY3Rpb25DYWxsOjpjYWxsKGJvb2wmIGhhZEV4Y2VwdGlvbikKK0RlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlIFNjcmlwdEZ1bmN0aW9uQ2FsbDo6Y2FsbChib29sJiBoYWRFeGNlcHRpb24pCiB7CiAg
ICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBtX3RoaXNPYmplY3QuanNPYmplY3QoKTsKIApAQCAt
MTIzLDEzICsxMjIsMTMgQEAgU2NyaXB0VmFsdWUgU2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKGJv
b2wmIGhhZEV4Y2VwdGlvbikKICAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gdGhpc09iamVjdC0+Z2V0
KG1fZXhlYywgSWRlbnRpZmllcihtX2V4ZWMsIG1fbmFtZSkpOwogICAgIGlmIChtX2V4ZWMtPmhh
ZEV4Y2VwdGlvbigpKSB7CiAgICAgICAgIGhhZEV4Y2VwdGlvbiA9IHRydWU7Ci0gICAgICAgIHJl
dHVybiBTY3JpcHRWYWx1ZSgpOworICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUoKTsKICAgICB9CiAKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlwZSBjYWxs
VHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBl
ID09IENhbGxUeXBlTm9uZSkKLSAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7CisgICAgICAg
IHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSgpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQ7
CiAgICAgaWYgKGlzTWFpblRocmVhZCgpKQpAQCAtMTM5LDEzICsxMzgsMTMgQEAgU2NyaXB0VmFs
dWUgU2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKGJvb2wmIGhhZEV4Y2VwdGlvbikKIAogICAgIGlm
IChtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAgICAgICAgIGhhZEV4Y2VwdGlvbiA9IHRydWU7
Ci0gICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOworICAgICAgICByZXR1cm4gRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUoKTsKICAgICB9CiAKLSAgICByZXR1cm4gU2NyaXB0VmFsdWUobV9leGVj
LT52bSgpLCByZXN1bHQpOworICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShtX2V4
ZWMtPnZtKCksIHJlc3VsdCk7CiB9CiAKLVNjcmlwdFZhbHVlIFNjcmlwdEZ1bmN0aW9uQ2FsbDo6
Y2FsbCgpCitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwo
KQogewogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7CiAgICAgcmV0dXJuIGNhbGwoaGFk
RXhjZXB0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dEZ1bmN0aW9uQ2FsbC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rp
b25DYWxsLmgKaW5kZXggNTZmYTQ3Yy4uMzc0MzIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmgKQEAgLTMxLDI1ICszMSwyNiBAQAogI2lm
bmRlZiBTY3JpcHRGdW5jdGlvbkNhbGxfaAogI2RlZmluZSBTY3JpcHRGdW5jdGlvbkNhbGxfaAog
Ci0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCi0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKLQor
I2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvQXJn
TGlzdC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgRGVw
cmVjYXRlZCB7CitjbGFzcyBTY3JpcHRWYWx1ZTsKK30KKwogbmFtZXNwYWNlIEpTQyB7Ci0gICAg
Y2xhc3MgSlNWYWx1ZTsKK2NsYXNzIEpTVmFsdWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
LSAgICBjbGFzcyBTY3JpcHRWYWx1ZTsKIAogICAgIGNsYXNzIFNjcmlwdENhbGxBcmd1bWVudEhh
bmRsZXIgewogICAgIHB1YmxpYzoKICAgICAgICAgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcihK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUpIDogbV9leGVjKHN0YXRlKSB7IH0KIAotICAgICAgICB2b2lk
IGFwcGVuZEFyZ3VtZW50KGNvbnN0IFNjcmlwdE9iamVjdCYpOwotICAgICAgICB2b2lkIGFwcGVu
ZEFyZ3VtZW50KGNvbnN0IFNjcmlwdFZhbHVlJik7CisgICAgICAgIHZvaWQgYXBwZW5kQXJndW1l
bnQoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0Jik7CisgICAgICAgIHZvaWQgYXBwZW5k
QXJndW1lbnQoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmKTsKICAgICAgICAgdm9pZCBh
cHBlbmRBcmd1bWVudChjb25zdCBjaGFyKik7CiAgICAgICAgIHZvaWQgYXBwZW5kQXJndW1lbnQo
Y29uc3QgU3RyaW5nJik7CiAgICAgICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoSlNDOjpKU1ZhbHVl
KTsKQEAgLTczLDEyICs3NCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBT
Y3JpcHRGdW5jdGlvbkNhbGwgOiBwdWJsaWMgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlciB7CiAg
ICAgcHVibGljOgotICAgICAgICBTY3JpcHRGdW5jdGlvbkNhbGwoY29uc3QgU2NyaXB0T2JqZWN0
JiB0aGlzT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgICAgICBTY3JpcHRWYWx1ZSBj
YWxsKGJvb2wmIGhhZEV4Y2VwdGlvbik7Ci0gICAgICAgIFNjcmlwdFZhbHVlIGNhbGwoKTsKKyAg
ICAgICAgU2NyaXB0RnVuY3Rpb25DYWxsKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYg
dGhpc09iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICAgICAgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUgY2FsbChib29sJiBoYWRFeGNlcHRpb24pOworICAgICAgICBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSBjYWxsKCk7CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIFNjcmlwdE9iamVj
dCBtX3RoaXNPYmplY3Q7CisgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBtX3RoaXNP
YmplY3Q7CiAgICAgICAgIFN0cmluZyBtX25hbWU7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5jcHAKc2ltaWxhcml0eSBpbmRleCA4NiUK
cmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNwcApy
ZW5hbWUgdG8gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0LmNw
cAppbmRleCAxNDJlNzIzLi5hOGI1YTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdEdsb2JhbE9iamVjdC5jcHAKQEAgLTI5LDEwICsyOSwxMCBAQAogICovCiAKICNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlICJTY3Jp
cHRHbG9iYWxPYmplY3QuaCIKIAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotCisjaW5jbHVk
ZSA8YmluZGluZ3MvU2NyaXB0T2JqZWN0Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4K
IAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCkBAIC00MywxOCArNDMsNiBAQCB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNjcmlwdE9iamVjdDo6U2NyaXB0T2Jq
ZWN0KEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgSlNPYmplY3QqIG9iamVjdCkKLSAgICA6
IFNjcmlwdFZhbHVlKHNjcmlwdFN0YXRlLT52bSgpLCBvYmplY3QpCi0gICAgLCBtX3NjcmlwdFN0
YXRlKHNjcmlwdFN0YXRlKQotewotfQotCi1TY3JpcHRPYmplY3Q6OlNjcmlwdE9iamVjdChKU0M6
OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBzY3JpcHRWYWx1ZSkK
LSAgICA6IFNjcmlwdFZhbHVlKHNjcmlwdFN0YXRlLT52bSgpLCBzY3JpcHRWYWx1ZS5qc1ZhbHVl
KCkpCi0gICAgLCBtX3NjcmlwdFN0YXRlKHNjcmlwdFN0YXRlKQotewotfQotCiBzdGF0aWMgYm9v
bCBoYW5kbGVFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlKQogewogICAgIGlm
ICghc2NyaXB0U3RhdGUtPmhhZEV4Y2VwdGlvbigpKQpAQCAtNjQsNyArNTIsNyBAQCBzdGF0aWMg
Ym9vbCBoYW5kbGVFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlKQogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OnNldChKU0M6OkV4ZWNT
dGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFNjcmlwdE9iamVjdCYg
dmFsdWUpCitib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KEpTQzo6RXhlY1N0YXRlKiBzY3Jp
cHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0
JiB2YWx1ZSkKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhzY3JpcHRTdGF0ZSk7CiAgICAgc2Ny
aXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHV0RGlyZWN0KHNjcmlwdFN0YXRlLT52
bSgpLCBJZGVudGlmaWVyKHNjcmlwdFN0YXRlLCBuYW1lKSwgdmFsdWUuanNPYmplY3QoKSk7CkBA
IC04MSw3ICs2OSw3IEBAIGJvb2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQoSlNDOjpFeGVjU3Rh
dGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBJbnNwCiB9CiAjZW5kaWYgLy8gRU5B
QkxFKElOU1BFQ1RPUikKIAotYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OmdldChKU0M6OkV4ZWNT
dGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUsIFNjcmlwdE9iamVjdCYgdmFsdWUp
Citib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6Z2V0KEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0
ZSwgY29uc3QgY2hhciogbmFtZSwgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiB2YWx1ZSkKIHsK
ICAgICBKU0xvY2tIb2xkZXIgbG9jayhzY3JpcHRTdGF0ZSk7CiAgICAgSlNWYWx1ZSBqc1ZhbHVl
ID0gc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Z2V0KHNjcmlwdFN0YXRlLCBJ
ZGVudGlmaWVyKHNjcmlwdFN0YXRlLCBuYW1lKSk7CkBAIC05MSw3ICs3OSw3IEBAIGJvb2wgU2Ny
aXB0R2xvYmFsT2JqZWN0OjpnZXQoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBj
aGFyKiBuYW1lLCBTY3JpCiAgICAgaWYgKCFqc1ZhbHVlLmlzT2JqZWN0KCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIHZhbHVlID0gU2NyaXB0T2JqZWN0KHNjcmlwdFN0YXRlLCBhc09i
amVjdChqc1ZhbHVlKSk7CisgICAgdmFsdWUgPSBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3Qoc2Ny
aXB0U3RhdGUsIGFzT2JqZWN0KGpzVmFsdWUpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0LmgKc2ltaWxhcml0eSBp
bmRleCA2NCUKY29weSBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3Rh
Y2suaApjb3B5IHRvIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVj
dC5oCmluZGV4IGUwZDdmZDUuLmJlMWVhNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRHbG9iYWxPYmplY3QuaApAQCAtMSwxMCArMSwxMCBAQAogLyoKLSAqIENvcHlyaWdo
dCAoYykgMjAwOCwgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKICAqIG1ldDoKLSAqIAorICoKICAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CiAgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCiAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCkBAIC0xNCw3ICsxNCw3IEBACiAgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCiAgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQogICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqIAorICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKICAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCiAgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKQEAgLTI4LDQ1ICsyOCw0MCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0j
aWZuZGVmIFNjcmlwdENhbGxTdGFja19oCi0jZGVmaW5lIFNjcmlwdENhbGxTdGFja19oCisjaWZu
ZGVmIFNjcmlwdEdsb2JhbE9iamVjdF9oCisjZGVmaW5lIFNjcmlwdEdsb2JhbE9iamVjdF9oCiAK
LSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotI2luY2x1ZGUgIkluc3BlY3RvclR5cGVCdWlsZGVyLmgi
Ci0jZW5kaWYKK25hbWVzcGFjZSBEZXByZWNhdGVkIHsKK2NsYXNzIFNjcmlwdE9iamVjdDsKK30K
IAotI2luY2x1ZGUgIlNjcmlwdENhbGxGcmFtZS5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Citu
YW1lc3BhY2UgSlNDIHsKK2NsYXNzIEV4ZWNTdGF0ZTsKK30KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBJbnNwZWN0b3JBcnJheTsKK2NsYXNzIEluamVjdGVkU2NyaXB0SG9zdDsKK2Ns
YXNzIEluc3BlY3RvckZyb250ZW5kSG9zdDsKK2NsYXNzIE1lZGlhQ29udHJvbHNIb3N0OwogCi1j
bGFzcyBTY3JpcHRDYWxsU3RhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxTY3JpcHRDYWxsU3RhY2s+
IHsKK2NsYXNzIFNjcmlwdEdsb2JhbE9iamVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0
IHNpemVfdCBtYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlID0gMjAwOwotICAgIAotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRlKFZlY3RvcjxTY3JpcHRDYWxsRnJh
bWU+Jik7Ci0KLSAgICB+U2NyaXB0Q2FsbFN0YWNrKCk7Ci0KLSAgICBjb25zdCBTY3JpcHRDYWxs
RnJhbWUgJmF0KHNpemVfdCkgY29uc3Q7Ci0gICAgc2l6ZV90IHNpemUoKSBjb25zdDsKLQotICAg
IGJvb2wgaXNFcXVhbChTY3JpcHRDYWxsU3RhY2sqKSBjb25zdDsKLQorICAgIHN0YXRpYyBib29s
IHNldChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdE9iamVjdCYpOwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgUGFzc1JlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNhbGxGcmFtZT4+IGJ1aWxk
SW5zcGVjdG9yQXJyYXkoKSBjb25zdDsKKyAgICBzdGF0aWMgYm9vbCBzZXQoSlNDOjpFeGVjU3Rh
dGUqLCBjb25zdCBjaGFyKiBuYW1lLCBJbnNwZWN0b3JGcm9udGVuZEhvc3QqKTsKKyAgICBzdGF0
aWMgYm9vbCBzZXQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lLCBJbmplY3RlZFNj
cmlwdEhvc3QqKTsKKyNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9DT05UUk9MU19TQ1JJUFQpCisg
ICAgc3RhdGljIGJvb2wgc2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgTWVk
aWFDb250cm9sc0hvc3QqKTsKICNlbmRpZgogCisgICAgc3RhdGljIGJvb2wgZ2V0KEpTQzo6RXhl
Y1N0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0Jik7Cisg
ICAgc3RhdGljIGJvb2wgcmVtb3ZlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciogbmFtZSk7
CiBwcml2YXRlOgotICAgIFNjcmlwdENhbGxTdGFjayhWZWN0b3I8U2NyaXB0Q2FsbEZyYW1lPiYp
OwotCi0gICAgVmVjdG9yPFNjcmlwdENhbGxGcmFtZT4gbV9mcmFtZXM7CisgICAgU2NyaXB0R2xv
YmFsT2JqZWN0KCkgeyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAv
LyBTY3JpcHRDYWxsU3RhY2tfaAorI2VuZGlmIC8vIFNjcmlwdEdsb2JhbE9iamVjdF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAzZmJlNjcxLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdE9iamVjdC5oCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0
cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0g
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYg
U2NyaXB0T2JqZWN0X2gKLSNkZWZpbmUgU2NyaXB0T2JqZWN0X2gKLQotI2luY2x1ZGUgIlNjcmlw
dFN0YXRlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKLQotI2luY2x1ZGUgPGhlYXAvU3Ry
b25nLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU09iamVjdC5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLSAgICBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZEhvc3Q7Ci0KLSAgICBjbGFzcyBTY3Jp
cHRPYmplY3QgOiBwdWJsaWMgU2NyaXB0VmFsdWUgewotICAgIHB1YmxpYzoKLSAgICAgICAgU2Ny
aXB0T2JqZWN0KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCopOwotICAgICAgICBTY3Jp
cHRPYmplY3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTY3JpcHRWYWx1ZSYpOwotICAgICAgICBT
Y3JpcHRPYmplY3QoKSA6IG1fc2NyaXB0U3RhdGUoMCkgeyB9Ci0gICAgICAgIEpTQzo6SlNPYmpl
Y3QqIGpzT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gYXNPYmplY3QoanNWYWx1ZSgpKTsgfQotICAg
ICAgICBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3Njcmlw
dFN0YXRlOyB9Ci0KLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIEpTQzo6RXhlY1N0YXRlKiBtX3Nj
cmlwdFN0YXRlOwotICAgIH07Ci0KLSAgICBjbGFzcyBTY3JpcHRHbG9iYWxPYmplY3QgewotICAg
IHB1YmxpYzoKLSAgICAgICAgc3RhdGljIGJvb2wgc2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
Y2hhciogbmFtZSwgY29uc3QgU2NyaXB0T2JqZWN0Jik7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikK
LSAgICAgICAgc3RhdGljIGJvb2wgc2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciogbmFt
ZSwgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Kik7Ci0jZW5kaWYKLSAgICAgICAgc3RhdGljIGJvb2wg
Z2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgU2NyaXB0T2JqZWN0Jik7Ci0g
ICAgICAgIHN0YXRpYyBib29sIHJlbW92ZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5h
bWUpOwotICAgIHByaXZhdGU6Ci0gICAgICAgIFNjcmlwdEdsb2JhbE9iamVjdCgpIHsgfQotICAg
IH07Ci0KLX0KLQotI2VuZGlmIC8vIFNjcmlwdE9iamVjdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUuY3BwCmluZGV4IDQ1MDUwYWUuLmEyMjAzMDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUuY3BwCkBAIC0zMCw4ICsz
MCw4IEBACiAKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlLmgiCiAKLSNpbmNsdWRlICJJbnNwZWN0
b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlIDxpbnNwZWN0
b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8cHJvZmlsZXIvUHJvZmlsZS5oPgogI2lu
Y2x1ZGUgPHByb2ZpbGVyL1Byb2ZpbGVOb2RlLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdFByb2ZpbGUuaAppbmRleCA4MDk1ZmU4Li5mMzA1MTJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5oCkBAIC00NCw4ICs0NCw2IEBAIGNsYXNz
IFByb2ZpbGU7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW5zcGVjdG9yT2JqZWN0
OwotCiBjbGFzcyBTY3JpcHRQcm9maWxlIDogcHVibGljIFJlZkNvdW50ZWQ8U2NyaXB0UHJvZmls
ZT4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcmlwdFByb2ZpbGU+IGNyZWF0
ZShQYXNzUmVmUHRyPEpTQzo6UHJvZmlsZT4gcHJvZmlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5jcHAKaW5kZXggZmRlMjdkMC4uZmM5Mzk4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmNwcApAQCAtMzUs
OCArMzUsOSBAQAogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiTWFpbkZyYW1l
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1
ZGUgIlNjcmlwdFN0YXRlLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0T2JqZWN0Lmg+Cisj
aW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxwcm9maWxlci9MZWdh
Y3lQcm9maWxlci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKQEAgLTQ3LDEyICs0OCwx
MiBAQCB2b2lkIFNjcmlwdFByb2ZpbGVyOjpjb2xsZWN0R2FyYmFnZSgpCiAgICAgZ2NDb250cm9s
bGVyKCkuZ2FyYmFnZUNvbGxlY3RTb29uKCk7CiB9CiAKLVNjcmlwdE9iamVjdCBTY3JpcHRQcm9m
aWxlcjo6b2JqZWN0QnlIZWFwT2JqZWN0SWQodW5zaWduZWQpCitEZXByZWNhdGVkOjpTY3JpcHRP
YmplY3QgU2NyaXB0UHJvZmlsZXI6Om9iamVjdEJ5SGVhcE9iamVjdElkKHVuc2lnbmVkKQogewot
ICAgIHJldHVybiBTY3JpcHRPYmplY3QoKTsKKyAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0
T2JqZWN0KCk7CiB9CiAKLXVuc2lnbmVkIFNjcmlwdFByb2ZpbGVyOjpnZXRIZWFwT2JqZWN0SWQo
Y29uc3QgU2NyaXB0VmFsdWUmKQordW5zaWduZWQgU2NyaXB0UHJvZmlsZXI6OmdldEhlYXBPYmpl
Y3RJZChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYpCiB7CiAgICAgcmV0dXJuIDA7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuaAppbmRleCA3Mjdj
NmVlLi5jMmZkZDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRQcm9maWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2Zp
bGVyLmgKQEAgLTI4LDIwICsyOCwyNCBAQAogI2RlZmluZSBTY3JpcHRQcm9maWxlcl9oCiAKICNp
ZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKwogI2luY2x1ZGUgIlNjcmlwdEhlYXBTbmFw
c2hvdC5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGUuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0
ZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KIAorbmFtZXNwYWNlIERlcHJlY2F0ZWQgeworY2xhc3MgU2NyaXB0T2JqZWN0OworY2xhc3Mg
U2NyaXB0VmFsdWU7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRXh0ZXJuYWxB
cnJheVZpc2l0b3I7CiBjbGFzcyBFeHRlcm5hbFN0cmluZ1Zpc2l0b3I7CiBjbGFzcyBXcmFwcGVk
Tm9kZVZpc2l0b3I7CiBjbGFzcyBQYWdlOwotY2xhc3MgU2NyaXB0T2JqZWN0OwotY2xhc3MgU2Ny
aXB0VmFsdWU7CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIAogY2xhc3MgU2NyaXB0UHJvZmls
ZXIgewpAQCAtNTcsOCArNjEsOCBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHN0YXRpYyB2b2lk
IGNvbGxlY3RHYXJiYWdlKCk7Ci0gICAgc3RhdGljIFNjcmlwdE9iamVjdCBvYmplY3RCeUhlYXBP
YmplY3RJZCh1bnNpZ25lZCBpZCk7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGdldEhlYXBPYmplY3RJ
ZChjb25zdCBTY3JpcHRWYWx1ZSYpOworICAgIHN0YXRpYyBEZXByZWNhdGVkOjpTY3JpcHRPYmpl
Y3Qgb2JqZWN0QnlIZWFwT2JqZWN0SWQodW5zaWduZWQgaWQpOworICAgIHN0YXRpYyB1bnNpZ25l
ZCBnZXRIZWFwT2JqZWN0SWQoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmKTsKICAgICBz
dGF0aWMgdm9pZCBzdGFydChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgdGl0bGUpOwog
ICAgIHN0YXRpYyB2b2lkIHN0YXJ0Rm9yUGFnZShQYWdlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7
CiAgICAgc3RhdGljIHZvaWQgc3RhcnRGb3JXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxT
Y29wZSosIGNvbnN0IFN0cmluZyYgdGl0bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdFN0YXRlLmgKaW5kZXggMzQ5ZDk0YS4uNzBkMTRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRTdGF0ZS5oCkBAIC0xLDExICsxLDExIEBACiAvKgogICogQ29weXJpZ2h0
IChjKSAyMDA4LCAyMDExIEdvb2dsZSBJbmMuCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
CisgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCiAgKiBtZXQ6Ci0gKiAKKyAqCiAg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAogICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgogICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpAQCAtMTUsNyArMTUsNyBAQAogICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwog
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KICAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKKyAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiAgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAog
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCkBAIC0zNCw3ICszNCw2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogY2xh
c3MgRXhlY1N0YXRlOwotY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiB9CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwCmluZGV4IGE1MzVjMzQuLjVhMzJmODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtNDAsNyAr
NDAsNiBAQAogI2luY2x1ZGUgIkpTTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJKU05hdmlnYXRv
ci5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUu
aCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnRE
YXRhLmgiCiAjaW5jbHVkZSA8bGltaXRzPgpAQCAtMjAwNiwxMCArMjAwNSwxMCBAQCBKU1ZhbHVl
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYgogfQogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLVNjcmlwdFZhbHVl
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemVGb3JJbnNwZWN0b3IoSlNDOjpFeGVj
U3RhdGUqIHNjcmlwdFN0YXRlKQorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpkZXNlcmlhbGl6ZUZvckluc3BlY3RvcihKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0
U3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGRlc2VyaWFsaXplKHNjcmlwdFN0YXRlLCBz
Y3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAwKTsKLSAgICByZXR1cm4gU2NyaXB0
VmFsdWUoc2NyaXB0U3RhdGUtPnZtKCksIHZhbHVlKTsKKyAgICByZXR1cm4gRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUoc2NyaXB0U3RhdGUtPnZtKCksIHZhbHVlKTsKIH0KICNlbmRpZgogCkBAIC0y
MDUzLDYgKzIwNTIsMjMgQEAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6Ym9vbGVhblZhbHVlKGJvb2wgdmFsdWUKICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShidWZmZXIpKTsKIH0KIAorUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6c2VyaWFsaXpl
KGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgSlNDOjpFeGVjU3RhdGUqIHNj
cmlwdFN0YXRlLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucykKK3sKKyAg
ICByZXR1cm4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoc2NyaXB0U3RhdGUsIHZhbHVl
LmpzVmFsdWUoKSwgbnVsbHB0ciwgbnVsbHB0ciwgdGhyb3dFeGNlcHRpb25zKTsKK30KKworUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6c2Vy
aWFsaXplKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgSlNDOjpFeGVjU3Rh
dGUqIHNjcmlwdFN0YXRlLCBNZXNzYWdlUG9ydEFycmF5KiBtZXNzYWdlUG9ydHMsIEFycmF5QnVm
ZmVyQXJyYXkqIGFycmF5QnVmZmVycywgYm9vbCYgZGlkVGhyb3cpCit7CisgICAgUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGUoc2NyaXB0U3RhdGUsIHZhbHVlLmpzVmFsdWUoKSwgbWVzc2FnZVBvcnRzLCBh
cnJheUJ1ZmZlcnMpOworICAgIGRpZFRocm93ID0gc2NyaXB0U3RhdGUtPmhhZEV4Y2VwdGlvbigp
OworICAgIHJldHVybiBzZXJpYWxpemVkVmFsdWUucmVsZWFzZSgpOworfQorCitEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKEpTQzo6RXhl
Y1N0YXRlKiBzY3JpcHRTdGF0ZSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiB2YWx1ZSwgU2VyaWFs
aXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCit7CisgICAgcmV0dXJuIERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlKHNjcmlwdFN0YXRlLT52bSgpLCB2YWx1ZS0+ZGVzZXJpYWxpemUoc2Ny
aXB0U3RhdGUsIHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIDAsIHRocm93RXhj
ZXB0aW9ucykpOworfQorCiB2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bWF5YmVUaHJvd0V4
Y2VwdGlvbklmU2VyaWFsaXphdGlvbkZhaWxlZChFeGVjU3RhdGUqIGV4ZWMsIFNlcmlhbGl6YXRp
b25SZXR1cm5Db2RlIGNvZGUpCiB7CiAgICAgaWYgKGNvZGUgPT0gU3VjY2Vzc2Z1bGx5Q29tcGxl
dGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuaAppbmRleCA2OWQyNWY2Li44NTk4MWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtMjgsNiArMjgsNyBAQAog
I2RlZmluZSBTZXJpYWxpemVkU2NyaXB0VmFsdWVfaAogCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUu
aCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPGhlYXAvU3Ry
b25nLmg+CiAjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUgPHJ1bnRp
bWUvSlNDSlNWYWx1ZS5oPgpAQCAtNTcsNyArNTgsNiBAQCBlbnVtIFNlcmlhbGl6YXRpb25SZXR1
cm5Db2RlIHsKICAgICAKIGVudW0gU2VyaWFsaXphdGlvbkVycm9yTW9kZSB7IE5vblRocm93aW5n
LCBUaHJvd2luZyB9OwogCi1jbGFzcyBTY3JpcHRWYWx1ZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsK
IAogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlIDoKQEAgLTY3LDggKzY3LDcgQEAgY2xhc3Mg
U2VyaWFsaXplZFNjcmlwdFZhbHVlIDoKICAgICBwdWJsaWMgUmVmQ291bnRlZDxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IHsKICNlbmRpZgogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVl
LCBNZXNzYWdlUG9ydEFycmF5KiwgQXJyYXlCdWZmZXJBcnJheSosCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VyaWFsaXphdGlvbkVycm9yTW9k
ZSA9IFRocm93aW5nKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgTWVzc2FnZVBvcnRBcnJh
eSosIEFycmF5QnVmZmVyQXJyYXkqLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcp
OwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpT
Q29udGV4dFJlZiwgSlNWYWx1ZVJlZiwgTWVzc2FnZVBvcnRBcnJheSosIEFycmF5QnVmZmVyQXJy
YXkqLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiwgSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKTsKIApAQCAtODMsNiArODIsMTAgQEAgcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdW5kZWZpbmVkVmFsdWUoKTsKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGJvb2xlYW5WYWx1ZShi
b29sIHZhbHVlKTsKIAorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gc2VyaWFsaXplKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgSlNDOjpFeGVjU3Rh
dGUqLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcpOworICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplKGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiwgSlNDOjpFeGVjU3RhdGUqLCBNZXNzYWdlUG9ydEFycmF5KiwgQXJyYXlC
dWZmZXJBcnJheSosIGJvb2wmKTsKKyAgICBzdGF0aWMgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUg
ZGVzZXJpYWxpemUoSlNDOjpFeGVjU3RhdGUqLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBTZXJp
YWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcpOworCiAgICAgc3RhdGljIHVpbnQzMl90IHdp
cmVGb3JtYXRWZXJzaW9uKCk7CiAKICAgICBTdHJpbmcgdG9TdHJpbmcoKTsKQEAgLTkyLDcgKzk1
LDcgQEAgcHVibGljOgogICAgIEpTVmFsdWVSZWYgZGVzZXJpYWxpemUoSlNDb250ZXh0UmVmLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBTY3Jp
cHRWYWx1ZSBkZXNlcmlhbGl6ZUZvckluc3BlY3RvcihKU0M6OkV4ZWNTdGF0ZSopOworICAgIERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRlc2VyaWFsaXplRm9ySW5zcGVjdG9yKEpTQzo6RXhlY1N0
YXRlKik7CiAjZW5kaWYKIAogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCAyOTBiMWYxLi41ZGU2MDRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9s
bGVyLmNwcApAQCAtMzEsMTIgKzMxLDEyIEBACiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAj
aW5jbHVkZSAiSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlNjcmlw
dFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIldlYkNv
cmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1
ZGUgIldvcmtlck9iamVjdFByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0RGVidWdTZXJ2
ZXIuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3Jp
cHRWYWx1ZS5oPgogI2luY2x1ZGUgPGhlYXAvU3Ryb25nSW5saW5lcy5oPgogI2luY2x1ZGUgPGlu
dGVycHJldGVyL0ludGVycHJldGVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9Db21wbGV0aW9uLmg+
CkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0
ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQogICAgIGlmIChpc0V4ZWN1dGlv
bkZvcmJpZGRlbigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBTY3JpcHRWYWx1ZSBleGNlcHRp
b247CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZXhjZXB0aW9uOwogICAgIGV2YWx1YXRl
KHNvdXJjZUNvZGUsICZleGNlcHRpb24pOwogICAgIGlmIChleGNlcHRpb24uanNWYWx1ZSgpKSB7
CiAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKCkpOwpAQCAtMTIxLDcgKzEyMSw3IEBAIHZv
aWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYgc291cmNlQ29kZSkKICAgICB9CiB9CiAKLXZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6
ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgU2NyaXB0VmFsdWUq
IGV4Y2VwdGlvbikKK3ZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3Qg
U2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUqIGV4
Y2VwdGlvbikKIHsKICAgICBpZiAoaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMTQ1LDEzICsxNDUsMTMgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpl
dmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBTY3JpcHQKICAgICAg
ICAgaW50IGNvbHVtbk51bWJlciA9IDA7CiAgICAgICAgIFN0cmluZyBzb3VyY2VVUkwgPSBzb3Vy
Y2VDb2RlLnVybCgpLnN0cmluZygpOwogICAgICAgICBpZiAobV93b3JrZXJHbG9iYWxTY29wZS0+
c2FuaXRpemVTY3JpcHRFcnJvcihlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgc291cmNlVVJMLCBzb3VyY2VDb2RlLmNhY2hlZFNjcmlwdCgpKSkKLSAgICAgICAgICAgICpl
eGNlcHRpb24gPSBTY3JpcHRWYWx1ZSgqbV92bSwgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihl
eGVjLCBjcmVhdGVFcnJvcihleGVjLCBlcnJvck1lc3NhZ2UuaW1wbCgpKSkpOworICAgICAgICAg
ICAgKmV4Y2VwdGlvbiA9IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCptX3ZtLCBleGVjLT52bSgp
LnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZS5pbXBs
KCkpKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICpleGNlcHRpb24gPSBTY3JpcHRWYWx1
ZSgqbV92bSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgICAgICAgICAqZXhjZXB0aW9uID0g
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKm1fdm0sIGV2YWx1YXRpb25FeGNlcHRpb24pOwogICAg
IH0KIH0KIAotdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpzZXRFeGNlcHRpb24oY29uc3Qg
U2NyaXB0VmFsdWUmIGV4Y2VwdGlvbikKK3ZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6c2V0
RXhjZXB0aW9uKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBleGNlcHRpb24pCiB7CiAg
ICAgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbEV4ZWMoKS0+dm0oKS50aHJvd0V4
Y2VwdGlvbihtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsRXhlYygpLCBleGNlcHRp
b24uanNWYWx1ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dv
cmtlclNjcmlwdENvbnRyb2xsZXIuaAppbmRleCA4YmI3ZjQ5Li4wMjVjMzdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oCkBA
IC0zMywxNSArMzMsMTggQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRpbmcuaD4KIAorbmFtZXNwYWNlIERlcHJlY2F0ZWQgeworY2xhc3MgU2NyaXB0VmFs
dWU7Cit9CisKIG5hbWVzcGFjZSBKU0MgewotICAgIGNsYXNzIFZNOworY2xhc3MgVk07CiB9CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEpTV29ya2VyR2xvYmFsU2NvcGU7CiAg
ICAgY2xhc3MgU2NyaXB0U291cmNlQ29kZTsKLSAgICBjbGFzcyBTY3JpcHRWYWx1ZTsKICAgICBj
bGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIAogICAgIGNsYXNzIFdvcmtlclNjcmlwdENvbnRyb2xs
ZXIgewpAQCAtNTcsOSArNjAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH0KIAog
ICAgICAgICB2b2lkIGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKLSAgICAgICAg
dm9pZCBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgU2NyaXB0VmFsdWUqIGV4Y2Vw
dGlvbik7CisgICAgICAgIHZvaWQgZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKiBleGNlcHRpb24pOwogCi0gICAgICAgIHZvaWQgc2V0RXhj
ZXB0aW9uKGNvbnN0IFNjcmlwdFZhbHVlJik7CisgICAgICAgIHZvaWQgc2V0RXhjZXB0aW9uKGNv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJik7CiAKICAgICAgICAgLy8gQXN5bmMgcmVxdWVz
dCB0byB0ZXJtaW5hdGUgYSBKUyBydW4gZXhlY3V0aW9uLiBFdmVudHVhbGx5IGNhdXNlcyB0ZXJt
aW5hdGlvbgogICAgICAgICAvLyBleGNlcHRpb24gcmFpc2VkIGR1cmluZyBKUyBleGVjdXRpb24s
IGlmIHRoZSB3b3JrZXIgdGhyZWFkIGhhcHBlbnMgdG8gcnVuIEpTLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBhZjA0NDJh
Li5hNjhmN2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQpAQCAtMzIzNCw3ICszMjM0LDcgQEAgbXkgJW5hdGl2ZVR5cGUgPSAo
CiAgICAgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIgPT4gIlJlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IiwKICAgICAiRGF0ZSIgPT4gImRvdWJsZSIsCiAgICAgIkRpY3Rpb25hcnkiID0+ICJE
aWN0aW9uYXJ5IiwKLSAgICAiYW55IiA9PiAiU2NyaXB0VmFsdWUiLAorICAgICJhbnkiID0+ICJE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSIsCiAgICAgImJvb2xlYW4iID0+ICJib29sIiwKICAgICAi
ZG91YmxlIiA9PiAiZG91YmxlIiwKICAgICAiZmxvYXQiID0+ICJmbG9hdCIsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmlu
ZGV4IDkzMWRiMjYuLjc3NjRjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0xNjUxLDcgKzE2NTEsNyBAQCB2
b2lkIHNldEpTVGVzdE9iakFueUF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbAogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4odGhpc09iamVjdCk7CiAgICAg
VGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKLSAgICBTY3JpcHRWYWx1ZSBuYXRp
dmVWYWx1ZShleGVjLT52bSgpLCB2YWx1ZSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUg
bmF0aXZlVmFsdWUoZXhlYy0+dm0oKSwgdmFsdWUpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgcmV0dXJuOwogICAgIGltcGwuc2V0QW55QXR0cmlidXRlKG5hdGl2ZVZh
bHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuY3BwCmluZGV4IGIwZmJhOTkuLmQ1ZWYwYmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmNwcApAQCAtNDgsNyArNDgsNyBAQCBDdXN0b21F
dmVudDo6fkN1c3RvbUV2ZW50KCkKIHsKIH0KIAotdm9pZCBDdXN0b21FdmVudDo6aW5pdEN1c3Rv
bUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2Fu
Y2VsYWJsZSwgY29uc3QgU2NyaXB0VmFsdWUmIGRldGFpbCkKK3ZvaWQgQ3VzdG9tRXZlbnQ6Omlu
aXRDdXN0b21FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBkZXRhaWwpCiB7
CiAgICAgQVNTRVJUKCFtX3NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5nZXQoKSk7CiAgICAgaWYgKGRp
c3BhdGNoZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmgKaW5kZXggYmM4OTA5Ni4uN2Y0YzFj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmgKQEAgLTI3LDE1ICsyNywxNSBAQAogI2RlZmlu
ZSBDdXN0b21FdmVudF9oCiAKICNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1ZGUgIlNjcmlwdFZh
bHVlLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8Ymlu
ZGluZ3MvU2NyaXB0VmFsdWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQ3Vz
dG9tRXZlbnRJbml0IDogcHVibGljIEV2ZW50SW5pdCB7CiAgICAgQ3VzdG9tRXZlbnRJbml0KCk7
CiAKLSAgICBTY3JpcHRWYWx1ZSBkZXRhaWw7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUg
ZGV0YWlsOwogfTsKIAogY2xhc3MgQ3VzdG9tRXZlbnQgOiBwdWJsaWMgRXZlbnQgewpAQCAtNTIs
MTggKzUyLDE4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDdXN0b21F
dmVudCh0eXBlLCBpbml0aWFsaXplcikpOwogICAgIH0KIAotICAgIHZvaWQgaW5pdEN1c3RvbUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2Vs
YWJsZSwgY29uc3QgU2NyaXB0VmFsdWUmIGRldGFpbCk7CisgICAgdm9pZCBpbml0Q3VzdG9tRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxh
YmxlLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZGV0YWlsKTsKIAogICAgIHZpcnR1
YWwgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdDsKIAotICAgIGNvbnN0IFNj
cmlwdFZhbHVlJiBkZXRhaWwoKSBjb25zdCB7IHJldHVybiBtX2RldGFpbDsgfQorICAgIGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBkZXRhaWwoKSBjb25zdCB7IHJldHVybiBtX2RldGFp
bDsgfQogICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2Ny
aXB0VmFsdWUoKSB7IHJldHVybiBtX3NlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsgfQogCiBwcml2YXRl
OgogICAgIEN1c3RvbUV2ZW50KCk7CiAgICAgQ3VzdG9tRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBjb25zdCBDdXN0b21FdmVudEluaXQmIGluaXRpYWxpemVyKTsKIAotICAgIFNjcmlw
dFZhbHVlIG1fZGV0YWlsOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG1fZGV0YWlsOwog
ICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1fc2VyaWFsaXplZFNjcmlwdFZhbHVl
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAppbmRleCBmZDg2OTc4Li40Mzg4
YzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcApAQCAtMjEsMTQgKzIxLDEzIEBA
CiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICoKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZUV2ZW50LmgiCiAKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgaW5s
aW5lIGJvb2wgaXNWYWxpZFNvdXJjZShFdmVudFRhcmdldCogc291cmNlKQpAQCAtNTYsNyArNTUs
NyBAQCBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGNvbnN0IE1lc3NhZ2VFdmVudEluaXQmIGluaQogewogfQogCi1NZXNzYWdlRXZlbnQ6Ok1lc3Nh
Z2VFdmVudChjb25zdCBTY3JpcHRWYWx1ZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNv
bnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHNvdXJjZSwg
UGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cykKK01lc3NhZ2VFdmVudDo6TWVzc2Fn
ZUV2ZW50KGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBkYXRhLCBjb25zdCBTdHJpbmcm
IG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgUGFzc1JlZlB0cjxFdmVudFRhcmdl
dD4gc291cmNlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzKQogICAgIDogRXZl
bnQoZXZlbnROYW1lcygpLm1lc3NhZ2VFdmVudCwgZmFsc2UsIGZhbHNlKQogICAgICwgbV9kYXRh
VHlwZShEYXRhVHlwZVNjcmlwdFZhbHVlKQogICAgICwgbV9kYXRhQXNTY3JpcHRWYWx1ZShkYXRh
KQpAQCAtMTA4LDcgKzEwNyw3IEBAIE1lc3NhZ2VFdmVudDo6fk1lc3NhZ2VFdmVudCgpCiB7CiB9
CiAKLXZvaWQgTWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgY29uc3QgU2NyaXB0VmFs
dWUmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElk
LCBET01XaW5kb3cqIHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cykK
K3ZvaWQgTWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgY29uc3QgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxh
c3RFdmVudElkLCBET01XaW5kb3cqIHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5
PiBwb3J0cykKIHsKICAgICBpZiAoZGlzcGF0Y2hlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTWVzc2FnZUV2ZW50LmgKaW5kZXggYjk3YTcwMy4uNjg2MGQxYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NZXNzYWdlRXZlbnQuaApAQCAtMzIsOCArMzIsOCBAQAogI2luY2x1ZGUgIkRPTVdpbmRvdy5o
IgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKLSNpbmNsdWRl
ICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2lu
Y2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1
ZmZlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIEV2
ZW50VGFyZ2V0Owogc3RydWN0IE1lc3NhZ2VFdmVudEluaXQgOiBwdWJsaWMgRXZlbnRJbml0IHsK
ICAgICBNZXNzYWdlRXZlbnRJbml0KCk7CiAKLSAgICBTY3JpcHRWYWx1ZSBkYXRhOworICAgIERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRhdGE7CiAgICAgU3RyaW5nIG9yaWdpbjsKICAgICBTdHJp
bmcgbGFzdEV2ZW50SWQ7CiAgICAgUmVmUHRyPEV2ZW50VGFyZ2V0PiBzb3VyY2U7CkBAIC01Niw3
ICs1Niw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVz
c2FnZUV2ZW50KTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVzc2FnZUV2ZW50PiBj
cmVhdGUoUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cywgY29uc3QgU2NyaXB0VmFs
dWUmIGRhdGEgPSBTY3JpcHRWYWx1ZSgpLCBjb25zdCBTdHJpbmcmIG9yaWdpbiA9IFN0cmluZygp
LCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkID0gU3RyaW5nKCksIFBhc3NSZWZQdHI8RXZlbnRU
YXJnZXQ+IHNvdXJjZSA9IDApCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVzc2FnZUV2ZW50PiBj
cmVhdGUoUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cywgY29uc3QgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUmIGRhdGEgPSBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSgpLCBjb25zdCBT
dHJpbmcmIG9yaWdpbiA9IFN0cmluZygpLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkID0gU3Ry
aW5nKCksIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHNvdXJjZSA9IDApCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IE1lc3NhZ2VFdmVudChkYXRhLCBvcmlnaW4sIGxhc3RFdmVu
dElkLCBzb3VyY2UsIHBvcnRzKSk7CiAgICAgfQpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAg
ICAgfQogICAgIHZpcnR1YWwgfk1lc3NhZ2VFdmVudCgpOwogCi0gICAgdm9pZCBpbml0TWVzc2Fn
ZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2Fu
Y2VsYWJsZSwgY29uc3QgU2NyaXB0VmFsdWUmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBj
b25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBET01XaW5kb3cqIHNvdXJjZSwgUGFzc093blB0cjxN
ZXNzYWdlUG9ydEFycmF5Pik7CisgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBT
dHJpbmcmIGxhc3RFdmVudElkLCBET01XaW5kb3cqIHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdl
UG9ydEFycmF5Pik7CiAgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJp
bmcmIGxhc3RFdmVudElkLCBET01XaW5kb3cqIHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9y
dEFycmF5Pik7CiAKICAgICBjb25zdCBTdHJpbmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1f
b3JpZ2luOyB9CkBAIC0xMDcsNyArMTA3LDcgQEAgcHVibGljOgogICAgICAgICBEYXRhVHlwZUFy
cmF5QnVmZmVyCiAgICAgfTsKICAgICBEYXRhVHlwZSBkYXRhVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YVR5cGU7IH0KLSAgICBjb25zdCBTY3JpcHRWYWx1ZSYgZGF0YUFzU2NyaXB0VmFsdWUo
KSBjb25zdCB7IEFTU0VSVChtX2RhdGFUeXBlID09IERhdGFUeXBlU2NyaXB0VmFsdWUpOyByZXR1
cm4gbV9kYXRhQXNTY3JpcHRWYWx1ZTsgfQorICAgIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlJiBkYXRhQXNTY3JpcHRWYWx1ZSgpIGNvbnN0IHsgQVNTRVJUKG1fZGF0YVR5cGUgPT0gRGF0
YVR5cGVTY3JpcHRWYWx1ZSk7IHJldHVybiBtX2RhdGFBc1NjcmlwdFZhbHVlOyB9CiAgICAgUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGFBc1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSgpIGNvbnN0IHsgQVNTRVJUKG1fZGF0YVR5cGUgPT0gRGF0YVR5cGVTZXJpYWxpemVkU2NyaXB0
VmFsdWUpOyByZXR1cm4gbV9kYXRhQXNTZXJpYWxpemVkU2NyaXB0VmFsdWU7IH0KICAgICBTdHJp
bmcgZGF0YUFzU3RyaW5nKCkgY29uc3QgeyBBU1NFUlQobV9kYXRhVHlwZSA9PSBEYXRhVHlwZVN0
cmluZyk7IHJldHVybiBtX2RhdGFBc1N0cmluZzsgfQogICAgIEJsb2IqIGRhdGFBc0Jsb2IoKSBj
b25zdCB7IEFTU0VSVChtX2RhdGFUeXBlID09IERhdGFUeXBlQmxvYik7IHJldHVybiBtX2RhdGFB
c0Jsb2IuZ2V0KCk7IH0KQEAgLTExNiw3ICsxMTYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IE1lc3NhZ2VFdmVudCgpOwogICAgIE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmLCBj
b25zdCBNZXNzYWdlRXZlbnRJbml0Jik7Ci0gICAgTWVzc2FnZUV2ZW50KGNvbnN0IFNjcmlwdFZh
bHVlJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJ
ZCwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gc291cmNlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0
QXJyYXk+KTsKKyAgICBNZXNzYWdlRXZlbnQoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBQ
YXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJh
eT4pOwogICAgIE1lc3NhZ2VFdmVudChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
ZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIFBh
c3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5
Pik7CiAKICAgICBleHBsaWNpdCBNZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25z
dCBTdHJpbmcmIG9yaWdpbik7CkBAIC0xMjQsNyArMTI0LDcgQEAgcHJpdmF0ZToKICAgICBleHBs
aWNpdCBNZXNzYWdlRXZlbnQoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gZGF0YSwgY29uc3QgU3Ry
aW5nJiBvcmlnaW4pOwogCiAgICAgRGF0YVR5cGUgbV9kYXRhVHlwZTsKLSAgICBTY3JpcHRWYWx1
ZSBtX2RhdGFBc1NjcmlwdFZhbHVlOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG1fZGF0
YUFzU2NyaXB0VmFsdWU7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9kYXRh
QXNTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAgICAgU3RyaW5nIG1fZGF0YUFzU3RyaW5nOwogICAg
IFJlZlB0cjxCbG9iPiBtX2RhdGFBc0Jsb2I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vUG9wU3RhdGVFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaApp
bmRleCAyMjE5M2E0Li41NjgyMzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9w
U3RhdGVFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmgKQEAg
LTI4LDE0ICsyOCwxNCBAQAogI2RlZmluZSBQb3BTdGF0ZUV2ZW50X2gKIAogI2luY2x1ZGUgIkV2
ZW50LmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3Jp
cHRWYWx1ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBQb3BTdGF0ZUV2ZW50
SW5pdCA6IHB1YmxpYyBFdmVudEluaXQgewogICAgIFBvcFN0YXRlRXZlbnRJbml0KCk7CiAKLSAg
ICBTY3JpcHRWYWx1ZSBzdGF0ZTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBzdGF0ZTsK
IH07CiAKIGNsYXNzIEhpc3Rvcnk7CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxQb3BTdGF0ZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiwg
Y29uc3QgUG9wU3RhdGVFdmVudEluaXQmKTsKIAogICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBzZXJpYWxpemVkU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3NlcmlhbGl6ZWRT
dGF0ZTsgfQotICAgIGNvbnN0IFNjcmlwdFZhbHVlJiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhdGU7IH0KKyAgICBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgc3RhdGUoKSBjb25z
dCB7IHJldHVybiBtX3N0YXRlOyB9CiAgICAgSGlzdG9yeSogaGlzdG9yeSgpIGNvbnN0IHsgcmV0
dXJuIG1faGlzdG9yeS5nZXQoKTsgfQogCiAgICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBldmVu
dEludGVyZmFjZSgpIGNvbnN0OwpAQCAtNTksNyArNTksNyBAQCBwcml2YXRlOgogICAgIFBvcFN0
YXRlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgUG9wU3RhdGVFdmVudEluaXQmKTsK
ICAgICBleHBsaWNpdCBQb3BTdGF0ZUV2ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiwgUGFzc1JlZlB0cjxIaXN0b3J5Pik7CiAKLSAgICBTY3JpcHRWYWx1ZSBtX3N0YXRlOwor
ICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG1fc3RhdGU7CiAgICAgUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gbV9zZXJpYWxpemVkU3RhdGU7CiAgICAgUmVmUHRyPEhpc3Rvcnk+IG1f
aGlzdG9yeTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggMTU3YzRj
YS4uZDk2ODc1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApAQCAtNDIsMTEg
KzQyLDExIEBACiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlw
dFJ1bm5lci5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJTY3Jp
cHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgogI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJU
ZXh0Tm9kZVRyYXZlcnNhbC5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCAwNmIyMjJmLi5hZTQyOThmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTEzMiw4ICsxMzIsOSBAQAog
I2lmIEVOQUJMRShNRURJQV9DT05UUk9MU19TQ1JJUFQpCiAjaW5jbHVkZSAiSlNNZWRpYUNvbnRy
b2xzSG9zdC5oIgogI2luY2x1ZGUgIk1lZGlhQ29udHJvbHNIb3N0LmgiCi0jaW5jbHVkZSAiU2Ny
aXB0T2JqZWN0LmgiCisjaW5jbHVkZSAiU2NyaXB0R2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAi
VXNlckFnZW50U2NyaXB0cy5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgog
I2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
WFNTQXVkaXRvci5jcHAKaW5kZXggZWQ3MzBiNC4uN2ZmNGNmOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKQEAgLTM3LDE3ICszNywxNSBAQAogI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJhbUVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MUGFyc2VySWRpb21zLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVk
ZSAiWExpbmtOYW1lcy5oIgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKICNpZiBFTkFC
TEUoU1ZHKQogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjZW5kaWYKIAotI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0
b3JEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yRGVs
ZWdhdGUuY3BwCmluZGV4IGFkMzNlMDAuLmQwNjA2OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcApAQCAtMzUsMTIgKzM1LDE0IEBA
CiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5o
IgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1
ZXMuaCIKICNpbmNsdWRlICJQaW5nTG9hZGVyLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAor
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBYU1NB
dWRpdG9yRGVsZWdhdGU6OlhTU0F1ZGl0b3JEZWxlZ2F0ZShEb2N1bWVudCYgZG9jdW1lbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rv
ci5weSBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5
CmluZGV4IGI4MzA2YzkuLjBlNTc2OTEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5CkBAIC0yNjIsNyArMjYyLDcgQEAgY2xhc3Mg
UmF3VHlwZXMob2JqZWN0KToKIAogICAgICAgICBAY2xhc3NtZXRob2QKICAgICAgICAgZGVmIGdl
dF9yYXdfdmFsaWRhdG9yX2NhbGxfdGV4dChjbHMpOgotICAgICAgICAgICAgcmV0dXJuICJSdW50
aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZSVzPiIgJSBjbHMu
Z2V0X3ZhbGlkYXRlX21ldGhvZF9wYXJhbXMoKS50ZW1wbGF0ZV90eXBlCisgICAgICAgICAgICBy
ZXR1cm4gIlJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3Rvcjo6SW5zcGVjdG9y
VmFsdWU6OlR5cGUlcz4iICUgY2xzLmdldF92YWxpZGF0ZV9tZXRob2RfcGFyYW1zKCkudGVtcGxh
dGVfdHlwZQogCiAgICAgY2xhc3MgU3RyaW5nKEJhc2VUeXBlKToKICAgICAgICAgQHN0YXRpY21l
dGhvZApAQCAtNDUxLDcgKzQ1MSw3IEBAIGNsYXNzIFJhd1R5cGVzKG9iamVjdCk6CiAKICAgICAg
ICAgQHN0YXRpY21ldGhvZAogICAgICAgICBkZWYgZ2V0X2FycmF5X2l0ZW1fcmF3X2NfdHlwZV90
ZXh0KCk6Ci0gICAgICAgICAgICByZXR1cm4gIkluc3BlY3Rvck9iamVjdCIKKyAgICAgICAgICAg
IHJldHVybiAiSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QiCiAKICAgICAgICAgQHN0YXRpY21l
dGhvZAogICAgICAgICBkZWYgZ2V0X3Jhd190eXBlX21vZGVsKCk6CkBAIC00ODYsNyArNDg2LDcg
QEAgY2xhc3MgUmF3VHlwZXMob2JqZWN0KToKIAogICAgICAgICBAc3RhdGljbWV0aG9kCiAgICAg
ICAgIGRlZiBnZXRfYXJyYXlfaXRlbV9yYXdfY190eXBlX3RleHQoKToKLSAgICAgICAgICAgIHJl
dHVybiAiSW5zcGVjdG9yVmFsdWUiCisgICAgICAgICAgICByZXR1cm4gIkluc3BlY3Rvcjo6SW5z
cGVjdG9yVmFsdWUiCiAKICAgICAgICAgQHN0YXRpY21ldGhvZAogICAgICAgICBkZWYgZ2V0X3Jh
d190eXBlX21vZGVsKCk6CkBAIC01MjksNyArNTI5LDcgQEAgY2xhc3MgUmF3VHlwZXMob2JqZWN0
KToKIAogICAgICAgICBAc3RhdGljbWV0aG9kCiAgICAgICAgIGRlZiBnZXRfYXJyYXlfaXRlbV9y
YXdfY190eXBlX3RleHQoKToKLSAgICAgICAgICAgIHJldHVybiAiSW5zcGVjdG9yQXJyYXkiCisg
ICAgICAgICAgICByZXR1cm4gIkluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkiCiAKICAgICAgICAg
QHN0YXRpY21ldGhvZAogICAgICAgICBkZWYgZ2V0X3Jhd190eXBlX21vZGVsKCk6CkBAIC03MjYs
OSArNzI2LDkgQEAgY2xhc3MgVHlwZU1vZGVsOgogICAgICAgICAgICAgY2xzLkludCA9IGNscy5W
YWx1ZVR5cGUoImludCIsIEZhbHNlKQogICAgICAgICBjbHMuTnVtYmVyID0gY2xzLlZhbHVlVHlw
ZSgiZG91YmxlIiwgRmFsc2UpCiAgICAgICAgIGNscy5TdHJpbmcgPSBjbHMuVmFsdWVUeXBlKCJT
dHJpbmciLCBUcnVlLCkKLSAgICAgICAgY2xzLk9iamVjdCA9IGNscy5SZWZQdHJCYXNlZCgiSW5z
cGVjdG9yT2JqZWN0IikKLSAgICAgICAgY2xzLkFycmF5ID0gY2xzLlJlZlB0ckJhc2VkKCJJbnNw
ZWN0b3JBcnJheSIpCi0gICAgICAgIGNscy5BbnkgPSBjbHMuUmVmUHRyQmFzZWQoIkluc3BlY3Rv
clZhbHVlIikKKyAgICAgICAgY2xzLk9iamVjdCA9IGNscy5SZWZQdHJCYXNlZCgiSW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3QiKQorICAgICAgICBjbHMuQXJyYXkgPSBjbHMuUmVmUHRyQmFzZWQo
Ikluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkiKQorICAgICAgICBjbHMuQW55ID0gY2xzLlJlZlB0
ckJhc2VkKCJJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlIikKIAogVHlwZU1vZGVsLmluaXRfY2xh
c3MoKQogCkBAIC05MjgsNyArOTI4LDcgQEAgY2xhc3MgVHlwZUJpbmRpbmdzOgogCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGVudW1fYmluZGluZ19jbHMubmVlZF9pbnRlcm5h
bF9ydW50aW1lX2Nhc3RfOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3Jp
dGVyLmFwcGVuZCgiI2lmICVzXG4iICUgVkFMSURBVE9SX0lGREVGX05BTUUpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgIHN0YXRpYyB2b2lk
IGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpO1xuIikKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgc3RhdGljIHZv
aWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVlKTtc
biIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKCIj
ZW5kaWYgIC8vICVzXG4iICUgVkFMSURBVE9SX0lGREVGX05BTUUpCiAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcl93cml0ZXIgPSBnZW5lcmF0ZV9jb250ZXh0
LnZhbGlkYXRvcl93cml0ZXIKQEAgLTkzOCw3ICs5MzgsNyBAQCBjbGFzcyBUeXBlQmluZGluZ3M6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkb21haW5fZ3VhcmQ6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluX2d1YXJkLmdlbmVy
YXRlX29wZW4odmFsaWRhdG9yX3dyaXRlcikKIAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCJ2b2lkICVzJXM6OmFzc2VydENvcnJl
Y3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpXG4iICUgKGhlbHBlci5mdWxsX25hbWVfcHJl
Zml4X2Zvcl9pbXBsLCBlbnVtX25hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCJ2b2lkICVzJXM6OmFzc2VydENvcnJlY3RW
YWx1ZShJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiB2YWx1ZSlcbiIgJSAoaGVscGVyLmZ1bGxf
bmFtZV9wcmVmaXhfZm9yX2ltcGwsIGVudW1fbmFtZSkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoIntcbiIpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoIiAgICBX
VEY6OlN0cmluZyBzO1xuIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
bGlkYXRvcl93cml0ZXIubmV3bGluZSgiICAgIGJvb2wgY2FzdF9yZXMgPSB2YWx1ZS0+YXNTdHJp
bmcoJnMpO1xuIikKQEAgLTExNzIsOSArMTE3Miw5IEBAIGNsYXNzIFR5cGVCaW5kaW5nczoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVuZChjbGFzc19uYW1lKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKCIgOiBwdWJsaWMg
IikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNfb3Blbl90eXBlOgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVuZCgiSW5zcGVjdG9y
T2JqZWN0IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5hcHBl
bmQoIkluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0IikKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRl
ci5hcHBlbmQoIkluc3BlY3Rvck9iamVjdEJhc2UiKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd3JpdGVyLmFwcGVuZCgiSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3RCYXNl
IikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVuZCgiIHtcbiIp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCJwdWJsaWM6
XG4iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZF9ob2NfdHlwZV93cml0ZXIg
PSB3cml0ZXIuaW5zZXJ0X3dyaXRlcigiICAgICIpCkBAIC0xMjUxLDI1ICsxMjUxLDI1IEBAIGNs
YXNzIFR5cGVCaW5kaW5nczoKIAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiBzZXR0ZXJfbmFtZSBpbiBJTlNQRUNUT1JfT0JKRUNUX1NFVFRFUl9OQU1FUzoKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgIHVz
aW5nIEluc3BlY3Rvck9iamVjdEJhc2U6OiVzO1xuXG4iICUgc2V0dGVyX25hbWUpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICB1c2lu
ZyBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdEJhc2U6OiVzO1xuXG4iICUgc2V0dGVyX25hbWUp
CiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2xhc3NfYmluZGluZ19jbHMu
bmVlZF91c2VyX3J1bnRpbWVfY2FzdF86Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB3cml0ZXIubmV3bGluZSgiICAgIHN0YXRpYyBQYXNzUmVmUHRyPCVzPiBydW50aW1lQ2Fz
dChQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSlcbiIgJSBjbGFzc19uYW1lKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICBzdGF0
aWMgUGFzc1JlZlB0cjwlcz4gcnVudGltZUNhc3QoUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3RvclZhbHVlPiB2YWx1ZSlcbiIgJSBjbGFzc19uYW1lKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICB7XG4iKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICAgICAgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gb2JqZWN0O1xuIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdyaXRlci5uZXdsaW5lKCIgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdD4gb2JqZWN0O1xuIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdy
aXRlci5uZXdsaW5lKCIgICAgICAgIGJvb2wgY2FzdFJlcyA9IHZhbHVlLT5hc09iamVjdCgmb2Jq
ZWN0KTtcbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3
bGluZSgiICAgICAgICBBU1NFUlRfVU5VU0VEKGNhc3RSZXMsIGNhc3RSZXMpO1xuIikKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQoIiNpZiAlc1xuIiAl
IFZBTElEQVRPUl9JRkRFRl9OQU1FKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd3JpdGVyLm5ld2xpbmUoIiAgICAgICAgYXNzZXJ0Q29ycmVjdFZhbHVlKG9iamVjdC5nZXQo
KSk7XG4iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVu
ZCgiI2VuZGlmICAvLyAlc1xuIiAlIFZBTElEQVRPUl9JRkRFRl9OQU1FKQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICAgICAgQ09NUElMRV9B
U1NFUlQoc2l6ZW9mKCVzKSA9PSBzaXplb2YoSW5zcGVjdG9yT2JqZWN0QmFzZSksIHR5cGVfY2Fz
dF9wcm9ibGVtKTtcbiIgJSBjbGFzc19uYW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PCVzKj4o
c3RhdGljX2Nhc3Q8SW5zcGVjdG9yT2JqZWN0QmFzZSo+KG9iamVjdC5nZXQoKSkpO1xuIiAlIGNs
YXNzX25hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3
bGluZSgiICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoJXMpID09IHNpemVvZihJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdEJhc2UpLCB0eXBlX2Nhc3RfcHJvYmxlbSk7XG4iICUgY2xhc3Nf
bmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5l
KCIgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDwlcyo+KHN0YXRpY19jYXN0PEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0QmFzZSo+KG9iamVjdC5nZXQoKSkpO1xuIiAlIGNsYXNzX25hbWUpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgIH1c
biIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKCJc
biIpCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2xhc3NfYmluZGluZ19j
bHMubmVlZF9pbnRlcm5hbF9ydW50aW1lX2Nhc3RfOgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd3JpdGVyLmFwcGVuZCgiI2lmICVzXG4iICUgVkFMSURBVE9SX0lGREVGX05B
TUUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgi
ICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUp
O1xuIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5l
KCIgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3Rvcjo6SW5zcGVjdG9y
VmFsdWUqIHZhbHVlKTtcbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
cml0ZXIuYXBwZW5kKCIjZW5kaWYgIC8vICVzXG4iICUgVkFMSURBVE9SX0lGREVGX05BTUUpCiAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlZF9maWVsZF9zZXQgPSAo
Y29udGV4dF9kb21haW5fbmFtZSArICIuIiArIGNsYXNzX25hbWUpIG5vdCBpbiBUWVBFU19XSVRI
X09QRU5fRklFTERfTElTVF9TRVQKQEAgLTEyODEsNyArMTI4MSw3IEBAIGNsYXNzIFR5cGVCaW5k
aW5nczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRvbWFpbl9ndWFy
ZDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW5fZ3VhcmQu
Z2VuZXJhdGVfb3Blbih2YWxpZGF0b3Jfd3JpdGVyKQogCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoInZvaWQgJXMlczo6YXNzZXJ0
Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSlcbiIgJSAoaGVscGVyLmZ1bGxfbmFt
ZV9wcmVmaXhfZm9yX2ltcGwsIGNsYXNzX25hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCJ2b2lkICVzJXM6OmFzc2VydENv
cnJlY3RWYWx1ZShJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiB2YWx1ZSlcbiIgJSAoaGVscGVy
LmZ1bGxfbmFtZV9wcmVmaXhfZm9yX2ltcGwsIGNsYXNzX25hbWUpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCJ7XG4iKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5l
KCIgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0O1xuIikKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcl93cml0ZXIubmV3bGluZSgiICAgIGJvb2wg
Y2FzdFJlcyA9IHZhbHVlLT5hc09iamVjdCgmb2JqZWN0KTtcbiIpCkBAIC0xODk2LDEwICsxODk2
LDEwIEBAIGNsYXNzIEdlbmVyYXRvcjoKICAgICAgICAgICAgIGRpc3BhdGNoZXJfbmFtZSA9ICJJ
bnNwZWN0b3IiICsgQ2FwaXRhbGl6ZXIubG93ZXJfY2FtZWxfY2FzZV90b191cHBlcihkb21haW5f
bmFtZSkgKyAiQmFja2VuZERpc3BhdGNoZXIiCiAgICAgICAgICAgICBhZ2VudF9pbnRlcmZhY2Vf
bmFtZSA9IGRpc3BhdGNoZXJfbmFtZSArICJIYW5kbGVyIgogCi0gICAgICAgICAgICBHZW5lcmF0
b3IuYmFja2VuZF9kaXNwYXRjaGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgiY2xhc3MgJXMgRklO
QUwgOiBwdWJsaWMgSW5zcGVjdG9yU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIge1xuIiAl
IGRpc3BhdGNoZXJfbmFtZSkKKyAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3BhdGNo
ZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCJjbGFzcyAlcyBGSU5BTCA6IHB1YmxpYyBJbnNwZWN0
b3I6Okluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyIHtcbiIgJSBkaXNwYXRj
aGVyX25hbWUpCiAgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9kaXNwYXRjaGVyX2ludGVy
ZmFjZV9saXN0LmFwcGVuZCgicHVibGljOlxuIikKLSAgICAgICAgICAgIEdlbmVyYXRvci5iYWNr
ZW5kX2Rpc3BhdGNoZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIgICAgc3RhdGljIFBhc3NSZWZQ
dHI8JXM+IGNyZWF0ZShJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciosICVzKik7XG4iICUgKGRp
c3BhdGNoZXJfbmFtZSwgYWdlbnRfaW50ZXJmYWNlX25hbWUpKQotICAgICAgICAgICAgR2VuZXJh
dG9yLmJhY2tlbmRfZGlzcGF0Y2hlcl9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoIiAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBQYXNzUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gbWVzc2FnZSkgT1ZFUlJJREU7XG4iKQorICAgICAgICAgICAg
R2VuZXJhdG9yLmJhY2tlbmRfZGlzcGF0Y2hlcl9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoIiAgICBz
dGF0aWMgUGFzc1JlZlB0cjwlcz4gY3JlYXRlKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIqLCAlcyopO1xuIiAlIChkaXNwYXRjaGVyX25hbWUsIGFnZW50X2ludGVyZmFjZV9u
YW1lKSkKKyAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3BhdGNoZXJfaW50ZXJmYWNl
X2xpc3QuYXBwZW5kKCIgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25z
dCBTdHJpbmcmIG1ldGhvZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4g
bWVzc2FnZSkgT1ZFUlJJREU7XG4iKQogICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfZGlz
cGF0Y2hlcl9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoInByaXZhdGU6XG4iKQogCiAgICAgICAgICAg
ICBHZW5lcmF0b3IuYmFja2VuZF9oYW5kbGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgiY2xhc3Mg
JXMge1xuIiAlIGFnZW50X2ludGVyZmFjZV9uYW1lKQpAQCAtMTkxOCw3ICsxOTE4LDcgQEAgY2xh
c3MgR2VuZXJhdG9yOgogICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfaGFuZGxlcl9pbnRl
cmZhY2VfbGlzdC5hcHBlbmQoIn07XG5cbiIpCiAKICAgICAgICAgICAgIEdlbmVyYXRvci5iYWNr
ZW5kX2Rpc3BhdGNoZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCJwcml2YXRlOlxuIikKLSAgICAg
ICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3BhdGNoZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5k
KCIgICAgJXMoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqLCAlcyopO1xuIiAlIChkaXNwYXRj
aGVyX25hbWUsIGFnZW50X2ludGVyZmFjZV9uYW1lKSkKKyAgICAgICAgICAgIEdlbmVyYXRvci5i
YWNrZW5kX2Rpc3BhdGNoZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIgICAgJXMoSW5zcGVjdG9y
OjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciosICVzKik7XG4iICUgKGRpc3BhdGNoZXJfbmFt
ZSwgYWdlbnRfaW50ZXJmYWNlX25hbWUpKQogICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRf
ZGlzcGF0Y2hlcl9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoIiAgICAlcyogbV9hZ2VudDtcbiIgJSBh
Z2VudF9pbnRlcmZhY2VfbmFtZSkKICAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3Bh
dGNoZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCJ9O1xuXG4iKQogCkBAIC0xOTk5LDcgKzE5OTks
NyBAQCBjbGFzcyBHZW5lcmF0b3I6CiAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2hhbmRsZXJf
aW50ZXJmYWNlX2xpc3QuYXBwZW5kKGFkX2hvY190eXBlX291dHB1dCkKICAgICAgICAgYWRfaG9j
X3R5cGVfd3JpdGVyID0gV3JpdGVyKGFkX2hvY190eXBlX291dHB1dCwgIiAgICAiKQogCi0gICAg
ICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3BhdGNoZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIg
ICAgdm9pZCAlcyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTtc
biIgJSBqc29uX2NvbW1hbmRfbmFtZSkKKyAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfZGlzcGF0
Y2hlcl9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoIiAgICB2b2lkICVzKGxvbmcgY2FsbElkLCBjb25z
dCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7XG4iICUganNvbl9jb21tYW5k
X25hbWUpCiAKICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfaGFuZGxlcl9pbnRlcmZhY2VfbGlz
dC5hcHBlbmQoIiAgICB2aXJ0dWFsIHZvaWQgJXMoRXJyb3JTdHJpbmcqIiAlIGpzb25fY29tbWFu
ZF9uYW1lKQogCkBAIC0yMDk0LDkgKzIwOTQsOSBAQCBjbGFzcyBHZW5lcmF0b3I6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfbWV0
aG9kX2ltcGxlbWVudGF0aW9uX2xpc3QsIFRlbXBsYXRlcy5jYWxsYmFja19tZXRob2QsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyJjYWxsYmFja05hbWUiOiBj
YWxsYmFja19uYW1lLCAiaGFuZGxlck5hbWUiOiBhZ2VudF9pbnRlcmZhY2VfbmFtZX0pCiAKLSAg
ICAgICAgICAgIGNhbGxiYWNrX3dyaXRlci5uZXdsaW5lKCJjbGFzcyAiICsgY2FsbGJhY2tfbmFt
ZSArICIgOiBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZSB7
XG4iKQorICAgICAgICAgICAgY2FsbGJhY2tfd3JpdGVyLm5ld2xpbmUoImNsYXNzICIgKyBjYWxs
YmFja19uYW1lICsgIiA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyOjpDYWxsYmFja0Jhc2Uge1xuIikKICAgICAgICAgICAgIGNhbGxiYWNrX3dyaXRlci5uZXds
aW5lKCJwdWJsaWM6XG4iKQotICAgICAgICAgICAgY2FsbGJhY2tfd3JpdGVyLm5ld2xpbmUoIiAg
ICAiICsgY2FsbGJhY2tfbmFtZSArICIoUGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcj4sIGludCBpZCk7XG4iKQorICAgICAgICAgICAgY2FsbGJhY2tfd3JpdGVyLm5ld2xpbmUo
IiAgICAiICsgY2FsbGJhY2tfbmFtZSArICIoUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyPiwgaW50IGlkKTtcbiIpCiAgICAgICAgICAgICBjYWxsYmFja193
cml0ZXIubmV3bGluZSgiICAgIHZvaWQgc2VuZFN1Y2Nlc3MoIiArICIsICIuam9pbihkZWNsX3Bh
cmFtZXRlcl9saXN0KSArICIpO1xuIikKICAgICAgICAgICAgIGNhbGxiYWNrX3dyaXRlci5uZXds
aW5lKCJ9O1xuIikKIApAQCAtMjEwNSw3ICsyMTA1LDcgQEAgY2xhc3MgR2VuZXJhdG9yOgogICAg
ICAgICAgICAgbWV0aG9kX2Rpc3BhdGNoX2hhbmRsaW5nLmFwcGVuZCgiICAgIFJlZlB0cjwlczo6
JXM+IGNhbGxiYWNrID0gYWRvcHRSZWYobmV3ICVzOjolcyhtX2JhY2tlbmREaXNwYXRjaGVyLGNh
bGxJZCkpO1xuIiAlIChhZ2VudF9pbnRlcmZhY2VfbmFtZSwgY2FsbGJhY2tfbmFtZSwgYWdlbnRf
aW50ZXJmYWNlX25hbWUsIGNhbGxiYWNrX25hbWUpKQogICAgICAgICAgICAgbWV0aG9kX2VuZGlu
Z19oYW5kbGluZy5hcHBlbmQoIiAgICBpZiAoZXJyb3IubGVuZ3RoKCkpIHtcbiIpCiAgICAgICAg
ICAgICBtZXRob2RfZW5kaW5nX2hhbmRsaW5nLmFwcGVuZCgiICAgICAgICBjYWxsYmFjay0+ZGlz
YWJsZSgpO1xuIikKLSAgICAgICAgICAgIG1ldGhvZF9lbmRpbmdfaGFuZGxpbmcuYXBwZW5kKCIg
ICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OlNlcnZlckVycm9yLCBlcnJvcik7XG4iKQorICAg
ICAgICAgICAgbWV0aG9kX2VuZGluZ19oYW5kbGluZy5hcHBlbmQoIiAgICAgICAgbV9iYWNrZW5k
RGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJbnNwZWN0b3I6Okluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOjpTZXJ2ZXJFcnJvciwgZXJyb3IpO1xuIikKICAgICAgICAg
ICAgIG1ldGhvZF9lbmRpbmdfaGFuZGxpbmcuYXBwZW5kKCIgICAgICAgIHJldHVybjtcbiIpCiAg
ICAgICAgICAgICBtZXRob2RfZW5kaW5nX2hhbmRsaW5nLmFwcGVuZCgiICAgIH0iKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3RvclN0
cmluZ3MucHkgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rv
clN0cmluZ3MucHkKaW5kZXggNDFlMzM4Ny4uNmM3YjgxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weQpA
QCAtNzAsNyArNzAsNyBAQCBiYWNrZW5kX2Rpc3BhdGNoZXJfZGlzcGF0Y2hfbWV0aG9kID0gKAog
ewogICAgIFJlZjwke2Rpc3BhdGNoZXJOYW1lfT4gcHJvdGVjdCgqdGhpcyk7CiAKLSAgICB0eXBl
ZGVmIHZvaWQgKCR7ZGlzcGF0Y2hlck5hbWV9OjoqQ2FsbEhhbmRsZXIpKGxvbmcgY2FsbElkLCBj
b25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOworICAgIHR5cGVkZWYgdm9pZCAoJHtkaXNw
YXRjaGVyTmFtZX06OipDYWxsSGFuZGxlcikobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBD
YWxsSGFuZGxlcj4gRGlzcGF0Y2hNYXA7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChEaXNwYXRj
aE1hcCwgZGlzcGF0Y2hNYXAsICgpKTsKICAgICBpZiAoZGlzcGF0Y2hNYXAuaXNFbXB0eSgpKSB7
CkBAIC0xMTIsNyArMTEyLDcgQEAgJGNvZGUKICIiIikKIAogY2FsbGJhY2tfbWV0aG9kID0gKAot
IiIiJHtoYW5kbGVyTmFtZX06OiR7Y2FsbGJhY2tOYW1lfTo6JHtjYWxsYmFja05hbWV9KFBhc3NS
ZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IGJhY2tlbmREaXNwYXRjaGVyLCBpbnQg
aWQpIDogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZShiYWNrZW5kRGlz
cGF0Y2hlciwgaWQpIHsgfQorIiIiJHtoYW5kbGVyTmFtZX06OiR7Y2FsbGJhY2tOYW1lfTo6JHtj
YWxsYmFja05hbWV9KFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IGJhY2tl
bmREaXNwYXRjaGVyLCBpbnQgaWQpIDogSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcjo6Q2FsbGJhY2tCYXNlKGJhY2tlbmREaXNwYXRjaGVyLCBpZCkgeyB9CiAKIHZvaWQgJHto
YW5kbGVyTmFtZX06OiR7Y2FsbGJhY2tOYW1lfTo6c2VuZFN1Y2Nlc3MoJHtwYXJhbWV0ZXJzfSkK
IHsKQEAgLTEyNiwxNCArMTI2LDEzIEBAIGZyb250ZW5kX2ggPSAoCiAjZGVmaW5lIEluc3BlY3Rv
ckZyb250ZW5kX2gKIAogI2luY2x1ZGUgIkluc3BlY3RvclR5cGVCdWlsZGVyLmgiCi0jaW5jbHVk
ZSAiSW5zcGVjdG9yVmFsdWVzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRm9yd2FyZGluZy5oIgor
I2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKLQogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCiAKICRkb21haW5DbGFzc0xpc3QKQEAgLTE0OSwxNiArMTQ4LDEzIEBAIGJh
Y2tlbmRfaCA9ICgKICIiIiNpZm5kZWYgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzX2gKICNk
ZWZpbmUgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzX2gKIAotI2luY2x1ZGUgIkluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIK
KyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsKLWNsYXNzIElu
c3BlY3RvckFycmF5OwotCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAogJGhhbmRsZXJJ
bnRlcmZhY2VzCkBAIC0xNzgsMTEgKzE3NCwxMyBAQCBiYWNrZW5kX2NwcCA9ICgKICNpbmNsdWRl
ICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKIAogI2luY2x1ZGUgIkluc3BlY3RvckFn
ZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
Rm9yd2FyZGluZy5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogJG1ldGhvZHMKQEAgLTIwMCwxMCArMTk4LDExIEBAIGZyb250ZW5kX2NwcCA9ICgKIAogI2lu
Y2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JGb3J3YXJk
aW5nLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICRtZXRob2RzCkBAIC0yMjAsNyArMjE5LDcgQEAgdHlwZWJ1aWxkZXJfaCA9
ICgKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMu
aCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3Rm
L0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCkBAIC0yODEsMTMg
KzI4MCwxMyBAQCBpbmxpbmUgaW50IEV4YWN0bHlJbnQ6OmNhc3RfdG9faW50PHVuc2lnbmVkIGlu
dD4odW5zaWduZWQgaW50IGkpIHsgcmV0dXJuIGk7IH0KIGNsYXNzIFJ1bnRpbWVDYXN0SGVscGVy
IHsKIHB1YmxpYzoKICNpZiAkdmFsaWRhdG9ySWZkZWZOYW1lCi0gICAgdGVtcGxhdGU8SW5zcGVj
dG9yVmFsdWU6OlR5cGUgVFlQRT4KLSAgICBzdGF0aWMgdm9pZCBhc3NlcnRUeXBlKEluc3BlY3Rv
clZhbHVlKiB2YWx1ZSkKKyAgICB0ZW1wbGF0ZTxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlOjpU
eXBlIFRZUEU+CisgICAgc3RhdGljIHZvaWQgYXNzZXJ0VHlwZShJbnNwZWN0b3I6Okluc3BlY3Rv
clZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCh2YWx1ZS0+dHlwZSgpID09IFRZ
UEUpOwogICAgIH0KLSAgICBzdGF0aWMgdm9pZCBhc3NlcnRBbnkoSW5zcGVjdG9yVmFsdWUqKTsK
LSAgICBzdGF0aWMgdm9pZCBhc3NlcnRJbnQoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKTsKKyAgICBz
dGF0aWMgdm9pZCBhc3NlcnRBbnkoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSopOworICAgIHN0
YXRpYyB2b2lkIGFzc2VydEludChJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiB2YWx1ZSk7CiAj
ZW5kaWYKIH07CiAKQEAgLTMwMCwxMyArMjk5LDEzIEBAIHN0cnVjdCBBcnJheUl0ZW1IZWxwZXIg
ewogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIEFycmF5IDogcHVibGljIEluc3Bl
Y3RvckFycmF5QmFzZSB7CitjbGFzcyBBcnJheSA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3Rv
ckFycmF5QmFzZSB7CiBwcml2YXRlOgogICAgIEFycmF5KCkgeyB9CiAKLSAgICBJbnNwZWN0b3JB
cnJheSogb3BlbkFjY2Vzc29ycygpIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKElu
c3BlY3RvckFycmF5KSA9PSBzaXplb2YoQXJyYXk8VD4pLCBjYW5ub3RfY2FzdCk7Ci0gICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxJbnNwZWN0b3JBcnJheSo+KHN0YXRpY19jYXN0PEluc3BlY3Rv
ckFycmF5QmFzZSo+KHRoaXMpKTsKKyAgICBJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5KiBvcGVu
QWNjZXNzb3JzKCkgeworICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JBcnJheSkgPT0gc2l6ZW9mKEFycmF5PFQ+KSwgY2Fubm90X2Nhc3QpOworICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSo+KHN0YXRpY19j
YXN0PEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXlCYXNlKj4odGhpcykpOwogICAgIH0KIAogcHVi
bGljOgpAQCAtMzI1LDIyICszMjQsMjIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEFycmF5PFQ+KCkpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFycmF5
PFQ+PiBydW50aW1lQ2FzdChQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSkKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxBcnJheTxUPj4gcnVudGltZUNhc3QoUGFzc1JlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3RvclZhbHVlPiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0
b3JBcnJheT4gYXJyYXk7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5
PiBhcnJheTsKICAgICAgICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFzQXJyYXkoJmFycmF5KTsK
ICAgICAgICAgQVNTRVJUX1VOVVNFRChjYXN0UmVzLCBjYXN0UmVzKTsKICNpZiAkdmFsaWRhdG9y
SWZkZWZOYW1lCiAgICAgICAgIGFzc2VydENvcnJlY3RWYWx1ZShhcnJheS5nZXQoKSk7CiAjZW5k
aWYgIC8vICR2YWxpZGF0b3JJZmRlZk5hbWUKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9m
KEFycmF5PFQ+KSA9PSBzaXplb2YoSW5zcGVjdG9yQXJyYXkpLCB0eXBlX2Nhc3RfcHJvYmxlbSk7
Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTxUPio+KHN0YXRpY19jYXN0PEluc3Bl
Y3RvckFycmF5QmFzZSo+KGFycmF5LmdldCgpKSk7CisgICAgICAgIENPTVBJTEVfQVNTRVJUKHNp
emVvZihBcnJheTxUPikgPT0gc2l6ZW9mKEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkpLCB0eXBl
X2Nhc3RfcHJvYmxlbSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTxUPio+KHN0
YXRpY19jYXN0PEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXlCYXNlKj4oYXJyYXkuZ2V0KCkpKTsK
ICAgICB9CiAKICNpZiAkdmFsaWRhdG9ySWZkZWZOYW1lCi0gICAgc3RhdGljIHZvaWQgYXNzZXJ0
Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBhc3Nl
cnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCiAgICAgewot
ICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFycmF5OworICAgICAgICBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JBcnJheT4gYXJyYXk7CiAgICAgICAgIGJvb2wgY2FzdFJlcyA9IHZh
bHVlLT5hc0FycmF5KCZhcnJheSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY2FzdFJlcywgY2Fz
dFJlcyk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcnJheS0+bGVuZ3RoKCk7
IGkrKykKQEAgLTM1MSwxNCArMzUwLDE0IEBAIHB1YmxpYzoKIH07CiAKIHN0cnVjdCBTdHJ1Y3RJ
dGVtVHJhaXRzIHsKLSAgICBzdGF0aWMgdm9pZCBwdXNoUmVmUHRyKEluc3BlY3RvckFycmF5KiBh
cnJheSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpCisgICAgc3RhdGljIHZvaWQg
cHVzaFJlZlB0cihJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5KiBhcnJheSwgUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiB2YWx1ZSkKICAgICB7CiAgICAgICAgIGFycmF5LT5w
dXNoVmFsdWUodmFsdWUpOwogICAgIH0KIAogI2lmICR2YWxpZGF0b3JJZmRlZk5hbWUKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJ
bnNwZWN0b3JWYWx1ZSogdmFsdWUpIHsKKyAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFs
dWUoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogdmFsdWUpIHsKICAgICAgICAgVDo6YXNzZXJ0
Q29ycmVjdFZhbHVlKHZhbHVlKTsKICAgICB9CiAjZW5kaWYgIC8vICR2YWxpZGF0b3JJZmRlZk5h
bWUKQEAgLTM2NywxNSArMzY2LDE1IEBAIHN0cnVjdCBTdHJ1Y3RJdGVtVHJhaXRzIHsKIHRlbXBs
YXRlPD4KIHN0cnVjdCBBcnJheUl0ZW1IZWxwZXI8U3RyaW5nPiB7CiAgICAgc3RydWN0IFRyYWl0
cyB7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSYXcoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBj
b25zdCBTdHJpbmcmIHZhbHVlKQorICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmF3KEluc3BlY3Rv
cjo6SW5zcGVjdG9yQXJyYXkqIGFycmF5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICB7
CiAgICAgICAgICAgICBhcnJheS0+cHVzaFN0cmluZyh2YWx1ZSk7CiAgICAgICAgIH0KIAogI2lm
ICR2YWxpZGF0b3JJZmRlZk5hbWUKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAg
ICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkg
ewotICAgICAgICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFs
dWU6OlR5cGVTdHJpbmc+KHZhbHVlKTsKKyAgICAgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVj
dFZhbHVlKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVlKSB7CisgICAgICAgICAgICBS
dW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlOjpU
eXBlU3RyaW5nPih2YWx1ZSk7CiAgICAgICAgIH0KICNlbmRpZiAgLy8gJHZhbGlkYXRvcklmZGVm
TmFtZQogICAgIH07CkBAIC0zODQsMTQgKzM4MywxNCBAQCBzdHJ1Y3QgQXJyYXlJdGVtSGVscGVy
PFN0cmluZz4gewogdGVtcGxhdGU8Pgogc3RydWN0IEFycmF5SXRlbUhlbHBlcjxpbnQ+IHsKICAg
ICBzdHJ1Y3QgVHJhaXRzIHsKLSAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJhdyhJbnNwZWN0b3JB
cnJheSogYXJyYXksIGludCB2YWx1ZSkKKyAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJhdyhJbnNw
ZWN0b3I6Okluc3BlY3RvckFycmF5KiBhcnJheSwgaW50IHZhbHVlKQogICAgICAgICB7CiAgICAg
ICAgICAgICBhcnJheS0+cHVzaEludCh2YWx1ZSk7CiAgICAgICAgIH0KIAogI2lmICR2YWxpZGF0
b3JJZmRlZk5hbWUKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGlj
IHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkgeworICAgICAg
ICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1
ZSogdmFsdWUpIHsKICAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRJbnQodmFs
dWUpOwogICAgICAgICB9CiAjZW5kaWYgIC8vICR2YWxpZGF0b3JJZmRlZk5hbWUKQEAgLTQwMSwx
NSArNDAwLDE1IEBAIHN0cnVjdCBBcnJheUl0ZW1IZWxwZXI8aW50PiB7CiB0ZW1wbGF0ZTw+CiBz
dHJ1Y3QgQXJyYXlJdGVtSGVscGVyPGRvdWJsZT4gewogICAgIHN0cnVjdCBUcmFpdHMgewotICAg
ICAgICBzdGF0aWMgdm9pZCBwdXNoUmF3KEluc3BlY3RvckFycmF5KiBhcnJheSwgZG91YmxlIHZh
bHVlKQorICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmF3KEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJy
YXkqIGFycmF5LCBkb3VibGUgdmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIGFycmF5LT5w
dXNoTnVtYmVyKHZhbHVlKTsKICAgICAgICAgfQogCiAjaWYgJHZhbGlkYXRvcklmZGVmTmFtZQog
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgdm9pZCBhc3NlcnRD
b3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKSB7Ci0gICAgICAgICAgICBSdW50aW1l
Q2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZU51bWJlcj4odmFsdWUp
OworICAgICAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JWYWx1ZSogdmFsdWUpIHsKKyAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3Nl
cnRUeXBlPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU6OlR5cGVOdW1iZXI+KHZhbHVlKTsKICAg
ICAgICAgfQogI2VuZGlmICAvLyAkdmFsaWRhdG9ySWZkZWZOYW1lCiAgICAgfTsKQEAgLTQxOCwz
MSArNDE3LDMxIEBAIHN0cnVjdCBBcnJheUl0ZW1IZWxwZXI8ZG91YmxlPiB7CiB0ZW1wbGF0ZTw+
CiBzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPGJvb2w+IHsKICAgICBzdHJ1Y3QgVHJhaXRzIHsKLSAg
ICAgICAgc3RhdGljIHZvaWQgcHVzaFJhdyhJbnNwZWN0b3JBcnJheSogYXJyYXksIGJvb2wgdmFs
dWUpCisgICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSYXcoSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJh
eSogYXJyYXksIGJvb2wgdmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIGFycmF5LT5wdXNo
Qm9vbGVhbih2YWx1ZSk7CiAgICAgICAgIH0KIAogI2lmICR2YWxpZGF0b3JJZmRlZk5hbWUKICAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29y
cmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkgewotICAgICAgICAgICAgUnVudGltZUNh
c3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFsdWU6OlR5cGVCb29sZWFuPih2YWx1ZSk7
CisgICAgICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3I6Okluc3Bl
Y3RvclZhbHVlKiB2YWx1ZSkgeworICAgICAgICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2Vy
dFR5cGU8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZTo6VHlwZUJvb2xlYW4+KHZhbHVlKTsKICAg
ICAgICAgfQogI2VuZGlmICAvLyAkdmFsaWRhdG9ySWZkZWZOYW1lCiAgICAgfTsKIH07CiAKIHRl
bXBsYXRlPD4KLXN0cnVjdCBBcnJheUl0ZW1IZWxwZXI8SW5zcGVjdG9yVmFsdWU+IHsKK3N0cnVj
dCBBcnJheUl0ZW1IZWxwZXI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gewogICAgIHN0cnVj
dCBUcmFpdHMgewotICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmVmUHRyKEluc3BlY3RvckFycmF5
KiBhcnJheSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpCisgICAgICAgIHN0YXRp
YyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSogYXJyYXksIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGFycmF5LT5wdXNoVmFsdWUodmFsdWUpOwogICAgICAgICB9CiAKICNpZiAkdmFsaWRh
dG9ySWZkZWZOYW1lCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRp
YyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpIHsKKyAgICAg
ICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFs
dWUqIHZhbHVlKSB7CiAgICAgICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0QW55KHZh
bHVlKTsKICAgICAgICAgfQogI2VuZGlmICAvLyAkdmFsaWRhdG9ySWZkZWZOYW1lCkBAIC00NTAs
MzQgKzQ0OSwzNCBAQCBzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPEluc3BlY3RvclZhbHVlPiB7CiB9
OwogCiB0ZW1wbGF0ZTw+Ci1zdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPEluc3BlY3Rvck9iamVjdD4g
eworc3RydWN0IEFycmF5SXRlbUhlbHBlcjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gewog
ICAgIHN0cnVjdCBUcmFpdHMgewotICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmVmUHRyKEluc3Bl
Y3RvckFycmF5KiBhcnJheSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpCisgICAg
ICAgIHN0YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSogYXJy
YXksIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpCiAgICAgICAg
IHsKICAgICAgICAgICAgIGFycmF5LT5wdXNoVmFsdWUodmFsdWUpOwogICAgICAgICB9CiAKICNp
ZiAkdmFsaWRhdG9ySWZkZWZOYW1lCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAg
ICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUp
IHsKLSAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3RvclZh
bHVlOjpUeXBlT2JqZWN0Pih2YWx1ZSk7CisgICAgICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJl
Y3RWYWx1ZShJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiB2YWx1ZSkgeworICAgICAgICAgICAg
UnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZTo6
VHlwZU9iamVjdD4odmFsdWUpOwogICAgICAgICB9CiAjZW5kaWYgIC8vICR2YWxpZGF0b3JJZmRl
Zk5hbWUKICAgICB9OwogfTsKIAogdGVtcGxhdGU8Pgotc3RydWN0IEFycmF5SXRlbUhlbHBlcjxJ
bnNwZWN0b3JBcnJheT4geworc3RydWN0IEFycmF5SXRlbUhlbHBlcjxJbnNwZWN0b3I6Okluc3Bl
Y3RvckFycmF5PiB7CiAgICAgc3RydWN0IFRyYWl0cyB7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1
c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5
PiB2YWx1ZSkKKyAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0b3I6Okluc3Bl
Y3RvckFycmF5KiBhcnJheSwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiB2
YWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAgYXJyYXktPnB1c2hBcnJheSh2YWx1ZSk7CiAg
ICAgICAgIH0KIAogI2lmICR2YWxpZGF0b3JJZmRlZk5hbWUKICAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3Rv
clZhbHVlKiB2YWx1ZSkgewotICAgICAgICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5
cGU8SW5zcGVjdG9yVmFsdWU6OlR5cGVBcnJheT4odmFsdWUpOworICAgICAgICBzdGF0aWMgdm9p
ZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogdmFsdWUpIHsK
KyAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3Rvcjo6SW5z
cGVjdG9yVmFsdWU6OlR5cGVBcnJheT4odmFsdWUpOwogICAgICAgICB9CiAjZW5kaWYgIC8vICR2
YWxpZGF0b3JJZmRlZk5hbWUKICAgICB9OwpAQCAtNDg2LDE0ICs0ODUsMTQgQEAgc3RydWN0IEFy
cmF5SXRlbUhlbHBlcjxJbnNwZWN0b3JBcnJheT4gewogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0
cnVjdCBBcnJheUl0ZW1IZWxwZXI8VHlwZUJ1aWxkZXI6OkFycmF5PFQ+PiB7CiAgICAgc3RydWN0
IFRyYWl0cyB7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkq
IGFycmF5LCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUPj4gdmFsdWUpCisgICAgICAg
IHN0YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSogYXJyYXks
IFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFQ+PiB2YWx1ZSkKICAgICAgICAgewogICAg
ICAgICAgICAgYXJyYXktPnB1c2hWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIH0KIAogI2lmICR2YWxp
ZGF0b3JJZmRlZk5hbWUKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUz4KLSAgICAgICAgc3Rh
dGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkgeworICAg
ICAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yOjpJbnNwZWN0b3JW
YWx1ZSogdmFsdWUpIHsKICAgICAgICAgICAgIFM6OmFzc2VydENvcnJlY3RWYWx1ZSh2YWx1ZSk7
CiAgICAgICAgIH0KICNlbmRpZiAgLy8gJHZhbGlkYXRvcklmZGVmTmFtZQpAQCAtNTI1LDYgKzUy
NCw4IEBAIHR5cGVidWlsZGVyX2NwcCA9ICgKICNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRl
ci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAordXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgVHlwZUJ1aWxkZXIg
ewpAQCAtNTg0LDE0ICs1ODUsMTQgQEAgY2xhc3NfYmluZGluZ19idWlsZGVyX3BhcnRfMSA9ICgK
ICAgICB0ZW1wbGF0ZTxpbnQgU1RBVEU+CiAgICAgY2xhc3MgQnVpbGRlciB7CiAgICAgcHJpdmF0
ZToKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbV9yZXN1bHQ7CisgICAgICAgIFJl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gbV9yZXN1bHQ7CiAKICAgICAgICAgdGVt
cGxhdGU8aW50IFNURVA+IEJ1aWxkZXI8U1RBVEUgfCBTVEVQPiYgY2FzdFN0YXRlKCkKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PEJ1aWxkZXI8U1RBVEUg
fCBTVEVQPio+KHRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgQnVpbGRlcihQYXNzUmVmUHRy
PC8qJXMqL0luc3BlY3Rvck9iamVjdD4gcHRyKQorICAgICAgICBCdWlsZGVyKFBhc3NSZWZQdHI8
LyolcyovSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHB0cikKICAgICAgICAgewogICAgICAg
ICAgICAgQ09NUElMRV9BU1NFUlQoU1RBVEUgPT0gTm9GaWVsZHNTZXQsIGJ1aWxkZXJfY3JlYXRl
ZF9pbl9ub25faW5pdF9zdGF0ZSk7CiAgICAgICAgICAgICBtX3Jlc3VsdCA9IHB0cjsKQEAgLTYx
Myw3ICs2MTQsNyBAQCBjbGFzc19iaW5kaW5nX2J1aWxkZXJfcGFydF8zID0gKCIiIgogICAgICAg
ICBvcGVyYXRvciBSZWZQdHI8JXM+JiAoKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxF
X0FTU0VSVChTVEFURSA9PSBBbGxGaWVsZHNTZXQsIHJlc3VsdF9pc19ub3RfcmVhZHkpOwotICAg
ICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKCVzKSA9PSBzaXplb2YoSW5zcGVjdG9yT2Jq
ZWN0KSwgY2Fubm90X2Nhc3QpOworICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKCVz
KSA9PSBzaXplb2YoSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QpLCBjYW5ub3RfY2FzdCk7CiAg
ICAgICAgICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8UmVmUHRyPCVzPio+KCZtX3Jlc3Vs
dCk7CiAgICAgICAgIH0KIApAQCAtNjI4LDYgKzYyOSw2IEBAIGNsYXNzX2JpbmRpbmdfYnVpbGRl
cl9wYXJ0XzMgPSAoIiIiCiBjbGFzc19iaW5kaW5nX2J1aWxkZXJfcGFydF80ID0gKAogIiIiICAg
IHN0YXRpYyBCdWlsZGVyPE5vRmllbGRzU2V0PiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOworICAg
ICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q6OmNyZWF0ZSgpKTsKICAgICB9CiAiIiIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0Nv
bnNvbGVNZXNzYWdlLmNwcAppbmRleCAwYzk3MGI4Li5iNDkzN2Y4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKQEAgLTM4LDE0ICszOCwxNiBAQAogI2lu
Y2x1ZGUgIklkZW50aWZpZXJzRmFjdG9yeS5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0Lmgi
CiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9y
VmFsdWVzLmgiCiAjaW5jbHVkZSAiU2NyaXB0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2NyaXB0
Q2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0Q2FsbFN0YWNrRmFjdG9yeS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVk
ZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9y
VmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAordXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDb25zb2xlTWVzc2FnZTo6Q29u
c29sZU1lc3NhZ2UoYm9vbCBjYW5HZW5lcmF0ZUNhbGxTdGFjaywgTWVzc2FnZVNvdXJjZSBzb3Vy
Y2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQpAQCAtMjA2LDggKzIwOCw4
IEBAIHZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQoSW5zcGVjdG9yQ29uc29sZUZy
b250ZW5kRGlzcGF0Y2hlciogY29uc29sZUZyCiAgICAgICAgIGlmICghaW5qZWN0ZWRTY3JpcHQu
aGFzTm9WYWx1ZSgpKSB7CiAgICAgICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5
cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+PiBqc29uQXJncyA9IFR5cGVCdWlsZGVy
OjpBcnJheTxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pjo6Y3JlYXRlKCk7CiAg
ICAgICAgICAgICBpZiAobV90eXBlID09IFRhYmxlTWVzc2FnZVR5cGUgJiYgZ2VuZXJhdGVQcmV2
aWV3ICYmIG1fYXJndW1lbnRzLT5hcmd1bWVudENvdW50KCkpIHsKLSAgICAgICAgICAgICAgICBT
Y3JpcHRWYWx1ZSB0YWJsZSA9IG1fYXJndW1lbnRzLT5hcmd1bWVudEF0KDApOwotICAgICAgICAg
ICAgICAgIFNjcmlwdFZhbHVlIGNvbHVtbnMgPSBtX2FyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgp
ID4gMSA/IG1fYXJndW1lbnRzLT5hcmd1bWVudEF0KDEpIDogU2NyaXB0VmFsdWUoKTsKKyAgICAg
ICAgICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB0YWJsZSA9IG1fYXJndW1lbnRzLT5h
cmd1bWVudEF0KDApOworICAgICAgICAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGNv
bHVtbnMgPSBtX2FyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgpID4gMSA/IG1fYXJndW1lbnRzLT5h
cmd1bWVudEF0KDEpIDogRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKTsKICAgICAgICAgICAgICAg
ICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gaW5zcGVjdG9yVmFs
dWUgPSBpbmplY3RlZFNjcmlwdC53cmFwVGFibGUodGFibGUsIGNvbHVtbnMpOwogICAgICAgICAg
ICAgICAgIGlmICghaW5zcGVjdG9yVmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29u
c29sZU1lc3NhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5o
CmluZGV4IDA3Zjg4YjYuLjdmZDE2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Db25zb2xlTWVzc2FnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25z
b2xlTWVzc2FnZS5oCkBAIC0zOCwxNSArMzgsMTcgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAorbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFz
cyBJbnNwZWN0b3JPYmplY3Q7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9N
V2luZG93OwogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotY2xhc3MgSW5zcGVjdG9yT2Jq
ZWN0OwogY2xhc3MgU2NyaXB0QXJndW1lbnRzOwogY2xhc3MgU2NyaXB0Q2FsbEZyYW1lOwogY2xh
c3MgU2NyaXB0Q2FsbFN0YWNrOwotY2xhc3MgU2NyaXB0VmFsdWU7CiAKIGNsYXNzIENvbnNvbGVN
ZXNzYWdlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb25zb2xlTWVzc2FnZSk7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0NvbnRlbnRTZWFyY2hVdGlscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29udGVu
dFNlYXJjaFV0aWxzLmNwcAppbmRleCAwM2E4MDVmLi5iM2Q5YWE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmNwcApAQCAtMzEsMTQgKzMxLDE0
IEBACiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAogI2luY2x1ZGUgIkNvbnRlbnRTZWFyY2hVdGls
cy5oIgotCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiUmVndWxhckV4
cHJlc3Npb24uaCIKLQorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNp
bmNsdWRlIDx3dGYvQnVtcFBvaW50ZXJBbGxvY2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CiAjaW5jbHVkZSA8eWFyci9ZYXJyLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBDb250ZW50U2VhcmNoVXRp
bHMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJj
aFV0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmgK
aW5kZXggNjBhZDY3OC4uN2I1ZGYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0NvbnRlbnRTZWFyY2hVdGlscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9D
b250ZW50U2VhcmNoVXRpbHMuaApAQCAtMzgsNyArMzgsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIEluc3BlY3RvckFycmF5OwogY2xhc3MgUmVndWxhckV4cHJlc3Npb247CiAK
IG5hbWVzcGFjZSBDb250ZW50U2VhcmNoVXRpbHMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdC5jcHAKaW5kZXggNzdmNzgwYy4uM2U2MmUxMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCkBAIC0zNiwxMCArMzYsMTAgQEAK
IAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2Ny
aXB0TW9kdWxlLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiTm9k
ZS5oIgogI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5oIgotI2luY2x1ZGUgIlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgorI2lu
Y2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkFycmF5OwpAQCAtNDks
NiArNDksOCBAQCB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6SW50ZXJuYWxQ
cm9wZXJ0eURlc2NyaXB0b3I7CiB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6
OkZ1bmN0aW9uRGV0YWlsczsKIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpS
ZW1vdGVPYmplY3Q7CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogSW5qZWN0ZWRTY3JpcHQ6OkluamVjdGVkU2NyaXB0KCkKQEAgLTU2LDcgKzU4
LDcgQEAgSW5qZWN0ZWRTY3JpcHQ6OkluamVjdGVkU2NyaXB0KCkKIHsKIH0KIAotSW5qZWN0ZWRT
Y3JpcHQ6OkluamVjdGVkU2NyaXB0KFNjcmlwdE9iamVjdCBpbmplY3RlZFNjcmlwdE9iamVjdCwg
SW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayBhY2Nlc3NDaGVjaykKK0luamVjdGVkU2NyaXB0OjpJ
bmplY3RlZFNjcmlwdChEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgaW5qZWN0ZWRTY3JpcHRPYmpl
Y3QsIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sgYWNjZXNzQ2hlY2spCiAgICAgOiBJbmplY3Rl
ZFNjcmlwdEJhc2UoIkluamVjdGVkU2NyaXB0IiwgaW5qZWN0ZWRTY3JpcHRPYmplY3QsIGFjY2Vz
c0NoZWNrKQogewogfQpAQCAtODMsNyArODUsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpjYWxs
RnVuY3Rpb25PbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZQog
ICAgIG1ha2VFdmFsQ2FsbChlcnJvclN0cmluZywgZnVuY3Rpb24sIHJlc3VsdCwgd2FzVGhyb3du
KTsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0
cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBjb25zdCBT
dHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmlu
ZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBib29sIHJldHVybkJ5
VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8UmVtb3RlT2JqZWN0PiogcmVzdWx0
LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCit2b2lkIEluamVjdGVk
U2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNvbnN0IFN0cmluZyYgY2Fs
bEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RH
cm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9v
bCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxSZW1vdGVPYmplY3Q+KiByZXN1bHQsIFR5cGVCdWls
ZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKIHsKICAgICBTY3JpcHRGdW5jdGlvbkNh
bGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImV2YWx1YXRlT25DYWxsRnJhbWUi
KTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYWxsRnJhbWVzKTsKQEAgLTE1MCw3ICsx
NTIsNyBAQCBOb2RlKiBJbmplY3RlZFNjcmlwdDo6bm9kZUZvck9iamVjdElkKGNvbnN0IFN0cmlu
ZyYgb2JqZWN0SWQpCiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQpOwogCiAg
ICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKLSAgICBTY3JpcHRWYWx1ZSByZXN1bHRWYWx1
ZSA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsK
KyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSByZXN1bHRWYWx1ZSA9IGNhbGxGdW5jdGlvbldp
dGhFdmFsRW5hYmxlZChmdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKICAgICBBU1NFUlQoIWhhZEV4
Y2VwdGlvbik7CiAKICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0OjpzY3JpcHRWYWx1ZUFz
Tm9kZShyZXN1bHRWYWx1ZSk7CkBAIC0xNjUsMTMgKzE2NywxMyBAQCB2b2lkIEluamVjdGVkU2Ny
aXB0OjpyZWxlYXNlT2JqZWN0KGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpCiB9CiAKICNpZiBFTkFC
TEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLVBhc3NSZWZQdHI8QXJyYXk8Q2FsbEZyYW1lPj4gSW5q
ZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVzKGNvbnN0IFNjcmlwdFZhbHVlJiBjYWxsRnJhbWVz
KQorUGFzc1JlZlB0cjxBcnJheTxDYWxsRnJhbWU+PiBJbmplY3RlZFNjcmlwdDo6d3JhcENhbGxG
cmFtZXMoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMpCiB7CiAgICAg
QVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwogICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihp
bmplY3RlZFNjcmlwdE9iamVjdCgpLCAid3JhcENhbGxGcmFtZXMiKTsKICAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudChjYWxsRnJhbWVzKTsKICAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNl
OwotICAgIFNjcmlwdFZhbHVlIGNhbGxGcmFtZXNWYWx1ZSA9IGNhbGxGdW5jdGlvbldpdGhFdmFs
RW5hYmxlZChmdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSBjYWxsRnJhbWVzVmFsdWUgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rp
b24sIGhhZEV4Y2VwdGlvbik7CiAgICAgQVNTRVJUKCFoYWRFeGNlcHRpb24pOwogICAgIFJlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0ID0gY2FsbEZyYW1lc1ZhbHVlLnRvSW5zcGVjdG9yVmFs
dWUoc2NyaXB0U3RhdGUoKSk7CiAgICAgaWYgKHJlc3VsdC0+dHlwZSgpID09IEluc3BlY3RvclZh
bHVlOjpUeXBlQXJyYXkpCkBAIC0xODAsNyArMTgyLDcgQEAgUGFzc1JlZlB0cjxBcnJheTxDYWxs
RnJhbWU+PiBJbmplY3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMoY29uc3QgU2NyaXB0VmFsdWUm
IGMKIH0KICNlbmRpZgogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwT2JqZWN0KGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1
ZSwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3KSBjb25zdAor
UGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNj
cmlwdDo6d3JhcE9iamVjdChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIGNv
bnN0IFN0cmluZyYgZ3JvdXBOYW1lLCBib29sIGdlbmVyYXRlUHJldmlldykgY29uc3QKIHsKICAg
ICBBU1NFUlQoIWhhc05vVmFsdWUoKSk7CiAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIHdyYXBGdW5j
dGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAid3JhcE9iamVjdCIpOwpAQCAtMTg5LDE0ICsx
OTEsMTQgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJ
bmplY3RlZFNjcmlwdDo6d3JhcE9iamVjdChjb25zdAogICAgIHdyYXBGdW5jdGlvbi5hcHBlbmRB
cmd1bWVudChjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coKSk7CiAgICAgd3JhcEZ1bmN0aW9uLmFw
cGVuZEFyZ3VtZW50KGdlbmVyYXRlUHJldmlldyk7CiAgICAgYm9vbCBoYWRFeGNlcHRpb24gPSBm
YWxzZTsKLSAgICBTY3JpcHRWYWx1ZSByID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKHdy
YXBGdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBy
ID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKHdyYXBGdW5jdGlvbiwgaGFkRXhjZXB0aW9u
KTsKICAgICBpZiAoaGFkRXhjZXB0aW9uKQogICAgICAgICByZXR1cm4gMDsKICAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiByYXdSZXN1bHQgPSByLnRvSW5zcGVjdG9yVmFsdWUoc2NyaXB0U3Rh
dGUoKSktPmFzT2JqZWN0KCk7CiAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q6OnJ1bnRpbWVDYXN0KHJhd1Jlc3VsdCk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1
aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBUYWJsZShj
b25zdCBTY3JpcHRWYWx1ZSYgdGFibGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBjb2x1bW5zKSBjb25z
dAorUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3Rl
ZFNjcmlwdDo6d3JhcFRhYmxlKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB0YWJsZSwg
Y29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGNvbHVtbnMpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKCFoYXNOb1ZhbHVlKCkpOwogICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCB3cmFwRnVuY3Rpb24o
aW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgIndyYXBUYWJsZSIpOwpAQCAtMjA3LDcgKzIwOSw3IEBA
IFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRT
Y3JpcHQ6OndyYXBUYWJsZShjb25zdCBTCiAgICAgZWxzZQogICAgICAgICB3cmFwRnVuY3Rpb24u
YXBwZW5kQXJndW1lbnQoY29sdW1ucyk7CiAgICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsK
LSAgICBTY3JpcHRWYWx1ZSByID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKHdyYXBGdW5j
dGlvbiwgaGFkRXhjZXB0aW9uKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSByID0gY2Fs
bEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKHdyYXBGdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKICAg
ICBpZiAoaGFkRXhjZXB0aW9uKQogICAgICAgICByZXR1cm4gMDsKICAgICBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiByYXdSZXN1bHQgPSByLnRvSW5zcGVjdG9yVmFsdWUoc2NyaXB0U3RhdGUoKSkt
PmFzT2JqZWN0KCk7CkBAIC0yMTksMTQgKzIyMSwxNCBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVy
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwTm9kZShOb2RlKiBu
bwogICAgIHJldHVybiB3cmFwT2JqZWN0KG5vZGVBc1NjcmlwdFZhbHVlKG5vZGUpLCBncm91cE5h
bWUpOwogfQogCi1TY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdDo6ZmluZE9iamVjdEJ5SWQoY29u
c3QgU3RyaW5nJiBvYmplY3RJZCkgY29uc3QKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIEluamVj
dGVkU2NyaXB0OjpmaW5kT2JqZWN0QnlJZChjb25zdCBTdHJpbmcmIG9iamVjdElkKSBjb25zdAog
ewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKICAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVu
Y3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImZpbmRPYmplY3RCeUlkIik7CiAgICAgZnVu
Y3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQpOwogCiAgICAgYm9vbCBoYWRFeGNlcHRpb24g
PSBmYWxzZTsKLSAgICBTY3JpcHRWYWx1ZSByZXN1bHRWYWx1ZSA9IGNhbGxGdW5jdGlvbldpdGhF
dmFsRW5hYmxlZChmdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKKyAgICBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSByZXN1bHRWYWx1ZSA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlv
biwgaGFkRXhjZXB0aW9uKTsKICAgICBBU1NFUlQoIWhhZEV4Y2VwdGlvbik7CiAgICAgcmV0dXJu
IHJlc3VsdFZhbHVlOwogfQpAQCAtMjUwLDcgKzI1Miw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6
OnJlbGVhc2VPYmplY3RHcm91cChjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKQogICAgIEFTU0VS
VCghaGFkRXhjZXB0aW9uKTsKIH0KIAotU2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHQ6Om5vZGVB
c1NjcmlwdFZhbHVlKE5vZGUqIG5vZGUpCitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBJbmplY3Rl
ZFNjcmlwdDo6bm9kZUFzU2NyaXB0VmFsdWUoTm9kZSogbm9kZSkKIHsKICAgICByZXR1cm4gSW5q
ZWN0ZWRTY3JpcHRIb3N0Ojpub2RlQXNTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZSgpLCBub2RlKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKaW5kZXggOWI2YWQy
Zi4uYTk2MTgxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgK
QEAgLTM1LDE3ICszNSwxOSBAQAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgog
I2luY2x1ZGUgIkluc3BlY3RvclR5cGVCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0QXJndW1l
bnRzLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAorbmFtZXNwYWNlIERlcHJlY2F0ZWQgewor
Y2xhc3MgU2NyaXB0T2JqZWN0OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElu
amVjdGVkU2NyaXB0TW9kdWxlOwogY2xhc3MgTm9kZTsKLWNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKQEAgLTcxLDcgKzczLDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpS
ZW1vdGVPYmplY3Q+KiByZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlQnVpbGRl
cjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOwogICAgIHZvaWQgZXZhbHVhdGVPbkNhbGxG
cmFtZShFcnJvclN0cmluZyosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNj
cmlwdFZhbHVlJiBjYWxsRnJhbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLApAQCAtODcsMTMgKzg5LDEzIEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlbGVhc2VPYmplY3QoY29uc3QgU3RyaW5nJiBvYmplY3RJZCk7
CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICBQYXNzUmVmUHRyPFR5cGVC
dWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IHdyYXBDYWxs
RnJhbWVzKGNvbnN0IFNjcmlwdFZhbHVlJik7CisgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6
QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiB3cmFwQ2FsbEZyYW1lcyhj
b25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYpOwogI2VuZGlmCiAKLSAgICBQYXNzUmVmUHRy
PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHdyYXBPYmplY3QoY29uc3QgU2Ny
aXB0VmFsdWUmLCBjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcg
PSBmYWxzZSkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVt
b3RlT2JqZWN0PiB3cmFwVGFibGUoY29uc3QgU2NyaXB0VmFsdWUmIHRhYmxlLCBjb25zdCBTY3Jp
cHRWYWx1ZSYgY29sdW1ucykgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0PiB3cmFwT2JqZWN0KGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlJiwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3ID0gZmFs
c2UpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4gd3JhcFRhYmxlKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB0YWJsZSwgY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGNvbHVtbnMpIGNvbnN0OwogICAgIFBhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gd3JhcE5vZGUoTm9kZSosIGNv
bnN0IFN0cmluZyYgZ3JvdXBOYW1lKTsKLSAgICBTY3JpcHRWYWx1ZSBmaW5kT2JqZWN0QnlJZChj
b25zdCBTdHJpbmcmIG9iamVjdElkKSBjb25zdDsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSBmaW5kT2JqZWN0QnlJZChjb25zdCBTdHJpbmcmIG9iamVjdElkKSBjb25zdDsKIAogICAgIHZv
aWQgaW5zcGVjdE5vZGUoTm9kZSopOwogICAgIHZvaWQgcmVsZWFzZU9iamVjdEdyb3VwKGNvbnN0
IFN0cmluZyYpOwpAQCAtMTAxLDkgKzEwMyw5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIEluamVjdGVkU2NyaXB0TW9kdWxlOwogICAgIGZyaWVuZCBJbmplY3RlZFNjcmlw
dCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKEpTQzo6RXhlY1N0YXRl
Kik7Ci0gICAgSW5qZWN0ZWRTY3JpcHQoU2NyaXB0T2JqZWN0LCBJbnNwZWN0ZWRTdGF0ZUFjY2Vz
c0NoZWNrKTsKKyAgICBJbmplY3RlZFNjcmlwdChEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QsIElu
c3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOwogCi0gICAgU2NyaXB0VmFsdWUgbm9kZUFzU2NyaXB0
VmFsdWUoTm9kZSopOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG5vZGVBc1NjcmlwdFZh
bHVlKE5vZGUqKTsKIH07CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRCYXNlLmNwcAppbmRleCBkOWZiYTQwLi44Yzk4NmE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcApAQCAtMzUsMTMg
KzM1LDE1IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRCYXNlLmgiCiAKICNpbmNsdWRlICJJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIK
ICNpbmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5z
cGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0dsb2JhbE9iamVjdC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRl
cjo6UnVudGltZTo6UmVtb3RlT2JqZWN0OwogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEluamVjdGVkU2NyaXB0QmFzZTo6SW5qZWN0ZWRTY3Jp
cHRCYXNlKGNvbnN0IFN0cmluZyYgbmFtZSkKQEAgLTUwLDE0ICs1MiwxNCBAQCBJbmplY3RlZFNj
cmlwdEJhc2U6OkluamVjdGVkU2NyaXB0QmFzZShjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiB9CiAK
LUluamVjdGVkU2NyaXB0QmFzZTo6SW5qZWN0ZWRTY3JpcHRCYXNlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgU2NyaXB0T2JqZWN0IGluamVjdGVkU2NyaXB0T2JqZWN0LCBJbnNwZWN0ZWRTdGF0ZUFjY2Vz
c0NoZWNrIGFjY2Vzc0NoZWNrKQorSW5qZWN0ZWRTY3JpcHRCYXNlOjpJbmplY3RlZFNjcmlwdEJh
c2UoY29uc3QgU3RyaW5nJiBuYW1lLCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgaW5qZWN0ZWRT
Y3JpcHRPYmplY3QsIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sgYWNjZXNzQ2hlY2spCiAgICAg
OiBtX25hbWUobmFtZSkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRPYmplY3QoaW5qZWN0ZWRTY3Jp
cHRPYmplY3QpCiAgICAgLCBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2soYWNjZXNzQ2hlY2sp
CiB7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHRCYXNlOjppbml0aWFsaXplKFNjcmlwdE9iamVj
dCBpbmplY3RlZFNjcmlwdE9iamVjdCwgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayBhY2Nlc3ND
aGVjaykKK3ZvaWQgSW5qZWN0ZWRTY3JpcHRCYXNlOjppbml0aWFsaXplKERlcHJlY2F0ZWQ6OlNj
cmlwdE9iamVjdCBpbmplY3RlZFNjcmlwdE9iamVjdCwgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVj
ayBhY2Nlc3NDaGVjaykKIHsKICAgICBtX2luamVjdGVkU2NyaXB0T2JqZWN0ID0gaW5qZWN0ZWRT
Y3JpcHRPYmplY3Q7CiAgICAgbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrID0gYWNjZXNzQ2hl
Y2s7CkBAIC02OCwxMiArNzAsMTIgQEAgYm9vbCBJbmplY3RlZFNjcmlwdEJhc2U6OmNhbkFjY2Vz
c0luc3BlY3RlZFdpbmRvdygpIGNvbnN0CiAgICAgcmV0dXJuIG1faW5zcGVjdGVkU3RhdGVBY2Nl
c3NDaGVjayhtX2luamVjdGVkU2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRlKCkpOwogfQogCi1jb25z
dCBTY3JpcHRPYmplY3QmIEluamVjdGVkU2NyaXB0QmFzZTo6aW5qZWN0ZWRTY3JpcHRPYmplY3Qo
KSBjb25zdAorY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiBJbmplY3RlZFNjcmlwdEJh
c2U6OmluamVjdGVkU2NyaXB0T2JqZWN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pbmplY3Rl
ZFNjcmlwdE9iamVjdDsKIH0KIAotU2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHRCYXNlOjpjYWxs
RnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoU2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwgYm9v
bCYgaGFkRXhjZXB0aW9uKSBjb25zdAorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgSW5qZWN0ZWRT
Y3JpcHRCYXNlOjpjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoU2NyaXB0RnVuY3Rpb25DYWxs
JiBmdW5jdGlvbiwgYm9vbCYgaGFkRXhjZXB0aW9uKSBjb25zdAogewogICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250
ZXh0RnJvbUV4ZWNTdGF0ZShtX2luamVjdGVkU2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRlKCkpOwog
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxDYWxsRnVuY3Rpb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgbmFt
ZSgpLCAxKTsKQEAgLTg3LDcgKzg5LDcgQEAgU2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHRCYXNl
OjpjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoU2NyaXB0RnVuY3Rpb25DYWxsJgogICAgICAg
ICAgICAgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+c2V0RXZhbEVuYWJsZWQo
dHJ1ZSk7CiAgICAgfQogCi0gICAgU2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBmdW5jdGlvbi5j
YWxsKGhhZEV4Y2VwdGlvbik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgcmVzdWx0VmFs
dWUgPSBmdW5jdGlvbi5jYWxsKGhhZEV4Y2VwdGlvbik7CiAKICAgICBpZiAoZXZhbElzRGlzYWJs
ZWQpCiAgICAgICAgIHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnNldEV2YWxF
bmFibGVkKGZhbHNlKTsKQEAgLTEwNCw3ICsxMDYsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0QmFz
ZTo6bWFrZUNhbGwoU2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwgUmVmUHRyPEluc3BlY3Rv
cgogICAgIH0KIAogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgU2NyaXB0VmFs
dWUgcmVzdWx0VmFsdWUgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhh
ZEV4Y2VwdGlvbik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBj
YWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CiAKICAg
ICBBU1NFUlQoIWhhZEV4Y2VwdGlvbik7CiAgICAgaWYgKCFoYWRFeGNlcHRpb24pIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaAppbmRleCA3OTZmNmMw
Li5mY2U5YjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
QmFzZS5oCkBAIC0zMiwxMyArMzIsMTYgQEAKICNkZWZpbmUgSW5qZWN0ZWRTY3JpcHRCYXNlX2gK
IAogI2luY2x1ZGUgIkluc3BlY3RvclR5cGVCdWlsZGVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2Jq
ZWN0LmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0T2JqZWN0Lmg+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0
b3IgeworY2xhc3MgSW5zcGVjdG9yVmFsdWU7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgSW5zcGVjdG9yVmFsdWU7CiBjbGFzcyBTY3JpcHRGdW5jdGlvbkNhbGw7CiAKIHR5cGVk
ZWYgU3RyaW5nIEVycm9yU3RyaW5nOwpAQCAtNTYsMTggKzU5LDE4IEBAIHB1YmxpYzoKIHByb3Rl
Y3RlZDoKICAgICB0eXBlZGVmIGJvb2wgKCpJbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKShKU0M6
OkV4ZWNTdGF0ZSopOwogICAgIEluamVjdGVkU2NyaXB0QmFzZShjb25zdCBTdHJpbmcmIG5hbWUp
OwotICAgIEluamVjdGVkU2NyaXB0QmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIFNjcmlwdE9iamVj
dCwgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayk7CisgICAgSW5qZWN0ZWRTY3JpcHRCYXNlKGNv
bnN0IFN0cmluZyYgbmFtZSwgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0LCBJbnNwZWN0ZWRTdGF0
ZUFjY2Vzc0NoZWNrKTsKIAotICAgIHZvaWQgaW5pdGlhbGl6ZShTY3JpcHRPYmplY3QsIEluc3Bl
Y3RlZFN0YXRlQWNjZXNzQ2hlY2spOworICAgIHZvaWQgaW5pdGlhbGl6ZShEZXByZWNhdGVkOjpT
Y3JpcHRPYmplY3QsIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOwogICAgIGJvb2wgY2FuQWNj
ZXNzSW5zcGVjdGVkV2luZG93KCkgY29uc3Q7Ci0gICAgY29uc3QgU2NyaXB0T2JqZWN0JiBpbmpl
Y3RlZFNjcmlwdE9iamVjdCgpIGNvbnN0OwotICAgIFNjcmlwdFZhbHVlIGNhbGxGdW5jdGlvbldp
dGhFdmFsRW5hYmxlZChTY3JpcHRGdW5jdGlvbkNhbGwmLCBib29sJiBoYWRFeGNlcHRpb24pIGNv
bnN0OwotICAgIHZvaWQgbWFrZUNhbGwoU2NyaXB0RnVuY3Rpb25DYWxsJiwgUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiogcmVzdWx0KTsKKyAgICBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3Qm
IGluamVjdGVkU2NyaXB0T2JqZWN0KCkgY29uc3Q7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUgY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKFNjcmlwdEZ1bmN0aW9uQ2FsbCYsIGJvb2wm
IGhhZEV4Y2VwdGlvbikgY29uc3Q7CisgICAgdm9pZCBtYWtlQ2FsbChTY3JpcHRGdW5jdGlvbkNh
bGwmLCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CiAgICAgdm9p
ZCBtYWtlRXZhbENhbGwoRXJyb3JTdHJpbmcqLCBTY3JpcHRGdW5jdGlvbkNhbGwmLCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwgVHlwZUJ1aWxkZXI6
Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9u
YW1lOwotICAgIFNjcmlwdE9iamVjdCBtX2luamVjdGVkU2NyaXB0T2JqZWN0OworICAgIERlcHJl
Y2F0ZWQ6OlNjcmlwdE9iamVjdCBtX2luamVjdGVkU2NyaXB0T2JqZWN0OwogICAgIEluc3BlY3Rl
ZFN0YXRlQWNjZXNzQ2hlY2sgbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9k
dWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01v
ZHVsZS5jcHAKaW5kZXggZmFkNzk4Yi4uODhmOGZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuY3BwCkBAIC0zOCw3
ICszOCw4IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGVTb3VyY2UuaCIK
ICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKICNpbmNsdWRlICJTY3JpcHRGdW5j
dGlvbkNhbGwuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlIDxiaW5kaW5n
cy9TY3JpcHRPYmplY3QuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+
CiAKIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpBcnJheTsKIHVzaW5nIFdlYkNvcmU6OlR5
cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlSWQ7CkBAIC00Nyw2ICs0OCw4IEBAIHVzaW5nIFdl
YkNvcmU6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlU3RhdGU7CiB1c2luZyBXZWJDb3Jl
OjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFjZUxvZzsKIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWls
ZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQ7CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OkluamVj
dGVkU2NyaXB0Q2FudmFzTW9kdWxlKCkKQEAgLTY2LDI5ICs2OSwyOSBAQCBTdHJpbmcgSW5qZWN0
ZWRTY3JpcHRDYW52YXNNb2R1bGU6OnNvdXJjZSgpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZyhy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNv
dXJjZV9qcyksIHNpemVvZihJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZV9qcykpOwog
fQogCi1TY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OndyYXBDYW52YXMy
RENvbnRleHQoY29uc3QgU2NyaXB0T2JqZWN0JiBjb250ZXh0KQorRGVwcmVjYXRlZDo6U2NyaXB0
T2JqZWN0IEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjp3cmFwQ2FudmFzMkRDb250ZXh0KGNv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgY29udGV4dCkKIHsKICAgICByZXR1cm4gY2Fs
bFdyYXBDb250ZXh0RnVuY3Rpb24oIndyYXBDYW52YXMyRENvbnRleHQiLCBjb250ZXh0KTsKIH0K
IAogI2lmIEVOQUJMRShXRUJHTCkKLVNjcmlwdE9iamVjdCBJbmplY3RlZFNjcmlwdENhbnZhc01v
ZHVsZTo6d3JhcFdlYkdMQ29udGV4dChjb25zdCBTY3JpcHRPYmplY3QmIGdsQ29udGV4dCkKK0Rl
cHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6d3JhcFdl
YkdMQ29udGV4dChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmIGdsQ29udGV4dCkKIHsK
ICAgICByZXR1cm4gY2FsbFdyYXBDb250ZXh0RnVuY3Rpb24oIndyYXBXZWJHTENvbnRleHQiLCBn
bENvbnRleHQpOwogfQogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIAotU2NyaXB0T2JqZWN0IElu
amVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjpjYWxsV3JhcENvbnRleHRGdW5jdGlvbihjb25zdCBT
dHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgU2NyaXB0T2JqZWN0JiBjb250ZXh0KQorRGVwcmVj
YXRlZDo6U2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjpjYWxsV3JhcENv
bnRleHRGdW5jdGlvbihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgRGVwcmVjYXRl
ZDo6U2NyaXB0T2JqZWN0JiBjb250ZXh0KQogewogICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5j
dGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCBmdW5jdGlvbk5hbWUpOwogICAgIGZ1bmN0aW9u
LmFwcGVuZEFyZ3VtZW50KGNvbnRleHQpOwogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7
Ci0gICAgU2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJs
ZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUg
cmVzdWx0VmFsdWUgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4
Y2VwdGlvbik7CiAgICAgaWYgKGhhZEV4Y2VwdGlvbiB8fCByZXN1bHRWYWx1ZS5oYXNOb1ZhbHVl
KCkgfHwgIXJlc3VsdFZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgIHJldHVybiBTY3JpcHRPYmplY3QoKTsKKyAgICAgICAgcmV0dXJuIERl
cHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCgpOwogICAgIH0KLSAgICByZXR1cm4gU2NyaXB0T2JqZWN0
KGNvbnRleHQuc2NyaXB0U3RhdGUoKSwgcmVzdWx0VmFsdWUpOworICAgIHJldHVybiBEZXByZWNh
dGVkOjpTY3JpcHRPYmplY3QoY29udGV4dC5zY3JpcHRTdGF0ZSgpLCByZXN1bHRWYWx1ZSk7CiB9
CiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6Om1hcmtGcmFtZUVuZCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1
bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVs
ZS5oCmluZGV4IGYzMzExMmMuLjk5NDk1NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5oCkBAIC0zNSwxMCArMzUsMTMg
QEAKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCituYW1lc3BhY2UgRGVwcmVjYXRlZCB7CitjbGFzcyBTY3JpcHRPYmplY3Q7Cit9CisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotY2xh
c3MgU2NyaXB0T2JqZWN0OwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIApAQCAtNTAsOSArNTMs
OSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUgbW9k
dWxlRm9yU3RhdGUoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSlNDOjpFeGVjU3RhdGUqKTsKIAot
ICAgIFNjcmlwdE9iamVjdCB3cmFwQ2FudmFzMkRDb250ZXh0KGNvbnN0IFNjcmlwdE9iamVjdCYp
OworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCB3cmFwQ2FudmFzMkRDb250ZXh0KGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYpOwogI2lmIEVOQUJMRShXRUJHTCkKLSAgICBTY3Jp
cHRPYmplY3Qgd3JhcFdlYkdMQ29udGV4dChjb25zdCBTY3JpcHRPYmplY3QmKTsKKyAgICBEZXBy
ZWNhdGVkOjpTY3JpcHRPYmplY3Qgd3JhcFdlYkdMQ29udGV4dChjb25zdCBEZXByZWNhdGVkOjpT
Y3JpcHRPYmplY3QmKTsKICNlbmRpZgogICAgIHZvaWQgbWFya0ZyYW1lRW5kKCk7CiAKQEAgLTY2
LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzb3VyY2VTdGF0ZShFcnJvclN0cmluZyos
IGNvbnN0IFR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQmLCBjb25zdCBUeXBlQnVpbGRl
cjo6Q2FudmFzOjpSZXNvdXJjZUlkJiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291
cmNlU3RhdGU+Kik7CiAKIHByaXZhdGU6Ci0gICAgU2NyaXB0T2JqZWN0IGNhbGxXcmFwQ29udGV4
dEZ1bmN0aW9uKGNvbnN0IFN0cmluZyYsIGNvbnN0IFNjcmlwdE9iamVjdCYpOworICAgIERlcHJl
Y2F0ZWQ6OlNjcmlwdE9iamVjdCBjYWxsV3JhcENvbnRleHRGdW5jdGlvbihjb25zdCBTdHJpbmcm
LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmKTsKICAgICB2b2lkIGNhbGxTdGFydENh
cHR1cmluZ0Z1bmN0aW9uKGNvbnN0IFN0cmluZyYsIEVycm9yU3RyaW5nKiwgU3RyaW5nKik7CiAg
ICAgdm9pZCBjYWxsVm9pZEZ1bmN0aW9uV2l0aFRyYWNlTG9nSWRBcmd1bWVudChjb25zdCBTdHJp
bmcmLCBFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAKaW5kZXggZWY1MzNhYS4uZTRjNmQ0
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9z
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5j
cHAKQEAgLTQ3LDE4ICs0NywxOSBAQAogI2luY2x1ZGUgIkluc3BlY3RvckRhdGFiYXNlQWdlbnQu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yRnJvbnRlbmQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJQ
YXN0ZWJvYXJkLmgiCiAjaW5jbHVkZSAiU3RvcmFnZS5oIgorI2luY2x1ZGUgIm1hcmt1cC5oIgor
I2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0lu
c3BlY3RvclZhbHVlcy5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogI2luY2x1ZGUgIkRh
dGFiYXNlLmgiCiAjZW5kaWYKIAotI2luY2x1ZGUgIm1hcmt1cC5oIgotCi0jaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KK3VzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTIxLDkgKzEyMiw5IEBA
IHZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0Ojpjb3B5VGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiAg
ICAgUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCktPndyaXRlUGxhaW5UZXh0KHRl
eHQsIFBhc3RlYm9hcmQ6OkNhbm5vdFNtYXJ0UmVwbGFjZSk7CiB9CiAKLVNjcmlwdFZhbHVlIElu
amVjdGVkU2NyaXB0SG9zdDo6SW5zcGVjdGFibGVPYmplY3Q6OmdldChKU0M6OkV4ZWNTdGF0ZSop
CitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdEhvc3Q6Okluc3BlY3RhYmxl
T2JqZWN0OjpnZXQoSlNDOjpFeGVjU3RhdGUqKQogewotICAgIHJldHVybiBTY3JpcHRWYWx1ZSgp
OworICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSgpOwogfTsKIAogdm9pZCBJbmpl
Y3RlZFNjcmlwdEhvc3Q6OmFkZEluc3BlY3RlZE9iamVjdChQYXNzT3duUHRyPEluamVjdGVkU2Ny
aXB0SG9zdDo6SW5zcGVjdGFibGVPYmplY3Q+IG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaAppbmRleCA0YTg0MTgyLi44YzQ0ZDc3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oCkBAIC0zNiw2
ICszNiwxNSBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCituYW1lc3BhY2UgRGVwcmVjYXRlZCB7CitjbGFzcyBTY3JpcHRWYWx1ZTsKK30K
KworbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CitjbGFzcyBJ
bnNwZWN0b3JWYWx1ZTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEYXRhYmFz
ZTsKQEAgLTQ2LDEyICs1NSw4IEBAIGNsYXNzIEluc3BlY3RvckRPTUFnZW50OwogY2xhc3MgSW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDsKIGNs
YXNzIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0b3JPYmplY3Q7Ci1jbGFz
cyBJbnNwZWN0b3JWYWx1ZTsKIGNsYXNzIE5vZGU7CiBjbGFzcyBTY3JpcHREZWJ1Z1NlcnZlcjsK
LWNsYXNzIFNjcmlwdE9iamVjdDsKLWNsYXNzIFNjcmlwdFZhbHVlOwogY2xhc3MgU3RvcmFnZTsK
IAogc3RydWN0IEV2ZW50TGlzdGVuZXJJbmZvOwpAQCAtODUsMjIgKzkwLDIyIEBAIHB1YmxpYzoK
ICNlbmRpZgogICAgIH0KIAotICAgIHN0YXRpYyBOb2RlKiBzY3JpcHRWYWx1ZUFzTm9kZShTY3Jp
cHRWYWx1ZSk7Ci0gICAgc3RhdGljIFNjcmlwdFZhbHVlIG5vZGVBc1NjcmlwdFZhbHVlKEpTQzo6
RXhlY1N0YXRlKiwgTm9kZSopOworICAgIHN0YXRpYyBOb2RlKiBzY3JpcHRWYWx1ZUFzTm9kZShE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSk7CisgICAgc3RhdGljIERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlIG5vZGVBc1NjcmlwdFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgTm9kZSopOwogCiAgICAgdm9p
ZCBkaXNjb25uZWN0KCk7CiAKICAgICBjbGFzcyBJbnNwZWN0YWJsZU9iamVjdCB7CiAgICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCBT
Y3JpcHRWYWx1ZSBnZXQoSlNDOjpFeGVjU3RhdGUqKTsKKyAgICAgICAgdmlydHVhbCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSBnZXQoSlNDOjpFeGVjU3RhdGUqKTsKICAgICAgICAgdmlydHVhbCB+
SW5zcGVjdGFibGVPYmplY3QoKSB7IH0KICAgICB9OwogICAgIHZvaWQgYWRkSW5zcGVjdGVkT2Jq
ZWN0KFBhc3NPd25QdHI8SW5zcGVjdGFibGVPYmplY3Q+KTsKICAgICB2b2lkIGNsZWFySW5zcGVj
dGVkT2JqZWN0cygpOwogICAgIEluc3BlY3RhYmxlT2JqZWN0KiBpbnNwZWN0ZWRPYmplY3QodW5z
aWduZWQgaW50IG51bSk7CiAKLSAgICB2b2lkIGluc3BlY3RJbXBsKFBhc3NSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+IG9iamVjdFRvSW5zcGVjdCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gaGlu
dHMpOworICAgIHZvaWQgaW5zcGVjdEltcGwoUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
clZhbHVlPiBvYmplY3RUb0luc3BlY3QsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JW
YWx1ZT4gaGludHMpOwogICAgIHZvaWQgZ2V0RXZlbnRMaXN0ZW5lcnNJbXBsKE5vZGUqLCBWZWN0
b3I8RXZlbnRMaXN0ZW5lckluZm8+JiBsaXN0ZW5lcnNBcnJheSk7CiAKICAgICB2b2lkIGNsZWFy
Q29uc29sZU1lc3NhZ2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuY3BwCmluZGV4IDdhYTNkNDMuLjEyNzZjNDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC0z
NywxMCArMzcsMTIgQEAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIklu
amVjdGVkU2NyaXB0SG9zdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0U291cmNlLmgiCi0j
aW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisj
aW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0T2JqZWN0Lmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0lu
c3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKK3VzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc093blB0cjxJ
bmplY3RlZFNjcmlwdE1hbmFnZXI+IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlRm9yUGFn
ZSgpCkBAIC0xNzMsNyArMTc1LDcgQEAgSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOjppbmplY3RlZFNjcmlwdEZvcihKU0M6OkV4ZWNTdGF0ZSogaW5zcGVjdGUKICAgICAgICAg
cmV0dXJuIEluamVjdGVkU2NyaXB0KCk7CiAKICAgICBpbnQgaWQgPSBpbmplY3RlZFNjcmlwdElk
Rm9yKGluc3BlY3RlZEV4ZWNTdGF0ZSk7Ci0gICAgU2NyaXB0T2JqZWN0IGluamVjdGVkU2NyaXB0
T2JqZWN0ID0gY3JlYXRlSW5qZWN0ZWRTY3JpcHQoaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKSwgaW5z
cGVjdGVkRXhlY1N0YXRlLCBpZCk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IGluamVj
dGVkU2NyaXB0T2JqZWN0ID0gY3JlYXRlSW5qZWN0ZWRTY3JpcHQoaW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UoKSwgaW5zcGVjdGVkRXhlY1N0YXRlLCBpZCk7CiAgICAgSW5qZWN0ZWRTY3JpcHQgcmVzdWx0
KGluamVjdGVkU2NyaXB0T2JqZWN0LCBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOwogICAg
IG1faWRUb0luamVjdGVkU2NyaXB0LnNldChpZCwgcmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFu
YWdlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5o
CmluZGV4IDY4MWU0MDguLjdiNDhkMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKQEAgLTM1LDEzICszNSwxOSBAQAogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVz
cGFjZSBEZXByZWNhdGVkIHsKK2NsYXNzIFNjcmlwdE9iamVjdDsKK30KKworbmFtZXNwYWNlIElu
c3BlY3RvciB7CitjbGFzcyBJbnNwZWN0b3JPYmplY3Q7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRE9NV2luZG93OwogY2xhc3MgSW5qZWN0ZWRTY3JpcHQ7CiBjbGFzcyBJbmpl
Y3RlZFNjcmlwdEhvc3Q7Ci1jbGFzcyBJbnNwZWN0b3JPYmplY3Q7Ci1jbGFzcyBTY3JpcHRPYmpl
Y3Q7CiAKIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlciB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBA
IC02OSw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOwogCiAgICAgU3RyaW5nIGluamVjdGVkU2Ny
aXB0U291cmNlKCk7Ci0gICAgU2NyaXB0T2JqZWN0IGNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0
IFN0cmluZyYgc291cmNlLCBKU0M6OkV4ZWNTdGF0ZSosIGludCBpZCk7CisgICAgRGVwcmVjYXRl
ZDo6U2NyaXB0T2JqZWN0IGNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNl
LCBKU0M6OkV4ZWNTdGF0ZSosIGludCBpZCk7CiAKICAgICBzdGF0aWMgYm9vbCBjYW5BY2Nlc3NJ
bnNwZWN0ZWRXaW5kb3coSlNDOjpFeGVjU3RhdGUqKTsKICAgICBzdGF0aWMgYm9vbCBjYW5BY2Nl
c3NJbnNwZWN0ZWRXb3JrZXJHbG9iYWxTY29wZShKU0M6OkV4ZWNTdGF0ZSopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAKaW5kZXggZGIy
MDc3OS4uMmQ2OTI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0TW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRNb2R1bGUuY3BwCkBAIC0zNyw3ICszNyw5IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRT
Y3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKICNpbmNsdWRlICJT
Y3JpcHRGdW5jdGlvbkNhbGwuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRl
IDxiaW5kaW5ncy9TY3JpcHRPYmplY3QuaD4KKwordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Nyw3ICs1OSw3IEBAIHZvaWQgSW5qZWN0ZWRT
Y3JpcHRNb2R1bGU6OmVuc3VyZUluamVjdGVkKEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0
ZWRTY3JpcHRNCiAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0
LmluamVjdGVkU2NyaXB0T2JqZWN0KCksICJtb2R1bGUiKTsKICAgICBmdW5jdGlvbi5hcHBlbmRB
cmd1bWVudChuYW1lKCkpOwogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgU2Ny
aXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBpbmplY3RlZFNjcmlwdC5jYWxsRnVuY3Rpb25XaXRoRXZh
bEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUgcmVzdWx0VmFsdWUgPSBpbmplY3RlZFNjcmlwdC5jYWxsRnVuY3Rpb25XaXRoRXZhbEVu
YWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CiAgICAgQVNTRVJUKCFoYWRFeGNlcHRpb24p
OwogICAgIGlmIChoYWRFeGNlcHRpb24gfHwgcmVzdWx0VmFsdWUuaGFzTm9WYWx1ZSgpIHx8ICFy
ZXN1bHRWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5j
dGlvbihpbmplY3RlZFNjcmlwdC5pbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiaW5qZWN0TW9kdWxl
Iik7CkBAIC03MCw3ICs3Miw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRNb2R1bGU6OmVuc3VyZUlu
amVjdGVkKEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNCiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBTY3JpcHRPYmplY3QgbW9kdWxlT2JqZWN0KHNjcmlwdFN0YXRlLCByZXN1
bHRWYWx1ZSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IG1vZHVsZU9iamVjdChzY3Jp
cHRTdGF0ZSwgcmVzdWx0VmFsdWUpOwogICAgIGluaXRpYWxpemUobW9kdWxlT2JqZWN0LCBpbmpl
Y3RlZFNjcmlwdE1hbmFnZXItPmluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2soKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCmluZGV4IGVhN2I0MjAu
LjJhMTNjMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNw
cApAQCAtNDIsMjMgKzQyLDI0IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgog
I2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5z
dHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIlBh
Z2UuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJTY3JpcHRDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCi0jaW5jbHVkZSAiU2Ny
aXB0T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0
aW5ncy5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAordXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbnNwZWN0b3JBZ2Vu
dDo6SW5zcGVjdG9yQWdlbnQoUGFnZSogcGFnZSwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmpl
Y3RlZFNjcmlwdE1hbmFnZXIsIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJJbnNwZWN0b3IiKSwg
aW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVy
YWwoIkluc3BlY3RvciIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9pbnNwZWN0ZWRQ
YWdlKHBhZ2UpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1h
bmFnZXIpCiAgICAgLCBtX2VuYWJsZWQoZmFsc2UpCkBAIC05Myw3ICs5NCw3IEBAIHZvaWQgSW5z
cGVjdG9yQWdlbnQ6OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSogZnJhbWUsIERP
TVdyYXBwZXJXb3JsZCYKICAgICBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChzY3JpcHRT
b3VyY2UudG9TdHJpbmcoKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQWdlbnQ6OmRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5l
bCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJ
bnNwZWN0b3JBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9ySW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVy
Pihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKaW5kZXggZmI0YmQy
NS4uMjk5ZGZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgK
QEAgLTMwLDExICszMCwxNyBAQAogI2lmbmRlZiBJbnNwZWN0b3JBZ2VudF9oCiAjZGVmaW5lIElu
c3BlY3RvckFnZW50X2gKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1
ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3Rvcldl
YkFnZW50QmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAorbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFzcyBJbnNwZWN0b3JPYmplY3Q7Cit9
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwpAQCAtNDIs
MTMgKzQ4LDEyIEBAIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBJ
bmplY3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBJbnNwZWN0b3JJbnNwZWN0b3JGcm9udGVuZERp
c3BhdGNoZXI7Ci1jbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdl
bnRzOwogY2xhc3MgUGFnZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNz
IEluc3BlY3RvckFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3Bl
Y3Rvckluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JB
Z2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKElu
c3BlY3RvckFnZW50KTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JB
Z2VudD4gY3JlYXRlKFBhZ2UqIHBhZ2UsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLCBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQpA
QCAtNjQsNyArNjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsK
ICAgICB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwog
CiAgICAgdm9pZCBkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUqLCBET01XcmFwcGVy
V29ybGQmKTsKQEAgLTc5LDcgKzg0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRJbmplY3Rl
ZFNjcmlwdEZvck9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2UpOwogCi0gICAgdm9pZCBpbnNwZWN0KFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6
OlJlbW90ZU9iamVjdD4gb2JqZWN0VG9JbnNwZWN0LCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gaGludHMpOworICAgIHZvaWQgaW5zcGVjdChQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q+IG9iamVjdFRvSW5zcGVjdCwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdD4gaGludHMpOwogCiBwcml2YXRlOgogICAgIEluc3BlY3RvckFnZW50
KFBhZ2UqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnN0cnVtZW50aW5nQWdlbnRzKik7CkBA
IC05MCw3ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlcjsKIAogICAgIFZlY3RvcjxwYWlyPGxvbmcsIFN0cmluZz4+IG1f
cGVuZGluZ0V2YWx1YXRlVGVzdENvbW1hbmRzOwotICAgIHBhaXI8UmVmUHRyPFR5cGVCdWlsZGVy
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Pj4gbV9wZW5k
aW5nSW5zcGVjdERhdGE7CisgICAgcGFpcjxSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJl
bW90ZU9iamVjdD4sIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4+IG1fcGVuZGlu
Z0luc3BlY3REYXRhOwogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1faW5qZWN0ZWRTY3Jp
cHRGb3JPcmlnaW47CiAKICAgICBib29sIG1fZW5hYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwCmluZGV4IDI2M2JkZDkuLjUzMDBkOTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcApAQCAt
MzcsOSArMzcsNyBAQAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAiCiAjaW5j
bHVkZSAiSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwIgogI2luY2x1ZGUgIkluc3BlY3RvckFnZW50
LmNwcCIKLSNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwIgotI2luY2x1ZGUgIkluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmNwcCIKICNpbmNsdWRlICJJbnNwZWN0b3JDU1NBZ2VudC5jcHAiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwIgogI2luY2x1ZGUgIkluc3BlY3RvckNs
aWVudC5jcHAiCkBAIC03MCw3ICs2OCw2IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yU3R5bGVTaGVl
dC5jcHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9yU3R5bGVUZXh0RWRpdG9yLmNwcCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMu
Y3BwIgogI2luY2x1ZGUgIkluc3BlY3RvcldvcmtlckFnZW50LmNwcCIKICNpbmNsdWRlICJJbnN0
cnVtZW50aW5nQWdlbnRzLmNwcCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQuY3BwCmluZGV4IDA0Y2M1M2EuLmJhNDY2NTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQuY3BwCkBAIC0zNiwyMSArMzYsMjMgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JBZ2Vu
dC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
UGFnZUFnZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5z
dHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRl
IDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50OjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQpCi0gICAg
OiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJBcHBsaWNhdGlvbkNhY2hlIiksIGlu
c3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFs
KCJBcHBsaWNhdGlvbkNhY2hlIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX3BhZ2VB
Z2VudChwYWdlQWdlbnQpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlz
cGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZy
b250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRj
aGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwp
OwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNo
ZUFnZW50LmgKaW5kZXggZWIwNmM4Zi4uM2UyNGUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaApAQCAt
MjgsMjcgKzI4LDMwIEBACiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAogI2luY2x1ZGUgIkFwcGxp
Y2F0aW9uQ2FjaGVIb3N0LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5j
bHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
RnJvbnRlbmQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCituYW1l
c3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNzIEluc3BlY3Rvck9iamVjdDsKK2NsYXNzIEluc3BlY3Rv
clZhbHVlOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lOwotY2xhc3Mg
SW5zcGVjdG9yQXJyYXk7CiBjbGFzcyBJbnNwZWN0b3JBZ2VudDsKIGNsYXNzIEluc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNoZXI7Ci1jbGFzcyBJbnNwZWN0b3JPYmplY3Q7
CiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0b3JWYWx1ZTsKIGNsYXNz
IEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIElu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2Us
IHB1YmxpYyBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093
blB0cjxJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2Vu
dCkKQEAgLTU3LDE1ICs2MCwxMiBAQCBwdWJsaWM6CiAgICAgfQogICAgIH5JbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQoKSB7IH0KIAotICAgIC8vIEluc3BlY3RvckJhc2VBZ2VudAotICAg
IHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZCgpIE9WRVJSSURFOwogCi0gICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uIEFQSQog
ICAgIHZvaWQgdXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1cyhGcmFtZSopOwogICAgIHZvaWQg
bmV0d29ya1N0YXRlQ2hhbmdlZCgpOwogCi0gICAgLy8gQXBwbGljYXRpb25DYWNoZSBBUEkgZm9y
IEluc3BlY3RvckZyb250ZW5kCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyop
OwogICAgIHZpcnR1YWwgdm9pZCBnZXRGcmFtZXNXaXRoTWFuaWZlc3RzKEVycm9yU3RyaW5nKiwg
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6
RnJhbWVXaXRoTWFuaWZlc3Q+PiYgcmVzdWx0KTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0TWFuaWZl
c3RGb3JGcmFtZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgU3RyaW5nKiBt
YW5pZmVzdFVSTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0Fn
ZW50LmNwcAppbmRleCBiYjE3YzY1Li42NjEwN2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTQ0LDcgKzQ0LDYgQEAKICNpbmNsdWRl
ICJJbnNwZWN0b3JET01BZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckhpc3RvcnkuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVl
cy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJOYW1lZEZs
b3dDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgpAQCAtNTcsNyArNTYsNyBAQAogI2lu
Y2x1ZGUgIlN0eWxlUnVsZS5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRMaXN0LmgiCiAjaW5jbHVk
ZSAiV2ViS2l0TmFtZWRGbG93LmgiCi0KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFs
dWVzLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBAIC02NSw2ICs2NCw4IEBACiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRl
Lmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogZW51bSBGb3JjZVBzZXVkb0NsYXNzRmxhZ3MgewpAQCAtNjE2LDcgKzYxNyw3IEBAIENTU1N0
eWxlUnVsZSogSW5zcGVjdG9yQ1NTQWdlbnQ6OmFzQ1NTU3R5bGVSdWxlKENTU1J1bGUqIHJ1bGUp
CiB9CiAKIEluc3BlY3RvckNTU0FnZW50OjpJbnNwZWN0b3JDU1NBZ2VudChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQp
Ci0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJDU1MiKSwgaW5zdHJ1bWVu
dGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkNTUyIp
LCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9kb21BZ2VudChkb21BZ2VudCkKICAgICAs
IG1fbGFzdFN0eWxlU2hlZXRJZCgxKQogewpAQCAtNjI5LDcgKzYzMCw3IEBAIEluc3BlY3RvckNT
U0FnZW50Ojp+SW5zcGVjdG9yQ1NTQWdlbnQoKQogICAgIHJlc2V0KCk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
IGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9u
dGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hl
cikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yQ1NTRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2Vu
ZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JDU1NCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tl
bmREaXNwYXRjaGVyLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNTU0FnZW50LmgKaW5kZXggOWQzYjQwZC4uZWEwZWIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKQEAgLTI3LDEyICsyNywxMiBAQAogCiAjaW5j
bHVkZSAiQ1NTU2VsZWN0b3IuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIK
LSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgogI2luY2x1
ZGUgIkluc3BlY3RvclN0eWxlU2hlZXQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIK
KyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRlICJTZWN1cml0eUNv
bnRleHQuaCIKLQorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTY0LDcgKzY0LDcgQEAgY2xhc3MgQ2hhbmdlUmVnaW9uT3Zl
cnNldFRhc2s7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAogY2xhc3MgSW5zcGVjdG9yQ1NTQWdl
bnQKLSAgICA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQKKyAgICA6IHB1YmxpYyBJbnNwZWN0
b3JBZ2VudEJhc2UKICAgICAsIHB1YmxpYyBJbnNwZWN0b3JET01BZ2VudDo6RE9NTGlzdGVuZXIK
ICAgICAsIHB1YmxpYyBJbnNwZWN0b3JDU1NCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKICAgICAs
IHB1YmxpYyBJbnNwZWN0b3JTdHlsZVNoZWV0OjpMaXN0ZW5lciB7CkBAIC05Niw3ICs5Niw3IEBA
IHB1YmxpYzoKICAgICB+SW5zcGVjdG9yQ1NTQWdlbnQoKTsKIAogICAgIGJvb2wgZm9yY2VQc2V1
ZG9TdGF0ZShFbGVtZW50KiwgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUpOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkQWdlbnQoKTsKICAgICB2aXJ0dWFsIHZv
aWQgZW5hYmxlKEVycm9yU3RyaW5nKik7CkBAIC0xMTksMTMgKzExOSwxMyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGdldFN0eWxlU2hlZXQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcm
IHN0eWxlU2hlZXRJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5
PiYgcmVzdWx0KTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0U3R5bGVTaGVldFRleHQoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgU3RyaW5nKiByZXN1bHQpOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYg
c3R5bGVTaGVldElkLCBjb25zdCBTdHJpbmcmIHRleHQpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRT
dHlsZVRleHQoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgc3R5
bGVJZCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5
bGU+JiByZXN1bHQpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9wZXJ0eVRleHQoRXJyb3JTdHJp
bmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgc3R5bGVJZCwgaW50IHByb3BlcnR5
SW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBvdmVyd3JpdGUsIFJlZlB0cjxUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NTdHlsZT4mIHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2b2lkIHRvZ2dsZVBy
b3BlcnR5KEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHN0eWxl
SWQsIGludCBwcm9wZXJ0eUluZGV4LCBib29sIGRpc2FibGUsIFJlZlB0cjxUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NTdHlsZT4mIHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldFJ1bGVTZWxlY3Rv
cihFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBydWxlSWQsIGNv
bnN0IFN0cmluZyYgc2VsZWN0b3IsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiYg
cmVzdWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U3R5bGVUZXh0KEVycm9yU3RyaW5nKiwgY29u
c3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgc3R5bGVJZCwgY29uc3QgU3Ry
aW5nJiB0ZXh0LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9wZXJ0eVRleHQoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBzdHlsZUlkLCBpbnQgcHJvcGVydHlJbmRl
eCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIG92ZXJ3cml0ZSwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlUHJvcGVy
dHkoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
JiBzdHlsZUlkLCBpbnQgcHJvcGVydHlJbmRleCwgYm9vbCBkaXNhYmxlLCBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCBzZXRSdWxl
U2VsZWN0b3IoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+JiBydWxlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIFJlZlB0cjxUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkUnVsZShFcnJv
clN0cmluZyosIGludCBjb250ZXh0Tm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCk7CiAgICAgdmlydHVhbCB2b2lk
IGdldFN1cHBvcnRlZENTU1Byb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5SW5mbz4+JiByZXN1bHQpOwot
ICAgIHZpcnR1YWwgdm9pZCBmb3JjZVBzZXVkb1N0YXRlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJ
ZCwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgZm9yY2VkUHNldWRvQ2xhc3Nlcyk7Cisg
ICAgdmlydHVhbCB2b2lkIGZvcmNlUHNldWRvU3RhdGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlk
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mIGZvcmNlZFBzZXVkb0Ns
YXNzZXMpOwogICAgIHZpcnR1YWwgdm9pZCBnZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3Ry
aW5nKiwgaW50IGRvY3VtZW50Tm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVC
dWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4+JiByZXN1bHQpOwogCiAgICAgdmlydHVhbCB2b2lkIHN0
YXJ0U2VsZWN0b3JQcm9maWxlcihFcnJvclN0cmluZyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKaW5kZXggZjlmNzJmMi4uMDM2MDNi
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0Fn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdl
bnQuY3BwCkBAIC00Nyw5ICs0Nyw5IEBACiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVk
ZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0
LmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5o
IgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgogCiB1c2luZyBXZWJDb3JlOjpU
eXBlQnVpbGRlcjo6QXJyYXk7CiB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpS
ZXNvdXJjZUlkOwpAQCAtNTksMTAgKzU5LDEyIEBAIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVy
OjpDYW52YXM6OlRyYWNlTG9nOwogdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6
VHJhY2VMb2dJZDsKIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpGcmFtZUlk
OwogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IEluc3BlY3RvckNhbnZhc0FnZW50OjpJbnNwZWN0b3JDYW52YXNBZ2VudChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2Vu
dCwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgOiBJ
bnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJDYW52YXMiKSwgaW5zdHJ1bWVudGluZ0Fn
ZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkNhbnZhcyIpLCBp
bnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQogICAgICwg
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9l
bmFibGVkKGZhbHNlKQpAQCAtNzMsNyArNzUsNyBAQCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6fklu
c3BlY3RvckNhbnZhc0FnZW50KCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJv
bnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNo
ZXIpCit2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1f
ZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JDYW52YXNGcm9u
dGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hl
ciA9IEluc3BlY3RvckNhbnZhc0JhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3Bh
dGNoZXIsIHRoaXMpOwpAQCAtMTc4LDI3ICsxODAsMjcgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNB
Z2VudDo6Z2V0UmVzb3VyY2VTdGF0ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFRy
YWMKICAgICAgICAgbW9kdWxlLnJlc291cmNlU3RhdGUoZXJyb3JTdHJpbmcsIHRyYWNlTG9nSWQs
IHJlc291cmNlSWQsICZyZXN1bHQpOwogfQogCi1TY3JpcHRPYmplY3QgSW5zcGVjdG9yQ2FudmFz
QWdlbnQ6OndyYXBDYW52YXMyRFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24oY29u
c3QgU2NyaXB0T2JqZWN0JiBjb250ZXh0KQorRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IEluc3Bl
Y3RvckNhbnZhc0FnZW50Ojp3cmFwQ2FudmFzMkRSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVu
dGF0aW9uKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgY29udGV4dCkKIHsKICAgICBF
cnJvclN0cmluZyBlcnJvcjsKICAgICBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZSBtb2R1bGUg
PSBpbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZSgmZXJyb3IsIGNvbnRleHQpOwogICAgIGlmICht
b2R1bGUuaGFzTm9WYWx1ZSgpKQotICAgICAgICByZXR1cm4gU2NyaXB0T2JqZWN0KCk7CisgICAg
ICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QoKTsKICAgICByZXR1cm4gbm90aWZ5
UmVuZGVyaW5nQ29udGV4dFdhc1dyYXBwZWQobW9kdWxlLndyYXBDYW52YXMyRENvbnRleHQoY29u
dGV4dCkpOwogfQogCiAjaWYgRU5BQkxFKFdFQkdMKQotU2NyaXB0T2JqZWN0IEluc3BlY3RvckNh
bnZhc0FnZW50Ojp3cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKGNv
bnN0IFNjcmlwdE9iamVjdCYgZ2xDb250ZXh0KQorRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IElu
c3BlY3RvckNhbnZhc0FnZW50Ojp3cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVu
dGF0aW9uKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgZ2xDb250ZXh0KQogewogICAg
IEVycm9yU3RyaW5nIGVycm9yOwogICAgIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlIG1vZHVs
ZSA9IGluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlKCZlcnJvciwgZ2xDb250ZXh0KTsKICAgICBp
ZiAobW9kdWxlLmhhc05vVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIFNjcmlwdE9iamVjdCgpOwor
ICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KCk7CiAgICAgcmV0dXJuIG5v
dGlmeVJlbmRlcmluZ0NvbnRleHRXYXNXcmFwcGVkKG1vZHVsZS53cmFwV2ViR0xDb250ZXh0KGds
Q29udGV4dCkpOwogfQogI2VuZGlmCiAKLVNjcmlwdE9iamVjdCBJbnNwZWN0b3JDYW52YXNBZ2Vu
dDo6bm90aWZ5UmVuZGVyaW5nQ29udGV4dFdhc1dyYXBwZWQoY29uc3QgU2NyaXB0T2JqZWN0JiB3
cmFwcGVkQ29udGV4dCkKK0RlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBJbnNwZWN0b3JDYW52YXNB
Z2VudDo6bm90aWZ5UmVuZGVyaW5nQ29udGV4dFdhc1dyYXBwZWQoY29uc3QgRGVwcmVjYXRlZDo6
U2NyaXB0T2JqZWN0JiB3cmFwcGVkQ29udGV4dCkKIHsKICAgICBBU1NFUlQobV9mcm9udGVuZERp
c3BhdGNoZXIpOwogICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9IHdyYXBwZWRDb250
ZXh0LnNjcmlwdFN0YXRlKCk7CkBAIC0yMjQsMTMgKzIyNiwxMyBAQCBJbmplY3RlZFNjcmlwdENh
bnZhc01vZHVsZSBJbnNwZWN0b3JDYW52YXNBZ2VudDo6aW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1
bGUoRXJybwogICAgIHJldHVybiBtb2R1bGU7CiB9CiAKLUluamVjdGVkU2NyaXB0Q2FudmFzTW9k
dWxlIEluc3BlY3RvckNhbnZhc0FnZW50OjppbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZShFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFNjcmlwdE9iamVjdCYgc2NyaXB0T2JqZWN0KQor
SW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmluamVjdGVk
U2NyaXB0Q2FudmFzTW9kdWxlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0T2JqZWN0JiBzY3JpcHRPYmplY3QpCiB7CiAgICAgaWYgKCFjaGVja0lzRW5h
YmxlZChlcnJvclN0cmluZykpCiAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdENhbnZhc01v
ZHVsZSgpOwogICAgIGlmIChzY3JpcHRPYmplY3QuaGFzTm9WYWx1ZSgpKSB7CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJy
b3I6IG9yaWdpbmFsIFNjcmlwdE9iamVjdCBoYXMgbm8gdmFsdWUiOworICAgICAgICAqZXJyb3JT
dHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IG9yaWdpbmFsIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVj
dCBoYXMgbm8gdmFsdWUiOwogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1
bGUoKTsKICAgICB9CiAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlKGVycm9y
U3RyaW5nLCBzY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCmluZGV4IDQ5ZDAzZTguLjRmMTg3YTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5o
CkBAIC0zMywxNSArMzMsMjAgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRl
ICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvclR5cGVCdWlsZGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAj
aW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIERlcHJlY2F0ZWQgeworY2xh
c3MgU2NyaXB0T2JqZWN0OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1l
OwpAQCAtNDksMTEgKzU0LDEwIEBAIGNsYXNzIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOwog
Y2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50Owog
Y2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKLWNsYXNzIFNjcmlwdE9iamVjdDsKIAogdHlwZWRl
ZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckNhbnZhc0FnZW50IDogcHVi
bGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3RvckNhbnZhc0JhY2tlbmREaXNw
YXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JDYW52YXNBZ2VudCA6IHB1YmxpYyBJbnNw
ZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JDYW52YXNCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckNhbnZhc0Fn
ZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5z
cGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKQogICAgIHsKQEAgLTYxLDcgKzY1LDcgQEAgcHVibGljOgogICAgIH0K
ICAgICB+SW5zcGVjdG9yQ2FudmFzQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwg
SW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAg
ICAgdm9pZCBmcmFtZU5hdmlnYXRlZChGcmFtZSopOwpAQCAtNjksOSArNzMsOSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBkaWRCZWdpbkZyYW1lKCk7CiAKICAgICAvLyBDYWxsZWQgZnJvbSBJbnNwZWN0
b3JDYW52YXNJbnN0cnVtZW50YXRpb24uCi0gICAgU2NyaXB0T2JqZWN0IHdyYXBDYW52YXMyRFJl
bmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24oY29uc3QgU2NyaXB0T2JqZWN0Jik7Cisg
ICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IHdyYXBDYW52YXMyRFJlbmRlcmluZ0NvbnRleHRG
b3JJbnN0cnVtZW50YXRpb24oY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0Jik7CiAjaWYg
RU5BQkxFKFdFQkdMKQotICAgIFNjcmlwdE9iamVjdCB3cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0
Rm9ySW5zdHJ1bWVudGF0aW9uKGNvbnN0IFNjcmlwdE9iamVjdCYpOworICAgIERlcHJlY2F0ZWQ6
OlNjcmlwdE9iamVjdCB3cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9u
KGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYpOwogI2VuZGlmCiAKICAgICAvLyBDYWxs
ZWQgZnJvbSB0aGUgZnJvbnQtZW5kLgpAQCAtOTEsMTIgKzk1LDEyIEBAIHByaXZhdGU6CiAgICAg
SW5zcGVjdG9yQ2FudmFzQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclBhZ2VB
Z2VudCosIEluamVjdGVkU2NyaXB0TWFuYWdlciopOwogCiAgICAgSW5qZWN0ZWRTY3JpcHRDYW52
YXNNb2R1bGUgaW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUoRXJyb3JTdHJpbmcqLCBKU0M6OkV4
ZWNTdGF0ZSopOwotICAgIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlIGluamVjdGVkU2NyaXB0
Q2FudmFzTW9kdWxlKEVycm9yU3RyaW5nKiwgY29uc3QgU2NyaXB0T2JqZWN0Jik7CisgICAgSW5q
ZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUgaW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUoRXJyb3JT
dHJpbmcqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmKTsKICAgICBJbmplY3RlZFNj
cmlwdENhbnZhc01vZHVsZSBpbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZShFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYpOwogCiAgICAgdm9pZCBmaW5kRnJhbWVzV2l0aFVuaW5zdHJ1bWVudGVk
Q2FudmFzZXMoKTsKICAgICBib29sIGNoZWNrSXNFbmFibGVkKEVycm9yU3RyaW5nKikgY29uc3Q7
Ci0gICAgU2NyaXB0T2JqZWN0IG5vdGlmeVJlbmRlcmluZ0NvbnRleHRXYXNXcmFwcGVkKGNvbnN0
IFNjcmlwdE9iamVjdCYpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBub3RpZnlSZW5k
ZXJpbmdDb250ZXh0V2FzV3JhcHBlZChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmKTsK
IAogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CiAgICAgSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNJbnN0cnVtZW50YXRpb24uaAppbmRl
eCBkM2ZkYTYwLi4wMTUwYzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzSW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNhbnZhc0luc3RydW1lbnRhdGlvbi5oCkBAIC0zNCwxMSArMzQsMTEg
QEAKICNpbmNsdWRlICJJbnNwZWN0b3JDYW52YXNBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKLSNp
bmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3Qu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TY3JpcHRPYmplY3QgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3cmFwQ2FudmFzMkRSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9u
KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU2NyaXB0T2JqZWN0JiBjb250ZXh0KQorRGVwcmVj
YXRlZDo6U2NyaXB0T2JqZWN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d3JhcENhbnZhczJE
UmVuZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlvbihEb2N1bWVudCogZG9jdW1lbnQsIGNv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgY29udGV4dCkKIHsKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
ID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkgewpAQCAtNDksMTEg
KzQ5LDExIEBAIFNjcmlwdE9iamVjdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndyYXBDYW52
YXMyRFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50CiAgICAgVU5VU0VEX1BBUkFNKGRvY3Vt
ZW50KTsKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CiAjZW5kaWYKLSAgICByZXR1cm4gU2Ny
aXB0T2JqZWN0KCk7CisgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCgpOwogfQog
CiAjaWYgRU5BQkxFKFdFQkdMKQotU2NyaXB0T2JqZWN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d3JhcFdlYkdMUmVuZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlvbihEb2N1bWVudCog
ZG9jdW1lbnQsIGNvbnN0IFNjcmlwdE9iamVjdCYgZ2xDb250ZXh0KQorRGVwcmVjYXRlZDo6U2Ny
aXB0T2JqZWN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d3JhcFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEZvckluc3RydW1lbnRhdGlvbihEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IERlcHJlY2F0
ZWQ6OlNjcmlwdE9iamVjdCYgZ2xDb250ZXh0KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAg
ICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKSB7CkBAIC02NCw3ICs2NCw3IEBAIFNj
cmlwdE9iamVjdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndyYXBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRGb3JJbnN0cnVtZW50YXRpCiAgICAgVU5VU0VEX1BBUkFNKGRvY3VtZW50KTsKICAgICBV
TlVTRURfUEFSQU0oZ2xDb250ZXh0KTsKICNlbmRpZgotICAgIHJldHVybiBTY3JpcHRPYmplY3Qo
KTsKKyAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KCk7CiB9CiAjZW5kaWYgLy8g
RU5BQkxFKFdFQkdMKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGll
bnQuY3BwCmluZGV4IGM2NzIxNDIuLmMzM2U2YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDbGllbnQuY3BwCkBAIC0zOCw3ICszOCw5IEBACiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTb3Vy
Y2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9T
Y3JpcHRWYWx1ZS5oPgorCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaApp
bmRleCA0NGU3ZWExNmEuLmRmMzg5ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ2xpZW50LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgSW5zcGVjdG9yQ2xpZW50
X2gKICNkZWZpbmUgSW5zcGVjdG9yQ2xpZW50X2gKIAorI2luY2x1ZGUgIkluc3BlY3RvckZvcndh
cmRpbmcuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTM0LDcgKzM1LDYgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKLWNsYXNzIEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgUGFnZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcAppbmRleCBk
YWE5YzViLi5kZTE2ZjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29uc29sZUFnZW50LmNwcApAQCAtNDMsMTQgKzQzLDE2IEBACiAjaW5jbHVkZSAiU2Ny
aXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNp
bmNsdWRlICJTY3JpcHRQcm9maWxlci5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVj
dC5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAordXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgbWF4aW11bUNvbnNvbGVNZXNzYWdlcyA9IDEwMDA7CkBAIC01OSw3ICs2MSw3IEBA
IHN0YXRpYyBjb25zdCBpbnQgZXhwaXJlQ29uc29sZU1lc3NhZ2VzU3RlcCA9IDEwMDsKIGludCBJ
bnNwZWN0b3JDb25zb2xlQWdlbnQ6OnNfZW5hYmxlZEFnZW50Q291bnQgPSAwOwogCiBJbnNwZWN0
b3JDb25zb2xlQWdlbnQ6Okluc3BlY3RvckNvbnNvbGVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2Ny
aXB0TWFuYWdlcikKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIkNvbnNv
bGUiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJ
SUxpdGVyYWwoIkNvbnNvbGUiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1fcHJldmlvdXNN
ZXNzYWdlKDApCiAgICAgLCBtX2V4cGlyZWRDb25zb2xlTWVzc2FnZUNvdW50KDApCkBAIC0xMjIs
NyArMTI0LDcgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OnJlc2V0KCkKICAgICBtX2Nv
dW50cy5jbGVhcigpOwogfQogCi12b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6ZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFu
bmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lk
IEluc3BlY3RvckNvbnNvbGVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5k
RGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQ29uc29sZUZyb250ZW5kRGlz
cGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5z
cGVjdG9yQ29uc29sZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIs
IHRoaXMpOwpAQCAtMzIwLDcgKzMyMiw3IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojph
ZGRDb25zb2xlTWVzc2FnZShQYXNzT3duUHRyPENvbnNvbGVNZXNzYWdlPiBjb25zb2xlCiBjbGFz
cyBJbnNwZWN0YWJsZUhlYXBPYmplY3QgOiBwdWJsaWMgSW5qZWN0ZWRTY3JpcHRIb3N0OjpJbnNw
ZWN0YWJsZU9iamVjdCB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgSW5zcGVjdGFibGVIZWFwT2Jq
ZWN0KGludCBoZWFwT2JqZWN0SWQpIDogbV9oZWFwT2JqZWN0SWQoaGVhcE9iamVjdElkKSB7IH0K
LSAgICB2aXJ0dWFsIFNjcmlwdFZhbHVlIGdldChKU0M6OkV4ZWNTdGF0ZSopCisgICAgdmlydHVh
bCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBnZXQoSlNDOjpFeGVjU3RhdGUqKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIFNjcmlwdFByb2ZpbGVyOjpvYmplY3RCeUhlYXBPYmplY3RJZChtX2hlYXBP
YmplY3RJZCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnNvbGVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnNvbGVBZ2VudC5oCmluZGV4IGMwZjBhZGMuLjk5NDU1Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKQEAgLTI5LDggKzI5LDkg
QEAKIAogI2luY2x1ZGUgIkNvbnNvbGVBUElUeXBlcy5oIgogI2luY2x1ZGUgIkNvbnNvbGVUeXBl
cy5oIgotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisj
aW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUu
aCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBA
IC01Miw3ICs1Myw3IEBAIGNsYXNzIFNjcmlwdFByb2ZpbGU7CiAKIHR5cGVkZWYgU3RyaW5nIEVy
cm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JDb25zb2xlQWdlbnQgOiBwdWJsaWMgSW5zcGVj
dG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yQ29uc29sZUJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlciB7CitjbGFzcyBJbnNwZWN0b3JDb25zb2xlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdl
bnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yQ29uc29sZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQ29uc29sZUFnZW50KTsKIHB1Ymxp
YzoKICAgICBJbnNwZWN0b3JDb25zb2xlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluamVj
dGVkU2NyaXB0TWFuYWdlciopOwpAQCAtNjQsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBl
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CiAgICAgdm9pZCByZXNldCgpOwog
Ci0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVz
c2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCBKU0M6OkV4ZWNTdGF0ZSosIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiwgdW5zaWdu
ZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciA9IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGUyM2ZlMDcuLjQzNzc1ODAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
QEAgLTQyLDcgKzQyLDYgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudC5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVycy5oIgotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckNTU0FnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2FudmFzQWdl
bnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQuaCIKQEAgLTcxLDggKzcwLDEwIEBACiAj
aW5jbHVkZSAiUGFnZURlYnVnZ2VyQWdlbnQuaCIKICNpbmNsdWRlICJQYWdlUnVudGltZUFnZW50
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmgKaW5kZXggYTZlMmQ3ZC4uZjZlNmQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0zMywxMyArMzMsMTggQEAKIAogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgiCi0jaW5j
bHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3Rv
ckFnZW50UmVnaXN0cnkuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVj
dG9yT2JqZWN0OworY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOworY2xhc3MgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
RE9NV3JhcHBlcldvcmxkOwpAQCAtNDgsMTUgKzUzLDEyIEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4
dDsKIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKIGNsYXNzIEluc3BlY3RvckFnZW50Owog
Y2xhc3MgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OwotY2xhc3MgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JE
T01BZ2VudDsKIGNsYXNzIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ7CiBjbGFzcyBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OwotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogY2xhc3Mg
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JNZW1vcnlBZ2VudDsKLWNs
YXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3BlY3Rvck92ZXJsYXk7CiBjbGFzcyBJbnNw
ZWN0b3JQYWdlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JQcm9maWxlckFnZW50OwpAQCAtOTUsNyAr
OTcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNMb2NhbEZyb250ZW5kKCkgY29uc3Q7CiAgICAg
Ym9vbCBoYXNSZW1vdGVGcm9udGVuZCgpIGNvbnN0OwogCi0gICAgdm9pZCBjb25uZWN0RnJvbnRl
bmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKik7CisgICAgdm9pZCBjb25uZWN0RnJvbnRlbmQo
SW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKTsKICAgICB2b2lkIGRpc2Nvbm5l
Y3RGcm9udGVuZCgpOwogICAgIHZvaWQgc2V0UHJvY2Vzc0lkKGxvbmcpOwogCkBAIC0xMTEsNyAr
MTEzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRJbmRpY2F0aW5nKGJvb2wpOwogCi0gICAg
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2Rl
KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gYnVp
bGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGUoKSBjb25zdDsKIAogICAgIGJvb2wgaXNVbmRlclRl
c3QoKTsKICAgICB2b2lkIGV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQobG9uZyBjYWxsSWQsIGNv
bnN0IFN0cmluZyYgc2NyaXB0KTsKQEAgLTE1NCwxMiArMTU2LDEyIEBAIHByaXZhdGU6CiAgICAg
SW5zcGVjdG9yUHJvZmlsZXJBZ2VudCogbV9wcm9maWxlckFnZW50OwogI2VuZGlmCiAKLSAgICBS
ZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1faW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+
IG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CiAgICAgT3duUHRyPEluc3BlY3RvckZyb250
ZW5kQ2xpZW50PiBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50OwotICAgIEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CisgICAgSW5zcGVjdG9yOjpJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogICAg
IFBhZ2UqIG1fcGFnZTsKICAgICBJbnNwZWN0b3JDbGllbnQqIG1faW5zcGVjdG9yQ2xpZW50Owot
ICAgIEluc3BlY3RvckFnZW50UmVnaXN0cnkgbV9hZ2VudHM7CisgICAgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JBZ2VudFJlZ2lzdHJ5IG1fYWdlbnRzOwogICAgIGJvb2wgbV9pc1VuZGVyVGVzdDsKIAog
I2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggMzcwMzQzOC4uMGNkZmJlMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xMDEsNiAr
MTAxLDggQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTIxMCw3ICsyMTIs
NyBAQCBTdHJpbmcgSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcoY29uc3QgRXhjZXB0
aW9uQ29kZSYgZWMpCiB9CiAKIEluc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudChJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdl
bnQqIHBhZ2VBZ2VudCwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFn
ZXIsIEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXksIEluc3BlY3RvckNsaWVudCogY2xpZW50KQot
ICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiRE9NIiksIGluc3RydW1lbnRp
bmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJET00iKSwg
aW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkKICAgICAs
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1f
b3ZlcmxheShvdmVybGF5KQpAQCAtMjMwLDcgKzIzMiw3IEBAIEluc3BlY3RvckRPTUFnZW50Ojp+
SW5zcGVjdG9yRE9NQWdlbnQoKQogICAgIEFTU0VSVCghbV9zZWFyY2hpbmdGb3JOb2RlKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tl
bmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0b3JET01Gcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAg
ICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckRPTUJhY2tlbmREaXNwYXRjaGVyOjpj
cmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpAQCAtMTQyMyw3ICsxNDI1LDcgQEAgUGFz
c1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpFdmVudExpc3RlbmVyPiBJbnNwZWN0b3JET01BZ2Vu
dDo6YnVpbGRPYmplY3RGb3JFdmUKICAgICBpZiAob2JqZWN0R3JvdXBJZCAmJiBoYW5kbGVyICYm
IHN0YXRlKSB7CiAgICAgICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yKHN0YXRlKTsKICAgICAgICAgaWYg
KCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCi0gICAgICAgICAgICB2YWx1ZS0+c2V0SGFu
ZGxlcihpbmplY3RlZFNjcmlwdC53cmFwT2JqZWN0KFNjcmlwdFZhbHVlKHN0YXRlLT52bSgpLCBo
YW5kbGVyKSwgKm9iamVjdEdyb3VwSWQpKTsKKyAgICAgICAgICAgIHZhbHVlLT5zZXRIYW5kbGVy
KGluamVjdGVkU2NyaXB0LndyYXBPYmplY3QoRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoc3RhdGUt
PnZtKCksIGhhbmRsZXIpLCAqb2JqZWN0R3JvdXBJZCkpOwogICAgIH0KICAgICBpZiAoIXNjcmlw
dElELmlzTnVsbCgpKSB7CiAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6Okxv
Y2F0aW9uPiBsb2NhdGlvbiA9IFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb246OmNyZWF0
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4
IGE1ZDYwYmMuLjBlZjE2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5oCkBAIC0zMywxMyArMzMsMTMgQEAKICNpbmNsdWRlICJFdmVudFRhcmdldC5o
IgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSAiSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFs
dWVzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJUaW1lci5oIgotCisjaW5jbHVkZSA8aW5zcGVjdG9yL0lu
c3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTQ5LDcgKzQ5LDEyIEBACiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5o
PgogCituYW1lc3BhY2UgRGVwcmVjYXRlZCB7CitjbGFzcyBTY3JpcHRWYWx1ZTsKK30KKwogbmFt
ZXNwYWNlIFdlYkNvcmUgeworCiBjbGFzcyBDb250YWluZXJOb2RlOwogY2xhc3MgQ2hhcmFjdGVy
RGF0YTsKIGNsYXNzIERPTUVkaXRvcjsKQEAgLTY2LDcgKzcxLDYgQEAgY2xhc3MgSW5zdHJ1bWVu
dGluZ0FnZW50czsKIGNsYXNzIE5hbWVOb2RlTWFwOwogY2xhc3MgTm9kZTsKIGNsYXNzIFJldmFs
aWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s7Ci1jbGFzcyBTY3JpcHRWYWx1ZTsKIGNsYXNzIFNoYWRv
d1Jvb3Q7CiAKIHN0cnVjdCBIaWdobGlnaHRDb25maWc7CkBAIC04OSw3ICs5Myw3IEBAIHN0cnVj
dCBFdmVudExpc3RlbmVySW5mbyB7CiAgICAgY29uc3QgRXZlbnRMaXN0ZW5lclZlY3RvciBldmVu
dExpc3RlbmVyVmVjdG9yOwogfTsKIAotY2xhc3MgSW5zcGVjdG9yRE9NQWdlbnQgOiBwdWJsaWMg
SW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yRE9NQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckRPTUFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50
QmFzZSwgcHVibGljIEluc3BlY3RvckRPTUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yRE9NQWdlbnQpOwogcHVibGljOgogICAgIHN0
cnVjdCBET01MaXN0ZW5lciB7CkBAIC0xMTAsNyArMTE0LDcgQEAgcHVibGljOgogCiAgICAgfklu
c3BlY3RvckRPTUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIFZlY3RvcjxE
b2N1bWVudCo+IGRvY3VtZW50cygpOwpAQCAtMTMwLDI4ICsxMzQsMjggQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBzZXRPdXRlckhUTUwoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25z
dCBTdHJpbmcmIG91dGVySFRNTCk7CiAgICAgdmlydHVhbCB2b2lkIHNldE5vZGVWYWx1ZShFcnJv
clN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogICAgIHZpcnR1YWwg
dm9pZCBnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBj
b25zdCBXVEY6OlN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8
VHlwZUJ1aWxkZXI6OkRPTTo6RXZlbnRMaXN0ZW5lcj4+JiBsaXN0ZW5lcnNBcnJheSk7Ci0gICAg
dmlydHVhbCB2b2lkIHBlcmZvcm1TZWFyY2goRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHdo
aXRlc3BhY2VUcmltbWVkUXVlcnksIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIG5vZGVJ
ZHMsIFN0cmluZyogc2VhcmNoSWQsIGludCogcmVzdWx0Q291bnQpOworICAgIHZpcnR1YWwgdm9p
ZCBwZXJmb3JtU2VhcmNoKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB3aGl0ZXNwYWNlVHJp
bW1lZFF1ZXJ5LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4qIG5vZGVJ
ZHMsIFN0cmluZyogc2VhcmNoSWQsIGludCogcmVzdWx0Q291bnQpOwogICAgIHZpcnR1YWwgdm9p
ZCBnZXRTZWFyY2hSZXN1bHRzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCwg
aW50IGZyb21JbmRleCwgaW50IHRvSW5kZXgsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8aW50
Pj4mKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY2FyZFNlYXJjaFJlc3VsdHMoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIHNlYXJjaElkKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZU5vZGUo
RXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCk7CiAgICAgdmly
dHVhbCB2b2lkIGdldEF0dHJpYnV0ZXMoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+JiByZXN1bHQpOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXRJbnNwZWN0TW9kZUVuYWJsZWQoRXJyb3JTdHJpbmcqLCBib29sIGVuYWJsZWQsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBoaWdobGlnaHRDb25maWcpOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRJbnNwZWN0TW9kZUVuYWJsZWQoRXJyb3JTdHJpbmcqLCBib29sIGVuYWJsZWQsIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIGhpZ2hsaWdodENvbmZpZyk7CiAg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3ROb2RlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBv
YmplY3RJZCwgaW50KiBub2RlSWQpOwogICAgIHZpcnR1YWwgdm9pZCBwdXNoTm9kZUJ5UGF0aFRv
RnJvbnRlbmQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHBhdGgsIGludCogbm9kZUlkKTsK
ICAgICB2aXJ0dWFsIHZvaWQgcHVzaE5vZGVCeUJhY2tlbmRJZFRvRnJvbnRlbmQoRXJyb3JTdHJp
bmcqLCBCYWNrZW5kTm9kZUlkLCBpbnQqIG5vZGVJZCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbGVh
c2VCYWNrZW5kTm9kZUlkcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgbm9kZUdyb3VwKTsK
ICAgICB2aXJ0dWFsIHZvaWQgaGlkZUhpZ2hsaWdodChFcnJvclN0cmluZyopOwotICAgIHZpcnR1
YWwgdm9pZCBoaWdobGlnaHRSZWN0KEVycm9yU3RyaW5nKiwgaW50IHgsIGludCB5LCBpbnQgd2lk
dGgsIGludCBoZWlnaHQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29u
c3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNl
UGFnZUNvb3JkaW5hdGVzKTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0UXVhZChFcnJvclN0
cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIHF1YWQsIGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91
dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKTsKLSAgICB2aXJ0dWFs
IHZvaWQgaGlnaGxpZ2h0Tm9kZShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+JiBoaWdobGlnaHRDb25maWcsIGNvbnN0IGludCogbm9kZUlkLCBjb25zdCBTdHJpbmcq
IG9iamVjdElkKTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0RnJhbWUoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBj
b2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvcik7CisgICAg
dmlydHVhbCB2b2lkIGhpZ2hsaWdodFJlY3QoRXJyb3JTdHJpbmcqLCBpbnQgeCwgaW50IHksIGlu
dCB3aWR0aCwgaW50IGhlaWdodCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG91
dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKTsKKyAgICB2aXJ0dWFs
IHZvaWQgaGlnaGxpZ2h0UXVhZChFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3RvckFycmF5PiYgcXVhZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4q
IG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKTsKKyAgICB2aXJ0
dWFsIHZvaWQgaGlnaGxpZ2h0Tm9kZShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdD4mIGhpZ2hsaWdodENvbmZpZywgY29uc3QgaW50KiBub2RlSWQs
IGNvbnN0IFN0cmluZyogb2JqZWN0SWQpOworICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHRGcmFt
ZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvcik7CiAKICAgICB2aXJ0dWFsIHZvaWQgbW92ZVRv
KEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgaW50IHRhcmdldE5vZGVJZCwgY29uc3QgaW50KiBh
bmNob3JOb2RlSWQsIGludCogbmV3Tm9kZUlkKTsKICAgICB2aXJ0dWFsIHZvaWQgdW5kbyhFcnJv
clN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCByZWRvKEVycm9yU3RyaW5nKik7CiAgICAgdmly
dHVhbCB2b2lkIG1hcmtVbmRvYWJsZVN0YXRlKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2
b2lkIGZvY3VzKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCk7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dEZpbGVJbnB1dEZpbGVzKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgUmVmUHRyPElu
c3BlY3RvckFycmF5PiYgZmlsZXMpOworICAgIHZpcnR1YWwgdm9pZCBzZXRGaWxlSW5wdXRGaWxl
cyhFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3RvckFycmF5PiYgZmlsZXMpOwogCiAgICAgdm9pZCBnZXRFdmVudExpc3RlbmVycyhOb2RlKiwg
VmVjdG9yPEV2ZW50TGlzdGVuZXJJbmZvPiYgbGlzdGVuZXJzQXJyYXksIGJvb2wgaW5jbHVkZUFu
Y2VzdG9ycyk7CiAKQEAgLTIxMCw4ICsyMTQsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIElu
c3BlY3RvckRPTUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdlQWdlbnQq
LCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnNwZWN0b3JPdmVybGF5KiwgSW5zcGVjdG9yQ2xp
ZW50Kik7CiAKLSAgICB2b2lkIHNldFNlYXJjaGluZ0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBib29s
IGVuYWJsZWQsIEluc3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0Q29uZmlnKTsKLSAgICBQYXNzT3du
UHRyPEhpZ2hsaWdodENvbmZpZz4gaGlnaGxpZ2h0Q29uZmlnRnJvbUluc3BlY3Rvck9iamVjdChF
cnJvclN0cmluZyosIEluc3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsK
KyAgICB2b2lkIHNldFNlYXJjaGluZ0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBib29sIGVuYWJsZWQs
IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBoaWdobGlnaHRDb25maWcpOworICAgIFBhc3NP
d25QdHI8SGlnaGxpZ2h0Q29uZmlnPiBoaWdobGlnaHRDb25maWdGcm9tSW5zcGVjdG9yT2JqZWN0
KEVycm9yU3RyaW5nKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdodEluc3Bl
Y3Rvck9iamVjdCk7CiAKICAgICAvLyBOb2RlLXJlbGF0ZWQgbWV0aG9kcy4KICAgICB0eXBlZGVm
IEhhc2hNYXA8UmVmUHRyPE5vZGU+LCBpbnQ+IE5vZGVUb0lkTWFwOwpAQCAtMjI2LDcgKzIzMCw3
IEBAIHByaXZhdGU6CiAKICAgICBib29sIGhhc0JyZWFrcG9pbnQoTm9kZSosIGludCB0eXBlKTsK
ICAgICB2b2lkIHVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhOb2RlKiByb290LCB1aW50MzJfdCBy
b290TWFzaywgYm9vbCB2YWx1ZSk7Ci0gICAgdm9pZCBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KE5v
ZGUqIHRhcmdldCwgaW50IGJyZWFrcG9pbnRUeXBlLCBib29sIGluc2VydGlvbiwgUGFzc1JlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IGRlc2NyaXB0aW9uKTsKKyAgICB2b2lkIGRlc2NyaXB0aW9uRm9y
RE9NRXZlbnQoTm9kZSogdGFyZ2V0LCBpbnQgYnJlYWtwb2ludFR5cGUsIGJvb2wgaW5zZXJ0aW9u
LCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBkZXNjcmlwdGlvbik7CiAK
ICAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpET006Ok5vZGU+IGJ1aWxkT2JqZWN0Rm9yTm9k
ZShOb2RlKiwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCopOwogICAgIFBhc3NSZWZQdHI8VHlwZUJ1
aWxkZXI6OkFycmF5PFN0cmluZz4+IGJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmlidXRlcyhFbGVt
ZW50Kik7CkBAIC0yMzcsNyArMjQxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlzY2FyZEJp
bmRpbmdzKCk7CiAKLSAgICB2b2lkIGlubmVySGlnaGxpZ2h0UXVhZChQYXNzT3duUHRyPEZsb2F0
UXVhZD4sIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3Jk
aW5hdGVzKTsKKyAgICB2b2lkIGlubmVySGlnaGxpZ2h0UXVhZChQYXNzT3duUHRyPEZsb2F0UXVh
ZD4sIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIGNvbG9yLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29sb3IsIGNvbnN0
IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcyk7CiAKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1f
cGFnZUFnZW50OwogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudC5jcHAKaW5kZXggODlmZjZlOS4uMjE2MGY2YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcApA
QCAtNDAsOCArNDAsOCBAQAogI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3Ry
dW1lbnRpbmdBZ2VudHMuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSB7CkBAIC02MSw2
ICs2MSw4IEBAIGNvbnN0IGludCBkb21CcmVha3BvaW50RGVyaXZlZFR5cGVTaGlmdCA9IDE2Owog
CiB9CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogUGFzc093blB0cjxJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50PiBJbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50OjpjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
cywgSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50LCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBk
ZWJ1Z2dlckFnZW50LCBJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQpCkBAIC02OSw3ICs3
MSw3IEBAIFBhc3NPd25QdHI8SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudD4gSW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudDo6Y3JlYXRlKEluc3RydW1lCiB9CiAKIEluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQ6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50LCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50LCBJbnNwZWN0b3JBZ2VudCopCi0gICAgOiBJbnNw
ZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJET01EZWJ1Z2dlciIpLCBpbnN0cnVtZW50aW5n
QWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiRE9NRGVidWdn
ZXIiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fZG9tQWdlbnQoZG9tQWdlbnQpCiAg
ICAgLCBtX2RlYnVnZ2VyQWdlbnQoZGVidWdnZXJBZ2VudCkKICAgICAsIG1fcGF1c2VJbk5leHRF
dmVudExpc3RlbmVyKGZhbHNlKQpAQCAtMTExLDcgKzExMyw3IEBAIHZvaWQgSW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudDo6ZGlzYWJsZSgpCiAgICAgY2xlYXIoKTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNw
YXRjaGVyKQordm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9iYWNrZW5k
RGlzcGF0Y2hlciA9IEluc3BlY3RvckRPTURlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0
ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaAppbmRleCA5NmY4OGE5Li5hM2Rh
YWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01E
ZWJ1Z2dlckFnZW50LmgKQEAgLTMzLDI2ICszMywzMCBAQAogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJ
UFRfREVCVUdHRVIpICYmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JC
YXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2Vi
QWdlbnRCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9y
T2JqZWN0OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEVsZW1lbnQ7CiBjbGFz
cyBJbnNwZWN0b3JBZ2VudDsKIGNsYXNzIEluc3BlY3RvckRPTUFnZW50OwogY2xhc3MgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDsKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3RydW1l
bnRpbmdBZ2VudHM7CiBjbGFzcyBOb2RlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsK
IAotY2xhc3MgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNl
QWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpMaXN0ZW5lciwgcHVibGljIElu
c3BlY3RvckRPTURlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6TGlzdGVuZXIsIHB1YmxpYyBJbnNwZWN0b3JET01EZWJ1
Z2dlckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCk7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25Q
dHI8SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMq
LCBJbnNwZWN0b3JET01BZ2VudCosIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqLCBJbnNwZWN0b3JB
Z2VudCopOwpAQCAtNzksNyArODMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsU2VuZFhNTEh0
dHBSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICB2b2lkIHBhdXNlT25OYXRpdmVFdmVu
dElmTmVlZGVkKGJvb2wgaXNET01FdmVudCwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUsIGJvb2wg
c3luY2hyb25vdXMpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRp
c2NhcmRBZ2VudCgpOwogCkBAIC05Myw3ICs5Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIGRpZFBhdXNlKCk7CiAgICAgdm9pZCBkaXNhYmxlKCk7CiAKLSAgICB2b2lkIGRlc2NyaXB0
aW9uRm9yRE9NRXZlbnQoTm9kZSogdGFyZ2V0LCBpbnQgYnJlYWtwb2ludFR5cGUsIGJvb2wgaW5z
ZXJ0aW9uLCBJbnNwZWN0b3JPYmplY3QqIGRlc2NyaXB0aW9uKTsKKyAgICB2b2lkIGRlc2NyaXB0
aW9uRm9yRE9NRXZlbnQoTm9kZSogdGFyZ2V0LCBpbnQgYnJlYWtwb2ludFR5cGUsIGJvb2wgaW5z
ZXJ0aW9uLCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogZGVzY3JpcHRpb24pOwogICAgIHZv
aWQgdXBkYXRlU3VidHJlZUJyZWFrcG9pbnRzKE5vZGUqLCB1aW50MzJfdCByb290TWFzaywgYm9v
bCBzZXQpOwogICAgIGJvb2wgaGFzQnJlYWtwb2ludChOb2RlKiwgaW50IHR5cGUpOwogICAgIHZv
aWQgZGlzY2FyZEJpbmRpbmdzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCmluZGV4IDY0NmRlMjMuLmFlODY3MjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQuY3BwCkBAIC00MSw3ICs0MSw2IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgot
I2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2Vu
dHMuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCkBAIC01MCwx
MyArNDksMTUgQEAKICNpbmNsdWRlICJTdG9yYWdlQXJlYS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VO
YW1lc3BhY2UuaCIKICNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKLQorI2luY2x1ZGUgPGluc3Bl
Y3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKK3VzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50OjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQp
Ci0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJET01TdG9yYWdlIiksIGlu
c3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFs
KCJET01TdG9yYWdlIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX3BhZ2VBZ2VudChw
YWdlQWdlbnQpCiAgICAgLCBtX2VuYWJsZWQoZmFsc2UpCiB7CkBAIC02OSw3ICs3MCw3IEBAIElu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6fkluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCgpCiAgICAg
bV9pbnN0cnVtZW50aW5nQWdlbnRzID0gMDsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmRE
aXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRl
bmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIp
CiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rv
ckRPTVN0b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9i
YWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckRPTVN0b3JhZ2VCYWNrZW5kRGlzcGF0Y2hlcjo6
Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaAppbmRleCAyY2QxN2IzLi4yNGQ0
NzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudC5oCkBAIC0yOSwyNyArMjksMzAgQEAKICNpZm5kZWYgSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50X2gKICNkZWZpbmUgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50X2gKIAotI2luY2x1
ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUg
IlN0b3JhZ2VBcmVhLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKK2NsYXNzIEluc3BlY3RvckFycmF5OworfQorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEZyYW1lOwotY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBjbGFzcyBJbnNw
ZWN0b3JET01TdG9yYWdlRnJvbnRlbmREaXNwYXRjaGVyOwogY2xhc3MgSW5zcGVjdG9yUGFnZUFn
ZW50OwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBTZWN1
cml0eU9yaWdpbjsKIGNsYXNzIFN0b3JhZ2U7Ci1jbGFzcyBTdG9yYWdlQXJlYTsKIAogdHlwZWRl
ZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCA6
IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JET01TdG9yYWdlQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCA6
IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JET01TdG9yYWdlQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJ
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKICAgICB7CkBA
IC01NywxNSArNjAsMTUgQEAgcHVibGljOgogICAgIH0KICAgICB+SW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIC8vIENhbGxlZCBmcm9tIHRo
ZSBmcm9udC1lbmQuCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7Ci0gICAgdmlydHVhbCB2b2lkIGdl
dERPTVN0b3JhZ2VJdGVtcyhFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+JiBzdG9yYWdlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkFy
cmF5PFN0cmluZz4+PiYgaXRlbXMpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRET01TdG9yYWdlSXRl
bShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBzdG9yYWdlSWQs
IGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKLSAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlRE9NU3RvcmFnZUl0ZW0oRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiYgc3RvcmFnZUlkLCBjb25zdCBTdHJpbmcmIGtleSk7CisgICAgdmlydHVhbCB2
b2lkIGdldERPTVN0b3JhZ2VJdGVtcyhFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdD4mIHN0b3JhZ2VJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJh
eTxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4+JiBpdGVtcyk7CisgICAgdmlydHVhbCB2b2lk
IHNldERPTVN0b3JhZ2VJdGVtKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0PiYgc3RvcmFnZUlkLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSk7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZURPTVN0b3JhZ2VJdGVtKEVycm9y
U3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgc3RvcmFn
ZUlkLCBjb25zdCBTdHJpbmcmIGtleSk7CiAKICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgaW5qZWN0
ZWQgc2NyaXB0LgogICAgIFN0cmluZyBzdG9yYWdlSWQoU3RvcmFnZSopOwpAQCAtNzgsNyArODEs
NyBAQCBwcml2YXRlOgogCiAgICAgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KEluc3RydW1lbnRp
bmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKIAotICAgIFBhc3NSZWZQdHI8U3RvcmFn
ZUFyZWE+IGZpbmRTdG9yYWdlQXJlYShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+JiwgRnJhbWUqJik7CisgICAgUGFzc1JlZlB0cjxTdG9yYWdlQXJlYT4gZmluZFN0
b3JhZ2VBcmVhKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0PiYsIEZyYW1lKiYpOwogCiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2Vu
dDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRE9NU3RvcmFnZUZyb250ZW5kRGlzcGF0
Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKaW5kZXggYzU4MDBlYS4uYWU2YWNhYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFn
ZW50LmNwcApAQCAtMzcsOCArMzcsNiBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhv
bGRlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JGcm9udGVuZC5oIgotCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAj
aW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIlNRTEVycm9yLmgiCiAj
aW5jbHVkZSAiU1FMUmVzdWx0U2V0LmgiCkBAIC01MCwxMSArNDgsMTMgQEAKICNpbmNsdWRlICJT
UUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaCIKICNpbmNsdWRlICJTUUxWYWx1ZS5oIgogI2lu
Y2x1ZGUgIlZvaWRDYWxsYmFjay5oIgotCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZh
bHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogdHlwZWRlZiBXZWJDb3JlOjpJbnNw
ZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTENhbGxiYWNr
IEV4ZWN1dGVTUUxDYWxsYmFjazsKIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgewpAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQg
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6Y2xlYXJSZXNvdXJjZXMoKQogfQogCiBJbnNwZWN0b3JE
YXRhYmFzZUFnZW50OjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRl
cmFsKCJEYXRhYmFzZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdl
bnRCYXNlKEFTQ0lJTGl0ZXJhbCgiRGF0YWJhc2UiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAg
ICAsIG1fZW5hYmxlZChmYWxzZSkKIHsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldElu
c3BlY3RvckRhdGFiYXNlQWdlbnQodGhpcyk7CkBAIC0yMjIsNyArMjIyLDcgQEAgSW5zcGVjdG9y
RGF0YWJhc2VBZ2VudDo6fkluc3BlY3RvckRhdGFiYXNlQWdlbnQoKQogICAgIG1faW5zdHJ1bWVu
dGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yRGF0YWJhc2VBZ2VudCgwKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JEYXRhYmFzZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5k
RGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7
CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaAppbmRleCBhMzJmMDY0Li41
NDUzNzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0
YWJhc2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRh
YmFzZUFnZW50LmgKQEAgLTMxLDIyICszMSwyNiBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikg
JiYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5o
IgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIklu
c3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK2Ns
YXNzIEluc3BlY3RvckFycmF5OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERh
dGFiYXNlOwotY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBjbGFzcyBJbnNwZWN0b3JEYXRhYmFzZVJl
c291cmNlOwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIAogdHlwZWRlZiBTdHJpbmcgRXJy
b3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckRhdGFiYXNlQWdlbnQgOiBwdWJsaWMgSW5zcGVj
dG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXIgeworY2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JB
Z2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxl
ciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAg
ewpAQCAtNTQsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIH5JbnNwZWN0b3JEYXRhYmFz
ZUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIHZvaWQgY2xlYXJSZXNvdXJj
ZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRh
YmFzZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRh
YmFzZVJlc291cmNlLmNwcAppbmRleCA5ZDRiNzNmLi4zYmFmODgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwCkBA
IC0zNiw3ICszNiw5IEBACiAKICNpbmNsdWRlICJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckZyb250ZW5kLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCisjaW5jbHVkZSA8
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgorCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBhYzJiNzBlLi5mMjkzOTZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwCkBAIC0zOCwxMSArMzgsMTIgQEAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFn
ZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
clBhZ2VBZ2VudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIklu
c3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJSZWd1bGFyRXhwcmVzc2lvbi5oIgogI2lu
Y2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisj
aW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0T2JqZWN0Lmg+CisjaW5jbHVkZSA8YmluZGluZ3MvU2Ny
aXB0VmFsdWUuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVy
OjpBcnJheTsKQEAgLTUwLDEyICs1MSwxNCBAQCB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6
RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlsczsKIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpE
ZWJ1Z2dlcjo6U2NyaXB0SWQ7CiB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6
UmVtb3RlT2JqZWN0OwogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNvbnN0IGNoYXIqIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJhY2t0cmFj
ZU9iamVjdEdyb3VwID0gImJhY2t0cmFjZSI7CiAKIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Oklu
c3BlY3RvckRlYnVnZ2VyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50cywgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAg
OiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJEZWJ1Z2dlciIpLCBpbnN0cnVtZW50
aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiRGVidWdn
ZXIiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1fcGF1c2VkU2NyaXB0U3RhdGUoMCkKICAg
ICAsIG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElEKG5vQnJlYWtwb2ludElEKQpAQCAt
MTM2LDcgKzEzOSw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlzYWJsZShFcnJv
clN0cmluZyopCiAgICAgZGlzYWJsZSgpOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
IGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNw
YXRjaGVyKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hh
bm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewog
ICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JEZWJ1
Z2dlckZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmRE
aXNwYXRjaGVyID0gSW5zcGVjdG9yRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJh
Y2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKQEAgLTQxMCw3ICs0MTMsNyBAQCBQYXNzUmVmUHRyPFR5
cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJl
c29sdmVCcmVhawogICAgIHJldHVybiBsb2NhdGlvbjsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBzY3JpcHRUb0luc3BlY3Rvck9iamVjdChTY3JpcHRPYmplY3Qgc2Ny
aXB0T2JqZWN0KQorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBzY3JpcHRUb0lu
c3BlY3Rvck9iamVjdChEZXByZWNhdGVkOjpTY3JpcHRPYmplY3Qgc2NyaXB0T2JqZWN0KQogewog
ICAgIGlmIChzY3JpcHRPYmplY3QuaGFzTm9WYWx1ZSgpKQogICAgICAgICByZXR1cm4gMDsKQEAg
LTQzNiw3ICs0MzksNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNlYXJjaEluQ29u
dGVudChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgcwogdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpzZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBT
dHJpbmcmIHNjcmlwdElELCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIGNvbnN0IGJvb2wqIGNv
bnN0IHByZXZpZXcsIFJlZlB0cjxBcnJheTxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFt
ZT4+JiBuZXdDYWxsRnJhbWVzLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcmVzdWx0KQogewog
ICAgIGJvb2wgcHJldmlld09ubHkgPSBwcmV2aWV3ICYmICpwcmV2aWV3OwotICAgIFNjcmlwdE9i
amVjdCByZXN1bHRPYmplY3Q7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IHJlc3VsdE9i
amVjdDsKICAgICBpZiAoIXNjcmlwdERlYnVnU2VydmVyKCkuc2V0U2NyaXB0U291cmNlKHNjcmlw
dElELCBuZXdDb250ZW50LCBwcmV2aWV3T25seSwgZXJyb3IsICZtX2N1cnJlbnRDYWxsU3RhY2ss
ICZyZXN1bHRPYmplY3QpKQogICAgICAgICByZXR1cm47CiAgICAgbmV3Q2FsbEZyYW1lcyA9IGN1
cnJlbnRDYWxsRnJhbWVzKCk7CkBAIC02MDUsNyArNjA4LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpydW5TY3JpcHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTY3Jp
cHRJZCYKICAgICAgICAgbXV0ZUNvbnNvbGUoKTsKICAgICB9CiAKLSAgICBTY3JpcHRWYWx1ZSB2
YWx1ZTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB2YWx1ZTsKICAgICBib29sIHdhc1Ro
cm93blZhbHVlOwogICAgIFN0cmluZyBleGNlcHRpb25NZXNzYWdlOwogICAgIHNjcmlwdERlYnVn
U2VydmVyKCkucnVuU2NyaXB0KGluamVjdGVkU2NyaXB0LnNjcmlwdFN0YXRlKCksIHNjcmlwdElE
LCAmdmFsdWUsICZ3YXNUaHJvd25WYWx1ZSwgJmV4Y2VwdGlvbk1lc3NhZ2UpOwpAQCAtNzI2LDcg
KzcyOSw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZmFpbGVkVG9QYXJzZVNvdXJj
ZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nCiAgICAgbV9mcm9udGVuZERpc3BhdGNo
ZXItPnNjcmlwdEZhaWxlZFRvUGFyc2UodXJsLCBkYXRhLCBmaXJzdExpbmUsIGVycm9yTGluZSwg
ZXJyb3JNZXNzYWdlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVz
ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBjYWxsRnJh
bWVzLCBjb25zdCBTY3JpcHRWYWx1ZSYgZXhjZXB0aW9uKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpkaWRQYXVzZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYgZXhjZXB0aW9uKQogewogICAgIEFTU0VSVChzY3JpcHRTdGF0ZSAmJiAhbV9wYXVzZWRT
Y3JpcHRTdGF0ZSk7CiAgICAgbV9wYXVzZWRTY3JpcHRTdGF0ZSA9IHNjcmlwdFN0YXRlOwpAQCAt
NzU1LDcgKzc1OCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UoSlND
OjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcHRWCiB2b2lkIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmRpZENvbnRpbnVlKCkKIHsKICAgICBtX3BhdXNlZFNjcmlwdFN0YXRlID0g
MDsKLSAgICBtX2N1cnJlbnRDYWxsU3RhY2sgPSBTY3JpcHRWYWx1ZSgpOworICAgIG1fY3VycmVu
dENhbGxTdGFjayA9IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCk7CiAgICAgY2xlYXJCcmVha0Rl
dGFpbHMoKTsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVzdW1lZCgpOwogfQpAQCAtNzcw
LDcgKzc3Myw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtQcm9ncmFtKElu
c3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSCiB2b2lkIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OmNsZWFyKCkKIHsKICAgICBtX3BhdXNlZFNjcmlwdFN0YXRlID0gMDsKLSAgICBt
X2N1cnJlbnRDYWxsU3RhY2sgPSBTY3JpcHRWYWx1ZSgpOworICAgIG1fY3VycmVudENhbGxTdGFj
ayA9IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCk7CiAgICAgbV9zY3JpcHRzLmNsZWFyKCk7CiAg
ICAgbV9icmVha3BvaW50SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SURzLmNsZWFy
KCk7CiAgICAgbV9jb250aW51ZVRvTG9jYXRpb25CcmVha3BvaW50SUQgPSBub0JyZWFrcG9pbnRJ
RDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5oCmluZGV4IDRiZTYwMDAuLjViMmU4MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtMzEsMTIgKzMxLDE0IEBACiAjZGVm
aW5lIEluc3BlY3RvckRlYnVnZ2VyQWdlbnRfaAogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVC
VUdHRVIpICYmIEVOQUJMRShJTlNQRUNUT1IpCisKICNpbmNsdWRlICJCcmVha3BvaW50SUQuaCIK
ICNpbmNsdWRlICJDb25zb2xlQVBJVHlwZXMuaCIKICNpbmNsdWRlICJDb25zb2xlVHlwZXMuaCIK
ICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2Vu
dC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0QnJlYWtwb2ludC5oIgogI2luY2x1ZGUgIlNjcmlwdERlYnVnTGlz
dGVuZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgpAQCAtNDgsMTkgKzUwLDI1IEBACiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
IAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIERlcHJlY2F0ZWQgeworY2xhc3MgU2Ny
aXB0VmFsdWU7Cit9CiAKLWNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKK25hbWVzcGFjZSBJ
bnNwZWN0b3IgewogY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7
CiBjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xh
c3MgU2NyaXB0RGVidWdTZXJ2ZXI7Ci1jbGFzcyBTY3JpcHRWYWx1ZTsKIAogdHlwZWRlZiBTdHJp
bmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgOiBwdWJsaWMg
SW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgU2NyaXB0RGVidWdMaXN0ZW5lciwgcHVibGljIElu
c3BlY3RvckRlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgU2NyaXB0
RGVidWdMaXN0ZW5lciwgcHVibGljIEluc3BlY3RvckRlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGNo
YXIqIGJhY2t0cmFjZU9iamVjdEdyb3VwOwpAQCAtNzEsNyArNzksNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGNhblNldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyosIGJvb2wqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3VwcG9ydHNTZXBhcmF0ZVNjcmlwdENvbXBpbGF0aW9uQW5kRXhlY3V0
aW9uKEVycm9yU3RyaW5nKiwgYm9vbCopOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNw
ZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICBi
b29sIGlzUGF1c2VkKCk7CkBAIC04MywxMyArOTEsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIHNldEJyZWFrcG9p
bnRzQWN0aXZlKEVycm9yU3RyaW5nKiwgYm9vbCBhY3RpdmUpOwogCi0gICAgdmlydHVhbCB2b2lk
IHNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyosIGludCBsaW5lTnVtYmVyLCBjb25zdCBT
dHJpbmcqIG9wdGlvbmFsVVJMLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0
IGludCogb3B0aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
KiBvcHRpb25zLCBUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4+JiBsb2Nh
dGlvbnMpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nKiwgY29u
c3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGxvY2F0aW9uLCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0Piogb3B0aW9ucywgVHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQq
LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4mIGFjdHVhbExvY2F0aW9u
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nKiwgaW50
IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogb3B0
aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBvcHRpb25hbENvbHVtbk51bWJlciwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piogb3B0aW9ucywgVHlwZUJ1aWxkZXI6OkRl
YnVnZ2VyOjpCcmVha3BvaW50SWQqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+PiYgbG9jYXRpb25zKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0QnJlYWtwb2ludChFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdD4mIGxvY2F0aW9uLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+KiBvcHRpb25zLCBUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCosIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiYgYWN0dWFsTG9jYXRpb24pOwog
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVCcmVha3BvaW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3Ry
aW5nJiBicmVha3BvaW50SWRlbnRpZmllcik7Ci0gICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlVG9M
b2NhdGlvbihFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBsb2Nh
dGlvbik7CisgICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyos
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIGxvY2F0aW9uKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIHNjcmlwdElELCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBvcHRpb25hbENh
c2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPFR5cGVCdWls
ZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0Y2g+PiYpOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNjcmlw
dElELCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIGNvbnN0IGJvb2wqIHByZXZpZXcsIFJlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiYg
bmV3Q2FsbEZyYW1lcywgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHJlc3VsdCk7CisgICAgdmly
dHVhbCB2b2lkIHNldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2Ny
aXB0SUQsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudCwgY29uc3QgYm9vbCogcHJldmlldywgUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZT4+
JiBuZXdDYWxsRnJhbWVzLCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiByZXN1
bHQpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIHNjcmlwdElELCBTdHJpbmcqIHNjcmlwdFNvdXJjZSk7CiAgICAgdmlydHVhbCB2
b2lkIGdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnVuY3Rp
b25JZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiYpOwog
ICAgIHZpcnR1YWwgdm9pZCBwYXVzZShFcnJvclN0cmluZyopOwpAQCAtMTEyLDkgKzEyMCw5IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJ1blNjcmlwdChFcnJvclN0cmluZyosIGNvbnN0IFR5cGVCdWls
ZGVyOjpEZWJ1Z2dlcjo6U2NyaXB0SWQmLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCwg
Y29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgY29uc3QgYm9vbCogZG9Ob3RQYXVzZU9uRXhjZXB0
aW9uc0FuZE11dGVDb25zb2xlLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4mIHJlc3VsdCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0T3ZlcmxheU1lc3NhZ2UoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcqKTsKIAotICAgIHZvaWQgc2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChJbnNwZWN0
b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpFbnVtIGJyZWFrUmVhc29uLCBQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSk7CisgICAgdm9pZCBzY2hlZHVsZVBhdXNl
T25OZXh0U3RhdGVtZW50KEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFz
b246OkVudW0gYnJlYWtSZWFzb24sIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q+IGRhdGEpOwogICAgIHZvaWQgY2FuY2VsUGF1c2VPbk5leHRTdGF0ZW1lbnQoKTsKLSAgICB2
b2lkIGJyZWFrUHJvZ3JhbShJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVh
c29uOjpFbnVtIGJyZWFrUmVhc29uLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSk7
CisgICAgdm9pZCBicmVha1Byb2dyYW0oSW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNo
ZXI6OlJlYXNvbjo6RW51bSBicmVha1JlYXNvbiwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdD4gZGF0YSk7CiAgICAgdmlydHVhbCB2b2lkIHNjcmlwdEV4ZWN1dGlvbkJsb2Nr
ZWRCeUNTUChjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQpOwogCiAgICAgY2xhc3MgTGlzdGVu
ZXIgewpAQCAtMTQxLDcgKzE0OSw3IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgdm9pZCBl
bmFibGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZSgpOwotICAgIHZpcnR1YWwgdm9pZCBk
aWRQYXVzZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBj
b25zdCBTY3JpcHRWYWx1ZSYgZXhjZXB0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2Uo
SlNDOjpFeGVjU3RhdGUqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgY2FsbEZyYW1l
cywgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGV4Y2VwdGlvbik7CiAgICAgdmlydHVh
bCB2b2lkIGRpZENvbnRpbnVlKCk7CiAgICAgdm9pZCByZXNldCgpOwogCkBAIC0xNjQsMTkgKzE3
MiwxOSBAQCBwcml2YXRlOgogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFNvdXJjZUlELCBTY3JpcHQ+
IFNjcmlwdHNNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgVmVjdG9yPEJyZWFrcG9p
bnRJRD4+IEJyZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHNNYXA7
Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4+IEJy
ZWFrcG9pbnRJZGVudGlmaWVyVG9CcmVha3BvaW50TWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxT
dHJpbmcsIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4+IEJyZWFrcG9pbnRJZGVu
dGlmaWVyVG9CcmVha3BvaW50TWFwOwogCiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRGVidWdn
ZXJGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwogICAgIFJlZlB0cjxJ
bnNwZWN0b3JEZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwog
ICAgIEpTQzo6RXhlY1N0YXRlKiBtX3BhdXNlZFNjcmlwdFN0YXRlOwotICAgIFNjcmlwdFZhbHVl
IG1fY3VycmVudENhbGxTdGFjazsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBtX2N1cnJl
bnRDYWxsU3RhY2s7CiAgICAgU2NyaXB0c01hcCBtX3NjcmlwdHM7CiAgICAgQnJlYWtwb2ludElk
ZW50aWZpZXJUb0RlYnVnU2VydmVyQnJlYWtwb2ludElEc01hcCBtX2JyZWFrcG9pbnRJZGVudGlm
aWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHM7CiAgICAgQnJlYWtwb2ludElkZW50aWZpZXJU
b0JyZWFrcG9pbnRNYXAgbV9qYXZhU2NyaXB0QnJlYWtwb2ludHM7CiAgICAgQnJlYWtwb2ludElE
IG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElEOwogICAgIEluc3BlY3RvckRlYnVnZ2Vy
RnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkVudW0gbV9icmVha1JlYXNvbjsKLSAgICBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBtX2JyZWFrQXV4RGF0YTsKKyAgICBSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3Q+IG1fYnJlYWtBdXhEYXRhOwogICAgIGJvb2wgbV9lbmFibGVkOwog
ICAgIGJvb2wgbV9qYXZhU2NyaXB0UGF1c2VTY2hlZHVsZWQ7CiAgICAgTGlzdGVuZXIqIG1fbGlz
dGVuZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRm9y
d2FyZGluZy5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZvcndhcmRpbmcu
aAppbmRleCBmNjA2NTk0Li5mNjhmY2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRm9yd2FyZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGb3J3YXJkaW5nLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlIDxpbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
LWNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCB7IH07Cit0eXBlZGVmIEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKIH0KIAogI2VuZGlmIC8vICFk
ZWZpbmVkKEluc3BlY3RvckZvcndhcmRpbmdfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAppbmRleCA4NzEx
YThlLi4wZWRhZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCkBAIC00OSw3ICs0OSw3IEBACiAjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJT
Y3JpcHRGdW5jdGlvbkNhbGwuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRl
ICJTY3JpcHRHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKQEAgLTU5LDYgKzU5LDggQEAKICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogc3RhdGljIGNvbnN0IGNoYXIqIGluc3BlY3RvckF0dGFjaGVkSGVpZ2h0U2V0dGluZyA9ICJp
bnNwZWN0b3JBdHRhY2hlZEhlaWdodCI7CkBAIC0zNDQsNyArMzQ2LDcgQEAgYm9vbCBJbnNwZWN0
b3JGcm9udGVuZENsaWVudExvY2FsOjppc1VuZGVyVGVzdCgpCiAKIGJvb2wgSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbDo6ZXZhbHVhdGVBc0Jvb2xlYW4oY29uc3QgU3RyaW5nJiBleHByZXNz
aW9uKQogewotICAgIFNjcmlwdFZhbHVlIHZhbHVlID0gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFt
ZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoZXhwcmVzc2lvbik7CisgICAgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUgdmFsdWUgPSBtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCkuc2NyaXB0KCku
ZXhlY3V0ZVNjcmlwdChleHByZXNzaW9uKTsKICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcobWFp
bldvcmxkRXhlY1N0YXRlKCZtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCkpKSA9PSAidHJ1ZSI7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
SG9zdC5jcHAKaW5kZXggYmUyNGUxZS4uMTlkNzFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKQEAgLTU0LDI4ICs1NCwzMiBA
QAogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9u
c2UuaCIKICNpbmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwuaCIKKyNpbmNsdWRlICJTY3JpcHRH
bG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNvdW5k
LmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogY2xhc3MgRnJvbnRlbmRNZW51
UHJvdmlkZXIgOiBwdWJsaWMgQ29udGV4dE1lbnVQcm92aWRlciB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8RnJvbnRlbmRNZW51UHJvdmlkZXI+IGNyZWF0ZShJbnNwZWN0b3JGcm9u
dGVuZEhvc3QqIGZyb250ZW5kSG9zdCwgU2NyaXB0T2JqZWN0IGZyb250ZW5kQXBpT2JqZWN0LCBj
b25zdCBWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiYgaXRlbXMpCisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8RnJvbnRlbmRNZW51UHJvdmlkZXI+IGNyZWF0ZShJbnNwZWN0b3JGcm9udGVuZEhvc3QqIGZy
b250ZW5kSG9zdCwgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IGZyb250ZW5kQXBpT2JqZWN0LCBj
b25zdCBWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiYgaXRlbXMpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEZyb250ZW5kTWVudVByb3ZpZGVyKGZyb250ZW5kSG9zdCwgZnJvbnRl
bmRBcGlPYmplY3QsIGl0ZW1zKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgZGlzY29ubmVjdCgp
CiAgICAgewotICAgICAgICBtX2Zyb250ZW5kQXBpT2JqZWN0ID0gU2NyaXB0T2JqZWN0KCk7Cisg
ICAgICAgIG1fZnJvbnRlbmRBcGlPYmplY3QgPSBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QoKTsK
ICAgICAgICAgbV9mcm9udGVuZEhvc3QgPSAwOwogICAgIH0KICAgICAKIHByaXZhdGU6Ci0gICAg
RnJvbnRlbmRNZW51UHJvdmlkZXIoSW5zcGVjdG9yRnJvbnRlbmRIb3N0KiBmcm9udGVuZEhvc3Qs
IFNjcmlwdE9iamVjdCBmcm9udGVuZEFwaU9iamVjdCwgY29uc3QgVmVjdG9yPENvbnRleHRNZW51
SXRlbT4mIGl0ZW1zKQorICAgIEZyb250ZW5kTWVudVByb3ZpZGVyKEluc3BlY3RvckZyb250ZW5k
SG9zdCogZnJvbnRlbmRIb3N0LCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgZnJvbnRlbmRBcGlP
YmplY3QsIGNvbnN0IFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+JiBpdGVtcykKICAgICAgICAgOiBt
X2Zyb250ZW5kSG9zdChmcm9udGVuZEhvc3QpCiAgICAgICAgICwgbV9mcm9udGVuZEFwaU9iamVj
dChmcm9udGVuZEFwaU9iamVjdCkKICAgICAgICAgLCBtX2l0ZW1zKGl0ZW1zKQpAQCAtMTE3LDcg
KzEyMSw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0KiBt
X2Zyb250ZW5kSG9zdDsKLSAgICBTY3JpcHRPYmplY3QgbV9mcm9udGVuZEFwaU9iamVjdDsKKyAg
ICBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgbV9mcm9udGVuZEFwaU9iamVjdDsKICAgICBWZWN0
b3I8Q29udGV4dE1lbnVJdGVtPiBtX2l0ZW1zOwogfTsKICNlbmRpZgpAQCAtMjcyLDcgKzI3Niw3
IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpzaG93Q29udGV4dE1lbnUoRXZlbnQqIGV2
ZW50LCBjb25zdCBWZWN0b3I8Q29udGV4dE1lCiAKICAgICBBU1NFUlQobV9mcm9udGVuZFBhZ2Up
OwogICAgIEpTQzo6RXhlY1N0YXRlKiBmcm9udGVuZEV4ZWNTdGF0ZSA9IGV4ZWNTdGF0ZUZyb21Q
YWdlKGRlYnVnZ2VyV29ybGQoKSwgbV9mcm9udGVuZFBhZ2UpOwotICAgIFNjcmlwdE9iamVjdCBm
cm9udGVuZEFwaU9iamVjdDsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgZnJvbnRlbmRB
cGlPYmplY3Q7CiAgICAgaWYgKCFTY3JpcHRHbG9iYWxPYmplY3Q6OmdldChmcm9udGVuZEV4ZWNT
dGF0ZSwgIkluc3BlY3RvckZyb250ZW5kQVBJIiwgZnJvbnRlbmRBcGlPYmplY3QpKSB7CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNwcApp
bmRleCAwODE0YTBmLi45MDk4ZmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5jcHAKQEAgLTM5LDYgKzM5LDggQEAK
ICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmls
ZXIuaCIKIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgVXNlckluaXRpYXRlZFByb2ZpbGVOYW1lSGVh
cCA9ICJvcmcud2Via2l0LnByb2ZpbGVzLnVzZXItaW5pdGlhdGVkIjsKQEAgLTQ5LDcgKzUxLDcg
QEAgUGFzc093blB0cjxJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudD4gSW5zcGVjdG9ySGVhcFBy
b2ZpbGVyQWdlbnQ6OmNyZWF0ZShJbnN0cnUKIH0KIAogSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdl
bnQ6Okluc3BlY3RvckhlYXBQcm9maWxlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiSGVhcFByb2ZpbGVy
IiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlM
aXRlcmFsKCJIZWFwUHJvZmlsZXIiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1fbmV4dFVz
ZXJJbml0aWF0ZWRIZWFwU25hcHNob3ROdW1iZXIoMSkKICAgICAsIG1fcHJvZmlsZUhlYWRlcnNS
ZXF1ZXN0ZWQoZmFsc2UpCkBAIC04MCw3ICs4Miw3IEBAIHZvaWQgSW5zcGVjdG9ySGVhcFByb2Zp
bGVyQWdlbnQ6OnJlc2V0RnJvbnRlbmRQcm9maWxlcygpCiAgICAgICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyLT5yZXNldFByb2ZpbGVzKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySGVhcFByb2ZpbGVy
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmRE
aXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6ZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9u
dGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hl
cikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9ySGVhcFByb2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAg
IG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JIZWFwUHJvZmlsZXJCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKQEAgLTE5OCw3ICsyMDAsNyBA
QCB2b2lkIEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpnZXRPYmplY3RCeUhlYXBPYmplY3RJ
ZChFcnJvclN0cmluZyogZXJyb3IsIGNvbgogICAgICAgICAqZXJyb3IgPSAiSW52YWxpZCBoZWFw
IHNuYXBzaG90IG9iamVjdCBpZCI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgU2NyaXB0
T2JqZWN0IGhlYXBPYmplY3QgPSBTY3JpcHRQcm9maWxlcjo6b2JqZWN0QnlIZWFwT2JqZWN0SWQo
aWQpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBoZWFwT2JqZWN0ID0gU2NyaXB0UHJv
ZmlsZXI6Om9iamVjdEJ5SGVhcE9iamVjdElkKGlkKTsKICAgICBpZiAoaGVhcE9iamVjdC5oYXNO
b1ZhbHVlKCkpIHsKICAgICAgICAgKmVycm9yID0gIk9iamVjdCBpcyBub3QgYXZhaWxhYmxlIjsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjIwLDcgKzIyMiw3IEBAIHZvaWQgSW5zcGVjdG9ySGVhcFBy
b2ZpbGVyQWdlbnQ6OmdldEhlYXBPYmplY3RJZChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNv
bnN0CiAgICAgICAgICplcnJvclN0cmluZyA9ICJJbnNwZWN0ZWQgY29udGV4dCBoYXMgZ29uZSI7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgU2NyaXB0VmFsdWUgdmFsdWUgPSBpbmplY3Rl
ZFNjcmlwdC5maW5kT2JqZWN0QnlJZChvYmplY3RJZCk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUgdmFsdWUgPSBpbmplY3RlZFNjcmlwdC5maW5kT2JqZWN0QnlJZChvYmplY3RJZCk7CiAg
ICAgaWYgKHZhbHVlLmhhc05vVmFsdWUoKSB8fCB2YWx1ZS5pc1VuZGVmaW5lZCgpKSB7CiAgICAg
ICAgICplcnJvclN0cmluZyA9ICJPYmplY3Qgd2l0aCBnaXZlbiBpZCBub3QgZm91bmQiOwogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySGVhcFByb2ZpbGVyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JIZWFwUHJvZmlsZXJBZ2VudC5oCmluZGV4IGNjMzY4NjguLjMwMzM4NTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5o
CkBAIC0zMyw4ICszMyw5IEBACiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYg
RU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2lu
Y2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNDksNyArNTAsNyBAQCBjbGFzcyBTY3JpcHRQcm9maWxlOwog
CiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9ySGVhcFByb2Zp
bGVyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9ySGVh
cFByb2ZpbGVyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckhlYXBQ
cm9maWxlckFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rv
ckhlYXBQcm9maWxlckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JIZWFwUHJvZmls
ZXJBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbmplY3RlZFNjcmlwdE1hbmFn
ZXIqKTsKQEAgLTY1LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRIZWFw
U25hcHNob3QoRXJyb3JTdHJpbmcqLCBpbnQgdWlkKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
UHJvZmlsZShFcnJvclN0cmluZyosIGludCB1aWQpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
LCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgdGFrZUhlYXBTbmFwc2hvdChFcnJvclN0cmluZyosIGNvbnN0IGJv
b2wqIHJlcG9ydFByb2dyZXNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IGEwMjU3MTMuLmZlYWRhZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50
LmNwcApAQCAtNjEsMTAgKzYxLDkgQEAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50
LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGlu
Z0FnZW50cy5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0KKyNpbmNsdWRlIDxpbnNw
ZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiB1c2lu
ZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6QXJyYXk7CkBAIC03NiwxMiArNzUsMTQgQEAgdXNpbmcg
V2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6S2V5UmFuZ2U7CiB1c2luZyBXZWJDb3Jl
OjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpPYmplY3RTdG9yZTsKIHVzaW5nIFdlYkNvcmU6OlR5
cGVCdWlsZGVyOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlSW5kZXg7CiAKK3R5cGVkZWYgSW5zcGVj
dG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlIFJlcXVlc3RDYWxs
YmFjazsKIHR5cGVkZWYgV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhlZERCQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyOjpSZXF1ZXN0RGF0YWJhc2VOYW1lc0NhbGxiYWNrIFJlcXVlc3REYXRhYmFzZU5h
bWVzQ2FsbGJhY2s7CiB0eXBlZGVmIFdlYkNvcmU6Okluc3BlY3RvckluZGV4ZWREQkJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlcjo6UmVxdWVzdERhdGFiYXNlQ2FsbGJhY2sgUmVxdWVzdERhdGFiYXNl
Q2FsbGJhY2s7CiB0eXBlZGVmIFdlYkNvcmU6Okluc3BlY3RvckluZGV4ZWREQkJhY2tlbmREaXNw
YXRjaGVySGFuZGxlcjo6UmVxdWVzdERhdGFDYWxsYmFjayBSZXF1ZXN0RGF0YUNhbGxiYWNrOwot
dHlwZWRlZiBXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNl
IFJlcXVlc3RDYWxsYmFjazsKIHR5cGVkZWYgV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhlZERCQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyOjpDbGVhck9iamVjdFN0b3JlQ2FsbGJhY2sgQ2xlYXJPYmpl
Y3RTdG9yZUNhbGxiYWNrOwogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSB7CkBAIC01NTcsNyArNTU4LDcgQEAgcHVibGljOgog
fSAvLyBuYW1lc3BhY2UKIAogSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6Okluc3BlY3RvckluZGV4
ZWREQkFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluamVj
dGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnNwZWN0b3JQYWdlQWdl
bnQqIHBhZ2VBZ2VudCkKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIklu
ZGV4ZWREQiIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNl
KEFTQ0lJTGl0ZXJhbCgiSW5kZXhlZERCIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBt
X2luamVjdGVkU2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBtX3Bh
Z2VBZ2VudChwYWdlQWdlbnQpCiB7CkBAIC01NjcsNyArNTY4LDcgQEAgSW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQ6On5JbnNwZWN0b3JJbmRleGVkREJBZ2VudCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3Bh
dGNoZXIpCit2b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9iYWNrZW5kRGlz
cGF0Y2hlciA9IEluc3BlY3RvckluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFj
a2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaAppbmRleCBiYTM3NTlhLi5iOTU1MjEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
aApAQCAtMzMsNyArMzMsOCBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNs
dWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JX
ZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00NCw3ICs0NSw3IEBAIGNsYXNzIEluc3BlY3RvclBh
Z2VBZ2VudDsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3Rv
ckluZGV4ZWREQkFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3Bl
Y3RvckluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JJ
bmRleGVkREJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0
b3JJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzT3duUHRyPEluc3BlY3RvckluZGV4ZWREQkFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmpl
Y3RlZFNjcmlwdE1hbmFnZXIsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KQogICAgIHsK
QEAgLTUyLDcgKzUzLDcgQEAgcHVibGljOgogICAgIH0KICAgICB+SW5zcGVjdG9ySW5kZXhlZERC
QWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJv
eUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gdGhl
IGZyb250LWVuZC4KQEAgLTYwLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
aXNhYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3REYXRhYmFzZU5h
bWVzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgUGFzc1JlZlB0
cjxSZXF1ZXN0RGF0YWJhc2VOYW1lc0NhbGxiYWNrPik7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVl
c3REYXRhYmFzZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIGNv
bnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBQYXNzUmVmUHRyPFJlcXVlc3REYXRhYmFzZUNhbGxi
YWNrPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3REYXRhKEVycm9yU3RyaW5nKiwgY29uc3Qg
U3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0
IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgaW50IHNr
aXBDb3VudCwgaW50IHBhZ2VTaXplLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Pioga2V5
UmFuZ2UsIFBhc3NSZWZQdHI8UmVxdWVzdERhdGFDYWxsYmFjaz4pOworICAgIHZpcnR1YWwgdm9p
ZCByZXF1ZXN0RGF0YShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4s
IGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFt
ZSwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUsIGludCBza2lwQ291bnQsIGludCBwYWdlU2l6ZSwg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Pioga2V5UmFuZ2UsIFBhc3NS
ZWZQdHI8UmVxdWVzdERhdGFDYWxsYmFjaz4pOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhck9iamVj
dFN0b3JlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBpbl9zZWN1cml0eU9yaWdpbiwgY29u
c3QgU3RyaW5nJiBpbl9kYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5fb2JqZWN0U3RvcmVO
YW1lLCBQYXNzUmVmUHRyPENsZWFyT2JqZWN0U3RvcmVDYWxsYmFjaz4pOwogCiBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcklucHV0QWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcklucHV0QWdlbnQuY3BwCmlu
ZGV4IDdlY2NiOGQuLmM0Yjg3ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnB1dEFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5wdXRBZ2VudC5jcHAKQEAgLTQ5LDEwICs0OSwxMiBAQAogI2luY2x1ZGUgPHd0
Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCit1c2lu
ZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEluc3BlY3Rv
cklucHV0QWdlbnQ6Okluc3BlY3RvcklucHV0QWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cywgUGFnZSogcGFnZSkKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudChB
U0NJSUxpdGVyYWwoIklucHV0IiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0
b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJJbnB1dCIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQog
ICAgICwgbV9wYWdlKHBhZ2UpCiB7CiB9CkBAIC02MSw3ICs2Myw3IEBAIEluc3BlY3RvcklucHV0
QWdlbnQ6On5JbnNwZWN0b3JJbnB1dEFnZW50KCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnB1
dEFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9p
ZCBJbnNwZWN0b3JJbnB1dEFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3Bl
Y3RvcklucHV0QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhp
cyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5w
dXRBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcklucHV0QWdlbnQu
aAppbmRleCBhY2JhMjk5Li40ZTA2MmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5wdXRBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnB1dEFnZW50LmgKQEAgLTMzLDggKzMzLDggQEAKIAogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKLQorI2luY2x1ZGUg
Ikluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFn
ZW50QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00NCw3ICs0
NCw3IEBAIGNsYXNzIFBhZ2U7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFz
cyBJbnNwZWN0b3JJbnB1dEFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGlj
IEluc3BlY3RvcklucHV0QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3Rv
cklucHV0QWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9y
SW5wdXRCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEluc3BlY3RvcklucHV0QWdlbnQpOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPElu
c3BlY3RvcklucHV0QWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzLCBQYWdlKiBwYWdlKQpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAKICAgICB+
SW5zcGVjdG9ySW5wdXRBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0
b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICAvLyBN
ZXRob2RzIGNhbGxlZCBmcm9tIHRoZSBmcm9udGVuZCBmb3Igc2ltdWxhdGluZyBpbnB1dC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHAKaW5kZXggYzRjNTFjYi4uMTE3ZGIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTgzLDYgKzgzLDgg
QEAKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCByZXF1ZXN0QW5pbWF0aW9uRnJhbWVFdmVu
dE5hbWUgPSAicmVxdWVzdEFuaW1hdGlvbkZyYW1lIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCBiZDVjOTUyLi4zM2I2
YmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5oCkBAIC00NSw2ICs0NSwxMCBAQAogI2luY2x1ZGUgIldlYlNvY2tldEZyYW1l
LmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCituYW1lc3BhY2UgRGVwcmVjYXRlZCB7Citj
bGFzcyBTY3JpcHRPYmplY3Q7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NT
UnVsZTsKQEAgLTc3LDcgKzgxLDYgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNj
cmlwdEFyZ3VtZW50czsKIGNsYXNzIFNjcmlwdENhbGxTdGFjazsKIGNsYXNzIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7Ci1jbGFzcyBTY3JpcHRPYmplY3Q7CiBjbGFzcyBTY3JpcHRQcm9maWxlOwog
Y2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTaGFkb3dSb290OwpAQCAtMjc2LDkgKzI3OSw5
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlV2ViU29ja2V0RnJhbWVFcnJv
cihEb2N1bWVudCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpOwogI2VuZGlmCiAKLSAgICBzdGF0aWMgU2NyaXB0T2JqZWN0IHdyYXBDYW52YXMy
RFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24oRG9jdW1lbnQqLCBjb25zdCBTY3Jp
cHRPYmplY3QmKTsKKyAgICBzdGF0aWMgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IHdyYXBDYW52
YXMyRFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24oRG9jdW1lbnQqLCBjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmKTsKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgc3RhdGlj
IFNjcmlwdE9iamVjdCB3cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9u
KERvY3VtZW50KiwgY29uc3QgU2NyaXB0T2JqZWN0Jik7CisgICAgc3RhdGljIERlcHJlY2F0ZWQ6
OlNjcmlwdE9iamVjdCB3cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9u
KERvY3VtZW50KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0Jik7CiAjZW5kaWYKIAog
ICAgIHN0YXRpYyB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoUGFnZSopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKaW5kZXgg
ZDI3ZjkwOS4uYzIwMDFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckxheWVyVHJlZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCkBAIC00NiwxMCArNDYsMTIgQEAKICNpbmNsdWRl
ICJSZW5kZXJMYXllckNvbXBvc2l0b3IuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAKK3Vz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQ6Okluc3BlY3RvckxheWVyVHJlZUFnZW50KEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVND
SUlMaXRlcmFsKCJMYXllclRyZWUiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3Bl
Y3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkxheWVyVHJlZSIpLCBpbnN0cnVtZW50aW5nQWdl
bnRzKQogewogfQogCkBAIC01OCw3ICs2MCw3IEBAIEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojp+
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKQogICAgIHJlc2V0KCk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5k
RGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yTGF5ZXJUcmVlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwp
OwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JMYXllclRyZWVCYWNrZW5kRGlz
cGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKaW5kZXggYWY1NWE5
Mi4uMzBiY2IxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckxheWVyVHJlZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckxheWVyVHJlZUFnZW50LmgKQEAgLTMxLDkgKzMxLDEwIEBACiAKICNpZiBFTkFCTEUoSU5TUEVD
VE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgorI2luY2x1ZGUgIkluc3BlY3Rvcldl
YkFnZW50QmFzZS5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNDYsNyArNDcsNyBA
QCBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmlu
ZzsKIAotY2xhc3MgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFz
ZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yTGF5ZXJUcmVlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
IHsKK2NsYXNzIEluc3BlY3RvckxheWVyVHJlZUFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50
QmFzZSwgcHVibGljIEluc3BlY3RvckxheWVyVHJlZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ+
IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgIHsK
QEAgLTU0LDcgKzU1LDcgQEAgcHVibGljOgogICAgIH0KICAgICB+SW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJv
eUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogICAgIHZvaWQgcmVzZXQoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKaW5k
ZXggNzU4YjdiNC4uYjRlZjAzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCkBAIC00MSwxMyArNDEsMTMgQEAKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvckZyb250ZW5kLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5j
bHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAj
aW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIk5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJT
Y3JpcHRQcm9maWxlci5oIgogI2luY2x1ZGUgIlN0eWxlZEVsZW1lbnQuaCIKKyNpbmNsdWRlIDxp
bnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZl
clZpZXcuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KQEAgLTYxLDEzICs2MSwxNSBAQAogdHlwZWRlZiBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6TWVt
b3J5OjpNZW1vcnlCbG9jayBJbnNwZWN0b3JNZW1vcnlCbG9jazsKIHR5cGVkZWYgV2ViQ29yZTo6
VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiBJbnNwZWN0b3JNZW1vcnlC
bG9ja3M7CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogSW5zcGVjdG9yTWVtb3J5QWdlbnQ6On5JbnNwZWN0b3JNZW1vcnlBZ2VudCgpCiB7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciog
YmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50OjpkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9i
YWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvck1lbW9yeUJhY2tlbmREaXNwYXRjaGVyOjpjcmVh
dGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQpAQCAtODUsNyArODcsNyBAQCB2b2lkIElu
c3BlY3Rvck1lbW9yeUFnZW50OjpnZXRET01Db3VudGVycyhFcnJvclN0cmluZyosIGludCogZG9j
dW1lbnRzLCBpbnQqIG5vZAogfQogCiBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6SW5zcGVjdG9yTWVt
b3J5QWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICA6
IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIk1lbW9yeSIpLCBpbnN0cnVtZW50aW5n
QWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiTWVtb3J5Iiks
IGluc3RydW1lbnRpbmdBZ2VudHMpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKaW5kZXggZTE5MTBkZS4uOGYxNTY1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKQEAgLTMz
LDggKzMzLDggQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0
b3JCYXNlQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFn
ZW50QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogCkBAIC00NSwxMyArNDUsMTMgQEAgY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsK
IAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3Rvck1lbW9yeUFn
ZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3Rvck1lbW9yeUJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JNZW1vcnlBZ2VudCA6IHB1
YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JNZW1vcnlCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3Rvck1lbW9y
eUFnZW50KTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JNZW1vcnlB
Z2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpOwog
ICAgIHZpcnR1YWwgfkluc3BlY3Rvck1lbW9yeUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklE
RTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRET01Db3VudGVycyhFcnJvclN0cmluZyosIGludCog
ZG9jdW1lbnRzLCBpbnQqIG5vZGVzLCBpbnQqIGpzRXZlbnRMaXN0ZW5lcnMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCmluZGV4IDI4Njg0MWYuLmE4
NWQ4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVy
bGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5j
cHAKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JDbGllbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5UGFnZS5o
IgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgog
I2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC01NSwxMSArNTQsMTQgQEAK
ICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgog
I2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgorI2luY2x1
ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3Rv
clZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAordXNpbmcg
bmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2Ug
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXku
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmgKaW5kZXggZWY5
OTIzMC4uYjUyOTIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvck92ZXJsYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zl
cmxheS5oCkBAIC0zMiwyMCArMzIsMjIgQEAKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUg
IkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKLQogI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yT2JqZWN0Owor
Y2xhc3MgSW5zcGVjdG9yVmFsdWU7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Q29sb3I7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7Ci1j
bGFzcyBJbnNwZWN0b3JWYWx1ZTsKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEludFJl
Y3Q7CiBjbGFzcyBOb2RlOwogY2xhc3MgUGFnZTsKQEAgLTEyNCw3ICsxMjYsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGRpZFNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVkKTsKIAotICAg
IFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9k
ZSgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGJ1
aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlKCkgY29uc3Q7CiAKICAgICB2b2lkIGZyZWVQYWdl
KCk7CiBwcml2YXRlOgpAQCAtMTM3LDcgKzEzOSw3IEBAIHByaXZhdGU6CiAgICAgUGFnZSogb3Zl
cmxheVBhZ2UoKTsKICAgICB2b2lkIHJlc2V0KGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwg
Y29uc3QgSW50U2l6ZSYgZnJhbWVWaWV3RnVsbFNpemUpOwogICAgIHZvaWQgZXZhbHVhdGVJbk92
ZXJsYXkoY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFN0cmluZyYgYXJndW1lbnQpOwotICAg
IHZvaWQgZXZhbHVhdGVJbk92ZXJsYXkoY29uc3QgU3RyaW5nJiBtZXRob2QsIFBhc3NSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+IGFyZ3VtZW50KTsKKyAgICB2b2lkIGV2YWx1YXRlSW5PdmVybGF5KGNv
bnN0IFN0cmluZyYgbWV0aG9kLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+
IGFyZ3VtZW50KTsKIAogICAgIFBhZ2UqIG1fcGFnZTsKICAgICBJbnNwZWN0b3JDbGllbnQqIG1f
Y2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcAppbmRleCBjMGJlZDllLi44N2E5YmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtNjYsNyArNjYsNiBAQAogI2luY2x1ZGUg
Ikluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yT3ZlcmxheS5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZh
bHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJNYWlu
RnJhbWUuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgpAQCAtNzQsMTIgKzczLDEzIEBACiAj
aW5jbHVkZSAiUmVndWxhckV4cHJlc3Npb24uaCIKICNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5o
IgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3Qu
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAj
aW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5o
IgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCisjaW5jbHVkZSA8YmluZGluZ3Mv
U2NyaXB0VmFsdWUuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAj
aW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtOTAsNiArOTAsOCBAQAogI2luY2x1ZGUgIkxl
Z2FjeVdlYkFyY2hpdmUuaCIKICNlbmRpZgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBib29sIGRlY29kZUJ1ZmZlcihjb25zdCBj
aGFyKiBidWZmZXIsIHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFt
ZSwgU3RyaW5nKiByZXN1bHQpCkBAIC0zNTEsNyArMzUzLDcgQEAgVHlwZUJ1aWxkZXI6OlBhZ2U6
OlJlc291cmNlVHlwZTo6RW51bSBJbnNwZWN0b3JQYWdlQWdlbnQ6OmNhY2hlZFJlc291cmNlVHlw
ZUpzb24KIH0KIAogSW5zcGVjdG9yUGFnZUFnZW50OjpJbnNwZWN0b3JQYWdlQWdlbnQoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgUGFnZSogcGFnZSwgSW5zcGVjdG9y
QWdlbnQqIGluc3BlY3RvckFnZW50LCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2Ny
aXB0TWFuYWdlciwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQsIEluc3BlY3Rvck92ZXJsYXkqIG92
ZXJsYXkpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJQYWdlIiksIGlu
c3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFs
KCJQYWdlIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX3BhZ2UocGFnZSkKICAgICAs
IG1faW5zcGVjdG9yQWdlbnQoaW5zcGVjdG9yQWdlbnQpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0
TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCkBAIC0zNzEsNyArMzczLDcgQEAgSW5zcGVj
dG9yUGFnZUFnZW50OjpJbnNwZWN0b3JQYWdlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cywKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5k
Q2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQor
dm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclBhZ2VGcm9udGVuZERpc3Bh
dGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3Bl
Y3RvclBhZ2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRl
eCAxYjI2YjZlLi4zOGQ3ZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclBhZ2VBZ2VudC5oCkBAIC0zNSw4ICszNSw5IEBACiAKICNpbmNsdWRlICJEZXZpY2VPcmll
bnRhdGlvbkRhdGEuaCIKICNpbmNsdWRlICJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCi0jaW5jbHVk
ZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiTGF5
b3V0UmVjdC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC00NCw2ICs0NSwxMSBAQAog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAorbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFzcyBJbnNwZWN0b3JBcnJheTsKK2NsYXNzIElu
c3BlY3Rvck9iamVjdDsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRS
ZXNvdXJjZTsKQEAgLTU0LDkgKzYwLDcgQEAgY2xhc3MgRnJvbnRlbmQ7CiBjbGFzcyBHcmFwaGlj
c0NvbnRleHQ7CiBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBJbnNwZWN0b3JB
Z2VudDsKLWNsYXNzIEluc3BlY3RvckFycmF5OwogY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwotY2xh
c3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3MgSW5zcGVjdG9yT3ZlcmxheTsKIGNsYXNzIEluc3Ry
dW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBVUkw7CkBAIC02Nyw3ICs3MSw3IEBAIGNsYXNzIFRleHRS
ZXNvdXJjZURlY29kZXI7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJ
bnNwZWN0b3JQYWdlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5z
cGVjdG9yUGFnZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JQYWdl
QWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yUGFnZUJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVj
dG9yUGFnZUFnZW50KTsKIHB1YmxpYzoKICAgICBlbnVtIFJlc291cmNlVHlwZSB7CkBAIC0xNjMs
NyArMTY3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2NyaXB0c0VuYWJsZWQoYm9vbCBpc0VuYWJs
ZWQpOwogCiAgICAgLy8gSW5zcGVjdG9yIENvbnRyb2xsZXIgQVBJCi0gICAgdmlydHVhbCB2b2lk
IGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJ
REU7CiAKICAgICAvLyBDcm9zcy1hZ2VudHMgQVBJCkBAIC0yMTgsNyArMjIyLDcgQEAgcHJpdmF0
ZToKICAgICBib29sIG1faWdub3JlU2NyaXB0c0VuYWJsZWROb3RpZmljYXRpb247CiAgICAgYm9v
bCBtX3Nob3dQYWludFJlY3RzOwogICAgIFN0cmluZyBtX2VtdWxhdGVkTWVkaWE7Ci0gICAgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gbV9zY3JpcHRzVG9FdmFsdWF0ZU9uTG9hZDsKKyAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1fc2NyaXB0c1RvRXZhbHVhdGVPbkxvYWQ7
CiAgICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IG1fZ2VvbG9jYXRpb25Qb3NpdGlvbjsK
ICAgICBSZWZQdHI8R2VvbG9jYXRpb25Qb3NpdGlvbj4gbV9wbGF0Zm9ybUdlb2xvY2F0aW9uUG9z
aXRpb247CiAgICAgUmVmUHRyPERldmljZU9yaWVudGF0aW9uRGF0YT4gbV9kZXZpY2VPcmllbnRh
dGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9m
aWxlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxl
ckFnZW50LmNwcAppbmRleCBiYWY1MWY0Li40Njc3NjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCkBAIC00MCwyMCArNDAs
MjIgQEAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JDb25zb2xlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgotI2luY2x1
ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIK
ICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZVNjcmlw
dERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0SGVhcFNuYXBzaG90LmgiCi0jaW5jbHVk
ZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZS5oIgogI2luY2x1ZGUg
IlNjcmlwdFByb2ZpbGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaCIK
KyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3QuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3Iv
SW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+
CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSA9ICJvcmcu
d2Via2l0LnByb2ZpbGVzLnVzZXItaW5pdGlhdGVkIjsKQEAgLTExOSw3ICsxMjEsNyBAQCBQYXNz
T3duUHRyPEluc3BlY3RvclByb2ZpbGVyQWdlbnQ+IEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmNy
ZWF0ZShJbnN0cnVtZW50aW5nQQogfQogCiBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpJbnNwZWN0
b3JQcm9maWxlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMs
IEluc3BlY3RvckNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50LCBJbmplY3RlZFNjcmlwdE1hbmFn
ZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJ
SUxpdGVyYWwoIlByb2ZpbGVyIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0
b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJQcm9maWxlciIpLCBpbnN0cnVtZW50aW5nQWdlbnRz
KQogICAgICwgbV9jb25zb2xlQWdlbnQoY29uc29sZUFnZW50KQogICAgICwgbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9lbmFibGVkKGZhbHNl
KQpAQCAtMzI3LDcgKzMyOSw3IEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6cmVzZXRG
cm9udGVuZFByb2ZpbGVzKCkKICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlc2V0UHJv
ZmlsZXMoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWws
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5z
cGVjdG9yUHJvZmlsZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yUHJvZmlsZXJGcm9udGVuZERpc3Bh
dGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3Bl
Y3RvclByb2ZpbGVyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwg
dGhpcyk7CkBAIC00MjIsNyArNDI0LDcgQEAgdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50Ojpn
ZXRPYmplY3RCeUhlYXBPYmplY3RJZChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFMKICAgICAg
ICAgKmVycm9yID0gIkludmFsaWQgaGVhcCBzbmFwc2hvdCBvYmplY3QgaWQiOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIFNjcmlwdE9iamVjdCBoZWFwT2JqZWN0ID0gU2NyaXB0UHJvZmls
ZXI6Om9iamVjdEJ5SGVhcE9iamVjdElkKGlkKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRPYmpl
Y3QgaGVhcE9iamVjdCA9IFNjcmlwdFByb2ZpbGVyOjpvYmplY3RCeUhlYXBPYmplY3RJZChpZCk7
CiAgICAgaWYgKGhlYXBPYmplY3QuaGFzTm9WYWx1ZSgpKSB7CiAgICAgICAgICplcnJvciA9ICJP
YmplY3QgaXMgbm90IGF2YWlsYWJsZSI7CiAgICAgICAgIHJldHVybjsKQEAgLTQ0NCw3ICs0NDYs
NyBAQCB2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldEhlYXBPYmplY3RJZChFcnJvclN0
cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cgogICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW5z
cGVjdGVkIGNvbnRleHQgaGFzIGdvbmUiOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIFNj
cmlwdFZhbHVlIHZhbHVlID0gaW5qZWN0ZWRTY3JpcHQuZmluZE9iamVjdEJ5SWQob2JqZWN0SWQp
OworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHZhbHVlID0gaW5qZWN0ZWRTY3JpcHQuZmlu
ZE9iamVjdEJ5SWQob2JqZWN0SWQpOwogICAgIGlmICh2YWx1ZS5oYXNOb1ZhbHVlKCkgfHwgdmFs
dWUuaXNVbmRlZmluZWQoKSkgewogICAgICAgICAqZXJyb3JTdHJpbmcgPSAiT2JqZWN0IHdpdGgg
Z2l2ZW4gaWQgbm90IGZvdW5kIjsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgKaW5kZXggNTM3MDljNS4uOWFm
NzBjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2Zp
bGVyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmls
ZXJBZ2VudC5oCkBAIC0zMiwyMCArMzIsMjQgQEAKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RF
QlVHR0VSKSAmJiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFn
ZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2Uu
aCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIEluc3BlY3RvciB7
CitjbGFzcyBJbnNwZWN0b3JBcnJheTsKK2NsYXNzIEluc3BlY3Rvck9iamVjdDsKK30KKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7Ci1jbGFzcyBJ
bnNwZWN0b3JBcnJheTsKIGNsYXNzIEluc3BlY3RvckNvbnNvbGVBZ2VudDsKLWNsYXNzIEluc3Bl
Y3Rvck9iamVjdDsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBQYWdlOwogY2xh
c3MgU2NyaXB0SGVhcFNuYXBzaG90OwpAQCAtNTQsNyArNTgsNyBAQCBjbGFzcyBXb3JrZXJHbG9i
YWxTY29wZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3Rv
clByb2ZpbGVyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVj
dG9yUHJvZmlsZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JQ
cm9maWxlckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoSW5zcGVjdG9yUHJvZmlsZXJBZ2VudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvclByb2ZpbGVyQWdlbnQ+IGNyZWF0
ZShJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yQ29uc29sZUFnZW50KiwgUGFnZSosIElu
amVjdGVkU2NyaXB0TWFuYWdlciopOwpAQCAtODgsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGdldEhlYXBTbmFwc2hvdChFcnJvclN0cmluZyosIGludCB1aWQpOwogICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVQcm9maWxlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB0eXBl
LCBpbnQgdWlkKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVz
dHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIHRh
a2VIZWFwU25hcHNob3QoRXJyb3JTdHJpbmcqLCBjb25zdCBib29sKiByZXBvcnRQcm9ncmVzcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dC5jcHAKaW5kZXggMzhkY2RhYS4uNWZhZGI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcApAQCAtNDgsNyArNDgsNiBAQAog
I2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5k
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9y
VmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCkBAIC02NywxNiArNjYsMTggQEAKICNpbmNs
dWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIldlYlNvY2tldEZyYW1lLmgiCiAj
aW5jbHVkZSAiWE1MSHR0cFJlcXVlc3QuaCIKLQorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0
b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYv
SGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAordXNpbmcg
bmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmRE
aXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3JOZXR3b3JrRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwog
ICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JOZXR3b3JrQmFja2VuZERpc3BhdGNo
ZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CkBAIC02NTAsNyArNjUxLDcgQEAg
dm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjptYWluRnJhbWVOYXZpZ2F0ZWQoRG9jdW1lbnRM
b2FkZXIqIGxvYWRlcikKIH0KIAogSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6SW5zcGVjdG9yUmVz
b3VyY2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNw
ZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCi0gICAg
OiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJOZXR3b3JrIiksIGluc3RydW1lbnRp
bmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJOZXR3b3Jr
IiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCiAg
ICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX3Jlc291cmNlc0RhdGEoYWRvcHRQdHIobmV3
IE5ldHdvcmtSZXNvdXJjZXNEYXRhKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKaW5kZXggOGMyN2Y5NC4uMjQ4MzFjNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCkBA
IC0zMSw5ICszMSw5IEBACiAjaWZuZGVmIEluc3BlY3RvclJlc291cmNlQWdlbnRfaAogI2RlZmlu
ZSBJbnNwZWN0b3JSZXNvdXJjZUFnZW50X2gKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2Vu
dC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvckZyb250ZW5kLmgiCi0KKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2Uu
aCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNDEsOCArNDEsOSBAQAogCiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKIAotbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBTdHJpbmc7CituYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKK2NsYXNzIEluc3BlY3RvckFycmF5OworY2xhc3MgSW5zcGVjdG9yT2Jq
ZWN0OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Myw5ICs1NCw3IEBAIGNsYXNzIERv
Y3VtZW50TG9hZGVyOwogY2xhc3MgRm9ybURhdGE7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUVFBI
ZWFkZXJNYXA7Ci1jbGFzcyBJbnNwZWN0b3JBcnJheTsKIGNsYXNzIEluc3BlY3RvckNsaWVudDsK
LWNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKIGNsYXNz
IEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBVUkw7CkBAIC03Niw3ICs3NSw3IEBAIHN0cnVj
dCBXZWJTb2NrZXRGcmFtZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNz
IEluc3BlY3RvclJlc291cmNlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJs
aWMgSW5zcGVjdG9yTmV0d29ya0JhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIElu
c3BlY3Rvck5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogcHVibGljOgogICAgIHN0
YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvclJlc291cmNlQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VB
Z2VudCwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCiAgICAgewpAQCAtODUsNyArODQsNyBAQCBw
dWJsaWM6CiAKICAgICB+SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2
b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
LCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZF
UlJJREU7CiAKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CkBAIC0xMzUsNyArMTM0LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
YWJsZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VyQWdlbnRPdmVycmlk
ZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0RXh0cmFIVFRQSGVhZGVycyhFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+Jik7CisgICAgdmlydHVhbCB2b2lkIHNldEV4dHJhSFRUUEhlYWRlcnMoRXJyb3JT
dHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+Jik7CiAgICAg
dmlydHVhbCB2b2lkIGdldFJlc3BvbnNlQm9keShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkLCBTdHJpbmcqIGNvbnRlbnQsIGJvb2wqIGJhc2U2NEVuY29kZWQpOwogCiAgICAg
dmlydHVhbCB2b2lkIHJlcGxheVhIUihFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgcmVxdWVz
dElkKTsKQEAgLTE2MCw3ICsxNTksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9lbmFibGVkOwog
ICAgIGJvb2wgbV9jYWNoZURpc2FibGVkOwogICAgIGJvb2wgbV9sb2FkaW5nWEhSU3luY2hyb25v
dXNseTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtX2V4dHJhUmVxdWVzdEhlYWRlcnM7
CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBtX2V4dHJhUmVxdWVzdEhl
YWRlcnM7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8VGhyZWFkYWJsZUxvYWRlckNsaWVudCosIFJl
ZlB0cjxYSFJSZXBsYXlEYXRhPj4gUGVuZGluZ1hIUlJlcGxheURhdGFNYXA7CiAgICAgUGVuZGlu
Z1hIUlJlcGxheURhdGFNYXAgbV9wZW5kaW5nWEhSUmVwbGF5RGF0YTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggOGIzNDY5
MC4uNmVhMmY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clJ1bnRpbWVBZ2VudC5jcHAKQEAgLTM2LDggKzM2LDggQEAKIAogI2luY2x1ZGUgIkluamVjdGVk
U2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCi0jaW5jbHVkZSAi
SW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3dCYXNlLmgiCisjaW5jbHVk
ZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHBhcnNlci9QYXJzZXJF
cnJvci5oPgogI2luY2x1ZGUgPHBhcnNlci9Tb3VyY2VDb2RlLmg+CiAjaW5jbHVkZSA8cnVudGlt
ZS9Db21wbGV0aW9uLmg+CkBAIC01MCw2ICs1MCw4IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7
CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RhdGljIGJvb2wgYXNCb29sKGNvbnN0IGJvb2wqIGNvbnN0IGIpCkBAIC01OCw3ICs2MCw3IEBA
IHN0YXRpYyBib29sIGFzQm9vbChjb25zdCBib29sKiBjb25zdCBiKQogfQogCiBJbnNwZWN0b3JS
dW50aW1lQWdlbnQ6Okluc3BlY3RvclJ1bnRpbWVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0
TWFuYWdlcikKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIlJ1bnRpbWUi
KSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxp
dGVyYWwoIlJ1bnRpbWUiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fZW5hYmxlZChm
YWxzZSkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdl
cikKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAppbmRleCA5YjU3ZTJiLi4yZTkxNTlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFn
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2Vu
dC5oCkBAIC0zMywyNSArMzMsMjkgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNs
dWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRl
ICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9y
QXJyYXk7CitjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CitjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKK30K
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmplY3RlZFNjcmlwdDsKIGNsYXNzIElu
amVjdGVkU2NyaXB0TWFuYWdlcjsKLWNsYXNzIEluc3BlY3RvckFycmF5OwotY2xhc3MgSW5zcGVj
dG9yT2JqZWN0OwotY2xhc3MgSW5zcGVjdG9yVmFsdWU7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdl
bnRzOwogY2xhc3MgU2NyaXB0RGVidWdTZXJ2ZXI7CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsK
IAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvclJ1bnRpbWVB
Z2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JSdW50aW1l
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvclJ1bnRpbWVBZ2VudCA6
IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JSdW50aW1lQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JS
dW50aW1lQWdlbnQpOwogcHVibGljOgogICAgIHZpcnR1YWwgfkluc3BlY3RvclJ1bnRpbWVBZ2Vu
dCgpOwpAQCAtNzQsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNhbGxGdW5j
dGlvbk9uKEVycm9yU3RyaW5nKiwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgb2JqZWN0SWQsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGV4cHJl
c3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJy
YXk+KiBvcHRpb25hbEFyZ3VtZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5Piogb3B0aW9uYWxBcmd1bWVudHMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5k
TXV0ZUNvbnNvbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sKiByZXR1cm5C
eVZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2
aWV3LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxl
U2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
Y3BwCmluZGV4IDY3NjYyMmIuLjcxNjAxNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAgLTQ5LDcgKzQ5LDYgQEAKICNpbmNsdWRl
ICJIVE1MU3R5bGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ1NTQWdlbnQuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMu
aCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiUmVndWxhckV4cHJlc3Npb24uaCIKICNp
bmNsdWRlICJTVkdOYW1lcy5oIgpAQCAtNjAsNyArNTksNyBAQAogI2luY2x1ZGUgIlN0eWxlU2hl
ZXRDb250ZW50cy5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRMaXN0LmgiCiAjaW5jbHVkZSAiV2Vi
S2l0Q1NTS2V5ZnJhbWVzUnVsZS5oIgotCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZh
bHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTE0NCw2ICsxNDMsOCBAQCBQYXNzUmVm
UHRyPFdlYkNvcmU6OkNTU1J1bGVTb3VyY2VEYXRhPiBQYXJzZWRTdHlsZVNoZWV0OjpydWxlU291
cmNlRGF0YUF0KHVuc2lnbgogICAgIHJldHVybiBtX3NvdXJjZURhdGEtPmF0KGluZGV4KTsKIH0K
IAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBl
bnVtIE1lZGlhTGlzdFNvdXJjZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclN0eWxlU2hlZXQuaAppbmRleCBmNTAzOWI0Li4zYjc5YjYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgKQEAgLTMwLDggKzMwLDcgQEAK
ICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yU3R5bGVUZXh0
RWRpdG9yLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKLSNpbmNsdWRlICJJ
bnNwZWN0b3JWYWx1ZXMuaCIKLQorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTY0LDEyICs2MywxMiBAQCBwdWJsaWM6CiAg
ICAgewogICAgIH0KIAotICAgIGV4cGxpY2l0IEluc3BlY3RvckNTU0lkKFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IHZhbHVlKQorICAgIGV4cGxpY2l0IEluc3BlY3RvckNTU0lkKFJlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gdmFsdWUpCiAgICAgewogICAgICAgICBpZiAoIXZhbHVl
LT5nZXRTdHJpbmcoInN0eWxlU2hlZXRJZCIsICZtX3N0eWxlU2hlZXRJZCkpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIAotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IG9yZGlu
YWxWYWx1ZSA9IHZhbHVlLT5nZXQoIm9yZGluYWwiKTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yVmFsdWU+IG9yZGluYWxWYWx1ZSA9IHZhbHVlLT5nZXQoIm9yZGluYWwiKTsK
ICAgICAgICAgaWYgKCFvcmRpbmFsVmFsdWUgfHwgIW9yZGluYWxWYWx1ZS0+YXNOdW1iZXIoJm1f
b3JkaW5hbCkpCiAgICAgICAgICAgICBtX3N0eWxlU2hlZXRJZCA9ICIiOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVRleHRFZGl0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlVGV4dEVkaXRvci5j
cHAKaW5kZXggYjZlYzRkYi4uZjMwOTlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclN0eWxlVGV4dEVkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlVGV4dEVkaXRvci5jcHAKQEAgLTMyLDYgKzMyLDggQEAK
ICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yU3R5bGVT
aGVldC5oIgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIEluc3BlY3RvclN0eWxlVGV4dEVkaXRvcjo6SW5zcGVjdG9yU3R5bGVUZXh0RWRpdG9y
KFZlY3RvcjxJbnNwZWN0b3JTdHlsZVByb3BlcnR5PiogYWxsUHJvcGVydGllcywgVmVjdG9yPElu
c3BlY3RvclN0eWxlUHJvcGVydHk+KiBkaXNhYmxlZFByb3BlcnRpZXMsIGNvbnN0IFN0cmluZyYg
c3R5bGVUZXh0LCBjb25zdCBOZXdMaW5lQW5kV2hpdGVzcGFjZSYgZm9ybWF0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4
IDRjODhiMWIuLjRiMWM4YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKQEAgLTU0LDYgKzU0LDggQEAKICNpbmNsdWRlICJU
aW1lbGluZVJlY29yZEZhY3RvcnkuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAor
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lk
IFRpbWVsaW5lVGltZUNvbnZlcnRlcjo6cmVzZXQoKQpAQCAtNjUsNyArNjcsNyBAQCBJbnNwZWN0
b3JUaW1lbGluZUFnZW50Ojp+SW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpCiB7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFj
a2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3RvclRpbWVsaW5lRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5u
ZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JUaW1lbGluZUJhY2tlbmRE
aXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpAQCAtNTgwLDcgKzU4
Miw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ29tcGxldGVDdXJyZW50UmVj
b3JkKFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBlKQogfQogCiBJbnNwZWN0b3JUaW1lbGluZUFnZW50
OjpJbnNwZWN0b3JUaW1lbGluZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBJbnNwZWN0b3JNZW1vcnlB
Z2VudCogbWVtb3J5QWdlbnQsIEluc3BlY3RvclR5cGUgdHlwZSwgSW5zcGVjdG9yQ2xpZW50KiBj
bGllbnQpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJUaW1lbGluZSIp
LCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0
ZXJhbCgiVGltZWxpbmUiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fcGFnZUFnZW50
KHBhZ2VBZ2VudCkKICAgICAsIG1fbWVtb3J5QWdlbnQobWVtb3J5QWdlbnQpCiAgICAgLCBtX2lk
KDEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdl
bnQuaAppbmRleCA0NWRjMmYzLi43YmZhNTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKQEAgLTMzLDEwICszMywxMSBAQAogCiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgor
I2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckZyb250ZW5kLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgorI2luY2x1
ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpA
QCAtMTIxLDcgKzEyMiw3IEBAIHByaXZhdGU6CiB9OwogCiBjbGFzcyBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50Ci0gICAgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50CisgICAgOiBwdWJsaWMgSW5z
cGVjdG9yQWdlbnRCYXNlCiAgICAgLCBwdWJsaWMgSW5zcGVjdG9yVGltZWxpbmVCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvclRpbWVs
aW5lQWdlbnQpOwogcHVibGljOgpAQCAtMTM0LDcgKzEzNSw3IEBAIHB1YmxpYzoKIAogICAgIH5J
bnNwZWN0b3JUaW1lbGluZUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIHZp
cnR1YWwgdm9pZCBzdGFydChFcnJvclN0cmluZyosIGNvbnN0IGludCogbWF4Q2FsbFN0YWNrRGVw
dGgsIGNvbnN0IGJvb2wqIGluY2x1ZGVEb21Db3VudGVycyk7CkBAIC0yMjAsMzMgKzIyMSwzMyBA
QCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBUaW1lbGluZVJlY29yZFN0YWNrOwogCiAgICAg
c3RydWN0IFRpbWVsaW5lUmVjb3JkRW50cnkgewotICAgICAgICBUaW1lbGluZVJlY29yZEVudHJ5
KFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQsIFBhc3NSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBkYXRhLCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBjaGlsZHJlbiwgVGltZWxp
bmVSZWNvcmRUeXBlIHR5cGUsIHNpemVfdCB1c2VkSGVhcFNpemVBdFN0YXJ0KQorICAgICAgICBU
aW1lbGluZVJlY29yZEVudHJ5KFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
IHJlY29yZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gZGF0YSwgUGFz
c1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiBjaGlsZHJlbiwgVGltZWxpbmVSZWNv
cmRUeXBlIHR5cGUsIHNpemVfdCB1c2VkSGVhcFNpemVBdFN0YXJ0KQogICAgICAgICAgICAgOiBy
ZWNvcmQocmVjb3JkKSwgZGF0YShkYXRhKSwgY2hpbGRyZW4oY2hpbGRyZW4pLCB0eXBlKHR5cGUp
LCB1c2VkSGVhcFNpemVBdFN0YXJ0KHVzZWRIZWFwU2l6ZUF0U3RhcnQpCiAgICAgICAgIHsKICAg
ICAgICAgfQotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQ7Ci0gICAgICAg
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGE7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JB
cnJheT4gY2hpbGRyZW47CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4gcmVjb3JkOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGRh
dGE7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiBjaGlsZHJlbjsK
ICAgICAgICAgVGltZWxpbmVSZWNvcmRUeXBlIHR5cGU7CiAgICAgICAgIHNpemVfdCB1c2VkSGVh
cFNpemVBdFN0YXJ0OwogICAgIH07CiAKICAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KEluc3Ry
dW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdlQWdlbnQqLCBJbnNwZWN0b3JNZW1vcnlBZ2Vu
dCosIEluc3BlY3RvclR5cGUsIEluc3BlY3RvckNsaWVudCopOwogCi0gICAgdm9pZCBzZW5kRXZl
bnQoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KTsKLSAgICB2b2lkIGFwcGVuZFJlY29yZChQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSwgVGltZWxpbmVSZWNvcmRUeXBlLCBib29s
IGNhcHR1cmVDYWxsU3RhY2ssIEZyYW1lKik7Ci0gICAgdm9pZCBwdXNoQ3VycmVudFJlY29yZChQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4sIFRpbWVsaW5lUmVjb3JkVHlwZSwgYm9vbCBjYXB0
dXJlQ2FsbFN0YWNrLCBGcmFtZSopOworICAgIHZvaWQgc2VuZEV2ZW50KFBhc3NSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KTsKKyAgICB2b2lkIGFwcGVuZFJlY29yZChQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBkYXRhLCBUaW1lbGluZVJlY29yZFR5cGUs
IGJvb2wgY2FwdHVyZUNhbGxTdGFjaywgRnJhbWUqKTsKKyAgICB2b2lkIHB1c2hDdXJyZW50UmVj
b3JkKFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+LCBUaW1lbGluZVJlY29y
ZFR5cGUsIGJvb2wgY2FwdHVyZUNhbGxTdGFjaywgRnJhbWUqKTsKIAogICAgIHZvaWQgc2V0RE9N
Q291bnRlcnMoVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50KiByZWNvcmQpOwot
ICAgIHZvaWQgc2V0RnJhbWVJZGVudGlmaWVyKEluc3BlY3Rvck9iamVjdCogcmVjb3JkLCBGcmFt
ZSopOworICAgIHZvaWQgc2V0RnJhbWVJZGVudGlmaWVyKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0KiByZWNvcmQsIEZyYW1lKik7CiAKICAgICB2b2lkIGRpZENvbXBsZXRlQ3VycmVudFJlY29y
ZChUaW1lbGluZVJlY29yZFR5cGUpOwogCi0gICAgdm9pZCBzZXRIZWFwU2l6ZVN0YXRpc3RpY3Mo
SW5zcGVjdG9yT2JqZWN0KiByZWNvcmQpOworICAgIHZvaWQgc2V0SGVhcFNpemVTdGF0aXN0aWNz
KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiByZWNvcmQpOwogICAgIHZvaWQgY29tbWl0RnJh
bWVSZWNvcmQoKTsKIAotICAgIHZvaWQgYWRkUmVjb3JkVG9UaW1lbGluZShQYXNzUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4sIFRpbWVsaW5lUmVjb3JkVHlwZSk7Ci0gICAgdm9pZCBpbm5lckFkZFJl
Y29yZFRvVGltZWxpbmUoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+LCBUaW1lbGluZVJlY29y
ZFR5cGUpOworICAgIHZvaWQgYWRkUmVjb3JkVG9UaW1lbGluZShQYXNzUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0PiwgVGltZWxpbmVSZWNvcmRUeXBlKTsKKyAgICB2b2lkIGlubmVy
QWRkUmVjb3JkVG9UaW1lbGluZShQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiwgVGltZWxpbmVSZWNvcmRUeXBlKTsKICAgICB2b2lkIGNsZWFyUmVjb3JkU3RhY2soKTsKIAog
ICAgIHZvaWQgbG9jYWxUb1BhZ2VRdWFkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IExheW91
dFJlY3QmLCBGbG9hdFF1YWQqKTsKQEAgLTI2Niw3ICsyNjcsNyBAQCBwcml2YXRlOgogCiAgICAg
aW50IG1faWQ7CiAgICAgaW50IG1fbWF4Q2FsbFN0YWNrRGVwdGg7Ci0gICAgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gbV9wZW5kaW5nRnJhbWVSZWNvcmQ7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0PiBtX3BlbmRpbmdGcmFtZVJlY29yZDsKICAgICBJbnNwZWN0b3JUeXBl
IG1faW5zcGVjdG9yVHlwZTsKICAgICBJbnNwZWN0b3JDbGllbnQqIG1fY2xpZW50OwogICAgIFdl
YWtQdHJGYWN0b3J5PEluc3BlY3RvclRpbWVsaW5lQWdlbnQ+IG1fd2Vha0ZhY3Rvcnk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5oCnNpbWls
YXJpdHkgaW5kZXggNjklCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JBZ2VudFJlZ2lzdHJ5LmgKcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JXZWJBZ2VudEJhc2UuaAppbmRleCA0ZmQwMzUzLi5kZmNjNGE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXZWJBZ2VudEJhc2UuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjQsMjkgKzI0LDI4IEBACiAgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLSNpZm5kZWYgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeV9oCi0jZGVmaW5lIElu
c3BlY3RvckFnZW50UmVnaXN0cnlfaAorI2lmbmRlZiBJbnNwZWN0b3JXZWJBZ2VudEJhc2VfaAor
I2RlZmluZSBJbnNwZWN0b3JXZWJBZ2VudEJhc2VfaAogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFz
ZUFnZW50LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisjaW5jbHVkZSAiSW5zcGVjdG9yRm9yd2FyZGluZy5oIgorI2luY2x1ZGUgPGluc3Bl
Y3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcjsKK2NsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiAKLWNsYXNzIEluc3BlY3RvckFnZW50
UmVnaXN0cnkgewotcHVibGljOgotICAgIHZvaWQgYXBwZW5kKFBhc3NPd25QdHI8SW5zcGVjdG9y
QmFzZUFnZW50Pik7CitjbGFzcyBJbnNwZWN0b3JBZ2VudEJhc2UgOiBwdWJsaWMgSW5zcGVjdG9y
OjpJbnNwZWN0b3JBZ2VudEJhc2UgeworcHJvdGVjdGVkOgorICAgIEluc3BlY3RvckFnZW50QmFz
ZShjb25zdCBTdHJpbmcmIG5hbWUsIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdB
Z2VudHMpCisgICAgICAgIDogSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudEJhc2UobmFtZSkKKyAg
ICAgICAgLCBtX2luc3RydW1lbnRpbmdBZ2VudHMoaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICB7
CisgICAgfQogCi0gICAgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKTsKLSAgICB2b2lk
IHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCk7Ci0gICAgdm9pZCBkaXNjYXJkQWdlbnRz
KCk7Ci0KLXByaXZhdGU6Ci0gICAgVmVjdG9yPE93blB0cjxJbnNwZWN0b3JCYXNlQWdlbnQ+PiBt
X2FnZW50czsKKyAgICBJbnN0cnVtZW50aW5nQWdlbnRzKiBtX2luc3RydW1lbnRpbmdBZ2VudHM7
CiB9OwotCisgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyAhZGVmaW5l
ZChJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5X2gpCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9y
V2ViQWdlbnRCYXNlX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yV29ya2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
cldvcmtlckFnZW50LmNwcAppbmRleCAzMjgwMWM2Li44ODQ1NmM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKQEAgLTM2LDEzICsz
NiwxNSBAQAogCiAjaW5jbHVkZSAiSW5zcGVjdG9yRm9yd2FyZGluZy5oIgogI2luY2x1ZGUgIklu
c3BlY3RvckZyb250ZW5kLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVk
ZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIldv
cmtlckdsb2JhbFNjb3BlUHJveHkuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFs
dWVzLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OldvcmtlckZyb250ZW5kQ2hhbm5lbCA6IHB1
YmxpYyBXb3JrZXJHbG9iYWxTY29wZVByb3h5OjpQYWdlSW5zcGVjdG9yIHsKQEAgLTEwNyw3ICsx
MDksNyBAQCBQYXNzT3duUHRyPEluc3BlY3RvcldvcmtlckFnZW50PiBJbnNwZWN0b3JXb3JrZXJB
Z2VudDo6Y3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudAogfQogCiBJbnNwZWN0b3JXb3JrZXJBZ2Vu
dDo6SW5zcGVjdG9yV29ya2VyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cykKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIldvcmtlciIp
LCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0
ZXJhbCgiV29ya2VyIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX2VuYWJsZWQoZmFs
c2UpCiAgICAgLCBtX3Nob3VsZFBhdXNlRGVkaWNhdGVkV29ya2VyT25TdGFydChmYWxzZSkKIHsK
QEAgLTExOSw3ICsxMjEsNyBAQCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6fkluc3BlY3Rvcldvcmtl
ckFnZW50KCkKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvcldvcmtlckFn
ZW50KDApOwogfQogCi12b2lkIEluc3BlY3RvcldvcmtlckFnZW50OjpkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVj
dG9yV29ya2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Oklu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNo
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvcldvcmtlckZyb250ZW5kRGlzcGF0Y2hlcj4o
ZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yV29y
a2VyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oCmluZGV4
IGFiNjIyMWEuLmVhNDc1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JXb3JrZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JXb3JrZXJBZ2VudC5oCkBAIC0zMSwxMiArMzEsMTYgQEAKICNpZm5kZWYgSW5zcGVjdG9y
V29ya2VyQWdlbnRfaAogI2RlZmluZSBJbnNwZWN0b3JXb3JrZXJBZ2VudF9oCiAKLSNpbmNsdWRl
ICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKLW5hbWVzcGFjZSBXZWJD
b3JlIHsKK25hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworfQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnNwZWN0b3JXb3JrZXJGcm9udGVuZERpc3Bh
dGNoZXI7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgVVJMOwpAQCAtNDQsMTIg
KzQ4LDEyIEBAIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlUHJveHk7CiAKIHR5cGVkZWYgU3RyaW5n
IEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JXb3JrZXJBZ2VudCA6IHB1YmxpYyBJbnNw
ZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JXb3JrZXJCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXIgeworY2xhc3MgSW5zcGVjdG9yV29ya2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdl
bnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yV29ya2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JXb3JrZXJBZ2VudD4gY3Jl
YXRlKEluc3RydW1lbnRpbmdBZ2VudHMqKTsKICAgICB+SW5zcGVjdG9yV29ya2VyQWdlbnQoKTsK
IAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uCkBAIC02Myw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
Y2FuSW5zcGVjdFdvcmtlcnMoRXJyb3JTdHJpbmcqLCBib29sKik7CiAgICAgdmlydHVhbCB2b2lk
IGNvbm5lY3RUb1dvcmtlcihFcnJvclN0cmluZyosIGludCB3b3JrZXJJZCk7CiAgICAgdmlydHVh
bCB2b2lkIGRpc2Nvbm5lY3RGcm9tV29ya2VyKEVycm9yU3RyaW5nKiwgaW50IHdvcmtlcklkKTsK
LSAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb1dvcmtlcihFcnJvclN0cmluZyosIGludCB3
b3JrZXJJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIG1lc3NhZ2UpOworICAgIHZp
cnR1YWwgdm9pZCBzZW5kTWVzc2FnZVRvV29ya2VyKEVycm9yU3RyaW5nKiwgaW50IHdvcmtlcklk
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBtZXNzYWdlKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0QXV0b2Nvbm5lY3RUb1dvcmtlcnMoRXJyb3JTdHJpbmcqLCBib29s
IHZhbHVlKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnN0cnVtZW50aW5nQWdlbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0
cnVtZW50aW5nQWdlbnRzLmNwcAppbmRleCA4Y2ZiMzI4Li42MjhmMTI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuY3BwCkBAIC00MCw2ICs0
MCw4IEBACiAjaW5jbHVkZSAiV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogSW5zdHJ1bWVudGluZ0FnZW50czo6SW5zdHJ1bWVudGluZ0FnZW50
cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmNwcAppbmRleCA5NjlkMzBkLi41Y2NhNDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTQ2LDYgKzQ2LDggQEAgc3RhdGlj
IHNpemVfdCBtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUgPSAxMDAgKiAxMDAwICogMTAwMDsK
IHN0YXRpYyBzaXplX3QgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUgPSAxMCAqIDEw
MDAgKiAxMDAwOwogfQogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VD
b25zb2xlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdl
bnQuY3BwCmluZGV4IGJjZDg5ZjIuLmNlYWJiZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHAKQEAgLTQwLDcgKzQwLDggQEAKICNpbmNsdWRlICJJ
bnNwZWN0b3JBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCiAjaW5jbHVk
ZSAiTm9kZS5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgorCit1c2luZyBuYW1lc3BhY2Ug
SW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY2LDcgKzY3LDcgQEAgdm9p
ZCBQYWdlQ29uc29sZUFnZW50OjpjbGVhck1lc3NhZ2VzKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZykKIGNsYXNzIEluc3BlY3RhYmxlTm9kZSA6IHB1YmxpYyBJbmplY3RlZFNjcmlwdEhvc3Q6Oklu
c3BlY3RhYmxlT2JqZWN0IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBJbnNwZWN0YWJsZU5vZGUo
Tm9kZSogbm9kZSkgOiBtX25vZGUobm9kZSkgeyB9Ci0gICAgdmlydHVhbCBTY3JpcHRWYWx1ZSBn
ZXQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlKQorICAgIHZpcnR1YWwgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUgZ2V0KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBJ
bmplY3RlZFNjcmlwdEhvc3Q6Om5vZGVBc1NjcmlwdFZhbHVlKHN0YXRlLCBtX25vZGUpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCmlu
ZGV4IDg3ZmFiZWUuLjA0ZDQ3OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9QYWdlRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Bh
Z2VEZWJ1Z2dlckFnZW50LmNwcApAQCAtNDEsNiArNDEsOCBAQAogI2luY2x1ZGUgIlBhZ2VDb25z
b2xlLmgiCiAjaW5jbHVkZSAiUGFnZVNjcmlwdERlYnVnU2VydmVyLmgiCiAKK3VzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc093blB0cjxQYWdl
RGVidWdnZXJBZ2VudD4gUGFnZURlYnVnZ2VyQWdlbnQ6OmNyZWF0ZShJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwg
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3BlY3Rvck92
ZXJsYXkqIG92ZXJsYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFn
ZURlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJB
Z2VudC5oCmluZGV4IDU1ODYzMTEuLmE1ZjgxODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9QYWdlRGVidWdnZXJBZ2VudC5oCkBAIC0zMiw2ICszMiw3IEBACiAjZGVmaW5lIFBhZ2VE
ZWJ1Z2dlckFnZW50X2gKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFC
TEUoSU5TUEVDVE9SKQorCiAjaW5jbHVkZSAiSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIgogI2lu
Y2x1ZGUgIlBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggNTdiM2IzMC4uNTQ4NzYzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcApAQCAtNDcsNiAr
NDcsOCBAQAogCiB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6RXhlY3V0aW9u
Q29udGV4dERlc2NyaXB0aW9uOwogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFBhZ2VSdW50aW1lQWdlbnQ6OlBhZ2VSdW50aW1lQWdlbnQoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIFBhZ2UqIHBhZ2UsIEluc3BlY3RvclBhZ2VBZ2Vu
dCogcGFnZUFnZW50KQpAQCAtNjMsNyArNjUsNyBAQCBQYWdlUnVudGltZUFnZW50Ojp+UGFnZVJ1
bnRpbWVBZ2VudCgpCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRQYWdlUnVudGltZUFn
ZW50KDApOwogfQogCi12b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBQYWdlUnVudGlt
ZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVu
ZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JSdW50aW1lQmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaAppbmRleCBlOGIzM2IyLi5jZDA0
ZDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmgKQEAg
LTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBhZ2VS
dW50aW1lQWdlbnQoaW5zdHJ1bWVudGluZ0FnZW50cywgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBw
YWdlLCBwYWdlQWdlbnQpKTsKICAgICB9CiAgICAgdmlydHVhbCB+UGFnZVJ1bnRpbWVBZ2VudCgp
OwotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJp
bmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNwcAppbmRleCA4OWI5YTBiLi4zNjU3
YTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNwcApA
QCAtMzEsMTYgKzMxLDE2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2NyaXB0
QXJndW1lbnRzLmgiCiAKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPGJpbmRp
bmdzL1NjcmlwdFZhbHVlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxT
Y3JpcHRBcmd1bWVudHM+IFNjcmlwdEFyZ3VtZW50czo6Y3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBz
Y3JpcHRTdGF0ZSwgVmVjdG9yPFNjcmlwdFZhbHVlPiYgYXJndW1lbnRzKQorUGFzc1JlZlB0cjxT
Y3JpcHRBcmd1bWVudHM+IFNjcmlwdEFyZ3VtZW50czo6Y3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBz
Y3JpcHRTdGF0ZSwgVmVjdG9yPERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlPiYgYXJndW1lbnRzKQog
ewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2NyaXB0QXJndW1lbnRzKHNjcmlwdFN0YXRlLCBh
cmd1bWVudHMpKTsKIH0KIAotU2NyaXB0QXJndW1lbnRzOjpTY3JpcHRBcmd1bWVudHMoSlNDOjpF
eGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBWZWN0b3I8U2NyaXB0VmFsdWU+JiBhcmd1bWVudHMpCitT
Y3JpcHRBcmd1bWVudHM6OlNjcmlwdEFyZ3VtZW50cyhKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3Rh
dGUsIFZlY3RvcjxEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZT4mIGFyZ3VtZW50cykKICAgICA6IG1f
Z2xvYmFsT2JqZWN0KHNjcmlwdFN0YXRlLT52bSgpLCBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpKQogewogICAgIG1fYXJndW1lbnRzLnN3YXAoYXJndW1lbnRzKTsKQEAgLTUwLDcg
KzUwLDcgQEAgU2NyaXB0QXJndW1lbnRzOjp+U2NyaXB0QXJndW1lbnRzKCkKIHsKIH0KIAotY29u
c3QgU2NyaXB0VmFsdWUgJlNjcmlwdEFyZ3VtZW50czo6YXJndW1lbnRBdChzaXplX3QgaW5kZXgp
IGNvbnN0Citjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSAmU2NyaXB0QXJndW1lbnRzOjph
cmd1bWVudEF0KHNpemVfdCBpbmRleCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9hcmd1bWVudHMu
c2l6ZSgpID4gaW5kZXgpOwogICAgIHJldHVybiBtX2FyZ3VtZW50c1tpbmRleF07CkBAIC02OCw3
ICs2OCw3IEBAIGJvb2wgU2NyaXB0QXJndW1lbnRzOjpnZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmco
U3RyaW5nJiByZXN1bHQsIGJvb2wgY2hlY2tGb3JOdWxsCiAgICAgaWYgKCFhcmd1bWVudENvdW50
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1
ZSA9IGFyZ3VtZW50QXQoMCk7CisgICAgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZh
bHVlID0gYXJndW1lbnRBdCgwKTsKICAgICBpZiAoY2hlY2tGb3JOdWxsT3JVbmRlZmluZWQgJiYg
KHZhbHVlLmlzTnVsbCgpIHx8IHZhbHVlLmlzVW5kZWZpbmVkKCkpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1
bWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaAppbmRl
eCAxNzQzOWEwLi40N2E5NjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
U2NyaXB0QXJndW1lbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEFy
Z3VtZW50cy5oCkBAIC0xLDEwICsxLDEwIEBACiAvKgogICogQ29weXJpZ2h0IChjKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKKyAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKICAqIG1ldDoKLSAqIAorICoKICAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CiAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCkBAIC0xNCw3ICsxNCw3IEBACiAgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCiAgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQogICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
IAorICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKICAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCiAgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKQEAgLTM3
LDYgKzM3LDEwIEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgRGVwcmVjYXRlZCB7CitjbGFzcyBTY3JpcHRWYWx1
ZTsKK30KKwogbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBKU0dsb2Jh
bE9iamVjdDsKQEAgLTQ0LDE1ICs0OCwxMyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdDsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTY3JpcHRWYWx1ZTsKLQogY2xhc3MgU2NyaXB0QXJn
dW1lbnRzIDogcHVibGljIFJlZkNvdW50ZWQ8U2NyaXB0QXJndW1lbnRzPiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBjcmVhdGUoSlNDOjpFeGVjU3Rh
dGUqLCBWZWN0b3I8U2NyaXB0VmFsdWU+JiBhcmd1bWVudHMpOworICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFNjcmlwdEFyZ3VtZW50cz4gY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiwgVmVjdG9yPERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlPiYgYXJndW1lbnRzKTsKIAogICAgIH5TY3JpcHRBcmd1bWVudHMo
KTsKIAotICAgIGNvbnN0IFNjcmlwdFZhbHVlJiBhcmd1bWVudEF0KHNpemVfdCkgY29uc3Q7Cisg
ICAgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGFyZ3VtZW50QXQoc2l6ZV90KSBjb25z
dDsKICAgICBzaXplX3QgYXJndW1lbnRDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJndW1lbnRz
LnNpemUoKTsgfQogCiAgICAgSlNDOjpFeGVjU3RhdGUqIGdsb2JhbFN0YXRlKCkgY29uc3Q7CkBA
IC02MSwxMCArNjMsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaXNFcXVhbChTY3JpcHRBcmd1bWVu
dHMqKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBTY3JpcHRBcmd1bWVudHMoSlNDOjpFeGVjU3Rh
dGUqLCBWZWN0b3I8U2NyaXB0VmFsdWU+JiBhcmd1bWVudHMpOworICAgIFNjcmlwdEFyZ3VtZW50
cyhKU0M6OkV4ZWNTdGF0ZSosIFZlY3RvcjxEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZT4mIGFyZ3Vt
ZW50cyk7CiAKICAgICBKU0M6OlN0cm9uZzxKU0M6OkpTR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9i
amVjdDsKLSAgICBWZWN0b3I8U2NyaXB0VmFsdWU+IG1fYXJndW1lbnRzOworICAgIFZlY3RvcjxE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZT4gbV9hcmd1bWVudHM7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2Fs
bEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuY3Bw
CmluZGV4IDFhYmJkNzUuLjY2Zjc4YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9TY3JpcHRDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9T
Y3JpcHRDYWxsRnJhbWUuY3BwCkBAIC0zMiw5ICszMiwxMSBAQAogI2luY2x1ZGUgIlNjcmlwdENh
bGxGcmFtZS5oIgogCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKLSNpbmNsdWRlICJJ
bnNwZWN0b3JWYWx1ZXMuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNjcmlwdENhbGxGcmFtZTo6U2NyaXB0Q2FsbEZyYW1l
KGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNjcmlwdE5hbWUsIHVu
c2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9TY3JpcHRDYWxsRnJhbWUuaAppbmRleCA2N2YwZDM2Li4yNDI1MTRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5oCkBAIC0zOCw5ICszOCwxMSBAQAog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQorbmFtZXNwYWNlIEluc3BlY3RvciB7CiBjbGFzcyBJ
bnNwZWN0b3JPYmplY3Q7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2NyaXB0
Q2FsbEZyYW1lICB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRD
YWxsU3RhY2suY3BwCmluZGV4IGU2OTRiZjEuLjM2YzUwMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwCkBAIC0zMiw3ICszMiw5IEBACiAjaW5jbHVk
ZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAKICNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5o
IgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNw
ZWN0b3JWYWx1ZXMuaD4KKwordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0
Q2FsbFN0YWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmgK
aW5kZXggZTBkN2ZkNS4uZDhlYzM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1NjcmlwdENhbGxTdGFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3Jp
cHRDYWxsU3RhY2suaApAQCAtNDIsOCArNDIsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIEluc3BlY3RvckFycmF5OwotCiBjbGFzcyBTY3JpcHRDYWxsU3RhY2sgOiBwdWJsaWMg
UmVmQ291bnRlZDxTY3JpcHRDYWxsU3RhY2s+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90IG1heENhbGxTdGFja1NpemVUb0NhcHR1cmUgPSAyMDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnTGlzdGVuZXIuaAppbmRleCA1YmNhNzUxLi4wZWI0ZmIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdMaXN0ZW5l
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmgK
QEAgLTM3LDggKzM3LDExIEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIERl
cHJlY2F0ZWQgewogY2xhc3MgU2NyaXB0VmFsdWU7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgU2NyaXB0RGVidWdMaXN0ZW5lciB7CiBwdWJsaWM6CkBAIC02OCw3ICs3MSw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRQYXJzZVNvdXJjZShTb3VyY2VJRCwgY29u
c3QgU2NyaXB0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmYWlsZWRUb1BhcnNlU291cmNlKGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGRhdGEsIGludCBmaXJzdExpbmUsIGludCBl
cnJvckxpbmUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZFBhdXNlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFt
ZXMsIGNvbnN0IFNjcmlwdFZhbHVlJiBleGNlcHRpb24pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkUGF1c2UoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYg
Y2FsbEZyYW1lcywgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGV4Y2VwdGlvbikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb250aW51ZSgpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAKaW5kZXggOGJh
YWI5ZS4uOWYyZjdmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVs
aW5lUmVjb3JkRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVs
aW5lUmVjb3JkRmFjdG9yeS5jcHAKQEAgLTM2LDE1ICszNiwxNyBAQAogCiAjaW5jbHVkZSAiRXZl
bnQuaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMu
aCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgogI2luY2x1
ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNp
bmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0
b3J5LmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUg
PHd0Zi9DdXJyZW50VGltZS5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJl
Y29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNSZWNvcmQoZG91YmxlIHN0YXJ0VGltZSwgaW50IG1h
eENhbGxTdGFja0RlcHRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Rp
bWVsaW5lUmVjb3JkRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5l
UmVjb3JkRmFjdG9yeS5oCmluZGV4IGRiNDRiMWUuLmU0YmY5MGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmgKQEAgLTMxLDkgKzMxLDgg
QEAKICNpZm5kZWYgVGltZWxpbmVSZWNvcmRGYWN0b3J5X2gKICNkZWZpbmUgVGltZWxpbmVSZWNv
cmRGYWN0b3J5X2gKIAotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIlVS
TC5oIgotI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVj
dG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIApAQCAtNDEsNjQgKzQwLDYyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgIGNsYXNzIEV2ZW50OwogICAgIGNsYXNzIEZsb2F0UXVhZDsKLSAgICBjbGFzcyBJbnNw
ZWN0b3JPYmplY3Q7Ci0gICAgY2xhc3MgSW50UmVjdDsKICAgICBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIAogICAgIGNsYXNzIFRpbWVsaW5lUmVj
b3JkRmFjdG9yeSB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IGNyZWF0ZUdlbmVyaWNSZWNvcmQoZG91YmxlIHN0YXJ0VGltZSwgaW50IG1h
eENhbGxTdGFja0RlcHRoKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBjcmVhdGVCYWNrZ3JvdW5kUmVjb3JkKGRvdWJsZSBzdGFydFRpbWUsIGNvbnN0IFN0cmlu
ZyYgdGhyZWFkKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3Q+IGNyZWF0ZUdlbmVyaWNSZWNvcmQoZG91YmxlIHN0YXJ0VGltZSwgaW50IG1heENh
bGxTdGFja0RlcHRoKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+IGNyZWF0ZUJhY2tncm91bmRSZWNvcmQoZG91YmxlIHN0YXJ0VGltZSwgY29u
c3QgU3RyaW5nJiB0aHJlYWQpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gY3JlYXRlR0NFdmVudERhdGEoY29uc3Qgc2l6ZV90IHVzZWRIZWFwU2l6ZURlbHRh
KTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
IGNyZWF0ZUdDRXZlbnREYXRhKGNvbnN0IHNpemVfdCB1c2VkSGVhcFNpemVEZWx0YSk7CiAKLSAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVGdW5jdGlvbkNh
bGxEYXRhKGNvbnN0IFN0cmluZyYgc2NyaXB0TmFtZSwgaW50IHNjcmlwdExpbmUpOworICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlRnVu
Y3Rpb25DYWxsRGF0YShjb25zdCBTdHJpbmcmIHNjcmlwdE5hbWUsIGludCBzY3JpcHRMaW5lKTsK
IAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUV2ZW50
RGlzcGF0Y2hEYXRhKGNvbnN0IEV2ZW50Jik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVFdmVudERpc3BhdGNoRGF0YShjb25zdCBF
dmVudCYpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3Jl
YXRlR2VuZXJpY1RpbWVyRGF0YShpbnQgdGltZXJJZCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVHZW5lcmljVGltZXJEYXRhKGlu
dCB0aW1lcklkKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IGNyZWF0ZVRpbWVySW5zdGFsbERhdGEoaW50IHRpbWVySWQsIGludCB0aW1lb3V0LCBib29sIHNp
bmdsZVNob3QpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4gY3JlYXRlVGltZXJJbnN0YWxsRGF0YShpbnQgdGltZXJJZCwgaW50IHRpbWVvdXQs
IGJvb2wgc2luZ2xlU2hvdCk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBjcmVhdGVYSFJSZWFkeVN0YXRlQ2hhbmdlRGF0YShjb25zdCBTdHJpbmcmIHVybCwg
aW50IHJlYWR5U3RhdGUpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdD4gY3JlYXRlWEhSUmVhZHlTdGF0ZUNoYW5nZURhdGEoY29uc3QgU3RyaW5n
JiB1cmwsIGludCByZWFkeVN0YXRlKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IGNyZWF0ZVhIUkxvYWREYXRhKGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVhI
UkxvYWREYXRhKGNvbnN0IFN0cmluZyYgdXJsKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUV2YWx1YXRlU2NyaXB0RGF0YShjb25zdCBTdHJpbmcm
LCBkb3VibGUgbGluZU51bWJlcik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVFdmFsdWF0ZVNjcmlwdERhdGEoY29uc3QgU3RyaW5n
JiwgZG91YmxlIGxpbmVOdW1iZXIpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gY3JlYXRlVGltZVN0YW1wRGF0YShjb25zdCBTdHJpbmcmKTsKKyAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVRpbWVT
dGFtcERhdGEoY29uc3QgU3RyaW5nJik7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBjcmVhdGVSZXNvdXJjZVNlbmRSZXF1ZXN0RGF0YShjb25zdCBTdHJpbmcm
IHJlcXVlc3RJZCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVSZXNvdXJjZVNlbmRSZXF1
ZXN0RGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7
CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVTY2hl
ZHVsZVJlc291cmNlUmVxdWVzdERhdGEoY29uc3QgU3RyaW5nJik7CisgICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVTY2hlZHVsZVJlc291
cmNlUmVxdWVzdERhdGEoY29uc3QgU3RyaW5nJik7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVSZXNvdXJjZVJlY2VpdmVSZXNwb25zZURhdGEoY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVJlc291
cmNlUmVjZWl2ZVJlc3BvbnNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gY3JlYXRlUmVjZWl2ZVJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwg
aW50IGxlbmd0aCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0PiBjcmVhdGVSZWNlaXZlUmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVz
dElkLCBpbnQgbGVuZ3RoKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IGNyZWF0ZVJlc291cmNlRmluaXNoRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwg
Ym9vbCBkaWRGYWlsLCBkb3VibGUgZmluaXNoVGltZSk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVSZXNvdXJjZUZpbmlzaERhdGEo
Y29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGJvb2wgZGlkRmFpbCwgZG91YmxlIGZpbmlzaFRpbWUp
OwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlTGF5
b3V0RGF0YSh1bnNpZ25lZCBkaXJ0eU9iamVjdHMsIHVuc2lnbmVkIHRvdGFsT2JqZWN0cywgYm9v
bCBwYXJ0aWFsTGF5b3V0KTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUxheW91dERhdGEodW5zaWduZWQgZGlydHlPYmplY3RzLCB1
bnNpZ25lZCB0b3RhbE9iamVjdHMsIGJvb2wgcGFydGlhbExheW91dCk7CiAKLSAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVEZWNvZGVJbWFnZURhdGEoY29u
c3QgU3RyaW5nJiBpbWFnZVR5cGUpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlRGVjb2RlSW1hZ2VEYXRhKGNvbnN0IFN0cmluZyYg
aW1hZ2VUeXBlKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IGNyZWF0ZVJlc2l6ZUltYWdlRGF0YShib29sIHNob3VsZENhY2hlKTsKKyAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVJlc2l6ZUltYWdl
RGF0YShib29sIHNob3VsZENhY2hlKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IGNyZWF0ZU1hcmtEYXRhKGJvb2wgaXNNYWluRnJhbWUpOworICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlTWFya0Rh
dGEoYm9vbCBpc01haW5GcmFtZSk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBjcmVhdGVQYXJzZUhUTUxEYXRhKHVuc2lnbmVkIHN0YXJ0TGluZSk7CisgICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVQ
YXJzZUhUTUxEYXRhKHVuc2lnbmVkIHN0YXJ0TGluZSk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVBbmltYXRpb25GcmFtZURhdGEoaW50IGNhbGxi
YWNrSWQpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdD4gY3JlYXRlQW5pbWF0aW9uRnJhbWVEYXRhKGludCBjYWxsYmFja0lkKTsKIAotICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVBhaW50RGF0YShjb25z
dCBGbG9hdFF1YWQmKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+IGNyZWF0ZVBhaW50RGF0YShjb25zdCBGbG9hdFF1YWQmKTsKIAotICAgICAg
ICBzdGF0aWMgdm9pZCBhcHBlbmRMYXlvdXRSb290KEluc3BlY3Rvck9iamVjdCogZGF0YSwgY29u
c3QgRmxvYXRRdWFkJik7CisgICAgICAgIHN0YXRpYyB2b2lkIGFwcGVuZExheW91dFJvb3QoSW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIGRhdGEsIGNvbnN0IEZsb2F0UXVhZCYpOwogCiAjaWYg
RU5BQkxFKFdFQl9TT0NLRVRTKQotICAgICAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBjcmVhdGVXZWJTb2NrZXRDcmVhdGVEYXRhKHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCisgICAgICAg
IHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3Jl
YXRlV2ViU29ja2V0Q3JlYXRlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQogICAgICAgICB7Ci0gICAgICAgICAgICBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsK
KyAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gZGF0YSA9IElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGRhdGEtPnNl
dE51bWJlcigiaWRlbnRpZmllciIsIGlkZW50aWZpZXIpOwogICAgICAgICAgICAgZGF0YS0+c2V0
U3RyaW5nKCJ1cmwiLCB1cmwuc3RyaW5nKCkpOwogICAgICAgICAgICAgaWYgKCFwcm90b2NvbC5p
c051bGwoKSkKQEAgLTEwNiw5ICsxMDMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
ICAgICByZXR1cm4gZGF0YS5yZWxlYXNlKCk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMg
aW5saW5lIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVHZW5lcmljV2ViU29ja2V0
RGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCisgICAgICAgIHN0YXRpYyBpbmxpbmUgUGFz
c1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlR2VuZXJpY1dlYlNvY2tl
dERhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogICAgICAgICB7Ci0gICAgICAgICAgICBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsK
KyAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gZGF0YSA9IElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGRhdGEtPnNl
dE51bWJlcigiaWRlbnRpZmllciIsIGlkZW50aWZpZXIpOwogICAgICAgICAgICAgcmV0dXJuIGRh
dGEucmVsZWFzZSgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvV29ya2VyQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9X
b3JrZXJDb25zb2xlQWdlbnQuY3BwCmluZGV4IDE1YmI3YTguLjY2NmE4ZGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQuY3BwCkBAIC0zNCw2ICsz
NCw4IEBACiAKICNpbmNsdWRlICJXb3JrZXJDb25zb2xlQWdlbnQuaCIKIAordXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXb3JrZXJDb25zb2xlQWdl
bnQ6OldvcmtlckNvbnNvbGVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcAppbmRl
eCA3MTM2ZTQ2Li45N2QwMGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
V29ya2VyRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dv
cmtlckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0zOCw2ICszOCw4IEBACiAjaW5jbHVkZSAiV29ya2Vy
VGhyZWFkLmgiCiAjaW5jbHVkZSA8d3RmL01lc3NhZ2VRdWV1ZS5oPgogCit1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAKaW5kZXggZWYyMzAzNy4uN2Y1ZTcwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNTEsOCArNTEs
MTEgQEAKICNpbmNsdWRlICJXb3JrZXJSZXBvcnRpbmdQcm94eS5oIgogI2luY2x1ZGUgIldvcmtl
clJ1bnRpbWVBZ2VudC5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorI2luY2x1ZGUgPGlu
c3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogbmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDU4YmRhMjAuLmFhMGQ5MGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXIuaApAQCAtMzMsMTkgKzMzLDIxIEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5j
bHVkZSAiSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIgotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VB
Z2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgorI2luY2x1ZGUgPGlu
c3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxs
b2MuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAK
K25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7
Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
OwotY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7Ci1jbGFzcyBJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWw7CiBjbGFzcyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb247CiBjbGFzcyBJbnNw
ZWN0b3JSdW50aW1lQWdlbnQ7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwpAQCAtNzIsOSAr
NzQsOSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJbnN0cnVtZW50aW5nQWdlbnRzPiBtX2luc3Ry
dW1lbnRpbmdBZ2VudHM7CiAgICAgT3duUHRyPEluamVjdGVkU2NyaXB0TWFuYWdlcj4gbV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgSW5zcGVjdG9yUnVudGltZUFnZW50KiBtX3J1bnRpbWVB
Z2VudDsKLSAgICBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5IG1fYWdlbnRzOworICAgIEluc3BlY3Rv
cjo6SW5zcGVjdG9yQWdlbnRSZWdpc3RyeSBtX2FnZW50czsKICAgICBPd25QdHI8SW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsPiBtX2Zyb250ZW5kQ2hhbm5lbDsKLSAgICBSZWZQdHI8SW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGlt
ZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQu
Y3BwCmluZGV4IGIwN2I2MzMuLjFlZjgzNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCkBAIC00Miw2ICs0Miw4IEBACiAjaW5jbHVkZSAi
V29ya2VyUnVuTG9vcC5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogCit1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdvcmtlclJ1bnRpbWVB
Z2VudDo6V29ya2VyUnVudGltZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBX
b3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUpCkBAIC01Nyw3ICs1OSw3IEBAIFdv
cmtlclJ1bnRpbWVBZ2VudDo6fldvcmtlclJ1bnRpbWVBZ2VudCgpCiAgICAgbV9pbnN0cnVtZW50
aW5nQWdlbnRzLT5zZXRXb3JrZXJSdW50aW1lQWdlbnQoMCk7CiB9CiAKLXZvaWQgV29ya2VyUnVu
dGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQor
dm9pZCBXb3JrZXJSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5z
cGVjdG9yUnVudGltZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIs
IHRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1
bnRpbWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2Vu
dC5oCmluZGV4IDY3ZGUwOGEuLjViNjI5YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvV29ya2VyUnVudGltZUFnZW50LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIH0K
ICAgICB2aXJ0dWFsIH5Xb3JrZXJSdW50aW1lQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURF
OwogCiAgICAgLy8gUHJvdG9jb2wgY29tbWFuZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnNvbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcAppbmRl
eCBkZGU2NWUzLi4zMjdlYTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNv
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKQEAgLTQ3LDkgKzQ3
LDkgQEAKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU2Ny
aXB0UHJvZmlsZS5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGVyLmgiCi0jaW5jbHVkZSAiU2Ny
aXB0VmFsdWUuaCIKICNpbmNsdWRlICJTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNs
dWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5j
bHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRlbnRTZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1
cml0eVBvbGljeS5jcHAKaW5kZXggMGJlOWY5OC4uY2M2NjM2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2lu
Y2x1ZGUgIkZvcm1EYXRhTGlzdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAj
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUGluZ0xvYWRlci5oIgogI2luY2x1ZGUgIlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMuaCIKQEAgLTQ2LDEwICs0NSwxMyBAQAogI2luY2x1ZGUgIlNlY3Vy
aXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5oIgog
I2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JW
YWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1Rl
eHRQb3NpdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCit1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIE5vcm1hbGx5
IFdlYktpdCB1c2VzICJzdGF0aWMiIGZvciBpbnRlcm5hbCBsaW5rYWdlLCBidXQgdXNpbmcgInN0
YXRpYyIgZm9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDQ5ZTE4N2IuLmI4ZDg3NzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuY3BwCkBAIC04Niw3ICs4Niw2IEBACiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIK
ICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29k
ZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGll
cy5oIgpAQCAtMTA0LDYgKzEwMyw3IEBACiAjaW5jbHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSAi
bnBydW50aW1lX2ltcGwuaCIKICNpbmNsdWRlICJydW50aW1lX3Jvb3QuaCIKKyNpbmNsdWRlIDxi
aW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZS5jcHAKaW5kZXggNGZhYWU2ZC4uOWJj
YzI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZS5jcHAKQEAgLTQyLDkgKzQyLDkgQEAK
ICNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2su
aCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCi0jaW5jbHVkZSAiU2NyaXB0
VmFsdWUuaCIKICNpbmNsdWRlICJTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRl
ICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVk
ZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1Bs
dWdpblZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRl
eCBkNjBjODg1Li5mODQ1Y2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1Bs
dWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAK
QEAgLTYxLDcgKzYxLDYgQEAKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJSZW5k
ZXJPYmplY3QuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiU2Ny
aXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKQEAgLTY5LDYgKzY4LDcg
QEAKICNpbmNsdWRlICJjX2luc3RhbmNlLmgiCiAjaW5jbHVkZSAibnBydW50aW1lX2ltcGwuaCIK
ICNpbmNsdWRlICJydW50aW1lX3Jvb3QuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1
ZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUv
SlNMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KQEAgLTQ2Nyw3ICs0NjcsNyBA
QCB2b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1SZXF1ZXN0KFBsdWdpblJlcXVlc3QqIHJlcXVlc3Qp
CiAgICAgCiAgICAgLy8gRXhlY3V0aW5nIGEgc2NyaXB0IGNhbiBjYXVzZSB0aGUgcGx1Z2luIHZp
ZXcgdG8gYmUgZGVzdHJveWVkLCBzbyB3ZSBrZWVwIGEgcmVmZXJlbmNlIHRvIGl0LgogICAgIFJl
ZlB0cjxQbHVnaW5WaWV3PiBwcm90ZWN0b3IodGhpcyk7Ci0gICAgU2NyaXB0VmFsdWUgcmVzdWx0
ID0gbV9wYXJlbnRGcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChqc1N0cmluZywgcmVxdWVz
dC0+c2hvdWxkQWxsb3dQb3B1cHMoKSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgcmVz
dWx0ID0gbV9wYXJlbnRGcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChqc1N0cmluZywgcmVx
dWVzdC0+c2hvdWxkQWxsb3dQb3B1cHMoKSk7CiAKICAgICBpZiAodGFyZ2V0RnJhbWVOYW1lLmlz
TnVsbCgpKSB7CiAgICAgICAgIFN0cmluZyByZXN1bHRTdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKaW5kZXggYzdlYmM5Ny4uNzc0M2Q3YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcApAQCAtNjMsNyArNjMsNiBAQAogI2luY2x1ZGUgIkluc3BlY3RvckZy
b250ZW5kQ2xpZW50TG9jYWwuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFs
dWVzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIkludGVy
bmFsU2V0dGluZ3MuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC05Niw2ICs5NSw3IEBACiAj
aW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIK
ICNpbmNsdWRlIDxieXRlY29kZS9Db2RlQmxvY2suaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5z
cGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1ZmZlci5o
PgpAQCAtMTY3LDYgKzE2Nyw4IEBAIHVzaW5nIEpTQzo6SlNWYWx1ZTsKIHVzaW5nIEpTQzo6U2Ny
aXB0RXhlY3V0YWJsZTsKIHVzaW5nIEpTQzo6U3RhY2tWaXNpdG9yOwogCit1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7CkBAIC0xMjgyLDcgKzEyODQsNyBAQCBwcml2YXRlOgogICAgIENvZGVCbG9jayog
bV9jb2RlQmxvY2s7CiB9OwogCi1TdHJpbmcgSW50ZXJuYWxzOjpwYXJzZXJNZXRhRGF0YShTY3Jp
cHRWYWx1ZSB2YWx1ZSkKK1N0cmluZyBJbnRlcm5hbHM6OnBhcnNlck1ldGFEYXRhKERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlIHZhbHVlKQogewogICAgIEpTQzo6Vk0qIHZtID0gY29udGV4dERvY3Vt
ZW50KCktPnZtKCk7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB2bS0+dG9wQ2FsbEZyYW1l
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggMjViY2FmZS4uMTA5MjVlZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAi
Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxh
Y2Vob2xkZXIuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVl
LmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxydW50aW1l
L0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9GbG9hdDMyQXJyYXkuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtMTgxLDcgKzE4MSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGVtaXRJbnNwZWN0b3JEaWRCZWdpbkZyYW1lKCk7CiAgICAgdm9pZCBlbWl0SW5zcGVjdG9y
RGlkQ2FuY2VsRnJhbWUoKTsKIAotICAgIFN0cmluZyBwYXJzZXJNZXRhRGF0YShTY3JpcHRWYWx1
ZSA9IFNjcmlwdFZhbHVlKCkpOworICAgIFN0cmluZyBwYXJzZXJNZXRhRGF0YShEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSA9IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCkpOwogCiAgICAgYm9vbCBo
YXNTcGVsbGluZ01hcmtlcihpbnQgZnJvbSwgaW50IGxlbmd0aCwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIGJvb2wgaGFzR3JhbW1hck1hcmtlcihpbnQgZnJvbSwgaW50IGxlbmd0aCwgRXhjZXB0aW9u
Q29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJH
bG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckdsb2Jh
bFNjb3BlLmNwcAppbmRleCBlMTc3YTcwLi4xMzhiZmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtNDcsNyArNDcsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4gY3JlYXRlQ29u
bmVjdEV2ZW50KFBhc3NSZWZQdHI8TWVzc2FnZVBvcnQ+IHBycFBvcnQpCiB7CiAgICAgUmVmUHRy
PE1lc3NhZ2VQb3J0PiBwb3J0ID0gcHJwUG9ydDsKLSAgICBSZWZQdHI8TWVzc2FnZUV2ZW50PiBl
dmVudCA9IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKGFkb3B0UHRyKG5ldyBNZXNzYWdlUG9ydEFycmF5
KDEsIHBvcnQpKSwgU2NyaXB0VmFsdWUoKSwgU3RyaW5nKCksIFN0cmluZygpLCBwb3J0KTsKKyAg
ICBSZWZQdHI8TWVzc2FnZUV2ZW50PiBldmVudCA9IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKGFkb3B0
UHRyKG5ldyBNZXNzYWdlUG9ydEFycmF5KDEsIHBvcnQpKSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUoKSwgU3RyaW5nKCksIFN0cmluZygpLCBwb3J0KTsKICAgICBldmVudC0+aW5pdEV2ZW50KGV2
ZW50TmFtZXMoKS5jb25uZWN0RXZlbnQsIGZhbHNlLCBmYWxzZSk7CiAgICAgcmV0dXJuIGV2ZW50
LnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29w
ZS5jcHAKaW5kZXggZWMyZDE5MC4uZmNiZjY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJFcnJv
ckV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5o
IgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb25zb2xl
SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBv
cnQuaCIKQEAgLTQ0LDcgKzQ1LDYgQEAKICNpbmNsdWRlICJTY2hlZHVsZWRBY3Rpb24uaCIKICNp
bmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgi
Ci0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgog
I2luY2x1ZGUgIldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXb3JrZXJM
b2NhdGlvbi5oIgpAQCAtNTQsMTQgKzU0LDEzIEBACiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgi
CiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oIgogI2luY2x1ZGUgIlhNTEh0dHBS
ZXF1ZXN0RXhjZXB0aW9uLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5B
QkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNlbnRlci5o
IgogI2VuZGlmCiAKLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQ2xvc2VXb3JrZXJHbG9iYWxTY29wZVRhc2sgOiBwdWJsaWMgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CkBAIC0yNDEsNyArMjQwLDcgQEAgdm9pZCBXb3JrZXJH
bG9iYWxTY29wZTo6aW1wb3J0U2NyaXB0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdXJscywgRXhj
ZXB0aW9uQ29kZSYKIAogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdElt
cG9ydGVkKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgc2NyaXB0TG9hZGVyLT5pZGVudGlmaWVy
KCksIHNjcmlwdExvYWRlci0+c2NyaXB0KCkpOwogCi0gICAgICAgIFNjcmlwdFZhbHVlIGV4Y2Vw
dGlvbjsKKyAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZXhjZXB0aW9uOwogICAgICAg
ICBtX3NjcmlwdC0+ZXZhbHVhdGUoU2NyaXB0U291cmNlQ29kZShzY3JpcHRMb2FkZXItPnNjcmlw
dCgpLCBzY3JpcHRMb2FkZXItPnJlc3BvbnNlVVJMKCkpLCAmZXhjZXB0aW9uKTsKICAgICAgICAg
aWYgKCFleGNlcHRpb24uaGFzTm9WYWx1ZSgpKSB7CiAgICAgICAgICAgICBtX3NjcmlwdC0+c2V0
RXhjZXB0aW9uKGV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5j
cHAKaW5kZXggNTBiZmExZC4uZmVmM2U1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
VGhyZWFkLmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkRlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5j
bHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5j
bHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJUaHJlYWRHbG9iYWxEYXRhLmgiCiAj
aW5jbHVkZSAiVVJMLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MVHJlZVZp
ZXdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAKaW5kZXggMTYx
ZGQwMS4uYzM5ZTc1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxUcmVlVmlld2VyLmNwcApAQCAtMzgs
MTAgKzM4LDEwIEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9s
bGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZh
bHVlLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlhNTFZpZXdlckNTUy5oIgogI2lu
Y2x1ZGUgIlhNTFZpZXdlckpTLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
WE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDc0YTdkMDAuLjkwZWZkNTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC00Niw3ICs0
Niw2IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNjcmlwdEVs
ZW1lbnQuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0
VmFsdWUuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiVHJl
ZURlcHRoTGltaXQuaCIKICNpbmNsdWRlICJYTUxFcnJvcnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCA0
NmE5MmRiLi41MmI4Zjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC01Miw3ICs1Miw2IEBACiAjaW5jbHVk
ZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNjcmlwdEVsZW1lbnQuaCIKICNpbmNs
dWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAi
VGV4dFJlc291cmNlRGVjb2Rlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L0FwaS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFn
ZS5jcHAKaW5kZXggZTcxZjRmYy4uNGVlZmQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
QXBpL1dlYlBhZ2UuY3BwCkBAIC0xMTgsNyArMTE4LDYgQEAKICNpbmNsdWRlICJSZW5kZXJXaWRn
ZXQuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291
cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlw
ZXMuaCIKICNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIlNlbGVjdGlvbkhh
bmRsZXIuaCIKQEAgLTE3Miw2ICsxNzEsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
Q29udGV4dFJlZi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CiAj
aW5jbHVkZSA8U2hhcmVkUG9pbnRlci5oPgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVl
Lmg+CiAjaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8c3lzL2tleWNvZGVzLmg+CiAjaW5jbHVk
ZSA8dW5pY29kZS91c3RyaW5nLmg+IC8vIHBsYXRmb3JtIElDVQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9D
aGFuZ2VMb2cKaW5kZXggMDQ0NmFiMS4uMjQwY2I2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMTItMDUgIEpvc2VwaCBQZWNvcmFybyAgPHBl
Y29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5z
cGVjdG9yIFJlcXVpcmVkIENsYXNzZXMgRG93biBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFwaS9XZWJQYWdlLmNw
cDoKKwogMjAxMy0xMi0wMyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggUmVtb3RlIEluc3BlY3RvciBkZWJ1Z2dpbmcg
Y29ubmVjdGlvbiBtYW5hZ2VtZW50IGludG8gSmF2YVNjcmlwdENvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpp
bmRleCAzMWVlMmI1Li43ZGQ1ZTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTMtMTItMDUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVjdG9yIFJlcXVpcmVkIENsYXNzZXMg
RG93biBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgorCiAyMDEzLTEyLTAzICBKb3Nl
cGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogUHVzaCBSZW1vdGUgSW5zcGVjdG9yIGRlYnVnZ2luZyBjb25uZWN0aW9uIG1hbmFnZW1lbnQg
aW50byBKYXZhU2NyaXB0Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19mcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAppbmRleCBm
MmEyMGMzLi5hMDUyYWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2Zy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcApAQCAtNTMs
NyArNTMsNiBAQAogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgogI2luY2x1ZGUgIlJlc291
cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJT
Y3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlN1YnN0
aXR1dGVEYXRhLmgiCiAjaW5jbHVkZSAiV2luZG93c0tleWJvYXJkQ29kZXMuaCIKQEAgLTY1LDYg
KzY0LDcgQEAKICNpbmNsdWRlIDxFY29yZV9JbnB1dC5oPgogI2luY2x1ZGUgPEVpbmEuaD4KICNp
bmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNs
dWRlIDxlaW5hX3NhZmV0eV9jaGVja3MuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggMmI0N2Q0YS4u
Njk1YjAyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTEyLTA1ICBK
b3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogUHVzaCBNb3JlIEluc3BlY3RvciBSZXF1aXJlZCBDbGFzc2VzIERvd24gaW50byBKYXZh
U2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTI1MzI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisKIDIwMTMtMTItMDUgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEZpeCBHT2Jq
ZWN0IGludHJvc3BlY3Rpb24gd2FybmluZ3MgaW4gd2Via2l0c3BlbGxjaGVja2VyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggZjlkOWIxZGQuLjYwMjMy
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAgLTg1
LDcgKzg1LDYgQEAKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCi0jaW5j
bHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIldl
YktpdERPTURvY3VtZW50UHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdGRvd25sb2FkLmgiCkBA
IC0xMTQsNiArMTEzLDcgQEAKICNpbmNsdWRlICJ3ZWJraXR3ZWJwbHVnaW5kYXRhYmFzZXByaXZh
dGUuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oIgogI2luY2x1ZGUgIndl
YmtpdHdlYnZpZXdwcml2YXRlLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4K
ICNpbmNsdWRlIDxnZGsvZ2Rra2V5c3ltcy5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+
CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCmluZGV4IGUyNWVi
ZTkuLmExNGM4ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KQEAgLTQzLDEyICs0MywxMiBAQAogI2ltcG9ydCAi
V2ViVUlEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0IDxh
bGdvcml0aG0+CisjaW1wb3J0IDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9JbnNwZWN0b3JDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0luc3BlY3RvckZy
b250ZW5kQ2xpZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL01haW5GcmFtZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9QYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KLSNp
bXBvcnQgPFdlYkNvcmUvU2NyaXB0VmFsdWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvU29mdExpbmtp
bmcuaD4KICNpbXBvcnQgPFdlYktpdC9ET01FeHRlbnNpb25zLmg+CiAjaW1wb3J0IDxXZWJLaXRT
eXN0ZW1JbnRlcmZhY2UuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA0YjUyYTc1Li5kMDNhNTFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMTItMDUgIEpvc2VwaCBQZWNv
cmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNo
IE1vcmUgSW5zcGVjdG9yIFJlcXVpcmVkIENsYXNzZXMgRG93biBpbnRvIEphdmFTY3JpcHRDb3Jl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkZy
YW1lLmNwcDoKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKwogMjAxMy0xMi0wNCAgQnJlbnQgRnVs
Z2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBFeGl0aW5nIGZyb20g
TWVkaWEgRnVsbCBTY3JlZW4gbW9kZSB2aWEgJ2VzY2FwZScga2V5IGRvZXMgbm90IHdvcmsgcHJv
cGVybHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAppbmRleCBlYThiZDE4Li40OWQ2NmNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93
aW4vV2ViRnJhbWUuY3BwCkBAIC05OSwxMiArOTksMTIgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Rl
eHRJdGVyYXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNET01CaW5kaW5nLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRW
YWx1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNW
YWx1ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTT2JqZWN0Lmg+CisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUu
aD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiAjaWYgVVNFKENHKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJW
aWV3LmNwcAppbmRleCBmOWY1ZDA2Li4wODM4NDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcApAQCAt
MTM3LDcgKzEzNyw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVz
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY2hlbWVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2NyaXB0Q29udHJvbGxlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0VmFsdWUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGJhci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xs
YmFyVGhlbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CkBAIC0xNDcs
NiArMTQ2LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1N5c3RlbUluZm8uaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1dpbmRvd01lc3NhZ2VCcm9hZGNhc3Rlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2lu
ZG93c1RvdWNoLmg+CisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgogCiAjaWYgVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGUwNzAzYTku
LmQ1Y2ExMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMy0xMi0wNSAgSm9zZXBo
IFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFB1c2ggTW9yZSBJbnNwZWN0b3IgUmVxdWlyZWQgQ2xhc3NlcyBEb3duIGludG8gSmF2YVNjcmlw
dENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
NTMyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcDoKKworMjAxMy0xMi0wNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBw
bGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggTW9yZSBJbnNwZWN0b3IgUmVx
dWlyZWQgQ2xhc3NlcyBEb3duIGludG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTMyNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3Rvci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5o
OgorCiAyMDEzLTEyLTA2ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzE1NjA2ODcyPiBSRUdSRVNTSU9OIChyMTYwMTQ4KTogTWFpbCB0
aHJvd3MgYW4gZXhjZXB0aW9uIGR1cmluZyBsYXVuY2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBlMDBkM2EyLi42MTNkNWRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
CkBAIC02MywxMiArNjMsMTIgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlckVtYmVkZGVkT2Jq
ZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Njcmlw
dFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxWaWV3Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlQb2xpY3ku
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2Vy
R2VzdHVyZUluZGljYXRvci5oPgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlND
OwpAQCAtMTE3OSw3ICsxMTc5LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3JtSmF2YVNjcmlw
dFVSTFJlcXVlc3QoVVJMUmVxdWVzdCogcmVxdWVzdCkKICAgICAvLyBFdmFsdWF0ZSB0aGUgSmF2
YVNjcmlwdCBjb2RlLiBOb3RlIHRoYXQgcnVubmluZyBKYXZhU2NyaXB0IGhlcmUgY291bGQgY2F1
c2UgdGhlIHBsdWctaW4gdG8gYmUgZGVzdHJveWVkLCBzbyB3ZQogICAgIC8vIGdyYWIgcmVmZXJl
bmNlcyB0byB0aGUgcGx1Zy1pbiBoZXJlLgogICAgIFJlZlB0cjxQbHVnaW4+IHBsdWdpbiA9IG1f
cGx1Z2luOwotICAgIFNjcmlwdFZhbHVlIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS5leGVjdXRl
U2NyaXB0KGpzU3RyaW5nLCByZXF1ZXN0LT5hbGxvd1BvcHVwcygpKTsKKyAgICBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSByZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChqc1N0
cmluZywgcmVxdWVzdC0+YWxsb3dQb3B1cHMoKSk7CiAKICAgICAvLyBDaGVjayBpZiBldmFsdWF0
aW5nIHRoZSBKYXZhU2NyaXB0IGRlc3Ryb3llZCB0aGUgcGx1Zy1pbi4KICAgICBpZiAoIXBsdWdp
bi0+Y29udHJvbGxlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yLmNwcAppbmRleCBhODkwZjViLi4xMDViYWIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcApAQCAtMzQs
MTIgKzM0LDExIEBACiAjaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckNvbnRyb2xs
ZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZvcndhcmRpbmcuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9N
YWluRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NjcmlwdENvbnRyb2xsZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdFZhbHVlLmg+Cisj
aW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdDb25jYXRlbmF0ZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaAppbmRleCBlNjRmNmQz
Li40MmFlYzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViSW5zcGVjdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
Ykluc3BlY3Rvci5oCkBAIC0zMCwxOCArMzAsMTQgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5o
IgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZv
cndhcmRpbmcuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ7CiBjbGFzcyBXZWJQYWdlOwotc3RydWN0IFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIFdlYkluc3BlY3RvciA6IHB1YmxpYyBBUEk6OlR5cGVk
T2JqZWN0PEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVJbnNwZWN0b3I+IHsKIHB1YmxpYzoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBjMjIy
NGI4Li4xZGMzODdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCkBAIC0xMjgsNyArMTI4LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVF
bmFibGVkRmVhdHVyZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9T
Y3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhZG93
Um9vdC5oPgpAQCAtMTM5LDYgKzEzOCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9WaXNpYmxlUG9z
aXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Zpc2libGVVbml0cy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvbWFya3VwLmg+CisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNs
dWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgog
I2luY2x1ZGUgPHJ1bnRpbWUvT3BlcmF0aW9ucy5oPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218779</attachid>
            <date>2013-12-09 11:26:02 -0800</date>
            <delta_ts>2013-12-09 13:09:47 -0800</delta_ts>
            <desc>[PATCH] For Bots 3</desc>
            <filename>for-bots-3.patch</filename>
            <type>text/plain</type>
            <size>486636</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAxM2M4YjA2Li4zNTk5YmIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00LDYgKzQsNyBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vQVBJIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMiCiAg
ICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9hc3NlbWJsZXIiCisgICAgIiR7SkFWQVNDUklQVENP
UkVfRElSfS9iaW5kaW5ncyIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J5dGVjb2RlIgog
ICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnl0ZWNvbXBpbGVyIgogICAgICIke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vZGZnIgpAQCAtNDUsNiArNDYsMTAgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NP
VVJDRVMKICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCiAgICAgYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNwcAogCisgICAgYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25D
YWxsLmNwcAorICAgIGJpbmRpbmdzL1NjcmlwdE9iamVjdC5jcHAKKyAgICBiaW5kaW5ncy9TY3Jp
cHRWYWx1ZS5jcHAKKwogICAgIGJ5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwCiAg
ICAgYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAogICAgIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNC
bG9jay5jcHAKQEAgLTIxNSw2ICsyMjAsMTAgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMK
ICAgICBoZWFwL1dlYWtTZXQuY3BwCiAgICAgaGVhcC9Xcml0ZUJhcnJpZXJTdXBwb3J0LmNwcAog
CisgICAgaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwCisgICAgaW5zcGVjdG9y
L0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcAorICAgIGluc3BlY3Rvci9JbnNwZWN0b3JW
YWx1ZXMuY3BwCisKICAgICBpbnRlcnByZXRlci9BYnN0cmFjdFBDLmNwcAogICAgIGludGVycHJl
dGVyL0NhbGxGcmFtZS5jcHAKICAgICBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTU4
Myw2ICs1OTIsNyBAQCBlbmRmb3JlYWNoICgpCiAKIHNldChKYXZhU2NyaXB0Q29yZV9GT1JXQVJE
SU5HX0hFQURFUlNfRElSRUNUT1JJRVMKICAgICBhc3NlbWJsZXIKKyAgICBiaW5kaW5ncwogICAg
IGJ5dGVjb2RlCiAgICAgY29sbGVjdG9yL2hhbmRsZXMKICAgICBkZWJ1Z2dlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKaW5kZXggYTYzNTE3Yy4uNDZhNGY0NCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNzUgQEAKKzIwMTMtMTItMDUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29y
YXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVj
dG9yIFJlcXVpcmVkIENsYXNzZXMgRG93biBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3Mv
U2NyaXB0RnVuY3Rpb25DYWxsLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAuCisgICAgICAgIChKU0M6OlNjcmlwdENhbGxB
cmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6U2NyaXB0RnVu
Y3Rpb25DYWxsOjpTY3JpcHRGdW5jdGlvbkNhbGwpOgorICAgICAgICAoSlNDOjpTY3JpcHRGdW5j
dGlvbkNhbGw6OmNhbGwpOgorICAgICAgICAqIGJpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5o
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25D
YWxsLmguCisKKzIwMTMtMTItMDUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNv
bT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVjdG9yIFJlcXVpcmVk
IENsYXNzZXMgRG93biBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdO
VW1ha2VmaWxlLmFtOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICog
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovY29weS1maWxlcy5jbWQ6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBi
aW5kaW5ncy9TY3JpcHRPYmplY3QuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNwcC4KKyAgICAgICAgKEpTQzo6U2NyaXB0T2JqZWN0OjpT
Y3JpcHRPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmguCisgICAgICAg
IChKU0M6OlNjcmlwdE9iamVjdDo6U2NyaXB0T2JqZWN0KToKKyAgICAgICAgKEpTQzo6U2NyaXB0
T2JqZWN0Ojpqc09iamVjdCk6CisgICAgICAgIChKU0M6OlNjcmlwdE9iamVjdDo6c2NyaXB0U3Rh
dGUpOgorICAgICAgICAqIGJpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcC4KKyAgICAgICAgKEpTQzo6
U2NyaXB0VmFsdWU6On5TY3JpcHRWYWx1ZSk6CisgICAgICAgIChKU0M6OlNjcmlwdFZhbHVlOjpn
ZXRTdHJpbmcpOgorICAgICAgICAoSlNDOjpTY3JpcHRWYWx1ZTo6dG9TdHJpbmcpOgorICAgICAg
ICAoSlNDOjpTY3JpcHRWYWx1ZTo6aXNFcXVhbCk6CisgICAgICAgIChKU0M6OmpzVG9JbnNwZWN0
b3JWYWx1ZSk6CisgICAgICAgIChKU0M6OlNjcmlwdFZhbHVlOjp0b0luc3BlY3RvclZhbHVlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaC4KKworMjAxMy0xMi0wNSAgSm9zZXBoIFBl
Y29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1
c2ggTW9yZSBJbnNwZWN0b3IgUmVxdWlyZWQgQ2xhc3NlcyBEb3duIGludG8gSmF2YVNjcmlwdENv
cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTMy
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICog
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmguCisgICAgICAgIChJbnNw
ZWN0b3I6Okluc3BlY3RvckFnZW50QmFzZTo6fkluc3BlY3RvckFnZW50QmFzZSk6CisgICAgICAg
IChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50QmFzZTo6ZGlzY2FyZEFnZW50KToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnRCYXNlOjpJbnNwZWN0b3JBZ2VudEJhc2UpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcC4KKyAg
ICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6YXBwZW5kKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oLgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHA6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwLgor
ICAgICAgICAoSW5zcGVjdG9yOjpnZXRQcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oLgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAuCisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvclZhbHVlcy5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclZhbHVlcy5oLgorCiAyMDEzLTEyLTA5ICBKdWxpZW4gQnJpYW5jZWF1ICA8amJyaWFuY2VA
Y2lzY28uY29tPgogCiAgICAgICAgIEZpeCBzaDQgTExJTlQgYnVpbGQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUuYW0KaW5kZXggMDg1ZmNhNy4uNzVkYmVlNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtNTIsNiArNTIsNyBAQCBqYXZhc2NyaXB0Y29yZV9jcHBm
bGFncyArPSBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSSBcCiAJLUkk
KHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL0ZvcndhcmRpbmdIZWFkZXJzIFwKIAktSSQo
c3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyIFwKKwktSSQoc3JjZGlyKS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZSBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggODNi
MjA3Ni4uNWVkMWYyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KQEAgLTk1LDYgKzk1LDEyIEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL1NINEFzc2VtYmxlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBcCisgICAgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oIFwKKyAgICBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYmluZGluZ3MvU2NyaXB0T2JqZWN0LmNwcCBcCisgICAgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5oIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YmluZGluZ3MvU2NyaXB0VmFsdWUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcCBcCkBAIC02MTIsNyArNjE4LDE0IEBAIGphdmFzY3Jp
cHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5pY29kZS91
dGZfb2xkLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5pY29kZS91dHlwZXMuaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ljdS91bmljb2RlL3V2ZXJzaW9uLmggXAorCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmggXAorCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAgXAor
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5o
IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclZhbHVlcy5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yVmFsdWVzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9BYnN0cmFjdFBDLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Fi
c3RyYWN0UEMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENh
bGwuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagppbmRleCBhMTQ0OTJl
Li5kZTc2MjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTI5
NCw2ICsyOTQsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXE1hY3Jv
QXNzZW1ibGVyLmNwcCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEFQSVxKU0NUZXN0
UnVubmVyVXRpbHMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxN
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5jcHAiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxiaW5kaW5nc1xiaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwIiAvPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcYmluZGluZ3MvU2NyaXB0T2JqZWN0LmNwcCIgLz4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGJpbmRpbmdzL1NjcmlwdFZhbHVl
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2Nh
dGlvblByb2ZpbGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVc
QXJyYXlQcm9maWxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2Rl
XEJ5dGVjb2RlQmFzaWNCbG9jay5jcHAiIC8+CkBAIC00NTYsNiArNDU5LDkgQEAKICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcV2Vha0hhbmRsZU93bmVyLmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcV2Vha1NldC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxoZWFwXFdyaXRlQmFycmllclN1cHBvcnQuY3BwIiAvPgorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwIiAvPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNw
ZWN0b3JWYWx1ZXMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0
ZXJcQWJzdHJhY3RQQy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnRlcnBy
ZXRlclxDYWxsRnJhbWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW50ZXJw
cmV0ZXJcSW50ZXJwcmV0ZXIuY3BwIiAvPgpAQCAtNzQ5LDYgKzc1NSw5IEBACiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxSZXBhdGNoQnVmZmVyLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcWDg2QXNzZW1ibGVyLmgiIC8+Cisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xiaW5kaW5ncy9TY3JpcHRGdW5jdGlv
bkNhbGwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGJpbmRpbmdz
L1NjcmlwdE9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3Nc
YmluZGluZ3MvU2NyaXB0VmFsdWUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5
dGVjb2RlXEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5UHJvZmlsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cYnl0ZWNvZGVcQnlWYWxJbmZvLmgiIC8+CkBAIC05OTcsNyArMTAwNiwxMSBAQAogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxXZWFrU2V0LmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxoZWFwXFdlYWtTZXRJbmxpbmVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxoZWFwXFdyaXRlQmFycmllclN1cHBvcnQuaCIgLz4KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JBZ2VudEJhc2UuaCIgLz4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgiIC8+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGlu
c3BlY3RvclxJbnNwZWN0b3JWYWx1ZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGludGVycHJldGVyXEFic3RyYWN0UEMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGludGVycHJldGVyXENhY2hlZENhbGwuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGludGVycHJldGVyXENhbGxGcmFtZS5oIiAvPgpAQCAtMTM0NSw0ICsxMzU4LDQgQEAKICAgPElt
cG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9
IiQoVkNUYXJnZXRzUGF0aClcQnVpbGRDdXN0b21pemF0aW9uc1xtYXNtLnRhcmdldHMiIC8+CiAg
IDwvSW1wb3J0R3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQor
PC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5m
aWx0ZXJzCmluZGV4IGEyNjEwZjcuLjM1Y2E1YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmls
dGVycworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTQsNiArNCw5IEBACiAgICAgPEZpbHRl
ciBJbmNsdWRlPSJhc3NlbWJsZXIiPgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezQyOTc4M2Ex
LTVkNmEtNDAxOS1hZDFhLWRkYjJjOThmOWI2Y308L1VuaXF1ZUlkZW50aWZpZXI+CiAgICAgPC9G
aWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJiaW5kaW5ncyI+CisgICAgICA8VW5pcXVlSWRl
bnRpZmllcj57MGJhY2UxMjMtNDU4Mi1lZWJjLTkzMTQtNzgxOWIzNzZjMTk4fTwvVW5pcXVlSWRl
bnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KICAgICA8RmlsdGVyIEluY2x1ZGU9ImJ5dGVjb2RlIj4K
ICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns3NjYwODhhMC0xMjE2LTQ4NTQtYWE0My01NjBjNWUy
ODM2Njh9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgpAQCAtMTA1LDYgKzEwOCwx
NSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXE1hY3JvQXNzZW1ibGVy
LmNwcCI+CiAgICAgICA8RmlsdGVyPmFzc2VtYmxlcjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxl
PgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0RnVuY3Rpb25DYWxs
LmNwcCI+CisgICAgICA8RmlsdGVyPmJpbmRpbmdzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRPYmplY3QuY3BwIj4K
KyAgICAgIDxGaWx0ZXI+YmluZGluZ3M8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdFZhbHVlLmNwcCI+CisgICAgICA8
RmlsdGVyPmJpbmRpbmdzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCI+CiAgICAg
ICA8RmlsdGVyPmJ5dGVjb2RlPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0yNzksNiAr
MjkxLDE1IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXFdyaXRlQmFycmllclN1
cHBvcnQuY3BwIj4KICAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxl
PgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckFnZW50UmVn
aXN0cnkuY3BwIj4KKyAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CisgICAgPC9DbENv
bXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIuY3BwIj4KKyAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+Cisg
ICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5z
cGVjdG9yVmFsdWVzLmNwcCI+CisgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgorICAg
IDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcQWJz
dHJhY3RQQy5jcHAiPgogICAgICAgPEZpbHRlcj5pbnRlcnByZXRlcjwvRmlsdGVyPgogICAgIDwv
Q2xDb21waWxlPgpAQCAtMTM4OCw2ICsxNDA5LDE1IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxhc3NlbWJsZXJcWDg2QXNzZW1ibGVyLmgiPgogICAgICAgPEZpbHRlcj5hc3NlbWJsZXI8
L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJp
bmRpbmdzXFNjcmlwdEZ1bmN0aW9uQ2FsbC5oIj4KKyAgICAgIDxGaWx0ZXI+YmluZGluZ3M8L0Zp
bHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRp
bmdzXFNjcmlwdE9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+YmluZGluZ3M8L0ZpbHRlcj4KKyAg
ICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlw
dFZhbHVlLmgiPgorICAgICAgPEZpbHRlcj5iaW5kaW5nczwvRmlsdGVyPgorICAgIDwvQ2xJbmNs
dWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0aW9u
UHJvZmlsZS5oIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAgICA8L0NsSW5j
bHVkZT4KQEAgLTE3MTUsOSArMTc0NSwyMSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aGVhcFxXcml0ZUJhcnJpZXJTdXBwb3J0LmgiPgogICAgICAgPEZpbHRlcj5oZWFwPC9GaWx0ZXI+
CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3Jc
SW5zcGVjdG9yQWdlbnRCYXNlLmgiPgorICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4K
KyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJ
bnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgiPgorICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRl
cj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3Rv
clxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIj4KKyAgICAgIDxGaWx0ZXI+aW5zcGVjdG9y
PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxp
bnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiPgogICAgICAgPEZpbHRlcj5pbnNw
ZWN0b3I8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JWYWx1ZXMuaCI+CisgICAgICA8RmlsdGVyPmluc3BlY3Rv
cjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aW50ZXJwcmV0ZXJcQWJzdHJhY3RQQy5oIj4KICAgICAgIDxGaWx0ZXI+aW50ZXJwcmV0ZXI8L0Zp
bHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTMxNzAsNCArMzIxMiw0IEBACiAgICAgICA8Rmls
dGVyPmppdDwvRmlsdGVyPgogICAgIDwvTUFTTT4KICAgPC9JdGVtR3JvdXA+Ci08L1Byb2plY3Q+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovY29weS1maWxlcy5jbWQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9jb3B5LWZpbGVz
LmNtZAppbmRleCBmN2U0Mjk0Li44ODJjZTgzIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9jb3B5LWZpbGVzLmNtZAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9jb3B5LWZpbGVzLmNtZApAQCAt
MzksNiArMzksNyBAQCBlY2hvIENvcHlpbmcgcHJpdmF0ZSBoZWFkZXJzLi4uCiBta2RpciAiJVBy
aXZhdGVIZWFkZXJzRGlyZWN0b3J5JSIgMj5OVUwNCiBmb3IgJSVkIGluICgNCiAgICAgYXNzZW1i
bGVyDQorICAgIGJpbmRpbmdzDQogICAgIGJ5dGVjb2RlDQogICAgIGRmZw0KICAgICBkaXNhc3Nl
bWJsZXINCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQzMjZhNjEuLmJiOWRmNjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OTIsNiArODkyLDE5IEBACiAJCUEx
NzEyQjQxMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzEyQjQwMTFDN0IyMzUwMDdBNTMxNSAvKiBS
ZWdFeHBLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlBMUEwMDlDMDE4MzFBMjJEMDBDRjg3MTEgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY0MDkyM0MxNTZF
RUQzQjAwNTY2Q0IyIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUEwMDlDMTE4MzFBMjZFMDBDRjg3MTEg
LyogQVJNNjRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2NDA5MjNCMTU2RUVEM0IwMDU2NkNCMiAvKiBBUk02NEFzc2VtYmxlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1NENGMkY1
MTg0RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTRDRjJGMjE4NEVBQjI0MDAyMzdGMTkgLyogU2Ny
aXB0VmFsdWUuY3BwICovOyB9OworCQlBNTRDRjJGNjE4NEVBQjI0MDAyMzdGMTkgLyogU2NyaXB0
VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
NENGMkYzMTg0RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1NENGMkY5MTg0RUFFREEwMDIzN0Yx
OSAvKiBTY3JpcHRPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTU0Q0YyRjcxODRFQUVEQTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5jcHAg
Ki87IH07CisJCUE1NENGMkZBMTg0RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NENGMkY4MTg0RUFF
REEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlBNTVEOTNBNTE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0
RnVuY3Rpb25DYWxsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1NUQ5M0EzMTg1MDEyQTgwMDQwMERFRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3Bw
ICovOyB9OworCQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTVEOTNB
NDE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTU5M0NGN0MxODQwMzYwMzAwQkZD
RTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OTNDRjdBMTg0MDM2MDMwMEJGQ0UyNyAvKiBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgKi87IH07CisJCUE1OTNDRjdEMTg0MDM2MDMw
MEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5M0NGN0IxODQwMzYwMzAwQkZDRTI3IC8q
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTU5M0NGN0YxODQwMzYyQzAwQkZDRTI3IC8qIEluc3Bl
Y3RvckFnZW50QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTU5M0NGN0UxODQwMzYyQzAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50QmFzZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1OTNDRjgy
MTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5M0NGODAxODQwMzc3MTAwQkZDRTI3IC8q
IEluc3BlY3RvclZhbHVlcy5jcHAgKi87IH07CisJCUE1OTNDRjgzMTg0MDM3NzEwMEJGQ0UyNyAv
KiBJbnNwZWN0b3JWYWx1ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1OTNDRjgxMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNTkzQ0Y4
NjE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTkzQ0Y4NDE4NDAzOENBMDBC
RkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAgKi87IH07CisJCUE1OTNDRjg3MTg0
MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTkzQ0Y4NTE4NDAzOENBMDBCRkNFMjcg
LyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUE1OTQ1NThGMTgyNDVFRkQwMENDMzg0MyAvKiBSZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1OTQ1NThFMTgyNDVFREUwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlLmNwcCAqLzsgfTsKIAkJQTU5NDU1OTIxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xv
YmFsT2JqZWN0RGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNTk0NTU5MDE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dhYmxlLmNwcCAqLzsgfTsKIAkJQTU5NDU1OTMxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xv
YmFsT2JqZWN0RGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTU5NDU1OTExODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVi
dWdnYWJsZS5oICovOyB9OwpAQCAtMjIyMSw2ICsyMjM0LDE5IEBACiAJCUExNzEyQjNBMTFDN0Iy
MTIwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZWdFeHBDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUExNzEyQjNFMTFDN0IyMjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBMTcxMkI0MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cEtleS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBNTRDRjJGMjE4NEVBQjI0MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0VmFsdWUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTRDRjJGMzE4NEVBQjI0MDAyMzdGMTkgLyogU2Ny
aXB0VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0VmFsdWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU0Q0YyRjcxODRFQUVEQTAwMjM3RjE5
IC8qIFNjcmlwdE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTY3JpcHRPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTRDRjJG
ODE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNjcmlwdE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBNTVEOTNBMzE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1NUQ5M0E0MTg1MDEyQTgwMDQwMERFRCAv
KiBTY3JpcHRGdW5jdGlvbkNhbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2NyaXB0RnVuY3Rpb25DYWxsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTND
RjdBMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlci5jcHA7IHBhdGggPSBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTkzQ0Y3QjE4NDAzNjAzMDBCRkNFMjcg
LyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaDsgcGF0aCA9IGluc3BlY3Rvci9J
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBNTkzQ0Y3RTE4NDAzNjJDMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRCYXNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEluc3BlY3RvckFnZW50QmFzZS5oOyBwYXRoID0g
aW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBNTkzQ0Y4MDE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEluc3BlY3RvclZhbHVlcy5jcHA7IHBh
dGggPSBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTU5M0NGODExODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJbnNwZWN0b3JWYWx1ZXMuaDsgcGF0aCA9
IGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTU5M0NGODQxODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSW5zcGVjdG9yQWdlbnRSZWdp
c3RyeS5jcHA7IHBhdGggPSBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTNDRjg1MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJ
bnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEluc3BlY3RvckFnZW50UmVnaXN0cnkuaDsgcGF0aCA9IGluc3BlY3Rvci9JbnNwZWN0b3JBZ2Vu
dFJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1OTQ1NThFMTgyNDVF
REUwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwOyBw
YXRoID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU5NDU1OTAxODI0NzQ0NzAwQ0MzODQzIC8qIEpT
R2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNTk0NTU5MTE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0
RGVidWdnYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjcyMSw2ICsyNzQ3
LDcgQEAKIAkJCQlBN0MyMjVDQzEzOTk4MUYxMDBGRjE2NjIgLyogS2V5d29yZExvb2t1cEdlbmVy
YXRvci5weSAqLywKIAkJCQkxNDMyRUJENzBBMzRDQUQ0MDA3MTdCOUYgLyogQVBJICovLAogCQkJ
CTk2ODhDQjEyMEVEMTJCNEUwMDFENjQ5RiAvKiBhc3NlbWJsZXIgKi8sCisJCQkJQTU0Q0YyRUEx
ODRFQTczOTAwMjM3RjE5IC8qIGJpbmRpbmdzICovLAogCQkJCTk2OUEwNzhGMEVEMUQzQUUwMEYx
RjY4MSAvKiBieXRlY29kZSAqLywKIAkJCQk3RTM5RDgxRDBFQzM4RUZBMDAzQUYxMUEgLyogYnl0
ZWNvbXBpbGVyICovLAogCQkJCTFDOTA1MTNFMEJBOUU4ODMwMDgxRTlEMCAvKiBDb25maWd1cmF0
aW9ucyAqLywKQEAgLTQxOTIsMTEgKzQyMTksMzEgQEAKIAkJCXBhdGggPSBieXRlY29kZTsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUE1NENGMkVBMTg0RUE3MzkwMDIzN0Yx
OSAvKiBiaW5kaW5ncyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAo
CisJCQkJQTU1RDkzQTMxODUwMTJBODAwNDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAg
Ki8sCisJCQkJQTU1RDkzQTQxODUwMTJBODAwNDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5o
ICovLAorCQkJCUE1NENGMkY3MTg0RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuY3BwICov
LAorCQkJCUE1NENGMkY4MTg0RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuaCAqLywKKwkJ
CQlBNTRDRjJGMjE4NEVBQjI0MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuY3BwICovLAorCQkJCUE1
NENGMkYzMTg0RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5oICovLAorCQkJKTsKKwkJCXBh
dGggPSBiaW5kaW5nczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUE1QkEx
NURGMTgyMzQwOTIwMEE4MkU2OSAvKiBpbnNwZWN0b3IgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUE1QkExNUUwMTgyMzQwOUQwMEE4MkU2OSAvKiByZW1v
dGUgKi8sCisJCQkJQTU5M0NGN0UxODQwMzYyQzAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50QmFz
ZS5oICovLAorCQkJCUE1OTNDRjg0MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJl
Z2lzdHJ5LmNwcCAqLywKKwkJCQlBNTkzQ0Y4NTE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9y
QWdlbnRSZWdpc3RyeS5oICovLAorCQkJCUE1OTNDRjdBMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgKi8sCisJCQkJQTU5M0NGN0IxODQwMzYwMzAwQkZD
RTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggKi8sCiAJCQkJQTU5NDU1OTQxODI0
NzlFQjAwQ0MzODQzIC8qIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oICovLAorCQkJCUE1OTND
RjgwMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwICovLAorCQkJCUE1OTND
RjgxMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuaCAqLywKIAkJCSk7CiAJCQlu
YW1lID0gaW5zcGVjdG9yOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTQzMzcsNiAr
NDM4NCw3IEBACiAJCQkJMEYyQjY2REYxN0I2QjVBQjAwQTdBRTNGIC8qIERhdGFWaWV3LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQ0QyMDM0QTBFMTcxMzVFMDAyQzdFODIgLyogRGF0ZUNvbnN0cnVj
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTM1OUNGMzBGREQ4OUFEMDAyMDYxODAgLyogRGF0
ZUNvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUE1OTNDRjdGMTg0MDM2MkMwMEJGQ0Uy
NyAvKiBJbnNwZWN0b3JBZ2VudEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTE2NjAyMEUx
OTk3QjQwMDgwNjZERCAvKiBEYXRlSW5zdGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QTE1
NjMyMTA5NjYzNjUwMDZGQTI2MCAvKiBEYXRlSW5zdGFuY2VDYWNoZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNEMjAzNEMwRTE3MTM1RTAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUuaCBpbiBIZWFk
ZXJzICovLApAQCAtNDM2OCw2ICs0NDE2LDcgQEAKIAkJCQkwRjgzNjRCNzE2NEIwQzExMDA1MzMy
OUEgLyogREZHQnJhbmNoRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUEwMDlDMDE4
MzFBMjJEMDBDRjg3MTEgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODZFQzlEQzUxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0J5dGVDb2RlUGFyc2VyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlBNTkzQ0Y4NzE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRS
ZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNTZDMzYxNjI3QjBBRDAwN0YyNzgzIC8q
IERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjdCMjk0QjE0QzNDRDJGMDA3QzNEQjEgLyogREZHQ2FwYWJpbGl0aWVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkZGQzk1ODE0RUY5MEEyMDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCBp
biBIZWFkZXJzICovLApAQCAtNDQ1NCw2ICs0NTAzLDcgQEAKIAkJCQk4NkVDOUREMzEzMjhERjgy
MDAyQjJBRDcgLyogREZHU3BlY3VsYXRpdmVKSVQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5
RDAwMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdTU0FDb252ZXJzaW9uUGhhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGOUZCNEY1MTdGQ0I5MTcwMENCNjdGOCAvKiBERkdTdGFja0xheW91dFBoYXNl
LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTkzQ0Y4MzE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVj
dG9yVmFsdWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYzOTQ3ODE1RENFMzRCMDA2QTU5N0Mg
LyogREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3
QTIxNDZCMjhDQzAwQ0YyNDQyIC8qIERGR1RodW5rcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZE
OEEzMjgxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuaCBp
biBIZWFkZXJzICovLApAQCAtNDQ4OCw2ICs0NTM4LDcgQEAKIAkJCQkwRkIxMDU4NjE2NzU0ODEy
MDBGOEFCNkUgLyogRXhpdEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0FCMTRCQ0Y1
QkIwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
N0E4QUYzODE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggaW4gSGVhZGVycyAqLywK
KwkJCQlBNTRDRjJGNjE4NEVBQjI0MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3QThBRjM5MTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDY0QXJyYXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMjRFNTQzMTdFQTlGNTkwMEFCQjIxNyAvKiBGUFJJbmZvLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkZDOTlENTE4NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJO
ZXV0ZXJpbmdXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKQEAgLTQ4MzMsNiArNDg4NCw3IEBA
CiAJCQkJMEYwQ0Q0QzIxNUYxQTYwNzAwMzJGMUMwIC8qIFB1dERpcmVjdEluZGV4TW9kZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY5RkM4QzUxNEUxQjYwNDAwRDUyQUUwIC8qIFB1dEtpbmQuaCBp
biBIZWFkZXJzICovLAogCQkJCTE0N0I4NDYzMEU2REU2QjEwMDQ3NzVBNCAvKiBQdXRQcm9wZXJ0
eVNsb3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1OTNDRjdEMTg0MDM2MDMwMEJGQ0UyNyAvKiBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNjBBQzIx
Njc0MEY4MzAwMDI5Nzc5IC8qIFJlZHVjZVdoaXRlc3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMThDNDVBMEUxNkY1Q0QwMEIzNDQ2MCAvKiBSZWdFeHAuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUExNzEyQjNGMTFDN0IyMjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC00ODc0LDYgKzQ5MjYsNyBAQAogCQkJCTBGRDgyRTU0MTQxREFFRUUwMDE3OUM5NCAvKiBT
cGVjdWxhdGVkVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdDMUVBRjIxNzk4N0FCNjAwMjk5
REIyIC8qIFN0YWNrVmlzaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRERjA0REExNkIzOTk2
RDAwMTZBNTEzIC8qIFN0YXRpY1Byb3BlcnR5QW5hbHlzaXMuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUE1NENGMkZBMTg0RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0Q0E5NThCMTZBQjUwREUwMDkzOEEwNiAvKiBTdGF0aWNQcm9wZXJ0eUFuYWx5emVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzMwQjYxMjEyNTAwNjhGMDA5RDI1QjEgLyogU3RyaWN0
RXZhbEFjdGl2YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDY2MEUxNkY1Q0QwMEIz
NDQ2MCAvKiBTdHJpbmdDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCkBAIC00OTQ5LDYgKzUw
MDIsNyBAQAogCQkJCTQ1MTUzOUI5MTJEQzk5NDUwMEVGN0FDNCAvKiBZYXJyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjY2NkVDRDE4MzZCMzdFMDBEMDE3RjEgLyogREZHUmVzdXJyZWN0aW9uRm9y
VmFsaWRhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI4NTEyREJBMzM3MDBB
OUZFN0IgLyogWWFyckludGVycHJldGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTVEOTNBNjE4
NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NjcwNEI4NzEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODY3MDRCODgxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oIGluIEhlYWRl
cnMgKi8sCkBAIC01NDU0LDYgKzU1MDgsNyBAQAogCQkJCTBGRjQyNzY0MTU5MUExQ0MwMDRDQjlG
RiAvKiBERkdEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEODFBRDIxNTRG
QjRFRTAwOTgzRTcyIC8qIERGR0RvbWluYXRvcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZE
M0M4MjYxNDExNUQ0MDAwRkQ4MUNCIC8qIERGR0RyaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlBNTkzQ0Y4MjE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRjBGMTlFMTZCNzJBMEIwMDVERjk1QiAvKiBERkdFZGdlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE3NERFRjkzMTgyRDk5MTQwMDUyMkMyMiAvKiBNYXBJdGVyYXRvclBy
b3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkJDMEFFNzE0OTZDN0M0MDBENEZCREQg
LyogREZHRXhpdFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01NTA5LDYgKzU1NjQsNyBA
QAogCQkJCTBGQkUwRjc2MTZDMURCMEYwMDgyQzVFOCAvKiBERkdVbmlmaWNhdGlvblBoYXNlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzRCMTQ5MTZENDIwMTAwMDFDREE1QSAvKiBERkdVc2VL
aW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0IzQTJCMTU0NzUwMDAwMDNFRDBGRiAvKiBE
RkdWYWxpZGF0ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNTVEOTNBNTE4NTAxMkE4MDA0MDBE
RUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkJEQzRG
MTUyMjhCRjMwMENEODkxMCAvKiBERkdWYWx1ZVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkREQkZCNTE2NjZFRUQ4MDBDNTVGRUYgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCREM1MTE1MjI4RkZEMDBDRDg5MTAgLyogREZHVmFy
aWFibGVFdmVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU1MjksNiArNTU4NSw3IEBACiAJCQkJ
MEY1NkExRDUxNTAwMUNGNDAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTU5NDU1OTIxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVi
dWdnYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkIxMDU4NTE2NzU0ODBGMDBGOEFCNkUg
LyogRXhpdEtpbmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTU0Q0YyRjUxODRFQUIyNDAwMjM3
RjE5IC8qIFNjcmlwdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEwQTFDMTcwOEIw
MDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZF
QTBBMUUxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMDkxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxp
dGllcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU1NTgsNiArNTYxNSw3IEBACiAJCQkJMEY5RDMz
OUExODAzQURCNzAwNzNDMkJDIC8qIEZUTFN0YWNrTWFwcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkVBMEExNjE3MDZCQjkwMDBCQjcyMkMgLyogRlRMU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEYyMzVCRTExNzE3OEUxQzAwNjkwQzdGIC8qIEZUTFRodW5rcy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlBNTkzQ0Y3QzE4NDAzNjAzMDBCRkNFMjcgLyogSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMzVCRTMxNzE3OEUxQzAwNjkwQzdG
IC8qIEZUTFZhbHVlRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUNCMTA3RUMz
NzYwMDQyN0E0OCAvKiBGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGRjBGMTlGMTZCNzJBMTcwMDVERjk1QiAvKiBGdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmNwcCBp
biBTb3VyY2VzICovLApAQCAtNTcwOCw2ICs1NzY2LDcgQEAKIAkJCQk4NkVCRjJGRjE1NjBGMDZB
MDA4RTkyMjIgLyogTmFtZUNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUJG
MzAxMTU2MEYwNkEwMDhFOTIyMiAvKiBOYW1lSW5zdGFuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODZFQkYzMDMxNTYwRjA2QTAwOEU5MjIyIC8qIE5hbWVQcm90b3R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQTU0Q0YyRjkxODRFQUVEQTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFMDEwN0VDN0U3MDA2NTA0NDYgLyogTmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFMTEwN0VDN0U3MDA2
NTA0NDYgLyogTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ4
RjIxQjcxMDdFQzU0NzAwNDJFQzJDIC8qIE5vZGVzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTgy
Niw2ICs1ODg1LDcgQEAKIAkJCQk4NjcwNEI4NDEyREJBMzM3MDBBOUZFN0IgLyogWWFyckludGVy
cHJldGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0Qjg2MTJEQkEzMzcwMEE5RkU3QiAv
KiBZYXJySklULmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0Qjg5MTJEQkEzMzcwMEE5RkU3
QiAvKiBZYXJyUGF0dGVybi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNTkzQ0Y4NjE4NDAzOENB
MDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk4NjcwNEI0MjEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlv
bkNhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9u
Q2FsbC5jcHAKc2ltaWxhcml0eSBpbmRleCA3OCUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcApyZW5hbWUgdG8gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKaW5kZXggMmVhMmI0Yi4u
ZjI2NDdkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVu
Y3Rpb25DYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0
RnVuY3Rpb25DYWxsLmNwcApAQCAtMSw0ICsxLDUgQEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0z
MSwxNyArMzIsMTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY3JpcHRGdW5j
dGlvbkNhbGwuaCIKIAotI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgorI2luY2x1
ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCi0KLSNpbmNsdWRlIDxydW50
aW1lL0pTTG9jay5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2luZyBu
YW1lc3BhY2UgSlNDOwogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgRGVwcmVjYXRl
ZCB7CiAKLXZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQoY29u
c3QgU2NyaXB0T2JqZWN0JiBhcmd1bWVudCkKK3ZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxl
cjo6YXBwZW5kQXJndW1lbnQoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiBhcmd1bWVu
dCkKIHsKICAgICBpZiAoYXJndW1lbnQuc2NyaXB0U3RhdGUoKSAhPSBtX2V4ZWMpIHsKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01MCw3ICs0OSw3IEBAIHZvaWQgU2NyaXB0Q2Fs
bEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQoY29uc3QgU2NyaXB0T2JqZWN0JiBhcmd1
bWVudCkKICAgICBtX2FyZ3VtZW50cy5hcHBlbmQoYXJndW1lbnQuanNPYmplY3QoKSk7CiB9CiAK
LXZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQoY29uc3QgU2Ny
aXB0VmFsdWUmIGFyZ3VtZW50KQordm9pZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyOjphcHBl
bmRBcmd1bWVudChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgYXJndW1lbnQpCiB7CiAg
ICAgbV9hcmd1bWVudHMuYXBwZW5kKGFyZ3VtZW50LmpzVmFsdWUoKSk7CiB9CkBAIC01OCw3ICs1
Nyw3IEBAIHZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQoY29u
c3QgU2NyaXB0VmFsdWUmIGFyZ3VtZW50KQogdm9pZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVy
OjphcHBlbmRBcmd1bWVudChjb25zdCBTdHJpbmcmIGFyZ3VtZW50KQogewogICAgIEpTTG9ja0hv
bGRlciBsb2NrKG1fZXhlYyk7Ci0gICAgbV9hcmd1bWVudHMuYXBwZW5kKGpzU3RyaW5nV2l0aENh
Y2hlKG1fZXhlYywgYXJndW1lbnQpKTsKKyAgICBtX2FyZ3VtZW50cy5hcHBlbmQoanNTdHJpbmco
bV9leGVjLCBhcmd1bWVudCkpOwogfQogCiB2b2lkIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6
OmFwcGVuZEFyZ3VtZW50KGNvbnN0IGNoYXIqIGFyZ3VtZW50KQpAQCAtNjcsNyArNjYsNyBAQCB2
b2lkIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KGNvbnN0IGNoYXIq
IGFyZ3VtZW50KQogICAgIG1fYXJndW1lbnRzLmFwcGVuZChqc1N0cmluZyhtX2V4ZWMsIFN0cmlu
Zyhhcmd1bWVudCkpKTsKIH0KIAotdm9pZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyOjphcHBl
bmRBcmd1bWVudChKU0M6OkpTVmFsdWUgYXJndW1lbnQpCit2b2lkIFNjcmlwdENhbGxBcmd1bWVu
dEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KEpTVmFsdWUgYXJndW1lbnQpCiB7CiAgICAgbV9hcmd1
bWVudHMuYXBwZW5kKGFyZ3VtZW50KTsKIH0KQEAgLTEwNywxNCArMTA2LDE1IEBAIHZvaWQgU2Ny
aXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQoYm9vbCBhcmd1bWVudCkKICAg
ICBtX2FyZ3VtZW50cy5hcHBlbmQoanNCb29sZWFuKGFyZ3VtZW50KSk7CiB9CiAKLVNjcmlwdEZ1
bmN0aW9uQ2FsbDo6U2NyaXB0RnVuY3Rpb25DYWxsKGNvbnN0IFNjcmlwdE9iamVjdCYgdGhpc09i
amVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKQorU2NyaXB0RnVuY3Rpb25DYWxsOjpTY3JpcHRGdW5j
dGlvbkNhbGwoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiB0aGlzT2JqZWN0LCBjb25z
dCBTdHJpbmcmIG5hbWUsIFNjcmlwdEZ1bmN0aW9uQ2FsbEhhbmRsZXIgY2FsbEhhbmRsZXIpCiAg
ICAgOiBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyKHRoaXNPYmplY3Quc2NyaXB0U3RhdGUoKSkK
KyAgICAsIG1fY2FsbEhhbmRsZXIoY2FsbEhhbmRsZXIpCiAgICAgLCBtX3RoaXNPYmplY3QodGhp
c09iamVjdCkKICAgICAsIG1fbmFtZShuYW1lKQogewogfQogCi1TY3JpcHRWYWx1ZSBTY3JpcHRG
dW5jdGlvbkNhbGw6OmNhbGwoYm9vbCYgaGFkRXhjZXB0aW9uKQorRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUgU2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKGJvb2wmIGhhZEV4Y2VwdGlvbikKIHsKICAg
ICBKU09iamVjdCogdGhpc09iamVjdCA9IG1fdGhpc09iamVjdC5qc09iamVjdCgpOwogCkBAIC0x
MjMsMzIgKzEyMywzMiBAQCBTY3JpcHRWYWx1ZSBTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwoYm9v
bCYgaGFkRXhjZXB0aW9uKQogICAgIEpTVmFsdWUgZnVuY3Rpb24gPSB0aGlzT2JqZWN0LT5nZXQo
bV9leGVjLCBJZGVudGlmaWVyKG1fZXhlYywgbV9uYW1lKSk7CiAgICAgaWYgKG1fZXhlYy0+aGFk
RXhjZXB0aW9uKCkpIHsKICAgICAgICAgaGFkRXhjZXB0aW9uID0gdHJ1ZTsKLSAgICAgICAgcmV0
dXJuIFNjcmlwdFZhbHVlKCk7CisgICAgICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSgpOwogICAgIH0KIAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxU
eXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUg
PT0gQ2FsbFR5cGVOb25lKQotICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoKTsKKyAgICAgICAg
cmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCk7CiAKICAgICBKU1ZhbHVlIHJlc3VsdDsK
LSAgICBpZiAoaXNNYWluVGhyZWFkKCkpCi0gICAgICAgIHJlc3VsdCA9IEpTTWFpblRocmVhZEV4
ZWNTdGF0ZTo6Y2FsbChtX2V4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNP
YmplY3QsIG1fYXJndW1lbnRzKTsKKyAgICBpZiAobV9jYWxsSGFuZGxlcikKKyAgICAgICAgcmVz
dWx0ID0gbV9jYWxsSGFuZGxlcihtX2V4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEs
IHRoaXNPYmplY3QsIG1fYXJndW1lbnRzKTsKICAgICBlbHNlCiAgICAgICAgIHJlc3VsdCA9IEpT
Qzo6Y2FsbChtX2V4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNPYmplY3Qs
IG1fYXJndW1lbnRzKTsKIAogICAgIGlmIChtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAgICAg
ICAgIGhhZEV4Y2VwdGlvbiA9IHRydWU7Ci0gICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOwor
ICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKTsKICAgICB9CiAKLSAgICBy
ZXR1cm4gU2NyaXB0VmFsdWUobV9leGVjLT52bSgpLCByZXN1bHQpOworICAgIHJldHVybiBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZShtX2V4ZWMtPnZtKCksIHJlc3VsdCk7CiB9CiAKLVNjcmlwdFZh
bHVlIFNjcmlwdEZ1bmN0aW9uQ2FsbDo6Y2FsbCgpCitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBT
Y3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwoKQogewogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFs
c2U7CiAgICAgcmV0dXJuIGNhbGwoaGFkRXhjZXB0aW9uKTsKIH0KIAotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgRGVwcmVjYXRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmgKc2ltaWxhcml0eSBpbmRleCA1MCUK
cmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxs
LmgKcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlv
bkNhbGwuaAppbmRleCA1NmZhNDdjLi4wNGIyYWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmgKQEAgLTEsNCArMSw1IEBACiAvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dApAQCAtMzEsNTcgKzMyLDU2IEBACiAjaWZuZGVmIFNjcmlwdEZ1bmN0aW9u
Q2FsbF9oCiAjZGVmaW5lIFNjcmlwdEZ1bmN0aW9uQ2FsbF9oCiAKKyNpbmNsdWRlICJBcmdMaXN0
LmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCi0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIK
LQotI2luY2x1ZGUgPHJ1bnRpbWUvQXJnTGlzdC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLSAgICBjbGFzcyBKU1ZhbHVlOworY2xhc3MgSlNW
YWx1ZTsKIH0KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIFNjcmlwdFZhbHVlOwor
bmFtZXNwYWNlIERlcHJlY2F0ZWQgewogCi0gICAgY2xhc3MgU2NyaXB0Q2FsbEFyZ3VtZW50SGFu
ZGxlciB7Ci0gICAgcHVibGljOgotICAgICAgICBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyKEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSkgOiBtX2V4ZWMoc3RhdGUpIHsgfQorY2xhc3MgSlNfRVhQT1JU
X1BSSVZBVEUgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlciB7CitwdWJsaWM6CisgICAgU2NyaXB0
Q2FsbEFyZ3VtZW50SGFuZGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpIDogbV9leGVjKHN0YXRl
KSB7IH0KIAotICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGNvbnN0IFNjcmlwdE9iamVjdCYp
OwotICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGNvbnN0IFNjcmlwdFZhbHVlJik7Ci0gICAg
ICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoY29uc3QgY2hhciopOwotICAgICAgICB2b2lkIGFwcGVu
ZEFyZ3VtZW50KGNvbnN0IFN0cmluZyYpOwotICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KEpT
Qzo6SlNWYWx1ZSk7Ci0gICAgICAgIHZvaWQgYXBwZW5kQXJndW1lbnQobG9uZyk7Ci0gICAgICAg
IHZvaWQgYXBwZW5kQXJndW1lbnQobG9uZyBsb25nKTsKLSAgICAgICAgdm9pZCBhcHBlbmRBcmd1
bWVudCh1bnNpZ25lZCBpbnQpOwotICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KHVuc2lnbmVk
IGxvbmcpOwotICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGludCk7Ci0gICAgICAgIHZvaWQg
YXBwZW5kQXJndW1lbnQoYm9vbCk7CisgICAgdm9pZCBhcHBlbmRBcmd1bWVudChjb25zdCBTY3Jp
cHRPYmplY3QmKTsKKyAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGNvbnN0IFNjcmlwdFZhbHVlJik7
CisgICAgdm9pZCBhcHBlbmRBcmd1bWVudChjb25zdCBjaGFyKik7CisgICAgdm9pZCBhcHBlbmRB
cmd1bWVudChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KEpTQzo6SlNW
YWx1ZSk7CisgICAgdm9pZCBhcHBlbmRBcmd1bWVudChsb25nKTsKKyAgICB2b2lkIGFwcGVuZEFy
Z3VtZW50KGxvbmcgbG9uZyk7CisgICAgdm9pZCBhcHBlbmRBcmd1bWVudCh1bnNpZ25lZCBpbnQp
OworICAgIHZvaWQgYXBwZW5kQXJndW1lbnQodW5zaWduZWQgbG9uZyk7CisgICAgdm9pZCBhcHBl
bmRBcmd1bWVudChpbnQpOworICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoYm9vbCk7CiAKLSAgICBw
cm90ZWN0ZWQ6Ci0gICAgICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgbV9hcmd1bWVudHM7
Ci0gICAgICAgIEpTQzo6RXhlY1N0YXRlKiBtX2V4ZWM7Citwcm90ZWN0ZWQ6CisgICAgSlNDOjpN
YXJrZWRBcmd1bWVudEJ1ZmZlciBtX2FyZ3VtZW50czsKKyAgICBKU0M6OkV4ZWNTdGF0ZSogbV9l
eGVjOwogCi0gICAgcHJpdmF0ZToKLSAgICAgICAgLy8gTWFya2VkQXJndW1lbnRCdWZmZXIgbXVz
dCBiZSBzdGFjayBhbGxvY2F0ZWQsIHNvIHByZXZlbnQgaGVhcAotICAgICAgICAvLyBhbGxvYyBv
ZiBTY3JpcHRGdW5jdGlvbkNhbGwgYXMgd2VsbC4KLSAgICAgICAgdm9pZCogb3BlcmF0b3IgbmV3
KHNpemVfdCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KDB4YmFkYmVlZik7IH0KLSAgICAgICAgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90
KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
MHhiYWRiZWVmKTsgfQotICAgIH07Citwcml2YXRlOgorICAgIC8vIE1hcmtlZEFyZ3VtZW50QnVm
ZmVyIG11c3QgYmUgc3RhY2sgYWxsb2NhdGVkLCBzbyBwcmV2ZW50IGhlYXAKKyAgICAvLyBhbGxv
YyBvZiBTY3JpcHRGdW5jdGlvbkNhbGwgYXMgd2VsbC4KKyAgICB2b2lkKiBvcGVyYXRvciBuZXco
c2l6ZV90KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oMHhiYWRiZWVmKTsgfQorICAgIHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCkgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDB4YmFk
YmVlZik7IH0KK307CiAKLSAgICBjbGFzcyBTY3JpcHRGdW5jdGlvbkNhbGwgOiBwdWJsaWMgU2Ny
aXB0Q2FsbEFyZ3VtZW50SGFuZGxlciB7Ci0gICAgcHVibGljOgotICAgICAgICBTY3JpcHRGdW5j
dGlvbkNhbGwoY29uc3QgU2NyaXB0T2JqZWN0JiB0aGlzT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5h
bWUpOwotICAgICAgICBTY3JpcHRWYWx1ZSBjYWxsKGJvb2wmIGhhZEV4Y2VwdGlvbik7Ci0gICAg
ICAgIFNjcmlwdFZhbHVlIGNhbGwoKTsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFNjcmlwdEZ1
bmN0aW9uQ2FsbCA6IHB1YmxpYyBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyIHsKK3B1YmxpYzoK
KyAgICB0eXBlZGVmIEpTQzo6SlNWYWx1ZSAoKlNjcmlwdEZ1bmN0aW9uQ2FsbEhhbmRsZXIpKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIEpTQzo6Q2Fs
bFR5cGUgY2FsbFR5cGUsIGNvbnN0IEpTQzo6Q2FsbERhdGEmIGNhbGxEYXRhLCBKU0M6OkpTVmFs
dWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MpOworICAgIFNjcmlwdEZ1bmN0
aW9uQ2FsbChjb25zdCBTY3JpcHRPYmplY3QmIHRoaXNPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgU2NyaXB0RnVuY3Rpb25DYWxsSGFuZGxlciBoYW5kbGVyID0gbnVsbHB0cik7CisgICAgU2Ny
aXB0VmFsdWUgY2FsbChib29sJiBoYWRFeGNlcHRpb24pOworICAgIFNjcmlwdFZhbHVlIGNhbGwo
KTsKIAotICAgIHByb3RlY3RlZDoKLSAgICAgICAgU2NyaXB0T2JqZWN0IG1fdGhpc09iamVjdDsK
LSAgICAgICAgU3RyaW5nIG1fbmFtZTsKLSAgICB9OworcHJvdGVjdGVkOgorICAgIFNjcmlwdEZ1
bmN0aW9uQ2FsbEhhbmRsZXIgbV9jYWxsSGFuZGxlcjsKKyAgICBTY3JpcHRPYmplY3QgbV90aGlz
T2JqZWN0OworICAgIFN0cmluZyBtX25hbWU7Cit9OwogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Cit9IC8vIG5hbWVzcGFjZSBEZXByZWNhdGVkCiAKICNlbmRpZiAvLyBTY3JpcHRGdW5jdGlvbkNh
bGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdl
bnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5jcHAK
c2ltaWxhcml0eSBpbmRleCA3MSUKY29weSBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9X
b3JrZXJDb25zb2xlQWdlbnQuY3BwCmNvcHkgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRp
bmdzL1NjcmlwdE9iamVjdC5jcHAKaW5kZXggMTViYjdhOC4uY2NmN2FmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5jcHAKQEAgLTEsNSArMSw2
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yOSwzMiArMzAsMjIg
QEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2NyaXB0T2JqZWN0Lmgi
CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQordXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotI2luY2x1
ZGUgIldvcmtlckNvbnNvbGVBZ2VudC5oIgorbmFtZXNwYWNlIERlcHJlY2F0ZWQgewogCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLVdvcmtlckNvbnNvbGVBZ2VudDo6V29ya2VyQ29uc29sZUFnZW50
KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluamVjdGVkU2NyaXB0
TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgIDogSW5zcGVjdG9yQ29uc29sZUFn
ZW50KGluc3RydW1lbnRpbmdBZ2VudHMsIGluamVjdGVkU2NyaXB0TWFuYWdlcikKLXsKLX0KLQot
V29ya2VyQ29uc29sZUFnZW50Ojp+V29ya2VyQ29uc29sZUFnZW50KCkKK1NjcmlwdE9iamVjdDo6
U2NyaXB0T2JqZWN0KEV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIEpTT2JqZWN0KiBvYmplY3QpCisg
ICAgOiBTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZS0+dm0oKSwgb2JqZWN0KQorICAgICwgbV9zY3Jp
cHRTdGF0ZShzY3JpcHRTdGF0ZSkKIHsKIH0KIAotdm9pZCBXb3JrZXJDb25zb2xlQWdlbnQ6OmFk
ZEluc3BlY3RlZE5vZGUoRXJyb3JTdHJpbmcqIGVycm9yLCBpbnQpCitTY3JpcHRPYmplY3Q6OlNj
cmlwdE9iamVjdChFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcHRWYWx1ZSYgc2Ny
aXB0VmFsdWUpCisgICAgOiBTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZS0+dm0oKSwgc2NyaXB0VmFs
dWUuanNWYWx1ZSgpKQorICAgICwgbV9zY3JpcHRTdGF0ZShzY3JpcHRTdGF0ZSkKIHsKLSAgICAq
ZXJyb3IgPSAiYWRkSW5zcGVjdGVkTm9kZSBpcyBub3Qgc3VwcG9ydGVkIGZvciB3b3JrZXJzIjsK
IH0KIAotYm9vbCBXb3JrZXJDb25zb2xlQWdlbnQ6OmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKQot
ewotICAgIHJldHVybiB0cnVlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQorfSAvLyBuYW1lc3BhY2UgRGVwcmVjYXRlZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhc2VBZ2VudC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5oCnNpbWlsYXJpdHkgaW5k
ZXggNjQlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYXNl
QWdlbnQuaApyZW5hbWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdE9i
amVjdC5oCmluZGV4IDhiOTA5MzguLjhmN2IwZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JCYXNlQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYmluZGluZ3MvU2NyaXB0T2JqZWN0LmgKQEAgLTEsNSArMSw2IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yOCwzNiArMjksMjcgQEAKICAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotI2lmbmRlZiBJbnNwZWN0b3JCYXNlQWdlbnRfaAotI2RlZmluZSBJbnNwZWN0b3JC
YXNlQWdlbnRfaAorI2lmbmRlZiBTY3JpcHRPYmplY3RfaAorI2RlZmluZSBTY3JpcHRPYmplY3Rf
aAogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCi0jaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJT
Y3JpcHRWYWx1ZS5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgRGVwcmVjYXRl
ZCB7CiAKLWNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKLWNsYXNzIEluc3RydW1lbnRp
bmdBZ2VudHM7Ci0KLWNsYXNzIEluc3BlY3RvckJhc2VBZ2VudCB7CitjbGFzcyBTY3JpcHRPYmpl
Y3QgOiBwdWJsaWMgU2NyaXB0VmFsdWUgewogcHVibGljOgotICAgIHZpcnR1YWwgfkluc3BlY3Rv
ckJhc2VBZ2VudCgpIHsgfQorICAgIEpTX0VYUE9SVF9QUklWQVRFIFNjcmlwdE9iamVjdChKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBTY3Jp
cHRPYmplY3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTY3JpcHRWYWx1ZSYpOworICAgIFNjcmlw
dE9iamVjdCgpIDogbV9zY3JpcHRTdGF0ZShudWxscHRyKSB7IH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJk
QWdlbnQoKSB7IH0KKyAgICBKU0M6OkpTT2JqZWN0KiBqc09iamVjdCgpIGNvbnN0IHsgcmV0dXJu
IGFzT2JqZWN0KGpzVmFsdWUoKSk7IH0KKyAgICBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUo
KSBjb25zdCB7IHJldHVybiBtX3NjcmlwdFN0YXRlOyB9CiAKIHByb3RlY3RlZDoKLSAgICBJbnNw
ZWN0b3JCYXNlQWdlbnQoY29uc3QgU3RyaW5nJiBuYW1lLCBJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzKQotICAgICAgICA6IG1faW5zdHJ1bWVudGluZ0FnZW50cyhpbnN0
cnVtZW50aW5nQWdlbnRzKQotICAgICAgICAsIG1fbmFtZShuYW1lKQotICAgIHsKLSAgICB9Ci0K
LSAgICBJbnN0cnVtZW50aW5nQWdlbnRzKiBtX2luc3RydW1lbnRpbmdBZ2VudHM7Ci0gICAgU3Ry
aW5nIG1fbmFtZTsKKyAgICBKU0M6OkV4ZWNTdGF0ZSogbV9zY3JpcHRTdGF0ZTsKIH07CiAKLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIERlcHJlY2F0ZWQKIAotI2VuZGlm
IC8vICFkZWZpbmVkKEluc3BlY3RvckJhc2VBZ2VudF9oKQorI2VuZGlmIC8vIFNjcmlwdE9iamVj
dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCnNpbWls
YXJpdHkgaW5kZXggNzIlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdFZhbHVlLmNwcApyZW5hbWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Nj
cmlwdFZhbHVlLmNwcAppbmRleCA2ZDlmYjFkLi41YzYwYjFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoYykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNywxMyArNywxMyBAQAog
ICogYXJlIG1ldDoKICAqCiAgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
ICAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAogICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgogICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKICAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
Ci0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLiAKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKICAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKQEAgLTMwLDIxICszMCwyMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAKKyNpbmNsdWRlICJBUElDYXN0LmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yVmFsdWVzLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVk
ZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCi0KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9B
UElDYXN0Lmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZVJlZi5oPgotCi0jaW5j
bHVkZSA8aGVhcC9TdHJvbmcuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgorI2luY2x1
ZGUgIkpTTG9jay5oIgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwordXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKKworbmFtZXNwYWNlIERlcHJlY2F0ZWQgewogCi1uYW1lc3BhY2UgV2ViQ29yZSB7
CitTY3JpcHRWYWx1ZTo6flNjcmlwdFZhbHVlKCkKK3sKK30KIAotYm9vbCBTY3JpcHRWYWx1ZTo6
Z2V0U3RyaW5nKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgU3RyaW5nJiByZXN1bHQpIGNv
bnN0Citib29sIFNjcmlwdFZhbHVlOjpnZXRTdHJpbmcoRXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwg
U3RyaW5nJiByZXN1bHQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3ZhbHVlKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC01NCw3ICs1Myw3IEBAIGJvb2wgU2NyaXB0VmFsdWU6OmdldFN0cmluZyhK
U0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIFN0cmluZyYgcmVzdWx0KSBjb25zdAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1TdHJpbmcgU2NyaXB0VmFsdWU6OnRvU3RyaW5nKEpTQzo6RXhlY1N0
YXRlKiBzY3JpcHRTdGF0ZSkgY29uc3QKK1N0cmluZyBTY3JpcHRWYWx1ZTo6dG9TdHJpbmcoRXhl
Y1N0YXRlKiBzY3JpcHRTdGF0ZSkgY29uc3QKIHsKICAgICBTdHJpbmcgcmVzdWx0ID0gbV92YWx1
ZS5nZXQoKS50b1N0cmluZyhzY3JpcHRTdGF0ZSktPnZhbHVlKHNjcmlwdFN0YXRlKTsKICAgICAv
LyBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgYW4gZXhjZXB0aW9uIGlzIHRocm93biBhcyBwYXJ0IG9m
IGludm9raW5nIHRvU3RyaW5nIG9uIHRoZSBvYmplY3QuCkBAIC02MywxMiArNjIsMTEgQEAgU3Ry
aW5nIFNjcmlwdFZhbHVlOjp0b1N0cmluZyhKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUpIGNv
bnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBTY3JpcHRWYWx1ZTo6aXNFcXVhbChK
U0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBhbm90aGVyVmFs
dWUpIGNvbnN0Citib29sIFNjcmlwdFZhbHVlOjppc0VxdWFsKEV4ZWNTdGF0ZSogc2NyaXB0U3Rh
dGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBhbm90aGVyVmFsdWUpIGNvbnN0CiB7CiAgICAgaWYgKGhh
c05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIGFub3RoZXJWYWx1ZS5oYXNOb1ZhbHVlKCk7Ci0K
LSAgICByZXR1cm4gSlNWYWx1ZUlzRXF1YWwodG9SZWYoc2NyaXB0U3RhdGUpLCB0b1JlZihzY3Jp
cHRTdGF0ZSwganNWYWx1ZSgpKSwgdG9SZWYoc2NyaXB0U3RhdGUsIGFub3RoZXJWYWx1ZS5qc1Zh
bHVlKCkpLCAwKTsKKyAgICByZXR1cm4gSlNWYWx1ZUlzRXF1YWwodG9SZWYoc2NyaXB0U3RhdGUp
LCB0b1JlZihzY3JpcHRTdGF0ZSwganNWYWx1ZSgpKSwgdG9SZWYoc2NyaXB0U3RhdGUsIGFub3Ro
ZXJWYWx1ZS5qc1ZhbHVlKCkpLCBudWxscHRyKTsKIH0KIAogYm9vbCBTY3JpcHRWYWx1ZTo6aXNO
dWxsKCkgY29uc3QKQEAgLTk4LDMzICs5NiwxNyBAQCBib29sIFNjcmlwdFZhbHVlOjppc0Z1bmN0
aW9uKCkgY29uc3QKICAgICByZXR1cm4gZ2V0Q2FsbERhdGEobV92YWx1ZS5nZXQoKSwgY2FsbERh
dGEpICE9IENhbGxUeXBlTm9uZTsKIH0KIAotUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IFNjcmlwdFZhbHVlOjpzZXJpYWxpemUoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBT
ZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucykKLXsKLSAgICByZXR1cm4gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoc2NyaXB0U3RhdGUsIGpzVmFsdWUoKSwgMCwgMCwg
dGhyb3dFeGNlcHRpb25zKTsKLX0KLQotUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IFNjcmlwdFZhbHVlOjpzZXJpYWxpemUoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBNZXNz
YWdlUG9ydEFycmF5KiBtZXNzYWdlUG9ydHMsIEFycmF5QnVmZmVyQXJyYXkqIGFycmF5QnVmZmVy
cywgYm9vbCYgZGlkVGhyb3cpCi17Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
c2VyaWFsaXplZFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoc2NyaXB0U3Rh
dGUsIGpzVmFsdWUoKSwgbWVzc2FnZVBvcnRzLCBhcnJheUJ1ZmZlcnMpOwotICAgIGRpZFRocm93
ID0gc2NyaXB0U3RhdGUtPmhhZEV4Y2VwdGlvbigpOwotICAgIHJldHVybiBzZXJpYWxpemVkVmFs
dWUucmVsZWFzZSgpOwotfQotCi1TY3JpcHRWYWx1ZSBTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUo
SlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVl
LCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucykKLXsKLSAgICByZXR1cm4g
U2NyaXB0VmFsdWUoc2NyaXB0U3RhdGUtPnZtKCksIHZhbHVlLT5kZXNlcmlhbGl6ZShzY3JpcHRT
dGF0ZSwgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgMCwgdGhyb3dFeGNlcHRp
b25zKSk7Ci19Ci0KICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotc3RhdGljIFBhc3NSZWZQdHI8SW5z
cGVjdG9yVmFsdWU+IGpzVG9JbnNwZWN0b3JWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3Rh
dGUsIEpTVmFsdWUgdmFsdWUsIGludCBtYXhEZXB0aCkKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiBqc1RvSW5zcGVjdG9yVmFsdWUoRXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgSlNW
YWx1ZSB2YWx1ZSwgaW50IG1heERlcHRoKQogewogICAgIGlmICghdmFsdWUpIHsKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAoIW1heERlcHRoKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICBtYXhEZXB0aC0tOwogCiAgICAgaWYgKHZh
bHVlLmlzTnVsbCgpIHx8IHZhbHVlLmlzVW5kZWZpbmVkKCkpCkBAIC0xMzcsNiArMTE5LDcgQEAg
c3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGpzVG9JbnNwZWN0b3JWYWx1ZShKU0M6
OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUKICAgICAgICAgU3RyaW5nIHMgPSB2YWx1ZS5nZXRTdHJp
bmcoc2NyaXB0U3RhdGUpOwogICAgICAgICByZXR1cm4gSW5zcGVjdG9yU3RyaW5nOjpjcmVhdGUo
U3RyaW5nKHMuY2hhcmFjdGVycygpLCBzLmxlbmd0aCgpKSk7CiAgICAgfQorCiAgICAgaWYgKHZh
bHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgaWYgKGlzSlNBcnJheSh2YWx1ZSkpIHsKICAgICAg
ICAgICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gaW5zcGVjdG9yQXJyYXkgPSBJbnNwZWN0b3JB
cnJheTo6Y3JlYXRlKCk7CkBAIC0xNDYsNyArMTI5LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5z
cGVjdG9yVmFsdWU+IGpzVG9JbnNwZWN0b3JWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3Rh
dGUKICAgICAgICAgICAgICAgICBKU1ZhbHVlIGVsZW1lbnQgPSBhcnJheS0+Z2V0SW5kZXgoc2Ny
aXB0U3RhdGUsIGkpOwogICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gZWxl
bWVudFZhbHVlID0ganNUb0luc3BlY3RvclZhbHVlKHNjcmlwdFN0YXRlLCBlbGVtZW50LCBtYXhE
ZXB0aCk7CiAgICAgICAgICAgICAgICAgaWYgKCFlbGVtZW50VmFsdWUpCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAgICAgICAgICAgICBpbnNwZWN0b3JBcnJheS0+cHVzaFZhbHVlKGVsZW1lbnRWYWx1ZSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gaW5zcGVjdG9yQXJyYXk7CkBAIC0xNjAs
MjAgKzE0MywyMSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4ganNUb0luc3Bl
Y3RvclZhbHVlKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZQogICAgICAgICAgICAgSlNWYWx1
ZSBwcm9wZXJ0eVZhbHVlID0gb2JqZWN0LT5nZXQoc2NyaXB0U3RhdGUsIG5hbWUpOwogICAgICAg
ICAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBpbnNwZWN0b3JWYWx1ZSA9IGpzVG9JbnNwZWN0
b3JWYWx1ZShzY3JpcHRTdGF0ZSwgcHJvcGVydHlWYWx1ZSwgbWF4RGVwdGgpOwogICAgICAgICAg
ICAgaWYgKCFpbnNwZWN0b3JWYWx1ZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIGluc3BlY3Rvck9iamVjdC0+
c2V0VmFsdWUoU3RyaW5nKG5hbWUuY2hhcmFjdGVycygpLCBuYW1lLmxlbmd0aCgpKSwgaW5zcGVj
dG9yVmFsdWUpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBpbnNwZWN0b3JPYmplY3Q7CiAg
ICAgfQorCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IFNjcmlwdFZhbHVl
Ojp0b0luc3BlY3RvclZhbHVlKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSkgY29uc3QKK1Bh
c3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IFNjcmlwdFZhbHVlOjp0b0luc3BlY3RvclZhbHVlKEV4
ZWNTdGF0ZSogc2NyaXB0U3RhdGUpIGNvbnN0CiB7Ci0gICAgSlNDOjpKU0xvY2tIb2xkZXIgaG9s
ZGVyKHNjcmlwdFN0YXRlKTsKKyAgICBKU0xvY2tIb2xkZXIgaG9sZGVyKHNjcmlwdFN0YXRlKTsK
ICAgICByZXR1cm4ganNUb0luc3BlY3RvclZhbHVlKHNjcmlwdFN0YXRlLCBtX3ZhbHVlLmdldCgp
LCBJbnNwZWN0b3JWYWx1ZTo6bWF4RGVwdGgpOwogfQogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNU
T1IpCiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIERlcHJlY2F0ZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuaApzaW1pbGFyaXR5IGlu
ZGV4IDc2JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1
ZS5oCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUu
aAppbmRleCAwMTIxMGY1Li5kNWZhZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5n
cy9TY3JpcHRWYWx1ZS5oCkBAIC0xLDEwICsxLDExIEBACiAvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoYykgMjAw
OCwgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogCisgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCiAgKiBtZXQ6Ci0gKiAKKyAqCiAgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAogICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgogICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQpAQCAtMTQsNyArMTUsNyBAQAogICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwogICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KICAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKiAKKyAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiAgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAogICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCkBAIC0zMSwyNSArMzIsMjQgQEAKICNpZm5kZWYgU2NyaXB0VmFsdWVfaAogI2RlZmluZSBT
Y3JpcHRWYWx1ZV9oCiAKLSNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNs
dWRlICJTY3JpcHRTdGF0ZS5oIgotI2luY2x1ZGUgPGhlYXAvU3Ryb25nLmg+Ci0jaW5jbHVkZSA8
aGVhcC9TdHJvbmdJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+Ci0j
aW5jbHVkZSA8cnVudGltZS9PcGVyYXRpb25zLmg+CisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgor
I2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJTdHJvbmcuaCIKKyNpbmNsdWRlICJT
dHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotCituYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKIGNsYXNzIEluc3BlY3RvclZhbHVlOwotY2xhc3MgU2VyaWFsaXplZFNjcmlw
dFZhbHVlOworfQorCituYW1lc3BhY2UgRGVwcmVjYXRlZCB7CiAKLWNsYXNzIFNjcmlwdFZhbHVl
IHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFNjcmlwdFZhbHVlIHsKIHB1YmxpYzoKICAgICBT
Y3JpcHRWYWx1ZSgpIHsgfQotICAgIFNjcmlwdFZhbHVlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFs
dWUgdmFsdWUpIDogbV92YWx1ZSh2bSwgdmFsdWUpIHt9Ci0gICAgdmlydHVhbCB+U2NyaXB0VmFs
dWUoKSB7fQorICAgIFNjcmlwdFZhbHVlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFsdWUp
IDogbV92YWx1ZSh2bSwgdmFsdWUpIHsgfQorICAgIHZpcnR1YWwgflNjcmlwdFZhbHVlKCk7CiAK
ICAgICBKU0M6OkpTVmFsdWUganNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUuZ2V0KCk7
IH0KICAgICBib29sIGdldFN0cmluZyhKU0M6OkV4ZWNTdGF0ZSosIFN0cmluZyYgcmVzdWx0KSBj
b25zdDsKQEAgLTY1LDE4ICs2NSwxNCBAQCBwdWJsaWM6CiAKICAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgU2NyaXB0VmFsdWUmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IG90aGVy
Lm1fdmFsdWU7IH0KIAotICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJp
YWxpemUoSlNDOjpFeGVjU3RhdGUqLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcp
OwotICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemUoSlNDOjpF
eGVjU3RhdGUqLCBNZXNzYWdlUG9ydEFycmF5KiwgQXJyYXlCdWZmZXJBcnJheSosIGJvb2wmKTsK
LSAgICBzdGF0aWMgU2NyaXB0VmFsdWUgZGVzZXJpYWxpemUoSlNDOjpFeGVjU3RhdGUqLCBTZXJp
YWxpemVkU2NyaXB0VmFsdWUqLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcpOwot
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB0
b0luc3BlY3RvclZhbHVlKEpTQzo6RXhlY1N0YXRlKikgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiB0b0luc3BlY3RvclZhbHVlKEpTQzo6RXhlY1N0YXRl
KikgY29uc3Q7CiAjZW5kaWYKIAogcHJpdmF0ZToKICAgICBKU0M6OlN0cm9uZzxKU0M6OlVua25v
d24+IG1fdmFsdWU7CiB9OwogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFj
ZSBEZXByZWNhdGVkCiAKICNlbmRpZiAvLyBTY3JpcHRWYWx1ZV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaApzaW1pbGFyaXR5IGlu
ZGV4IDY4JQpjb3B5IGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50
UmVnaXN0cnkuaApjb3B5IHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQWdlbnRCYXNlLmgKaW5kZXggNGZkMDM1My4uMjBhZDcxZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNCwyOSArMjQsMzMgQEAKICAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotI2lmbmRlZiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5X2gKLSNkZWZpbmUgSW5zcGVj
dG9yQWdlbnRSZWdpc3RyeV9oCisjaWZuZGVmIEluc3BlY3RvckFnZW50QmFzZV9oCisjZGVmaW5l
IEluc3BlY3RvckFnZW50QmFzZV9oCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIK
LSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFt
ZXNwYWNlIEluc3BlY3RvciB7CiAKIGNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwor
Y2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogCi1jbGFzcyBJbnNwZWN0b3JBZ2VudFJl
Z2lzdHJ5IHsKK2NsYXNzIEluc3BlY3RvckFnZW50QmFzZSB7CiBwdWJsaWM6Ci0gICAgdm9pZCBh
cHBlbmQoUGFzc093blB0cjxJbnNwZWN0b3JCYXNlQWdlbnQ+KTsKKyAgICB2aXJ0dWFsIH5JbnNw
ZWN0b3JBZ2VudEJhc2UoKSB7IH0KIAotICAgIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
Kik7Ci0gICAgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpOwotICAgIHZvaWQg
ZGlzY2FyZEFnZW50cygpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5k
KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkQWdlbnQoKSB7IH0KIAotcHJpdmF0ZToK
LSAgICBWZWN0b3I8T3duUHRyPEluc3BlY3RvckJhc2VBZ2VudD4+IG1fYWdlbnRzOwotfTsKK3By
b3RlY3RlZDoKKyAgICBJbnNwZWN0b3JBZ2VudEJhc2UoY29uc3QgU3RyaW5nJiBuYW1lKQorICAg
ICAgICA6IG1fbmFtZShuYW1lKQorICAgIHsKKyAgICB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKyAgICBTdHJpbmcgbV9uYW1lOworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIEluc3BlY3Rv
cgogCi0jZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yQWdlbnRSZWdpc3RyeV9oKQorI2VuZGlm
IC8vICFkZWZpbmVkKEluc3BlY3RvckFnZW50QmFzZV9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcApzaW1pbGFyaXR5
IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QWdlbnRSZWdpc3RyeS5jcHAKcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAKaW5kZXggMDk5ZDFhMy4uNDZlOTIwMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnku
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRS
ZWdpc3RyeS5jcHAKQEAgLTI1LDE0ICsyNSwxMyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgiCiAKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotdm9pZCBJbnNwZWN0b3JBZ2Vu
dFJlZ2lzdHJ5OjphcHBlbmQoUGFzc093blB0cjxJbnNwZWN0b3JCYXNlQWdlbnQ+IGFnZW50KQor
dm9pZCBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5OjphcHBlbmQoUGFzc093blB0cjxJbnNwZWN0b3JB
Z2VudEJhc2U+IGFnZW50KQogewogICAgIG1fYWdlbnRzLmFwcGVuZChhZ2VudCk7CiB9CkBAIC01
NSw2ICs1NCw2IEBAIHZvaWQgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6ZGlzY2FyZEFnZW50cygp
CiAgICAgICAgIG1fYWdlbnRzW2ldLT5kaXNjYXJkQWdlbnQoKTsKIH0KIAotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyBFTkFCTEUo
SU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckFnZW50UmVnaXN0cnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQWdlbnRSZWdpc3RyeS5oCnNpbWlsYXJpdHkgaW5kZXggODclCmNvcHkgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oCmNvcHkgdG8gU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgKaW5kZXgg
NGZkMDM1My4uY2I2NTcyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckFnZW50UmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaApAQCAtMjcsMjYgKzI3LDI3IEBACiAjaWZuZGVm
IEluc3BlY3RvckFnZW50UmVnaXN0cnlfaAogI2RlZmluZSBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5
X2gKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3Rv
ckFnZW50QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSW5zcGVjdG9yIHsK
IAogY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CitjbGFzcyBJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWw7CiAKLWNsYXNzIEluc3BlY3RvckFnZW50UmVnaXN0cnkgeworY2xhc3MgSlNf
RVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeSB7CiBwdWJsaWM6Ci0gICAgdm9p
ZCBhcHBlbmQoUGFzc093blB0cjxJbnNwZWN0b3JCYXNlQWdlbnQ+KTsKKyAgICB2b2lkIGFwcGVu
ZChQYXNzT3duUHRyPEluc3BlY3RvckFnZW50QmFzZT4pOwogCiAgICAgdm9pZCBkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqKTsKICAgICB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5k
KCk7CiAgICAgdm9pZCBkaXNjYXJkQWdlbnRzKCk7CiAKIHByaXZhdGU6Ci0gICAgVmVjdG9yPE93
blB0cjxJbnNwZWN0b3JCYXNlQWdlbnQ+PiBtX2FnZW50czsKKyAgICBWZWN0b3I8T3duUHRyPElu
c3BlY3RvckFnZW50QmFzZT4+IG1fYWdlbnRzOwogfTsKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0
b3JBZ2VudFJlZ2lzdHJ5X2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAKc2ltaWxhcml0eSBpbmRleCA5
NiUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmNwcApyZW5hbWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAKaW5kZXggYmZhNGM0Yi4uYzI2Njg1MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmNwcApAQCAtMjksMTIgKzI5LDEyIEBACiAKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yRm9yd2FyZGluZy5oIgorI2luY2x1ZGUgIklu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6OkNhbGxiYWNrQmFzZShQYXNz
UmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBiYWNrZW5kRGlzcGF0Y2hlciwgaW50
IGlkKQogICAgIDogbV9iYWNrZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcikKQEAgLTE4
Nyw3ICsxODcsNyBAQCB2b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpyZXBvcnRQcm90
b2NvbEVycm9yKGNvbnN0IGxvbmcqIGNvbnN0IGNhbGxJZCwgQwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBSZXR1cm5WYWx1ZVR5cGUsIHR5cGVuYW1lIFZhbHVlVHlwZSwgdHlwZW5hbWUgRGVmYXVs
dFZhbHVlVHlwZT4KLVJldHVyblZhbHVlVHlwZSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6
Z2V0UHJvcGVydHlWYWx1ZShJbnNwZWN0b3JPYmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0b3JBcnJheSogcHJvdG9jb2xFcnJvcnMsIERl
ZmF1bHRWYWx1ZVR5cGUgZGVmYXVsdFZhbHVlLCBib29sICgqYXNNZXRob2QpKEluc3BlY3RvclZh
bHVlKiwgVmFsdWVUeXBlKiksIGNvbnN0IGNoYXIqIHR5cGVOYW1lKQorc3RhdGljIFJldHVyblZh
bHVlVHlwZSBnZXRQcm9wZXJ0eVZhbHVlKEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBT
dHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3RvckFycmF5KiBwcm90b2NvbEVy
cm9ycywgRGVmYXVsdFZhbHVlVHlwZSBkZWZhdWx0VmFsdWUsIGJvb2wgKCphc01ldGhvZCkoSW5z
cGVjdG9yVmFsdWUqLCBWYWx1ZVR5cGUqKSwgY29uc3QgY2hhciogdHlwZU5hbWUpCiB7CiAgICAg
QVNTRVJUKHByb3RvY29sRXJyb3JzKTsKIApAQCAtMjU5LDYgKzI1OSw2IEBAIFBhc3NSZWZQdHI8
SW5zcGVjdG9yQXJyYXk+IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRBcnJheShJbnNw
ZWN0b3JPYmplY3QqCiAgICAgcmV0dXJuIGdldFByb3BlcnR5VmFsdWU8UGFzc1JlZlB0cjxJbnNw
ZWN0b3JBcnJheT4sIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4sIEluc3BlY3RvckFycmF5Kj4ob2Jq
ZWN0LCBuYW1lLCB2YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycywgbnVsbHB0ciwgQXNNZXRob2RC
cmlkZ2VzOjphc0FycmF5LCAiQXJyYXkiKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
fSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyLmgKc2ltaWxhcml0eSBpbmRleCA4NyUKcmVuYW1lIGZyb20gU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgKcmVuYW1lIHRvIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
aAppbmRleCBhNmU0ZDJmLi41MGZlNjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgKQEAgLTI3LDEyICsy
NywxMiBAQAogI2lmbmRlZiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcl9oCiAjZGVmaW5lIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyX2gKIAotI2luY2x1ZGUgIkluc3BlY3RvclR5cGVCdWls
ZGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSW5zcGVjdG9y
IHsKIAogY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CiBjbGFzcyBJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWw7CkBAIC00NywxNSArNDcsMTMgQEAgcHJvdGVjdGVkOgogICAgIFJlZlB0
cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKIH07CiAK
LWNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIFJlZkNvdW50ZWQ8SW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIFJlZkNvdW50ZWQ8SW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCopOwotICAg
IHZpcnR1YWwgfkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKCkgeyB9CiAKLSAgICBjbGFzcyBD
YWxsYmFja0Jhc2U6IHB1YmxpYyBSZWZDb3VudGVkPENhbGxiYWNrQmFzZT4geworICAgIGNsYXNz
IENhbGxiYWNrQmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPENhbGxiYWNrQmFzZT4gewogICAgIHB1
YmxpYzoKICAgICAgICAgQ2FsbGJhY2tCYXNlKFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI+LCBpbnQgaWQpOwotICAgICAgICB2aXJ0dWFsIH5DYWxsYmFja0Jhc2UoKSB7IH0K
IAogICAgICAgICBib29sIGlzQWN0aXZlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2VuZEZhaWx1
cmUoY29uc3QgRXJyb3JTdHJpbmcmKTsKQEAgLTk4LDEzICs5NiwxMCBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCogaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSA6IG1faW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgeyB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBSZXR1cm5WYWx1ZVR5cGUsIHR5cGVuYW1lIFZhbHVlVHlwZSwgdHlwZW5hbWUgRGVmYXVsdFZh
bHVlVHlwZT4KLSAgICBzdGF0aWMgUmV0dXJuVmFsdWVUeXBlIGdldFByb3BlcnR5VmFsdWUoSW5z
cGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3Vu
ZCwgSW5zcGVjdG9yQXJyYXkqIHByb3RvY29sRXJyb3JzLCBEZWZhdWx0VmFsdWVUeXBlIGRlZmF1
bHRWYWx1ZSwgYm9vbCAoKmFzTWV0aG9kKShJbnNwZWN0b3JWYWx1ZSosIFZhbHVlVHlwZSopLCBj
b25zdCBjaGFyKiB0eXBlTmFtZSk7Ci0KICAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG1f
aW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogICAgIEhhc2hNYXA8U3RyaW5nLCBJbnNwZWN0b3JT
dXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcio+IG1fZGlzcGF0Y2hlcnM7CiB9OwogCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8v
ICFkZWZpbmVkKEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyX2gpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcApzaW1pbGFyaXR5IGluZGV4IDk5
JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNw
cApyZW5hbWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1
ZXMuY3BwCmluZGV4IDhmY2UzMmQuLjI0MTlkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1
ZGUgPHd0Zi9kdG9hLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCi1u
YW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogbmFtZXNwYWNlIHsK
IApAQCAtODMzLDQgKzgzMyw0IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFzaWNWYWx1ZT4gSW5z
cGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKGRvdWJsZSB2YWx1ZSkKICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEluc3BlY3RvckJhc2ljVmFsdWUodmFsdWUpKTsKIH0KIAotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCnNpbWlsYXJpdHkgaW5kZXggOTUlCnJlbmFtZSBm
cm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaApyZW5hbWUgdG8g
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaAppbmRleCBj
YmI3ZjcxLi4wMTJhMWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yVmFsdWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JWYWx1ZXMuaApAQCAtMzgsMTIgKzM4LDEyIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogY2xhc3MgSW5zcGVjdG9yQXJyYXk7
CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiAKLWNsYXNzIEluc3BlY3RvclZhbHVlIDogcHVibGlj
IFJlZkNvdW50ZWQ8SW5zcGVjdG9yVmFsdWU+IHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIElu
c3BlY3RvclZhbHVlIDogcHVibGljIFJlZkNvdW50ZWQ8SW5zcGVjdG9yVmFsdWU+IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgY29uc3QgaW50IG1heERlcHRoID0gMTAwMDsKIApAQCAtOTAsNyArOTAs
NyBAQCBwcml2YXRlOgogICAgIFR5cGUgbV90eXBlOwogfTsKIAotY2xhc3MgSW5zcGVjdG9yQmFz
aWNWYWx1ZSA6IHB1YmxpYyBJbnNwZWN0b3JWYWx1ZSB7CitjbGFzcyBKU19FWFBPUlRfUFJJVkFU
RSBJbnNwZWN0b3JCYXNpY1ZhbHVlIDogcHVibGljIEluc3BlY3RvclZhbHVlIHsKIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvckJhc2ljVmFsdWU+IGNyZWF0ZShib29s
KTsKQEAgLTExNyw3ICsxMTcsNyBAQCBwcml2YXRlOgogICAgIH07CiB9OwogCi1jbGFzcyBJbnNw
ZWN0b3JTdHJpbmcgOiBwdWJsaWMgSW5zcGVjdG9yVmFsdWUgeworY2xhc3MgSlNfRVhQT1JUX1BS
SVZBVEUgSW5zcGVjdG9yU3RyaW5nIDogcHVibGljIEluc3BlY3RvclZhbHVlIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JTdHJpbmc+IGNyZWF0ZShjb25zdCBTdHJp
bmcmKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JTdHJpbmc+IGNyZWF0ZShjb25z
dCBjaGFyKik7CkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zdHJp
bmdWYWx1ZTsKIH07CiAKLWNsYXNzIEluc3BlY3Rvck9iamVjdEJhc2UgOiBwdWJsaWMgSW5zcGVj
dG9yVmFsdWUgeworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yT2JqZWN0QmFzZSA6
IHB1YmxpYyBJbnNwZWN0b3JWYWx1ZSB7CiBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxT
dHJpbmcsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4+IERpY3Rpb25hcnk7CiAKQEAgLTE5Miw3ICsx
OTIsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBJbnNwZWN0b3JPYmplY3QgOiBwdWJsaWMgSW5zcGVj
dG9yT2JqZWN0QmFzZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgSlNfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZSgpOwogCiAgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0
QmFzZTo6YXNPYmplY3Q7CiAKQEAgLTIyMCw3ICsyMjAsNyBAQCBwdWJsaWM6CiB9OwogCiAKLWNs
YXNzIEluc3BlY3RvckFycmF5QmFzZSA6IHB1YmxpYyBJbnNwZWN0b3JWYWx1ZSB7CitjbGFzcyBK
U19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JBcnJheUJhc2UgOiBwdWJsaWMgSW5zcGVjdG9yVmFs
dWUgewogcHVibGljOgogICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4+
OjppdGVyYXRvciBpdGVyYXRvcjsKICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8SW5zcGVjdG9y
VmFsdWU+Pjo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CkBAIC0yNjAsNyArMjYwLDcg
QEAgcHJpdmF0ZToKIAogY2xhc3MgSW5zcGVjdG9yQXJyYXkgOiBwdWJsaWMgSW5zcGVjdG9yQXJy
YXlCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4g
Y3JlYXRlKCk7CisgICAgc3RhdGljIEpTX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+IGNyZWF0ZSgpOwogCiAgICAgdXNpbmcgSW5zcGVjdG9yQXJyYXlCYXNlOjphc0Fy
cmF5OwogCkBAIC0zNjMsNiArMzYzLDYgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9yQXJyYXlCYXNl
OjpwdXNoQXJyYXkoUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gdmFsdWUpCiAgICAgbV9kYXRh
LmFwcGVuZCh2YWx1ZSk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNw
YWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yVmFsdWVzX2gpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CmluZGV4IGNmYTM0MmQuLjJjYzhlZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CkBAIC0xNTc2LDkgKzE1NzYsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRNb2R1bGUuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcAotICAgIGluc3Bl
Y3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCi0gICAgaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKICAgICBp
bnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rv
ckNsaWVudC5jcHAKQEAgLTE2MDksNyArMTYwNyw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAg
ICBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVj
dG9yU3R5bGVUZXh0RWRpdG9yLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFn
ZW50LmNwcAotICAgIGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCiAgICAgaW5zcGVjdG9y
L0luc3BlY3RvcldvcmtlckFnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdl
bnRzLmNwcAogICAgIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCA3NDgzZWM1Li43MDdhZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkzIEBACisyMDEz
LTEyLTA1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAg
V2ViIEluc3BlY3RvcjogUHVzaCBNb3JlIEluc3BlY3RvciBSZXF1aXJlZCBDbGFzc2VzIERvd24g
aW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTI1MzI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUGFydCAzOiBQdXNoIERvd24gU2NyaXB0RnVuY3Rpb25DYWxsCisKKyAgICAg
ICAgICAtIE1vdmUgU2NyaXB0RnVuY3Rpb25DYWxsIHRvIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdz
IGludG8gbmFtZXNwYWNlIERlcHJlY2F0ZWQuCisgICAgICAgICAgLSBHaXZlIGNvbnN0cnVjdG9y
IGEgZnVuY3Rpb24gdG8gYWxsIGZvciBhIGRpZmZlcmVudCBKU0M6OmNhbGwsIGJlY2F1c2UKKyAg
ICAgICAgICAgIFdlYkNvcmUgU2NyaXB0RnVuY3Rpb25DYWxsJ3MgdXNlIEpTTWFpblRocmVhZEV4
ZWNTdGF0ZSB3aGVuIGlzTWFpblRocmVhZC4KKyAgICAgICAgICAtIFByZWZlciBEZXByZWNhdGVk
OjpTY3JpcHRGdW5jdGlvbkNhbGwgZXZlcnl3aGVyZSBpdCBpcyB1c2VkIGluIFdlYkNvcmUuCisK
KyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwu
aDogQWRkZWQuCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBVc2VK
U0MuY21ha2U6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAg
ICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNYWlu
VGhyZWFkRXhlY1N0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRs
ZXJGcm9tQW55VGhyZWFkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVj
U3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y3VycmVu
dFN0YXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkluamVjdGVkU2NyaXB0OjpjYWxsRnVuY3Rpb25Pbik6CisgICAgICAgIChXZWJDb3JlOjpJbmpl
Y3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmpl
Y3RlZFNjcmlwdDo6Z2V0RnVuY3Rpb25EZXRhaWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVj
dGVkU2NyaXB0OjpnZXRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2Ny
aXB0OjpnZXRJbnRlcm5hbFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRT
Y3JpcHQ6Om5vZGVGb3JPYmplY3RJZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlw
dDo6cmVsZWFzZU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6d3Jh
cENhbGxGcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBPYmpl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBUYWJsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6ZmluZE9iamVjdEJ5SWQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6Omluc3BlY3ROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OkluamVjdGVkU2NyaXB0OjpyZWxlYXNlT2JqZWN0R3JvdXApOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3Jp
cHRCYXNlOjpjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtlQ2FsbCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3Rl
ZFNjcmlwdEJhc2U6Om1ha2VFdmFsQ2FsbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0QmFzZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01v
ZHVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6
Y2FsbFdyYXBDb250ZXh0RnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3Jp
cHRDYW52YXNNb2R1bGU6Om1hcmtGcmFtZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3Rl
ZFNjcmlwdENhbnZhc01vZHVsZTo6Y2FsbFN0YXJ0Q2FwdHVyaW5nRnVuY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OmNhbGxWb2lkRnVuY3Rpb25X
aXRoVHJhY2VMb2dJZEFyZ3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0
Q2FudmFzTW9kdWxlOjp0cmFjZUxvZyk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlw
dENhbnZhc01vZHVsZTo6cmVwbGF5VHJhY2VMb2cpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0
ZWRTY3JpcHRDYW52YXNNb2R1bGU6OnJlc291cmNlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6cmVzb3VyY2VTdGF0ZSk6CisgICAgICAgICogaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluamVj
dGVkU2NyaXB0TW9kdWxlOjplbnN1cmVJbmplY3RlZCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9z
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcm9udGVuZE1lbnVQcm92aWRlcjo6Y29udGV4dE1l
bnVJdGVtU2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJvbnRlbmRNZW51UHJvdmlkZXI6
OmNvbnRleHRNZW51Q2xlYXJlZCk6CisKKzIwMTMtMTItMDUgIEpvc2VwaCBQZWNvcmFybyAgPHBl
Y29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5z
cGVjdG9yIFJlcXVpcmVkIENsYXNzZXMgRG93biBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXJ0IDI6IFB1c2ggU2Ny
aXB0IHdyYXBwZXIgY2xhc3NlcyBkb3duIGludG8gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MuCisK
KyAgICAgICAgICAtIE1vdmUgU2NyaXB0T2JqZWN0IGFuZCBTY3JpcHRWYWx1ZSBpbnRvIEphdmFT
Y3JpcHRDb3JlIGJ1dCBuYW1lc3BhY2UgRGVwcmVjYXRlZAorICAgICAgICAgIC0gQWRkIGZvcndh
cmRpbmcgaGVhZGVycworICAgICAgICAgIC0gVXNlIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBh
bmQgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZXZlcnl3aGVyZS4KKworICAgICAgICAqIEZvcndh
cmRpbmdIZWFkZXJzL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5oOiBBZGRlZC4KKyAgICAgICAgKiBG
b3J3YXJkaW5nSGVhZGVycy9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkFu
eS5jcHA6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQW55Lmg6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJDdXJzb3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5
LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5Lmg6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkluZGV4Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6b3BlbkN1cnNv
cik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6b3BlbktleUN1cnNvcik6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuY3BwOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQktleVJhbmdlLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlSYW5nZTo6
bG93ZXJCb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlSYW5nZTo6dXBwZXJCb3VuZCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlSYW5nZTo6Ym91bmQpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9i
amVjdFN0b3JlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHA6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5oOgorICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9RdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHA6CisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1F1
aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lmg6CisgICAgICAgICogVXNlSlNDLmNtYWtlOgorICAg
ICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9EaWN0aW9uYXJ5Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaWN0aW9u
YXJ5OjpnZXRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9JREJCaW5kaW5n
VXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlc2VyaWFsaXplSURCVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6ZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcik6CisgICAgICAgICog
YmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRGljdGlvbmFyeS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5Lmg6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHA6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAg
ICogYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEZ1
bmN0aW9uQ2FsbC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5j
cHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3Qu
Y3BwLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNwcC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEdsb2JhbE9iamVjdDo6U2NyaXB0R2xvYmFsT2JqZWN0KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5jcHA6CisgICAgICAgICogYmluZGlu
Z3MvanMvU2NyaXB0UHJvZmlsZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0
ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnNlcmlhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICogZG9tL0N1c3RvbUV2ZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUV2ZW50Ojppbml0Q3VzdG9tRXZlbnQpOgorICAg
ICAgICAqIGRvbS9DdXN0b21FdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRXZlbnQ6
OmRldGFpbCk6CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5jcHA6CisgICAgICAgICogZG9t
L01lc3NhZ2VFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50OjpkYXRhQXNTY3JpcHRWYWx1ZSk6Cisg
ICAgICAgICogZG9tL1BvcFN0YXRlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBvcFN0YXRl
RXZlbnQ6OnN0YXRlKToKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAg
ICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29s
ZU1lc3NhZ2UuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHA6CisgICAgICAgICogaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFz
ZS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5jcHA6CisgICAgICAgICog
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0SG9zdC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIu
Y3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNh
bnZhc0FnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzSW5zdHJ1bWVudGF0aW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndyYXBDYW52YXMy
RFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5z
dHJ1bWVudGF0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNwcDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHA6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92
ZXJsYXkuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL1Nj
cmlwdEFyZ3VtZW50cy5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5o
OgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmg6CisgICAgICAgICog
cGFnZS9Db25zb2xlLmNwcDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKiBw
YWdlL1BhZ2VDb25zb2xlLmNwcDoKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblZpZXcuY3BwOgor
ICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5oOgorICAgICAgICAqIHdvcmtlcnMvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKiB4bWwvWE1MVHJlZVZpZXdlci5jcHA6Cisg
ICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgICogeG1s
L3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorCisyMDEzLTEyLTA1ICBKb3Nl
cGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogUHVzaCBNb3JlIEluc3BlY3RvciBSZXF1aXJlZCBDbGFzc2VzIERvd24gaW50byBKYXZhU2Ny
aXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTI1MzI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UGFydCAxOiBQdXNoIGRvd24gY29yZSBpbnNwZWN0b3IgY2xhc3Nlcy4KKworICAgICAgICAgIC0g
TW92ZSBJbnNwZWN0QWdlbnRCYXNlLCBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LCBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9yVmFsdWVzCisgICAgICAgICAgICBkb3duIHRvIEph
dmFTY3JpcHRDb3JlIGFuZCBpbnRvIHRoZSBJbnNwZWN0b3IgbmFtZXNwYWNlLgorICAgICAgICAg
IC0gQWRkIGZvcndhcmRpbmcgaGVhZGVycyBmb3IgSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yIGZp
bGVzLgorICAgICAgICAgIC0gVXNlIHRoZSBJbnNwZWN0b3IgbmFtZXNwYWNlIHdoZXJlIGFwcHJv
cHJpYXRlLgorICAgICAgICAgIC0gUmVuYW1lIEluc3BlY3RvckJhc2VBZ2VudCB0byBJbnNwZWN0
b3JBZ2VudEJhc2UgZm9yIGNsYXJpdHkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmg6
IEFkZGVkLgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JB
Z2VudFJlZ2lzdHJ5Lmg6IEFkZGVkLgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2luc3Bl
Y3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3
YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg6IEFkZGVkLgorICAgICAg
ICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAg
ICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW5qZWN0ZWRT
Y3JpcHRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxl
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmg6CisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Njcmlw
dFZhbHVlLmg6CisgICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHA6CisgICAgICAg
ICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weToKKyAgICAgICAgKFJhd1R5cGVzLkJhc2VUeXBl
LmdldF9yYXdfdmFsaWRhdG9yX2NhbGxfdGV4dCk6CisgICAgICAgIChSYXdUeXBlcy5PYmplY3Qu
Z2V0X2FycmF5X2l0ZW1fcmF3X2NfdHlwZV90ZXh0KToKKyAgICAgICAgKFJhd1R5cGVzLkFueS5n
ZXRfYXJyYXlfaXRlbV9yYXdfY190eXBlX3RleHQpOgorICAgICAgICAoUmF3VHlwZXMuQXJyYXku
Z2V0X2FycmF5X2l0ZW1fcmF3X2NfdHlwZV90ZXh0KToKKyAgICAgICAgKFR5cGVNb2RlbC5pbml0
X2NsYXNzKToKKyAgICAgICAgKFR5cGVCaW5kaW5ncy5jcmVhdGVfdHlwZV9kZWNsYXJhdGlvbl8u
RW51bUJpbmRpbmcuZ2V0X2NvZGVfZ2VuZXJhdG9yLkNvZGVHZW5lcmF0b3IuZ2VuZXJhdGVfdHlw
ZV9idWlsZGVyKToKKyAgICAgICAgKFR5cGVCaW5kaW5ncy5jcmVhdGVfdHlwZV9kZWNsYXJhdGlv
bl8uQ2xhc3NCaW5kaW5nLmdldF9jb2RlX2dlbmVyYXRvci5Db2RlR2VuZXJhdG9yLmdlbmVyYXRl
X3R5cGVfYnVpbGRlcik6CisgICAgICAgIChHZW5lcmF0b3IuZ28pOgorICAgICAgICAoR2VuZXJh
dG9yLnByb2Nlc3NfY29tbWFuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJ
bnNwZWN0b3JTdHJpbmdzLnB5OgorICAgICAgICAodm9pZCk6CisgICAgICAgIChJbnNwZWN0b3JG
cm9udGVuZF9oKToKKyAgICAgICAgKEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyc19oKToKKyAg
ICAgICAgKEFycmF5KToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwOgor
ICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9Db250ZW50U2VhcmNoVXRpbHMuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9Db250ZW50U2Vh
cmNoVXRpbHMuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRDYW52YXNNb2R1bGUuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlw
dEhvc3QuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0TW9kdWxlLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQWdlbnQ6Okluc3BlY3RvckFnZW50
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmguCisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JBZ2VudEJhc2U6Okluc3BlY3RvckFnZW50QmFzZSk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJh
c2VBZ2VudC5oOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6SW5zcGVjdG9yQ1NT
QWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpJbnNwZWN0b3JDYW52YXNBZ2VudCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb25zb2xlQWdl
bnQ6Okluc3BlY3RvckNvbnNvbGVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
b25zb2xlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6SW5zcGVjdG9yRE9NQWdlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01E
ZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6Oklu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRh
dGFiYXNlQWdlbnQ6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRm9yd2FyZGluZy5oOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySGVh
cFByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySGVhcFByb2Zp
bGVyQWdlbnQ6Okluc3BlY3RvckhlYXBQcm9maWxlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OmRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWRE
QkFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvcklucHV0QWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5wdXRBZ2VudDo6SW5zcGVjdG9ySW5wdXRBZ2Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnB1dEFnZW50OjpkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50OjpJbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6ZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JNZW1vcnlBZ2VudDo6
SW5zcGVjdG9yTWVtb3J5QWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1v
cnlBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFn
ZUFnZW50OjpJbnNwZWN0b3JQYWdlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UGFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
UHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFn
ZW50OjpJbnNwZWN0b3JQcm9maWxlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clByb2ZpbGVyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclJ1bnRpbWVBZ2VudDo6SW5zcGVjdG9yUnVudGltZUFnZW50KToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHls
ZVNoZWV0Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NJZDo6SW5zcGVjdG9yQ1NT
SWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuY3BwOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJbnNwZWN0
b3JUaW1lbGluZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVB
Z2VudC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6VGltZWxp
bmVSZWNvcmRFbnRyeTo6VGltZWxpbmVSZWNvcmRFbnRyeSk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvcldvcmtlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcldv
cmtlckFnZW50OjpJbnNwZWN0b3JXb3JrZXJBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JXb3JrZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zdHJ1bWVudGluZ0FnZW50cy5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHA6
CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZVJ1
bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFnZW50OjpkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9QYWdlUnVudGlt
ZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5jcHA6CisgICAg
ICAgICogaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHA6CisgICAgICAgICogaW5zcGVjdG9y
L1NjcmlwdENhbGxGcmFtZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2su
Y3BwOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
VGltZWxpbmVSZWNvcmRGYWN0b3J5Lmg6CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVJlY29y
ZEZhY3Rvcnk6OmNyZWF0ZVdlYlNvY2tldENyZWF0ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
VGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljV2ViU29ja2V0RGF0YSk6CisgICAg
ICAgICogaW5zcGVjdG9yL1dvcmtlckNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVj
dG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VySW5zcGVj
dG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQu
aDoKKyAgICAgICAgKiBwYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbHMuY3BwOgorCiAyMDEzLTEyLTA5ICBKb3NlcGggUGVjb3Jhcm8gIDxw
ZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogSW5zcGVjdG9yLmpz
b24gYW5kIENvZGVHZW5lcmF0b3IgdHdlYWtzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9G
b3J3YXJkaW5nSGVhZGVycy9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1ZDJhMDUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9iaW5kaW5ncy9TY3JpcHRGdW5j
dGlvbkNhbGwuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfU2NyaXB0RnVu
Y3Rpb25DYWxsX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfU2NyaXB0RnVuY3Rpb25DYWxsX2gKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRGdW5jdGlvbkNhbGwuaD4KKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvYmluZGluZ3MvU2NyaXB0
T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9iaW5kaW5ncy9TY3Jp
cHRPYmplY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzZiODI3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvYmluZGlu
Z3MvU2NyaXB0T2JqZWN0LmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX1Nj
cmlwdE9iamVjdF9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1NjcmlwdE9iamVjdF9oCisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0T2JqZWN0Lmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmggYi9T
b3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3OGFmNTAKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9iaW5kaW5ncy9TY3JpcHRWYWx1
ZS5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9TY3JpcHRWYWx1ZV9oCisj
ZGVmaW5lIFdlYkNvcmVfRldEX1NjcmlwdFZhbHVlX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9TY3JpcHRWYWx1ZS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3
YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjFhMzVmYwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JB
Z2VudEJhc2UuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfSW5zcGVjdG9y
QWdlbnRCYXNlX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfSW5zcGVjdG9yQWdlbnRCYXNlX2gKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBZ2VudEJhc2UuaD4KKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3Bl
Y3RvckFnZW50UmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2lu
c3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZjlkYjk1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgKQEAgLTAs
MCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0luc3BlY3RvckFnZW50UmVnaXN0cnlfaAor
I2RlZmluZSBXZWJDb3JlX0ZXRF9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5X2gKKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Lmg+CisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5z
cGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uOWU1ZTg3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5o
CkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9JbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcl9oCisjZGVmaW5lIFdlYkNvcmVfRldEX0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
X2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5o
PgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9p
bnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVh
ZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYmQ5ODVmNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaApAQCAtMCwwICsxLDQg
QEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfSW5zcGVjdG9yVmFsdWVzX2gKKyNkZWZpbmUgV2ViQ29y
ZV9GV0RfSW5zcGVjdG9yVmFsdWVzX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0
b3JWYWx1ZXMuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggODQ0
YWQ2OC4uOGY5MGYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yNDQ0LDEx
ICsyNDQ0LDkgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdERlYnVnU2VydmVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
RGVidWdTZXJ2ZXIuaCBcCi0JU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rp
b25DYWxsLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25D
YWxsLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEhlYXBTbmFwc2hvdC5o
IFwKLQlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwIFwKLQlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaCBcCisJU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0LmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0LmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdFByb2ZpbGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRQcm9maWxlLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVO
b2RlLmggXApAQCAtMjQ1Nyw4ICsyNDU1LDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmggXAogCVNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0U3RhdGUuaCBcCi0JU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
VmFsdWUuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaCBcCiAJU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIFwKQEAgLTM3Nzks
MTMgKzM3NzUsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQWdlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QWdlbnQuaCBcCi0JU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0
cnkuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3Ry
eS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNo
ZUFnZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudC5oIFwKLQlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIuaCBcCi0JU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckJhc2VBZ2VudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFz
QWdlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdl
bnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0luc3RydW1l
bnRhdGlvbi5oIFwKQEAgLTM4NTEsOCArMzg0Miw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlVGV4dEVkaXRvci5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmggXAotCVNvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwIFwKLQlTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmggXAorCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvcldvcmtlckFnZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvcldvcmtlckFnZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JX
b3JrZXJSZXNvdXJjZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkFueS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJB
bnkuY3BwCmluZGV4IGNiMWU2M2UuLjgyN2E0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQW55LmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIFBhc3NSZWZQdHI8SURC
VHJhbnNhY3Rpb24+IElEQkFueTo6aWRiVHJhbnNhY3Rpb24oKQogICAgIHJldHVybiBtX2lkYlRy
YW5zYWN0aW9uOwogfQogCi1jb25zdCBTY3JpcHRWYWx1ZSYgSURCQW55OjpzY3JpcHRWYWx1ZSgp
Citjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgSURCQW55OjpzY3JpcHRWYWx1ZSgpCiB7
CiAgICAgQVNTRVJUKG1fdHlwZSA9PSBTY3JpcHRWYWx1ZVR5cGUpOwogICAgIHJldHVybiBtX3Nj
cmlwdFZhbHVlOwpAQCAtMTg2LDcgKzE4Niw3IEBAIElEQkFueTo6SURCQW55KFBhc3NSZWZQdHI8
SURCT2JqZWN0U3RvcmU+IHZhbHVlKQogewogfQogCi1JREJBbnk6OklEQkFueShjb25zdCBTY3Jp
cHRWYWx1ZSYgdmFsdWUpCitJREJBbnk6OklEQkFueShjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYgdmFsdWUpCiAgICAgOiBtX3R5cGUoU2NyaXB0VmFsdWVUeXBlKQogICAgICwgbV9zY3Jp
cHRWYWx1ZSh2YWx1ZSkKICAgICAsIG1faW50ZWdlcigwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJBbnkuaAppbmRleCA2ZGU0NWNmLi5kNzI4NDU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuaApAQCAtMjksOCArMjksOCBAQAogI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgotI2luY2x1
ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCisjaW5jbHVk
ZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAt
MTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQkluZGV4PiBpZGJJbmRl
eCgpOwogICAgIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IGlkYk9iamVjdFN0b3JlKCk7CiAg
ICAgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gaWRiVHJhbnNhY3Rpb24oKTsKLSAgICBjb25z
dCBTY3JpcHRWYWx1ZSYgc2NyaXB0VmFsdWUoKTsKKyAgICBjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYgc2NyaXB0VmFsdWUoKTsKICAgICBpbnQ2NF90IGludGVnZXIoKTsKICAgICBjb25z
dCBTdHJpbmcmIHN0cmluZygpOwogICAgIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgoKSB7IHJl
dHVybiBtX2lkYktleVBhdGg7IH07CkBAIC0xMTgsNyArMTE4LDcgQEAgcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBJREJBbnkoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4pOwogICAgIGV4cGxpY2l0
IElEQkFueShjb25zdCBJREJLZXlQYXRoJik7CiAgICAgZXhwbGljaXQgSURCQW55KGNvbnN0IFN0
cmluZyYpOwotICAgIGV4cGxpY2l0IElEQkFueShjb25zdCBTY3JpcHRWYWx1ZSYpOworICAgIGV4
cGxpY2l0IElEQkFueShjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYpOwogICAgIGV4cGxp
Y2l0IElEQkFueShpbnQ2NF90KTsKIAogICAgIGNvbnN0IFR5cGUgbV90eXBlOwpAQCAtMTMzLDcg
KzEzMyw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBtX2lk
Yk9iamVjdFN0b3JlOwogICAgIGNvbnN0IFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gbV9pZGJUcmFu
c2FjdGlvbjsKICAgICBjb25zdCBJREJLZXlQYXRoIG1faWRiS2V5UGF0aDsKLSAgICBjb25zdCBT
Y3JpcHRWYWx1ZSBtX3NjcmlwdFZhbHVlOworICAgIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlIG1fc2NyaXB0VmFsdWU7CiAgICAgY29uc3QgU3RyaW5nIG1fc3RyaW5nOwogICAgIGNvbnN0
IGludDY0X3QgbV9pbnRlZ2VyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJDdXJzb3IuY3BwCmluZGV4IGVmMDY1NDQuLmI5OWQ4M2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcApAQCAtOTgsMTkgKzk4LDE5
IEBAIGNvbnN0IFN0cmluZyYgSURCQ3Vyc29yOjpkaXJlY3Rpb24oKSBjb25zdAogICAgIHJldHVy
biBkaXJlY3Rpb25Ub1N0cmluZyhtX2RpcmVjdGlvbik7CiB9CiAKLWNvbnN0IFNjcmlwdFZhbHVl
JiBJREJDdXJzb3I6OmtleSgpIGNvbnN0Citjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYg
SURCQ3Vyc29yOjprZXkoKSBjb25zdAogewogICAgIExPRyhTdG9yYWdlQVBJLCAiSURCQ3Vyc29y
OjprZXkiKTsKICAgICByZXR1cm4gbV9jdXJyZW50S2V5VmFsdWU7CiB9CiAKLWNvbnN0IFNjcmlw
dFZhbHVlJiBJREJDdXJzb3I6OnByaW1hcnlLZXkoKSBjb25zdAorY29uc3QgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUmIElEQkN1cnNvcjo6cHJpbWFyeUtleSgpIGNvbnN0CiB7CiAgICAgTE9HKFN0
b3JhZ2VBUEksICJJREJDdXJzb3I6OnByaW1hcnlLZXkiKTsKICAgICByZXR1cm4gbV9jdXJyZW50
UHJpbWFyeUtleVZhbHVlOwogfQogCi1jb25zdCBTY3JpcHRWYWx1ZSYgSURCQ3Vyc29yOjp2YWx1
ZSgpIGNvbnN0Citjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgSURCQ3Vyc29yOjp2YWx1
ZSgpIGNvbnN0CiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJDdXJzb3I6OnZhbHVlIik7CiAg
ICAgcmV0dXJuIG1fY3VycmVudFZhbHVlOwpAQCAtMTIxLDcgKzEyMSw3IEBAIElEQkFueSogSURC
Q3Vyc29yOjpzb3VyY2UoKSBjb25zdAogICAgIHJldHVybiBtX3NvdXJjZS5nZXQoKTsKIH0KIAot
UGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJDdXJzb3I6OnVwZGF0ZShKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUsIFNjcmlwdFZhbHVlJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IElEQkN1cnNvcjo6dXBkYXRlKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBM
T0coU3RvcmFnZUFQSSwgIklEQkN1cnNvcjo6dXBkYXRlIik7CiAKQEAgLTE3Nyw3ICsxNzcsNyBA
QCB2b2lkIElEQkN1cnNvcjo6YWR2YW5jZSh1bnNpZ25lZCBsb25nIGNvdW50LCBFeGNlcHRpb25D
b2RlJiBlYykKICAgICBBU1NFUlQoIWVjKTsKIH0KIAotdm9pZCBJREJDdXJzb3I6OmNvbnRpbnVl
RnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFs
dWUmIGtleVZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSURCQ3Vyc29yOjpjb250aW51
ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlJiBrZXlWYWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgRE9N
UmVxdWVzdFN0YXRlIHJlcXVlc3RTdGF0ZShjb250ZXh0KTsKICAgICBSZWZQdHI8SURCS2V5PiBr
ZXkgPSBzY3JpcHRWYWx1ZVRvSURCS2V5KCZyZXF1ZXN0U3RhdGUsIGtleVZhbHVlKTsKQEAgLTI2
Myw3ICsyNjMsNyBAQCB2b2lkIElEQkN1cnNvcjo6Y2xvc2UoKQogICAgIH0KIH0KIAotdm9pZCBJ
REJDdXJzb3I6OnNldFZhbHVlUmVhZHkoRE9NUmVxdWVzdFN0YXRlKiBzdGF0ZSwgUGFzc1JlZlB0
cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIFNjcmlwdFZhbHVl
JiB2YWx1ZSkKK3ZvaWQgSURCQ3Vyc29yOjpzZXRWYWx1ZVJlYWR5KERPTVJlcXVlc3RTdGF0ZSog
c3RhdGUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5
S2V5LCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUpCiB7CiAgICAgbV9jdXJyZW50S2V5
ID0ga2V5OwogICAgIG1fY3VycmVudEtleVZhbHVlID0gaWRiS2V5VG9TY3JpcHRWYWx1ZShzdGF0
ZSwgbV9jdXJyZW50S2V5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkN1cnNvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
Q3Vyc29yLmgKaW5kZXggYzZhNzQ0Zi4uMDRlYjM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKQEAgLTMxLDggKzMxLDggQEAKICNpbmNsdWRlICJJ
REJLZXkuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIkluZGV4ZWRE
Qi5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxl
LmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgpAQCAtNjMsMjIgKzYzLDIyIEBAIHB1YmxpYzoKIAogICAgIC8vIEltcGxlbWVudCB0
aGUgSURMCiAgICAgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24oKSBjb25zdDsKLSAgICBjb25zdCBT
Y3JpcHRWYWx1ZSYga2V5KCkgY29uc3Q7Ci0gICAgY29uc3QgU2NyaXB0VmFsdWUmIHByaW1hcnlL
ZXkoKSBjb25zdDsKLSAgICBjb25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUoKSBjb25zdDsKKyAgICBj
b25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5KCkgY29uc3Q7CisgICAgY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmIHByaW1hcnlLZXkoKSBjb25zdDsKKyAgICBjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUoKSBjb25zdDsKICAgICBJREJBbnkqIHNvdXJjZSgp
IGNvbnN0OwogCi0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiB1cGRhdGUoSlNDOjpFeGVjU3Rh
dGUqLCBTY3JpcHRWYWx1ZSYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IHVwZGF0ZShKU0M6OkV4ZWNTdGF0ZSosIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwg
RXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgYWR2YW5jZSh1bnNpZ25lZCBsb25nLCBFeGNlcHRp
b25Db2RlJik7CiAgICAgLy8gRklYTUU6IFRyeSB0byBtb2RpZnkgdGhlIGNvZGUgZ2VuZXJhdG9y
IHNvIHRoaXMgb3ZlcmxvYWQgaXMgdW5uZWVkZWQuCiAgICAgdm9pZCBjb250aW51ZUZ1bmN0aW9u
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJiBlYykgeyBjb250aW51ZUZ1
bmN0aW9uKHN0YXRpY19jYXN0PElEQktleSo+KDApLCBlYyk7IH0KLSAgICB2b2lkIGNvbnRpbnVl
RnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXks
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlv
bkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGRlbGV0ZUZ1bmN0aW9uKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICB2b2lkIGNvbnRpbnVl
RnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBw
b3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygpOwogICAgIHZvaWQgY2xvc2UoKTsKLSAgICB2b2lk
IHNldFZhbHVlUmVhZHkoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNz
UmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgU2NyaXB0VmFsdWUmKTsKKyAgICB2b2lkIHNldFZh
bHVlUmVhZHkoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRy
PElEQktleT4gcHJpbWFyeUtleSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmKTsKICAgICBQYXNz
UmVmUHRyPElEQktleT4gaWRiUHJpbWFyeUtleSgpIHsgcmV0dXJuIG1fY3VycmVudFByaW1hcnlL
ZXk7IH0KIAogcHJvdGVjdGVkOgpAQCAtOTcsMTEgKzk3LDExIEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2dvdFZhbHVlOwogICAgIC8vIFRoZXNlIHZhbHVlcyBhcmUgaGVsZCBiZWNhdXNlIG1fYmFj
a2VuZCBtYXkgYWR2YW5jZSB3aGlsZSB0aGV5CiAgICAgLy8gYXJlIHN0aWxsIHZhbGlkIGZvciB0
aGUgY3VycmVudCBzdWNjZXNzIGhhbmRsZXJzLgotICAgIFNjcmlwdFZhbHVlIG1fY3VycmVudEtl
eVZhbHVlOwotICAgIFNjcmlwdFZhbHVlIG1fY3VycmVudFByaW1hcnlLZXlWYWx1ZTsKKyAgICBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBtX2N1cnJlbnRLZXlWYWx1ZTsKKyAgICBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSBtX2N1cnJlbnRQcmltYXJ5S2V5VmFsdWU7CiAgICAgUmVmUHRyPElEQktl
eT4gbV9jdXJyZW50S2V5OwogICAgIFJlZlB0cjxJREJLZXk+IG1fY3VycmVudFByaW1hcnlLZXk7
Ci0gICAgU2NyaXB0VmFsdWUgbV9jdXJyZW50VmFsdWU7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUgbV9jdXJyZW50VmFsdWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCmluZGV4IDlm
NDA2ZmEuLmQyOGE1N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkZhY3RvcnkuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgUGFzc1JlZlB0cjxJREJPcGVuREJS
ZXF1ZXN0PiBJREJGYWN0b3J5OjpkZWxldGVEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KgogICAgIHJldHVybiByZXF1ZXN0OwogfQogCi1zaG9ydCBJREJGYWN0b3J5OjpjbXAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGZpcnN0VmFsdWUs
IGNvbnN0IFNjcmlwdFZhbHVlJiBzZWNvbmRWYWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitzaG9y
dCBJREJGYWN0b3J5OjpjbXAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGZpcnN0VmFsdWUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlJiBzZWNvbmRWYWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgRE9NUmVx
dWVzdFN0YXRlIHJlcXVlc3RTdGF0ZShjb250ZXh0KTsKICAgICBSZWZQdHI8SURCS2V5PiBmaXJz
dCA9IHNjcmlwdFZhbHVlVG9JREJLZXkoJnJlcXVlc3RTdGF0ZSwgZmlyc3RWYWx1ZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmgKaW5kZXggNzM3NGVj
Zi4uNzc4ZmQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZh
Y3RvcnkuaApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJREJPcGVu
REJSZXF1ZXN0PiBvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5h
bWUsIHVuc2lnbmVkIGxvbmcgbG9uZyB2ZXJzaW9uLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFz
c1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBkZWxldGVEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBzaG9y
dCBjbXAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBmaXJzdCwg
Y29uc3QgU2NyaXB0VmFsdWUmIHNlY29uZCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHNob3J0IGNt
cChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
IGZpcnN0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgc2Vjb25kLCBFeGNlcHRpb25D
b2RlJik7CiAKIHByaXZhdGU6CiAgICAgSURCRmFjdG9yeShJREJGYWN0b3J5QmFja2VuZEludGVy
ZmFjZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
SW5kZXguY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3Bw
CmluZGV4IGRmNjM3MzQuLmVkZjRiMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJJbmRleC5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBJREJJbmRleDo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBQYXMKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJ
REJJbmRleDo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25z
dCBTY3JpcHRWYWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29k
ZSYgZWMpCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29yKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
JiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAg
ICBMT0coU3RvcmFnZUFQSSwgIklEQkluZGV4OjpvcGVuQ3Vyc29yIik7CiAgICAgUmVmUHRyPElE
QktleVJhbmdlPiBrZXlSYW5nZSA9IElEQktleVJhbmdlOjpvbmx5KGNvbnRleHQsIGtleSwgZWMp
OwpAQCAtMTAwLDcgKzEwMCw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmNv
dW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQCiAgICAgcmV0dXJu
IHJlcXVlc3Q7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmNvdW50KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4
Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Y291bnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJ
REJJbmRleDo6Y291bnQiKTsKICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlID0gSURC
S2V5UmFuZ2U6Om9ubHkoY29udGV4dCwga2V5LCBlYyk7CkBAIC0xMzAsNyArMTMwLDcgQEAgUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LAogICAgIHJldHVybiByZXF1ZXN0OwogfQogCi1QYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0
aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6
Om9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIExPRyhTdG9yYWdlQVBJLCAiSURCSW5kZXg6Om9wZW5LZXlD
dXJzb3IiKTsKICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlID0gSURCS2V5UmFuZ2U6
Om9ubHkoY29udGV4dCwga2V5LCBlYyk7CkBAIC0xMzksNyArMTM5LDcgQEAgUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LAogICAgIHJldHVybiBvcGVuS2V5Q3Vyc29yKGNvbnRleHQsIGtleVJhbmdlLnJl
bGVhc2UoKSwgZGlyZWN0aW9uLCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURC
SW5kZXg6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRW
YWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURC
SW5kZXg6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coU3Rv
cmFnZUFQSSwgIklEQkluZGV4OjpnZXQiKTsKICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJh
bmdlID0gSURCS2V5UmFuZ2U6Om9ubHkoY29udGV4dCwga2V5LCBlYyk7CkBAIC0xNjksNyArMTY5
LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Z2V0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHIKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAot
UGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Z2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVj
KQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Z2V0S2V5KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIExPRyhTdG9yYWdlQVBJLCAiSURCSW5kZXg6OmdldEtl
eSIpOwogICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBJREJLZXlSYW5nZTo6b25s
eShjb250ZXh0LCBrZXksIGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJJbmRleC5oCmluZGV4IDI2MTRlMDIuLmY5NTRhZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCSW5kZXguaApAQCAtNjMsMjMgKzYzLDIzIEBAIHB1YmxpYzoKICAg
ICAvLyBGSVhNRTogVHJ5IHRvIG1vZGlmeSB0aGUgY29kZSBnZW5lcmF0b3Igc28gdGhpcyBpcyB1
bm5lZWRlZC4KICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5D
dXJzb3IoY29udGV4dCwgc3RhdGljX2Nhc3Q8SURCS2V5UmFuZ2UqPigwKSwgZWMpOyB9CiAgICAg
UGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBFeGNlcHRpb25Db2Rl
JiBlYykgeyByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCBrZXlSYW5nZSwgSURCQ3Vyc29yOjpk
aXJlY3Rpb25OZXh0KCksIGVjKTsgfQotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1
cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYg
a2V5LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCBrZXks
IElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCgpLCBlYyk7IH0KKyAgICBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJu
IG9wZW5DdXJzb3IoY29udGV4dCwga2V5LCBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHQoKSwgZWMp
OyB9CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgY29uc3QgU3RyaW5nJiBkaXJlY3Rp
b24sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJz
b3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIGNvbnN0
IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9u
Q29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY291bnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGNvdW50KGNvbnRl
eHQsIHN0YXRpY19jYXN0PElEQktleVJhbmdlKj4oMCksIGVjKTsgfQogICAgIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gY291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURC
S2V5UmFuZ2U+LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBj
b3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhj
ZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY291bnQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2Vw
dGlvbkNvZGUmKTsKIAogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbktleUN1cnNvcihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1
cm4gb3BlbktleUN1cnNvcihjb250ZXh0LCBzdGF0aWNfY2FzdDxJREJLZXlSYW5nZSo+KDApLCBl
Yyk7IH0KICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2Us
IEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBvcGVuS2V5Q3Vyc29yKGNvbnRleHQsIGtleVJh
bmdlLCBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHQoKSwgZWMpOyB9Ci0gICAgUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBvcGVu
S2V5Q3Vyc29yKGNvbnRleHQsIGtleSwgSURCQ3Vyc29yOjpkaXJlY3Rpb25OZXh0KCksIGVjKTsg
fQorICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBF
eGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3BlbktleUN1cnNvcihjb250ZXh0LCBrZXksIElE
QkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCgpLCBlYyk7IH0KICAgICBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURC
S2V5UmFuZ2U+LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYpOwotICAg
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3Io
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBr
ZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IGdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0
cjxJREJLZXlSYW5nZT4sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IGdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwg
RXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZ2V0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNl
cHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBnZXRLZXkoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBFeGNlcHRpb25Db2RlJik7
Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBnZXRLZXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IGdldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdm9pZCBt
YXJrRGVsZXRlZCgpIHsgbV9kZWxldGVkID0gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5jcHAKaW5kZXggNzI4Zjk1My4uM2Q1NGZj
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFu
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdl
LmNwcApAQCAtNDksMTMgKzQ5LDEzIEBAIElEQktleVJhbmdlOjpJREJLZXlSYW5nZShQYXNzUmVm
UHRyPElEQktleT4gbG93ZXIsIFBhc3NSZWZQdHI8SURCS2V5PiB1cHBlciwgTG93CiB7CiB9CiAK
LVNjcmlwdFZhbHVlIElEQktleVJhbmdlOjpsb3dlclZhbHVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQpIGNvbnN0CitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBJREJLZXlSYW5nZTo6
bG93ZXJWYWx1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSBjb25zdAogewogICAg
IERPTVJlcXVlc3RTdGF0ZSByZXF1ZXN0U3RhdGUoY29udGV4dCk7CiAgICAgcmV0dXJuIGlkYktl
eVRvU2NyaXB0VmFsdWUoJnJlcXVlc3RTdGF0ZSwgbV9sb3dlcik7CiB9CiAKLVNjcmlwdFZhbHVl
IElEQktleVJhbmdlOjp1cHBlclZhbHVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
IGNvbnN0CitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBJREJLZXlSYW5nZTo6dXBwZXJWYWx1ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSBjb25zdAogewogICAgIERPTVJlcXVlc3RT
dGF0ZSByZXF1ZXN0U3RhdGUoY29udGV4dCk7CiAgICAgcmV0dXJuIGlkYktleVRvU2NyaXB0VmFs
dWUoJnJlcXVlc3RTdGF0ZSwgbV91cHBlcik7CkBAIC03Miw3ICs3Miw3IEBAIFBhc3NSZWZQdHI8
SURCS2V5UmFuZ2U+IElEQktleVJhbmdlOjpvbmx5KFBhc3NSZWZQdHI8SURCS2V5PiBwcnBLZXks
IEV4Y2VwdGlvbkNvCiAgICAgcmV0dXJuIElEQktleVJhbmdlOjpjcmVhdGUoa2V5LCBrZXksIExv
d2VyQm91bmRDbG9zZWQsIFVwcGVyQm91bmRDbG9zZWQpOwogfQogCi1QYXNzUmVmUHRyPElEQktl
eVJhbmdlPiBJREJLZXlSYW5nZTo6b25seShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5VmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6Om9ubHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleVZhbHVlLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBET01SZXF1ZXN0U3RhdGUgcmVxdWVzdFN0YXRlKGNvbnRl
eHQpOwogICAgIFJlZlB0cjxJREJLZXk+IGtleSA9IHNjcmlwdFZhbHVlVG9JREJLZXkoJnJlcXVl
c3RTdGF0ZSwga2V5VmFsdWUpOwpAQCAtODQsNyArODQsNyBAQCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiBJREJLZXlSYW5nZTo6b25seShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBj
b25zdAogICAgIHJldHVybiBJREJLZXlSYW5nZTo6Y3JlYXRlKGtleSwga2V5LCBMb3dlckJvdW5k
Q2xvc2VkLCBVcHBlckJvdW5kQ2xvc2VkKTsKIH0KIAotUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4g
SURCS2V5UmFuZ2U6Omxvd2VyQm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Y29uc3QgU2NyaXB0VmFsdWUmIGJvdW5kVmFsdWUsIGJvb2wgb3BlbiwgRXhjZXB0aW9uQ29kZSYg
ZWMpCitQYXNzUmVmUHRyPElEQktleVJhbmdlPiBJREJLZXlSYW5nZTo6bG93ZXJCb3VuZChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYgYm91bmRWYWx1ZSwgYm9vbCBvcGVuLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBET01S
ZXF1ZXN0U3RhdGUgcmVxdWVzdFN0YXRlKGNvbnRleHQpOwogICAgIFJlZlB0cjxJREJLZXk+IGJv
dW5kID0gc2NyaXB0VmFsdWVUb0lEQktleSgmcmVxdWVzdFN0YXRlLCBib3VuZFZhbHVlKTsKQEAg
LTk2LDcgKzk2LDcgQEAgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6Omxvd2Vy
Qm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKICAgICByZXR1cm4gSURCS2V5
UmFuZ2U6OmNyZWF0ZShib3VuZCwgMCwgb3BlbiA/IExvd2VyQm91bmRPcGVuIDogTG93ZXJCb3Vu
ZENsb3NlZCwgVXBwZXJCb3VuZE9wZW4pOwogfQogCi1QYXNzUmVmUHRyPElEQktleVJhbmdlPiBJ
REJLZXlSYW5nZTo6dXBwZXJCb3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBj
b25zdCBTY3JpcHRWYWx1ZSYgYm91bmRWYWx1ZSwgYm9vbCBvcGVuLCBFeGNlcHRpb25Db2RlJiBl
YykKK1Bhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IElEQktleVJhbmdlOjp1cHBlckJvdW5kKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
JiBib3VuZFZhbHVlLCBib29sIG9wZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIERPTVJl
cXVlc3RTdGF0ZSByZXF1ZXN0U3RhdGUoY29udGV4dCk7CiAgICAgUmVmUHRyPElEQktleT4gYm91
bmQgPSBzY3JpcHRWYWx1ZVRvSURCS2V5KCZyZXF1ZXN0U3RhdGUsIGJvdW5kVmFsdWUpOwpAQCAt
MTA4LDcgKzEwOCw3IEBAIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IElEQktleVJhbmdlOjp1cHBl
ckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgcmV0dXJuIElEQktl
eVJhbmdlOjpjcmVhdGUoMCwgYm91bmQsIExvd2VyQm91bmRPcGVuLCBvcGVuID8gVXBwZXJCb3Vu
ZE9wZW4gOiBVcHBlckJvdW5kQ2xvc2VkKTsKIH0KIAotUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4g
SURCS2V5UmFuZ2U6OmJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0
IFNjcmlwdFZhbHVlJiBsb3dlclZhbHVlLCBjb25zdCBTY3JpcHRWYWx1ZSYgdXBwZXJWYWx1ZSwg
Ym9vbCBsb3dlck9wZW4sIGJvb2wgdXBwZXJPcGVuLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NS
ZWZQdHI8SURCS2V5UmFuZ2U+IElEQktleVJhbmdlOjpib3VuZChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgbG93ZXJWYWx1ZSwg
Y29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHVwcGVyVmFsdWUsIGJvb2wgbG93ZXJPcGVu
LCBib29sIHVwcGVyT3BlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgRE9NUmVxdWVzdFN0
YXRlIHJlcXVlc3RTdGF0ZShjb250ZXh0KTsKICAgICBSZWZQdHI8SURCS2V5PiBsb3dlciA9IHNj
cmlwdFZhbHVlVG9JREJLZXkoJnJlcXVlc3RTdGF0ZSwgbG93ZXJWYWx1ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaAppbmRleCA1NDc2OTVhLi5l
NTUxY2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJL
ZXlSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJh
bmdlLmgKQEAgLTU5LDIzICs1OSwyMyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJREJLZXk+
IGxvd2VyKCkgY29uc3QgeyByZXR1cm4gbV9sb3dlcjsgfQogICAgIFBhc3NSZWZQdHI8SURCS2V5
PiB1cHBlcigpIGNvbnN0IHsgcmV0dXJuIG1fdXBwZXI7IH0KIAotICAgIFNjcmlwdFZhbHVlIGxv
d2VyVmFsdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIGNvbnN0OwotICAgIFNjcmlwdFZhbHVl
IHVwcGVyVmFsdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIGNvbnN0OworICAgIERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlIGxvd2VyVmFsdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIGNvbnN0
OworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHVwcGVyVmFsdWUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopIGNvbnN0OwogICAgIGJvb2wgbG93ZXJPcGVuKCkgY29uc3QgeyByZXR1cm4gbV9s
b3dlclR5cGUgPT0gTG93ZXJCb3VuZE9wZW47IH0KICAgICBib29sIHVwcGVyT3BlbigpIGNvbnN0
IHsgcmV0dXJuIG1fdXBwZXJUeXBlID09IFVwcGVyQm91bmRPcGVuOyB9CiAKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gb25seShQYXNzUmVmUHRyPElEQktleT4gdmFsdWUsIEV4
Y2VwdGlvbkNvZGUmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gb25seShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9u
Q29kZSYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBvbmx5KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNl
cHRpb25Db2RlJik7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gbG93ZXJC
b3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYg
Ym91bmQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBsb3dlckJvdW5kKGNvbnRleHQsIGJv
dW5kLCBmYWxzZSwgZWMpOyB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGxv
d2VyQm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBib3Vu
ZCwgYm9vbCBvcGVuLCBFeGNlcHRpb25Db2RlJik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURC
S2V5UmFuZ2U+IGxvd2VyQm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGJvdW5kLCBFeGNlcHRpb25Db2RlJiBlYykgeyBy
ZXR1cm4gbG93ZXJCb3VuZChjb250ZXh0LCBib3VuZCwgZmFsc2UsIGVjKTsgfQorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBsb3dlckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgYm91bmQsIGJvb2wgb3BlbiwgRXhj
ZXB0aW9uQ29kZSYpOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHVwcGVy
Qm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUm
IGJvdW5kLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gdXBwZXJCb3VuZChjb250ZXh0LCBi
b3VuZCwgZmFsc2UsIGVjKTsgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiB1
cHBlckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYgYm91
bmQsIGJvb2wgb3BlbiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElE
QktleVJhbmdlPiB1cHBlckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBib3VuZCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsg
cmV0dXJuIHVwcGVyQm91bmQoY29udGV4dCwgYm91bmQsIGZhbHNlLCBlYyk7IH0KKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gdXBwZXJCb3VuZChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGJvdW5kLCBib29sIG9wZW4sIEV4
Y2VwdGlvbkNvZGUmKTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBib3Vu
ZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYgbG93
ZXIsIGNvbnN0IFNjcmlwdFZhbHVlJiB1cHBlciwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJu
IGJvdW5kKGNvbnRleHQsIGxvd2VyLCB1cHBlciwgZmFsc2UsIGZhbHNlLCBlYyk7IH0KLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gYm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGxvd2VyLCBjb25zdCBTY3JpcHRWYWx1ZSYg
dXBwZXIsIGJvb2wgbG93ZXJPcGVuLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gYm91bmQo
Y29udGV4dCwgbG93ZXIsIHVwcGVyLCBsb3dlck9wZW4sIGZhbHNlLCBlYyk7IH0KLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gYm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IFNjcmlwdFZhbHVlJiBsb3dlciwgY29uc3QgU2NyaXB0VmFsdWUmIHVwcGVyLCBib29s
IGxvd2VyT3BlbiwgYm9vbCB1cHBlck9wZW4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gYm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGxvd2VyLCBjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYgdXBwZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBib3Vu
ZChjb250ZXh0LCBsb3dlciwgdXBwZXIsIGZhbHNlLCBmYWxzZSwgZWMpOyB9CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBsb3dlciwgY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmIHVwcGVyLCBib29sIGxvd2VyT3BlbiwgRXhjZXB0aW9uQ29kZSYg
ZWMpIHsgcmV0dXJuIGJvdW5kKGNvbnRleHQsIGxvd2VyLCB1cHBlciwgbG93ZXJPcGVuLCBmYWxz
ZSwgZWMpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGJvdW5kKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgbG93ZXIs
IGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB1cHBlciwgYm9vbCBsb3dlck9wZW4sIGJv
b2wgdXBwZXJPcGVuLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBib29sIGlzT25seUtleSgpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZS5jcHAKaW5kZXggNjliYWJmMS4uNzg2N2Y1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAtODYsNyArODYs
NyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpnZXQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzcwogICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2Uo
KTsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Z2V0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2Vw
dGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Z2V0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFJlZlB0cjxJREJLZXlSYW5n
ZT4ga2V5UmFuZ2UgPSBJREJLZXlSYW5nZTo6b25seShjb250ZXh0LCBrZXksIGVjKTsKICAgICBp
ZiAoZWMpCkBAIC05NCw3ICs5NCw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0
U3RvcmU6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zCiAgICAgcmV0
dXJuIGdldChjb250ZXh0LCBrZXlSYW5nZS5yZWxlYXNlKCksIGVjKTsKIH0KIAotc3RhdGljIHZv
aWQgZ2VuZXJhdGVJbmRleEtleXNGb3JWYWx1ZShET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0
ZSwgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYgaW5kZXhNZXRhZGF0YSwgY29uc3QgU2NyaXB0VmFs
dWUmIG9iamVjdFZhbHVlLCBJREJPYmplY3RTdG9yZTo6SW5kZXhLZXlzKiBpbmRleEtleXMpCitz
dGF0aWMgdm9pZCBnZW5lcmF0ZUluZGV4S2V5c0ZvclZhbHVlKERPTVJlcXVlc3RTdGF0ZSogcmVx
dWVzdFN0YXRlLCBjb25zdCBJREJJbmRleE1ldGFkYXRhJiBpbmRleE1ldGFkYXRhLCBjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgb2JqZWN0VmFsdWUsIElEQk9iamVjdFN0b3JlOjpJbmRl
eEtleXMqIGluZGV4S2V5cykKIHsKICAgICBBU1NFUlQoaW5kZXhLZXlzKTsKICAgICBSZWZQdHI8
SURCS2V5PiBpbmRleEtleSA9IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgo
cmVxdWVzdFN0YXRlLCBvYmplY3RWYWx1ZSwgaW5kZXhNZXRhZGF0YS5rZXlQYXRoKTsKQEAgLTEx
NywzMSArMTE3LDMxIEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlSW5kZXhLZXlzRm9yVmFsdWUoRE9N
UmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIGNvbnN0IElEQkluCiAgICAgfQogfQogCi1QYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjphZGQoSlNDOjpFeGVjU3RhdGUqIHN0
YXRlLCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlv
bkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6YWRkKEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBjb25z
dCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAg
ICBMT0coU3RvcmFnZUFQSSwgIklEQk9iamVjdFN0b3JlOjphZGQiKTsKICAgICByZXR1cm4gcHV0
KElEQkRhdGFiYXNlQmFja2VuZDo6QWRkT25seSwgSURCQW55OjpjcmVhdGUodGhpcyksIHN0YXRl
LCB2YWx1ZSwga2V5LCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0
U3RvcmU6OmFkZChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFNjcmlwdFZhbHVlJiB2YWx1ZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjph
ZGQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIExPRyhTdG9yYWdlQVBJLCAiSURCT2JqZWN0U3Rv
cmU6OmFkZCIpOwogICAgIHJldHVybiBwdXQoSURCRGF0YWJhc2VCYWNrZW5kOjpBZGRPbmx5LCBJ
REJBbnk6OmNyZWF0ZSh0aGlzKSwgc3RhdGUsIHZhbHVlLCBzdGF0aWNfY2FzdDxJREJLZXkqPigw
KSwgZWMpOwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQo
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IFNjcmlwdFZh
bHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJP
YmplY3RTdG9yZTo6cHV0KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUmIHZhbHVlLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgIklEQk9iamVjdFN0b3JlOjpwdXQi
KTsKICAgICByZXR1cm4gcHV0KElEQkRhdGFiYXNlQmFja2VuZDo6QWRkT3JVcGRhdGUsIElEQkFu
eTo6Y3JlYXRlKHRoaXMpLCBzdGF0ZSwgdmFsdWUsIGtleSwgZWMpOwogfQogCi1QYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBT
Y3JpcHRWYWx1ZSYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coU3Rv
cmFnZUFQSSwgIklEQk9iamVjdFN0b3JlOjpwdXQiKTsKICAgICByZXR1cm4gcHV0KElEQkRhdGFi
YXNlQmFja2VuZDo6QWRkT3JVcGRhdGUsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBzdGF0ZSwgdmFs
dWUsIHN0YXRpY19jYXN0PElEQktleSo+KDApLCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChJREJEYXRhYmFzZUJhY2tlbmQ6OlB1dE1vZGUgcHV0
TW9kZSwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBT
Y3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXlWYWx1ZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoSURC
RGF0YWJhc2VCYWNrZW5kOjpQdXRNb2RlIHB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQW55PiBzb3Vy
Y2UsIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVl
LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5VmFsdWUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBzY3JpcHRFeGVj
dXRpb25Db250ZXh0RnJvbUV4ZWNTdGF0ZShzdGF0ZSk7CiAgICAgRE9NUmVxdWVzdFN0YXRlIHJl
cXVlc3RTdGF0ZShjb250ZXh0KTsKQEAgLTE0OSw3ICsxNDksNyBAQCBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoSURCRGF0YWJhc2VCYWNrZW5kOjpQdXRNb2RlIHB1
dE1vZGUsCiAgICAgcmV0dXJuIHB1dChwdXRNb2RlLCBzb3VyY2UsIHN0YXRlLCB2YWx1ZSwga2V5
LnJlbGVhc2UoKSwgZWMpOwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0
b3JlOjpwdXQoSURCRGF0YWJhc2VCYWNrZW5kOjpQdXRNb2RlIHB1dE1vZGUsIFBhc3NSZWZQdHI8
SURCQW55PiBzb3VyY2UsIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgU2NyaXB0VmFsdWUmIHZhbHVl
LCBQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChJREJEYXRhYmFzZUJhY2tlbmQ6OlB1
dE1vZGUgcHV0TW9kZSwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5
PiBwcnBLZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFJlZlB0cjxJREJLZXk+IGtleSA9
IHBycEtleTsKICAgICBpZiAobV9kZWxldGVkKSB7CkBAIC0xNjcsNyArMTY3LDcgQEAgUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KElEQkRhdGFiYXNlQmFja2VuZDo6
UHV0TW9kZSBwdXRNb2RlLAogCiAgICAgLy8gRklYTUU6IEV4cG9zZSB0aGUgSlMgZW5naW5lIGV4
Y2VwdGlvbiBzdGF0ZSB0aHJvdWdoIFNjcmlwdFN0YXRlLgogICAgIGJvb2wgZGlkVGhyb3cgPSBm
YWxzZTsKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUg
PSB2YWx1ZS5zZXJpYWxpemUoc3RhdGUsIDAsIDAsIGRpZFRocm93KTsKKyAgICBSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OnNlcmlhbGl6ZSh2YWx1ZSwgc3RhdGUsIG51bGxwdHIsIG51bGxwdHIsIGRpZFRocm93KTsK
ICAgICBpZiAoZGlkVGhyb3cpIHsKICAgICAgICAgLy8gU2V0dGluZyBhbiBleHBsaWNpdCBFeGNl
cHRpb25Db2RlIGhlcmUgd291bGQgZGVmZXIgaGFuZGxpbmcgdGhlIGFscmVhZHkgdGhyb3duIGV4
Y2VwdGlvbi4KICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNjIsNyArMjYyLDcgQEAgUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY28KICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlv
bkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6ZGVsZXRl
RnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPElE
QktleVJhbmdlPiBrZXlSYW5nZSA9IElEQktleVJhbmdlOjpvbmx5KGNvbnRleHQsIGtleSwgZWMp
OwogICAgIGlmIChlYykKQEAgLTMzNiw3ICszMzYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
Y3Vyc29yLT5jb250aW51ZUZ1bmN0aW9uKHN0YXRpY19jYXN0PElEQktleSo+KDApLCBBU1NFUlRf
Tk9fRVhDRVBUSU9OKTsKIAogICAgICAgICAgICAgUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSA9
IGN1cnNvci0+aWRiUHJpbWFyeUtleSgpOwotICAgICAgICAgICAgU2NyaXB0VmFsdWUgdmFsdWUg
PSBjdXJzb3ItPnZhbHVlKCk7CisgICAgICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB2
YWx1ZSA9IGN1cnNvci0+dmFsdWUoKTsKIAogICAgICAgICAgICAgSURCT2JqZWN0U3RvcmU6Oklu
ZGV4S2V5cyBpbmRleEtleXM7CiAgICAgICAgICAgICBnZW5lcmF0ZUluZGV4S2V5c0ZvclZhbHVl
KHJlcXVlc3QtPnJlcXVlc3RTdGF0ZSgpLCBtX2luZGV4TWV0YWRhdGEsIHZhbHVlLCAmaW5kZXhL
ZXlzKTsKQEAgLTUwMiw3ICs1MDIsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVj
dFN0b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleAogICAgIHJl
dHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIGtleVJhbmdlLCBJREJDdXJzb3I6OmRpcmVjdGlvbk5l
eHQoKSwgZWMpOwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpv
cGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZh
bHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJP
YmplY3RTdG9yZTo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBj
b25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCBrZXksIElEQkN1cnNvcjo6ZGlyZWN0aW9u
TmV4dCgpLCBlYyk7CiB9CkBAIC01MzQsNyArNTM0LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0
PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXgKICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24s
IEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9y
ZTo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSA9IElEQktl
eVJhbmdlOjpvbmx5KGNvbnRleHQsIGtleSwgZWMpOwogICAgIGlmIChlYykKQEAgLTU1OCw3ICs1
NTgsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjb3VudChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYQogICAgIHJldHVybiByZXF1ZXN0LnJlbGVh
c2UoKTsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Y291bnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwg
RXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3Jl
Ojpjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8SURC
S2V5UmFuZ2U+IGtleVJhbmdlID0gSURCS2V5UmFuZ2U6Om9ubHkoY29udGV4dCwga2V5LCBlYyk7
CiAgICAgaWYgKGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCT2JqZWN0U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlLmgKaW5kZXggZmZmNWZmOS4uZGE2NWEwNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCkBAIC02NSwyMSArNjUs
MjEgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2FjdGlvbjsgfQogICAgIGJvb2wgYXV0b0luY3JlbWVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEuYXV0b0luY3JlbWVudDsgfQogCi0gICAgUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBhZGQoSlNDOjpFeGVjU3RhdGUqLCBTY3JpcHRWYWx1ZSYsIEV4
Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHB1dChKU0M6OkV4ZWNT
dGF0ZSosIFNjcmlwdFZhbHVlJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURC
UmVxdWVzdD4gYWRkKEpTQzo6RXhlY1N0YXRlKiwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBF
eGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBwdXQoSlNDOjpFeGVj
U3RhdGUqLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQ
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3Io
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBFeGNlcHRp
b25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7
CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgY29uc3QgU3RyaW5nJiBkaXJlY3Rp
b24sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJz
b3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBjb25z
dCBTdHJpbmcmIGRpcmVjdGlvbiwgSURCRGF0YWJhc2VCYWNrZW5kOjpUYXNrVHlwZSwgRXhjZXB0
aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBk
aXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9w
ZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJik7CiAK
LSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Y29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gZ2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFu
Z2U+LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBhZGQoSlND
OjpFeGVjU3RhdGUqLCBTY3JpcHRWYWx1ZSYsIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2Vw
dGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHB1dChKU0M6OkV4ZWNTdGF0
ZSosIFNjcmlwdFZhbHVlJiwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYp
OworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gYWRkKEpTQzo6RXhlY1N0YXRlKiwgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBF
eGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBwdXQoSlNDOjpFeGVj
U3RhdGUqLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IGRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZGVs
ZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBr
ZXksIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGRlbGV0ZUZ1
bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBj
bGVhcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgUGFz
c1JlZlB0cjxJREJJbmRleD4gY3JlYXRlSW5kZXgoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGNvbnN0IERp
Y3Rpb25hcnkmIG9wdGlvbnMsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBjcmVhdGVJbmRl
eChjb250ZXh0LCBuYW1lLCBJREJLZXlQYXRoKGtleVBhdGgpLCBvcHRpb25zLCBlYyk7IH0KQEAg
LTkyLDEwICs5MiwxMCBAQCBwdWJsaWM6CiAKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNv
dW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7
IHJldHVybiBjb3VudChjb250ZXh0LCBzdGF0aWNfY2FzdDxJREJLZXlSYW5nZSo+KDApLCBlYyk7
IH0KICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gY291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFNj
cmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IHB1dChJREJEYXRhYmFzZUJhY2tlbmQ6OlB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQW55PiBz
b3VyY2UsIEpTQzo6RXhlY1N0YXRlKiwgU2NyaXB0VmFsdWUmLCBjb25zdCBTY3JpcHRWYWx1ZSYg
a2V5LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBwdXQoSURC
RGF0YWJhc2VCYWNrZW5kOjpQdXRNb2RlLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBKU0M6
OkV4ZWNTdGF0ZSosIFNjcmlwdFZhbHVlJiwgUGFzc1JlZlB0cjxJREJLZXk+LCBFeGNlcHRpb25D
b2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBwdXQoSURCRGF0YWJhc2VCYWNrZW5k
OjpQdXRNb2RlLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBKU0M6OkV4ZWNTdGF0ZSosIERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtl
eSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gcHV0KElEQkRh
dGFiYXNlQmFja2VuZDo6UHV0TW9kZSwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgSlNDOjpF
eGVjU3RhdGUqLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIFBhc3NSZWZQdHI8SURCS2V5Piwg
RXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgbWFya0RlbGV0ZWQoKSB7IG1fZGVsZXRlZCA9IHRy
dWU7IH0KICAgICB2b2lkIHRyYW5zYWN0aW9uRmluaXNoZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCAwMDQ5ZWRhLi5kNTY0
NjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0
LmNwcApAQCAtMjEzLDcgKzIxMyw3IEBAIFBhc3NSZWZQdHI8SURCQ3Vyc29yPiBJREJSZXF1ZXN0
OjpnZXRSZXN1bHRDdXJzb3IoKQogICAgIHJldHVybiAwOwogfQogCi12b2lkIElEQlJlcXVlc3Q6
OnNldFJlc3VsdEN1cnNvcihQYXNzUmVmUHRyPElEQkN1cnNvcj4gY3Vyc29yLCBQYXNzUmVmUHRy
PElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgY29uc3QgU2NyaXB0
VmFsdWUmIHZhbHVlKQordm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHRDdXJzb3IoUGFzc1JlZlB0
cjxJREJDdXJzb3I+IGN1cnNvciwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJ
REJLZXk+IHByaW1hcnlLZXksIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSkK
IHsKICAgICBBU1NFUlQobV9yZWFkeVN0YXRlID09IFBFTkRJTkcpOwogICAgIG1fY3Vyc29yS2V5
ID0ga2V5OwpAQCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBh
c3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZD4gYmFja2VuZCwgUGFzc1JlZlB0cjxJREJLCiAgICAg
ICAgIHJldHVybjsKIAogICAgIERPTVJlcXVlc3RTdGF0ZTo6U2NvcGUgc2NvcGUobV9yZXF1ZXN0
U3RhdGUpOwotICAgIFNjcmlwdFZhbHVlIHZhbHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZl
cihyZXF1ZXN0U3RhdGUoKSwgYnVmZmVyKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB2
YWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIocmVxdWVzdFN0YXRlKCksIGJ1ZmZlcik7
CiAgICAgQVNTRVJUKCFtX3BlbmRpbmdDdXJzb3IpOwogICAgIFJlZlB0cjxJREJDdXJzb3I+IGN1
cnNvcjsKICAgICBzd2l0Y2ggKG1fY3Vyc29yVHlwZSkgewpAQCAtMzIxLDcgKzMyMSw3IEBAIHZv
aWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZUJ1
ZmZlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgRE9NUmVxdWVzdFN0YXRlOjpTY29wZSBzY29w
ZShtX3JlcXVlc3RTdGF0ZSk7Ci0gICAgU2NyaXB0VmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZUlE
QlZhbHVlQnVmZmVyKHJlcXVlc3RTdGF0ZSgpLCB2YWx1ZUJ1ZmZlcik7CisgICAgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKHJlcXVlc3RT
dGF0ZSgpLCB2YWx1ZUJ1ZmZlcik7CiAgICAgb25TdWNjZXNzSW50ZXJuYWwodmFsdWUpOwogfQog
CkBAIC0zNDgsNyArMzQ4LDcgQEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0
cjxTaGFyZWRCdWZmZXI+IHZhbHVlQnVmZmVyLCBQYXNzUmVmUHRyPElEQksKICAgICBBU1NFUlQo
a2V5UGF0aCA9PSBlZmZlY3RpdmVPYmplY3RTdG9yZShtX3NvdXJjZSktPmtleVBhdGgoKSk7CiAj
ZW5kaWYKICAgICBET01SZXF1ZXN0U3RhdGU6OlNjb3BlIHNjb3BlKG1fcmVxdWVzdFN0YXRlKTsK
LSAgICBTY3JpcHRWYWx1ZSB2YWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIocmVxdWVz
dFN0YXRlKCksIHZhbHVlQnVmZmVyKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB2YWx1
ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIocmVxdWVzdFN0YXRlKCksIHZhbHVlQnVmZmVy
KTsKIAogICAgIFJlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkgPSBwcnBQcmltYXJ5S2V5OwogI2lm
bmRlZiBOREVCVUcKQEAgLTM4Myw3ICszODMsNyBAQCB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2Vz
c0ludGVybmFsKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSkKICAgICBy
ZXR1cm4gb25TdWNjZXNzSW50ZXJuYWwoZGVzZXJpYWxpemVJREJWYWx1ZShyZXF1ZXN0U3RhdGUo
KSwgdmFsdWUpKTsKIH0KIAotdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3NJbnRlcm5hbChjb25z
dCBTY3JpcHRWYWx1ZSYgdmFsdWUpCit2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2Vzc0ludGVybmFs
KGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSkKIHsKICAgICBtX3Jlc3VsdCA9
IElEQkFueTo6Y3JlYXRlKHZhbHVlKTsKICAgICBpZiAobV9wZW5kaW5nQ3Vyc29yKSB7CkBAIC00
MDAsNyArNDAwLDcgQEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJL
ZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgRE9NUmVxdWVzdFN0YXRlOjpTY29wZSBzY29wZShtX3JlcXVlc3RTdGF0ZSk7Ci0gICAg
U2NyaXB0VmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKHJlcXVlc3RTdGF0
ZSgpLCBidWZmZXIpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHZhbHVlID0gZGVzZXJp
YWxpemVJREJWYWx1ZUJ1ZmZlcihyZXF1ZXN0U3RhdGUoKSwgYnVmZmVyKTsKICAgICBBU1NFUlQo
bV9wZW5kaW5nQ3Vyc29yKTsKICAgICBzZXRSZXN1bHRDdXJzb3IobV9wZW5kaW5nQ3Vyc29yLnJl
bGVhc2UoKSwga2V5LCBwcmltYXJ5S2V5LCB2YWx1ZSk7CiAgICAgZW5xdWV1ZUV2ZW50KGNyZWF0
ZVN1Y2Nlc3NFdmVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlJlcXVlc3QuaAppbmRleCA0MzA1ODllLi5hYzc1ZGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCkBAIC0xMjAsNyArMTIwLDcgQEAgcHJvdGVj
dGVkOgogICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkRW5xdWV1ZUV2ZW50KCkgY29uc3Q7CiAgICAgdm9pZCBvblN1Y2Nlc3NJ
bnRlcm5hbChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwotICAgIHZvaWQgb25T
dWNjZXNzSW50ZXJuYWwoY29uc3QgU2NyaXB0VmFsdWUmKTsKKyAgICB2b2lkIG9uU3VjY2Vzc0lu
dGVybmFsKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJik7CiAKICAgICBSZWZQdHI8SURC
QW55PiBtX3Jlc3VsdDsKICAgICB1bnNpZ25lZCBzaG9ydCBtX2Vycm9yQ29kZTsKQEAgLTE0MCw3
ICsxNDAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkg
T1ZFUlJJREUgRklOQUwgeyBkZXJlZigpOyB9CiAKICAgICBQYXNzUmVmUHRyPElEQkN1cnNvcj4g
Z2V0UmVzdWx0Q3Vyc29yKCk7Ci0gICAgdm9pZCBzZXRSZXN1bHRDdXJzb3IoUGFzc1JlZlB0cjxJ
REJDdXJzb3I+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5
S2V5LCBjb25zdCBTY3JpcHRWYWx1ZSYpOworICAgIHZvaWQgc2V0UmVzdWx0Q3Vyc29yKFBhc3NS
ZWZQdHI8SURCQ3Vyc29yPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4g
cHJpbWFyeUtleSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmKTsKIAogICAgIFJlZlB0
cjxJREJBbnk+IG1fc291cmNlOwogICAgIGNvbnN0IElEQkRhdGFiYXNlQmFja2VuZDo6VGFza1R5
cGUgbV90YXNrVHlwZTsKQEAgLTE1NSw3ICsxNTUsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJ
REJDdXJzb3I+IG1fcGVuZGluZ0N1cnNvcjsKICAgICBSZWZQdHI8SURCS2V5PiBtX2N1cnNvcktl
eTsKICAgICBSZWZQdHI8SURCS2V5PiBtX2N1cnNvclByaW1hcnlLZXk7Ci0gICAgU2NyaXB0VmFs
dWUgbV9jdXJzb3JWYWx1ZTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBtX2N1cnNvclZh
bHVlOwogICAgIGJvb2wgbV9kaWRGaXJlVXBncmFkZU5lZWRlZEV2ZW50OwogICAgIGJvb2wgbV9w
cmV2ZW50UHJvcGFnYXRpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmNwcAppbmRleCAwZDNkMjZlLi42YzEyNWE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlS
YW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmls
aXR5UmFuZ2UuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcu
aCIKICNpbmNsdWRlICJNZWRpYVNvdXJjZVN0YXRlcy5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVl
LmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxpbnRlcnBy
ZXRlci9DYWxsRnJhbWUuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KIApAQCAt
NTAsNyArNTAsNyBAQCBDYXBhYmlsaXR5UmFuZ2U6OkNhcGFiaWxpdHlSYW5nZShjb25zdCBNZWRp
YVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSYgcmFuZ2VJbgogewogfQogCi1zdGF0aWMgU2Ny
aXB0VmFsdWUgc2NyaXB0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBNZWRpYVN0cmVhbVNv
dXJjZUNhcGFiaWxpdHlSYW5nZTo6VmFsdWVVbmlvbiYgdmFsdWUsIE1lZGlhU3RyZWFtU291cmNl
Q2FwYWJpbGl0eVJhbmdlOjpUeXBlIHR5cGUpCitzdGF0aWMgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUgc2NyaXB0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZUNh
cGFiaWxpdHlSYW5nZTo6VmFsdWVVbmlvbiYgdmFsdWUsIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJp
bGl0eVJhbmdlOjpUeXBlIHR5cGUpCiB7CiAgICAgLy8gTk9URTogdGhlIHNwZWMgc2F5czoKICAg
ICAvLyAgICAgIC4uLiBhbiBpbXBsZW1lbnRhdGlvbiBzaG91bGQgbWFrZSBhIHJlYXNvbmFibGUg
YXR0ZW1wdCB0byB0cmFuc2xhdGUgYW5kIHNjYWxlIHRoZSBoYXJkd2FyZSdzIHNldHRpbmcKQEAg
LTYzLDI2ICs2MywyNiBAQCBzdGF0aWMgU2NyaXB0VmFsdWUgc2NyaXB0VmFsdWUoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdAogICAgIAogICAgIHN3aXRj
aCAodHlwZSkgewogICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2U6OkZs
b2F0OgotICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwgSlNWYWx1ZSh2YWx1
ZS5hc0Zsb2F0KSk7CisgICAgICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShleGVj
LT52bSgpLCBKU1ZhbHVlKHZhbHVlLmFzRmxvYXQpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZTo6VUxvbmc6Ci0gICAgICAgIHJldHVy
biBTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBKU1ZhbHVlKHZhbHVlLmFzVUxvbmcpKTsKKyAgICAg
ICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIEpTVmFsdWUodmFs
dWUuYXNVTG9uZykpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNl
Q2FwYWJpbGl0eVJhbmdlOjpVbmRlZmluZWQ6Ci0gICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZShl
eGVjLT52bSgpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlKGV4ZWMtPnZtKCksIGpzVW5kZWZpbmVkKCkpOwogICAgICAgICBicmVhazsKICAg
ICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gU2NyaXB0VmFsdWUo
ZXhlYy0+dm0oKSwganNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlKGV4ZWMtPnZtKCksIGpzVW5kZWZpbmVkKCkpOwogfQogCi1TY3JpcHRWYWx1ZSBDYXBh
YmlsaXR5UmFuZ2U6Om1pbihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CitEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSBDYXBhYmlsaXR5UmFuZ2U6Om1pbihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIHNjcmlwdFZhbHVlKGV4ZWMsIG1fcmFuZ2VJbmZvLm1pbigpLCBtX3JhbmdlSW5m
by50eXBlKCkpOwogfQogCi1TY3JpcHRWYWx1ZSBDYXBhYmlsaXR5UmFuZ2U6Om1heChFeGVjU3Rh
dGUqIGV4ZWMpIGNvbnN0CitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBDYXBhYmlsaXR5UmFuZ2U6
Om1heChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHNjcmlwdFZhbHVlKGV4
ZWMsIG1fcmFuZ2VJbmZvLm1heCgpLCBtX3JhbmdlSW5mby50eXBlKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmgKaW5k
ZXggMzY4NDA2Ni4uOTA1YWUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5oCkBAIC0zMCw4ICszMCw4IEBACiAjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0
aWVzLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFi
bGUuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPGludGVy
cHJldGVyL0NhbGxGcmFtZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTQz
LDggKzQzLDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZlB0cjxDYXBhYmlsaXR5UmFuZ2U+
IGNyZWF0ZShjb25zdCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSYpOwogCi0gICAg
U2NyaXB0VmFsdWUgbWluKEpTQzo6RXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgU2NyaXB0VmFsdWUg
bWF4KEpTQzo6RXhlY1N0YXRlKikgY29uc3Q7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUg
bWluKEpTQzo6RXhlY1N0YXRlKikgY29uc3Q7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUg
bWF4KEpTQzo6RXhlY1N0YXRlKikgY29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0ZWQoKSBjb25zdCB7
IHJldHVybiBtX3JhbmdlSW5mby5zdXBwb3J0ZWQoKTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWlu
dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3Ry
YWludC5oCmluZGV4IGZkMjk0ODEuLjJhOTNmYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmgKQEAgLTMz
LDkgKzMzLDExIEBACiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotCituYW1lc3BhY2UgRGVwcmVj
YXRlZCB7CiBjbGFzcyBTY3JpcHRWYWx1ZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBNZWRpYVRyYWNrQ29uc3RyYWludCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhVHJhY2tD
b25zdHJhaW50PiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7CiBwdWJsaWM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJl
cGxhY2VtZW50LmNwcAppbmRleCA4MmI4NmU5Li4wYzI5MzY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNl
bWVudC5jcHAKQEAgLTQxLDcgKzQxLDYgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAi
UmVuZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRl
ICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVk
ZSAiVXNlckFnZW50U2NyaXB0cy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3Qu
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50LmgKaW5kZXggZGFhZTdiMS4uNWExOTA3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2Vt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdp
blJlcGxhY2VtZW50LmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIlBsdWdpblJlcGxh
Y2VtZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1
ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5j
bWFrZQppbmRleCBhOTcxZmEwLi42Mzg0NTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9V
c2VKU0MuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCkBAIC0xMjQsMTIg
KzEyNCwxMCBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9qcy9T
Y3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcAogICAgIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuY3BwCiAgICAgYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCi0gICAgYmluZGlu
Z3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAotICAgIGJpbmRpbmdzL2pzL1NjcmlwdE9iamVj
dC5jcHAKKyAgICBiaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuY3BwCiAgICAgYmluZGlu
Z3MvanMvU2NyaXB0UHJvZmlsZS5jcHAKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5j
cHAKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKLSAgICBiaW5kaW5ncy9qcy9TY3Jp
cHRWYWx1ZS5jcHAKICAgICBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCiAg
ICAgYmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCmluZGV4IDMxM2RhN2EuLmNhN2JkYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBA
IC0xNDMwLDcgKzE0MzAsNiBAQCBfX1pOSzdXZWJDb3JlMTFSZW5kZXJMYXllcjI0bmVlZHNDb21w
b3NpdGVkU2Nyb2xsaW5nRXYKIF9fWk5LN1dlYkNvcmUxMVJlbmRlclN0eWxlMTFmb250TWV0cmlj
c0V2CiBfX1pOSzdXZWJDb3JlMTFSZW5kZXJTdHlsZTIxdmlzaXRlZERlcGVuZGVudENvbG9yRWkK
IF9fWk5LN1dlYkNvcmUxMVJlbmRlclN0eWxlNGZvbnRFdgotX19aTks3V2ViQ29yZTExU2NyaXB0
VmFsdWU5Z2V0U3RyaW5nRVBOM0pTQzlFeGVjU3RhdGVFUk4zV1RGNlN0cmluZ0UKIF9fWk5LN1dl
YkNvcmUxMlJlbmRlck9iamVjdDE0ZW5jbG9zaW5nTGF5ZXJFdgogX19aTks3V2ViQ29yZTEyUmVu
ZGVyT2JqZWN0MTVsb2NhbFRvQWJzb2x1dGVFUktOU18xMEZsb2F0UG9pbnRFagogX19aTks3V2Vi
Q29yZTEyUmVuZGVyT2JqZWN0MTZyZXBhaW50UmVjdGFuZ2xlRVJLTlNfMTBMYXlvdXRSZWN0RWIK
QEAgLTE1MDIsNyArMTUwMSw2IEBAIF9fWk5LN1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uMzFnZXRD
bGlwcGVkVmlzaWJsZVRleHRSZWN0YW5nbGVzRVJOM1dURjZWZWN0b3JJTlNfCiBfX1pOSzdXZWJD
b3JlMTRGcmFtZVNlbGVjdGlvbjM2cm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50
RXYKIF9fWk5LN1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uNmJvdW5kc0ViCiBfX1pOSzdXZWJDb3Jl
MTRJbnNlcnRpb25Qb2ludDhpc0FjdGl2ZUV2Ci1fX1pOSzdXZWJDb3JlMTRJbnNwZWN0b3JWYWx1
ZTEydG9KU09OU3RyaW5nRXYKIF9fWk5LN1dlYkNvcmUxNFJlbmRlckxpc3RJdGVtMTBtYXJrZXJU
ZXh0RXYKIF9fWk5LN1dlYkNvcmUxNFJlc291cmNlQnVmZmVyNGRhdGFFdgogX19aTks3V2ViQ29y
ZTE0UmVzb3VyY2VCdWZmZXI0c2l6ZUV2CkBAIC0yNjI1LDcgKzI2MjMsNyBAQCBfX1pON1dlYkNv
cmUxNkhUTUxJbnB1dEVsZW1lbnQyNXNlbGVjdENvbG9ySW5Db2xvckNob29zZXJFUktOU181Q29s
b3JFCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIF9fWk43V2ViQ29yZTE1SW5zcGVjdG9yQ2xpZW50
MzFkb0Rpc3BhdGNoTWVzc2FnZU9uRnJvbnRlbmRQYWdlRVBOU180UGFnZUVSS04zV1RGNlN0cmlu
Z0UKIF9fWk43V2ViQ29yZTE3SW5zcGVjdG9yQ291bnRlcnMxMmNvdW50ZXJWYWx1ZUVOUzBfMTFD
b3VudGVyVHlwZUUKLV9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE1Y29ubmVjdEZy
b250ZW5kRVBOU18yNEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbEUKK19fWk43V2ViQ29yZTE5SW5z
cGVjdG9yQ29udHJvbGxlcjE1Y29ubmVjdEZyb250ZW5kRVBOOUluc3BlY3RvcjI0SW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsRQogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMThkaXNj
b25uZWN0RnJvbnRlbmRFdgogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMThzZXRQ
cm9maWxlckVuYWJsZWRFYgogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMjVldmFs
dWF0ZUZvclRlc3RJbkZyb250ZW5kRWxSS04zV1RGNlN0cmluZ0UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IGEzZjgwOTcuLjk2YzQ1ZGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpA
QCAtMTcyNzYsMjEgKzE3Mjc2LDcgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIj4KLSAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dp
bkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dp
bkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICA8L0NsQ29tcGls
ZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdE9iamVjdC5j
cHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRHbG9i
YWxPYmplY3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNc
U2NyaXB0UHJvZmlsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5n
c1xqc1xTY3JpcHRQcm9maWxlci5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE3MzIwLDcgKzE3MzA2LDYgQEAKICAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBp
bGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRWYWx1ZS5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KQEAgLTE3NjMzLDE0ICsxNzYxOCw2IEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2
NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwIj4K
LSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0g
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
LSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJ
bnNwZWN0b3JBbGxJbk9uZS5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9F
eGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgpAQCAtMTc2NTcsMTQgKzE3NjM0LDYgQEAKICAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rp
b258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rp
b258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIuY3BwIj4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGlu
c3BlY3RvclxJbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxX
aW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE3OTA1LDE0ICsxNzg3NCw2IEBACiAgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwv
Q2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3Rv
clZhbHVlcy5jcHAiPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5caW5zcGVjdG9yXEluc3BlY3RvcldvcmtlckFnZW50LmNwcCI+CiAgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtMTg1NzUsMTEgKzE4NTM2LDE5IEBA
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQ
bGF0Zm9ybUFyY2hpdGVjdHVyZSlcV2ViQ29yZVxEZXJpdmVkU291cmNlc1xKU1dlYkdMVmVydGV4
QXJyYXlPYmplY3RPRVMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFjY2Vzc2li
aWxpdHlcQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGNzc1xDU1NJbWFnZVNldFZhbHVlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuaCIgLz4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzXFNj
cmlwdE9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hl
YWRlcnNcYmluZGluZ3NcU2NyaXB0VmFsdWUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGhlYXBcQWxsb2NhdGlvblNwYWNlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xoZWFwXEhlYXAuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGhlYXBcU2xvdFZpc2l0
b3IuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGhl
YXBcU3Ryb25nSW5saW5lcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2Fy
ZGluZ0hlYWRlcnNcaGVhcFxXZWFrLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxG
b3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yQWdlbnRCYXNlLmgiIC8+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVj
dG9yQWdlbnRSZWdpc3RyeS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2Fy
ZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgiIC8+Cisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxG
b3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yVmFsdWVzLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xtYXNtXFg4NkFzc2VtYmxlci5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNccGFyc2Vy
XFNvdXJjZUNvZGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdI
ZWFkZXJzXHBhcnNlclxTb3VyY2VQcm92aWRlci5oIiAvPgpAQCAtMjA2MjgsMTUgKzIwNTk3LDEz
IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRDYWxsU3Rh
Y2tGYWN0b3J5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xT
Y3JpcHRDb250cm9sbGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5n
c1xqc1xTY3JpcHREZWJ1Z1NlcnZlci5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
YmluZGluZ3NcanNcU2NyaXB0RnVuY3Rpb25DYWxsLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRIZWFwU25hcHNob3QuaCIgLz4KLSAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdE9iamVjdC5oIiAvPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0R2xvYmFsT2JqZWN0LmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRQcm9maWxlLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRQcm9maWxlTm9k
ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0UHJv
ZmlsZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlw
dFNvdXJjZUNvZGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpz
XFNjcmlwdFN0YXRlLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xq
c1xTY3JpcHRWYWx1ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3Nc
anNcU2NyaXB0V3JhcHBhYmxlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5k
aW5nc1xqc1xTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGJpbmRpbmdzXGpzXFNvdXJjZUlELmgiIC8+CkBAIC0yMDk0Nyw4ICsyMDkxNCw2IEBA
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5qZWN0ZWRTY3JpcHRNb2R1
bGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JB
Z2VudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aW5zcGVjdG9yXEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgiIC8+Ci0gICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFzZUFnZW50LmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JDYW52YXNJbnN0
cnVtZW50YXRpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJ
bnNwZWN0b3JDbGllbnQuaCIgLz4KQEAgLTIwOTg0LDcgKzIwOTQ5LDcgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JTdHlsZVNoZWV0LmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yU3R5bGVUZXh0RWRpdG9y
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXElu
c3BlY3RvclZhbHVlcy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9y
XEluc3BlY3RvcldlYkFnZW50QmFzZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aW5zcGVjdG9yXEluc3BlY3RvcldvcmtlckFnZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnN0cnVtZW50aW5nQWdlbnRzLmgiIC8+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
LmZpbHRlcnMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
LmZpbHRlcnMKaW5kZXggZjBiMDI2Ni4uZjgzYTA0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMjUzLDYg
KzI1Myw5IEBACiAgICAgPEZpbHRlciBJbmNsdWRlPSJGb3J3YXJkaW5nSGVhZGVycyI+CiAgICAg
ICA8VW5pcXVlSWRlbnRpZmllcj57OTUyMTZhNzAtYTNiMi00NTNjLWE2NmYtYTgxY2MxYWJlZmVl
fTwvVW5pcXVlSWRlbnRpZmllcj4KICAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9
IkZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnsy
MTM0MzEyNC0xMjM0LTQ1NDItYThhYS1lYmFjODc4MTIzMTJ9PC9VbmlxdWVJZGVudGlmaWVyPgor
ICAgIDwvRmlsdGVyPgogICAgIDxGaWx0ZXIgSW5jbHVkZT0iRm9yd2FyZGluZ0hlYWRlcnNceWFy
ciI+CiAgICAgICA8VW5pcXVlSWRlbnRpZmllcj57M2I5YjE4MTktMWIzMS00NzcxLWIxMmEtMzJj
MjEwZjg0NzZkfTwvVW5pcXVlSWRlbnRpZmllcj4KICAgICA8L0ZpbHRlcj4KQEAgLTQ1NjMsMTAg
KzQ1NjYsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4KICAg
ICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNj
cmlwdEZ1bmN0aW9uQ2FsbC5jcHAiPgotICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVy
PgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3Nc
anNcU2NyaXB0T2JqZWN0LmNwcCI+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5n
c1xqc1xTY3JpcHRHbG9iYWxPYmplY3QuY3BwIj4KICAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8
L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJp
bmRpbmdzXGpzXFNjcmlwdFByb2ZpbGUuY3BwIj4KQEAgLTQ1NzgsOSArNDU3OCw2IEBACiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRTdGF0ZS5jcHAiPgogICAg
ICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0VmFsdWUuY3BwIj4KLSAgICAg
IDxGaWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAi
PgogICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpA
QCAtNDgyNCwxOCArNDgyMSwxMiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVj
dG9yXEluc3BlY3RvckFnZW50LmNwcCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVy
PgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9y
XEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwIj4KLSAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9G
aWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNw
ZWN0b3JcSW5zcGVjdG9yQWxsSW5PbmUuY3BwIj4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9G
aWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNw
ZWN0b3JcSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCI+CiAgICAgICA8RmlsdGVy
Pmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCI+Ci0gICAg
ICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckNhbnZhc0FnZW50LmNwcCI+CiAg
ICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNDky
Niw5ICs0OTE3LDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNw
ZWN0b3JUaW1lbGluZUFnZW50LmNwcCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVy
PgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9y
XEluc3BlY3RvclZhbHVlcy5jcHAiPgotICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4K
LSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJ
bnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRl
cj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTExNTExLDEzICsxMTQ5OSwxMCBAQAogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0RGVidWdTZXJ2ZXIuaCI+CiAgICAg
ICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRGdW5jdGlvbkNhbGwuaCI+Ci0g
ICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRIZWFwU25hcHNob3QuaCI+
CiAgICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0g
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRPYmplY3QuaCI+Cisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRHbG9iYWxPYmplY3Qu
aCI+CiAgICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRQcm9maWxlLmgi
PgpAQCAtMTE1MzUsOSArMTE1MjAsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmlu
ZGluZ3NcanNcU2NyaXB0U3RhdGUuaCI+CiAgICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0
ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5n
c1xqc1xTY3JpcHRWYWx1ZS5oIj4KLSAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4K
LSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpz
XFNjcmlwdFdyYXBwYWJsZS5oIj4KICAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4K
ICAgICA8L0NsSW5jbHVkZT4KQEAgLTEyMTk1LDYgKzEyMTc3LDE1IEBACiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxzdmdccHJvcGVydGllc1xTVkdUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFy
T2ZmLmgiPgogICAgICAgPEZpbHRlcj5yZW5kZXJpbmdcc3ZnXHByb3BlcnRpZXM8L0ZpbHRlcj4K
ICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdI
ZWFkZXJzXGJpbmRpbmdzXFNjcmlwdEZ1bmN0aW9uQ2FsbC5oIj4KKyAgICAgIDxGaWx0ZXI+Rm9y
d2FyZGluZ0hlYWRlcnNcYmluZGluZ3M8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzXFNjcmlwdE9i
amVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3M8L0ZpbHRl
cj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRp
bmdIZWFkZXJzXGJpbmRpbmdzXFNjcmlwdFZhbHVlLmgiPgorICAgICAgPEZpbHRlcj5Gb3J3YXJk
aW5nSGVhZGVyc1xiaW5kaW5nczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZVxBcmdMaXN0LmgiPgog
ICAgICAgPEZpbHRlcj5Gb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9D
bEluY2x1ZGU+CkBAIC0xMjI0MCw5ICsxMjIzMSwyMSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaGVhcFxTdHJvbmcuaCI+CiAgICAgICA8RmlsdGVyPkZv
cndhcmRpbmdIZWFkZXJzXGhlYXA8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JB
Z2VudEJhc2UuaCI+CisgICAgICA8RmlsdGVyPkZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3Rvcjwv
RmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9y
d2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCI+CisgICAg
ICA8RmlsdGVyPkZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvcjwvRmlsdGVyPgorICAgIDwvQ2xJ
bmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5z
cGVjdG9yXEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgiPgorICAgICAgPEZpbHRlcj5Gb3J3
YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwuaCI+CiAgICAgICA8RmlsdGVyPkZvcndhcmRpbmdIZWFkZXJzXGlu
c3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvclZhbHVlcy5oIj4KKyAg
ICAgIDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yPC9GaWx0ZXI+CisgICAgPC9D
bEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoaXN0b3J5XEJhY2tGb3J3YXJk
Q2xpZW50LmgiPgogICAgICAgPEZpbHRlcj5oaXN0b3J5PC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1
ZGU+CkBAIC0xMjM5NiwxMiArMTIzOTksNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aW5zcGVjdG9yXEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oIj4KICAgICAgIDxGaWx0
ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCI+Ci0gICAg
ICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckJhc2VBZ2VudC5oIj4KLSAgICAg
IDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCI+CiAgICAg
ICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMTI1MDcs
NyArMTI1MDQsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuaCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgog
ICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXElu
c3BlY3RvclZhbHVlcy5oIj4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJ
bnNwZWN0b3JXZWJBZ2VudEJhc2UuaCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVy
PgogICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9y
XEluc3BlY3RvcldvcmtlckFnZW50LmgiPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDI2OTE0ZDUuLjRlOWMxMmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEy
MjEsOCArMTIyMSw2IEBACiAJCTQwOUVCREM1MTZCN0YzQ0EwMENCQTNGQyAvKiBKU0NTU0ZvbnRG
YWNlTG9hZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQwOUVCREM0MTZCN0YzQ0EwMENCQTNGQyAvKiBKU0NTU0ZvbnRGYWNlTG9hZEV2ZW50
LmNwcCAqLzsgfTsKIAkJNDBFQ0FFN0UxNkI4QjY3MjAwQzM2MTAzIC8qIEpTRE9NRXJyb3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwRUNBRTdEMTZC
OEI2NzIwMEMzNjEwMyAvKiBKU0RPTUVycm9yLmggKi87IH07CiAJCTQwRUNBRTgxMTZCOEI2OEEw
MEMzNjEwMyAvKiBKU0RPTUVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQwRUNBRTgwMTZCOEI2OEEwMEMzNjEwMyAvKiBKU0RPTUVycm9yLmNw
cCAqLzsgfTsKLQkJNDEwMDJDQ0QwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2Fs
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwMDJD
Q0IwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oICovOyB9OwotCQk0MTAw
MkNDRTBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDAyQ0NDMEY2NkVERUYwMDlF
NjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwICovOyB9OwogCQk0MTBCN0U3MjEwNDVGQUIw
MDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwQjdFNzExMDQ1RkFCMDAwRDgyMjRGIC8qIEpT
TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCAqLzsgfTsKIAkJNDEyMzA4MUIxMzhDNDI5NzAwQkNDRkNB
IC8qIFdlYkNvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNGMTlCMUEwODI0NUU1QTAwMUU5QUJDIC8qIFdlYkNvcmUuZnJhbWV3
b3JrICovOyB9OwogCQk0MTIzMDkxMzEzOEM0MkZGMDBCQ0NGQ0EgLyogSmF2YVNjcmlwdENvcmUu
ZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjgyMTYyOTkwMjlGNEZCNTAxMDAwMTMxIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAq
LzsgfTsKQEAgLTEyOTEsOCArMTI4OSw4IEBACiAJCTQxRjA2MThGMEY1RjA2OTgwMEEwN0VBQyAv
KiBDb25zb2xlTWVzc2FnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUYwNjE4RDBGNUYwNjk4MDBBMDdFQUMgLyogQ29uc29sZU1lc3NhZ2UuY3Bw
ICovOyB9OwogCQk0MUYwNjIxNDBGNUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VS
ZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDFGMDYyMTIwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCAq
LzsgfTsKIAkJNDFGMDYyMTUwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVz
b3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDFGMDYyMTMwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3Bw
ICovOyB9OwotCQk0MUYwNjZFNDBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0T2JqZWN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjZFMjBGNjRC
Q0Y2MDBBMDdFQUMgLyogU2NyaXB0T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDFGMDY2RTUwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlw
dE9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MUYwNjZFMzBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0T2JqZWN0LmNwcCAqLzsgfTsKKwkJ
NDFGMDY2RTQwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdEdsb2JhbE9iamVjdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGMDY2RTIwRjY0QkNGNjAw
QTA3RUFDIC8qIFNjcmlwdEdsb2JhbE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxRjA2NkU1MEY2NEJDRjYwMEEwN0VBQyAvKiBTY3Jp
cHRHbG9iYWxPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFGMDY2RTMwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdEdsb2JhbE9iamVjdC5j
cHAgKi87IH07CiAJCTQxRjFEMjFGMEVGMzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFt
ZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
RjFEMjFEMEVGMzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURhdGEuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUYxRDIyMDBFRjM1
QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjFEMjFFMEVGMzVDMkEwMERBODc1MyAv
KiBTY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwICovOyB9OwogCQk0MUY1ODRDNzEwNDY1MkNCMDA5
Q0FBNjQgLyogSlNNZXNzYWdlUG9ydEN1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGNTg0QzYxMDQ2NTJDQjAwOUNBQTY0IC8qIEpTTWVzc2Fn
ZVBvcnRDdXN0b20uaCAqLzsgfTsKQEAgLTE2MDUsOCArMTYwMyw2IEBACiAJCTRGMTUzNEUwMTFC
NTMzMDIwMDIxRkQ4NiAvKiBFZGl0aW5nQmVoYXZpb3JUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYxNTM0REYxMUI1MzMwMjAwMjFGRDg2IC8q
IEVkaXRpbmdCZWhhdmlvclR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNEYyRDIwNTQxMkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3RvckFn
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjJE
MjA1MjEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0RjJEMjA1NTEyRUFFN0IzMDA1QzI4
NzQgLyogSW5zcGVjdG9yQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNEYyRDIwNTMxMkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3RvckFnZW50
LmNwcCAqLzsgfTsKLQkJNEYzMjg5QjUxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVl
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjMy
ODlCMzExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCAqLzsgfTsKLQkJNEYz
Mjg5QjYxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYzMjg5QjQxMUE0MkFBQjAwNUFCRTdF
IC8qIEluc3BlY3RvclZhbHVlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTRGNEY1RkZCMTFDQkQyRTEwMEExODZCRiAvKiBJbnNwZWN0b3JGcm9u
dGVuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
RjRGNUZGQTExQ0JEMkQyMDBBMTg2QkYgLyogSW5zcGVjdG9yRnJvbnRlbmQuY3BwICovOyB9Owog
CQk0RjZGREQ2NDEzNDFERUREMDAxRjhFRTMgLyogSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNkZERDYyMTM0MURF
REQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuY3BwICovOyB9OwogCQk0RjZGREQ2NTEz
NDFERUREMDAxRjhFRTMgLyogSW5zcGVjdG9yUGFnZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjZGREQ2MzEzNDFERUREMDAxRjhFRTMgLyog
SW5zcGVjdG9yUGFnZUFnZW50LmggKi87IH07CkBAIC0yMTk3LDcgKzIxOTMsNiBAQAogCQk3QTc0
RUNCQjEwMTgzOUE2MDBCRjkzOUUgLyogSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTc0RUNCOTEwMTgzOUE2
MDBCRjkzOUUgLyogSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggKi87IH07CiAJCTdBNzRFQ0JE
MTAxODM5REEwMEJGOTM5RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTc0RUNCQzEwMTgz
OURBMDBCRjkzOUUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwICovOyB9Owog
CQk3QUEzNjVFRTEyRTcyNjU0MDBEQ0EyNDIgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQTM2NUVEMTJF
NzI2NTQwMERDQTI0MiAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwICovOyB9OwotCQk3QUE1
MUI2RTE0ODNCNjE2MDBBRDI3NTIgLyogSW5zcGVjdG9yQmFzZUFnZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUE1MUI2QzE0ODNCNjE2MDBBRDI3
NTIgLyogSW5zcGVjdG9yQmFzZUFnZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0FBNTFERDUxNDg1MDZBOTAwQUQyNzUyIC8qIEluc3BlY3Rv
ck1lbW9yeUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdBQTUxREQzMTQ4NTA2QTkwMEFEMjc1MiAvKiBJbnNwZWN0b3JNZW1vcnlBZ2VudC5j
cHAgKi87IH07CiAJCTdBQTUxREQ2MTQ4NTA2QTkwMEFEMjc1MiAvKiBJbnNwZWN0b3JNZW1vcnlB
Z2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FB
NTFERDQxNDg1MDZBOTAwQUQyNzUyIC8qIEluc3BlY3Rvck1lbW9yeUFnZW50LmggKi87IH07CiAJ
CTdBQUJBMjU5MTRCQzYxMzMwMEFBOUExMSAvKiBET01FZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FBQkEyNTcxNEJDNjEzMzAwQUE5QTEx
IC8qIERPTUVkaXRvci5jcHAgKi87IH07CkBAIC0zMDE3LDggKzMwMTIsNiBAQAogCQk5MzQ0MkM5
RTBEMkIzMzVDMDAzMzhGRjkgLyogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNDQyQzlEMEQyQjMzNUMwMDMz
OEZGOSAvKiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oICovOyB9OwogCQk5MzQ0MkNBMDBEMkIz
MzYwMDAzMzhGRjkgLyogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0NDJDOUYwRDJCMzM2MDAwMzM4RkY5
IC8qIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcCAqLzsgfTsKIAkJOTM0OTA3RTQxMjVCQkJD
ODAwN0YyM0EwIC8qIEdyYXBoaWNzQ29udGV4dENHLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzQ5MDdFMzEyNUJCQkM4MDA3RjIzQTAgLyogR3JhcGhp
Y3NDb250ZXh0Q0cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQk5MzRDQzBFMTBFRDM5RDZGMDBBNjU4RjIgLyogU2NyaXB0VmFsdWUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0Q0MwREYwRUQzOUQ2
RjAwQTY1OEYyIC8qIFNjcmlwdFZhbHVlLmNwcCAqLzsgfTsKLQkJOTM0Q0MwRTIwRUQzOUQ2RjAw
QTY1OEYyIC8qIFNjcmlwdFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5MzRDQzBFMDBFRDM5RDZGMDBBNjU4RjIgLyogU2NyaXB0VmFsdWUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzRDQzEw
QTBFREIyMjM5MDBBNjU4RjIgLyogU2NyaXB0U291cmNlQ29kZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0Q0MxMDkwRURCMjIzOTAwQTY1OEYyIC8q
IFNjcmlwdFNvdXJjZUNvZGUuaCAqLzsgfTsKIAkJOTM0RDlCQTUwQjhDMTE2QjAwN0I0MkE5IC8q
IFdlYkNvcmVOU1N0cmluZ0V4dHJhcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzNEQ5QkE0MEI4QzExNkIwMDdCNDJBOSAvKiBXZWJDb3JlTlNTdHJp
bmdFeHRyYXMubW0gKi87IH07CiAJCTkzNEQ5QkE3MEI4QzExNzUwMDdCNDJBOSAvKiBXZWJDb3Jl
TlNTdHJpbmdFeHRyYXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzNEQ5QkE2MEI4QzExNzUwMDdCNDJBOSAvKiBXZWJDb3JlTlNTdHJpbmdFeHRyYXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzUy
MCwxNSArMzUxMywxMiBAQAogCQlBNTEzQjNEODExNEIxNjZBMDAxQzQyOUIgLyogS2V5RXZlbnRD
b2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
Qzk3NEQwMTE0ODVGRjEwMDY2RjJBQiAvKiBLZXlFdmVudENvY29hLm1tICovOyB9OwogCQlBNTRB
ODJFQzE1MjI4RDJGMDBDNzJCQTYgLyogRE9NTm9kZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NEE4MkVBMTUyMjhDQTMwMEM3MkJBNiAv
KiBET01Ob2RlUHJpdmF0ZS5oICovOyB9OwogCQlBNTRBODJGMTE1MjI4REY2MDBDNzJCQTYgLyog
RE9NTm9kZVByaXZhdGUuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NEE4MkVBMTUyMjhDQTMwMEM3MkJBNiAvKiBET01Ob2Rl
UHJpdmF0ZS5oICovOyB9OwotCQlBNTU2QzI4ODE4MzIwNkE4MDA4Q0I3MjAgLyogSW5zcGVjdG9y
QWdlbnRSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNTU2QzI4NjE4MzIwNkE4MDA4Q0I3MjAgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3Ry
eS5jcHAgKi87IH07Ci0JCUE1NTZDMjg5MTgzMjA2QTgwMDhDQjcyMCAvKiBJbnNwZWN0b3JBZ2Vu
dFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNTU2QzI4NzE4MzIwNkE4MDA4Q0I3MjAgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1NzMyQjBB
MTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTczMkIwODEzNkExNjFEMDA1QzhEN0MgLyog
RGF0ZUNvbXBvbmVudHMuY3BwICovOyB9OwogCQlBNTczMkIwQjEzNkExNjFEMDA1QzhEN0MgLyog
RGF0ZUNvbXBvbmVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1NzMyQjA5MTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5oICovOyB9
OworCQlBNTkzQ0Y4QjE4NDA1MzUyMDBCRkNFMjcgLyogSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTkzQ0Y4QTE4
NDA1MzUyMDBCRkNFMjcgLyogSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTVBMkFGMEIxODI5NzM0MzAwREUx
NzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE1QTJBRjA5MTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJs
ZS5jcHAgKi87IH07CiAJCUE1QTJBRjBDMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJs
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBMkFG
MEExODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmggKi87IH07CiAJCUE1QUJCNzg3
MTNCOTA0QkMwMEYxOTdFMyAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QUJCNzg2MTNCOTA0QkMwMEYx
OTdFMyAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCAqLzsgfTsKLQkJQTVBQzRBRUYxODMz
Njk3NTAwNzExNEUwIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QUM0QUVEMTgzMzY5NzUwMDcx
MTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgKi87IH07Ci0JCUE1QUM0QUYw
MTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBQzRBRUUxODMzNjk3NTAw
NzExNEUwIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTVBRkIzNEYxMTUxNTFBNzAwQjA0NUNC
IC8qIFN0ZXBSYW5nZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNUFGQjM0RDExNTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmNwcCAqLzsgfTsK
IAkJQTVBRkIzNTAxMTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBRkIzNEUxMTUxNTFBNzAwQjA0NUNC
IC8qIFN0ZXBSYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUE1QzU2NkFCMTI3QTNBQUQwMEU4QTNGRiAvKiBEaXNrSW1hZ2VDYWNoZUNsaWVu
dElPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVD
NTY2QUExMjdBM0FBRDAwRThBM0ZGIC8qIERpc2tJbWFnZUNhY2hlQ2xpZW50SU9TLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc5MDgsOCArNzg5
OCw2IEBACiAJCTQwOUVCREM0MTZCN0YzQ0EwMENCQTNGQyAvKiBKU0NTU0ZvbnRGYWNlTG9hZEV2
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ1NTRm9udEZh
Y2VMb2FkRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MEVDQUU3RDE2
QjhCNjcyMDBDMzYxMDMgLyogSlNET01FcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0RPTUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQwRUNB
RTgwMTZCOEI2OEEwMEMzNjEwMyAvKiBKU0RPTUVycm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk0MTAwMkNDQjBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEZ1bmN0aW9uQ2FsbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTAwMkNDQzBGNjZFREVGMDA5RTY2MEQgLyog
U2NyaXB0RnVuY3Rpb25DYWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxMEI3RTcxMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lc3NhZ2VFdmVudEN1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjdENTM2MEY4QUFCMUQwMEU0MjRG
NSAvKiBTY3JpcHRTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTY3JpcHRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzhEMzMz
MTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRXZlbnRDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC03OTg0LDggKzc5NzIsOCBAQAogCQk0MUYwNjE4RDBGNUYwNjk4MDBBMDdFQUMgLyogQ29uc29s
ZU1lc3NhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29uc29s
ZU1lc3NhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUYwNjIxMjBGNUYx
OTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRjA2MjEzMEY1RjE5MjYwMEEwN0VBQyAvKiBJbnNwZWN0
b3JEYXRhYmFzZVJlc291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk0MUYwNjZFMjBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0T2JqZWN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdE9iamVjdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk0MUYwNjZFMzBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0T2JqZWN0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdE9iamVjdC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRjA2NkUyMEY2NEJDRjYwMEEwN0VB
QyAvKiBTY3JpcHRHbG9iYWxPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2NyaXB0R2xvYmFsT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQx
RjA2NkUzMEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRHbG9iYWxPYmplY3QuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0R2xvYmFsT2JqZWN0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGMUQyMUQwRUYzNUMyQTAwREE4NzUzIC8qIFNj
cmlwdENhY2hlZEZyYW1lRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
Y3JpcHRDYWNoZWRGcmFtZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFG
MUQyMUUwRUYzNUMyQTAwREE4NzUzIC8qIFNjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRDYWNoZWRGcmFtZURhdGEuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUY1ODRDNjEwNDY1MkNCMDA5Q0FBNjQg
LyogSlNNZXNzYWdlUG9ydEN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU01lc3NhZ2VQb3J0Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04
MzQ0LDggKzgzMzIsNiBAQAogCQk0RjE1MzRERjExQjUzMzAyMDAyMUZEODYgLyogRWRpdGluZ0Jl
aGF2aW9yVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdGluZ0Jl
aGF2aW9yVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEYyRDIwNTIxMkVB
RTdCMzAwNUMyODc0IC8qIEluc3BlY3RvckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEluc3BlY3RvckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTRGMkQyMDUzMTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JBZ2VudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTRGMzI4OUIzMTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0
b3JWYWx1ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVj
dG9yVmFsdWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNEYzMjg5QjQxMUE0
MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbnNwZWN0b3JWYWx1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNEY0RjVGRkExMUNCRDJEMjAwQTE4NkJGIC8qIEluc3BlY3RvckZyb250ZW5kLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckZyb250ZW5kLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEY0RjVGRkMxMUNCRDMwMTAwQTE4NkJGIC8q
IEluc3BlY3RvckZyb250ZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
c3BlY3RvckZyb250ZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGNkZERDYy
MTM0MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yUGFnZUFnZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg5OTYsNyArODk4Miw2IEBACiAJCTdBNzRFQ0I5MTAxODM5
QTYwMEJGOTM5RSAvKiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdBNzRFQ0JDMTAxODM5REEwMEJGOTM5RSAvKiBKU0luc3BlY3Rv
ckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdBQTM2NUVEMTJFNzI2NTQwMERDQTI0MiAvKiBJbnNwZWN0b3JSdW50aW1l
QWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9y
UnVudGltZUFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0FBNTFCNkMx
NDgzQjYxNjAwQUQyNzUyIC8qIEluc3BlY3RvckJhc2VBZ2VudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JCYXNlQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0FBNTFERDMxNDg1MDZBOTAwQUQyNzUyIC8qIEluc3BlY3Rvck1lbW9yeUFn
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rvck1l
bW9yeUFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FBNTFERDQxNDg1
MDZBOTAwQUQyNzUyIC8qIEluc3BlY3Rvck1lbW9yeUFnZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEluc3BlY3Rvck1lbW9yeUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdBQUJBMjU3MTRCQzYxMzMwMEFBOUExMSAvKiBET01FZGl0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NRWRpdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk4MDMsOCArOTc4OCw2IEBACiAJCTkzNDQyQzlEMEQy
QjMzNUMwMDMzOEZGOSAvKiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5MzQ0MkM5RjBEMkIzMzYwMDAzMzhGRjkgLyogSFRNTFRhYmxl
Um93c0NvbGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5MzQ5MDdFMzEyNUJCQkM4MDA3RjIzQTAgLyogR3JhcGhpY3NDb250ZXh0Q0cuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0Q0cuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTM0Q0MwREYwRUQzOUQ2RjAwQTY1OEYyIC8qIFNjcmlwdFZh
bHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdFZhbHVl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTM0Q0MwRTAwRUQzOUQ2RjAwQTY1
OEYyIC8qIFNjcmlwdFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNj
cmlwdFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNENDMTA5MEVEQjIy
MzkwMEE2NThGMiAvKiBTY3JpcHRTb3VyY2VDb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNjcmlwdFNvdXJjZUNvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTM0RDlCQTQwQjhDMTE2QjAwN0I0MkE5IC8qIFdlYkNvcmVOU1N0cmluZ0V4dHJhcy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlTlNTdHJpbmdF
eHRyYXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNEQ5QkE2MEI4QzExNzUw
MDdCNDJBOSAvKiBXZWJDb3JlTlNTdHJpbmdFeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkNvcmVOU1N0cmluZ0V4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTAzNDQsMTkgKzEwMzI3LDE2IEBACiAJCUE1MTgyMjU0MTdFMkEwRDQwMEE5
QkExRCAvKiBJbnNwZWN0b3JPdmVybGF5UGFnZS5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LmNzczsgcGF0aCA9IEluc3BlY3Rvck92ZXJs
YXlQYWdlLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUxODIyNTUxN0UyQTBE
NDAwQTlCQTFEIC8qIEluc3BlY3Rvck92ZXJsYXlQYWdlLmpzICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRo
ID0gSW5zcGVjdG9yT3ZlcmxheVBhZ2UuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE1NEE4MkVBMTUyMjhDQTMwMEM3MkJBNiAvKiBET01Ob2RlUHJpdmF0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01Ob2RlUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlBNTU2QzI4NjE4MzIwNkE4MDA4Q0I3MjAgLyogSW5zcGVjdG9yQWdlbnRS
ZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0
b3JBZ2VudFJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU1NkMy
ODcxODMyMDZBODAwOENCNzIwIC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNTczMkIwODEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNv
bXBvbmVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0ZUNv
bXBvbmVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTczMkIwOTEzNkEx
NjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGF0ZUNvbXBvbmVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTU5M0NGNzIxODQwMkNFOTAwQkZDRTI3IC8qIHByb3RvY29sICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZm9sZGVyOyBwYXRoID0gcHJvdG9jb2w7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1OTNDRjczMTg0MDJENEIwMEJGQ0UyNyAvKiBD
b2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gQ29kZUdlbmVyYXRv
ckluc3BlY3Rvci5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU5M0NGNzQxODQw
MkQ0QjAwQkZDRTI3IC8qIENvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5ICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0
aG9uOyBwYXRoID0gQ29kZUdlbmVyYXRvckluc3BlY3RvclN0cmluZ3MucHk7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE1OTNDRjc1MTg0MDJENEIwMEJGQ0UyNyAvKiBjb21iaW5lLWph
dmFzY3JpcHQtcmVzb3VyY2VzLnBsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgcGF0aCA9ICJjb21iaW5lLWphdmFzY3Jp
cHQtcmVzb3VyY2VzLnBsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU5M0NGOEEx
ODQwNTM1MjAwQkZDRTI3IC8qIEluc3BlY3RvcldlYkFnZW50QmFzZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTVBMkFGMDkxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dh
YmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VEZWJ1Z2dh
YmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVBMkFGMEExODI5NzM0MzAw
REUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBhZ2VEZWJ1Z2dhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QUJC
Nzg2MTNCOTA0QkMwMEYxOTdFMyAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1QUM0QUVEMTgzMzY5NzUwMDcxMTRFMCAvKiBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUE1QUM0QUVFMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUFG
QjM0RDExNTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFN0ZXBSYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE1QUZCMzRFMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RlcFJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE1QzU2NkFBMTI3QTNBQUQwMEU4QTNGRiAvKiBEaXNrSW1hZ2VDYWNoZUNsaWVu
dElPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNrSW1hZ2VDYWNoZUNs
aWVudElPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ1MDAsMTMgKzE0NDgw
LDggQEAKIAkJCQk3QTU2M0Y5NTEyREY1QzkxMDBGNDUzNkQgLyogSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UuanMgKi8sCiAJCQkJNEYyRDIwNTMxMkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3RvckFnZW50
LmNwcCAqLywKIAkJCQk0RjJEMjA1MjEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQu
aCAqLywKLQkJCQlBNTU2QzI4NjE4MzIwNkE4MDA4Q0I3MjAgLyogSW5zcGVjdG9yQWdlbnRSZWdp
c3RyeS5jcHAgKi8sCi0JCQkJQTU1NkMyODcxODMyMDZBODAwOENCNzIwIC8qIEluc3BlY3RvckFn
ZW50UmVnaXN0cnkuaCAqLywKIAkJCQlCODg1RThEMjExRTA2REQyMDA5RkZCRjQgLyogSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCAqLywKIAkJCQlCODg1RThEMzExRTA2REQyMDA5
RkZCRjQgLyogSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmggKi8sCi0JCQkJQTVBQzRB
RUQxODMzNjk3NTAwNzExNEUwIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCAqLywK
LQkJCQlBNUFDNEFFRTE4MzM2OTc1MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIuaCAqLywKLQkJCQk3QUE1MUI2QzE0ODNCNjE2MDBBRDI3NTIgLyogSW5zcGVjdG9yQmFzZUFn
ZW50LmggKi8sCiAJCQkJQUFENzY2RTgxNTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvckNhbnZh
c0FnZW50LmNwcCAqLywKIAkJCQlBQUQ3NjZFOTE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVjdG9y
Q2FudmFzQWdlbnQuaCAqLywKIAkJCQlBQUQ3NjZFQTE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVj
dG9yQ2FudmFzSW5zdHJ1bWVudGF0aW9uLmggKi8sCkBAIC0xNDU3Niw4ICsxNDU1MSw3IEBACiAJ
CQkJODI4ODlCNEIxM0M2MjM5MjAwOUE2MTU2IC8qIEluc3BlY3RvclN0eWxlVGV4dEVkaXRvci5o
ICovLAogCQkJCTc1NDEzM0E5MTAyRTAwRjQwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50LmNwcCAqLywKIAkJCQk3NTQxMzNBNzEwMkUwMEU4MDAwNzVEMDAgLyogSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudC5oICovLAotCQkJCTRGMzI4OUIzMTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0
b3JWYWx1ZXMuY3BwICovLAotCQkJCTRGMzI4OUI0MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0
b3JWYWx1ZXMuaCAqLywKKwkJCQlBNTkzQ0Y4QTE4NDA1MzUyMDBCRkNFMjcgLyogSW5zcGVjdG9y
V2ViQWdlbnRCYXNlLmggKi8sCiAJCQkJRjM4MTBDMTkxMzY1QTQ5NjAwRUQ2RTMzIC8qIEluc3Bl
Y3RvcldvcmtlckFnZW50LmNwcCAqLywKIAkJCQlGMzgxMEMxQTEzNjVBNDk2MDBFRDZFMzMgLyog
SW5zcGVjdG9yV29ya2VyQWdlbnQuaCAqLywKIAkJCQlGMzc1Q0MwNjExNTBEMzAwMDA4RERCODEg
LyogSW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaCAqLywKQEAgLTE5NjY0LDExICsxOTYzOCw5IEBA
CiAJCQkJQTgzRTFDNzIwRTQ5MDQyQjAwMTQwQjlDIC8qIFNjcmlwdENvbnRyb2xsZXJNYWMubW0g
Ki8sCiAJCQkJOUY2RkMxOTQxMTIyRTgyQTAwRTgwMTk2IC8qIFNjcmlwdERlYnVnU2VydmVyLmNw
cCAqLywKIAkJCQk5RjZGQzE5NTExMjJFODJBMDBFODAxOTYgLyogU2NyaXB0RGVidWdTZXJ2ZXIu
aCAqLywKLQkJCQk0MTAwMkNDQzBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxs
LmNwcCAqLywKLQkJCQk0MTAwMkNDQjBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25D
YWxsLmggKi8sCiAJCQkJOUYzQjk0N0QxMjI0MTc1ODAwNTMwNEU3IC8qIFNjcmlwdEhlYXBTbmFw
c2hvdC5oICovLAotCQkJCTQxRjA2NkUzMEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRPYmplY3Qu
Y3BwICovLAotCQkJCTQxRjA2NkUyMEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRPYmplY3QuaCAq
LywKKwkJCQk0MUYwNjZFMzBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0R2xvYmFsT2JqZWN0LmNw
cCAqLywKKwkJCQk0MUYwNjZFMjBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0R2xvYmFsT2JqZWN0
LmggKi8sCiAJCQkJRjMzRjAyODExMjA5NDdGMjAwRTU3NDNBIC8qIFNjcmlwdFByb2ZpbGUuY3Bw
ICovLAogCQkJCTlGNzIzMDRDMTExODRCNDEwMEFEMDEyNiAvKiBTY3JpcHRQcm9maWxlLmggKi8s
CiAJCQkJOUZBMzdFRTMxMTcyRkM4MDAwQzRDRDU1IC8qIFNjcmlwdFByb2ZpbGVOb2RlLmggKi8s
CkBAIC0xOTY3Nyw4ICsxOTY0OSw2IEBACiAJCQkJOTM0Q0MxMDkwRURCMjIzOTAwQTY1OEYyIC8q
IFNjcmlwdFNvdXJjZUNvZGUuaCAqLywKIAkJCQk0MTI3RDUzNjBGOEFBQjFEMDBFNDI0RjUgLyog
U2NyaXB0U3RhdGUuY3BwICovLAogCQkJCTQxQzc2MEIwMEVERTAzRDMwMEMxNjU1RiAvKiBTY3Jp
cHRTdGF0ZS5oICovLAotCQkJCTkzNENDMERGMEVEMzlENkYwMEE2NThGMiAvKiBTY3JpcHRWYWx1
ZS5jcHAgKi8sCi0JCQkJOTM0Q0MwRTAwRUQzOUQ2RjAwQTY1OEYyIC8qIFNjcmlwdFZhbHVlLmgg
Ki8sCiAJCQkJMjI4QzI4NDQxMEQ4MjUwMDAwOUQwRDBFIC8qIFNjcmlwdFdyYXBwYWJsZS5oICov
LAogCQkJCTE0MDBEN0E3MTcxMzZFQTcwMDc3Q0UwNSAvKiBTY3JpcHRXcmFwcGFibGVJbmxpbmVz
LmggKi8sCiAJCQkJQTc1RTQ5NzUxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAgKi8sCkBAIC0yMjEyMSw3ICsyMjA5MSw2IEBACiAJCQkJMjlBODEyM0YwRkJCOUMx
RDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMjlBODEyMzEwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlUYWJs
ZVJvdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjVEMzFERkIxMUNGNjEwQjAwOUYyMkI0IC8qIEFj
dGl2ZURPTUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNTU2QzI4OTE4MzIwNkE4MDA4
Q0I3MjAgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFD
NERFNjkwRUE3NUMxRTAwMjNDQ0Q2IC8qIEFjdGl2ZURPTU9iamVjdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNGN0U0OTExMzdDRDdDNzAwMUREQUU3IC8qIEFkanVzdFZpZXdTaXplT3JOb3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTg0RDBDNDA2MTExNUYxRUEwMDE4QUEzNCAvKiBBZmZpbmVUcmFu
c2Zvcm0uaCBpbiBIZWFkZXJzICovLApAQCAtMjI0MjUsNyArMjIzOTQsNiBAQAogCQkJCUE4MEU2
RDAxMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NJbmhlcml0ZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTgwRTZEMDgwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU0luaXRpYWxWYWx1ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM3NzJFMTMxMzMxNjIwQzAwMUVDOUNFIC8qIENTU0xpbmVCb3hDb250
YWluVmFsdWUuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1QUM0QUYwMTgzMzY5NzUwMDcxMTRFMCAv
KiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZE
MDMwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU01lZGlhUnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Rjk4RkZGNDUxMUEyNjc2MjAwRjU0OEU4IC8qIENTU09NVXRpbHMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE4MEU2RDAwMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQYWdlUnVsZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yMzM4OCw3ICsyMzM1Niw2IEBACiAJCQkJNEYyRDIwNTQxMkVBRTdCMzAwNUMyODc0
IC8qIEluc3BlY3RvckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCODg1RThENTExRTA2REQy
MDA5RkZCRjQgLyogSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk0RjcwN0E5QTExRUY2Nzk0MDBBQ0RBNjkgLyogSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXJzLmggaW4gSGVhZGVycyAqLywKLQkJCQk3QUE1MUI2RTE0ODNCNjE2MDBBRDI3NTIgLyog
SW5zcGVjdG9yQmFzZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBQUQ3NjZFQzE1N0U1MDJG
MDBFODU0MjMgLyogSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUFB
RDc2NkVEMTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JDYW52YXNJbnN0cnVtZW50YXRpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTFDODFCOTVDMEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0
b3JDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjM0MjgsNyArMjMzOTUsNiBAQAogCQkJCTgy
ODg5QjREMTNDNjIzOTIwMDlBNjE1NiAvKiBJbnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTc1NDEzM0E4MTAyRTAwRTgwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1l
bGluZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzhEQTIwRjE1MjBFQkEzMDA2MTQxQzEg
LyogSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTRGMzI4OUI2MTFB
NDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUYz
ODEwQzFDMTM2NUE0OTYwMEVENkUzMyAvKiBJbnNwZWN0b3JXb3JrZXJBZ2VudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDc4RTA5MjkxN0QxNEQxQzAwNDIwQUExIC8qIFJUQ1N0YXRzQ2FsbGJhY2su
aCBpbiBIZWFkZXJzICovLAogCQkJCUYzNzVDQzA3MTE1MEQzMDAwMDhEREI4MSAvKiBJbnNwZWN0
b3JXb3JrZXJSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDU0OCw5ICsyNDUxNCw4IEBA
CiAJCQkJMDhBNDg0NzgwRTUyNzJDNTAwQzNGRTc2IC8qIFNjcmlwdEVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUUxMUM5RDlCMEVCMzY4MTIwMEU0MDlEQiAvKiBTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREQ3MDg5NzE4MzU5RjZGMDAyQjNEQzYgLyog
U2FtcGxlTWFwLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTAwMkNDRDBGNjZFREVGMDA5RTY2MEQg
LyogU2NyaXB0RnVuY3Rpb25DYWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5RjNCOTQ3RTEyMjQx
NzU4MDA1MzA0RTcgLyogU2NyaXB0SGVhcFNuYXBzaG90LmggaW4gSGVhZGVycyAqLywKLQkJCQk0
MUYwNjZFNDBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0T2JqZWN0LmggaW4gSGVhZGVycyAqLywK
KwkJCQk0MUYwNjZFNDBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0R2xvYmFsT2JqZWN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRDMxNjAzNjEyQjAyNjc2MDBDMUEzNTkgLyogU2NyaXB0UHJvY2Vz
c29yTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUY3MjMwNEYxMTE4NEI0MTAwQUQwMTI2IC8q
IFNjcmlwdFByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTlGQTM3RUU0MTE3MkZDODAwMEM0
Q0Q1NSAvKiBTY3JpcHRQcm9maWxlTm9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDU1OCw3ICsy
NDUyMyw2IEBACiAJCQkJOEE0MTNBRTAxMjA3QkJBNTAwODIwMTZFIC8qIFNjcmlwdFJ1bm5lci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTM0Q0MxMEEwRURCMjIzOTAwQTY1OEYyIC8qIFNjcmlwdFNv
dXJjZUNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQzc2MEIxMEVERTAzRDMwMEMxNjU1RiAv
KiBTY3JpcHRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJOTM0Q0MwRTIwRUQzOUQ2RjAwQTY1
OEYyIC8qIFNjcmlwdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyMjhDMjg0NTEwRDgyNTAw
MDA5RDBEMEUgLyogU2NyaXB0V3JhcHBhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDAwRDdB
ODE3MTM2RUE3MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkM4QUUzNEYxMkVBMDk2QTAwRUIzQUU2IC8qIFNjcm9sbGFibGVBcmVhLmggaW4g
SGVhZGVycyAqLywKQEAgLTI0OTUyLDYgKzI0OTE2LDcgQEAKIAkJCQkwODhBMEUwQTEyNkVGMURC
MDA5NzhGN0EgLyogU1ZHUHJvcGVydHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4MURENDlDMTNC
QTFBNjAwMERDNzYyNyAvKiBTVkdQcm9wZXJ0eUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUI1
N0NCNTJFMTgyQTNFRkMwMDc5QTY0NyAvKiBJbmxpbmVFbGVtZW50Qm94LmggaW4gSGVhZGVycyAq
LywKKwkJCQlBNTkzQ0Y4QjE4NDA1MzUyMDBCRkNFMjcgLyogSW5zcGVjdG9yV2ViQWdlbnRCYXNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODhBMEUwQjEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJv
cGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODhBMEUwQzEyNkVGMURCMDA5NzhG
N0EgLyogU1ZHUHJvcGVydHlUcmFpdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTlBMEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LApAQCAtMjU4MDMsNyArMjU3NjgsNiBAQAogCQkJCTU5QjU5NzczMTEwODY1NkIwMDcxNTlFOCAv
KiBCcmlkZ2VKU0MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjU1QjNEQUYxMjUxRjEyRDAwM0VG
MjY5IC8qIEJ1dHRvbklucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUNGNzBE
N0UyQjgyMDA3QzM5ODMgLyogY19jbGFzcy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBNUFDNEFF
RjE4MzM2OTc1MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUE1NjlDRjkwRDdFMkI4MjAwN0MzOTgzIC8qIGNfaW5zdGFuY2UuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlDRkIwRDdFMkI4MjAwN0MzOTgzIC8qIGNfcnVudGlt
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUNGRDBEN0UyQjgyMDA3QzM5ODMgLyogY191
dGlsaXR5LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjY2ODQsNyArMjY2NDgsNiBAQAogCQkJCTA3
Mjc3RTRFMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5v
ZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzU0MTMzQUExMDJFMDBGNDAwMDc1RDAwIC8qIElu
c3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTczRDEzNDcxNENF
MzlGRjAwNTdBQkNBIC8qIEluc3BlY3RvclR5cGVCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCTRGMzI4OUI1MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRjM4MTBDMUIxMzY1QTQ5NjAwRUQ2RTMzIC8qIEluc3BlY3Rvcldvcmtl
ckFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUYzNTBCNzM1MTNGMTM3N0QwMDg4MEM0MyAv
KiBJbnN0cnVtZW50aW5nQWdlbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNzUzNTYwMEIw
NTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludENHLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjc3ODks
MTQgKzI3NzUyLDEyIEBACiAJCQkJNDk5OEFFRDExM0ZCMjI0RDAwOTBCMUFBIC8qIFNjcmlwdGVk
QW5pbWF0aW9uQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwOEE0ODQ3NzBFNTI3
MkM1MDBDM0ZFNzYgLyogU2NyaXB0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTFD
OURCMDBFQjM2OTk1MDBFNDA5REIgLyogU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQk0MTAwMkNDRTBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25D
YWxsLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQxRjA2NkU1MEY2NEJDRjYwMEEwN0VBQyAvKiBT
Y3JpcHRPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDFGMDY2RTUwRjY0QkNGNjAwQTA3
RUFDIC8qIFNjcmlwdEdsb2JhbE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjAz
NTEyQjAyNjc2MDBDMUEzNTkgLyogU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlGMzNGMDI4MjEyMDk0N0YyMDBFNTc0M0EgLyogU2NyaXB0UHJvZmlsZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk5RjcyMzA1MDExMTg0QjQxMDBBRDAxMjYgLyogU2NyaXB0UHJvZmls
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOEE0MTNBRTExMjA3QkJBNTAwODIwMTZFIC8qIFNj
cmlwdFJ1bm5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTI3RDUzNzBGOEFBQjFEMDBFNDI0
RjUgLyogU2NyaXB0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJOTM0Q0MwRTEwRUQzOUQ2
RjAwQTY1OEYyIC8qIFNjcmlwdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDOEFFMzRF
MTJFQTA5NkEwMEVCM0FFNiAvKiBTY3JvbGxhYmxlQXJlYS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlDQTNCRjY3QzEwRDk5QkFFMDBFNkNFNTMgLyogU2Nyb2xsQW5pbWF0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkM1MTE1NkUxMkIxNzQ5QzAwQzk2NzU0IC8qIFNjcm9sbEFuaW1hdG9yTWFj
Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0yNzg4OCw3ICsyNzg0OSw2IEBACiAJCQkJQUEyQTVBRDUx
NkE0ODYxNDAwOTc1QTI1IC8qIFNwZWVjaFN5bnRoZXNpcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBQTJBNUFEMzE2QTQ4NjBEMDA5NzVBMjUgLyogU3BlZWNoU3ludGhlc2lzRXZlbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQUEyQTVBRDExNkE0ODYwNzAwOTc1QTI1IC8qIFNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBNTU2QzI4ODE4MzIwNkE4MDA4
Q0I3MjAgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
QTJBNUFDRDE2QTQ4NUZBMDA5NzVBMjUgLyogU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTc4RkUxM0IxMjM2NkIxMDAwQUNFOEQwIC8qIFNwZWxsQ2hlY2tlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCOERCREI0RDEzMEIwRjhBMDBGNUNEQjEgLyogU3BlbGxp
bmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0RpY3Rpb25hcnkuaAppbmRleCA5NGRhODc4Li5mZDRiZWU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAi
SlNEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPGJp
bmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBA
IC05Miw3ICs5Miw3IEBAIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gRGljdGlvbmFyeTo6Z2V0
RXZlbnRMaXN0ZW5lcihjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsCiAgICAgaWYgKCFtX2RpY3Rp
b25hcnkuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFNjcmlwdFZhbHVlIGV2
ZW50TGlzdGVuZXI7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZXZlbnRMaXN0ZW5lcjsK
ICAgICBpZiAoIW1fZGljdGlvbmFyeS50cnlHZXRQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIGV2ZW50
TGlzdGVuZXIpKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoZXZlbnRMaXN0ZW5lci5oYXNO
b1ZhbHVlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5k
aW5nVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdV
dGlsaXRpZXMuY3BwCmluZGV4IGI4ZjFiYzguLjdhNzdkYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCkBAIC0xNzgsNyArMTc4
LDcgQEAgc3RhdGljIEpTVmFsdWUgZ2V0TnRoVmFsdWVPbktleVBhdGgoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHJvb3RWYWx1ZSwgY29uc3QgVmUKICAgICByZXR1cm4gY3VycmVudFZhbHVlOwog
fQogCi1zdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1
ZUFuZEtleVBhdGgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNv
bnN0IFN0cmluZyYga2V5UGF0aCkKK3N0YXRpYyBQYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURC
S2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQogewogICAg
IFZlY3RvcjxTdHJpbmc+IGtleVBhdGhFbGVtZW50czsKICAgICBJREJLZXlQYXRoUGFyc2VFcnJv
ciBlcnJvcjsKQEAgLTIyOCw3ICsyMjgsNyBAQCBzdGF0aWMgYm9vbCBjYW5JbmplY3ROdGhWYWx1
ZU9uS2V5UGF0aChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgcm9vdFZhbHVlLCBjb25zdAogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIGluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShET01S
ZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgU2NyaXB0
VmFsdWUmIHZhbHVlLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQorYm9vbCBpbmplY3RJREJL
ZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIFBhc3NSZWZQ
dHI8SURCS2V5PiBrZXksIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgSURC
S2V5UGF0aCYga2V5UGF0aCkKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgImluamVjdElEQktleUlu
dG9TY3JpcHRWYWx1ZSIpOwogCkBAIC0yNTQsNyArMjU0LDcgQEAgYm9vbCBpbmplY3RJREJLZXlJ
bnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIFBhc3NSZWZQdHI8
SURCS2UKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlE
QktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3Rh
dGUsIGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkK
K1Bhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRo
KERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYgdmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCiB7CiAgICAgTE9HKFN0b3Jh
Z2VBUEksICJjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoIik7CiAgICAgQVNT
RVJUKCFrZXlQYXRoLmlzTnVsbCgpKTsKQEAgLTI3Nyw3ICsyNzcsNyBAQCBQYXNzUmVmUHRyPElE
QktleT4gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChET01SZXF1ZXN0U3Rh
dGUqIHJlcXVlcwogICAgIHJldHVybiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQ
YXRoKGV4ZWMsIHZhbHVlLCBrZXlQYXRoLnN0cmluZygpKTsKIH0KIAotYm9vbCBjYW5JbmplY3RJ
REJLZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIGNvbnN0
IFNjcmlwdFZhbHVlJiBzY3JpcHRWYWx1ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKK2Jv
b2wgY2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVz
dFN0YXRlLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgc2NyaXB0VmFsdWUsIGNvbnN0
IElEQktleVBhdGgmIGtleVBhdGgpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJjYW5JbmplY3RJ
REJLZXlJbnRvU2NyaXB0VmFsdWUiKTsKIApAQCAtMjk0LDE2ICsyOTQsMTYgQEAgYm9vbCBjYW5J
bmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUs
IGNvbnN0IFNjcmlwdFYKICAgICByZXR1cm4gY2FuSW5qZWN0TnRoVmFsdWVPbktleVBhdGgoZXhl
Yywgc2NyaXB0VmFsdWUuanNWYWx1ZSgpLCBrZXlQYXRoRWxlbWVudHMsIGtleVBhdGhFbGVtZW50
cy5zaXplKCkgLSAxKTsKIH0KIAotU2NyaXB0VmFsdWUgZGVzZXJpYWxpemVJREJWYWx1ZShET01S
ZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IHBycFZhbHVlKQorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZGVzZXJpYWxpemVJREJWYWx1
ZShET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHBycFZhbHVlKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHJlcXVlc3RTdGF0
ZS0+ZXhlYygpOwogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRW
YWx1ZSA9IHBycFZhbHVlOwogICAgIGlmIChzZXJpYWxpemVkVmFsdWUpCi0gICAgICAgIHJldHVy
biBTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoZXhlYywgc2VyaWFsaXplZFZhbHVlLmdldCgpLCBO
b25UaHJvd2luZyk7Ci0gICAgcmV0dXJuIFNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIGpzTnVsbCgp
KTsKKyAgICAgICAgcmV0dXJuIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoZXhl
Yywgc2VyaWFsaXplZFZhbHVlLmdldCgpLCBOb25UaHJvd2luZyk7CisgICAgcmV0dXJuIERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIGpzTnVsbCgpKTsKIH0KIAotU2NyaXB0VmFs
dWUgZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0
ZSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHBycEJ1ZmZlcikKK0RlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0
U3RhdGUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBwcnBCdWZmZXIpCiB7CiAgICAgRXhlY1N0
YXRlKiBleGVjID0gcmVxdWVzdFN0YXRlLT5leGVjKCk7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gcHJwQnVmZmVyOwpAQCAtMzEyLDE4ICszMTIsMTggQEAgU2NyaXB0VmFsdWUg
ZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwg
UGFzc1JlZlB0cjwKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZhbHVlOwogICAgICAgICB2YWx1
ZS5hcHBlbmQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpjcmVhdGVGcm9tV2lyZUJ5dGVzKHZhbHVlKTsKLSAgICAgICAgcmV0dXJuIFNjcmlw
dFZhbHVlOjpkZXNlcmlhbGl6ZShleGVjLCBzZXJpYWxpemVkVmFsdWUuZ2V0KCksIE5vblRocm93
aW5nKTsKKyAgICAgICAgcmV0dXJuIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUo
ZXhlYywgc2VyaWFsaXplZFZhbHVlLmdldCgpLCBOb25UaHJvd2luZyk7CiAgICAgfQotICAgIHJl
dHVybiBTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBqc051bGwoKSk7CisgICAgcmV0dXJuIERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIGpzTnVsbCgpKTsKIH0KIAotU2NyaXB0VmFs
dWUgaWRiS2V5VG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgUGFz
c1JlZlB0cjxJREJLZXk+IGtleSkKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGlkYktleVRvU2Ny
aXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIFBhc3NSZWZQdHI8SURCS2V5
PiBrZXkpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gcmVxdWVzdFN0YXRlLT5leGVjKCk7Ci0g
ICAgcmV0dXJuIFNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIGlkYktleVRvSlNWYWx1ZShleGVjLCBq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBr
ZXkuZ2V0KCkpKTsKKyAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoZXhlYy0+dm0o
KSwgaWRiS2V5VG9KU1ZhbHVlKGV4ZWMsIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSksIGtleS5nZXQoKSkpOwogfQogCi1QYXNzUmVmUHRyPElE
QktleT4gc2NyaXB0VmFsdWVUb0lEQktleShET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwg
Y29uc3QgU2NyaXB0VmFsdWUmIHNjcmlwdFZhbHVlKQorUGFzc1JlZlB0cjxJREJLZXk+IHNjcmlw
dFZhbHVlVG9JREJLZXkoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIGNvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJiBzY3JpcHRWYWx1ZSkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMg
PSByZXF1ZXN0U3RhdGUtPmV4ZWMoKTsKICAgICByZXR1cm4gY3JlYXRlSURCS2V5RnJvbVZhbHVl
KGV4ZWMsIHNjcmlwdFZhbHVlLmpzVmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgKaW5kZXggOTA4YzdmZC4uZjAxMmFlZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaApA
QCAtMjksNyArMjksNyBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVk
ZSAiRGljdGlvbmFyeS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8Ymlu
ZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC00MSwxMyArNDEsMTMgQEAgY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBJ
REJLZXlQYXRoIGlkYktleVBhdGhGcm9tVmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFs
dWUpOwogCi1ib29sIGluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUq
LCBQYXNzUmVmUHRyPElEQktleT4sIFNjcmlwdFZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOwot
UGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgo
RE9NUmVxdWVzdFN0YXRlKiwgY29uc3QgU2NyaXB0VmFsdWUmLCBjb25zdCBJREJLZXlQYXRoJik7
Ci1ib29sIGNhbkluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqLCBj
b25zdCBTY3JpcHRWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsKLVNjcmlwdFZhbHVlIGRlc2Vy
aWFsaXplSURCVmFsdWUoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+KTsKLVNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIoRE9NUmVx
dWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KTsKLVNjcmlwdFZhbHVlIGlkYktl
eVRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxJREJLZXk+KTsKLVBh
c3NSZWZQdHI8SURCS2V5PiBzY3JpcHRWYWx1ZVRvSURCS2V5KERPTVJlcXVlc3RTdGF0ZSosIGNv
bnN0IFNjcmlwdFZhbHVlJik7Citib29sIGluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShET01S
ZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPElEQktleT4sIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
JiwgY29uc3QgSURCS2V5UGF0aCYpOworUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZy
b21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoRE9NUmVxdWVzdFN0YXRlKiwgY29uc3QgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUmLCBjb25zdCBJREJLZXlQYXRoJik7Citib29sIGNhbkluamVjdElEQktl
eUludG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqLCBjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRl
c2VyaWFsaXplSURCVmFsdWUoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+KTsKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFs
dWVCdWZmZXIoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KTsKK0Rl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGlkYktleVRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRl
KiwgUGFzc1JlZlB0cjxJREJLZXk+KTsKK1Bhc3NSZWZQdHI8SURCS2V5PiBzY3JpcHRWYWx1ZVRv
SURCS2V5KERPTVJlcXVlc3RTdGF0ZSosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJik7
CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5n
c0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJ
bk9uZS5jcHAKaW5kZXggNTc3OTg5YS4uYTMwZjc5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCkBAIC0xNDksNyArMTQ5LDYgQEAK
ICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcCIKICNpbmNsdWRlICJTY3JpcHRD
b250cm9sbGVyLmNwcCIKICNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5jcHAiCi0jaW5jbHVk
ZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlci5jcHAi
CiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuY3BwIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rp
b25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcApp
bmRleCA3ZWRiMWQ1Li40YzI4ODI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RGljdGlvbmFyeS5jcHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJKU1N0b3JhZ2UuaCIK
ICNpbmNsdWRlICJKU1RyYWNrQ3VzdG9tLmgiCiAjaW5jbHVkZSAiSlNWb2lkQ2FsbGJhY2suaCIK
LSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNUeXBlZEFycmF5cy5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CkBAIC0xNDQsOSArMTQzLDkgQEAgdm9pZCBKU0RpY3Rpb25hcnk6OmNvbnZlcnRW
YWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFZlY3RvcjxTdHJpbmc+JgogICAg
IH0KIH0KIAotdm9pZCBKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgdmFsdWUsIFNjcmlwdFZhbHVlJiByZXN1bHQpCit2b2lkIEpTRGljdGlvbmFyeTo6
Y29udmVydFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUmIHJlc3VsdCkKIHsKLSAgICByZXN1bHQgPSBTY3JpcHRWYWx1ZShleGVjLT52
bSgpLCB2YWx1ZSk7CisgICAgcmVzdWx0ID0gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoZXhlYy0+
dm0oKSwgdmFsdWUpOwogfQogCiB2b2lkIEpTRGljdGlvbmFyeTo6Y29udmVydFZhbHVlKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4m
IHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlv
bmFyeS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmgKaW5kZXgg
YTI5MDU2Zi4uM2E4ZTJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNEaWN0aW9uYXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9u
YXJ5LmgKQEAgLTM0LDYgKzM0LDEwIEBACiAjaW5jbHVkZSA8cnVudGltZS9VaW50OEFycmF5Lmg+
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAorbmFtZXNwYWNlIERlcHJlY2F0ZWQgeworY2xh
c3MgU2NyaXB0VmFsdWU7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXJyYXlW
YWx1ZTsKQEAgLTQ2LDcgKzUwLDYgQEAgY2xhc3MgTWVkaWFLZXlFcnJvcjsKIGNsYXNzIE1lZGlh
U3RyZWFtOwogY2xhc3MgTWVkaWFTdHJlYW1UcmFjazsKIGNsYXNzIE5vZGU7Ci1jbGFzcyBTY3Jp
cHRWYWx1ZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIGNsYXNzIFN0b3JhZ2U7CiBj
bGFzcyBUcmFja0Jhc2U7CkBAIC0xMDgsNyArMTExLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
dm9pZCBjb252ZXJ0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGRvdWJsZSYg
cmVzdWx0KTsKICAgICBzdGF0aWMgdm9pZCBjb252ZXJ0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTVmFsdWUsIERpY3Rpb25hcnkmIHJlc3VsdCk7CiAgICAgc3RhdGljIHZvaWQgY29udmVy
dFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBTdHJpbmcmIHJlc3VsdCk7Ci0g
ICAgc3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVl
LCBTY3JpcHRWYWx1ZSYgcmVzdWx0KTsKKyAgICBzdGF0aWMgdm9pZCBjb252ZXJ0VmFsdWUoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiByZXN1
bHQpOwogICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
SlNWYWx1ZSwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCk7CiAgICAgc3RhdGljIHZvaWQgY29udmVy
dFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiYgcmVzdWx0KTsKICAgICBzdGF0aWMgdm9pZCBjb252ZXJ0VmFsdWUoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIFJlZlB0cjxET01XaW5kb3c+JiByZXN1bHQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50
Q3VzdG9tLmNwcAppbmRleCBmZTZjOGJhLi43YWQzNmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcApAQCAt
MzEsMTMgKzMxLDE0IEBACiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JDYW52YXNJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJKU0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUg
PGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKwogI2lm
IEVOQUJMRShXRUJHTCkKICNpbmNsdWRlICJKU0RpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJKU1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYkdMQ29udGV4dEF0dHJpYnV0ZXMu
aCIKICNlbmRpZgotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIApAQCAtODUsOCArODYsOCBAQCBKU1ZhbHVlIEpTSFRNTENhbnZhc0VsZW1lbnQ6OmdldENv
bnRleHQoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAgICAgSlNW
YWx1ZSBqc1ZhbHVlID0gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoY29u
dGV4dCkpOwogICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNhbnZhc0FnZW50RW5h
YmxlZCgmY2FudmFzLmRvY3VtZW50KCkpKSB7Ci0gICAgICAgIFNjcmlwdE9iamVjdCBjb250ZXh0
T2JqZWN0KGV4ZWMsIGpzVmFsdWUuZ2V0T2JqZWN0KCkpOwotICAgICAgICBTY3JpcHRPYmplY3Qg
d3JhcHBlZDsKKyAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IGNvbnRleHRPYmplY3Qo
ZXhlYywganNWYWx1ZS5nZXRPYmplY3QoKSk7CisgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9i
amVjdCB3cmFwcGVkOwogICAgICAgICBpZiAoY29udGV4dC0+aXMyZCgpKQogICAgICAgICAgICAg
d3JhcHBlZCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d3JhcENhbnZhczJEUmVuZGVyaW5n
Q29udGV4dEZvckluc3RydW1lbnRhdGlvbigmY2FudmFzLmRvY3VtZW50KCksIGNvbnRleHRPYmpl
Y3QpOwogI2lmIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAppbmRleCA2OTk5ZmJlLi4w
YjQ1MjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVk
U2NyaXB0SG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJ
bmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCkBAIC00NCwxNSArNDQsMTUgQEAKICNpbmNsdWRl
ICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgog
I2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JW
YWx1ZXMuaCIKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJKU0hUTUxB
bGxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSlNIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUg
IkpTTm9kZS5oIgogI2luY2x1ZGUgIkpTTm9kZUxpc3QuaCIKICNpbmNsdWRlICJKU1N0b3JhZ2Uu
aCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlN0b3JhZ2UuaCIKKyNpbmNs
dWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0
b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDxwYXJzZXIvU291cmNlQ29kZS5oPgogI2luY2x1ZGUgPHJ1
bnRpbWUvRGF0ZUluc3RhbmNlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgpAQCAtNjks
MjAgKzY5LDIwIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotTm9kZSogSW5qZWN0ZWRTY3JpcHRIb3N0OjpzY3JpcHRWYWx1ZUFzTm9kZShTY3JpcHRWYWx1
ZSB2YWx1ZSkKK05vZGUqIEluamVjdGVkU2NyaXB0SG9zdDo6c2NyaXB0VmFsdWVBc05vZGUoRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgp
IHx8IHZhbHVlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gdG9Ob2Rl
KHZhbHVlLmpzVmFsdWUoKSk7CiB9CiAKLVNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0SG9zdDo6
bm9kZUFzU2NyaXB0VmFsdWUoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBOb2RlKiBub2RlKQorRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHRIb3N0Ojpub2RlQXNTY3JpcHRWYWx1
ZShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFzaG91bGRB
bGxvd0FjY2Vzc1RvTm9kZShzdGF0ZSwgbm9kZSkpCi0gICAgICAgIHJldHVybiBTY3JpcHRWYWx1
ZShzdGF0ZS0+dm0oKSwganNOdWxsKCkpOworICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUoc3RhdGUtPnZtKCksIGpzTnVsbCgpKTsKIAogICAgIEpTTG9ja0hvbGRlciBsb2Nr
KHN0YXRlKTsKLSAgICByZXR1cm4gU2NyaXB0VmFsdWUoc3RhdGUtPnZtKCksIHRvSlMoc3RhdGUs
IGRlcHJlY2F0ZWRHbG9iYWxPYmplY3RGb3JQcm90b3R5cGUoc3RhdGUpLCBub2RlKSk7CisgICAg
cmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKHN0YXRlLT52bSgpLCB0b0pTKHN0YXRlLCBk
ZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBlKHN0YXRlKSwgbm9kZSkpOwogfQogCiBK
U1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0ZWRPYmplY3QoRXhlY1N0YXRlKiBl
eGVjKQpAQCAtOTUsNyArOTUsNyBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNw
ZWN0ZWRPYmplY3QoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgIFNjcmlwdFZhbHVlIHNjcmlw
dFZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYyk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUg
c2NyaXB0VmFsdWUgPSBvYmplY3QtPmdldChleGVjKTsKICAgICBpZiAoc2NyaXB0VmFsdWUuaGFz
Tm9WYWx1ZSgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIApAQCAtMjQ3LDggKzI0
Nyw4IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OmdldEV2ZW50TGlzdGVuZXJzKEV4
ZWNTdGF0ZSogZXhlYykKIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6Omluc3BlY3QoRXhl
Y1N0YXRlKiBleGVjKQogewogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPj0gMikgewot
ICAgICAgICBTY3JpcHRWYWx1ZSBvYmplY3QoZXhlYy0+dm0oKSwgZXhlYy0+dW5jaGVja2VkQXJn
dW1lbnQoMCkpOwotICAgICAgICBTY3JpcHRWYWx1ZSBoaW50cyhleGVjLT52bSgpLCBleGVjLT51
bmNoZWNrZWRBcmd1bWVudCgxKSk7CisgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG9i
amVjdChleGVjLT52bSgpLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgICAgIERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGhpbnRzKGV4ZWMtPnZtKCksIGV4ZWMtPnVuY2hlY2tlZEFy
Z3VtZW50KDEpKTsKICAgICAgICAgaW1wbCgpLmluc3BlY3RJbXBsKG9iamVjdC50b0luc3BlY3Rv
clZhbHVlKGV4ZWMpLCBoaW50cy50b0luc3BlY3RvclZhbHVlKGV4ZWMpKTsKICAgICB9CiAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggMmRiZTJkZS4uYTZkYTY0MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUgIkpTRE9NV2luZG93Q3Vz
dG9tLmgiCiAjaW5jbHVkZSAiSlNJbmplY3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJKU01h
aW5UaHJlYWRFeGVjU3RhdGUuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRl
IDxiaW5kaW5ncy9TY3JpcHRPYmplY3QuaD4KICNpbmNsdWRlIDxwYXJzZXIvU291cmNlQ29kZS5o
PgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAKQEAgLTQ5LDcgKzQ5LDcgQEAgdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TY3JpcHRPYmplY3QgSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNv
dXJjZSwgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBpbnQgaWQpCitEZXByZWNhdGVkOjpT
Y3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdChj
b25zdCBTdHJpbmcmIHNvdXJjZSwgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBpbnQgaWQp
CiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soc2NyaXB0U3RhdGUpOwogCkBAIC02NiwxMyArNjYs
MTMgQEAgU2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRT
Y3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEoKICAgICAgICAgZXZhbHVhdGlvblJldHVyblZh
bHVlID0gSlNDOjpldmFsdWF0ZShzY3JpcHRTdGF0ZSwgc291cmNlQ29kZSwgZ2xvYmFsVGhpc1Zh
bHVlLCAmZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAgICAgfQogICAgIGlmIChldmFsdWF0aW9uRXhj
ZXB0aW9uKQotICAgICAgICByZXR1cm4gU2NyaXB0T2JqZWN0KCk7CisgICAgICAgIHJldHVybiBE
ZXByZWNhdGVkOjpTY3JpcHRPYmplY3QoKTsKIAogICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9
IGV2YWx1YXRpb25SZXR1cm5WYWx1ZTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxs
VHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uVmFsdWUsIGNhbGxEYXRhKTsKICAg
ICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQotICAgICAgICByZXR1cm4gU2NyaXB0T2Jq
ZWN0KCk7CisgICAgICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QoKTsKIAogICAg
IE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgYXJncy5hcHBlbmQodG9KUyhzY3JpcHRT
dGF0ZSwgZ2xvYmFsT2JqZWN0LCBtX2luamVjdGVkU2NyaXB0SG9zdC5nZXQoKSkpOwpAQCAtODEs
OCArODEsOCBAQCBTY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmpl
Y3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgSgogCiAgICAgSlNWYWx1ZSByZXN1bHQg
PSBKU0M6OmNhbGwoc2NyaXB0U3RhdGUsIGZ1bmN0aW9uVmFsdWUsIGNhbGxUeXBlLCBjYWxsRGF0
YSwgZ2xvYmFsVGhpc1ZhbHVlLCBhcmdzKTsKICAgICBpZiAocmVzdWx0LmlzT2JqZWN0KCkpCi0g
ICAgICAgIHJldHVybiBTY3JpcHRPYmplY3Qoc2NyaXB0U3RhdGUsIHJlc3VsdC5nZXRPYmplY3Qo
KSk7Ci0gICAgcmV0dXJuIFNjcmlwdE9iamVjdCgpOworICAgICAgICByZXR1cm4gRGVwcmVjYXRl
ZDo6U2NyaXB0T2JqZWN0KHNjcmlwdFN0YXRlLCByZXN1bHQuZ2V0T2JqZWN0KCkpOworICAgIHJl
dHVybiBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QoKTsKIH0KIAogYm9vbCBJbmplY3RlZFNjcmlw
dE1hbmFnZXI6OmNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdyhKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0
U3RhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJl
YWRFeGVjU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFk
RXhlY1N0YXRlLmNwcAppbmRleCA0MjkzYTQ2Li5hNThjOGY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAKQEAgLTQ2LDQg
KzQ2LDEyIEBAIHZvaWQgSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpkaWRMZWF2ZVNjcmlwdENvbnRl
eHQoKQogICAgIE11dGF0aW9uT2JzZXJ2ZXI6OmRlbGl2ZXJBbGxNdXRhdGlvbnMoKTsKIH0KIAor
SlNDOjpKU1ZhbHVlIGZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKEpTQzo6RXhlY1N0
YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIEpTQzo6Q2FsbFR5cGUgY2Fs
bFR5cGUsIGNvbnN0IEpTQzo6Q2FsbERhdGEmIGNhbGxEYXRhLCBKU0M6OkpTVmFsdWUgdGhpc1Zh
bHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MpCit7CisgICAgaWYgKGlzTWFpblRocmVhZCgp
KQorICAgICAgICByZXR1cm4gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGZ1bmN0
aW9uT2JqZWN0LCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7CisgICAgZWxz
ZQorICAgICAgICByZXR1cm4gSlNDOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsVHlw
ZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4
ZWNTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0
YXRlLmgKaW5kZXggMzNiN2JkOS4uMmZhNjYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgKQEAgLTI4LDkgKzI4LDcgQEAKIAog
I2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvQ29tcGxldGlvbi5o
PgotI2lmbmRlZiBOREVCVUcKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2VuZGlmCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDIsNyArNDAsNyBAQCBjbGFzcyBKU01haW5UaHJl
YWRFeGVjU3RhdGUgewogICAgIGZyaWVuZCBjbGFzcyBKU01haW5UaHJlYWROdWxsU3RhdGU7CiBw
dWJsaWM6CiAgICAgc3RhdGljIEpTQzo6RXhlY1N0YXRlKiBjdXJyZW50U3RhdGUoKQotICAgIHsg
CisgICAgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICByZXR1cm4g
c19tYWluVGhyZWFkU3RhdGU7CiAgICAgfTsKQEAgLTUzLDggKzUxLDYgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gSlNDOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsVHlwZSwgY2Fs
bERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7CiAgICAgfTsKIAotICAgIHN0YXRpYyBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgaW5zdHJ1bWVudEZ1bmN0aW9uQ2FsbChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgSlNDOjpDYWxsVHlwZSwgY29uc3QgSlNDOjpDYWxsRGF0YSYpOwotCiAgICAg
c3RhdGljIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SlNDOjpTb3VyY2VDb2RlJiBzb3VyY2UsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIEpTQzo6SlNW
YWx1ZSogZXhjZXB0aW9uKQogICAgIHsKICAgICAgICAgSlNNYWluVGhyZWFkRXhlY1N0YXRlIGN1
cnJlbnRTdGF0ZShleGVjKTsKQEAgLTYyLDYgKzU4LDggQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gSlNDOjpldmFsdWF0ZShleGVjLCBzb3VyY2UsIHRoaXNWYWx1ZSwgZXhjZXB0aW9uKTsKICAg
ICB9OwogCisgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBpbnN0cnVt
ZW50RnVuY3Rpb25DYWxsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBKU0M6OkNhbGxUeXBlLCBj
b25zdCBKU0M6OkNhbGxEYXRhJik7CisKICAgICBleHBsaWNpdCBKU01haW5UaHJlYWRFeGVjU3Rh
dGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIDogbV9wcmV2aW91c1N0YXRlKHNfbWFp
blRocmVhZFN0YXRlKQogICAgIHsKQEAgLTExMCw2ICsxMDgsOCBAQCBwcml2YXRlOgogICAgIEpT
Qzo6RXhlY1N0YXRlKiBtX3ByZXZpb3VzU3RhdGU7CiB9OwogCitKU0M6OkpTVmFsdWUgZnVuY3Rp
b25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNW
YWx1ZSBmdW5jdGlvbk9iamVjdCwgSlNDOjpDYWxsVHlwZSBjYWxsVHlwZSwgY29uc3QgSlNDOjpD
YWxsRGF0YSYgY2FsbERhdGEsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJn
TGlzdCYgYXJncyk7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEpTTWFp
blRocmVhZEV4ZWNTdGF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U01lc3NhZ2VFdmVudEN1c3RvbS5jcHAKaW5kZXggMGE5YTRjMS4uYzg0Y2EwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcApA
QCAtNTMsNyArNTMsNyBAQCBKU1ZhbHVlIEpTTWVzc2FnZUV2ZW50OjpkYXRhKEV4ZWNTdGF0ZSog
ZXhlYykgY29uc3QKICAgICBKU1ZhbHVlIHJlc3VsdDsKICAgICBzd2l0Y2ggKGV2ZW50LmRhdGFU
eXBlKCkpIHsKICAgICBjYXNlIE1lc3NhZ2VFdmVudDo6RGF0YVR5cGVTY3JpcHRWYWx1ZTogewot
ICAgICAgICBTY3JpcHRWYWx1ZSBzY3JpcHRWYWx1ZSA9IGV2ZW50LmRhdGFBc1NjcmlwdFZhbHVl
KCk7CisgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHNjcmlwdFZhbHVlID0gZXZlbnQu
ZGF0YUFzU2NyaXB0VmFsdWUoKTsKICAgICAgICAgaWYgKHNjcmlwdFZhbHVlLmhhc05vVmFsdWUo
KSkKICAgICAgICAgICAgIHJlc3VsdCA9IGpzTnVsbCgpOwogICAgICAgICBlbHNlCkBAIC0xMDUs
NyArMTA1LDcgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBoYW5kbGVJbml0TWVzc2FnZUV2ZW50KEpT
TWVzc2FnZUV2ZW50KiBqc0V2ZW50LCBKU0M6OkV4ZWNTdGEKICAgICAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQot
ICAgIFNjcmlwdFZhbHVlIGRhdGFBcmcgPSBTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBleGVjLT5h
cmd1bWVudCgzKSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZGF0YUFyZyA9IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIGV4ZWMtPmFyZ3VtZW50KDMpKTsKICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAppbmRl
eCAwNmM1MWNhLi45MTczZWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
aGVkdWxlZEFjdGlvbi5jcHAKQEAgLTM3LDkgKzM3LDkgQEAKICNpbmNsdWRlICJTY3JpcHRDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUg
IlNjcmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUg
Ildvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisjaW5jbHVk
ZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgog
CiB1c2luZyBuYW1lc3BhY2UgSlNDOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcAppbmRleCA1ZDY2YzRkLi43ZDY5NWE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0
b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tG
YWN0b3J5LmNwcApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgIlNjcmlwdEFyZ3VtZW50cy5o
IgogI2luY2x1ZGUgIlNjcmlwdENhbGxGcmFtZS5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFj
ay5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0
VmFsdWUuaD4KICNpbmNsdWRlIDxpbnRlcnByZXRlci9DYWxsRnJhbWUuaD4KICNpbmNsdWRlIDxp
bnRlcnByZXRlci9DYWxsRnJhbWVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvU3Rh
Y2tWaXNpdG9yLmg+CkBAIC0xOTksMTAgKzE5OSwxMCBAQCBQYXNzUmVmUHRyPFNjcmlwdENhbGxT
dGFjaz4gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShKU0M6OkV4ZWNTdGF0ZSogZXhl
YwogCiBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gY3JlYXRlU2NyaXB0QXJndW1lbnRzKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBza2lwQXJndW1lbnRDb3VudCkKIHsKLSAgICBW
ZWN0b3I8U2NyaXB0VmFsdWU+IGFyZ3VtZW50czsKKyAgICBWZWN0b3I8RGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWU+IGFyZ3VtZW50czsKICAgICBzaXplX3QgYXJndW1lbnRDb3VudCA9IGV4ZWMtPmFy
Z3VtZW50Q291bnQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gc2tpcEFyZ3VtZW50Q291bnQ7IGkg
PCBhcmd1bWVudENvdW50OyArK2kpCi0gICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoU2NyaXB0VmFs
dWUoZXhlYy0+dm0oKSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkpKTsKKyAgICAgICAgYXJn
dW1lbnRzLmFwcGVuZChEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBleGVjLT51
bmNoZWNrZWRBcmd1bWVudChpKSkpOwogICAgIHJldHVybiBTY3JpcHRBcmd1bWVudHM6OmNyZWF0
ZShleGVjLCBhcmd1bWVudHMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDJjM2VmOTNhZi4uMDA3YjAzMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTQwLDcg
KzQwLDYgQEAKICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0
YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZh
bHVlLmgiCiAjaW5jbHVkZSAiU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAi
U2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdG9yYWdlTmFtZXNwYWNlLmgiCkBAIC00OCw2ICs0Nyw3
IEBACiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgIm5wcnVudGlt
ZV9pbXBsLmgiCiAjaW5jbHVkZSAicnVudGltZV9yb290LmgiCisjaW5jbHVkZSA8YmluZGluZ3Mv
U2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxkZWJ1Z2dlci9EZWJ1Z2dlci5oPgogI2luY2x1ZGUg
PGhlYXAvU3Ryb25nSW5saW5lcy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVh
ZGluZy5oPgpAQCAtMTE3LDcgKzExNyw3IEBAIEpTRE9NV2luZG93U2hlbGwqIFNjcmlwdENvbnRy
b2xsZXI6OmNyZWF0ZVdpbmRvd1NoZWxsKERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiAgICAgcmV0
dXJuIHdpbmRvd1NoZWxsLmdldCgpOwogfQogCi1TY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVy
OjpldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCkKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIFNjcmlwdENvbnRy
b2xsZXI6OmV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2Rl
LCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQogewogICAgIGNvbnN0IFNvdXJjZUNvZGUmIGpzU291
cmNlQ29kZSA9IHNvdXJjZUNvZGUuanNTb3VyY2VDb2RlKCk7CiAgICAgU3RyaW5nIHNvdXJjZVVS
TCA9IGpzU291cmNlQ29kZS5wcm92aWRlcigpLT51cmwoKTsKQEAgLTE0OSwxNCArMTQ5LDE0IEBA
IFNjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3Jp
cHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlCiAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pIHsK
ICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKGV4ZWMsIGV2YWx1YXRpb25FeGNlcHRpb24sIHNvdXJj
ZUNvZGUuY2FjaGVkU2NyaXB0KCkpOwogICAgICAgICBtX3NvdXJjZVVSTCA9IHNhdmVkU291cmNl
VVJMOwotICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlKCk7CiAgICAgfQogCiAgICAgbV9zb3VyY2VVUkwgPSBzYXZlZFNv
dXJjZVVSTDsKLSAgICByZXR1cm4gU2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwgcmV0dXJuVmFsdWUp
OworICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShleGVjLT52bSgpLCByZXR1cm5W
YWx1ZSk7CiB9CiAKLVNjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0
IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpIAorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUg
U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNl
Q29kZSkgCiB7CiAgICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCBtYWluVGhy
ZWFkTm9ybWFsV29ybGQoKSk7CiB9CkBAIC00NTgsMTMgKzQ1OCwxMyBAQCB2b2lkIFNjcmlwdENv
bnRyb2xsZXI6OmNsZWFyU2NyaXB0T2JqZWN0cygpCiAjZW5kaWYKIH0KIAotU2NyaXB0VmFsdWUg
U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKK0RlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxk
KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNl
VXNlckdlc3R1cmUpCiB7CiAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRv
cihmb3JjZVVzZXJHZXN0dXJlID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6IFBv
c3NpYmx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKICAgICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJj
ZUNvZGUoc2NyaXB0LCBtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpKTsKIAogICAgIGlmICghY2Fu
RXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpIHx8IGlzUGF1c2VkKCkpCi0gICAg
ICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOworICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUoKTsKIAogICAgIHJldHVybiBldmFsdWF0ZUluV29ybGQoc291cmNlQ29kZSwgd29y
bGQpOwogfQpAQCAtNTAwLDE2ICs1MDAsMTYgQEAgYm9vbCBTY3JpcHRDb250cm9sbGVyOjpjYW5F
eGVjdXRlU2NyaXB0cyhSZWFzb25Gb3JDYWxsaW5nQ2FuRXhlY3V0ZVNjcmlwdHMgcmVhc28KICAg
ICByZXR1cm4gbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5hbGxvd1NjcmlwdChtX2ZyYW1lLnNl
dHRpbmdzKCkuaXNTY3JpcHRFbmFibGVkKCkpOwogfQogCi1TY3JpcHRWYWx1ZSBTY3JpcHRDb250
cm9sbGVyOjpleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNl
ckdlc3R1cmUpCitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVj
dXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCiB7
CiAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihmb3JjZVVzZXJHZXN0
dXJlID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6IFBvc3NpYmx5UHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlKTsKICAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdChTY3JpcHRTb3VyY2VDb2Rl
KHNjcmlwdCwgbV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSkpOwogfQogCi1TY3JpcHRWYWx1ZSBT
Y3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNv
dXJjZUNvZGUpCitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVj
dXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCiB7CiAgICAgaWYg
KCFjYW5FeGVjdXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkgfHwgaXNQYXVzZWQoKSkK
LSAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7CisgICAgICAgIHJldHVybiBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSgpOwogCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0KG1fZnJhbWUpOyAvLyBT
Y3JpcHQgZXhlY3V0aW9uIGNhbiBkZXN0cm95IHRoZSBmcmFtZSwgYW5kIHRodXMgdGhlIFNjcmlw
dENvbnRyb2xsZXIuCiAKQEAgLTUzMiw3ICs1MzIsNyBAQCBib29sIFNjcmlwdENvbnRyb2xsZXI6
OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoY29uc3QgVVJMJiB1cmwsIFNob3VsZFJlcGxhY2VEb2N1
bQogICAgIGNvbnN0IGludCBqYXZhc2NyaXB0U2NoZW1lTGVuZ3RoID0gc2l6ZW9mKCJqYXZhc2Ny
aXB0OiIpIC0gMTsKIAogICAgIFN0cmluZyBkZWNvZGVkVVJMID0gZGVjb2RlVVJMRXNjYXBlU2Vx
dWVuY2VzKHVybC5zdHJpbmcoKSk7Ci0gICAgU2NyaXB0VmFsdWUgcmVzdWx0ID0gZXhlY3V0ZVNj
cmlwdChkZWNvZGVkVVJMLnN1YnN0cmluZyhqYXZhc2NyaXB0U2NoZW1lTGVuZ3RoKSk7CisgICAg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgcmVzdWx0ID0gZXhlY3V0ZVNjcmlwdChkZWNvZGVkVVJM
LnN1YnN0cmluZyhqYXZhc2NyaXB0U2NoZW1lTGVuZ3RoKSk7CiAKICAgICAvLyBJZiBleGVjdXRp
bmcgc2NyaXB0IGNhdXNlZCB0aGlzIGZyYW1lIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgcGFnZSwg
d2UKICAgICAvLyBkb24ndCB3YW50IHRvIHRyeSB0byByZXBsYWNlIGl0cyBkb2N1bWVudCEKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAppbmRleCAzNjZi
NzI0Li42N2U5NmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlci5oCkBAIC0zOCw2ICszOCwxMCBAQCBPQkpDX0NMQVNTIEpTQ29udGV4dDsKIAogc3Ry
dWN0IE5QT2JqZWN0OwogCituYW1lc3BhY2UgRGVwcmVjYXRlZCB7CitjbGFzcyBTY3JpcHRWYWx1
ZTsKK30KKwogbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAg
Y2xhc3MgRXhlY1N0YXRlOwpAQCAtNTMsNyArNTcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBIVE1MUGx1Z0luRWxlbWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgU2NyaXB0U291cmNl
Q29kZTsKLWNsYXNzIFNjcmlwdFZhbHVlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBX
aWRnZXQ7CiAKQEAgLTk0LDkgKzk3LDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgZ2V0
QWxsV29ybGRzKFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4mKTsKIAotICAgIFNjcmlwdFZh
bHVlIGV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYpOwotICAgIFNjcmlwdFZh
bHVlIGV4ZWN1dGVTY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2Vz
dHVyZSA9IGZhbHNlKTsKLSAgICBTY3JpcHRWYWx1ZSBleGVjdXRlU2NyaXB0SW5Xb3JsZChET01X
cmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJl
ID0gZmFsc2UpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGV4ZWN1dGVTY3JpcHQoY29u
c3QgU2NyaXB0U291cmNlQ29kZSYpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGV4ZWN1
dGVTY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZh
bHNlKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBleGVjdXRlU2NyaXB0SW5Xb3JsZChE
T01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0
dXJlID0gZmFsc2UpOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGFyZ3VtZW50IGlzIGEgSmF2
YVNjcmlwdCBVUkwuCiAgICAgYm9vbCBleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYs
IFNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCBzaG91bGRSZXBsYWNlRG9jdW1l
bnRJZkphdmFTY3JpcHRVUkwgPSBSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwpOwpAQCAt
MTA1LDggKzEwOCw4IEBAIHB1YmxpYzoKICAgICAvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRv
IHRoaXMgcnVsZTogaXQgaXMgT0sgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20gYW55IHRocmVh
ZCwgZXZlbiByZWVudHJhbnRseS4KICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5n
KCk7CiAKLSAgICBTY3JpcHRWYWx1ZSBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7
Ci0gICAgU2NyaXB0VmFsdWUgZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUm
LCBET01XcmFwcGVyV29ybGQmKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBldmFsdWF0
ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUg
ZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQm
KTsKIAogICAgIFdURjo6VGV4dFBvc2l0aW9uIGV2ZW50SGFuZGxlclBvc2l0aW9uKCkgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2Vy
dmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNw
cAppbmRleCBhZGI1Nzc4Li4yM2Q0YTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC00MSw4ICs0MSw4IEBACiAjaW5jbHVkZSAi
UGFnZUNvbnNvbGUuaCIKICNpbmNsdWRlICJTY3JpcHRCcmVha3BvaW50LmgiCiAjaW5jbHVkZSAi
U2NyaXB0RGVidWdMaXN0ZW5lci5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVk
ZSAiU291bmQuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUg
PGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmg+CiAjaW5jbHVkZSA8cGFyc2VyL1NvdXJjZVBy
b3ZpZGVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KQEAgLTEzMCwxNCArMTMwLDE0
IEBAIGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OmNhblNldFNjcmlwdFNvdXJjZSgpCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1ib29sIFNjcmlwdERlYnVnU2VydmVyOjpzZXRTY3JpcHRTb3VyY2Uo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgYm9vbCwgU3RyaW5nKiwgU2NyaXB0VmFsdWUq
LCBTY3JpcHRPYmplY3QqKQorYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0U291cmNl
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGJvb2wsIFN0cmluZyosIERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlKiwgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KikKIHsKICAgICAvLyBGSVhN
RSg0MDMwMCk6IGltcGxlbWVudCB0aGlzLgogICAgIHJldHVybiBmYWxzZTsKIH0KIAogCi12b2lk
IFNjcmlwdERlYnVnU2VydmVyOjp1cGRhdGVDYWxsU3RhY2soU2NyaXB0VmFsdWUqKQordm9pZCBT
Y3JpcHREZWJ1Z1NlcnZlcjo6dXBkYXRlQ2FsbFN0YWNrKERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
KikKIHsKICAgICAvLyBUaGlzIG1ldGhvZCBpcyB1c2VkIGZvciByZXN0YXJ0IGZyYW1lIGZlYXR1
cmUgdGhhdCBpcyBub3QgaW1wbGVtZW50ZWQgeWV0LgogICAgIC8vIEZJWE1FKDQwMzAwKTogaW1w
bGVtZW50IHRoaXMuCkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6
ZGlzcGF0Y2hEaWRQYXVzZShTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lcikKICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICBqc0NhbGxGcmFtZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgfQot
ICAgIGxpc3RlbmVyLT5kaWRQYXVzZShzdGF0ZSwgU2NyaXB0VmFsdWUoc3RhdGUtPnZtKCksIGpz
Q2FsbEZyYW1lKSwgU2NyaXB0VmFsdWUoKSk7CisgICAgbGlzdGVuZXItPmRpZFBhdXNlKHN0YXRl
LCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShzdGF0ZS0+dm0oKSwganNDYWxsRnJhbWUpLCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSgpKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlz
cGF0Y2hEaWRDb250aW51ZShTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lcikKQEAgLTMxOSw3
ICszMTksNyBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpjbGVhckNvbXBpbGVkU2NyaXB0cygp
CiAgICAgLy8gRklYTUUoODk2NTIpOiBpbXBsZW1lbnQgdGhpcy4KIH0KIAotdm9pZCBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6cnVuU2NyaXB0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiwgU2Ny
aXB0VmFsdWUqLCBib29sKiwgU3RyaW5nKikKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJ1blNj
cmlwdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYsIERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlKiwgYm9vbCosIFN0cmluZyopCiB7CiAgICAgLy8gRklYTUUoODk2NTIpOiBpbXBsZW1lbnQg
dGhpcy4KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERl
YnVnU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZl
ci5oCmluZGV4IDJmZTlhZGEuLmE3MDE4YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlNj
cmlwdERlYnVnTGlzdGVuZXIuaCIKICNpbmNsdWRlICJTb3VyY2VJRC5oIgogI2luY2x1ZGUgIlRp
bWVyLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0T2JqZWN0Lmg+CiAjaW5jbHVkZSA8ZGVi
dWdnZXIvRGVidWdnZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CkBAIC01MCwxMSArNTEsOCBAQCBjbGFzcyBEZWJ1Z2dlckNhbGxGcmFtZTsK
IGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogY2xhc3MgRXhlY1N0YXRlOwogfQotbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBTY3JpcHREZWJ1Z0xpc3RlbmVyOwotY2xhc3MgU2NyaXB0T2JqZWN0
OwotY2xhc3MgU2NyaXB0VmFsdWU7CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcmlw
dERlYnVnU2VydmVyIDogcHVibGljIEpTQzo6RGVidWdnZXIgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFNjcmlwdERlYnVnU2VydmVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC02
NCw4ICs2Miw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyQnJlYWtwb2ludHMoKTsKIAogICAg
IGJvb2wgY2FuU2V0U2NyaXB0U291cmNlKCk7Ci0gICAgYm9vbCBzZXRTY3JpcHRTb3VyY2UoY29u
c3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBib29sIHByZXZp
ZXcsIFN0cmluZyogZXJyb3IsIFNjcmlwdFZhbHVlKiBuZXdDYWxsRnJhbWVzLCBTY3JpcHRPYmpl
Y3QqIHJlc3VsdCk7Ci0gICAgdm9pZCB1cGRhdGVDYWxsU3RhY2soU2NyaXB0VmFsdWUqIGNhbGxG
cmFtZSk7CisgICAgYm9vbCBzZXRTY3JpcHRTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwg
Y29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBib29sIHByZXZpZXcsIFN0cmluZyogZXJyb3IsIERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKiBuZXdDYWxsRnJhbWVzLCBEZXByZWNhdGVkOjpTY3JpcHRP
YmplY3QqIHJlc3VsdCk7CisgICAgdm9pZCB1cGRhdGVDYWxsU3RhY2soRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUqIGNhbGxGcmFtZSk7CiAKICAgICBib29sIGNhdXNlc1JlY29tcGlsYXRpb24oKSB7
IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBzdXBwb3J0c1NlcGFyYXRlU2NyaXB0Q29tcGlsYXRp
b25BbmRFeGVjdXRpb24oKSB7IHJldHVybiBmYWxzZTsgfQpAQCAtODIsNyArODAsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGNvbXBpbGVTY3JpcHQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJp
bmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBTdHJpbmcqIHNjcmlwdElE
LCBTdHJpbmcqIGV4Y2VwdGlvbk1lc3NhZ2UpOwogICAgIHZvaWQgY2xlYXJDb21waWxlZFNjcmlw
dHMoKTsKLSAgICB2b2lkIHJ1blNjcmlwdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYg
c2NyaXB0SUQsIFNjcmlwdFZhbHVlKiByZXN1bHQsIGJvb2wqIHdhc1Rocm93biwgU3RyaW5nKiBl
eGNlcHRpb25NZXNzYWdlKTsKKyAgICB2b2lkIHJ1blNjcmlwdChKU0M6OkV4ZWNTdGF0ZSosIGNv
bnN0IFN0cmluZyYgc2NyaXB0SUQsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKiByZXN1bHQsIGJv
b2wqIHdhc1Rocm93biwgU3RyaW5nKiBleGNlcHRpb25NZXNzYWdlKTsKIAogICAgIGNsYXNzIFRh
c2sgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuY3BwCnNpbWlsYXJpdHkgaW5kZXggODYlCnJl
bmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHAKcmVu
YW1lIHRvIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5jcHAK
aW5kZXggMTQyZTcyMy4uYThiNWE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRHbG9iYWxPYmplY3QuY3BwCkBAIC0yOSwxMCArMjksMTAgQEAKICAqLwogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisjaW5jbHVkZSAiU2NyaXB0
R2xvYmFsT2JqZWN0LmgiCiAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLQorI2luY2x1ZGUg
PGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpAQCAtNDMsMTggKzQzLDYgQEAgdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TY3JpcHRPYmplY3Q6OlNjcmlwdE9iamVj
dChKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIEpTT2JqZWN0KiBvYmplY3QpCi0gICAgOiBT
Y3JpcHRWYWx1ZShzY3JpcHRTdGF0ZS0+dm0oKSwgb2JqZWN0KQotICAgICwgbV9zY3JpcHRTdGF0
ZShzY3JpcHRTdGF0ZSkKLXsKLX0KLQotU2NyaXB0T2JqZWN0OjpTY3JpcHRPYmplY3QoSlNDOjpF
eGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcHRWYWx1ZSYgc2NyaXB0VmFsdWUpCi0g
ICAgOiBTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZS0+dm0oKSwgc2NyaXB0VmFsdWUuanNWYWx1ZSgp
KQotICAgICwgbV9zY3JpcHRTdGF0ZShzY3JpcHRTdGF0ZSkKLXsKLX0KLQogc3RhdGljIGJvb2wg
aGFuZGxlRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSkKIHsKICAgICBpZiAo
IXNjcmlwdFN0YXRlLT5oYWRFeGNlcHRpb24oKSkKQEAgLTY0LDcgKzUyLDcgQEAgc3RhdGljIGJv
b2wgaGFuZGxlRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSkKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLWJvb2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQoSlNDOjpFeGVjU3Rh
dGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBTY3JpcHRPYmplY3QmIHZh
bHVlKQorYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OnNldChKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0
U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYg
dmFsdWUpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soc2NyaXB0U3RhdGUpOwogICAgIHNjcmlw
dFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnB1dERpcmVjdChzY3JpcHRTdGF0ZS0+dm0o
KSwgSWRlbnRpZmllcihzY3JpcHRTdGF0ZSwgbmFtZSksIHZhbHVlLmpzT2JqZWN0KCkpOwpAQCAt
ODEsNyArNjksNyBAQCBib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KEpTQzo6RXhlY1N0YXRl
KiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgSW5zcAogfQogI2VuZGlmIC8vIEVOQUJM
RShJTlNQRUNUT1IpCiAKLWJvb2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpnZXQoSlNDOjpFeGVjU3Rh
dGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBTY3JpcHRPYmplY3QmIHZhbHVlKQor
Ym9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OmdldChKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUs
IGNvbnN0IGNoYXIqIG5hbWUsIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgdmFsdWUpCiB7CiAg
ICAgSlNMb2NrSG9sZGVyIGxvY2soc2NyaXB0U3RhdGUpOwogICAgIEpTVmFsdWUganNWYWx1ZSA9
IHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdldChzY3JpcHRTdGF0ZSwgSWRl
bnRpZmllcihzY3JpcHRTdGF0ZSwgbmFtZSkpOwpAQCAtOTEsNyArNzksNyBAQCBib29sIFNjcmlw
dEdsb2JhbE9iamVjdDo6Z2V0KEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hh
ciogbmFtZSwgU2NyaQogICAgIGlmICghanNWYWx1ZS5pc09iamVjdCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICB2YWx1ZSA9IFNjcmlwdE9iamVjdChzY3JpcHRTdGF0ZSwgYXNPYmpl
Y3QoanNWYWx1ZSkpOworICAgIHZhbHVlID0gRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KHNjcmlw
dFN0YXRlLCBhc09iamVjdChqc1ZhbHVlKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5oCnNpbWlsYXJpdHkgaW5k
ZXggNjQlCmNvcHkgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNr
LmgKY29weSB0byBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3Qu
aAppbmRleCBlMGQ3ZmQ1Li5iZTFlYTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0R2xvYmFsT2JqZWN0LmgKQEAgLTEsMTAgKzEsMTAgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KGMpIDIwMDgsIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIAorICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCiAgKiBtZXQ6Ci0gKiAKKyAqCiAgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAogICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgogICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpAQCAtMTQsNyArMTQsNyBAQAogICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwogICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KICAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0gKiAKKyAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiAgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAogICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCkBAIC0yOCw0NSArMjgsNDAgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lm
bmRlZiBTY3JpcHRDYWxsU3RhY2tfaAotI2RlZmluZSBTY3JpcHRDYWxsU3RhY2tfaAorI2lmbmRl
ZiBTY3JpcHRHbG9iYWxPYmplY3RfaAorI2RlZmluZSBTY3JpcHRHbG9iYWxPYmplY3RfaAogCi0j
aWYgRU5BQkxFKElOU1BFQ1RPUikKLSNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgot
I2VuZGlmCituYW1lc3BhY2UgRGVwcmVjYXRlZCB7CitjbGFzcyBTY3JpcHRPYmplY3Q7Cit9CiAK
LSNpbmNsdWRlICJTY3JpcHRDYWxsRnJhbWUuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgot
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorbmFt
ZXNwYWNlIEpTQyB7CitjbGFzcyBFeGVjU3RhdGU7Cit9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgSW5zcGVjdG9yQXJyYXk7CitjbGFzcyBJbmplY3RlZFNjcmlwdEhvc3Q7CitjbGFz
cyBJbnNwZWN0b3JGcm9udGVuZEhvc3Q7CitjbGFzcyBNZWRpYUNvbnRyb2xzSG9zdDsKIAotY2xh
c3MgU2NyaXB0Q2FsbFN0YWNrIDogcHVibGljIFJlZkNvdW50ZWQ8U2NyaXB0Q2FsbFN0YWNrPiB7
CitjbGFzcyBTY3JpcHRHbG9iYWxPYmplY3QgewogcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBz
aXplX3QgbWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSA9IDIwMDsKLSAgICAKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNyZWF0ZShWZWN0b3I8U2NyaXB0Q2FsbEZyYW1l
PiYpOwotCi0gICAgflNjcmlwdENhbGxTdGFjaygpOwotCi0gICAgY29uc3QgU2NyaXB0Q2FsbEZy
YW1lICZhdChzaXplX3QpIGNvbnN0OwotICAgIHNpemVfdCBzaXplKCkgY29uc3Q7Ci0KLSAgICBi
b29sIGlzRXF1YWwoU2NyaXB0Q2FsbFN0YWNrKikgY29uc3Q7Ci0KKyAgICBzdGF0aWMgYm9vbCBz
ZXQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBEZXByZWNhdGVkOjpT
Y3JpcHRPYmplY3QmKTsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIFBhc3NSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDYWxsRnJhbWU+PiBidWlsZElu
c3BlY3RvckFycmF5KCkgY29uc3Q7CisgICAgc3RhdGljIGJvb2wgc2V0KEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgY2hhciogbmFtZSwgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Kik7CisgICAgc3RhdGlj
IGJvb2wgc2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgSW5qZWN0ZWRTY3Jp
cHRIb3N0Kik7CisjZW5kaWYKKyNpZiBFTkFCTEUoTUVESUFfQ09OVFJPTFNfU0NSSVBUKQorICAg
IHN0YXRpYyBib29sIHNldChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIE1lZGlh
Q29udHJvbHNIb3N0Kik7CiAjZW5kaWYKIAorICAgIHN0YXRpYyBib29sIGdldChKU0M6OkV4ZWNT
dGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYpOworICAg
IHN0YXRpYyBib29sIHJlbW92ZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUpOwog
cHJpdmF0ZToKLSAgICBTY3JpcHRDYWxsU3RhY2soVmVjdG9yPFNjcmlwdENhbGxGcmFtZT4mKTsK
LQotICAgIFZlY3RvcjxTY3JpcHRDYWxsRnJhbWU+IG1fZnJhbWVzOworICAgIFNjcmlwdEdsb2Jh
bE9iamVjdCgpIHsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8g
U2NyaXB0Q2FsbFN0YWNrX2gKKyNlbmRpZiAvLyBTY3JpcHRHbG9iYWxPYmplY3RfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggM2ZiZTY3MS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRPYmplY3QuaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJp
YnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFNj
cmlwdE9iamVjdF9oCi0jZGVmaW5lIFNjcmlwdE9iamVjdF9oCi0KLSNpbmNsdWRlICJTY3JpcHRT
dGF0ZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCi0KLSNpbmNsdWRlIDxoZWFwL1N0cm9u
Zy5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3QuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi0gICAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OwotCi0gICAgY2xhc3MgU2NyaXB0
T2JqZWN0IDogcHVibGljIFNjcmlwdFZhbHVlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFNjcmlw
dE9iamVjdChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqKTsKLSAgICAgICAgU2NyaXB0
T2JqZWN0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU2NyaXB0VmFsdWUmKTsKLSAgICAgICAgU2Ny
aXB0T2JqZWN0KCkgOiBtX3NjcmlwdFN0YXRlKDApIHsgfQotICAgICAgICBKU0M6OkpTT2JqZWN0
KiBqc09iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGFzT2JqZWN0KGpzVmFsdWUoKSk7IH0KLSAgICAg
ICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRT
dGF0ZTsgfQotCi0gICAgcHJvdGVjdGVkOgotICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogbV9zY3Jp
cHRTdGF0ZTsKLSAgICB9OwotCi0gICAgY2xhc3MgU2NyaXB0R2xvYmFsT2JqZWN0IHsKLSAgICBw
dWJsaWM6Ci0gICAgICAgIHN0YXRpYyBib29sIHNldChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNo
YXIqIG5hbWUsIGNvbnN0IFNjcmlwdE9iamVjdCYpOwotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0g
ICAgICAgIHN0YXRpYyBib29sIHNldChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUs
IEluc3BlY3RvckZyb250ZW5kSG9zdCopOwotI2VuZGlmCi0gICAgICAgIHN0YXRpYyBib29sIGdl
dChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIFNjcmlwdE9iamVjdCYpOwotICAg
ICAgICBzdGF0aWMgYm9vbCByZW1vdmUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiBuYW1l
KTsKLSAgICBwcml2YXRlOgotICAgICAgICBTY3JpcHRHbG9iYWxPYmplY3QoKSB7IH0KLSAgICB9
OwotCi19Ci0KLSNlbmRpZiAvLyBTY3JpcHRPYmplY3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRQcm9maWxlLmNwcAppbmRleCA0NTA1MGFlLi5hMjIwMzA0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmNwcApAQCAtMzAsOCArMzAs
OCBAQAogCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZS5oIgogCi0jaW5jbHVkZSAiSW5zcGVjdG9y
VmFsdWVzLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9y
L0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHByb2ZpbGVyL1Byb2ZpbGUuaD4KICNpbmNs
dWRlIDxwcm9maWxlci9Qcm9maWxlTm9kZS5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRQcm9maWxlLmgKaW5kZXggODA5NWZlOC4uZjMwNTEyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUuaApAQCAtNDQsOCArNDQsNiBAQCBjbGFzcyBQ
cm9maWxlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsK
LQogY2xhc3MgU2NyaXB0UHJvZmlsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNjcmlwdFByb2ZpbGU+
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTY3JpcHRQcm9maWxlPiBjcmVhdGUo
UGFzc1JlZlB0cjxKU0M6OlByb2ZpbGU+IHByb2ZpbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuY3BwCmluZGV4IGZkZTI3ZDAuLmZjOTM5OGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5jcHAKQEAgLTM1LDgg
KzM1LDkgQEAKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIk1haW5GcmFtZS5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRl
ICJTY3JpcHRTdGF0ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgorI2lu
Y2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8cHJvZmlsZXIvTGVnYWN5
UHJvZmlsZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCkBAIC00NywxMiArNDgsMTIg
QEAgdm9pZCBTY3JpcHRQcm9maWxlcjo6Y29sbGVjdEdhcmJhZ2UoKQogICAgIGdjQ29udHJvbGxl
cigpLmdhcmJhZ2VDb2xsZWN0U29vbigpOwogfQogCi1TY3JpcHRPYmplY3QgU2NyaXB0UHJvZmls
ZXI6Om9iamVjdEJ5SGVhcE9iamVjdElkKHVuc2lnbmVkKQorRGVwcmVjYXRlZDo6U2NyaXB0T2Jq
ZWN0IFNjcmlwdFByb2ZpbGVyOjpvYmplY3RCeUhlYXBPYmplY3RJZCh1bnNpZ25lZCkKIHsKLSAg
ICByZXR1cm4gU2NyaXB0T2JqZWN0KCk7CisgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdE9i
amVjdCgpOwogfQogCi11bnNpZ25lZCBTY3JpcHRQcm9maWxlcjo6Z2V0SGVhcE9iamVjdElkKGNv
bnN0IFNjcmlwdFZhbHVlJikKK3Vuc2lnbmVkIFNjcmlwdFByb2ZpbGVyOjpnZXRIZWFwT2JqZWN0
SWQoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmKQogewogICAgIHJldHVybiAwOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmgKaW5kZXggNzI3YzZl
ZS4uYzJmZGQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
UHJvZmlsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxl
ci5oCkBAIC0yOCwyMCArMjgsMjQgQEAKICNkZWZpbmUgU2NyaXB0UHJvZmlsZXJfaAogCiAjaWYg
RU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisKICNpbmNsdWRlICJTY3JpcHRIZWFwU25hcHNo
b3QuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUu
aCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAKK25hbWVzcGFjZSBEZXByZWNhdGVkIHsKK2NsYXNzIFNjcmlwdE9iamVjdDsKK2NsYXNzIFNj
cmlwdFZhbHVlOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEV4dGVybmFsQXJy
YXlWaXNpdG9yOwogY2xhc3MgRXh0ZXJuYWxTdHJpbmdWaXNpdG9yOwogY2xhc3MgV3JhcHBlZE5v
ZGVWaXNpdG9yOwogY2xhc3MgUGFnZTsKLWNsYXNzIFNjcmlwdE9iamVjdDsKLWNsYXNzIFNjcmlw
dFZhbHVlOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAKIGNsYXNzIFNjcmlwdFByb2ZpbGVy
IHsKQEAgLTU3LDggKzYxLDggQEAgcHVibGljOgogICAgIH07CiAKICAgICBzdGF0aWMgdm9pZCBj
b2xsZWN0R2FyYmFnZSgpOwotICAgIHN0YXRpYyBTY3JpcHRPYmplY3Qgb2JqZWN0QnlIZWFwT2Jq
ZWN0SWQodW5zaWduZWQgaWQpOwotICAgIHN0YXRpYyB1bnNpZ25lZCBnZXRIZWFwT2JqZWN0SWQo
Y29uc3QgU2NyaXB0VmFsdWUmKTsKKyAgICBzdGF0aWMgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0
IG9iamVjdEJ5SGVhcE9iamVjdElkKHVuc2lnbmVkIGlkKTsKKyAgICBzdGF0aWMgdW5zaWduZWQg
Z2V0SGVhcE9iamVjdElkKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJik7CiAgICAgc3Rh
dGljIHZvaWQgc3RhcnQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKICAg
ICBzdGF0aWMgdm9pZCBzdGFydEZvclBhZ2UoUGFnZSosIGNvbnN0IFN0cmluZyYgdGl0bGUpOwog
ICAgIHN0YXRpYyB2b2lkIHN0YXJ0Rm9yV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2Nv
cGUqLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRTdGF0ZS5oCmluZGV4IDM0OWQ5NGEuLjcwZDE0YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0U3RhdGUuaApAQCAtMSwxMSArMSwxMSBAQAogLyoKICAqIENvcHlyaWdodCAo
YykgMjAwOCwgMjAxMSBHb29nbGUgSW5jLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIAor
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQogICogbWV0OgotICogCisgKgogICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKICAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KICAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKQEAgLTE1LDcgKzE1LDcgQEAKICAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKICAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCiAgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICogCisgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwogICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKICAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgpAQCAtMzQsNyArMzQsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNz
IEV4ZWNTdGF0ZTsKLWNsYXNzIEpTR2xvYmFsT2JqZWN0OwogfQogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcAppbmRleCA2Zjg2YzhiLi4xNGFmNDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTQwLDcgKzQw
LDYgQEAKICNpbmNsdWRlICJKU01lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiSlNOYXZpZ2F0b3Iu
aCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgi
CiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0
YS5oIgogI2luY2x1ZGUgPGxpbWl0cz4KQEAgLTIwMDIsMTAgKzIwMDEsMTAgQEAgSlNWYWx1ZSBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2IKIH0KIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi1TY3JpcHRWYWx1ZSBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplRm9ySW5zcGVjdG9yKEpTQzo6RXhlY1N0
YXRlKiBzY3JpcHRTdGF0ZSkKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6ZGVzZXJpYWxpemVGb3JJbnNwZWN0b3IoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0
YXRlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZShzY3JpcHRTdGF0ZSwgc2Ny
aXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgMCk7Ci0gICAgcmV0dXJuIFNjcmlwdFZh
bHVlKHNjcmlwdFN0YXRlLT52bSgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlKHNjcmlwdFN0YXRlLT52bSgpLCB2YWx1ZSk7CiB9CiAjZW5kaWYKIApAQCAtMjA0
OSw2ICsyMDQ4LDIzIEBAIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmJvb2xlYW5WYWx1ZShib29sIHZhbHVlCiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoYnVmZmVyKSk7CiB9CiAKK1Bhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnNlcmlhbGl6ZShj
b25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIEpTQzo6RXhlY1N0YXRlKiBzY3Jp
cHRTdGF0ZSwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCit7CisgICAg
cmV0dXJuIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHNjcmlwdFN0YXRlLCB2YWx1ZS5q
c1ZhbHVlKCksIG51bGxwdHIsIG51bGxwdHIsIHRocm93RXhjZXB0aW9ucyk7Cit9CisKK1Bhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnNlcmlh
bGl6ZShjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIEpTQzo6RXhlY1N0YXRl
KiBzY3JpcHRTdGF0ZSwgTWVzc2FnZVBvcnRBcnJheSogbWVzc2FnZVBvcnRzLCBBcnJheUJ1ZmZl
ckFycmF5KiBhcnJheUJ1ZmZlcnMsIGJvb2wmIGRpZFRocm93KQoreworICAgIFJlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlKHNjcmlwdFN0YXRlLCB2YWx1ZS5qc1ZhbHVlKCksIG1lc3NhZ2VQb3J0cywgYXJy
YXlCdWZmZXJzKTsKKyAgICBkaWRUaHJvdyA9IHNjcmlwdFN0YXRlLT5oYWRFeGNlcHRpb24oKTsK
KyAgICByZXR1cm4gc2VyaWFsaXplZFZhbHVlLnJlbGVhc2UoKTsKK30KKworRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShKU0M6OkV4ZWNT
dGF0ZSogc2NyaXB0U3RhdGUsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUsIFNlcmlhbGl6
YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQoreworICAgIHJldHVybiBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZS0+dm0oKSwgdmFsdWUtPmRlc2VyaWFsaXplKHNjcmlw
dFN0YXRlLCBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAwLCB0aHJvd0V4Y2Vw
dGlvbnMpKTsKK30KKwogdm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om1heWJlVGhyb3dFeGNl
cHRpb25JZlNlcmlhbGl6YXRpb25GYWlsZWQoRXhlY1N0YXRlKiBleGVjLCBTZXJpYWxpemF0aW9u
UmV0dXJuQ29kZSBjb2RlKQogewogICAgIGlmIChjb2RlID09IFN1Y2Nlc3NmdWxseUNvbXBsZXRl
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmgKaW5kZXggNjlkMjVmNi4uODU5ODFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNk
ZWZpbmUgU2VyaWFsaXplZFNjcmlwdFZhbHVlX2gKIAogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgi
CisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxoZWFwL1N0cm9u
Zy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDxydW50aW1l
L0pTQ0pTVmFsdWUuaD4KQEAgLTU3LDcgKzU4LDYgQEAgZW51bSBTZXJpYWxpemF0aW9uUmV0dXJu
Q29kZSB7CiAgICAgCiBlbnVtIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgeyBOb25UaHJvd2luZywg
VGhyb3dpbmcgfTsKIAotY2xhc3MgU2NyaXB0VmFsdWU7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAK
IGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6CkBAIC02Nyw4ICs2Nyw3IEBAIGNsYXNzIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSA6CiAgICAgcHVibGljIFJlZkNvdW50ZWQ8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiB7CiAjZW5kaWYKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwg
TWVzc2FnZVBvcnRBcnJheSosIEFycmF5QnVmZmVyQXJyYXkqLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcmlhbGl6YXRpb25FcnJvck1vZGUg
PSBUaHJvd2luZyk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIE1lc3NhZ2VQb3J0QXJyYXkq
LCBBcnJheUJ1ZmZlckFycmF5KiwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSA9IFRocm93aW5nKTsK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShKU0Nv
bnRleHRSZWYsIEpTVmFsdWVSZWYsIE1lc3NhZ2VQb3J0QXJyYXkqLCBBcnJheUJ1ZmZlckFycmF5
KiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IGNyZWF0ZShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYsIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbik7CiAKQEAgLTgzLDYgKzgyLDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHVuZGVmaW5lZFZhbHVlKCk7CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBib29sZWFuVmFsdWUoYm9v
bCB2YWx1ZSk7CiAKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHNlcmlhbGl6ZShjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIEpTQzo6RXhlY1N0YXRl
KiwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSA9IFRocm93aW5nKTsKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZShjb25zdCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSYsIEpTQzo6RXhlY1N0YXRlKiwgTWVzc2FnZVBvcnRBcnJheSosIEFycmF5QnVm
ZmVyQXJyYXkqLCBib29sJik7CisgICAgc3RhdGljIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRl
c2VyaWFsaXplKEpTQzo6RXhlY1N0YXRlKiwgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgU2VyaWFs
aXphdGlvbkVycm9yTW9kZSA9IFRocm93aW5nKTsKKwogICAgIHN0YXRpYyB1aW50MzJfdCB3aXJl
Rm9ybWF0VmVyc2lvbigpOwogCiAgICAgU3RyaW5nIHRvU3RyaW5nKCk7CkBAIC05Miw3ICs5NSw3
IEBAIHB1YmxpYzoKICAgICBKU1ZhbHVlUmVmIGRlc2VyaWFsaXplKEpTQ29udGV4dFJlZiwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgU2NyaXB0
VmFsdWUgZGVzZXJpYWxpemVGb3JJbnNwZWN0b3IoSlNDOjpFeGVjU3RhdGUqKTsKKyAgICBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUZvckluc3BlY3RvcihKU0M6OkV4ZWNTdGF0
ZSopOwogI2VuZGlmCiAKICAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEoKSBjb25zdCB7
IHJldHVybiBtX2RhdGE7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
V29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggMjkwYjFmMS4uNWRlNjA0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxl
ci5jcHAKQEAgLTMxLDEyICszMSwxMiBAQAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2lu
Y2x1ZGUgIkpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJTY3JpcHRT
b3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJXZWJDb3Jl
SlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRl
ICJXb3JrZXJPYmplY3RQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdERlYnVnU2VydmVy
LmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0
VmFsdWUuaD4KICNpbmNsdWRlIDxoZWFwL1N0cm9uZ0lubGluZXMuaD4KICNpbmNsdWRlIDxpbnRl
cnByZXRlci9JbnRlcnByZXRlci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvQ29tcGxldGlvbi5oPgpA
QCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUo
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKICAgICBpZiAoaXNFeGVjdXRpb25G
b3JiaWRkZW4oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU2NyaXB0VmFsdWUgZXhjZXB0aW9u
OworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGV4Y2VwdGlvbjsKICAgICBldmFsdWF0ZShz
b3VyY2VDb2RlLCAmZXhjZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0aW9uLmpzVmFsdWUoKSkgewog
ICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSgpKTsKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lk
IFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUm
IHNvdXJjZUNvZGUpCiAgICAgfQogfQogCi12b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2
YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIFNjcmlwdFZhbHVlKiBl
eGNlcHRpb24pCit2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNj
cmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKiBleGNl
cHRpb24pCiB7CiAgICAgaWYgKGlzRXhlY3V0aW9uRm9yYmlkZGVuKCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTE0NSwxMyArMTQ1LDEzIEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZh
bHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgU2NyaXB0CiAgICAgICAg
IGludCBjb2x1bW5OdW1iZXIgPSAwOwogICAgICAgICBTdHJpbmcgc291cmNlVVJMID0gc291cmNl
Q29kZS51cmwoKS5zdHJpbmcoKTsKICAgICAgICAgaWYgKG1fd29ya2VyR2xvYmFsU2NvcGUtPnNh
bml0aXplU2NyaXB0RXJyb3IoZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
IHNvdXJjZVVSTCwgc291cmNlQ29kZS5jYWNoZWRTY3JpcHQoKSkpCi0gICAgICAgICAgICAqZXhj
ZXB0aW9uID0gU2NyaXB0VmFsdWUoKm1fdm0sIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlRXJyb3IoZXhlYywgZXJyb3JNZXNzYWdlLmltcGwoKSkpKTsKKyAgICAgICAgICAg
ICpleGNlcHRpb24gPSBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSgqbV92bSwgZXhlYy0+dm0oKS50
aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBlcnJvck1lc3NhZ2UuaW1wbCgp
KSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICAqZXhjZXB0aW9uID0gU2NyaXB0VmFsdWUo
Km1fdm0sIGV2YWx1YXRpb25FeGNlcHRpb24pOworICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCptX3ZtLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICB9
CiB9CiAKLXZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6c2V0RXhjZXB0aW9uKGNvbnN0IFNj
cmlwdFZhbHVlJiBleGNlcHRpb24pCit2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNldEV4
Y2VwdGlvbihjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZXhjZXB0aW9uKQogewogICAg
IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxFeGVjKCktPnZtKCkudGhyb3dFeGNl
cHRpb24obV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbEV4ZWMoKSwgZXhjZXB0aW9u
LmpzVmFsdWUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
b3JrZXJTY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3Jr
ZXJTY3JpcHRDb250cm9sbGVyLmgKaW5kZXggOGJiN2Y0OS4uMDI1YzM3ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaApAQCAt
MzMsMTUgKzMzLDE4IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
VGhyZWFkaW5nLmg+CiAKK25hbWVzcGFjZSBEZXByZWNhdGVkIHsKK2NsYXNzIFNjcmlwdFZhbHVl
OworfQorCiBuYW1lc3BhY2UgSlNDIHsKLSAgICBjbGFzcyBWTTsKK2NsYXNzIFZNOwogfQogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBKU1dvcmtlckdsb2JhbFNjb3BlOwogICAg
IGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7Ci0gICAgY2xhc3MgU2NyaXB0VmFsdWU7CiAgICAgY2xh
c3MgV29ya2VyR2xvYmFsU2NvcGU7CiAKICAgICBjbGFzcyBXb3JrZXJTY3JpcHRDb250cm9sbGVy
IHsKQEAgLTU3LDkgKzYwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9CiAKICAg
ICAgICAgdm9pZCBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7Ci0gICAgICAgIHZv
aWQgZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIFNjcmlwdFZhbHVlKiBleGNlcHRp
b24pOworICAgICAgICB2b2lkIGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSogZXhjZXB0aW9uKTsKIAotICAgICAgICB2b2lkIHNldEV4Y2Vw
dGlvbihjb25zdCBTY3JpcHRWYWx1ZSYpOworICAgICAgICB2b2lkIHNldEV4Y2VwdGlvbihjb25z
dCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYpOwogCiAgICAgICAgIC8vIEFzeW5jIHJlcXVlc3Qg
dG8gdGVybWluYXRlIGEgSlMgcnVuIGV4ZWN1dGlvbi4gRXZlbnR1YWxseSBjYXVzZXMgdGVybWlu
YXRpb24KICAgICAgICAgLy8gZXhjZXB0aW9uIHJhaXNlZCBkdXJpbmcgSlMgZXhlY3V0aW9uLCBp
ZiB0aGUgd29ya2VyIHRocmVhZCBoYXBwZW5zIHRvIHJ1biBKUy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggYWYwNDQyYS4u
YTY4ZjdkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KQEAgLTMyMzQsNyArMzIzNCw3IEBAIG15ICVuYXRpdmVUeXBlID0gKAog
ICAgICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiID0+ICJSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiIsCiAgICAgIkRhdGUiID0+ICJkb3VibGUiLAogICAgICJEaWN0aW9uYXJ5IiA9PiAiRGlj
dGlvbmFyeSIsCi0gICAgImFueSIgPT4gIlNjcmlwdFZhbHVlIiwKKyAgICAiYW55IiA9PiAiRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUiLAogICAgICJib29sZWFuIiA9PiAiYm9vbCIsCiAgICAgImRv
dWJsZSIgPT4gImRvdWJsZSIsCiAgICAgImZsb2F0IiA9PiAiZmxvYXQiLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRl
eCA5MzFkYjI2Li43NzY0Yzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtMTY1MSw3ICsxNjUxLDcgQEAgdm9p
ZCBzZXRKU1Rlc3RPYmpBbnlBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWwKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KHRoaXNPYmplY3QpOwogICAgIFRl
c3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Ci0gICAgU2NyaXB0VmFsdWUgbmF0aXZl
VmFsdWUoZXhlYy0+dm0oKSwgdmFsdWUpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG5h
dGl2ZVZhbHVlKGV4ZWMtPnZtKCksIHZhbHVlKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCiAgICAgICAgIHJldHVybjsKICAgICBpbXBsLnNldEFueUF0dHJpYnV0ZShuYXRpdmVWYWx1
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmNwcAppbmRleCBiMGZiYTk5Li5kNWVmMGJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgQ3VzdG9tRXZl
bnQ6On5DdXN0b21FdmVudCgpCiB7CiB9CiAKLXZvaWQgQ3VzdG9tRXZlbnQ6OmluaXRDdXN0b21F
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBkZXRhaWwpCit2b2lkIEN1c3RvbUV2ZW50Ojppbml0
Q3VzdG9tRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZGV0YWlsKQogewog
ICAgIEFTU0VSVCghbV9zZXJpYWxpemVkU2NyaXB0VmFsdWUuZ2V0KCkpOwogICAgIGlmIChkaXNw
YXRjaGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5oCmluZGV4IGJjODkwOTYuLjdmNGMxY2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5oCkBAIC0yNywxNSArMjcsMTUgQEAKICNkZWZpbmUg
Q3VzdG9tRXZlbnRfaAogCiAjaW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1
ZS5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPGJpbmRp
bmdzL1NjcmlwdFZhbHVlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEN1c3Rv
bUV2ZW50SW5pdCA6IHB1YmxpYyBFdmVudEluaXQgewogICAgIEN1c3RvbUV2ZW50SW5pdCgpOwog
Ci0gICAgU2NyaXB0VmFsdWUgZGV0YWlsOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRl
dGFpbDsKIH07CiAKIGNsYXNzIEN1c3RvbUV2ZW50IDogcHVibGljIEV2ZW50IHsKQEAgLTUyLDE4
ICs1MiwxOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3VzdG9tRXZl
bnQodHlwZSwgaW5pdGlhbGl6ZXIpKTsKICAgICB9CiAKLSAgICB2b2lkIGluaXRDdXN0b21FdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFi
bGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBkZXRhaWwpOworICAgIHZvaWQgaW5pdEN1c3RvbUV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJs
ZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGRldGFpbCk7CiAKICAgICB2aXJ0dWFs
IEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Q7CiAKLSAgICBjb25zdCBTY3Jp
cHRWYWx1ZSYgZGV0YWlsKCkgY29uc3QgeyByZXR1cm4gbV9kZXRhaWw7IH0KKyAgICBjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZGV0YWlsKCkgY29uc3QgeyByZXR1cm4gbV9kZXRhaWw7
IH0KICAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFNjcmlw
dFZhbHVlKCkgeyByZXR1cm4gbV9zZXJpYWxpemVkU2NyaXB0VmFsdWU7IH0KIAogcHJpdmF0ZToK
ICAgICBDdXN0b21FdmVudCgpOwogICAgIEN1c3RvbUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSwgY29uc3QgQ3VzdG9tRXZlbnRJbml0JiBpbml0aWFsaXplcik7CiAKLSAgICBTY3JpcHRW
YWx1ZSBtX2RldGFpbDsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBtX2RldGFpbDsKICAg
ICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX3NlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKaW5kZXggZmQ4Njk3OC4uNDM4OGM5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKQEAgLTIxLDE0ICsyMSwxMyBAQAog
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
Ik1lc3NhZ2VFdmVudC5oIgogCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGlubGlu
ZSBib29sIGlzVmFsaWRTb3VyY2UoRXZlbnRUYXJnZXQqIHNvdXJjZSkKQEAgLTU2LDcgKzU1LDcg
QEAgTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBj
b25zdCBNZXNzYWdlRXZlbnRJbml0JiBpbmkKIHsKIH0KIAotTWVzc2FnZUV2ZW50OjpNZXNzYWdl
RXZlbnQoY29uc3QgU2NyaXB0VmFsdWUmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25z
dCBTdHJpbmcmIGxhc3RFdmVudElkLCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBzb3VyY2UsIFBh
c3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMpCitNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VF
dmVudChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBv
cmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+
IHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cykKICAgICA6IEV2ZW50
KGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQsIGZhbHNlLCBmYWxzZSkKICAgICAsIG1fZGF0YVR5
cGUoRGF0YVR5cGVTY3JpcHRWYWx1ZSkKICAgICAsIG1fZGF0YUFzU2NyaXB0VmFsdWUoZGF0YSkK
QEAgLTEwOCw3ICsxMDcsNyBAQCBNZXNzYWdlRXZlbnQ6On5NZXNzYWdlRXZlbnQoKQogewogfQog
Ci12b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IFNjcmlwdFZhbHVl
JiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwg
RE9NV2luZG93KiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMpCit2
b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0
RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4g
cG9ydHMpCiB7CiAgICAgaWYgKGRpc3BhdGNoZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL01lc3NhZ2VFdmVudC5oCmluZGV4IGI5N2E3MDMuLjY4NjBkMWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVzc2FnZUV2ZW50LmgKQEAgLTMyLDggKzMyLDggQEAKICNpbmNsdWRlICJET01XaW5kb3cuaCIK
ICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCi0jaW5jbHVkZSAi
U2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNs
dWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZm
ZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBFdmVu
dFRhcmdldDsKIHN0cnVjdCBNZXNzYWdlRXZlbnRJbml0IDogcHVibGljIEV2ZW50SW5pdCB7CiAg
ICAgTWVzc2FnZUV2ZW50SW5pdCgpOwogCi0gICAgU2NyaXB0VmFsdWUgZGF0YTsKKyAgICBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSBkYXRhOwogICAgIFN0cmluZyBvcmlnaW47CiAgICAgU3RyaW5n
IGxhc3RFdmVudElkOwogICAgIFJlZlB0cjxFdmVudFRhcmdldD4gc291cmNlOwpAQCAtNTYsNyAr
NTYsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lc3Nh
Z2VFdmVudCk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4gY3Jl
YXRlKFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMsIGNvbnN0IFNjcmlwdFZhbHVl
JiBkYXRhID0gU2NyaXB0VmFsdWUoKSwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSBTdHJpbmcoKSwg
Y29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9IFN0cmluZygpLCBQYXNzUmVmUHRyPEV2ZW50VGFy
Z2V0PiBzb3VyY2UgPSAwKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4gY3Jl
YXRlKFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMsIGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiBkYXRhID0gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKSwgY29uc3QgU3Ry
aW5nJiBvcmlnaW4gPSBTdHJpbmcoKSwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9IFN0cmlu
ZygpLCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBzb3VyY2UgPSAwKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBNZXNzYWdlRXZlbnQoZGF0YSwgb3JpZ2luLCBsYXN0RXZlbnRJ
ZCwgc291cmNlLCBwb3J0cykpOwogICAgIH0KQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAg
IH0KICAgICB2aXJ0dWFsIH5NZXNzYWdlRXZlbnQoKTsKIAotICAgIHZvaWQgaW5pdE1lc3NhZ2VF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29u
c3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIFBhc3NPd25QdHI8TWVz
c2FnZVBvcnRBcnJheT4pOworICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBv
cnRBcnJheT4pOwogICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5n
JiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRB
cnJheT4pOwogCiAgICAgY29uc3QgU3RyaW5nJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29y
aWdpbjsgfQpAQCAtMTA3LDcgKzEwNyw3IEBAIHB1YmxpYzoKICAgICAgICAgRGF0YVR5cGVBcnJh
eUJ1ZmZlcgogICAgIH07CiAgICAgRGF0YVR5cGUgZGF0YVR5cGUoKSBjb25zdCB7IHJldHVybiBt
X2RhdGFUeXBlOyB9Ci0gICAgY29uc3QgU2NyaXB0VmFsdWUmIGRhdGFBc1NjcmlwdFZhbHVlKCkg
Y29uc3QgeyBBU1NFUlQobV9kYXRhVHlwZSA9PSBEYXRhVHlwZVNjcmlwdFZhbHVlKTsgcmV0dXJu
IG1fZGF0YUFzU2NyaXB0VmFsdWU7IH0KKyAgICBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYgZGF0YUFzU2NyaXB0VmFsdWUoKSBjb25zdCB7IEFTU0VSVChtX2RhdGFUeXBlID09IERhdGFU
eXBlU2NyaXB0VmFsdWUpOyByZXR1cm4gbV9kYXRhQXNTY3JpcHRWYWx1ZTsgfQogICAgIFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhQXNTZXJpYWxpemVkU2NyaXB0VmFsdWUo
KSBjb25zdCB7IEFTU0VSVChtX2RhdGFUeXBlID09IERhdGFUeXBlU2VyaWFsaXplZFNjcmlwdFZh
bHVlKTsgcmV0dXJuIG1fZGF0YUFzU2VyaWFsaXplZFNjcmlwdFZhbHVlOyB9CiAgICAgU3RyaW5n
IGRhdGFBc1N0cmluZygpIGNvbnN0IHsgQVNTRVJUKG1fZGF0YVR5cGUgPT0gRGF0YVR5cGVTdHJp
bmcpOyByZXR1cm4gbV9kYXRhQXNTdHJpbmc7IH0KICAgICBCbG9iKiBkYXRhQXNCbG9iKCkgY29u
c3QgeyBBU1NFUlQobV9kYXRhVHlwZSA9PSBEYXRhVHlwZUJsb2IpOyByZXR1cm4gbV9kYXRhQXNC
bG9iLmdldCgpOyB9CkBAIC0xMTYsNyArMTE2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBN
ZXNzYWdlRXZlbnQoKTsKICAgICBNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29u
c3QgTWVzc2FnZUV2ZW50SW5pdCYpOwotICAgIE1lc3NhZ2VFdmVudChjb25zdCBTY3JpcHRWYWx1
ZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQs
IFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFy
cmF5Pik7CisgICAgTWVzc2FnZUV2ZW50KGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBk
YXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgUGFz
c1JlZlB0cjxFdmVudFRhcmdldD4gc291cmNlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+
KTsKICAgICBNZXNzYWdlRXZlbnQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRh
dGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBQYXNz
UmVmUHRyPEV2ZW50VGFyZ2V0PiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4p
OwogCiAgICAgZXhwbGljaXQgTWVzc2FnZUV2ZW50KGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3Qg
U3RyaW5nJiBvcmlnaW4pOwpAQCAtMTI0LDcgKzEyNCw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgTWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGRhdGEsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luKTsKIAogICAgIERhdGFUeXBlIG1fZGF0YVR5cGU7Ci0gICAgU2NyaXB0VmFsdWUg
bV9kYXRhQXNTY3JpcHRWYWx1ZTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBtX2RhdGFB
c1NjcmlwdFZhbHVlOwogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1fZGF0YUFz
U2VyaWFsaXplZFNjcmlwdFZhbHVlOwogICAgIFN0cmluZyBtX2RhdGFBc1N0cmluZzsKICAgICBS
ZWZQdHI8QmxvYj4gbV9kYXRhQXNCbG9iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1BvcFN0YXRlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmgKaW5k
ZXggMjIxOTNhNC4uNTY4MjM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0
YXRlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5oCkBAIC0y
OCwxNCArMjgsMTQgQEAKICNkZWZpbmUgUG9wU3RhdGVFdmVudF9oCiAKICNpbmNsdWRlICJFdmVu
dC5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0
VmFsdWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgUG9wU3RhdGVFdmVudElu
aXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKICAgICBQb3BTdGF0ZUV2ZW50SW5pdCgpOwogCi0gICAg
U2NyaXB0VmFsdWUgc3RhdGU7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgc3RhdGU7CiB9
OwogCiBjbGFzcyBIaXN0b3J5OwpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8UG9wU3RhdGVFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYsIGNv
bnN0IFBvcFN0YXRlRXZlbnRJbml0Jik7CiAKICAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gc2VyaWFsaXplZFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zZXJpYWxpemVkU3Rh
dGU7IH0KLSAgICBjb25zdCBTY3JpcHRWYWx1ZSYgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0
YXRlOyB9CisgICAgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHN0YXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0ZTsgfQogICAgIEhpc3RvcnkqIGhpc3RvcnkoKSBjb25zdCB7IHJldHVy
biBtX2hpc3RvcnkuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgRXZlbnRJbnRlcmZhY2UgZXZlbnRJ
bnRlcmZhY2UoKSBjb25zdDsKQEAgLTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICBQb3BTdGF0
ZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFBvcFN0YXRlRXZlbnRJbml0Jik7CiAg
ICAgZXhwbGljaXQgUG9wU3RhdGVFdmVudChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4sIFBhc3NSZWZQdHI8SGlzdG9yeT4pOwogCi0gICAgU2NyaXB0VmFsdWUgbV9zdGF0ZTsKKyAg
ICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBtX3N0YXRlOwogICAgIFJlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IG1fc2VyaWFsaXplZFN0YXRlOwogICAgIFJlZlB0cjxIaXN0b3J5PiBtX2hp
c3Rvcnk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCmluZGV4IDE1N2M0Y2Eu
LmQ5Njg3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKQEAgLTQyLDExICs0
MiwxMSBAQAogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRS
dW5uZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0
VmFsdWUuaCIKICNpbmNsdWRlICJTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4
dE5vZGVUcmF2ZXJzYWwuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNzQ0OGJkOS4uNjZmN2ZhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xMzIsOCArMTMyLDkgQEAKICNp
ZiBFTkFCTEUoTUVESUFfQ09OVFJPTFNfU0NSSVBUKQogI2luY2x1ZGUgIkpTTWVkaWFDb250cm9s
c0hvc3QuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xzSG9zdC5oIgotI2luY2x1ZGUgIlNjcmlw
dE9iamVjdC5oIgorI2luY2x1ZGUgIlNjcmlwdEdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIlVz
ZXJBZ2VudFNjcmlwdHMuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3QuaD4KICNl
bmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hT
U0F1ZGl0b3IuY3BwCmluZGV4IGVkNzMwYjQuLjdmZjRjZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCkBAIC0zNywxNyArMzcsMTUgQEAKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MUGFyYW1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TFBhcnNlcklkaW9tcy5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUg
IlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUg
IlhMaW5rTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiAjaWYgRU5BQkxF
KFNWRykKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2VuZGlmCiAKLSNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9y
RGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVn
YXRlLmNwcAppbmRleCBhZDMzZTAwLi5kMDYwNjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5jcHAKQEAgLTM1LDEyICszNSwxNCBAQAog
I2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIK
ICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVz
LmgiCiAjaW5jbHVkZSAiUGluZ0xvYWRlci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKK3Vz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogWFNTQXVk
aXRvckRlbGVnYXRlOjpYU1NBdWRpdG9yRGVsZWdhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3Iu
cHkgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQpp
bmRleCBhOTk1NTMwLi5jYWYwYWQ5IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQpAQCAtMjYyLDcgKzI2Miw3IEBAIGNsYXNzIFJh
d1R5cGVzKG9iamVjdCk6CiAKICAgICAgICAgQGNsYXNzbWV0aG9kCiAgICAgICAgIGRlZiBnZXRf
cmF3X3ZhbGlkYXRvcl9jYWxsX3RleHQoY2xzKToKLSAgICAgICAgICAgIHJldHVybiAiUnVudGlt
ZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFsdWU6OlR5cGUlcz4iICUgY2xzLmdl
dF92YWxpZGF0ZV9tZXRob2RfcGFyYW1zKCkudGVtcGxhdGVfdHlwZQorICAgICAgICAgICAgcmV0
dXJuICJSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3I6Okluc3BlY3RvclZh
bHVlOjpUeXBlJXM+IiAlIGNscy5nZXRfdmFsaWRhdGVfbWV0aG9kX3BhcmFtcygpLnRlbXBsYXRl
X3R5cGUKIAogICAgIGNsYXNzIFN0cmluZyhCYXNlVHlwZSk6CiAgICAgICAgIEBzdGF0aWNtZXRo
b2QKQEAgLTQ1MSw3ICs0NTEsNyBAQCBjbGFzcyBSYXdUeXBlcyhvYmplY3QpOgogCiAgICAgICAg
IEBzdGF0aWNtZXRob2QKICAgICAgICAgZGVmIGdldF9hcnJheV9pdGVtX3Jhd19jX3R5cGVfdGV4
dCgpOgotICAgICAgICAgICAgcmV0dXJuICJJbnNwZWN0b3JPYmplY3QiCisgICAgICAgICAgICBy
ZXR1cm4gIkluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0IgogCiAgICAgICAgIEBzdGF0aWNtZXRo
b2QKICAgICAgICAgZGVmIGdldF9yYXdfdHlwZV9tb2RlbCgpOgpAQCAtNDg2LDcgKzQ4Niw3IEBA
IGNsYXNzIFJhd1R5cGVzKG9iamVjdCk6CiAKICAgICAgICAgQHN0YXRpY21ldGhvZAogICAgICAg
ICBkZWYgZ2V0X2FycmF5X2l0ZW1fcmF3X2NfdHlwZV90ZXh0KCk6Ci0gICAgICAgICAgICByZXR1
cm4gIkluc3BlY3RvclZhbHVlIgorICAgICAgICAgICAgcmV0dXJuICJJbnNwZWN0b3I6Okluc3Bl
Y3RvclZhbHVlIgogCiAgICAgICAgIEBzdGF0aWNtZXRob2QKICAgICAgICAgZGVmIGdldF9yYXdf
dHlwZV9tb2RlbCgpOgpAQCAtNTI5LDcgKzUyOSw3IEBAIGNsYXNzIFJhd1R5cGVzKG9iamVjdCk6
CiAKICAgICAgICAgQHN0YXRpY21ldGhvZAogICAgICAgICBkZWYgZ2V0X2FycmF5X2l0ZW1fcmF3
X2NfdHlwZV90ZXh0KCk6Ci0gICAgICAgICAgICByZXR1cm4gIkluc3BlY3RvckFycmF5IgorICAg
ICAgICAgICAgcmV0dXJuICJJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5IgogCiAgICAgICAgIEBz
dGF0aWNtZXRob2QKICAgICAgICAgZGVmIGdldF9yYXdfdHlwZV9tb2RlbCgpOgpAQCAtNzI2LDkg
KzcyNiw5IEBAIGNsYXNzIFR5cGVNb2RlbDoKICAgICAgICAgICAgIGNscy5JbnQgPSBjbHMuVmFs
dWVUeXBlKCJpbnQiLCBGYWxzZSkKICAgICAgICAgY2xzLk51bWJlciA9IGNscy5WYWx1ZVR5cGUo
ImRvdWJsZSIsIEZhbHNlKQogICAgICAgICBjbHMuU3RyaW5nID0gY2xzLlZhbHVlVHlwZSgiU3Ry
aW5nIiwgVHJ1ZSwpCi0gICAgICAgIGNscy5PYmplY3QgPSBjbHMuUmVmUHRyQmFzZWQoIkluc3Bl
Y3Rvck9iamVjdCIpCi0gICAgICAgIGNscy5BcnJheSA9IGNscy5SZWZQdHJCYXNlZCgiSW5zcGVj
dG9yQXJyYXkiKQotICAgICAgICBjbHMuQW55ID0gY2xzLlJlZlB0ckJhc2VkKCJJbnNwZWN0b3JW
YWx1ZSIpCisgICAgICAgIGNscy5PYmplY3QgPSBjbHMuUmVmUHRyQmFzZWQoIkluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0IikKKyAgICAgICAgY2xzLkFycmF5ID0gY2xzLlJlZlB0ckJhc2VkKCJJ
bnNwZWN0b3I6Okluc3BlY3RvckFycmF5IikKKyAgICAgICAgY2xzLkFueSA9IGNscy5SZWZQdHJC
YXNlZCgiSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSIpCiAKIFR5cGVNb2RlbC5pbml0X2NsYXNz
KCkKIApAQCAtOTI4LDcgKzkyOCw3IEBAIGNsYXNzIFR5cGVCaW5kaW5nczoKIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiBlbnVtX2JpbmRpbmdfY2xzLm5lZWRfaW50ZXJuYWxf
cnVudGltZV9jYXN0XzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRl
ci5hcHBlbmQoIiNpZiAlc1xuIiAlIFZBTElEQVRPUl9JRkRFRl9OQU1FKQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICBzdGF0aWMgdm9pZCBh
c3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKTtcbiIpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgIHN0YXRpYyB2b2lk
IGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiB2YWx1ZSk7XG4i
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVuZCgiI2Vu
ZGlmICAvLyAlc1xuIiAlIFZBTElEQVRPUl9JRkRFRl9OQU1FKQogCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyID0gZ2VuZXJhdGVfY29udGV4dC52
YWxpZGF0b3Jfd3JpdGVyCkBAIC05MzgsNyArOTM4LDcgQEAgY2xhc3MgVHlwZUJpbmRpbmdzOgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZG9tYWluX2d1YXJkOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbl9ndWFyZC5nZW5lcmF0
ZV9vcGVuKHZhbGlkYXRvcl93cml0ZXIpCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhbGlkYXRvcl93cml0ZXIubmV3bGluZSgidm9pZCAlcyVzOjphc3NlcnRDb3JyZWN0
VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKVxuIiAlIChoZWxwZXIuZnVsbF9uYW1lX3ByZWZp
eF9mb3JfaW1wbCwgZW51bV9uYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZhbGlkYXRvcl93cml0ZXIubmV3bGluZSgidm9pZCAlcyVzOjphc3NlcnRDb3JyZWN0VmFs
dWUoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogdmFsdWUpXG4iICUgKGhlbHBlci5mdWxsX25h
bWVfcHJlZml4X2Zvcl9pbXBsLCBlbnVtX25hbWUpKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCJ7XG4iKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCIgICAgV1RG
OjpTdHJpbmcgcztcbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxp
ZGF0b3Jfd3JpdGVyLm5ld2xpbmUoIiAgICBib29sIGNhc3RfcmVzID0gdmFsdWUtPmFzU3RyaW5n
KCZzKTtcbiIpCkBAIC0xMTcyLDkgKzExNzIsOSBAQCBjbGFzcyBUeXBlQmluZGluZ3M6CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQoY2xhc3NfbmFtZSkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVuZCgiIDogcHVibGljICIp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlzX29wZW5fdHlwZToKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQoIkluc3BlY3Rvck9i
amVjdCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5k
KCJJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIu
YXBwZW5kKCJJbnNwZWN0b3JPYmplY3RCYXNlIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdyaXRlci5hcHBlbmQoIkluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0QmFzZSIp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQoIiB7XG4iKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgicHVibGljOlxu
IikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRfaG9jX3R5cGVfd3JpdGVyID0g
d3JpdGVyLmluc2VydF93cml0ZXIoIiAgICAiKQpAQCAtMTI1MSwyNSArMTI1MSwyNSBAQCBjbGFz
cyBUeXBlQmluZGluZ3M6CiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgc2V0dGVyX25hbWUgaW4gSU5TUEVDVE9SX09CSkVDVF9TRVRURVJfTkFNRVM6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICB1c2lu
ZyBJbnNwZWN0b3JPYmplY3RCYXNlOjolcztcblxuIiAlIHNldHRlcl9uYW1lKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgdXNpbmcg
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3RCYXNlOjolcztcblxuIiAlIHNldHRlcl9uYW1lKQog
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNsYXNzX2JpbmRpbmdfY2xzLm5l
ZWRfdXNlcl9ydW50aW1lX2Nhc3RfOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd3JpdGVyLm5ld2xpbmUoIiAgICBzdGF0aWMgUGFzc1JlZlB0cjwlcz4gcnVudGltZUNhc3Qo
UGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpXG4iICUgY2xhc3NfbmFtZSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgc3RhdGlj
IFBhc3NSZWZQdHI8JXM+IHJ1bnRpbWVDYXN0KFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JWYWx1ZT4gdmFsdWUpXG4iICUgY2xhc3NfbmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAge1xuIikKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgICAgIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IG9iamVjdDtcbiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3cml0ZXIubmV3bGluZSgiICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q+IG9iamVjdDtcbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0
ZXIubmV3bGluZSgiICAgICAgICBib29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNPYmplY3QoJm9iamVj
dCk7XG4iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xp
bmUoIiAgICAgICAgQVNTRVJUX1VOVVNFRChjYXN0UmVzLCBjYXN0UmVzKTtcbiIpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKCIjaWYgJXNcbiIgJSBW
QUxJREFUT1JfSUZERUZfTkFNRSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdyaXRlci5uZXdsaW5lKCIgICAgICAgIGFzc2VydENvcnJlY3RWYWx1ZShvYmplY3QuZ2V0KCkp
O1xuIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQo
IiNlbmRpZiAgLy8gJXNcbiIgJSBWQUxJREFUT1JfSUZERUZfTkFNRSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgICAgIENPTVBJTEVfQVNT
RVJUKHNpemVvZiglcykgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVjdEJhc2UpLCB0eXBlX2Nhc3Rf
cHJvYmxlbSk7XG4iICUgY2xhc3NfbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDwlcyo+KHN0
YXRpY19jYXN0PEluc3BlY3Rvck9iamVjdEJhc2UqPihvYmplY3QuZ2V0KCkpKTtcbiIgJSBjbGFz
c19uYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xp
bmUoIiAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKCVzKSA9PSBzaXplb2YoSW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3RCYXNlKSwgdHlwZV9jYXN0X3Byb2JsZW0pO1xuIiAlIGNsYXNzX25h
bWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgi
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8JXMqPihzdGF0aWNfY2FzdDxJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdEJhc2UqPihvYmplY3QuZ2V0KCkpKTtcbiIgJSBjbGFzc19uYW1lKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICB9XG4i
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVuZCgiXG4i
KQogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNsYXNzX2JpbmRpbmdfY2xz
Lm5lZWRfaW50ZXJuYWxfcnVudGltZV9jYXN0XzoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdyaXRlci5hcHBlbmQoIiNpZiAlc1xuIiAlIFZBTElEQVRPUl9JRkRFRl9OQU1F
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAg
ICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKTtc
biIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgi
ICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3I6Okluc3BlY3RvclZh
bHVlKiB2YWx1ZSk7XG4iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3Jp
dGVyLmFwcGVuZCgiI2VuZGlmICAvLyAlc1xuIiAlIFZBTElEQVRPUl9JRkRFRl9OQU1FKQogCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZWRfZmllbGRfc2V0ID0gKGNv
bnRleHRfZG9tYWluX25hbWUgKyAiLiIgKyBjbGFzc19uYW1lKSBub3QgaW4gVFlQRVNfV0lUSF9P
UEVOX0ZJRUxEX0xJU1RfU0VUCkBAIC0xMjgxLDcgKzEyODEsNyBAQCBjbGFzcyBUeXBlQmluZGlu
Z3M6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkb21haW5fZ3VhcmQ6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluX2d1YXJkLmdl
bmVyYXRlX29wZW4odmFsaWRhdG9yX3dyaXRlcikKIAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCJ2b2lkICVzJXM6OmFzc2VydENv
cnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpXG4iICUgKGhlbHBlci5mdWxsX25hbWVf
cHJlZml4X2Zvcl9pbXBsLCBjbGFzc19uYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhbGlkYXRvcl93cml0ZXIubmV3bGluZSgidm9pZCAlcyVzOjphc3NlcnRDb3Jy
ZWN0VmFsdWUoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogdmFsdWUpXG4iICUgKGhlbHBlci5m
dWxsX25hbWVfcHJlZml4X2Zvcl9pbXBsLCBjbGFzc19uYW1lKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcl93cml0ZXIubmV3bGluZSgie1xuIikKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcl93cml0ZXIubmV3bGluZSgi
ICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdDtcbiIpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoIiAgICBib29sIGNh
c3RSZXMgPSB2YWx1ZS0+YXNPYmplY3QoJm9iamVjdCk7XG4iKQpAQCAtMTkwMCwxMCArMTkwMCwx
MCBAQCBjbGFzcyBHZW5lcmF0b3I6CiAgICAgICAgICAgICBkaXNwYXRjaGVyX25hbWUgPSAiSW5z
cGVjdG9yIiArIENhcGl0YWxpemVyLmxvd2VyX2NhbWVsX2Nhc2VfdG9fdXBwZXIoZG9tYWluX25h
bWUpICsgIkJhY2tlbmREaXNwYXRjaGVyIgogICAgICAgICAgICAgYWdlbnRfaW50ZXJmYWNlX25h
bWUgPSBkaXNwYXRjaGVyX25hbWUgKyAiSGFuZGxlciIKIAotICAgICAgICAgICAgR2VuZXJhdG9y
LmJhY2tlbmRfZGlzcGF0Y2hlcl9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoImNsYXNzICVzIEZJTkFM
IDogcHVibGljIEluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyIHtcbiIgJSBk
aXNwYXRjaGVyX25hbWUpCisgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9kaXNwYXRjaGVy
X2ludGVyZmFjZV9saXN0LmFwcGVuZCgiY2xhc3MgJXMgRklOQUwgOiBwdWJsaWMgSW5zcGVjdG9y
OjpJbnNwZWN0b3JTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciB7XG4iICUgZGlzcGF0Y2hl
cl9uYW1lKQogICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfZGlzcGF0Y2hlcl9pbnRlcmZh
Y2VfbGlzdC5hcHBlbmQoInB1YmxpYzpcbiIpCi0gICAgICAgICAgICBHZW5lcmF0b3IuYmFja2Vu
ZF9kaXNwYXRjaGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgiICAgIHN0YXRpYyBQYXNzUmVmUHRy
PCVzPiBjcmVhdGUoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqLCAlcyopO1xuIiAlIChkaXNw
YXRjaGVyX25hbWUsIGFnZW50X2ludGVyZmFjZV9uYW1lKSkKLSAgICAgICAgICAgIEdlbmVyYXRv
ci5iYWNrZW5kX2Rpc3BhdGNoZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUGFzc1JlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IG1lc3NhZ2UpIE9WRVJSSURFO1xuIikKKyAgICAgICAgICAgIEdl
bmVyYXRvci5iYWNrZW5kX2Rpc3BhdGNoZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIgICAgc3Rh
dGljIFBhc3NSZWZQdHI8JXM+IGNyZWF0ZShJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKiwgJXMqKTtcbiIgJSAoZGlzcGF0Y2hlcl9uYW1lLCBhZ2VudF9pbnRlcmZhY2VfbmFt
ZSkpCisgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9kaXNwYXRjaGVyX2ludGVyZmFjZV9s
aXN0LmFwcGVuZCgiICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3Qg
U3RyaW5nJiBtZXRob2QsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1l
c3NhZ2UpIE9WRVJSSURFO1xuIikKICAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3Bh
dGNoZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCJwcml2YXRlOlxuIikKIAogICAgICAgICAgICAg
R2VuZXJhdG9yLmJhY2tlbmRfaGFuZGxlcl9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoImNsYXNzICVz
IHtcbiIgJSBhZ2VudF9pbnRlcmZhY2VfbmFtZSkKQEAgLTE5MjIsNyArMTkyMiw3IEBAIGNsYXNz
IEdlbmVyYXRvcjoKICAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2hhbmRsZXJfaW50ZXJm
YWNlX2xpc3QuYXBwZW5kKCJ9O1xuXG4iKQogCiAgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2Vu
ZF9kaXNwYXRjaGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgicHJpdmF0ZTpcbiIpCi0gICAgICAg
ICAgICBHZW5lcmF0b3IuYmFja2VuZF9kaXNwYXRjaGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgi
ICAgICVzKEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiwgJXMqKTtcbiIgJSAoZGlzcGF0Y2hl
cl9uYW1lLCBhZ2VudF9pbnRlcmZhY2VfbmFtZSkpCisgICAgICAgICAgICBHZW5lcmF0b3IuYmFj
a2VuZF9kaXNwYXRjaGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgiICAgICVzKEluc3BlY3Rvcjo6
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqLCAlcyopO1xuIiAlIChkaXNwYXRjaGVyX25hbWUs
IGFnZW50X2ludGVyZmFjZV9uYW1lKSkKICAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rp
c3BhdGNoZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIgICAgJXMqIG1fYWdlbnQ7XG4iICUgYWdl
bnRfaW50ZXJmYWNlX25hbWUpCiAgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9kaXNwYXRj
aGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgifTtcblxuIikKIApAQCAtMjAwMyw3ICsyMDAzLDcg
QEAgY2xhc3MgR2VuZXJhdG9yOgogICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9oYW5kbGVyX2lu
dGVyZmFjZV9saXN0LmFwcGVuZChhZF9ob2NfdHlwZV9vdXRwdXQpCiAgICAgICAgIGFkX2hvY190
eXBlX3dyaXRlciA9IFdyaXRlcihhZF9ob2NfdHlwZV9vdXRwdXQsICIgICAgIikKIAotICAgICAg
ICBHZW5lcmF0b3IuYmFja2VuZF9kaXNwYXRjaGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgiICAg
IHZvaWQgJXMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7XG4i
ICUganNvbl9jb21tYW5kX25hbWUpCisgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3BhdGNo
ZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIgICAgdm9pZCAlcyhsb25nIGNhbGxJZCwgY29uc3Qg
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpO1xuIiAlIGpzb25fY29tbWFuZF9u
YW1lKQogCiAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2hhbmRsZXJfaW50ZXJmYWNlX2xpc3Qu
YXBwZW5kKCIgICAgdmlydHVhbCB2b2lkICVzKEVycm9yU3RyaW5nKiIgJSBqc29uX2NvbW1hbmRf
bmFtZSkKIApAQCAtMjA5OCw5ICsyMDk4LDkgQEAgY2xhc3MgR2VuZXJhdG9yOgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX21ldGhv
ZF9pbXBsZW1lbnRhdGlvbl9saXN0LCBUZW1wbGF0ZXMuY2FsbGJhY2tfbWV0aG9kLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsiY2FsbGJhY2tOYW1lIjogY2Fs
bGJhY2tfbmFtZSwgImhhbmRsZXJOYW1lIjogYWdlbnRfaW50ZXJmYWNlX25hbWV9KQogCi0gICAg
ICAgICAgICBjYWxsYmFja193cml0ZXIubmV3bGluZSgiY2xhc3MgIiArIGNhbGxiYWNrX25hbWUg
KyAiIDogcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2Uge1xu
IikKKyAgICAgICAgICAgIGNhbGxiYWNrX3dyaXRlci5uZXdsaW5lKCJjbGFzcyAiICsgY2FsbGJh
Y2tfbmFtZSArICIgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6Q2FsbGJhY2tCYXNlIHtcbiIpCiAgICAgICAgICAgICBjYWxsYmFja193cml0ZXIubmV3bGlu
ZSgicHVibGljOlxuIikKLSAgICAgICAgICAgIGNhbGxiYWNrX3dyaXRlci5uZXdsaW5lKCIgICAg
IiArIGNhbGxiYWNrX25hbWUgKyAiKFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI+LCBpbnQgaWQpO1xuIikKKyAgICAgICAgICAgIGNhbGxiYWNrX3dyaXRlci5uZXdsaW5lKCIg
ICAgIiArIGNhbGxiYWNrX25hbWUgKyAiKFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcj4sIGludCBpZCk7XG4iKQogICAgICAgICAgICAgY2FsbGJhY2tfd3Jp
dGVyLm5ld2xpbmUoIiAgICB2b2lkIHNlbmRTdWNjZXNzKCIgKyAiLCAiLmpvaW4oZGVjbF9wYXJh
bWV0ZXJfbGlzdCkgKyAiKTtcbiIpCiAgICAgICAgICAgICBjYWxsYmFja193cml0ZXIubmV3bGlu
ZSgifTtcbiIpCiAKQEAgLTIxMDksNyArMjEwOSw3IEBAIGNsYXNzIEdlbmVyYXRvcjoKICAgICAg
ICAgICAgIG1ldGhvZF9kaXNwYXRjaF9oYW5kbGluZy5hcHBlbmQoIiAgICBSZWZQdHI8JXM6OiVz
PiBjYWxsYmFjayA9IGFkb3B0UmVmKG5ldyAlczo6JXMobV9iYWNrZW5kRGlzcGF0Y2hlcixjYWxs
SWQpKTtcbiIgJSAoYWdlbnRfaW50ZXJmYWNlX25hbWUsIGNhbGxiYWNrX25hbWUsIGFnZW50X2lu
dGVyZmFjZV9uYW1lLCBjYWxsYmFja19uYW1lKSkKICAgICAgICAgICAgIG1ldGhvZF9lbmRpbmdf
aGFuZGxpbmcuYXBwZW5kKCIgICAgaWYgKGVycm9yLmxlbmd0aCgpKSB7XG4iKQogICAgICAgICAg
ICAgbWV0aG9kX2VuZGluZ19oYW5kbGluZy5hcHBlbmQoIiAgICAgICAgY2FsbGJhY2stPmRpc2Fi
bGUoKTtcbiIpCi0gICAgICAgICAgICBtZXRob2RfZW5kaW5nX2hhbmRsaW5nLmFwcGVuZCgiICAg
ICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpTZXJ2ZXJFcnJvciwgZXJyb3IpO1xuIikKKyAgICAg
ICAgICAgIG1ldGhvZF9lbmRpbmdfaGFuZGxpbmcuYXBwZW5kKCIgICAgICAgIG1fYmFja2VuZERp
c3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW5zcGVjdG9yOjpJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcjo6U2VydmVyRXJyb3IsIGVycm9yKTtcbiIpCiAgICAgICAgICAg
ICBtZXRob2RfZW5kaW5nX2hhbmRsaW5nLmFwcGVuZCgiICAgICAgICByZXR1cm47XG4iKQogICAg
ICAgICAgICAgbWV0aG9kX2VuZGluZ19oYW5kbGluZy5hcHBlbmQoIiAgICB9IikKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJp
bmdzLnB5IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3JT
dHJpbmdzLnB5CmluZGV4IDdhNTE4YTguLmE3YjIyN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3RvclN0cmluZ3MucHkKQEAg
LTcwLDcgKzcwLDcgQEAgYmFja2VuZF9kaXNwYXRjaGVyX2Rpc3BhdGNoX21ldGhvZCA9ICgKIHsK
ICAgICBSZWY8JHtkaXNwYXRjaGVyTmFtZX0+IHByb3RlY3QoKnRoaXMpOwogCi0gICAgdHlwZWRl
ZiB2b2lkICgke2Rpc3BhdGNoZXJOYW1lfTo6KkNhbGxIYW5kbGVyKShsb25nIGNhbGxJZCwgY29u
c3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKKyAgICB0eXBlZGVmIHZvaWQgKCR7ZGlzcGF0
Y2hlck5hbWV9OjoqQ2FsbEhhbmRsZXIpKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgQ2Fs
bEhhbmRsZXI+IERpc3BhdGNoTWFwOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoRGlzcGF0Y2hN
YXAsIGRpc3BhdGNoTWFwLCAoKSk7CiAgICAgaWYgKGRpc3BhdGNoTWFwLmlzRW1wdHkoKSkgewpA
QCAtMTEyLDcgKzExMiw3IEBAICRjb2RlCiAiIiIpCiAKIGNhbGxiYWNrX21ldGhvZCA9ICgKLSIi
IiR7aGFuZGxlck5hbWV9Ojoke2NhbGxiYWNrTmFtZX06OiR7Y2FsbGJhY2tOYW1lfShQYXNzUmVm
UHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBiYWNrZW5kRGlzcGF0Y2hlciwgaW50IGlk
KSA6IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UoYmFja2VuZERpc3Bh
dGNoZXIsIGlkKSB7IH0KKyIiIiR7aGFuZGxlck5hbWV9Ojoke2NhbGxiYWNrTmFtZX06OiR7Y2Fs
bGJhY2tOYW1lfShQYXNzUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBiYWNrZW5k
RGlzcGF0Y2hlciwgaW50IGlkKSA6IEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI6OkNhbGxiYWNrQmFzZShiYWNrZW5kRGlzcGF0Y2hlciwgaWQpIHsgfQogCiB2b2lkICR7aGFu
ZGxlck5hbWV9Ojoke2NhbGxiYWNrTmFtZX06OnNlbmRTdWNjZXNzKCR7cGFyYW1ldGVyc30pCiB7
CkBAIC0xMjYsMTQgKzEyNiwxMyBAQCBmcm9udGVuZF9oID0gKAogI2RlZmluZSBJbnNwZWN0b3JG
cm9udGVuZF9oCiAKICNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgotI2luY2x1ZGUg
Ikluc3BlY3RvclZhbHVlcy5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZvcndhcmRpbmcuaCIKKyNp
bmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7Ci0KICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQogCiAkZG9tYWluQ2xhc3NMaXN0CkBAIC0xNDksMTYgKzE0OCwxMyBAQCBiYWNr
ZW5kX2ggPSAoCiAiIiIjaWZuZGVmIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyc19oCiAjZGVm
aW5lIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyc19oCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvclR5cGVCdWlsZGVyLmgiCisj
aW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbnNwZWN0b3JPYmplY3Q7Ci1jbGFzcyBJbnNw
ZWN0b3JBcnJheTsKLQogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKICRoYW5kbGVySW50
ZXJmYWNlcwpAQCAtMTc4LDExICsxNzQsMTMgQEAgYmFja2VuZF9jcHAgPSAoCiAjaW5jbHVkZSAi
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAKICNpbmNsdWRlICJJbnNwZWN0b3JBZ2Vu
dC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZv
cndhcmRpbmcuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICRtZXRob2RzCkBAIC0yMDAsMTAgKzE5OCwxMSBAQCBmcm9udGVuZF9jcHAgPSAoCiAKICNpbmNs
dWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogCi0jaW5jbHVkZSAiSW5zcGVjdG9yRm9yd2FyZGlu
Zy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAkbWV0aG9kcwpAQCAtMjIwLDcgKzIxOSw3IEBAIHR5cGVidWlsZGVyX2ggPSAo
CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgi
CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIApAQCAtMjgxLDEzICsy
ODAsMTMgQEAgaW5saW5lIGludCBFeGFjdGx5SW50OjpjYXN0X3RvX2ludDx1bnNpZ25lZCBpbnQ+
KHVuc2lnbmVkIGludCBpKSB7IHJldHVybiBpOyB9CiBjbGFzcyBSdW50aW1lQ2FzdEhlbHBlciB7
CiBwdWJsaWM6CiAjaWYgJHZhbGlkYXRvcklmZGVmTmFtZQotICAgIHRlbXBsYXRlPEluc3BlY3Rv
clZhbHVlOjpUeXBlIFRZUEU+Ci0gICAgc3RhdGljIHZvaWQgYXNzZXJ0VHlwZShJbnNwZWN0b3JW
YWx1ZSogdmFsdWUpCisgICAgdGVtcGxhdGU8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZTo6VHlw
ZSBUWVBFPgorICAgIHN0YXRpYyB2b2lkIGFzc2VydFR5cGUoSW5zcGVjdG9yOjpJbnNwZWN0b3JW
YWx1ZSogdmFsdWUpCiAgICAgewogICAgICAgICBBU1NFUlQodmFsdWUtPnR5cGUoKSA9PSBUWVBF
KTsKICAgICB9Ci0gICAgc3RhdGljIHZvaWQgYXNzZXJ0QW55KEluc3BlY3RvclZhbHVlKik7Ci0g
ICAgc3RhdGljIHZvaWQgYXNzZXJ0SW50KEluc3BlY3RvclZhbHVlKiB2YWx1ZSk7CisgICAgc3Rh
dGljIHZvaWQgYXNzZXJ0QW55KEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqKTsKKyAgICBzdGF0
aWMgdm9pZCBhc3NlcnRJbnQoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogdmFsdWUpOwogI2Vu
ZGlmCiB9OwogCkBAIC0zMDAsMTMgKzI5OSwxMyBAQCBzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyIHsK
IH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBBcnJheSA6IHB1YmxpYyBJbnNwZWN0
b3JBcnJheUJhc2UgeworY2xhc3MgQXJyYXkgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JB
cnJheUJhc2UgewogcHJpdmF0ZToKICAgICBBcnJheSgpIHsgfQogCi0gICAgSW5zcGVjdG9yQXJy
YXkqIG9wZW5BY2Nlc3NvcnMoKSB7Ci0gICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihJbnNw
ZWN0b3JBcnJheSkgPT0gc2l6ZW9mKEFycmF5PFQ+KSwgY2Fubm90X2Nhc3QpOwotICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8SW5zcGVjdG9yQXJyYXkqPihzdGF0aWNfY2FzdDxJbnNwZWN0b3JB
cnJheUJhc2UqPih0aGlzKSk7CisgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSogb3BlbkFj
Y2Vzc29ycygpIHsKKyAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEluc3BlY3Rvcjo6SW5z
cGVjdG9yQXJyYXkpID09IHNpemVvZihBcnJheTxUPiksIGNhbm5vdF9jYXN0KTsKKyAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkqPihzdGF0aWNfY2Fz
dDxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5QmFzZSo+KHRoaXMpKTsKICAgICB9CiAKIHB1Ymxp
YzoKQEAgLTMyNSwyMiArMzI0LDIyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBBcnJheTxUPigpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBcnJheTxU
Pj4gcnVudGltZUNhc3QoUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8QXJyYXk8VD4+IHJ1bnRpbWVDYXN0KFBhc3NSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpCiAgICAgewotICAgICAgICBSZWZQdHI8SW5zcGVjdG9y
QXJyYXk+IGFycmF5OworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4g
YXJyYXk7CiAgICAgICAgIGJvb2wgY2FzdFJlcyA9IHZhbHVlLT5hc0FycmF5KCZhcnJheSk7CiAg
ICAgICAgIEFTU0VSVF9VTlVTRUQoY2FzdFJlcywgY2FzdFJlcyk7CiAjaWYgJHZhbGlkYXRvcklm
ZGVmTmFtZQogICAgICAgICBhc3NlcnRDb3JyZWN0VmFsdWUoYXJyYXkuZ2V0KCkpOwogI2VuZGlm
ICAvLyAkdmFsaWRhdG9ySWZkZWZOYW1lCi0gICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihB
cnJheTxUPikgPT0gc2l6ZW9mKEluc3BlY3RvckFycmF5KSwgdHlwZV9jYXN0X3Byb2JsZW0pOwot
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk8VD4qPihzdGF0aWNfY2FzdDxJbnNwZWN0
b3JBcnJheUJhc2UqPihhcnJheS5nZXQoKSkpOworICAgICAgICBDT01QSUxFX0FTU0VSVChzaXpl
b2YoQXJyYXk8VD4pID09IHNpemVvZihJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5KSwgdHlwZV9j
YXN0X3Byb2JsZW0pOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk8VD4qPihzdGF0
aWNfY2FzdDxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5QmFzZSo+KGFycmF5LmdldCgpKSk7CiAg
ICAgfQogCiAjaWYgJHZhbGlkYXRvcklmZGVmTmFtZQotICAgIHN0YXRpYyB2b2lkIGFzc2VydENv
cnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCisgICAgc3RhdGljIHZvaWQgYXNzZXJ0
Q29ycmVjdFZhbHVlKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVlKQogICAgIHsKLSAg
ICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcnJheTsKKyAgICAgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQXJyYXk+IGFycmF5OwogICAgICAgICBib29sIGNhc3RSZXMgPSB2YWx1
ZS0+YXNBcnJheSgmYXJyYXkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGNhc3RSZXMsIGNhc3RS
ZXMpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJyYXktPmxlbmd0aCgpOyBp
KyspCkBAIC0zNTEsMTQgKzM1MCwxNCBAQCBwdWJsaWM6CiB9OwogCiBzdHJ1Y3QgU3RydWN0SXRl
bVRyYWl0cyB7Ci0gICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0b3JBcnJheSogYXJy
YXksIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQorICAgIHN0YXRpYyB2b2lkIHB1
c2hSZWZQdHIoSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSogYXJyYXksIFBhc3NSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpCiAgICAgewogICAgICAgICBhcnJheS0+cHVz
aFZhbHVlKHZhbHVlKTsKICAgICB9CiAKICNpZiAkdmFsaWRhdG9ySWZkZWZOYW1lCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5z
cGVjdG9yVmFsdWUqIHZhbHVlKSB7CisgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVl
KEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVlKSB7CiAgICAgICAgIFQ6OmFzc2VydENv
cnJlY3RWYWx1ZSh2YWx1ZSk7CiAgICAgfQogI2VuZGlmICAvLyAkdmFsaWRhdG9ySWZkZWZOYW1l
CkBAIC0zNjcsMTUgKzM2NiwxNSBAQCBzdHJ1Y3QgU3RydWN0SXRlbVRyYWl0cyB7CiB0ZW1wbGF0
ZTw+CiBzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPFN0cmluZz4gewogICAgIHN0cnVjdCBUcmFpdHMg
ewotICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmF3KEluc3BlY3RvckFycmF5KiBhcnJheSwgY29u
c3QgU3RyaW5nJiB2YWx1ZSkKKyAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJhdyhJbnNwZWN0b3I6
Okluc3BlY3RvckFycmF5KiBhcnJheSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgewog
ICAgICAgICAgICAgYXJyYXktPnB1c2hTdHJpbmcodmFsdWUpOwogICAgICAgICB9CiAKICNpZiAk
dmFsaWRhdG9ySWZkZWZOYW1lCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAg
IHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpIHsK
LSAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3RvclZhbHVl
OjpUeXBlU3RyaW5nPih2YWx1ZSk7CisgICAgICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RW
YWx1ZShJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiB2YWx1ZSkgeworICAgICAgICAgICAgUnVu
dGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZTo6VHlw
ZVN0cmluZz4odmFsdWUpOwogICAgICAgICB9CiAjZW5kaWYgIC8vICR2YWxpZGF0b3JJZmRlZk5h
bWUKICAgICB9OwpAQCAtMzg0LDE0ICszODMsMTQgQEAgc3RydWN0IEFycmF5SXRlbUhlbHBlcjxT
dHJpbmc+IHsKIHRlbXBsYXRlPD4KIHN0cnVjdCBBcnJheUl0ZW1IZWxwZXI8aW50PiB7CiAgICAg
c3RydWN0IFRyYWl0cyB7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSYXcoSW5zcGVjdG9yQXJy
YXkqIGFycmF5LCBpbnQgdmFsdWUpCisgICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSYXcoSW5zcGVj
dG9yOjpJbnNwZWN0b3JBcnJheSogYXJyYXksIGludCB2YWx1ZSkKICAgICAgICAgewogICAgICAg
ICAgICAgYXJyYXktPnB1c2hJbnQodmFsdWUpOwogICAgICAgICB9CiAKICNpZiAkdmFsaWRhdG9y
SWZkZWZOYW1lCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyB2
b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpIHsKKyAgICAgICAg
c3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUq
IHZhbHVlKSB7CiAgICAgICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0SW50KHZhbHVl
KTsKICAgICAgICAgfQogI2VuZGlmICAvLyAkdmFsaWRhdG9ySWZkZWZOYW1lCkBAIC00MDEsMTUg
KzQwMCwxNSBAQCBzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPGludD4gewogdGVtcGxhdGU8Pgogc3Ry
dWN0IEFycmF5SXRlbUhlbHBlcjxkb3VibGU+IHsKICAgICBzdHJ1Y3QgVHJhaXRzIHsKLSAgICAg
ICAgc3RhdGljIHZvaWQgcHVzaFJhdyhJbnNwZWN0b3JBcnJheSogYXJyYXksIGRvdWJsZSB2YWx1
ZSkKKyAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJhdyhJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5
KiBhcnJheSwgZG91YmxlIHZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBhcnJheS0+cHVz
aE51bWJlcih2YWx1ZSk7CiAgICAgICAgIH0KIAogI2lmICR2YWxpZGF0b3JJZmRlZk5hbWUKICAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29y
cmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkgewotICAgICAgICAgICAgUnVudGltZUNh
c3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFsdWU6OlR5cGVOdW1iZXI+KHZhbHVlKTsK
KyAgICAgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3Rvcjo6SW5zcGVj
dG9yVmFsdWUqIHZhbHVlKSB7CisgICAgICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0
VHlwZTxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlOjpUeXBlTnVtYmVyPih2YWx1ZSk7CiAgICAg
ICAgIH0KICNlbmRpZiAgLy8gJHZhbGlkYXRvcklmZGVmTmFtZQogICAgIH07CkBAIC00MTgsMzEg
KzQxNywzMSBAQCBzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPGRvdWJsZT4gewogdGVtcGxhdGU8Pgog
c3RydWN0IEFycmF5SXRlbUhlbHBlcjxib29sPiB7CiAgICAgc3RydWN0IFRyYWl0cyB7Ci0gICAg
ICAgIHN0YXRpYyB2b2lkIHB1c2hSYXcoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBib29sIHZhbHVl
KQorICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmF3KEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkq
IGFycmF5LCBib29sIHZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBhcnJheS0+cHVzaEJv
b2xlYW4odmFsdWUpOwogICAgICAgICB9CiAKICNpZiAkdmFsaWRhdG9ySWZkZWZOYW1lCiAgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJl
Y3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpIHsKLSAgICAgICAgICAgIFJ1bnRpbWVDYXN0
SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3RvclZhbHVlOjpUeXBlQm9vbGVhbj4odmFsdWUpOwor
ICAgICAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yOjpJbnNwZWN0
b3JWYWx1ZSogdmFsdWUpIHsKKyAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRU
eXBlPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU6OlR5cGVCb29sZWFuPih2YWx1ZSk7CiAgICAg
ICAgIH0KICNlbmRpZiAgLy8gJHZhbGlkYXRvcklmZGVmTmFtZQogICAgIH07CiB9OwogCiB0ZW1w
bGF0ZTw+Ci1zdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPEluc3BlY3RvclZhbHVlPiB7CitzdHJ1Y3Qg
QXJyYXlJdGVtSGVscGVyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHsKICAgICBzdHJ1Y3Qg
VHJhaXRzIHsKLSAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0b3JBcnJheSog
YXJyYXksIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQorICAgICAgICBzdGF0aWMg
dm9pZCBwdXNoUmVmUHRyKEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQogICAgICAgICB7CiAgICAgICAg
ICAgICBhcnJheS0+cHVzaFZhbHVlKHZhbHVlKTsKICAgICAgICAgfQogCiAjaWYgJHZhbGlkYXRv
cklmZGVmTmFtZQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMg
dm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKSB7CisgICAgICAg
IHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVl
KiB2YWx1ZSkgewogICAgICAgICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydEFueSh2YWx1
ZSk7CiAgICAgICAgIH0KICNlbmRpZiAgLy8gJHZhbGlkYXRvcklmZGVmTmFtZQpAQCAtNDUwLDM0
ICs0NDksMzQgQEAgc3RydWN0IEFycmF5SXRlbUhlbHBlcjxJbnNwZWN0b3JWYWx1ZT4gewogfTsK
IAogdGVtcGxhdGU8Pgotc3RydWN0IEFycmF5SXRlbUhlbHBlcjxJbnNwZWN0b3JPYmplY3Q+IHsK
K3N0cnVjdCBBcnJheUl0ZW1IZWxwZXI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHsKICAg
ICBzdHJ1Y3QgVHJhaXRzIHsKLSAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0
b3JBcnJheSogYXJyYXksIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQorICAgICAg
ICBzdGF0aWMgdm9pZCBwdXNoUmVmUHRyKEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkqIGFycmF5
LCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQogICAgICAgICB7
CiAgICAgICAgICAgICBhcnJheS0+cHVzaFZhbHVlKHZhbHVlKTsKICAgICAgICAgfQogCiAjaWYg
JHZhbGlkYXRvcklmZGVmTmFtZQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAg
ICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKSB7
Ci0gICAgICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1
ZTo6VHlwZU9iamVjdD4odmFsdWUpOworICAgICAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0
VmFsdWUoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogdmFsdWUpIHsKKyAgICAgICAgICAgIFJ1
bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU6OlR5
cGVPYmplY3Q+KHZhbHVlKTsKICAgICAgICAgfQogI2VuZGlmICAvLyAkdmFsaWRhdG9ySWZkZWZO
YW1lCiAgICAgfTsKIH07CiAKIHRlbXBsYXRlPD4KLXN0cnVjdCBBcnJheUl0ZW1IZWxwZXI8SW5z
cGVjdG9yQXJyYXk+IHsKK3N0cnVjdCBBcnJheUl0ZW1IZWxwZXI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JBcnJheT4gewogICAgIHN0cnVjdCBUcmFpdHMgewotICAgICAgICBzdGF0aWMgdm9pZCBwdXNo
UmVmUHRyKEluc3BlY3RvckFycmF5KiBhcnJheSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4g
dmFsdWUpCisgICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yOjpJbnNwZWN0
b3JBcnJheSogYXJyYXksIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4gdmFs
dWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIGFycmF5LT5wdXNoQXJyYXkodmFsdWUpOwogICAg
ICAgICB9CiAKICNpZiAkdmFsaWRhdG9ySWZkZWZOYW1lCiAgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+Ci0gICAgICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JW
YWx1ZSogdmFsdWUpIHsKLSAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBl
PEluc3BlY3RvclZhbHVlOjpUeXBlQXJyYXk+KHZhbHVlKTsKKyAgICAgICAgc3RhdGljIHZvaWQg
YXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVlKSB7Cisg
ICAgICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3I6Okluc3Bl
Y3RvclZhbHVlOjpUeXBlQXJyYXk+KHZhbHVlKTsKICAgICAgICAgfQogI2VuZGlmICAvLyAkdmFs
aWRhdG9ySWZkZWZOYW1lCiAgICAgfTsKQEAgLTQ4NiwxNCArNDg1LDE0IEBAIHN0cnVjdCBBcnJh
eUl0ZW1IZWxwZXI8SW5zcGVjdG9yQXJyYXk+IHsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdHJ1
Y3QgQXJyYXlJdGVtSGVscGVyPFR5cGVCdWlsZGVyOjpBcnJheTxUPj4gewogICAgIHN0cnVjdCBU
cmFpdHMgewotICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmVmUHRyKEluc3BlY3RvckFycmF5KiBh
cnJheSwgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VD4+IHZhbHVlKQorICAgICAgICBz
dGF0aWMgdm9pZCBwdXNoUmVmUHRyKEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQ
YXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUPj4gdmFsdWUpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGFycmF5LT5wdXNoVmFsdWUodmFsdWUpOwogICAgICAgICB9CiAKICNpZiAkdmFsaWRh
dG9ySWZkZWZOYW1lCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFM+Ci0gICAgICAgIHN0YXRp
YyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpIHsKKyAgICAg
ICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFs
dWUqIHZhbHVlKSB7CiAgICAgICAgICAgICBTOjphc3NlcnRDb3JyZWN0VmFsdWUodmFsdWUpOwog
ICAgICAgICB9CiAjZW5kaWYgIC8vICR2YWxpZGF0b3JJZmRlZk5hbWUKQEAgLTUyNSw2ICs1MjQs
OCBAQCB0eXBlYnVpbGRlcl9jcHAgPSAoCiAjaW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIu
aCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIFR5cGVCdWlsZGVyIHsK
QEAgLTU4NCwxNCArNTg1LDE0IEBAIGNsYXNzX2JpbmRpbmdfYnVpbGRlcl9wYXJ0XzEgPSAoCiAg
ICAgdGVtcGxhdGU8aW50IFNUQVRFPgogICAgIGNsYXNzIEJ1aWxkZXIgewogICAgIHByaXZhdGU6
Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0OworICAgICAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0OwogCiAgICAgICAgIHRlbXBs
YXRlPGludCBTVEVQPiBCdWlsZGVyPFNUQVRFIHwgU1RFUD4mIGNhc3RTdGF0ZSgpCiAgICAgICAg
IHsKICAgICAgICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxCdWlsZGVyPFNUQVRFIHwg
U1RFUD4qPih0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEJ1aWxkZXIoUGFzc1JlZlB0cjwv
KiVzKi9JbnNwZWN0b3JPYmplY3Q+IHB0cikKKyAgICAgICAgQnVpbGRlcihQYXNzUmVmUHRyPC8q
JXMqL0luc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBwdHIpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IE5vRmllbGRzU2V0LCBidWlsZGVyX2NyZWF0ZWRf
aW5fbm9uX2luaXRfc3RhdGUpOwogICAgICAgICAgICAgbV9yZXN1bHQgPSBwdHI7CkBAIC02MTMs
NyArNjE0LDcgQEAgY2xhc3NfYmluZGluZ19idWlsZGVyX3BhcnRfMyA9ICgiIiIKICAgICAgICAg
b3BlcmF0b3IgUmVmUHRyPCVzPiYgKCkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9B
U1NFUlQoU1RBVEUgPT0gQWxsRmllbGRzU2V0LCByZXN1bHRfaXNfbm90X3JlYWR5KTsKLSAgICAg
ICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZiglcykgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVj
dCksIGNhbm5vdF9jYXN0KTsKKyAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZiglcykg
PT0gc2l6ZW9mKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOwogICAg
ICAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PFJlZlB0cjwlcz4qPigmbV9yZXN1bHQp
OwogICAgICAgICB9CiAKQEAgLTYyOCw2ICs2MjksNiBAQCBjbGFzc19iaW5kaW5nX2J1aWxkZXJf
cGFydF8zID0gKCIiIgogY2xhc3NfYmluZGluZ19idWlsZGVyX3BhcnRfNCA9ICgKICIiIiAgICBz
dGF0aWMgQnVpbGRlcjxOb0ZpZWxkc1NldD4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKKyAgICAg
ICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
OjpjcmVhdGUoKSk7CiAgICAgfQogIiIiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25z
b2xlTWVzc2FnZS5jcHAKaW5kZXggMGM5NzBiOC4uYjQ5MzdmOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCkBAIC0zOCwxNCArMzgsMTYgQEAKICNpbmNs
dWRlICJJZGVudGlmaWVyc0ZhY3RvcnkuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgog
I2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZh
bHVlcy5oIgogI2luY2x1ZGUgIlNjcmlwdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNjcmlwdENh
bGxGcmFtZS5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlNjcmlw
dENhbGxTdGFja0ZhY3RvcnkuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUg
PGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZh
bHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ29uc29sZU1lc3NhZ2U6OkNvbnNv
bGVNZXNzYWdlKGJvb2wgY2FuR2VuZXJhdGVDYWxsU3RhY2ssIE1lc3NhZ2VTb3VyY2Ugc291cmNl
LCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKQEAgLTIwNiw4ICsyMDgsOCBA
QCB2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKEluc3BlY3RvckNvbnNvbGVGcm9u
dGVuZERpc3BhdGNoZXIqIGNvbnNvbGVGcgogICAgICAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhh
c05vVmFsdWUoKSkgewogICAgICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBl
QnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pj4ganNvbkFyZ3MgPSBUeXBlQnVpbGRlcjo6
QXJyYXk8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD46OmNyZWF0ZSgpOwogICAg
ICAgICAgICAgaWYgKG1fdHlwZSA9PSBUYWJsZU1lc3NhZ2VUeXBlICYmIGdlbmVyYXRlUHJldmll
dyAmJiBtX2FyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgpKSB7Ci0gICAgICAgICAgICAgICAgU2Ny
aXB0VmFsdWUgdGFibGUgPSBtX2FyZ3VtZW50cy0+YXJndW1lbnRBdCgwKTsKLSAgICAgICAgICAg
ICAgICBTY3JpcHRWYWx1ZSBjb2x1bW5zID0gbV9hcmd1bWVudHMtPmFyZ3VtZW50Q291bnQoKSA+
IDEgPyBtX2FyZ3VtZW50cy0+YXJndW1lbnRBdCgxKSA6IFNjcmlwdFZhbHVlKCk7CisgICAgICAg
ICAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgdGFibGUgPSBtX2FyZ3VtZW50cy0+YXJn
dW1lbnRBdCgwKTsKKyAgICAgICAgICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBjb2x1
bW5zID0gbV9hcmd1bWVudHMtPmFyZ3VtZW50Q291bnQoKSA+IDEgPyBtX2FyZ3VtZW50cy0+YXJn
dW1lbnRBdCgxKSA6IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCk7CiAgICAgICAgICAgICAgICAg
UmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IGluc3BlY3RvclZhbHVl
ID0gaW5qZWN0ZWRTY3JpcHQud3JhcFRhYmxlKHRhYmxlLCBjb2x1bW5zKTsKICAgICAgICAgICAg
ICAgICBpZiAoIWluc3BlY3RvclZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNv
bGVNZXNzYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaApp
bmRleCAwN2Y4OGI2Li43ZmQxNmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvQ29uc29sZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29s
ZU1lc3NhZ2UuaApAQCAtMzgsMTUgKzM4LDE3IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3Mg
SW5zcGVjdG9yT2JqZWN0OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERPTVdp
bmRvdzsKIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKLWNsYXNzIEluc3BlY3Rvck9iamVj
dDsKIGNsYXNzIFNjcmlwdEFyZ3VtZW50czsKIGNsYXNzIFNjcmlwdENhbGxGcmFtZTsKIGNsYXNz
IFNjcmlwdENhbGxTdGFjazsKLWNsYXNzIFNjcmlwdFZhbHVlOwogCiBjbGFzcyBDb25zb2xlTWVz
c2FnZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29uc29sZU1lc3NhZ2UpOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9D
b250ZW50U2VhcmNoVXRpbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRT
ZWFyY2hVdGlscy5jcHAKaW5kZXggMDNhODA1Zi4uYjNkOWFhOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAKQEAgLTMxLDE0ICszMSwxNCBA
QAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKICNpbmNsdWRlICJDb250ZW50U2VhcmNoVXRpbHMu
aCIKLQotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIlJlZ3VsYXJFeHBy
ZXNzaW9uLmgiCi0KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5j
bHVkZSA8d3RmL0J1bXBQb2ludGVyQWxsb2NhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogI2luY2x1ZGUgPHlhcnIvWWFyci5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgQ29udGVudFNlYXJjaFV0aWxz
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hV
dGlscy5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5oCmlu
ZGV4IDYwYWQ2NzguLjdiNWRmMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db250ZW50U2VhcmNoVXRpbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29u
dGVudFNlYXJjaFV0aWxzLmgKQEAgLTM4LDcgKzM4LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBJbnNwZWN0b3JBcnJheTsKIGNsYXNzIFJlZ3VsYXJFeHByZXNzaW9uOwogCiBu
YW1lc3BhY2UgQ29udGVudFNlYXJjaFV0aWxzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHQuY3BwCmluZGV4IDc3Zjc4MGMuLmVlM2JhMTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcApAQCAtMzYsMTAgKzM2LDExIEBACiAK
ICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlw
dE1vZHVsZS5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgorI2luY2x1ZGUgIkpTTWFp
blRocmVhZEV4ZWNTdGF0ZS5oIgogI2luY2x1ZGUgIk5vZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRG
dW5jdGlvbkNhbGwuaCIKLSNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNs
dWRlIDxiaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaD4KKyNpbmNsdWRlIDxiaW5kaW5ncy9T
Y3JpcHRPYmplY3QuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWls
ZGVyOjpBcnJheTsKQEAgLTQ5LDYgKzUwLDggQEAgdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6
OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yOwogdXNpbmcgV2ViQ29yZTo6VHlw
ZUJ1aWxkZXI6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM7CiB1c2luZyBXZWJDb3JlOjpUeXBl
QnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0OwogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEluamVjdGVkU2NyaXB0OjpJbmplY3RlZFNj
cmlwdCgpCkBAIC01NiwxNCArNTksMTQgQEAgSW5qZWN0ZWRTY3JpcHQ6OkluamVjdGVkU2NyaXB0
KCkKIHsKIH0KIAotSW5qZWN0ZWRTY3JpcHQ6OkluamVjdGVkU2NyaXB0KFNjcmlwdE9iamVjdCBp
bmplY3RlZFNjcmlwdE9iamVjdCwgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayBhY2Nlc3NDaGVj
aykKK0luamVjdGVkU2NyaXB0OjpJbmplY3RlZFNjcmlwdChEZXByZWNhdGVkOjpTY3JpcHRPYmpl
Y3QgaW5qZWN0ZWRTY3JpcHRPYmplY3QsIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sgYWNjZXNz
Q2hlY2spCiAgICAgOiBJbmplY3RlZFNjcmlwdEJhc2UoIkluamVjdGVkU2NyaXB0IiwgaW5qZWN0
ZWRTY3JpcHRPYmplY3QsIGFjY2Vzc0NoZWNrKQogewogfQogCiB2b2lkIEluamVjdGVkU2NyaXB0
OjpldmFsdWF0ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZXhwcmVz
c2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVB
UEksIGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxUeXBl
QnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBUeXBlQnVpbGRlcjo6T3B0
T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCiB7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0
aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJldmFsdWF0ZSIpOworICAgIERlcHJlY2F0ZWQ6
OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZXZh
bHVhdGUiLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAg
ZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZXhwcmVzc2lvbik7CiAgICAgZnVuY3Rpb24uYXBwZW5k
QXJndW1lbnQob2JqZWN0R3JvdXApOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGluY2x1
ZGVDb21tYW5kTGluZUFQSSk7CkBAIC03NCw3ICs3Nyw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6
OmV2YWx1YXRlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBleHByZXNz
aW9uCiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBleHByZXNz
aW9uLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50cywgYm9vbCByZXR1cm5CeVZhbHVlLCBib29sIGdl
bmVyYXRlUHJldmlldywgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+
KiByZXN1bHQsIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKIHsKLSAg
ICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImNh
bGxGdW5jdGlvbk9uIik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0
aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJjYWxsRnVuY3Rpb25PbiIsIFdlYkNvcmU6OmZ1
bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1
bWVudChvYmplY3RJZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZXhwcmVzc2lvbik7
CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoYXJndW1lbnRzKTsKQEAgLTgzLDkgKzg2LDkg
QEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamUKICAgICBtYWtlRXZhbENhbGwoZXJyb3JTdHJpbmcs
IGZ1bmN0aW9uLCByZXN1bHQsIHdhc1Rocm93bik7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6
OmV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTY3Jp
cHRWYWx1ZSYgY2FsbEZyYW1lcywgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3Ry
aW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVD
b21tYW5kTGluZUFQSSwgYm9vbCByZXR1cm5CeVZhbHVlLCBib29sIGdlbmVyYXRlUHJldmlldywg
UmVmUHRyPFJlbW90ZU9iamVjdD4qIHJlc3VsdCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29s
Piogd2FzVGhyb3duKQordm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBj
YWxsRnJhbWVzLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJl
c3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5l
QVBJLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8UmVt
b3RlT2JqZWN0PiogcmVzdWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJv
d24pCiB7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2Jq
ZWN0KCksICJldmFsdWF0ZU9uQ2FsbEZyYW1lIik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVu
Y3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJldmFsdWF0ZU9uQ2Fs
bEZyYW1lIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAg
IGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNhbGxGcmFtZXMpOwogICAgIGZ1bmN0aW9uLmFwcGVu
ZEFyZ3VtZW50KGNhbGxGcmFtZUlkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChleHBy
ZXNzaW9uKTsKQEAgLTk4LDcgKzEwMSw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRl
T25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTY3JpcHRWCiAKIHZv
aWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPEZ1bmN0aW9uRGV0YWlscz4q
IHJlc3VsdCkKIHsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3Jp
cHRPYmplY3QoKSwgImdldEZ1bmN0aW9uRGV0YWlscyIpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlw
dEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZ2V0RnVuY3Rp
b25EZXRhaWxzIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwog
ICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGZ1bmN0aW9uSWQpOwogICAgIFJlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4gcmVzdWx0VmFsdWU7CiAgICAgbWFrZUNhbGwoZnVuY3Rpb24sICZyZXN1bHRW
YWx1ZSk7CkBAIC0xMTIsNyArMTE1LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0RnVuY3Rp
b25EZXRhaWxzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJgogCiB2b2lk
IEluamVjdGVkU2NyaXB0OjpnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW5nJiBvYmplY3RJZCwgYm9vbCBvd25Qcm9wZXJ0aWVzLCBSZWZQdHI8QXJyYXk8
UHJvcGVydHlEZXNjcmlwdG9yPj4qIHByb3BlcnRpZXMpCiB7Ci0gICAgU2NyaXB0RnVuY3Rpb25D
YWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJnZXRQcm9wZXJ0aWVzIik7Cisg
ICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0
T2JqZWN0KCksICJnZXRQcm9wZXJ0aWVzIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZy
b21BbnlUaHJlYWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKICAg
ICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvd25Qcm9wZXJ0aWVzKTsKIApAQCAtMTI3LDcgKzEz
MCw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjCiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6Omdl
dEludGVybmFsUHJvcGVydGllcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgb2JqZWN0SWQsIFJlZlB0cjxBcnJheTxJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+KiBw
cm9wZXJ0aWVzKQogewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNj
cmlwdE9iamVjdCgpLCAiZ2V0SW50ZXJuYWxQcm9wZXJ0aWVzIik7CisgICAgRGVwcmVjYXRlZDo6
U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJnZXRJ
bnRlcm5hbFByb3BlcnRpZXMiLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRo
cmVhZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQpOwogCiAgICAgUmVm
UHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHQ7CkBAIC0xNDYsMTEgKzE0OSwxMSBAQCBOb2RlKiBJ
bmplY3RlZFNjcmlwdDo6bm9kZUZvck9iamVjdElkKGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpCiAg
ICAgaWYgKGhhc05vVmFsdWUoKSB8fCAhY2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KCkpCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVk
U2NyaXB0T2JqZWN0KCksICJub2RlRm9yT2JqZWN0SWQiKTsKKyAgICBEZXByZWNhdGVkOjpTY3Jp
cHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgIm5vZGVGb3JP
YmplY3RJZCIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAg
ICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RJZCk7CiAKICAgICBib29sIGhhZEV4Y2Vw
dGlvbiA9IGZhbHNlOwotICAgIFNjcmlwdFZhbHVlIHJlc3VsdFZhbHVlID0gY2FsbEZ1bmN0aW9u
V2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOworICAgIERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlIHJlc3VsdFZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1
bmN0aW9uLCBoYWRFeGNlcHRpb24pOwogICAgIEFTU0VSVCghaGFkRXhjZXB0aW9uKTsKIAogICAg
IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3Q6OnNjcmlwdFZhbHVlQXNOb2RlKHJlc3VsdFZhbHVl
KTsKQEAgLTE1OCwyMCArMTYxLDIwIEBAIE5vZGUqIEluamVjdGVkU2NyaXB0Ojpub2RlRm9yT2Jq
ZWN0SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJZCkKIAogdm9pZCBJbmplY3RlZFNjcmlwdDo6cmVs
ZWFzZU9iamVjdChjb25zdCBTdHJpbmcmIG9iamVjdElkKQogewotICAgIFNjcmlwdEZ1bmN0aW9u
Q2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAicmVsZWFzZU9iamVjdCIpOwor
ICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlw
dE9iamVjdCgpLCAicmVsZWFzZU9iamVjdCIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJG
cm9tQW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RJZCk7CiAg
ICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHQ7CiAgICAgbWFrZUNhbGwoZnVuY3Rpb24s
ICZyZXN1bHQpOwogfQogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi1QYXNzUmVm
UHRyPEFycmF5PENhbGxGcmFtZT4+IEluamVjdGVkU2NyaXB0Ojp3cmFwQ2FsbEZyYW1lcyhjb25z
dCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcykKK1Bhc3NSZWZQdHI8QXJyYXk8Q2FsbEZyYW1lPj4g
SW5qZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVzKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlJiBjYWxsRnJhbWVzKQogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKLSAgICBTY3Jp
cHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgIndyYXBDYWxs
RnJhbWVzIik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGlu
amVjdGVkU2NyaXB0T2JqZWN0KCksICJ3cmFwQ2FsbEZyYW1lcyIsIFdlYkNvcmU6OmZ1bmN0aW9u
Q2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChj
YWxsRnJhbWVzKTsKICAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwotICAgIFNjcmlwdFZh
bHVlIGNhbGxGcmFtZXNWYWx1ZSA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlv
biwgaGFkRXhjZXB0aW9uKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBjYWxsRnJhbWVz
VmFsdWUgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlv
bik7CiAgICAgQVNTRVJUKCFoYWRFeGNlcHRpb24pOwogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1
ZT4gcmVzdWx0ID0gY2FsbEZyYW1lc1ZhbHVlLnRvSW5zcGVjdG9yVmFsdWUoc2NyaXB0U3RhdGUo
KSk7CiAgICAgaWYgKHJlc3VsdC0+dHlwZSgpID09IEluc3BlY3RvclZhbHVlOjpUeXBlQXJyYXkp
CkBAIC0xODAsMjYgKzE4MywyNiBAQCBQYXNzUmVmUHRyPEFycmF5PENhbGxGcmFtZT4+IEluamVj
dGVkU2NyaXB0Ojp3cmFwQ2FsbEZyYW1lcyhjb25zdCBTY3JpcHRWYWx1ZSYgYwogfQogI2VuZGlm
CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0
ZWRTY3JpcHQ6OndyYXBPYmplY3QoY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTdHJp
bmcmIGdyb3VwTmFtZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcpIGNvbnN0CitQYXNzUmVmUHRyPFR5
cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwT2Jq
ZWN0KGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBn
cm91cE5hbWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3KSBjb25zdAogewogICAgIEFTU0VSVCghaGFz
Tm9WYWx1ZSgpKTsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgd3JhcEZ1bmN0aW9uKGluamVjdGVk
U2NyaXB0T2JqZWN0KCksICJ3cmFwT2JqZWN0Iik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVu
Y3Rpb25DYWxsIHdyYXBGdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAid3JhcE9iamVj
dCIpOwogICAgIHdyYXBGdW5jdGlvbi5hcHBlbmRBcmd1bWVudCh2YWx1ZSk7CiAgICAgd3JhcEZ1
bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGdyb3VwTmFtZSk7CiAgICAgd3JhcEZ1bmN0aW9uLmFwcGVu
ZEFyZ3VtZW50KGNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdygpKTsKICAgICB3cmFwRnVuY3Rpb24u
YXBwZW5kQXJndW1lbnQoZ2VuZXJhdGVQcmV2aWV3KTsKICAgICBib29sIGhhZEV4Y2VwdGlvbiA9
IGZhbHNlOwotICAgIFNjcmlwdFZhbHVlIHIgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQo
d3JhcEZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
IHIgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQod3JhcEZ1bmN0aW9uLCBoYWRFeGNlcHRp
b24pOwogICAgIGlmIChoYWRFeGNlcHRpb24pCiAgICAgICAgIHJldHVybiAwOwogICAgIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IHJhd1Jlc3VsdCA9IHIudG9JbnNwZWN0b3JWYWx1ZShzY3JpcHRT
dGF0ZSgpKS0+YXNPYmplY3QoKTsKICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJl
bW90ZU9iamVjdDo6cnVudGltZUNhc3QocmF3UmVzdWx0KTsKIH0KIAotUGFzc1JlZlB0cjxUeXBl
QnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcFRhYmxl
KGNvbnN0IFNjcmlwdFZhbHVlJiB0YWJsZSwgY29uc3QgU2NyaXB0VmFsdWUmIGNvbHVtbnMpIGNv
bnN0CitQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVj
dGVkU2NyaXB0Ojp3cmFwVGFibGUoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHRhYmxl
LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgY29sdW1ucykgY29uc3QKIHsKICAgICBB
U1NFUlQoIWhhc05vVmFsdWUoKSk7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIHdyYXBGdW5jdGlv
bihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAid3JhcFRhYmxlIik7CisgICAgRGVwcmVjYXRlZDo6
U2NyaXB0RnVuY3Rpb25DYWxsIHdyYXBGdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAi
d3JhcFRhYmxlIik7CiAgICAgd3JhcEZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNhbkFjY2Vzc0lu
c3BlY3RlZFdpbmRvdygpKTsKICAgICB3cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1lbnQodGFibGUp
OwogICAgIGlmIChjb2x1bW5zLmhhc05vVmFsdWUoKSkKQEAgLTIwNyw3ICsyMTAsNyBAQCBQYXNz
UmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0
Ojp3cmFwVGFibGUoY29uc3QgUwogICAgIGVsc2UKICAgICAgICAgd3JhcEZ1bmN0aW9uLmFwcGVu
ZEFyZ3VtZW50KGNvbHVtbnMpOwogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAg
U2NyaXB0VmFsdWUgciA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZCh3cmFwRnVuY3Rpb24s
IGhhZEV4Y2VwdGlvbik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgciA9IGNhbGxGdW5j
dGlvbldpdGhFdmFsRW5hYmxlZCh3cmFwRnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CiAgICAgaWYg
KGhhZEV4Y2VwdGlvbikKICAgICAgICAgcmV0dXJuIDA7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gcmF3UmVzdWx0ID0gci50b0luc3BlY3RvclZhbHVlKHNjcmlwdFN0YXRlKCkpLT5hc09i
amVjdCgpOwpAQCAtMjE5LDE0ICsyMjIsMTQgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcE5vZGUoTm9kZSogbm8KICAg
ICByZXR1cm4gd3JhcE9iamVjdChub2RlQXNTY3JpcHRWYWx1ZShub2RlKSwgZ3JvdXBOYW1lKTsK
IH0KIAotU2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHQ6OmZpbmRPYmplY3RCeUlkKGNvbnN0IFN0
cmluZyYgb2JqZWN0SWQpIGNvbnN0CitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBJbmplY3RlZFNj
cmlwdDo6ZmluZE9iamVjdEJ5SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJZCkgY29uc3QKIHsKICAg
ICBBU1NFUlQoIWhhc05vVmFsdWUoKSk7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9u
KGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJmaW5kT2JqZWN0QnlJZCIpOworICAgIERlcHJlY2F0
ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAi
ZmluZE9iamVjdEJ5SWQiLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVh
ZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQpOwogCiAgICAgYm9vbCBo
YWRFeGNlcHRpb24gPSBmYWxzZTsKLSAgICBTY3JpcHRWYWx1ZSByZXN1bHRWYWx1ZSA9IGNhbGxG
dW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKKyAgICBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSByZXN1bHRWYWx1ZSA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5h
YmxlZChmdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKICAgICBBU1NFUlQoIWhhZEV4Y2VwdGlvbik7
CiAgICAgcmV0dXJuIHJlc3VsdFZhbHVlOwogfQpAQCAtMjM0LDcgKzIzNyw3IEBAIFNjcmlwdFZh
bHVlIEluamVjdGVkU2NyaXB0OjpmaW5kT2JqZWN0QnlJZChjb25zdCBTdHJpbmcmIG9iamVjdElk
KSBjb25zdAogdm9pZCBJbmplY3RlZFNjcmlwdDo6aW5zcGVjdE5vZGUoTm9kZSogbm9kZSkKIHsK
ICAgICBBU1NFUlQoIWhhc05vVmFsdWUoKSk7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0
aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJpbnNwZWN0Tm9kZSIpOworICAgIERlcHJlY2F0
ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAi
aW5zcGVjdE5vZGUiLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7
CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQobm9kZUFzU2NyaXB0VmFsdWUobm9kZSkpOwog
ICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0OwogICAgIG1ha2VDYWxsKGZ1bmN0aW9u
LCAmcmVzdWx0KTsKQEAgLTI0MywxNCArMjQ2LDE0IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6Omlu
c3BlY3ROb2RlKE5vZGUqIG5vZGUpCiB2b2lkIEluamVjdGVkU2NyaXB0OjpyZWxlYXNlT2JqZWN0
R3JvdXAoY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCkKIHsKICAgICBBU1NFUlQoIWhhc05vVmFs
dWUoKSk7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIHJlbGVhc2VGdW5jdGlvbihpbmplY3RlZFNj
cmlwdE9iamVjdCgpLCAicmVsZWFzZU9iamVjdEdyb3VwIik7CisgICAgRGVwcmVjYXRlZDo6U2Ny
aXB0RnVuY3Rpb25DYWxsIHJlbGVhc2VGdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAi
cmVsZWFzZU9iamVjdEdyb3VwIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlU
aHJlYWQpOwogICAgIHJlbGVhc2VGdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RHcm91cCk7
CiAgICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKICAgICBjYWxsRnVuY3Rpb25XaXRoRXZh
bEVuYWJsZWQocmVsZWFzZUZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwogICAgIEFTU0VSVCghaGFk
RXhjZXB0aW9uKTsKIH0KIAotU2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHQ6Om5vZGVBc1Njcmlw
dFZhbHVlKE5vZGUqIG5vZGUpCitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlw
dDo6bm9kZUFzU2NyaXB0VmFsdWUoTm9kZSogbm9kZSkKIHsKICAgICByZXR1cm4gSW5qZWN0ZWRT
Y3JpcHRIb3N0Ojpub2RlQXNTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZSgpLCBub2RlKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKaW5kZXggOWI2YWQyZi4uYTk2
MTgxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKQEAgLTM1
LDE3ICszNSwxOSBAQAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgogI2luY2x1
ZGUgIkluc3BlY3RvclR5cGVCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0QXJndW1lbnRzLmgi
Ci0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAorbmFtZXNwYWNlIERlcHJlY2F0ZWQgeworY2xhc3Mg
U2NyaXB0T2JqZWN0OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEluamVjdGVk
U2NyaXB0TW9kdWxlOwogY2xhc3MgTm9kZTsKLWNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsK
IAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKQEAgLTcxLDcgKzczLDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q+KiByZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlQnVpbGRlcjo6T3B0
T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOwogICAgIHZvaWQgZXZhbHVhdGVPbkNhbGxGcmFtZShF
cnJvclN0cmluZyosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNjcmlwdFZh
bHVlJiBjYWxsRnJhbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLApAQCAtODcsMTMgKzg5LDEzIEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlbGVhc2VPYmplY3QoY29uc3QgU3RyaW5nJiBvYmplY3RJZCk7CiAKICNp
ZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcnJheTxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IHdyYXBDYWxsRnJhbWVz
KGNvbnN0IFNjcmlwdFZhbHVlJik7CisgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8
VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiB3cmFwQ2FsbEZyYW1lcyhjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYpOwogI2VuZGlmCiAKLSAgICBQYXNzUmVmUHRyPFR5cGVC
dWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHdyYXBPYmplY3QoY29uc3QgU2NyaXB0VmFs
dWUmLCBjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcgPSBmYWxz
ZSkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0PiB3cmFwVGFibGUoY29uc3QgU2NyaXB0VmFsdWUmIHRhYmxlLCBjb25zdCBTY3JpcHRWYWx1
ZSYgY29sdW1ucykgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6
UmVtb3RlT2JqZWN0PiB3cmFwT2JqZWN0KGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwg
Y29uc3QgU3RyaW5nJiBncm91cE5hbWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3ID0gZmFsc2UpIGNv
bnN0OworICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4g
d3JhcFRhYmxlKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB0YWJsZSwgY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmIGNvbHVtbnMpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8VHlw
ZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gd3JhcE5vZGUoTm9kZSosIGNvbnN0IFN0
cmluZyYgZ3JvdXBOYW1lKTsKLSAgICBTY3JpcHRWYWx1ZSBmaW5kT2JqZWN0QnlJZChjb25zdCBT
dHJpbmcmIG9iamVjdElkKSBjb25zdDsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBmaW5k
T2JqZWN0QnlJZChjb25zdCBTdHJpbmcmIG9iamVjdElkKSBjb25zdDsKIAogICAgIHZvaWQgaW5z
cGVjdE5vZGUoTm9kZSopOwogICAgIHZvaWQgcmVsZWFzZU9iamVjdEdyb3VwKGNvbnN0IFN0cmlu
ZyYpOwpAQCAtMTAxLDkgKzEwMyw5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNs
YXNzIEluamVjdGVkU2NyaXB0TW9kdWxlOwogICAgIGZyaWVuZCBJbmplY3RlZFNjcmlwdCBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKEpTQzo6RXhlY1N0YXRlKik7Ci0g
ICAgSW5qZWN0ZWRTY3JpcHQoU2NyaXB0T2JqZWN0LCBJbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNr
KTsKKyAgICBJbmplY3RlZFNjcmlwdChEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QsIEluc3BlY3Rl
ZFN0YXRlQWNjZXNzQ2hlY2spOwogCi0gICAgU2NyaXB0VmFsdWUgbm9kZUFzU2NyaXB0VmFsdWUo
Tm9kZSopOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG5vZGVBc1NjcmlwdFZhbHVlKE5v
ZGUqKTsKIH07CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRCYXNlLmNwcAppbmRleCBkOWZiYTQwLi43MzA0OGUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcApAQCAtMzUsMTMgKzM1LDE1
IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRCYXNlLmgiCiAKICNpbmNsdWRlICJJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKLSNpbmNs
dWRlICJTY3JpcHRGdW5jdGlvbkNhbGwuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRGdW5j
dGlvbkNhbGwuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5j
bHVkZSA8cnVudGltZS9KU0dsb2JhbE9iamVjdC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0OwogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIEluamVjdGVkU2NyaXB0QmFzZTo6SW5qZWN0ZWRTY3JpcHRCYXNlKGNvbnN0IFN0cmluZyYg
bmFtZSkKQEAgLTUwLDE0ICs1MiwxNCBAQCBJbmplY3RlZFNjcmlwdEJhc2U6OkluamVjdGVkU2Ny
aXB0QmFzZShjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiB9CiAKLUluamVjdGVkU2NyaXB0QmFzZTo6
SW5qZWN0ZWRTY3JpcHRCYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgU2NyaXB0T2JqZWN0IGluamVj
dGVkU2NyaXB0T2JqZWN0LCBJbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrIGFjY2Vzc0NoZWNrKQor
SW5qZWN0ZWRTY3JpcHRCYXNlOjpJbmplY3RlZFNjcmlwdEJhc2UoY29uc3QgU3RyaW5nJiBuYW1l
LCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgaW5qZWN0ZWRTY3JpcHRPYmplY3QsIEluc3BlY3Rl
ZFN0YXRlQWNjZXNzQ2hlY2sgYWNjZXNzQ2hlY2spCiAgICAgOiBtX25hbWUobmFtZSkKICAgICAs
IG1faW5qZWN0ZWRTY3JpcHRPYmplY3QoaW5qZWN0ZWRTY3JpcHRPYmplY3QpCiAgICAgLCBtX2lu
c3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2soYWNjZXNzQ2hlY2spCiB7CiB9CiAKLXZvaWQgSW5qZWN0
ZWRTY3JpcHRCYXNlOjppbml0aWFsaXplKFNjcmlwdE9iamVjdCBpbmplY3RlZFNjcmlwdE9iamVj
dCwgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayBhY2Nlc3NDaGVjaykKK3ZvaWQgSW5qZWN0ZWRT
Y3JpcHRCYXNlOjppbml0aWFsaXplKERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBpbmplY3RlZFNj
cmlwdE9iamVjdCwgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayBhY2Nlc3NDaGVjaykKIHsKICAg
ICBtX2luamVjdGVkU2NyaXB0T2JqZWN0ID0gaW5qZWN0ZWRTY3JpcHRPYmplY3Q7CiAgICAgbV9p
bnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrID0gYWNjZXNzQ2hlY2s7CkBAIC02OCwxMiArNzAsMTIg
QEAgYm9vbCBJbmplY3RlZFNjcmlwdEJhc2U6OmNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdygpIGNv
bnN0CiAgICAgcmV0dXJuIG1faW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayhtX2luamVjdGVkU2Ny
aXB0T2JqZWN0LnNjcmlwdFN0YXRlKCkpOwogfQogCi1jb25zdCBTY3JpcHRPYmplY3QmIEluamVj
dGVkU2NyaXB0QmFzZTo6aW5qZWN0ZWRTY3JpcHRPYmplY3QoKSBjb25zdAorY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0T2JqZWN0JiBJbmplY3RlZFNjcmlwdEJhc2U6OmluamVjdGVkU2NyaXB0T2Jq
ZWN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pbmplY3RlZFNjcmlwdE9iamVjdDsKIH0KIAot
U2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHRCYXNlOjpjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJs
ZWQoU2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwgYm9vbCYgaGFkRXhjZXB0aW9uKSBjb25z
dAorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHRCYXNlOjpjYWxsRnVuY3Rp
b25XaXRoRXZhbEVuYWJsZWQoRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlv
biwgYm9vbCYgaGFkRXhjZXB0aW9uKSBjb25zdAogewogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJvbUV4
ZWNTdGF0ZShtX2luamVjdGVkU2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRlKCkpOwogICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxDYWxsRnVuY3Rpb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgbmFtZSgpLCAxKTsK
QEAgLTg3LDcgKzg5LDcgQEAgU2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHRCYXNlOjpjYWxsRnVu
Y3Rpb25XaXRoRXZhbEVuYWJsZWQoU2NyaXB0RnVuY3Rpb25DYWxsJgogICAgICAgICAgICAgc2Ny
aXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+c2V0RXZhbEVuYWJsZWQodHJ1ZSk7CiAg
ICAgfQogCi0gICAgU2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBmdW5jdGlvbi5jYWxsKGhhZEV4
Y2VwdGlvbik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBmdW5j
dGlvbi5jYWxsKGhhZEV4Y2VwdGlvbik7CiAKICAgICBpZiAoZXZhbElzRGlzYWJsZWQpCiAgICAg
ICAgIHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnNldEV2YWxFbmFibGVkKGZh
bHNlKTsKQEAgLTk2LDcgKzk4LDcgQEAgU2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHRCYXNlOjpj
YWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoU2NyaXB0RnVuY3Rpb25DYWxsJgogICAgIHJldHVy
biByZXN1bHRWYWx1ZTsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6Om1ha2VDYWxsKFNj
cmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24sIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3Vs
dCkKK3ZvaWQgSW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtlQ2FsbChEZXByZWNhdGVkOjpTY3JpcHRG
dW5jdGlvbkNhbGwmIGZ1bmN0aW9uLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCiB7
CiAgICAgaWYgKGhhc05vVmFsdWUoKSB8fCAhY2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KCkpIHsK
ICAgICAgICAgKnJlc3VsdCA9IEluc3BlY3RvclZhbHVlOjpudWxsKCk7CkBAIC0xMDQsNyArMTA2
LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6Om1ha2VDYWxsKFNjcmlwdEZ1bmN0aW9uQ2Fs
bCYgZnVuY3Rpb24sIFJlZlB0cjxJbnNwZWN0b3IKICAgICB9CiAKICAgICBib29sIGhhZEV4Y2Vw
dGlvbiA9IGZhbHNlOwotICAgIFNjcmlwdFZhbHVlIHJlc3VsdFZhbHVlID0gY2FsbEZ1bmN0aW9u
V2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOworICAgIERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlIHJlc3VsdFZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1
bmN0aW9uLCBoYWRFeGNlcHRpb24pOwogCiAgICAgQVNTRVJUKCFoYWRFeGNlcHRpb24pOwogICAg
IGlmICghaGFkRXhjZXB0aW9uKSB7CkBAIC0xMTUsNyArMTE3LDcgQEAgdm9pZCBJbmplY3RlZFNj
cmlwdEJhc2U6Om1ha2VDYWxsKFNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24sIFJlZlB0cjxJ
bnNwZWN0b3IKICAgICAgICAgKnJlc3VsdCA9IEluc3BlY3RvclN0cmluZzo6Y3JlYXRlKCJFeGNl
cHRpb24gd2hpbGUgbWFraW5nIGEgY2FsbC4iKTsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdEJh
c2U6Om1ha2VFdmFsQ2FsbChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFNjcmlwdEZ1bmN0aW9u
Q2FsbCYgZnVuY3Rpb24sIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0
Piogb2JqZWN0UmVzdWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24p
Cit2b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUV2YWxDYWxsKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwgUmVmUHRy
PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiBvYmplY3RSZXN1bHQsIFR5cGVC
dWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKIHsKICAgICBSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+IHJlc3VsdDsKICAgICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJlc3VsdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmgKaW5kZXggNzk2ZjZj
MC4uMWNkMGUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dEJhc2UuaApAQCAtMzIsMTQgKzMyLDE5IEBACiAjZGVmaW5lIEluamVjdGVkU2NyaXB0QmFzZV9o
CiAKICNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgotI2luY2x1ZGUgIlNjcmlwdE9i
amVjdC5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7CituYW1lc3BhY2UgRGVwcmVjYXRlZCB7CitjbGFzcyBTY3JpcHRGdW5jdGlvbkNhbGw7Cit9
CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3MgSW5zcGVjdG9yVmFsdWU7Ci1jbGFzcyBT
Y3JpcHRGdW5jdGlvbkNhbGw7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAogdHlwZWRlZiBT
dHJpbmcgRXJyb3JTdHJpbmc7CiAKQEAgLTU2LDE4ICs2MSwxOCBAQCBwdWJsaWM6CiBwcm90ZWN0
ZWQ6CiAgICAgdHlwZWRlZiBib29sICgqSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjaykoSlNDOjpF
eGVjU3RhdGUqKTsKICAgICBJbmplY3RlZFNjcmlwdEJhc2UoY29uc3QgU3RyaW5nJiBuYW1lKTsK
LSAgICBJbmplY3RlZFNjcmlwdEJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBTY3JpcHRPYmplY3Qs
IEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOworICAgIEluamVjdGVkU2NyaXB0QmFzZShjb25z
dCBTdHJpbmcmIG5hbWUsIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCwgSW5zcGVjdGVkU3RhdGVB
Y2Nlc3NDaGVjayk7CiAKLSAgICB2b2lkIGluaXRpYWxpemUoU2NyaXB0T2JqZWN0LCBJbnNwZWN0
ZWRTdGF0ZUFjY2Vzc0NoZWNrKTsKKyAgICB2b2lkIGluaXRpYWxpemUoRGVwcmVjYXRlZDo6U2Ny
aXB0T2JqZWN0LCBJbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKTsKICAgICBib29sIGNhbkFjY2Vz
c0luc3BlY3RlZFdpbmRvdygpIGNvbnN0OwotICAgIGNvbnN0IFNjcmlwdE9iamVjdCYgaW5qZWN0
ZWRTY3JpcHRPYmplY3QoKSBjb25zdDsKLSAgICBTY3JpcHRWYWx1ZSBjYWxsRnVuY3Rpb25XaXRo
RXZhbEVuYWJsZWQoU2NyaXB0RnVuY3Rpb25DYWxsJiwgYm9vbCYgaGFkRXhjZXB0aW9uKSBjb25z
dDsKLSAgICB2b2lkIG1ha2VDYWxsKFNjcmlwdEZ1bmN0aW9uQ2FsbCYsIFJlZlB0cjxJbnNwZWN0
b3JWYWx1ZT4qIHJlc3VsdCk7Ci0gICAgdm9pZCBtYWtlRXZhbENhbGwoRXJyb3JTdHJpbmcqLCBT
Y3JpcHRGdW5jdGlvbkNhbGwmLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4qIHJlc3VsdCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKTsK
KyAgICBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmIGluamVjdGVkU2NyaXB0T2JqZWN0
KCkgY29uc3Q7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgY2FsbEZ1bmN0aW9uV2l0aEV2
YWxFbmFibGVkKERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCYsIGJvb2wmIGhhZEV4Y2Vw
dGlvbikgY29uc3Q7CisgICAgdm9pZCBtYWtlQ2FsbChEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlv
bkNhbGwmLCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CisgICAg
dm9pZCBtYWtlRXZhbENhbGwoRXJyb3JTdHJpbmcqLCBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlv
bkNhbGwmLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3Vs
dCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKTsKIAogcHJpdmF0ZToK
ICAgICBTdHJpbmcgbV9uYW1lOwotICAgIFNjcmlwdE9iamVjdCBtX2luamVjdGVkU2NyaXB0T2Jq
ZWN0OworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBtX2luamVjdGVkU2NyaXB0T2JqZWN0
OwogICAgIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sgbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0No
ZWNrOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0Q2FudmFzTW9kdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdENhbnZhc01vZHVsZS5jcHAKaW5kZXggZmFkNzk4Yi4uOWM2Y2NkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1
bGUuY3BwCkBAIC0zNyw4ICszNywxMCBAQAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAj
aW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGVTb3VyY2UuaCIKICNpbmNsdWRlICJJ
bmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwuaCIK
LSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3Rh
dGUuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaD4KKyNpbmNsdWRl
IDxiaW5kaW5ncy9TY3JpcHRPYmplY3QuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9y
VmFsdWVzLmg+CiAKIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpBcnJheTsKIHVzaW5nIFdl
YkNvcmU6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlSWQ7CkBAIC00Nyw2ICs0OSw4IEBA
IHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlU3RhdGU7CiB1c2lu
ZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFjZUxvZzsKIHVzaW5nIFdlYkNvcmU6
OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQ7CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1
bGU6OkluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlKCkKQEAgLTY2LDM0ICs3MCwzNCBAQCBTdHJp
bmcgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OnNvdXJjZSgpIGNvbnN0CiAgICAgcmV0dXJu
IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihJbmplY3RlZFNjcmlwdENhbnZh
c01vZHVsZVNvdXJjZV9qcyksIHNpemVvZihJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJj
ZV9qcykpOwogfQogCi1TY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6Ondy
YXBDYW52YXMyRENvbnRleHQoY29uc3QgU2NyaXB0T2JqZWN0JiBjb250ZXh0KQorRGVwcmVjYXRl
ZDo6U2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjp3cmFwQ2FudmFzMkRD
b250ZXh0KGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgY29udGV4dCkKIHsKICAgICBy
ZXR1cm4gY2FsbFdyYXBDb250ZXh0RnVuY3Rpb24oIndyYXBDYW52YXMyRENvbnRleHQiLCBjb250
ZXh0KTsKIH0KIAogI2lmIEVOQUJMRShXRUJHTCkKLVNjcmlwdE9iamVjdCBJbmplY3RlZFNjcmlw
dENhbnZhc01vZHVsZTo6d3JhcFdlYkdMQ29udGV4dChjb25zdCBTY3JpcHRPYmplY3QmIGdsQ29u
dGV4dCkKK0RlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVs
ZTo6d3JhcFdlYkdMQ29udGV4dChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmIGdsQ29u
dGV4dCkKIHsKICAgICByZXR1cm4gY2FsbFdyYXBDb250ZXh0RnVuY3Rpb24oIndyYXBXZWJHTENv
bnRleHQiLCBnbENvbnRleHQpOwogfQogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIAotU2NyaXB0
T2JqZWN0IEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjpjYWxsV3JhcENvbnRleHRGdW5jdGlv
bihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgU2NyaXB0T2JqZWN0JiBjb250ZXh0
KQorRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjpj
YWxsV3JhcENvbnRleHRGdW5jdGlvbihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiBjb250ZXh0KQogewotICAgIFNjcmlwdEZ1bmN0aW9u
Q2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCBmdW5jdGlvbk5hbWUpOworICAg
IERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9i
amVjdCgpLCBmdW5jdGlvbk5hbWUsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55
VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjb250ZXh0KTsKICAgICBib29s
IGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwotICAgIFNjcmlwdFZhbHVlIHJlc3VsdFZhbHVlID0gY2Fs
bEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOworICAgIERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHJlc3VsdFZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxF
bmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwogICAgIGlmIChoYWRFeGNlcHRpb24gfHwg
cmVzdWx0VmFsdWUuaGFzTm9WYWx1ZSgpIHx8ICFyZXN1bHRWYWx1ZS5pc09iamVjdCgpKSB7CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gU2NyaXB0T2JqZWN0
KCk7CisgICAgICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QoKTsKICAgICB9Ci0g
ICAgcmV0dXJuIFNjcmlwdE9iamVjdChjb250ZXh0LnNjcmlwdFN0YXRlKCksIHJlc3VsdFZhbHVl
KTsKKyAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KGNvbnRleHQuc2NyaXB0U3Rh
dGUoKSwgcmVzdWx0VmFsdWUpOwogfQogCiB2b2lkIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxl
OjptYXJrRnJhbWVFbmQoKQogewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmpl
Y3RlZFNjcmlwdE9iamVjdCgpLCAibWFya0ZyYW1lRW5kIik7CisgICAgRGVwcmVjYXRlZDo6U2Ny
aXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJtYXJrRnJh
bWVFbmQiLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAg
UmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHRWYWx1ZTsKICAgICBtYWtlQ2FsbChmdW5jdGlv
biwgJnJlc3VsdFZhbHVlKTsKICAgICBBU1NFUlQocmVzdWx0VmFsdWUpOwpAQCAtMTExLDcgKzEx
NSw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OnN0YXJ0Q2FwdHVyaW5nKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgVHJhY2VMCiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHRDYW52
YXNNb2R1bGU6OmNhbGxTdGFydENhcHR1cmluZ0Z1bmN0aW9uKGNvbnN0IFN0cmluZyYgZnVuY3Rp
b25OYW1lLCBFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFRyYWNlTG9nSWQqIHRyYWNlTG9nSWQp
CiB7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0
KCksIGZ1bmN0aW9uTmFtZSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1
bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksIGZ1bmN0aW9uTmFtZSwgV2ViQ29yZTo6ZnVu
Y3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1
ZT4gcmVzdWx0VmFsdWU7CiAgICAgbWFrZUNhbGwoZnVuY3Rpb24sICZyZXN1bHRWYWx1ZSk7CiAg
ICAgaWYgKCFyZXN1bHRWYWx1ZSB8fCByZXN1bHRWYWx1ZS0+dHlwZSgpICE9IEluc3BlY3RvclZh
bHVlOjpUeXBlU3RyaW5nIHx8ICFyZXN1bHRWYWx1ZS0+YXNTdHJpbmcodHJhY2VMb2dJZCkpCkBA
IC0xMzAsNyArMTM0LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6ZHJvcFRy
YWNlTG9nKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgVHIKIAogdm9pZCBJbmplY3Rl
ZFNjcmlwdENhbnZhc01vZHVsZTo6Y2FsbFZvaWRGdW5jdGlvbldpdGhUcmFjZUxvZ0lkQXJndW1l
bnQoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
Y29uc3QgVHJhY2VMb2dJZCYgdHJhY2VMb2dJZCkKIHsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwg
ZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgZnVuY3Rpb25OYW1lKTsKKyAgICBEZXBy
ZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3Qo
KSwgZnVuY3Rpb25OYW1lLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVh
ZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQodHJhY2VMb2dJZCk7CiAgICAgYm9vbCBo
YWRFeGNlcHRpb24gPSBmYWxzZTsKICAgICBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVu
Y3Rpb24sIGhhZEV4Y2VwdGlvbik7CkBAIC0xNDEsNyArMTQ1LDcgQEAgdm9pZCBJbmplY3RlZFNj
cmlwdENhbnZhc01vZHVsZTo6Y2FsbFZvaWRGdW5jdGlvbldpdGhUcmFjZUxvZ0lkQXJndW1lbnQo
Y29uc3QgU3QKIAogdm9pZCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6dHJhY2VMb2coRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBUcmFjZUxvZ0lkJiB0cmFjZUxvZ0lkLCBjb25z
dCBpbnQqIHN0YXJ0T2Zmc2V0LCBjb25zdCBpbnQqIG1heExlbmd0aCwgUmVmUHRyPFRyYWNlTG9n
PiogdHJhY2VMb2cpCiB7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVk
U2NyaXB0T2JqZWN0KCksICJ0cmFjZUxvZyIpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0
aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAidHJhY2VMb2ciLCBXZWJD
b3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAgZnVuY3Rpb24uYXBw
ZW5kQXJndW1lbnQodHJhY2VMb2dJZCk7CiAgICAgaWYgKHN0YXJ0T2Zmc2V0KQogICAgICAgICBm
dW5jdGlvbi5hcHBlbmRBcmd1bWVudCgqc3RhcnRPZmZzZXQpOwpAQCAtMTU5LDcgKzE2Myw3IEBA
IHZvaWQgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OnRyYWNlTG9nKEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgY29uc3QgVHJhY2VMCiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1
bGU6OnJlcGxheVRyYWNlTG9nKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgVHJhY2VM
b2dJZCYgdHJhY2VMb2dJZCwgaW50IHN0ZXBObywgUmVmUHRyPFJlc291cmNlU3RhdGU+KiByZXN1
bHQpCiB7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2Jq
ZWN0KCksICJyZXBsYXlUcmFjZUxvZyIpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9u
Q2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAicmVwbGF5VHJhY2VMb2ciLCBX
ZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAgZnVuY3Rpb24u
YXBwZW5kQXJndW1lbnQodHJhY2VMb2dJZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQo
c3RlcE5vKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdFZhbHVlOwpAQCAtMTc0
LDcgKzE3OCw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OnJlcGxheVRyYWNl
TG9nKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QKIAogdm9pZCBJbmplY3RlZFNjcmlw
dENhbnZhc01vZHVsZTo6cmVzb3VyY2VJbmZvKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29u
c3QgUmVzb3VyY2VJZCYgcmVzb3VyY2VJZCwgUmVmUHRyPFJlc291cmNlSW5mbz4qIHJlc3VsdCkK
IHsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3Qo
KSwgInJlc291cmNlSW5mbyIpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBm
dW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAicmVzb3VyY2VJbmZvIiwgV2ViQ29yZTo6
ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFy
Z3VtZW50KHJlc291cmNlSWQpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0VmFs
dWU7CiAgICAgbWFrZUNhbGwoZnVuY3Rpb24sICZyZXN1bHRWYWx1ZSk7CkBAIC0xODgsNyArMTky
LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6cmVzb3VyY2VJbmZvKEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmUKIAogdm9pZCBJbmplY3RlZFNjcmlwdENhbnZh
c01vZHVsZTo6cmVzb3VyY2VTdGF0ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFRy
YWNlTG9nSWQmIHRyYWNlTG9nSWQsIGNvbnN0IFJlc291cmNlSWQmIHJlc291cmNlSWQsIFJlZlB0
cjxSZXNvdXJjZVN0YXRlPiogcmVzdWx0KQogewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5j
dGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAicmVzb3VyY2VTdGF0ZSIpOworICAgIERlcHJl
Y2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgp
LCAicmVzb3VyY2VTdGF0ZSIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhy
ZWFkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudCh0cmFjZUxvZ0lkKTsKICAgICBmdW5j
dGlvbi5hcHBlbmRBcmd1bWVudChyZXNvdXJjZUlkKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yVmFs
dWU+IHJlc3VsdFZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuaAppbmRleCBmMzMxMTJjLi45OTQ5NTU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1
bGUuaApAQCAtMzUsMTAgKzM1LDEzIEBACiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIERlcHJlY2F0ZWQgeworY2xh
c3MgU2NyaXB0T2JqZWN0OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEluamVj
dGVkU2NyaXB0TWFuYWdlcjsKLWNsYXNzIFNjcmlwdE9iamVjdDsKIAogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCiAKQEAgLTUwLDkgKzUzLDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEluamVjdGVk
U2NyaXB0Q2FudmFzTW9kdWxlIG1vZHVsZUZvclN0YXRlKEluamVjdGVkU2NyaXB0TWFuYWdlcios
IEpTQzo6RXhlY1N0YXRlKik7CiAKLSAgICBTY3JpcHRPYmplY3Qgd3JhcENhbnZhczJEQ29udGV4
dChjb25zdCBTY3JpcHRPYmplY3QmKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3Qgd3Jh
cENhbnZhczJEQ29udGV4dChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmKTsKICNpZiBF
TkFCTEUoV0VCR0wpCi0gICAgU2NyaXB0T2JqZWN0IHdyYXBXZWJHTENvbnRleHQoY29uc3QgU2Ny
aXB0T2JqZWN0Jik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IHdyYXBXZWJHTENvbnRl
eHQoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0Jik7CiAjZW5kaWYKICAgICB2b2lkIG1h
cmtGcmFtZUVuZCgpOwogCkBAIC02Niw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc291
cmNlU3RhdGUoRXJyb3JTdHJpbmcqLCBjb25zdCBUeXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFjZUxv
Z0lkJiwgY29uc3QgVHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VJZCYsIFJlZlB0cjxUeXBl
QnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJjZVN0YXRlPiopOwogCiBwcml2YXRlOgotICAgIFNjcmlw
dE9iamVjdCBjYWxsV3JhcENvbnRleHRGdW5jdGlvbihjb25zdCBTdHJpbmcmLCBjb25zdCBTY3Jp
cHRPYmplY3QmKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgY2FsbFdyYXBDb250ZXh0
RnVuY3Rpb24oY29uc3QgU3RyaW5nJiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0Jik7
CiAgICAgdm9pZCBjYWxsU3RhcnRDYXB0dXJpbmdGdW5jdGlvbihjb25zdCBTdHJpbmcmLCBFcnJv
clN0cmluZyosIFN0cmluZyopOwogICAgIHZvaWQgY2FsbFZvaWRGdW5jdGlvbldpdGhUcmFjZUxv
Z0lkQXJndW1lbnQoY29uc3QgU3RyaW5nJiwgRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmKTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRI
b3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3Bw
CmluZGV4IGVmNTMzYWEuLmU0YzZkNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwCkBAIC00NywxOCArNDcsMTkgQEAKICNpbmNsdWRlICJJ
bnNwZWN0b3JEYXRhYmFzZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9y
VmFsdWVzLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogI2luY2x1ZGUgIlN0b3JhZ2UuaCIK
KyNpbmNsdWRlICJtYXJrdXAuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgor
I2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiAjaWYgRU5BQkxFKFNRTF9E
QVRBQkFTRSkKICNpbmNsdWRlICJEYXRhYmFzZS5oIgogI2VuZGlmCiAKLSNpbmNsdWRlICJtYXJr
dXAuaCIKLQotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+Cit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTEyMSw5ICsxMjIsOSBAQCB2b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6Y29weVRleHQo
Y29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0
ZSgpLT53cml0ZVBsYWluVGV4dCh0ZXh0LCBQYXN0ZWJvYXJkOjpDYW5ub3RTbWFydFJlcGxhY2Up
OwogfQogCi1TY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdEhvc3Q6Okluc3BlY3RhYmxlT2JqZWN0
OjpnZXQoSlNDOjpFeGVjU3RhdGUqKQorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgSW5qZWN0ZWRT
Y3JpcHRIb3N0OjpJbnNwZWN0YWJsZU9iamVjdDo6Z2V0KEpTQzo6RXhlY1N0YXRlKikKIHsKLSAg
ICByZXR1cm4gU2NyaXB0VmFsdWUoKTsKKyAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUoKTsKIH07CiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjphZGRJbnNwZWN0ZWRPYmplY3Qo
UGFzc093blB0cjxJbmplY3RlZFNjcmlwdEhvc3Q6Okluc3BlY3RhYmxlT2JqZWN0PiBvYmplY3Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgKaW5kZXgg
NGE4NDE4Mi4uOGM0NGQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0SG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdEhvc3QuaApAQCAtMzYsNiArMzYsMTUgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAorbmFtZXNwYWNlIERlcHJlY2F0ZWQgewor
Y2xhc3MgU2NyaXB0VmFsdWU7Cit9CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5z
cGVjdG9yT2JqZWN0OworY2xhc3MgSW5zcGVjdG9yVmFsdWU7Cit9CisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgRGF0YWJhc2U7CkBAIC00NiwxMiArNTUsOCBAQCBjbGFzcyBJbnNwZWN0
b3JET01BZ2VudDsKIGNsYXNzIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDsKIGNsYXNzIEluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OwotY2xhc3Mg
SW5zcGVjdG9yT2JqZWN0OwotY2xhc3MgSW5zcGVjdG9yVmFsdWU7CiBjbGFzcyBOb2RlOwogY2xh
c3MgU2NyaXB0RGVidWdTZXJ2ZXI7Ci1jbGFzcyBTY3JpcHRPYmplY3Q7Ci1jbGFzcyBTY3JpcHRW
YWx1ZTsKIGNsYXNzIFN0b3JhZ2U7CiAKIHN0cnVjdCBFdmVudExpc3RlbmVySW5mbzsKQEAgLTg1
LDIyICs5MCwyMiBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKLSAgICBzdGF0aWMgTm9kZSog
c2NyaXB0VmFsdWVBc05vZGUoU2NyaXB0VmFsdWUpOwotICAgIHN0YXRpYyBTY3JpcHRWYWx1ZSBu
b2RlQXNTY3JpcHRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIE5vZGUqKTsKKyAgICBzdGF0aWMgTm9k
ZSogc2NyaXB0VmFsdWVBc05vZGUoRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUpOworICAgIHN0YXRp
YyBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBub2RlQXNTY3JpcHRWYWx1ZShKU0M6OkV4ZWNTdGF0
ZSosIE5vZGUqKTsKIAogICAgIHZvaWQgZGlzY29ubmVjdCgpOwogCiAgICAgY2xhc3MgSW5zcGVj
dGFibGVPYmplY3QgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJs
aWM6Ci0gICAgICAgIHZpcnR1YWwgU2NyaXB0VmFsdWUgZ2V0KEpTQzo6RXhlY1N0YXRlKik7Cisg
ICAgICAgIHZpcnR1YWwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZ2V0KEpTQzo6RXhlY1N0YXRl
Kik7CiAgICAgICAgIHZpcnR1YWwgfkluc3BlY3RhYmxlT2JqZWN0KCkgeyB9CiAgICAgfTsKICAg
ICB2b2lkIGFkZEluc3BlY3RlZE9iamVjdChQYXNzT3duUHRyPEluc3BlY3RhYmxlT2JqZWN0Pik7
CiAgICAgdm9pZCBjbGVhckluc3BlY3RlZE9iamVjdHMoKTsKICAgICBJbnNwZWN0YWJsZU9iamVj
dCogaW5zcGVjdGVkT2JqZWN0KHVuc2lnbmVkIGludCBudW0pOwogCi0gICAgdm9pZCBpbnNwZWN0
SW1wbChQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBvYmplY3RUb0luc3BlY3QsIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yVmFsdWU+IGhpbnRzKTsKKyAgICB2b2lkIGluc3BlY3RJbXBsKFBhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gb2JqZWN0VG9JbnNwZWN0LCBQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IGhpbnRzKTsKICAgICB2b2lkIGdldEV2ZW50TGlz
dGVuZXJzSW1wbChOb2RlKiwgVmVjdG9yPEV2ZW50TGlzdGVuZXJJbmZvPiYgbGlzdGVuZXJzQXJy
YXkpOwogCiAgICAgdm9pZCBjbGVhckNvbnNvbGVNZXNzYWdlcygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAppbmRleCA3YWEzZDQz
Li4xMjc2YzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmNwcApAQCAtMzcsMTAgKzM3LDEyIEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRT
Y3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJJbmpl
Y3RlZFNjcmlwdFNvdXJjZS5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgotI2luY2x1
ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgor
I2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFBhc3NPd25QdHI8SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPiBJbmplY3RlZFNjcmlw
dE1hbmFnZXI6OmNyZWF0ZUZvclBhZ2UoKQpAQCAtMTczLDcgKzE3NSw3IEBAIEluamVjdGVkU2Ny
aXB0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3IoSlNDOjpFeGVjU3Rh
dGUqIGluc3BlY3RlCiAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwogCiAgICAgaW50
IGlkID0gaW5qZWN0ZWRTY3JpcHRJZEZvcihpbnNwZWN0ZWRFeGVjU3RhdGUpOwotICAgIFNjcmlw
dE9iamVjdCBpbmplY3RlZFNjcmlwdE9iamVjdCA9IGNyZWF0ZUluamVjdGVkU2NyaXB0KGluamVj
dGVkU2NyaXB0U291cmNlKCksIGluc3BlY3RlZEV4ZWNTdGF0ZSwgaWQpOworICAgIERlcHJlY2F0
ZWQ6OlNjcmlwdE9iamVjdCBpbmplY3RlZFNjcmlwdE9iamVjdCA9IGNyZWF0ZUluamVjdGVkU2Ny
aXB0KGluamVjdGVkU2NyaXB0U291cmNlKCksIGluc3BlY3RlZEV4ZWNTdGF0ZSwgaWQpOwogICAg
IEluamVjdGVkU2NyaXB0IHJlc3VsdChpbmplY3RlZFNjcmlwdE9iamVjdCwgbV9pbnNwZWN0ZWRT
dGF0ZUFjY2Vzc0NoZWNrKTsKICAgICBtX2lkVG9JbmplY3RlZFNjcmlwdC5zZXQoaWQsIHJlc3Vs
dCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdE1hbmFnZXIuaAppbmRleCA2ODFlNDA4Li43YjQ4ZDM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oCkBAIC0zNSwx
MyArMzUsMTkgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgRGVwcmVjYXRlZCB7CitjbGFzcyBTY3JpcHRPYmpl
Y3Q7Cit9CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yT2JqZWN0Owor
fQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERPTVdpbmRvdzsKIGNsYXNzIEluamVj
dGVkU2NyaXB0OwogY2xhc3MgSW5qZWN0ZWRTY3JpcHRIb3N0OwotY2xhc3MgSW5zcGVjdG9yT2Jq
ZWN0OwotY2xhc3MgU2NyaXB0T2JqZWN0OwogCiBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXIg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluamVjdGVkU2NyaXB0TWFuYWdlcik7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNjksNyArNzUsNyBAQCBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IEluamVjdGVkU2NyaXB0TWFuYWdlcihJbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKTsKIAog
ICAgIFN0cmluZyBpbmplY3RlZFNjcmlwdFNvdXJjZSgpOwotICAgIFNjcmlwdE9iamVjdCBjcmVh
dGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgSlNDOjpFeGVjU3RhdGUqLCBp
bnQgaWQpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBjcmVhdGVJbmplY3RlZFNjcmlw
dChjb25zdCBTdHJpbmcmIHNvdXJjZSwgSlNDOjpFeGVjU3RhdGUqLCBpbnQgaWQpOwogCiAgICAg
c3RhdGljIGJvb2wgY2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KEpTQzo6RXhlY1N0YXRlKik7CiAg
ICAgc3RhdGljIGJvb2wgY2FuQWNjZXNzSW5zcGVjdGVkV29ya2VyR2xvYmFsU2NvcGUoSlNDOjpF
eGVjU3RhdGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdE1vZHVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRNb2R1bGUuY3BwCmluZGV4IGRiMjA3NzkuLjkyNjhlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcApAQCAtMzYsOCArMzYsMTEg
QEAKIAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCi0jaW5jbHVkZSAi
U2NyaXB0T2JqZWN0LmgiCisjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCisjaW5j
bHVkZSA8YmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmg+CisjaW5jbHVkZSA8YmluZGluZ3Mv
U2NyaXB0T2JqZWN0Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNTQsMTMgKzU3LDEzIEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRNb2R1
bGU6OmVuc3VyZUluamVjdGVkKEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRN
CiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1FOiBNYWtlIHRoZSBJbmplY3RlZFNjcmlw
dCBhIG1vZHVsZSBpdHNlbGYuCi0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVj
dGVkU2NyaXB0LmluamVjdGVkU2NyaXB0T2JqZWN0KCksICJtb2R1bGUiKTsKKyAgICBEZXByZWNh
dGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHQuaW5qZWN0ZWRT
Y3JpcHRPYmplY3QoKSwgIm1vZHVsZSIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9t
QW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChuYW1lKCkpOwogICAgIGJv
b2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgU2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBp
bmplY3RlZFNjcmlwdC5jYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4
Y2VwdGlvbik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBpbmpl
Y3RlZFNjcmlwdC5jYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2Vw
dGlvbik7CiAgICAgQVNTRVJUKCFoYWRFeGNlcHRpb24pOwogICAgIGlmIChoYWRFeGNlcHRpb24g
fHwgcmVzdWx0VmFsdWUuaGFzTm9WYWx1ZSgpIHx8ICFyZXN1bHRWYWx1ZS5pc09iamVjdCgpKSB7
Ci0gICAgICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdC5pbmpl
Y3RlZFNjcmlwdE9iamVjdCgpLCAiaW5qZWN0TW9kdWxlIik7CisgICAgICAgIERlcHJlY2F0ZWQ6
OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdC5pbmplY3RlZFNjcmlw
dE9iamVjdCgpLCAiaW5qZWN0TW9kdWxlIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZy
b21BbnlUaHJlYWQpOwogICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChuYW1lKCkpOwog
ICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChzb3VyY2UoKSk7CiAgICAgICAgIHJlc3Vs
dFZhbHVlID0gaW5qZWN0ZWRTY3JpcHQuY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0
aW9uLCBoYWRFeGNlcHRpb24pOwpAQCAtNzAsNyArNzMsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0
TW9kdWxlOjplbnN1cmVJbmplY3RlZChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2Ny
aXB0TQogICAgICAgICB9CiAgICAgfQogCi0gICAgU2NyaXB0T2JqZWN0IG1vZHVsZU9iamVjdChz
Y3JpcHRTdGF0ZSwgcmVzdWx0VmFsdWUpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBt
b2R1bGVPYmplY3Qoc2NyaXB0U3RhdGUsIHJlc3VsdFZhbHVlKTsKICAgICBpbml0aWFsaXplKG1v
ZHVsZU9iamVjdCwgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0No
ZWNrKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNw
cAppbmRleCBlYTdiNDIwLi5iZGI2OTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBZ2VudC5jcHAKQEAgLTQyLDIzICs0MiwyNCBAQAogI2luY2x1ZGUgIkluc3BlY3Rv
ckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUg
Ikluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5o
IgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJNYWluRnJhbWUu
aCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5j
bHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5o
IgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5o
PgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAordXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbnNwZWN0b3JBZ2VudDo6SW5z
cGVjdG9yQWdlbnQoUGFnZSogcGFnZSwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNj
cmlwdE1hbmFnZXIsIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCi0g
ICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJJbnNwZWN0b3IiKSwgaW5zdHJ1
bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIklu
c3BlY3RvciIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKHBh
Z2UpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIp
CiAgICAgLCBtX2VuYWJsZWQoZmFsc2UpCkBAIC05Myw3ICs5NCw3IEBAIHZvaWQgSW5zcGVjdG9y
QWdlbnQ6OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSogZnJhbWUsIERPTVdyYXBw
ZXJXb3JsZCYKICAgICBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChzY3JpcHRTb3VyY2Uu
dG9TdHJpbmcoKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0
b3JBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9ySW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVyPihmcm9u
dGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKaW5kZXggZmI0YmQyNS4uMjk5
ZGZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKQEAgLTMw
LDExICszMCwxNyBAQAogI2lmbmRlZiBJbnNwZWN0b3JBZ2VudF9oCiAjZGVmaW5lIEluc3BlY3Rv
ckFnZW50X2gKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIklu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50
QmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAorbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFzcyBJbnNwZWN0b3JPYmplY3Q7Cit9CisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwpAQCAtNDIsMTMgKzQ4
LDEyIEBAIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBJbnNwZWN0b3JJbnNwZWN0b3JGcm9udGVuZERpc3BhdGNo
ZXI7Ci1jbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwog
Y2xhc3MgUGFnZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3Bl
Y3RvckFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3Rvcklu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JBZ2VudCA6
IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3Rv
ckFnZW50KTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JBZ2VudD4g
Y3JlYXRlKFBhZ2UqIHBhZ2UsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLCBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQpAQCAtNjQs
NyArNjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2
b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5z
cGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAg
dm9pZCBkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUqLCBET01XcmFwcGVyV29ybGQm
KTsKQEAgLTc5LDcgKzg0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRJbmplY3RlZFNjcmlw
dEZvck9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBzb3VyY2UpOwog
Ci0gICAgdm9pZCBpbnNwZWN0KFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdD4gb2JqZWN0VG9JbnNwZWN0LCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gaGlu
dHMpOworICAgIHZvaWQgaW5zcGVjdChQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpS
ZW1vdGVPYmplY3Q+IG9iamVjdFRvSW5zcGVjdCwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdD4gaGludHMpOwogCiBwcml2YXRlOgogICAgIEluc3BlY3RvckFnZW50KFBhZ2Uq
LCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnN0cnVtZW50aW5nQWdlbnRzKik7CkBAIC05MCw3
ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVjdGVk
U2NyaXB0TWFuYWdlcjsKIAogICAgIFZlY3RvcjxwYWlyPGxvbmcsIFN0cmluZz4+IG1fcGVuZGlu
Z0V2YWx1YXRlVGVzdENvbW1hbmRzOwotICAgIHBhaXI8UmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q+LCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Pj4gbV9wZW5kaW5nSW5z
cGVjdERhdGE7CisgICAgcGFpcjxSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4sIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4+IG1fcGVuZGluZ0luc3Bl
Y3REYXRhOwogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1faW5qZWN0ZWRTY3JpcHRGb3JP
cmlnaW47CiAKICAgICBib29sIG1fZW5hYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwCmluZGV4IDI2M2JkZDkuLjUzMDBkOTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcApAQCAtMzcsOSAr
MzcsNyBAQAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAiCiAjaW5jbHVkZSAi
SW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwIgogI2luY2x1ZGUgIkluc3BlY3RvckFnZW50LmNwcCIK
LSNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcCIKICNpbmNsdWRlICJJbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwIgotI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmNwcCIKICNpbmNsdWRlICJJbnNwZWN0b3JDU1NBZ2VudC5jcHAiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwIgogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5j
cHAiCkBAIC03MCw3ICs2OCw2IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yU3R5bGVUZXh0RWRpdG9yLmNwcCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JUaW1lbGluZUFnZW50LmNwcCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuY3BwIgog
I2luY2x1ZGUgIkluc3BlY3RvcldvcmtlckFnZW50LmNwcCIKICNpbmNsdWRlICJJbnN0cnVtZW50
aW5nQWdlbnRzLmNwcCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNo
ZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQuY3BwCmluZGV4IDA0Y2M1M2EuLmJhNDY2NTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQuY3BwCkBAIC0zNiwyMSArMzYsMjMgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudC5oIgog
I2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFn
ZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVu
dGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmgiCiAjaW5jbHVk
ZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlIDxpbnNw
ZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpJ
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQpCi0gICAgOiBJbnNw
ZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJBcHBsaWNhdGlvbkNhY2hlIiksIGluc3RydW1l
bnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJBcHBs
aWNhdGlvbkNhY2hlIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX3BhZ2VBZ2VudChw
YWdlQWdlbnQpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Ojpk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9u
dGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hl
cikKK3ZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5k
Q2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQog
ewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAg
IG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQmFja2VuZERp
c3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
LmgKaW5kZXggZWIwNmM4Zi4uM2UyNGUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaApAQCAtMjgsMjcg
KzI4LDMwIEBACiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAogI2luY2x1ZGUgIkFwcGxpY2F0aW9u
Q2FjaGVIb3N0LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRl
bmQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCituYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKK2NsYXNzIEluc3BlY3Rvck9iamVjdDsKK2NsYXNzIEluc3BlY3RvclZhbHVl
OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lOwotY2xhc3MgSW5zcGVj
dG9yQXJyYXk7CiBjbGFzcyBJbnNwZWN0b3JBZ2VudDsKIGNsYXNzIEluc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNoZXI7Ci1jbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFz
cyBJbnNwZWN0b3JQYWdlQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0b3JWYWx1ZTsKIGNsYXNzIEluc3Ry
dW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIAog
dHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1Ymxp
YyBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQpOyBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJ
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKQEAg
LTU3LDE1ICs2MCwxMiBAQCBwdWJsaWM6CiAgICAgfQogICAgIH5JbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQoKSB7IH0KIAotICAgIC8vIEluc3BlY3RvckJhc2VBZ2VudAotICAgIHZpcnR1
YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgp
IE9WRVJSSURFOwogCi0gICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uIEFQSQogICAgIHZv
aWQgdXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1cyhGcmFtZSopOwogICAgIHZvaWQgbmV0d29y
a1N0YXRlQ2hhbmdlZCgpOwogCi0gICAgLy8gQXBwbGljYXRpb25DYWNoZSBBUEkgZm9yIEluc3Bl
Y3RvckZyb250ZW5kCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwogICAg
IHZpcnR1YWwgdm9pZCBnZXRGcmFtZXNXaXRoTWFuaWZlc3RzKEVycm9yU3RyaW5nKiwgUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVX
aXRoTWFuaWZlc3Q+PiYgcmVzdWx0KTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0TWFuaWZlc3RGb3JG
cmFtZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgU3RyaW5nKiBtYW5pZmVz
dFVSTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NT
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNw
cAppbmRleCBiYjE3YzY1Li42NjEwN2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTQ0LDcgKzQ0LDYgQEAKICNpbmNsdWRlICJJbnNw
ZWN0b3JET01BZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckhpc3RvcnkuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgog
I2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJOYW1lZEZsb3dDb2xs
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgpAQCAtNTcsNyArNTYsNyBAQAogI2luY2x1ZGUg
IlN0eWxlUnVsZS5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRMaXN0LmgiCiAjaW5jbHVkZSAiV2Vi
S2l0TmFtZWRGbG93LmgiCi0KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+
CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBAIC02NSw2ICs2NCw4IEBACiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAK
K3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51
bSBGb3JjZVBzZXVkb0NsYXNzRmxhZ3MgewpAQCAtNjE2LDcgKzYxNyw3IEBAIENTU1N0eWxlUnVs
ZSogSW5zcGVjdG9yQ1NTQWdlbnQ6OmFzQ1NTU3R5bGVSdWxlKENTU1J1bGUqIHJ1bGUpCiB9CiAK
IEluc3BlY3RvckNTU0FnZW50OjpJbnNwZWN0b3JDU1NBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQpCi0gICAg
OiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJDU1MiKSwgaW5zdHJ1bWVudGluZ0Fn
ZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkNTUyIpLCBpbnN0
cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9kb21BZ2VudChkb21BZ2VudCkKICAgICAsIG1fbGFz
dFN0eWxlU2hlZXRJZCgxKQogewpAQCAtNjI5LDcgKzYzMCw3IEBAIEluc3BlY3RvckNTU0FnZW50
Ojp+SW5zcGVjdG9yQ1NTQWdlbnQoKQogICAgIHJlc2V0KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
Q1NTQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tl
bmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENo
YW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsK
ICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQ1NT
RnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3Bh
dGNoZXIgPSBJbnNwZWN0b3JDU1NCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNw
YXRjaGVyLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0Fn
ZW50LmgKaW5kZXggOWQzYjQwZC4uZWEwZWIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNTU0FnZW50LmgKQEAgLTI3LDEyICsyNywxMiBAQAogCiAjaW5jbHVkZSAi
Q1NTU2VsZWN0b3IuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKLSNpbmNs
dWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgogI2luY2x1ZGUgIklu
c3BlY3RvclN0eWxlU2hlZXQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKyNpbmNs
dWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRlICJTZWN1cml0eUNvbnRleHQu
aCIKLQorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KQEAgLTY0LDcgKzY0LDcgQEAgY2xhc3MgQ2hhbmdlUmVnaW9uT3ZlcnNldFRh
c2s7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAogY2xhc3MgSW5zcGVjdG9yQ1NTQWdlbnQKLSAg
ICA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQKKyAgICA6IHB1YmxpYyBJbnNwZWN0b3JBZ2Vu
dEJhc2UKICAgICAsIHB1YmxpYyBJbnNwZWN0b3JET01BZ2VudDo6RE9NTGlzdGVuZXIKICAgICAs
IHB1YmxpYyBJbnNwZWN0b3JDU1NCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKICAgICAsIHB1Ymxp
YyBJbnNwZWN0b3JTdHlsZVNoZWV0OjpMaXN0ZW5lciB7CkBAIC05Niw3ICs5Niw3IEBAIHB1Ymxp
YzoKICAgICB+SW5zcGVjdG9yQ1NTQWdlbnQoKTsKIAogICAgIGJvb2wgZm9yY2VQc2V1ZG9TdGF0
ZShFbGVtZW50KiwgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUpOwotICAgIHZpcnR1YWwgdm9pZCBk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkQWdlbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZW5h
YmxlKEVycm9yU3RyaW5nKik7CkBAIC0xMTksMTMgKzExOSwxMyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGdldFN0eWxlU2hlZXQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHN0eWxl
U2hlZXRJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5PiYgcmVz
dWx0KTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0U3R5bGVTaGVldFRleHQoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgU3RyaW5nKiByZXN1bHQpOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc3R5bGVT
aGVldElkLCBjb25zdCBTdHJpbmcmIHRleHQpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTdHlsZVRl
eHQoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgc3R5bGVJZCwg
Y29uc3QgU3RyaW5nJiB0ZXh0LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiBy
ZXN1bHQpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9wZXJ0eVRleHQoRXJyb3JTdHJpbmcqLCBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgc3R5bGVJZCwgaW50IHByb3BlcnR5SW5kZXgs
IGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBvdmVyd3JpdGUsIFJlZlB0cjxUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NTdHlsZT4mIHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2b2lkIHRvZ2dsZVByb3BlcnR5
KEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHN0eWxlSWQsIGlu
dCBwcm9wZXJ0eUluZGV4LCBib29sIGRpc2FibGUsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NTdHlsZT4mIHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldFJ1bGVTZWxlY3RvcihFcnJv
clN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBydWxlSWQsIGNvbnN0IFN0
cmluZyYgc2VsZWN0b3IsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U3R5bGVUZXh0KEVycm9yU3RyaW5nKiwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgc3R5bGVJZCwgY29uc3QgU3RyaW5nJiB0
ZXh0LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpOworICAgIHZp
cnR1YWwgdm9pZCBzZXRQcm9wZXJ0eVRleHQoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBzdHlsZUlkLCBpbnQgcHJvcGVydHlJbmRleCwgY29u
c3QgU3RyaW5nJiB0ZXh0LCBib29sIG92ZXJ3cml0ZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6
OkNTU1N0eWxlPiYgcmVzdWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlUHJvcGVydHkoRXJy
b3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBzdHls
ZUlkLCBpbnQgcHJvcGVydHlJbmRleCwgYm9vbCBkaXNhYmxlLCBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCBzZXRSdWxlU2VsZWN0
b3IoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
JiBydWxlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NSdWxlPiYgcmVzdWx0KTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkUnVsZShFcnJvclN0cmlu
ZyosIGludCBjb250ZXh0Tm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCk7CiAgICAgdmlydHVhbCB2b2lkIGdldFN1
cHBvcnRlZENTU1Byb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5SW5mbz4+JiByZXN1bHQpOwotICAgIHZp
cnR1YWwgdm9pZCBmb3JjZVBzZXVkb1N0YXRlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29u
c3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgZm9yY2VkUHNldWRvQ2xhc3Nlcyk7CisgICAgdmly
dHVhbCB2b2lkIGZvcmNlUHNldWRvU3RhdGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mIGZvcmNlZFBzZXVkb0NsYXNzZXMp
OwogICAgIHZpcnR1YWwgdm9pZCBnZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3RyaW5nKiwg
aW50IGRvY3VtZW50Tm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVy
OjpDU1M6Ok5hbWVkRmxvdz4+JiByZXN1bHQpOwogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0U2Vs
ZWN0b3JQcm9maWxlcihFcnJvclN0cmluZyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKaW5kZXggZjlmNzJmMi4uMDM2MDNiYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3Bw
CkBAIC00Nyw5ICs0Nyw5IEBACiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAiTm9k
ZUxpc3QuaCIKICNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAj
aW5jbHVkZSAiU2NyaXB0UHJvZmlsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgorI2lu
Y2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgogCiB1c2luZyBXZWJDb3JlOjpUeXBlQnVp
bGRlcjo6QXJyYXk7CiB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJj
ZUlkOwpAQCAtNTksMTAgKzU5LDEyIEBAIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpDYW52
YXM6OlRyYWNlTG9nOwogdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VM
b2dJZDsKIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpGcmFtZUlkOwogCit1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEluc3Bl
Y3RvckNhbnZhc0FnZW50OjpJbnNwZWN0b3JDYW52YXNBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgOiBJbnNwZWN0
b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJDYW52YXMiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykK
KyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkNhbnZhcyIpLCBpbnN0cnVt
ZW50aW5nQWdlbnRzKQogICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQogICAgICwgbV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9lbmFibGVk
KGZhbHNlKQpAQCAtNzMsNyArNzUsNyBAQCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6fkluc3BlY3Rv
ckNhbnZhc0FnZW50KCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRD
aGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2
b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JDYW52YXNGcm9udGVuZERp
c3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IElu
c3BlY3RvckNhbnZhc0JhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIs
IHRoaXMpOwpAQCAtMTc4LDI3ICsxODAsMjcgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6
Z2V0UmVzb3VyY2VTdGF0ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFRyYWMKICAg
ICAgICAgbW9kdWxlLnJlc291cmNlU3RhdGUoZXJyb3JTdHJpbmcsIHRyYWNlTG9nSWQsIHJlc291
cmNlSWQsICZyZXN1bHQpOwogfQogCi1TY3JpcHRPYmplY3QgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6
OndyYXBDYW52YXMyRFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24oY29uc3QgU2Ny
aXB0T2JqZWN0JiBjb250ZXh0KQorRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IEluc3BlY3RvckNh
bnZhc0FnZW50Ojp3cmFwQ2FudmFzMkRSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9u
KGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgY29udGV4dCkKIHsKICAgICBFcnJvclN0
cmluZyBlcnJvcjsKICAgICBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZSBtb2R1bGUgPSBpbmpl
Y3RlZFNjcmlwdENhbnZhc01vZHVsZSgmZXJyb3IsIGNvbnRleHQpOwogICAgIGlmIChtb2R1bGUu
aGFzTm9WYWx1ZSgpKQotICAgICAgICByZXR1cm4gU2NyaXB0T2JqZWN0KCk7CisgICAgICAgIHJl
dHVybiBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QoKTsKICAgICByZXR1cm4gbm90aWZ5UmVuZGVy
aW5nQ29udGV4dFdhc1dyYXBwZWQobW9kdWxlLndyYXBDYW52YXMyRENvbnRleHQoY29udGV4dCkp
OwogfQogCiAjaWYgRU5BQkxFKFdFQkdMKQotU2NyaXB0T2JqZWN0IEluc3BlY3RvckNhbnZhc0Fn
ZW50Ojp3cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKGNvbnN0IFNj
cmlwdE9iamVjdCYgZ2xDb250ZXh0KQorRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IEluc3BlY3Rv
ckNhbnZhc0FnZW50Ojp3cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9u
KGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgZ2xDb250ZXh0KQogewogICAgIEVycm9y
U3RyaW5nIGVycm9yOwogICAgIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlIG1vZHVsZSA9IGlu
amVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlKCZlcnJvciwgZ2xDb250ZXh0KTsKICAgICBpZiAobW9k
dWxlLmhhc05vVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIFNjcmlwdE9iamVjdCgpOworICAgICAg
ICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KCk7CiAgICAgcmV0dXJuIG5vdGlmeVJl
bmRlcmluZ0NvbnRleHRXYXNXcmFwcGVkKG1vZHVsZS53cmFwV2ViR0xDb250ZXh0KGdsQ29udGV4
dCkpOwogfQogI2VuZGlmCiAKLVNjcmlwdE9iamVjdCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6bm90
aWZ5UmVuZGVyaW5nQ29udGV4dFdhc1dyYXBwZWQoY29uc3QgU2NyaXB0T2JqZWN0JiB3cmFwcGVk
Q29udGV4dCkKK0RlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6
bm90aWZ5UmVuZGVyaW5nQ29udGV4dFdhc1dyYXBwZWQoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0
T2JqZWN0JiB3cmFwcGVkQ29udGV4dCkKIHsKICAgICBBU1NFUlQobV9mcm9udGVuZERpc3BhdGNo
ZXIpOwogICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9IHdyYXBwZWRDb250ZXh0LnNj
cmlwdFN0YXRlKCk7CkBAIC0yMjQsMTMgKzIyNiwxMyBAQCBJbmplY3RlZFNjcmlwdENhbnZhc01v
ZHVsZSBJbnNwZWN0b3JDYW52YXNBZ2VudDo6aW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUoRXJy
bwogICAgIHJldHVybiBtb2R1bGU7CiB9CiAKLUluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlIElu
c3BlY3RvckNhbnZhc0FnZW50OjppbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZShFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGNvbnN0IFNjcmlwdE9iamVjdCYgc2NyaXB0T2JqZWN0KQorSW5qZWN0
ZWRTY3JpcHRDYW52YXNNb2R1bGUgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmluamVjdGVkU2NyaXB0
Q2FudmFzTW9kdWxlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgRGVwcmVjYXRlZDo6
U2NyaXB0T2JqZWN0JiBzY3JpcHRPYmplY3QpCiB7CiAgICAgaWYgKCFjaGVja0lzRW5hYmxlZChl
cnJvclN0cmluZykpCiAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZSgp
OwogICAgIGlmIChzY3JpcHRPYmplY3QuaGFzTm9WYWx1ZSgpKSB7CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IG9y
aWdpbmFsIFNjcmlwdE9iamVjdCBoYXMgbm8gdmFsdWUiOworICAgICAgICAqZXJyb3JTdHJpbmcg
PSAiSW50ZXJuYWwgZXJyb3I6IG9yaWdpbmFsIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBoYXMg
bm8gdmFsdWUiOwogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUoKTsK
ICAgICB9CiAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlKGVycm9yU3RyaW5n
LCBzY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCmluZGV4IDQ5ZDAzZTguLjRmMTg3YTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCkBAIC0z
MywxNSArMzMsMjAgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNw
ZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclR5
cGVCdWlsZGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIERlcHJlY2F0ZWQgeworY2xhc3MgU2Ny
aXB0T2JqZWN0OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lOwpAQCAt
NDksMTEgKzU0LDEwIEBAIGNsYXNzIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOwogY2xhc3Mg
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50OwogY2xhc3Mg
SW5zdHJ1bWVudGluZ0FnZW50czsKLWNsYXNzIFNjcmlwdE9iamVjdDsKIAogdHlwZWRlZiBTdHJp
bmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckNhbnZhc0FnZW50IDogcHVibGljIElu
c3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3RvckNhbnZhc0JhY2tlbmREaXNwYXRjaGVy
SGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JDYW52YXNBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JB
Z2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JDYW52YXNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIg
ewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckNhbnZhc0FnZW50PiBj
cmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9y
UGFnZUFnZW50KiBwYWdlQWdlbnQsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKQogICAgIHsKQEAgLTYxLDcgKzY1LDcgQEAgcHVibGljOgogICAgIH0KICAgICB+
SW5zcGVjdG9yQ2FudmFzQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVj
dG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgdm9p
ZCBmcmFtZU5hdmlnYXRlZChGcmFtZSopOwpAQCAtNjksOSArNzMsOSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkaWRCZWdpbkZyYW1lKCk7CiAKICAgICAvLyBDYWxsZWQgZnJvbSBJbnNwZWN0b3JDYW52
YXNJbnN0cnVtZW50YXRpb24uCi0gICAgU2NyaXB0T2JqZWN0IHdyYXBDYW52YXMyRFJlbmRlcmlu
Z0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24oY29uc3QgU2NyaXB0T2JqZWN0Jik7CisgICAgRGVw
cmVjYXRlZDo6U2NyaXB0T2JqZWN0IHdyYXBDYW52YXMyRFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0
cnVtZW50YXRpb24oY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0Jik7CiAjaWYgRU5BQkxF
KFdFQkdMKQotICAgIFNjcmlwdE9iamVjdCB3cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5z
dHJ1bWVudGF0aW9uKGNvbnN0IFNjcmlwdE9iamVjdCYpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlw
dE9iamVjdCB3cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYpOwogI2VuZGlmCiAKICAgICAvLyBDYWxsZWQgZnJv
bSB0aGUgZnJvbnQtZW5kLgpAQCAtOTEsMTIgKzk1LDEyIEBAIHByaXZhdGU6CiAgICAgSW5zcGVj
dG9yQ2FudmFzQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclBhZ2VBZ2VudCos
IEluamVjdGVkU2NyaXB0TWFuYWdlciopOwogCiAgICAgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1
bGUgaW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUoRXJyb3JTdHJpbmcqLCBKU0M6OkV4ZWNTdGF0
ZSopOwotICAgIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlIGluamVjdGVkU2NyaXB0Q2FudmFz
TW9kdWxlKEVycm9yU3RyaW5nKiwgY29uc3QgU2NyaXB0T2JqZWN0Jik7CisgICAgSW5qZWN0ZWRT
Y3JpcHRDYW52YXNNb2R1bGUgaW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUoRXJyb3JTdHJpbmcq
LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmKTsKICAgICBJbmplY3RlZFNjcmlwdENh
bnZhc01vZHVsZSBpbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZShFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYpOwogCiAgICAgdm9pZCBmaW5kRnJhbWVzV2l0aFVuaW5zdHJ1bWVudGVkQ2FudmFz
ZXMoKTsKICAgICBib29sIGNoZWNrSXNFbmFibGVkKEVycm9yU3RyaW5nKikgY29uc3Q7Ci0gICAg
U2NyaXB0T2JqZWN0IG5vdGlmeVJlbmRlcmluZ0NvbnRleHRXYXNXcmFwcGVkKGNvbnN0IFNjcmlw
dE9iamVjdCYpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBub3RpZnlSZW5kZXJpbmdD
b250ZXh0V2FzV3JhcHBlZChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmKTsKIAogICAg
IEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNJbnN0cnVtZW50YXRpb24uaAppbmRleCBkM2Zk
YTYwLi4wMTUwYzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ2FudmFzSW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNhbnZhc0luc3RydW1lbnRhdGlvbi5oCkBAIC0zNCwxMSArMzQsMTEgQEAKICNp
bmNsdWRlICJJbnNwZWN0b3JDYW52YXNBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKLSNpbmNsdWRl
ICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3QuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1TY3JpcHRPYmplY3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3cmFwQ2FudmFzMkRSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKERvY3Vt
ZW50KiBkb2N1bWVudCwgY29uc3QgU2NyaXB0T2JqZWN0JiBjb250ZXh0KQorRGVwcmVjYXRlZDo6
U2NyaXB0T2JqZWN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d3JhcENhbnZhczJEUmVuZGVy
aW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlvbihEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgY29udGV4dCkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5z
dHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkgewpAQCAtNDksMTEgKzQ5LDEx
IEBAIFNjcmlwdE9iamVjdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndyYXBDYW52YXMyRFJl
bmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50CiAgICAgVU5VU0VEX1BBUkFNKGRvY3VtZW50KTsK
ICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CiAjZW5kaWYKLSAgICByZXR1cm4gU2NyaXB0T2Jq
ZWN0KCk7CisgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCgpOwogfQogCiAjaWYg
RU5BQkxFKFdFQkdMKQotU2NyaXB0T2JqZWN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d3Jh
cFdlYkdMUmVuZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlvbihEb2N1bWVudCogZG9jdW1l
bnQsIGNvbnN0IFNjcmlwdE9iamVjdCYgZ2xDb250ZXh0KQorRGVwcmVjYXRlZDo6U2NyaXB0T2Jq
ZWN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d3JhcFdlYkdMUmVuZGVyaW5nQ29udGV4dEZv
ckluc3RydW1lbnRhdGlvbihEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNj
cmlwdE9iamVjdCYgZ2xDb250ZXh0KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYg
KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5n
QWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKSB7CkBAIC02NCw3ICs2NCw3IEBAIFNjcmlwdE9i
amVjdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndyYXBXZWJHTFJlbmRlcmluZ0NvbnRleHRG
b3JJbnN0cnVtZW50YXRpCiAgICAgVU5VU0VEX1BBUkFNKGRvY3VtZW50KTsKICAgICBVTlVTRURf
UEFSQU0oZ2xDb250ZXh0KTsKICNlbmRpZgotICAgIHJldHVybiBTY3JpcHRPYmplY3QoKTsKKyAg
ICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KCk7CiB9CiAjZW5kaWYgLy8gRU5BQkxF
KFdFQkdMKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuY3Bw
CmluZGV4IGM2NzIxNDIuLmMzM2U2YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDbGllbnQuY3BwCkBAIC0zOCw3ICszOCw5IEBACiAjaW5jbHVkZSAiUGFnZS5oIgog
I2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2Rl
LmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRW
YWx1ZS5oPgorCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAppbmRleCA0
NGU3ZWExNmEuLmRmMzg5ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q2xpZW50LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgSW5zcGVjdG9yQ2xpZW50X2gKICNk
ZWZpbmUgSW5zcGVjdG9yQ2xpZW50X2gKIAorI2luY2x1ZGUgIkluc3BlY3RvckZvcndhcmRpbmcu
aCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTM0LDcgKzM1LDYgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKLWNsYXNzIEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgUGFnZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcAppbmRleCBkYWE5YzVi
Li5kZTE2ZjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29uc29sZUFnZW50LmNwcApAQCAtNDMsMTQgKzQzLDE2IEBACiAjaW5jbHVkZSAiU2NyaXB0Q2Fs
bFN0YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIgogI2luY2x1ZGUg
IlNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRl
ICJTY3JpcHRQcm9maWxlci5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgog
I2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAordXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgbWF4aW11bUNvbnNvbGVNZXNzYWdlcyA9IDEwMDA7CkBAIC01OSw3ICs2MSw3IEBAIHN0YXRp
YyBjb25zdCBpbnQgZXhwaXJlQ29uc29sZU1lc3NhZ2VzU3RlcCA9IDEwMDsKIGludCBJbnNwZWN0
b3JDb25zb2xlQWdlbnQ6OnNfZW5hYmxlZEFnZW50Q291bnQgPSAwOwogCiBJbnNwZWN0b3JDb25z
b2xlQWdlbnQ6Okluc3BlY3RvckNvbnNvbGVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFu
YWdlcikKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIkNvbnNvbGUiKSwg
aW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVy
YWwoIkNvbnNvbGUiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1fcHJldmlvdXNNZXNzYWdl
KDApCiAgICAgLCBtX2V4cGlyZWRDb25zb2xlTWVzc2FnZUNvdW50KDApCkBAIC0xMjIsNyArMTI0
LDcgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OnJlc2V0KCkKICAgICBtX2NvdW50cy5j
bGVhcigpOwogfQogCi12b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3Bl
Y3RvckNvbnNvbGVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hl
cj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9y
Q29uc29sZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMp
OwpAQCAtMzIwLDcgKzMyMiw3IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjphZGRDb25z
b2xlTWVzc2FnZShQYXNzT3duUHRyPENvbnNvbGVNZXNzYWdlPiBjb25zb2xlCiBjbGFzcyBJbnNw
ZWN0YWJsZUhlYXBPYmplY3QgOiBwdWJsaWMgSW5qZWN0ZWRTY3JpcHRIb3N0OjpJbnNwZWN0YWJs
ZU9iamVjdCB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgSW5zcGVjdGFibGVIZWFwT2JqZWN0KGlu
dCBoZWFwT2JqZWN0SWQpIDogbV9oZWFwT2JqZWN0SWQoaGVhcE9iamVjdElkKSB7IH0KLSAgICB2
aXJ0dWFsIFNjcmlwdFZhbHVlIGdldChKU0M6OkV4ZWNTdGF0ZSopCisgICAgdmlydHVhbCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSBnZXQoSlNDOjpFeGVjU3RhdGUqKQogICAgIHsKICAgICAgICAg
cmV0dXJuIFNjcmlwdFByb2ZpbGVyOjpvYmplY3RCeUhlYXBPYmplY3RJZChtX2hlYXBPYmplY3RJ
ZCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnNvbGVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNv
bGVBZ2VudC5oCmluZGV4IGMwZjBhZGMuLjk5NDU1Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKQEAgLTI5LDggKzI5LDkgQEAKIAog
I2luY2x1ZGUgIkNvbnNvbGVBUElUeXBlcy5oIgogI2luY2x1ZGUgIkNvbnNvbGVUeXBlcy5oIgot
I2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVk
ZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC01Miw3
ICs1Myw3IEBAIGNsYXNzIFNjcmlwdFByb2ZpbGU7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3Ry
aW5nOwogCi1jbGFzcyBJbnNwZWN0b3JDb25zb2xlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFz
ZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yQ29uc29sZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7
CitjbGFzcyBJbnNwZWN0b3JDb25zb2xlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNl
LCBwdWJsaWMgSW5zcGVjdG9yQ29uc29sZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQ29uc29sZUFnZW50KTsKIHB1YmxpYzoKICAg
ICBJbnNwZWN0b3JDb25zb2xlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluamVjdGVkU2Ny
aXB0TWFuYWdlciopOwpAQCAtNjQsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBlbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CiAgICAgdm9pZCByZXNldCgpOwogCi0gICAg
dmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKCkgT1ZFUlJJREU7CiAKICAgICB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNv
dXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBK
U0M6OkV4ZWNTdGF0ZSosIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiwgdW5zaWduZWQgbG9u
ZyByZXF1ZXN0SWRlbnRpZmllciA9IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGUyM2ZlMDcuLjQzNzc1ODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTQy
LDcgKzQyLDYgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVycy5oIgotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvckNTU0FnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQuaCIKQEAgLTcxLDggKzcwLDEwIEBACiAjaW5jbHVk
ZSAiUGFnZURlYnVnZ2VyQWdlbnQuaCIKICNpbmNsdWRlICJQYWdlUnVudGltZUFnZW50LmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5k
ZXggYTZlMmQ3ZC4uZjZlNmQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5oCkBAIC0zMywxMyArMzMsMTggQEAKIAogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgiCi0jaW5jbHVkZSAi
SW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckFnZW50
UmVnaXN0cnkuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yT2Jq
ZWN0OworY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOworY2xhc3MgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NV3Jh
cHBlcldvcmxkOwpAQCAtNDgsMTUgKzUzLDEyIEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNs
YXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKIGNsYXNzIEluc3BlY3RvckFnZW50OwogY2xhc3Mg
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OwotY2xhc3MgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JET01BZ2Vu
dDsKIGNsYXNzIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OwotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogY2xhc3MgSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JNZW1vcnlBZ2VudDsKLWNsYXNzIElu
c3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3BlY3Rvck92ZXJsYXk7CiBjbGFzcyBJbnNwZWN0b3JQ
YWdlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JQcm9maWxlckFnZW50OwpAQCAtOTUsNyArOTcsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBoYXNMb2NhbEZyb250ZW5kKCkgY29uc3Q7CiAgICAgYm9vbCBo
YXNSZW1vdGVGcm9udGVuZCgpIGNvbnN0OwogCi0gICAgdm9pZCBjb25uZWN0RnJvbnRlbmQoSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKik7CisgICAgdm9pZCBjb25uZWN0RnJvbnRlbmQoSW5zcGVj
dG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKTsKICAgICB2b2lkIGRpc2Nvbm5lY3RGcm9u
dGVuZCgpOwogICAgIHZvaWQgc2V0UHJvY2Vzc0lkKGxvbmcpOwogCkBAIC0xMTEsNyArMTEzLDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRJbmRpY2F0aW5nKGJvb2wpOwogCi0gICAgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlKCkgY29u
c3Q7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmpl
Y3RGb3JIaWdobGlnaHRlZE5vZGUoKSBjb25zdDsKIAogICAgIGJvb2wgaXNVbmRlclRlc3QoKTsK
ICAgICB2b2lkIGV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQobG9uZyBjYWxsSWQsIGNvbnN0IFN0
cmluZyYgc2NyaXB0KTsKQEAgLTE1NCwxMiArMTU2LDEyIEBAIHByaXZhdGU6CiAgICAgSW5zcGVj
dG9yUHJvZmlsZXJBZ2VudCogbV9wcm9maWxlckFnZW50OwogI2VuZGlmCiAKLSAgICBSZWZQdHI8
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7
CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1faW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CiAgICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50PiBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50OwotICAgIEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CisgICAgSW5zcGVjdG9yOjpJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogICAgIFBhZ2Uq
IG1fcGFnZTsKICAgICBJbnNwZWN0b3JDbGllbnQqIG1faW5zcGVjdG9yQ2xpZW50OwotICAgIElu
c3BlY3RvckFnZW50UmVnaXN0cnkgbV9hZ2VudHM7CisgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JB
Z2VudFJlZ2lzdHJ5IG1fYWdlbnRzOwogICAgIGJvb2wgbV9pc1VuZGVyVGVzdDsKIAogI2lmIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5jcHAKaW5kZXggMzcwMzQzOC4uMGNkZmJlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xMDEsNiArMTAxLDgg
QEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTIxMCw3ICsyMTIsNyBAQCBT
dHJpbmcgSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcoY29uc3QgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB9CiAKIEluc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudChJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBh
Z2VBZ2VudCwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIElu
c3BlY3Rvck92ZXJsYXkqIG92ZXJsYXksIEluc3BlY3RvckNsaWVudCogY2xpZW50KQotICAgIDog
SW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiRE9NIiksIGluc3RydW1lbnRpbmdBZ2Vu
dHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJET00iKSwgaW5zdHJ1
bWVudGluZ0FnZW50cykKICAgICAsIG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkKICAgICAsIG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1fb3Zlcmxh
eShvdmVybGF5KQpAQCAtMjMwLDcgKzIzMiw3IEBAIEluc3BlY3RvckRPTUFnZW50Ojp+SW5zcGVj
dG9yRE9NQWdlbnQoKQogICAgIEFTU0VSVCghbV9zZWFyY2hpbmdGb3JOb2RlKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
IGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNw
YXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3JET01Gcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9i
YWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckRPTUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUo
YmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpAQCAtMTQyMyw3ICsxNDI1LDcgQEAgUGFzc1JlZlB0
cjxUeXBlQnVpbGRlcjo6RE9NOjpFdmVudExpc3RlbmVyPiBJbnNwZWN0b3JET01BZ2VudDo6YnVp
bGRPYmplY3RGb3JFdmUKICAgICBpZiAob2JqZWN0R3JvdXBJZCAmJiBoYW5kbGVyICYmIHN0YXRl
KSB7CiAgICAgICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yKHN0YXRlKTsKICAgICAgICAgaWYgKCFpbmpl
Y3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCi0gICAgICAgICAgICB2YWx1ZS0+c2V0SGFuZGxlcihp
bmplY3RlZFNjcmlwdC53cmFwT2JqZWN0KFNjcmlwdFZhbHVlKHN0YXRlLT52bSgpLCBoYW5kbGVy
KSwgKm9iamVjdEdyb3VwSWQpKTsKKyAgICAgICAgICAgIHZhbHVlLT5zZXRIYW5kbGVyKGluamVj
dGVkU2NyaXB0LndyYXBPYmplY3QoRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoc3RhdGUtPnZtKCks
IGhhbmRsZXIpLCAqb2JqZWN0R3JvdXBJZCkpOwogICAgIH0KICAgICBpZiAoIXNjcmlwdElELmlz
TnVsbCgpKSB7CiAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9u
PiBsb2NhdGlvbiA9IFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb246OmNyZWF0ZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IGE1ZDYw
YmMuLjBlZjE2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5oCkBAIC0zMywxMyArMzMsMTMgQEAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2lu
Y2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JPdmVybGF5LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgi
CisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5
ZXIuaCIKICNpbmNsdWRlICJUaW1lci5oIgotCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3Rv
clZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTQ5LDcgKzQ5LDEyIEBACiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCitu
YW1lc3BhY2UgRGVwcmVjYXRlZCB7CitjbGFzcyBTY3JpcHRWYWx1ZTsKK30KKwogbmFtZXNwYWNl
IFdlYkNvcmUgeworCiBjbGFzcyBDb250YWluZXJOb2RlOwogY2xhc3MgQ2hhcmFjdGVyRGF0YTsK
IGNsYXNzIERPTUVkaXRvcjsKQEAgLTY2LDcgKzcxLDYgQEAgY2xhc3MgSW5zdHJ1bWVudGluZ0Fn
ZW50czsKIGNsYXNzIE5hbWVOb2RlTWFwOwogY2xhc3MgTm9kZTsKIGNsYXNzIFJldmFsaWRhdGVT
dHlsZUF0dHJpYnV0ZVRhc2s7Ci1jbGFzcyBTY3JpcHRWYWx1ZTsKIGNsYXNzIFNoYWRvd1Jvb3Q7
CiAKIHN0cnVjdCBIaWdobGlnaHRDb25maWc7CkBAIC04OSw3ICs5Myw3IEBAIHN0cnVjdCBFdmVu
dExpc3RlbmVySW5mbyB7CiAgICAgY29uc3QgRXZlbnRMaXN0ZW5lclZlY3RvciBldmVudExpc3Rl
bmVyVmVjdG9yOwogfTsKIAotY2xhc3MgSW5zcGVjdG9yRE9NQWdlbnQgOiBwdWJsaWMgSW5zcGVj
dG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yRE9NQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
IHsKK2NsYXNzIEluc3BlY3RvckRPTUFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwg
cHVibGljIEluc3BlY3RvckRPTUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yRE9NQWdlbnQpOwogcHVibGljOgogICAgIHN0cnVjdCBE
T01MaXN0ZW5lciB7CkBAIC0xMTAsNyArMTE0LDcgQEAgcHVibGljOgogCiAgICAgfkluc3BlY3Rv
ckRPTUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERl
c3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIFZlY3RvcjxEb2N1bWVu
dCo+IGRvY3VtZW50cygpOwpAQCAtMTMwLDI4ICsxMzQsMjggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzZXRPdXRlckhUTUwoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJp
bmcmIG91dGVySFRNTCk7CiAgICAgdmlydHVhbCB2b2lkIHNldE5vZGVWYWx1ZShFcnJvclN0cmlu
ZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogICAgIHZpcnR1YWwgdm9pZCBn
ZXRFdmVudExpc3RlbmVyc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBX
VEY6OlN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1
aWxkZXI6OkRPTTo6RXZlbnRMaXN0ZW5lcj4+JiBsaXN0ZW5lcnNBcnJheSk7Ci0gICAgdmlydHVh
bCB2b2lkIHBlcmZvcm1TZWFyY2goRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHdoaXRlc3Bh
Y2VUcmltbWVkUXVlcnksIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIG5vZGVJZHMsIFN0
cmluZyogc2VhcmNoSWQsIGludCogcmVzdWx0Q291bnQpOworICAgIHZpcnR1YWwgdm9pZCBwZXJm
b3JtU2VhcmNoKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB3aGl0ZXNwYWNlVHJpbW1lZFF1
ZXJ5LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4qIG5vZGVJZHMsIFN0
cmluZyogc2VhcmNoSWQsIGludCogcmVzdWx0Q291bnQpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRT
ZWFyY2hSZXN1bHRzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCwgaW50IGZy
b21JbmRleCwgaW50IHRvSW5kZXgsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4mKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzY2FyZFNlYXJjaFJlc3VsdHMoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIHNlYXJjaElkKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZU5vZGUoRXJyb3JT
dHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCk7CiAgICAgdmlydHVhbCB2
b2lkIGdldEF0dHJpYnV0ZXMoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkFycmF5PFN0cmluZz4+JiByZXN1bHQpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRJbnNw
ZWN0TW9kZUVuYWJsZWQoRXJyb3JTdHJpbmcqLCBib29sIGVuYWJsZWQsIGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+KiBoaWdobGlnaHRDb25maWcpOworICAgIHZpcnR1YWwgdm9pZCBzZXRJ
bnNwZWN0TW9kZUVuYWJsZWQoRXJyb3JTdHJpbmcqLCBib29sIGVuYWJsZWQsIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIGhpZ2hsaWdodENvbmZpZyk7CiAgICAgdmly
dHVhbCB2b2lkIHJlcXVlc3ROb2RlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJ
ZCwgaW50KiBub2RlSWQpOwogICAgIHZpcnR1YWwgdm9pZCBwdXNoTm9kZUJ5UGF0aFRvRnJvbnRl
bmQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHBhdGgsIGludCogbm9kZUlkKTsKICAgICB2
aXJ0dWFsIHZvaWQgcHVzaE5vZGVCeUJhY2tlbmRJZFRvRnJvbnRlbmQoRXJyb3JTdHJpbmcqLCBC
YWNrZW5kTm9kZUlkLCBpbnQqIG5vZGVJZCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VCYWNr
ZW5kTm9kZUlkcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgbm9kZUdyb3VwKTsKICAgICB2
aXJ0dWFsIHZvaWQgaGlkZUhpZ2hsaWdodChFcnJvclN0cmluZyopOwotICAgIHZpcnR1YWwgdm9p
ZCBoaWdobGlnaHRSZWN0KEVycm9yU3RyaW5nKiwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGlu
dCBoZWlnaHQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNv
b3JkaW5hdGVzKTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0UXVhZChFcnJvclN0cmluZyos
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIHF1YWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVD
b2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKTsKLSAgICB2aXJ0dWFsIHZvaWQg
aGlnaGxpZ2h0Tm9kZShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
JiBoaWdobGlnaHRDb25maWcsIGNvbnN0IGludCogbm9kZUlkLCBjb25zdCBTdHJpbmcqIG9iamVj
dElkKTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0RnJhbWUoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvcik7CisgICAgdmlydHVh
bCB2b2lkIGhpZ2hsaWdodFJlY3QoRXJyb3JTdHJpbmcqLCBpbnQgeCwgaW50IHksIGludCB3aWR0
aCwgaW50IGhlaWdodCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piog
Y29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVD
b2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKTsKKyAgICB2aXJ0dWFsIHZvaWQg
aGlnaGxpZ2h0UXVhZChFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3RvckFycmF5PiYgcXVhZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG91dGxp
bmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKTsKKyAgICB2aXJ0dWFsIHZv
aWQgaGlnaGxpZ2h0Tm9kZShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdD4mIGhpZ2hsaWdodENvbmZpZywgY29uc3QgaW50KiBub2RlSWQsIGNvbnN0
IFN0cmluZyogb2JqZWN0SWQpOworICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHRGcmFtZShFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4qIG91dGxpbmVDb2xvcik7CiAKICAgICB2aXJ0dWFsIHZvaWQgbW92ZVRvKEVycm9y
U3RyaW5nKiwgaW50IG5vZGVJZCwgaW50IHRhcmdldE5vZGVJZCwgY29uc3QgaW50KiBhbmNob3JO
b2RlSWQsIGludCogbmV3Tm9kZUlkKTsKICAgICB2aXJ0dWFsIHZvaWQgdW5kbyhFcnJvclN0cmlu
ZyopOwogICAgIHZpcnR1YWwgdm9pZCByZWRvKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2
b2lkIG1hcmtVbmRvYWJsZVN0YXRlKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIGZv
Y3VzKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldEZpbGVJ
bnB1dEZpbGVzKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiYgZmlsZXMpOworICAgIHZpcnR1YWwgdm9pZCBzZXRGaWxlSW5wdXRGaWxlcyhFcnJv
clN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFy
cmF5PiYgZmlsZXMpOwogCiAgICAgdm9pZCBnZXRFdmVudExpc3RlbmVycyhOb2RlKiwgVmVjdG9y
PEV2ZW50TGlzdGVuZXJJbmZvPiYgbGlzdGVuZXJzQXJyYXksIGJvb2wgaW5jbHVkZUFuY2VzdG9y
cyk7CiAKQEAgLTIxMCw4ICsyMTQsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEluc3BlY3Rv
ckRPTUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdlQWdlbnQqLCBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIqLCBJbnNwZWN0b3JPdmVybGF5KiwgSW5zcGVjdG9yQ2xpZW50Kik7
CiAKLSAgICB2b2lkIHNldFNlYXJjaGluZ0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBib29sIGVuYWJs
ZWQsIEluc3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0Q29uZmlnKTsKLSAgICBQYXNzT3duUHRyPEhp
Z2hsaWdodENvbmZpZz4gaGlnaGxpZ2h0Q29uZmlnRnJvbUluc3BlY3Rvck9iamVjdChFcnJvclN0
cmluZyosIEluc3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsKKyAgICB2
b2lkIHNldFNlYXJjaGluZ0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBib29sIGVuYWJsZWQsIEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBoaWdobGlnaHRDb25maWcpOworICAgIFBhc3NPd25QdHI8
SGlnaGxpZ2h0Q29uZmlnPiBoaWdobGlnaHRDb25maWdGcm9tSW5zcGVjdG9yT2JqZWN0KEVycm9y
U3RyaW5nKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdodEluc3BlY3Rvck9i
amVjdCk7CiAKICAgICAvLyBOb2RlLXJlbGF0ZWQgbWV0aG9kcy4KICAgICB0eXBlZGVmIEhhc2hN
YXA8UmVmUHRyPE5vZGU+LCBpbnQ+IE5vZGVUb0lkTWFwOwpAQCAtMjI2LDcgKzIzMCw3IEBAIHBy
aXZhdGU6CiAKICAgICBib29sIGhhc0JyZWFrcG9pbnQoTm9kZSosIGludCB0eXBlKTsKICAgICB2
b2lkIHVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhOb2RlKiByb290LCB1aW50MzJfdCByb290TWFz
aywgYm9vbCB2YWx1ZSk7Ci0gICAgdm9pZCBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KE5vZGUqIHRh
cmdldCwgaW50IGJyZWFrcG9pbnRUeXBlLCBib29sIGluc2VydGlvbiwgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IGRlc2NyaXB0aW9uKTsKKyAgICB2b2lkIGRlc2NyaXB0aW9uRm9yRE9NRXZl
bnQoTm9kZSogdGFyZ2V0LCBpbnQgYnJlYWtwb2ludFR5cGUsIGJvb2wgaW5zZXJ0aW9uLCBQYXNz
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBkZXNjcmlwdGlvbik7CiAKICAgICBQ
YXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpET006Ok5vZGU+IGJ1aWxkT2JqZWN0Rm9yTm9kZShOb2Rl
KiwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCopOwogICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6
OkFycmF5PFN0cmluZz4+IGJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmlidXRlcyhFbGVtZW50Kik7
CkBAIC0yMzcsNyArMjQxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlzY2FyZEJpbmRpbmdz
KCk7CiAKLSAgICB2b2lkIGlubmVySGlnaGxpZ2h0UXVhZChQYXNzT3duUHRyPEZsb2F0UXVhZD4s
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4qIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVz
KTsKKyAgICB2b2lkIGlubmVySGlnaGxpZ2h0UXVhZChQYXNzT3duUHRyPEZsb2F0UXVhZD4sIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIGNvbG9yLCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wq
IHVzZVBhZ2VDb29yZGluYXRlcyk7CiAKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFn
ZW50OwogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudC5jcHAKaW5kZXggODlmZjZlOS4uMjE2MGY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcApAQCAtNDAs
OCArNDAsOCBAQAogI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRp
bmdBZ2VudHMuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSB7CkBAIC02MSw2ICs2MSw4
IEBAIGNvbnN0IGludCBkb21CcmVha3BvaW50RGVyaXZlZFR5cGVTaGlmdCA9IDE2OwogCiB9CiAK
K3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFz
c093blB0cjxJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50PiBJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50OjpjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5z
cGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50LCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dl
ckFnZW50LCBJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQpCkBAIC02OSw3ICs3MSw3IEBA
IFBhc3NPd25QdHI8SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudD4gSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudDo6Y3JlYXRlKEluc3RydW1lCiB9CiAKIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6
Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cywgSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50LCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50KiBkZWJ1Z2dlckFnZW50LCBJbnNwZWN0b3JBZ2VudCopCi0gICAgOiBJbnNwZWN0b3JC
YXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJET01EZWJ1Z2dlciIpLCBpbnN0cnVtZW50aW5nQWdlbnRz
KQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiRE9NRGVidWdnZXIiKSwg
aW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fZG9tQWdlbnQoZG9tQWdlbnQpCiAgICAgLCBt
X2RlYnVnZ2VyQWdlbnQoZGVidWdnZXJBZ2VudCkKICAgICAsIG1fcGF1c2VJbk5leHRFdmVudExp
c3RlbmVyKGZhbHNlKQpAQCAtMTExLDcgKzExMyw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudDo6ZGlzYWJsZSgpCiAgICAgY2xlYXIoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01E
ZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVy
KQordm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9iYWNrZW5kRGlzcGF0
Y2hlciA9IEluc3BlY3RvckRPTURlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNr
ZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaAppbmRleCA5NmY4OGE5Li5hM2RhYWZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50LmgKQEAgLTMzLDI2ICszMywzMCBAQAogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVC
VUdHRVIpICYmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdl
bnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRC
YXNlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yT2JqZWN0
OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBJbnNw
ZWN0b3JBZ2VudDsKIGNsYXNzIEluc3BlY3RvckRPTUFnZW50OwogY2xhc3MgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDsKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3RydW1lbnRpbmdB
Z2VudHM7CiBjbGFzcyBOb2RlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xh
c3MgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQs
IHB1YmxpYyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpMaXN0ZW5lciwgcHVibGljIEluc3BlY3Rv
ckRPTURlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6TGlzdGVuZXIsIHB1YmxpYyBJbnNwZWN0b3JET01EZWJ1Z2dlckJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudCk7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5z
cGVjdG9yRE9NRGVidWdnZXJBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNw
ZWN0b3JET01BZ2VudCosIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqLCBJbnNwZWN0b3JBZ2VudCop
OwpAQCAtNzksNyArODMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsU2VuZFhNTEh0dHBSZXF1
ZXN0KGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICB2b2lkIHBhdXNlT25OYXRpdmVFdmVudElmTmVl
ZGVkKGJvb2wgaXNET01FdmVudCwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUsIGJvb2wgc3luY2hy
b25vdXMpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95
RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc2NhcmRB
Z2VudCgpOwogCkBAIC05Myw3ICs5Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFBhdXNlKCk7CiAgICAgdm9pZCBkaXNhYmxlKCk7CiAKLSAgICB2b2lkIGRlc2NyaXB0aW9uRm9y
RE9NRXZlbnQoTm9kZSogdGFyZ2V0LCBpbnQgYnJlYWtwb2ludFR5cGUsIGJvb2wgaW5zZXJ0aW9u
LCBJbnNwZWN0b3JPYmplY3QqIGRlc2NyaXB0aW9uKTsKKyAgICB2b2lkIGRlc2NyaXB0aW9uRm9y
RE9NRXZlbnQoTm9kZSogdGFyZ2V0LCBpbnQgYnJlYWtwb2ludFR5cGUsIGJvb2wgaW5zZXJ0aW9u
LCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogZGVzY3JpcHRpb24pOwogICAgIHZvaWQgdXBk
YXRlU3VidHJlZUJyZWFrcG9pbnRzKE5vZGUqLCB1aW50MzJfdCByb290TWFzaywgYm9vbCBzZXQp
OwogICAgIGJvb2wgaGFzQnJlYWtwb2ludChOb2RlKiwgaW50IHR5cGUpOwogICAgIHZvaWQgZGlz
Y2FyZEJpbmRpbmdzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCmluZGV4IDY0NmRlMjMuLmFlODY3MjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQu
Y3BwCkBAIC00MSw3ICs0MSw2IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgotI2luY2x1
ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCkBAIC01MCwxMyArNDks
MTUgQEAKICNpbmNsdWRlICJTdG9yYWdlQXJlYS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VOYW1lc3Bh
Y2UuaCIKICNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKLQorI2luY2x1ZGUgPGluc3BlY3Rvci9J
bnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKK3VzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50OjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQpCi0gICAg
OiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJET01TdG9yYWdlIiksIGluc3RydW1l
bnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJET01T
dG9yYWdlIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdl
bnQpCiAgICAgLCBtX2VuYWJsZWQoZmFsc2UpCiB7CkBAIC02OSw3ICs3MCw3IEBAIEluc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudDo6fkluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCgpCiAgICAgbV9pbnN0
cnVtZW50aW5nQWdlbnRzID0gMDsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6
OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZy
b250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRj
aGVyKQordm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFu
bmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAg
ICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRPTVN0
b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5k
RGlzcGF0Y2hlciA9IEluc3BlY3RvckRPTVN0b3JhZ2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRl
KGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaAppbmRleCAyY2QxN2IzLi4yNGQ0NzgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudC5oCkBAIC0yOSwyNyArMjksMzAgQEAKICNpZm5kZWYgSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50X2gKICNkZWZpbmUgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50X2gKIAotI2luY2x1ZGUgIklu
c3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
cy5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgIlN0b3Jh
Z2VBcmVhLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgSW5z
cGVjdG9yIHsKK2NsYXNzIEluc3BlY3RvckFycmF5OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEZyYW1lOwotY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBjbGFzcyBJbnNwZWN0b3JE
T01TdG9yYWdlRnJvbnRlbmREaXNwYXRjaGVyOwogY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50Owog
Y2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBTZWN1cml0eU9y
aWdpbjsKIGNsYXNzIFN0b3JhZ2U7Ci1jbGFzcyBTdG9yYWdlQXJlYTsKIAogdHlwZWRlZiBTdHJp
bmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCA6IHB1Ymxp
YyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JET01TdG9yYWdlQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCA6IHB1Ymxp
YyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JET01TdG9yYWdlQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKICAgICB7CkBAIC01Nywx
NSArNjAsMTUgQEAgcHVibGljOgogICAgIH0KICAgICB+SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50
KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9u
dGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9u
dC1lbmQuCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1
YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7Ci0gICAgdmlydHVhbCB2b2lkIGdldERPTVN0
b3JhZ2VJdGVtcyhFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBz
dG9yYWdlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkFycmF5PFN0
cmluZz4+PiYgaXRlbXMpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRET01TdG9yYWdlSXRlbShFcnJv
clN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBzdG9yYWdlSWQsIGNvbnN0
IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlRE9NU3RvcmFnZUl0ZW0oRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiYgc3RvcmFnZUlkLCBjb25zdCBTdHJpbmcmIGtleSk7CisgICAgdmlydHVhbCB2b2lkIGdl
dERPTVN0b3JhZ2VJdGVtcyhFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdD4mIHN0b3JhZ2VJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBl
QnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4+JiBpdGVtcyk7CisgICAgdmlydHVhbCB2b2lkIHNldERP
TVN0b3JhZ2VJdGVtKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0PiYgc3RvcmFnZUlkLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2
YWx1ZSk7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZURPTVN0b3JhZ2VJdGVtKEVycm9yU3RyaW5n
KiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgc3RvcmFnZUlkLCBj
b25zdCBTdHJpbmcmIGtleSk7CiAKICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgaW5qZWN0ZWQgc2Ny
aXB0LgogICAgIFN0cmluZyBzdG9yYWdlSWQoU3RvcmFnZSopOwpAQCAtNzgsNyArODEsNyBAQCBw
cml2YXRlOgogCiAgICAgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KEluc3RydW1lbnRpbmdBZ2Vu
dHMqLCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKIAotICAgIFBhc3NSZWZQdHI8U3RvcmFnZUFyZWE+
IGZpbmRTdG9yYWdlQXJlYShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+JiwgRnJhbWUqJik7CisgICAgUGFzc1JlZlB0cjxTdG9yYWdlQXJlYT4gZmluZFN0b3JhZ2VB
cmVhKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiYsIEZyYW1lKiYpOwogCiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRE9NU3RvcmFnZUZyb250ZW5kRGlzcGF0Y2hlcj4g
bV9mcm9udGVuZERpc3BhdGNoZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKaW5kZXggYzU4MDBlYS4uYWU2YWNhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNw
cApAQCAtMzcsOCArMzcsNiBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5o
IgogI2luY2x1ZGUgIkluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JGcm9udGVuZC5oIgotCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVk
ZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIlNRTEVycm9yLmgiCiAjaW5jbHVk
ZSAiU1FMUmVzdWx0U2V0LmgiCkBAIC01MCwxMSArNDgsMTMgQEAKICNpbmNsdWRlICJTUUxUcmFu
c2FjdGlvbkVycm9yQ2FsbGJhY2suaCIKICNpbmNsdWRlICJTUUxWYWx1ZS5oIgogI2luY2x1ZGUg
IlZvaWRDYWxsYmFjay5oIgotCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogdHlwZWRlZiBXZWJDb3JlOjpJbnNwZWN0b3JE
YXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTENhbGxiYWNrIEV4ZWN1
dGVTUUxDYWxsYmFjazsKIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBuYW1lc3BhY2UgewpAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgSW5zcGVj
dG9yRGF0YWJhc2VBZ2VudDo6Y2xlYXJSZXNvdXJjZXMoKQogfQogCiBJbnNwZWN0b3JEYXRhYmFz
ZUFnZW50OjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJE
YXRhYmFzZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNl
KEFTQ0lJTGl0ZXJhbCgiRGF0YWJhc2UiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1f
ZW5hYmxlZChmYWxzZSkKIHsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3Rv
ckRhdGFiYXNlQWdlbnQodGhpcyk7CkBAIC0yMjIsNyArMjIyLDcgQEAgSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudDo6fkluc3BlY3RvckRhdGFiYXNlQWdlbnQoKQogICAgIG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy0+c2V0SW5zcGVjdG9yRGF0YWJhc2VBZ2VudCgwKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JE
YXRhYmFzZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBi
YWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBm
cm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0
Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAg
bV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaAppbmRleCBhMzJmMDY0Li41NDUzNzI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VB
Z2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFn
ZW50LmgKQEAgLTMxLDIyICszMSwyNiBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikgJiYgRU5B
QkxFKFNRTF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2lu
Y2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNzIElu
c3BlY3RvckFycmF5OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERhdGFiYXNl
OwotY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBjbGFzcyBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNl
OwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJp
bmc7CiAKLWNsYXNzIEluc3BlY3RvckRhdGFiYXNlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFz
ZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIg
eworY2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJh
c2UsIHB1YmxpYyBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yRGF0YWJhc2VBZ2VudD4gY3Jl
YXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgewpAQCAt
NTQsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIH5JbnNwZWN0b3JEYXRhYmFzZUFnZW50
KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9u
dGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIHZvaWQgY2xlYXJSZXNvdXJjZXMoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJl
c291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJl
c291cmNlLmNwcAppbmRleCA5ZDRiNzNmLi4zYmFmODgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwCkBAIC0zNiw3
ICszNiw5IEBACiAKICNpbmNsdWRlICJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZy
b250ZW5kLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCisjaW5jbHVkZSA8aW5zcGVj
dG9yL0luc3BlY3RvclZhbHVlcy5oPgorCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBhYzJiNzBlLi5mMjkzOTZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3Bw
CkBAIC0zOCwxMSArMzgsMTIgQEAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VB
Z2VudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1l
bnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJSZWd1bGFyRXhwcmVzc2lvbi5oIgogI2luY2x1ZGUg
IlNjcmlwdERlYnVnU2VydmVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisjaW5jbHVk
ZSA8YmluZGluZ3MvU2NyaXB0T2JqZWN0Lmg+CisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFs
dWUuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpBcnJh
eTsKQEAgLTUwLDEyICs1MSwxNCBAQCB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6RGVidWdn
ZXI6OkZ1bmN0aW9uRGV0YWlsczsKIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dl
cjo6U2NyaXB0SWQ7CiB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0OwogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNvbnN0IGNoYXIqIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJhY2t0cmFjZU9iamVj
dEdyb3VwID0gImJhY2t0cmFjZSI7CiAKIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywg
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgOiBJbnNw
ZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJEZWJ1Z2dlciIpLCBpbnN0cnVtZW50aW5nQWdl
bnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiRGVidWdnZXIiKSwg
aW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVj
dGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1fcGF1c2VkU2NyaXB0U3RhdGUoMCkKICAgICAsIG1f
Y29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElEKG5vQnJlYWtwb2ludElEKQpAQCAtMTM2LDcg
KzEzOSw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmlu
ZyopCiAgICAgZGlzYWJsZSgpOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250
ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVy
KQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1f
ZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JEZWJ1Z2dlckZy
b250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRj
aGVyID0gSW5zcGVjdG9yRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmRE
aXNwYXRjaGVyLCB0aGlzKTsKQEAgLTQxMCw3ICs0MTMsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlc29sdmVC
cmVhawogICAgIHJldHVybiBsb2NhdGlvbjsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBzY3JpcHRUb0luc3BlY3Rvck9iamVjdChTY3JpcHRPYmplY3Qgc2NyaXB0T2Jq
ZWN0KQorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBzY3JpcHRUb0luc3BlY3Rv
ck9iamVjdChEZXByZWNhdGVkOjpTY3JpcHRPYmplY3Qgc2NyaXB0T2JqZWN0KQogewogICAgIGlm
IChzY3JpcHRPYmplY3QuaGFzTm9WYWx1ZSgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTQzNiw3
ICs0MzksNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNlYXJjaEluQ29udGVudChF
cnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgcwogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpzZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcm
IHNjcmlwdElELCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIGNvbnN0IGJvb2wqIGNvbnN0IHBy
ZXZpZXcsIFJlZlB0cjxBcnJheTxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZT4+JiBu
ZXdDYWxsRnJhbWVzLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcmVzdWx0KQogewogICAgIGJv
b2wgcHJldmlld09ubHkgPSBwcmV2aWV3ICYmICpwcmV2aWV3OwotICAgIFNjcmlwdE9iamVjdCBy
ZXN1bHRPYmplY3Q7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IHJlc3VsdE9iamVjdDsK
ICAgICBpZiAoIXNjcmlwdERlYnVnU2VydmVyKCkuc2V0U2NyaXB0U291cmNlKHNjcmlwdElELCBu
ZXdDb250ZW50LCBwcmV2aWV3T25seSwgZXJyb3IsICZtX2N1cnJlbnRDYWxsU3RhY2ssICZyZXN1
bHRPYmplY3QpKQogICAgICAgICByZXR1cm47CiAgICAgbmV3Q2FsbEZyYW1lcyA9IGN1cnJlbnRD
YWxsRnJhbWVzKCk7CkBAIC02MDUsNyArNjA4LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpydW5TY3JpcHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTY3JpcHRJZCYK
ICAgICAgICAgbXV0ZUNvbnNvbGUoKTsKICAgICB9CiAKLSAgICBTY3JpcHRWYWx1ZSB2YWx1ZTsK
KyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB2YWx1ZTsKICAgICBib29sIHdhc1Rocm93blZh
bHVlOwogICAgIFN0cmluZyBleGNlcHRpb25NZXNzYWdlOwogICAgIHNjcmlwdERlYnVnU2VydmVy
KCkucnVuU2NyaXB0KGluamVjdGVkU2NyaXB0LnNjcmlwdFN0YXRlKCksIHNjcmlwdElELCAmdmFs
dWUsICZ3YXNUaHJvd25WYWx1ZSwgJmV4Y2VwdGlvbk1lc3NhZ2UpOwpAQCAtNzI2LDcgKzcyOSw3
IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZmFpbGVkVG9QYXJzZVNvdXJjZShjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnNj
cmlwdEZhaWxlZFRvUGFyc2UodXJsLCBkYXRhLCBmaXJzdExpbmUsIGVycm9yTGluZSwgZXJyb3JN
ZXNzYWdlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZShKU0M6
OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBj
b25zdCBTY3JpcHRWYWx1ZSYgZXhjZXB0aW9uKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpkaWRQYXVzZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYg
ZXhjZXB0aW9uKQogewogICAgIEFTU0VSVChzY3JpcHRTdGF0ZSAmJiAhbV9wYXVzZWRTY3JpcHRT
dGF0ZSk7CiAgICAgbV9wYXVzZWRTY3JpcHRTdGF0ZSA9IHNjcmlwdFN0YXRlOwpAQCAtNzU1LDcg
Kzc1OCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UoSlNDOjpFeGVj
U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcHRWCiB2b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmRpZENvbnRpbnVlKCkKIHsKICAgICBtX3BhdXNlZFNjcmlwdFN0YXRlID0gMDsKLSAg
ICBtX2N1cnJlbnRDYWxsU3RhY2sgPSBTY3JpcHRWYWx1ZSgpOworICAgIG1fY3VycmVudENhbGxT
dGFjayA9IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCk7CiAgICAgY2xlYXJCcmVha0RldGFpbHMo
KTsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVzdW1lZCgpOwogfQpAQCAtNzcwLDcgKzc3
Myw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtQcm9ncmFtKEluc3BlY3Rv
ckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmNsZWFyKCkKIHsKICAgICBtX3BhdXNlZFNjcmlwdFN0YXRlID0gMDsKLSAgICBtX2N1cnJl
bnRDYWxsU3RhY2sgPSBTY3JpcHRWYWx1ZSgpOworICAgIG1fY3VycmVudENhbGxTdGFjayA9IERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCk7CiAgICAgbV9zY3JpcHRzLmNsZWFyKCk7CiAgICAgbV9i
cmVha3BvaW50SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SURzLmNsZWFyKCk7CiAg
ICAgbV9jb250aW51ZVRvTG9jYXRpb25CcmVha3BvaW50SUQgPSBub0JyZWFrcG9pbnRJRDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCmlu
ZGV4IDRiZTYwMDAuLjViMmU4MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtMzEsMTIgKzMxLDE0IEBACiAjZGVmaW5lIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnRfaAogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIp
ICYmIEVOQUJMRShJTlNQRUNUT1IpCisKICNpbmNsdWRlICJCcmVha3BvaW50SUQuaCIKICNpbmNs
dWRlICJDb25zb2xlQVBJVHlwZXMuaCIKICNpbmNsdWRlICJDb25zb2xlVHlwZXMuaCIKICNpbmNs
dWRlICJJbmplY3RlZFNjcmlwdC5oIgotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgor
I2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5j
bHVkZSAiU2NyaXB0QnJlYWtwb2ludC5oIgogI2luY2x1ZGUgIlNjcmlwdERlYnVnTGlzdGVuZXIu
aCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgpAQCAtNDgsMTkgKzUwLDI1IEBACiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAotbmFt
ZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIERlcHJlY2F0ZWQgeworY2xhc3MgU2NyaXB0VmFs
dWU7Cit9CiAKLWNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKK25hbWVzcGFjZSBJbnNwZWN0
b3IgewogY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFz
cyBJbnNwZWN0b3JWYWx1ZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgU2Ny
aXB0RGVidWdTZXJ2ZXI7Ci1jbGFzcyBTY3JpcHRWYWx1ZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJy
b3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVj
dG9yQmFzZUFnZW50LCBwdWJsaWMgU2NyaXB0RGVidWdMaXN0ZW5lciwgcHVibGljIEluc3BlY3Rv
ckRlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgU2NyaXB0RGVidWdM
aXN0ZW5lciwgcHVibGljIEluc3BlY3RvckRlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGJh
Y2t0cmFjZU9iamVjdEdyb3VwOwpAQCAtNzEsNyArNzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGNhblNldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyosIGJvb2wqKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3VwcG9ydHNTZXBhcmF0ZVNjcmlwdENvbXBpbGF0aW9uQW5kRXhlY3V0aW9uKEVy
cm9yU3RyaW5nKiwgYm9vbCopOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6
Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICBib29sIGlz
UGF1c2VkKCk7CkBAIC04MywxMyArOTEsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
aXNhYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIHNldEJyZWFrcG9pbnRzQWN0
aXZlKEVycm9yU3RyaW5nKiwgYm9vbCBhY3RpdmUpOwogCi0gICAgdmlydHVhbCB2b2lkIHNldEJy
ZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyosIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcq
IG9wdGlvbmFsVVJMLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCog
b3B0aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvcHRp
b25zLCBUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxUeXBlQnVp
bGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4+JiBsb2NhdGlvbnMp
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nKiwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4mIGxvY2F0aW9uLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0Piogb3B0aW9ucywgVHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4mIGFjdHVhbExvY2F0aW9uKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nKiwgaW50IGxpbmVO
dW1iZXIsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxV
UkxSZWdleCwgY29uc3QgaW50KiBvcHRpb25hbENvbHVtbk51bWJlciwgY29uc3QgUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piogb3B0aW9ucywgVHlwZUJ1aWxkZXI6OkRlYnVnZ2Vy
OjpCcmVha3BvaW50SWQqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpE
ZWJ1Z2dlcjo6TG9jYXRpb24+PiYgbG9jYXRpb25zKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QnJl
YWtwb2ludChFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdD4mIGxvY2F0aW9uLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
KiBvcHRpb25zLCBUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxU
eXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiYgYWN0dWFsTG9jYXRpb24pOwogICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVCcmVha3BvaW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBi
cmVha3BvaW50SWRlbnRpZmllcik7Ci0gICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlVG9Mb2NhdGlv
bihFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBsb2NhdGlvbik7
CisgICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyosIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIGxvY2F0aW9uKTsKIAogICAgIHZp
cnR1YWwgdm9pZCBzZWFyY2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNj
cmlwdElELCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBvcHRpb25hbENhc2VTZW5z
aXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpB
cnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0Y2g+PiYpOwotICAgIHZpcnR1YWwgdm9p
ZCBzZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNjcmlwdElELCBj
b25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIGNvbnN0IGJvb2wqIHByZXZpZXcsIFJlZlB0cjxUeXBl
QnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiYgbmV3Q2Fs
bEZyYW1lcywgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHJlc3VsdCk7CisgICAgdmlydHVhbCB2
b2lkIHNldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQs
IGNvbnN0IFN0cmluZyYgbmV3Q29udGVudCwgY29uc3QgYm9vbCogcHJldmlldywgUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZT4+JiBuZXdD
YWxsRnJhbWVzLCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiByZXN1bHQpOwog
ICAgIHZpcnR1YWwgdm9pZCBnZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIHNjcmlwdElELCBTdHJpbmcqIHNjcmlwdFNvdXJjZSk7CiAgICAgdmlydHVhbCB2b2lkIGdl
dEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwg
UmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiYpOwogICAgIHZp
cnR1YWwgdm9pZCBwYXVzZShFcnJvclN0cmluZyopOwpAQCAtMTEyLDkgKzEyMCw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJ1blNjcmlwdChFcnJvclN0cmluZyosIGNvbnN0IFR5cGVCdWlsZGVyOjpE
ZWJ1Z2dlcjo6U2NyaXB0SWQmLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCwgY29uc3Qg
U3RyaW5nKiBvYmplY3RHcm91cCwgY29uc3QgYm9vbCogZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0Fu
ZE11dGVDb25zb2xlLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4m
IHJlc3VsdCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0T3ZlcmxheU1lc3NhZ2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcq
KTsKIAotICAgIHZvaWQgc2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChJbnNwZWN0b3JEZWJ1
Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpFbnVtIGJyZWFrUmVhc29uLCBQYXNzUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSk7CisgICAgdm9pZCBzY2hlZHVsZVBhdXNlT25OZXh0
U3RhdGVtZW50KEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkVu
dW0gYnJlYWtSZWFzb24sIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGRh
dGEpOwogICAgIHZvaWQgY2FuY2VsUGF1c2VPbk5leHRTdGF0ZW1lbnQoKTsKLSAgICB2b2lkIGJy
ZWFrUHJvZ3JhbShJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpF
bnVtIGJyZWFrUmVhc29uLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSk7CisgICAg
dm9pZCBicmVha1Byb2dyYW0oSW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJl
YXNvbjo6RW51bSBicmVha1JlYXNvbiwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdD4gZGF0YSk7CiAgICAgdmlydHVhbCB2b2lkIHNjcmlwdEV4ZWN1dGlvbkJsb2NrZWRCeUNT
UChjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQpOwogCiAgICAgY2xhc3MgTGlzdGVuZXIgewpA
QCAtMTQxLDcgKzE0OSw3IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUo
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZSgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVz
ZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBjb25zdCBT
Y3JpcHRWYWx1ZSYgZXhjZXB0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2UoSlNDOjpF
eGVjU3RhdGUqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywgY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGV4Y2VwdGlvbik7CiAgICAgdmlydHVhbCB2b2lk
IGRpZENvbnRpbnVlKCk7CiAgICAgdm9pZCByZXNldCgpOwogCkBAIC0xNjQsMTkgKzE3MiwxOSBA
QCBwcml2YXRlOgogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFNvdXJjZUlELCBTY3JpcHQ+IFNjcmlw
dHNNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgVmVjdG9yPEJyZWFrcG9pbnRJRD4+
IEJyZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHNNYXA7Ci0gICAg
dHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4+IEJyZWFrcG9p
bnRJZGVudGlmaWVyVG9CcmVha3BvaW50TWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcs
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4+IEJyZWFrcG9pbnRJZGVudGlmaWVy
VG9CcmVha3BvaW50TWFwOwogCiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVjdGVk
U2NyaXB0TWFuYWdlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRGVidWdnZXJGcm9u
dGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwogICAgIFJlZlB0cjxJbnNwZWN0
b3JEZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIEpT
Qzo6RXhlY1N0YXRlKiBtX3BhdXNlZFNjcmlwdFN0YXRlOwotICAgIFNjcmlwdFZhbHVlIG1fY3Vy
cmVudENhbGxTdGFjazsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBtX2N1cnJlbnRDYWxs
U3RhY2s7CiAgICAgU2NyaXB0c01hcCBtX3NjcmlwdHM7CiAgICAgQnJlYWtwb2ludElkZW50aWZp
ZXJUb0RlYnVnU2VydmVyQnJlYWtwb2ludElEc01hcCBtX2JyZWFrcG9pbnRJZGVudGlmaWVyVG9E
ZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHM7CiAgICAgQnJlYWtwb2ludElkZW50aWZpZXJUb0JyZWFr
cG9pbnRNYXAgbV9qYXZhU2NyaXB0QnJlYWtwb2ludHM7CiAgICAgQnJlYWtwb2ludElEIG1fY29u
dGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElEOwogICAgIEluc3BlY3RvckRlYnVnZ2VyRnJvbnRl
bmREaXNwYXRjaGVyOjpSZWFzb246OkVudW0gbV9icmVha1JlYXNvbjsKLSAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBtX2JyZWFrQXV4RGF0YTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+IG1fYnJlYWtBdXhEYXRhOwogICAgIGJvb2wgbV9lbmFibGVkOwogICAgIGJv
b2wgbV9qYXZhU2NyaXB0UGF1c2VTY2hlZHVsZWQ7CiAgICAgTGlzdGVuZXIqIG1fbGlzdGVuZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRm9yd2FyZGlu
Zy5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZvcndhcmRpbmcuaAppbmRl
eCBmNjA2NTk0Li5mNjhmY2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRm9yd2FyZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGb3J3YXJkaW5nLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlIDxpbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNz
IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCB7IH07Cit0eXBlZGVmIEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKIH0KIAogI2VuZGlmIC8vICFkZWZpbmVk
KEluc3BlY3RvckZvcndhcmRpbmdfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAppbmRleCA4NzExYThlLi5h
YThjYTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCkBAIC00OCwxNyArNDgsMTkgQEAKICNpbmNsdWRl
ICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJv
bGxlci5oIgotI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5oIgotI2luY2x1ZGUgIlNjcmlw
dE9iamVjdC5oIgorI2luY2x1ZGUgIlNjcmlwdEdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIlNj
cmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUaW1lci5oIgog
I2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAiV2luZG93RmVhdHVy
ZXMuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi9E
ZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgY2hhciogaW5zcGVjdG9yQXR0YWNoZWRIZWlnaHRT
ZXR0aW5nID0gImluc3BlY3RvckF0dGFjaGVkSGVpZ2h0IjsKQEAgLTM0NCw3ICszNDYsNyBAQCBi
b29sIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmlzVW5kZXJUZXN0KCkKIAogYm9vbCBJ
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpldmFsdWF0ZUFzQm9vbGVhbihjb25zdCBTdHJp
bmcmIGV4cHJlc3Npb24pCiB7Ci0gICAgU2NyaXB0VmFsdWUgdmFsdWUgPSBtX2Zyb250ZW5kUGFn
ZS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChleHByZXNzaW9uKTsKKyAgICBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB2YWx1ZSA9IG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUo
KS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KGV4cHJlc3Npb24pOwogICAgIHJldHVybiB2YWx1ZS50
b1N0cmluZyhtYWluV29ybGRFeGVjU3RhdGUoJm1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKSkp
ID09ICJ0cnVlIjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LmNwcAppbmRleCBiZTI0ZTFlLi4yODA5ZjZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcApAQCAtNDYs
NiArNDYsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmgiCisj
aW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgi
CiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTUzLDI5ICs1
NCwzMyBAQAogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJl
cXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiU2NyaXB0
RnVuY3Rpb25DYWxsLmgiCisjaW5jbHVkZSAiU2NyaXB0R2xvYmFsT2JqZWN0LmgiCisjaW5jbHVk
ZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTb3VuZC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0
dXJlSW5kaWNhdG9yLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmg+
CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykK
IGNsYXNzIEZyb250ZW5kTWVudVByb3ZpZGVyIDogcHVibGljIENvbnRleHRNZW51UHJvdmlkZXIg
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZyb250ZW5kTWVudVByb3ZpZGVyPiBj
cmVhdGUoSW5zcGVjdG9yRnJvbnRlbmRIb3N0KiBmcm9udGVuZEhvc3QsIFNjcmlwdE9iamVjdCBm
cm9udGVuZEFwaU9iamVjdCwgY29uc3QgVmVjdG9yPENvbnRleHRNZW51SXRlbT4mIGl0ZW1zKQor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZyb250ZW5kTWVudVByb3ZpZGVyPiBjcmVhdGUoSW5zcGVj
dG9yRnJvbnRlbmRIb3N0KiBmcm9udGVuZEhvc3QsIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBm
cm9udGVuZEFwaU9iamVjdCwgY29uc3QgVmVjdG9yPENvbnRleHRNZW51SXRlbT4mIGl0ZW1zKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGcm9udGVuZE1lbnVQcm92aWRlcihm
cm9udGVuZEhvc3QsIGZyb250ZW5kQXBpT2JqZWN0LCBpdGVtcykpOwogICAgIH0KICAgICAKICAg
ICB2b2lkIGRpc2Nvbm5lY3QoKQogICAgIHsKLSAgICAgICAgbV9mcm9udGVuZEFwaU9iamVjdCA9
IFNjcmlwdE9iamVjdCgpOworICAgICAgICBtX2Zyb250ZW5kQXBpT2JqZWN0ID0gRGVwcmVjYXRl
ZDo6U2NyaXB0T2JqZWN0KCk7CiAgICAgICAgIG1fZnJvbnRlbmRIb3N0ID0gMDsKICAgICB9CiAg
ICAgCiBwcml2YXRlOgotICAgIEZyb250ZW5kTWVudVByb3ZpZGVyKEluc3BlY3RvckZyb250ZW5k
SG9zdCogZnJvbnRlbmRIb3N0LCBTY3JpcHRPYmplY3QgZnJvbnRlbmRBcGlPYmplY3QsIGNvbnN0
IFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+JiBpdGVtcykKKyAgICBGcm9udGVuZE1lbnVQcm92aWRl
cihJbnNwZWN0b3JGcm9udGVuZEhvc3QqIGZyb250ZW5kSG9zdCwgRGVwcmVjYXRlZDo6U2NyaXB0
T2JqZWN0IGZyb250ZW5kQXBpT2JqZWN0LCBjb25zdCBWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiYg
aXRlbXMpCiAgICAgICAgIDogbV9mcm9udGVuZEhvc3QoZnJvbnRlbmRIb3N0KQogICAgICAgICAs
IG1fZnJvbnRlbmRBcGlPYmplY3QoZnJvbnRlbmRBcGlPYmplY3QpCiAgICAgICAgICwgbV9pdGVt
cyhpdGVtcykKQEAgLTk5LDcgKzEwNCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBVc2VyR2Vz
dHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdl
c3R1cmUpOwogICAgICAgICAgICAgaW50IGl0ZW1OdW1iZXIgPSBpdGVtLT5hY3Rpb24oKSAtIENv
bnRleHRNZW51SXRlbUJhc2VDdXN0b21UYWc7CiAKLSAgICAgICAgICAgIFNjcmlwdEZ1bmN0aW9u
Q2FsbCBmdW5jdGlvbihtX2Zyb250ZW5kQXBpT2JqZWN0LCAiY29udGV4dE1lbnVJdGVtU2VsZWN0
ZWQiKTsKKyAgICAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlv
bihtX2Zyb250ZW5kQXBpT2JqZWN0LCAiY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQiLCBXZWJDb3Jl
OjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAgICAgICAgICBmdW5jdGlv
bi5hcHBlbmRBcmd1bWVudChpdGVtTnVtYmVyKTsKICAgICAgICAgICAgIGZ1bmN0aW9uLmNhbGwo
KTsKICAgICAgICAgfQpAQCAtMTA4LDcgKzExMyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIGNvbnRleHRNZW51Q2xlYXJlZCgpCiAgICAgewogICAgICAgICBpZiAobV9mcm9udGVuZEhv
c3QpIHsKLSAgICAgICAgICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2Zyb250ZW5k
QXBpT2JqZWN0LCAiY29udGV4dE1lbnVDbGVhcmVkIik7CisgICAgICAgICAgICBEZXByZWNhdGVk
OjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9mcm9udGVuZEFwaU9iamVjdCwgImNvbnRl
eHRNZW51Q2xlYXJlZCIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFk
KTsKICAgICAgICAgICAgIGZ1bmN0aW9uLmNhbGwoKTsKIAogICAgICAgICAgICAgbV9mcm9udGVu
ZEhvc3QtPm1fbWVudVByb3ZpZGVyID0gMDsKQEAgLTExNyw3ICsxMjIsNyBAQCBwcml2YXRlOgog
ICAgIH0KIAogICAgIEluc3BlY3RvckZyb250ZW5kSG9zdCogbV9mcm9udGVuZEhvc3Q7Ci0gICAg
U2NyaXB0T2JqZWN0IG1fZnJvbnRlbmRBcGlPYmplY3Q7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0
T2JqZWN0IG1fZnJvbnRlbmRBcGlPYmplY3Q7CiAgICAgVmVjdG9yPENvbnRleHRNZW51SXRlbT4g
bV9pdGVtczsKIH07CiAjZW5kaWYKQEAgLTI3Miw3ICsyNzcsNyBAQCB2b2lkIEluc3BlY3RvckZy
b250ZW5kSG9zdDo6c2hvd0NvbnRleHRNZW51KEV2ZW50KiBldmVudCwgY29uc3QgVmVjdG9yPENv
bnRleHRNZQogCiAgICAgQVNTRVJUKG1fZnJvbnRlbmRQYWdlKTsKICAgICBKU0M6OkV4ZWNTdGF0
ZSogZnJvbnRlbmRFeGVjU3RhdGUgPSBleGVjU3RhdGVGcm9tUGFnZShkZWJ1Z2dlcldvcmxkKCks
IG1fZnJvbnRlbmRQYWdlKTsKLSAgICBTY3JpcHRPYmplY3QgZnJvbnRlbmRBcGlPYmplY3Q7Cisg
ICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IGZyb250ZW5kQXBpT2JqZWN0OwogICAgIGlmICgh
U2NyaXB0R2xvYmFsT2JqZWN0OjpnZXQoZnJvbnRlbmRFeGVjU3RhdGUsICJJbnNwZWN0b3JGcm9u
dGVuZEFQSSIsIGZyb250ZW5kQXBpT2JqZWN0KSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5jcHAKaW5kZXggMDgxNGEwZi4uOTA5OGZi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9m
aWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGVh
cFByb2ZpbGVyQWdlbnQuY3BwCkBAIC0zOSw2ICszOSw4IEBACiAjaW5jbHVkZSAiSW5zdHJ1bWVu
dGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGVyLmgiCiAKK3VzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IGNo
YXIqIGNvbnN0IFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZUhlYXAgPSAib3JnLndlYmtpdC5wcm9m
aWxlcy51c2VyLWluaXRpYXRlZCI7CkBAIC00OSw3ICs1MSw3IEBAIFBhc3NPd25QdHI8SW5zcGVj
dG9ySGVhcFByb2ZpbGVyQWdlbnQ+IEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpjcmVhdGUo
SW5zdHJ1CiB9CiAKIEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpJbnNwZWN0b3JIZWFwUHJv
ZmlsZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKLSAgICA6IEluc3BlY3Rv
ckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIkhlYXBQcm9maWxlciIpLCBpbnN0cnVtZW50aW5nQWdl
bnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiSGVhcFByb2ZpbGVy
IiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihp
bmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBtX25leHRVc2VySW5pdGlhdGVkSGVhcFNuYXBz
aG90TnVtYmVyKDEpCiAgICAgLCBtX3Byb2ZpbGVIZWFkZXJzUmVxdWVzdGVkKGZhbHNlKQpAQCAt
ODAsNyArODIsNyBAQCB2b2lkIEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpyZXNldEZyb250
ZW5kUHJvZmlsZXMoKQogICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVzZXRQcm9maWxl
cygpOwogfQogCi12b2lkIEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWws
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5z
cGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckhlYXBQcm9maWxlckZyb250
ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVy
ID0gSW5zcGVjdG9ySGVhcFByb2ZpbGVyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5k
RGlzcGF0Y2hlciwgdGhpcyk7CkBAIC0xOTgsNyArMjAwLDcgQEAgdm9pZCBJbnNwZWN0b3JIZWFw
UHJvZmlsZXJBZ2VudDo6Z2V0T2JqZWN0QnlIZWFwT2JqZWN0SWQoRXJyb3JTdHJpbmcqIGVycm9y
LCBjb24KICAgICAgICAgKmVycm9yID0gIkludmFsaWQgaGVhcCBzbmFwc2hvdCBvYmplY3QgaWQi
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIFNjcmlwdE9iamVjdCBoZWFwT2JqZWN0ID0g
U2NyaXB0UHJvZmlsZXI6Om9iamVjdEJ5SGVhcE9iamVjdElkKGlkKTsKKyAgICBEZXByZWNhdGVk
OjpTY3JpcHRPYmplY3QgaGVhcE9iamVjdCA9IFNjcmlwdFByb2ZpbGVyOjpvYmplY3RCeUhlYXBP
YmplY3RJZChpZCk7CiAgICAgaWYgKGhlYXBPYmplY3QuaGFzTm9WYWx1ZSgpKSB7CiAgICAgICAg
ICplcnJvciA9ICJPYmplY3QgaXMgbm90IGF2YWlsYWJsZSI7CiAgICAgICAgIHJldHVybjsKQEAg
LTIyMCw3ICsyMjIsNyBAQCB2b2lkIEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpnZXRIZWFw
T2JqZWN0SWQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdAogICAgICAgICAqZXJyb3JT
dHJpbmcgPSAiSW5zcGVjdGVkIGNvbnRleHQgaGFzIGdvbmUiOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIFNjcmlwdFZhbHVlIHZhbHVlID0gaW5qZWN0ZWRTY3JpcHQuZmluZE9iamVjdEJ5
SWQob2JqZWN0SWQpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHZhbHVlID0gaW5qZWN0
ZWRTY3JpcHQuZmluZE9iamVjdEJ5SWQob2JqZWN0SWQpOwogICAgIGlmICh2YWx1ZS5oYXNOb1Zh
bHVlKCkgfHwgdmFsdWUuaXNVbmRlZmluZWQoKSkgewogICAgICAgICAqZXJyb3JTdHJpbmcgPSAi
T2JqZWN0IHdpdGggZ2l2ZW4gaWQgbm90IGZvdW5kIjsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQu
aAppbmRleCBjYzM2ODY4Li4zMDMzODU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuaApAQCAtMzMsOCArMzMsOSBAQAog
CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRShJTlNQRUNUT1IpCiAK
LSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgorI2luY2x1
ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAg
LTQ5LDcgKzUwLDcgQEAgY2xhc3MgU2NyaXB0UHJvZmlsZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJy
b3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50IDogcHVibGljIElu
c3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3RvckhlYXBQcm9maWxlckJhY2tlbmREaXNw
YXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudCA6IHB1Ymxp
YyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JIZWFwUHJvZmlsZXJCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3Rvckhl
YXBQcm9maWxlckFnZW50KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ+IGNyZWF0ZShJbnN0
cnVtZW50aW5nQWdlbnRzKiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKik7CkBAIC02NSw3ICs2Niw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0SGVhcFNuYXBzaG90KEVycm9yU3RyaW5n
KiwgaW50IHVpZCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVByb2ZpbGUoRXJyb3JTdHJpbmcq
LCBpbnQgdWlkKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVz
dHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIHRh
a2VIZWFwU25hcHNob3QoRXJyb3JTdHJpbmcqLCBjb25zdCBib29sKiByZXBvcnRQcm9ncmVzcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERC
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFn
ZW50LmNwcAppbmRleCBhMDI1NzEzLi5mZWFkYWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTYxLDEwICs2MSw5
IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9u
dGVuZC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgotI2luY2x1ZGUgIkluc3Bl
Y3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgotCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVl
cy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxk
ZXI6OkFycmF5OwpAQCAtNzYsMTIgKzc1LDE0IEBAIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVy
OjpJbmRleGVkREI6OktleVJhbmdlOwogdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkluZGV4
ZWREQjo6T2JqZWN0U3RvcmU7CiB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERC
OjpPYmplY3RTdG9yZUluZGV4OwogCit0eXBlZGVmIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZSBSZXF1ZXN0Q2FsbGJhY2s7CiB0eXBlZGVmIFdlYkNv
cmU6Okluc3BlY3RvckluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UmVxdWVzdERh
dGFiYXNlTmFtZXNDYWxsYmFjayBSZXF1ZXN0RGF0YWJhc2VOYW1lc0NhbGxiYWNrOwogdHlwZWRl
ZiBXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJl
cXVlc3REYXRhYmFzZUNhbGxiYWNrIFJlcXVlc3REYXRhYmFzZUNhbGxiYWNrOwogdHlwZWRlZiBX
ZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlcXVl
c3REYXRhQ2FsbGJhY2sgUmVxdWVzdERhdGFDYWxsYmFjazsKLXR5cGVkZWYgV2ViQ29yZTo6SW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZSBSZXF1ZXN0Q2FsbGJhY2s7CiB0
eXBlZGVmIFdlYkNvcmU6Okluc3BlY3RvckluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVySGFuZGxl
cjo6Q2xlYXJPYmplY3RTdG9yZUNhbGxiYWNrIENsZWFyT2JqZWN0U3RvcmVDYWxsYmFjazsKIAor
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1l
c3BhY2UgewpAQCAtNTU3LDcgKzU1OCw3IEBAIHB1YmxpYzoKIH0gLy8gbmFtZXNwYWNlCiAKIElu
c3BlY3RvckluZGV4ZWREQkFnZW50OjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudChJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGlu
amVjdGVkU2NyaXB0TWFuYWdlciwgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQpCi0gICAg
OiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJJbmRleGVkREIiKSwgaW5zdHJ1bWVu
dGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkluZGV4
ZWREQiIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQog
ewpAQCAtNTY3LDcgKzU2OCw3IEBAIEluc3BlY3RvckluZGV4ZWREQkFnZW50Ojp+SW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQoKQogewogfQogCi12b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50Ojpk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0
b3JJbmRleGVkREJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJh
Y2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JJ
bmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlz
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRl
eGVkREJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWRE
QkFnZW50LmgKaW5kZXggYmEzNzU5YS4uYjk1NTIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgKQEAgLTMzLDcgKzMzLDggQEAK
IAogI2lmIEVOQUJMRShJTlNQRUNUT1IpICYmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCi0j
aW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IApAQCAtNDQsNyArNDUsNyBAQCBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CiAKIHR5cGVkZWYg
U3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JJbmRleGVkREJBZ2VudCA6IHB1
YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JJbmRleGVkREJCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQgOiBwdWJs
aWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9ySW5kZXhlZERCQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0
b3JJbmRleGVkREJBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJ
bnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKICAgICB7CkBAIC01Miw3ICs1Myw3IEBAIHB1
YmxpYzoKICAgICB9CiAgICAgfkluc3BlY3RvckluZGV4ZWREQkFnZW50KCk7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
KSBPVkVSUklERTsKIAogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCkBAIC02MCw3
ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyop
OwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RGF0YWJhc2VOYW1lcyhFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIFBhc3NSZWZQdHI8UmVxdWVzdERhdGFiYXNlTmFt
ZXNDYWxsYmFjaz4pOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RGF0YWJhc2UoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNl
TmFtZSwgUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YWJhc2VDYWxsYmFjaz4pOwotICAgIHZpcnR1YWwg
dm9pZCByZXF1ZXN0RGF0YShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmln
aW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3Jl
TmFtZSwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUsIGludCBza2lwQ291bnQsIGludCBwYWdlU2l6
ZSwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGtleVJhbmdlLCBQYXNzUmVmUHRyPFJl
cXVlc3REYXRhQ2FsbGJhY2s+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERhdGEoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFi
YXNlTmFtZSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5k
ZXhOYW1lLCBpbnQgc2tpcENvdW50LCBpbnQgcGFnZVNpemUsIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdD4qIGtleVJhbmdlLCBQYXNzUmVmUHRyPFJlcXVlc3REYXRhQ2Fs
bGJhY2s+KTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJPYmplY3RTdG9yZShFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYgaW5fc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgaW5fZGF0YWJh
c2VOYW1lLCBjb25zdCBTdHJpbmcmIGluX29iamVjdFN0b3JlTmFtZSwgUGFzc1JlZlB0cjxDbGVh
ck9iamVjdFN0b3JlQ2FsbGJhY2s+KTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50LmNwcAppbmRleCA3ZWNjYjhkLi5jNGI4Nzg5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5wdXRBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcklucHV0QWdlbnQu
Y3BwCkBAIC00OSwxMCArNDksMTIgQEAKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3Rv
cjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbnNwZWN0b3JJbnB1dEFnZW50OjpJbnNwZWN0
b3JJbnB1dEFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIFBh
Z2UqIHBhZ2UpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJJbnB1dCIp
LCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0
ZXJhbCgiSW5wdXQiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fcGFnZShwYWdlKQog
ewogfQpAQCAtNjEsNyArNjMsNyBAQCBJbnNwZWN0b3JJbnB1dEFnZW50Ojp+SW5zcGVjdG9ySW5w
dXRBZ2VudCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5wdXRBZ2VudDo6ZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9ySW5wdXRBZ2Vu
dDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVy
KQogewogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JJbnB1dEJhY2tlbmREaXNw
YXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcklucHV0QWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50LmgKaW5kZXggYWNiYTI5OS4uNGUw
NjJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcklucHV0
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5wdXRBZ2Vu
dC5oCkBAIC0zMyw4ICszMyw4IEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVk
ZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCi0KKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBQYWdlOwog
CiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9ySW5wdXRBZ2Vu
dCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JJbnB1dEJhY2tl
bmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JJbnB1dEFnZW50IDogcHVibGlj
IEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3RvcklucHV0QmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JJbnB1dEFnZW50
KTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JJbnB1dEFnZW50PiBj
cmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgUGFnZSogcGFn
ZSkKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogCiAgICAgfkluc3BlY3RvcklucHV0QWdlbnQo
KTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250
ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgLy8gTWV0aG9kcyBjYWxsZWQgZnJvbSB0
aGUgZnJvbnRlbmQgZm9yIHNpbXVsYXRpbmcgaW5wdXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IGM0YzUxY2Iu
LjExN2RiMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC04Myw2ICs4Myw4IEBACiAjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAordXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3Qg
Y2hhciogY29uc3QgcmVxdWVzdEFuaW1hdGlvbkZyYW1lRXZlbnROYW1lID0gInJlcXVlc3RBbmlt
YXRpb25GcmFtZSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggYmQ1Yzk1Mi4uMzNiNmJjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtNDUs
NiArNDUsMTAgQEAKICNpbmNsdWRlICJXZWJTb2NrZXRGcmFtZS5oIgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KIAorbmFtZXNwYWNlIERlcHJlY2F0ZWQgeworY2xhc3MgU2NyaXB0T2JqZWN0Owor
fQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU1J1bGU7CkBAIC03Nyw3ICs4MSw2
IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTY3JpcHRBcmd1bWVudHM7CiBjbGFz
cyBTY3JpcHRDYWxsU3RhY2s7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3Mg
U2NyaXB0T2JqZWN0OwogY2xhc3MgU2NyaXB0UHJvZmlsZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2lu
OwogY2xhc3MgU2hhZG93Um9vdDsKQEAgLTI3Niw5ICsyNzksOSBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIHZvaWQgZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lRXJyb3IoRG9jdW1lbnQqLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKICNlbmRpZgog
Ci0gICAgc3RhdGljIFNjcmlwdE9iamVjdCB3cmFwQ2FudmFzMkRSZW5kZXJpbmdDb250ZXh0Rm9y
SW5zdHJ1bWVudGF0aW9uKERvY3VtZW50KiwgY29uc3QgU2NyaXB0T2JqZWN0Jik7CisgICAgc3Rh
dGljIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCB3cmFwQ2FudmFzMkRSZW5kZXJpbmdDb250ZXh0
Rm9ySW5zdHJ1bWVudGF0aW9uKERvY3VtZW50KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2Jq
ZWN0Jik7CiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIHN0YXRpYyBTY3JpcHRPYmplY3Qgd3JhcFdl
YkdMUmVuZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlvbihEb2N1bWVudCosIGNvbnN0IFNj
cmlwdE9iamVjdCYpOworICAgIHN0YXRpYyBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3Qgd3JhcFdl
YkdMUmVuZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlvbihEb2N1bWVudCosIGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYpOwogI2VuZGlmCiAKICAgICBzdGF0aWMgdm9pZCBuZXR3
b3JrU3RhdGVDaGFuZ2VkKFBhZ2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCmluZGV4IGQyN2Y5MDkuLmMyMDAxY2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFn
ZW50LmNwcApAQCAtNDYsMTAgKzQ2LDEyIEBACiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpJ
bnNwZWN0b3JMYXllclRyZWVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzKQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiTGF5ZXJUcmVl
IiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlM
aXRlcmFsKCJMYXllclRyZWUiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKIHsKIH0KIApAQCAtNTgs
NyArNjAsNyBAQCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6fkluc3BlY3RvckxheWVyVHJlZUFn
ZW50KCkKICAgICByZXNldCgpOwogfQogCi12b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojpk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9u
dGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hl
cikKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVs
LCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAg
bV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckxheWVyVHJl
ZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNw
YXRjaGVyID0gSW5zcGVjdG9yTGF5ZXJUcmVlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNr
ZW5kRGlzcGF0Y2hlciwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JMYXllclRyZWVBZ2VudC5oCmluZGV4IGFmNTVhOTIuLjMwYmNiMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oCkBA
IC0zMSw5ICszMSwxMCBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIklu
c3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
cy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
VHlwZUJ1aWxkZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNs
dWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTQ2LDcgKzQ3LDcgQEAgY2xhc3MgSW5zdHJ1bWVudGlu
Z0FnZW50czsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3Rv
ckxheWVyVHJlZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3Bl
Y3RvckxheWVyVHJlZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JM
YXllclRyZWVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0
b3JMYXllclRyZWVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzT3duUHRyPEluc3BlY3RvckxheWVyVHJlZUFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICB7CkBAIC01NCw3ICs1NSw3IEBAIHB1
YmxpYzoKICAgICB9CiAgICAgfkluc3BlY3RvckxheWVyVHJlZUFnZW50KCk7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
KSBPVkVSUklERTsKICAgICB2b2lkIHJlc2V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCmluZGV4IDc1OGI3YjQuLmI0ZWYwMzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50
LmNwcApAQCAtNDEsMTMgKzQxLDEzIEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5o
IgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdB
Z2VudHMuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNp
bmNsdWRlICJOb2RlVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZXIuaCIKICNp
bmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZh
bHVlcy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC02MSwxMyArNjEsMTUg
QEAKIHR5cGVkZWYgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6Ok1lbW9yeTo6TWVtb3J5QmxvY2sgSW5z
cGVjdG9yTWVtb3J5QmxvY2s7CiB0eXBlZGVmIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpBcnJheTxJ
bnNwZWN0b3JNZW1vcnlCbG9jaz4gSW5zcGVjdG9yTWVtb3J5QmxvY2tzOwogCit1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEluc3BlY3Rvck1lbW9y
eUFnZW50Ojp+SW5zcGVjdG9yTWVtb3J5QWdlbnQoKQogewogfQogCi12b2lkIEluc3BlY3Rvck1l
bW9yeUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQor
dm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJ
bnNwZWN0b3JNZW1vcnlCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVy
LCB0aGlzKTsKIH0KQEAgLTg1LDcgKzg3LDcgQEAgdm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6
Z2V0RE9NQ291bnRlcnMoRXJyb3JTdHJpbmcqLCBpbnQqIGRvY3VtZW50cywgaW50KiBub2QKIH0K
IAogSW5zcGVjdG9yTWVtb3J5QWdlbnQ6Okluc3BlY3Rvck1lbW9yeUFnZW50KEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQo
QVNDSUlMaXRlcmFsKCJNZW1vcnkiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3Bl
Y3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIk1lbW9yeSIpLCBpbnN0cnVtZW50aW5nQWdlbnRz
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
TWVtb3J5QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlB
Z2VudC5oCmluZGV4IGUxOTEwZGUuLjhmMTU2NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oCkBAIC0zMyw4ICszMyw4IEBACiAKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCi0jaW5j
bHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNDUsMTMg
KzQ1LDEzIEBAIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiAKIHR5cGVkZWYgU3RyaW5nIEVy
cm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JNZW1vcnlBZ2VudCA6IHB1YmxpYyBJbnNwZWN0
b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JNZW1vcnlCYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXIgeworY2xhc3MgSW5zcGVjdG9yTWVtb3J5QWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRC
YXNlLCBwdWJsaWMgSW5zcGVjdG9yTWVtb3J5QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JNZW1vcnlBZ2VudCk7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+IGNyZWF0ZShJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0
b3JNZW1vcnlBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Oklu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdp
bGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZv
aWQgZ2V0RE9NQ291bnRlcnMoRXJyb3JTdHJpbmcqLCBpbnQqIGRvY3VtZW50cywgaW50KiBub2Rl
cywgaW50KiBqc0V2ZW50TGlzdGVuZXJzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JPdmVybGF5LmNwcAppbmRleCAyODY4NDFmLi5hODVkOGM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCkBAIC0zOSw3ICszOSw2IEBA
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yT3ZlcmxheVBhZ2UuaCIKLSNpbmNsdWRlICJJbnNwZWN0
b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgpAQCAtNTUsMTEgKzU0LDE0IEBACiAjaW5jbHVkZSAiUmVuZGVyVmll
dy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTb3Vy
Y2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5o
IgogI2luY2x1ZGUgIlN0eWxlZEVsZW1lbnQuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRW
YWx1ZS5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oCmluZGV4IGVmOTkyMzAuLmI1MjkyMjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaApAQCAtMzIsMjAgKzMy
LDIyIEBACiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNs
dWRlICJMYXlvdXRSZWN0LmgiCi0KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKK2NsYXNzIEluc3BlY3Rvck9iamVjdDsKK2NsYXNzIEluc3BlY3RvclZhbHVl
OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOwogY2xhc3MgR3JhcGhp
Y3NDb250ZXh0OwogY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwotY2xhc3MgSW5zcGVjdG9yVmFsdWU7
Ci1jbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgTm9kZTsKIGNs
YXNzIFBhZ2U7CkBAIC0xMjQsNyArMTI2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRTZXRT
ZWFyY2hpbmdGb3JOb2RlKGJvb2wgZW5hYmxlZCk7CiAKLSAgICBQYXNzUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gYnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGUoKSBjb25zdDsKKyAgICBQYXNz
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvckhpZ2hsaWdo
dGVkTm9kZSgpIGNvbnN0OwogCiAgICAgdm9pZCBmcmVlUGFnZSgpOwogcHJpdmF0ZToKQEAgLTEz
Nyw3ICsxMzksNyBAQCBwcml2YXRlOgogICAgIFBhZ2UqIG92ZXJsYXlQYWdlKCk7CiAgICAgdm9p
ZCByZXNldChjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEludFNpemUmIGZyYW1l
Vmlld0Z1bGxTaXplKTsKICAgICB2b2lkIGV2YWx1YXRlSW5PdmVybGF5KGNvbnN0IFN0cmluZyYg
bWV0aG9kLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50KTsKLSAgICB2b2lkIGV2YWx1YXRlSW5PdmVy
bGF5KGNvbnN0IFN0cmluZyYgbWV0aG9kLCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBhcmd1
bWVudCk7CisgICAgdm9pZCBldmFsdWF0ZUluT3ZlcmxheShjb25zdCBTdHJpbmcmIG1ldGhvZCwg
UGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiBhcmd1bWVudCk7CiAKICAgICBQ
YWdlKiBtX3BhZ2U7CiAgICAgSW5zcGVjdG9yQ2xpZW50KiBtX2NsaWVudDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggYzBiZWQ5ZS4u
ODdhOWJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VB
Z2VudC5jcHAKQEAgLTY2LDcgKzY2LDYgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5o
IgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkluc3Bl
Y3Rvck92ZXJsYXkuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJ
bnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAi
TWVtb3J5Q2FjaGUuaCIKQEAgLTc0LDEyICs3MywxMyBAQAogI2luY2x1ZGUgIlJlZ3VsYXJFeHBy
ZXNzaW9uLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKICNpbmNsdWRlICJTY3JpcHRD
b250cm9sbGVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGlu
Zy5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJVc2VyR2Vz
dHVyZUluZGljYXRvci5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CisjaW5j
bHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50
VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KQEAgLTkwLDYgKzkwLDggQEAKICNpbmNsdWRlICJMZWdhY3lXZWJBcmNoaXZlLmgiCiAj
ZW5kaWYKIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdGF0aWMgYm9vbCBkZWNvZGVCdWZmZXIoY29uc3QgY2hhciogYnVmZmVyLCB1bnNpZ25l
ZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIFN0cmluZyogcmVzdWx0KQpA
QCAtMzUxLDcgKzM1Myw3IEBAIFR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkVudW0g
SW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZVR5cGVKc29uCiB9CiAKIEluc3BlY3Rv
clBhZ2VBZ2VudDo6SW5zcGVjdG9yUGFnZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIFBhZ2UqIHBhZ2UsIEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2Vu
dCwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3BlY3Rv
ckNsaWVudCogY2xpZW50LCBJbnNwZWN0b3JPdmVybGF5KiBvdmVybGF5KQotICAgIDogSW5zcGVj
dG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiUGFnZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQor
ICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiUGFnZSIpLCBpbnN0cnVtZW50
aW5nQWdlbnRzKQogICAgICwgbV9wYWdlKHBhZ2UpCiAgICAgLCBtX2luc3BlY3RvckFnZW50KGlu
c3BlY3RvckFnZW50KQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKQpAQCAtMzcxLDcgKzM3Myw3IEBAIEluc3BlY3RvclBhZ2VBZ2VudDo6SW5zcGVj
dG9yUGFnZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsCiB7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yUGFnZUFn
ZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
IGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3JQYWdlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5u
ZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JQYWdlQmFja2VuZERpc3Bh
dGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggMWIyNmI2ZS4uMzhkN2QyNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAt
MzUsOCArMzUsOSBAQAogCiAjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25EYXRhLmgiCiAjaW5j
bHVkZSAiR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2Vu
dC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgi
CiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgpAQCAtNDQsNiArNDUsMTEgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0
b3IgeworY2xhc3MgSW5zcGVjdG9yQXJyYXk7CitjbGFzcyBJbnNwZWN0b3JPYmplY3Q7Cit9CisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CkBAIC01NCw5ICs2
MCw3IEBAIGNsYXNzIEZyb250ZW5kOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3MgSW5zcGVjdG9yQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0
b3JBcnJheTsKIGNsYXNzIEluc3BlY3RvckNsaWVudDsKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsK
IGNsYXNzIEluc3BlY3Rvck92ZXJsYXk7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xh
c3MgVVJMOwpAQCAtNjcsNyArNzEsNyBAQCBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCiB0
eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50IDog
cHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3RvclBhZ2VCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50IDogcHVibGljIEluc3Bl
Y3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3RvclBhZ2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvclBhZ2VBZ2VudCk7CiBwdWJs
aWM6CiAgICAgZW51bSBSZXNvdXJjZVR5cGUgewpAQCAtMTYzLDcgKzE2Nyw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNjcmlwdHNFbmFibGVkKGJvb2wgaXNFbmFibGVkKTsKIAogICAgIC8vIEluc3Bl
Y3RvciBDb250cm9sbGVyIEFQSQotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3
aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgLy8gQ3Jvc3Mt
YWdlbnRzIEFQSQpAQCAtMjE4LDcgKzIyMiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lnbm9y
ZVNjcmlwdHNFbmFibGVkTm90aWZpY2F0aW9uOwogICAgIGJvb2wgbV9zaG93UGFpbnRSZWN0czsK
ICAgICBTdHJpbmcgbV9lbXVsYXRlZE1lZGlhOwotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IG1fc2NyaXB0c1RvRXZhbHVhdGVPbkxvYWQ7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0PiBtX3NjcmlwdHNUb0V2YWx1YXRlT25Mb2FkOwogICAgIFJlZlB0cjxHZW9sb2Nh
dGlvblBvc2l0aW9uPiBtX2dlb2xvY2F0aW9uUG9zaXRpb247CiAgICAgUmVmUHRyPEdlb2xvY2F0
aW9uUG9zaXRpb24+IG1fcGxhdGZvcm1HZW9sb2NhdGlvblBvc2l0aW9uOwogICAgIFJlZlB0cjxE
ZXZpY2VPcmllbnRhdGlvbkRhdGE+IG1fZGV2aWNlT3JpZW50YXRpb247CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKaW5kZXggYmFm
NTFmNC4uNDY3NzYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclByb2ZpbGVyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQcm9maWxlckFnZW50LmNwcApAQCAtNDAsMjAgKzQwLDIyIEBACiAjaW5jbHVkZSAiSW5q
ZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29uc29sZUFnZW50LmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMu
aCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEhlYXBTbmFwc2hvdC5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgog
I2luY2x1ZGUgIlNjcmlwdFByb2ZpbGUuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlci5oIgog
I2luY2x1ZGUgIldvcmtlclNjcmlwdERlYnVnU2VydmVyLmgiCisjaW5jbHVkZSA8YmluZGluZ3Mv
U2NyaXB0T2JqZWN0Lmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgog
I2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCit1c2luZyBuYW1lc3BhY2Ug
SW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBj
b25zdCBVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUgPSAib3JnLndlYmtpdC5wcm9maWxlcy51c2Vy
LWluaXRpYXRlZCI7CkBAIC0xMTksNyArMTIxLDcgQEAgUGFzc093blB0cjxJbnNwZWN0b3JQcm9m
aWxlckFnZW50PiBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpjcmVhdGUoSW5zdHJ1bWVudGluZ0EK
IH0KIAogSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudChJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JDb25zb2xlQWdl
bnQqIGNvbnNvbGVBZ2VudCwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1h
bmFnZXIpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJQcm9maWxlciIp
LCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0
ZXJhbCgiUHJvZmlsZXIiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fY29uc29sZUFn
ZW50KGNvbnNvbGVBZ2VudCkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVk
U2NyaXB0TWFuYWdlcikKICAgICAsIG1fZW5hYmxlZChmYWxzZSkKQEAgLTMyNyw3ICszMjksNyBA
QCB2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnJlc2V0RnJvbnRlbmRQcm9maWxlcygpCiAg
ICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXNldFByb2ZpbGVzKCk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6
OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFj
a2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3RvclByb2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5u
ZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JQcm9maWxlckJhY2tlbmRE
aXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpAQCAtNDIyLDcgKzQy
NCw3IEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0T2JqZWN0QnlIZWFwT2JqZWN0
SWQoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTCiAgICAgICAgICplcnJvciA9ICJJbnZhbGlk
IGhlYXAgc25hcHNob3Qgb2JqZWN0IGlkIjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBT
Y3JpcHRPYmplY3QgaGVhcE9iamVjdCA9IFNjcmlwdFByb2ZpbGVyOjpvYmplY3RCeUhlYXBPYmpl
Y3RJZChpZCk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IGhlYXBPYmplY3QgPSBTY3Jp
cHRQcm9maWxlcjo6b2JqZWN0QnlIZWFwT2JqZWN0SWQoaWQpOwogICAgIGlmIChoZWFwT2JqZWN0
Lmhhc05vVmFsdWUoKSkgewogICAgICAgICAqZXJyb3IgPSAiT2JqZWN0IGlzIG5vdCBhdmFpbGFi
bGUiOwogICAgICAgICByZXR1cm47CkBAIC00NDQsNyArNDQ2LDcgQEAgdm9pZCBJbnNwZWN0b3JQ
cm9maWxlckFnZW50OjpnZXRIZWFwT2JqZWN0SWQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBj
b25zdCBTdHIKICAgICAgICAgKmVycm9yU3RyaW5nID0gIkluc3BlY3RlZCBjb250ZXh0IGhhcyBn
b25lIjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBTY3JpcHRWYWx1ZSB2YWx1ZSA9IGlu
amVjdGVkU2NyaXB0LmZpbmRPYmplY3RCeUlkKG9iamVjdElkKTsKKyAgICBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSB2YWx1ZSA9IGluamVjdGVkU2NyaXB0LmZpbmRPYmplY3RCeUlkKG9iamVjdElk
KTsKICAgICBpZiAodmFsdWUuaGFzTm9WYWx1ZSgpIHx8IHZhbHVlLmlzVW5kZWZpbmVkKCkpIHsK
ICAgICAgICAgKmVycm9yU3RyaW5nID0gIk9iamVjdCB3aXRoIGdpdmVuIGlkIG5vdCBmb3VuZCI7
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JQcm9maWxlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUHJvZmlsZXJBZ2VudC5oCmluZGV4IDUzNzA5YzUuLjlhZjcwY2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaApAQCAtMzIsMjAg
KzMyLDI0IEBACiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFKElO
U1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIklu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5k
LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yQXJy
YXk7CitjbGFzcyBJbnNwZWN0b3JPYmplY3Q7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBjbGFz
cyBJbnNwZWN0b3JDb25zb2xlQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJ
bnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgUGFnZTsKIGNsYXNzIFNjcmlwdEhlYXBTbmFwc2hv
dDsKQEAgLTU0LDcgKzU4LDcgQEAgY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAKIHR5cGVkZWYg
U3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JQcm9maWxlckFnZW50IDogcHVi
bGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3RvclByb2ZpbGVyQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvclByb2ZpbGVyQWdlbnQgOiBwdWJsaWMg
SW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yUHJvZmlsZXJCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvclByb2ZpbGVy
QWdlbnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c093blB0cjxJbnNwZWN0b3JQcm9maWxlckFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50
cyosIEluc3BlY3RvckNvbnNvbGVBZ2VudCosIFBhZ2UqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIq
KTsKQEAgLTg4LDcgKzkyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRIZWFwU25h
cHNob3QoRXJyb3JTdHJpbmcqLCBpbnQgdWlkKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUHJv
ZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlwZSwgaW50IHVpZCk7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tl
bmQoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCB0YWtlSGVhcFNuYXBzaG90KEVycm9y
U3RyaW5nKiwgY29uc3QgYm9vbCogcmVwb3J0UHJvZ3Jlc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IDM4ZGNkYWEu
LjVmYWRiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5jcHAKQEAgLTQ4LDcgKzQ4LDYgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JD
bGllbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvclBhZ2VBZ2VudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUg
Ikluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJNZW1v
cnlDYWNoZS5oIgpAQCAtNjcsMTYgKzY2LDE4IEBACiAjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2Fk
ZXIuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRGcmFtZS5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1
ZXN0LmgiCi0KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVk
ZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgogI2luY2x1
ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojpk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9u
dGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hl
cikKK3ZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWws
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yTmV0d29ya0Zy
b250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRj
aGVyID0gSW5zcGVjdG9yTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERp
c3BhdGNoZXIsIHRoaXMpOwpAQCAtNjUwLDcgKzY1MSw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6bWFpbkZyYW1lTmF2aWdhdGVkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB9CiAK
IEluc3BlY3RvclJlc291cmNlQWdlbnQ6Okluc3BlY3RvclJlc291cmNlQWdlbnQoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdl
QWdlbnQsIEluc3BlY3RvckNsaWVudCogY2xpZW50KQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50
KEFTQ0lJTGl0ZXJhbCgiTmV0d29yayIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5z
cGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiTmV0d29yayIpLCBpbnN0cnVtZW50aW5nQWdl
bnRzKQogICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQogICAgICwgbV9jbGllbnQoY2xpZW50
KQogICAgICwgbV9yZXNvdXJjZXNEYXRhKGFkb3B0UHRyKG5ldyBOZXR3b3JrUmVzb3VyY2VzRGF0
YSgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudC5oCmluZGV4IDhjMjdmOTQuLjI0ODMxYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaApAQCAtMzEsOSArMzEsOSBAQAogI2lm
bmRlZiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50X2gKICNkZWZpbmUgSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudF9oCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5o
IgotCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KQEAgLTQxLDggKzQxLDkgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLW5h
bWVzcGFjZSBXVEYgewotY2xhc3MgU3RyaW5nOworbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFz
cyBJbnNwZWN0b3JBcnJheTsKK2NsYXNzIEluc3BlY3Rvck9iamVjdDsKIH0KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNTMsOSArNTQsNyBAQCBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNz
IEZvcm1EYXRhOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBIVFRQSGVhZGVyTWFwOwotY2xhc3MgSW5z
cGVjdG9yQXJyYXk7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7Ci1jbGFzcyBJbnNwZWN0b3JPYmpl
Y3Q7CiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRz
OwogY2xhc3MgVVJMOwpAQCAtNzYsNyArNzUsNyBAQCBzdHJ1Y3QgV2ViU29ja2V0RnJhbWU7CiAK
IHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3Rvck5ldHdvcmtC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCA6
IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JOZXR3b3JrQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIEluc3BlY3RvckNsaWVu
dCogY2xpZW50KQogICAgIHsKQEAgLTg1LDcgKzg0LDcgQEAgcHVibGljOgogCiAgICAgfkluc3Bl
Y3RvclJlc291cmNlQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9y
OjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgdm9pZCB3
aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlcios
IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9u
c2UpOwpAQCAtMTM1LDcgKzEzNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxl
KEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0VXNlckFnZW50T3ZlcnJpZGUoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIHVzZXJBZ2VudCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldEV4dHJhSFRUUEhlYWRl
cnMoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYpOworICAgIHZp
cnR1YWwgdm9pZCBzZXRFeHRyYUhUVFBIZWFkZXJzKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRSZXNw
b25zZUJvZHkoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgU3RyaW5nKiBj
b250ZW50LCBib29sKiBiYXNlNjRFbmNvZGVkKTsKIAogICAgIHZpcnR1YWwgdm9pZCByZXBsYXlY
SFIoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CkBAIC0xNjAsNyArMTU5
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZW5hYmxlZDsKICAgICBib29sIG1fY2FjaGVEaXNh
YmxlZDsKICAgICBib29sIG1fbG9hZGluZ1hIUlN5bmNocm9ub3VzbHk7Ci0gICAgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gbV9leHRyYVJlcXVlc3RIZWFkZXJzOworICAgIFJlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdD4gbV9leHRyYVJlcXVlc3RIZWFkZXJzOwogCiAgICAgdHlwZWRl
ZiBIYXNoTWFwPFRocmVhZGFibGVMb2FkZXJDbGllbnQqLCBSZWZQdHI8WEhSUmVwbGF5RGF0YT4+
IFBlbmRpbmdYSFJSZXBsYXlEYXRhTWFwOwogICAgIFBlbmRpbmdYSFJSZXBsYXlEYXRhTWFwIG1f
cGVuZGluZ1hIUlJlcGxheURhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCmluZGV4IDhiMzQ2OTAuLjZlYTJmOWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCkBA
IC0zNiw4ICszNiw4IEBACiAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUg
IkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgog
I2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0
b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDxwYXJzZXIvUGFyc2VyRXJyb3IuaD4KICNpbmNsdWRlIDxw
YXJzZXIvU291cmNlQ29kZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvQ29tcGxldGlvbi5oPgpAQCAt
NTAsNiArNTAsOCBAQAogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCit1c2luZyBuYW1lc3BhY2Ug
SW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBib29sIGFzQm9vbChj
b25zdCBib29sKiBjb25zdCBiKQpAQCAtNTgsNyArNjAsNyBAQCBzdGF0aWMgYm9vbCBhc0Jvb2wo
Y29uc3QgYm9vbCogY29uc3QgYikKIH0KIAogSW5zcGVjdG9yUnVudGltZUFnZW50OjpJbnNwZWN0
b3JSdW50aW1lQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywg
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgOiBJbnNw
ZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJSdW50aW1lIiksIGluc3RydW1lbnRpbmdBZ2Vu
dHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJSdW50aW1lIiksIGlu
c3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX2VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2luamVj
dGVkU2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAjaWYgRU5BQkxFKEpBVkFT
Q1JJUFRfREVCVUdHRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUnVudGltZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UnVudGltZUFnZW50LmgKaW5kZXggOWI1N2UyYi4uMmU5MTU5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaApAQCAtMzMsMjUgKzMzLDI5
IEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFn
ZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCisjaW5jbHVk
ZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCitu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNzIEluc3BlY3RvckFycmF5OworY2xhc3MgSW5zcGVj
dG9yT2JqZWN0OworY2xhc3MgSW5zcGVjdG9yVmFsdWU7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgSW5qZWN0ZWRTY3JpcHQ7CiBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7
Ci1jbGFzcyBJbnNwZWN0b3JBcnJheTsKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsKLWNsYXNzIElu
c3BlY3RvclZhbHVlOwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFNjcmlwdERl
YnVnU2VydmVyOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAKIHR5cGVkZWYgU3RyaW5nIEVy
cm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JSdW50aW1lQWdlbnQgOiBwdWJsaWMgSW5zcGVj
dG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yUnVudGltZUJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlciB7CitjbGFzcyBJbnNwZWN0b3JSdW50aW1lQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdl
bnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yUnVudGltZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yUnVudGltZUFnZW50KTsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JSdW50aW1lQWdlbnQoKTsKQEAgLTc0LDcgKzc4LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjYWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyos
CiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIG9iamVjdElkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLAotICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5Piogb3B0aW9uYWxBcmd1bWVu
dHMsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JBcnJheT4qIG9wdGlvbmFsQXJndW1lbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgYm9vbCogZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCA2NzY2MjJiLi43
MTYwMTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5
bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxl
U2hlZXQuY3BwCkBAIC00OSw3ICs0OSw2IEBACiAjaW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVudC5o
IgogI2luY2x1ZGUgIkluc3BlY3RvckNTU0FnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFn
ZUFnZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiTm9kZS5o
IgogI2luY2x1ZGUgIlJlZ3VsYXJFeHByZXNzaW9uLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIK
QEAgLTYwLDcgKzU5LDcgQEAKICNpbmNsdWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIKICNpbmNs
dWRlICJTdHlsZVNoZWV0TGlzdC5oIgogI2luY2x1ZGUgIldlYktpdENTU0tleWZyYW1lc1J1bGUu
aCIKLQorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CkBAIC0xNDQsNiArMTQzLDggQEAgUGFzc1JlZlB0cjxXZWJDb3JlOjpDU1NSdWxl
U291cmNlRGF0YT4gUGFyc2VkU3R5bGVTaGVldDo6cnVsZVNvdXJjZURhdGFBdCh1bnNpZ24KICAg
ICByZXR1cm4gbV9zb3VyY2VEYXRhLT5hdChpbmRleCk7CiB9CiAKK3VzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBNZWRpYUxpc3RTb3VyY2Ug
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hl
ZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgKaW5k
ZXggZjUwMzliNC4uM2I3OWI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5oCkBAIC0zMCw4ICszMCw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvclN0eWxlVGV4dEVkaXRvci5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvclR5cGVCdWlsZGVyLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCi0K
KyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CkBAIC02NCwxMiArNjMsMTIgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBl
eHBsaWNpdCBJbnNwZWN0b3JDU1NJZChSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiB2YWx1ZSkKKyAg
ICBleHBsaWNpdCBJbnNwZWN0b3JDU1NJZChSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q+IHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKCF2YWx1ZS0+Z2V0U3RyaW5nKCJzdHlsZVNo
ZWV0SWQiLCAmbV9zdHlsZVNoZWV0SWQpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAK
LSAgICAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBvcmRpbmFsVmFsdWUgPSB2YWx1ZS0+Z2V0
KCJvcmRpbmFsIik7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiBv
cmRpbmFsVmFsdWUgPSB2YWx1ZS0+Z2V0KCJvcmRpbmFsIik7CiAgICAgICAgIGlmICghb3JkaW5h
bFZhbHVlIHx8ICFvcmRpbmFsVmFsdWUtPmFzTnVtYmVyKCZtX29yZGluYWwpKQogICAgICAgICAg
ICAgbV9zdHlsZVNoZWV0SWQgPSAiIjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVUZXh0RWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuY3BwCmluZGV4IGI2ZWM0ZGIuLmYz
MDk5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHls
ZVRleHRFZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JT
dHlsZVRleHRFZGl0b3IuY3BwCkBAIC0zMiw2ICszMiw4IEBACiAjaW5jbHVkZSAiSFRNTFBhcnNl
cklkaW9tcy5oIgogI2luY2x1ZGUgIkluc3BlY3RvclN0eWxlU2hlZXQuaCIKIAordXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbnNwZWN0b3JTdHls
ZVRleHRFZGl0b3I6Okluc3BlY3RvclN0eWxlVGV4dEVkaXRvcihWZWN0b3I8SW5zcGVjdG9yU3R5
bGVQcm9wZXJ0eT4qIGFsbFByb3BlcnRpZXMsIFZlY3RvcjxJbnNwZWN0b3JTdHlsZVByb3BlcnR5
PiogZGlzYWJsZWRQcm9wZXJ0aWVzLCBjb25zdCBTdHJpbmcmIHN0eWxlVGV4dCwgY29uc3QgTmV3
TGluZUFuZFdoaXRlc3BhY2UmIGZvcm1hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAppbmRleCA0Yzg4YjFiLi40YjFjOGE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdl
bnQuY3BwCkBAIC01NCw2ICs1NCw4IEBACiAjaW5jbHVkZSAiVGltZWxpbmVSZWNvcmRGYWN0b3J5
LmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBUaW1lbGluZVRpbWVDb252ZXJ0
ZXI6OnJlc2V0KCkKQEAgLTY1LDcgKzY3LDcgQEAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6fklu
c3BlY3RvclRpbWVsaW5lQWdlbnQoKQogewogfQogCi12b2lkIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
IGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNw
YXRjaGVyKQordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hh
bm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewog
ICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JUaW1l
bGluZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmRE
aXNwYXRjaGVyID0gSW5zcGVjdG9yVGltZWxpbmVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJh
Y2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKQEAgLTU4MCw3ICs1ODIsNyBAQCB2b2lkIEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6OmRpZENvbXBsZXRlQ3VycmVudFJlY29yZChUaW1lbGluZVJlY29yZFR5
cGUgdHlwZSkKIH0KIAogSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6SW5zcGVjdG9yVGltZWxpbmVB
Z2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQ
YWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5zcGVjdG9yTWVtb3J5QWdlbnQqIG1lbW9yeUFnZW50LCBJ
bnNwZWN0b3JUeXBlIHR5cGUsIEluc3BlY3RvckNsaWVudCogY2xpZW50KQotICAgIDogSW5zcGVj
dG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiVGltZWxpbmUiKSwgaW5zdHJ1bWVudGluZ0FnZW50
cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIlRpbWVsaW5lIiksIGlu
c3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCiAgICAgLCBt
X21lbW9yeUFnZW50KG1lbW9yeUFnZW50KQogICAgICwgbV9pZCgxKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKaW5kZXggNDVkYzJmMy4u
N2JmYTU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRp
bWVsaW5lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudC5oCkBAIC0zMywxMCArMzMsMTEgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgotI2lu
Y2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFz
ZS5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVj
dG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTEyMSw3ICsxMjIsNyBAQCBw
cml2YXRlOgogfTsKIAogY2xhc3MgSW5zcGVjdG9yVGltZWxpbmVBZ2VudAotICAgIDogcHVibGlj
IEluc3BlY3RvckJhc2VBZ2VudAorICAgIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZQogICAg
ICwgcHVibGljIEluc3BlY3RvclRpbWVsaW5lQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JUaW1lbGluZUFnZW50KTsKIHB1YmxpYzoK
QEAgLTEzNCw3ICsxMzUsNyBAQCBwdWJsaWM6CiAKICAgICB+SW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJv
bnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoRXJy
b3JTdHJpbmcqLCBjb25zdCBpbnQqIG1heENhbGxTdGFja0RlcHRoLCBjb25zdCBib29sKiBpbmNs
dWRlRG9tQ291bnRlcnMpOwpAQCAtMjIwLDMzICsyMjEsMzMgQEAgcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgVGltZWxpbmVSZWNvcmRTdGFjazsKIAogICAgIHN0cnVjdCBUaW1lbGluZVJlY29y
ZEVudHJ5IHsKLSAgICAgICAgVGltZWxpbmVSZWNvcmRFbnRyeShQYXNzUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gcmVjb3JkLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSwgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JBcnJheT4gY2hpbGRyZW4sIFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBlLCBz
aXplX3QgdXNlZEhlYXBTaXplQXRTdGFydCkKKyAgICAgICAgVGltZWxpbmVSZWNvcmRFbnRyeShQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQsIFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGRhdGEsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JBcnJheT4gY2hpbGRyZW4sIFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBlLCBzaXplX3Qg
dXNlZEhlYXBTaXplQXRTdGFydCkKICAgICAgICAgICAgIDogcmVjb3JkKHJlY29yZCksIGRhdGEo
ZGF0YSksIGNoaWxkcmVuKGNoaWxkcmVuKSwgdHlwZSh0eXBlKSwgdXNlZEhlYXBTaXplQXRTdGFy
dCh1c2VkSGVhcFNpemVBdFN0YXJ0KQogICAgICAgICB7CiAgICAgICAgIH0KLSAgICAgICAgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gcmVjb3JkOwotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBkYXRhOwotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGNoaWxkcmVuOworICAg
ICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHJlY29yZDsKKyAgICAgICAg
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBkYXRhOworICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4gY2hpbGRyZW47CiAgICAgICAgIFRpbWVsaW5lUmVj
b3JkVHlwZSB0eXBlOwogICAgICAgICBzaXplX3QgdXNlZEhlYXBTaXplQXRTdGFydDsKICAgICB9
OwogCiAgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5z
cGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yTWVtb3J5QWdlbnQqLCBJbnNwZWN0b3JUeXBlLCBJ
bnNwZWN0b3JDbGllbnQqKTsKIAotICAgIHZvaWQgc2VuZEV2ZW50KFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0Pik7Ci0gICAgdm9pZCBhcHBlbmRSZWNvcmQoUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IGRhdGEsIFRpbWVsaW5lUmVjb3JkVHlwZSwgYm9vbCBjYXB0dXJlQ2FsbFN0YWNrLCBG
cmFtZSopOwotICAgIHZvaWQgcHVzaEN1cnJlbnRSZWNvcmQoUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+LCBUaW1lbGluZVJlY29yZFR5cGUsIGJvb2wgY2FwdHVyZUNhbGxTdGFjaywgRnJhbWUq
KTsKKyAgICB2b2lkIHNlbmRFdmVudChQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0Pik7CisgICAgdm9pZCBhcHBlbmRSZWNvcmQoUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdD4gZGF0YSwgVGltZWxpbmVSZWNvcmRUeXBlLCBib29sIGNhcHR1cmVDYWxsU3Rh
Y2ssIEZyYW1lKik7CisgICAgdm9pZCBwdXNoQ3VycmVudFJlY29yZChQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiwgVGltZWxpbmVSZWNvcmRUeXBlLCBib29sIGNhcHR1cmVD
YWxsU3RhY2ssIEZyYW1lKik7CiAKICAgICB2b2lkIHNldERPTUNvdW50ZXJzKFR5cGVCdWlsZGVy
OjpUaW1lbGluZTo6VGltZWxpbmVFdmVudCogcmVjb3JkKTsKLSAgICB2b2lkIHNldEZyYW1lSWRl
bnRpZmllcihJbnNwZWN0b3JPYmplY3QqIHJlY29yZCwgRnJhbWUqKTsKKyAgICB2b2lkIHNldEZy
YW1lSWRlbnRpZmllcihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogcmVjb3JkLCBGcmFtZSop
OwogCiAgICAgdm9pZCBkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoVGltZWxpbmVSZWNvcmRUeXBl
KTsKIAotICAgIHZvaWQgc2V0SGVhcFNpemVTdGF0aXN0aWNzKEluc3BlY3Rvck9iamVjdCogcmVj
b3JkKTsKKyAgICB2b2lkIHNldEhlYXBTaXplU3RhdGlzdGljcyhJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdCogcmVjb3JkKTsKICAgICB2b2lkIGNvbW1pdEZyYW1lUmVjb3JkKCk7CiAKLSAgICB2
b2lkIGFkZFJlY29yZFRvVGltZWxpbmUoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+LCBUaW1l
bGluZVJlY29yZFR5cGUpOwotICAgIHZvaWQgaW5uZXJBZGRSZWNvcmRUb1RpbWVsaW5lKFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiwgVGltZWxpbmVSZWNvcmRUeXBlKTsKKyAgICB2b2lkIGFk
ZFJlY29yZFRvVGltZWxpbmUoUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4s
IFRpbWVsaW5lUmVjb3JkVHlwZSk7CisgICAgdm9pZCBpbm5lckFkZFJlY29yZFRvVGltZWxpbmUo
UGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4sIFRpbWVsaW5lUmVjb3JkVHlw
ZSk7CiAgICAgdm9pZCBjbGVhclJlY29yZFN0YWNrKCk7CiAKICAgICB2b2lkIGxvY2FsVG9QYWdl
UXVhZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBMYXlvdXRSZWN0JiwgRmxvYXRRdWFkKik7
CkBAIC0yNjYsNyArMjY3LDcgQEAgcHJpdmF0ZToKIAogICAgIGludCBtX2lkOwogICAgIGludCBt
X21heENhbGxTdGFja0RlcHRoOwotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1fcGVuZGlu
Z0ZyYW1lUmVjb3JkOworICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gbV9w
ZW5kaW5nRnJhbWVSZWNvcmQ7CiAgICAgSW5zcGVjdG9yVHlwZSBtX2luc3BlY3RvclR5cGU7CiAg
ICAgSW5zcGVjdG9yQ2xpZW50KiBtX2NsaWVudDsKICAgICBXZWFrUHRyRmFjdG9yeTxJbnNwZWN0
b3JUaW1lbGluZUFnZW50PiBtX3dlYWtGYWN0b3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JXZWJBZ2VudEJhc2UuaApzaW1pbGFyaXR5IGluZGV4IDY5JQpyZW5h
bWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5o
CnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV2ViQWdlbnRCYXNl
LmgKaW5kZXggNGZkMDM1My4uZGZjYzRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKQEAgLTI0LDI5ICsyNCwyOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVm
IEluc3BlY3RvckFnZW50UmVnaXN0cnlfaAotI2RlZmluZSBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5
X2gKKyNpZm5kZWYgSW5zcGVjdG9yV2ViQWdlbnRCYXNlX2gKKyNkZWZpbmUgSW5zcGVjdG9yV2Vi
QWdlbnRCYXNlX2gKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgotI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgIklu
c3BlY3RvckZvcndhcmRpbmcuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRC
YXNlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CitjbGFzcyBJbnN0cnVt
ZW50aW5nQWdlbnRzOwogCi1jbGFzcyBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5IHsKLXB1YmxpYzoK
LSAgICB2b2lkIGFwcGVuZChQYXNzT3duUHRyPEluc3BlY3RvckJhc2VBZ2VudD4pOworY2xhc3Mg
SW5zcGVjdG9yQWdlbnRCYXNlIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnRCYXNl
IHsKK3Byb3RlY3RlZDoKKyAgICBJbnNwZWN0b3JBZ2VudEJhc2UoY29uc3QgU3RyaW5nJiBuYW1l
LCBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgICAgICA6IElu
c3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnRCYXNlKG5hbWUpCisgICAgICAgICwgbV9pbnN0cnVtZW50
aW5nQWdlbnRzKGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgeworICAgIH0KIAotICAgIHZvaWQg
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKik7Ci0gICAgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZCgpOwotICAgIHZvaWQgZGlzY2FyZEFnZW50cygpOwotCi1wcml2YXRlOgotICAg
IFZlY3RvcjxPd25QdHI8SW5zcGVjdG9yQmFzZUFnZW50Pj4gbV9hZ2VudHM7CisgICAgSW5zdHJ1
bWVudGluZ0FnZW50cyogbV9pbnN0cnVtZW50aW5nQWdlbnRzOwogfTsKLQorICAgIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yQWdlbnRSZWdp
c3RyeV9oKQorI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvcldlYkFnZW50QmFzZV9oKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKaW5k
ZXggMzI4MDFjNi4uODg0NTZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvcldvcmtlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCkBAIC0zNiwxMyArMzYsMTUgQEAKIAogI2luY2x1ZGUg
Ikluc3BlY3RvckZvcndhcmRpbmcuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgot
I2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2Vu
dHMuaCIKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZVByb3h5
LmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCit1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEluc3BlY3Rvcldv
cmtlckFnZW50OjpXb3JrZXJGcm9udGVuZENoYW5uZWwgOiBwdWJsaWMgV29ya2VyR2xvYmFsU2Nv
cGVQcm94eTo6UGFnZUluc3BlY3RvciB7CkBAIC0xMDcsNyArMTA5LDcgQEAgUGFzc093blB0cjxJ
bnNwZWN0b3JXb3JrZXJBZ2VudD4gSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmNyZWF0ZShJbnN0cnVt
ZW50aW5nQWdlbnQKIH0KIAogSW5zcGVjdG9yV29ya2VyQWdlbnQ6Okluc3BlY3RvcldvcmtlckFn
ZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCi0gICAgOiBJbnNw
ZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJXb3JrZXIiKSwgaW5zdHJ1bWVudGluZ0FnZW50
cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIldvcmtlciIpLCBpbnN0
cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9lbmFibGVkKGZhbHNlKQogICAgICwgbV9zaG91bGRQ
YXVzZURlZGljYXRlZFdvcmtlck9uU3RhcnQoZmFsc2UpCiB7CkBAIC0xMTksNyArMTIxLDcgQEAg
SW5zcGVjdG9yV29ya2VyQWdlbnQ6On5JbnNwZWN0b3JXb3JrZXJBZ2VudCgpCiAgICAgbV9pbnN0
cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JXb3JrZXJBZ2VudCgwKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JXb3JrZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvcldvcmtlckFnZW50OjpkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmRE
aXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3JXb3JrZXJGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAg
ICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvcldvcmtlckJhY2tlbmREaXNwYXRjaGVy
OjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaAppbmRleCBhYjYyMjFhLi5lYTQ3NWVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaApA
QCAtMzEsMTIgKzMxLDE2IEBACiAjaWZuZGVmIEluc3BlY3RvcldvcmtlckFnZW50X2gKICNkZWZp
bmUgSW5zcGVjdG9yV29ya2VyQWdlbnRfaAogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50
LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSW5z
cGVjdG9yIHsKIGNsYXNzIEluc3BlY3Rvck9iamVjdDsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgSW5zcGVjdG9yV29ya2VyRnJvbnRlbmREaXNwYXRjaGVyOwogY2xhc3MgSW5zdHJ1
bWVudGluZ0FnZW50czsKIGNsYXNzIFVSTDsKQEAgLTQ0LDEyICs0OCwxMiBAQCBjbGFzcyBXb3Jr
ZXJHbG9iYWxTY29wZVByb3h5OwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xh
c3MgSW5zcGVjdG9yV29ya2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJs
aWMgSW5zcGVjdG9yV29ya2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3Bl
Y3RvcldvcmtlckFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3Bl
Y3RvcldvcmtlckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NPd25QdHI8SW5zcGVjdG9yV29ya2VyQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdl
bnRzKik7CiAgICAgfkluc3BlY3RvcldvcmtlckFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklE
RTsKIAogICAgIC8vIENhbGxlZCBmcm9tIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbgpAQCAtNjMs
NyArNjcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNhbkluc3BlY3RXb3JrZXJzKEVy
cm9yU3RyaW5nKiwgYm9vbCopOwogICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0VG9Xb3JrZXIoRXJy
b3JTdHJpbmcqLCBpbnQgd29ya2VySWQpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0RnJv
bVdvcmtlcihFcnJvclN0cmluZyosIGludCB3b3JrZXJJZCk7Ci0gICAgdmlydHVhbCB2b2lkIHNl
bmRNZXNzYWdlVG9Xb3JrZXIoRXJyb3JTdHJpbmcqLCBpbnQgd29ya2VySWQsIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+JiBtZXNzYWdlKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3Nh
Z2VUb1dvcmtlcihFcnJvclN0cmluZyosIGludCB3b3JrZXJJZCwgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgbWVzc2FnZSk7CiAgICAgdmlydHVhbCB2b2lkIHNldEF1
dG9jb25uZWN0VG9Xb3JrZXJzKEVycm9yU3RyaW5nKiwgYm9vbCB2YWx1ZSk7CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5jcHAK
aW5kZXggOGNmYjMyOC4uNjI4ZjEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3RydW1lbnRpbmdBZ2VudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnN0cnVtZW50aW5nQWdlbnRzLmNwcApAQCAtNDAsNiArNDAsOCBAQAogI2luY2x1ZGUgIldv
cmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgog
Cit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIElu
c3RydW1lbnRpbmdBZ2VudHM6Okluc3RydW1lbnRpbmdBZ2VudHMoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggOTY5ZDMwZC4u
NWNjYTQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwCkBAIC00Niw2ICs0Niw4IEBAIHN0YXRpYyBzaXplX3QgbWF4aW11bVJlc291
cmNlc0NvbnRlbnRTaXplID0gMTAwICogMTAwMCAqIDEwMDA7CiBzdGF0aWMgc2l6ZV90IG1heGlt
dW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplID0gMTAgKiAxMDAwICogMTAwMDsKIH0KIAordXNp
bmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmNwcAppbmRleCBiY2Q4OWYy
Li5jZWFiYmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNvbnNv
bGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdl
bnQuY3BwCkBAIC00MCw3ICs0MCw4IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnQuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKLSNpbmNsdWRl
ICJTY3JpcHRPYmplY3QuaCIKKwordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC02Niw3ICs2Nyw3IEBAIHZvaWQgUGFnZUNvbnNvbGVBZ2VudDo6
Y2xlYXJNZXNzYWdlcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcpCiBjbGFzcyBJbnNwZWN0YWJs
ZU5vZGUgOiBwdWJsaWMgSW5qZWN0ZWRTY3JpcHRIb3N0OjpJbnNwZWN0YWJsZU9iamVjdCB7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgSW5zcGVjdGFibGVOb2RlKE5vZGUqIG5vZGUpIDogbV9ub2Rl
KG5vZGUpIHsgfQotICAgIHZpcnR1YWwgU2NyaXB0VmFsdWUgZ2V0KEpTQzo6RXhlY1N0YXRlKiBz
dGF0ZSkKKyAgICB2aXJ0dWFsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGdldChKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUpCiAgICAgewogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0Ojpu
b2RlQXNTY3JpcHRWYWx1ZShzdGF0ZSwgbV9ub2RlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAppbmRleCA4N2ZhYmVlLi4wNGQ0Nzlk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHAK
QEAgLTQxLDYgKzQxLDggQEAKICNpbmNsdWRlICJQYWdlQ29uc29sZS5oIgogI2luY2x1ZGUgIlBh
Z2VTY3JpcHREZWJ1Z1NlcnZlci5oIgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NPd25QdHI8UGFnZURlYnVnZ2VyQWdlbnQ+IFBhZ2VE
ZWJ1Z2dlckFnZW50OjpjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIEluamVjdGVkU2NyaXB0TWFuYWdl
ciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnNwZWN0b3JPdmVybGF5KiBvdmVybGF5KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuaAppbmRleCA1NTg2MzEx
Li5hNWY4MTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVn
Z2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdl
bnQuaApAQCAtMzIsNiArMzIsNyBAQAogI2RlZmluZSBQYWdlRGVidWdnZXJBZ2VudF9oCiAKICNp
ZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFKElOU1BFQ1RPUikKKwogI2lu
Y2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKICNpbmNsdWRlICJQYWdlU2NyaXB0RGVi
dWdTZXJ2ZXIuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VS
dW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdl
bnQuY3BwCmluZGV4IDU3YjNiMzAuLjU0ODc2MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKQEAgLTQ3LDYgKzQ3LDggQEAKIAogdXNpbmcgV2Vi
Q29yZTo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHREZXNjcmlwdGlvbjsK
IAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQ
YWdlUnVudGltZUFnZW50OjpQYWdlUnVudGltZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHMsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLCBQYWdlKiBwYWdlLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKQEAgLTYz
LDcgKzY1LDcgQEAgUGFnZVJ1bnRpbWVBZ2VudDo6flBhZ2VSdW50aW1lQWdlbnQoKQogICAgIG1f
aW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0UGFnZVJ1bnRpbWVBZ2VudCgwKTsKIH0KIAotdm9pZCBQ
YWdlUnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
KiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9u
dGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hl
cikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yUnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2Jh
Y2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yUnVudGltZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVh
dGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Q
YWdlUnVudGltZUFnZW50LmgKaW5kZXggZThiMzNiMi4uY2QwNGQ5NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oCkBAIC01MSw3ICs1MSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQYWdlUnVudGltZUFnZW50KGluc3RydW1l
bnRpbmdBZ2VudHMsIGluamVjdGVkU2NyaXB0TWFuYWdlciwgcGFnZSwgcGFnZUFnZW50KSk7CiAg
ICAgfQogICAgIHZpcnR1YWwgflBhZ2VSdW50aW1lQWdlbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2
b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Nj
cmlwdEFyZ3VtZW50cy5jcHAKaW5kZXggODliOWEwYi4uMzY1N2E5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5jcHAKQEAgLTMxLDE2ICszMSwxNiBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNjcmlwdEFyZ3VtZW50cy5oIgogCi0jaW5j
bHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBTY3Jp
cHRBcmd1bWVudHM6OmNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIFZlY3RvcjxT
Y3JpcHRWYWx1ZT4mIGFyZ3VtZW50cykKK1Bhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBTY3Jp
cHRBcmd1bWVudHM6OmNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIFZlY3RvcjxE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZT4mIGFyZ3VtZW50cykKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFNjcmlwdEFyZ3VtZW50cyhzY3JpcHRTdGF0ZSwgYXJndW1lbnRzKSk7CiB9CiAKLVNj
cmlwdEFyZ3VtZW50czo6U2NyaXB0QXJndW1lbnRzKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0
ZSwgVmVjdG9yPFNjcmlwdFZhbHVlPiYgYXJndW1lbnRzKQorU2NyaXB0QXJndW1lbnRzOjpTY3Jp
cHRBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBWZWN0b3I8RGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWU+JiBhcmd1bWVudHMpCiAgICAgOiBtX2dsb2JhbE9iamVjdChzY3JpcHRT
dGF0ZS0+dm0oKSwgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSkKIHsKICAgICBt
X2FyZ3VtZW50cy5zd2FwKGFyZ3VtZW50cyk7CkBAIC01MCw3ICs1MCw3IEBAIFNjcmlwdEFyZ3Vt
ZW50czo6flNjcmlwdEFyZ3VtZW50cygpCiB7CiB9CiAKLWNvbnN0IFNjcmlwdFZhbHVlICZTY3Jp
cHRBcmd1bWVudHM6OmFyZ3VtZW50QXQoc2l6ZV90IGluZGV4KSBjb25zdAorY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUgJlNjcmlwdEFyZ3VtZW50czo6YXJndW1lbnRBdChzaXplX3QgaW5k
ZXgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fYXJndW1lbnRzLnNpemUoKSA+IGluZGV4KTsKICAg
ICByZXR1cm4gbV9hcmd1bWVudHNbaW5kZXhdOwpAQCAtNjgsNyArNjgsNyBAQCBib29sIFNjcmlw
dEFyZ3VtZW50czo6Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKFN0cmluZyYgcmVzdWx0LCBib29s
IGNoZWNrRm9yTnVsbAogICAgIGlmICghYXJndW1lbnRDb3VudCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBjb25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUgPSBhcmd1bWVudEF0KDApOwor
ICAgIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSA9IGFyZ3VtZW50QXQoMCk7
CiAgICAgaWYgKGNoZWNrRm9yTnVsbE9yVW5kZWZpbmVkICYmICh2YWx1ZS5pc051bGwoKSB8fCB2
YWx1ZS5pc1VuZGVmaW5lZCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmgKaW5kZXggMTc0MzlhMC4uNDdhOTYyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaApAQCAtMSwxMCAr
MSwxMCBAQAogLyoKICAqIENvcHlyaWdodCAoYykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICogCisgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCiAgKiBt
ZXQ6Ci0gKiAKKyAqCiAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpAQCAtMTQsNyAr
MTQsNyBAQAogICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwogICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KICAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKKyAqCiAgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CiAgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAogICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkBAIC0zNyw2ICszNywxMCBAQAogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFt
ZXNwYWNlIERlcHJlY2F0ZWQgeworY2xhc3MgU2NyaXB0VmFsdWU7Cit9CisKIG5hbWVzcGFjZSBK
U0MgewogY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgSlNHbG9iYWxPYmplY3Q7CkBAIC00NCwxNSAr
NDgsMTMgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgU2NyaXB0VmFsdWU7Ci0KIGNsYXNzIFNjcmlwdEFyZ3VtZW50cyA6IHB1YmxpYyBSZWZD
b3VudGVkPFNjcmlwdEFyZ3VtZW50cz4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNjcmlwdEFyZ3VtZW50cz4gY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiwgVmVjdG9yPFNjcmlwdFZh
bHVlPiYgYXJndW1lbnRzKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+
IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSosIFZlY3RvcjxEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZT4m
IGFyZ3VtZW50cyk7CiAKICAgICB+U2NyaXB0QXJndW1lbnRzKCk7CiAKLSAgICBjb25zdCBTY3Jp
cHRWYWx1ZSYgYXJndW1lbnRBdChzaXplX3QpIGNvbnN0OworICAgIGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiBhcmd1bWVudEF0KHNpemVfdCkgY29uc3Q7CiAgICAgc2l6ZV90IGFyZ3Vt
ZW50Q291bnQoKSBjb25zdCB7IHJldHVybiBtX2FyZ3VtZW50cy5zaXplKCk7IH0KIAogICAgIEpT
Qzo6RXhlY1N0YXRlKiBnbG9iYWxTdGF0ZSgpIGNvbnN0OwpAQCAtNjEsMTAgKzYzLDEwIEBAIHB1
YmxpYzoKICAgICBib29sIGlzRXF1YWwoU2NyaXB0QXJndW1lbnRzKikgY29uc3Q7CiAKIHByaXZh
dGU6Ci0gICAgU2NyaXB0QXJndW1lbnRzKEpTQzo6RXhlY1N0YXRlKiwgVmVjdG9yPFNjcmlwdFZh
bHVlPiYgYXJndW1lbnRzKTsKKyAgICBTY3JpcHRBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUqLCBW
ZWN0b3I8RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWU+JiBhcmd1bWVudHMpOwogCiAgICAgSlNDOjpT
dHJvbmc8SlNDOjpKU0dsb2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7Ci0gICAgVmVjdG9yPFNj
cmlwdFZhbHVlPiBtX2FyZ3VtZW50czsKKyAgICBWZWN0b3I8RGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWU+IG1fYXJndW1lbnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcAppbmRleCAxYWJiZDc1Li42NmY3
OGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcApA
QCAtMzIsOSArMzIsMTEgQEAKICNpbmNsdWRlICJTY3JpcHRDYWxsRnJhbWUuaCIKIAogI2luY2x1
ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCisj
aW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBTY3JpcHRDYWxsRnJhbWU6OlNjcmlwdENhbGxGcmFtZShjb25zdCBTdHJpbmcmIGZ1bmN0
aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBzY3JpcHROYW1lLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1
bnNpZ25lZCBjb2x1bW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2Ny
aXB0Q2FsbEZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1l
LmgKaW5kZXggNjdmMGQzNi4uMjQyNTE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1NjcmlwdENhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9T
Y3JpcHRDYWxsRnJhbWUuaApAQCAtMzgsOSArMzgsMTEgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KK25hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworfQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcmlwdENhbGxGcmFtZSAgewogcHVibGlj
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcAppbmRleCBl
Njk0YmYxLi4zNmM1MDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2Ny
aXB0Q2FsbFN0YWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2Fs
bFN0YWNrLmNwcApAQCAtMzIsNyArMzIsOSBAQAogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5o
IgogCiAjaW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKLSNpbmNsdWRlICJJbnNwZWN0
b3JWYWx1ZXMuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oCmluZGV4IGUwZDdmZDUuLmQ4ZWMz
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2su
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmgKQEAgLTQy
LDggKzQyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbnNwZWN0b3JBcnJh
eTsKLQogY2xhc3MgU2NyaXB0Q2FsbFN0YWNrIDogcHVibGljIFJlZkNvdW50ZWQ8U2NyaXB0Q2Fs
bFN0YWNrPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhDYWxsU3RhY2tT
aXplVG9DYXB0dXJlID0gMjAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1NjcmlwdERlYnVnTGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRE
ZWJ1Z0xpc3RlbmVyLmgKaW5kZXggNWJjYTc1MS4uMGViNGZiMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnTGlzdGVuZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdMaXN0ZW5lci5oCkBAIC0zNyw4ICszNywxMSBAQAog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEZXByZWNhdGVkIHsKIGNsYXNzIFNj
cmlwdFZhbHVlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcmlwdERlYnVn
TGlzdGVuZXIgewogcHVibGljOgpAQCAtNjgsNyArNzEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGlkUGFyc2VTb3VyY2UoU291cmNlSUQsIGNvbnN0IFNjcmlwdCYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZmFpbGVkVG9QYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiBkYXRhLCBpbnQgZmlyc3RMaW5lLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZShKU0M6OkV4
ZWNTdGF0ZSosIGNvbnN0IFNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBjb25zdCBTY3JpcHRWYWx1
ZSYgZXhjZXB0aW9uKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKEpTQzo6RXhlY1N0
YXRlKiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBleGNlcHRpb24pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ29udGludWUoKSA9IDA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwCmluZGV4IDhiYWFiOWUuLjlmMmY3ZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3Bw
CkBAIC0zNiwxNSArMzYsMTcgQEAKIAogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRmxv
YXRRdWFkLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW50UmVj
dC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3Qu
aCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0
YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIgorI2luY2x1ZGUgPGlu
c3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4K
IAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVH
ZW5lcmljUmVjb3JkKGRvdWJsZSBzdGFydFRpbWUsIGludCBtYXhDYWxsU3RhY2tEZXB0aCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3Rvcnku
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaAppbmRl
eCBkYjQ0YjFlLi5lNGJmOTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
VGltZWxpbmVSZWNvcmRGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Rp
bWVsaW5lUmVjb3JkRmFjdG9yeS5oCkBAIC0zMSw5ICszMSw4IEBACiAjaWZuZGVmIFRpbWVsaW5l
UmVjb3JkRmFjdG9yeV9oCiAjZGVmaW5lIFRpbWVsaW5lUmVjb3JkRmFjdG9yeV9oCiAKLSNpbmNs
dWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJVUkwuaCIKLSNpbmNsdWRlICJMYXlv
dXRSZWN0LmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAg
LTQxLDY0ICs0MCw2MiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBFdmVudDsK
ICAgICBjbGFzcyBGbG9hdFF1YWQ7Ci0gICAgY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwotICAgIGNs
YXNzIEludFJlY3Q7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogICAgIGNsYXNzIFJlc291
cmNlUmVzcG9uc2U7CiAKICAgICBjbGFzcyBUaW1lbGluZVJlY29yZEZhY3RvcnkgewogICAgIHB1
YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVH
ZW5lcmljUmVjb3JkKGRvdWJsZSBzdGFydFRpbWUsIGludCBtYXhDYWxsU3RhY2tEZXB0aCk7Ci0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlQmFja2dyb3Vu
ZFJlY29yZChkb3VibGUgc3RhcnRUaW1lLCBjb25zdCBTdHJpbmcmIHRocmVhZCk7CisgICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVHZW5l
cmljUmVjb3JkKGRvdWJsZSBzdGFydFRpbWUsIGludCBtYXhDYWxsU3RhY2tEZXB0aCk7CisgICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVC
YWNrZ3JvdW5kUmVjb3JkKGRvdWJsZSBzdGFydFRpbWUsIGNvbnN0IFN0cmluZyYgdGhyZWFkKTsK
IAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUdDRXZl
bnREYXRhKGNvbnN0IHNpemVfdCB1c2VkSGVhcFNpemVEZWx0YSk7CisgICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVHQ0V2ZW50RGF0YShj
b25zdCBzaXplX3QgdXNlZEhlYXBTaXplRGVsdGEpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlRnVuY3Rpb25DYWxsRGF0YShjb25zdCBTdHJpbmcm
IHNjcmlwdE5hbWUsIGludCBzY3JpcHRMaW5lKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUZ1bmN0aW9uQ2FsbERhdGEoY29uc3Qg
U3RyaW5nJiBzY3JpcHROYW1lLCBpbnQgc2NyaXB0TGluZSk7CiAKLSAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVFdmVudERpc3BhdGNoRGF0YShjb25zdCBF
dmVudCYpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdD4gY3JlYXRlRXZlbnREaXNwYXRjaERhdGEoY29uc3QgRXZlbnQmKTsKIAotICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUdlbmVyaWNUaW1lckRhdGEo
aW50IHRpbWVySWQpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdD4gY3JlYXRlR2VuZXJpY1RpbWVyRGF0YShpbnQgdGltZXJJZCk7CiAKLSAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVUaW1lckluc3RhbGxE
YXRhKGludCB0aW1lcklkLCBpbnQgdGltZW91dCwgYm9vbCBzaW5nbGVTaG90KTsKKyAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVRpbWVy
SW5zdGFsbERhdGEoaW50IHRpbWVySWQsIGludCB0aW1lb3V0LCBib29sIHNpbmdsZVNob3QpOwog
Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlWEhSUmVh
ZHlTdGF0ZUNoYW5nZURhdGEoY29uc3QgU3RyaW5nJiB1cmwsIGludCByZWFkeVN0YXRlKTsKKyAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0
ZVhIUlJlYWR5U3RhdGVDaGFuZ2VEYXRhKGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgcmVhZHlTdGF0
ZSk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVY
SFJMb2FkRGF0YShjb25zdCBTdHJpbmcmIHVybCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVYSFJMb2FkRGF0YShjb25zdCBTdHJp
bmcmIHVybCk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBj
cmVhdGVFdmFsdWF0ZVNjcmlwdERhdGEoY29uc3QgU3RyaW5nJiwgZG91YmxlIGxpbmVOdW1iZXIp
OworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4g
Y3JlYXRlRXZhbHVhdGVTY3JpcHREYXRhKGNvbnN0IFN0cmluZyYsIGRvdWJsZSBsaW5lTnVtYmVy
KTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVRp
bWVTdGFtcERhdGEoY29uc3QgU3RyaW5nJik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVUaW1lU3RhbXBEYXRhKGNvbnN0IFN0cmlu
ZyYpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRl
UmVzb3VyY2VTZW5kUmVxdWVzdERhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdD4gY3JlYXRlUmVzb3VyY2VTZW5kUmVxdWVzdERhdGEoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogCi0gICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3RE
YXRhKGNvbnN0IFN0cmluZyYpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3REYXRhKGNvbnN0
IFN0cmluZyYpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
Y3JlYXRlUmVzb3VyY2VSZWNlaXZlUmVzcG9uc2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVSZXNvdXJjZVJlY2VpdmVSZXNwb25zZURh
dGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAot
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVJlY2VpdmVS
ZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGludCBsZW5ndGgpOworICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlUmVj
ZWl2ZVJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgaW50IGxlbmd0aCk7CiAK
LSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVSZXNvdXJj
ZUZpbmlzaERhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGJvb2wgZGlkRmFpbCwgZG91Ymxl
IGZpbmlzaFRpbWUpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdD4gY3JlYXRlUmVzb3VyY2VGaW5pc2hEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVz
dElkLCBib29sIGRpZEZhaWwsIGRvdWJsZSBmaW5pc2hUaW1lKTsKIAotICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUxheW91dERhdGEodW5zaWduZWQgZGly
dHlPYmplY3RzLCB1bnNpZ25lZCB0b3RhbE9iamVjdHMsIGJvb2wgcGFydGlhbExheW91dCk7Cisg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVh
dGVMYXlvdXREYXRhKHVuc2lnbmVkIGRpcnR5T2JqZWN0cywgdW5zaWduZWQgdG90YWxPYmplY3Rz
LCBib29sIHBhcnRpYWxMYXlvdXQpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gY3JlYXRlRGVjb2RlSW1hZ2VEYXRhKGNvbnN0IFN0cmluZyYgaW1hZ2VUeXBl
KTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
IGNyZWF0ZURlY29kZUltYWdlRGF0YShjb25zdCBTdHJpbmcmIGltYWdlVHlwZSk7CiAKLSAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVSZXNpemVJbWFnZURh
dGEoYm9vbCBzaG91bGRDYWNoZSk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVSZXNpemVJbWFnZURhdGEoYm9vbCBzaG91bGRDYWNo
ZSk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVN
YXJrRGF0YShib29sIGlzTWFpbkZyYW1lKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZU1hcmtEYXRhKGJvb2wgaXNNYWluRnJhbWUp
OwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlUGFy
c2VIVE1MRGF0YSh1bnNpZ25lZCBzdGFydExpbmUpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlUGFyc2VIVE1MRGF0YSh1bnNpZ25l
ZCBzdGFydExpbmUpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gY3JlYXRlQW5pbWF0aW9uRnJhbWVEYXRhKGludCBjYWxsYmFja0lkKTsKKyAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUFuaW1hdGlv
bkZyYW1lRGF0YShpbnQgY2FsbGJhY2tJZCk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVQYWludERhdGEoY29uc3QgRmxvYXRRdWFkJik7CisgICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVQ
YWludERhdGEoY29uc3QgRmxvYXRRdWFkJik7CiAKLSAgICAgICAgc3RhdGljIHZvaWQgYXBwZW5k
TGF5b3V0Um9vdChJbnNwZWN0b3JPYmplY3QqIGRhdGEsIGNvbnN0IEZsb2F0UXVhZCYpOworICAg
ICAgICBzdGF0aWMgdm9pZCBhcHBlbmRMYXlvdXRSb290KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0KiBkYXRhLCBjb25zdCBGbG9hdFF1YWQmKTsKIAogI2lmIEVOQUJMRShXRUJfU09DS0VUUykK
LSAgICAgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRl
V2ViU29ja2V0Q3JlYXRlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQorICAgICAgICBzdGF0aWMgaW5saW5lIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVdlYlNvY2tldENyZWF0ZURh
dGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBwcm90b2NvbCkKICAgICAgICAgewotICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gZGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGRhdGEgPSBJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBkYXRhLT5zZXROdW1iZXIoImlkZW50aWZpZXIi
LCBpZGVudGlmaWVyKTsKICAgICAgICAgICAgIGRhdGEtPnNldFN0cmluZygidXJsIiwgdXJsLnN0
cmluZygpKTsKICAgICAgICAgICAgIGlmICghcHJvdG9jb2wuaXNOdWxsKCkpCkBAIC0xMDYsOSAr
MTAzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgcmV0dXJuIGRhdGEucmVs
ZWFzZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gY3JlYXRlR2VuZXJpY1dlYlNvY2tldERhdGEodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyKQorICAgICAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUdlbmVyaWNXZWJTb2NrZXREYXRhKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllcikKICAgICAgICAgewotICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gZGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGRhdGEgPSBJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBkYXRhLT5zZXROdW1iZXIoImlkZW50aWZpZXIi
LCBpZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybiBkYXRhLnJlbGVhc2UoKTsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckNvbnNvbGVB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50LmNw
cAppbmRleCAxNWJiN2E4Li42NjZhOGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvV29ya2VyQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvV29ya2VyQ29uc29sZUFnZW50LmNwcApAQCAtMzQsNiArMzQsOCBAQAogCiAjaW5jbHVkZSAi
V29ya2VyQ29uc29sZUFnZW50LmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogV29ya2VyQ29uc29sZUFnZW50OjpXb3JrZXJDb25zb2xlQWdl
bnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggNzEzNmU0Ni4uOTdkMDBlMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNw
cApAQCAtMzgsNiArMzgsOCBAQAogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUg
PHd0Zi9NZXNzYWdlUXVldWUuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGVmMjMwMzcu
LjdmNWU3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2Vy
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTUxLDggKzUxLDExIEBACiAjaW5jbHVkZSAiV29y
a2VyUmVwb3J0aW5nUHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJSdW50aW1lQWdlbnQuaCIKICNp
bmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCit1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRy
b2xsZXIuaAppbmRleCA1OGJkYTIwLi5hYTBkOTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTMzLDE5ICszMywy
MSBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvckFnZW50
UmVnaXN0cnkuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJ
bnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQWdl
bnRSZWdpc3RyeS5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCituYW1lc3BhY2UgSW5zcGVjdG9y
IHsKK2NsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOworfQorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKLWNsYXNzIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOwotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogY2xhc3Mg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOwogY2xhc3MgSW5zcGVjdG9yUnVudGltZUFnZW50Owog
Y2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKQEAgLTcyLDkgKzc0LDkgQEAgcHJpdmF0ZToKICAg
ICBSZWZQdHI8SW5zdHJ1bWVudGluZ0FnZW50cz4gbV9pbnN0cnVtZW50aW5nQWdlbnRzOwogICAg
IE93blB0cjxJbmplY3RlZFNjcmlwdE1hbmFnZXI+IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwog
ICAgIEluc3BlY3RvclJ1bnRpbWVBZ2VudCogbV9ydW50aW1lQWdlbnQ7Ci0gICAgSW5zcGVjdG9y
QWdlbnRSZWdpc3RyeSBtX2FnZW50czsKKyAgICBJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50UmVn
aXN0cnkgbV9hZ2VudHM7CiAgICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbD4gbV9m
cm9udGVuZENoYW5uZWw7Ci0gICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBt
X2JhY2tlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNwcAppbmRleCBiMDdiNjMzLi4x
ZWY4MzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGlt
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFn
ZW50LmNwcApAQCAtNDIsNiArNDIsOCBAQAogI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKICNp
bmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBXb3JrZXJSdW50aW1lQWdlbnQ6OldvcmtlclJ1bnRpbWVB
Z2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbmplY3RlZFNj
cmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgV29ya2VyR2xvYmFsU2NvcGUqIHdv
cmtlckdsb2JhbFNjb3BlKQpAQCAtNTcsNyArNTksNyBAQCBXb3JrZXJSdW50aW1lQWdlbnQ6On5X
b3JrZXJSdW50aW1lQWdlbnQoKQogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0V29ya2Vy
UnVudGltZUFnZW50KDApOwogfQogCi12b2lkIFdvcmtlclJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgV29ya2VyUnVudGltZUFn
ZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNo
ZXIpCiB7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvclJ1bnRpbWVCYWNrZW5k
RGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaAppbmRleCA2N2RlMDhhLi41
YjYyOWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGlt
ZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2Vu
dC5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+V29ya2Vy
UnVudGltZUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIC8vIFByb3RvY29s
IGNvbW1hbmRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKaW5kZXggZGRlNjVlMy4uMzI3ZWE0YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCkBAIC00Nyw5ICs0Nyw5IEBACiAjaW5jbHVkZSAiU2Ny
aXB0Q2FsbFN0YWNrRmFjdG9yeS5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGUuaCIKICNpbmNs
dWRlICJTY3JpcHRQcm9maWxlci5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNp
bmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3ku
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4
IDBiZTlmOTguLmNjNjYzNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVu
dFNlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1
cml0eVBvbGljeS5jcHAKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJGb3JtRGF0YUxpc3Qu
aCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIlVSTC5oIgogI2lu
Y2x1ZGUgIlBpbmdMb2FkZXIuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgi
CkBAIC00NiwxMCArNDUsMTMgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1
ZGUgIlNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQuaCIKICNpbmNsdWRlICJUZXh0RW5jb2Rp
bmcuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBOb3JtYWxseSBXZWJLaXQgdXNlcyAic3RhdGlj
IiBmb3IgaW50ZXJuYWwgbGlua2FnZSwgYnV0IHVzaW5nICJzdGF0aWMiIGZvcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcAppbmRleCA0OWUxODdiLi5iOGQ4Nzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAt
ODYsNyArODYsNiBAQAogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJTY3Jp
cHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAi
U2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKQEAgLTEwNCw2ICsxMDMs
NyBAQAogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgIm5wcnVudGltZV9pbXBsLmgiCiAj
aW5jbHVkZSAicnVudGltZV9yb290LmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
TGVha0NvdW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZUNvbnNvbGUuY3BwCmluZGV4IDRmYWFlNmQuLjliY2MyNjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZUNvbnNvbGUuY3BwCkBAIC00Miw5ICs0Miw5IEBACiAjaW5jbHVkZSAiU2NyaXB0QXJn
dW1lbnRzLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0
Q2FsbFN0YWNrRmFjdG9yeS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAi
U2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNs
dWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZDYwYzg4NS4uZjg0NWNjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC02MSw3ICs2MSw2IEBACiAj
aW5jbHVkZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlVz
ZXJHZXN0dXJlSW5kaWNhdG9yLmgiCkBAIC02OSw2ICs2OCw3IEBACiAjaW5jbHVkZSAiY19pbnN0
YW5jZS5oIgogI2luY2x1ZGUgIm5wcnVudGltZV9pbXBsLmgiCiAjaW5jbHVkZSAicnVudGltZV9y
b290LmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxydW50
aW1lL0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgogI2luY2x1ZGUg
PHd0Zi9BU0NJSUNUeXBlLmg+CkBAIC00NjcsNyArNDY3LDcgQEAgdm9pZCBQbHVnaW5WaWV3Ojpw
ZXJmb3JtUmVxdWVzdChQbHVnaW5SZXF1ZXN0KiByZXF1ZXN0KQogICAgIAogICAgIC8vIEV4ZWN1
dGluZyBhIHNjcmlwdCBjYW4gY2F1c2UgdGhlIHBsdWdpbiB2aWV3IHRvIGJlIGRlc3Ryb3llZCwg
c28gd2Uga2VlcCBhIHJlZmVyZW5jZSB0byBpdC4KICAgICBSZWZQdHI8UGx1Z2luVmlldz4gcHJv
dGVjdG9yKHRoaXMpOwotICAgIFNjcmlwdFZhbHVlIHJlc3VsdCA9IG1fcGFyZW50RnJhbWUtPnNj
cmlwdCgpLmV4ZWN1dGVTY3JpcHQoanNTdHJpbmcsIHJlcXVlc3QtPnNob3VsZEFsbG93UG9wdXBz
KCkpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHJlc3VsdCA9IG1fcGFyZW50RnJhbWUt
PnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoanNTdHJpbmcsIHJlcXVlc3QtPnNob3VsZEFsbG93UG9w
dXBzKCkpOwogCiAgICAgaWYgKHRhcmdldEZyYW1lTmFtZS5pc051bGwoKSkgewogICAgICAgICBT
dHJpbmcgcmVzdWx0U3RyaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4
IDgwOWZlOGMuLjAwMDZiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAg
LTYzLDcgKzYzLDYgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yT3ZlcmxheS5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIklu
c3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJJbnRlcm5hbFNldHRpbmdzLmgiCiAjaW5j
bHVkZSAiSW50UmVjdC5oIgpAQCAtOTYsNiArOTUsNyBAQAogI2luY2x1ZGUgIlZpZXdwb3J0QXJn
dW1lbnRzLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8Ynl0ZWNvZGUv
Q29kZUJsb2NrLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2lu
Y2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaD4KQEAgLTE2Nyw2ICsxNjcsOCBA
QCB1c2luZyBKU0M6OkpTVmFsdWU7CiB1c2luZyBKU0M6OlNjcmlwdEV4ZWN1dGFibGU7CiB1c2lu
ZyBKU0M6OlN0YWNrVmlzaXRvcjsKIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMTI4Miw3
ICsxMjg0LDcgQEAgcHJpdmF0ZToKICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwogfTsKIAot
U3RyaW5nIEludGVybmFsczo6cGFyc2VyTWV0YURhdGEoU2NyaXB0VmFsdWUgdmFsdWUpCitTdHJp
bmcgSW50ZXJuYWxzOjpwYXJzZXJNZXRhRGF0YShEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB2YWx1
ZSkKIHsKICAgICBKU0M6OlZNKiB2bSA9IGNvbnRleHREb2N1bWVudCgpLT52bSgpOwogICAgIEpT
Qzo6RXhlY1N0YXRlKiBleGVjID0gdm0tPnRvcENhbGxGcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oCmluZGV4IDI1YmNhZmUuLjEwOTI1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9i
c2VydmVyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCiAjaW5jbHVk
ZSAiTm9kZUxpc3QuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPGJpbmRp
bmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgogI2lu
Y2x1ZGUgPHJ1bnRpbWUvRmxvYXQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KQEAgLTE4MSw3ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbWl0SW5zcGVjdG9yRGlk
QmVnaW5GcmFtZSgpOwogICAgIHZvaWQgZW1pdEluc3BlY3RvckRpZENhbmNlbEZyYW1lKCk7CiAK
LSAgICBTdHJpbmcgcGFyc2VyTWV0YURhdGEoU2NyaXB0VmFsdWUgPSBTY3JpcHRWYWx1ZSgpKTsK
KyAgICBTdHJpbmcgcGFyc2VyTWV0YURhdGEoRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgPSBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSgpKTsKIAogICAgIGJvb2wgaGFzU3BlbGxpbmdNYXJrZXIoaW50
IGZyb20sIGludCBsZW5ndGgsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBib29sIGhhc0dyYW1tYXJN
YXJrZXIoaW50IGZyb20sIGludCBsZW5ndGgsIEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggZTE3
N2E3MC4uMTM4YmZhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRX
b3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRX
b3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogUGFzc1JlZlB0cjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZUNvbm5lY3RFdmVudChQYXNzUmVmUHRy
PE1lc3NhZ2VQb3J0PiBwcnBQb3J0KQogewogICAgIFJlZlB0cjxNZXNzYWdlUG9ydD4gcG9ydCA9
IHBycFBvcnQ7Ci0gICAgUmVmUHRyPE1lc3NhZ2VFdmVudD4gZXZlbnQgPSBNZXNzYWdlRXZlbnQ6
OmNyZWF0ZShhZG9wdFB0cihuZXcgTWVzc2FnZVBvcnRBcnJheSgxLCBwb3J0KSksIFNjcmlwdFZh
bHVlKCksIFN0cmluZygpLCBTdHJpbmcoKSwgcG9ydCk7CisgICAgUmVmUHRyPE1lc3NhZ2VFdmVu
dD4gZXZlbnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShhZG9wdFB0cihuZXcgTWVzc2FnZVBvcnRB
cnJheSgxLCBwb3J0KSksIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCksIFN0cmluZygpLCBTdHJp
bmcoKSwgcG9ydCk7CiAgICAgZXZlbnQtPmluaXRFdmVudChldmVudE5hbWVzKCkuY29ubmVjdEV2
ZW50LCBmYWxzZSwgZmFsc2UpOwogICAgIHJldHVybiBldmVudC5yZWxlYXNlKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IGVjMmQxOTAu
LmZjYmY2NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
Y3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRXJyb3JFdmVudC5oIgogI2luY2x1ZGUg
IkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29uc29sZUluc3RydW1lbnRhdGlvbi5oIgog
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCkBAIC00NCw3ICs0NSw2
IEBACiAjaW5jbHVkZSAiU2NoZWR1bGVkQWN0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0
YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZh
bHVlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJXb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyTG9jYXRpb24uaCIKQEAgLTU0LDE0
ICs1NCwxMyBAQAogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgIldvcmtlclRo
cmVhZGFibGVMb2FkZXIuaCIKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbi5oIgor
I2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FU
SU9OUykKICNpbmNsdWRlICJOb3RpZmljYXRpb25DZW50ZXIuaCIKICNlbmRpZgogCi0jaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENsb3Nl
V29ya2VyR2xvYmFsU2NvcGVUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2sgewpAQCAtMjQxLDcgKzI0MCw3IEBAIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmltcG9ydFNj
cmlwdHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHVybHMsIEV4Y2VwdGlvbkNvZGUmCiAKICAgICAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRlZChzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCksIHNjcmlwdExvYWRlci0+aWRlbnRpZmllcigpLCBzY3JpcHRMb2FkZXItPnNj
cmlwdCgpKTsKIAotICAgICAgICBTY3JpcHRWYWx1ZSBleGNlcHRpb247CisgICAgICAgIERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlIGV4Y2VwdGlvbjsKICAgICAgICAgbV9zY3JpcHQtPmV2YWx1YXRl
KFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSwgc2NyaXB0TG9hZGVyLT5y
ZXNwb25zZVVSTCgpKSwgJmV4Y2VwdGlvbik7CiAgICAgICAgIGlmICghZXhjZXB0aW9uLmhhc05v
VmFsdWUoKSkgewogICAgICAgICAgICAgbV9zY3JpcHQtPnNldEV4Y2VwdGlvbihleGNlcHRpb24p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCmluZGV4IDUwYmZhMWQuLmZl
ZjNlNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKQEAgLTMxLDcg
KzMxLDYgQEAKICNpbmNsdWRlICJEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1
ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNv
ZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCiAjaW5jbHVkZSAiVGhyZWFkR2xvYmFsRGF0YS5oIgogI2luY2x1ZGUgIlVSTC5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCmluZGV4IDE2MWRkMDEuLmMzOWU3NTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxUcmVlVmlld2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAKQEAgLTM4LDEwICszOCwxMCBAQAogI2luY2x1
ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNj
cmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlRl
eHQuaCIKICNpbmNsdWRlICJYTUxWaWV3ZXJDU1MuaCIKICNpbmNsdWRlICJYTUxWaWV3ZXJKUy5o
IgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNw
cAppbmRleCA3NGE3ZDAwLi45MGVmZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFy
c2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtNDYsNyArNDYsNiBAQAogI2luY2x1ZGUgIlJl
c291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTY3JpcHRFbGVtZW50LmgiCiAjaW5jbHVkZSAi
U2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAi
VGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlRyZWVEZXB0aExpbWl0LmgiCiAjaW5j
bHVkZSAiWE1MRXJyb3JzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2Vy
L1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2Vy
L1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggNDZhOTJkYi4uNTJiOGY5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnht
bDIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJM
aWJ4bWwyLmNwcApAQCAtNTIsNyArNTIsNiBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2Uu
aCIKICNpbmNsdWRlICJTY3JpcHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29k
ZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCmluZGV4IGU3MWY0ZmMu
LjRlZWZkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcApAQCAt
MTE4LDcgKzExOCw2IEBACiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCiAjaW5jbHVkZSAiU2Ny
aXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRl
ICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCiAjaW5jbHVkZSAiU2Vj
dXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJTZWxlY3Rpb25IYW5kbGVyLmgiCkBAIC0xNzIsNiAr
MTcxLDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NvbnRleHRSZWYuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZi5oPgogI2luY2x1ZGUgPFNoYXJlZFBvaW50
ZXIuaD4KKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPGNtYXRo
PgogI2luY2x1ZGUgPHN5cy9rZXljb2Rlcy5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdXN0cmluZy5o
PiAvLyBwbGF0Zm9ybSBJQ1UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4IDA0NDZh
YjEuLjI0MGNiNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEy
IEBACisyMDEzLTEyLTA1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBNb3JlIEluc3BlY3RvciBSZXF1aXJlZCBDbGFz
c2VzIERvd24gaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1MzI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBBcGkvV2ViUGFnZS5jcHA6CisKIDIwMTMtMTItMDMgIEpv
c2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBQdXNoIFJlbW90ZSBJbnNwZWN0b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFuYWdlbWVu
dCBpbnRvIEphdmFTY3JpcHRDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggMzFlZTJiNS4uN2RkNWU1
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTEyLTA1ICBKb3NlcGgg
UGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
UHVzaCBNb3JlIEluc3BlY3RvciBSZXF1aXJlZCBDbGFzc2VzIERvd24gaW50byBKYXZhU2NyaXB0
Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1
MzI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBl
d2svZXdrX2ZyYW1lLmNwcDoKKwogMjAxMy0xMi0wMyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jh
cm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggUmVtb3RlIEluc3Bl
Y3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2VtZW50IGludG8gSmF2YVNjcmlwdENvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwIGIvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKaW5kZXggZjJhMjBjMy4uYTA1MmFhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKQEAgLTUzLDcgKzUzLDYgQEAKICNpbmNsdWRl
ICJQcm9ncmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNs
dWRlICJTY3JpcHRDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNs
dWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJTdWJzdGl0dXRlRGF0YS5oIgogI2luY2x1
ZGUgIldpbmRvd3NLZXlib2FyZENvZGVzLmgiCkBAIC02NSw2ICs2NCw3IEBACiAjaW5jbHVkZSA8
RWNvcmVfSW5wdXQuaD4KICNpbmNsdWRlIDxFaW5hLmg+CiAjaW5jbHVkZSA8RXZhcy5oPgorI2lu
Y2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8ZWluYV9zYWZldHlfY2hl
Y2tzLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGNlMjg5YjIuLjI3YTdmZGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0xMi0wNSAgSm9zZXBoIFBlY29yYXJvICA8cGVj
b3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggTW9yZSBJbnNw
ZWN0b3IgUmVxdWlyZWQgQ2xhc3NlcyBEb3duIGludG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTMyNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwOgorCiAyMDEzLTEyLTA5ICBKb2FubWFyaWUgRGlnZ3MgIDxqZGlnZ3NAaWdhbGlh
LmNvbT4KIAogICAgICAgICBBWDogW0FUS10gQ29udmVydCB0aGUgZ2V0X3tzdHJpbmcsdGV4dH1f
YXRfb2Zmc2V0IGF0a3Rlc3QuYyB1bml0IHRlc3RzIHRvIGxheW91dCB0ZXN0cwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4IGY5ZDliMWRkLi42MDIzMjY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC04NSw3
ICs4NSw2IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1
ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJXZWJL
aXRET01Eb2N1bWVudFByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXRkb3dubG9hZC5oIgpAQCAt
MTE0LDYgKzExMyw3IEBACiAjaW5jbHVkZSAid2Via2l0d2VicGx1Z2luZGF0YWJhc2Vwcml2YXRl
LmgiCiAjaW5jbHVkZSAid2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaCIKICNpbmNsdWRlICJ3ZWJr
aXR3ZWJ2aWV3cHJpdmF0ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAj
aW5jbHVkZSA8Z2RrL2dka2tleXN5bXMuaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgog
I2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQppbmRleCBlMjVlYmU5
Li5hMTRjODg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCkBAIC00MywxMiArNDMsMTIgQEAKICNpbXBvcnQgIldl
YlVJRGVsZWdhdGUuaCIKICNpbXBvcnQgIldlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCA8YWxn
b3JpdGhtPgorI2ltcG9ydCA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbXBvcnQgPFdlYkNv
cmUvSW5zcGVjdG9yQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9JbnNwZWN0b3JGcm9u
dGVuZENsaWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9NYWluRnJhbWUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUGFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1NjcmlwdFZhbHVlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5raW5n
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvRE9NRXh0ZW5zaW9ucy5oPgogI2ltcG9ydCA8V2ViS2l0U3lz
dGVtSW50ZXJmYWNlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggNGI1MmE3NS4uZDAzYTUxZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTEyLTA1ICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBN
b3JlIEluc3BlY3RvciBSZXF1aXJlZCBDbGFzc2VzIERvd24gaW50byBKYXZhU2NyaXB0Q29yZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1MzI0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJGcmFt
ZS5jcHA6CisgICAgICAgICogV2ViVmlldy5jcHA6CisKIDIwMTMtMTItMDQgIEJyZW50IEZ1bGdo
YW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gRXhpdGluZyBmcm9tIE1l
ZGlhIEZ1bGwgU2NyZWVuIG1vZGUgdmlhICdlc2NhcGUnIGtleSBkb2VzIG5vdCB3b3JrIHByb3Bl
cmx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggZWE4YmQxOC4uNDlkNjZjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkZyYW1lLmNwcApAQCAtOTksMTIgKzk5LDEyIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0
SXRlcmF0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NQmluZGluZy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0VmFs
dWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFs
dWUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU09iamVjdC5oPgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+
CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogI2lmIFVTRShDRykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmll
dy5jcHAKaW5kZXggZjlmNWQwNi4uMDgzODQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93
aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTEz
Nyw3ICsxMzcsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NjcmlwdENvbnRyb2xsZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdFZhbHVlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxiYXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGJh
clRoZW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgpAQCAtMTQ3LDYg
KzE0Niw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TeXN0ZW1JbmZvLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9XaW5kb3dNZXNzYWdlQnJvYWRjYXN0ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRv
d3NUb3VjaC5oPgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KIAogI2lmIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBkYjcxYjdhLi44
MmRkOTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTMtMTItMDUgIEpvc2VwaCBQ
ZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQ
dXNoIE1vcmUgSW5zcGVjdG9yIFJlcXVpcmVkIENsYXNzZXMgRG93biBpbnRvIEphdmFTY3JpcHRD
b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUz
MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisKKzIwMTMtMTItMDUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxl
LmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVjdG9yIFJlcXVp
cmVkIENsYXNzZXMgRG93biBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3IuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaDoK
KwogMjAxMy0xMi0wOSAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbV0syXSBBZGQgVU5JWF9ET01BSU5fU09DS0VUUyBzcGVjaWZpYyBiaXRzIGZv
ciBzdXBwb3J0aW5nIE5ldHdvcmtQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZTAwZDNhMi4uNjEzZDVkYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAt
NjMsMTIgKzYzLDEyIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJFbWJlZGRlZE9iamVjdC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRWYWx1
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsVmlldy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5UG9saWN5Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckdlc3R1
cmVJbmRpY2F0b3IuaD4KKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAg
LTExNzksNyArMTE3OSw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybUphdmFTY3JpcHRVUkxS
ZXF1ZXN0KFVSTFJlcXVlc3QqIHJlcXVlc3QpCiAgICAgLy8gRXZhbHVhdGUgdGhlIEphdmFTY3Jp
cHQgY29kZS4gTm90ZSB0aGF0IHJ1bm5pbmcgSmF2YVNjcmlwdCBoZXJlIGNvdWxkIGNhdXNlIHRo
ZSBwbHVnLWluIHRvIGJlIGRlc3Ryb3llZCwgc28gd2UKICAgICAvLyBncmFiIHJlZmVyZW5jZXMg
dG8gdGhlIHBsdWctaW4gaGVyZS4KICAgICBSZWZQdHI8UGx1Z2luPiBwbHVnaW4gPSBtX3BsdWdp
bjsKLSAgICBTY3JpcHRWYWx1ZSByZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlw
dChqc1N0cmluZywgcmVxdWVzdC0+YWxsb3dQb3B1cHMoKSk7CisgICAgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUgcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoanNTdHJpbmcs
IHJlcXVlc3QtPmFsbG93UG9wdXBzKCkpOwogCiAgICAgLy8gQ2hlY2sgaWYgZXZhbHVhdGluZyB0
aGUgSmF2YVNjcmlwdCBkZXN0cm95ZWQgdGhlIHBsdWctaW4uCiAgICAgaWYgKCFwbHVnaW4tPmNv
bnRyb2xsZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
Ykluc3BlY3Rvci5jcHAKaW5kZXggYTg5MGY1Yi4uMTA1YmFiMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKQEAgLTM0LDEyICsz
NCwxMSBAQAogI2luY2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JDb250cm9sbGVyLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGb3J3YXJkaW5nLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZy
YW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3Jp
cHRDb250cm9sbGVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRWYWx1ZS5oPgorI2luY2x1
ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29u
Y2F0ZW5hdGUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKaW5kZXggZTY0ZjZkMy4uNDJh
ZWM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3IuaApAQCAtMzAsMTggKzMwLDE0IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGb3J3YXJk
aW5nLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbDsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50OwogY2xhc3MgV2ViUGFnZTsKLXN0cnVjdCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzOwogCiBjbGFzcyBXZWJJbnNwZWN0b3IgOiBwdWJsaWMgQVBJOjpUeXBlZE9iamVj
dDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlSW5zcGVjdG9yPiB7CiBwdWJsaWM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNTA1NzE1Ny4u
MjI5ZWFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtMTI4LDcgKzEyOCw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY2hlbWVSZWdpc3RyeS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0
VmFsdWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYWRvd1Jvb3Qu
aD4KQEAgLTEzOSw2ICsxMzgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVmlzaWJsZVBvc2l0aW9u
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WaXNpYmxlVW5pdHMuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L21hcmt1cC5oPgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8
cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KICNpbmNs
dWRlIDxydW50aW1lL09wZXJhdGlvbnMuaD4K
</data>
<flag name="commit-queue"
          id="242310"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218794</attachid>
            <date>2013-12-09 13:09:47 -0800</date>
            <delta_ts>2013-12-09 13:48:15 -0800</delta_ts>
            <desc>[PATCH] For Bots 4</desc>
            <filename>for-bots-4.patch</filename>
            <type>text/plain</type>
            <size>489444</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAxM2M4YjA2Li4zNTk5YmIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00LDYgKzQsNyBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vQVBJIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMiCiAg
ICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9hc3NlbWJsZXIiCisgICAgIiR7SkFWQVNDUklQVENP
UkVfRElSfS9iaW5kaW5ncyIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J5dGVjb2RlIgog
ICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnl0ZWNvbXBpbGVyIgogICAgICIke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vZGZnIgpAQCAtNDUsNiArNDYsMTAgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NP
VVJDRVMKICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCiAgICAgYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNwcAogCisgICAgYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25D
YWxsLmNwcAorICAgIGJpbmRpbmdzL1NjcmlwdE9iamVjdC5jcHAKKyAgICBiaW5kaW5ncy9TY3Jp
cHRWYWx1ZS5jcHAKKwogICAgIGJ5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwCiAg
ICAgYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAogICAgIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNC
bG9jay5jcHAKQEAgLTIxNSw2ICsyMjAsMTAgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMK
ICAgICBoZWFwL1dlYWtTZXQuY3BwCiAgICAgaGVhcC9Xcml0ZUJhcnJpZXJTdXBwb3J0LmNwcAog
CisgICAgaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwCisgICAgaW5zcGVjdG9y
L0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcAorICAgIGluc3BlY3Rvci9JbnNwZWN0b3JW
YWx1ZXMuY3BwCisKICAgICBpbnRlcnByZXRlci9BYnN0cmFjdFBDLmNwcAogICAgIGludGVycHJl
dGVyL0NhbGxGcmFtZS5jcHAKICAgICBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTU4
Myw2ICs1OTIsNyBAQCBlbmRmb3JlYWNoICgpCiAKIHNldChKYXZhU2NyaXB0Q29yZV9GT1JXQVJE
SU5HX0hFQURFUlNfRElSRUNUT1JJRVMKICAgICBhc3NlbWJsZXIKKyAgICBiaW5kaW5ncwogICAg
IGJ5dGVjb2RlCiAgICAgY29sbGVjdG9yL2hhbmRsZXMKICAgICBkZWJ1Z2dlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKaW5kZXggMTYxYzhkYS4uMzljNWY5MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNzUgQEAKKzIwMTMtMTItMDUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29y
YXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVj
dG9yIFJlcXVpcmVkIENsYXNzZXMgRG93biBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3Mv
U2NyaXB0RnVuY3Rpb25DYWxsLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAuCisgICAgICAgIChKU0M6OlNjcmlwdENhbGxB
cmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6U2NyaXB0RnVu
Y3Rpb25DYWxsOjpTY3JpcHRGdW5jdGlvbkNhbGwpOgorICAgICAgICAoSlNDOjpTY3JpcHRGdW5j
dGlvbkNhbGw6OmNhbGwpOgorICAgICAgICAqIGJpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5o
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25D
YWxsLmguCisKKzIwMTMtMTItMDUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNv
bT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVjdG9yIFJlcXVpcmVk
IENsYXNzZXMgRG93biBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdO
VW1ha2VmaWxlLmFtOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICog
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovY29weS1maWxlcy5jbWQ6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBi
aW5kaW5ncy9TY3JpcHRPYmplY3QuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNwcC4KKyAgICAgICAgKEpTQzo6U2NyaXB0T2JqZWN0OjpT
Y3JpcHRPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmguCisgICAgICAg
IChKU0M6OlNjcmlwdE9iamVjdDo6U2NyaXB0T2JqZWN0KToKKyAgICAgICAgKEpTQzo6U2NyaXB0
T2JqZWN0Ojpqc09iamVjdCk6CisgICAgICAgIChKU0M6OlNjcmlwdE9iamVjdDo6c2NyaXB0U3Rh
dGUpOgorICAgICAgICAqIGJpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcC4KKyAgICAgICAgKEpTQzo6
U2NyaXB0VmFsdWU6On5TY3JpcHRWYWx1ZSk6CisgICAgICAgIChKU0M6OlNjcmlwdFZhbHVlOjpn
ZXRTdHJpbmcpOgorICAgICAgICAoSlNDOjpTY3JpcHRWYWx1ZTo6dG9TdHJpbmcpOgorICAgICAg
ICAoSlNDOjpTY3JpcHRWYWx1ZTo6aXNFcXVhbCk6CisgICAgICAgIChKU0M6OmpzVG9JbnNwZWN0
b3JWYWx1ZSk6CisgICAgICAgIChKU0M6OlNjcmlwdFZhbHVlOjp0b0luc3BlY3RvclZhbHVlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaC4KKworMjAxMy0xMi0wNSAgSm9zZXBoIFBl
Y29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1
c2ggTW9yZSBJbnNwZWN0b3IgUmVxdWlyZWQgQ2xhc3NlcyBEb3duIGludG8gSmF2YVNjcmlwdENv
cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTMy
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICog
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmguCisgICAgICAgIChJbnNw
ZWN0b3I6Okluc3BlY3RvckFnZW50QmFzZTo6fkluc3BlY3RvckFnZW50QmFzZSk6CisgICAgICAg
IChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50QmFzZTo6ZGlzY2FyZEFnZW50KToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnRCYXNlOjpJbnNwZWN0b3JBZ2VudEJhc2UpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcC4KKyAg
ICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6YXBwZW5kKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oLgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHA6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwLgor
ICAgICAgICAoSW5zcGVjdG9yOjpnZXRQcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oLgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAuCisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvclZhbHVlcy5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclZhbHVlcy5oLgorCiAyMDEzLTEyLTA5ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGRvY3MvbWFrZS1ieXRlY29kZS1kb2NzLnBsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggMDg1ZmNhNy4uNzVkYmVlNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtNTIsNiArNTIsNyBAQCBqYXZhc2Ny
aXB0Y29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSSBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL0ZvcndhcmRpbmdIZWFk
ZXJzIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyIFwKKwkt
SSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MgXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZSBcCiAJLUkkKHNyY2RpcikvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KaW5kZXggODNiMjA3Ni4uNWVkMWYyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KQEAgLTk1LDYgKzk1LDEyIEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1NINEFzc2VtYmxlci5oIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oIFwKKyAgICBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBcCisgICAgU291
cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oIFwKKyAgICBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0T2JqZWN0LmNwcCBcCisgICAgU291
cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5oIFwKKyAgICBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwIFwKKyAgICBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcCBcCkBAIC02MTIsNyArNjE4LDE0
IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
Y3UvdW5pY29kZS91dGZfb2xkLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5pY29k
ZS91dHlwZXMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ljdS91bmljb2RlL3V2ZXJzaW9u
LmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNl
LmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdp
c3RyeS5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdl
bnRSZWdpc3RyeS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9BYnN0cmFjdFBDLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0Fic3RyYWN0UEMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0NhY2hlZENhbGwuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpp
bmRleCBhMTQ0OTJlLi5kZTc2MjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2oKQEAgLTI5NCw2ICsyOTQsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYXNz
ZW1ibGVyXE1hY3JvQXNzZW1ibGVyLmNwcCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XEFQSVxKU0NUZXN0UnVubmVyVXRpbHMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGFzc2VtYmxlclxNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5jcHAiIC8+CisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xiaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwIiAv
PgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcYmluZGluZ3MvU2NyaXB0T2Jq
ZWN0LmNwcCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGJpbmRpbmdz
L1NjcmlwdFZhbHVlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2Rl
XEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cYnl0ZWNvZGVcQXJyYXlQcm9maWxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXGJ5dGVjb2RlXEJ5dGVjb2RlQmFzaWNCbG9jay5jcHAiIC8+CkBAIC00NTYsNiArNDU5LDkg
QEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcV2Vha0hhbmRsZU93bmVyLmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcV2Vha1NldC5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXFdyaXRlQmFycmllclN1cHBvcnQuY3BwIiAvPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckFnZW50UmVnaXN0
cnkuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGlu
c3BlY3RvclxJbnNwZWN0b3JWYWx1ZXMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5caW50ZXJwcmV0ZXJcQWJzdHJhY3RQQy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxpbnRlcnByZXRlclxDYWxsRnJhbWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5caW50ZXJwcmV0ZXJcSW50ZXJwcmV0ZXIuY3BwIiAvPgpAQCAtNzQ5LDYgKzc1NSw5IEBA
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcTWFjcm9Bc3NlbWJsZXJYODZf
NjQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxSZXBhdGNoQnVm
ZmVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcWDg2QXNzZW1i
bGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xiaW5kaW5ncy9T
Y3JpcHRGdW5jdGlvbkNhbGwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRp
bmdzXGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cYmluZGluZ3NcYmluZGluZ3MvU2NyaXB0VmFsdWUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5UHJvZmlsZS5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQnlWYWxJbmZvLmgiIC8+CkBAIC05OTcsNyArMTAw
NiwxMSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxXZWFrU2V0LmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXFdlYWtTZXRJbmxpbmVzLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXFdyaXRlQmFycmllclN1cHBvcnQuaCIgLz4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JBZ2VudEJhc2UuaCIg
Lz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JBZ2VudFJl
Z2lzdHJ5LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGlu
c3BlY3RvclxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JWYWx1ZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGludGVycHJldGVyXEFic3RyYWN0UEMuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGludGVycHJldGVyXENhY2hlZENhbGwuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGludGVycHJldGVyXENhbGxGcmFtZS5oIiAvPgpAQCAtMTM0NSw0ICsxMzU4
LDQgQEAKICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KICAgICA8SW1w
b3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcQnVpbGRDdXN0b21pemF0aW9uc1xtYXNtLnRh
cmdldHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGEyNjEwZjcuLjM1Y2E1YzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTQsNiArNCw5IEBA
CiAgICAgPEZpbHRlciBJbmNsdWRlPSJhc3NlbWJsZXIiPgogICAgICAgPFVuaXF1ZUlkZW50aWZp
ZXI+ezQyOTc4M2ExLTVkNmEtNDAxOS1hZDFhLWRkYjJjOThmOWI2Y308L1VuaXF1ZUlkZW50aWZp
ZXI+CiAgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJiaW5kaW5ncyI+CisgICAg
ICA8VW5pcXVlSWRlbnRpZmllcj57MGJhY2UxMjMtNDU4Mi1lZWJjLTkzMTQtNzgxOWIzNzZjMTk4
fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KICAgICA8RmlsdGVyIEluY2x1ZGU9
ImJ5dGVjb2RlIj4KICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns3NjYwODhhMC0xMjE2LTQ4NTQt
YWE0My01NjBjNWUyODM2Njh9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgpAQCAt
MTA1LDYgKzEwOCwxNSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXE1h
Y3JvQXNzZW1ibGVyLmNwcCI+CiAgICAgICA8RmlsdGVyPmFzc2VtYmxlcjwvRmlsdGVyPgogICAg
IDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0
RnVuY3Rpb25DYWxsLmNwcCI+CisgICAgICA8RmlsdGVyPmJpbmRpbmdzPC9GaWx0ZXI+CisgICAg
PC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRP
YmplY3QuY3BwIj4KKyAgICAgIDxGaWx0ZXI+YmluZGluZ3M8L0ZpbHRlcj4KKyAgICA8L0NsQ29t
cGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdFZhbHVlLmNw
cCI+CisgICAgICA8RmlsdGVyPmJpbmRpbmdzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxl
LmNwcCI+CiAgICAgICA8RmlsdGVyPmJ5dGVjb2RlPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+
CkBAIC0yNzksNiArMjkxLDE1IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXFdy
aXRlQmFycmllclN1cHBvcnQuY3BwIj4KICAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVyPgogICAg
IDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3Bl
Y3RvckFnZW50UmVnaXN0cnkuY3BwIj4KKyAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+
CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3Jc
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIj4KKyAgICAgIDxGaWx0ZXI+aW5zcGVjdG9y
PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxp
bnNwZWN0b3JcSW5zcGVjdG9yVmFsdWVzLmNwcCI+CisgICAgICA8RmlsdGVyPmluc3BlY3Rvcjwv
RmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW50
ZXJwcmV0ZXJcQWJzdHJhY3RQQy5jcHAiPgogICAgICAgPEZpbHRlcj5pbnRlcnByZXRlcjwvRmls
dGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMTM4OCw2ICsxNDA5LDE1IEBACiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcWDg2QXNzZW1ibGVyLmgiPgogICAgICAgPEZpbHRl
cj5hc3NlbWJsZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdEZ1bmN0aW9uQ2FsbC5oIj4KKyAgICAgIDxGaWx0ZXI+
YmluZGluZ3M8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdE9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+YmluZGluZ3M8
L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJp
bmRpbmdzXFNjcmlwdFZhbHVlLmgiPgorICAgICAgPEZpbHRlcj5iaW5kaW5nczwvRmlsdGVyPgor
ICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5oIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4K
ICAgICA8L0NsSW5jbHVkZT4KQEAgLTE3MTUsOSArMTc0NSwyMSBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caGVhcFxXcml0ZUJhcnJpZXJTdXBwb3J0LmgiPgogICAgICAgPEZpbHRlcj5o
ZWFwPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxpbnNwZWN0b3JcSW5zcGVjdG9yQWdlbnRCYXNlLmgiPgorICAgICAgPEZpbHRlcj5pbnNwZWN0
b3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGluc3BlY3RvclxJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgiPgorICAgICAgPEZpbHRlcj5pbnNw
ZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIj4KKyAgICAgIDxGaWx0
ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiPgogICAgICAg
PEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JWYWx1ZXMuaCI+CisgICAgICA8Rmls
dGVyPmluc3BlY3RvcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcQWJzdHJhY3RQQy5oIj4KICAgICAgIDxGaWx0ZXI+aW50
ZXJwcmV0ZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTMxNzAsNCArMzIxMiw0IEBA
CiAgICAgICA8RmlsdGVyPmppdDwvRmlsdGVyPgogICAgIDwvTUFTTT4KICAgPC9JdGVtR3JvdXA+
Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovY29w
eS1maWxlcy5jbWQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9jb3B5LWZpbGVzLmNtZAppbmRleCBmN2U0Mjk0Li44ODJjZTgzIDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9jb3B5LWZpbGVzLmNtZAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9jb3B5LWZp
bGVzLmNtZApAQCAtMzksNiArMzksNyBAQCBlY2hvIENvcHlpbmcgcHJpdmF0ZSBoZWFkZXJzLi4u
CiBta2RpciAiJVByaXZhdGVIZWFkZXJzRGlyZWN0b3J5JSIgMj5OVUwNCiBmb3IgJSVkIGluICgN
CiAgICAgYXNzZW1ibGVyDQorICAgIGJpbmRpbmdzDQogICAgIGJ5dGVjb2RlDQogICAgIGRmZw0K
ICAgICBkaXNhc3NlbWJsZXINCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQzMjZh
NjEuLmJiOWRmNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OTIsNiArODky
LDE5IEBACiAJCUExNzEyQjQxMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzEyQjQwMTFDN0IyMzUw
MDdBNTMxNSAvKiBSZWdFeHBLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlBMUEwMDlDMDE4MzFBMjJEMDBDRjg3MTEgLyogTWFjcm9Bc3NlbWJs
ZXJBUk02NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODY0MDkyM0MxNTZFRUQzQjAwNTY2Q0IyIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUEwMDlDMTE4MzFB
MjZFMDBDRjg3MTEgLyogQVJNNjRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NDA5MjNCMTU2RUVEM0IwMDU2NkNCMiAvKiBBUk02NEFz
c2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUE1NENGMkY1MTg0RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTRDRjJGMjE4NEVBQjI0MDAy
MzdGMTkgLyogU2NyaXB0VmFsdWUuY3BwICovOyB9OworCQlBNTRDRjJGNjE4NEVBQjI0MDAyMzdG
MTkgLyogU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1NENGMkYzMTg0RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1NENGMkY5MTg0
RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU0Q0YyRjcxODRFQUVEQTAwMjM3RjE5IC8qIFNjcmlw
dE9iamVjdC5jcHAgKi87IH07CisJCUE1NENGMkZBMTg0RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRP
YmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
NENGMkY4MTg0RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNTVEOTNBNTE4NTAxMkE4MDA0MDBE
RUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1NUQ5M0EzMTg1MDEyQTgwMDQwMERFRCAvKiBTY3JpcHRGdW5j
dGlvbkNhbGwuY3BwICovOyB9OworCQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0
RnVuY3Rpb25DYWxsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTVEOTNBNDE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTU5M0NGN0Mx
ODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OTNDRjdBMTg0MDM2MDMw
MEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgKi87IH07CisJCUE1OTND
RjdEMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5M0NGN0IxODQwMzYw
MzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTU5M0NGN0YxODQwMzYyQzAwQkZD
RTI3IC8qIEluc3BlY3RvckFnZW50QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTU5M0NGN0UxODQwMzYyQzAwQkZDRTI3IC8qIEluc3BlY3RvckFn
ZW50QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUE1OTNDRjgyMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5M0NGODAxODQwMzc3
MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5jcHAgKi87IH07CisJCUE1OTNDRjgzMTg0MDM3
NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OTNDRjgxMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0
b3JWYWx1ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlBNTkzQ0Y4NjE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTkzQ0Y4
NDE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAgKi87IH07CisJ
CUE1OTNDRjg3MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTkzQ0Y4NTE4NDAz
OENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1OTQ1NThGMTgyNDVFRkQwMENDMzg0
MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OTQ1NThFMTgyNDVFREUwMENDMzg0MyAvKiBSZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCAqLzsgfTsKIAkJQTU5NDU1OTIxODI0NzQ0NzAwQ0Mz
ODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTk0NTU5MDE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNH
bG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcCAqLzsgfTsKIAkJQTU5NDU1OTMxODI0NzQ0NzAwQ0Mz
ODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5NDU1OTExODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xv
YmFsT2JqZWN0RGVidWdnYWJsZS5oICovOyB9OwpAQCAtMjIyMSw2ICsyMjM0LDE5IEBACiAJCUEx
NzEyQjNBMTFDN0IyMTIwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUExNzEyQjNFMTFDN0IyMjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBDYWNoZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBMTcxMkI0MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cEtleS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBNTRDRjJGMjE4NEVBQjI0MDAyMzdGMTkgLyogU2NyaXB0
VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0VmFs
dWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTRDRjJGMzE4NEVBQjI0MDAy
MzdGMTkgLyogU2NyaXB0VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2NyaXB0VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU0Q0YyRjcxODRF
QUVEQTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTY3JpcHRPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBNTRDRjJGODE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2JqZWN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBNTVEOTNBMzE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25D
YWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEZ1bmN0
aW9uQ2FsbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1NUQ5M0E0MTg1MDEy
QTgwMDQwMERFRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2NyaXB0RnVuY3Rpb25DYWxsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUE1OTNDRjdBMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci5jcHA7IHBhdGggPSBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTkzQ0Y3QjE4NDAz
NjAzMDBCRkNFMjcgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaDsgcGF0aCA9
IGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBNTkzQ0Y3RTE4NDAzNjJDMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRC
YXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEluc3BlY3RvckFnZW50QmFz
ZS5oOyBwYXRoID0gaW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBNTkzQ0Y4MDE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFs
dWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEluc3BlY3RvclZh
bHVlcy5jcHA7IHBhdGggPSBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU5M0NGODExODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3Rv
clZhbHVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJbnNwZWN0b3JWYWx1
ZXMuaDsgcGF0aCA9IGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTU5M0NGODQxODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50
UmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSW5zcGVj
dG9yQWdlbnRSZWdpc3RyeS5jcHA7IHBhdGggPSBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdp
c3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTNDRjg1MTg0MDM4Q0Ew
MEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEluc3BlY3RvckFnZW50UmVnaXN0cnkuaDsgcGF0aCA9IGluc3BlY3Rvci9J
bnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1
OTQ1NThFMTgyNDVFREUwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGUuY3BwOyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU5NDU1OTAxODI0NzQ0NzAw
Q0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNTk0NTU5MTE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9i
YWxPYmplY3REZWJ1Z2dhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
R2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjcyMSw2ICsyNzQ3LDcgQEAKIAkJCQlBN0MyMjVDQzEzOTk4MUYxMDBGRjE2NjIgLyogS2V5d29y
ZExvb2t1cEdlbmVyYXRvci5weSAqLywKIAkJCQkxNDMyRUJENzBBMzRDQUQ0MDA3MTdCOUYgLyog
QVBJICovLAogCQkJCTk2ODhDQjEyMEVEMTJCNEUwMDFENjQ5RiAvKiBhc3NlbWJsZXIgKi8sCisJ
CQkJQTU0Q0YyRUExODRFQTczOTAwMjM3RjE5IC8qIGJpbmRpbmdzICovLAogCQkJCTk2OUEwNzhG
MEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLywKIAkJCQk3RTM5RDgxRDBFQzM4RUZBMDAz
QUYxMUEgLyogYnl0ZWNvbXBpbGVyICovLAogCQkJCTFDOTA1MTNFMEJBOUU4ODMwMDgxRTlEMCAv
KiBDb25maWd1cmF0aW9ucyAqLywKQEAgLTQxOTIsMTEgKzQyMTksMzEgQEAKIAkJCXBhdGggPSBi
eXRlY29kZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUE1NENGMkVBMTg0
RUE3MzkwMDIzN0YxOSAvKiBiaW5kaW5ncyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJQTU1RDkzQTMxODUwMTJBODAwNDAwREVEIC8qIFNjcmlwdEZ1bmN0
aW9uQ2FsbC5jcHAgKi8sCisJCQkJQTU1RDkzQTQxODUwMTJBODAwNDAwREVEIC8qIFNjcmlwdEZ1
bmN0aW9uQ2FsbC5oICovLAorCQkJCUE1NENGMkY3MTg0RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRP
YmplY3QuY3BwICovLAorCQkJCUE1NENGMkY4MTg0RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRPYmpl
Y3QuaCAqLywKKwkJCQlBNTRDRjJGMjE4NEVBQjI0MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuY3Bw
ICovLAorCQkJCUE1NENGMkYzMTg0RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5oICovLAor
CQkJKTsKKwkJCXBhdGggPSBiaW5kaW5nczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CiAJCUE1QkExNURGMTgyMzQwOTIwMEE4MkU2OSAvKiBpbnNwZWN0b3IgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUE1QkExNUUwMTgyMzQwOUQwMEE4
MkU2OSAvKiByZW1vdGUgKi8sCisJCQkJQTU5M0NGN0UxODQwMzYyQzAwQkZDRTI3IC8qIEluc3Bl
Y3RvckFnZW50QmFzZS5oICovLAorCQkJCUE1OTNDRjg0MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNw
ZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcCAqLywKKwkJCQlBNTkzQ0Y4NTE4NDAzOENBMDBCRkNFMjcg
LyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oICovLAorCQkJCUE1OTNDRjdBMTg0MDM2MDMwMEJG
Q0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgKi8sCisJCQkJQTU5M0NGN0Ix
ODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggKi8sCiAJCQkJ
QTU5NDU1OTQxODI0NzlFQjAwQ0MzODQzIC8qIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oICov
LAorCQkJCUE1OTNDRjgwMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwICov
LAorCQkJCUE1OTNDRjgxMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuaCAqLywK
IAkJCSk7CiAJCQluYW1lID0gaW5zcGVjdG9yOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTQzMzcsNiArNDM4NCw3IEBACiAJCQkJMEYyQjY2REYxN0I2QjVBQjAwQTdBRTNGIC8qIERh
dGFWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0QyMDM0QTBFMTcxMzVFMDAyQzdFODIgLyog
RGF0ZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTM1OUNGMzBGREQ4OUFEMDAy
MDYxODAgLyogRGF0ZUNvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUE1OTNDRjdGMTg0
MDM2MkMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMTE2NjAyMEUxOTk3QjQwMDgwNjZERCAvKiBEYXRlSW5zdGFuY2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0QTE1NjMyMTA5NjYzNjUwMDZGQTI2MCAvKiBEYXRlSW5zdGFuY2VDYWNoZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkNEMjAzNEMwRTE3MTM1RTAwMkM3RTgyIC8qIERhdGVQcm90b3R5
cGUuaCBpbiBIZWFkZXJzICovLApAQCAtNDM2OCw2ICs0NDE2LDcgQEAKIAkJCQkwRjgzNjRCNzE2
NEIwQzExMDA1MzMyOUEgLyogREZHQnJhbmNoRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBMUEwMDlDMDE4MzFBMjJEMDBDRjg3MTEgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODZFQzlEQzUxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0J5dGVDb2RlUGFy
c2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTkzQ0Y4NzE4NDAzOENBMDBCRkNFMjcgLyogSW5z
cGVjdG9yQWdlbnRSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNTZDMzYxNjI3QjBB
RDAwN0YyNzgzIC8qIERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjdCMjk0QjE0QzNDRDJGMDA3QzNEQjEgLyogREZHQ2FwYWJpbGl0
aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZGQzk1ODE0RUY5MEEyMDBDNzI1MzIgLyogREZH
Q0ZBUGhhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtNDQ1NCw2ICs0NTAzLDcgQEAKIAkJCQk4NkVD
OUREMzEzMjhERjgyMDAyQjJBRDcgLyogREZHU3BlY3VsYXRpdmVKSVQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE3RDg5RDAwMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdTU0FDb252ZXJzaW9uUGhhc2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGOUZCNEY1MTdGQ0I5MTcwMENCNjdGOCAvKiBERkdTdGFj
a0xheW91dFBoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTkzQ0Y4MzE4NDAzNzcxMDBCRkNF
MjcgLyogSW5zcGVjdG9yVmFsdWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYzOTQ3ODE1RENF
MzRCMDA2QTU5N0MgLyogREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZDMDk3QTIxNDZCMjhDQzAwQ0YyNDQyIC8qIERGR1RodW5rcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZEOEEzMjgxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR1RpZXJVcENoZWNrSW5qZWN0
aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtNDQ4OCw2ICs0NTM4LDcgQEAKIAkJCQkwRkIx
MDU4NjE2NzU0ODEyMDBGOEFCNkUgLyogRXhpdEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MEI4M0FCMTRCQ0Y1QkIwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBN0E4QUYzODE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggaW4g
SGVhZGVycyAqLywKKwkJCQlBNTRDRjJGNjE4NEVBQjI0MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjM5MTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDY0
QXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTQzMTdFQTlGNTkwMEFCQjIxNyAvKiBG
UFJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZDOTlENTE4NEVFMzE4MDA5QzEwQUIgLyog
QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKQEAgLTQ4MzMs
NiArNDg4NCw3IEBACiAJCQkJMEYwQ0Q0QzIxNUYxQTYwNzAwMzJGMUMwIC8qIFB1dERpcmVjdElu
ZGV4TW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5RkM4QzUxNEUxQjYwNDAwRDUyQUUwIC8q
IFB1dEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0N0I4NDYzMEU2REU2QjEwMDQ3NzVBNCAv
KiBQdXRQcm9wZXJ0eVNsb3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1OTNDRjdEMTg0MDM2MDMw
MEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZGNjBBQzIxNjc0MEY4MzAwMDI5Nzc5IC8qIFJlZHVjZVdoaXRlc3BhY2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMThDNDVBMEUxNkY1Q0QwMEIzNDQ2MCAvKiBSZWdFeHAuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUExNzEyQjNGMTFDN0IyMjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC00ODc0LDYgKzQ5MjYsNyBAQAogCQkJCTBGRDgyRTU0MTQxREFFRUUw
MDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdDMUVBRjIx
Nzk4N0FCNjAwMjk5REIyIC8qIFN0YWNrVmlzaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRE
RjA0REExNkIzOTk2RDAwMTZBNTEzIC8qIFN0YXRpY1Byb3BlcnR5QW5hbHlzaXMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUE1NENGMkZBMTg0RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTE0Q0E5NThCMTZBQjUwREUwMDkzOEEwNiAvKiBTdGF0aWNQcm9w
ZXJ0eUFuYWx5emVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzMwQjYxMjEyNTAwNjhGMDA5RDI1
QjEgLyogU3RyaWN0RXZhbEFjdGl2YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDY2
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBTdHJpbmdDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCkBA
IC00OTQ5LDYgKzUwMDIsNyBAQAogCQkJCTQ1MTUzOUI5MTJEQzk5NDUwMEVGN0FDNCAvKiBZYXJy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjY2NkVDRDE4MzZCMzdFMDBEMDE3RjEgLyogREZHUmVz
dXJyZWN0aW9uRm9yVmFsaWRhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI4
NTEyREJBMzM3MDBBOUZFN0IgLyogWWFyckludGVycHJldGVyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NjcwNEI4NzEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODY3MDRCODgxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVy
bi5oIGluIEhlYWRlcnMgKi8sCkBAIC01NDU0LDYgKzU1MDgsNyBAQAogCQkJCTBGRjQyNzY0MTU5
MUExQ0MwMDRDQjlGRiAvKiBERkdEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEZEODFBRDIxNTRGQjRFRTAwOTgzRTcyIC8qIERGR0RvbWluYXRvcnMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEZEM0M4MjYxNDExNUQ0MDAwRkQ4MUNCIC8qIERGR0RyaXZlci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlBNTkzQ0Y4MjE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjBGMTlFMTZCNzJBMEIwMDVERjk1QiAvKiBERkdF
ZGdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3NERFRjkzMTgyRDk5MTQwMDUyMkMyMiAvKiBN
YXBJdGVyYXRvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkJDMEFFNzE0OTZD
N0M0MDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01NTA5
LDYgKzU1NjQsNyBAQAogCQkJCTBGQkUwRjc2MTZDMURCMEYwMDgyQzVFOCAvKiBERkdVbmlmaWNh
dGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzRCMTQ5MTZENDIwMTAwMDFDREE1
QSAvKiBERkdVc2VLaW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0IzQTJCMTU0NzUwMDAw
MDNFRDBGRiAvKiBERkdWYWxpZGF0ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNTVEOTNBNTE4
NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGMkJEQzRGMTUyMjhCRjMwMENEODkxMCAvKiBERkdWYWx1ZVNvdXJjZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRkREQkZCNTE2NjZFRUQ4MDBDNTVGRUYgLyogREZHVmFyaWFibGVBY2Nl
c3NEYXRhRHVtcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCREM1MTE1MjI4RkZEMDBDRDg5
MTAgLyogREZHVmFyaWFibGVFdmVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU1MjksNiArNTU4
NSw3IEBACiAJCQkJMEY1NkExRDUxNTAwMUNGNDAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5NDU1OTIxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xv
YmFsT2JqZWN0RGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkIxMDU4NTE2NzU0
ODBGMDBGOEFCNkUgLyogRXhpdEtpbmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTU0Q0YyRjUx
ODRFQUIyNDAwMjM3RjE5IC8qIFNjcmlwdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
RUEwQTFDMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXAuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEZFQTBBMUUxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMDkxNzA1MTNEQjAwQkI3MjJDIC8q
IEZUTENhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU1NTgsNiArNTYxNSw3IEBA
CiAJCQkJMEY5RDMzOUExODAzQURCNzAwNzNDMkJDIC8qIEZUTFN0YWNrTWFwcy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRkVBMEExNjE3MDZCQjkwMDBCQjcyMkMgLyogRlRMU3RhdGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEYyMzVCRTExNzE3OEUxQzAwNjkwQzdGIC8qIEZUTFRodW5rcy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlBNTkzQ0Y3QzE4NDAzNjAzMDBCRkNFMjcgLyogSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMzVCRTMxNzE3
OEUxQzAwNjkwQzdGIC8qIEZUTFZhbHVlRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0
N0YzOUNCMTA3RUMzNzYwMDQyN0E0OCAvKiBGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRjBGMTlGMTZCNzJBMTcwMDVERjk1QiAvKiBGdW5jdGlvbkV4ZWN1dGFi
bGVEdW1wLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTcwOCw2ICs1NzY2LDcgQEAKIAkJCQk4NkVC
RjJGRjE1NjBGMDZBMDA4RTkyMjIgLyogTmFtZUNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTg2RUJGMzAxMTU2MEYwNkEwMDhFOTIyMiAvKiBOYW1lSW5zdGFuY2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJODZFQkYzMDMxNTYwRjA2QTAwOEU5MjIyIC8qIE5hbWVQcm90b3R5cGUu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTU0Q0YyRjkxODRFQUVEQTAwMjM3RjE5IC8qIFNjcmlw
dE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFMDEwN0VDN0U3MDA2NTA0NDYg
LyogTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURF
MTEwN0VDN0U3MDA2NTA0NDYgLyogTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMTQ4RjIxQjcxMDdFQzU0NzAwNDJFQzJDIC8qIE5vZGVzLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtNTgyNiw2ICs1ODg1LDcgQEAKIAkJCQk4NjcwNEI4NDEyREJBMzM3MDBBOUZFN0Ig
LyogWWFyckludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0Qjg2MTJEQkEz
MzcwMEE5RkU3QiAvKiBZYXJySklULmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0Qjg5MTJE
QkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNTkz
Q0Y4NjE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk4NjcwNEI0MjEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNr
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRGdW5jdGlvbkNhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Nj
cmlwdEZ1bmN0aW9uQ2FsbC5jcHAKc2ltaWxhcml0eSBpbmRleCA3OCUKcmVuYW1lIGZyb20gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcApyZW5hbWUgdG8g
U291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKaW5k
ZXggMmVhMmI0Yi4uZjI2NDdkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmlu
ZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcApAQCAtMSw0ICsxLDUgQEAKIC8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CkBAIC0zMSwxNyArMzIsMTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJTY3JpcHRGdW5jdGlvbkNhbGwuaCIKIAotI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0
ZS5oIgorI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCi0KLSNp
bmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3Bh
Y2UgRGVwcmVjYXRlZCB7CiAKLXZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5k
QXJndW1lbnQoY29uc3QgU2NyaXB0T2JqZWN0JiBhcmd1bWVudCkKK3ZvaWQgU2NyaXB0Q2FsbEFy
Z3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2Jq
ZWN0JiBhcmd1bWVudCkKIHsKICAgICBpZiAoYXJndW1lbnQuc2NyaXB0U3RhdGUoKSAhPSBtX2V4
ZWMpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01MCw3ICs0OSw3IEBAIHZv
aWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQoY29uc3QgU2NyaXB0
T2JqZWN0JiBhcmd1bWVudCkKICAgICBtX2FyZ3VtZW50cy5hcHBlbmQoYXJndW1lbnQuanNPYmpl
Y3QoKSk7CiB9CiAKLXZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1l
bnQoY29uc3QgU2NyaXB0VmFsdWUmIGFyZ3VtZW50KQordm9pZCBTY3JpcHRDYWxsQXJndW1lbnRI
YW5kbGVyOjphcHBlbmRBcmd1bWVudChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgYXJn
dW1lbnQpCiB7CiAgICAgbV9hcmd1bWVudHMuYXBwZW5kKGFyZ3VtZW50LmpzVmFsdWUoKSk7CiB9
CkBAIC01OCw3ICs1Nyw3IEBAIHZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5k
QXJndW1lbnQoY29uc3QgU2NyaXB0VmFsdWUmIGFyZ3VtZW50KQogdm9pZCBTY3JpcHRDYWxsQXJn
dW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1bWVudChjb25zdCBTdHJpbmcmIGFyZ3VtZW50KQogewog
ICAgIEpTTG9ja0hvbGRlciBsb2NrKG1fZXhlYyk7Ci0gICAgbV9hcmd1bWVudHMuYXBwZW5kKGpz
U3RyaW5nV2l0aENhY2hlKG1fZXhlYywgYXJndW1lbnQpKTsKKyAgICBtX2FyZ3VtZW50cy5hcHBl
bmQoanNTdHJpbmcobV9leGVjLCBhcmd1bWVudCkpOwogfQogCiB2b2lkIFNjcmlwdENhbGxBcmd1
bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KGNvbnN0IGNoYXIqIGFyZ3VtZW50KQpAQCAtNjcs
NyArNjYsNyBAQCB2b2lkIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50
KGNvbnN0IGNoYXIqIGFyZ3VtZW50KQogICAgIG1fYXJndW1lbnRzLmFwcGVuZChqc1N0cmluZyht
X2V4ZWMsIFN0cmluZyhhcmd1bWVudCkpKTsKIH0KIAotdm9pZCBTY3JpcHRDYWxsQXJndW1lbnRI
YW5kbGVyOjphcHBlbmRBcmd1bWVudChKU0M6OkpTVmFsdWUgYXJndW1lbnQpCit2b2lkIFNjcmlw
dENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KEpTVmFsdWUgYXJndW1lbnQpCiB7
CiAgICAgbV9hcmd1bWVudHMuYXBwZW5kKGFyZ3VtZW50KTsKIH0KQEAgLTEwNywxNCArMTA2LDE1
IEBAIHZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQoYm9vbCBh
cmd1bWVudCkKICAgICBtX2FyZ3VtZW50cy5hcHBlbmQoanNCb29sZWFuKGFyZ3VtZW50KSk7CiB9
CiAKLVNjcmlwdEZ1bmN0aW9uQ2FsbDo6U2NyaXB0RnVuY3Rpb25DYWxsKGNvbnN0IFNjcmlwdE9i
amVjdCYgdGhpc09iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKQorU2NyaXB0RnVuY3Rpb25DYWxs
OjpTY3JpcHRGdW5jdGlvbkNhbGwoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiB0aGlz
T2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIFNjcmlwdEZ1bmN0aW9uQ2FsbEhhbmRsZXIgY2Fs
bEhhbmRsZXIpCiAgICAgOiBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyKHRoaXNPYmplY3Quc2Ny
aXB0U3RhdGUoKSkKKyAgICAsIG1fY2FsbEhhbmRsZXIoY2FsbEhhbmRsZXIpCiAgICAgLCBtX3Ro
aXNPYmplY3QodGhpc09iamVjdCkKICAgICAsIG1fbmFtZShuYW1lKQogewogfQogCi1TY3JpcHRW
YWx1ZSBTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwoYm9vbCYgaGFkRXhjZXB0aW9uKQorRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUgU2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKGJvb2wmIGhhZEV4Y2Vw
dGlvbikKIHsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IG1fdGhpc09iamVjdC5qc09iamVj
dCgpOwogCkBAIC0xMjMsMzIgKzEyMywzMiBAQCBTY3JpcHRWYWx1ZSBTY3JpcHRGdW5jdGlvbkNh
bGw6OmNhbGwoYm9vbCYgaGFkRXhjZXB0aW9uKQogICAgIEpTVmFsdWUgZnVuY3Rpb24gPSB0aGlz
T2JqZWN0LT5nZXQobV9leGVjLCBJZGVudGlmaWVyKG1fZXhlYywgbV9uYW1lKSk7CiAgICAgaWYg
KG1fZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAgaGFkRXhjZXB0aW9uID0gdHJ1ZTsK
LSAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7CisgICAgICAgIHJldHVybiBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSgpOwogICAgIH0KIAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENh
bGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBp
ZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQotICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUo
KTsKKyAgICAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCk7CiAKICAgICBKU1Zh
bHVlIHJlc3VsdDsKLSAgICBpZiAoaXNNYWluVGhyZWFkKCkpCi0gICAgICAgIHJlc3VsdCA9IEpT
TWFpblRocmVhZEV4ZWNTdGF0ZTo6Y2FsbChtX2V4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIHRoaXNPYmplY3QsIG1fYXJndW1lbnRzKTsKKyAgICBpZiAobV9jYWxsSGFuZGxlcikK
KyAgICAgICAgcmVzdWx0ID0gbV9jYWxsSGFuZGxlcihtX2V4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlw
ZSwgY2FsbERhdGEsIHRoaXNPYmplY3QsIG1fYXJndW1lbnRzKTsKICAgICBlbHNlCiAgICAgICAg
IHJlc3VsdCA9IEpTQzo6Y2FsbChtX2V4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEs
IHRoaXNPYmplY3QsIG1fYXJndW1lbnRzKTsKIAogICAgIGlmIChtX2V4ZWMtPmhhZEV4Y2VwdGlv
bigpKSB7CiAgICAgICAgIGhhZEV4Y2VwdGlvbiA9IHRydWU7Ci0gICAgICAgIHJldHVybiBTY3Jp
cHRWYWx1ZSgpOworICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKTsKICAg
ICB9CiAKLSAgICByZXR1cm4gU2NyaXB0VmFsdWUobV9leGVjLT52bSgpLCByZXN1bHQpOworICAg
IHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShtX2V4ZWMtPnZtKCksIHJlc3VsdCk7CiB9
CiAKLVNjcmlwdFZhbHVlIFNjcmlwdEZ1bmN0aW9uQ2FsbDo6Y2FsbCgpCitEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSBTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwoKQogewogICAgIGJvb2wgaGFkRXhj
ZXB0aW9uID0gZmFsc2U7CiAgICAgcmV0dXJuIGNhbGwoaGFkRXhjZXB0aW9uKTsKIH0KIAotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgRGVwcmVjYXRlZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmgKc2ltaWxhcml0
eSBpbmRleCA1MCUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
RnVuY3Rpb25DYWxsLmgKcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9T
Y3JpcHRGdW5jdGlvbkNhbGwuaAppbmRleCA1NmZhNDdjLi4wNGIyYWZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmgKQEAgLTEsNCAr
MSw1IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzEsNTcgKzMyLDU2IEBACiAjaWZuZGVmIFNj
cmlwdEZ1bmN0aW9uQ2FsbF9oCiAjZGVmaW5lIFNjcmlwdEZ1bmN0aW9uQ2FsbF9oCiAKKyNpbmNs
dWRlICJBcmdMaXN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCi0jaW5jbHVkZSAiU2Ny
aXB0U3RhdGUuaCIKLQotI2luY2x1ZGUgPHJ1bnRpbWUvQXJnTGlzdC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLSAgICBjbGFzcyBKU1ZhbHVl
OworY2xhc3MgSlNWYWx1ZTsKIH0KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIFNj
cmlwdFZhbHVlOworbmFtZXNwYWNlIERlcHJlY2F0ZWQgewogCi0gICAgY2xhc3MgU2NyaXB0Q2Fs
bEFyZ3VtZW50SGFuZGxlciB7Ci0gICAgcHVibGljOgotICAgICAgICBTY3JpcHRDYWxsQXJndW1l
bnRIYW5kbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkgOiBtX2V4ZWMoc3RhdGUpIHsgfQorY2xh
c3MgSlNfRVhQT1JUX1BSSVZBVEUgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlciB7CitwdWJsaWM6
CisgICAgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpIDog
bV9leGVjKHN0YXRlKSB7IH0KIAotICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGNvbnN0IFNj
cmlwdE9iamVjdCYpOwotICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGNvbnN0IFNjcmlwdFZh
bHVlJik7Ci0gICAgICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoY29uc3QgY2hhciopOwotICAgICAg
ICB2b2lkIGFwcGVuZEFyZ3VtZW50KGNvbnN0IFN0cmluZyYpOwotICAgICAgICB2b2lkIGFwcGVu
ZEFyZ3VtZW50KEpTQzo6SlNWYWx1ZSk7Ci0gICAgICAgIHZvaWQgYXBwZW5kQXJndW1lbnQobG9u
Zyk7Ci0gICAgICAgIHZvaWQgYXBwZW5kQXJndW1lbnQobG9uZyBsb25nKTsKLSAgICAgICAgdm9p
ZCBhcHBlbmRBcmd1bWVudCh1bnNpZ25lZCBpbnQpOwotICAgICAgICB2b2lkIGFwcGVuZEFyZ3Vt
ZW50KHVuc2lnbmVkIGxvbmcpOwotICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGludCk7Ci0g
ICAgICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoYm9vbCk7CisgICAgdm9pZCBhcHBlbmRBcmd1bWVu
dChjb25zdCBTY3JpcHRPYmplY3QmKTsKKyAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGNvbnN0IFNj
cmlwdFZhbHVlJik7CisgICAgdm9pZCBhcHBlbmRBcmd1bWVudChjb25zdCBjaGFyKik7CisgICAg
dm9pZCBhcHBlbmRBcmd1bWVudChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGFwcGVuZEFyZ3Vt
ZW50KEpTQzo6SlNWYWx1ZSk7CisgICAgdm9pZCBhcHBlbmRBcmd1bWVudChsb25nKTsKKyAgICB2
b2lkIGFwcGVuZEFyZ3VtZW50KGxvbmcgbG9uZyk7CisgICAgdm9pZCBhcHBlbmRBcmd1bWVudCh1
bnNpZ25lZCBpbnQpOworICAgIHZvaWQgYXBwZW5kQXJndW1lbnQodW5zaWduZWQgbG9uZyk7Cisg
ICAgdm9pZCBhcHBlbmRBcmd1bWVudChpbnQpOworICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoYm9v
bCk7CiAKLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIg
bV9hcmd1bWVudHM7Ci0gICAgICAgIEpTQzo6RXhlY1N0YXRlKiBtX2V4ZWM7Citwcm90ZWN0ZWQ6
CisgICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBtX2FyZ3VtZW50czsKKyAgICBKU0M6OkV4
ZWNTdGF0ZSogbV9leGVjOwogCi0gICAgcHJpdmF0ZToKLSAgICAgICAgLy8gTWFya2VkQXJndW1l
bnRCdWZmZXIgbXVzdCBiZSBzdGFjayBhbGxvY2F0ZWQsIHNvIHByZXZlbnQgaGVhcAotICAgICAg
ICAvLyBhbGxvYyBvZiBTY3JpcHRGdW5jdGlvbkNhbGwgYXMgd2VsbC4KLSAgICAgICAgdm9pZCog
b3BlcmF0b3IgbmV3KHNpemVfdCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KDB4YmFkYmVlZik7IH0KLSAgICAgICAgdm9pZCogb3BlcmF0b3Ig
bmV3W10oc2l6ZV90KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oMHhiYWRiZWVmKTsgfQotICAgIH07Citwcml2YXRlOgorICAgIC8vIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIG11c3QgYmUgc3RhY2sgYWxsb2NhdGVkLCBzbyBwcmV2ZW50IGhlYXAK
KyAgICAvLyBhbGxvYyBvZiBTY3JpcHRGdW5jdGlvbkNhbGwgYXMgd2VsbC4KKyAgICB2b2lkKiBv
cGVyYXRvciBuZXcoc2l6ZV90KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oMHhiYWRiZWVmKTsgfQorICAgIHZvaWQqIG9wZXJhdG9yIG5ld1td
KHNpemVfdCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KDB4YmFkYmVlZik7IH0KK307CiAKLSAgICBjbGFzcyBTY3JpcHRGdW5jdGlvbkNhbGwg
OiBwdWJsaWMgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlciB7Ci0gICAgcHVibGljOgotICAgICAg
ICBTY3JpcHRGdW5jdGlvbkNhbGwoY29uc3QgU2NyaXB0T2JqZWN0JiB0aGlzT2JqZWN0LCBjb25z
dCBTdHJpbmcmIG5hbWUpOwotICAgICAgICBTY3JpcHRWYWx1ZSBjYWxsKGJvb2wmIGhhZEV4Y2Vw
dGlvbik7Ci0gICAgICAgIFNjcmlwdFZhbHVlIGNhbGwoKTsKK2NsYXNzIEpTX0VYUE9SVF9QUklW
QVRFIFNjcmlwdEZ1bmN0aW9uQ2FsbCA6IHB1YmxpYyBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVy
IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTQzo6SlNWYWx1ZSAoKlNjcmlwdEZ1bmN0aW9uQ2Fs
bEhhbmRsZXIpKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb25PYmpl
Y3QsIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0IEpTQzo6Q2FsbERhdGEmIGNhbGxEYXRh
LCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MpOworICAg
IFNjcmlwdEZ1bmN0aW9uQ2FsbChjb25zdCBTY3JpcHRPYmplY3QmIHRoaXNPYmplY3QsIGNvbnN0
IFN0cmluZyYgbmFtZSwgU2NyaXB0RnVuY3Rpb25DYWxsSGFuZGxlciBoYW5kbGVyID0gbnVsbHB0
cik7CisgICAgU2NyaXB0VmFsdWUgY2FsbChib29sJiBoYWRFeGNlcHRpb24pOworICAgIFNjcmlw
dFZhbHVlIGNhbGwoKTsKIAotICAgIHByb3RlY3RlZDoKLSAgICAgICAgU2NyaXB0T2JqZWN0IG1f
dGhpc09iamVjdDsKLSAgICAgICAgU3RyaW5nIG1fbmFtZTsKLSAgICB9OworcHJvdGVjdGVkOgor
ICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbEhhbmRsZXIgbV9jYWxsSGFuZGxlcjsKKyAgICBTY3JpcHRP
YmplY3QgbV90aGlzT2JqZWN0OworICAgIFN0cmluZyBtX25hbWU7Cit9OwogCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBEZXByZWNhdGVkCiAKICNlbmRpZiAvLyBTY3Jp
cHRGdW5jdGlvbkNhbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3Jr
ZXJDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Njcmlw
dE9iamVjdC5jcHAKc2ltaWxhcml0eSBpbmRleCA3MSUKY29weSBmcm9tIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQuY3BwCmNvcHkgdG8gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5jcHAKaW5kZXggMTViYjdhOC4uY2NmN2FmMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckNvbnNvbGVBZ2VudC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5jcHAK
QEAgLTEsNSArMSw2IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0y
OSwzMiArMzAsMjIgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2Ny
aXB0T2JqZWN0LmgiCiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQordXNpbmcgbmFtZXNwYWNlIEpT
QzsKIAotI2luY2x1ZGUgIldvcmtlckNvbnNvbGVBZ2VudC5oIgorbmFtZXNwYWNlIERlcHJlY2F0
ZWQgewogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVdvcmtlckNvbnNvbGVBZ2VudDo6V29ya2Vy
Q29uc29sZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIElu
amVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgIDogSW5zcGVj
dG9yQ29uc29sZUFnZW50KGluc3RydW1lbnRpbmdBZ2VudHMsIGluamVjdGVkU2NyaXB0TWFuYWdl
cikKLXsKLX0KLQotV29ya2VyQ29uc29sZUFnZW50Ojp+V29ya2VyQ29uc29sZUFnZW50KCkKK1Nj
cmlwdE9iamVjdDo6U2NyaXB0T2JqZWN0KEV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIEpTT2JqZWN0
KiBvYmplY3QpCisgICAgOiBTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZS0+dm0oKSwgb2JqZWN0KQor
ICAgICwgbV9zY3JpcHRTdGF0ZShzY3JpcHRTdGF0ZSkKIHsKIH0KIAotdm9pZCBXb3JrZXJDb25z
b2xlQWdlbnQ6OmFkZEluc3BlY3RlZE5vZGUoRXJyb3JTdHJpbmcqIGVycm9yLCBpbnQpCitTY3Jp
cHRPYmplY3Q6OlNjcmlwdE9iamVjdChFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3Jp
cHRWYWx1ZSYgc2NyaXB0VmFsdWUpCisgICAgOiBTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZS0+dm0o
KSwgc2NyaXB0VmFsdWUuanNWYWx1ZSgpKQorICAgICwgbV9zY3JpcHRTdGF0ZShzY3JpcHRTdGF0
ZSkKIHsKLSAgICAqZXJyb3IgPSAiYWRkSW5zcGVjdGVkTm9kZSBpcyBub3Qgc3VwcG9ydGVkIGZv
ciB3b3JrZXJzIjsKIH0KIAotYm9vbCBXb3JrZXJDb25zb2xlQWdlbnQ6OmRldmVsb3BlckV4dHJh
c0VuYWJsZWQoKQotewotICAgIHJldHVybiB0cnVlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQorfSAvLyBuYW1lc3BhY2UgRGVwcmVj
YXRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhc2VB
Z2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5oCnNp
bWlsYXJpdHkgaW5kZXggNjQlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JCYXNlQWdlbnQuaApyZW5hbWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRp
bmdzL1NjcmlwdE9iamVjdC5oCmluZGV4IDhiOTA5MzguLjhmN2IwZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYXNlQWdlbnQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0T2JqZWN0LmgKQEAgLTEsNSArMSw2IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yOCwzNiArMjksMjcgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBJbnNwZWN0b3JCYXNlQWdlbnRfaAotI2RlZmlu
ZSBJbnNwZWN0b3JCYXNlQWdlbnRfaAorI2lmbmRlZiBTY3JpcHRPYmplY3RfaAorI2RlZmluZSBT
Y3JpcHRPYmplY3RfaAogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgi
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSAiSlNPYmplY3QuaCIK
KyNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3Bh
Y2UgRGVwcmVjYXRlZCB7CiAKLWNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKLWNsYXNz
IEluc3RydW1lbnRpbmdBZ2VudHM7Ci0KLWNsYXNzIEluc3BlY3RvckJhc2VBZ2VudCB7CitjbGFz
cyBTY3JpcHRPYmplY3QgOiBwdWJsaWMgU2NyaXB0VmFsdWUgewogcHVibGljOgotICAgIHZpcnR1
YWwgfkluc3BlY3RvckJhc2VBZ2VudCgpIHsgfQorICAgIEpTX0VYUE9SVF9QUklWQVRFIFNjcmlw
dE9iamVjdChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBTY3JpcHRPYmplY3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTY3JpcHRWYWx1ZSYp
OworICAgIFNjcmlwdE9iamVjdCgpIDogbV9zY3JpcHRTdGF0ZShudWxscHRyKSB7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBkaXNjYXJkQWdlbnQoKSB7IH0KKyAgICBKU0M6OkpTT2JqZWN0KiBqc09iamVjdCgpIGNv
bnN0IHsgcmV0dXJuIGFzT2JqZWN0KGpzVmFsdWUoKSk7IH0KKyAgICBKU0M6OkV4ZWNTdGF0ZSog
c2NyaXB0U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdFN0YXRlOyB9CiAKIHByb3RlY3Rl
ZDoKLSAgICBJbnNwZWN0b3JCYXNlQWdlbnQoY29uc3QgU3RyaW5nJiBuYW1lLCBJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQotICAgICAgICA6IG1faW5zdHJ1bWVudGlu
Z0FnZW50cyhpbnN0cnVtZW50aW5nQWdlbnRzKQotICAgICAgICAsIG1fbmFtZShuYW1lKQotICAg
IHsKLSAgICB9Ci0KLSAgICBJbnN0cnVtZW50aW5nQWdlbnRzKiBtX2luc3RydW1lbnRpbmdBZ2Vu
dHM7Ci0gICAgU3RyaW5nIG1fbmFtZTsKKyAgICBKU0M6OkV4ZWNTdGF0ZSogbV9zY3JpcHRTdGF0
ZTsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIERlcHJlY2F0
ZWQKIAotI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckJhc2VBZ2VudF9oKQorI2VuZGlmIC8v
IFNjcmlwdE9iamVjdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFs
dWUuY3BwCnNpbWlsYXJpdHkgaW5kZXggNzIlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcApyZW5hbWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAppbmRleCA2ZDlmYjFkLi41YzYwYjFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoYykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNywx
MyArNywxMyBAQAogICogYXJlIG1ldDoKICAqCiAgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KICAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAogICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLiAKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKICAqICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgogICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKICAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKQEAgLTMwLDIxICszMCwyMCBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAKKyNpbmNsdWRlICJBUElDYXN0
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5n
LmgiCi0jaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCi0KLSNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9BUElDYXN0Lmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZVJl
Zi5oPgotCi0jaW5jbHVkZSA8aGVhcC9TdHJvbmcuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTTG9j
ay5oPgorI2luY2x1ZGUgIkpTTG9jay5oIgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwordXNpbmcg
bmFtZXNwYWNlIEluc3BlY3RvcjsKIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIERl
cHJlY2F0ZWQgewogCi1ib29sIFNjcmlwdFZhbHVlOjpnZXRTdHJpbmcoSlNDOjpFeGVjU3RhdGUq
IHNjcmlwdFN0YXRlLCBTdHJpbmcmIHJlc3VsdCkgY29uc3QKK1NjcmlwdFZhbHVlOjp+U2NyaXB0
VmFsdWUoKQoreworfQorCitib29sIFNjcmlwdFZhbHVlOjpnZXRTdHJpbmcoRXhlY1N0YXRlKiBz
Y3JpcHRTdGF0ZSwgU3RyaW5nJiByZXN1bHQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3ZhbHVlKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01NCw3ICs1Myw3IEBAIGJvb2wgU2NyaXB0VmFsdWU6
OmdldFN0cmluZyhKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIFN0cmluZyYgcmVzdWx0KSBj
b25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1TdHJpbmcgU2NyaXB0VmFsdWU6OnRvU3RyaW5n
KEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSkgY29uc3QKK1N0cmluZyBTY3JpcHRWYWx1ZTo6
dG9TdHJpbmcoRXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSkgY29uc3QKIHsKICAgICBTdHJpbmcgcmVz
dWx0ID0gbV92YWx1ZS5nZXQoKS50b1N0cmluZyhzY3JpcHRTdGF0ZSktPnZhbHVlKHNjcmlwdFN0
YXRlKTsKICAgICAvLyBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgYW4gZXhjZXB0aW9uIGlzIHRocm93
biBhcyBwYXJ0IG9mIGludm9raW5nIHRvU3RyaW5nIG9uIHRoZSBvYmplY3QuCkBAIC02MywxMiAr
NjIsMTEgQEAgU3RyaW5nIFNjcmlwdFZhbHVlOjp0b1N0cmluZyhKU0M6OkV4ZWNTdGF0ZSogc2Ny
aXB0U3RhdGUpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBTY3JpcHRWYWx1
ZTo6aXNFcXVhbChKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IFNjcmlwdFZhbHVl
JiBhbm90aGVyVmFsdWUpIGNvbnN0Citib29sIFNjcmlwdFZhbHVlOjppc0VxdWFsKEV4ZWNTdGF0
ZSogc2NyaXB0U3RhdGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBhbm90aGVyVmFsdWUpIGNvbnN0CiB7
CiAgICAgaWYgKGhhc05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIGFub3RoZXJWYWx1ZS5oYXNO
b1ZhbHVlKCk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZUlzRXF1YWwodG9SZWYoc2NyaXB0U3RhdGUp
LCB0b1JlZihzY3JpcHRTdGF0ZSwganNWYWx1ZSgpKSwgdG9SZWYoc2NyaXB0U3RhdGUsIGFub3Ro
ZXJWYWx1ZS5qc1ZhbHVlKCkpLCAwKTsKKyAgICByZXR1cm4gSlNWYWx1ZUlzRXF1YWwodG9SZWYo
c2NyaXB0U3RhdGUpLCB0b1JlZihzY3JpcHRTdGF0ZSwganNWYWx1ZSgpKSwgdG9SZWYoc2NyaXB0
U3RhdGUsIGFub3RoZXJWYWx1ZS5qc1ZhbHVlKCkpLCBudWxscHRyKTsKIH0KIAogYm9vbCBTY3Jp
cHRWYWx1ZTo6aXNOdWxsKCkgY29uc3QKQEAgLTk4LDMzICs5NiwxNyBAQCBib29sIFNjcmlwdFZh
bHVlOjppc0Z1bmN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gZ2V0Q2FsbERhdGEobV92YWx1ZS5n
ZXQoKSwgY2FsbERhdGEpICE9IENhbGxUeXBlTm9uZTsKIH0KIAotUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IFNjcmlwdFZhbHVlOjpzZXJpYWxpemUoSlNDOjpFeGVjU3RhdGUqIHNj
cmlwdFN0YXRlLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucykKLXsKLSAg
ICByZXR1cm4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoc2NyaXB0U3RhdGUsIGpzVmFs
dWUoKSwgMCwgMCwgdGhyb3dFeGNlcHRpb25zKTsKLX0KLQotUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IFNjcmlwdFZhbHVlOjpzZXJpYWxpemUoSlNDOjpFeGVjU3RhdGUqIHNjcmlw
dFN0YXRlLCBNZXNzYWdlUG9ydEFycmF5KiBtZXNzYWdlUG9ydHMsIEFycmF5QnVmZmVyQXJyYXkq
IGFycmF5QnVmZmVycywgYm9vbCYgZGlkVGhyb3cpCi17Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGUoc2NyaXB0U3RhdGUsIGpzVmFsdWUoKSwgbWVzc2FnZVBvcnRzLCBhcnJheUJ1ZmZlcnMpOwot
ICAgIGRpZFRocm93ID0gc2NyaXB0U3RhdGUtPmhhZEV4Y2VwdGlvbigpOwotICAgIHJldHVybiBz
ZXJpYWxpemVkVmFsdWUucmVsZWFzZSgpOwotfQotCi1TY3JpcHRWYWx1ZSBTY3JpcHRWYWx1ZTo6
ZGVzZXJpYWxpemUoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBTZXJpYWxpemVkU2NyaXB0
VmFsdWUqIHZhbHVlLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucykKLXsK
LSAgICByZXR1cm4gU2NyaXB0VmFsdWUoc2NyaXB0U3RhdGUtPnZtKCksIHZhbHVlLT5kZXNlcmlh
bGl6ZShzY3JpcHRTdGF0ZSwgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgMCwg
dGhyb3dFeGNlcHRpb25zKSk7Ci19Ci0KICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotc3RhdGljIFBh
c3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGpzVG9JbnNwZWN0b3JWYWx1ZShKU0M6OkV4ZWNTdGF0
ZSogc2NyaXB0U3RhdGUsIEpTVmFsdWUgdmFsdWUsIGludCBtYXhEZXB0aCkKK3N0YXRpYyBQYXNz
UmVmUHRyPEluc3BlY3RvclZhbHVlPiBqc1RvSW5zcGVjdG9yVmFsdWUoRXhlY1N0YXRlKiBzY3Jp
cHRTdGF0ZSwgSlNWYWx1ZSB2YWx1ZSwgaW50IG1heERlcHRoKQogewogICAgIGlmICghdmFsdWUp
IHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAoIW1heERlcHRoKQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICBtYXhEZXB0aC0tOwog
CiAgICAgaWYgKHZhbHVlLmlzTnVsbCgpIHx8IHZhbHVlLmlzVW5kZWZpbmVkKCkpCkBAIC0xMzcs
NiArMTE5LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGpzVG9JbnNwZWN0
b3JWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUKICAgICAgICAgU3RyaW5nIHMgPSB2
YWx1ZS5nZXRTdHJpbmcoc2NyaXB0U3RhdGUpOwogICAgICAgICByZXR1cm4gSW5zcGVjdG9yU3Ry
aW5nOjpjcmVhdGUoU3RyaW5nKHMuY2hhcmFjdGVycygpLCBzLmxlbmd0aCgpKSk7CiAgICAgfQor
CiAgICAgaWYgKHZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgaWYgKGlzSlNBcnJheSh2YWx1
ZSkpIHsKICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gaW5zcGVjdG9yQXJyYXkg
PSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CkBAIC0xNDYsNyArMTI5LDcgQEAgc3RhdGljIFBh
c3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGpzVG9JbnNwZWN0b3JWYWx1ZShKU0M6OkV4ZWNTdGF0
ZSogc2NyaXB0U3RhdGUKICAgICAgICAgICAgICAgICBKU1ZhbHVlIGVsZW1lbnQgPSBhcnJheS0+
Z2V0SW5kZXgoc2NyaXB0U3RhdGUsIGkpOwogICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0
b3JWYWx1ZT4gZWxlbWVudFZhbHVlID0ganNUb0luc3BlY3RvclZhbHVlKHNjcmlwdFN0YXRlLCBl
bGVtZW50LCBtYXhEZXB0aCk7CiAgICAgICAgICAgICAgICAgaWYgKCFlbGVtZW50VmFsdWUpCi0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgICAgICAgICBpbnNwZWN0b3JBcnJheS0+cHVzaFZhbHVlKGVsZW1l
bnRWYWx1ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gaW5zcGVjdG9yQXJy
YXk7CkBAIC0xNjAsMjAgKzE0MywyMSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1
ZT4ganNUb0luc3BlY3RvclZhbHVlKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZQogICAgICAg
ICAgICAgSlNWYWx1ZSBwcm9wZXJ0eVZhbHVlID0gb2JqZWN0LT5nZXQoc2NyaXB0U3RhdGUsIG5h
bWUpOwogICAgICAgICAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBpbnNwZWN0b3JWYWx1ZSA9
IGpzVG9JbnNwZWN0b3JWYWx1ZShzY3JpcHRTdGF0ZSwgcHJvcGVydHlWYWx1ZSwgbWF4RGVwdGgp
OwogICAgICAgICAgICAgaWYgKCFpbnNwZWN0b3JWYWx1ZSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIGluc3Bl
Y3Rvck9iamVjdC0+c2V0VmFsdWUoU3RyaW5nKG5hbWUuY2hhcmFjdGVycygpLCBuYW1lLmxlbmd0
aCgpKSwgaW5zcGVjdG9yVmFsdWUpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBpbnNwZWN0
b3JPYmplY3Q7CiAgICAgfQorCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJu
IDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+
IFNjcmlwdFZhbHVlOjp0b0luc3BlY3RvclZhbHVlKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0
ZSkgY29uc3QKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IFNjcmlwdFZhbHVlOjp0b0luc3Bl
Y3RvclZhbHVlKEV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUpIGNvbnN0CiB7Ci0gICAgSlNDOjpKU0xv
Y2tIb2xkZXIgaG9sZGVyKHNjcmlwdFN0YXRlKTsKKyAgICBKU0xvY2tIb2xkZXIgaG9sZGVyKHNj
cmlwdFN0YXRlKTsKICAgICByZXR1cm4ganNUb0luc3BlY3RvclZhbHVlKHNjcmlwdFN0YXRlLCBt
X3ZhbHVlLmdldCgpLCBJbnNwZWN0b3JWYWx1ZTo6bWF4RGVwdGgpOwogfQogI2VuZGlmIC8vIEVO
QUJMRShJTlNQRUNUT1IpCiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNl
IERlcHJlY2F0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dFZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuaApz
aW1pbGFyaXR5IGluZGV4IDc2JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRWYWx1ZS5oCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mv
U2NyaXB0VmFsdWUuaAppbmRleCAwMTIxMGY1Li5kNWZhZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5oCkBAIC0xLDEwICsxLDExIEBACiAvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoYykgMjAwOCwgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
CisgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCiAgKiBtZXQ6Ci0gKiAKKyAqCiAg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAogICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgogICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpAQCAtMTQsNyArMTUsNyBAQAogICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwog
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KICAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKKyAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiAgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAog
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCkBAIC0zMSwyNSArMzIsMjQgQEAKICNpZm5kZWYgU2NyaXB0VmFsdWVf
aAogI2RlZmluZSBTY3JpcHRWYWx1ZV9oCiAKLSNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgotI2luY2x1ZGUgPGhlYXAvU3Ryb25nLmg+
Ci0jaW5jbHVkZSA8aGVhcC9TdHJvbmdJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU0NK
U1ZhbHVlLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9PcGVyYXRpb25zLmg+CisjaW5jbHVkZSAiSlND
SlNWYWx1ZS5oIgorI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJTdHJvbmcuaCIK
KyNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewot
CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIGNsYXNzIEluc3BlY3RvclZhbHVlOwotY2xhc3MgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOworfQogCi1jbGFzcyBTY3JpcHRWYWx1ZSB7CituYW1lc3BhY2Ug
RGVwcmVjYXRlZCB7CisKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFNjcmlwdFZhbHVlIHsKIHB1
YmxpYzoKICAgICBTY3JpcHRWYWx1ZSgpIHsgfQotICAgIFNjcmlwdFZhbHVlKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTVmFsdWUgdmFsdWUpIDogbV92YWx1ZSh2bSwgdmFsdWUpIHt9Ci0gICAgdmlydHVh
bCB+U2NyaXB0VmFsdWUoKSB7fQorICAgIFNjcmlwdFZhbHVlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
VmFsdWUgdmFsdWUpIDogbV92YWx1ZSh2bSwgdmFsdWUpIHsgfQorICAgIHZpcnR1YWwgflNjcmlw
dFZhbHVlKCk7CiAKICAgICBKU0M6OkpTVmFsdWUganNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dmFsdWUuZ2V0KCk7IH0KICAgICBib29sIGdldFN0cmluZyhKU0M6OkV4ZWNTdGF0ZSosIFN0cmlu
ZyYgcmVzdWx0KSBjb25zdDsKQEAgLTY1LDE4ICs2NSwxNCBAQCBwdWJsaWM6CiAKICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0VmFsdWUmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlID09IG90aGVyLm1fdmFsdWU7IH0KIAotICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBzZXJpYWxpemUoSlNDOjpFeGVjU3RhdGUqLCBTZXJpYWxpemF0aW9uRXJyb3JNb2Rl
ID0gVGhyb3dpbmcpOwotICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJp
YWxpemUoSlNDOjpFeGVjU3RhdGUqLCBNZXNzYWdlUG9ydEFycmF5KiwgQXJyYXlCdWZmZXJBcnJh
eSosIGJvb2wmKTsKLSAgICBzdGF0aWMgU2NyaXB0VmFsdWUgZGVzZXJpYWxpemUoSlNDOjpFeGVj
U3RhdGUqLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0g
VGhyb3dpbmcpOwotCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBQYXNzUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiB0b0luc3BlY3RvclZhbHVlKEpTQzo6RXhlY1N0YXRlKikgY29uc3Q7CisgICAg
UGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiB0b0luc3BlY3RvclZhbHVlKEpT
Qzo6RXhlY1N0YXRlKikgY29uc3Q7CiAjZW5kaWYKIAogcHJpdmF0ZToKICAgICBKU0M6OlN0cm9u
ZzxKU0M6OlVua25vd24+IG1fdmFsdWU7CiB9OwogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9
IC8vIG5hbWVzcGFjZSBEZXByZWNhdGVkCiAKICNlbmRpZiAvLyBTY3JpcHRWYWx1ZV9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaApz
aW1pbGFyaXR5IGluZGV4IDY4JQpjb3B5IGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckFnZW50UmVnaXN0cnkuaApjb3B5IHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmgKaW5kZXggNGZkMDM1My4uMjBhZDcxZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNCwyOSArMjQsMzMgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5X2gKLSNk
ZWZpbmUgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeV9oCisjaWZuZGVmIEluc3BlY3RvckFnZW50QmFz
ZV9oCisjZGVmaW5lIEluc3BlY3RvckFnZW50QmFzZV9oCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JC
YXNlQWdlbnQuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdl
YkNvcmUgeworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIGNsYXNzIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyOworY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogCi1jbGFzcyBJbnNw
ZWN0b3JBZ2VudFJlZ2lzdHJ5IHsKK2NsYXNzIEluc3BlY3RvckFnZW50QmFzZSB7CiBwdWJsaWM6
Ci0gICAgdm9pZCBhcHBlbmQoUGFzc093blB0cjxJbnNwZWN0b3JCYXNlQWdlbnQ+KTsKKyAgICB2
aXJ0dWFsIH5JbnNwZWN0b3JBZ2VudEJhc2UoKSB7IH0KIAotICAgIHZvaWQgZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyKik7Ci0gICAgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgp
OwotICAgIHZvaWQgZGlzY2FyZEFnZW50cygpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkQWdlbnQoKSB7IH0K
IAotcHJpdmF0ZToKLSAgICBWZWN0b3I8T3duUHRyPEluc3BlY3RvckJhc2VBZ2VudD4+IG1fYWdl
bnRzOworcHJvdGVjdGVkOgorICAgIEluc3BlY3RvckFnZW50QmFzZShjb25zdCBTdHJpbmcmIG5h
bWUpCisgICAgICAgIDogbV9uYW1lKG5hbWUpCisgICAgeworICAgIH0KKworICAgIFN0cmluZyBt
X25hbWU7CiB9OworICAgIAorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckFnZW50UmVnaXN0cnlf
aCkKKyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JBZ2VudEJhc2VfaCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAK
c2ltaWxhcml0eSBpbmRleCA5NCUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwCmluZGV4IDA5OWQxYTMuLjQ2
ZTkyMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2Vu
dFJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckFnZW50UmVnaXN0cnkuY3BwCkBAIC0yNSwxNCArMjUsMTMgQEAKICAqLwogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotCiAjaW5jbHVkZSAiSW5zcGVj
dG9yQWdlbnRSZWdpc3RyeS5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CisjaWYgRU5BQkxFKElO
U1BFQ1RPUikKIAotdm9pZCBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5OjphcHBlbmQoUGFzc093blB0
cjxJbnNwZWN0b3JCYXNlQWdlbnQ+IGFnZW50KQorbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK3Zv
aWQgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6YXBwZW5kKFBhc3NPd25QdHI8SW5zcGVjdG9yQWdl
bnRCYXNlPiBhZ2VudCkKIHsKICAgICBtX2FnZW50cy5hcHBlbmQoYWdlbnQpOwogfQpAQCAtNTUs
NiArNTQsNiBAQCB2b2lkIEluc3BlY3RvckFnZW50UmVnaXN0cnk6OmRpc2NhcmRBZ2VudHMoKQog
ICAgICAgICBtX2FnZW50c1tpXS0+ZGlzY2FyZEFnZW50KCk7CiB9CiAKLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKElO
U1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JB
Z2VudFJlZ2lzdHJ5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckFnZW50UmVnaXN0cnkuaApzaW1pbGFyaXR5IGluZGV4IDg3JQpjb3B5IGZyb20gU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaApjb3B5IHRvIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oCmluZGV4IDRm
ZDAzNTMuLmNiNjU3MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JBZ2VudFJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgKQEAgLTI3LDI2ICsyNywyNyBAQAogI2lmbmRlZiBJ
bnNwZWN0b3JBZ2VudFJlZ2lzdHJ5X2gKICNkZWZpbmUgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeV9o
CiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JB
Z2VudEJhc2UuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAK
IGNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOworY2xhc3MgSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsOwogCi1jbGFzcyBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5IHsKK2NsYXNzIEpTX0VY
UE9SVF9QUklWQVRFIEluc3BlY3RvckFnZW50UmVnaXN0cnkgewogcHVibGljOgotICAgIHZvaWQg
YXBwZW5kKFBhc3NPd25QdHI8SW5zcGVjdG9yQmFzZUFnZW50Pik7CisgICAgdm9pZCBhcHBlbmQo
UGFzc093blB0cjxJbnNwZWN0b3JBZ2VudEJhc2U+KTsKIAogICAgIHZvaWQgZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyKik7CiAgICAgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgp
OwogICAgIHZvaWQgZGlzY2FyZEFnZW50cygpOwogCiBwcml2YXRlOgotICAgIFZlY3RvcjxPd25Q
dHI8SW5zcGVjdG9yQmFzZUFnZW50Pj4gbV9hZ2VudHM7CisgICAgVmVjdG9yPE93blB0cjxJbnNw
ZWN0b3JBZ2VudEJhc2U+PiBtX2FnZW50czsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
K30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9y
QWdlbnRSZWdpc3RyeV9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCnNpbWlsYXJpdHkgaW5kZXggOTYl
CnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlci5jcHAKcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCmluZGV4IGJmYTRjNGIuLmMyNjY4NTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5jcHAKQEAgLTI5LDEyICsyOSwxMiBAQAogCiAjaWYgRU5BQkxFKElOU1BF
Q1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvckZvcndhcmRpbmcuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjpDYWxsYmFja0Jhc2UoUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gYmFja2VuZERpc3BhdGNoZXIsIGludCBp
ZCkKICAgICA6IG1fYmFja2VuZERpc3BhdGNoZXIoYmFja2VuZERpc3BhdGNoZXIpCkBAIC0xODcs
NyArMTg3LDcgQEAgdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6cmVwb3J0UHJvdG9j
b2xFcnJvcihjb25zdCBsb25nKiBjb25zdCBjYWxsSWQsIEMKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgUmV0dXJuVmFsdWVUeXBlLCB0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIERlZmF1bHRW
YWx1ZVR5cGU+Ci1SZXR1cm5WYWx1ZVR5cGUgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6Omdl
dFByb3BlcnR5VmFsdWUoSW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yQXJyYXkqIHByb3RvY29sRXJyb3JzLCBEZWZh
dWx0VmFsdWVUeXBlIGRlZmF1bHRWYWx1ZSwgYm9vbCAoKmFzTWV0aG9kKShJbnNwZWN0b3JWYWx1
ZSosIFZhbHVlVHlwZSopLCBjb25zdCBjaGFyKiB0eXBlTmFtZSkKK3N0YXRpYyBSZXR1cm5WYWx1
ZVR5cGUgZ2V0UHJvcGVydHlWYWx1ZShJbnNwZWN0b3JPYmplY3QqIG9iamVjdCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0b3JBcnJheSogcHJvdG9jb2xFcnJv
cnMsIERlZmF1bHRWYWx1ZVR5cGUgZGVmYXVsdFZhbHVlLCBib29sICgqYXNNZXRob2QpKEluc3Bl
Y3RvclZhbHVlKiwgVmFsdWVUeXBlKiksIGNvbnN0IGNoYXIqIHR5cGVOYW1lKQogewogICAgIEFT
U0VSVChwcm90b2NvbEVycm9ycyk7CiAKQEAgLTI1OSw2ICsyNTksNiBAQCBQYXNzUmVmUHRyPElu
c3BlY3RvckFycmF5PiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0QXJyYXkoSW5zcGVj
dG9yT2JqZWN0KgogICAgIHJldHVybiBnZXRQcm9wZXJ0eVZhbHVlPFBhc3NSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+LCBJbnNwZWN0b3JBcnJheSo+KG9iamVj
dCwgbmFtZSwgdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMsIG51bGxwdHIsIEFzTWV0aG9kQnJp
ZGdlczo6YXNBcnJheSwgIkFycmF5Iik7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30g
Ly8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlci5oCnNpbWlsYXJpdHkgaW5kZXggODclCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oCnJlbmFtZSB0byBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgK
aW5kZXggYTZlNGQyZi4uNTBmZTYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oCkBAIC0yNywxMiArMjcs
MTIgQEAKICNpZm5kZWYgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJfaAogI2RlZmluZSBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcl9oCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRl
ci5oIgorI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIEluc3BlY3RvciB7
CiAKIGNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwogY2xhc3MgSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsOwpAQCAtNDcsMTUgKzQ3LDEzIEBAIHByb3RlY3RlZDoKICAgICBSZWZQdHI8
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiB9OwogCi1j
bGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyPiB7CitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI+IGNyZWF0ZShJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKTsKLSAgICB2
aXJ0dWFsIH5JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQogCi0gICAgY2xhc3MgQ2Fs
bGJhY2tCYXNlOiBwdWJsaWMgUmVmQ291bnRlZDxDYWxsYmFja0Jhc2U+IHsKKyAgICBjbGFzcyBD
YWxsYmFja0Jhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxDYWxsYmFja0Jhc2U+IHsKICAgICBwdWJs
aWM6CiAgICAgICAgIENhbGxiYWNrQmFzZShQYXNzUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyPiwgaW50IGlkKTsKLSAgICAgICAgdmlydHVhbCB+Q2FsbGJhY2tCYXNlKCkgeyB9CiAK
ICAgICAgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNlbmRGYWlsdXJl
KGNvbnN0IEVycm9yU3RyaW5nJik7CkBAIC05OCwxMyArOTYsMTAgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqIGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgOiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5l
bChpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIHsgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
UmV0dXJuVmFsdWVUeXBlLCB0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIERlZmF1bHRWYWx1
ZVR5cGU+Ci0gICAgc3RhdGljIFJldHVyblZhbHVlVHlwZSBnZXRQcm9wZXJ0eVZhbHVlKEluc3Bl
Y3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQs
IEluc3BlY3RvckFycmF5KiBwcm90b2NvbEVycm9ycywgRGVmYXVsdFZhbHVlVHlwZSBkZWZhdWx0
VmFsdWUsIGJvb2wgKCphc01ldGhvZCkoSW5zcGVjdG9yVmFsdWUqLCBWYWx1ZVR5cGUqKSwgY29u
c3QgY2hhciogdHlwZU5hbWUpOwotCiAgICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBtX2lu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKICAgICBIYXNoTWFwPFN0cmluZywgSW5zcGVjdG9yU3Vw
cGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIqPiBtX2Rpc3BhdGNoZXJzOwogfTsKIAotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyAh
ZGVmaW5lZChJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcl9oKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKc2ltaWxhcml0eSBpbmRleCA5OSUK
cmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAK
cmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVz
LmNwcAppbmRleCA4ZmNlMzJkLi4yNDE5ZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRl
IDx3dGYvZHRvYS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAotbmFt
ZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIG5hbWVzcGFjZSB7CiAK
QEAgLTgzMyw0ICs4MzMsNCBAQCBQYXNzUmVmUHRyPEluc3BlY3RvckJhc2ljVmFsdWU+IEluc3Bl
Y3RvckJhc2ljVmFsdWU6OmNyZWF0ZShkb3VibGUgdmFsdWUpCiAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBJbnNwZWN0b3JCYXNpY1ZhbHVlKHZhbHVlKSk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaApzaW1pbGFyaXR5IGluZGV4IDk1JQpyZW5hbWUgZnJv
bSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKcmVuYW1lIHRvIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKaW5kZXggY2Ji
N2Y3MS4uMDEyYTFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclZhbHVlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yVmFsdWVzLmgKQEAgLTM4LDEyICszOCwxMiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdl
YkNvcmUgeworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIGNsYXNzIEluc3BlY3RvckFycmF5Owog
Y2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogCi1jbGFzcyBJbnNwZWN0b3JWYWx1ZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPEluc3BlY3RvclZhbHVlPiB7CitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbnNw
ZWN0b3JWYWx1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3BlY3RvclZhbHVlPiB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIGNvbnN0IGludCBtYXhEZXB0aCA9IDEwMDA7CiAKQEAgLTkwLDcgKzkwLDcg
QEAgcHJpdmF0ZToKICAgICBUeXBlIG1fdHlwZTsKIH07CiAKLWNsYXNzIEluc3BlY3RvckJhc2lj
VmFsdWUgOiBwdWJsaWMgSW5zcGVjdG9yVmFsdWUgeworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUg
SW5zcGVjdG9yQmFzaWNWYWx1ZSA6IHB1YmxpYyBJbnNwZWN0b3JWYWx1ZSB7CiBwdWJsaWM6CiAK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JCYXNpY1ZhbHVlPiBjcmVhdGUoYm9vbCk7
CkBAIC0xMTcsNyArMTE3LDcgQEAgcHJpdmF0ZToKICAgICB9OwogfTsKIAotY2xhc3MgSW5zcGVj
dG9yU3RyaW5nIDogcHVibGljIEluc3BlY3RvclZhbHVlIHsKK2NsYXNzIEpTX0VYUE9SVF9QUklW
QVRFIEluc3BlY3RvclN0cmluZyA6IHB1YmxpYyBJbnNwZWN0b3JWYWx1ZSB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yU3RyaW5nPiBjcmVhdGUoY29uc3QgU3RyaW5n
Jik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yU3RyaW5nPiBjcmVhdGUoY29uc3Qg
Y2hhciopOwpAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3RyaW5n
VmFsdWU7CiB9OwogCi1jbGFzcyBJbnNwZWN0b3JPYmplY3RCYXNlIDogcHVibGljIEluc3BlY3Rv
clZhbHVlIHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3Rvck9iamVjdEJhc2UgOiBw
dWJsaWMgSW5zcGVjdG9yVmFsdWUgewogcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8U3Ry
aW5nLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+PiBEaWN0aW9uYXJ5OwogCkBAIC0xOTIsNyArMTky
LDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgSW5zcGVjdG9yT2JqZWN0IDogcHVibGljIEluc3BlY3Rv
ck9iamVjdEJhc2UgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gY3JlYXRlKCk7CisgICAgc3RhdGljIEpTX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGUoKTsKIAogICAgIHVzaW5nIEluc3BlY3Rvck9iamVjdEJh
c2U6OmFzT2JqZWN0OwogCkBAIC0yMjAsNyArMjIwLDcgQEAgcHVibGljOgogfTsKIAogCi1jbGFz
cyBJbnNwZWN0b3JBcnJheUJhc2UgOiBwdWJsaWMgSW5zcGVjdG9yVmFsdWUgeworY2xhc3MgSlNf
RVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yQXJyYXlCYXNlIDogcHVibGljIEluc3BlY3RvclZhbHVl
IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8SW5zcGVjdG9yVmFsdWU+Pjo6
aXRlcmF0b3IgaXRlcmF0b3I7CiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEluc3BlY3RvclZh
bHVlPj46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwpAQCAtMjYwLDcgKzI2MCw3IEBA
IHByaXZhdGU6CiAKIGNsYXNzIEluc3BlY3RvckFycmF5IDogcHVibGljIEluc3BlY3RvckFycmF5
QmFzZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGNy
ZWF0ZSgpOworICAgIHN0YXRpYyBKU19FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiBjcmVhdGUoKTsKIAogICAgIHVzaW5nIEluc3BlY3RvckFycmF5QmFzZTo6YXNBcnJh
eTsKIApAQCAtMzYzLDYgKzM2Myw2IEBAIGlubGluZSB2b2lkIEluc3BlY3RvckFycmF5QmFzZTo6
cHVzaEFycmF5KFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHZhbHVlKQogICAgIG1fZGF0YS5h
cHBlbmQodmFsdWUpOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFj
ZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvclZhbHVlc19oKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAppbmRleCBjZmEzNDJkLi4yY2M4ZWU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtMTU3Niw5ICsxNTc2LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGluc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
TW9kdWxlLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKLSAgICBpbnNwZWN0
b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50LmNwcAotICAgIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlci5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCiAgICAgaW5z
cGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JD
bGllbnQuY3BwCkBAIC0xNjA5LDcgKzE2MDcsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlVGV4dEVkaXRvci5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dC5jcHAKLSAgICBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcAogICAgIGluc3BlY3Rvci9J
bnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKICAgICBpbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50
cy5jcHAKICAgICBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggOGI2NzM0Ni4uNzZmNGIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5MyBAQAorMjAxMy0x
Mi0wNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdl
YiBJbnNwZWN0b3I6IFB1c2ggTW9yZSBJbnNwZWN0b3IgUmVxdWlyZWQgQ2xhc3NlcyBEb3duIGlu
dG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyNTMyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFBhcnQgMzogUHVzaCBEb3duIFNjcmlwdEZ1bmN0aW9uQ2FsbAorCisgICAgICAg
ICAgLSBNb3ZlIFNjcmlwdEZ1bmN0aW9uQ2FsbCB0byBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncyBp
bnRvIG5hbWVzcGFjZSBEZXByZWNhdGVkLgorICAgICAgICAgIC0gR2l2ZSBjb25zdHJ1Y3RvciBh
IGZ1bmN0aW9uIHRvIGFsbCBmb3IgYSBkaWZmZXJlbnQgSlNDOjpjYWxsLCBiZWNhdXNlCisgICAg
ICAgICAgICBXZWJDb3JlIFNjcmlwdEZ1bmN0aW9uQ2FsbCdzIHVzZSBKU01haW5UaHJlYWRFeGVj
U3RhdGUgd2hlbiBpc01haW5UaHJlYWQuCisgICAgICAgICAgLSBQcmVmZXIgRGVwcmVjYXRlZDo6
U2NyaXB0RnVuY3Rpb25DYWxsIGV2ZXJ5d2hlcmUgaXQgaXMgdXNlZCBpbiBXZWJDb3JlLgorCisg
ICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmg6
IEFkZGVkLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVXNlSlND
LmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAg
ICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWFpblRo
cmVhZEV4ZWNTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVy
RnJvbUFueVRocmVhZCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0
YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpKU01haW5UaHJlYWRFeGVjU3RhdGU6OmN1cnJlbnRT
dGF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bmplY3RlZFNjcmlwdDo6Y2FsbEZ1bmN0aW9uT24pOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0
ZWRTY3JpcHQ6OmV2YWx1YXRlT25DYWxsRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0
ZWRTY3JpcHQ6OmdldEZ1bmN0aW9uRGV0YWlscyk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3Rl
ZFNjcmlwdDo6Z2V0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlw
dDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2Ny
aXB0Ojpub2RlRm9yT2JqZWN0SWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6
OnJlbGVhc2VPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBD
YWxsRnJhbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Ojp3cmFwT2JqZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Ojp3cmFwVGFibGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmZpbmRPYmplY3RCeUlkKToKKyAgICAgICAgKFdl
YkNvcmU6OkluamVjdGVkU2NyaXB0OjppbnNwZWN0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bmplY3RlZFNjcmlwdDo6cmVsZWFzZU9iamVjdEdyb3VwKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0
QmFzZTo6Y2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
amVjdGVkU2NyaXB0QmFzZTo6bWFrZUNhbGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRT
Y3JpcHRCYXNlOjptYWtlRXZhbENhbGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNj
cmlwdEJhc2UuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OmNh
bGxXcmFwQ29udGV4dEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0
Q2FudmFzTW9kdWxlOjptYXJrRnJhbWVFbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRT
Y3JpcHRDYW52YXNNb2R1bGU6OmNhbGxTdGFydENhcHR1cmluZ0Z1bmN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjpjYWxsVm9pZEZ1bmN0aW9uV2l0
aFRyYWNlTG9nSWRBcmd1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdENh
bnZhc01vZHVsZTo6dHJhY2VMb2cpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRD
YW52YXNNb2R1bGU6OnJlcGxheVRyYWNlTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVk
U2NyaXB0Q2FudmFzTW9kdWxlOjpyZXNvdXJjZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SW5q
ZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OnJlc291cmNlU3RhdGUpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3Rl
ZFNjcmlwdE1vZHVsZTo6ZW5zdXJlSW5qZWN0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWwuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJvbnRlbmRNZW51UHJvdmlkZXI6OmNvbnRleHRNZW51
SXRlbVNlbGVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyb250ZW5kTWVudVByb3ZpZGVyOjpj
b250ZXh0TWVudUNsZWFyZWQpOgorCisyMDEzLTEyLTA1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNv
cmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBNb3JlIEluc3Bl
Y3RvciBSZXF1aXJlZCBDbGFzc2VzIERvd24gaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1MzI0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFydCAyOiBQdXNoIFNjcmlw
dCB3cmFwcGVyIGNsYXNzZXMgZG93biBpbnRvIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzLgorCisg
ICAgICAgICAgLSBNb3ZlIFNjcmlwdE9iamVjdCBhbmQgU2NyaXB0VmFsdWUgaW50byBKYXZhU2Ny
aXB0Q29yZSBidXQgbmFtZXNwYWNlIERlcHJlY2F0ZWQKKyAgICAgICAgICAtIEFkZCBmb3J3YXJk
aW5nIGhlYWRlcnMKKyAgICAgICAgICAtIFVzZSBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgYW5k
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGV2ZXJ5d2hlcmUuCisKKyAgICAgICAgKiBGb3J3YXJk
aW5nSGVhZGVycy9iaW5kaW5ncy9TY3JpcHRPYmplY3QuaDogQWRkZWQuCisgICAgICAgICogRm9y
d2FyZGluZ0hlYWRlcnMvYmluZGluZ3MvU2NyaXB0VmFsdWUuaDogQWRkZWQuCisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJBbnku
Y3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5oOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHA6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5j
cHA6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJJbmRleC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6Om9wZW5DdXJzb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6Om9wZW5LZXlDdXJzb3IpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJLZXlSYW5nZS5oOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UmFuZ2U6Omxv
d2VyQm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UmFuZ2U6OnVwcGVyQm91bmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCS2V5UmFuZ2U6OmJvdW5kKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmpl
Y3RTdG9yZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaDoKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tU
aW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwOgorICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9RdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oOgorICAgICAgICAqIFVzZUpTQy5jbWFrZToKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
czoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYmluZGluZ3MvanMvRGljdGlvbmFyeS5oOgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFy
eTo6Z2V0RXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogYmluZGluZ3MvanMvSURCQmluZGluZ1V0
aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZXNlcmlhbGl6ZUlEQlZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RpY3Rpb25hcnkuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHA6CisgICAgICAgICog
YmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9T
Y3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmg6
CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMv
U2NyaXB0RnVuY3Rpb25DYWxsLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRGdW5j
dGlvbkNhbGwuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuY3Bw
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNw
cC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5jcHAuCisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRHbG9iYWxPYmplY3Q6OlNjcmlwdEdsb2JhbE9iamVjdCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1NjcmlwdFByb2ZpbGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U3RhdGUu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpzZXJpYWxpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZSk6CisgICAgICAg
ICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgICogYmluZGlu
Z3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMv
V29ya2VyU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAqIGRvbS9DdXN0b21FdmVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FdmVudDo6aW5pdEN1c3RvbUV2ZW50KToKKyAgICAg
ICAgKiBkb20vQ3VzdG9tRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUV2ZW50Ojpk
ZXRhaWwpOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuY3BwOgorICAgICAgICAqIGRvbS9N
ZXNzYWdlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6ZGF0YUFzU2NyaXB0VmFsdWUpOgorICAg
ICAgICAqIGRvbS9Qb3BTdGF0ZUV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpQb3BTdGF0ZUV2
ZW50OjpzdGF0ZSk6CisgICAgICAgICogZG9tL1NjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0NvbnNvbGVN
ZXNzYWdlLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2Uu
Y3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuY3BwOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNj
cmlwdEhvc3QuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNw
cDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52
YXNBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0luc3RydW1lbnRhdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3cmFwQ2FudmFzMkRS
ZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d3JhcFdlYkdMUmVuZGVyaW5nQ29udGV4dEZvckluc3Ry
dW1lbnRhdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5jcHA6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVy
bGF5LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgICog
aW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9TY3Jp
cHRBcmd1bWVudHMuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0RGVidWdMaXN0ZW5lci5oOgorICAgICAgICAqIHBh
Z2UvQ29uc29sZS5jcHA6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgICogcGFn
ZS9QYWdlQ29uc29sZS5jcHA6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAg
ICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5h
bHMuaDoKKyAgICAgICAgKiB3b3JrZXJzL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAg
ICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKiB3b3JrZXJz
L1dvcmtlclRocmVhZC5jcHA6CisgICAgICAgICogeG1sL1hNTFRyZWVWaWV3ZXIuY3BwOgorICAg
ICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAqIHhtbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKworMjAxMy0xMi0wNSAgSm9zZXBo
IFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFB1c2ggTW9yZSBJbnNwZWN0b3IgUmVxdWlyZWQgQ2xhc3NlcyBEb3duIGludG8gSmF2YVNjcmlw
dENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
NTMyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBh
cnQgMTogUHVzaCBkb3duIGNvcmUgaW5zcGVjdG9yIGNsYXNzZXMuCisKKyAgICAgICAgICAtIE1v
dmUgSW5zcGVjdEFnZW50QmFzZSwgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeSwgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIsIEluc3BlY3RvclZhbHVlcworICAgICAgICAgICAgZG93biB0byBKYXZh
U2NyaXB0Q29yZSBhbmQgaW50byB0aGUgSW5zcGVjdG9yIG5hbWVzcGFjZS4KKyAgICAgICAgICAt
IEFkZCBmb3J3YXJkaW5nIGhlYWRlcnMgZm9yIEphdmFTY3JpcHRDb3JlL2luc3BlY3RvciBmaWxl
cy4KKyAgICAgICAgICAtIFVzZSB0aGUgSW5zcGVjdG9yIG5hbWVzcGFjZSB3aGVyZSBhcHByb3By
aWF0ZS4KKyAgICAgICAgICAtIFJlbmFtZSBJbnNwZWN0b3JCYXNlQWdlbnQgdG8gSW5zcGVjdG9y
QWdlbnRCYXNlIGZvciBjbGFyaXR5LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAg
ICAgICogRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yQWdl
bnRSZWdpc3RyeS5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0
b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaDogQWRkZWQuCisgICAgICAgICogRm9yd2Fy
ZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oOiBBZGRlZC4KKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAg
ICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0luamVjdGVkU2Ny
aXB0SG9zdEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5j
cHA6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5oOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRW
YWx1ZS5oOgorICAgICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwOgorICAgICAgICAq
IGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5jcHA6CisgICAgICAgICogaW5zcGVjdG9y
L0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHk6CisgICAgICAgIChSYXdUeXBlcy5CYXNlVHlwZS5n
ZXRfcmF3X3ZhbGlkYXRvcl9jYWxsX3RleHQpOgorICAgICAgICAoUmF3VHlwZXMuT2JqZWN0Lmdl
dF9hcnJheV9pdGVtX3Jhd19jX3R5cGVfdGV4dCk6CisgICAgICAgIChSYXdUeXBlcy5BbnkuZ2V0
X2FycmF5X2l0ZW1fcmF3X2NfdHlwZV90ZXh0KToKKyAgICAgICAgKFJhd1R5cGVzLkFycmF5Lmdl
dF9hcnJheV9pdGVtX3Jhd19jX3R5cGVfdGV4dCk6CisgICAgICAgIChUeXBlTW9kZWwuaW5pdF9j
bGFzcyk6CisgICAgICAgIChUeXBlQmluZGluZ3MuY3JlYXRlX3R5cGVfZGVjbGFyYXRpb25fLkVu
dW1CaW5kaW5nLmdldF9jb2RlX2dlbmVyYXRvci5Db2RlR2VuZXJhdG9yLmdlbmVyYXRlX3R5cGVf
YnVpbGRlcik6CisgICAgICAgIChUeXBlQmluZGluZ3MuY3JlYXRlX3R5cGVfZGVjbGFyYXRpb25f
LkNsYXNzQmluZGluZy5nZXRfY29kZV9nZW5lcmF0b3IuQ29kZUdlbmVyYXRvci5nZW5lcmF0ZV90
eXBlX2J1aWxkZXIpOgorICAgICAgICAoR2VuZXJhdG9yLmdvKToKKyAgICAgICAgKEdlbmVyYXRv
ci5wcm9jZXNzX2NvbW1hbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5z
cGVjdG9yU3RyaW5ncy5weToKKyAgICAgICAgKHZvaWQpOgorICAgICAgICAoSW5zcGVjdG9yRnJv
bnRlbmRfaCk6CisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnNfaCk6CisgICAg
ICAgIChBcnJheSk6CisgICAgICAgICogaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
Q29udGVudFNlYXJjaFV0aWxzLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29udGVudFNlYXJj
aFV0aWxzLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0Q2FudmFzTW9kdWxlLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRI
b3N0LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHA6CisgICAgICAgICogaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdE1vZHVsZS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50OjpJbnNwZWN0b3JBZ2VudCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oLgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQWdlbnRCYXNlOjpJbnNwZWN0b3JBZ2VudEJhc2UpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYXNl
QWdlbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6Okluc3BlY3RvckNTU0Fn
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5o
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6SW5zcGVjdG9yQ2FudmFzQWdlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckNsaWVudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JD
b25zb2xlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29uc29sZUFnZW50
OjpJbnNwZWN0b3JDb25zb2xlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
c29sZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpJbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yRGF0YWJhc2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRh
YmFzZUFnZW50OjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHA6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckZvcndhcmRpbmcuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kSG9zdC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQ
cm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckhlYXBQcm9maWxl
ckFnZW50OjpJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6Okluc3BlY3RvckluZGV4ZWREQkFnZW50KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckluZGV4ZWREQkFnZW50OjpkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvcklucHV0QWdlbnQ6Okluc3BlY3RvcklucHV0QWdlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5wdXRBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5wdXRBZ2VudC5o
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJl
ZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUFnZW50OjpkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6Oklu
c3BlY3Rvck1lbW9yeUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5
QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VB
Z2VudDo6SW5zcGVjdG9yUGFnZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBh
Z2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBy
b2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dDo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQ
cm9maWxlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6Okluc3BlY3RvclJlc291cmNlQWdlbnQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JSdW50aW1lQWdlbnQ6Okluc3BlY3RvclJ1bnRpbWVBZ2VudCk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVT
aGVldC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTSWQ6Okluc3BlY3RvckNTU0lk
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVUZXh0RWRpdG9yLmNwcDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6SW5zcGVjdG9y
VGltZWxpbmVBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdl
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OlRpbWVsaW5l
UmVjb3JkRW50cnk6OlRpbWVsaW5lUmVjb3JkRW50cnkpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JXb3JrZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JXb3Jr
ZXJBZ2VudDo6SW5zcGVjdG9yV29ya2VyQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yV29ya2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3RydW1lbnRpbmdBZ2VudHMuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwOgor
ICAgICAgICAqIGluc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgICogaW5z
cGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VSdW50
aW1lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1bnRpbWVBZ2VudDo6ZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZVJ1bnRpbWVB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwOgorICAgICAg
ICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9T
Y3JpcHRDYWxsRnJhbWUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNw
cDoKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg6CisgICAgICAgICogaW5z
cGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL1Rp
bWVsaW5lUmVjb3JkRmFjdG9yeS5oOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVSZWNvcmRG
YWN0b3J5OjpjcmVhdGVXZWJTb2NrZXRDcmVhdGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRp
bWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1dlYlNvY2tldERhdGEpOgorICAgICAg
ICAqIGluc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rv
ci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VySW5z
cGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50Lmg6
CisgICAgICAgICogcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxzLmNwcDoKKwogMjAxMy0xMi0wOSAgcGVhdm9Ab3V0bG9vay5jb20gIDxw
ZWF2b0BvdXRsb29rLmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dIE9wZW5HTCBjb21waWxlIGVy
cm9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvYmluZGlu
Z3MvU2NyaXB0RnVuY3Rpb25DYWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi44NWQyYTA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmgKQEAgLTAsMCArMSw0
IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX1NjcmlwdEZ1bmN0aW9uQ2FsbF9oCisjZGVmaW5lIFdl
YkNvcmVfRldEX1NjcmlwdEZ1bmN0aW9uQ2FsbF9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
U2NyaXB0RnVuY3Rpb25DYWxsLmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0ZvcndhcmRpbmdIZWFkZXJzL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5oIGIvU291cmNlL1dlYkNv
cmUvRm9yd2FyZGluZ0hlYWRlcnMvYmluZGluZ3MvU2NyaXB0T2JqZWN0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM2YjgyNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5oCkBAIC0w
LDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9TY3JpcHRPYmplY3RfaAorI2RlZmluZSBX
ZWJDb3JlX0ZXRF9TY3JpcHRPYmplY3RfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Njcmlw
dE9iamVjdC5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGlu
Z0hlYWRlcnMvYmluZGluZ3MvU2NyaXB0VmFsdWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi40NzhhZjUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvYmluZGluZ3MvU2NyaXB0VmFsdWUuaApAQCAtMCwwICsxLDQgQEAKKyNp
Zm5kZWYgV2ViQ29yZV9GV0RfU2NyaXB0VmFsdWVfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9TY3Jp
cHRWYWx1ZV9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0VmFsdWUuaD4KKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9y
L0luc3BlY3RvckFnZW50QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMv
aW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmYxYTM1ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3
YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmgKQEAgLTAsMCArMSw0
IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0luc3BlY3RvckFnZW50QmFzZV9oCisjZGVmaW5lIFdl
YkNvcmVfRldEX0luc3BlY3RvckFnZW50QmFzZV9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SW5zcGVjdG9yQWdlbnRCYXNlLmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggYi9T
b3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRS
ZWdpc3RyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5ZGI5NWMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0
b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJD
b3JlX0ZXRF9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfSW5z
cGVjdG9yQWdlbnRSZWdpc3RyeV9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9y
QWdlbnRSZWdpc3RyeS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3
YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllNWU4N2QK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNw
ZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5k
ZWYgV2ViQ29yZV9GV0RfSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJfaAorI2RlZmluZSBXZWJD
b3JlX0ZXRF9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcl9oCisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVl
cy5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3Rv
clZhbHVlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkOTg1ZjYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0
b3IvSW5zcGVjdG9yVmFsdWVzLmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldE
X0luc3BlY3RvclZhbHVlc19oCisjZGVmaW5lIFdlYkNvcmVfRldEX0luc3BlY3RvclZhbHVlc19o
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+CisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDg0NGFkNjguLjhmOTBmMmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjQ0NCwxMSArMjQ0NCw5IEBAIHdlYmNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmggXAotCVNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgXAotCVNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRIZWFwU25hcHNob3QuaCBcCi0JU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNwcCBcCi0JU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0T2JqZWN0LmggXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2Jh
bE9iamVjdC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9i
amVjdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlTm9kZS5oIFwKQEAgLTI0NTcsOCArMjQ1
NSw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0U291cmNlQ29kZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRT
dGF0ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmggXAot
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcCBcCi0JU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0V3JhcHBhYmxlLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdFdyYXBwYWJsZUlubGluZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcCBcCkBAIC0zNzc5LDEzICszNzc1LDggQEAgd2ViY29yZV9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1
bGUuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmggXAotCVNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcCBcCi0JU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaCBcCiAJU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCBcCi0JU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBcCi0J
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggXAot
CVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYXNlQWdlbnQuaCBcCiAJU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmggXAogCVNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNJbnN0cnVtZW50YXRpb24uaCBcCkBAIC0zODUxLDgg
KzM4NDIsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIFwKLQlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yVmFsdWVzLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZh
bHVlcy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV2ViQWdlbnRCYXNl
LmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmNwcAppbmRleCBjYjFlNjNlLi44
MjdhNGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJB
bnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5jcHAK
QEAgLTExMiw3ICsxMTIsNyBAQCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBJREJBbnk6Omlk
YlRyYW5zYWN0aW9uKCkKICAgICByZXR1cm4gbV9pZGJUcmFuc2FjdGlvbjsKIH0KIAotY29uc3Qg
U2NyaXB0VmFsdWUmIElEQkFueTo6c2NyaXB0VmFsdWUoKQorY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmIElEQkFueTo6c2NyaXB0VmFsdWUoKQogewogICAgIEFTU0VSVChtX3R5cGUgPT0g
U2NyaXB0VmFsdWVUeXBlKTsKICAgICByZXR1cm4gbV9zY3JpcHRWYWx1ZTsKQEAgLTE4Niw3ICsx
ODYsNyBAQCBJREJBbnk6OklEQkFueShQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiB2YWx1ZSkK
IHsKIH0KIAotSURCQW55OjpJREJBbnkoY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVlKQorSURCQW55
OjpJREJBbnkoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlKQogICAgIDogbV90
eXBlKFNjcmlwdFZhbHVlVHlwZSkKICAgICAsIG1fc2NyaXB0VmFsdWUodmFsdWUpCiAgICAgLCBt
X2ludGVnZXIoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkFueS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmgKaW5k
ZXggNmRlNDVjZi4uZDcyODQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQW55LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQW55LmgKQEAgLTI5LDggKzI5LDggQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
IAogI2luY2x1ZGUgIklEQktleVBhdGguaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVl
Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6
CiAgICAgUGFzc1JlZlB0cjxJREJJbmRleD4gaWRiSW5kZXgoKTsKICAgICBQYXNzUmVmUHRyPElE
Qk9iamVjdFN0b3JlPiBpZGJPYmplY3RTdG9yZSgpOwogICAgIFBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb24+IGlkYlRyYW5zYWN0aW9uKCk7Ci0gICAgY29uc3QgU2NyaXB0VmFsdWUmIHNjcmlwdFZh
bHVlKCk7CisgICAgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHNjcmlwdFZhbHVlKCk7
CiAgICAgaW50NjRfdCBpbnRlZ2VyKCk7CiAgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoKTsKICAg
ICBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKCkgeyByZXR1cm4gbV9pZGJLZXlQYXRoOyB9OwpA
QCAtMTE4LDcgKzExOCw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSURCQW55KFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb24+KTsKICAgICBleHBsaWNpdCBJREJBbnkoY29uc3QgSURCS2V5UGF0
aCYpOwogICAgIGV4cGxpY2l0IElEQkFueShjb25zdCBTdHJpbmcmKTsKLSAgICBleHBsaWNpdCBJ
REJBbnkoY29uc3QgU2NyaXB0VmFsdWUmKTsKKyAgICBleHBsaWNpdCBJREJBbnkoY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmKTsKICAgICBleHBsaWNpdCBJREJBbnkoaW50NjRfdCk7CiAK
ICAgICBjb25zdCBUeXBlIG1fdHlwZTsKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAg
IGNvbnN0IFJlZlB0cjxJREJPYmplY3RTdG9yZT4gbV9pZGJPYmplY3RTdG9yZTsKICAgICBjb25z
dCBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IG1faWRiVHJhbnNhY3Rpb247CiAgICAgY29uc3QgSURC
S2V5UGF0aCBtX2lkYktleVBhdGg7Ci0gICAgY29uc3QgU2NyaXB0VmFsdWUgbV9zY3JpcHRWYWx1
ZTsKKyAgICBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBtX3NjcmlwdFZhbHVlOwogICAg
IGNvbnN0IFN0cmluZyBtX3N0cmluZzsKICAgICBjb25zdCBpbnQ2NF90IG1faW50ZWdlcjsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAppbmRl
eCBlZjA2NTQ0Li5iOTlkODNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkN1cnNvci5jcHAKQEAgLTk4LDE5ICs5OCwxOSBAQCBjb25zdCBTdHJpbmcmIElEQkN1
cnNvcjo6ZGlyZWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gZGlyZWN0aW9uVG9TdHJpbmcobV9k
aXJlY3Rpb24pOwogfQogCi1jb25zdCBTY3JpcHRWYWx1ZSYgSURCQ3Vyc29yOjprZXkoKSBjb25z
dAorY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIElEQkN1cnNvcjo6a2V5KCkgY29uc3QK
IHsKICAgICBMT0coU3RvcmFnZUFQSSwgIklEQkN1cnNvcjo6a2V5Iik7CiAgICAgcmV0dXJuIG1f
Y3VycmVudEtleVZhbHVlOwogfQogCi1jb25zdCBTY3JpcHRWYWx1ZSYgSURCQ3Vyc29yOjpwcmlt
YXJ5S2V5KCkgY29uc3QKK2NvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBJREJDdXJzb3I6
OnByaW1hcnlLZXkoKSBjb25zdAogewogICAgIExPRyhTdG9yYWdlQVBJLCAiSURCQ3Vyc29yOjpw
cmltYXJ5S2V5Iik7CiAgICAgcmV0dXJuIG1fY3VycmVudFByaW1hcnlLZXlWYWx1ZTsKIH0KIAot
Y29uc3QgU2NyaXB0VmFsdWUmIElEQkN1cnNvcjo6dmFsdWUoKSBjb25zdAorY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmIElEQkN1cnNvcjo6dmFsdWUoKSBjb25zdAogewogICAgIExPRyhT
dG9yYWdlQVBJLCAiSURCQ3Vyc29yOjp2YWx1ZSIpOwogICAgIHJldHVybiBtX2N1cnJlbnRWYWx1
ZTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBJREJBbnkqIElEQkN1cnNvcjo6c291cmNlKCkgY29uc3QK
ICAgICByZXR1cm4gbV9zb3VyY2UuZ2V0KCk7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
SURCQ3Vyc29yOjp1cGRhdGUoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBTY3JpcHRWYWx1ZSYgdmFs
dWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJDdXJzb3I6
OnVwZGF0ZShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2
YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJDdXJz
b3I6OnVwZGF0ZSIpOwogCkBAIC0xNzcsNyArMTc3LDcgQEAgdm9pZCBJREJDdXJzb3I6OmFkdmFu
Y2UodW5zaWduZWQgbG9uZyBjb3VudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgQVNTRVJUKCFl
Yyk7CiB9CiAKLXZvaWQgSURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXlWYWx1ZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCit2b2lkIElEQkN1cnNvcjo6Y29udGludWVGdW5jdGlvbihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5VmFs
dWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIERPTVJlcXVlc3RTdGF0ZSByZXF1ZXN0U3Rh
dGUoY29udGV4dCk7CiAgICAgUmVmUHRyPElEQktleT4ga2V5ID0gc2NyaXB0VmFsdWVUb0lEQktl
eSgmcmVxdWVzdFN0YXRlLCBrZXlWYWx1ZSk7CkBAIC0yNjMsNyArMjYzLDcgQEAgdm9pZCBJREJD
dXJzb3I6OmNsb3NlKCkKICAgICB9CiB9CiAKLXZvaWQgSURCQ3Vyc29yOjpzZXRWYWx1ZVJlYWR5
KERPTVJlcXVlc3RTdGF0ZSogc3RhdGUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQ
dHI8SURCS2V5PiBwcmltYXJ5S2V5LCBTY3JpcHRWYWx1ZSYgdmFsdWUpCit2b2lkIElEQkN1cnNv
cjo6c2V0VmFsdWVSZWFkeShET01SZXF1ZXN0U3RhdGUqIHN0YXRlLCBQYXNzUmVmUHRyPElEQktl
eT4ga2V5LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUmIHZhbHVlKQogewogICAgIG1fY3VycmVudEtleSA9IGtleTsKICAgICBtX2N1cnJlbnRL
ZXlWYWx1ZSA9IGlkYktleVRvU2NyaXB0VmFsdWUoc3RhdGUsIG1fY3VycmVudEtleSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCmluZGV4IGM2YTc0NGYu
LjA0ZWIzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
ci5oCkBAIC0zMSw4ICszMSw4IEBACiAjaW5jbHVkZSAiSURCS2V5LmgiCiAjaW5jbHVkZSAiSURC
VHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJJbmRleGVkREIuaCIKLSNpbmNsdWRlICJTY3JpcHRW
YWx1ZS5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdz
L1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTYzLDIyICs2Mywy
MiBAQCBwdWJsaWM6CiAKICAgICAvLyBJbXBsZW1lbnQgdGhlIElETAogICAgIGNvbnN0IFN0cmlu
ZyYgZGlyZWN0aW9uKCkgY29uc3Q7Ci0gICAgY29uc3QgU2NyaXB0VmFsdWUmIGtleSgpIGNvbnN0
OwotICAgIGNvbnN0IFNjcmlwdFZhbHVlJiBwcmltYXJ5S2V5KCkgY29uc3Q7Ci0gICAgY29uc3Qg
U2NyaXB0VmFsdWUmIHZhbHVlKCkgY29uc3Q7CisgICAgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUmIGtleSgpIGNvbnN0OworICAgIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBw
cmltYXJ5S2V5KCkgY29uc3Q7CisgICAgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZh
bHVlKCkgY29uc3Q7CiAgICAgSURCQW55KiBzb3VyY2UoKSBjb25zdDsKIAotICAgIFBhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gdXBkYXRlKEpTQzo6RXhlY1N0YXRlKiwgU2NyaXB0VmFsdWUmLCBFeGNl
cHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiB1cGRhdGUoSlNDOjpFeGVj
U3RhdGUqLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2
b2lkIGFkdmFuY2UodW5zaWduZWQgbG9uZywgRXhjZXB0aW9uQ29kZSYpOwogICAgIC8vIEZJWE1F
OiBUcnkgdG8gbW9kaWZ5IHRoZSBjb2RlIGdlbmVyYXRvciBzbyB0aGlzIG92ZXJsb2FkIGlzIHVu
bmVlZGVkLgogICAgIHZvaWQgY29udGludWVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgY29udGludWVGdW5jdGlvbihzdGF0aWNfY2FzdDxJREJL
ZXkqPigwKSwgZWMpOyB9Ci0gICAgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CisgICAg
dm9pZCBjb250aW51ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhj
ZXB0aW9uQ29kZSYpOwogCiAgICAgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURC
S2V5PiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgcG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJh
Y2soKTsKICAgICB2b2lkIGNsb3NlKCk7Ci0gICAgdm9pZCBzZXRWYWx1ZVJlYWR5KERPTVJlcXVl
c3RTdGF0ZSosIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlL
ZXksIFNjcmlwdFZhbHVlJik7CisgICAgdm9pZCBzZXRWYWx1ZVJlYWR5KERPTVJlcXVlc3RTdGF0
ZSosIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJik7CiAgICAgUGFzc1JlZlB0cjxJREJLZXk+IGlkYlByaW1h
cnlLZXkoKSB7IHJldHVybiBtX2N1cnJlbnRQcmltYXJ5S2V5OyB9CiAKIHByb3RlY3RlZDoKQEAg
LTk3LDExICs5NywxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9nb3RWYWx1ZTsKICAgICAvLyBU
aGVzZSB2YWx1ZXMgYXJlIGhlbGQgYmVjYXVzZSBtX2JhY2tlbmQgbWF5IGFkdmFuY2Ugd2hpbGUg
dGhleQogICAgIC8vIGFyZSBzdGlsbCB2YWxpZCBmb3IgdGhlIGN1cnJlbnQgc3VjY2VzcyBoYW5k
bGVycy4KLSAgICBTY3JpcHRWYWx1ZSBtX2N1cnJlbnRLZXlWYWx1ZTsKLSAgICBTY3JpcHRWYWx1
ZSBtX2N1cnJlbnRQcmltYXJ5S2V5VmFsdWU7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUg
bV9jdXJyZW50S2V5VmFsdWU7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgbV9jdXJyZW50
UHJpbWFyeUtleVZhbHVlOwogICAgIFJlZlB0cjxJREJLZXk+IG1fY3VycmVudEtleTsKICAgICBS
ZWZQdHI8SURCS2V5PiBtX2N1cnJlbnRQcmltYXJ5S2V5OwotICAgIFNjcmlwdFZhbHVlIG1fY3Vy
cmVudFZhbHVlOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG1fY3VycmVudFZhbHVlOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAppbmRleCA5ZjQwNmZhLi5kMjhhNTdmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcApAQCAtMTY1
LDcgKzE2NSw3IEBAIFBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gSURCRmFjdG9yeTo6ZGVs
ZXRlRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCoKICAgICByZXR1cm4gcmVxdWVzdDsK
IH0KIAotc2hvcnQgSURCRmFjdG9yeTo6Y21wKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBmaXJzdFZhbHVlLCBjb25zdCBTY3JpcHRWYWx1ZSYgc2Vj
b25kVmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorc2hvcnQgSURCRmFjdG9yeTo6Y21wKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
JiBmaXJzdFZhbHVlLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgc2Vjb25kVmFsdWUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIERPTVJlcXVlc3RTdGF0ZSByZXF1ZXN0U3RhdGUo
Y29udGV4dCk7CiAgICAgUmVmUHRyPElEQktleT4gZmlyc3QgPSBzY3JpcHRWYWx1ZVRvSURCS2V5
KCZyZXF1ZXN0U3RhdGUsIGZpcnN0VmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRmFjdG9yeS5oCmluZGV4IDczNzRlY2YuLjc3OGZkNTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmgKQEAgLTY2LDcgKzY2LDcg
QEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gb3BlbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCB1bnNpZ25lZCBsb25nIGxvbmcg
dmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVz
dD4gZGVsZXRlRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYg
bmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgc2hvcnQgY21wKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYgZmlyc3QsIGNvbnN0IFNjcmlwdFZhbHVlJiBzZWNv
bmQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzaG9ydCBjbXAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBmaXJzdCwgY29uc3QgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUmIHNlY29uZCwgRXhjZXB0aW9uQ29kZSYpOwogCiBwcml2YXRlOgogICAg
IElEQkZhY3RvcnkoSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcAppbmRleCBkZjYzNzM0Li5lZGY0YjM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCkBA
IC03NSw3ICs3NSw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5DdXJz
b3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzCiAgICAgcmV0dXJuIHJlcXVl
c3Q7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5DdXJzb3IoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgY29u
c3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBJREJJbmRleDo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRp
cmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJJ
bmRleDo6b3BlbkN1cnNvciIpOwogICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBJ
REJLZXlSYW5nZTo6b25seShjb250ZXh0LCBrZXksIGVjKTsKQEAgLTEwMCw3ICsxMDAsNyBAQCBQ
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4Ojpjb3VudChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBQYXNzUmVmUAogICAgIHJldHVybiByZXF1ZXN0OwogfQogCi1QYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IElEQkluZGV4Ojpjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewogICAgIExPRyhTdG9yYWdlQVBJLCAiSURCSW5kZXg6OmNvdW50Iik7CiAgICAg
UmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSA9IElEQktleVJhbmdlOjpvbmx5KGNvbnRleHQs
IGtleSwgZWMpOwpAQCAtMTMwLDcgKzEzMCw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURC
SW5kZXg6Om9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKICAg
ICByZXR1cm4gcmVxdWVzdDsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6
b3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3Jp
cHRWYWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMp
CitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBr
ZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBM
T0coU3RvcmFnZUFQSSwgIklEQkluZGV4OjpvcGVuS2V5Q3Vyc29yIik7CiAgICAgUmVmUHRyPElE
QktleVJhbmdlPiBrZXlSYW5nZSA9IElEQktleVJhbmdlOjpvbmx5KGNvbnRleHQsIGtleSwgZWMp
OwpAQCAtMTM5LDcgKzEzOSw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9w
ZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKICAgICByZXR1cm4g
b3BlbktleUN1cnNvcihjb250ZXh0LCBrZXlSYW5nZS5yZWxlYXNlKCksIGRpcmVjdGlvbiwgZWMp
OwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpnZXQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpnZXQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJJbmRleDo6Z2V0
Iik7CiAgICAgUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSA9IElEQktleVJhbmdlOjpvbmx5
KGNvbnRleHQsIGtleSwgZWMpOwpAQCAtMTY5LDcgKzE2OSw3IEBAIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gSURCSW5kZXg6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNz
UmVmUHRyCiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
SURCSW5kZXg6OmdldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
Y3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVz
dD4gSURCSW5kZXg6OmdldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25z
dCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAg
ICBMT0coU3RvcmFnZUFQSSwgIklEQkluZGV4OjpnZXRLZXkiKTsKICAgICBSZWZQdHI8SURCS2V5
UmFuZ2U+IGtleVJhbmdlID0gSURCS2V5UmFuZ2U6Om9ubHkoY29udGV4dCwga2V5LCBlYyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaAppbmRleCAyNjE0ZTAy
Li5mOTU0YWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJJbmRleC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4
LmgKQEAgLTYzLDIzICs2MywyMyBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IFRyeSB0byBtb2Rp
ZnkgdGhlIGNvZGUgZ2VuZXJhdG9yIHNvIHRoaXMgaXMgdW5uZWVkZWQuCiAgICAgUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIHN0YXRpY19j
YXN0PElEQktleVJhbmdlKj4oMCksIGVjKTsgfQogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElE
QktleVJhbmdlPiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJz
b3IoY29udGV4dCwga2V5UmFuZ2UsIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCgpLCBlYyk7IH0K
LSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMp
IHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwga2V5LCBJREJDdXJzb3I6OmRpcmVjdGlvbk5l
eHQoKSwgZWMpOyB9CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
JiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIGtl
eSwgSURCQ3Vyc29yOjpkaXJlY3Rpb25OZXh0KCksIGVjKTsgfQogICAgIFBhc3NSZWZQdHI8SURC
UmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4sIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJik7Ci0g
ICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhj
ZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwg
Y29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKSB7IHJldHVybiBjb3VudChjb250ZXh0LCBzdGF0aWNfY2FzdDxJREJLZXlS
YW5nZSo+KDApLCBlYyk7IH0KICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgRXhjZXB0aW9uQ29k
ZSYpOwotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY291bnQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5LZXlDdXJzb3IoY29udGV4
dCwgc3RhdGljX2Nhc3Q8SURCS2V5UmFuZ2UqPigwKSwgZWMpOyB9CiAgICAgUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBFeGNlcHRpb25Db2RlJiBlYykgeyBy
ZXR1cm4gb3BlbktleUN1cnNvcihjb250ZXh0LCBrZXlSYW5nZSwgSURCQ3Vyc29yOjpkaXJlY3Rp
b25OZXh0KCksIGVjKTsgfQotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbktleUN1cnNv
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5
LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3BlbktleUN1cnNvcihjb250ZXh0LCBrZXks
IElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCgpLCBlYyk7IH0KKyAgICBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0
dXJuIG9wZW5LZXlDdXJzb3IoY29udGV4dCwga2V5LCBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHQo
KSwgZWMpOyB9CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgY29uc3QgU3RyaW5n
JiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFNjcmlwdFZhbHVl
JiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVj
dGlvbiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBnZXQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBFeGNlcHRp
b25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBnZXQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQ
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IGdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gZ2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVm
UHRyPElEQktleVJhbmdlPiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gZ2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYg
a2V5LCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBnZXRLZXko
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBr
ZXksIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZvaWQgbWFya0RlbGV0ZWQoKSB7IG1fZGVsZXRl
ZCA9IHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCS2V5UmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
S2V5UmFuZ2UuY3BwCmluZGV4IDcyOGY5NTMuLjNkNTRmYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5jcHAKQEAgLTQ5LDEzICs0OSwxMyBA
QCBJREJLZXlSYW5nZTo6SURCS2V5UmFuZ2UoUGFzc1JlZlB0cjxJREJLZXk+IGxvd2VyLCBQYXNz
UmVmUHRyPElEQktleT4gdXBwZXIsIExvdwogewogfQogCi1TY3JpcHRWYWx1ZSBJREJLZXlSYW5n
ZTo6bG93ZXJWYWx1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSBjb25zdAorRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUgSURCS2V5UmFuZ2U6Omxvd2VyVmFsdWUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkgY29uc3QKIHsKICAgICBET01SZXF1ZXN0U3RhdGUgcmVxdWVz
dFN0YXRlKGNvbnRleHQpOwogICAgIHJldHVybiBpZGJLZXlUb1NjcmlwdFZhbHVlKCZyZXF1ZXN0
U3RhdGUsIG1fbG93ZXIpOwogfQogCi1TY3JpcHRWYWx1ZSBJREJLZXlSYW5nZTo6dXBwZXJWYWx1
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSBjb25zdAorRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUgSURCS2V5UmFuZ2U6OnVwcGVyVmFsdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkgY29uc3QKIHsKICAgICBET01SZXF1ZXN0U3RhdGUgcmVxdWVzdFN0YXRlKGNvbnRl
eHQpOwogICAgIHJldHVybiBpZGJLZXlUb1NjcmlwdFZhbHVlKCZyZXF1ZXN0U3RhdGUsIG1fdXBw
ZXIpOwpAQCAtNzIsNyArNzIsNyBAQCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBJREJLZXlSYW5n
ZTo6b25seShQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBFeGNlcHRpb25DbwogICAgIHJldHVy
biBJREJLZXlSYW5nZTo6Y3JlYXRlKGtleSwga2V5LCBMb3dlckJvdW5kQ2xvc2VkLCBVcHBlckJv
dW5kQ2xvc2VkKTsKIH0KIAotUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6Om9u
bHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGtl
eVZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IElEQktl
eVJhbmdlOjpvbmx5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXlWYWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
RE9NUmVxdWVzdFN0YXRlIHJlcXVlc3RTdGF0ZShjb250ZXh0KTsKICAgICBSZWZQdHI8SURCS2V5
PiBrZXkgPSBzY3JpcHRWYWx1ZVRvSURCS2V5KCZyZXF1ZXN0U3RhdGUsIGtleVZhbHVlKTsKQEAg
LTg0LDcgKzg0LDcgQEAgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6Om9ubHko
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QKICAgICByZXR1cm4gSURCS2V5
UmFuZ2U6OmNyZWF0ZShrZXksIGtleSwgTG93ZXJCb3VuZENsb3NlZCwgVXBwZXJCb3VuZENsb3Nl
ZCk7CiB9CiAKLVBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IElEQktleVJhbmdlOjpsb3dlckJvdW5k
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBib3Vu
ZFZhbHVlLCBib29sIG9wZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4gSURCS2V5UmFuZ2U6Omxvd2VyQm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGJvdW5kVmFsdWUsIGJvb2wgb3Bl
biwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgRE9NUmVxdWVzdFN0YXRlIHJlcXVlc3RTdGF0
ZShjb250ZXh0KTsKICAgICBSZWZQdHI8SURCS2V5PiBib3VuZCA9IHNjcmlwdFZhbHVlVG9JREJL
ZXkoJnJlcXVlc3RTdGF0ZSwgYm91bmRWYWx1ZSk7CkBAIC05Niw3ICs5Niw3IEBAIFBhc3NSZWZQ
dHI8SURCS2V5UmFuZ2U+IElEQktleVJhbmdlOjpsb3dlckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsCiAgICAgcmV0dXJuIElEQktleVJhbmdlOjpjcmVhdGUoYm91bmQsIDAs
IG9wZW4gPyBMb3dlckJvdW5kT3BlbiA6IExvd2VyQm91bmRDbG9zZWQsIFVwcGVyQm91bmRPcGVu
KTsKIH0KIAotUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6OnVwcGVyQm91bmQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGJvdW5k
VmFsdWUsIGJvb2wgb3BlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQktleVJh
bmdlPiBJREJLZXlSYW5nZTo6dXBwZXJCb3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgYm91bmRWYWx1ZSwgYm9vbCBvcGVu
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBET01SZXF1ZXN0U3RhdGUgcmVxdWVzdFN0YXRl
KGNvbnRleHQpOwogICAgIFJlZlB0cjxJREJLZXk+IGJvdW5kID0gc2NyaXB0VmFsdWVUb0lEQktl
eSgmcmVxdWVzdFN0YXRlLCBib3VuZFZhbHVlKTsKQEAgLTEwOCw3ICsxMDgsNyBAQCBQYXNzUmVm
UHRyPElEQktleVJhbmdlPiBJREJLZXlSYW5nZTo6dXBwZXJCb3VuZChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LAogICAgIHJldHVybiBJREJLZXlSYW5nZTo6Y3JlYXRlKDAsIGJvdW5k
LCBMb3dlckJvdW5kT3Blbiwgb3BlbiA/IFVwcGVyQm91bmRPcGVuIDogVXBwZXJCb3VuZENsb3Nl
ZCk7CiB9CiAKLVBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IElEQktleVJhbmdlOjpib3VuZChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYgbG93ZXJWYWx1
ZSwgY29uc3QgU2NyaXB0VmFsdWUmIHVwcGVyVmFsdWUsIGJvb2wgbG93ZXJPcGVuLCBib29sIHVw
cGVyT3BlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQktleVJhbmdlPiBJREJL
ZXlSYW5nZTo6Ym91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmIGxvd2VyVmFsdWUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlJiB1cHBlclZhbHVlLCBib29sIGxvd2VyT3BlbiwgYm9vbCB1cHBlck9wZW4sIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIERPTVJlcXVlc3RTdGF0ZSByZXF1ZXN0U3RhdGUoY29udGV4
dCk7CiAgICAgUmVmUHRyPElEQktleT4gbG93ZXIgPSBzY3JpcHRWYWx1ZVRvSURCS2V5KCZyZXF1
ZXN0U3RhdGUsIGxvd2VyVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQktleVJhbmdlLmgKaW5kZXggNTQ3Njk1YS4uZTU1MWNmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5oCkBAIC01OSwyMyArNTksMjMg
QEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8SURCS2V5PiBsb3dlcigpIGNvbnN0IHsgcmV0dXJu
IG1fbG93ZXI7IH0KICAgICBQYXNzUmVmUHRyPElEQktleT4gdXBwZXIoKSBjb25zdCB7IHJldHVy
biBtX3VwcGVyOyB9CiAKLSAgICBTY3JpcHRWYWx1ZSBsb3dlclZhbHVlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKSBjb25zdDsKLSAgICBTY3JpcHRWYWx1ZSB1cHBlclZhbHVlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqKSBjb25zdDsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBsb3dlclZh
bHVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBjb25zdDsKKyAgICBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSB1cHBlclZhbHVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBjb25zdDsKICAgICBi
b29sIGxvd2VyT3BlbigpIGNvbnN0IHsgcmV0dXJuIG1fbG93ZXJUeXBlID09IExvd2VyQm91bmRP
cGVuOyB9CiAgICAgYm9vbCB1cHBlck9wZW4oKSBjb25zdCB7IHJldHVybiBtX3VwcGVyVHlwZSA9
PSBVcHBlckJvdW5kT3BlbjsgfQogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+
IG9ubHkoUGFzc1JlZlB0cjxJREJLZXk+IHZhbHVlLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IG9ubHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxJREJLZXlSYW5nZT4gb25seShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGxvd2VyQm91bmQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGJvdW5kLCBFeGNlcHRpb25Db2RlJiBl
YykgeyByZXR1cm4gbG93ZXJCb3VuZChjb250ZXh0LCBib3VuZCwgZmFsc2UsIGVjKTsgfQotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBsb3dlckJvdW5kKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYgYm91bmQsIGJvb2wgb3BlbiwgRXhjZXB0aW9u
Q29kZSYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBsb3dlckJvdW5kKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlJiBib3VuZCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGxvd2VyQm91bmQoY29udGV4
dCwgYm91bmQsIGZhbHNlLCBlYyk7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXlSYW5n
ZT4gbG93ZXJCb3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUmIGJvdW5kLCBib29sIG9wZW4sIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiB1cHBlckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBib3VuZCwgRXhjZXB0aW9uQ29kZSYg
ZWMpIHsgcmV0dXJuIHVwcGVyQm91bmQoY29udGV4dCwgYm91bmQsIGZhbHNlLCBlYyk7IH0KLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gdXBwZXJCb3VuZChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgU2NyaXB0VmFsdWUmIGJvdW5kLCBib29sIG9wZW4sIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gdXBwZXJCb3VuZChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYgYm91bmQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiB1cHBlckJvdW5kKGNvbnRl
eHQsIGJvdW5kLCBmYWxzZSwgZWMpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5UmFu
Z2U+IHVwcGVyQm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiBib3VuZCwgYm9vbCBvcGVuLCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gYm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGxvd2VyLCBjb25zdCBTY3JpcHRWYWx1ZSYg
dXBwZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBib3VuZChjb250ZXh0LCBsb3dlciwg
dXBwZXIsIGZhbHNlLCBmYWxzZSwgZWMpOyB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5
UmFuZ2U+IGJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlw
dFZhbHVlJiBsb3dlciwgY29uc3QgU2NyaXB0VmFsdWUmIHVwcGVyLCBib29sIGxvd2VyT3Blbiwg
RXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGJvdW5kKGNvbnRleHQsIGxvd2VyLCB1cHBlciwg
bG93ZXJPcGVuLCBmYWxzZSwgZWMpOyB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5UmFu
Z2U+IGJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYgbG93
ZXIsIGNvbnN0IFNjcmlwdFZhbHVlJiB1cHBlciwgYm9vbCBsb3dlck9wZW4sIGJvb2wgdXBwZXJP
cGVuLCBFeGNlcHRpb25Db2RlJik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+
IGJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiBsb3dlciwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHVwcGVy
LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gYm91bmQoY29udGV4dCwgbG93ZXIsIHVwcGVy
LCBmYWxzZSwgZmFsc2UsIGVjKTsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleVJhbmdl
PiBib3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYgbG93ZXIsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB1cHBl
ciwgYm9vbCBsb3dlck9wZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBib3VuZChjb250
ZXh0LCBsb3dlciwgdXBwZXIsIGxvd2VyT3BlbiwgZmFsc2UsIGVjKTsgfQorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPElEQktleVJhbmdlPiBib3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGxvd2VyLCBjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYgdXBwZXIsIGJvb2wgbG93ZXJPcGVuLCBib29sIHVwcGVyT3BlbiwgRXhjZXB0aW9u
Q29kZSYpOwogCiAgICAgYm9vbCBpc09ubHlLZXkoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCmluZGV4IDY5YmFi
ZjEuLjc4NjdmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBJREJPYmplY3RTdG9yZTo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBhc3MKICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SURC
UmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlID0gSURCS2V5UmFu
Z2U6Om9ubHkoY29udGV4dCwga2V5LCBlYyk7CiAgICAgaWYgKGVjKQpAQCAtOTQsNyArOTQsNyBA
QCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpnZXQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgY29ucwogICAgIHJldHVybiBnZXQoY29udGV4dCwga2V5UmFu
Z2UucmVsZWFzZSgpLCBlYyk7CiB9CiAKLXN0YXRpYyB2b2lkIGdlbmVyYXRlSW5kZXhLZXlzRm9y
VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIGNvbnN0IElEQkluZGV4TWV0YWRh
dGEmIGluZGV4TWV0YWRhdGEsIGNvbnN0IFNjcmlwdFZhbHVlJiBvYmplY3RWYWx1ZSwgSURCT2Jq
ZWN0U3RvcmU6OkluZGV4S2V5cyogaW5kZXhLZXlzKQorc3RhdGljIHZvaWQgZ2VuZXJhdGVJbmRl
eEtleXNGb3JWYWx1ZShET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgY29uc3QgSURCSW5k
ZXhNZXRhZGF0YSYgaW5kZXhNZXRhZGF0YSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
IG9iamVjdFZhbHVlLCBJREJPYmplY3RTdG9yZTo6SW5kZXhLZXlzKiBpbmRleEtleXMpCiB7CiAg
ICAgQVNTRVJUKGluZGV4S2V5cyk7CiAgICAgUmVmUHRyPElEQktleT4gaW5kZXhLZXkgPSBjcmVh
dGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKHJlcXVlc3RTdGF0ZSwgb2JqZWN0VmFs
dWUsIGluZGV4TWV0YWRhdGEua2V5UGF0aCk7CkBAIC0xMTcsMzEgKzExNywzMSBAQCBzdGF0aWMg
dm9pZCBnZW5lcmF0ZUluZGV4S2V5c0ZvclZhbHVlKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0
YXRlLCBjb25zdCBJREJJbgogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJP
YmplY3RTdG9yZTo6YWRkKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgU2NyaXB0VmFsdWUmIHZhbHVl
LCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8
SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmFkZChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJP
YmplY3RTdG9yZTo6YWRkIik7CiAgICAgcmV0dXJuIHB1dChJREJEYXRhYmFzZUJhY2tlbmQ6OkFk
ZE9ubHksIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBzdGF0ZSwgdmFsdWUsIGtleSwgZWMpOwogfQog
Ci1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjphZGQoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlLCBTY3JpcHRWYWx1ZSYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6YWRkKEpTQzo6RXhlY1N0YXRlKiBzdGF0
ZSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBMT0coU3RvcmFnZUFQSSwgIklEQk9iamVjdFN0b3JlOjphZGQiKTsKICAgICByZXR1cm4g
cHV0KElEQkRhdGFiYXNlQmFja2VuZDo6QWRkT25seSwgSURCQW55OjpjcmVhdGUodGhpcyksIHN0
YXRlLCB2YWx1ZSwgc3RhdGljX2Nhc3Q8SURCS2V5Kj4oMCksIGVjKTsKIH0KIAotUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
U2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2Rl
JiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgTE9H
KFN0b3JhZ2VBUEksICJJREJPYmplY3RTdG9yZTo6cHV0Iik7CiAgICAgcmV0dXJuIHB1dChJREJE
YXRhYmFzZUJhY2tlbmQ6OkFkZE9yVXBkYXRlLCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgc3RhdGUs
IHZhbHVlLCBrZXksIGVjKTsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RT
dG9yZTo6cHV0KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgU2NyaXB0VmFsdWUmIHZhbHVlLCBFeGNl
cHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1
dChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJPYmplY3RTdG9y
ZTo6cHV0Iik7CiAgICAgcmV0dXJuIHB1dChJREJEYXRhYmFzZUJhY2tlbmQ6OkFkZE9yVXBkYXRl
LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgc3RhdGUsIHZhbHVlLCBzdGF0aWNfY2FzdDxJREJLZXkq
PigwKSwgZWMpOwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpw
dXQoSURCRGF0YWJhc2VCYWNrZW5kOjpQdXRNb2RlIHB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQW55
PiBzb3VyY2UsIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgU2NyaXB0VmFsdWUmIHZhbHVlLCBjb25z
dCBTY3JpcHRWYWx1ZSYga2V5VmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KElEQkRhdGFiYXNlQmFja2VuZDo6UHV0TW9k
ZSBwdXRNb2RlLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBKU0M6OkV4ZWNTdGF0ZSogc3Rh
dGUsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmIGtleVZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3Rh
dGUoc3RhdGUpOwogICAgIERPTVJlcXVlc3RTdGF0ZSByZXF1ZXN0U3RhdGUoY29udGV4dCk7CkBA
IC0xNDksNyArMTQ5LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6
cHV0KElEQkRhdGFiYXNlQmFja2VuZDo6UHV0TW9kZSBwdXRNb2RlLAogICAgIHJldHVybiBwdXQo
cHV0TW9kZSwgc291cmNlLCBzdGF0ZSwgdmFsdWUsIGtleS5yZWxlYXNlKCksIGVjKTsKIH0KIAot
UGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KElEQkRhdGFiYXNlQmFj
a2VuZDo6UHV0TW9kZSBwdXRNb2RlLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIFNjcmlwdFZhbHVlJiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IHBy
cEtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVj
dFN0b3JlOjpwdXQoSURCRGF0YWJhc2VCYWNrZW5kOjpQdXRNb2RlIHB1dE1vZGUsIFBhc3NSZWZQ
dHI8SURCQW55PiBzb3VyY2UsIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmIHZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKICAgICBSZWZQdHI8SURCS2V5PiBrZXkgPSBwcnBLZXk7CiAgICAgaWYgKG1fZGVs
ZXRlZCkgewpAQCAtMTY3LDcgKzE2Nyw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2Jq
ZWN0U3RvcmU6OnB1dChJREJEYXRhYmFzZUJhY2tlbmQ6OlB1dE1vZGUgcHV0TW9kZSwKIAogICAg
IC8vIEZJWE1FOiBFeHBvc2UgdGhlIEpTIGVuZ2luZSBleGNlcHRpb24gc3RhdGUgdGhyb3VnaCBT
Y3JpcHRTdGF0ZS4KICAgICBib29sIGRpZFRocm93ID0gZmFsc2U7Ci0gICAgUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gdmFsdWUuc2VyaWFsaXplKHN0YXRl
LCAwLCAwLCBkaWRUaHJvdyk7CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2Vy
aWFsaXplZFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpzZXJpYWxpemUodmFsdWUsIHN0
YXRlLCBudWxscHRyLCBudWxscHRyLCBkaWRUaHJvdyk7CiAgICAgaWYgKGRpZFRocm93KSB7CiAg
ICAgICAgIC8vIFNldHRpbmcgYW4gZXhwbGljaXQgRXhjZXB0aW9uQ29kZSBoZXJlIHdvdWxkIGRl
ZmVyIGhhbmRsaW5nIHRoZSBhbHJlYWR5IHRocm93biBleGNlcHRpb24uCiAgICAgICAgIHJldHVy
biAwOwpAQCAtMjYyLDcgKzI2Miw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0
U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvCiAgICAgcmV0
dXJuIHJlcXVlc3QucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9i
amVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8
SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBJ
REJLZXlSYW5nZTo6b25seShjb250ZXh0LCBrZXksIGVjKTsKICAgICBpZiAoZWMpCkBAIC0zMzYs
NyArMzM2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGN1cnNvci0+Y29udGludWVGdW5jdGlv
bihzdGF0aWNfY2FzdDxJREJLZXkqPigwKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAKICAgICAg
ICAgICAgIFJlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkgPSBjdXJzb3ItPmlkYlByaW1hcnlLZXko
KTsKLSAgICAgICAgICAgIFNjcmlwdFZhbHVlIHZhbHVlID0gY3Vyc29yLT52YWx1ZSgpOworICAg
ICAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgdmFsdWUgPSBjdXJzb3ItPnZhbHVlKCk7
CiAKICAgICAgICAgICAgIElEQk9iamVjdFN0b3JlOjpJbmRleEtleXMgaW5kZXhLZXlzOwogICAg
ICAgICAgICAgZ2VuZXJhdGVJbmRleEtleXNGb3JWYWx1ZShyZXF1ZXN0LT5yZXF1ZXN0U3RhdGUo
KSwgbV9pbmRleE1ldGFkYXRhLCB2YWx1ZSwgJmluZGV4S2V5cyk7CkBAIC01MDIsNyArNTAyLDcg
QEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXgKICAgICByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0
LCBrZXlSYW5nZSwgSURCQ3Vyc29yOjpkaXJlY3Rpb25OZXh0KCksIGVjKTsKIH0KIAotUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2Rl
JiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3Io
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgcmV0dXJuIG9wZW5DdXJzb3Io
Y29udGV4dCwga2V5LCBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHQoKSwgZWMpOwogfQpAQCAtNTM0
LDcgKzUzNCw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5D
dXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4CiAgICAgcmV0dXJuIHJlcXVlc3Qu
cmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpv
cGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZh
bHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bh
c3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtl
eSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFJl
ZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBJREJLZXlSYW5nZTo6b25seShjb250ZXh0LCBr
ZXksIGVjKTsKICAgICBpZiAoZWMpCkBAIC01NTgsNyArNTU4LDcgQEAgUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUGEKICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Y291bnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSA9IElE
QktleVJhbmdlOjpvbmx5KGNvbnRleHQsIGtleSwgZWMpOwogICAgIGlmIChlYykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCmluZGV4IGZm
ZjVmZjkuLmRhNjVhMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9iamVjdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCT2JqZWN0U3RvcmUuaApAQCAtNjUsMjEgKzY1LDIxIEBAIHB1YmxpYzoKICAgICBQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdHJh
bnNhY3Rpb247IH0KICAgICBib29sIGF1dG9JbmNyZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX21l
dGFkYXRhLmF1dG9JbmNyZW1lbnQ7IH0KIAotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gYWRk
KEpTQzo6RXhlY1N0YXRlKiwgU2NyaXB0VmFsdWUmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBwdXQoSlNDOjpFeGVjU3RhdGUqLCBTY3JpcHRWYWx1ZSYsIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGFkZChKU0M6OkV4ZWNT
dGF0ZSosIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBh
c3NSZWZQdHI8SURCUmVxdWVzdD4gcHV0KEpTQzo6RXhlY1N0YXRlKiwgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBv
cGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJik7CiAgICAg
UGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3Qg
U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURC
UmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4sIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJik7CiAg
ICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIElE
QkRhdGFiYXNlQmFja2VuZDo6VGFza1R5cGUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IFNjcmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBjb25zdCBTdHJp
bmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXks
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGdldChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZ2V0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgRXhjZXB0aW9uQ29kZSYpOwot
ICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gYWRkKEpTQzo6RXhlY1N0YXRlKiwgU2NyaXB0VmFs
dWUmLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBwdXQoSlNDOjpFeGVjU3RhdGUqLCBTY3JpcHRWYWx1ZSYsIGNvbnN0
IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IGFkZChKU0M6OkV4ZWNTdGF0ZSosIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBh
c3NSZWZQdHI8SURCUmVxdWVzdD4gcHV0KEpTQzo6RXhlY1N0YXRlKiwgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25D
b2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBkZWxldGVGdW5jdGlvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIEV4Y2VwdGlvbkNvZGUm
KTsKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29k
ZSYpOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY2xlYXIoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIFBhc3NSZWZQdHI8SURCSW5kZXg+IGNyZWF0
ZUluZGV4KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBFeGNl
cHRpb25Db2RlJiBlYykgeyByZXR1cm4gY3JlYXRlSW5kZXgoY29udGV4dCwgbmFtZSwgSURCS2V5
UGF0aChrZXlQYXRoKSwgb3B0aW9ucywgZWMpOyB9CkBAIC05MiwxMCArOTIsMTAgQEAgcHVibGlj
OgogCiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gY291bnQoY29udGV4dCwg
c3RhdGljX2Nhc3Q8SURCS2V5UmFuZ2UqPigwKSwgZWMpOyB9CiAgICAgUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRp
b25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9u
Q29kZSYpOwogCi0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBwdXQoSURCRGF0YWJhc2VCYWNr
ZW5kOjpQdXRNb2RlLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBKU0M6OkV4ZWNTdGF0ZSos
IFNjcmlwdFZhbHVlJiwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOwot
ICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gcHV0KElEQkRhdGFiYXNlQmFja2VuZDo6UHV0TW9k
ZSwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgSlNDOjpFeGVjU3RhdGUqLCBTY3JpcHRWYWx1
ZSYsIFBhc3NSZWZQdHI8SURCS2V5PiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gcHV0KElEQkRhdGFiYXNlQmFja2VuZDo6UHV0TW9kZSwgUGFzc1JlZlB0cjxJ
REJBbnk+IHNvdXJjZSwgSlNDOjpFeGVjU3RhdGUqLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYs
IGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHB1dChJREJEYXRhYmFzZUJhY2tlbmQ6OlB1dE1vZGUs
IFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIEpTQzo6RXhlY1N0YXRlKiwgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUmLCBQYXNzUmVmUHRyPElEQktleT4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2
b2lkIG1hcmtEZWxldGVkKCkgeyBtX2RlbGV0ZWQgPSB0cnVlOyB9CiAgICAgdm9pZCB0cmFuc2Fj
dGlvbkZpbmlzaGVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCUmVxdWVzdC5jcHAKaW5kZXggMDA0OWVkYS4uZDU2NDYwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKQEAgLTIxMyw3ICsyMTMsNyBA
QCBQYXNzUmVmUHRyPElEQkN1cnNvcj4gSURCUmVxdWVzdDo6Z2V0UmVzdWx0Q3Vyc29yKCkKICAg
ICByZXR1cm4gMDsKIH0KIAotdm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHRDdXJzb3IoUGFzc1Jl
ZlB0cjxJREJDdXJzb3I+IGN1cnNvciwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0
cjxJREJLZXk+IHByaW1hcnlLZXksIGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1ZSkKK3ZvaWQgSURC
UmVxdWVzdDo6c2V0UmVzdWx0Q3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yPiBjdXJzb3IsIFBh
c3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBjb25z
dCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUpCiB7CiAgICAgQVNTRVJUKG1fcmVhZHlT
dGF0ZSA9PSBQRU5ESU5HKTsKICAgICBtX2N1cnNvcktleSA9IGtleTsKQEAgLTI4Miw3ICsyODIs
NyBAQCB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tl
bmQ+IGJhY2tlbmQsIFBhc3NSZWZQdHI8SURCSwogICAgICAgICByZXR1cm47CiAKICAgICBET01S
ZXF1ZXN0U3RhdGU6OlNjb3BlIHNjb3BlKG1fcmVxdWVzdFN0YXRlKTsKLSAgICBTY3JpcHRWYWx1
ZSB2YWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIocmVxdWVzdFN0YXRlKCksIGJ1ZmZl
cik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZh
bHVlQnVmZmVyKHJlcXVlc3RTdGF0ZSgpLCBidWZmZXIpOwogICAgIEFTU0VSVCghbV9wZW5kaW5n
Q3Vyc29yKTsKICAgICBSZWZQdHI8SURCQ3Vyc29yPiBjdXJzb3I7CiAgICAgc3dpdGNoIChtX2N1
cnNvclR5cGUpIHsKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2Vz
cyhQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWVCdWZmZXIpCiAgICAgICAgIHJldHVybjsK
IAogICAgIERPTVJlcXVlc3RTdGF0ZTo6U2NvcGUgc2NvcGUobV9yZXF1ZXN0U3RhdGUpOwotICAg
IFNjcmlwdFZhbHVlIHZhbHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihyZXF1ZXN0U3Rh
dGUoKSwgdmFsdWVCdWZmZXIpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHZhbHVlID0g
ZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihyZXF1ZXN0U3RhdGUoKSwgdmFsdWVCdWZmZXIpOwog
ICAgIG9uU3VjY2Vzc0ludGVybmFsKHZhbHVlKTsKIH0KIApAQCAtMzQ4LDcgKzM0OCw3IEBAIHZv
aWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZUJ1
ZmZlciwgUGFzc1JlZlB0cjxJREJLCiAgICAgQVNTRVJUKGtleVBhdGggPT0gZWZmZWN0aXZlT2Jq
ZWN0U3RvcmUobV9zb3VyY2UpLT5rZXlQYXRoKCkpOwogI2VuZGlmCiAgICAgRE9NUmVxdWVzdFN0
YXRlOjpTY29wZSBzY29wZShtX3JlcXVlc3RTdGF0ZSk7Ci0gICAgU2NyaXB0VmFsdWUgdmFsdWUg
PSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKHJlcXVlc3RTdGF0ZSgpLCB2YWx1ZUJ1ZmZlcik7
CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVl
QnVmZmVyKHJlcXVlc3RTdGF0ZSgpLCB2YWx1ZUJ1ZmZlcik7CiAKICAgICBSZWZQdHI8SURCS2V5
PiBwcmltYXJ5S2V5ID0gcHJwUHJpbWFyeUtleTsKICNpZm5kZWYgTkRFQlVHCkBAIC0zODMsNyAr
MzgzLDcgQEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3NJbnRlcm5hbChQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUpCiAgICAgcmV0dXJuIG9uU3VjY2Vzc0ludGVybmFs
KGRlc2VyaWFsaXplSURCVmFsdWUocmVxdWVzdFN0YXRlKCksIHZhbHVlKSk7CiB9CiAKLXZvaWQg
SURCUmVxdWVzdDo6b25TdWNjZXNzSW50ZXJuYWwoY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVlKQor
dm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3NJbnRlcm5hbChjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYgdmFsdWUpCiB7CiAgICAgbV9yZXN1bHQgPSBJREJBbnk6OmNyZWF0ZSh2YWx1ZSk7
CiAgICAgaWYgKG1fcGVuZGluZ0N1cnNvcikgewpAQCAtNDAwLDcgKzQwMCw3IEBAIHZvaWQgSURC
UmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURC
S2V5PiBwcmltYXJ5S2V5CiAgICAgICAgIHJldHVybjsKIAogICAgIERPTVJlcXVlc3RTdGF0ZTo6
U2NvcGUgc2NvcGUobV9yZXF1ZXN0U3RhdGUpOwotICAgIFNjcmlwdFZhbHVlIHZhbHVlID0gZGVz
ZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihyZXF1ZXN0U3RhdGUoKSwgYnVmZmVyKTsKKyAgICBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSB2YWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIocmVx
dWVzdFN0YXRlKCksIGJ1ZmZlcik7CiAgICAgQVNTRVJUKG1fcGVuZGluZ0N1cnNvcik7CiAgICAg
c2V0UmVzdWx0Q3Vyc29yKG1fcGVuZGluZ0N1cnNvci5yZWxlYXNlKCksIGtleSwgcHJpbWFyeUtl
eSwgdmFsdWUpOwogICAgIGVucXVldWVFdmVudChjcmVhdGVTdWNjZXNzRXZlbnQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKaW5kZXggNDMwNTg5
ZS4uYWM3NWRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJl
cXVlc3QuaApAQCAtMTIwLDcgKzEyMCw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGVucXVldWVF
dmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CiAgICAgdmlydHVhbCBib29sIHNob3VsZEVucXVldWVF
dmVudCgpIGNvbnN0OwogICAgIHZvaWQgb25TdWNjZXNzSW50ZXJuYWwoUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+KTsKLSAgICB2b2lkIG9uU3VjY2Vzc0ludGVybmFsKGNvbnN0IFNj
cmlwdFZhbHVlJik7CisgICAgdm9pZCBvblN1Y2Nlc3NJbnRlcm5hbChjb25zdCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYpOwogCiAgICAgUmVmUHRyPElEQkFueT4gbV9yZXN1bHQ7CiAgICAgdW5z
aWduZWQgc2hvcnQgbV9lcnJvckNvZGU7CkBAIC0xNDAsNyArMTQwLDcgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgZGVyZWYo
KTsgfQogCiAgICAgUGFzc1JlZlB0cjxJREJDdXJzb3I+IGdldFJlc3VsdEN1cnNvcigpOwotICAg
IHZvaWQgc2V0UmVzdWx0Q3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yPiwgUGFzc1JlZlB0cjxJ
REJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgY29uc3QgU2NyaXB0VmFsdWUm
KTsKKyAgICB2b2lkIHNldFJlc3VsdEN1cnNvcihQYXNzUmVmUHRyPElEQkN1cnNvcj4sIFBhc3NS
ZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIGNvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJik7CiAKICAgICBSZWZQdHI8SURCQW55PiBtX3NvdXJjZTsKICAg
ICBjb25zdCBJREJEYXRhYmFzZUJhY2tlbmQ6OlRhc2tUeXBlIG1fdGFza1R5cGU7CkBAIC0xNTUs
NyArMTU1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SURCQ3Vyc29yPiBtX3BlbmRpbmdDdXJz
b3I7CiAgICAgUmVmUHRyPElEQktleT4gbV9jdXJzb3JLZXk7CiAgICAgUmVmUHRyPElEQktleT4g
bV9jdXJzb3JQcmltYXJ5S2V5OwotICAgIFNjcmlwdFZhbHVlIG1fY3Vyc29yVmFsdWU7CisgICAg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgbV9jdXJzb3JWYWx1ZTsKICAgICBib29sIG1fZGlkRmly
ZVVwZ3JhZGVOZWVkZWRFdmVudDsKICAgICBib29sIG1fcHJldmVudFByb3BhZ2F0aW9uOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlS
YW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlS
YW5nZS5jcHAKaW5kZXggMGQzZDI2ZS4uNmMxMjVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmNwcApAQCAtMzIsNyAr
MzIsNyBAQAogCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFTb3Vy
Y2VTdGF0ZXMuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdz
L1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg+CiAjaW5j
bHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAKQEAgLTUwLDcgKzUwLDcgQEAgQ2FwYWJpbGl0
eVJhbmdlOjpDYXBhYmlsaXR5UmFuZ2UoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5
UmFuZ2UmIHJhbmdlSW4KIHsKIH0KIAotc3RhdGljIFNjcmlwdFZhbHVlIHNjcmlwdFZhbHVlKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2U6OlZh
bHVlVW5pb24mIHZhbHVlLCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZTo6VHlwZSB0
eXBlKQorc3RhdGljIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHNjcmlwdFZhbHVlKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2U6OlZhbHVlVW5p
b24mIHZhbHVlLCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZTo6VHlwZSB0eXBlKQog
ewogICAgIC8vIE5PVEU6IHRoZSBzcGVjIHNheXM6CiAgICAgLy8gICAgICAuLi4gYW4gaW1wbGVt
ZW50YXRpb24gc2hvdWxkIG1ha2UgYSByZWFzb25hYmxlIGF0dGVtcHQgdG8gdHJhbnNsYXRlIGFu
ZCBzY2FsZSB0aGUgaGFyZHdhcmUncyBzZXR0aW5nCkBAIC02MywyNiArNjMsMjYgQEAgc3RhdGlj
IFNjcmlwdFZhbHVlIHNjcmlwdFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTWVkaWFTdHJl
YW1Tb3VyY2VDYXBhYmlsaXQKICAgICAKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIE1l
ZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlOjpGbG9hdDoKLSAgICAgICAgcmV0dXJuIFNj
cmlwdFZhbHVlKGV4ZWMtPnZtKCksIEpTVmFsdWUodmFsdWUuYXNGbG9hdCkpOworICAgICAgICBy
ZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwgSlNWYWx1ZSh2YWx1ZS5h
c0Zsb2F0KSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2VDYXBh
YmlsaXR5UmFuZ2U6OlVMb25nOgotICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoZXhlYy0+dm0o
KSwgSlNWYWx1ZSh2YWx1ZS5hc1VMb25nKSk7CisgICAgICAgIHJldHVybiBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZShleGVjLT52bSgpLCBKU1ZhbHVlKHZhbHVlLmFzVUxvbmcpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZTo6VW5kZWZp
bmVkOgotICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwganNVbmRlZmluZWQo
KSk7CisgICAgICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBq
c1VuZGVmaW5lZCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgcmV0dXJuIFNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIGpzVW5kZWZpbmVk
KCkpOworICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBqc1Vu
ZGVmaW5lZCgpKTsKIH0KIAotU2NyaXB0VmFsdWUgQ2FwYWJpbGl0eVJhbmdlOjptaW4oRXhlY1N0
YXRlKiBleGVjKSBjb25zdAorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgQ2FwYWJpbGl0eVJhbmdl
OjptaW4oRXhlY1N0YXRlKiBleGVjKSBjb25zdAogewogICAgIHJldHVybiBzY3JpcHRWYWx1ZShl
eGVjLCBtX3JhbmdlSW5mby5taW4oKSwgbV9yYW5nZUluZm8udHlwZSgpKTsKIH0KIAotU2NyaXB0
VmFsdWUgQ2FwYWJpbGl0eVJhbmdlOjptYXgoRXhlY1N0YXRlKiBleGVjKSBjb25zdAorRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUgQ2FwYWJpbGl0eVJhbmdlOjptYXgoRXhlY1N0YXRlKiBleGVjKSBj
b25zdAogewogICAgIHJldHVybiBzY3JpcHRWYWx1ZShleGVjLCBtX3JhbmdlSW5mby5tYXgoKSwg
bV9yYW5nZUluZm8udHlwZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5oCmluZGV4IDM2ODQwNjYuLjkwNWFlM2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJh
bmdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5
UmFuZ2UuaApAQCAtMzAsOCArMzAsOCBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKICNp
bmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5oIgotI2luY2x1ZGUgIlNjcmlw
dFZhbHVlLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCisjaW5jbHVkZSA8YmluZGlu
Z3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxpbnRlcnByZXRlci9DYWxsRnJhbWUuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC00Myw4ICs0Myw4IEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyBSZWZQdHI8Q2FwYWJpbGl0eVJhbmdlPiBjcmVhdGUoY29uc3QgTWVkaWFTdHJl
YW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UmKTsKIAotICAgIFNjcmlwdFZhbHVlIG1pbihKU0M6OkV4
ZWNTdGF0ZSopIGNvbnN0OwotICAgIFNjcmlwdFZhbHVlIG1heChKU0M6OkV4ZWNTdGF0ZSopIGNv
bnN0OworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG1pbihKU0M6OkV4ZWNTdGF0ZSopIGNv
bnN0OworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG1heChKU0M6OkV4ZWNTdGF0ZSopIGNv
bnN0OwogICAgIGJvb2wgc3VwcG9ydGVkKCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZUluZm8uc3Vw
cG9ydGVkKCk7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnQuaAppbmRleCBmZDI5NDgxLi4y
YTkzZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhVHJhY2tDb25zdHJhaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5oCkBAIC0zMyw5ICszMywxMSBAQAogI2luY2x1ZGUg
IlNjcmlwdFdyYXBwYWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQorbmFtZXNwYWNlIERlcHJlY2F0ZWQgewogY2xhc3MgU2NyaXB0VmFs
dWU7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFUcmFja0NvbnN0cmFp
bnQgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVRyYWNrQ29uc3RyYWludD4sIHB1YmxpYyBTY3Jp
cHRXcmFwcGFibGUgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAKaW5kZXggODJi
ODZlOS4uMGMyOTM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5z
L1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwCkBAIC00MSw3ICs0MSw2
IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNs
dWRlICJTY3JpcHRDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5j
bHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlVzZXJBZ2VudFNjcmlwdHMuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5o
CmluZGV4IGRhYWU3YjEuLjVhMTkwN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oCkBAIC0yOCw3
ICsyOCw3IEBACiAKICNpbmNsdWRlICJQbHVnaW5SZXBsYWNlbWVudC5oIgogI2luY2x1ZGUgIlNj
cmlwdFN0YXRlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxiaW5kaW5n
cy9TY3JpcHRPYmplY3QuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Vc2VK
U0MuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKaW5kZXggYTk3MWZhMC4uNjM4
NDU5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQpAQCAtMTI0LDEyICsxMjQsMTAgQEAgbGlzdChBUFBFTkQg
V2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5j
cHAKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAogICAgIGJpbmRpbmdzL2pz
L1NjcmlwdERlYnVnU2VydmVyLmNwcAotICAgIGJpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2Fs
bC5jcHAKLSAgICBiaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwCisgICAgYmluZGluZ3MvanMv
U2NyaXB0R2xvYmFsT2JqZWN0LmNwcAogICAgIGJpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUuY3Bw
CiAgICAgYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuY3BwCiAgICAgYmluZGluZ3MvanMvU2Ny
aXB0U3RhdGUuY3BwCi0gICAgYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwCiAgICAgYmluZGlu
Z3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAogICAgIGJpbmRpbmdzL2pzL1dlYkNvcmVU
eXBlZEFycmF5Q29udHJvbGxlci5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCAzMTNkYTdh
Li5jYTdiZGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTQzMCw3ICsxNDMwLDYgQEAgX19a
Tks3V2ViQ29yZTExUmVuZGVyTGF5ZXIyNG5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZ0V2CiBfX1pO
SzdXZWJDb3JlMTFSZW5kZXJTdHlsZTExZm9udE1ldHJpY3NFdgogX19aTks3V2ViQ29yZTExUmVu
ZGVyU3R5bGUyMXZpc2l0ZWREZXBlbmRlbnRDb2xvckVpCiBfX1pOSzdXZWJDb3JlMTFSZW5kZXJT
dHlsZTRmb250RXYKLV9fWk5LN1dlYkNvcmUxMVNjcmlwdFZhbHVlOWdldFN0cmluZ0VQTjNKU0M5
RXhlY1N0YXRlRVJOM1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QxNGVu
Y2xvc2luZ0xheWVyRXYKIF9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDE1bG9jYWxUb0Fic29s
dXRlRVJLTlNfMTBGbG9hdFBvaW50RWoKIF9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDE2cmVw
YWludFJlY3RhbmdsZUVSS05TXzEwTGF5b3V0UmVjdEViCkBAIC0xNTAyLDcgKzE1MDEsNiBAQCBf
X1pOSzdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjMxZ2V0Q2xpcHBlZFZpc2libGVUZXh0UmVjdGFu
Z2xlc0VSTjNXVEY2VmVjdG9ySU5TXwogX19aTks3V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb24zNnJv
b3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudEV2CiBfX1pOSzdXZWJDb3JlMTRGcmFt
ZVNlbGVjdGlvbjZib3VuZHNFYgogX19aTks3V2ViQ29yZTE0SW5zZXJ0aW9uUG9pbnQ4aXNBY3Rp
dmVFdgotX19aTks3V2ViQ29yZTE0SW5zcGVjdG9yVmFsdWUxMnRvSlNPTlN0cmluZ0V2CiBfX1pO
SzdXZWJDb3JlMTRSZW5kZXJMaXN0SXRlbTEwbWFya2VyVGV4dEV2CiBfX1pOSzdXZWJDb3JlMTRS
ZXNvdXJjZUJ1ZmZlcjRkYXRhRXYKIF9fWk5LN1dlYkNvcmUxNFJlc291cmNlQnVmZmVyNHNpemVF
dgpAQCAtMjYyNSw3ICsyNjIzLDcgQEAgX19aTjdXZWJDb3JlMTZIVE1MSW5wdXRFbGVtZW50MjVz
ZWxlY3RDb2xvckluQ29sb3JDaG9vc2VyRVJLTlNfNUNvbG9yRQogI2lmIEVOQUJMRShJTlNQRUNU
T1IpCiBfX1pON1dlYkNvcmUxNUluc3BlY3RvckNsaWVudDMxZG9EaXNwYXRjaE1lc3NhZ2VPbkZy
b250ZW5kUGFnZUVQTlNfNFBhZ2VFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxN0luc3Bl
Y3RvckNvdW50ZXJzMTJjb3VudGVyVmFsdWVFTlMwXzExQ291bnRlclR5cGVFCi1fX1pON1dlYkNv
cmUxOUluc3BlY3RvckNvbnRyb2xsZXIxNWNvbm5lY3RGcm9udGVuZEVQTlNfMjRJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWxFCitfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxNWNvbm5l
Y3RGcm9udGVuZEVQTjlJbnNwZWN0b3IyNEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbEUKIF9fWk43
V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE4ZGlzY29ubmVjdEZyb250ZW5kRXYKIF9fWk43
V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE4c2V0UHJvZmlsZXJFbmFibGVkRWIKIF9fWk43
V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjI1ZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZEVs
UktOM1dURjZTdHJpbmdFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHBy
b2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvagppbmRleCBhM2Y4MDk3Li45NmM0NWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTE3Mjc2LDIxICsxNzI3Niw3IEBA
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgog
ICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNc
U2NyaXB0RnVuY3Rpb25DYWxsLmNwcCI+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRPYmplY3QuY3BwIiAvPgorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0R2xvYmFsT2JqZWN0LmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdFByb2ZpbGUuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0UHJvZmlsZXIuY3Bw
Ij4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBA
IC0xNzMyMCw3ICsxNzMwNiw2IEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0VmFsdWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCI+CiAgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC0xNzYzMywxNCArMTc2
MTgsNiBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3Bl
Y3RvclxJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcCI+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCci
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xX
aW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5D
YWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rp
b258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rp
b258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQWxsSW5PbmUuY3BwIj4K
ICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE3NjU3LDE0
ICsxNzYzNCw2IEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
aW5zcGVjdG9yXEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCI+Ci0gICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9X
aW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgPC9DbENvbXBp
bGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQ2FudmFz
QWdlbnQuY3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+CkBAIC0xNzkwNSwxNCArMTc4NzQsNiBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4z
MiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JWYWx1ZXMuY3BwIj4KLSAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICA8L0Ns
Q29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JX
b3JrZXJBZ2VudC5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KQEAgLTE4NTc1LDExICsxODUzNiwxOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXFdl
YkNvcmVcRGVyaXZlZFNvdXJjZXNcSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhY2Nlc3NpYmlsaXR5XEFjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjc3NcQ1NTSW1hZ2VTZXRW
YWx1ZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNc
YmluZGluZ3NcU2NyaXB0RnVuY3Rpb25DYWxsLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5nc1xTY3JpcHRPYmplY3QuaCIgLz4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzXFNjcmlwdFZh
bHVlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xo
ZWFwXEFsbG9jYXRpb25TcGFjZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9y
d2FyZGluZ0hlYWRlcnNcaGVhcFxIZWFwLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxGb3J3YXJkaW5nSGVhZGVyc1xoZWFwXFNsb3RWaXNpdG9yLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xoZWFwXFN0cm9uZ0lubGluZXMuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGhlYXBcV2Vhay5o
IiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVj
dG9yXEluc3BlY3RvckFnZW50QmFzZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
Rm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCIgLz4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvclxJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5o
IiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVj
dG9yXEluc3BlY3RvclZhbHVlcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9y
d2FyZGluZ0hlYWRlcnNcbWFzbVxYODZBc3NlbWJsZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXHBhcnNlclxTb3VyY2VDb2RlLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xwYXJzZXJcU291cmNlUHJv
dmlkZXIuaCIgLz4KQEAgLTIwNjI4LDE1ICsyMDU5NywxMyBAQAogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0Q29udHJvbGxlci5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0RGVidWdTZXJ2ZXIu
aCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdEZ1bmN0
aW9uQ2FsbC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2Ny
aXB0SGVhcFNuYXBzaG90LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5n
c1xqc1xTY3JpcHRPYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRp
bmdzXGpzXFNjcmlwdEdsb2JhbE9iamVjdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cYmluZGluZ3NcanNcU2NyaXB0UHJvZmlsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0UHJvZmlsZU5vZGUuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdFByb2ZpbGVyLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRTb3VyY2VDb2RlLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRTdGF0ZS5oIiAvPgotICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0VmFsdWUuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdFdyYXBwYWJsZS5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTb3Vy
Y2VJRC5oIiAvPgpAQCAtMjA5NDcsOCArMjA5MTQsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5caW5zcGVjdG9yXEluamVjdGVkU2NyaXB0TW9kdWxlLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQWdlbnQuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQu
aCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9y
XEluc3BlY3RvckJhc2VBZ2VudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5z
cGVjdG9yXEluc3BlY3RvckNhbnZhc0FnZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQ2FudmFzSW5zdHJ1bWVudGF0aW9uLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQ2xpZW50LmgiIC8+CkBA
IC0yMDk4NCw3ICsyMDk0OSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0
b3JcSW5zcGVjdG9yU3R5bGVTaGVldC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aW5zcGVjdG9yXEluc3BlY3RvclN0eWxlVGV4dEVkaXRvci5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCIgLz4KLSAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JWYWx1ZXMuaCIgLz4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JXZWJBZ2VudEJhc2Uu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JXb3Jr
ZXJBZ2VudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3Bl
Y3RvcldvcmtlclJlc291cmNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNw
ZWN0b3JcSW5zdHJ1bWVudGluZ0FnZW50cy5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGYwYjAyNjYu
LmY4M2EwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTI1Myw2ICsyNTMsOSBAQAogICAgIDxGaWx0ZXIg
SW5jbHVkZT0iRm9yd2FyZGluZ0hlYWRlcnMiPgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezk1
MjE2YTcwLWEzYjItNDUzYy1hNjZmLWE4MWNjMWFiZWZlZX08L1VuaXF1ZUlkZW50aWZpZXI+CiAg
ICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJGb3J3YXJkaW5nSGVhZGVyc1xiaW5k
aW5ncyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57MjEzNDMxMjQtMTIzNC00NTQyLWE4YWEt
ZWJhYzg3ODEyMzEyfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KICAgICA8Rmls
dGVyIEluY2x1ZGU9IkZvcndhcmRpbmdIZWFkZXJzXHlhcnIiPgogICAgICAgPFVuaXF1ZUlkZW50
aWZpZXI+ezNiOWIxODE5LTFiMzEtNDc3MS1iMTJhLTMyYzIxMGY4NDc2ZH08L1VuaXF1ZUlkZW50
aWZpZXI+CiAgICAgPC9GaWx0ZXI+CkBAIC00NTYzLDEwICs0NTY2LDcgQEAKICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdERlYnVnU2VydmVyLmNwcCI+CiAgICAg
ICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIj4K
LSAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdE9iamVjdC5jcHAiPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0R2xvYmFsT2JqZWN0
LmNwcCI+CiAgICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBp
bGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRQcm9maWxl
LmNwcCI+CkBAIC00NTc4LDkgKzQ1NzgsNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
YmluZGluZ3NcanNcU2NyaXB0U3RhdGUuY3BwIj4KICAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8
L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJp
bmRpbmdzXGpzXFNjcmlwdFZhbHVlLmNwcCI+Ci0gICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9G
aWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5k
aW5nc1xqc1xTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIj4KICAgICAgIDxGaWx0ZXI+YmluZGlu
Z3NcanM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTQ4MjQsMTggKzQ4MjEsMTIgQEAK
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JBZ2VudC5jcHAi
PgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5
LmNwcCI+Ci0gICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxl
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckFsbEluT25l
LmNwcCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxl
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudC5jcHAiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAg
ICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAiPgotICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0Zp
bHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3Bl
Y3RvclxJbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8
L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTQ5MjYsOSArNDkxNyw2IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAi
PgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JWYWx1ZXMuY3BwIj4K
LSAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yV29ya2VyQWdlbnQuY3Bw
Ij4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBA
IC0xMTUxMSwxMyArMTE0OTksMTAgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRp
bmdzXGpzXFNjcmlwdERlYnVnU2VydmVyLmgiPgogICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmlu
ZGluZ3NcanNcU2NyaXB0RnVuY3Rpb25DYWxsLmgiPgotICAgICAgPEZpbHRlcj5iaW5kaW5nc1xq
czwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
YmluZGluZ3NcanNcU2NyaXB0SGVhcFNuYXBzaG90LmgiPgogICAgICAgPEZpbHRlcj5iaW5kaW5n
c1xqczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cYmluZGluZ3NcanNcU2NyaXB0T2JqZWN0LmgiPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cYmluZGluZ3NcanNcU2NyaXB0R2xvYmFsT2JqZWN0LmgiPgogICAgICAgPEZpbHRlcj5iaW5k
aW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0UHJvZmlsZS5oIj4KQEAgLTExNTM1LDkgKzExNTIwLDYg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdFN0YXRlLmgi
PgogICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgot
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0VmFsdWUuaCI+Ci0g
ICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRXcmFwcGFibGUuaCI+CiAg
ICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0x
MjE5NSw2ICsxMjE3NywxNSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cc3ZnXHByb3Bl
cnRpZXNcU1ZHVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZi5oIj4KICAgICAgIDxGaWx0ZXI+
cmVuZGVyaW5nXHN2Z1xwcm9wZXJ0aWVzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5nc1xTY3JpcHRG
dW5jdGlvbkNhbGwuaCI+CisgICAgICA8RmlsdGVyPkZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdz
PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxG
b3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5nc1xTY3JpcHRPYmplY3QuaCI+CisgICAgICA8RmlsdGVy
PkZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+Cisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5nc1xTY3Jp
cHRWYWx1ZS5oIj4KKyAgICAgIDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3M8L0Zp
bHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndh
cmRpbmdIZWFkZXJzXHJ1bnRpbWVcQXJnTGlzdC5oIj4KICAgICAgIDxGaWx0ZXI+Rm9yd2FyZGlu
Z0hlYWRlcnNccnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMTIyNDAsOSAr
MTIyMzEsMjEgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJz
XGhlYXBcU3Ryb25nLmgiPgogICAgICAgPEZpbHRlcj5Gb3J3YXJkaW5nSGVhZGVyc1xoZWFwPC9G
aWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3
YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yQWdlbnRCYXNlLmgiPgorICAgICAgPEZp
bHRlcj5Gb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVk
ZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3Rv
clxJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgiPgorICAgICAgPEZpbHRlcj5Gb3J3YXJkaW5nSGVh
ZGVyc1xpbnNwZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlci5oIj4KKyAgICAgIDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9y
PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxG
b3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiPgog
ICAgICAgPEZpbHRlcj5Gb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8
L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJz
XGluc3BlY3RvclxJbnNwZWN0b3JWYWx1ZXMuaCI+CisgICAgICA8RmlsdGVyPkZvcndhcmRpbmdI
ZWFkZXJzXGluc3BlY3RvcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5caGlzdG9yeVxCYWNrRm9yd2FyZENsaWVudC5oIj4KICAgICAgIDxGaWx0
ZXI+aGlzdG9yeTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMTIzOTYsMTIgKzEyMzk5
LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQuaCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgog
ICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgiPgotICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0Zp
bHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3Bl
Y3RvclxJbnNwZWN0b3JCYXNlQWdlbnQuaCI+Ci0gICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmls
dGVyPgotICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVj
dG9yXEluc3BlY3RvckNhbnZhc0FnZW50LmgiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0Zp
bHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTEyNTA3LDcgKzEyNTA0LDcgQEAKICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JUaW1lbGluZUFnZW50LmgiPgog
ICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JWYWx1ZXMuaCI+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgi
PgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JXb3JrZXJBZ2VudC5o
Ij4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAyNjkxNGQ1Li40ZTljMTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjIxLDggKzEyMjEsNiBAQAogCQk0MDlF
QkRDNTE2QjdGM0NBMDBDQkEzRkMgLyogSlNDU1NGb250RmFjZUxvYWRFdmVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDlFQkRDNDE2QjdGM0NB
MDBDQkEzRkMgLyogSlNDU1NGb250RmFjZUxvYWRFdmVudC5jcHAgKi87IH07CiAJCTQwRUNBRTdF
MTZCOEI2NzIwMEMzNjEwMyAvKiBKU0RPTUVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MEVDQUU3RDE2QjhCNjcyMDBDMzYxMDMgLyogSlNET01F
cnJvci5oICovOyB9OwogCQk0MEVDQUU4MTE2QjhCNjhBMDBDMzYxMDMgLyogSlNET01FcnJvci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MEVDQUU4
MDE2QjhCNjhBMDBDMzYxMDMgLyogSlNET01FcnJvci5jcHAgKi87IH07Ci0JCTQxMDAyQ0NEMEY2
NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDAyQ0NCMEY2NkVERUYwMDlFNjYwRCAvKiBT
Y3JpcHRGdW5jdGlvbkNhbGwuaCAqLzsgfTsKLQkJNDEwMDJDQ0UwRjY2RURFRjAwOUU2NjBEIC8q
IFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTAwMkNDQzBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25D
YWxsLmNwcCAqLzsgfTsKIAkJNDEwQjdFNzIxMDQ1RkFCMDAwRDgyMjRGIC8qIEpTTWVzc2FnZUV2
ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxMEI3RTcxMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAg
Ki87IH07CiAJCTQxMjMwODFCMTM4QzQyOTcwMEJDQ0ZDQSAvKiBXZWJDb3JlLmZyYW1ld29yayBp
biBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjE5QjFB
MDgyNDVFNUEwMDFFOUFCQyAvKiBXZWJDb3JlLmZyYW1ld29yayAqLzsgfTsKIAkJNDEyMzA5MTMx
MzhDNDJGRjAwQkNDRkNBIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY4MjE2Mjk5MDI5RjRGQjUwMTAw
MDEzMSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi87IH07CkBAIC0xMjkxLDggKzEyODks
OCBAQAogCQk0MUYwNjE4RjBGNUYwNjk4MDBBMDdFQUMgLyogQ29uc29sZU1lc3NhZ2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGMDYxOEQwRjVG
MDY5ODAwQTA3RUFDIC8qIENvbnNvbGVNZXNzYWdlLmNwcCAqLzsgfTsKIAkJNDFGMDYyMTQwRjVG
MTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjA2MjEyMEY1RjE5MjYwMEEwN0VB
QyAvKiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmggKi87IH07CiAJCTQxRjA2MjE1MEY1RjE5
MjYwMEEwN0VBQyAvKiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjA2MjEzMEY1RjE5MjYwMEEwN0VB
QyAvKiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcCAqLzsgfTsKLQkJNDFGMDY2RTQwRjY0
QkNGNjAwQTA3RUFDIC8qIFNjcmlwdE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGMDY2RTIwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdE9i
amVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CTQxRjA2NkU1MEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRPYmplY3QuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGMDY2RTMwRjY0QkNGNjAwQTA3
RUFDIC8qIFNjcmlwdE9iamVjdC5jcHAgKi87IH07CisJCTQxRjA2NkU0MEY2NEJDRjYwMEEwN0VB
QyAvKiBTY3JpcHRHbG9iYWxPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxRjA2NkUyMEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRHbG9iYWxP
YmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk0MUYwNjZFNTBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0R2xvYmFsT2JqZWN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjA2NkUzMEY2NEJD
RjYwMEEwN0VBQyAvKiBTY3JpcHRHbG9iYWxPYmplY3QuY3BwICovOyB9OwogCQk0MUYxRDIxRjBF
RjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYxRDIxRDBFRjM1QzJBMDBEQTg3NTMg
LyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFGMUQyMjAwRUYzNUMyQTAwREE4NzUzIC8qIFNjcmlwdENh
Y2hlZEZyYW1lRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MUYxRDIxRTBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRh
LmNwcCAqLzsgfTsKIAkJNDFGNTg0QzcxMDQ2NTJDQjAwOUNBQTY0IC8qIEpTTWVzc2FnZVBvcnRD
dXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
RjU4NEM2MTA0NjUyQ0IwMDlDQUE2NCAvKiBKU01lc3NhZ2VQb3J0Q3VzdG9tLmggKi87IH07CkBA
IC0xNjA1LDggKzE2MDMsNiBAQAogCQk0RjE1MzRFMDExQjUzMzAyMDAyMUZEODYgLyogRWRpdGlu
Z0JlaGF2aW9yVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDRGMTUzNERGMTFCNTMzMDIwMDIxRkQ4NiAvKiBFZGl0aW5nQmVoYXZpb3JUeXBlcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRGMkQy
MDU0MTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYyRDIwNTIxMkVBRTdCMzAwNUMyODc0IC8q
IEluc3BlY3RvckFnZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNEYyRDIwNTUxMkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3RvckFnZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMkQyMDUz
MTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5jcHAgKi87IH07Ci0JCTRGMzI4OUI1
MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYzMjg5QjMxMUE0MkFBQjAwNUFCRTdFIC8q
IEluc3BlY3RvclZhbHVlcy5jcHAgKi87IH07Ci0JCTRGMzI4OUI2MTFBNDJBQUIwMDVBQkU3RSAv
KiBJbnNwZWN0b3JWYWx1ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDRGMzI4OUI0MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0RjRGNUZG
QjExQ0JEMkUxMDBBMTg2QkYgLyogSW5zcGVjdG9yRnJvbnRlbmQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEY0RjVGRkExMUNCRDJEMjAwQTE4NkJG
IC8qIEluc3BlY3RvckZyb250ZW5kLmNwcCAqLzsgfTsKIAkJNEY2RkRENjQxMzQxREVERDAwMUY4
RUUzIC8qIEluc3BlY3RvclBhZ2VBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0RjZGREQ2MjEzNDFERUREMDAxRjhFRTMgLyogSW5zcGVjdG9y
UGFnZUFnZW50LmNwcCAqLzsgfTsKIAkJNEY2RkRENjUxMzQxREVERDAwMUY4RUUzIC8qIEluc3Bl
Y3RvclBhZ2VBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNEY2RkRENjMxMzQxREVERDAwMUY4RUUzIC8qIEluc3BlY3RvclBhZ2VBZ2VudC5oICov
OyB9OwpAQCAtMjE5Nyw3ICsyMTkzLDYgQEAKIAkJN0E3NEVDQkIxMDE4MzlBNjAwQkY5MzlFIC8q
IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0E3NEVDQjkxMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudC5oICovOyB9OwogCQk3QTc0RUNCRDEwMTgzOURBMDBCRjkzOUUgLyogSlNJ
bnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0E3NEVDQkMxMDE4MzlEQTAwQkY5MzlFIC8qIEpTSW5zcGVj
dG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCAqLzsgfTsKIAkJN0FBMzY1RUUxMkU3MjY1NDAwRENB
MjQyIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUEzNjVFRDEyRTcyNjU0MDBEQ0EyNDIgLyogSW5zcGVj
dG9yUnVudGltZUFnZW50LmNwcCAqLzsgfTsKLQkJN0FBNTFCNkUxNDgzQjYxNjAwQUQyNzUyIC8q
IEluc3BlY3RvckJhc2VBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0FBNTFCNkMxNDgzQjYxNjAwQUQyNzUyIC8qIEluc3BlY3RvckJhc2VBZ2Vu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdB
QTUxREQ1MTQ4NTA2QTkwMEFEMjc1MiAvKiBJbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUE1MUREMzE0ODUwNkE5
MDBBRDI3NTIgLyogSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwICovOyB9OwogCQk3QUE1MURENjE0
ODUwNkE5MDBBRDI3NTIgLyogSW5zcGVjdG9yTWVtb3J5QWdlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQTUxREQ0MTQ4NTA2QTkwMEFEMjc1MiAv
KiBJbnNwZWN0b3JNZW1vcnlBZ2VudC5oICovOyB9OwogCQk3QUFCQTI1OTE0QkM2MTMzMDBBQTlB
MTEgLyogRE9NRWRpdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdBQUJBMjU3MTRCQzYxMzMwMEFBOUExMSAvKiBET01FZGl0b3IuY3BwICovOyB9
OwpAQCAtMzAxNyw4ICszMDEyLDYgQEAKIAkJOTM0NDJDOUUwRDJCMzM1QzAwMzM4RkY5IC8qIEhU
TUxUYWJsZVJvd3NDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5MzQ0MkM5RDBEMkIzMzVDMDAzMzhGRjkgLyogSFRNTFRhYmxlUm93c0Nv
bGxlY3Rpb24uaCAqLzsgfTsKIAkJOTM0NDJDQTAwRDJCMzM2MDAwMzM4RkY5IC8qIEhUTUxUYWJs
ZVJvd3NDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzNDQyQzlGMEQyQjMzNjAwMDMzOEZGOSAvKiBIVE1MVGFibGVSb3dzQ29sbGVj
dGlvbi5jcHAgKi87IH07CiAJCTkzNDkwN0U0MTI1QkJCQzgwMDdGMjNBMCAvKiBHcmFwaGljc0Nv
bnRleHRDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTM0OTA3RTMxMjVCQkJDODAwN0YyM0EwIC8qIEdyYXBoaWNzQ29udGV4dENHLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTM0Q0MwRTEwRUQzOUQ2
RjAwQTY1OEYyIC8qIFNjcmlwdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzNENDMERGMEVEMzlENkYwMEE2NThGMiAvKiBTY3JpcHRWYWx1
ZS5jcHAgKi87IH07Ci0JCTkzNENDMEUyMEVEMzlENkYwMEE2NThGMiAvKiBTY3JpcHRWYWx1ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0Q0MwRTAw
RUQzOUQ2RjAwQTY1OEYyIC8qIFNjcmlwdFZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTM0Q0MxMEEwRURCMjIzOTAwQTY1OEYyIC8qIFNj
cmlwdFNvdXJjZUNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzNENDMTA5MEVEQjIyMzkwMEE2NThGMiAvKiBTY3JpcHRTb3VyY2VDb2RlLmggKi87
IH07CiAJCTkzNEQ5QkE1MEI4QzExNkIwMDdCNDJBOSAvKiBXZWJDb3JlTlNTdHJpbmdFeHRyYXMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzREOUJB
NDBCOEMxMTZCMDA3QjQyQTkgLyogV2ViQ29yZU5TU3RyaW5nRXh0cmFzLm1tICovOyB9OwogCQk5
MzREOUJBNzBCOEMxMTc1MDA3QjQyQTkgLyogV2ViQ29yZU5TU3RyaW5nRXh0cmFzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzREOUJBNjBCOEMxMTc1
MDA3QjQyQTkgLyogV2ViQ29yZU5TU3RyaW5nRXh0cmFzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM1MjAsMTUgKzM1MTMsMTIgQEAKIAkJQTUx
M0IzRDgxMTRCMTY2QTAwMUM0MjlCIC8qIEtleUV2ZW50Q29jb2EubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUM5NzREMDExNDg1RkYxMDA2NkYyQUIg
LyogS2V5RXZlbnRDb2NvYS5tbSAqLzsgfTsKIAkJQTU0QTgyRUMxNTIyOEQyRjAwQzcyQkE2IC8q
IERPTU5vZGVQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNTRBODJFQTE1MjI4Q0EzMDBDNzJCQTYgLyogRE9NTm9kZVByaXZhdGUuaCAqLzsg
fTsKIAkJQTU0QTgyRjExNTIyOERGNjAwQzcyQkE2IC8qIERPTU5vZGVQcml2YXRlLmggaW4gQ29w
eSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NTRBODJFQTE1MjI4Q0EzMDBDNzJCQTYgLyogRE9NTm9kZVByaXZhdGUuaCAqLzsgfTsKLQkJQTU1
NkMyODgxODMyMDZBODAwOENCNzIwIC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1NkMyODYxODMyMDZB
ODAwOENCNzIwIC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwICovOyB9OwotCQlBNTU2QzI4
OTE4MzIwNkE4MDA4Q0I3MjAgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1NkMyODcxODMyMDZBODAwOENC
NzIwIC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTczMkIwQTEzNkExNjFEMDA1QzhEN0MgLyogRGF0
ZUNvbXBvbmVudHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTU3MzJCMDgxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmNwcCAqLzsg
fTsKIAkJQTU3MzJCMEIxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTczMkIwOTEzNkExNjFE
MDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCAqLzsgfTsKKwkJQTU5M0NGOEIxODQwNTM1MjAw
QkZDRTI3IC8qIEluc3BlY3RvcldlYkFnZW50QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5M0NGOEExODQwNTM1MjAwQkZDRTI3IC8qIEluc3Bl
Y3RvcldlYkFnZW50QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUE1QTJBRjBCMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUEyQUYw
OTE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuY3BwICovOyB9OwogCQlBNUEyQUYw
QzE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QTJBRjBBMTgyOTczNDMwMERFMTcyOSAvKiBQ
YWdlRGVidWdnYWJsZS5oICovOyB9OwogCQlBNUFCQjc4NzEzQjkwNEJDMDBGMTk3RTMgLyogTGlu
ZUJyZWFrSXRlcmF0b3JQb29sSUNVLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNUFCQjc4NjEzQjkwNEJDMDBGMTk3RTMgLyogTGluZUJyZWFrSXRlcmF0
b3JQb29sSUNVLmggKi87IH07Ci0JCUE1QUM0QUVGMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNUFDNEFFRDE4MzM2OTc1MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIuY3BwICovOyB9OwotCQlBNUFDNEFGMDE4MzM2OTc1MDA3MTE0RTAgLyogSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE1QUM0QUVFMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUE1QUZCMzRGMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBRkIzNEQxMTUxNTFB
NzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5jcHAgKi87IH07CiAJCUE1QUZCMzUwMTE1MTUxQTcwMEIw
NDVDQiAvKiBTdGVwUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1QUZCMzRFMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNUM1NjZBQjEyN0Ez
QUFEMDBFOEEzRkYgLyogRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QzU2NkFBMTI3QTNBQUQwMEU4QTNGRiAv
KiBEaXNrSW1hZ2VDYWNoZUNsaWVudElPUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC03OTA4LDggKzc4OTgsNiBAQAogCQk0MDlFQkRDNDE2QjdG
M0NBMDBDQkEzRkMgLyogSlNDU1NGb250RmFjZUxvYWRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NTU0ZvbnRGYWNlTG9hZEV2ZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDBFQ0FFN0QxNkI4QjY3MjAwQzM2MTAzIC8qIEpTRE9N
RXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01FcnJvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MEVDQUU4MDE2QjhCNjhBMDBDMzYxMDMgLyog
SlNET01FcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RP
TUVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDEwMDJDQ0IwRjY2RURF
RjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY3JpcHRGdW5jdGlvbkNhbGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNDEwMDJDQ0MwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRGdW5jdGlvbkNhbGwu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTBCN0U3MTEwNDVGQUIwMDBEODIy
NEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTI3RDUzNjBGOEFBQjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0U3RhdGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTM4RDMzMzEyNDQwNTQ4MDAzMjNEMzMgLyogRXZl
bnRDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50Q29udGV4
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzk4NCw4ICs3OTcyLDggQEAKIAkJ
NDFGMDYxOEQwRjVGMDY5ODAwQTA3RUFDIC8qIENvbnNvbGVNZXNzYWdlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnNvbGVNZXNzYWdlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGMDYyMTIwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3Rv
ckRhdGFiYXNlUmVzb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5z
cGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MUYwNjIxMzBGNUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JEYXRhYmFzZVJl
c291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDFGMDY2RTIwRjY0QkNG
NjAwQTA3RUFDIC8qIFNjcmlwdE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTY3JpcHRPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDFGMDY2
RTMwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0MUYwNjZFMjBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0R2xvYmFsT2JqZWN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEdsb2JhbE9iamVjdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUYwNjZFMzBGNjRCQ0Y2MDBBMDdFQUMg
LyogU2NyaXB0R2xvYmFsT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNjcmlwdEdsb2JhbE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxRjFEMjFEMEVGMzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURhdGEuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRjFEMjFFMEVGMzVDMkEwMERBODc1MyAv
KiBTY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDFGNTg0QzYxMDQ2NTJDQjAwOUNBQTY0IC8qIEpTTWVzc2FnZVBvcnRDdXN0b20u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZXNzYWdlUG9ydEN1c3RvbS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODM0NCw4ICs4MzMyLDYgQEAKIAkJNEYx
NTM0REYxMUI1MzMwMjAwMjFGRDg2IC8qIEVkaXRpbmdCZWhhdmlvclR5cGVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRpbmdCZWhhdmlvclR5cGVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGMkQyMDUyMTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0
b3JBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JBZ2Vu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RjJEMjA1MzEyRUFFN0IzMDA1QzI4
NzQgLyogSW5zcGVjdG9yQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSW5zcGVjdG9yQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0
RjMyODlCMzExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvclZhbHVlcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTRGMzI4OUI0MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0
b3JWYWx1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yVmFs
dWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGNEY1RkZBMTFDQkQyRDIwMEEx
ODZCRiAvKiBJbnNwZWN0b3JGcm9udGVuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbnNwZWN0b3JGcm9udGVuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTRGNEY1RkZDMTFDQkQzMDEwMEExODZCRiAvKiBJbnNwZWN0b3JGcm9udGVuZC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JGcm9udGVuZC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RjZGREQ2MjEzNDFERUREMDAxRjhFRTMgLyogSW5z
cGVjdG9yUGFnZUFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEluc3BlY3RvclBhZ2VBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04
OTk2LDcgKzg5ODIsNiBAQAogCQk3QTc0RUNCOTEwMTgzOUE2MDBCRjkzOUUgLyogSW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTc0
RUNCQzEwMTgzOURBMDBCRjkzOUUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbnNwZWN0b3JGcm9udGVu
ZEhvc3RDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUEzNjVFRDEy
RTcyNjU0MDBEQ0EyNDIgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdBQTUxQjZDMTQ4M0I2MTYwMEFEMjc1MiAvKiBJbnNw
ZWN0b3JCYXNlQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVj
dG9yQmFzZUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBQTUxREQzMTQ4
NTA2QTkwMEFEMjc1MiAvKiBJbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBQTUxREQ0MTQ4NTA2QTkwMEFEMjc1MiAvKiBJbnNwZWN0
b3JNZW1vcnlBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0
b3JNZW1vcnlBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUFCQTI1NzE0
QkM2MTMzMDBBQTlBMTEgLyogRE9NRWRpdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERPTUVkaXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC05ODAzLDggKzk3ODgsNiBAQAogCQk5MzQ0MkM5RDBEMkIzMzVDMDAzMzhGRjkgLyogSFRNTFRh
YmxlUm93c0NvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRN
TFRhYmxlUm93c0NvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM0
NDJDOUYwRDJCMzM2MDAwMzM4RkY5IC8qIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM0OTA3RTMxMjVCQkJDODAwN0Yy
M0EwIC8qIEdyYXBoaWNzQ29udGV4dENHLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdyYXBoaWNzQ29udGV4dENHLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTkz
NENDMERGMEVEMzlENkYwMEE2NThGMiAvKiBTY3JpcHRWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTkzNENDMEUwMEVEMzlENkYwMEE2NThGMiAvKiBTY3JpcHRWYWx1ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRWYWx1ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5MzRDQzEwOTBFREIyMjM5MDBBNjU4RjIgLyogU2NyaXB0U291
cmNlQ29kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRTb3VyY2VD
b2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNEQ5QkE0MEI4QzExNkIwMDdC
NDJBOSAvKiBXZWJDb3JlTlNTdHJpbmdFeHRyYXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV2ViQ29yZU5TU3RyaW5nRXh0cmFzLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5MzREOUJBNjBCOEMxMTc1MDA3QjQyQTkgLyogV2ViQ29yZU5TU3Ry
aW5nRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlTlNT
dHJpbmdFeHRyYXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMzQ0LDE5ICsx
MDMyNywxNiBAQAogCQlBNTE4MjI1NDE3RTJBMEQ0MDBBOUJBMUQgLyogSW5zcGVjdG9yT3Zlcmxh
eVBhZ2UuY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5jc3M7IHBhdGggPSBJbnNwZWN0b3JPdmVybGF5UGFnZS5jc3M7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE1MTgyMjU1MTdFMkEwRDQwMEE5QkExRCAvKiBJbnNwZWN0b3JP
dmVybGF5UGFnZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEluc3BlY3Rvck92ZXJsYXlQYWdl
LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTRBODJFQTE1MjI4Q0EzMDBDNzJC
QTYgLyogRE9NTm9kZVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NTm9kZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU1NkMyODYx
ODMyMDZBODAwOENCNzIwIC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1NTZDMjg3MTgzMjA2QTgwMDhDQjcyMCAvKiBJ
bnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEluc3BlY3RvckFnZW50UmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTU3MzJCMDgxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGVDb21wb25lbnRzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3MzJCMDkxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21w
b25lbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGVDb21wb25lbnRz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1OTNDRjcyMTg0MDJDRTkwMEJGQ0Uy
NyAvKiBwcm90b2NvbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IGZvbGRlcjsgcGF0aCA9IHByb3RvY29sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBNTkzQ0Y3MzE4NDAyRDRCMDBCRkNFMjcgLyogQ29kZUdlbmVyYXRvckluc3BlY3Rvci5w
eSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
c2NyaXB0LnB5dGhvbjsgcGF0aCA9IENvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHk7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1OTNDRjc0MTg0MDJENEIwMEJGQ0UyNyAvKiBDb2RlR2Vu
ZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IENvZGVHZW5lcmF0
b3JJbnNwZWN0b3JTdHJpbmdzLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTkz
Q0Y3NTE4NDAyRDRCMDBCRkNFMjcgLyogY29tYmluZS1qYXZhc2NyaXB0LXJlc291cmNlcy5wbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2Ny
aXB0LnBlcmw7IHBhdGggPSAiY29tYmluZS1qYXZhc2NyaXB0LXJlc291cmNlcy5wbCI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTNDRjhBMTg0MDUzNTIwMEJGQ0UyNyAvKiBJbnNw
ZWN0b3JXZWJBZ2VudEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5z
cGVjdG9yV2ViQWdlbnRCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QTJB
RjA5MTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlRGVidWdnYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE1QTJBRjBBMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJs
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlRGVidWdnYWJsZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUFCQjc4NjEzQjkwNEJDMDBGMTk3RTMgLyog
TGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlBNUFDNEFFRDE4MzM2OTc1MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNUFDNEFF
RTE4MzM2OTc1MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVBRkIzNEQxMTUxNTFBNzAwQjA0NUNCIC8q
IFN0ZXBSYW5nZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGVw
UmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUFGQjM0RTExNTE1MUE3
MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFN0ZXBSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUM1NjZBQTEyN0Ez
QUFEMDBFOEEzRkYgLyogRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NTAwLDEzICsxNDQ4MCw4IEBACiAJCQkJN0E1NjNGOTUxMkRG
NUM5MTAwRjQ1MzZEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmpzICovLAogCQkJCTRGMkQyMDUz
MTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5jcHAgKi8sCiAJCQkJNEYyRDIwNTIx
MkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3RvckFnZW50LmggKi8sCi0JCQkJQTU1NkMyODYxODMy
MDZBODAwOENCNzIwIC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwICovLAotCQkJCUE1NTZD
Mjg3MTgzMjA2QTgwMDhDQjcyMCAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggKi8sCiAJCQkJ
Qjg4NUU4RDIxMUUwNkREMjAwOUZGQkY0IC8qIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dC5jcHAgKi8sCiAJCQkJQjg4NUU4RDMxMUUwNkREMjAwOUZGQkY0IC8qIEluc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudC5oICovLAotCQkJCUE1QUM0QUVEMTgzMzY5NzUwMDcxMTRFMCAvKiBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgKi8sCi0JCQkJQTVBQzRBRUUxODMzNjk3NTAw
NzExNEUwIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggKi8sCi0JCQkJN0FBNTFCNkMx
NDgzQjYxNjAwQUQyNzUyIC8qIEluc3BlY3RvckJhc2VBZ2VudC5oICovLAogCQkJCUFBRDc2NkU4
MTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAgKi8sCiAJCQkJQUFE
NzY2RTkxNTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvckNhbnZhc0FnZW50LmggKi8sCiAJCQkJ
QUFENzY2RUExNTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvckNhbnZhc0luc3RydW1lbnRhdGlv
bi5oICovLApAQCAtMTQ1NzYsOCArMTQ1NTEsNyBAQAogCQkJCTgyODg5QjRCMTNDNjIzOTIwMDlB
NjE1NiAvKiBJbnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuaCAqLywKIAkJCQk3NTQxMzNBOTEwMkUw
MEY0MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgKi8sCiAJCQkJNzU0MTMz
QTcxMDJFMDBFODAwMDc1RDAwIC8qIEluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCAqLywKLQkJCQk0
RjMyODlCMzExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCAqLywKLQkJCQk0
RjMyODlCNDExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmggKi8sCisJCQkJQTU5
M0NGOEExODQwNTM1MjAwQkZDRTI3IC8qIEluc3BlY3RvcldlYkFnZW50QmFzZS5oICovLAogCQkJ
CUYzODEwQzE5MTM2NUE0OTYwMEVENkUzMyAvKiBJbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAgKi8s
CiAJCQkJRjM4MTBDMUExMzY1QTQ5NjAwRUQ2RTMzIC8qIEluc3BlY3RvcldvcmtlckFnZW50Lmgg
Ki8sCiAJCQkJRjM3NUNDMDYxMTUwRDMwMDAwOEREQjgxIC8qIEluc3BlY3RvcldvcmtlclJlc291
cmNlLmggKi8sCkBAIC0xOTY2NCwxMSArMTk2MzgsOSBAQAogCQkJCUE4M0UxQzcyMEU0OTA0MkIw
MDE0MEI5QyAvKiBTY3JpcHRDb250cm9sbGVyTWFjLm1tICovLAogCQkJCTlGNkZDMTk0MTEyMkU4
MkEwMEU4MDE5NiAvKiBTY3JpcHREZWJ1Z1NlcnZlci5jcHAgKi8sCiAJCQkJOUY2RkMxOTUxMTIy
RTgyQTAwRTgwMTk2IC8qIFNjcmlwdERlYnVnU2VydmVyLmggKi8sCi0JCQkJNDEwMDJDQ0MwRjY2
RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgKi8sCi0JCQkJNDEwMDJDQ0Iw
RjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oICovLAogCQkJCTlGM0I5NDdE
MTIyNDE3NTgwMDUzMDRFNyAvKiBTY3JpcHRIZWFwU25hcHNob3QuaCAqLywKLQkJCQk0MUYwNjZF
MzBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0T2JqZWN0LmNwcCAqLywKLQkJCQk0MUYwNjZFMjBG
NjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0T2JqZWN0LmggKi8sCisJCQkJNDFGMDY2RTMwRjY0QkNG
NjAwQTA3RUFDIC8qIFNjcmlwdEdsb2JhbE9iamVjdC5jcHAgKi8sCisJCQkJNDFGMDY2RTIwRjY0
QkNGNjAwQTA3RUFDIC8qIFNjcmlwdEdsb2JhbE9iamVjdC5oICovLAogCQkJCUYzM0YwMjgxMTIw
OTQ3RjIwMEU1NzQzQSAvKiBTY3JpcHRQcm9maWxlLmNwcCAqLywKIAkJCQk5RjcyMzA0QzExMTg0
QjQxMDBBRDAxMjYgLyogU2NyaXB0UHJvZmlsZS5oICovLAogCQkJCTlGQTM3RUUzMTE3MkZDODAw
MEM0Q0Q1NSAvKiBTY3JpcHRQcm9maWxlTm9kZS5oICovLApAQCAtMTk2NzcsOCArMTk2NDksNiBA
QAogCQkJCTkzNENDMTA5MEVEQjIyMzkwMEE2NThGMiAvKiBTY3JpcHRTb3VyY2VDb2RlLmggKi8s
CiAJCQkJNDEyN0Q1MzYwRjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0YXRlLmNwcCAqLywKIAkJ
CQk0MUM3NjBCMDBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCAqLywKLQkJCQk5MzRD
QzBERjBFRDM5RDZGMDBBNjU4RjIgLyogU2NyaXB0VmFsdWUuY3BwICovLAotCQkJCTkzNENDMEUw
MEVEMzlENkYwMEE2NThGMiAvKiBTY3JpcHRWYWx1ZS5oICovLAogCQkJCTIyOEMyODQ0MTBEODI1
MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUuaCAqLywKIAkJCQkxNDAwRDdBNzE3MTM2RUE3
MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oICovLAogCQkJCUE3NUU0OTc1MTA3
NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwICovLApAQCAtMjIxMjEs
NyArMjIwOTEsNiBAQAogCQkJCTI5QTgxMjNGMEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmls
aXR5VGFibGVIZWFkZXJDb250YWluZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjMxMEZC
QjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCBpbiBIZWFkZXJzICovLAog
CQkJCUI1RDMxREZCMTFDRjYxMEIwMDlGMjJCNCAvKiBBY3RpdmVET01DYWxsYmFjay5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJQTU1NkMyODkxODMyMDZBODAwOENCNzIwIC8qIEluc3BlY3RvckFnZW50
UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQzRERTY5MEVBNzVDMUUwMDIzQ0NENiAv
KiBBY3RpdmVET01PYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRjdFNDkxMTM3Q0Q3Qzcw
MDFEREFFNyAvKiBBZGp1c3RWaWV3U2l6ZU9yTm90LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NEQw
QzQwNjExMTVGMUVBMDAxOEFBMzQgLyogQWZmaW5lVHJhbnNmb3JtLmggaW4gSGVhZGVycyAqLywK
QEAgLTIyNDI1LDcgKzIyMzk0LDYgQEAKIAkJCQlBODBFNkQwMTBBMTk4OUNBMDA3RkI4QzUgLyog
Q1NTSW5oZXJpdGVkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2RDA4MEExOTg5Q0Ew
MDdGQjhDNSAvKiBDU1NJbml0aWFsVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNzcyRTEz
MTMzMTYyMEMwMDFFQzlDRSAvKiBDU1NMaW5lQm94Q29udGFpblZhbHVlLmggaW4gSGVhZGVycyAq
LywKLQkJCQlBNUFDNEFGMDE4MzM2OTc1MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2RDAzMEExOTg5Q0EwMDdGQjhDNSAvKiBD
U1NNZWRpYVJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUY5OEZGRjQ1MTFBMjY3NjIwMEY1NDhF
OCAvKiBDU1NPTVV0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFNkQwMDBBMTk4OUNBMDA3
RkI4QzUgLyogQ1NTUGFnZVJ1bGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjMzODgsNyArMjMzNTYs
NiBAQAogCQkJCTRGMkQyMDU0MTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjg4NUU4RDUxMUUwNkREMjAwOUZGQkY0IC8qIEluc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEY3MDdBOUExMUVGNjc5
NDAwQUNEQTY5IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJN0FBNTFCNkUxNDgzQjYxNjAwQUQyNzUyIC8qIEluc3BlY3RvckJhc2VBZ2VudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQUFENzY2RUMxNTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvckNh
bnZhc0FnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBQUQ3NjZFRDE1N0U1MDJGMDBFODU0MjMg
LyogSW5zcGVjdG9yQ2FudmFzSW5zdHJ1bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QzgxQjk1QzBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKQEAgLTIzNDI4LDcgKzIzMzk1LDYgQEAKIAkJCQk4Mjg4OUI0RDEzQzYyMzkyMDA5QTYxNTYg
LyogSW5zcGVjdG9yU3R5bGVUZXh0RWRpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk3NTQxMzNB
ODEwMkUwMEU4MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTc4REEyMEYxNTIwRUJBMzAwNjE0MUMxIC8qIEluc3BlY3RvclR5cGVCdWlsZGVy
LmggaW4gSGVhZGVycyAqLywKLQkJCQk0RjMyODlCNjExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVj
dG9yVmFsdWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGMzgxMEMxQzEzNjVBNDk2MDBFRDZFMzMg
LyogSW5zcGVjdG9yV29ya2VyQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTI5MTdE
MTREMUMwMDQyMEFBMSAvKiBSVENTdGF0c0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
Mzc1Q0MwNzExNTBEMzAwMDA4RERCODEgLyogSW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjQ1NDgsOSArMjQ1MTQsOCBAQAogCQkJCTA4QTQ4NDc4MEU1MjcyQzUw
MEMzRkU3NiAvKiBTY3JpcHRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTFDOUQ5QjBF
QjM2ODEyMDBFNDA5REIgLyogU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQ0RENzA4OTcxODM1OUY2RjAwMkIzREM2IC8qIFNhbXBsZU1hcC5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJNDEwMDJDQ0QwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOUYzQjk0N0UxMjI0MTc1ODAwNTMwNEU3IC8qIFNjcmlwdEhl
YXBTbmFwc2hvdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDFGMDY2RTQwRjY0QkNGNjAwQTA3RUFD
IC8qIFNjcmlwdE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFGMDY2RTQwRjY0QkNGNjAw
QTA3RUFDIC8qIFNjcmlwdEdsb2JhbE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYw
MzYxMkIwMjY3NjAwQzFBMzU5IC8qIFNjcmlwdFByb2Nlc3Nvck5vZGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTlGNzIzMDRGMTExODRCNDEwMEFEMDEyNiAvKiBTY3JpcHRQcm9maWxlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5RkEzN0VFNDExNzJGQzgwMDBDNENENTUgLyogU2NyaXB0UHJvZmlsZU5v
ZGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjQ1NTgsNyArMjQ1MjMsNiBAQAogCQkJCThBNDEzQUUw
MTIwN0JCQTUwMDgyMDE2RSAvKiBTY3JpcHRSdW5uZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkz
NENDMTBBMEVEQjIyMzkwMEE2NThGMiAvKiBTY3JpcHRTb3VyY2VDb2RlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MUM3NjBCMTBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTkzNENDMEUyMEVEMzlENkYwMEE2NThGMiAvKiBTY3JpcHRWYWx1ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMjI4QzI4NDUxMEQ4MjUwMDAwOUQwRDBFIC8qIFNjcmlwdFdyYXBw
YWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQwMEQ3QTgxNzEzNkVBNzAwNzdDRTA1IC8qIFNj
cmlwdFdyYXBwYWJsZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOEFFMzRGMTJFQTA5
NkEwMEVCM0FFNiAvKiBTY3JvbGxhYmxlQXJlYS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDk1Miw2
ICsyNDkxNiw3IEBACiAJCQkJMDg4QTBFMEExMjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODFERDQ5QzEzQkExQTYwMDBEQzc2MjcgLyogU1ZHUHJv
cGVydHlJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlCNTdDQjUyRTE4MkEzRUZDMDA3OUE2NDcg
LyogSW5saW5lRWxlbWVudEJveC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU5M0NGOEIxODQwNTM1
MjAwQkZDRTI3IC8qIEluc3BlY3RvcldlYkFnZW50QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDg4QTBFMEIxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5VGVhck9mZi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDg4QTBFMEMxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5VHJhaXRz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E5QTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUmFk
aWFsR3JhZGllbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI1ODAzLDcgKzI1NzY4LDYg
QEAKIAkJCQk1OUI1OTc3MzExMDg2NTZCMDA3MTU5RTggLyogQnJpZGdlSlNDLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUY1NUIzREFGMTI1MUYxMkQwMDNFRjI2OSAvKiBCdXR0b25JbnB1dFR5cGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlDRjcwRDdFMkI4MjAwN0MzOTgzIC8qIGNfY2xh
c3MuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTVBQzRBRUYxODMzNjk3NTAwNzExNEUwIC8qIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5Q0Y5
MEQ3RTJCODIwMDdDMzk4MyAvKiBjX2luc3RhbmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFB
NTY5Q0ZCMEQ3RTJCODIwMDdDMzk4MyAvKiBjX3J1bnRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUE1NjlDRkQwRDdFMkI4MjAwN0MzOTgzIC8qIGNfdXRpbGl0eS5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTI2Njg0LDcgKzI2NjQ4LDYgQEAKIAkJCQkwNzI3N0U0RTE3RDAxOENDMDAxNTUzNEQg
LyogSlNNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTc1NDEzM0FBMTAyRTAwRjQwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTU3M0QxMzQ3MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0
b3JUeXBlQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0RjMyODlCNTExQTQyQUFCMDA1
QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUYzODEwQzFC
MTM2NUE0OTYwMEVENkUzMyAvKiBJbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlGMzUwQjczNTEzRjEzNzdEMDA4ODBDNDMgLyogSW5zdHJ1bWVudGluZ0FnZW50cy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjc1MzU2MDBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9p
bnRDRy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3Nzg5LDE0ICsyNzc1MiwxMiBAQAogCQkJCTQ5
OThBRUQxMTNGQjIyNEQwMDkwQjFBQSAvKiBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMDhBNDg0NzcwRTUyNzJDNTAwQzNGRTc2IC8qIFNjcmlwdEVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTExQzlEQjAwRUIzNjk5NTAwRTQwOURCIC8q
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDEwMDJDQ0Uw
RjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQk0MUYwNjZFNTBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0T2JqZWN0LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTQxRjA2NkU1MEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRHbG9iYWxPYmpl
Y3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwMzUxMkIwMjY3NjAwQzFBMzU5IC8qIFNj
cmlwdFByb2Nlc3Nvck5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjMzRjAyODIxMjA5NDdG
MjAwRTU3NDNBIC8qIFNjcmlwdFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOUY3MjMw
NTAxMTE4NEI0MTAwQUQwMTI2IC8qIFNjcmlwdFByb2ZpbGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCThBNDEzQUUxMTIwN0JCQTUwMDgyMDE2RSAvKiBTY3JpcHRSdW5uZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDEyN0Q1MzcwRjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0YXRlLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCTkzNENDMEUxMEVEMzlENkYwMEE2NThGMiAvKiBTY3JpcHRWYWx1
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzhBRTM0RTEyRUEwOTZBMDBFQjNBRTYgLyogU2Ny
b2xsYWJsZUFyZWEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0EzQkY2N0MxMEQ5OUJBRTAwRTZD
RTUzIC8qIFNjcm9sbEFuaW1hdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNTExNTZFMTJC
MTc0OUMwMEM5Njc1NCAvKiBTY3JvbGxBbmltYXRvck1hYy5tbSBpbiBTb3VyY2VzICovLApAQCAt
Mjc4ODgsNyArMjc4NDksNiBAQAogCQkJCUFBMkE1QUQ1MTZBNDg2MTQwMDk3NUEyNSAvKiBTcGVl
Y2hTeW50aGVzaXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUEyQTVBRDMxNkE0ODYwRDAwOTc1
QTI1IC8qIFNwZWVjaFN5bnRoZXNpc0V2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFBMkE1
QUQxMTZBNDg2MDcwMDk3NUEyNSAvKiBTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJQTU1NkMyODgxODMyMDZBODAwOENCNzIwIC8qIEluc3BlY3RvckFnZW50
UmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUEyQTVBQ0QxNkE0ODVGQTAwOTc1QTI1
IC8qIFNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3OEZFMTNC
MTIzNjZCMTAwMEFDRThEMCAvKiBTcGVsbENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QjhEQkRCNEQxMzBCMEY4QTAwRjVDREIxIC8qIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9E
aWN0aW9uYXJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmgKaW5k
ZXggOTRkYTg3OC4uZmQ0YmVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvRGljdGlvbmFyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25h
cnkuaApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkpTRGljdGlvbmFyeS5oIgogI2luY2x1
ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5j
bHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtOTIsNyArOTIsNyBAQCBQYXNzUmVm
UHRyPEV2ZW50TGlzdGVuZXI+IERpY3Rpb25hcnk6OmdldEV2ZW50TGlzdGVuZXIoY29uc3QgY2hh
ciogcHJvcGVydHlOYW1lLAogICAgIGlmICghbV9kaWN0aW9uYXJ5LmlzVmFsaWQoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICBTY3JpcHRWYWx1ZSBldmVudExpc3RlbmVyOworICAgIERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlIGV2ZW50TGlzdGVuZXI7CiAgICAgaWYgKCFtX2RpY3Rpb25hcnku
dHJ5R2V0UHJvcGVydHkocHJvcGVydHlOYW1lLCBldmVudExpc3RlbmVyKSkKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgaWYgKGV2ZW50TGlzdGVuZXIuaGFzTm9WYWx1ZSgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAppbmRleCBiOGYx
YmM4Li43YTc3ZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJC
aW5kaW5nVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJC
aW5kaW5nVXRpbGl0aWVzLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIHN0YXRpYyBKU1ZhbHVlIGdl
dE50aFZhbHVlT25LZXlQYXRoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSByb290VmFsdWUsIGNv
bnN0IFZlCiAgICAgcmV0dXJuIGN1cnJlbnRWYWx1ZTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8
SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCitz
dGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtl
eVBhdGgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFs
dWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiBrZXlQYXRo
RWxlbWVudHM7CiAgICAgSURCS2V5UGF0aFBhcnNlRXJyb3IgZXJyb3I7CkBAIC0yMjgsNyArMjI4
LDcgQEAgc3RhdGljIGJvb2wgY2FuSW5qZWN0TnRoVmFsdWVPbktleVBhdGgoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHJvb3RWYWx1ZSwgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3Rh
dGUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgSURC
S2V5UGF0aCYga2V5UGF0aCkKK2Jvb2wgaW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKERPTVJl
cXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCiB7CiAg
ICAgTE9HKFN0b3JhZ2VBUEksICJpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUiKTsKIApAQCAt
MjU0LDcgKzI1NCw3IEBAIGJvb2wgaW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKERPTVJlcXVl
c3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBQYXNzUmVmUHRyPElEQktlCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLVBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRL
ZXlQYXRoKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBjb25zdCBTY3JpcHRWYWx1ZSYg
dmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCitQYXNzUmVmUHRyPElEQktleT4gY3Jl
YXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChET01SZXF1ZXN0U3RhdGUqIHJlcXVl
c3RTdGF0ZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBJREJL
ZXlQYXRoJiBrZXlQYXRoKQogewogICAgIExPRyhTdG9yYWdlQVBJLCAiY3JlYXRlSURCS2V5RnJv
bVNjcmlwdFZhbHVlQW5kS2V5UGF0aCIpOwogICAgIEFTU0VSVCgha2V5UGF0aC5pc051bGwoKSk7
CkBAIC0yNzcsNyArMjc3LDcgQEAgUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21T
Y3JpcHRWYWx1ZUFuZEtleVBhdGgoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXMKICAgICByZXR1cm4g
Y3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChleGVjLCB2YWx1ZSwga2V5UGF0
aC5zdHJpbmcoKSk7CiB9CiAKLWJvb2wgY2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKERP
TVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBjb25zdCBTY3JpcHRWYWx1ZSYgc2NyaXB0VmFs
dWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCitib29sIGNhbkluamVjdElEQktleUludG9T
Y3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgY29uc3QgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUmIHNjcmlwdFZhbHVlLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQog
ewogICAgIExPRyhTdG9yYWdlQVBJLCAiY2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlIik7
CiAKQEAgLTI5NCwxNiArMjk0LDE2IEBAIGJvb2wgY2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZh
bHVlKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBjb25zdCBTY3JpcHRWCiAgICAgcmV0
dXJuIGNhbkluamVjdE50aFZhbHVlT25LZXlQYXRoKGV4ZWMsIHNjcmlwdFZhbHVlLmpzVmFsdWUo
KSwga2V5UGF0aEVsZW1lbnRzLCBrZXlQYXRoRWxlbWVudHMuc2l6ZSgpIC0gMSk7CiB9CiAKLVNj
cmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3Rh
dGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBwcnBWYWx1ZSkKK0RlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1
ZXN0U3RhdGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBwcnBWYWx1ZSkKIHsK
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSByZXF1ZXN0U3RhdGUtPmV4ZWMoKTsKICAgICBSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUgPSBwcnBWYWx1ZTsKICAgICBp
ZiAoc2VyaWFsaXplZFZhbHVlKQotICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWU6OmRlc2VyaWFs
aXplKGV4ZWMsIHNlcmlhbGl6ZWRWYWx1ZS5nZXQoKSwgTm9uVGhyb3dpbmcpOwotICAgIHJldHVy
biBTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBqc051bGwoKSk7CisgICAgICAgIHJldHVybiBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKGV4ZWMsIHNlcmlhbGl6ZWRWYWx1ZS5nZXQo
KSwgTm9uVGhyb3dpbmcpOworICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShleGVj
LT52bSgpLCBqc051bGwoKSk7CiB9CiAKLVNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWVC
dWZmZXIoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIFBhc3NSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBwcnBCdWZmZXIpCitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZh
bHVlQnVmZmVyKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gcHJwQnVmZmVyKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHJlcXVlc3RTdGF0
ZS0+ZXhlYygpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBycEJ1ZmZlcjsK
QEAgLTMxMiwxOCArMzEyLDE4IEBAIFNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWVCdWZm
ZXIoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIFBhc3NSZWZQdHI8CiAgICAgICAgIFZl
Y3Rvcjx1aW50OF90PiB2YWx1ZTsKICAgICAgICAgdmFsdWUuYXBwZW5kKGJ1ZmZlci0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHNlcmlhbGl6ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmVC
eXRlcyh2YWx1ZSk7Ci0gICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoZXhl
Yywgc2VyaWFsaXplZFZhbHVlLmdldCgpLCBOb25UaHJvd2luZyk7CisgICAgICAgIHJldHVybiBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKGV4ZWMsIHNlcmlhbGl6ZWRWYWx1ZS5n
ZXQoKSwgTm9uVGhyb3dpbmcpOwogICAgIH0KLSAgICByZXR1cm4gU2NyaXB0VmFsdWUoZXhlYy0+
dm0oKSwganNOdWxsKCkpOworICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShleGVj
LT52bSgpLCBqc051bGwoKSk7CiB9CiAKLVNjcmlwdFZhbHVlIGlkYktleVRvU2NyaXB0VmFsdWUo
RE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXkpCitE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBpZGJLZXlUb1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0
ZSogcmVxdWVzdFN0YXRlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5KQogewogICAgIEV4ZWNTdGF0
ZSogZXhlYyA9IHJlcXVlc3RTdGF0ZS0+ZXhlYygpOwotICAgIHJldHVybiBTY3JpcHRWYWx1ZShl
eGVjLT52bSgpLCBpZGJLZXlUb0pTVmFsdWUoZXhlYywganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwga2V5LmdldCgpKSk7CisgICAgcmV0dXJu
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIGlkYktleVRvSlNWYWx1ZShleGVj
LCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkp
LCBrZXkuZ2V0KCkpKTsKIH0KIAotUGFzc1JlZlB0cjxJREJLZXk+IHNjcmlwdFZhbHVlVG9JREJL
ZXkoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBzY3Jp
cHRWYWx1ZSkKK1Bhc3NSZWZQdHI8SURCS2V5PiBzY3JpcHRWYWx1ZVRvSURCS2V5KERPTVJlcXVl
c3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgc2Ny
aXB0VmFsdWUpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gcmVxdWVzdFN0YXRlLT5leGVjKCk7
CiAgICAgcmV0dXJuIGNyZWF0ZUlEQktleUZyb21WYWx1ZShleGVjLCBzY3JpcHRWYWx1ZS5qc1Zh
bHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGlu
Z1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxp
dGllcy5oCmluZGV4IDkwOGM3ZmQuLmYwMTJhZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKLSNpbmNs
dWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDEsMTMg
KzQxLDEzIEBAIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogSURCS2V5UGF0aCBpZGJLZXlQYXRoRnJv
bVZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlKTsKIAotYm9vbCBpbmplY3RJREJL
ZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxJREJLZXk+LCBT
Y3JpcHRWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsKLVBhc3NSZWZQdHI8SURCS2V5PiBjcmVh
dGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKERPTVJlcXVlc3RTdGF0ZSosIGNvbnN0
IFNjcmlwdFZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOwotYm9vbCBjYW5JbmplY3RJREJLZXlJ
bnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiwgY29uc3QgU2NyaXB0VmFsdWUmLCBjb25z
dCBJREJLZXlQYXRoJik7Ci1TY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVlKERPTVJlcXVl
c3RTdGF0ZSosIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7Ci1TY3JpcHRWYWx1
ZSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKERPTVJlcXVlc3RTdGF0ZSosIFBhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPik7Ci1TY3JpcHRWYWx1ZSBpZGJLZXlUb1NjcmlwdFZhbHVlKERPTVJlcXVl
c3RTdGF0ZSosIFBhc3NSZWZQdHI8SURCS2V5Pik7Ci1QYXNzUmVmUHRyPElEQktleT4gc2NyaXB0
VmFsdWVUb0lEQktleShET01SZXF1ZXN0U3RhdGUqLCBjb25zdCBTY3JpcHRWYWx1ZSYpOworYm9v
bCBpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0
cjxJREJLZXk+LCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsK
K1Bhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRo
KERPTVJlcXVlc3RTdGF0ZSosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgY29uc3Qg
SURCS2V5UGF0aCYpOworYm9vbCBjYW5JbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVx
dWVzdFN0YXRlKiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBjb25zdCBJREJLZXlQ
YXRoJik7CitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVlKERPTVJl
cXVlc3RTdGF0ZSosIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CitEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKERPTVJlcXVlc3RTdGF0
ZSosIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPik7CitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBp
ZGJLZXlUb1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSosIFBhc3NSZWZQdHI8SURCS2V5Pik7
CitQYXNzUmVmUHRyPElEQktleT4gc2NyaXB0VmFsdWVUb0lEQktleShET01SZXF1ZXN0U3RhdGUq
LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCmluZGV4IDU3Nzk4OWEu
LmEzMGY3OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGlu
Z3NBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5n
c0FsbEluT25lLmNwcApAQCAtMTQ5LDcgKzE0OSw2IEBACiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0
YWNrRmFjdG9yeS5jcHAiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5jcHAiCiAjaW5jbHVk
ZSAiU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIgotI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5j
cHAiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZXIuY3BwIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRl
LmNwcCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAKaW5kZXggN2VkYjFkNS4uNGMyODgyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCkBAIC0zNyw3
ICszNyw2IEBACiAjaW5jbHVkZSAiSlNTdG9yYWdlLmgiCiAjaW5jbHVkZSAiSlNUcmFja0N1c3Rv
bS5oIgogI2luY2x1ZGUgIkpTVm9pZENhbGxiYWNrLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUu
aCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlIDxydW50aW1l
L0pTVHlwZWRBcnJheXMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMTQ0LDkgKzE0
Myw5IEBAIHZvaWQgSlNEaWN0aW9uYXJ5Ojpjb252ZXJ0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHZhbHVlLCBWZWN0b3I8U3RyaW5nPiYKICAgICB9CiB9CiAKLXZvaWQgSlNEaWN0aW9u
YXJ5Ojpjb252ZXJ0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBTY3JpcHRW
YWx1ZSYgcmVzdWx0KQordm9pZCBKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgdmFsdWUsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiByZXN1bHQpCiB7
Ci0gICAgcmVzdWx0ID0gU2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwgdmFsdWUpOworICAgIHJlc3Vs
dCA9IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIHZhbHVlKTsKIH0KIAogdm9p
ZCBKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFs
dWUsIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiByZXN1bHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCmluZGV4IGEyOTA1NmYuLjNhOGUyY2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCkBAIC0zNCw2ICszNCwxMCBA
QAogI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAKK25hbWVzcGFjZSBEZXByZWNhdGVkIHsKK2NsYXNzIFNjcmlwdFZhbHVlOworfQorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFycmF5VmFsdWU7CkBAIC00Niw3ICs1MCw2IEBA
IGNsYXNzIE1lZGlhS2V5RXJyb3I7CiBjbGFzcyBNZWRpYVN0cmVhbTsKIGNsYXNzIE1lZGlhU3Ry
ZWFtVHJhY2s7CiBjbGFzcyBOb2RlOwotY2xhc3MgU2NyaXB0VmFsdWU7CiBjbGFzcyBTZXJpYWxp
emVkU2NyaXB0VmFsdWU7CiBjbGFzcyBTdG9yYWdlOwogY2xhc3MgVHJhY2tCYXNlOwpAQCAtMTA4
LDcgKzExMSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBkb3VibGUmIHJlc3VsdCk7CiAgICAgc3RhdGljIHZv
aWQgY29udmVydFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBEaWN0aW9uYXJ5
JiByZXN1bHQpOwogICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6SlNWYWx1ZSwgU3RyaW5nJiByZXN1bHQpOwotICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRW
YWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgU2NyaXB0VmFsdWUmIHJlc3VsdCk7
CisgICAgc3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1Zh
bHVlLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgcmVzdWx0KTsKICAgICBzdGF0aWMgdm9pZCBj
b252ZXJ0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIFZlY3RvcjxTdHJpbmc+
JiByZXN1bHQpOwogICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6SlNWYWx1ZSwgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mIHJlc3VsdCk7CiAg
ICAgc3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVl
LCBSZWZQdHI8RE9NV2luZG93PiYgcmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAKaW5kZXggZmU2Yzhi
YS4uN2FkMzZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
Q2FudmFzRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAKQEAgLTMxLDEzICszMSwxNCBAQAogI2luY2x1
ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2FudmFzSW5zdHJ1
bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCIKLSNp
bmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3Qu
aD4KKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CisKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVk
ZSAiSlNEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCIK
ICNpbmNsdWRlICJXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmgiCiAjZW5kaWYKLSNpbmNsdWRlIDx3
dGYvR2V0UHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKQEAgLTg1LDggKzg2LDggQEAg
SlNWYWx1ZSBKU0hUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KEV4ZWNTdGF0ZSogZXhlYykK
ICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIEpTVmFsdWUganNWYWx1ZSA9IHRvSlMoZXhl
YywgZ2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGNvbnRleHQpKTsKICAgICBpZiAoSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpjYW52YXNBZ2VudEVuYWJsZWQoJmNhbnZhcy5kb2N1bWVudCgp
KSkgewotICAgICAgICBTY3JpcHRPYmplY3QgY29udGV4dE9iamVjdChleGVjLCBqc1ZhbHVlLmdl
dE9iamVjdCgpKTsKLSAgICAgICAgU2NyaXB0T2JqZWN0IHdyYXBwZWQ7CisgICAgICAgIERlcHJl
Y2F0ZWQ6OlNjcmlwdE9iamVjdCBjb250ZXh0T2JqZWN0KGV4ZWMsIGpzVmFsdWUuZ2V0T2JqZWN0
KCkpOworICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3Qgd3JhcHBlZDsKICAgICAgICAg
aWYgKGNvbnRleHQtPmlzMmQoKSkKICAgICAgICAgICAgIHdyYXBwZWQgPSBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndyYXBDYW52YXMyRFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRp
b24oJmNhbnZhcy5kb2N1bWVudCgpLCBjb250ZXh0T2JqZWN0KTsKICNpZiBFTkFCTEUoV0VCR0wp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0
SG9zdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2Ny
aXB0SG9zdEN1c3RvbS5jcHAKaW5kZXggNjk5OWZiZS4uMGI0NTIxNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9t
LmNwcApAQCAtNDQsMTUgKzQ0LDE1IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0Lmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSlNF
dmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiSlNIVE1MQWxsQ29sbGVjdGlvbi5oIgogI2luY2x1
ZGUgIkpTSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRlICJK
U05vZGVMaXN0LmgiCiAjaW5jbHVkZSAiSlNTdG9yYWdlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFs
dWUuaCIKICNpbmNsdWRlICJTdG9yYWdlLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFs
dWUuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8
cGFyc2VyL1NvdXJjZUNvZGUuaD4KICNpbmNsdWRlIDxydW50aW1lL0RhdGVJbnN0YW5jZS5oPgog
I2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KQEAgLTY5LDIwICs2OSwyMCBAQCB1c2luZyBuYW1l
c3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU5vZGUqIEluamVjdGVkU2NyaXB0
SG9zdDo6c2NyaXB0VmFsdWVBc05vZGUoU2NyaXB0VmFsdWUgdmFsdWUpCitOb2RlKiBJbmplY3Rl
ZFNjcmlwdEhvc3Q6OnNjcmlwdFZhbHVlQXNOb2RlKERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHZh
bHVlKQogewogICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSB8fCB2YWx1ZS5pc051bGwoKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIHRvTm9kZSh2YWx1ZS5qc1ZhbHVlKCkpOwogfQog
Ci1TY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdEhvc3Q6Om5vZGVBc1NjcmlwdFZhbHVlKEpTQzo6
RXhlY1N0YXRlKiBzdGF0ZSwgTm9kZSogbm9kZSkKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIElu
amVjdGVkU2NyaXB0SG9zdDo6bm9kZUFzU2NyaXB0VmFsdWUoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCBOb2RlKiBub2RlKQogewogICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb05vZGUoc3RhdGUs
IG5vZGUpKQotICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoc3RhdGUtPnZtKCksIGpzTnVsbCgp
KTsKKyAgICAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKHN0YXRlLT52bSgpLCBq
c051bGwoKSk7CiAKICAgICBKU0xvY2tIb2xkZXIgbG9jayhzdGF0ZSk7Ci0gICAgcmV0dXJuIFNj
cmlwdFZhbHVlKHN0YXRlLT52bSgpLCB0b0pTKHN0YXRlLCBkZXByZWNhdGVkR2xvYmFsT2JqZWN0
Rm9yUHJvdG90eXBlKHN0YXRlKSwgbm9kZSkpOworICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZShzdGF0ZS0+dm0oKSwgdG9KUyhzdGF0ZSwgZGVwcmVjYXRlZEdsb2JhbE9iamVjdEZv
clByb3RvdHlwZShzdGF0ZSksIG5vZGUpKTsKIH0KIAogSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0
SG9zdDo6aW5zcGVjdGVkT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKQEAgLTk1LDcgKzk1LDcgQEAg
SlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdGVkT2JqZWN0KEV4ZWNTdGF0ZSog
ZXhlYykKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKICAgICBKU0xvY2tIb2xkZXIg
bG9jayhleGVjKTsKLSAgICBTY3JpcHRWYWx1ZSBzY3JpcHRWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4
ZWMpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHNjcmlwdFZhbHVlID0gb2JqZWN0LT5n
ZXQoZXhlYyk7CiAgICAgaWYgKHNjcmlwdFZhbHVlLmhhc05vVmFsdWUoKSkKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAKQEAgLTI0Nyw4ICsyNDcsOCBAQCBKU1ZhbHVlIEpTSW5qZWN0
ZWRTY3JpcHRIb3N0OjpnZXRFdmVudExpc3RlbmVycyhFeGVjU3RhdGUqIGV4ZWMpCiBKU1ZhbHVl
IEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBp
ZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDIpIHsKLSAgICAgICAgU2NyaXB0VmFsdWUgb2Jq
ZWN0KGV4ZWMtPnZtKCksIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKLSAgICAgICAgU2Ny
aXB0VmFsdWUgaGludHMoZXhlYy0+dm0oKSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSkpOwor
ICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBvYmplY3QoZXhlYy0+dm0oKSwgZXhlYy0+
dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBo
aW50cyhleGVjLT52bSgpLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKSk7CiAgICAgICAgIGlt
cGwoKS5pbnNwZWN0SW1wbChvYmplY3QudG9JbnNwZWN0b3JWYWx1ZShleGVjKSwgaGludHMudG9J
bnNwZWN0b3JWYWx1ZShleGVjKSk7CiAgICAgfQogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1h
bmFnZXIuY3BwCmluZGV4IDJkYmUyZGUuLmE2ZGE2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKQEAgLTQxLDcg
KzQxLDcgQEAKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgogI2luY2x1ZGUgIkpTSW5q
ZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCi0j
aW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0T2JqZWN0
Lmg+CiAjaW5jbHVkZSA8cGFyc2VyL1NvdXJjZUNvZGUuaD4KICNpbmNsdWRlIDxydW50aW1lL0pT
TG9jay5oPgogCkBAIC00OSw3ICs0OSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotU2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3Jl
YXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEpTQzo6RXhlY1N0YXRlKiBz
Y3JpcHRTdGF0ZSwgaW50IGlkKQorRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IEluamVjdGVkU2Ny
aXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEpT
Qzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgaW50IGlkKQogewogICAgIEpTTG9ja0hvbGRlciBs
b2NrKHNjcmlwdFN0YXRlKTsKIApAQCAtNjYsMTMgKzY2LDEzIEBAIFNjcmlwdE9iamVjdCBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYgc291
cmNlLCBKCiAgICAgICAgIGV2YWx1YXRpb25SZXR1cm5WYWx1ZSA9IEpTQzo6ZXZhbHVhdGUoc2Ny
aXB0U3RhdGUsIHNvdXJjZUNvZGUsIGdsb2JhbFRoaXNWYWx1ZSwgJmV2YWx1YXRpb25FeGNlcHRp
b24pOwogICAgIH0KICAgICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJu
IFNjcmlwdE9iamVjdCgpOworICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0
KCk7CiAKICAgICBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBldmFsdWF0aW9uUmV0dXJuVmFsdWU7
CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxs
RGF0YShmdW5jdGlvblZhbHVlLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxU
eXBlTm9uZSkKLSAgICAgICAgcmV0dXJuIFNjcmlwdE9iamVjdCgpOworICAgICAgICByZXR1cm4g
RGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KCk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBh
cmdzOwogICAgIGFyZ3MuYXBwZW5kKHRvSlMoc2NyaXB0U3RhdGUsIGdsb2JhbE9iamVjdCwgbV9p
bmplY3RlZFNjcmlwdEhvc3QuZ2V0KCkpKTsKQEAgLTgxLDggKzgxLDggQEAgU2NyaXB0T2JqZWN0
IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5n
JiBzb3VyY2UsIEoKIAogICAgIEpTVmFsdWUgcmVzdWx0ID0gSlNDOjpjYWxsKHNjcmlwdFN0YXRl
LCBmdW5jdGlvblZhbHVlLCBjYWxsVHlwZSwgY2FsbERhdGEsIGdsb2JhbFRoaXNWYWx1ZSwgYXJn
cyk7CiAgICAgaWYgKHJlc3VsdC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gU2NyaXB0T2Jq
ZWN0KHNjcmlwdFN0YXRlLCByZXN1bHQuZ2V0T2JqZWN0KCkpOwotICAgIHJldHVybiBTY3JpcHRP
YmplY3QoKTsKKyAgICAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdChzY3JpcHRT
dGF0ZSwgcmVzdWx0LmdldE9iamVjdCgpKTsKKyAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0
T2JqZWN0KCk7CiB9CiAKIGJvb2wgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjYW5BY2Nlc3NJbnNw
ZWN0ZWRXaW5kb3coSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAKaW5kZXggNDI5
M2E0Ni4uYTU4YzhmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNN
YWluVGhyZWFkRXhlY1N0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U01haW5UaHJlYWRFeGVjU3RhdGUuY3BwCkBAIC00Niw0ICs0NiwxMiBAQCB2b2lkIEpTTWFpblRo
cmVhZEV4ZWNTdGF0ZTo6ZGlkTGVhdmVTY3JpcHRDb250ZXh0KCkKICAgICBNdXRhdGlvbk9ic2Vy
dmVyOjpkZWxpdmVyQWxsTXV0YXRpb25zKCk7CiB9CiAKK0pTQzo6SlNWYWx1ZSBmdW5jdGlvbkNh
bGxIYW5kbGVyRnJvbUFueVRocmVhZChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVl
IGZ1bmN0aW9uT2JqZWN0LCBKU0M6OkNhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBKU0M6OkNhbGxE
YXRhJiBjYWxsRGF0YSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0
JiBhcmdzKQoreworICAgIGlmIChpc01haW5UaHJlYWQoKSkKKyAgICAgICAgcmV0dXJuIEpTTWFp
blRocmVhZEV4ZWNTdGF0ZTo6Y2FsbChleGVjLCBmdW5jdGlvbk9iamVjdCwgY2FsbFR5cGUsIGNh
bGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIEpTQzo6
Y2FsbChleGVjLCBmdW5jdGlvbk9iamVjdCwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUs
IGFyZ3MpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oCmluZGV4IDMzYjdiZDkuLjJm
YTY2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVh
ZEV4ZWNTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVh
ZEV4ZWNTdGF0ZS5oCkBAIC0yOCw5ICsyOCw3IEBACiAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcu
aCIKICNpbmNsdWRlIDxydW50aW1lL0NvbXBsZXRpb24uaD4KLSNpZm5kZWYgTkRFQlVHCiAjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTQyLDcgKzQwLDcgQEAgY2xhc3MgSlNNYWluVGhyZWFkRXhlY1N0YXRlIHsKICAgICBmcmll
bmQgY2xhc3MgSlNNYWluVGhyZWFkTnVsbFN0YXRlOwogcHVibGljOgogICAgIHN0YXRpYyBKU0M6
OkV4ZWNTdGF0ZSogY3VycmVudFN0YXRlKCkKLSAgICB7IAorICAgIHsKICAgICAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgcmV0dXJuIHNfbWFpblRocmVhZFN0YXRlOwogICAg
IH07CkBAIC01Myw4ICs1MSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEpTQzo6Y2FsbChl
eGVjLCBmdW5jdGlvbk9iamVjdCwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3Mp
OwogICAgIH07CiAKLSAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGlu
c3RydW1lbnRGdW5jdGlvbkNhbGwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEpTQzo6Q2FsbFR5
cGUsIGNvbnN0IEpTQzo6Q2FsbERhdGEmKTsKLQogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZXZh
bHVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6U291cmNlQ29kZSYgc291cmNl
LCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBKU0M6OkpTVmFsdWUqIGV4Y2VwdGlvbikKICAgICB7
CiAgICAgICAgIEpTTWFpblRocmVhZEV4ZWNTdGF0ZSBjdXJyZW50U3RhdGUoZXhlYyk7CkBAIC02
Miw2ICs1OCw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEpTQzo6ZXZhbHVhdGUoZXhlYywg
c291cmNlLCB0aGlzVmFsdWUsIGV4Y2VwdGlvbik7CiAgICAgfTsKIAorICAgIHN0YXRpYyBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgaW5zdHJ1bWVudEZ1bmN0aW9uQ2FsbChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgSlNDOjpDYWxsVHlwZSwgY29uc3QgSlNDOjpDYWxsRGF0YSYpOwor
CiAgICAgZXhwbGljaXQgSlNNYWluVGhyZWFkRXhlY1N0YXRlKEpTQzo6RXhlY1N0YXRlKiBleGVj
KQogICAgICAgICA6IG1fcHJldmlvdXNTdGF0ZShzX21haW5UaHJlYWRTdGF0ZSkKICAgICB7CkBA
IC0xMTAsNiArMTA4LDggQEAgcHJpdmF0ZToKICAgICBKU0M6OkV4ZWNTdGF0ZSogbV9wcmV2aW91
c1N0YXRlOwogfTsKIAorSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhy
ZWFkKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIEpT
Qzo6Q2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0IEpTQzo6Q2FsbERhdGEmIGNhbGxEYXRhLCBKU0M6
OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MpOworCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBKU01haW5UaHJlYWRFeGVjU3RhdGVfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3Bw
CmluZGV4IDBhOWE0YzEuLmM4NGNhMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgSlNWYWx1
ZSBKU01lc3NhZ2VFdmVudDo6ZGF0YShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICAgSlNWYWx1
ZSByZXN1bHQ7CiAgICAgc3dpdGNoIChldmVudC5kYXRhVHlwZSgpKSB7CiAgICAgY2FzZSBNZXNz
YWdlRXZlbnQ6OkRhdGFUeXBlU2NyaXB0VmFsdWU6IHsKLSAgICAgICAgU2NyaXB0VmFsdWUgc2Ny
aXB0VmFsdWUgPSBldmVudC5kYXRhQXNTY3JpcHRWYWx1ZSgpOworICAgICAgICBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSBzY3JpcHRWYWx1ZSA9IGV2ZW50LmRhdGFBc1NjcmlwdFZhbHVlKCk7CiAg
ICAgICAgIGlmIChzY3JpcHRWYWx1ZS5oYXNOb1ZhbHVlKCkpCiAgICAgICAgICAgICByZXN1bHQg
PSBqc051bGwoKTsKICAgICAgICAgZWxzZQpAQCAtMTA1LDcgKzEwNSw3IEBAIHN0YXRpYyBKU0M6
OkpTVmFsdWUgaGFuZGxlSW5pdE1lc3NhZ2VFdmVudChKU01lc3NhZ2VFdmVudCoganNFdmVudCwg
SlNDOjpFeGVjU3RhCiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KLSAgICBTY3JpcHRWYWx1ZSBkYXRhQXJn
ID0gU2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwgZXhlYy0+YXJndW1lbnQoMykpOworICAgIERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlIGRhdGFBcmcgPSBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShleGVj
LT52bSgpLCBleGVjLT5hcmd1bWVudCgzKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKaW5kZXggMDZjNTFjYS4uOTE3M2VkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCkBAIC0z
Nyw5ICszNyw5IEBACiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0j
aW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgog
I2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVl
Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0Zh
Y3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFj
dG9yeS5jcHAKaW5kZXggNWQ2NmM0ZC4uN2Q2OTVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKQEAgLTM4LDcgKzM4
LDcgQEAKICNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxs
RnJhbWUuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKLSNpbmNsdWRlICJTY3JpcHRW
YWx1ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8aW50
ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg+CiAjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lSW5s
aW5lcy5oPgogI2luY2x1ZGUgPGludGVycHJldGVyL1N0YWNrVmlzaXRvci5oPgpAQCAtMTk5LDEw
ICsxOTksMTAgQEAgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNyZWF0ZVNjcmlwdENhbGxT
dGFja0ZvckNvbnNvbGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMKIAogUGFzc1JlZlB0cjxTY3JpcHRB
cmd1bWVudHM+IGNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgdW5z
aWduZWQgc2tpcEFyZ3VtZW50Q291bnQpCiB7Ci0gICAgVmVjdG9yPFNjcmlwdFZhbHVlPiBhcmd1
bWVudHM7CisgICAgVmVjdG9yPERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlPiBhcmd1bWVudHM7CiAg
ICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7CiAgICAgZm9y
IChzaXplX3QgaSA9IHNraXBBcmd1bWVudENvdW50OyBpIDwgYXJndW1lbnRDb3VudDsgKytpKQot
ICAgICAgICBhcmd1bWVudHMuYXBwZW5kKFNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIGV4ZWMtPnVu
Y2hlY2tlZEFyZ3VtZW50KGkpKSk7CisgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkpKTsK
ICAgICByZXR1cm4gU2NyaXB0QXJndW1lbnRzOjpjcmVhdGUoZXhlYywgYXJndW1lbnRzKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApp
bmRleCAyYzNlZjkzYWYuLjAwN2IwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAiUGx1
Z2luVmlldy5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlNjcmlw
dFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNjcmlw
dGFibGVEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAi
U3RvcmFnZU5hbWVzcGFjZS5oIgpAQCAtNDgsNiArNDcsNyBAQAogI2luY2x1ZGUgIldlYkNvcmVK
U0NsaWVudERhdGEuaCIKICNpbmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgogI2luY2x1ZGUgInJ1
bnRpbWVfcm9vdC5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVk
ZSA8ZGVidWdnZXIvRGVidWdnZXIuaD4KICNpbmNsdWRlIDxoZWFwL1N0cm9uZ0lubGluZXMuaD4K
ICNpbmNsdWRlIDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KQEAgLTExNyw3ICsxMTcs
NyBAQCBKU0RPTVdpbmRvd1NoZWxsKiBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVXaW5kb3dTaGVs
bChET01XcmFwcGVyV29ybGQmIHdvcmxkKQogICAgIHJldHVybiB3aW5kb3dTaGVsbC5nZXQoKTsK
IH0KIAotU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkKGNvbnN0
IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCitE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQo
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCkKIHsKICAgICBjb25zdCBTb3VyY2VDb2RlJiBqc1NvdXJjZUNvZGUgPSBzb3VyY2VDb2RlLmpz
U291cmNlQ29kZSgpOwogICAgIFN0cmluZyBzb3VyY2VVUkwgPSBqc1NvdXJjZUNvZGUucHJvdmlk
ZXIoKS0+dXJsKCk7CkBAIC0xNDksMTQgKzE0OSwxNCBAQCBTY3JpcHRWYWx1ZSBTY3JpcHRDb250
cm9sbGVyOjpldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29k
ZQogICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKSB7CiAgICAgICAgIHJlcG9ydEV4Y2VwdGlv
bihleGVjLCBldmFsdWF0aW9uRXhjZXB0aW9uLCBzb3VyY2VDb2RlLmNhY2hlZFNjcmlwdCgpKTsK
ICAgICAgICAgbV9zb3VyY2VVUkwgPSBzYXZlZFNvdXJjZVVSTDsKLSAgICAgICAgcmV0dXJuIFNj
cmlwdFZhbHVlKCk7CisgICAgICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSgpOwog
ICAgIH0KIAogICAgIG1fc291cmNlVVJMID0gc2F2ZWRTb3VyY2VVUkw7Ci0gICAgcmV0dXJuIFNj
cmlwdFZhbHVlKGV4ZWMtPnZtKCksIHJldHVyblZhbHVlKTsKKyAgICByZXR1cm4gRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwgcmV0dXJuVmFsdWUpOwogfQogCi1TY3JpcHRWYWx1
ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3Vy
Y2VDb2RlKSAKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1
YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpIAogewogICAgIHJldHVybiBl
dmFsdWF0ZUluV29ybGQoc291cmNlQ29kZSwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwogfQpA
QCAtNDU4LDEzICs0NTgsMTMgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpjbGVhclNjcmlwdE9i
amVjdHMoKQogI2VuZGlmCiB9CiAKLVNjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1
dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2Ny
aXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxk
LCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQogewogICAgIFVz
ZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoZm9yY2VVc2VyR2VzdHVyZSA/IERl
ZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUgOiBQb3NzaWJseVByb2Nlc3NpbmdVc2VyR2Vz
dHVyZSk7CiAgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2RlKHNjcmlwdCwgbV9mcmFtZS5k
b2N1bWVudCgpLT51cmwoKSk7CiAKICAgICBpZiAoIWNhbkV4ZWN1dGVTY3JpcHRzKEFib3V0VG9F
eGVjdXRlU2NyaXB0KSB8fCBpc1BhdXNlZCgpKQotICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUo
KTsKKyAgICAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCk7CiAKICAgICByZXR1
cm4gZXZhbHVhdGVJbldvcmxkKHNvdXJjZUNvZGUsIHdvcmxkKTsKIH0KQEAgLTUwMCwxNiArNTAw
LDE2IEBAIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6Y2FuRXhlY3V0ZVNjcmlwdHMoUmVhc29uRm9y
Q2FsbGluZ0NhbkV4ZWN1dGVTY3JpcHRzIHJlYXNvCiAgICAgcmV0dXJuIG1fZnJhbWUubG9hZGVy
KCkuY2xpZW50KCkuYWxsb3dTY3JpcHQobV9mcmFtZS5zZXR0aW5ncygpLmlzU2NyaXB0RW5hYmxl
ZCgpKTsKIH0KIAotU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChj
b25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQorRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcm
IHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQogewogICAgIFVzZXJHZXN0dXJlSW5kaWNh
dG9yIGdlc3R1cmVJbmRpY2F0b3IoZm9yY2VVc2VyR2VzdHVyZSA/IERlZmluaXRlbHlQcm9jZXNz
aW5nVXNlckdlc3R1cmUgOiBQb3NzaWJseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAgICAgcmV0
dXJuIGV4ZWN1dGVTY3JpcHQoU2NyaXB0U291cmNlQ29kZShzY3JpcHQsIG1fZnJhbWUuZG9jdW1l
bnQoKS0+dXJsKCkpKTsKIH0KIAotU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0
ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQorRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRT
b3VyY2VDb2RlJiBzb3VyY2VDb2RlKQogewogICAgIGlmICghY2FuRXhlY3V0ZVNjcmlwdHMoQWJv
dXRUb0V4ZWN1dGVTY3JpcHQpIHx8IGlzUGF1c2VkKCkpCi0gICAgICAgIHJldHVybiBTY3JpcHRW
YWx1ZSgpOworICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKTsKIAogICAg
IFJlZjxGcmFtZT4gcHJvdGVjdChtX2ZyYW1lKTsgLy8gU2NyaXB0IGV4ZWN1dGlvbiBjYW4gZGVz
dHJveSB0aGUgZnJhbWUsIGFuZCB0aHVzIHRoZSBTY3JpcHRDb250cm9sbGVyLgogCkBAIC01MzIs
NyArNTMyLDcgQEAgYm9vbCBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJM
KGNvbnN0IFVSTCYgdXJsLCBTaG91bGRSZXBsYWNlRG9jdW0KICAgICBjb25zdCBpbnQgamF2YXNj
cmlwdFNjaGVtZUxlbmd0aCA9IHNpemVvZigiamF2YXNjcmlwdDoiKSAtIDE7CiAKICAgICBTdHJp
bmcgZGVjb2RlZFVSTCA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyh1cmwuc3RyaW5nKCkpOwot
ICAgIFNjcmlwdFZhbHVlIHJlc3VsdCA9IGV4ZWN1dGVTY3JpcHQoZGVjb2RlZFVSTC5zdWJzdHJp
bmcoamF2YXNjcmlwdFNjaGVtZUxlbmd0aCkpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
IHJlc3VsdCA9IGV4ZWN1dGVTY3JpcHQoZGVjb2RlZFVSTC5zdWJzdHJpbmcoamF2YXNjcmlwdFNj
aGVtZUxlbmd0aCkpOwogCiAgICAgLy8gSWYgZXhlY3V0aW5nIHNjcmlwdCBjYXVzZWQgdGhpcyBm
cmFtZSB0byBiZSByZW1vdmVkIGZyb20gdGhlIHBhZ2UsIHdlCiAgICAgLy8gZG9uJ3Qgd2FudCB0
byB0cnkgdG8gcmVwbGFjZSBpdHMgZG9jdW1lbnQhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggMzY2YjcyNC4uNjdlOTZlYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApAQCAtMzgsNiArMzgs
MTAgQEAgT0JKQ19DTEFTUyBKU0NvbnRleHQ7CiAKIHN0cnVjdCBOUE9iamVjdDsKIAorbmFtZXNw
YWNlIERlcHJlY2F0ZWQgeworY2xhc3MgU2NyaXB0VmFsdWU7Cit9CisKIG5hbWVzcGFjZSBKU0Mg
ewogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEV4ZWNTdGF0ZTsKQEAgLTUz
LDcgKzU3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSFRNTFBsdWdJbkVsZW1lbnQ7
CiBjbGFzcyBGcmFtZTsKIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7Ci1jbGFzcyBTY3JpcHRWYWx1
ZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgV2lkZ2V0OwogCkBAIC05NCw5ICs5Nyw5
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGdldEFsbFdvcmxkcyhWZWN0b3I8UmVmPERP
TVdyYXBwZXJXb3JsZD4+Jik7CiAKLSAgICBTY3JpcHRWYWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0
IFNjcmlwdFNvdXJjZUNvZGUmKTsKLSAgICBTY3JpcHRWYWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0
IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUgPSBmYWxzZSk7Ci0gICAgU2Ny
aXB0VmFsdWUgZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3Ry
aW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKKyAgICBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsK
KyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYg
c2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUgPSBmYWxzZSk7CisgICAgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUgZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3Qg
U3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKIAogICAgIC8v
IFJldHVybnMgdHJ1ZSBpZiBhcmd1bWVudCBpcyBhIEphdmFTY3JpcHQgVVJMLgogICAgIGJvb2wg
ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTChjb25zdCBVUkwmLCBTaG91bGRSZXBsYWNlRG9jdW1lbnRJ
ZkphdmFTY3JpcHRVUkwgc2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMID0gUmVw
bGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMKTsKQEAgLTEwNSw4ICsxMDgsOCBAQCBwdWJsaWM6
CiAgICAgLy8gRGFyd2luIGlzIGFuIGV4Y2VwdGlvbiB0byB0aGlzIHJ1bGU6IGl0IGlzIE9LIHRv
IGNhbGwgdGhpcyBmdW5jdGlvbiBmcm9tIGFueSB0aHJlYWQsIGV2ZW4gcmVlbnRyYW50bHkuCiAg
ICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpOwogCi0gICAgU2NyaXB0VmFsdWUg
ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYpOwotICAgIFNjcmlwdFZhbHVlIGV2YWx1
YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7Cisg
ICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBT
Y3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7CiAKICAgICBXVEY6OlRleHRQb3Np
dGlvbiBldmVudEhhbmRsZXJQb3NpdGlvbigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggYWRiNTc3OC4uMjNkNGE2
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVy
LmNwcApAQCAtNDEsOCArNDEsOCBAQAogI2luY2x1ZGUgIlBhZ2VDb25zb2xlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0QnJlYWtwb2ludC5oIgogI2luY2x1ZGUgIlNjcmlwdERlYnVnTGlzdGVuZXIuaCIK
LSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNvdW5kLmgiCisjaW5jbHVkZSA8
YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxG
cmFtZS5oPgogI2luY2x1ZGUgPHBhcnNlci9Tb3VyY2VQcm92aWRlci5oPgogI2luY2x1ZGUgPHJ1
bnRpbWUvSlNMb2NrLmg+CkBAIC0xMzAsMTQgKzEzMCwxNCBAQCBib29sIFNjcmlwdERlYnVnU2Vy
dmVyOjpjYW5TZXRTY3JpcHRTb3VyY2UoKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBT
Y3JpcHREZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIGJvb2wsIFN0cmluZyosIFNjcmlwdFZhbHVlKiwgU2NyaXB0T2JqZWN0KikKK2Jvb2wg
U2NyaXB0RGVidWdTZXJ2ZXI6OnNldFNjcmlwdFNvdXJjZShjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBib29sLCBTdHJpbmcqLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSosIERlcHJlY2F0
ZWQ6OlNjcmlwdE9iamVjdCopCiB7CiAgICAgLy8gRklYTUUoNDAzMDApOiBpbXBsZW1lbnQgdGhp
cy4KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIAotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6dXBk
YXRlQ2FsbFN0YWNrKFNjcmlwdFZhbHVlKikKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnVwZGF0
ZUNhbGxTdGFjayhEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSopCiB7CiAgICAgLy8gVGhpcyBtZXRo
b2QgaXMgdXNlZCBmb3IgcmVzdGFydCBmcmFtZSBmZWF0dXJlIHRoYXQgaXMgbm90IGltcGxlbWVu
dGVkIHlldC4KICAgICAvLyBGSVhNRSg0MDMwMCk6IGltcGxlbWVudCB0aGlzLgpAQCAtMTU5LDcg
KzE1OSw3IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRGlkUGF1c2UoU2NyaXB0
RGVidWdMaXN0ZW5lciogbGlzdGVuZXIpCiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAganND
YWxsRnJhbWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIH0KLSAgICBsaXN0ZW5lci0+ZGlkUGF1c2Uo
c3RhdGUsIFNjcmlwdFZhbHVlKHN0YXRlLT52bSgpLCBqc0NhbGxGcmFtZSksIFNjcmlwdFZhbHVl
KCkpOworICAgIGxpc3RlbmVyLT5kaWRQYXVzZShzdGF0ZSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUoc3RhdGUtPnZtKCksIGpzQ2FsbEZyYW1lKSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKSk7
CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRGlkQ29udGludWUoU2NyaXB0
RGVidWdMaXN0ZW5lciogbGlzdGVuZXIpCkBAIC0zMTksNyArMzE5LDcgQEAgdm9pZCBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6Y2xlYXJDb21waWxlZFNjcmlwdHMoKQogICAgIC8vIEZJWE1FKDg5NjUyKTog
aW1wbGVtZW50IHRoaXMuCiB9CiAKLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJ1blNjcmlwdChK
U0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYsIFNjcmlwdFZhbHVlKiwgYm9vbCosIFN0cmlu
ZyopCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpydW5TY3JpcHQoSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBTdHJpbmcmLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSosIGJvb2wqLCBTdHJpbmcqKQog
ewogICAgIC8vIEZJWE1FKDg5NjUyKTogaW1wbGVtZW50IHRoaXMuCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRleCAyZmU5YWRhLi5hNzAx
OGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1Nl
cnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVy
LmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJTY3JpcHREZWJ1Z0xpc3RlbmVyLmgiCiAj
aW5jbHVkZSAiU291cmNlSUQuaCIKICNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPGJpbmRp
bmdzL1NjcmlwdE9iamVjdC5oPgogI2luY2x1ZGUgPGRlYnVnZ2VyL0RlYnVnZ2VyLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtNTAsMTIg
KzUxLDkgQEAgY2xhc3MgRGVidWdnZXJDYWxsRnJhbWU7CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsK
IGNsYXNzIEV4ZWNTdGF0ZTsKIH0KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTY3Jp
cHREZWJ1Z0xpc3RlbmVyOwotY2xhc3MgU2NyaXB0T2JqZWN0OwotY2xhc3MgU2NyaXB0VmFsdWU7
Ci0KIGNsYXNzIFNjcmlwdERlYnVnU2VydmVyIDogcHVibGljIEpTQzo6RGVidWdnZXIgewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFNjcmlwdERlYnVnU2VydmVyKTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CkBAIC02NCw4ICs2Miw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNs
ZWFyQnJlYWtwb2ludHMoKTsKIAogICAgIGJvb2wgY2FuU2V0U2NyaXB0U291cmNlKCk7Ci0gICAg
Ym9vbCBzZXRTY3JpcHRTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU3RyaW5n
JiBuZXdDb250ZW50LCBib29sIHByZXZpZXcsIFN0cmluZyogZXJyb3IsIFNjcmlwdFZhbHVlKiBu
ZXdDYWxsRnJhbWVzLCBTY3JpcHRPYmplY3QqIHJlc3VsdCk7Ci0gICAgdm9pZCB1cGRhdGVDYWxs
U3RhY2soU2NyaXB0VmFsdWUqIGNhbGxGcmFtZSk7CisgICAgYm9vbCBzZXRTY3JpcHRTb3VyY2Uo
Y29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBib29sIHBy
ZXZpZXcsIFN0cmluZyogZXJyb3IsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKiBuZXdDYWxsRnJh
bWVzLCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QqIHJlc3VsdCk7CisgICAgdm9pZCB1cGRhdGVD
YWxsU3RhY2soRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUqIGNhbGxGcmFtZSk7CiAKICAgICBib29s
IGNhdXNlc1JlY29tcGlsYXRpb24oKSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBzdXBwb3J0
c1NlcGFyYXRlU2NyaXB0Q29tcGlsYXRpb25BbmRFeGVjdXRpb24oKSB7IHJldHVybiBmYWxzZTsg
fQpAQCAtODIsNyArODAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNvbXBpbGVTY3JpcHQoSlND
OjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMLCBTdHJpbmcqIHNjcmlwdElELCBTdHJpbmcqIGV4Y2VwdGlvbk1lc3NhZ2UpOwogICAg
IHZvaWQgY2xlYXJDb21waWxlZFNjcmlwdHMoKTsKLSAgICB2b2lkIHJ1blNjcmlwdChKU0M6OkV4
ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIFNjcmlwdFZhbHVlKiByZXN1bHQsIGJv
b2wqIHdhc1Rocm93biwgU3RyaW5nKiBleGNlcHRpb25NZXNzYWdlKTsKKyAgICB2b2lkIHJ1blNj
cmlwdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlKiByZXN1bHQsIGJvb2wqIHdhc1Rocm93biwgU3RyaW5nKiBleGNlcHRpb25N
ZXNzYWdlKTsKIAogICAgIGNsYXNzIFRhc2sgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuY3Bw
CnNpbWlsYXJpdHkgaW5kZXggODYlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdE9iamVjdC5jcHAKcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdEdsb2JhbE9iamVjdC5jcHAKaW5kZXggMTQyZTcyMy4uYThiNWE2MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuY3BwCkBAIC0yOSwxMCAr
MjksMTAgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2Jq
ZWN0LmgiCisjaW5jbHVkZSAiU2NyaXB0R2xvYmFsT2JqZWN0LmgiCiAKICNpbmNsdWRlICJKU0RP
TUJpbmRpbmcuaCIKLQorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgogI2luY2x1
ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpAQCAtNDMsMTgg
KzQzLDYgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1T
Y3JpcHRPYmplY3Q6OlNjcmlwdE9iamVjdChKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIEpT
T2JqZWN0KiBvYmplY3QpCi0gICAgOiBTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZS0+dm0oKSwgb2Jq
ZWN0KQotICAgICwgbV9zY3JpcHRTdGF0ZShzY3JpcHRTdGF0ZSkKLXsKLX0KLQotU2NyaXB0T2Jq
ZWN0OjpTY3JpcHRPYmplY3QoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3Jp
cHRWYWx1ZSYgc2NyaXB0VmFsdWUpCi0gICAgOiBTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZS0+dm0o
KSwgc2NyaXB0VmFsdWUuanNWYWx1ZSgpKQotICAgICwgbV9zY3JpcHRTdGF0ZShzY3JpcHRTdGF0
ZSkKLXsKLX0KLQogc3RhdGljIGJvb2wgaGFuZGxlRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiBz
Y3JpcHRTdGF0ZSkKIHsKICAgICBpZiAoIXNjcmlwdFN0YXRlLT5oYWRFeGNlcHRpb24oKSkKQEAg
LTY0LDcgKzUyLDcgQEAgc3RhdGljIGJvb2wgaGFuZGxlRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRl
KiBzY3JpcHRTdGF0ZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgU2NyaXB0R2xvYmFs
T2JqZWN0OjpzZXQoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1l
LCBjb25zdCBTY3JpcHRPYmplY3QmIHZhbHVlKQorYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OnNl
dChKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgdmFsdWUpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2so
c2NyaXB0U3RhdGUpOwogICAgIHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnB1
dERpcmVjdChzY3JpcHRTdGF0ZS0+dm0oKSwgSWRlbnRpZmllcihzY3JpcHRTdGF0ZSwgbmFtZSks
IHZhbHVlLmpzT2JqZWN0KCkpOwpAQCAtODEsNyArNjksNyBAQCBib29sIFNjcmlwdEdsb2JhbE9i
amVjdDo6c2V0KEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwg
SW5zcAogfQogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCiAKLWJvb2wgU2NyaXB0R2xvYmFs
T2JqZWN0OjpnZXQoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1l
LCBTY3JpcHRPYmplY3QmIHZhbHVlKQorYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OmdldChKU0M6
OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUsIERlcHJlY2F0ZWQ6OlNj
cmlwdE9iamVjdCYgdmFsdWUpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soc2NyaXB0U3RhdGUp
OwogICAgIEpTVmFsdWUganNWYWx1ZSA9IHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCktPmdldChzY3JpcHRTdGF0ZSwgSWRlbnRpZmllcihzY3JpcHRTdGF0ZSwgbmFtZSkpOwpAQCAt
OTEsNyArNzksNyBAQCBib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6Z2V0KEpTQzo6RXhlY1N0YXRl
KiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgU2NyaQogICAgIGlmICghanNWYWx1ZS5p
c09iamVjdCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB2YWx1ZSA9IFNjcmlwdE9i
amVjdChzY3JpcHRTdGF0ZSwgYXNPYmplY3QoanNWYWx1ZSkpOworICAgIHZhbHVlID0gRGVwcmVj
YXRlZDo6U2NyaXB0T2JqZWN0KHNjcmlwdFN0YXRlLCBhc09iamVjdChqc1ZhbHVlKSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9T
Y3JpcHRDYWxsU3RhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2Jh
bE9iamVjdC5oCnNpbWlsYXJpdHkgaW5kZXggNjQlCmNvcHkgZnJvbSBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmgKY29weSB0byBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuaAppbmRleCBlMGQ3ZmQ1Li5iZTFlYTY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0LmgKQEAgLTEsMTAgKzEs
MTAgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqIAorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCiAg
KiBtZXQ6Ci0gKiAKKyAqCiAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpAQCAtMTQs
NyArMTQsNyBAQAogICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwogICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KICAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKKyAqCiAgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCiAgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAogICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkBAIC0yOCw0NSArMjgsNDAgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBTY3JpcHRDYWxsU3RhY2tfaAotI2RlZmluZSBT
Y3JpcHRDYWxsU3RhY2tfaAorI2lmbmRlZiBTY3JpcHRHbG9iYWxPYmplY3RfaAorI2RlZmluZSBT
Y3JpcHRHbG9iYWxPYmplY3RfaAogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSNpbmNsdWRlICJJ
bnNwZWN0b3JUeXBlQnVpbGRlci5oIgotI2VuZGlmCituYW1lc3BhY2UgRGVwcmVjYXRlZCB7Citj
bGFzcyBTY3JpcHRPYmplY3Q7Cit9CiAKLSNpbmNsdWRlICJTY3JpcHRDYWxsRnJhbWUuaCIKLSNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBFeGVjU3RhdGU7Cit9
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW5zcGVjdG9yQXJyYXk7CitjbGFzcyBJ
bmplY3RlZFNjcmlwdEhvc3Q7CitjbGFzcyBJbnNwZWN0b3JGcm9udGVuZEhvc3Q7CitjbGFzcyBN
ZWRpYUNvbnRyb2xzSG9zdDsKIAotY2xhc3MgU2NyaXB0Q2FsbFN0YWNrIDogcHVibGljIFJlZkNv
dW50ZWQ8U2NyaXB0Q2FsbFN0YWNrPiB7CitjbGFzcyBTY3JpcHRHbG9iYWxPYmplY3QgewogcHVi
bGljOgotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSA9
IDIwMDsKLSAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNyZWF0
ZShWZWN0b3I8U2NyaXB0Q2FsbEZyYW1lPiYpOwotCi0gICAgflNjcmlwdENhbGxTdGFjaygpOwot
Ci0gICAgY29uc3QgU2NyaXB0Q2FsbEZyYW1lICZhdChzaXplX3QpIGNvbnN0OwotICAgIHNpemVf
dCBzaXplKCkgY29uc3Q7Ci0KLSAgICBib29sIGlzRXF1YWwoU2NyaXB0Q2FsbFN0YWNrKikgY29u
c3Q7Ci0KKyAgICBzdGF0aWMgYm9vbCBzZXQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiBu
YW1lLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmKTsKICNpZiBFTkFCTEUoSU5TUEVD
VE9SKQotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDb25z
b2xlOjpDYWxsRnJhbWU+PiBidWlsZEluc3BlY3RvckFycmF5KCkgY29uc3Q7CisgICAgc3RhdGlj
IGJvb2wgc2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgSW5zcGVjdG9yRnJv
bnRlbmRIb3N0Kik7CisgICAgc3RhdGljIGJvb2wgc2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
Y2hhciogbmFtZSwgSW5qZWN0ZWRTY3JpcHRIb3N0Kik7CisjZW5kaWYKKyNpZiBFTkFCTEUoTUVE
SUFfQ09OVFJPTFNfU0NSSVBUKQorICAgIHN0YXRpYyBib29sIHNldChKU0M6OkV4ZWNTdGF0ZSos
IGNvbnN0IGNoYXIqIG5hbWUsIE1lZGlhQ29udHJvbHNIb3N0Kik7CiAjZW5kaWYKIAorICAgIHN0
YXRpYyBib29sIGdldChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIERlcHJlY2F0
ZWQ6OlNjcmlwdE9iamVjdCYpOworICAgIHN0YXRpYyBib29sIHJlbW92ZShKU0M6OkV4ZWNTdGF0
ZSosIGNvbnN0IGNoYXIqIG5hbWUpOwogcHJpdmF0ZToKLSAgICBTY3JpcHRDYWxsU3RhY2soVmVj
dG9yPFNjcmlwdENhbGxGcmFtZT4mKTsKLQotICAgIFZlY3RvcjxTY3JpcHRDYWxsRnJhbWU+IG1f
ZnJhbWVzOworICAgIFNjcmlwdEdsb2JhbE9iamVjdCgpIHsgfQogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gU2NyaXB0Q2FsbFN0YWNrX2gKKyNlbmRpZiAvLyBTY3Jp
cHRHbG9iYWxPYmplY3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3Qu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2ZiZTY3MS4uMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaAorKysgL2Rldi9udWxsCkBA
IC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAq
IG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIFNjcmlwdE9iamVjdF9oCi0jZGVmaW5lIFNjcmlwdE9iamVj
dF9oCi0KLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgi
Ci0KLSNpbmNsdWRlIDxoZWFwL1N0cm9uZy5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3Qu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0gICAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRI
b3N0OwotCi0gICAgY2xhc3MgU2NyaXB0T2JqZWN0IDogcHVibGljIFNjcmlwdFZhbHVlIHsKLSAg
ICBwdWJsaWM6Ci0gICAgICAgIFNjcmlwdE9iamVjdChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNP
YmplY3QqKTsKLSAgICAgICAgU2NyaXB0T2JqZWN0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU2Ny
aXB0VmFsdWUmKTsKLSAgICAgICAgU2NyaXB0T2JqZWN0KCkgOiBtX3NjcmlwdFN0YXRlKDApIHsg
fQotICAgICAgICBKU0M6OkpTT2JqZWN0KiBqc09iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGFzT2Jq
ZWN0KGpzVmFsdWUoKSk7IH0KLSAgICAgICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9zY3JpcHRTdGF0ZTsgfQotCi0gICAgcHJvdGVjdGVkOgotICAgICAg
ICBKU0M6OkV4ZWNTdGF0ZSogbV9zY3JpcHRTdGF0ZTsKLSAgICB9OwotCi0gICAgY2xhc3MgU2Ny
aXB0R2xvYmFsT2JqZWN0IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBib29sIHNldChK
U0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFNjcmlwdE9iamVjdCYpOwot
I2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgICAgIHN0YXRpYyBib29sIHNldChKU0M6OkV4ZWNT
dGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIEluc3BlY3RvckZyb250ZW5kSG9zdCopOwotI2VuZGlm
Ci0gICAgICAgIHN0YXRpYyBib29sIGdldChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5h
bWUsIFNjcmlwdE9iamVjdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCByZW1vdmUoSlNDOjpFeGVj
U3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lKTsKLSAgICBwcml2YXRlOgotICAgICAgICBTY3JpcHRH
bG9iYWxPYmplY3QoKSB7IH0KLSAgICB9OwotCi19Ci0KLSNlbmRpZiAvLyBTY3JpcHRPYmplY3Rf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmNwcAppbmRleCA0
NTA1MGFlLi5hMjIwMzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRQcm9maWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQ
cm9maWxlLmNwcApAQCAtMzAsOCArMzAsOCBAQAogCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZS5o
IgogCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5n
LmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHBy
b2ZpbGVyL1Byb2ZpbGUuaD4KICNpbmNsdWRlIDxwcm9maWxlci9Qcm9maWxlTm9kZS5oPgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmgKaW5kZXggODA5NWZlOC4u
ZjMwNTEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJv
ZmlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUuaApA
QCAtNDQsOCArNDQsNiBAQCBjbGFzcyBQcm9maWxlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIEluc3BlY3Rvck9iamVjdDsKLQogY2xhc3MgU2NyaXB0UHJvZmlsZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPFNjcmlwdFByb2ZpbGU+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTY3JpcHRQcm9maWxlPiBjcmVhdGUoUGFzc1JlZlB0cjxKU0M6OlByb2ZpbGU+IHByb2ZpbGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuY3BwCmluZGV4
IGZkZTI3ZDAuLmZjOTM5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdFByb2ZpbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRQcm9maWxlci5jcHAKQEAgLTM1LDggKzM1LDkgQEAKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5o
IgogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJT
Y3JpcHRPYmplY3QuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgorI2luY2x1ZGUgPGJpbmRp
bmdzL1NjcmlwdE9iamVjdC5oPgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAj
aW5jbHVkZSA8cHJvZmlsZXIvTGVnYWN5UHJvZmlsZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogCkBAIC00NywxMiArNDgsMTIgQEAgdm9pZCBTY3JpcHRQcm9maWxlcjo6Y29sbGVjdEdh
cmJhZ2UoKQogICAgIGdjQ29udHJvbGxlcigpLmdhcmJhZ2VDb2xsZWN0U29vbigpOwogfQogCi1T
Y3JpcHRPYmplY3QgU2NyaXB0UHJvZmlsZXI6Om9iamVjdEJ5SGVhcE9iamVjdElkKHVuc2lnbmVk
KQorRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IFNjcmlwdFByb2ZpbGVyOjpvYmplY3RCeUhlYXBP
YmplY3RJZCh1bnNpZ25lZCkKIHsKLSAgICByZXR1cm4gU2NyaXB0T2JqZWN0KCk7CisgICAgcmV0
dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCgpOwogfQogCi11bnNpZ25lZCBTY3JpcHRQcm9m
aWxlcjo6Z2V0SGVhcE9iamVjdElkKGNvbnN0IFNjcmlwdFZhbHVlJikKK3Vuc2lnbmVkIFNjcmlw
dFByb2ZpbGVyOjpnZXRIZWFwT2JqZWN0SWQoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
KQogewogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0UHJvZmlsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dFByb2ZpbGVyLmgKaW5kZXggNzI3YzZlZS4uYzJmZGQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5oCkBAIC0yOCwyMCArMjgsMjQgQEAKICNkZWZpbmUg
U2NyaXB0UHJvZmlsZXJfaAogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisKICNp
bmNsdWRlICJTY3JpcHRIZWFwU25hcHNob3QuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKK25hbWVzcGFjZSBEZXByZWNhdGVkIHsKK2NsYXNz
IFNjcmlwdE9iamVjdDsKK2NsYXNzIFNjcmlwdFZhbHVlOworfQorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEV4dGVybmFsQXJyYXlWaXNpdG9yOwogY2xhc3MgRXh0ZXJuYWxTdHJpbmdW
aXNpdG9yOwogY2xhc3MgV3JhcHBlZE5vZGVWaXNpdG9yOwogY2xhc3MgUGFnZTsKLWNsYXNzIFNj
cmlwdE9iamVjdDsKLWNsYXNzIFNjcmlwdFZhbHVlOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7
CiAKIGNsYXNzIFNjcmlwdFByb2ZpbGVyIHsKQEAgLTU3LDggKzYxLDggQEAgcHVibGljOgogICAg
IH07CiAKICAgICBzdGF0aWMgdm9pZCBjb2xsZWN0R2FyYmFnZSgpOwotICAgIHN0YXRpYyBTY3Jp
cHRPYmplY3Qgb2JqZWN0QnlIZWFwT2JqZWN0SWQodW5zaWduZWQgaWQpOwotICAgIHN0YXRpYyB1
bnNpZ25lZCBnZXRIZWFwT2JqZWN0SWQoY29uc3QgU2NyaXB0VmFsdWUmKTsKKyAgICBzdGF0aWMg
RGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IG9iamVjdEJ5SGVhcE9iamVjdElkKHVuc2lnbmVkIGlk
KTsKKyAgICBzdGF0aWMgdW5zaWduZWQgZ2V0SGVhcE9iamVjdElkKGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJik7CiAgICAgc3RhdGljIHZvaWQgc3RhcnQoSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBTdHJpbmcmIHRpdGxlKTsKICAgICBzdGF0aWMgdm9pZCBzdGFydEZvclBhZ2UoUGFnZSos
IGNvbnN0IFN0cmluZyYgdGl0bGUpOwogICAgIHN0YXRpYyB2b2lkIHN0YXJ0Rm9yV29ya2VyR2xv
YmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUqLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCmluZGV4IDM0OWQ5NGEuLjcwZDE0Yzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaApAQCAtMSwxMSArMSwx
MSBAQAogLyoKICAqIENvcHlyaWdodCAoYykgMjAwOCwgMjAxMSBHb29nbGUgSW5jLgogICogQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqIAorICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQogICogbWV0OgotICogCisgKgogICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKQEAg
LTE1LDcgKzE1LDcgQEAKICAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKICAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCiAgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICogCisgKgogICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwogICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKICAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgpAQCAtMzQsNyArMzQsNiBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEV4ZWNTdGF0ZTsKLWNsYXNzIEpTR2xvYmFsT2JqZWN0
OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA2Zjg2YzhiLi4xNGFmNDhj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAKQEAgLTQwLDcgKzQwLDYgQEAKICNpbmNsdWRlICJKU01lc3NhZ2VQb3J0Lmgi
CiAjaW5jbHVkZSAiSlNOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgot
I2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5j
bHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPGxpbWl0cz4KQEAgLTIwMDIs
MTAgKzIwMDEsMTAgQEAgSlNWYWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXpl
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2IKIH0KIAogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCi1TY3JpcHRWYWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXpl
Rm9ySW5zcGVjdG9yKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSkKK0RlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemVGb3JJbnNwZWN0b3Io
SlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBkZXNl
cmlhbGl6ZShzY3JpcHRTdGF0ZSwgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
MCk7Ci0gICAgcmV0dXJuIFNjcmlwdFZhbHVlKHNjcmlwdFN0YXRlLT52bSgpLCB2YWx1ZSk7Cisg
ICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKHNjcmlwdFN0YXRlLT52bSgpLCB2YWx1
ZSk7CiB9CiAjZW5kaWYKIApAQCAtMjA0OSw2ICsyMDQ4LDIzIEBAIFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmJvb2xlYW5WYWx1ZShib29s
IHZhbHVlCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoYnVm
ZmVyKSk7CiB9CiAKK1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OnNlcmlhbGl6ZShjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFs
dWUsIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB0
aHJvd0V4Y2VwdGlvbnMpCit7CisgICAgcmV0dXJuIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3Jl
YXRlKHNjcmlwdFN0YXRlLCB2YWx1ZS5qc1ZhbHVlKCksIG51bGxwdHIsIG51bGxwdHIsIHRocm93
RXhjZXB0aW9ucyk7Cit9CisKK1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OnNlcmlhbGl6ZShjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYgdmFsdWUsIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgTWVzc2FnZVBvcnRBcnJheSog
bWVzc2FnZVBvcnRzLCBBcnJheUJ1ZmZlckFycmF5KiBhcnJheUJ1ZmZlcnMsIGJvb2wmIGRpZFRo
cm93KQoreworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1
ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHNjcmlwdFN0YXRlLCB2YWx1ZS5qc1Zh
bHVlKCksIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJzKTsKKyAgICBkaWRUaHJvdyA9IHNjcmlw
dFN0YXRlLT5oYWRFeGNlcHRpb24oKTsKKyAgICByZXR1cm4gc2VyaWFsaXplZFZhbHVlLnJlbGVh
c2UoKTsKK30KKworRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpkZXNlcmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSogdmFsdWUsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQor
eworICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZS0+dm0oKSwg
dmFsdWUtPmRlc2VyaWFsaXplKHNjcmlwdFN0YXRlLCBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLCAwLCB0aHJvd0V4Y2VwdGlvbnMpKTsKK30KKwogdm9pZCBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6Om1heWJlVGhyb3dFeGNlcHRpb25JZlNlcmlhbGl6YXRpb25GYWlsZWQoRXhlY1N0
YXRlKiBleGVjLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBjb2RlKQogewogICAgIGlmIChjb2Rl
ID09IFN1Y2Nlc3NmdWxseUNvbXBsZXRlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggNjlkMjVmNi4uODU5ODFiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNkZWZpbmUgU2VyaWFsaXplZFNjcmlwdFZhbHVlX2gKIAog
I2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUu
aD4KICNpbmNsdWRlIDxoZWFwL1N0cm9uZy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZm
ZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KQEAgLTU3LDcgKzU4LDYgQEAg
ZW51bSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSB7CiAgICAgCiBlbnVtIFNlcmlhbGl6YXRpb25F
cnJvck1vZGUgeyBOb25UaHJvd2luZywgVGhyb3dpbmcgfTsKIAotY2xhc3MgU2NyaXB0VmFsdWU7
CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6CkBA
IC02Nyw4ICs2Nyw3IEBAIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6CiAgICAgcHVibGlj
IFJlZkNvdW50ZWQ8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB7CiAjZW5kaWYKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgTWVzc2FnZVBvcnRBcnJheSosIEFycmF5QnVmZmVyQXJy
YXkqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
VmFsdWUsIE1lc3NhZ2VQb3J0QXJyYXkqLCBBcnJheUJ1ZmZlckFycmF5KiwgU2VyaWFsaXphdGlv
bkVycm9yTW9kZSA9IFRocm93aW5nKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IGNyZWF0ZShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYsIE1lc3NhZ2VQb3J0
QXJyYXkqLCBBcnJheUJ1ZmZlckFycmF5KiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShKU0NvbnRleHRS
ZWYsIEpTVmFsdWVSZWYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CiAKQEAgLTgzLDYgKzgyLDEw
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHVuZGVmaW5lZFZhbHVlKCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBib29sZWFuVmFsdWUoYm9vbCB2YWx1ZSk7CiAKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZShjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYsIEpTQzo6RXhlY1N0YXRlKiwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSA9IFRocm93
aW5nKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlh
bGl6ZShjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIEpTQzo6RXhlY1N0YXRlKiwgTWVz
c2FnZVBvcnRBcnJheSosIEFycmF5QnVmZmVyQXJyYXkqLCBib29sJik7CisgICAgc3RhdGljIERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRlc2VyaWFsaXplKEpTQzo6RXhlY1N0YXRlKiwgU2VyaWFs
aXplZFNjcmlwdFZhbHVlKiwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSA9IFRocm93aW5nKTsKKwog
ICAgIHN0YXRpYyB1aW50MzJfdCB3aXJlRm9ybWF0VmVyc2lvbigpOwogCiAgICAgU3RyaW5nIHRv
U3RyaW5nKCk7CkBAIC05Miw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICBKU1ZhbHVlUmVmIGRlc2Vy
aWFsaXplKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKIAogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCi0gICAgU2NyaXB0VmFsdWUgZGVzZXJpYWxpemVGb3JJbnNwZWN0b3IoSlND
OjpFeGVjU3RhdGUqKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUZv
ckluc3BlY3RvcihKU0M6OkV4ZWNTdGF0ZSopOwogI2VuZGlmCiAKICAgICBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXgg
MjkwYjFmMS4uNWRlNjA0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
V29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTMxLDEyICszMSwxMiBAQAogI2luY2x1
ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGUuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFs
dWUuaCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSAiV29ya2Vy
R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJPYmplY3RQcm94eS5oIgogI2luY2x1ZGUg
IldvcmtlclNjcmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisj
aW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxoZWFwL1N0cm9uZ0lu
bGluZXMuaD4KICNpbmNsdWRlIDxpbnRlcnByZXRlci9JbnRlcnByZXRlci5oPgogI2luY2x1ZGUg
PHJ1bnRpbWUvQ29tcGxldGlvbi5oPgpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgV29ya2VyU2Ny
aXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29k
ZSkKICAgICBpZiAoaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgU2NyaXB0VmFsdWUgZXhjZXB0aW9uOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGV4
Y2VwdGlvbjsKICAgICBldmFsdWF0ZShzb3VyY2VDb2RlLCAmZXhjZXB0aW9uKTsKICAgICBpZiAo
ZXhjZXB0aW9uLmpzVmFsdWUoKSkgewogICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSgpKTsK
QEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRl
KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCiAgICAgfQogfQogCi12b2lkIFdv
cmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNv
dXJjZUNvZGUsIFNjcmlwdFZhbHVlKiBleGNlcHRpb24pCit2b2lkIFdvcmtlclNjcmlwdENvbnRy
b2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlKiBleGNlcHRpb24pCiB7CiAgICAgaWYgKGlzRXhlY3V0aW9uRm9y
YmlkZGVuKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE0NSwxMyArMTQ1LDEzIEBAIHZvaWQgV29y
a2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291
cmNlQ29kZSwgU2NyaXB0CiAgICAgICAgIGludCBjb2x1bW5OdW1iZXIgPSAwOwogICAgICAgICBT
dHJpbmcgc291cmNlVVJMID0gc291cmNlQ29kZS51cmwoKS5zdHJpbmcoKTsKICAgICAgICAgaWYg
KG1fd29ya2VyR2xvYmFsU2NvcGUtPnNhbml0aXplU2NyaXB0RXJyb3IoZXJyb3JNZXNzYWdlLCBs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCwgc291cmNlQ29kZS5jYWNoZWRTY3Jp
cHQoKSkpCi0gICAgICAgICAgICAqZXhjZXB0aW9uID0gU2NyaXB0VmFsdWUoKm1fdm0sIGV4ZWMt
PnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgZXJyb3JNZXNzYWdl
LmltcGwoKSkpKTsKKyAgICAgICAgICAgICpleGNlcHRpb24gPSBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSgqbV92bSwgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihl
eGVjLCBlcnJvck1lc3NhZ2UuaW1wbCgpKSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICAq
ZXhjZXB0aW9uID0gU2NyaXB0VmFsdWUoKm1fdm0sIGV2YWx1YXRpb25FeGNlcHRpb24pOworICAg
ICAgICAgICAgKmV4Y2VwdGlvbiA9IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCptX3ZtLCBldmFs
dWF0aW9uRXhjZXB0aW9uKTsKICAgICB9CiB9CiAKLXZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxl
cjo6c2V0RXhjZXB0aW9uKGNvbnN0IFNjcmlwdFZhbHVlJiBleGNlcHRpb24pCit2b2lkIFdvcmtl
clNjcmlwdENvbnRyb2xsZXI6OnNldEV4Y2VwdGlvbihjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYgZXhjZXB0aW9uKQogewogICAgIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9i
YWxFeGVjKCktPnZtKCkudGhyb3dFeGNlcHRpb24obV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIt
Pmdsb2JhbEV4ZWMoKSwgZXhjZXB0aW9uLmpzVmFsdWUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKaW5kZXggOGJiN2Y0
OS4uMDI1YzM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2Vy
U2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtl
clNjcmlwdENvbnRyb2xsZXIuaApAQCAtMzMsMTUgKzMzLDE4IEBACiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKK25hbWVzcGFjZSBEZXByZWNh
dGVkIHsKK2NsYXNzIFNjcmlwdFZhbHVlOworfQorCiBuYW1lc3BhY2UgSlNDIHsKLSAgICBjbGFz
cyBWTTsKK2NsYXNzIFZNOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBK
U1dvcmtlckdsb2JhbFNjb3BlOwogICAgIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7Ci0gICAgY2xh
c3MgU2NyaXB0VmFsdWU7CiAgICAgY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAKICAgICBjbGFz
cyBXb3JrZXJTY3JpcHRDb250cm9sbGVyIHsKQEAgLTU3LDkgKzYwLDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBldmFsdWF0ZShjb25zdCBTY3JpcHRT
b3VyY2VDb2RlJik7Ci0gICAgICAgIHZvaWQgZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYsIFNjcmlwdFZhbHVlKiBleGNlcHRpb24pOworICAgICAgICB2b2lkIGV2YWx1YXRlKGNvbnN0
IFNjcmlwdFNvdXJjZUNvZGUmLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSogZXhjZXB0aW9uKTsK
IAotICAgICAgICB2b2lkIHNldEV4Y2VwdGlvbihjb25zdCBTY3JpcHRWYWx1ZSYpOworICAgICAg
ICB2b2lkIHNldEV4Y2VwdGlvbihjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYpOwogCiAg
ICAgICAgIC8vIEFzeW5jIHJlcXVlc3QgdG8gdGVybWluYXRlIGEgSlMgcnVuIGV4ZWN1dGlvbi4g
RXZlbnR1YWxseSBjYXVzZXMgdGVybWluYXRpb24KICAgICAgICAgLy8gZXhjZXB0aW9uIHJhaXNl
ZCBkdXJpbmcgSlMgZXhlY3V0aW9uLCBpZiB0aGUgd29ya2VyIHRocmVhZCBoYXBwZW5zIHRvIHJ1
biBKUy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KaW5kZXggYWYwNDQyYS4uYTY4ZjdkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTMyMzQsNyArMzIzNCw3
IEBAIG15ICVuYXRpdmVUeXBlID0gKAogICAgICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiID0+ICJS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiIsCiAgICAgIkRhdGUiID0+ICJkb3VibGUiLAog
ICAgICJEaWN0aW9uYXJ5IiA9PiAiRGljdGlvbmFyeSIsCi0gICAgImFueSIgPT4gIlNjcmlwdFZh
bHVlIiwKKyAgICAiYW55IiA9PiAiRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUiLAogICAgICJib29s
ZWFuIiA9PiAiYm9vbCIsCiAgICAgImRvdWJsZSIgPT4gImRvdWJsZSIsCiAgICAgImZsb2F0IiA9
PiAiZmxvYXQiLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCA5MzFkYjI2Li43NzY0Yzg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApA
QCAtMTY1MSw3ICsxNjUxLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpBbnlBdHRyaWJ1dGUoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSB2YWwKICAgICBVTlVTRURf
UEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9i
aio+KHRoaXNPYmplY3QpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
Ci0gICAgU2NyaXB0VmFsdWUgbmF0aXZlVmFsdWUoZXhlYy0+dm0oKSwgdmFsdWUpOworICAgIERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG5hdGl2ZVZhbHVlKGV4ZWMtPnZtKCksIHZhbHVlKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKICAgICBpbXBsLnNl
dEFueUF0dHJpYnV0ZShuYXRpdmVWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ3VzdG9tRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmNwcApp
bmRleCBiMGZiYTk5Li5kNWVmMGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3Vz
dG9tRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5jcHAKQEAg
LTQ4LDcgKzQ4LDcgQEAgQ3VzdG9tRXZlbnQ6On5DdXN0b21FdmVudCgpCiB7CiB9CiAKLXZvaWQg
Q3VzdG9tRXZlbnQ6OmluaXRDdXN0b21FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJv
b2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBkZXRhaWwp
Cit2b2lkIEN1c3RvbUV2ZW50Ojppbml0Q3VzdG9tRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSYgZGV0YWlsKQogewogICAgIEFTU0VSVCghbV9zZXJpYWxpemVkU2NyaXB0VmFs
dWUuZ2V0KCkpOwogICAgIGlmIChkaXNwYXRjaGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ3VzdG9tRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5o
CmluZGV4IGJjODkwOTYuLjdmNGMxY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
dXN0b21FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5oCkBAIC0y
NywxNSArMjcsMTUgQEAKICNkZWZpbmUgQ3VzdG9tRXZlbnRfaAogCiAjaW5jbHVkZSAiRXZlbnQu
aCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RydWN0IEN1c3RvbUV2ZW50SW5pdCA6IHB1YmxpYyBFdmVudEluaXQgewog
ICAgIEN1c3RvbUV2ZW50SW5pdCgpOwogCi0gICAgU2NyaXB0VmFsdWUgZGV0YWlsOworICAgIERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRldGFpbDsKIH07CiAKIGNsYXNzIEN1c3RvbUV2ZW50IDog
cHVibGljIEV2ZW50IHsKQEAgLTUyLDE4ICs1MiwxOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgQ3VzdG9tRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIpKTsKICAgICB9CiAK
LSAgICB2b2lkIGluaXRDdXN0b21FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wg
Y2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBkZXRhaWwpOwor
ICAgIHZvaWQgaW5pdEN1c3RvbUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBj
YW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
IGRldGFpbCk7CiAKICAgICB2aXJ0dWFsIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkg
Y29uc3Q7CiAKLSAgICBjb25zdCBTY3JpcHRWYWx1ZSYgZGV0YWlsKCkgY29uc3QgeyByZXR1cm4g
bV9kZXRhaWw7IH0KKyAgICBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZGV0YWlsKCkg
Y29uc3QgeyByZXR1cm4gbV9kZXRhaWw7IH0KICAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gc2VyaWFsaXplZFNjcmlwdFZhbHVlKCkgeyByZXR1cm4gbV9zZXJpYWxpemVkU2Ny
aXB0VmFsdWU7IH0KIAogcHJpdmF0ZToKICAgICBDdXN0b21FdmVudCgpOwogICAgIEN1c3RvbUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgQ3VzdG9tRXZlbnRJbml0JiBpbml0
aWFsaXplcik7CiAKLSAgICBTY3JpcHRWYWx1ZSBtX2RldGFpbDsKKyAgICBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSBtX2RldGFpbDsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBt
X3NlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NZXNzYWdlRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5j
cHAKaW5kZXggZmQ4Njk3OC4uNDM4OGM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L01lc3NhZ2VFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5j
cHAKQEAgLTIxLDE0ICsyMSwxMyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqCiAgKi8KIAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgogCi0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRTb3VyY2UoRXZlbnRUYXJnZXQq
IHNvdXJjZSkKQEAgLTU2LDcgKzU1LDcgQEAgTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBNZXNzYWdlRXZlbnRJbml0JiBpbmkKIHsKIH0K
IAotTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoY29uc3QgU2NyaXB0VmFsdWUmIGRhdGEsIGNv
bnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBQYXNzUmVmUHRy
PEV2ZW50VGFyZ2V0PiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMp
CitNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQs
IFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFy
cmF5PiBwb3J0cykKICAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQsIGZhbHNl
LCBmYWxzZSkKICAgICAsIG1fZGF0YVR5cGUoRGF0YVR5cGVTY3JpcHRWYWx1ZSkKICAgICAsIG1f
ZGF0YUFzU2NyaXB0VmFsdWUoZGF0YSkKQEAgLTEwOCw3ICsxMDcsNyBAQCBNZXNzYWdlRXZlbnQ6
On5NZXNzYWdlRXZlbnQoKQogewogfQogCi12b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29u
c3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIFBhc3NPd25QdHI8TWVz
c2FnZVBvcnRBcnJheT4gcG9ydHMpCit2b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFi
bGUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9y
aWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIFBhc3NP
d25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMpCiB7CiAgICAgaWYgKGRpc3BhdGNoZWQoKSkK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VF
dmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCmluZGV4IGI5N2E3MDMu
LjY4NjBkMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKQEAgLTMyLDggKzMyLDggQEAK
ICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VQb3J0LmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXJpYWxp
emVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2lu
Y2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NDMsNyArNDMsNyBAQCBjbGFzcyBFdmVudFRhcmdldDsKIHN0cnVjdCBNZXNzYWdlRXZlbnRJbml0
IDogcHVibGljIEV2ZW50SW5pdCB7CiAgICAgTWVzc2FnZUV2ZW50SW5pdCgpOwogCi0gICAgU2Ny
aXB0VmFsdWUgZGF0YTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBkYXRhOwogICAgIFN0
cmluZyBvcmlnaW47CiAgICAgU3RyaW5nIGxhc3RFdmVudElkOwogICAgIFJlZlB0cjxFdmVudFRh
cmdldD4gc291cmNlOwpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IE1lc3NhZ2VFdmVudCk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPE1lc3NhZ2VFdmVudD4gY3JlYXRlKFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4g
cG9ydHMsIGNvbnN0IFNjcmlwdFZhbHVlJiBkYXRhID0gU2NyaXB0VmFsdWUoKSwgY29uc3QgU3Ry
aW5nJiBvcmlnaW4gPSBTdHJpbmcoKSwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9IFN0cmlu
ZygpLCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBzb3VyY2UgPSAwKQorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPE1lc3NhZ2VFdmVudD4gY3JlYXRlKFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4g
cG9ydHMsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBkYXRhID0gRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUoKSwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSBTdHJpbmcoKSwgY29uc3QgU3Ry
aW5nJiBsYXN0RXZlbnRJZCA9IFN0cmluZygpLCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBzb3Vy
Y2UgPSAwKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZXNzYWdlRXZlbnQo
ZGF0YSwgb3JpZ2luLCBsYXN0RXZlbnRJZCwgc291cmNlLCBwb3J0cykpOwogICAgIH0KQEAgLTgy
LDcgKzgyLDcgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5NZXNzYWdlRXZlbnQoKTsK
IAotICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJv
b2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBkYXRhLCBj
b25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93
KiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4pOworICAgIHZvaWQgaW5pdE1l
c3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29s
IGNhbmNlbGFibGUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBkYXRhLCBjb25zdCBT
dHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3Vy
Y2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4pOwogICAgIHZvaWQgaW5pdE1lc3NhZ2VF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJp
bmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2Us
IFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4pOwogCiAgICAgY29uc3QgU3RyaW5nJiBvcmln
aW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQpAQCAtMTA3LDcgKzEwNyw3IEBAIHB1Ymxp
YzoKICAgICAgICAgRGF0YVR5cGVBcnJheUJ1ZmZlcgogICAgIH07CiAgICAgRGF0YVR5cGUgZGF0
YVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGFUeXBlOyB9Ci0gICAgY29uc3QgU2NyaXB0VmFs
dWUmIGRhdGFBc1NjcmlwdFZhbHVlKCkgY29uc3QgeyBBU1NFUlQobV9kYXRhVHlwZSA9PSBEYXRh
VHlwZVNjcmlwdFZhbHVlKTsgcmV0dXJuIG1fZGF0YUFzU2NyaXB0VmFsdWU7IH0KKyAgICBjb25z
dCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZGF0YUFzU2NyaXB0VmFsdWUoKSBjb25zdCB7IEFT
U0VSVChtX2RhdGFUeXBlID09IERhdGFUeXBlU2NyaXB0VmFsdWUpOyByZXR1cm4gbV9kYXRhQXNT
Y3JpcHRWYWx1ZTsgfQogICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRh
QXNTZXJpYWxpemVkU2NyaXB0VmFsdWUoKSBjb25zdCB7IEFTU0VSVChtX2RhdGFUeXBlID09IERh
dGFUeXBlU2VyaWFsaXplZFNjcmlwdFZhbHVlKTsgcmV0dXJuIG1fZGF0YUFzU2VyaWFsaXplZFNj
cmlwdFZhbHVlOyB9CiAgICAgU3RyaW5nIGRhdGFBc1N0cmluZygpIGNvbnN0IHsgQVNTRVJUKG1f
ZGF0YVR5cGUgPT0gRGF0YVR5cGVTdHJpbmcpOyByZXR1cm4gbV9kYXRhQXNTdHJpbmc7IH0KICAg
ICBCbG9iKiBkYXRhQXNCbG9iKCkgY29uc3QgeyBBU1NFUlQobV9kYXRhVHlwZSA9PSBEYXRhVHlw
ZUJsb2IpOyByZXR1cm4gbV9kYXRhQXNCbG9iLmdldCgpOyB9CkBAIC0xMTYsNyArMTE2LDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBNZXNzYWdlRXZlbnQoKTsKICAgICBNZXNzYWdlRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgTWVzc2FnZUV2ZW50SW5pdCYpOwotICAgIE1lc3Nh
Z2VFdmVudChjb25zdCBTY3JpcHRWYWx1ZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNv
bnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHNvdXJjZSwg
UGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5Pik7CisgICAgTWVzc2FnZUV2ZW50KGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBsYXN0RXZlbnRJZCwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gc291cmNlLCBQYXNz
T3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+KTsKICAgICBNZXNzYWdlRXZlbnQoUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBT
dHJpbmcmIGxhc3RFdmVudElkLCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBzb3VyY2UsIFBhc3NP
d25QdHI8TWVzc2FnZVBvcnRBcnJheT4pOwogCiAgICAgZXhwbGljaXQgTWVzc2FnZUV2ZW50KGNv
bnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pOwpAQCAtMTI0LDcgKzEyNCw3
IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8QXJyYXlC
dWZmZXI+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luKTsKIAogICAgIERhdGFUeXBlIG1fZGF0
YVR5cGU7Ci0gICAgU2NyaXB0VmFsdWUgbV9kYXRhQXNTY3JpcHRWYWx1ZTsKKyAgICBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSBtX2RhdGFBc1NjcmlwdFZhbHVlOwogICAgIFJlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IG1fZGF0YUFzU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogICAgIFN0cmlu
ZyBtX2RhdGFBc1N0cmluZzsKICAgICBSZWZQdHI8QmxvYj4gbV9kYXRhQXNCbG9iOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Qb3BTdGF0ZUV2ZW50LmgKaW5kZXggMjIxOTNhNC4uNTY4MjM0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUG9wU3RhdGVFdmVudC5oCkBAIC0yOCwxNCArMjgsMTQgQEAKICNkZWZpbmUgUG9wU3RhdGVF
dmVudF9oCiAKICNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisj
aW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdHJ1Y3QgUG9wU3RhdGVFdmVudEluaXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKICAgICBQb3BT
dGF0ZUV2ZW50SW5pdCgpOwogCi0gICAgU2NyaXB0VmFsdWUgc3RhdGU7CisgICAgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUgc3RhdGU7CiB9OwogCiBjbGFzcyBIaXN0b3J5OwpAQCAtNDksNyArNDks
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UG9wU3RhdGVFdmVudD4gY3JlYXRl
KGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFBvcFN0YXRlRXZlbnRJbml0Jik7CiAKICAgICBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFN0YXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9zZXJpYWxpemVkU3RhdGU7IH0KLSAgICBjb25zdCBTY3JpcHRWYWx1ZSYgc3Rh
dGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CisgICAgY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQogICAgIEhpc3Rvcnkq
IGhpc3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2hpc3RvcnkuZ2V0KCk7IH0KIAogICAgIHZpcnR1
YWwgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdDsKQEAgLTU5LDcgKzU5LDcg
QEAgcHJpdmF0ZToKICAgICBQb3BTdGF0ZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0
IFBvcFN0YXRlRXZlbnRJbml0Jik7CiAgICAgZXhwbGljaXQgUG9wU3RhdGVFdmVudChQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SGlzdG9yeT4pOwogCi0gICAg
U2NyaXB0VmFsdWUgbV9zdGF0ZTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBtX3N0YXRl
OwogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1fc2VyaWFsaXplZFN0YXRlOwog
ICAgIFJlZlB0cjxIaXN0b3J5PiBtX2hpc3Rvcnk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVs
ZW1lbnQuY3BwCmluZGV4IDE1N2M0Y2EuLmQ5Njg3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RWxlbWVudC5jcHAKQEAgLTQyLDExICs0MiwxMSBAQAogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJTY3JpcHRSdW5uZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VD
b2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTY3JpcHRhYmxlRG9j
dW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dE5vZGVUcmF2ZXJzYWwuaCIKKyNpbmNsdWRlIDxiaW5k
aW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SGFzaC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNzQ0
OGJkOS4uNjZmN2ZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CkBAIC0xMzIsOCArMTMyLDkgQEAKICNpZiBFTkFCTEUoTUVESUFfQ09OVFJPTFNfU0NSSVBUKQog
I2luY2x1ZGUgIkpTTWVkaWFDb250cm9sc0hvc3QuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xz
SG9zdC5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUgIlNjcmlwdEdsb2Jh
bE9iamVjdC5oIgogI2luY2x1ZGUgIlVzZXJBZ2VudFNjcmlwdHMuaCIKKyNpbmNsdWRlIDxiaW5k
aW5ncy9TY3JpcHRPYmplY3QuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCmluZGV4IGVkNzMwYjQuLjdmZjRj
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCkBAIC0zNywx
NyArMzcsMTUgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MUGFyYW1F
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgotI2luY2x1ZGUgIkluc3Bl
Y3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291
cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKLQotI2lmIEVOQUJMRShTVkcp
Ci0jaW5jbHVkZSAiU1ZHTmFtZXMuaCIKLSNlbmRpZgotCiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KIAorI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKKyNlbmRpZgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcAppbmRl
eCBhZDMzZTAwLi5kMDYwNjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9YU1NBdWRpdG9yRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L1hTU0F1ZGl0b3JEZWxlZ2F0ZS5jcHAKQEAgLTM1LDEyICszNSwxNCBAQAogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJI
VE1MUGFyc2VySWRpb21zLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVk
ZSAiUGluZ0xvYWRlci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSA8
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKK3VzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogWFNTQXVkaXRvckRlbGVnYXRl
OjpYU1NBdWRpdG9yRGVsZWdhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQppbmRleCBhOTk1NTMw
Li5jYWYwYWQ5IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVy
YXRvckluc3BlY3Rvci5weQorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVy
YXRvckluc3BlY3Rvci5weQpAQCAtMjYyLDcgKzI2Miw3IEBAIGNsYXNzIFJhd1R5cGVzKG9iamVj
dCk6CiAKICAgICAgICAgQGNsYXNzbWV0aG9kCiAgICAgICAgIGRlZiBnZXRfcmF3X3ZhbGlkYXRv
cl9jYWxsX3RleHQoY2xzKToKLSAgICAgICAgICAgIHJldHVybiAiUnVudGltZUNhc3RIZWxwZXI6
OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFsdWU6OlR5cGUlcz4iICUgY2xzLmdldF92YWxpZGF0ZV9t
ZXRob2RfcGFyYW1zKCkudGVtcGxhdGVfdHlwZQorICAgICAgICAgICAgcmV0dXJuICJSdW50aW1l
Q2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlOjpUeXBlJXM+
IiAlIGNscy5nZXRfdmFsaWRhdGVfbWV0aG9kX3BhcmFtcygpLnRlbXBsYXRlX3R5cGUKIAogICAg
IGNsYXNzIFN0cmluZyhCYXNlVHlwZSk6CiAgICAgICAgIEBzdGF0aWNtZXRob2QKQEAgLTQ1MSw3
ICs0NTEsNyBAQCBjbGFzcyBSYXdUeXBlcyhvYmplY3QpOgogCiAgICAgICAgIEBzdGF0aWNtZXRo
b2QKICAgICAgICAgZGVmIGdldF9hcnJheV9pdGVtX3Jhd19jX3R5cGVfdGV4dCgpOgotICAgICAg
ICAgICAgcmV0dXJuICJJbnNwZWN0b3JPYmplY3QiCisgICAgICAgICAgICByZXR1cm4gIkluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0IgogCiAgICAgICAgIEBzdGF0aWNtZXRob2QKICAgICAgICAg
ZGVmIGdldF9yYXdfdHlwZV9tb2RlbCgpOgpAQCAtNDg2LDcgKzQ4Niw3IEBAIGNsYXNzIFJhd1R5
cGVzKG9iamVjdCk6CiAKICAgICAgICAgQHN0YXRpY21ldGhvZAogICAgICAgICBkZWYgZ2V0X2Fy
cmF5X2l0ZW1fcmF3X2NfdHlwZV90ZXh0KCk6Ci0gICAgICAgICAgICByZXR1cm4gIkluc3BlY3Rv
clZhbHVlIgorICAgICAgICAgICAgcmV0dXJuICJJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlIgog
CiAgICAgICAgIEBzdGF0aWNtZXRob2QKICAgICAgICAgZGVmIGdldF9yYXdfdHlwZV9tb2RlbCgp
OgpAQCAtNTI5LDcgKzUyOSw3IEBAIGNsYXNzIFJhd1R5cGVzKG9iamVjdCk6CiAKICAgICAgICAg
QHN0YXRpY21ldGhvZAogICAgICAgICBkZWYgZ2V0X2FycmF5X2l0ZW1fcmF3X2NfdHlwZV90ZXh0
KCk6Ci0gICAgICAgICAgICByZXR1cm4gIkluc3BlY3RvckFycmF5IgorICAgICAgICAgICAgcmV0
dXJuICJJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5IgogCiAgICAgICAgIEBzdGF0aWNtZXRob2QK
ICAgICAgICAgZGVmIGdldF9yYXdfdHlwZV9tb2RlbCgpOgpAQCAtNzI2LDkgKzcyNiw5IEBAIGNs
YXNzIFR5cGVNb2RlbDoKICAgICAgICAgICAgIGNscy5JbnQgPSBjbHMuVmFsdWVUeXBlKCJpbnQi
LCBGYWxzZSkKICAgICAgICAgY2xzLk51bWJlciA9IGNscy5WYWx1ZVR5cGUoImRvdWJsZSIsIEZh
bHNlKQogICAgICAgICBjbHMuU3RyaW5nID0gY2xzLlZhbHVlVHlwZSgiU3RyaW5nIiwgVHJ1ZSwp
Ci0gICAgICAgIGNscy5PYmplY3QgPSBjbHMuUmVmUHRyQmFzZWQoIkluc3BlY3Rvck9iamVjdCIp
Ci0gICAgICAgIGNscy5BcnJheSA9IGNscy5SZWZQdHJCYXNlZCgiSW5zcGVjdG9yQXJyYXkiKQot
ICAgICAgICBjbHMuQW55ID0gY2xzLlJlZlB0ckJhc2VkKCJJbnNwZWN0b3JWYWx1ZSIpCisgICAg
ICAgIGNscy5PYmplY3QgPSBjbHMuUmVmUHRyQmFzZWQoIkluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0IikKKyAgICAgICAgY2xzLkFycmF5ID0gY2xzLlJlZlB0ckJhc2VkKCJJbnNwZWN0b3I6Oklu
c3BlY3RvckFycmF5IikKKyAgICAgICAgY2xzLkFueSA9IGNscy5SZWZQdHJCYXNlZCgiSW5zcGVj
dG9yOjpJbnNwZWN0b3JWYWx1ZSIpCiAKIFR5cGVNb2RlbC5pbml0X2NsYXNzKCkKIApAQCAtOTI4
LDcgKzkyOCw3IEBAIGNsYXNzIFR5cGVCaW5kaW5nczoKIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiBlbnVtX2JpbmRpbmdfY2xzLm5lZWRfaW50ZXJuYWxfcnVudGltZV9jYXN0
XzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQoIiNp
ZiAlc1xuIiAlIFZBTElEQVRPUl9JRkRFRl9OQU1FKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0
VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKTtcbiIpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJl
Y3RWYWx1ZShJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiB2YWx1ZSk7XG4iKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVuZCgiI2VuZGlmICAvLyAlc1xu
IiAlIFZBTElEQVRPUl9JRkRFRl9OQU1FKQogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyID0gZ2VuZXJhdGVfY29udGV4dC52YWxpZGF0b3Jfd3Jp
dGVyCkBAIC05MzgsNyArOTM4LDcgQEAgY2xhc3MgVHlwZUJpbmRpbmdzOgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgZG9tYWluX2d1YXJkOgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbl9ndWFyZC5nZW5lcmF0ZV9vcGVuKHZhbGlk
YXRvcl93cml0ZXIpCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlk
YXRvcl93cml0ZXIubmV3bGluZSgidm9pZCAlcyVzOjphc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVj
dG9yVmFsdWUqIHZhbHVlKVxuIiAlIChoZWxwZXIuZnVsbF9uYW1lX3ByZWZpeF9mb3JfaW1wbCwg
ZW51bV9uYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRv
cl93cml0ZXIubmV3bGluZSgidm9pZCAlcyVzOjphc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9y
OjpJbnNwZWN0b3JWYWx1ZSogdmFsdWUpXG4iICUgKGhlbHBlci5mdWxsX25hbWVfcHJlZml4X2Zv
cl9pbXBsLCBlbnVtX25hbWUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCJ7XG4iKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCIgICAgV1RGOjpTdHJpbmcgcztc
biIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVy
Lm5ld2xpbmUoIiAgICBib29sIGNhc3RfcmVzID0gdmFsdWUtPmFzU3RyaW5nKCZzKTtcbiIpCkBA
IC0xMTcyLDkgKzExNzIsOSBAQCBjbGFzcyBUeXBlQmluZGluZ3M6CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQoY2xhc3NfbmFtZSkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVuZCgiIDogcHVibGljICIpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIGlzX29wZW5fdHlwZToKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQoIkluc3BlY3Rvck9iamVjdCIpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKCJJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKCJJbnNw
ZWN0b3JPYmplY3RCYXNlIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdy
aXRlci5hcHBlbmQoIkluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0QmFzZSIpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQoIiB7XG4iKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgicHVibGljOlxuIikKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYWRfaG9jX3R5cGVfd3JpdGVyID0gd3JpdGVyLmluc2Vy
dF93cml0ZXIoIiAgICAiKQpAQCAtMTI1MSwyNSArMTI1MSwyNSBAQCBjbGFzcyBUeXBlQmluZGlu
Z3M6CiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2V0dGVyX25h
bWUgaW4gSU5TUEVDVE9SX09CSkVDVF9TRVRURVJfTkFNRVM6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICB1c2luZyBJbnNwZWN0b3JP
YmplY3RCYXNlOjolcztcblxuIiAlIHNldHRlcl9uYW1lKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgdXNpbmcgSW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3RCYXNlOjolcztcblxuIiAlIHNldHRlcl9uYW1lKQogCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIGNsYXNzX2JpbmRpbmdfY2xzLm5lZWRfdXNlcl9ydW50
aW1lX2Nhc3RfOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5l
d2xpbmUoIiAgICBzdGF0aWMgUGFzc1JlZlB0cjwlcz4gcnVudGltZUNhc3QoUGFzc1JlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4gdmFsdWUpXG4iICUgY2xhc3NfbmFtZSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgc3RhdGljIFBhc3NSZWZQdHI8
JXM+IHJ1bnRpbWVDYXN0KFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gdmFs
dWUpXG4iICUgY2xhc3NfbmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdyaXRlci5uZXdsaW5lKCIgICAge1xuIikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9i
amVjdDtcbiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3
bGluZSgiICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG9iamVjdDtc
biIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgi
ICAgICAgICBib29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNPYmplY3QoJm9iamVjdCk7XG4iKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICAgICAg
QVNTRVJUX1VOVVNFRChjYXN0UmVzLCBjYXN0UmVzKTtcbiIpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKCIjaWYgJXNcbiIgJSBWQUxJREFUT1JfSUZE
RUZfTkFNRSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXds
aW5lKCIgICAgICAgIGFzc2VydENvcnJlY3RWYWx1ZShvYmplY3QuZ2V0KCkpO1xuIikKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQoIiNlbmRpZiAgLy8g
JXNcbiIgJSBWQUxJREFUT1JfSUZERUZfTkFNRSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZigl
cykgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVjdEJhc2UpLCB0eXBlX2Nhc3RfcHJvYmxlbSk7XG4i
ICUgY2xhc3NfbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRl
ci5uZXdsaW5lKCIgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDwlcyo+KHN0YXRpY19jYXN0PElu
c3BlY3Rvck9iamVjdEJhc2UqPihvYmplY3QuZ2V0KCkpKTtcbiIgJSBjbGFzc19uYW1lKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICAgICAg
Q09NUElMRV9BU1NFUlQoc2l6ZW9mKCVzKSA9PSBzaXplb2YoSW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3RCYXNlKSwgdHlwZV9jYXN0X3Byb2JsZW0pO1xuIiAlIGNsYXNzX25hbWUpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8JXMqPihzdGF0aWNfY2FzdDxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dEJhc2UqPihvYmplY3QuZ2V0KCkpKTtcbiIgJSBjbGFzc19uYW1lKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICB9XG4iKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVuZCgiXG4iKQogCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNsYXNzX2JpbmRpbmdfY2xzLm5lZWRfaW50ZXJu
YWxfcnVudGltZV9jYXN0XzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdy
aXRlci5hcHBlbmQoIiNpZiAlc1xuIiAlIFZBTElEQVRPUl9JRkRFRl9OQU1FKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICBzdGF0aWMgdm9p
ZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKTtcbiIpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgIHN0YXRpYyB2
b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiB2YWx1ZSk7
XG4iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVuZCgi
I2VuZGlmICAvLyAlc1xuIiAlIFZBTElEQVRPUl9JRkRFRl9OQU1FKQogCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjbG9zZWRfZmllbGRfc2V0ID0gKGNvbnRleHRfZG9tYWlu
X25hbWUgKyAiLiIgKyBjbGFzc19uYW1lKSBub3QgaW4gVFlQRVNfV0lUSF9PUEVOX0ZJRUxEX0xJ
U1RfU0VUCkBAIC0xMjgxLDcgKzEyODEsNyBAQCBjbGFzcyBUeXBlQmluZGluZ3M6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkb21haW5fZ3VhcmQ6CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluX2d1YXJkLmdlbmVyYXRlX29wZW4o
dmFsaWRhdG9yX3dyaXRlcikKIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCJ2b2lkICVzJXM6OmFzc2VydENvcnJlY3RWYWx1ZShJ
bnNwZWN0b3JWYWx1ZSogdmFsdWUpXG4iICUgKGhlbHBlci5mdWxsX25hbWVfcHJlZml4X2Zvcl9p
bXBsLCBjbGFzc19uYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
bGlkYXRvcl93cml0ZXIubmV3bGluZSgidm9pZCAlcyVzOjphc3NlcnRDb3JyZWN0VmFsdWUoSW5z
cGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogdmFsdWUpXG4iICUgKGhlbHBlci5mdWxsX25hbWVfcHJl
Zml4X2Zvcl9pbXBsLCBjbGFzc19uYW1lKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhbGlkYXRvcl93cml0ZXIubmV3bGluZSgie1xuIikKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcl93cml0ZXIubmV3bGluZSgiICAgIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IG9iamVjdDtcbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoIiAgICBib29sIGNhc3RSZXMgPSB2YWx1
ZS0+YXNPYmplY3QoJm9iamVjdCk7XG4iKQpAQCAtMTkwMCwxMCArMTkwMCwxMCBAQCBjbGFzcyBH
ZW5lcmF0b3I6CiAgICAgICAgICAgICBkaXNwYXRjaGVyX25hbWUgPSAiSW5zcGVjdG9yIiArIENh
cGl0YWxpemVyLmxvd2VyX2NhbWVsX2Nhc2VfdG9fdXBwZXIoZG9tYWluX25hbWUpICsgIkJhY2tl
bmREaXNwYXRjaGVyIgogICAgICAgICAgICAgYWdlbnRfaW50ZXJmYWNlX25hbWUgPSBkaXNwYXRj
aGVyX25hbWUgKyAiSGFuZGxlciIKIAotICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfZGlz
cGF0Y2hlcl9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoImNsYXNzICVzIEZJTkFMIDogcHVibGljIElu
c3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyIHtcbiIgJSBkaXNwYXRjaGVyX25h
bWUpCisgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9kaXNwYXRjaGVyX2ludGVyZmFjZV9s
aXN0LmFwcGVuZCgiY2xhc3MgJXMgRklOQUwgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JT
dXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciB7XG4iICUgZGlzcGF0Y2hlcl9uYW1lKQogICAg
ICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfZGlzcGF0Y2hlcl9pbnRlcmZhY2VfbGlzdC5hcHBl
bmQoInB1YmxpYzpcbiIpCi0gICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9kaXNwYXRjaGVy
X2ludGVyZmFjZV9saXN0LmFwcGVuZCgiICAgIHN0YXRpYyBQYXNzUmVmUHRyPCVzPiBjcmVhdGUo
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqLCAlcyopO1xuIiAlIChkaXNwYXRjaGVyX25hbWUs
IGFnZW50X2ludGVyZmFjZV9uYW1lKSkKLSAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rp
c3BhdGNoZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
KGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IG1lc3NhZ2UpIE9WRVJSSURFO1xuIikKKyAgICAgICAgICAgIEdlbmVyYXRvci5iYWNr
ZW5kX2Rpc3BhdGNoZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIgICAgc3RhdGljIFBhc3NSZWZQ
dHI8JXM+IGNyZWF0ZShJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiwgJXMq
KTtcbiIgJSAoZGlzcGF0Y2hlcl9uYW1lLCBhZ2VudF9pbnRlcmZhY2VfbmFtZSkpCisgICAgICAg
ICAgICBHZW5lcmF0b3IuYmFja2VuZF9kaXNwYXRjaGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgi
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRo
b2QsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1lc3NhZ2UpIE9WRVJS
SURFO1xuIikKICAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3BhdGNoZXJfaW50ZXJm
YWNlX2xpc3QuYXBwZW5kKCJwcml2YXRlOlxuIikKIAogICAgICAgICAgICAgR2VuZXJhdG9yLmJh
Y2tlbmRfaGFuZGxlcl9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoImNsYXNzICVzIHtcbiIgJSBhZ2Vu
dF9pbnRlcmZhY2VfbmFtZSkKQEAgLTE5MjIsNyArMTkyMiw3IEBAIGNsYXNzIEdlbmVyYXRvcjoK
ICAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2hhbmRsZXJfaW50ZXJmYWNlX2xpc3QuYXBw
ZW5kKCJ9O1xuXG4iKQogCiAgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9kaXNwYXRjaGVy
X2ludGVyZmFjZV9saXN0LmFwcGVuZCgicHJpdmF0ZTpcbiIpCi0gICAgICAgICAgICBHZW5lcmF0
b3IuYmFja2VuZF9kaXNwYXRjaGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgiICAgICVzKEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKiwgJXMqKTtcbiIgJSAoZGlzcGF0Y2hlcl9uYW1lLCBhZ2Vu
dF9pbnRlcmZhY2VfbmFtZSkpCisgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9kaXNwYXRj
aGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgiICAgICVzKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqLCAlcyopO1xuIiAlIChkaXNwYXRjaGVyX25hbWUsIGFnZW50X2ludGVy
ZmFjZV9uYW1lKSkKICAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3BhdGNoZXJfaW50
ZXJmYWNlX2xpc3QuYXBwZW5kKCIgICAgJXMqIG1fYWdlbnQ7XG4iICUgYWdlbnRfaW50ZXJmYWNl
X25hbWUpCiAgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9kaXNwYXRjaGVyX2ludGVyZmFj
ZV9saXN0LmFwcGVuZCgifTtcblxuIikKIApAQCAtMjAwMyw3ICsyMDAzLDcgQEAgY2xhc3MgR2Vu
ZXJhdG9yOgogICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9oYW5kbGVyX2ludGVyZmFjZV9saXN0
LmFwcGVuZChhZF9ob2NfdHlwZV9vdXRwdXQpCiAgICAgICAgIGFkX2hvY190eXBlX3dyaXRlciA9
IFdyaXRlcihhZF9ob2NfdHlwZV9vdXRwdXQsICIgICAgIikKIAotICAgICAgICBHZW5lcmF0b3Iu
YmFja2VuZF9kaXNwYXRjaGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgiICAgIHZvaWQgJXMobG9u
ZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7XG4iICUganNvbl9jb21t
YW5kX25hbWUpCisgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3BhdGNoZXJfaW50ZXJmYWNl
X2xpc3QuYXBwZW5kKCIgICAgdm9pZCAlcyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpO1xuIiAlIGpzb25fY29tbWFuZF9uYW1lKQogCiAgICAg
ICAgIEdlbmVyYXRvci5iYWNrZW5kX2hhbmRsZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIgICAg
dmlydHVhbCB2b2lkICVzKEVycm9yU3RyaW5nKiIgJSBqc29uX2NvbW1hbmRfbmFtZSkKIApAQCAt
MjA5OCw5ICsyMDk4LDkgQEAgY2xhc3MgR2VuZXJhdG9yOgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX21ldGhvZF9pbXBsZW1lbnRh
dGlvbl9saXN0LCBUZW1wbGF0ZXMuY2FsbGJhY2tfbWV0aG9kLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHsiY2FsbGJhY2tOYW1lIjogY2FsbGJhY2tfbmFtZSwg
ImhhbmRsZXJOYW1lIjogYWdlbnRfaW50ZXJmYWNlX25hbWV9KQogCi0gICAgICAgICAgICBjYWxs
YmFja193cml0ZXIubmV3bGluZSgiY2xhc3MgIiArIGNhbGxiYWNrX25hbWUgKyAiIDogcHVibGlj
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2Uge1xuIikKKyAgICAgICAg
ICAgIGNhbGxiYWNrX3dyaXRlci5uZXdsaW5lKCJjbGFzcyAiICsgY2FsbGJhY2tfbmFtZSArICIg
OiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tC
YXNlIHtcbiIpCiAgICAgICAgICAgICBjYWxsYmFja193cml0ZXIubmV3bGluZSgicHVibGljOlxu
IikKLSAgICAgICAgICAgIGNhbGxiYWNrX3dyaXRlci5uZXdsaW5lKCIgICAgIiArIGNhbGxiYWNr
X25hbWUgKyAiKFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+LCBpbnQgaWQp
O1xuIikKKyAgICAgICAgICAgIGNhbGxiYWNrX3dyaXRlci5uZXdsaW5lKCIgICAgIiArIGNhbGxi
YWNrX25hbWUgKyAiKFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcj4sIGludCBpZCk7XG4iKQogICAgICAgICAgICAgY2FsbGJhY2tfd3JpdGVyLm5ld2xpbmUo
IiAgICB2b2lkIHNlbmRTdWNjZXNzKCIgKyAiLCAiLmpvaW4oZGVjbF9wYXJhbWV0ZXJfbGlzdCkg
KyAiKTtcbiIpCiAgICAgICAgICAgICBjYWxsYmFja193cml0ZXIubmV3bGluZSgifTtcbiIpCiAK
QEAgLTIxMDksNyArMjEwOSw3IEBAIGNsYXNzIEdlbmVyYXRvcjoKICAgICAgICAgICAgIG1ldGhv
ZF9kaXNwYXRjaF9oYW5kbGluZy5hcHBlbmQoIiAgICBSZWZQdHI8JXM6OiVzPiBjYWxsYmFjayA9
IGFkb3B0UmVmKG5ldyAlczo6JXMobV9iYWNrZW5kRGlzcGF0Y2hlcixjYWxsSWQpKTtcbiIgJSAo
YWdlbnRfaW50ZXJmYWNlX25hbWUsIGNhbGxiYWNrX25hbWUsIGFnZW50X2ludGVyZmFjZV9uYW1l
LCBjYWxsYmFja19uYW1lKSkKICAgICAgICAgICAgIG1ldGhvZF9lbmRpbmdfaGFuZGxpbmcuYXBw
ZW5kKCIgICAgaWYgKGVycm9yLmxlbmd0aCgpKSB7XG4iKQogICAgICAgICAgICAgbWV0aG9kX2Vu
ZGluZ19oYW5kbGluZy5hcHBlbmQoIiAgICAgICAgY2FsbGJhY2stPmRpc2FibGUoKTtcbiIpCi0g
ICAgICAgICAgICBtZXRob2RfZW5kaW5nX2hhbmRsaW5nLmFwcGVuZCgiICAgICAgICBtX2JhY2tl
bmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOjpTZXJ2ZXJFcnJvciwgZXJyb3IpO1xuIikKKyAgICAgICAgICAgIG1ldGhv
ZF9lbmRpbmdfaGFuZGxpbmcuYXBwZW5kKCIgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJl
cG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcjo6U2VydmVyRXJyb3IsIGVycm9yKTtcbiIpCiAgICAgICAgICAgICBtZXRob2RfZW5k
aW5nX2hhbmRsaW5nLmFwcGVuZCgiICAgICAgICByZXR1cm47XG4iKQogICAgICAgICAgICAgbWV0
aG9kX2VuZGluZ19oYW5kbGluZy5hcHBlbmQoIiAgICB9IikKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5IGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5Cmlu
ZGV4IDdhNTE4YTguLmE3YjIyN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weQorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3RvclN0cmluZ3MucHkKQEAgLTcwLDcgKzcwLDcg
QEAgYmFja2VuZF9kaXNwYXRjaGVyX2Rpc3BhdGNoX21ldGhvZCA9ICgKIHsKICAgICBSZWY8JHtk
aXNwYXRjaGVyTmFtZX0+IHByb3RlY3QoKnRoaXMpOwogCi0gICAgdHlwZWRlZiB2b2lkICgke2Rp
c3BhdGNoZXJOYW1lfTo6KkNhbGxIYW5kbGVyKShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9y
T2JqZWN0JiBtZXNzYWdlKTsKKyAgICB0eXBlZGVmIHZvaWQgKCR7ZGlzcGF0Y2hlck5hbWV9Ojoq
Q2FsbEhhbmRsZXIpKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dCYgbWVzc2FnZSk7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgQ2FsbEhhbmRsZXI+IERp
c3BhdGNoTWFwOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoRGlzcGF0Y2hNYXAsIGRpc3BhdGNo
TWFwLCAoKSk7CiAgICAgaWYgKGRpc3BhdGNoTWFwLmlzRW1wdHkoKSkgewpAQCAtMTEyLDcgKzEx
Miw3IEBAICRjb2RlCiAiIiIpCiAKIGNhbGxiYWNrX21ldGhvZCA9ICgKLSIiIiR7aGFuZGxlck5h
bWV9Ojoke2NhbGxiYWNrTmFtZX06OiR7Y2FsbGJhY2tOYW1lfShQYXNzUmVmUHRyPEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyPiBiYWNrZW5kRGlzcGF0Y2hlciwgaW50IGlkKSA6IEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UoYmFja2VuZERpc3BhdGNoZXIsIGlkKSB7
IH0KKyIiIiR7aGFuZGxlck5hbWV9Ojoke2NhbGxiYWNrTmFtZX06OiR7Y2FsbGJhY2tOYW1lfShQ
YXNzUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBiYWNrZW5kRGlzcGF0Y2hlciwg
aW50IGlkKSA6IEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNr
QmFzZShiYWNrZW5kRGlzcGF0Y2hlciwgaWQpIHsgfQogCiB2b2lkICR7aGFuZGxlck5hbWV9Ojok
e2NhbGxiYWNrTmFtZX06OnNlbmRTdWNjZXNzKCR7cGFyYW1ldGVyc30pCiB7CkBAIC0xMjYsMTQg
KzEyNiwxMyBAQCBmcm9udGVuZF9oID0gKAogI2RlZmluZSBJbnNwZWN0b3JGcm9udGVuZF9oCiAK
ICNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZh
bHVlcy5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZvcndhcmRpbmcuaCIKKyNpbmNsdWRlIDxpbnNw
ZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7Ci0KICNpZiBFTkFCTEUoSU5TUEVDVE9SKQog
CiAkZG9tYWluQ2xhc3NMaXN0CkBAIC0xNDksMTYgKzE0OCwxMyBAQCBiYWNrZW5kX2ggPSAoCiAi
IiIjaWZuZGVmIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyc19oCiAjZGVmaW5lIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyc19oCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvclR5cGVCdWlsZGVyLmgiCisjaW5jbHVkZSA8aW5z
cGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBJbnNwZWN0b3JPYmplY3Q7Ci1jbGFzcyBJbnNwZWN0b3JBcnJheTsK
LQogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKICRoYW5kbGVySW50ZXJmYWNlcwpAQCAt
MTc4LDExICsxNzQsMTMgQEAgYmFja2VuZF9jcHAgPSAoCiAjaW5jbHVkZSAiSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXJzLmgiCiAKICNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudC5oIgotI2luY2x1
ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZvcndhcmRpbmcuaCIK
KyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCit1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICRtZXRob2RzCkBA
IC0yMDAsMTAgKzE5OCwxMSBAQCBmcm9udGVuZF9jcHAgPSAoCiAKICNpbmNsdWRlICJJbnNwZWN0
b3JGcm9udGVuZC5oIgogCi0jaW5jbHVkZSAiSW5zcGVjdG9yRm9yd2FyZGluZy5oIgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAk
bWV0aG9kcwpAQCAtMjIwLDcgKzIxOSw3IEBAIHR5cGVidWlsZGVyX2ggPSAoCiAKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCisjaW5jbHVkZSA8
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIApAQCAtMjgxLDEzICsyODAsMTMgQEAgaW5s
aW5lIGludCBFeGFjdGx5SW50OjpjYXN0X3RvX2ludDx1bnNpZ25lZCBpbnQ+KHVuc2lnbmVkIGlu
dCBpKSB7IHJldHVybiBpOyB9CiBjbGFzcyBSdW50aW1lQ2FzdEhlbHBlciB7CiBwdWJsaWM6CiAj
aWYgJHZhbGlkYXRvcklmZGVmTmFtZQotICAgIHRlbXBsYXRlPEluc3BlY3RvclZhbHVlOjpUeXBl
IFRZUEU+Ci0gICAgc3RhdGljIHZvaWQgYXNzZXJ0VHlwZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUp
CisgICAgdGVtcGxhdGU8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZTo6VHlwZSBUWVBFPgorICAg
IHN0YXRpYyB2b2lkIGFzc2VydFR5cGUoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogdmFsdWUp
CiAgICAgewogICAgICAgICBBU1NFUlQodmFsdWUtPnR5cGUoKSA9PSBUWVBFKTsKICAgICB9Ci0g
ICAgc3RhdGljIHZvaWQgYXNzZXJ0QW55KEluc3BlY3RvclZhbHVlKik7Ci0gICAgc3RhdGljIHZv
aWQgYXNzZXJ0SW50KEluc3BlY3RvclZhbHVlKiB2YWx1ZSk7CisgICAgc3RhdGljIHZvaWQgYXNz
ZXJ0QW55KEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqKTsKKyAgICBzdGF0aWMgdm9pZCBhc3Nl
cnRJbnQoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogdmFsdWUpOwogI2VuZGlmCiB9OwogCkBA
IC0zMDAsMTMgKzI5OSwxMyBAQCBzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyIHsKIH07CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBBcnJheSA6IHB1YmxpYyBJbnNwZWN0b3JBcnJheUJhc2Ug
eworY2xhc3MgQXJyYXkgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheUJhc2Ugewog
cHJpdmF0ZToKICAgICBBcnJheSgpIHsgfQogCi0gICAgSW5zcGVjdG9yQXJyYXkqIG9wZW5BY2Nl
c3NvcnMoKSB7Ci0gICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihJbnNwZWN0b3JBcnJheSkg
PT0gc2l6ZW9mKEFycmF5PFQ+KSwgY2Fubm90X2Nhc3QpOwotICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8SW5zcGVjdG9yQXJyYXkqPihzdGF0aWNfY2FzdDxJbnNwZWN0b3JBcnJheUJhc2UqPih0
aGlzKSk7CisgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSogb3BlbkFjY2Vzc29ycygpIHsK
KyAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkp
ID09IHNpemVvZihBcnJheTxUPiksIGNhbm5vdF9jYXN0KTsKKyAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkqPihzdGF0aWNfY2FzdDxJbnNwZWN0b3I6
Okluc3BlY3RvckFycmF5QmFzZSo+KHRoaXMpKTsKICAgICB9CiAKIHB1YmxpYzoKQEAgLTMyNSwy
MiArMzI0LDIyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBcnJheTxU
PigpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBcnJheTxUPj4gcnVudGltZUNh
c3QoUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpCisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8QXJyYXk8VD4+IHJ1bnRpbWVDYXN0KFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JW
YWx1ZT4gdmFsdWUpCiAgICAgewotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFycmF5
OworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4gYXJyYXk7CiAgICAg
ICAgIGJvb2wgY2FzdFJlcyA9IHZhbHVlLT5hc0FycmF5KCZhcnJheSk7CiAgICAgICAgIEFTU0VS
VF9VTlVTRUQoY2FzdFJlcywgY2FzdFJlcyk7CiAjaWYgJHZhbGlkYXRvcklmZGVmTmFtZQogICAg
ICAgICBhc3NlcnRDb3JyZWN0VmFsdWUoYXJyYXkuZ2V0KCkpOwogI2VuZGlmICAvLyAkdmFsaWRh
dG9ySWZkZWZOYW1lCi0gICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihBcnJheTxUPikgPT0g
c2l6ZW9mKEluc3BlY3RvckFycmF5KSwgdHlwZV9jYXN0X3Byb2JsZW0pOwotICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8QXJyYXk8VD4qPihzdGF0aWNfY2FzdDxJbnNwZWN0b3JBcnJheUJhc2Uq
PihhcnJheS5nZXQoKSkpOworICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoQXJyYXk8VD4p
ID09IHNpemVvZihJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5KSwgdHlwZV9jYXN0X3Byb2JsZW0p
OworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk8VD4qPihzdGF0aWNfY2FzdDxJbnNw
ZWN0b3I6Okluc3BlY3RvckFycmF5QmFzZSo+KGFycmF5LmdldCgpKSk7CiAgICAgfQogCiAjaWYg
JHZhbGlkYXRvcklmZGVmTmFtZQotICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJ
bnNwZWN0b3JWYWx1ZSogdmFsdWUpCisgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVl
KEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVlKQogICAgIHsKLSAgICAgICAgUmVmUHRy
PEluc3BlY3RvckFycmF5PiBhcnJheTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVj
dG9yQXJyYXk+IGFycmF5OwogICAgICAgICBib29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNBcnJheSgm
YXJyYXkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGNhc3RSZXMsIGNhc3RSZXMpOwogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJyYXktPmxlbmd0aCgpOyBpKyspCkBAIC0zNTEs
MTQgKzM1MCwxNCBAQCBwdWJsaWM6CiB9OwogCiBzdHJ1Y3QgU3RydWN0SXRlbVRyYWl0cyB7Ci0g
ICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0b3JBcnJheSogYXJyYXksIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQorICAgIHN0YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5z
cGVjdG9yOjpJbnNwZWN0b3JBcnJheSogYXJyYXksIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JWYWx1ZT4gdmFsdWUpCiAgICAgewogICAgICAgICBhcnJheS0+cHVzaFZhbHVlKHZhbHVl
KTsKICAgICB9CiAKICNpZiAkdmFsaWRhdG9ySWZkZWZOYW1lCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KLSAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUq
IHZhbHVlKSB7CisgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3Rvcjo6
SW5zcGVjdG9yVmFsdWUqIHZhbHVlKSB7CiAgICAgICAgIFQ6OmFzc2VydENvcnJlY3RWYWx1ZSh2
YWx1ZSk7CiAgICAgfQogI2VuZGlmICAvLyAkdmFsaWRhdG9ySWZkZWZOYW1lCkBAIC0zNjcsMTUg
KzM2NiwxNSBAQCBzdHJ1Y3QgU3RydWN0SXRlbVRyYWl0cyB7CiB0ZW1wbGF0ZTw+CiBzdHJ1Y3Qg
QXJyYXlJdGVtSGVscGVyPFN0cmluZz4gewogICAgIHN0cnVjdCBUcmFpdHMgewotICAgICAgICBz
dGF0aWMgdm9pZCBwdXNoUmF3KEluc3BlY3RvckFycmF5KiBhcnJheSwgY29uc3QgU3RyaW5nJiB2
YWx1ZSkKKyAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJhdyhJbnNwZWN0b3I6Okluc3BlY3RvckFy
cmF5KiBhcnJheSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAg
YXJyYXktPnB1c2hTdHJpbmcodmFsdWUpOwogICAgICAgICB9CiAKICNpZiAkdmFsaWRhdG9ySWZk
ZWZOYW1lCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyB2b2lk
IGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpIHsKLSAgICAgICAgICAg
IFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3RvclZhbHVlOjpUeXBlU3RyaW5n
Pih2YWx1ZSk7CisgICAgICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0
b3I6Okluc3BlY3RvclZhbHVlKiB2YWx1ZSkgeworICAgICAgICAgICAgUnVudGltZUNhc3RIZWxw
ZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZTo6VHlwZVN0cmluZz4odmFs
dWUpOwogICAgICAgICB9CiAjZW5kaWYgIC8vICR2YWxpZGF0b3JJZmRlZk5hbWUKICAgICB9OwpA
QCAtMzg0LDE0ICszODMsMTQgQEAgc3RydWN0IEFycmF5SXRlbUhlbHBlcjxTdHJpbmc+IHsKIHRl
bXBsYXRlPD4KIHN0cnVjdCBBcnJheUl0ZW1IZWxwZXI8aW50PiB7CiAgICAgc3RydWN0IFRyYWl0
cyB7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSYXcoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBp
bnQgdmFsdWUpCisgICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSYXcoSW5zcGVjdG9yOjpJbnNwZWN0
b3JBcnJheSogYXJyYXksIGludCB2YWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAgYXJyYXkt
PnB1c2hJbnQodmFsdWUpOwogICAgICAgICB9CiAKICNpZiAkdmFsaWRhdG9ySWZkZWZOYW1lCiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyB2b2lkIGFzc2VydENv
cnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpIHsKKyAgICAgICAgc3RhdGljIHZvaWQg
YXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVlKSB7CiAg
ICAgICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0SW50KHZhbHVlKTsKICAgICAgICAg
fQogI2VuZGlmICAvLyAkdmFsaWRhdG9ySWZkZWZOYW1lCkBAIC00MDEsMTUgKzQwMCwxNSBAQCBz
dHJ1Y3QgQXJyYXlJdGVtSGVscGVyPGludD4gewogdGVtcGxhdGU8Pgogc3RydWN0IEFycmF5SXRl
bUhlbHBlcjxkb3VibGU+IHsKICAgICBzdHJ1Y3QgVHJhaXRzIHsKLSAgICAgICAgc3RhdGljIHZv
aWQgcHVzaFJhdyhJbnNwZWN0b3JBcnJheSogYXJyYXksIGRvdWJsZSB2YWx1ZSkKKyAgICAgICAg
c3RhdGljIHZvaWQgcHVzaFJhdyhJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5KiBhcnJheSwgZG91
YmxlIHZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBhcnJheS0+cHVzaE51bWJlcih2YWx1
ZSk7CiAgICAgICAgIH0KIAogI2lmICR2YWxpZGF0b3JJZmRlZk5hbWUKICAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKElu
c3BlY3RvclZhbHVlKiB2YWx1ZSkgewotICAgICAgICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFz
c2VydFR5cGU8SW5zcGVjdG9yVmFsdWU6OlR5cGVOdW1iZXI+KHZhbHVlKTsKKyAgICAgICAgc3Rh
dGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZh
bHVlKSB7CisgICAgICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0
b3I6Okluc3BlY3RvclZhbHVlOjpUeXBlTnVtYmVyPih2YWx1ZSk7CiAgICAgICAgIH0KICNlbmRp
ZiAgLy8gJHZhbGlkYXRvcklmZGVmTmFtZQogICAgIH07CkBAIC00MTgsMzEgKzQxNywzMSBAQCBz
dHJ1Y3QgQXJyYXlJdGVtSGVscGVyPGRvdWJsZT4gewogdGVtcGxhdGU8Pgogc3RydWN0IEFycmF5
SXRlbUhlbHBlcjxib29sPiB7CiAgICAgc3RydWN0IFRyYWl0cyB7Ci0gICAgICAgIHN0YXRpYyB2
b2lkIHB1c2hSYXcoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBib29sIHZhbHVlKQorICAgICAgICBz
dGF0aWMgdm9pZCBwdXNoUmF3KEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkqIGFycmF5LCBib29s
IHZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBhcnJheS0+cHVzaEJvb2xlYW4odmFsdWUp
OwogICAgICAgICB9CiAKICNpZiAkdmFsaWRhdG9ySWZkZWZOYW1lCiAgICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNw
ZWN0b3JWYWx1ZSogdmFsdWUpIHsKLSAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3Nl
cnRUeXBlPEluc3BlY3RvclZhbHVlOjpUeXBlQm9vbGVhbj4odmFsdWUpOworICAgICAgICBzdGF0
aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogdmFs
dWUpIHsKKyAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3Rv
cjo6SW5zcGVjdG9yVmFsdWU6OlR5cGVCb29sZWFuPih2YWx1ZSk7CiAgICAgICAgIH0KICNlbmRp
ZiAgLy8gJHZhbGlkYXRvcklmZGVmTmFtZQogICAgIH07CiB9OwogCiB0ZW1wbGF0ZTw+Ci1zdHJ1
Y3QgQXJyYXlJdGVtSGVscGVyPEluc3BlY3RvclZhbHVlPiB7CitzdHJ1Y3QgQXJyYXlJdGVtSGVs
cGVyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHsKICAgICBzdHJ1Y3QgVHJhaXRzIHsKLSAg
ICAgICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0b3JBcnJheSogYXJyYXksIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQorICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmVm
UHRyKEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBhcnJheS0+
cHVzaFZhbHVlKHZhbHVlKTsKICAgICAgICAgfQogCiAjaWYgJHZhbGlkYXRvcklmZGVmTmFtZQog
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgdm9pZCBhc3NlcnRD
b3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKSB7CisgICAgICAgIHN0YXRpYyB2b2lk
IGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiB2YWx1ZSkgewog
ICAgICAgICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydEFueSh2YWx1ZSk7CiAgICAgICAg
IH0KICNlbmRpZiAgLy8gJHZhbGlkYXRvcklmZGVmTmFtZQpAQCAtNDUwLDM0ICs0NDksMzQgQEAg
c3RydWN0IEFycmF5SXRlbUhlbHBlcjxJbnNwZWN0b3JWYWx1ZT4gewogfTsKIAogdGVtcGxhdGU8
Pgotc3RydWN0IEFycmF5SXRlbUhlbHBlcjxJbnNwZWN0b3JPYmplY3Q+IHsKK3N0cnVjdCBBcnJh
eUl0ZW1IZWxwZXI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHsKICAgICBzdHJ1Y3QgVHJh
aXRzIHsKLSAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0b3JBcnJheSogYXJy
YXksIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQorICAgICAgICBzdGF0aWMgdm9p
ZCBwdXNoUmVmUHRyKEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAg
ICBhcnJheS0+cHVzaFZhbHVlKHZhbHVlKTsKICAgICAgICAgfQogCiAjaWYgJHZhbGlkYXRvcklm
ZGVmTmFtZQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgdm9p
ZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKSB7Ci0gICAgICAgICAg
ICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZU9iamVj
dD4odmFsdWUpOworICAgICAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVj
dG9yOjpJbnNwZWN0b3JWYWx1ZSogdmFsdWUpIHsKKyAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVs
cGVyOjphc3NlcnRUeXBlPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU6OlR5cGVPYmplY3Q+KHZh
bHVlKTsKICAgICAgICAgfQogI2VuZGlmICAvLyAkdmFsaWRhdG9ySWZkZWZOYW1lCiAgICAgfTsK
IH07CiAKIHRlbXBsYXRlPD4KLXN0cnVjdCBBcnJheUl0ZW1IZWxwZXI8SW5zcGVjdG9yQXJyYXk+
IHsKK3N0cnVjdCBBcnJheUl0ZW1IZWxwZXI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4gewog
ICAgIHN0cnVjdCBUcmFpdHMgewotICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmVmUHRyKEluc3Bl
Y3RvckFycmF5KiBhcnJheSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gdmFsdWUpCisgICAg
ICAgIHN0YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSogYXJy
YXksIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4gdmFsdWUpCiAgICAgICAg
IHsKICAgICAgICAgICAgIGFycmF5LT5wdXNoQXJyYXkodmFsdWUpOwogICAgICAgICB9CiAKICNp
ZiAkdmFsaWRhdG9ySWZkZWZOYW1lCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAg
ICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUp
IHsKLSAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3RvclZh
bHVlOjpUeXBlQXJyYXk+KHZhbHVlKTsKKyAgICAgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVj
dFZhbHVlKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVlKSB7CisgICAgICAgICAgICBS
dW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlOjpU
eXBlQXJyYXk+KHZhbHVlKTsKICAgICAgICAgfQogI2VuZGlmICAvLyAkdmFsaWRhdG9ySWZkZWZO
YW1lCiAgICAgfTsKQEAgLTQ4NiwxNCArNDg1LDE0IEBAIHN0cnVjdCBBcnJheUl0ZW1IZWxwZXI8
SW5zcGVjdG9yQXJyYXk+IHsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgQXJyYXlJdGVt
SGVscGVyPFR5cGVCdWlsZGVyOjpBcnJheTxUPj4gewogICAgIHN0cnVjdCBUcmFpdHMgewotICAg
ICAgICBzdGF0aWMgdm9pZCBwdXNoUmVmUHRyKEluc3BlY3RvckFycmF5KiBhcnJheSwgUGFzc1Jl
ZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VD4+IHZhbHVlKQorICAgICAgICBzdGF0aWMgdm9pZCBw
dXNoUmVmUHRyKEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxUPj4gdmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIGFycmF5
LT5wdXNoVmFsdWUodmFsdWUpOwogICAgICAgICB9CiAKICNpZiAkdmFsaWRhdG9ySWZkZWZOYW1l
CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFM+Ci0gICAgICAgIHN0YXRpYyB2b2lkIGFzc2Vy
dENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpIHsKKyAgICAgICAgc3RhdGljIHZv
aWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVlKSB7
CiAgICAgICAgICAgICBTOjphc3NlcnRDb3JyZWN0VmFsdWUodmFsdWUpOwogICAgICAgICB9CiAj
ZW5kaWYgIC8vICR2YWxpZGF0b3JJZmRlZk5hbWUKQEAgLTUyNSw2ICs1MjQsOCBAQCB0eXBlYnVp
bGRlcl9jcHAgPSAoCiAjaW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIFR5cGVCdWlsZGVyIHsKQEAgLTU4NCwxNCAr
NTg1LDE0IEBAIGNsYXNzX2JpbmRpbmdfYnVpbGRlcl9wYXJ0XzEgPSAoCiAgICAgdGVtcGxhdGU8
aW50IFNUQVRFPgogICAgIGNsYXNzIEJ1aWxkZXIgewogICAgIHByaXZhdGU6Ci0gICAgICAgIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0OworICAgICAgICBSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0OwogCiAgICAgICAgIHRlbXBsYXRlPGludCBTVEVQ
PiBCdWlsZGVyPFNUQVRFIHwgU1RFUD4mIGNhc3RTdGF0ZSgpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxCdWlsZGVyPFNUQVRFIHwgU1RFUD4qPih0aGlz
KTsKICAgICAgICAgfQogCi0gICAgICAgIEJ1aWxkZXIoUGFzc1JlZlB0cjwvKiVzKi9JbnNwZWN0
b3JPYmplY3Q+IHB0cikKKyAgICAgICAgQnVpbGRlcihQYXNzUmVmUHRyPC8qJXMqL0luc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0PiBwdHIpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVf
QVNTRVJUKFNUQVRFID09IE5vRmllbGRzU2V0LCBidWlsZGVyX2NyZWF0ZWRfaW5fbm9uX2luaXRf
c3RhdGUpOwogICAgICAgICAgICAgbV9yZXN1bHQgPSBwdHI7CkBAIC02MTMsNyArNjE0LDcgQEAg
Y2xhc3NfYmluZGluZ19idWlsZGVyX3BhcnRfMyA9ICgiIiIKICAgICAgICAgb3BlcmF0b3IgUmVm
UHRyPCVzPiYgKCkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoU1RBVEUg
PT0gQWxsRmllbGRzU2V0LCByZXN1bHRfaXNfbm90X3JlYWR5KTsKLSAgICAgICAgICAgIENPTVBJ
TEVfQVNTRVJUKHNpemVvZiglcykgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9j
YXN0KTsKKyAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZiglcykgPT0gc2l6ZW9mKElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOwogICAgICAgICAgICAgcmV0
dXJuICpyZWludGVycHJldF9jYXN0PFJlZlB0cjwlcz4qPigmbV9yZXN1bHQpOwogICAgICAgICB9
CiAKQEAgLTYyOCw2ICs2MjksNiBAQCBjbGFzc19iaW5kaW5nX2J1aWxkZXJfcGFydF8zID0gKCIi
IgogY2xhc3NfYmluZGluZ19idWlsZGVyX3BhcnRfNCA9ICgKICIiIiAgICBzdGF0aWMgQnVpbGRl
cjxOb0ZpZWxkc1NldD4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBCdWlsZGVyPE5v
RmllbGRzU2V0PihJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIEJ1
aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7
CiAgICAgfQogIiIiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNv
bGVNZXNzYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5j
cHAKaW5kZXggMGM5NzBiOC4uYjQ5MzdmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
Q29uc29sZU1lc3NhZ2UuY3BwCkBAIC0zOCwxNCArMzgsMTYgQEAKICNpbmNsdWRlICJJZGVudGlm
aWVyc0ZhY3RvcnkuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIklu
amVjdGVkU2NyaXB0TWFuYWdlci5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxGcmFtZS5oIgog
I2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFja0Zh
Y3RvcnkuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1Nj
cmlwdFZhbHVlLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ29uc29sZU1lc3NhZ2U6OkNvbnNvbGVNZXNzYWdlKGJv
b2wgY2FuR2VuZXJhdGVDYWxsU3RhY2ssIE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlw
ZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWdu
ZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKQEAgLTIwNiw4ICsyMDgsOCBAQCB2b2lkIENvbnNv
bGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKEluc3BlY3RvckNvbnNvbGVGcm9udGVuZERpc3BhdGNo
ZXIqIGNvbnNvbGVGcgogICAgICAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkg
ewogICAgICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0Pj4ganNvbkFyZ3MgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1
aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD46OmNyZWF0ZSgpOwogICAgICAgICAgICAgaWYg
KG1fdHlwZSA9PSBUYWJsZU1lc3NhZ2VUeXBlICYmIGdlbmVyYXRlUHJldmlldyAmJiBtX2FyZ3Vt
ZW50cy0+YXJndW1lbnRDb3VudCgpKSB7Ci0gICAgICAgICAgICAgICAgU2NyaXB0VmFsdWUgdGFi
bGUgPSBtX2FyZ3VtZW50cy0+YXJndW1lbnRBdCgwKTsKLSAgICAgICAgICAgICAgICBTY3JpcHRW
YWx1ZSBjb2x1bW5zID0gbV9hcmd1bWVudHMtPmFyZ3VtZW50Q291bnQoKSA+IDEgPyBtX2FyZ3Vt
ZW50cy0+YXJndW1lbnRBdCgxKSA6IFNjcmlwdFZhbHVlKCk7CisgICAgICAgICAgICAgICAgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUgdGFibGUgPSBtX2FyZ3VtZW50cy0+YXJndW1lbnRBdCgwKTsK
KyAgICAgICAgICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBjb2x1bW5zID0gbV9hcmd1
bWVudHMtPmFyZ3VtZW50Q291bnQoKSA+IDEgPyBtX2FyZ3VtZW50cy0+YXJndW1lbnRBdCgxKSA6
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCk7CiAgICAgICAgICAgICAgICAgUmVmUHRyPFR5cGVC
dWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IGluc3BlY3RvclZhbHVlID0gaW5qZWN0ZWRT
Y3JpcHQud3JhcFRhYmxlKHRhYmxlLCBjb2x1bW5zKTsKICAgICAgICAgICAgICAgICBpZiAoIWlu
c3BlY3RvclZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaAppbmRleCAwN2Y4OGI2
Li43ZmQxNmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1l
c3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaApA
QCAtMzgsMTUgKzM4LDE3IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yT2Jq
ZWN0OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERPTVdpbmRvdzsKIGNsYXNz
IEluamVjdGVkU2NyaXB0TWFuYWdlcjsKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIFNj
cmlwdEFyZ3VtZW50czsKIGNsYXNzIFNjcmlwdENhbGxGcmFtZTsKIGNsYXNzIFNjcmlwdENhbGxT
dGFjazsKLWNsYXNzIFNjcmlwdFZhbHVlOwogCiBjbGFzcyBDb25zb2xlTWVzc2FnZSB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQ29uc29sZU1lc3NhZ2UpOyBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNo
VXRpbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5j
cHAKaW5kZXggMDNhODA1Zi4uYjNkOWFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAKQEAgLTMxLDE0ICszMSwxNCBAQAogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCiAKICNpbmNsdWRlICJDb250ZW50U2VhcmNoVXRpbHMuaCIKLQotI2luY2x1
ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIlJlZ3VsYXJFeHByZXNzaW9uLmgiCi0K
KyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL0J1
bXBQb2ludGVyQWxsb2NhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2lu
Y2x1ZGUgPHlhcnIvWWFyci5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgQ29udGVudFNlYXJjaFV0aWxzIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5oCmluZGV4IDYwYWQ2Nzgu
LjdiNWRmMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db250ZW50U2Vh
cmNoVXRpbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0
aWxzLmgKQEAgLTM4LDcgKzM4LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJ
bnNwZWN0b3JBcnJheTsKIGNsYXNzIFJlZ3VsYXJFeHByZXNzaW9uOwogCiBuYW1lc3BhY2UgQ29u
dGVudFNlYXJjaFV0aWxzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHQuY3BwCmluZGV4IDc3Zjc4MGMuLmVlM2JhMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0LmNwcApAQCAtMzYsMTAgKzM2LDExIEBACiAKICNpbmNsdWRlICJJ
bmplY3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1vZHVsZS5oIgot
I2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgorI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNT
dGF0ZS5oIgogI2luY2x1ZGUgIk5vZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwu
aCIKLSNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxiaW5kaW5n
cy9TY3JpcHRGdW5jdGlvbkNhbGwuaD4KKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3Qu
aD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpBcnJheTsK
QEAgLTQ5LDYgKzUwLDggQEAgdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6Oklu
dGVybmFsUHJvcGVydHlEZXNjcmlwdG9yOwogdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkRl
YnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM7CiB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0OwogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIEluamVjdGVkU2NyaXB0OjpJbmplY3RlZFNjcmlwdCgpCkBAIC01
NiwxNCArNTksMTQgQEAgSW5qZWN0ZWRTY3JpcHQ6OkluamVjdGVkU2NyaXB0KCkKIHsKIH0KIAot
SW5qZWN0ZWRTY3JpcHQ6OkluamVjdGVkU2NyaXB0KFNjcmlwdE9iamVjdCBpbmplY3RlZFNjcmlw
dE9iamVjdCwgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayBhY2Nlc3NDaGVjaykKK0luamVjdGVk
U2NyaXB0OjpJbmplY3RlZFNjcmlwdChEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgaW5qZWN0ZWRT
Y3JpcHRPYmplY3QsIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sgYWNjZXNzQ2hlY2spCiAgICAg
OiBJbmplY3RlZFNjcmlwdEJhc2UoIkluamVjdGVkU2NyaXB0IiwgaW5qZWN0ZWRTY3JpcHRPYmpl
Y3QsIGFjY2Vzc0NoZWNrKQogewogfQogCiB2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZShF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3Qg
U3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGJvb2wgcmV0
dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+
KiB3YXNUaHJvd24pCiB7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVk
U2NyaXB0T2JqZWN0KCksICJldmFsdWF0ZSIpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0
aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZXZhbHVhdGUiLCBXZWJD
b3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAgZnVuY3Rpb24uYXBw
ZW5kQXJndW1lbnQoZXhwcmVzc2lvbik7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2Jq
ZWN0R3JvdXApOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGluY2x1ZGVDb21tYW5kTGlu
ZUFQSSk7CkBAIC03NCw3ICs3Nyw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uCiAKIHZvaWQg
SW5qZWN0ZWRTY3JpcHQ6OmNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBT
dHJpbmcmIGFyZ3VtZW50cywgYm9vbCByZXR1cm5CeVZhbHVlLCBib29sIGdlbmVyYXRlUHJldmll
dywgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsIFR5
cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKIHsKLSAgICBTY3JpcHRGdW5j
dGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImNhbGxGdW5jdGlvbk9u
Iik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVk
U2NyaXB0T2JqZWN0KCksICJjYWxsRnVuY3Rpb25PbiIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhh
bmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RJ
ZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZXhwcmVzc2lvbik7CiAgICAgZnVuY3Rp
b24uYXBwZW5kQXJndW1lbnQoYXJndW1lbnRzKTsKQEAgLTgzLDkgKzg2LDkgQEAgdm9pZCBJbmpl
Y3RlZFNjcmlwdDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25z
dCBTdHJpbmcmIG9iamUKICAgICBtYWtlRXZhbENhbGwoZXJyb3JTdHJpbmcsIGZ1bmN0aW9uLCBy
ZXN1bHQsIHdhc1Rocm93bik7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT25D
YWxsRnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTY3JpcHRWYWx1ZSYgY2Fs
bEZyYW1lcywgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNz
aW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQ
SSwgYm9vbCByZXR1cm5CeVZhbHVlLCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPFJlbW90
ZU9iamVjdD4qIHJlc3VsdCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3du
KQordm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBj
b25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0
IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBib29sIHJl
dHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8UmVtb3RlT2JqZWN0Piog
cmVzdWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCiB7Ci0gICAg
U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJldmFs
dWF0ZU9uQ2FsbEZyYW1lIik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1
bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJldmFsdWF0ZU9uQ2FsbEZyYW1lIiwgV2Vi
Q29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAgIGZ1bmN0aW9uLmFw
cGVuZEFyZ3VtZW50KGNhbGxGcmFtZXMpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNh
bGxGcmFtZUlkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChleHByZXNzaW9uKTsKQEAg
LTk4LDcgKzEwMSw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT25DYWxsRnJhbWUo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTY3JpcHRWCiAKIHZvaWQgSW5qZWN0ZWRT
Y3JpcHQ6OmdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPEZ1bmN0aW9uRGV0YWlscz4qIHJlc3VsdCkKIHsK
LSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwg
ImdldEZ1bmN0aW9uRGV0YWlscyIpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2Fs
bCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZ2V0RnVuY3Rpb25EZXRhaWxzIiwg
V2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAgIGZ1bmN0aW9u
LmFwcGVuZEFyZ3VtZW50KGZ1bmN0aW9uSWQpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4g
cmVzdWx0VmFsdWU7CiAgICAgbWFrZUNhbGwoZnVuY3Rpb24sICZyZXN1bHRWYWx1ZSk7CkBAIC0x
MTIsNyArMTE1LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0RnVuY3Rpb25EZXRhaWxzKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJgogCiB2b2lkIEluamVjdGVkU2Ny
aXB0OjpnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5n
JiBvYmplY3RJZCwgYm9vbCBvd25Qcm9wZXJ0aWVzLCBSZWZQdHI8QXJyYXk8UHJvcGVydHlEZXNj
cmlwdG9yPj4qIHByb3BlcnRpZXMpCiB7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9u
KGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJnZXRQcm9wZXJ0aWVzIik7CisgICAgRGVwcmVjYXRl
ZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJn
ZXRQcm9wZXJ0aWVzIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQp
OwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKICAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudChvd25Qcm9wZXJ0aWVzKTsKIApAQCAtMTI3LDcgKzEzMCw3IEBAIHZvaWQg
SW5qZWN0ZWRTY3JpcHQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbmcmIG9iamVjCiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEludGVybmFsUHJv
cGVydGllcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQs
IFJlZlB0cjxBcnJheTxJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+KiBwcm9wZXJ0aWVzKQog
ewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgp
LCAiZ2V0SW50ZXJuYWxQcm9wZXJ0aWVzIik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rp
b25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJnZXRJbnRlcm5hbFByb3Bl
cnRpZXMiLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAg
ZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQpOwogCiAgICAgUmVmUHRyPEluc3BlY3Rv
clZhbHVlPiByZXN1bHQ7CkBAIC0xNDYsMTEgKzE0OSwxMSBAQCBOb2RlKiBJbmplY3RlZFNjcmlw
dDo6bm9kZUZvck9iamVjdElkKGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpCiAgICAgaWYgKGhhc05v
VmFsdWUoKSB8fCAhY2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KCkpCiAgICAgICAgIHJldHVybiAw
OwogCi0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0
KCksICJub2RlRm9yT2JqZWN0SWQiKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNh
bGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgIm5vZGVGb3JPYmplY3RJZCIsIFdl
YkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudChvYmplY3RJZCk7CiAKICAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNl
OwotICAgIFNjcmlwdFZhbHVlIHJlc3VsdFZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFi
bGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
IHJlc3VsdFZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRF
eGNlcHRpb24pOwogICAgIEFTU0VSVCghaGFkRXhjZXB0aW9uKTsKIAogICAgIHJldHVybiBJbmpl
Y3RlZFNjcmlwdEhvc3Q6OnNjcmlwdFZhbHVlQXNOb2RlKHJlc3VsdFZhbHVlKTsKQEAgLTE1OCwy
MCArMTYxLDIwIEBAIE5vZGUqIEluamVjdGVkU2NyaXB0Ojpub2RlRm9yT2JqZWN0SWQoY29uc3Qg
U3RyaW5nJiBvYmplY3RJZCkKIAogdm9pZCBJbmplY3RlZFNjcmlwdDo6cmVsZWFzZU9iamVjdChj
b25zdCBTdHJpbmcmIG9iamVjdElkKQogewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlv
bihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAicmVsZWFzZU9iamVjdCIpOworICAgIERlcHJlY2F0
ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAi
cmVsZWFzZU9iamVjdCIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFk
KTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RJZCk7CiAgICAgUmVmUHRyPElu
c3BlY3RvclZhbHVlPiByZXN1bHQ7CiAgICAgbWFrZUNhbGwoZnVuY3Rpb24sICZyZXN1bHQpOwog
fQogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi1QYXNzUmVmUHRyPEFycmF5PENh
bGxGcmFtZT4+IEluamVjdGVkU2NyaXB0Ojp3cmFwQ2FsbEZyYW1lcyhjb25zdCBTY3JpcHRWYWx1
ZSYgY2FsbEZyYW1lcykKK1Bhc3NSZWZQdHI8QXJyYXk8Q2FsbEZyYW1lPj4gSW5qZWN0ZWRTY3Jp
cHQ6OndyYXBDYWxsRnJhbWVzKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBjYWxsRnJh
bWVzKQogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKLSAgICBTY3JpcHRGdW5jdGlvbkNh
bGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgIndyYXBDYWxsRnJhbWVzIik7Cisg
ICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0
T2JqZWN0KCksICJ3cmFwQ2FsbEZyYW1lcyIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJG
cm9tQW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYWxsRnJhbWVzKTsK
ICAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwotICAgIFNjcmlwdFZhbHVlIGNhbGxGcmFt
ZXNWYWx1ZSA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbiwgaGFkRXhjZXB0
aW9uKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBjYWxsRnJhbWVzVmFsdWUgPSBjYWxs
RnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CiAgICAgQVNT
RVJUKCFoYWRFeGNlcHRpb24pOwogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0ID0g
Y2FsbEZyYW1lc1ZhbHVlLnRvSW5zcGVjdG9yVmFsdWUoc2NyaXB0U3RhdGUoKSk7CiAgICAgaWYg
KHJlc3VsdC0+dHlwZSgpID09IEluc3BlY3RvclZhbHVlOjpUeXBlQXJyYXkpCkBAIC0xODAsMjYg
KzE4MywyNiBAQCBQYXNzUmVmUHRyPEFycmF5PENhbGxGcmFtZT4+IEluamVjdGVkU2NyaXB0Ojp3
cmFwQ2FsbEZyYW1lcyhjb25zdCBTY3JpcHRWYWx1ZSYgYwogfQogI2VuZGlmCiAKLVBhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6Ondy
YXBPYmplY3QoY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGdyb3VwTmFt
ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcpIGNvbnN0CitQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwT2JqZWN0KGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUsIGJv
b2wgZ2VuZXJhdGVQcmV2aWV3KSBjb25zdAogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsK
LSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgd3JhcEZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0
KCksICJ3cmFwT2JqZWN0Iik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIHdy
YXBGdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAid3JhcE9iamVjdCIpOwogICAgIHdy
YXBGdW5jdGlvbi5hcHBlbmRBcmd1bWVudCh2YWx1ZSk7CiAgICAgd3JhcEZ1bmN0aW9uLmFwcGVu
ZEFyZ3VtZW50KGdyb3VwTmFtZSk7CiAgICAgd3JhcEZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNh
bkFjY2Vzc0luc3BlY3RlZFdpbmRvdygpKTsKICAgICB3cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1l
bnQoZ2VuZXJhdGVQcmV2aWV3KTsKICAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwotICAg
IFNjcmlwdFZhbHVlIHIgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQod3JhcEZ1bmN0aW9u
LCBoYWRFeGNlcHRpb24pOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHIgPSBjYWxsRnVu
Y3Rpb25XaXRoRXZhbEVuYWJsZWQod3JhcEZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwogICAgIGlm
IChoYWRFeGNlcHRpb24pCiAgICAgICAgIHJldHVybiAwOwogICAgIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IHJhd1Jlc3VsdCA9IHIudG9JbnNwZWN0b3JWYWx1ZShzY3JpcHRTdGF0ZSgpKS0+YXNP
YmplY3QoKTsKICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDo6
cnVudGltZUNhc3QocmF3UmVzdWx0KTsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcFRhYmxlKGNvbnN0IFNjcmlw
dFZhbHVlJiB0YWJsZSwgY29uc3QgU2NyaXB0VmFsdWUmIGNvbHVtbnMpIGNvbnN0CitQYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3
cmFwVGFibGUoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHRhYmxlLCBjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYgY29sdW1ucykgY29uc3QKIHsKICAgICBBU1NFUlQoIWhhc05v
VmFsdWUoKSk7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIHdyYXBGdW5jdGlvbihpbmplY3RlZFNj
cmlwdE9iamVjdCgpLCAid3JhcFRhYmxlIik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rp
b25DYWxsIHdyYXBGdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAid3JhcFRhYmxlIik7
CiAgICAgd3JhcEZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNhbkFjY2Vzc0luc3BlY3RlZFdpbmRv
dygpKTsKICAgICB3cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1lbnQodGFibGUpOwogICAgIGlmIChj
b2x1bW5zLmhhc05vVmFsdWUoKSkKQEAgLTIwNyw3ICsyMTAsNyBAQCBQYXNzUmVmUHRyPFR5cGVC
dWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwVGFibGUo
Y29uc3QgUwogICAgIGVsc2UKICAgICAgICAgd3JhcEZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNv
bHVtbnMpOwogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgU2NyaXB0VmFsdWUg
ciA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZCh3cmFwRnVuY3Rpb24sIGhhZEV4Y2VwdGlv
bik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgciA9IGNhbGxGdW5jdGlvbldpdGhFdmFs
RW5hYmxlZCh3cmFwRnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CiAgICAgaWYgKGhhZEV4Y2VwdGlv
bikKICAgICAgICAgcmV0dXJuIDA7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmF3UmVz
dWx0ID0gci50b0luc3BlY3RvclZhbHVlKHNjcmlwdFN0YXRlKCkpLT5hc09iamVjdCgpOwpAQCAt
MjE5LDE0ICsyMjIsMTQgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcE5vZGUoTm9kZSogbm8KICAgICByZXR1cm4gd3Jh
cE9iamVjdChub2RlQXNTY3JpcHRWYWx1ZShub2RlKSwgZ3JvdXBOYW1lKTsKIH0KIAotU2NyaXB0
VmFsdWUgSW5qZWN0ZWRTY3JpcHQ6OmZpbmRPYmplY3RCeUlkKGNvbnN0IFN0cmluZyYgb2JqZWN0
SWQpIGNvbnN0CitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdDo6ZmluZE9i
amVjdEJ5SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJZCkgY29uc3QKIHsKICAgICBBU1NFUlQoIWhh
c05vVmFsdWUoKSk7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2Ny
aXB0T2JqZWN0KCksICJmaW5kT2JqZWN0QnlJZCIpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1
bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZmluZE9iamVjdEJ5
SWQiLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAgZnVu
Y3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQpOwogCiAgICAgYm9vbCBoYWRFeGNlcHRpb24g
PSBmYWxzZTsKLSAgICBTY3JpcHRWYWx1ZSByZXN1bHRWYWx1ZSA9IGNhbGxGdW5jdGlvbldpdGhF
dmFsRW5hYmxlZChmdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKKyAgICBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSByZXN1bHRWYWx1ZSA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlv
biwgaGFkRXhjZXB0aW9uKTsKICAgICBBU1NFUlQoIWhhZEV4Y2VwdGlvbik7CiAgICAgcmV0dXJu
IHJlc3VsdFZhbHVlOwogfQpAQCAtMjM0LDcgKzIzNyw3IEBAIFNjcmlwdFZhbHVlIEluamVjdGVk
U2NyaXB0OjpmaW5kT2JqZWN0QnlJZChjb25zdCBTdHJpbmcmIG9iamVjdElkKSBjb25zdAogdm9p
ZCBJbmplY3RlZFNjcmlwdDo6aW5zcGVjdE5vZGUoTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQo
IWhhc05vVmFsdWUoKSk7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVk
U2NyaXB0T2JqZWN0KCksICJpbnNwZWN0Tm9kZSIpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1
bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiaW5zcGVjdE5vZGUi
LCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAgZnVuY3Rp
b24uYXBwZW5kQXJndW1lbnQobm9kZUFzU2NyaXB0VmFsdWUobm9kZSkpOwogICAgIFJlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4gcmVzdWx0OwogICAgIG1ha2VDYWxsKGZ1bmN0aW9uLCAmcmVzdWx0KTsK
QEAgLTI0MywxNCArMjQ2LDE0IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6Omluc3BlY3ROb2RlKE5v
ZGUqIG5vZGUpCiB2b2lkIEluamVjdGVkU2NyaXB0OjpyZWxlYXNlT2JqZWN0R3JvdXAoY29uc3Qg
U3RyaW5nJiBvYmplY3RHcm91cCkKIHsKICAgICBBU1NFUlQoIWhhc05vVmFsdWUoKSk7Ci0gICAg
U2NyaXB0RnVuY3Rpb25DYWxsIHJlbGVhc2VGdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgp
LCAicmVsZWFzZU9iamVjdEdyb3VwIik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25D
YWxsIHJlbGVhc2VGdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAicmVsZWFzZU9iamVj
dEdyb3VwIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAg
IHJlbGVhc2VGdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RHcm91cCk7CiAgICAgYm9vbCBo
YWRFeGNlcHRpb24gPSBmYWxzZTsKICAgICBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQocmVs
ZWFzZUZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwogICAgIEFTU0VSVCghaGFkRXhjZXB0aW9uKTsK
IH0KIAotU2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHQ6Om5vZGVBc1NjcmlwdFZhbHVlKE5vZGUq
IG5vZGUpCitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdDo6bm9kZUFzU2Ny
aXB0VmFsdWUoTm9kZSogbm9kZSkKIHsKICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0Ojpu
b2RlQXNTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZSgpLCBub2RlKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKaW5kZXggOWI2YWQyZi4uYTk2MTgxYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKQEAgLTM1LDE3ICszNSwxOSBA
QAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
clR5cGVCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0QXJndW1lbnRzLmgiCi0jaW5jbHVkZSAi
U2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KIAorbmFtZXNwYWNlIERlcHJlY2F0ZWQgeworY2xhc3MgU2NyaXB0T2JqZWN0
OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEluamVjdGVkU2NyaXB0TW9kdWxl
OwogY2xhc3MgTm9kZTsKLWNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIAogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCiAKQEAgLTcxLDcgKzczLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
ICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1
bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+
KiB3YXNUaHJvd24pOwogICAgIHZvaWQgZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyos
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNjcmlwdFZhbHVlJiBjYWxsRnJh
bWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYgY2FsbEZyYW1lcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
U3RyaW5nJiBjYWxsRnJhbWVJZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
U3RyaW5nJiBleHByZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBT
dHJpbmcmIG9iamVjdEdyb3VwLApAQCAtODcsMTMgKzg5LDEzIEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlbGVhc2VPYmplY3QoY29uc3QgU3RyaW5nJiBvYmplY3RJZCk7CiAKICNpZiBFTkFCTEUoSkFW
QVNDUklQVF9ERUJVR0dFUikKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBl
QnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IHdyYXBDYWxsRnJhbWVzKGNvbnN0IFNjcmlw
dFZhbHVlJik7CisgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6
OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiB3cmFwQ2FsbEZyYW1lcyhjb25zdCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSYpOwogI2VuZGlmCiAKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q+IHdyYXBPYmplY3QoY29uc3QgU2NyaXB0VmFsdWUmLCBjb25zdCBT
dHJpbmcmIGdyb3VwTmFtZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcgPSBmYWxzZSkgY29uc3Q7Ci0g
ICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiB3cmFwVGFi
bGUoY29uc3QgU2NyaXB0VmFsdWUmIHRhYmxlLCBjb25zdCBTY3JpcHRWYWx1ZSYgY29sdW1ucykg
Y29uc3Q7CisgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0
PiB3cmFwT2JqZWN0KGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgY29uc3QgU3RyaW5n
JiBncm91cE5hbWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3ID0gZmFsc2UpIGNvbnN0OworICAgIFBh
c3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gd3JhcFRhYmxlKGNv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB0YWJsZSwgY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmIGNvbHVtbnMpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdD4gd3JhcE5vZGUoTm9kZSosIGNvbnN0IFN0cmluZyYgZ3JvdXBO
YW1lKTsKLSAgICBTY3JpcHRWYWx1ZSBmaW5kT2JqZWN0QnlJZChjb25zdCBTdHJpbmcmIG9iamVj
dElkKSBjb25zdDsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBmaW5kT2JqZWN0QnlJZChj
b25zdCBTdHJpbmcmIG9iamVjdElkKSBjb25zdDsKIAogICAgIHZvaWQgaW5zcGVjdE5vZGUoTm9k
ZSopOwogICAgIHZvaWQgcmVsZWFzZU9iamVjdEdyb3VwKGNvbnN0IFN0cmluZyYpOwpAQCAtMTAx
LDkgKzEwMyw5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEluamVjdGVk
U2NyaXB0TW9kdWxlOwogICAgIGZyaWVuZCBJbmplY3RlZFNjcmlwdCBJbmplY3RlZFNjcmlwdE1h
bmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKEpTQzo6RXhlY1N0YXRlKik7Ci0gICAgSW5qZWN0ZWRT
Y3JpcHQoU2NyaXB0T2JqZWN0LCBJbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKTsKKyAgICBJbmpl
Y3RlZFNjcmlwdChEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QsIEluc3BlY3RlZFN0YXRlQWNjZXNz
Q2hlY2spOwogCi0gICAgU2NyaXB0VmFsdWUgbm9kZUFzU2NyaXB0VmFsdWUoTm9kZSopOworICAg
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG5vZGVBc1NjcmlwdFZhbHVlKE5vZGUqKTsKIH07CiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNl
LmNwcAppbmRleCBkOWZiYTQwLi43MzA0OGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcApAQCAtMzUsMTMgKzM1LDE1IEBACiAjaW5jbHVk
ZSAiSW5qZWN0ZWRTY3JpcHRCYXNlLmgiCiAKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKLSNpbmNsdWRlICJTY3JpcHRG
dW5jdGlvbkNhbGwuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaD4K
KyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8cnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1
c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0OwogCit1c2lu
ZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEluamVjdGVk
U2NyaXB0QmFzZTo6SW5qZWN0ZWRTY3JpcHRCYXNlKGNvbnN0IFN0cmluZyYgbmFtZSkKQEAgLTUw
LDE0ICs1MiwxNCBAQCBJbmplY3RlZFNjcmlwdEJhc2U6OkluamVjdGVkU2NyaXB0QmFzZShjb25z
dCBTdHJpbmcmIG5hbWUpCiB7CiB9CiAKLUluamVjdGVkU2NyaXB0QmFzZTo6SW5qZWN0ZWRTY3Jp
cHRCYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgU2NyaXB0T2JqZWN0IGluamVjdGVkU2NyaXB0T2Jq
ZWN0LCBJbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrIGFjY2Vzc0NoZWNrKQorSW5qZWN0ZWRTY3Jp
cHRCYXNlOjpJbmplY3RlZFNjcmlwdEJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBEZXByZWNhdGVk
OjpTY3JpcHRPYmplY3QgaW5qZWN0ZWRTY3JpcHRPYmplY3QsIEluc3BlY3RlZFN0YXRlQWNjZXNz
Q2hlY2sgYWNjZXNzQ2hlY2spCiAgICAgOiBtX25hbWUobmFtZSkKICAgICAsIG1faW5qZWN0ZWRT
Y3JpcHRPYmplY3QoaW5qZWN0ZWRTY3JpcHRPYmplY3QpCiAgICAgLCBtX2luc3BlY3RlZFN0YXRl
QWNjZXNzQ2hlY2soYWNjZXNzQ2hlY2spCiB7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHRCYXNl
Ojppbml0aWFsaXplKFNjcmlwdE9iamVjdCBpbmplY3RlZFNjcmlwdE9iamVjdCwgSW5zcGVjdGVk
U3RhdGVBY2Nlc3NDaGVjayBhY2Nlc3NDaGVjaykKK3ZvaWQgSW5qZWN0ZWRTY3JpcHRCYXNlOjpp
bml0aWFsaXplKERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBpbmplY3RlZFNjcmlwdE9iamVjdCwg
SW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayBhY2Nlc3NDaGVjaykKIHsKICAgICBtX2luamVjdGVk
U2NyaXB0T2JqZWN0ID0gaW5qZWN0ZWRTY3JpcHRPYmplY3Q7CiAgICAgbV9pbnNwZWN0ZWRTdGF0
ZUFjY2Vzc0NoZWNrID0gYWNjZXNzQ2hlY2s7CkBAIC02OCwxMiArNzAsMTIgQEAgYm9vbCBJbmpl
Y3RlZFNjcmlwdEJhc2U6OmNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdygpIGNvbnN0CiAgICAgcmV0
dXJuIG1faW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayhtX2luamVjdGVkU2NyaXB0T2JqZWN0LnNj
cmlwdFN0YXRlKCkpOwogfQogCi1jb25zdCBTY3JpcHRPYmplY3QmIEluamVjdGVkU2NyaXB0QmFz
ZTo6aW5qZWN0ZWRTY3JpcHRPYmplY3QoKSBjb25zdAorY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0
T2JqZWN0JiBJbmplY3RlZFNjcmlwdEJhc2U6OmluamVjdGVkU2NyaXB0T2JqZWN0KCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9pbmplY3RlZFNjcmlwdE9iamVjdDsKIH0KIAotU2NyaXB0VmFsdWUg
SW5qZWN0ZWRTY3JpcHRCYXNlOjpjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoU2NyaXB0RnVu
Y3Rpb25DYWxsJiBmdW5jdGlvbiwgYm9vbCYgaGFkRXhjZXB0aW9uKSBjb25zdAorRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHRCYXNlOjpjYWxsRnVuY3Rpb25XaXRoRXZhbEVu
YWJsZWQoRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwgYm9vbCYgaGFk
RXhjZXB0aW9uKSBjb25zdAogewogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJvbUV4ZWNTdGF0ZShtX2lu
amVjdGVkU2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRlKCkpOwogICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxDYWxs
RnVuY3Rpb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgbmFtZSgpLCAxKTsKQEAgLTg3LDcgKzg5
LDcgQEAgU2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHRCYXNlOjpjYWxsRnVuY3Rpb25XaXRoRXZh
bEVuYWJsZWQoU2NyaXB0RnVuY3Rpb25DYWxsJgogICAgICAgICAgICAgc2NyaXB0U3RhdGUtPmxl
eGljYWxHbG9iYWxPYmplY3QoKS0+c2V0RXZhbEVuYWJsZWQodHJ1ZSk7CiAgICAgfQogCi0gICAg
U2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBmdW5jdGlvbi5jYWxsKGhhZEV4Y2VwdGlvbik7Cisg
ICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBmdW5jdGlvbi5jYWxsKGhh
ZEV4Y2VwdGlvbik7CiAKICAgICBpZiAoZXZhbElzRGlzYWJsZWQpCiAgICAgICAgIHNjcmlwdFN0
YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnNldEV2YWxFbmFibGVkKGZhbHNlKTsKQEAgLTk2
LDcgKzk4LDcgQEAgU2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHRCYXNlOjpjYWxsRnVuY3Rpb25X
aXRoRXZhbEVuYWJsZWQoU2NyaXB0RnVuY3Rpb25DYWxsJgogICAgIHJldHVybiByZXN1bHRWYWx1
ZTsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6Om1ha2VDYWxsKFNjcmlwdEZ1bmN0aW9u
Q2FsbCYgZnVuY3Rpb24sIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKK3ZvaWQgSW5q
ZWN0ZWRTY3JpcHRCYXNlOjptYWtlQ2FsbChEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwm
IGZ1bmN0aW9uLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCiB7CiAgICAgaWYgKGhh
c05vVmFsdWUoKSB8fCAhY2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KCkpIHsKICAgICAgICAgKnJl
c3VsdCA9IEluc3BlY3RvclZhbHVlOjpudWxsKCk7CkBAIC0xMDQsNyArMTA2LDcgQEAgdm9pZCBJ
bmplY3RlZFNjcmlwdEJhc2U6Om1ha2VDYWxsKFNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24s
IFJlZlB0cjxJbnNwZWN0b3IKICAgICB9CiAKICAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNl
OwotICAgIFNjcmlwdFZhbHVlIHJlc3VsdFZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFi
bGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
IHJlc3VsdFZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRF
eGNlcHRpb24pOwogCiAgICAgQVNTRVJUKCFoYWRFeGNlcHRpb24pOwogICAgIGlmICghaGFkRXhj
ZXB0aW9uKSB7CkBAIC0xMTUsNyArMTE3LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6Om1h
a2VDYWxsKFNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24sIFJlZlB0cjxJbnNwZWN0b3IKICAg
ICAgICAgKnJlc3VsdCA9IEluc3BlY3RvclN0cmluZzo6Y3JlYXRlKCJFeGNlcHRpb24gd2hpbGUg
bWFraW5nIGEgY2FsbC4iKTsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6Om1ha2VFdmFs
Q2FsbChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rp
b24sIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0Piogb2JqZWN0UmVz
dWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCit2b2lkIEluamVj
dGVkU2NyaXB0QmFzZTo6bWFrZUV2YWxDYWxsKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgRGVw
cmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiBvYmplY3RSZXN1bHQsIFR5cGVCdWlsZGVyOjpPcHRP
dXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJl
c3VsdDsKICAgICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmgKaW5kZXggNzk2ZjZjMC4uMWNkMGUzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaApAQCAt
MzIsMTQgKzMyLDE5IEBACiAjZGVmaW5lIEluamVjdGVkU2NyaXB0QmFzZV9oCiAKICNpbmNsdWRl
ICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgorI2lu
Y2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IEluc3BlY3RvclZhbHVlOworbmFtZXNwYWNlIERlcHJlY2F0ZWQgewogY2xhc3MgU2NyaXB0RnVu
Y3Rpb25DYWxsOworfQorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNzIEluc3BlY3RvclZh
bHVlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3Ry
aW5nOwogCkBAIC01NiwxOCArNjEsMTggQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIHR5cGVk
ZWYgYm9vbCAoKkluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spKEpTQzo6RXhlY1N0YXRlKik7CiAg
ICAgSW5qZWN0ZWRTY3JpcHRCYXNlKGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgSW5qZWN0ZWRT
Y3JpcHRCYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgU2NyaXB0T2JqZWN0LCBJbnNwZWN0ZWRTdGF0
ZUFjY2Vzc0NoZWNrKTsKKyAgICBJbmplY3RlZFNjcmlwdEJhc2UoY29uc3QgU3RyaW5nJiBuYW1l
LCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QsIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOwog
Ci0gICAgdm9pZCBpbml0aWFsaXplKFNjcmlwdE9iamVjdCwgSW5zcGVjdGVkU3RhdGVBY2Nlc3ND
aGVjayk7CisgICAgdm9pZCBpbml0aWFsaXplKERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCwgSW5z
cGVjdGVkU3RhdGVBY2Nlc3NDaGVjayk7CiAgICAgYm9vbCBjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5k
b3coKSBjb25zdDsKLSAgICBjb25zdCBTY3JpcHRPYmplY3QmIGluamVjdGVkU2NyaXB0T2JqZWN0
KCkgY29uc3Q7Ci0gICAgU2NyaXB0VmFsdWUgY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKFNj
cmlwdEZ1bmN0aW9uQ2FsbCYsIGJvb2wmIGhhZEV4Y2VwdGlvbikgY29uc3Q7Ci0gICAgdm9pZCBt
YWtlQ2FsbChTY3JpcHRGdW5jdGlvbkNhbGwmLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1
bHQpOwotICAgIHZvaWQgbWFrZUV2YWxDYWxsKEVycm9yU3RyaW5nKiwgU2NyaXB0RnVuY3Rpb25D
YWxsJiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQs
IFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7CisgICAgY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0T2JqZWN0JiBpbmplY3RlZFNjcmlwdE9iamVjdCgpIGNvbnN0OworICAg
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChEZXBy
ZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwmLCBib29sJiBoYWRFeGNlcHRpb24pIGNvbnN0Owor
ICAgIHZvaWQgbWFrZUNhbGwoRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsJiwgUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOworICAgIHZvaWQgbWFrZUV2YWxD
YWxsKEVycm9yU3RyaW5nKiwgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsJiwgUmVmUHRy
PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsIFR5cGVCdWlsZGVy
OjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1f
bmFtZTsKLSAgICBTY3JpcHRPYmplY3QgbV9pbmplY3RlZFNjcmlwdE9iamVjdDsKKyAgICBEZXBy
ZWNhdGVkOjpTY3JpcHRPYmplY3QgbV9pbmplY3RlZFNjcmlwdE9iamVjdDsKICAgICBJbnNwZWN0
ZWRTdGF0ZUFjY2Vzc0NoZWNrIG1faW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjazsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01v
ZHVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNN
b2R1bGUuY3BwCmluZGV4IGZhZDc5OGIuLjljNmNjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmNwcApAQCAtMzcs
OCArMzcsMTAgQEAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVj
dGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmgiCi0jaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCi0jaW5jbHVkZSAiU2Ny
aXB0T2JqZWN0LmgiCisjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCisjaW5jbHVk
ZSA8YmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmg+CisjaW5jbHVkZSA8YmluZGluZ3MvU2Ny
aXB0T2JqZWN0Lmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogCiB1
c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6QXJyYXk7CiB1c2luZyBXZWJDb3JlOjpUeXBlQnVp
bGRlcjo6Q2FudmFzOjpSZXNvdXJjZUlkOwpAQCAtNDcsNiArNDksOCBAQCB1c2luZyBXZWJDb3Jl
OjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJjZVN0YXRlOwogdXNpbmcgV2ViQ29yZTo6VHlw
ZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2c7CiB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6
Q2FudmFzOjpUcmFjZUxvZ0lkOwogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjpJbmplY3RlZFNj
cmlwdENhbnZhc01vZHVsZSgpCkBAIC02NiwzNCArNzAsMzQgQEAgU3RyaW5nIEluamVjdGVkU2Ny
aXB0Q2FudmFzTW9kdWxlOjpzb3VyY2UoKSBjb25zdAogICAgIHJldHVybiBTdHJpbmcocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGVTb3VyY2Vf
anMpLCBzaXplb2YoSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGVTb3VyY2VfanMpKTsKIH0KIAot
U2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjp3cmFwQ2FudmFzMkRDb250
ZXh0KGNvbnN0IFNjcmlwdE9iamVjdCYgY29udGV4dCkKK0RlcHJlY2F0ZWQ6OlNjcmlwdE9iamVj
dCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6d3JhcENhbnZhczJEQ29udGV4dChjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmIGNvbnRleHQpCiB7CiAgICAgcmV0dXJuIGNhbGxXcmFw
Q29udGV4dEZ1bmN0aW9uKCJ3cmFwQ2FudmFzMkRDb250ZXh0IiwgY29udGV4dCk7CiB9CiAKICNp
ZiBFTkFCTEUoV0VCR0wpCi1TY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6
OndyYXBXZWJHTENvbnRleHQoY29uc3QgU2NyaXB0T2JqZWN0JiBnbENvbnRleHQpCitEZXByZWNh
dGVkOjpTY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OndyYXBXZWJHTENv
bnRleHQoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiBnbENvbnRleHQpCiB7CiAgICAg
cmV0dXJuIGNhbGxXcmFwQ29udGV4dEZ1bmN0aW9uKCJ3cmFwV2ViR0xDb250ZXh0IiwgZ2xDb250
ZXh0KTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAKLVNjcmlwdE9iamVjdCBJbmplY3Rl
ZFNjcmlwdENhbnZhc01vZHVsZTo6Y2FsbFdyYXBDb250ZXh0RnVuY3Rpb24oY29uc3QgU3RyaW5n
JiBmdW5jdGlvbk5hbWUsIGNvbnN0IFNjcmlwdE9iamVjdCYgY29udGV4dCkKK0RlcHJlY2F0ZWQ6
OlNjcmlwdE9iamVjdCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6Y2FsbFdyYXBDb250ZXh0
RnVuY3Rpb24oY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNj
cmlwdE9iamVjdCYgY29udGV4dCkKIHsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24o
aW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgZnVuY3Rpb25OYW1lKTsKKyAgICBEZXByZWNhdGVkOjpT
Y3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgZnVuY3Rp
b25OYW1lLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAg
ZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY29udGV4dCk7CiAgICAgYm9vbCBoYWRFeGNlcHRpb24g
PSBmYWxzZTsKLSAgICBTY3JpcHRWYWx1ZSByZXN1bHRWYWx1ZSA9IGNhbGxGdW5jdGlvbldpdGhF
dmFsRW5hYmxlZChmdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKKyAgICBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSByZXN1bHRWYWx1ZSA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlv
biwgaGFkRXhjZXB0aW9uKTsKICAgICBpZiAoaGFkRXhjZXB0aW9uIHx8IHJlc3VsdFZhbHVlLmhh
c05vVmFsdWUoKSB8fCAhcmVzdWx0VmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIFNjcmlwdE9iamVjdCgpOworICAgICAgICBy
ZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KCk7CiAgICAgfQotICAgIHJldHVybiBTY3Jp
cHRPYmplY3QoY29udGV4dC5zY3JpcHRTdGF0ZSgpLCByZXN1bHRWYWx1ZSk7CisgICAgcmV0dXJu
IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdChjb250ZXh0LnNjcmlwdFN0YXRlKCksIHJlc3VsdFZh
bHVlKTsKIH0KIAogdm9pZCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6bWFya0ZyYW1lRW5k
KCkKIHsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmpl
Y3QoKSwgIm1hcmtGcmFtZUVuZCIpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2Fs
bCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAibWFya0ZyYW1lRW5kIiwgV2ViQ29y
ZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAgIFJlZlB0cjxJbnNwZWN0
b3JWYWx1ZT4gcmVzdWx0VmFsdWU7CiAgICAgbWFrZUNhbGwoZnVuY3Rpb24sICZyZXN1bHRWYWx1
ZSk7CiAgICAgQVNTRVJUKHJlc3VsdFZhbHVlKTsKQEAgLTExMSw3ICsxMTUsNyBAQCB2b2lkIElu
amVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjpzdGFydENhcHR1cmluZyhFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIFRyYWNlTAogCiB2b2lkIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjpjYWxs
U3RhcnRDYXB0dXJpbmdGdW5jdGlvbihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBUcmFjZUxvZ0lkKiB0cmFjZUxvZ0lkKQogewotICAgIFNjcmlw
dEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCBmdW5jdGlvbk5h
bWUpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3Rl
ZFNjcmlwdE9iamVjdCgpLCBmdW5jdGlvbk5hbWUsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRs
ZXJGcm9tQW55VGhyZWFkKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdFZhbHVl
OwogICAgIG1ha2VDYWxsKGZ1bmN0aW9uLCAmcmVzdWx0VmFsdWUpOwogICAgIGlmICghcmVzdWx0
VmFsdWUgfHwgcmVzdWx0VmFsdWUtPnR5cGUoKSAhPSBJbnNwZWN0b3JWYWx1ZTo6VHlwZVN0cmlu
ZyB8fCAhcmVzdWx0VmFsdWUtPmFzU3RyaW5nKHRyYWNlTG9nSWQpKQpAQCAtMTMwLDcgKzEzNCw3
IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OmRyb3BUcmFjZUxvZyhFcnJvclN0
cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFRyCiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHRDYW52YXNN
b2R1bGU6OmNhbGxWb2lkRnVuY3Rpb25XaXRoVHJhY2VMb2dJZEFyZ3VtZW50KGNvbnN0IFN0cmlu
ZyYgZnVuY3Rpb25OYW1lLCBFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFRyYWNlTG9n
SWQmIHRyYWNlTG9nSWQpCiB7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVj
dGVkU2NyaXB0T2JqZWN0KCksIGZ1bmN0aW9uTmFtZSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0
RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksIGZ1bmN0aW9uTmFt
ZSwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAgIGZ1bmN0
aW9uLmFwcGVuZEFyZ3VtZW50KHRyYWNlTG9nSWQpOwogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0g
ZmFsc2U7CiAgICAgY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNl
cHRpb24pOwpAQCAtMTQxLDcgKzE0NSw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1
bGU6OmNhbGxWb2lkRnVuY3Rpb25XaXRoVHJhY2VMb2dJZEFyZ3VtZW50KGNvbnN0IFN0CiAKIHZv
aWQgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OnRyYWNlTG9nKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgY29uc3QgVHJhY2VMb2dJZCYgdHJhY2VMb2dJZCwgY29uc3QgaW50KiBzdGFydE9m
ZnNldCwgY29uc3QgaW50KiBtYXhMZW5ndGgsIFJlZlB0cjxUcmFjZUxvZz4qIHRyYWNlTG9nKQog
ewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgp
LCAidHJhY2VMb2ciKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rp
b24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgInRyYWNlTG9nIiwgV2ViQ29yZTo6ZnVuY3Rpb25D
YWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHRy
YWNlTG9nSWQpOwogICAgIGlmIChzdGFydE9mZnNldCkKICAgICAgICAgZnVuY3Rpb24uYXBwZW5k
QXJndW1lbnQoKnN0YXJ0T2Zmc2V0KTsKQEAgLTE1OSw3ICsxNjMsNyBAQCB2b2lkIEluamVjdGVk
U2NyaXB0Q2FudmFzTW9kdWxlOjp0cmFjZUxvZyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNv
bnN0IFRyYWNlTAogCiB2b2lkIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjpyZXBsYXlUcmFj
ZUxvZyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFRyYWNlTG9nSWQmIHRyYWNlTG9n
SWQsIGludCBzdGVwTm8sIFJlZlB0cjxSZXNvdXJjZVN0YXRlPiogcmVzdWx0KQogewotICAgIFNj
cmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAicmVwbGF5
VHJhY2VMb2ciKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24o
aW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgInJlcGxheVRyYWNlTG9nIiwgV2ViQ29yZTo6ZnVuY3Rp
b25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50
KHRyYWNlTG9nSWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHN0ZXBObyk7CiAgICAg
UmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHRWYWx1ZTsKQEAgLTE3NCw3ICsxNzgsNyBAQCB2
b2lkIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjpyZXBsYXlUcmFjZUxvZyhFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGNvbnN0CiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6
OnJlc291cmNlSW5mbyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlc291cmNlSWQm
IHJlc291cmNlSWQsIFJlZlB0cjxSZXNvdXJjZUluZm8+KiByZXN1bHQpCiB7Ci0gICAgU2NyaXB0
RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJyZXNvdXJjZUlu
Zm8iKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0
ZWRTY3JpcHRPYmplY3QoKSwgInJlc291cmNlSW5mbyIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhh
bmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChyZXNvdXJj
ZUlkKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdFZhbHVlOwogICAgIG1ha2VD
YWxsKGZ1bmN0aW9uLCAmcmVzdWx0VmFsdWUpOwpAQCAtMTg4LDcgKzE5Miw3IEBAIHZvaWQgSW5q
ZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OnJlc291cmNlSW5mbyhFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGNvbnN0IFJlCiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OnJlc291
cmNlU3RhdGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBUcmFjZUxvZ0lkJiB0cmFj
ZUxvZ0lkLCBjb25zdCBSZXNvdXJjZUlkJiByZXNvdXJjZUlkLCBSZWZQdHI8UmVzb3VyY2VTdGF0
ZT4qIHJlc3VsdCkKIHsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRT
Y3JpcHRPYmplY3QoKSwgInJlc291cmNlU3RhdGUiKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRG
dW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgInJlc291cmNlU3Rh
dGUiLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAgZnVu
Y3Rpb24uYXBwZW5kQXJndW1lbnQodHJhY2VMb2dJZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJn
dW1lbnQocmVzb3VyY2VJZCk7CiAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHRWYWx1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENh
bnZhc01vZHVsZS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2Fu
dmFzTW9kdWxlLmgKaW5kZXggZjMzMTEyYy4uOTk0OTU1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmgKQEAgLTM1LDEw
ICszNSwxMyBAQAogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBEZXByZWNhdGVkIHsKK2NsYXNzIFNjcmlwdE9iamVj
dDsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFn
ZXI7Ci1jbGFzcyBTY3JpcHRPYmplY3Q7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCkBAIC01
MCw5ICs1Myw5IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBJbmplY3RlZFNjcmlwdENhbnZhc01v
ZHVsZSBtb2R1bGVGb3JTdGF0ZShJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBKU0M6OkV4ZWNTdGF0
ZSopOwogCi0gICAgU2NyaXB0T2JqZWN0IHdyYXBDYW52YXMyRENvbnRleHQoY29uc3QgU2NyaXB0
T2JqZWN0Jik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IHdyYXBDYW52YXMyRENvbnRl
eHQoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0Jik7CiAjaWYgRU5BQkxFKFdFQkdMKQot
ICAgIFNjcmlwdE9iamVjdCB3cmFwV2ViR0xDb250ZXh0KGNvbnN0IFNjcmlwdE9iamVjdCYpOwor
ICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCB3cmFwV2ViR0xDb250ZXh0KGNvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdE9iamVjdCYpOwogI2VuZGlmCiAgICAgdm9pZCBtYXJrRnJhbWVFbmQoKTsK
IApAQCAtNjYsNyArNjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNvdXJjZVN0YXRlKEVycm9y
U3RyaW5nKiwgY29uc3QgVHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCYsIGNvbnN0IFR5
cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlSWQmLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNhbnZh
czo6UmVzb3VyY2VTdGF0ZT4qKTsKIAogcHJpdmF0ZToKLSAgICBTY3JpcHRPYmplY3QgY2FsbFdy
YXBDb250ZXh0RnVuY3Rpb24oY29uc3QgU3RyaW5nJiwgY29uc3QgU2NyaXB0T2JqZWN0Jik7Cisg
ICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IGNhbGxXcmFwQ29udGV4dEZ1bmN0aW9uKGNvbnN0
IFN0cmluZyYsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYpOwogICAgIHZvaWQgY2Fs
bFN0YXJ0Q2FwdHVyaW5nRnVuY3Rpb24oY29uc3QgU3RyaW5nJiwgRXJyb3JTdHJpbmcqLCBTdHJp
bmcqKTsKICAgICB2b2lkIGNhbGxWb2lkRnVuY3Rpb25XaXRoVHJhY2VMb2dJZEFyZ3VtZW50KGNv
bnN0IFN0cmluZyYsIEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJik7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAppbmRleCBlZjUzM2Fh
Li5lNGM2ZDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRIb3N0LmNwcApAQCAtNDcsMTkgKzQ3LDIwIEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JGcm9udGVuZC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2lu
Y2x1ZGUgIlBhc3RlYm9hcmQuaCIKICNpbmNsdWRlICJTdG9yYWdlLmgiCi0KLSNpZiBFTkFCTEUo
U1FMX0RBVEFCQVNFKQotI2luY2x1ZGUgIkRhdGFiYXNlLmgiCi0jZW5kaWYKLQogI2luY2x1ZGUg
Im1hcmt1cC5oIgotCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KKyNpbmNsdWRl
IDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAorI2lmIEVOQUJMRShTUUxfREFUQUJBU0Up
CisjaW5jbHVkZSAiRGF0YWJhc2UuaCIKKyNlbmRpZgorCit1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8SW5qZWN0ZWRTY3JpcHRI
b3N0PiBJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpCkBAIC0xMjEsOSArMTIyLDkgQEAgdm9p
ZCBJbmplY3RlZFNjcmlwdEhvc3Q6OmNvcHlUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBQ
YXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKS0+d3JpdGVQbGFpblRleHQodGV4dCwg
UGFzdGVib2FyZDo6Q2Fubm90U21hcnRSZXBsYWNlKTsKIH0KIAotU2NyaXB0VmFsdWUgSW5qZWN0
ZWRTY3JpcHRIb3N0OjpJbnNwZWN0YWJsZU9iamVjdDo6Z2V0KEpTQzo6RXhlY1N0YXRlKikKK0Rl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0SG9zdDo6SW5zcGVjdGFibGVPYmpl
Y3Q6OmdldChKU0M6OkV4ZWNTdGF0ZSopCiB7Ci0gICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7Cisg
ICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCk7CiB9OwogCiB2b2lkIEluamVjdGVk
U2NyaXB0SG9zdDo6YWRkSW5zcGVjdGVkT2JqZWN0KFBhc3NPd25QdHI8SW5qZWN0ZWRTY3JpcHRI
b3N0OjpJbnNwZWN0YWJsZU9iamVjdD4gb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0SG9zdC5oCmluZGV4IDRhODQxODIuLjhjNDRkNzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgKQEAgLTM2LDYgKzM2
LDE1IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKK25hbWVzcGFjZSBEZXByZWNhdGVkIHsKK2NsYXNzIFNjcmlwdFZhbHVlOworfQorCitu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNzIEluc3BlY3Rvck9iamVjdDsKK2NsYXNzIEluc3Bl
Y3RvclZhbHVlOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERhdGFiYXNlOwpA
QCAtNDYsMTIgKzU1LDggQEAgY2xhc3MgSW5zcGVjdG9yRE9NQWdlbnQ7CiBjbGFzcyBJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OwogY2xhc3Mg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDsKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsKLWNsYXNzIElu
c3BlY3RvclZhbHVlOwogY2xhc3MgTm9kZTsKIGNsYXNzIFNjcmlwdERlYnVnU2VydmVyOwotY2xh
c3MgU2NyaXB0T2JqZWN0OwotY2xhc3MgU2NyaXB0VmFsdWU7CiBjbGFzcyBTdG9yYWdlOwogCiBz
dHJ1Y3QgRXZlbnRMaXN0ZW5lckluZm87CkBAIC04NSwyMiArOTAsMjIgQEAgcHVibGljOgogI2Vu
ZGlmCiAgICAgfQogCi0gICAgc3RhdGljIE5vZGUqIHNjcmlwdFZhbHVlQXNOb2RlKFNjcmlwdFZh
bHVlKTsKLSAgICBzdGF0aWMgU2NyaXB0VmFsdWUgbm9kZUFzU2NyaXB0VmFsdWUoSlNDOjpFeGVj
U3RhdGUqLCBOb2RlKik7CisgICAgc3RhdGljIE5vZGUqIHNjcmlwdFZhbHVlQXNOb2RlKERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlKTsKKyAgICBzdGF0aWMgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUg
bm9kZUFzU2NyaXB0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBOb2RlKik7CiAKICAgICB2b2lkIGRp
c2Nvbm5lY3QoKTsKIAogICAgIGNsYXNzIEluc3BlY3RhYmxlT2JqZWN0IHsKICAgICAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIFNjcmlw
dFZhbHVlIGdldChKU0M6OkV4ZWNTdGF0ZSopOworICAgICAgICB2aXJ0dWFsIERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlIGdldChKU0M6OkV4ZWNTdGF0ZSopOwogICAgICAgICB2aXJ0dWFsIH5JbnNw
ZWN0YWJsZU9iamVjdCgpIHsgfQogICAgIH07CiAgICAgdm9pZCBhZGRJbnNwZWN0ZWRPYmplY3Qo
UGFzc093blB0cjxJbnNwZWN0YWJsZU9iamVjdD4pOwogICAgIHZvaWQgY2xlYXJJbnNwZWN0ZWRP
YmplY3RzKCk7CiAgICAgSW5zcGVjdGFibGVPYmplY3QqIGluc3BlY3RlZE9iamVjdCh1bnNpZ25l
ZCBpbnQgbnVtKTsKIAotICAgIHZvaWQgaW5zcGVjdEltcGwoUGFzc1JlZlB0cjxJbnNwZWN0b3JW
YWx1ZT4gb2JqZWN0VG9JbnNwZWN0LCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBoaW50cyk7
CisgICAgdm9pZCBpbnNwZWN0SW1wbChQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFs
dWU+IG9iamVjdFRvSW5zcGVjdCwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVl
PiBoaW50cyk7CiAgICAgdm9pZCBnZXRFdmVudExpc3RlbmVyc0ltcGwoTm9kZSosIFZlY3RvcjxF
dmVudExpc3RlbmVySW5mbz4mIGxpc3RlbmVyc0FycmF5KTsKIAogICAgIHZvaWQgY2xlYXJDb25z
b2xlTWVzc2FnZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0TWFuYWdlci5jcHAKaW5kZXggN2FhM2Q0My4uMTI3NmM0NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKQEAgLTM3LDEw
ICszNywxMiBAQAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0
ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCIKLSNpbmNs
dWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNs
dWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3QuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVj
dG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAordXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzT3duUHRyPEluamVj
dGVkU2NyaXB0TWFuYWdlcj4gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVGb3JQYWdlKCkK
QEAgLTE3Myw3ICsxNzUsNyBAQCBJbmplY3RlZFNjcmlwdCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6
OmluamVjdGVkU2NyaXB0Rm9yKEpTQzo6RXhlY1N0YXRlKiBpbnNwZWN0ZQogICAgICAgICByZXR1
cm4gSW5qZWN0ZWRTY3JpcHQoKTsKIAogICAgIGludCBpZCA9IGluamVjdGVkU2NyaXB0SWRGb3Io
aW5zcGVjdGVkRXhlY1N0YXRlKTsKLSAgICBTY3JpcHRPYmplY3QgaW5qZWN0ZWRTY3JpcHRPYmpl
Y3QgPSBjcmVhdGVJbmplY3RlZFNjcmlwdChpbmplY3RlZFNjcmlwdFNvdXJjZSgpLCBpbnNwZWN0
ZWRFeGVjU3RhdGUsIGlkKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgaW5qZWN0ZWRT
Y3JpcHRPYmplY3QgPSBjcmVhdGVJbmplY3RlZFNjcmlwdChpbmplY3RlZFNjcmlwdFNvdXJjZSgp
LCBpbnNwZWN0ZWRFeGVjU3RhdGUsIGlkKTsKICAgICBJbmplY3RlZFNjcmlwdCByZXN1bHQoaW5q
ZWN0ZWRTY3JpcHRPYmplY3QsIG1faW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayk7CiAgICAgbV9p
ZFRvSW5qZWN0ZWRTY3JpcHQuc2V0KGlkLCByZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKaW5k
ZXggNjgxZTQwOC4uN2I0OGQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdE1hbmFnZXIuaApAQCAtMzUsMTMgKzM1LDE5IEBACiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNl
IERlcHJlY2F0ZWQgeworY2xhc3MgU2NyaXB0T2JqZWN0OworfQorCituYW1lc3BhY2UgSW5zcGVj
dG9yIHsKK2NsYXNzIEluc3BlY3Rvck9iamVjdDsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBET01XaW5kb3c7CiBjbGFzcyBJbmplY3RlZFNjcmlwdDsKIGNsYXNzIEluamVjdGVk
U2NyaXB0SG9zdDsKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsKLWNsYXNzIFNjcmlwdE9iamVjdDsK
IAogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShJbmplY3RlZFNjcmlwdE1hbmFnZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTY5
LDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBJbmplY3RlZFNjcmlwdE1hbmFnZXIo
SW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayk7CiAKICAgICBTdHJpbmcgaW5qZWN0ZWRTY3JpcHRT
b3VyY2UoKTsKLSAgICBTY3JpcHRPYmplY3QgY3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3Ry
aW5nJiBzb3VyY2UsIEpTQzo6RXhlY1N0YXRlKiwgaW50IGlkKTsKKyAgICBEZXByZWNhdGVkOjpT
Y3JpcHRPYmplY3QgY3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEpT
Qzo6RXhlY1N0YXRlKiwgaW50IGlkKTsKIAogICAgIHN0YXRpYyBib29sIGNhbkFjY2Vzc0luc3Bl
Y3RlZFdpbmRvdyhKU0M6OkV4ZWNTdGF0ZSopOwogICAgIHN0YXRpYyBib29sIGNhbkFjY2Vzc0lu
c3BlY3RlZFdvcmtlckdsb2JhbFNjb3BlKEpTQzo6RXhlY1N0YXRlKik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcAppbmRleCBkYjIwNzc5
Li45MjY4ZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRNb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdE1vZHVsZS5jcHAKQEAgLTM2LDggKzM2LDExIEBACiAKICNpbmNsdWRlICJJbmplY3RlZFNj
cmlwdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgotI2luY2x1ZGUgIlNj
cmlwdEZ1bmN0aW9uQ2FsbC5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUg
IkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdEZ1bmN0
aW9uQ2FsbC5oPgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgorCit1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU0LDEzICs1
NywxMyBAQCB2b2lkIEluamVjdGVkU2NyaXB0TW9kdWxlOjplbnN1cmVJbmplY3RlZChJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TQogICAgICAgICByZXR1cm47CiAKICAgICAv
LyBGSVhNRTogTWFrZSB0aGUgSW5qZWN0ZWRTY3JpcHQgYSBtb2R1bGUgaXRzZWxmLgotICAgIFNj
cmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdC5pbmplY3RlZFNjcmlwdE9i
amVjdCgpLCAibW9kdWxlIik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1
bmN0aW9uKGluamVjdGVkU2NyaXB0LmluamVjdGVkU2NyaXB0T2JqZWN0KCksICJtb2R1bGUiLCBX
ZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAgZnVuY3Rpb24u
YXBwZW5kQXJndW1lbnQobmFtZSgpKTsKICAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwot
ICAgIFNjcmlwdFZhbHVlIHJlc3VsdFZhbHVlID0gaW5qZWN0ZWRTY3JpcHQuY2FsbEZ1bmN0aW9u
V2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOworICAgIERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlIHJlc3VsdFZhbHVlID0gaW5qZWN0ZWRTY3JpcHQuY2FsbEZ1bmN0aW9uV2l0
aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwogICAgIEFTU0VSVCghaGFkRXhj
ZXB0aW9uKTsKICAgICBpZiAoaGFkRXhjZXB0aW9uIHx8IHJlc3VsdFZhbHVlLmhhc05vVmFsdWUo
KSB8fCAhcmVzdWx0VmFsdWUuaXNPYmplY3QoKSkgewotICAgICAgICBTY3JpcHRGdW5jdGlvbkNh
bGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHQuaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImluamVj
dE1vZHVsZSIpOworICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rp
b24oaW5qZWN0ZWRTY3JpcHQuaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImluamVjdE1vZHVsZSIs
IFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICAgICAgZnVu
Y3Rpb24uYXBwZW5kQXJndW1lbnQobmFtZSgpKTsKICAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJn
dW1lbnQoc291cmNlKCkpOwogICAgICAgICByZXN1bHRWYWx1ZSA9IGluamVjdGVkU2NyaXB0LmNh
bGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKQEAgLTcw
LDcgKzczLDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdE1vZHVsZTo6ZW5zdXJlSW5qZWN0ZWQoSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE0KICAgICAgICAgfQogICAgIH0KIAot
ICAgIFNjcmlwdE9iamVjdCBtb2R1bGVPYmplY3Qoc2NyaXB0U3RhdGUsIHJlc3VsdFZhbHVlKTsK
KyAgICBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgbW9kdWxlT2JqZWN0KHNjcmlwdFN0YXRlLCBy
ZXN1bHRWYWx1ZSk7CiAgICAgaW5pdGlhbGl6ZShtb2R1bGVPYmplY3QsIGluamVjdGVkU2NyaXB0
TWFuYWdlci0+aW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjaygpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKaW5kZXggZWE3YjQyMC4uYmRiNjkxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCkBAIC00Miwy
MyArNDIsMjQgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5n
QWdlbnRzLmgiCiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIK
LSNpbmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3Qu
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisj
aW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5z
cGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogSW5zcGVjdG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KFBhZ2UqIHBhZ2UsIElu
amVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFT
Q0lJTGl0ZXJhbCgiSW5zcGVjdG9yIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNw
ZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJJbnNwZWN0b3IiKSwgaW5zdHJ1bWVudGluZ0Fn
ZW50cykKICAgICAsIG1faW5zcGVjdGVkUGFnZShwYWdlKQogICAgICwgbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9lbmFibGVkKGZhbHNlKQpA
QCAtOTMsNyArOTQsNyBAQCB2b2lkIEluc3BlY3RvckFnZW50OjpkaWRDbGVhcldpbmRvd09iamVj
dEluV29ybGQoRnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV29ybGQmCiAgICAgZnJhbWUtPnNjcmlw
dCgpLmV4ZWN1dGVTY3JpcHQoc2NyaXB0U291cmNlLnRvU3RyaW5nKCkpOwogfQogCi12b2lkIElu
c3BlY3RvckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBi
YWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRD
aGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7
CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcklu
c3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tl
bmREaXNwYXRjaGVyID0gSW5zcGVjdG9ySW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0
ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JBZ2VudC5oCmluZGV4IGZiNGJkMjUuLjI5OWRmYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oCkBAIC0zMCwxMSArMzAsMTcgQEAKICNpZm5kZWYgSW5z
cGVjdG9yQWdlbnRfaAogI2RlZmluZSBJbnNwZWN0b3JBZ2VudF9oCiAKLSNpbmNsdWRlICJJbnNw
ZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMu
aCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKKyNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3Igewor
Y2xhc3MgSW5zcGVjdG9yT2JqZWN0OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IERPTVdyYXBwZXJXb3JsZDsKQEAgLTQyLDEzICs0OCwxMiBAQCBjbGFzcyBEb2N1bWVudExvYWRl
cjsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3MgSW5z
cGVjdG9ySW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVyOwotY2xhc3MgSW5zcGVjdG9yT2JqZWN0
OwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFBhZ2U7CiAKIHR5cGVkZWYgU3Ry
aW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JBZ2VudCA6IHB1YmxpYyBJbnNwZWN0
b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXIgeworY2xhc3MgSW5zcGVjdG9yQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNl
LCBwdWJsaWMgSW5zcGVjdG9ySW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JBZ2VudCk7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NPd25QdHI8SW5zcGVjdG9yQWdlbnQ+IGNyZWF0ZShQYWdlKiBwYWdlLCBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zdHJ1bWVudGluZ0FnZW50
cyogaW5zdHJ1bWVudGluZ0FnZW50cykKQEAgLTY0LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHZv
aWQgZW5hYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIHZvaWQgZGlkQ2xlYXJXaW5kb3dPYmplY3RJ
bldvcmxkKEZyYW1lKiwgRE9NV3JhcHBlcldvcmxkJik7CkBAIC03OSw3ICs4NCw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgc2V0SW5qZWN0ZWRTY3JpcHRGb3JPcmlnaW4oY29uc3QgU3RyaW5nJiBv
cmlnaW4sIGNvbnN0IFN0cmluZyYgc291cmNlKTsKIAotICAgIHZvaWQgaW5zcGVjdChQYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IG9iamVjdFRvSW5zcGVjdCwg
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhpbnRzKTsKKyAgICB2b2lkIGluc3BlY3QoUGFz
c1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBvYmplY3RUb0luc3Bl
Y3QsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGhpbnRzKTsKIAogcHJp
dmF0ZToKICAgICBJbnNwZWN0b3JBZ2VudChQYWdlKiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwg
SW5zdHJ1bWVudGluZ0FnZW50cyopOwpAQCAtOTAsNyArOTUsNyBAQCBwcml2YXRlOgogICAgIElu
amVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CiAKICAgICBWZWN0
b3I8cGFpcjxsb25nLCBTdHJpbmc+PiBtX3BlbmRpbmdFdmFsdWF0ZVRlc3RDb21tYW5kczsKLSAg
ICBwYWlyPFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiwgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4+IG1fcGVuZGluZ0luc3BlY3REYXRhOworICAgIHBhaXI8UmVmUHRy
PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3Q+PiBtX3BlbmRpbmdJbnNwZWN0RGF0YTsKICAgICBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPiBtX2luamVjdGVkU2NyaXB0Rm9yT3JpZ2luOwogCiAgICAgYm9vbCBtX2VuYWJs
ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5P
bmUuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcApp
bmRleCAyNjNiZGQ5Li41MzAwZDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBbGxJbk9uZS5jcHAKQEAgLTM3LDkgKzM3LDcgQEAKICNpbmNsdWRlICJJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuY3BwIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TW9kdWxlLmNwcCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudC5jcHAiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnRS
ZWdpc3RyeS5jcHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNw
cCIKLSNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yQ1NTQWdlbnQuY3BwIgogI2luY2x1ZGUgIkluc3BlY3RvckNhbnZhc0FnZW50LmNw
cCIKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQuY3BwIgpAQCAtNzAsNyArNjgsNiBAQAogI2lu
Y2x1ZGUgIkluc3BlY3RvclN0eWxlU2hlZXQuY3BwIgogI2luY2x1ZGUgIkluc3BlY3RvclN0eWxl
VGV4dEVkaXRvci5jcHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAiCi0j
aW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmNwcCIKICNpbmNsdWRlICJJbnNwZWN0b3JXb3JrZXJB
Z2VudC5jcHAiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5jcHAiCiAjaW5jbHVkZSAi
TmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAppbmRleCAwNGNj
NTNhLi5iYTQ2NjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcApAQCAtMzYsMjEgKzM2LDIzIEBA
CiAjaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVu
ZC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgotI2luY2x1ZGUgIkluc3BlY3Rv
clZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJO
ZXR3b3JrU3RhdGVOb3RpZmllci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZXNv
dXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgor
Cit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIElu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBh
Z2VBZ2VudCogcGFnZUFnZW50KQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJh
bCgiQXBwbGljYXRpb25DYWNoZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVj
dG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiQXBwbGljYXRpb25DYWNoZSIpLCBpbnN0cnVtZW50
aW5nQWdlbnRzKQogICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQogewogfQogCi12b2lkIElu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUZyb250ZW5kRGlz
cGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERp
c3BhdGNoZXIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCmluZGV4IGViMDZjOGYuLjNlMjRlMjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50LmgKQEAgLTI4LDI3ICsyOCwzMCBAQAogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCiAKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlSG9zdC5oIgotI2luY2x1ZGUgIklu
c3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
cy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9y
V2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KIAorbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFzcyBJbnNwZWN0
b3JPYmplY3Q7CitjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBGcmFtZTsKLWNsYXNzIEluc3BlY3RvckFycmF5OwogY2xhc3MgSW5zcGVjdG9y
QWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlRnJvbnRlbmREaXNwYXRjaGVy
OwotY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50OwotY2xh
c3MgSW5zcGVjdG9yVmFsdWU7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgUGFn
ZTsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5n
OwogCi1jbGFzcyBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQgOiBwdWJsaWMgSW5zcGVj
dG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQgOiBw
dWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNo
ZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5z
cGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQpCkBAIC01NywxNSArNjAsMTIgQEAgcHVibGljOgog
ICAgIH0KICAgICB+SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KCkgeyB9CiAKLSAgICAv
LyBJbnNwZWN0b3JCYXNlQWdlbnQKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAotICAgIC8vIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbiBBUEkKICAgICB2b2lkIHVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVT
dGF0dXMoRnJhbWUqKTsKICAgICB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKIAotICAgIC8v
IEFwcGxpY2F0aW9uQ2FjaGUgQVBJIGZvciBJbnNwZWN0b3JGcm9udGVuZAogICAgIHZpcnR1YWwg
dm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RnJhbWVzV2l0
aE1hbmlmZXN0cyhFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1
aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkZyYW1lV2l0aE1hbmlmZXN0Pj4mIHJlc3VsdCk7CiAg
ICAgdmlydHVhbCB2b2lkIGdldE1hbmlmZXN0Rm9yRnJhbWUoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIGZyYW1lSWQsIFN0cmluZyogbWFuaWZlc3RVUkwpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggYmIxN2M2NS4uNjYxMDdiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBA
IC00NCw3ICs0NCw2IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JIaXN0b3J5LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIK
LSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdl
bnRzLmgiCiAjaW5jbHVkZSAiTmFtZWRGbG93Q29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIk5vZGUu
aCIKQEAgLTU3LDcgKzU2LDcgQEAKICNpbmNsdWRlICJTdHlsZVJ1bGUuaCIKICNpbmNsdWRlICJT
dHlsZVNoZWV0TGlzdC5oIgogI2luY2x1ZGUgIldlYktpdE5hbWVkRmxvdy5oIgotCisjaW5jbHVk
ZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGlt
ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgpAQCAt
NjUsNiArNjQsOCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gRm9yY2VQc2V1ZG9DbGFzc0ZsYWdzIHsK
QEAgLTYxNiw3ICs2MTcsNyBAQCBDU1NTdHlsZVJ1bGUqIEluc3BlY3RvckNTU0FnZW50Ojphc0NT
U1N0eWxlUnVsZShDU1NSdWxlKiBydWxlKQogfQogCiBJbnNwZWN0b3JDU1NBZ2VudDo6SW5zcGVj
dG9yQ1NTQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5z
cGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50KQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJ
TGl0ZXJhbCgiQ1NTIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2Vu
dEJhc2UoQVNDSUlMaXRlcmFsKCJDU1MiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1f
ZG9tQWdlbnQoZG9tQWdlbnQpCiAgICAgLCBtX2xhc3RTdHlsZVNoZWV0SWQoMSkKIHsKQEAgLTYy
OSw3ICs2MzAsNyBAQCBJbnNwZWN0b3JDU1NBZ2VudDo6fkluc3BlY3RvckNTU0FnZW50KCkKICAg
ICByZXNldCgpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVj
dG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNTU0Zyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRl
bmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yQ1NTQmFja2Vu
ZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCmluZGV4IDlkM2I0MGQuLmVhMGVi
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCkBA
IC0yNywxMiArMjcsMTIgQEAKIAogI2luY2x1ZGUgIkNTU1NlbGVjdG9yLmgiCiAjaW5jbHVkZSAi
Q29udGVudFNlY3VyaXR5UG9saWN5LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50Lmgi
CisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yRE9NQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JTdHlsZVNoZWV0LmgiCi0jaW5j
bHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNl
LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlDb250ZXh0LmgiCi0KKyNpbmNsdWRlIDxpbnNwZWN0b3Iv
SW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC02NCw3ICs2NCw3
IEBAIGNsYXNzIENoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrOwogI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CiAKIGNsYXNzIEluc3BlY3RvckNTU0FnZW50Ci0gICAgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFn
ZW50CisgICAgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlCiAgICAgLCBwdWJsaWMgSW5zcGVj
dG9yRE9NQWdlbnQ6OkRPTUxpc3RlbmVyCiAgICAgLCBwdWJsaWMgSW5zcGVjdG9yQ1NTQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyCiAgICAgLCBwdWJsaWMgSW5zcGVjdG9yU3R5bGVTaGVldDo6TGlz
dGVuZXIgewpAQCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAgfkluc3BlY3RvckNTU0FnZW50
KCk7CiAKICAgICBib29sIGZvcmNlUHNldWRvU3RhdGUoRWxlbWVudCosIENTU1NlbGVjdG9yOjpQ
c2V1ZG9UeXBlKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY2Fy
ZEFnZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwpAQCAtMTE5
LDEzICsxMTksMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRTdHlsZVNoZWV0KEVy
cm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIFJlZlB0cjxUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NTdHlsZVNoZWV0Qm9keT4mIHJlc3VsdCk7CiAgICAgdmlydHVhbCB2b2lkIGdl
dFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQs
IFN0cmluZyogcmVzdWx0KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U3R5bGVTaGVldFRleHQoRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgY29uc3QgU3RyaW5nJiB0ZXh0
KTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U3R5bGVUZXh0KEVycm9yU3RyaW5nKiwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4mIHN0eWxlSWQsIGNvbnN0IFN0cmluZyYgdGV4dCwgUmVmUHRy
PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0UHJvcGVydHlUZXh0KEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4mIHN0eWxlSWQsIGludCBwcm9wZXJ0eUluZGV4LCBjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wg
b3ZlcndyaXRlLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpOwot
ICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVQcm9wZXJ0eShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+JiBzdHlsZUlkLCBpbnQgcHJvcGVydHlJbmRleCwgYm9vbCBkaXNh
YmxlLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRSdWxlU2VsZWN0b3IoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiYgcnVsZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCk7CisgICAgdmlydHVhbCB2b2lkIHNldFN0
eWxlVGV4dChFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdD4mIHN0eWxlSWQsIGNvbnN0IFN0cmluZyYgdGV4dCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpD
U1M6OkNTU1N0eWxlPiYgcmVzdWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJvcGVydHlUZXh0
KEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYg
c3R5bGVJZCwgaW50IHByb3BlcnR5SW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBvdmVy
d3JpdGUsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4mIHJlc3VsdCk7CisgICAg
dmlydHVhbCB2b2lkIHRvZ2dsZVByb3BlcnR5KEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgc3R5bGVJZCwgaW50IHByb3BlcnR5SW5kZXgsIGJv
b2wgZGlzYWJsZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nKiwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgcnVsZUlkLCBjb25zdCBTdHJpbmcmIHNl
bGVjdG9yLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCk7CiAgICAg
dmlydHVhbCB2b2lkIGFkZFJ1bGUoRXJyb3JTdHJpbmcqLCBpbnQgY29udGV4dE5vZGVJZCwgY29u
c3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+JiBy
ZXN1bHQpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKEVycm9y
U3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQ
cm9wZXJ0eUluZm8+PiYgcmVzdWx0KTsKLSAgICB2aXJ0dWFsIHZvaWQgZm9yY2VQc2V1ZG9TdGF0
ZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4m
IGZvcmNlZFBzZXVkb0NsYXNzZXMpOworICAgIHZpcnR1YWwgdm9pZCBmb3JjZVBzZXVkb1N0YXRl
KEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVj
dG9yQXJyYXk+JiBmb3JjZWRQc2V1ZG9DbGFzc2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0TmFt
ZWRGbG93Q29sbGVjdGlvbihFcnJvclN0cmluZyosIGludCBkb2N1bWVudE5vZGVJZCwgUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+PiYgcmVzdWx0
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBzdGFydFNlbGVjdG9yUHJvZmlsZXIoRXJyb3JTdHJpbmcq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQu
Y3BwCmluZGV4IGY5ZjcyZjIuLjAzNjAzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcApAQCAtNDcsOSArNDcsOSBAQAogI2luY2x1
ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiUGFnZS5o
IgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGVyLmgi
CiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRPYmpl
Y3QuaD4KIAogdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkFycmF5OwogdXNpbmcgV2ViQ29y
ZTo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VJZDsKQEAgLTU5LDEwICs1OSwxMiBAQCB1
c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFjZUxvZzsKIHVzaW5nIFdlYkNv
cmU6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQ7CiB1c2luZyBXZWJDb3JlOjpUeXBl
QnVpbGRlcjo6TmV0d29yazo6RnJhbWVJZDsKIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6SW5zcGVjdG9y
Q2FudmFzQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5z
cGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgi
Q2FudmFzIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2Uo
QVNDSUlMaXRlcmFsKCJDYW52YXMiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fcGFn
ZUFnZW50KHBhZ2VBZ2VudCkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVk
U2NyaXB0TWFuYWdlcikKICAgICAsIG1fZW5hYmxlZChmYWxzZSkKQEAgLTczLDcgKzc1LDcgQEAg
SW5zcGVjdG9yQ2FudmFzQWdlbnQ6On5JbnNwZWN0b3JDYW52YXNBZ2VudCgpCiB7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNr
ZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91
bmlxdWU8SW5zcGVjdG9yQ2FudmFzRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwp
OwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JDYW52YXNCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKQEAgLTE3OCwyNyArMTgwLDI3
IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmdldFJlc291cmNlU3RhdGUoRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBjb25zdCBUcmFjCiAgICAgICAgIG1vZHVsZS5yZXNvdXJjZVN0YXRl
KGVycm9yU3RyaW5nLCB0cmFjZUxvZ0lkLCByZXNvdXJjZUlkLCAmcmVzdWx0KTsKIH0KIAotU2Ny
aXB0T2JqZWN0IEluc3BlY3RvckNhbnZhc0FnZW50Ojp3cmFwQ2FudmFzMkRSZW5kZXJpbmdDb250
ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKGNvbnN0IFNjcmlwdE9iamVjdCYgY29udGV4dCkKK0RlcHJl
Y2F0ZWQ6OlNjcmlwdE9iamVjdCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6d3JhcENhbnZhczJEUmVu
ZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlvbihjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRP
YmplY3QmIGNvbnRleHQpCiB7CiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgSW5qZWN0ZWRT
Y3JpcHRDYW52YXNNb2R1bGUgbW9kdWxlID0gaW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUoJmVy
cm9yLCBjb250ZXh0KTsKICAgICBpZiAobW9kdWxlLmhhc05vVmFsdWUoKSkKLSAgICAgICAgcmV0
dXJuIFNjcmlwdE9iamVjdCgpOworICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0T2Jq
ZWN0KCk7CiAgICAgcmV0dXJuIG5vdGlmeVJlbmRlcmluZ0NvbnRleHRXYXNXcmFwcGVkKG1vZHVs
ZS53cmFwQ2FudmFzMkRDb250ZXh0KGNvbnRleHQpKTsKIH0KIAogI2lmIEVOQUJMRShXRUJHTCkK
LVNjcmlwdE9iamVjdCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6d3JhcFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEZvckluc3RydW1lbnRhdGlvbihjb25zdCBTY3JpcHRPYmplY3QmIGdsQ29udGV4dCkKK0Rl
cHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6d3JhcFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlvbihjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRP
YmplY3QmIGdsQ29udGV4dCkKIHsKICAgICBFcnJvclN0cmluZyBlcnJvcjsKICAgICBJbmplY3Rl
ZFNjcmlwdENhbnZhc01vZHVsZSBtb2R1bGUgPSBpbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZSgm
ZXJyb3IsIGdsQ29udGV4dCk7CiAgICAgaWYgKG1vZHVsZS5oYXNOb1ZhbHVlKCkpCi0gICAgICAg
IHJldHVybiBTY3JpcHRPYmplY3QoKTsKKyAgICAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlw
dE9iamVjdCgpOwogICAgIHJldHVybiBub3RpZnlSZW5kZXJpbmdDb250ZXh0V2FzV3JhcHBlZCht
b2R1bGUud3JhcFdlYkdMQ29udGV4dChnbENvbnRleHQpKTsKIH0KICNlbmRpZgogCi1TY3JpcHRP
YmplY3QgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6Om5vdGlmeVJlbmRlcmluZ0NvbnRleHRXYXNXcmFw
cGVkKGNvbnN0IFNjcmlwdE9iamVjdCYgd3JhcHBlZENvbnRleHQpCitEZXByZWNhdGVkOjpTY3Jp
cHRPYmplY3QgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6Om5vdGlmeVJlbmRlcmluZ0NvbnRleHRXYXNX
cmFwcGVkKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgd3JhcHBlZENvbnRleHQpCiB7
CiAgICAgQVNTRVJUKG1fZnJvbnRlbmREaXNwYXRjaGVyKTsKICAgICBKU0M6OkV4ZWNTdGF0ZSog
c2NyaXB0U3RhdGUgPSB3cmFwcGVkQ29udGV4dC5zY3JpcHRTdGF0ZSgpOwpAQCAtMjI0LDEzICsy
MjYsMTMgQEAgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6
OmluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlKEVycm8KICAgICByZXR1cm4gbW9kdWxlOwogfQog
Ci1JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZSBJbnNwZWN0b3JDYW52YXNBZ2VudDo6aW5qZWN0
ZWRTY3JpcHRDYW52YXNNb2R1bGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTY3Jp
cHRPYmplY3QmIHNjcmlwdE9iamVjdCkKK0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlIEluc3Bl
Y3RvckNhbnZhc0FnZW50OjppbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZShFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgc2NyaXB0T2JqZWN0
KQogewogICAgIGlmICghY2hlY2tJc0VuYWJsZWQoZXJyb3JTdHJpbmcpKQogICAgICAgICByZXR1
cm4gSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUoKTsKICAgICBpZiAoc2NyaXB0T2JqZWN0Lmhh
c05vVmFsdWUoKSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgKmVy
cm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yOiBvcmlnaW5hbCBTY3JpcHRPYmplY3QgaGFzIG5v
IHZhbHVlIjsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yOiBvcmlnaW5h
bCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgaGFzIG5vIHZhbHVlIjsKICAgICAgICAgcmV0dXJu
IEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlKCk7CiAgICAgfQogICAgIHJldHVybiBpbmplY3Rl
ZFNjcmlwdENhbnZhc01vZHVsZShlcnJvclN0cmluZywgc2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRl
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZh
c0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQu
aAppbmRleCA0OWQwM2U4Li40ZjE4N2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaApAQCAtMzMsMTUgKzMzLDIwIEBACiAKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVk
ZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJv
bnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgorI2luY2x1ZGUgIklu
c3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25h
bWVzcGFjZSBEZXByZWNhdGVkIHsKK2NsYXNzIFNjcmlwdE9iamVjdDsKK30KKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZTsKQEAgLTQ5LDExICs1NCwxMCBAQCBjbGFzcyBJbmpl
Y3RlZFNjcmlwdENhbnZhc01vZHVsZTsKIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKIGNs
YXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7Ci1jbGFz
cyBTY3JpcHRPYmplY3Q7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJ
bnNwZWN0b3JDYW52YXNBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJ
bnNwZWN0b3JDYW52YXNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9y
Q2FudmFzQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9y
Q2FudmFzQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c093blB0cjxJbnNwZWN0b3JDYW52YXNBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICB7CkBAIC02MSw3
ICs2NSw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgfkluc3BlY3RvckNhbnZhc0FnZW50KCk7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Oklu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFu
ZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIHZvaWQgZnJhbWVOYXZpZ2F0ZWQoRnJhbWUqKTsK
QEAgLTY5LDkgKzczLDkgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQmVnaW5GcmFtZSgpOwogCiAg
ICAgLy8gQ2FsbGVkIGZyb20gSW5zcGVjdG9yQ2FudmFzSW5zdHJ1bWVudGF0aW9uLgotICAgIFNj
cmlwdE9iamVjdCB3cmFwQ2FudmFzMkRSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9u
KGNvbnN0IFNjcmlwdE9iamVjdCYpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCB3cmFw
Q2FudmFzMkRSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKGNvbnN0IERlcHJlY2F0
ZWQ6OlNjcmlwdE9iamVjdCYpOwogI2lmIEVOQUJMRShXRUJHTCkKLSAgICBTY3JpcHRPYmplY3Qg
d3JhcFdlYkdMUmVuZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlvbihjb25zdCBTY3JpcHRP
YmplY3QmKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3Qgd3JhcFdlYkdMUmVuZGVyaW5n
Q29udGV4dEZvckluc3RydW1lbnRhdGlvbihjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3Qm
KTsKICNlbmRpZgogCiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZyb250LWVuZC4KQEAgLTkxLDEy
ICs5NSwxMiBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvckNhbnZhc0FnZW50KEluc3RydW1lbnRp
bmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdlQWdlbnQqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsK
IAogICAgIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlIGluamVjdGVkU2NyaXB0Q2FudmFzTW9k
dWxlKEVycm9yU3RyaW5nKiwgSlNDOjpFeGVjU3RhdGUqKTsKLSAgICBJbmplY3RlZFNjcmlwdENh
bnZhc01vZHVsZSBpbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZShFcnJvclN0cmluZyosIGNvbnN0
IFNjcmlwdE9iamVjdCYpOworICAgIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlIGluamVjdGVk
U2NyaXB0Q2FudmFzTW9kdWxlKEVycm9yU3RyaW5nKiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0
T2JqZWN0Jik7CiAgICAgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUgaW5qZWN0ZWRTY3JpcHRD
YW52YXNNb2R1bGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgZmlu
ZEZyYW1lc1dpdGhVbmluc3RydW1lbnRlZENhbnZhc2VzKCk7CiAgICAgYm9vbCBjaGVja0lzRW5h
YmxlZChFcnJvclN0cmluZyopIGNvbnN0OwotICAgIFNjcmlwdE9iamVjdCBub3RpZnlSZW5kZXJp
bmdDb250ZXh0V2FzV3JhcHBlZChjb25zdCBTY3JpcHRPYmplY3QmKTsKKyAgICBEZXByZWNhdGVk
OjpTY3JpcHRPYmplY3Qgbm90aWZ5UmVuZGVyaW5nQ29udGV4dFdhc1dyYXBwZWQoY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0T2JqZWN0Jik7CiAKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFn
ZUFnZW50OwogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFz
SW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2Fu
dmFzSW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggZDNmZGE2MC4uMDE1MGM5MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0luc3RydW1lbnRhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNJbnN0cnVtZW50
YXRpb24uaApAQCAtMzQsMTEgKzM0LDExIEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2FudmFzQWdl
bnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJJ
bnN0cnVtZW50aW5nQWdlbnRzLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisjaW5jbHVk
ZSA8YmluZGluZ3MvU2NyaXB0T2JqZWN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2Ny
aXB0T2JqZWN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d3JhcENhbnZhczJEUmVuZGVyaW5n
Q29udGV4dEZvckluc3RydW1lbnRhdGlvbihEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFNjcmlw
dE9iamVjdCYgY29udGV4dCkKK0RlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndyYXBDYW52YXMyRFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRp
b24oRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmIGNv
bnRleHQpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVu
dChkb2N1bWVudCkpIHsKQEAgLTQ5LDExICs0OSwxMSBAQCBTY3JpcHRPYmplY3QgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3cmFwQ2FudmFzMkRSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVu
dAogICAgIFVOVVNFRF9QQVJBTShkb2N1bWVudCk7CiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQp
OwogI2VuZGlmCi0gICAgcmV0dXJuIFNjcmlwdE9iamVjdCgpOworICAgIHJldHVybiBEZXByZWNh
dGVkOjpTY3JpcHRPYmplY3QoKTsKIH0KIAogI2lmIEVOQUJMRShXRUJHTCkKLVNjcmlwdE9iamVj
dCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndyYXBXZWJHTFJlbmRlcmluZ0NvbnRleHRGb3JJ
bnN0cnVtZW50YXRpb24oRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTY3JpcHRPYmplY3QmIGds
Q29udGV4dCkKK0RlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndyYXBXZWJHTFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24oRG9jdW1lbnQq
IGRvY3VtZW50LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmIGdsQ29udGV4dCkKIHsK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50
KSkgewpAQCAtNjQsNyArNjQsNyBAQCBTY3JpcHRPYmplY3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aQogICAgIFVOVVNF
RF9QQVJBTShkb2N1bWVudCk7CiAgICAgVU5VU0VEX1BBUkFNKGdsQ29udGV4dCk7CiAjZW5kaWYK
LSAgICByZXR1cm4gU2NyaXB0T2JqZWN0KCk7CisgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlw
dE9iamVjdCgpOwogfQogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCBjNjcyMTQyLi5jMzNlNmFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtMzgs
NyArMzgsOSBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVl
LmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KKwordXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggNDRlN2VhMTZhLi5kZjM4OWQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oCkBAIC0yNyw2ICsyNyw3IEBA
CiAjaWZuZGVmIEluc3BlY3RvckNsaWVudF9oCiAjZGVmaW5lIEluc3BlY3RvckNsaWVudF9oCiAK
KyNpbmNsdWRlICJJbnNwZWN0b3JGb3J3YXJkaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBA
IC0zNCw3ICszNSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEluc3BlY3RvckNv
bnRyb2xsZXI7Ci1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CiBjbGFzcyBGcmFtZTsK
IGNsYXNzIFBhZ2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnNvbGVBZ2VudC5jcHAKaW5kZXggZGFhOWM1Yi4uZGUxNmY0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKQEAgLTQzLDE0
ICs0MywxNiBAQAogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlNjcmlw
dENhbGxTdGFja0ZhY3RvcnkuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCi0jaW5j
bHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZXIuaCIKKyNpbmNs
dWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3QuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heGltdW1Db25zb2xlTWVzc2FnZXMg
PSAxMDAwOwpAQCAtNTksNyArNjEsNyBAQCBzdGF0aWMgY29uc3QgaW50IGV4cGlyZUNvbnNvbGVN
ZXNzYWdlc1N0ZXAgPSAxMDA7CiBpbnQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpzX2VuYWJsZWRB
Z2VudENvdW50ID0gMDsKIAogSW5zcGVjdG9yQ29uc29sZUFnZW50OjpJbnNwZWN0b3JDb25zb2xl
QWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgOiBJbnNwZWN0b3JCYXNl
QWdlbnQoQVNDSUlMaXRlcmFsKCJDb25zb2xlIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAg
OiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJDb25zb2xlIiksIGluc3RydW1lbnRp
bmdBZ2VudHMpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1h
bmFnZXIpCiAgICAgLCBtX3ByZXZpb3VzTWVzc2FnZSgwKQogICAgICwgbV9leHBpcmVkQ29uc29s
ZU1lc3NhZ2VDb3VudCgwKQpAQCAtMTIyLDcgKzEyNCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29s
ZUFnZW50OjpyZXNldCgpCiAgICAgbV9jb3VudHMuY2xlYXIoKTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JDb25zb2xlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
IGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCog
ZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3Bh
dGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3RvckNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAg
bV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckNvbnNvbGVCYWNrZW5kRGlzcGF0Y2hlcjo6
Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKQEAgLTMyMCw3ICszMjIsNyBAQCB2b2lk
IEluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRkQ29uc29sZU1lc3NhZ2UoUGFzc093blB0cjxDb25z
b2xlTWVzc2FnZT4gY29uc29sZQogY2xhc3MgSW5zcGVjdGFibGVIZWFwT2JqZWN0IDogcHVibGlj
IEluamVjdGVkU2NyaXB0SG9zdDo6SW5zcGVjdGFibGVPYmplY3QgewogcHVibGljOgogICAgIGV4
cGxpY2l0IEluc3BlY3RhYmxlSGVhcE9iamVjdChpbnQgaGVhcE9iamVjdElkKSA6IG1faGVhcE9i
amVjdElkKGhlYXBPYmplY3RJZCkgeyB9Ci0gICAgdmlydHVhbCBTY3JpcHRWYWx1ZSBnZXQoSlND
OjpFeGVjU3RhdGUqKQorICAgIHZpcnR1YWwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZ2V0KEpT
Qzo6RXhlY1N0YXRlKikKICAgICB7CiAgICAgICAgIHJldHVybiBTY3JpcHRQcm9maWxlcjo6b2Jq
ZWN0QnlIZWFwT2JqZWN0SWQobV9oZWFwT2JqZWN0SWQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaAppbmRleCBjMGYwYWRjLi45
OTQ1NWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
c29sZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNv
bGVBZ2VudC5oCkBAIC0yOSw4ICsyOSw5IEBACiAKICNpbmNsdWRlICJDb25zb2xlQVBJVHlwZXMu
aCIKICNpbmNsdWRlICJDb25zb2xlVHlwZXMuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdl
bnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JGcm9udGVuZC5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5o
IgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNTIsNyArNTMsNyBAQCBjbGFzcyBTY3JpcHRQcm9m
aWxlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yQ29u
c29sZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3RvckNv
bnNvbGVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yQ29uc29sZUFn
ZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3RvckNvbnNvbGVC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3Bl
Y3RvckNvbnNvbGVBZ2VudCk7CiBwdWJsaWM6CiAgICAgSW5zcGVjdG9yQ29uc29sZUFnZW50KElu
c3RydW1lbnRpbmdBZ2VudHMqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKQEAgLTY0LDcgKzY1
LDcgQEAgcHVibGljOgogICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxl
ZDsgfQogICAgIHZvaWQgcmVzZXQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVj
dG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgdm9p
ZCBhZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdl
TGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgSlNDOjpFeGVjU3RhdGUqLCBQYXNzUmVmUHRy
PFNjcmlwdEFyZ3VtZW50cz4sIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIgPSAwKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApp
bmRleCBlMjNmZTA3Li40Mzc3NTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC00Miw3ICs0Miw2IEBACiAjaW5jbHVkZSAiSW5z
cGVjdG9yQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKLSNpbmNsdWRlICJJ
bnNwZWN0b3JCYXNlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDU1NBZ2VudC5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckNhbnZhc0FnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50
LmgiCkBAIC03MSw4ICs3MCwxMCBAQAogI2luY2x1ZGUgIlBhZ2VEZWJ1Z2dlckFnZW50LmgiCiAj
aW5jbHVkZSAiUGFnZVJ1bnRpbWVBZ2VudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRl
ICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgPGluc3Bl
Y3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgorCit1c2luZyBuYW1lc3BhY2UgSW5z
cGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IGE2ZTJkN2QuLmY2ZTZkODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtMzMs
MTMgKzMzLDE4IEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVj
dG9yQWdlbnRSZWdpc3RyeS5oIgotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2lu
Y2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKK2NsYXNzIEluc3BlY3Rvck9iamVjdDsKK2NsYXNzIEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbDsKK2NsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOworfQorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKQEAgLTQ4LDE1ICs1Mywx
MiBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7
CiBjbGFzcyBJbnNwZWN0b3JBZ2VudDsKIGNsYXNzIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudDsKLWNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwogY2xhc3MgSW5zcGVjdG9y
Q2xpZW50OwogY2xhc3MgSW5zcGVjdG9yRE9NQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50OwogY2xhc3MgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDsKLWNsYXNzIEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbDsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2xpZW50OwogY2xhc3Mg
SW5zcGVjdG9yTWVtb3J5QWdlbnQ7Ci1jbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnNw
ZWN0b3JPdmVybGF5OwogY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50OwogY2xhc3MgSW5zcGVjdG9y
UHJvZmlsZXJBZ2VudDsKQEAgLTk1LDcgKzk3LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzTG9j
YWxGcm9udGVuZCgpIGNvbnN0OwogICAgIGJvb2wgaGFzUmVtb3RlRnJvbnRlbmQoKSBjb25zdDsK
IAotICAgIHZvaWQgY29ubmVjdEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCopOwor
ICAgIHZvaWQgY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKik7CiAgICAgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoKTsKICAgICB2b2lkIHNldFByb2Nl
c3NJZChsb25nKTsKIApAQCAtMTExLDcgKzExMyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0
SW5kaWNhdGluZyhib29sKTsKIAotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWls
ZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZSgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlKCkgY29u
c3Q7CiAKICAgICBib29sIGlzVW5kZXJUZXN0KCk7CiAgICAgdm9pZCBldmFsdWF0ZUZvclRlc3RJ
bkZyb250ZW5kKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCk7CkBAIC0xNTQsMTIg
KzE1NiwxMiBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvclByb2ZpbGVyQWdlbnQqIG1fcHJvZmls
ZXJBZ2VudDsKICNlbmRpZgogCi0gICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
PiBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwog
ICAgIE93blB0cjxJbnNwZWN0b3JGcm9udGVuZENsaWVudD4gbV9pbnNwZWN0b3JGcm9udGVuZENs
aWVudDsKLSAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG1faW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsOworICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBtX2luc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbDsKICAgICBQYWdlKiBtX3BhZ2U7CiAgICAgSW5zcGVjdG9yQ2xp
ZW50KiBtX2luc3BlY3RvckNsaWVudDsKLSAgICBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5IG1fYWdl
bnRzOworICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnRSZWdpc3RyeSBtX2FnZW50czsKICAg
ICBib29sIG1faXNVbmRlclRlc3Q7CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDM3
MDM0MzguLjBjZGZiZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmNwcApAQCAtMTAxLDYgKzEwMSw4IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCit1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7CkBAIC0yMTAsNyArMjEyLDcgQEAgU3RyaW5nIEluc3BlY3RvckRPTUFnZW50Ojp0
b0Vycm9yU3RyaW5nKGNvbnN0IEV4Y2VwdGlvbkNvZGUmIGVjKQogfQogCiBJbnNwZWN0b3JET01B
Z2VudDo6SW5zcGVjdG9yRE9NQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIEluamVjdGVkU2NyaXB0TWFu
YWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnNwZWN0b3JPdmVybGF5KiBvdmVybGF5LCBJ
bnNwZWN0b3JDbGllbnQqIGNsaWVudCkKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxp
dGVyYWwoIkRPTSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRC
YXNlKEFTQ0lJTGl0ZXJhbCgiRE9NIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX3Bh
Z2VBZ2VudChwYWdlQWdlbnQpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihpbmplY3Rl
ZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBtX292ZXJsYXkob3ZlcmxheSkKQEAgLTIzMCw3ICsyMzIs
NyBAQCBJbnNwZWN0b3JET01BZ2VudDo6fkluc3BlY3RvckRPTUFnZW50KCkKICAgICBBU1NFUlQo
IW1fc2VhcmNoaW5nRm9yTm9kZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5k
Q2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQor
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5k
RGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NRnJvbnRlbmREaXNwYXRj
aGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0
b3JET01CYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsK
QEAgLTE0MjMsNyArMTQyNSw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6RXZlbnRM
aXN0ZW5lcj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRXZlCiAgICAgaWYgKG9i
amVjdEdyb3VwSWQgJiYgaGFuZGxlciAmJiBzdGF0ZSkgewogICAgICAgICBJbmplY3RlZFNjcmlw
dCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlw
dEZvcihzdGF0ZSk7CiAgICAgICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQot
ICAgICAgICAgICAgdmFsdWUtPnNldEhhbmRsZXIoaW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChT
Y3JpcHRWYWx1ZShzdGF0ZS0+dm0oKSwgaGFuZGxlciksICpvYmplY3RHcm91cElkKSk7CisgICAg
ICAgICAgICB2YWx1ZS0+c2V0SGFuZGxlcihpbmplY3RlZFNjcmlwdC53cmFwT2JqZWN0KERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlKHN0YXRlLT52bSgpLCBoYW5kbGVyKSwgKm9iamVjdEdyb3VwSWQp
KTsKICAgICB9CiAgICAgaWYgKCFzY3JpcHRJRC5pc051bGwoKSkgewogICAgICAgICBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gbG9jYXRpb24gPSBUeXBlQnVpbGRlcjo6
RGVidWdnZXI6OkxvY2F0aW9uOjpjcmVhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCBhNWQ2MGJjLi4wZWYxNmVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtMzMsMTMgKzMzLDEzIEBA
CiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgog
I2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgotI2luY2x1ZGUgIkluc3BlY3RvckJh
c2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yT3ZlcmxheS5o
IgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFn
ZW50QmFzZS5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIK
LQorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYv
RGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CkBAIC00OSw3ICs0OSwxMiBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIAorbmFtZXNwYWNlIERlcHJlY2F0ZWQgeworY2xh
c3MgU2NyaXB0VmFsdWU7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKwogY2xhc3MgQ29udGFp
bmVyTm9kZTsKIGNsYXNzIENoYXJhY3RlckRhdGE7CiBjbGFzcyBET01FZGl0b3I7CkBAIC02Niw3
ICs3MSw2IEBAIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBOYW1lTm9kZU1hcDsK
IGNsYXNzIE5vZGU7CiBjbGFzcyBSZXZhbGlkYXRlU3R5bGVBdHRyaWJ1dGVUYXNrOwotY2xhc3Mg
U2NyaXB0VmFsdWU7CiBjbGFzcyBTaGFkb3dSb290OwogCiBzdHJ1Y3QgSGlnaGxpZ2h0Q29uZmln
OwpAQCAtODksNyArOTMsNyBAQCBzdHJ1Y3QgRXZlbnRMaXN0ZW5lckluZm8gewogICAgIGNvbnN0
IEV2ZW50TGlzdGVuZXJWZWN0b3IgZXZlbnRMaXN0ZW5lclZlY3RvcjsKIH07CiAKLWNsYXNzIElu
c3BlY3RvckRPTUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3Bl
Y3RvckRPTUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JET01BZ2Vu
dCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JET01CYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckRP
TUFnZW50KTsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgRE9NTGlzdGVuZXIgewpAQCAtMTEwLDcgKzEx
NCw3IEBAIHB1YmxpYzoKIAogICAgIH5JbnNwZWN0b3JET01BZ2VudCgpOwogCi0gICAgdmlydHVh
bCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkg
T1ZFUlJJREU7CiAKICAgICBWZWN0b3I8RG9jdW1lbnQqPiBkb2N1bWVudHMoKTsKQEAgLTEzMCwy
OCArMTM0LDI4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0T3V0ZXJIVE1MKEVycm9y
U3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBvdXRlckhUTUwpOwogICAgIHZpcnR1
YWwgdm9pZCBzZXROb2RlVmFsdWUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJp
bmcmIHZhbHVlKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKEVy
cm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgV1RGOjpTdHJpbmcqIG9iamVjdEdyb3VwLCBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI+
PiYgbGlzdGVuZXJzQXJyYXkpOwotICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtU2VhcmNoKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiB3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5LCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+KiBub2RlSWRzLCBTdHJpbmcqIHNlYXJjaElkLCBpbnQqIHJlc3Vs
dENvdW50KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVNlYXJjaChFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyYgd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yQXJyYXk+KiBub2RlSWRzLCBTdHJpbmcqIHNlYXJjaElkLCBpbnQqIHJlc3Vs
dENvdW50KTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0U2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYgc2VhcmNoSWQsIGludCBmcm9tSW5kZXgsIGludCB0b0luZGV4LCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PGludD4+Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpc2NhcmRT
ZWFyY2hSZXN1bHRzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCk7CiAgICAg
dmlydHVhbCB2b2lkIHJlc29sdmVOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3Qg
U3RyaW5nKiBvYmplY3RHcm91cCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q+JiByZXN1bHQpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRBdHRyaWJ1dGVzKEVycm9yU3Ry
aW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiYgcmVz
dWx0KTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0SW5zcGVjdE1vZGVFbmFibGVkKEVycm9yU3RyaW5n
KiwgYm9vbCBlbmFibGVkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogaGlnaGxpZ2h0
Q29uZmlnKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SW5zcGVjdE1vZGVFbmFibGVkKEVycm9yU3Ry
aW5nKiwgYm9vbCBlbmFibGVkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q+KiBoaWdobGlnaHRDb25maWcpOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Tm9kZShFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGludCogbm9kZUlkKTsKICAgICB2aXJ0
dWFsIHZvaWQgcHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKEVycm9yU3RyaW5nKiwgY29uc3QgU3Ry
aW5nJiBwYXRoLCBpbnQqIG5vZGVJZCk7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hOb2RlQnlCYWNr
ZW5kSWRUb0Zyb250ZW5kKEVycm9yU3RyaW5nKiwgQmFja2VuZE5vZGVJZCwgaW50KiBub2RlSWQp
OwogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlQmFja2VuZE5vZGVJZHMoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIG5vZGVHcm91cCk7CiAgICAgdmlydHVhbCB2b2lkIGhpZGVIaWdobGlnaHQo
RXJyb3JTdHJpbmcqKTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0UmVjdChFcnJvclN0cmlu
ZyosIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvdXRs
aW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcyk7Ci0gICAgdmlydHVhbCB2
b2lkIGhpZ2hsaWdodFF1YWQoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJy
YXk+JiBxdWFkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VD
b29yZGluYXRlcyk7Ci0gICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodE5vZGUoRXJyb3JTdHJpbmcq
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgaGlnaGxpZ2h0Q29uZmlnLCBjb25zdCBp
bnQqIG5vZGVJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RJZCk7Ci0gICAgdmlydHVhbCB2b2lkIGhp
Z2hsaWdodEZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+KiBvdXRsaW5lQ29sb3IpOworICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHRSZWN0KEVycm9y
U3RyaW5nKiwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIGNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VD
b29yZGluYXRlcyk7CisgICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodFF1YWQoRXJyb3JTdHJpbmcq
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mIHF1YWQsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIGNvbG9yLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBh
Z2VDb29yZGluYXRlcyk7CisgICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodE5vZGUoRXJyb3JTdHJp
bmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBoaWdobGlnaHRD
b25maWcsIGNvbnN0IGludCogbm9kZUlkLCBjb25zdCBTdHJpbmcqIG9iamVjdElkKTsKKyAgICB2
aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0RnJhbWUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZy
YW1lSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIGNvbG9yLCBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29sb3IpOwog
CiAgICAgdmlydHVhbCB2b2lkIG1vdmVUbyhFcnJvclN0cmluZyosIGludCBub2RlSWQsIGludCB0
YXJnZXROb2RlSWQsIGNvbnN0IGludCogYW5jaG9yTm9kZUlkLCBpbnQqIG5ld05vZGVJZCk7CiAg
ICAgdmlydHVhbCB2b2lkIHVuZG8oRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVk
byhFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBtYXJrVW5kb2FibGVTdGF0ZShFcnJv
clN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBmb2N1cyhFcnJvclN0cmluZyosIGludCBub2Rl
SWQpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRGaWxlSW5wdXRGaWxlcyhFcnJvclN0cmluZyosIGlu
dCBub2RlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGZpbGVzKTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0RmlsZUlucHV0RmlsZXMoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mIGZpbGVzKTsKIAogICAgIHZvaWQg
Z2V0RXZlbnRMaXN0ZW5lcnMoTm9kZSosIFZlY3RvcjxFdmVudExpc3RlbmVySW5mbz4mIGxpc3Rl
bmVyc0FycmF5LCBib29sIGluY2x1ZGVBbmNlc3RvcnMpOwogCkBAIC0yMTAsOCArMjE0LDggQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JET01BZ2VudChJbnN0cnVtZW50aW5nQWdl
bnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSW5zcGVj
dG9yT3ZlcmxheSosIEluc3BlY3RvckNsaWVudCopOwogCi0gICAgdm9pZCBzZXRTZWFyY2hpbmdG
b3JOb2RlKEVycm9yU3RyaW5nKiwgYm9vbCBlbmFibGVkLCBJbnNwZWN0b3JPYmplY3QqIGhpZ2hs
aWdodENvbmZpZyk7Ci0gICAgUGFzc093blB0cjxIaWdobGlnaHRDb25maWc+IGhpZ2hsaWdodENv
bmZpZ0Zyb21JbnNwZWN0b3JPYmplY3QoRXJyb3JTdHJpbmcqLCBJbnNwZWN0b3JPYmplY3QqIGhp
Z2hsaWdodEluc3BlY3Rvck9iamVjdCk7CisgICAgdm9pZCBzZXRTZWFyY2hpbmdGb3JOb2RlKEVy
cm9yU3RyaW5nKiwgYm9vbCBlbmFibGVkLCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogaGln
aGxpZ2h0Q29uZmlnKTsKKyAgICBQYXNzT3duUHRyPEhpZ2hsaWdodENvbmZpZz4gaGlnaGxpZ2h0
Q29uZmlnRnJvbUluc3BlY3Rvck9iamVjdChFcnJvclN0cmluZyosIEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0KiBoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpOwogCiAgICAgLy8gTm9kZS1yZWxh
dGVkIG1ldGhvZHMuCiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxOb2RlPiwgaW50PiBOb2Rl
VG9JZE1hcDsKQEAgLTIyNiw3ICsyMzAsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBoYXNCcmVh
a3BvaW50KE5vZGUqLCBpbnQgdHlwZSk7CiAgICAgdm9pZCB1cGRhdGVTdWJ0cmVlQnJlYWtwb2lu
dHMoTm9kZSogcm9vdCwgdWludDMyX3Qgcm9vdE1hc2ssIGJvb2wgdmFsdWUpOwotICAgIHZvaWQg
ZGVzY3JpcHRpb25Gb3JET01FdmVudChOb2RlKiB0YXJnZXQsIGludCBicmVha3BvaW50VHlwZSwg
Ym9vbCBpbnNlcnRpb24sIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkZXNjcmlwdGlvbik7
CisgICAgdm9pZCBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KE5vZGUqIHRhcmdldCwgaW50IGJyZWFr
cG9pbnRUeXBlLCBib29sIGluc2VydGlvbiwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4gZGVzY3JpcHRpb24pOwogCiAgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9N
OjpOb2RlPiBidWlsZE9iamVjdEZvck5vZGUoTm9kZSosIGludCBkZXB0aCwgTm9kZVRvSWRNYXAq
KTsKICAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBidWlsZEFycmF5
Rm9yRWxlbWVudEF0dHJpYnV0ZXMoRWxlbWVudCopOwpAQCAtMjM3LDcgKzI0MSw3IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGRpc2NhcmRCaW5kaW5ncygpOwogCi0gICAgdm9pZCBpbm5lckhpZ2hs
aWdodFF1YWQoUGFzc093blB0cjxGbG9hdFF1YWQ+LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29sb3Is
IGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcyk7CisgICAgdm9pZCBpbm5lckhpZ2hsaWdo
dFF1YWQoUGFzc093blB0cjxGbG9hdFF1YWQ+LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0Piogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0ZXMpOwogCiAg
ICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAgICBJbmplY3RlZFNjcmlwdE1h
bmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDg5ZmY2ZTku
LjIxNjBmNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTQwLDggKzQwLDggQEAKICNpbmNsdWRlICJJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JW
YWx1ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCisjaW5jbHVkZSA8aW5z
cGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgewpAQCAtNjEsNiArNjEsOCBAQCBjb25zdCBpbnQgZG9tQnJlYWtwb2lu
dERlcml2ZWRUeXBlU2hpZnQgPSAxNjsKIAogfQogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NPd25QdHI8SW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudD4gSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6Y3JlYXRlKEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCwg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCwgSW5zcGVjdG9yQWdlbnQqIGlu
c3BlY3RvckFnZW50KQpAQCAtNjksNyArNzEsNyBAQCBQYXNzT3duUHRyPEluc3BlY3RvckRPTURl
YnVnZ2VyQWdlbnQ+IEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmNyZWF0ZShJbnN0cnVtZQog
fQogCiBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvckRPTUFn
ZW50KiBkb21BZ2VudCwgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCwgSW5z
cGVjdG9yQWdlbnQqKQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiRE9N
RGVidWdnZXIiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFz
ZShBU0NJSUxpdGVyYWwoIkRPTURlYnVnZ2VyIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAg
LCBtX2RvbUFnZW50KGRvbUFnZW50KQogICAgICwgbV9kZWJ1Z2dlckFnZW50KGRlYnVnZ2VyQWdl
bnQpCiAgICAgLCBtX3BhdXNlSW5OZXh0RXZlbnRMaXN0ZW5lcihmYWxzZSkKQEAgLTExMSw3ICsx
MTMsNyBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoKQogICAgIGNs
ZWFyKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNw
YXRjaGVyKQogewogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JET01EZWJ1Z2dl
ckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50LmgKaW5kZXggOTZmODhhOS4uYTNkYWFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCkBAIC0zMywyNiArMzMsMzAg
QEAKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEUoSU5TUEVDVE9S
KQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5o
IgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgSW5z
cGVjdG9yIHsKK2NsYXNzIEluc3BlY3Rvck9iamVjdDsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBFbGVtZW50OwogY2xhc3MgSW5zcGVjdG9yQWdlbnQ7CiBjbGFzcyBJbnNwZWN0
b3JET01BZ2VudDsKIGNsYXNzIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0
b3JPYmplY3Q7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgTm9kZTsKIAogdHlw
ZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6TGlzdGVuZXIsIHB1YmxpYyBJbnNwZWN0b3JET01EZWJ1Z2dlckJhY2tlbmREaXNwYXRj
aGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50IDogcHVibGljIElu
c3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okxpc3RlbmVy
LCBwdWJsaWMgSW5zcGVjdG9yRE9NRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQpOwogcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ+IGNy
ZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yRE9NQWdlbnQqLCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50KiwgSW5zcGVjdG9yQWdlbnQqKTsKQEAgLTc5LDcgKzgzLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgd2lsbFNlbmRYTUxIdHRwUmVxdWVzdChjb25zdCBTdHJpbmcmIHVybCk7CiAg
ICAgdm9pZCBwYXVzZU9uTmF0aXZlRXZlbnRJZk5lZWRlZChib29sIGlzRE9NRXZlbnQsIGNvbnN0
IFN0cmluZyYgZXZlbnROYW1lLCBib29sIHN5bmNocm9ub3VzKTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkQWdlbnQoKTsKIApAQCAtOTMsNyArOTcsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZSgpOwogICAgIHZvaWQgZGlzYWJs
ZSgpOwogCi0gICAgdm9pZCBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KE5vZGUqIHRhcmdldCwgaW50
IGJyZWFrcG9pbnRUeXBlLCBib29sIGluc2VydGlvbiwgSW5zcGVjdG9yT2JqZWN0KiBkZXNjcmlw
dGlvbik7CisgICAgdm9pZCBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KE5vZGUqIHRhcmdldCwgaW50
IGJyZWFrcG9pbnRUeXBlLCBib29sIGluc2VydGlvbiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3QqIGRlc2NyaXB0aW9uKTsKICAgICB2b2lkIHVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhOb2Rl
KiwgdWludDMyX3Qgcm9vdE1hc2ssIGJvb2wgc2V0KTsKICAgICBib29sIGhhc0JyZWFrcG9pbnQo
Tm9kZSosIGludCB0eXBlKTsKICAgICB2b2lkIGRpc2NhcmRCaW5kaW5ncygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcApp
bmRleCA2NDZkZTIzLi5hZTg2NzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcApAQCAtNDEsNyArNDEsNiBAQAogI2lu
Y2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNp
bmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlBhZ2VHcm91cC5oIgpAQCAtNTAsMTMgKzQ5LDE1IEBACiAjaW5jbHVkZSAiU3RvcmFnZUFy
ZWEuaCIKICNpbmNsdWRlICJTdG9yYWdlTmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiVm9pZENhbGxi
YWNrLmgiCi0KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6SW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3Bl
Y3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJ
TGl0ZXJhbCgiRE9NU3RvcmFnZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVj
dG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiRE9NU3RvcmFnZSIpLCBpbnN0cnVtZW50aW5nQWdl
bnRzKQogICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQogICAgICwgbV9lbmFibGVkKGZhbHNl
KQogewpAQCAtNjksNyArNzAsNyBAQCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6On5JbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQoKQogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cyA9IDA7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JET01TdG9yYWdlRnJvbnRlbmREaXNwYXRjaGVyPihm
cm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JET01T
dG9yYWdlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50LmgKaW5kZXggMmNkMTdiMy4uMjRkNDc4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaApAQCAtMjksMjcgKzI5LDMwIEBA
CiAjaWZuZGVmIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudF9oCiAjZGVmaW5lIEluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudF9oCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNs
dWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JX
ZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYS5oIgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFzcyBJbnNwZWN0b3JB
cnJheTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZTsKLWNsYXNzIElu
c3BlY3RvckFycmF5OwogY2xhc3MgSW5zcGVjdG9yRE9NU3RvcmFnZUZyb250ZW5kRGlzcGF0Y2hl
cjsKIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7
CiBjbGFzcyBQYWdlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTdG9yYWdlOwotY2xh
c3MgU3RvcmFnZUFyZWE7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJ
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJs
aWMgSW5zcGVjdG9yRE9NU3RvcmFnZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJ
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJs
aWMgSW5zcGVjdG9yRE9NU3RvcmFnZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50PiBjcmVhdGUo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFn
ZW50KiBwYWdlQWdlbnQpCiAgICAgewpAQCAtNTcsMTUgKzYwLDE1IEBAIHB1YmxpYzoKICAgICB9
CiAgICAgfkluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7
CiAKICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgZnJvbnQtZW5kLgogICAgIHZpcnR1YWwgdm9pZCBl
bmFibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmlu
ZyopOwotICAgIHZpcnR1YWwgdm9pZCBnZXRET01TdG9yYWdlSXRlbXMoRXJyb3JTdHJpbmcqLCBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgc3RvcmFnZUlkLCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+Pj4mIGl0ZW1zKTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0RE9NU3RvcmFnZUl0ZW0oRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiYgc3RvcmFnZUlkLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSk7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZURPTVN0b3JhZ2VJdGVtKEVycm9yU3Ry
aW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHN0b3JhZ2VJZCwgY29uc3QgU3Ry
aW5nJiBrZXkpOworICAgIHZpcnR1YWwgdm9pZCBnZXRET01TdG9yYWdlSXRlbXMoRXJyb3JTdHJp
bmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBzdG9yYWdlSWQs
IFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+PiYg
aXRlbXMpOworICAgIHZpcnR1YWwgdm9pZCBzZXRET01TdG9yYWdlSXRlbShFcnJvclN0cmluZyos
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIHN0b3JhZ2VJZCwgY29u
c3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpOworICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVET01TdG9yYWdlSXRlbShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdD4mIHN0b3JhZ2VJZCwgY29uc3QgU3RyaW5nJiBrZXkpOwogCiAgICAg
Ly8gQ2FsbGVkIGZyb20gdGhlIGluamVjdGVkIHNjcmlwdC4KICAgICBTdHJpbmcgc3RvcmFnZUlk
KFN0b3JhZ2UqKTsKQEAgLTc4LDcgKzgxLDcgQEAgcHJpdmF0ZToKIAogICAgIEluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7
CiAKLSAgICBQYXNzUmVmUHRyPFN0b3JhZ2VBcmVhPiBmaW5kU3RvcmFnZUFyZWEoRXJyb3JTdHJp
bmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYsIEZyYW1lKiYpOworICAgIFBhc3NS
ZWZQdHI8U3RvcmFnZUFyZWE+IGZpbmRTdG9yYWdlQXJlYShFcnJvclN0cmluZyosIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mLCBGcmFtZSomKTsKIAogICAgIEluc3Bl
Y3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rv
ckRPTVN0b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3Bw
CmluZGV4IGM1ODAwZWEuLmFlNmFjYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKQEAgLTM3LDggKzM3LDYgQEAKICNpbmNs
dWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JEYXRh
YmFzZVJlc291cmNlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKLQotI2luY2x1
ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIK
ICNpbmNsdWRlICJTUUxFcnJvci5oIgogI2luY2x1ZGUgIlNRTFJlc3VsdFNldC5oIgpAQCAtNTAs
MTEgKzQ4LDEzIEBACiAjaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmgiCiAj
aW5jbHVkZSAiU1FMVmFsdWUuaCIKICNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKLQorI2luY2x1
ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKIHR5cGVkZWYgV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXI6OkV4ZWN1dGVTUUxDYWxsYmFjayBFeGVjdXRlU1FMQ2FsbGJhY2s7CiAKK3VzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIHsK
QEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmNsZWFyUmVz
b3VyY2VzKCkKIH0KIAogSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6SW5zcGVjdG9yRGF0YWJhc2VB
Z2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQotICAgIDogSW5z
cGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiRGF0YWJhc2UiKSwgaW5zdHJ1bWVudGluZ0Fn
ZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkRhdGFiYXNlIiks
IGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX2VuYWJsZWQoZmFsc2UpCiB7CiAgICAgbV9p
bnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JEYXRhYmFzZUFnZW50KHRoaXMpOwpAQCAt
MjIyLDcgKzIyMiw3IEBAIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6On5JbnNwZWN0b3JEYXRhYmFz
ZUFnZW50KCkKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckRhdGFiYXNl
QWdlbnQoMCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVs
LCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIElu
c3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERp
c3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRhdGFiYXNlRnJvbnRlbmREaXNw
YXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNw
ZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIs
IHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRh
dGFiYXNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFz
ZUFnZW50LmgKaW5kZXggYTMyZjA2NC4uNTQ1MzcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCkBAIC0zMSwyMiArMzEsMjYgQEAK
IAogI2lmIEVOQUJMRShJTlNQRUNUT1IpICYmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKLSNpbmNs
dWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgorI2luY2x1ZGUgIklu
c3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAor
bmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFzcyBJbnNwZWN0b3JBcnJheTsKK30KKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBEYXRhYmFzZTsKLWNsYXNzIEluc3BlY3RvckFycmF5Owog
Y2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZTsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2Vu
dHM7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JEYXRh
YmFzZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3RvckRh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckRhdGFiYXNl
QWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3du
UHRyPEluc3BlY3RvckRhdGFiYXNlQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzKQogICAgIHsKQEAgLTU0LDcgKzU4LDcgQEAgcHVibGljOgogICAg
IH0KICAgICB+SW5zcGVjdG9yRGF0YWJhc2VBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7
CiAKICAgICB2b2lkIGNsZWFyUmVzb3VyY2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAKaW5kZXggOWQ0YjczZi4u
M2JhZjg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRh
dGFiYXNlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JEYXRhYmFzZVJlc291cmNlLmNwcApAQCAtMzYsNyArMzYsOSBAQAogCiAjaW5jbHVkZSAiRGF0
YWJhc2UuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgotI2luY2x1ZGUgIkluc3Bl
Y3RvclZhbHVlcy5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KKwor
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAK
aW5kZXggYWMyYjcwZS4uZjI5Mzk2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtMzgsMTEgKzM4LDEyIEBACiAjaW5j
bHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRl
bmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0
b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAi
UmVndWxhckV4cHJlc3Npb24uaCIKICNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5oIgotI2lu
Y2x1ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5o
PgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9y
L0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1
c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6QXJyYXk7CkBAIC01MCwxMiArNTEsMTQgQEAgdXNp
bmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM7CiB1c2lu
ZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OlNjcmlwdElkOwogdXNpbmcgV2ViQ29y
ZTo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDsKIAordXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBjaGFyKiBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpiYWNrdHJhY2VPYmplY3RHcm91cCA9ICJiYWNrdHJhY2UiOwogCiBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJh
bCgiRGVidWdnZXIiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50
QmFzZShBU0NJSUxpdGVyYWwoIkRlYnVnZ2VyIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAg
LCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBt
X3BhdXNlZFNjcmlwdFN0YXRlKDApCiAgICAgLCBtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9p
bnRJRChub0JyZWFrcG9pbnRJRCkKQEAgLTEzNiw3ICsxMzksNyBAQCB2b2lkIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogICAgIGRpc2FibGUoKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
KiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5k
Q2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckRlYnVnZ2VyQmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CkBAIC00MTAs
NyArNDEzLDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXNvbHZlQnJlYWsKICAgICByZXR1cm4gbG9jYXRpb247
CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gc2NyaXB0VG9JbnNwZWN0
b3JPYmplY3QoU2NyaXB0T2JqZWN0IHNjcmlwdE9iamVjdCkKK3N0YXRpYyBQYXNzUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gc2NyaXB0VG9JbnNwZWN0b3JPYmplY3QoRGVwcmVjYXRlZDo6U2NyaXB0
T2JqZWN0IHNjcmlwdE9iamVjdCkKIHsKICAgICBpZiAoc2NyaXB0T2JqZWN0Lmhhc05vVmFsdWUo
KSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC00MzYsNyArNDM5LDcgQEAgdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpzZWFyY2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBT
dHJpbmcmIHMKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0U2NyaXB0U291cmNlKEVy
cm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgY29uc3QgU3RyaW5nJiBu
ZXdDb250ZW50LCBjb25zdCBib29sKiBjb25zdCBwcmV2aWV3LCBSZWZQdHI8QXJyYXk8VHlwZUJ1
aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiYgbmV3Q2FsbEZyYW1lcywgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4mIHJlc3VsdCkKIHsKICAgICBib29sIHByZXZpZXdPbmx5ID0gcHJldmlldyAm
JiAqcHJldmlldzsKLSAgICBTY3JpcHRPYmplY3QgcmVzdWx0T2JqZWN0OworICAgIERlcHJlY2F0
ZWQ6OlNjcmlwdE9iamVjdCByZXN1bHRPYmplY3Q7CiAgICAgaWYgKCFzY3JpcHREZWJ1Z1NlcnZl
cigpLnNldFNjcmlwdFNvdXJjZShzY3JpcHRJRCwgbmV3Q29udGVudCwgcHJldmlld09ubHksIGVy
cm9yLCAmbV9jdXJyZW50Q2FsbFN0YWNrLCAmcmVzdWx0T2JqZWN0KSkKICAgICAgICAgcmV0dXJu
OwogICAgIG5ld0NhbGxGcmFtZXMgPSBjdXJyZW50Q2FsbEZyYW1lcygpOwpAQCAtNjA1LDcgKzYw
OCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cnVuU2NyaXB0KEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgY29uc3QgU2NyaXB0SWQmCiAgICAgICAgIG11dGVDb25zb2xlKCk7CiAg
ICAgfQogCi0gICAgU2NyaXB0VmFsdWUgdmFsdWU7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUgdmFsdWU7CiAgICAgYm9vbCB3YXNUaHJvd25WYWx1ZTsKICAgICBTdHJpbmcgZXhjZXB0aW9u
TWVzc2FnZTsKICAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLnJ1blNjcmlwdChpbmplY3RlZFNjcmlw
dC5zY3JpcHRTdGF0ZSgpLCBzY3JpcHRJRCwgJnZhbHVlLCAmd2FzVGhyb3duVmFsdWUsICZleGNl
cHRpb25NZXNzYWdlKTsKQEAgLTcyNiw3ICs3MjksNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmZhaWxlZFRvUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmlu
ZwogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5zY3JpcHRGYWlsZWRUb1BhcnNlKHVybCwgZGF0
YSwgZmlyc3RMaW5lLCBlcnJvckxpbmUsIGVycm9yTWVzc2FnZSk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBj
b25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywgY29uc3QgU2NyaXB0VmFsdWUmIGV4Y2VwdGlv
bikKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UoSlNDOjpFeGVjU3RhdGUq
IHNjcmlwdFN0YXRlLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywg
Y29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGV4Y2VwdGlvbikKIHsKICAgICBBU1NFUlQo
c2NyaXB0U3RhdGUgJiYgIW1fcGF1c2VkU2NyaXB0U3RhdGUpOwogICAgIG1fcGF1c2VkU2NyaXB0
U3RhdGUgPSBzY3JpcHRTdGF0ZTsKQEAgLTc1NSw3ICs3NTgsNyBAQCB2b2lkIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmRpZFBhdXNlKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3Qg
U2NyaXB0Vgogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRDb250aW51ZSgpCiB7CiAg
ICAgbV9wYXVzZWRTY3JpcHRTdGF0ZSA9IDA7Ci0gICAgbV9jdXJyZW50Q2FsbFN0YWNrID0gU2Ny
aXB0VmFsdWUoKTsKKyAgICBtX2N1cnJlbnRDYWxsU3RhY2sgPSBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSgpOwogICAgIGNsZWFyQnJlYWtEZXRhaWxzKCk7CiAgICAgbV9mcm9udGVuZERpc3BhdGNo
ZXItPnJlc3VtZWQoKTsKIH0KQEAgLTc3MCw3ICs3NzMsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OmJyZWFrUHJvZ3JhbShJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hl
cjo6Ugogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjbGVhcigpCiB7CiAgICAgbV9wYXVz
ZWRTY3JpcHRTdGF0ZSA9IDA7Ci0gICAgbV9jdXJyZW50Q2FsbFN0YWNrID0gU2NyaXB0VmFsdWUo
KTsKKyAgICBtX2N1cnJlbnRDYWxsU3RhY2sgPSBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSgpOwog
ICAgIG1fc2NyaXB0cy5jbGVhcigpOwogICAgIG1fYnJlYWtwb2ludElkZW50aWZpZXJUb0RlYnVn
U2VydmVyQnJlYWtwb2ludElEcy5jbGVhcigpOwogICAgIG1fY29udGludWVUb0xvY2F0aW9uQnJl
YWtwb2ludElEID0gbm9CcmVha3BvaW50SUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAppbmRleCA0YmU2MDAwLi41YjJlODA0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgK
QEAgLTMxLDEyICszMSwxNCBAQAogI2RlZmluZSBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50X2gKIAog
I2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEUoSU5TUEVDVE9SKQorCiAj
aW5jbHVkZSAiQnJlYWtwb2ludElELmgiCiAjaW5jbHVkZSAiQ29uc29sZUFQSVR5cGVzLmgiCiAj
aW5jbHVkZSAiQ29uc29sZVR5cGVzLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKLSNp
bmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgIlNjcmlwdEJyZWFrcG9pbnQuaCIK
ICNpbmNsdWRlICJTY3JpcHREZWJ1Z0xpc3RlbmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUu
aCIKQEAgLTQ4LDE5ICs1MCwyNSBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFj
ZSBEZXByZWNhdGVkIHsKK2NsYXNzIFNjcmlwdFZhbHVlOworfQogCi1jbGFzcyBJbmplY3RlZFNj
cmlwdE1hbmFnZXI7CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIGNsYXNzIEluc3BlY3RvckFycmF5
OwogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3MgSW5zcGVjdG9yVmFsdWU7Cit9CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3Mg
SW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFNjcmlwdERlYnVnU2VydmVyOwotY2xhc3MgU2Ny
aXB0VmFsdWU7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIFNjcmlw
dERlYnVnTGlzdGVuZXIsIHB1YmxpYyBJbnNwZWN0b3JEZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50IDogcHVibGljIEluc3BlY3Rv
ckFnZW50QmFzZSwgcHVibGljIFNjcmlwdERlYnVnTGlzdGVuZXIsIHB1YmxpYyBJbnNwZWN0b3JE
ZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBiYWNrdHJhY2VPYmplY3RHcm91cDsKQEAgLTcx
LDcgKzc5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjYW5TZXRTY3JpcHRTb3VyY2Uo
RXJyb3JTdHJpbmcqLCBib29sKik7CiAgICAgdmlydHVhbCB2b2lkIHN1cHBvcnRzU2VwYXJhdGVT
Y3JpcHRDb21waWxhdGlvbkFuZEV4ZWN1dGlvbihFcnJvclN0cmluZyosIGJvb2wqKTsKIAotICAg
IHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZCgpIE9WRVJSSURFOwogCiAgICAgYm9vbCBpc1BhdXNlZCgpOwpAQCAtODMsMTMgKzkxLDEz
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRCcmVha3BvaW50c0FjdGl2ZShFcnJvclN0cmluZyosIGJvb2wgYWN0
aXZlKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJpbmcq
LCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFVSTCwgY29uc3QgU3RyaW5n
KiBvcHRpb25hbFVSTFJlZ2V4LCBjb25zdCBpbnQqIG9wdGlvbmFsQ29sdW1uTnVtYmVyLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3B0aW9ucywgVHlwZUJ1aWxkZXI6OkRlYnVnZ2Vy
OjpCcmVha3BvaW50SWQqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpE
ZWJ1Z2dlcjo6TG9jYXRpb24+PiYgbG9jYXRpb25zKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QnJl
YWtwb2ludChFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBsb2Nh
dGlvbiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG9wdGlvbnMsIFR5cGVCdWlsZGVy
OjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6
TG9jYXRpb24+JiBhY3R1YWxMb2NhdGlvbik7CisgICAgdmlydHVhbCB2b2lkIHNldEJyZWFrcG9p
bnRCeVVybChFcnJvclN0cmluZyosIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcqIG9wdGlv
bmFsVVJMLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCogb3B0aW9u
YWxDb2x1bW5OdW1iZXIsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4q
IG9wdGlvbnMsIFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiwgUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0
aW9ucyk7CisgICAgdmlydHVhbCB2b2lkIHNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBsb2NhdGlvbiwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piogb3B0aW9ucywgVHlwZUJ1aWxkZXI6OkRl
YnVnZ2VyOjpCcmVha3BvaW50SWQqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2Nh
dGlvbj4mIGFjdHVhbExvY2F0aW9uKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQnJlYWtwb2lu
dChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkZW50aWZpZXIpOwotICAg
IHZpcnR1YWwgdm9pZCBjb250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiYgbG9jYXRpb24pOworICAgIHZpcnR1YWwgdm9pZCBjb250aW51
ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3Q+JiBsb2NhdGlvbik7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoSW5Db250ZW50
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgY29uc3QgU3RyaW5nJiBxdWVy
eSwgY29uc3QgYm9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25h
bElzUmVnZXgsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OlNl
YXJjaE1hdGNoPj4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2NyaXB0U291cmNlKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBj
b25zdCBib29sKiBwcmV2aWV3LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVy
OjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4mIG5ld0NhbGxGcmFtZXMsIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JpcHRTb3VyY2UoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIHNjcmlwdElELCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQs
IGNvbnN0IGJvb2wqIHByZXZpZXcsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxk
ZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiYgbmV3Q2FsbEZyYW1lcywgUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0PiYgcmVzdWx0KTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0U2NyaXB0
U291cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgU3RyaW5nKiBzY3Jp
cHRTb3VyY2UpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdn
ZXI6OkZ1bmN0aW9uRGV0YWlscz4mKTsKICAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoRXJyb3JTdHJp
bmcqKTsKQEAgLTExMiw5ICsxMjAsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBydW5TY3JpcHQoRXJy
b3JTdHJpbmcqLCBjb25zdCBUeXBlQnVpbGRlcjo6RGVidWdnZXI6OlNjcmlwdElkJiwgY29uc3Qg
aW50KiBleGVjdXRpb25Db250ZXh0SWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIGNvbnN0
IGJvb2wqIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgUmVmUHRyPFR5cGVC
dWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIFR5cGVCdWlsZGVyOjpPcHRP
dXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7CiAgICAgdmlydHVhbCB2b2lkIHNldE92ZXJsYXlNZXNz
YWdlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nKik7CiAKLSAgICB2b2lkIHNjaGVkdWxlUGF1
c2VPbk5leHRTdGF0ZW1lbnQoSW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJl
YXNvbjo6RW51bSBicmVha1JlYXNvbiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEp
OworICAgIHZvaWQgc2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChJbnNwZWN0b3JEZWJ1Z2dl
ckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpFbnVtIGJyZWFrUmVhc29uLCBQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBkYXRhKTsKICAgICB2b2lkIGNhbmNlbFBhdXNl
T25OZXh0U3RhdGVtZW50KCk7Ci0gICAgdm9pZCBicmVha1Byb2dyYW0oSW5zcGVjdG9yRGVidWdn
ZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RW51bSBicmVha1JlYXNvbiwgUGFzc1JlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEpOworICAgIHZvaWQgYnJlYWtQcm9ncmFtKEluc3BlY3Rv
ckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkVudW0gYnJlYWtSZWFzb24sIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGRhdGEpOwogICAgIHZpcnR1YWwg
dm9pZCBzY3JpcHRFeGVjdXRpb25CbG9ja2VkQnlDU1AoY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVU
ZXh0KTsKIAogICAgIGNsYXNzIExpc3RlbmVyIHsKQEAgLTE0MSw3ICsxNDksNyBAQCBwcm90ZWN0
ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc2Fi
bGUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2UoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBT
Y3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywgY29uc3QgU2NyaXB0VmFsdWUmIGV4Y2VwdGlvbik7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
JiBleGNlcHRpb24pOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb250aW51ZSgpOwogICAgIHZvaWQg
cmVzZXQoKTsKIApAQCAtMTY0LDE5ICsxNzIsMTkgQEAgcHJpdmF0ZToKIAogICAgIHR5cGVkZWYg
SGFzaE1hcDxTb3VyY2VJRCwgU2NyaXB0PiBTY3JpcHRzTWFwOwogICAgIHR5cGVkZWYgSGFzaE1h
cDxTdHJpbmcsIFZlY3RvcjxCcmVha3BvaW50SUQ+PiBCcmVha3BvaW50SWRlbnRpZmllclRvRGVi
dWdTZXJ2ZXJCcmVha3BvaW50SURzTWFwOwotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+PiBCcmVha3BvaW50SWRlbnRpZmllclRvQnJlYWtwb2ludE1h
cDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3Q+PiBCcmVha3BvaW50SWRlbnRpZmllclRvQnJlYWtwb2ludE1hcDsKIAogICAgIElu
amVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5k
RGlzcGF0Y2hlcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hl
cj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBKU0M6OkV4ZWNTdGF0ZSogbV9wYXVzZWRTY3Jp
cHRTdGF0ZTsKLSAgICBTY3JpcHRWYWx1ZSBtX2N1cnJlbnRDYWxsU3RhY2s7CisgICAgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUgbV9jdXJyZW50Q2FsbFN0YWNrOwogICAgIFNjcmlwdHNNYXAgbV9z
Y3JpcHRzOwogICAgIEJyZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJ
RHNNYXAgbV9icmVha3BvaW50SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SURzOwog
ICAgIEJyZWFrcG9pbnRJZGVudGlmaWVyVG9CcmVha3BvaW50TWFwIG1famF2YVNjcmlwdEJyZWFr
cG9pbnRzOwogICAgIEJyZWFrcG9pbnRJRCBtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJ
RDsKICAgICBJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpFbnVt
IG1fYnJlYWtSZWFzb247Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbV9icmVha0F1eERh
dGE7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBtX2JyZWFrQXV4RGF0
YTsKICAgICBib29sIG1fZW5hYmxlZDsKICAgICBib29sIG1famF2YVNjcmlwdFBhdXNlU2NoZWR1
bGVkOwogICAgIExpc3RlbmVyKiBtX2xpc3RlbmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZvcndhcmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGb3J3YXJkaW5nLmgKaW5kZXggZjYwNjU5NC4uZjY4ZmNkYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZvcndhcmRpbmcuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRm9yd2FyZGluZy5oCkBAIC0zMCw3
ICszMCw3IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwg
OiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgeyB9OwordHlwZWRl
ZiBJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCBJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWw7CiB9CiAKICNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JGb3J3YXJkaW5nX2gpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbC5jcHAKaW5kZXggODcxMWE4ZS4uYWE4Y2EwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNw
cApAQCAtNDgsMTcgKzQ4LDE5IEBACiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRG
dW5jdGlvbkNhbGwuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlICJTY3Jp
cHRHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGlj
YXRvci5oIgogI2luY2x1ZGUgIldpbmRvd0ZlYXR1cmVzLmgiCisjaW5jbHVkZSA8YmluZGluZ3Mv
U2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK3VzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0
IGNoYXIqIGluc3BlY3RvckF0dGFjaGVkSGVpZ2h0U2V0dGluZyA9ICJpbnNwZWN0b3JBdHRhY2hl
ZEhlaWdodCI7CkBAIC0zNDQsNyArMzQ2LDcgQEAgYm9vbCBJbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsOjppc1VuZGVyVGVzdCgpCiAKIGJvb2wgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bDo6ZXZhbHVhdGVBc0Jvb2xlYW4oY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKQogewotICAgIFNj
cmlwdFZhbHVlIHZhbHVlID0gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4
ZWN1dGVTY3JpcHQoZXhwcmVzc2lvbik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgdmFs
dWUgPSBtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChl
eHByZXNzaW9uKTsKICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcobWFpbldvcmxkRXhlY1N0YXRl
KCZtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCkpKSA9PSAidHJ1ZSI7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKaW5kZXgg
YmUyNGUxZS4uMjgwOWY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kSG9zdC5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJJbnNw
ZWN0b3JBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIgorI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNT
dGF0ZS5oIgogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCkBAIC01MywyOSArNTQsMzMgQEAKICNpbmNsdWRlICJSZXNvdXJj
ZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VSZXNwb25zZS5oIgotI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5oIgorI2luY2x1ZGUg
IlNjcmlwdEdsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVk
ZSAiU291bmQuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgorI2luY2x1ZGUg
PGJpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiBjbGFzcyBGcm9udGVuZE1lbnVQcm92aWRl
ciA6IHB1YmxpYyBDb250ZXh0TWVudVByb3ZpZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxGcm9udGVuZE1lbnVQcm92aWRlcj4gY3JlYXRlKEluc3BlY3RvckZyb250ZW5kSG9z
dCogZnJvbnRlbmRIb3N0LCBTY3JpcHRPYmplY3QgZnJvbnRlbmRBcGlPYmplY3QsIGNvbnN0IFZl
Y3RvcjxDb250ZXh0TWVudUl0ZW0+JiBpdGVtcykKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGcm9u
dGVuZE1lbnVQcm92aWRlcj4gY3JlYXRlKEluc3BlY3RvckZyb250ZW5kSG9zdCogZnJvbnRlbmRI
b3N0LCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgZnJvbnRlbmRBcGlPYmplY3QsIGNvbnN0IFZl
Y3RvcjxDb250ZXh0TWVudUl0ZW0+JiBpdGVtcykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgRnJvbnRlbmRNZW51UHJvdmlkZXIoZnJvbnRlbmRIb3N0LCBmcm9udGVuZEFwaU9i
amVjdCwgaXRlbXMpKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBkaXNjb25uZWN0KCkKICAgICB7
Ci0gICAgICAgIG1fZnJvbnRlbmRBcGlPYmplY3QgPSBTY3JpcHRPYmplY3QoKTsKKyAgICAgICAg
bV9mcm9udGVuZEFwaU9iamVjdCA9IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCgpOwogICAgICAg
ICBtX2Zyb250ZW5kSG9zdCA9IDA7CiAgICAgfQogICAgIAogcHJpdmF0ZToKLSAgICBGcm9udGVu
ZE1lbnVQcm92aWRlcihJbnNwZWN0b3JGcm9udGVuZEhvc3QqIGZyb250ZW5kSG9zdCwgU2NyaXB0
T2JqZWN0IGZyb250ZW5kQXBpT2JqZWN0LCBjb25zdCBWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiYg
aXRlbXMpCisgICAgRnJvbnRlbmRNZW51UHJvdmlkZXIoSW5zcGVjdG9yRnJvbnRlbmRIb3N0KiBm
cm9udGVuZEhvc3QsIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBmcm9udGVuZEFwaU9iamVjdCwg
Y29uc3QgVmVjdG9yPENvbnRleHRNZW51SXRlbT4mIGl0ZW1zKQogICAgICAgICA6IG1fZnJvbnRl
bmRIb3N0KGZyb250ZW5kSG9zdCkKICAgICAgICAgLCBtX2Zyb250ZW5kQXBpT2JqZWN0KGZyb250
ZW5kQXBpT2JqZWN0KQogICAgICAgICAsIG1faXRlbXMoaXRlbXMpCkBAIC05OSw3ICsxMDQsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGlj
YXRvcihEZWZpbml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKICAgICAgICAgICAgIGludCBp
dGVtTnVtYmVyID0gaXRlbS0+YWN0aW9uKCkgLSBDb250ZXh0TWVudUl0ZW1CYXNlQ3VzdG9tVGFn
OwogCi0gICAgICAgICAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9mcm9udGVuZEFw
aU9iamVjdCwgImNvbnRleHRNZW51SXRlbVNlbGVjdGVkIik7CisgICAgICAgICAgICBEZXByZWNh
dGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9mcm9udGVuZEFwaU9iamVjdCwgImNv
bnRleHRNZW51SXRlbVNlbGVjdGVkIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21B
bnlUaHJlYWQpOwogICAgICAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoaXRlbU51bWJl
cik7CiAgICAgICAgICAgICBmdW5jdGlvbi5jYWxsKCk7CiAgICAgICAgIH0KQEAgLTEwOCw3ICsx
MTMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudUNsZWFyZWQoKQog
ICAgIHsKICAgICAgICAgaWYgKG1fZnJvbnRlbmRIb3N0KSB7Ci0gICAgICAgICAgICBTY3JpcHRG
dW5jdGlvbkNhbGwgZnVuY3Rpb24obV9mcm9udGVuZEFwaU9iamVjdCwgImNvbnRleHRNZW51Q2xl
YXJlZCIpOworICAgICAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0
aW9uKG1fZnJvbnRlbmRBcGlPYmplY3QsICJjb250ZXh0TWVudUNsZWFyZWQiLCBXZWJDb3JlOjpm
dW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAgICAgICAgICBmdW5jdGlvbi5j
YWxsKCk7CiAKICAgICAgICAgICAgIG1fZnJvbnRlbmRIb3N0LT5tX21lbnVQcm92aWRlciA9IDA7
CkBAIC0xMTcsNyArMTIyLDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBJbnNwZWN0b3JGcm9u
dGVuZEhvc3QqIG1fZnJvbnRlbmRIb3N0OwotICAgIFNjcmlwdE9iamVjdCBtX2Zyb250ZW5kQXBp
T2JqZWN0OworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBtX2Zyb250ZW5kQXBpT2JqZWN0
OwogICAgIFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+IG1faXRlbXM7CiB9OwogI2VuZGlmCkBAIC0y
NzIsNyArMjc3LDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnNob3dDb250ZXh0TWVu
dShFdmVudCogZXZlbnQsIGNvbnN0IFZlY3RvcjxDb250ZXh0TWUKIAogICAgIEFTU0VSVChtX2Zy
b250ZW5kUGFnZSk7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGZyb250ZW5kRXhlY1N0YXRlID0gZXhl
Y1N0YXRlRnJvbVBhZ2UoZGVidWdnZXJXb3JsZCgpLCBtX2Zyb250ZW5kUGFnZSk7Ci0gICAgU2Ny
aXB0T2JqZWN0IGZyb250ZW5kQXBpT2JqZWN0OworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVj
dCBmcm9udGVuZEFwaU9iamVjdDsKICAgICBpZiAoIVNjcmlwdEdsb2JhbE9iamVjdDo6Z2V0KGZy
b250ZW5kRXhlY1N0YXRlLCAiSW5zcGVjdG9yRnJvbnRlbmRBUEkiLCBmcm9udGVuZEFwaU9iamVj
dCkpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVy
QWdlbnQuY3BwCmluZGV4IDA4MTRhMGYuLjkwOThmYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNwcApAQCAtMzks
NiArMzksOCBAQAogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJT
Y3JpcHRQcm9maWxlci5oIgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBVc2VySW5pdGlhdGVkUHJv
ZmlsZU5hbWVIZWFwID0gIm9yZy53ZWJraXQucHJvZmlsZXMudXNlci1pbml0aWF0ZWQiOwpAQCAt
NDksNyArNTEsNyBAQCBQYXNzT3duUHRyPEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50PiBJbnNw
ZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6Y3JlYXRlKEluc3RydQogfQogCiBJbnNwZWN0b3JIZWFw
UHJvZmlsZXJBZ2VudDo6SW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3Rl
ZFNjcmlwdE1hbmFnZXIpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJI
ZWFwUHJvZmlsZXIiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50
QmFzZShBU0NJSUxpdGVyYWwoIkhlYXBQcm9maWxlciIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQog
ICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAg
ICwgbV9uZXh0VXNlckluaXRpYXRlZEhlYXBTbmFwc2hvdE51bWJlcigxKQogICAgICwgbV9wcm9m
aWxlSGVhZGVyc1JlcXVlc3RlZChmYWxzZSkKQEAgLTgwLDcgKzgyLDcgQEAgdm9pZCBJbnNwZWN0
b3JIZWFwUHJvZmlsZXJBZ2VudDo6cmVzZXRGcm9udGVuZFByb2ZpbGVzKCkKICAgICAgICAgbV9m
cm9udGVuZERpc3BhdGNoZXItPnJlc2V0UHJvZmlsZXMoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JI
ZWFwUHJvZmlsZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50Ojpk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tl
bmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0b3JIZWFwUHJvZmlsZXJGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hh
bm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckhlYXBQcm9maWxlckJh
Y2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpAQCAtMTk4
LDcgKzIwMCw3IEBAIHZvaWQgSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OmdldE9iamVjdEJ5
SGVhcE9iamVjdElkKEVycm9yU3RyaW5nKiBlcnJvciwgY29uCiAgICAgICAgICplcnJvciA9ICJJ
bnZhbGlkIGhlYXAgc25hcHNob3Qgb2JqZWN0IGlkIjsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBTY3JpcHRPYmplY3QgaGVhcE9iamVjdCA9IFNjcmlwdFByb2ZpbGVyOjpvYmplY3RCeUhl
YXBPYmplY3RJZChpZCk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IGhlYXBPYmplY3Qg
PSBTY3JpcHRQcm9maWxlcjo6b2JqZWN0QnlIZWFwT2JqZWN0SWQoaWQpOwogICAgIGlmIChoZWFw
T2JqZWN0Lmhhc05vVmFsdWUoKSkgewogICAgICAgICAqZXJyb3IgPSAiT2JqZWN0IGlzIG5vdCBh
dmFpbGFibGUiOwogICAgICAgICByZXR1cm47CkBAIC0yMjAsNyArMjIyLDcgQEAgdm9pZCBJbnNw
ZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6Z2V0SGVhcE9iamVjdElkKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgY29uc3QKICAgICAgICAgKmVycm9yU3RyaW5nID0gIkluc3BlY3RlZCBjb250ZXh0
IGhhcyBnb25lIjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBTY3JpcHRWYWx1ZSB2YWx1
ZSA9IGluamVjdGVkU2NyaXB0LmZpbmRPYmplY3RCeUlkKG9iamVjdElkKTsKKyAgICBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSB2YWx1ZSA9IGluamVjdGVkU2NyaXB0LmZpbmRPYmplY3RCeUlkKG9i
amVjdElkKTsKICAgICBpZiAodmFsdWUuaGFzTm9WYWx1ZSgpIHx8IHZhbHVlLmlzVW5kZWZpbmVk
KCkpIHsKICAgICAgICAgKmVycm9yU3RyaW5nID0gIk9iamVjdCB3aXRoIGdpdmVuIGlkIG5vdCBm
b3VuZCI7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmgKaW5kZXggY2MzNjg2OC4uMzAzMzg1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxl
ckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9m
aWxlckFnZW50LmgKQEAgLTMzLDggKzMzLDkgQEAKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RF
QlVHR0VSKSAmJiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFn
ZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2Uu
aCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC00OSw3ICs1MCw3IEBAIGNsYXNzIFNjcmlw
dFByb2ZpbGU7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0
b3JIZWFwUHJvZmlsZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJ
bnNwZWN0b3JIZWFwUHJvZmlsZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5z
cGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJs
aWMgSW5zcGVjdG9ySGVhcFByb2ZpbGVyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudCk7IFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3Rv
ckhlYXBQcm9maWxlckFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluamVjdGVk
U2NyaXB0TWFuYWdlciopOwpAQCAtNjUsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGdldEhlYXBTbmFwc2hvdChFcnJvclN0cmluZyosIGludCB1aWQpOwogICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVQcm9maWxlKEVycm9yU3RyaW5nKiwgaW50IHVpZCk7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBP
VkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCB0YWtlSGVhcFNuYXBzaG90KEVycm9yU3RyaW5n
KiwgY29uc3QgYm9vbCogcmVwb3J0UHJvZ3Jlc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXggYTAyNTcxMy4uZmVh
ZGFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQuY3BwCkBAIC02MSwxMCArNjEsOSBAQAogI2luY2x1ZGUgIkluamVjdGVkU2Ny
aXB0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JQYWdlQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJ
bnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLQorI2lu
Y2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpBcnJheTsKQEAgLTc2LDEyICs3NSwx
NCBAQCB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpLZXlSYW5nZTsKIHVz
aW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlOwogdXNpbmcg
V2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmVJbmRleDsKIAordHlw
ZWRlZiBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2Ug
UmVxdWVzdENhbGxiYWNrOwogdHlwZWRlZiBXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlcXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJhY2sgUmVxdWVz
dERhdGFiYXNlTmFtZXNDYWxsYmFjazsKIHR5cGVkZWYgV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhl
ZERCQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXF1ZXN0RGF0YWJhc2VDYWxsYmFjayBSZXF1
ZXN0RGF0YWJhc2VDYWxsYmFjazsKIHR5cGVkZWYgV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhlZERC
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXF1ZXN0RGF0YUNhbGxiYWNrIFJlcXVlc3REYXRh
Q2FsbGJhY2s7Ci10eXBlZGVmIFdlYkNvcmU6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpD
YWxsYmFja0Jhc2UgUmVxdWVzdENhbGxiYWNrOwogdHlwZWRlZiBXZWJDb3JlOjpJbnNwZWN0b3JJ
bmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkNsZWFyT2JqZWN0U3RvcmVDYWxsYmFj
ayBDbGVhck9iamVjdFN0b3JlQ2FsbGJhY2s7CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIHsKQEAgLTU1Nyw3ICs1NTgsNyBA
QCBwdWJsaWM6CiB9IC8vIG5hbWVzcGFjZQogCiBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6SW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50cywgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3Bl
Y3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJ
TGl0ZXJhbCgiSW5kZXhlZERCIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0
b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJJbmRleGVkREIiKSwgaW5zdHJ1bWVudGluZ0FnZW50
cykKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikK
ICAgICAsIG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkKIHsKQEAgLTU2Nyw3ICs1NjgsNyBAQCBJbnNw
ZWN0b3JJbmRleGVkREJBZ2VudDo6fkluc3BlY3RvckluZGV4ZWREQkFnZW50KCkKIHsKIH0KIAot
dm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBi
YWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCos
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBt
X2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9ySW5kZXhlZERCQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCmluZGV4IGJhMzc1OWEuLmI5
NTUyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRl
eGVkREJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRl
eGVkREJBZ2VudC5oCkBAIC0zMyw3ICszMyw4IEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKSAm
JiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2Vu
dC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQ0LDcgKzQ1LDcgQEAgY2xhc3Mg
SW5zcGVjdG9yUGFnZUFnZW50OwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xh
c3MgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBw
dWJsaWMgSW5zcGVjdG9ySW5kZXhlZERCQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNz
IEluc3BlY3RvckluZGV4ZWREQkFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVi
bGljIEluc3BlY3RvckluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ+IGNyZWF0ZShJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbmplY3RlZFNjcmlwdE1h
bmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdl
bnQpCiAgICAgewpAQCAtNTIsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIH5JbnNwZWN0
b3JJbmRleGVkREJBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6
Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICAvLyBDYWxs
ZWQgZnJvbSB0aGUgZnJvbnQtZW5kLgpAQCAtNjAsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dERhdGFiYXNlTmFtZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2lu
LCBQYXNzUmVmUHRyPFJlcXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJhY2s+KTsKICAgICB2aXJ0dWFs
IHZvaWQgcmVxdWVzdERhdGFiYXNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWN1cml0
eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIFBhc3NSZWZQdHI8UmVxdWVzdERh
dGFiYXNlQ2FsbGJhY2s+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERhdGEoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNl
TmFtZSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5kZXhO
YW1lLCBpbnQgc2tpcENvdW50LCBpbnQgcGFnZVNpemUsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+KiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YUNhbGxiYWNrPik7CisgICAg
dmlydHVhbCB2b2lkIHJlcXVlc3REYXRhKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWN1
cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgb2Jq
ZWN0U3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgaW50IHNraXBDb3VudCwgaW50
IHBhZ2VTaXplLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBrZXlS
YW5nZSwgUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YUNhbGxiYWNrPik7CiAgICAgdmlydHVhbCB2b2lk
IGNsZWFyT2JqZWN0U3RvcmUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGluX3NlY3VyaXR5
T3JpZ2luLCBjb25zdCBTdHJpbmcmIGluX2RhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBpbl9v
YmplY3RTdG9yZU5hbWUsIFBhc3NSZWZQdHI8Q2xlYXJPYmplY3RTdG9yZUNhbGxiYWNrPik7CiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5wdXRBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5wdXRB
Z2VudC5jcHAKaW5kZXggN2VjY2I4ZC4uYzRiODc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvcklucHV0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50LmNwcApAQCAtNDksMTAgKzQ5LDEyIEBACiAj
aW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogSW5zcGVjdG9ySW5wdXRBZ2VudDo6SW5zcGVjdG9ySW5wdXRBZ2VudChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBQYWdlKiBwYWdlKQotICAgIDogSW5zcGVjdG9y
QmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiSW5wdXQiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAg
ICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIklucHV0IiksIGluc3RydW1lbnRp
bmdBZ2VudHMpCiAgICAgLCBtX3BhZ2UocGFnZSkKIHsKIH0KQEAgLTYxLDcgKzYzLDcgQEAgSW5z
cGVjdG9ySW5wdXRBZ2VudDo6fkluc3BlY3RvcklucHV0QWdlbnQoKQogewogfQogCi12b2lkIElu
c3BlY3RvcklucHV0QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3Bh
dGNoZXIpCit2b2lkIEluc3BlY3RvcklucHV0QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2JhY2tlbmREaXNwYXRj
aGVyID0gSW5zcGVjdG9ySW5wdXRCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNw
YXRjaGVyLCB0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnB1dEFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5wdXRBZ2VudC5oCmluZGV4IGFjYmEyOTkuLjRlMDYyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvcklucHV0QWdlbnQuaApAQCAtMzMsOCArMzMsOCBAQAogCiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgot
CisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCisjaW5jbHVkZSAiSW5z
cGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
QEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgUGFnZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJp
bmc7CiAKLWNsYXNzIEluc3BlY3RvcklucHV0QWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFn
ZW50LCBwdWJsaWMgSW5zcGVjdG9ySW5wdXRCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xh
c3MgSW5zcGVjdG9ySW5wdXRBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1Ymxp
YyBJbnNwZWN0b3JJbnB1dEJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoSW5zcGVjdG9ySW5wdXRBZ2VudCk7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NPd25QdHI8SW5zcGVjdG9ySW5wdXRBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMsIFBhZ2UqIHBhZ2UpCkBAIC01NCw3ICs1NCw3IEBAIHB1Ymxp
YzoKIAogICAgIH5JbnNwZWN0b3JJbnB1dEFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsK
IAogICAgIC8vIE1ldGhvZHMgY2FsbGVkIGZyb20gdGhlIGZyb250ZW5kIGZvciBzaW11bGF0aW5n
IGlucHV0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmNwcAppbmRleCBjNGM1MWNiLi4xMTdkYjE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAt
ODMsNiArODMsOCBAQAogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHJlcXVlc3RBbmltYXRp
b25GcmFtZUV2ZW50TmFtZSA9ICJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IGJk
NWM5NTIuLjMzYjZiYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTQ1LDYgKzQ1LDEwIEBACiAjaW5jbHVkZSAiV2Vi
U29ja2V0RnJhbWUuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKK25hbWVzcGFjZSBEZXBy
ZWNhdGVkIHsKK2NsYXNzIFNjcmlwdE9iamVjdDsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDU1NSdWxlOwpAQCAtNzcsNyArODEsNiBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
OwogY2xhc3MgU2NyaXB0QXJndW1lbnRzOwogY2xhc3MgU2NyaXB0Q2FsbFN0YWNrOwogY2xhc3Mg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNjcmlwdE9iamVjdDsKIGNsYXNzIFNjcmlw
dFByb2ZpbGU7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNoYWRvd1Jvb3Q7CkBAIC0y
NzYsOSArMjc5LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVXZWJTb2Nr
ZXRGcmFtZUVycm9yKERvY3VtZW50KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGVycm9yTWVzc2FnZSk7CiAjZW5kaWYKIAotICAgIHN0YXRpYyBTY3JpcHRPYmplY3Qg
d3JhcENhbnZhczJEUmVuZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlvbihEb2N1bWVudCos
IGNvbnN0IFNjcmlwdE9iamVjdCYpOworICAgIHN0YXRpYyBEZXByZWNhdGVkOjpTY3JpcHRPYmpl
Y3Qgd3JhcENhbnZhczJEUmVuZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlvbihEb2N1bWVu
dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYpOwogI2lmIEVOQUJMRShXRUJHTCkK
LSAgICBzdGF0aWMgU2NyaXB0T2JqZWN0IHdyYXBXZWJHTFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0
cnVtZW50YXRpb24oRG9jdW1lbnQqLCBjb25zdCBTY3JpcHRPYmplY3QmKTsKKyAgICBzdGF0aWMg
RGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IHdyYXBXZWJHTFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0
cnVtZW50YXRpb24oRG9jdW1lbnQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmKTsK
ICNlbmRpZgogCiAgICAgc3RhdGljIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZChQYWdlKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50
LmNwcAppbmRleCBkMjdmOTA5Li5jMjAwMWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKQEAgLTQ2LDEwICs0NiwxMiBA
QAogI2luY2x1ZGUgIlJlbmRlckxheWVyQ29tcG9zaXRvci5oIgogI2luY2x1ZGUgIlJlbmRlclZp
ZXcuaCIKIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICA6IEluc3BlY3RvckJh
c2VBZ2VudChBU0NJSUxpdGVyYWwoIkxheWVyVHJlZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQor
ICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiTGF5ZXJUcmVlIiksIGluc3Ry
dW1lbnRpbmdBZ2VudHMpCiB7CiB9CiAKQEAgLTU4LDcgKzYwLDcgQEAgSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQ6On5JbnNwZWN0b3JMYXllclRyZWVBZ2VudCgpCiAgICAgcmVzZXQoKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckxheWVyVHJl
ZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JMYXllclRyZWVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250
ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckxheWVyVHJl
ZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaApp
bmRleCBhZjU1YTkyLi4zMGJjYjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaApAQCAtMzEsOSArMzEsMTAgQEAKIAogI2lmIEVO
QUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNs
dWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JG
cm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclR5cGVCdWlsZGVyLmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC00
Niw3ICs0Nyw3IEBAIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiAKIHR5cGVkZWYgU3RyaW5n
IEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JMYXllclRyZWVBZ2VudCA6IHB1YmxpYyBJ
bnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JMYXllclRyZWVCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQgOiBwdWJsaWMgSW5z
cGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yTGF5ZXJUcmVlQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JMYXll
clRyZWVBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMpCiAgICAgewpAQCAtNTQsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIH5JbnNwZWN0
b3JMYXllclRyZWVBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6
Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAgICAgdm9pZCByZXNl
dCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVt
b3J5QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFn
ZW50LmNwcAppbmRleCA3NThiN2I0Li5iNGVmMDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKQEAgLTQxLDEzICs0MSwxMyBAQAog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Lmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1
ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiTWVtb3J5
Q2FjaGUuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5oIgog
I2luY2x1ZGUgIlNjcmlwdFByb2ZpbGVyLmgiCiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgor
I2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDxydW50aW1l
L0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL093blB0ci5oPgpAQCAtNjEsMTMgKzYxLDE1IEBACiB0eXBlZGVmIFdlYkNvcmU6OlR5cGVC
dWlsZGVyOjpNZW1vcnk6Ok1lbW9yeUJsb2NrIEluc3BlY3Rvck1lbW9yeUJsb2NrOwogdHlwZWRl
ZiBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IEluc3Bl
Y3Rvck1lbW9yeUJsb2NrczsKIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6fkluc3BlY3Rvck1lbW9yeUFn
ZW50KCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6
OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikK
IHsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yTWVtb3J5QmFja2VuZERpc3Bh
dGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CkBAIC04NSw3ICs4Nyw3
IEBAIHZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldERPTUNvdW50ZXJzKEVycm9yU3RyaW5n
KiwgaW50KiBkb2N1bWVudHMsIGludCogbm9kCiB9CiAKIEluc3BlY3Rvck1lbW9yeUFnZW50OjpJ
bnNwZWN0b3JNZW1vcnlBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzKQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiTWVtb3J5IiksIGlu
c3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFs
KCJNZW1vcnkiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaAppbmRleCBlMTkxMGRlLi44ZjE1
NjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdl
bnQuaApAQCAtMzMsOCArMzMsOCBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1
ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgi
CisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCisjaW5jbHVkZSAiSW5z
cGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTQ1LDEzICs0NSwxMyBAQCBjbGFzcyBJbnN0cnVtZW50
aW5nQWdlbnRzOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVj
dG9yTWVtb3J5QWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVj
dG9yTWVtb3J5QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3Rvck1lbW9y
eUFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvck1lbW9y
eUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5z
cGVjdG9yTWVtb3J5QWdlbnQpOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3Bl
Y3Rvck1lbW9yeUFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cyk7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yTWVtb3J5QWdlbnQoKTsKIAotICAgIHZp
cnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciop
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZCgpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGdldERPTUNvdW50ZXJzKEVycm9yU3Ry
aW5nKiwgaW50KiBkb2N1bWVudHMsIGludCogbm9kZXMsIGludCoganNFdmVudExpc3RlbmVycyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKaW5kZXgg
Mjg2ODQxZi4uYTg1ZDhjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JPdmVybGF5LmNwcApAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvck92
ZXJsYXlQYWdlLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiTWFp
bkZyYW1lLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTU1LDEx
ICs1NCwxNCBAQAogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTY3JpcHRDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNjcmlw
dFZhbHVlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdHlsZWRFbGVtZW50
LmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KKyNpbmNsdWRlIDxpbnNwZWN0
b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IG5hbWVzcGFjZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yT3ZlcmxheS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXku
aAppbmRleCBlZjk5MjMwLi5iNTI5MjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JPdmVybGF5LmgKQEAgLTMyLDIwICszMiwyMiBAQAogI2luY2x1ZGUgIkNvbG9yLmgi
CiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgotCiAjaW5j
bHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFzcyBJbnNwZWN0
b3JPYmplY3Q7CitjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDb2xvcjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEluc3BlY3Rv
ckNsaWVudDsKLWNsYXNzIEluc3BlY3RvclZhbHVlOwotY2xhc3MgSW5zcGVjdG9yT2JqZWN0Owog
Y2xhc3MgSW50UmVjdDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBQYWdlOwpAQCAtMTI0LDcgKzEyNiw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkU2V0U2VhcmNoaW5nRm9yTm9kZShib29sIGVuYWJs
ZWQpOwogCi0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9ySGln
aGxpZ2h0ZWROb2RlKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4gYnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGUoKSBjb25zdDsKIAogICAgIHZv
aWQgZnJlZVBhZ2UoKTsKIHByaXZhdGU6CkBAIC0xMzcsNyArMTM5LDcgQEAgcHJpdmF0ZToKICAg
ICBQYWdlKiBvdmVybGF5UGFnZSgpOwogICAgIHZvaWQgcmVzZXQoY29uc3QgSW50U2l6ZSYgdmll
d3BvcnRTaXplLCBjb25zdCBJbnRTaXplJiBmcmFtZVZpZXdGdWxsU2l6ZSk7CiAgICAgdm9pZCBl
dmFsdWF0ZUluT3ZlcmxheShjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgU3RyaW5nJiBhcmd1
bWVudCk7Ci0gICAgdm9pZCBldmFsdWF0ZUluT3ZlcmxheShjb25zdCBTdHJpbmcmIG1ldGhvZCwg
UGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gYXJndW1lbnQpOworICAgIHZvaWQgZXZhbHVhdGVJ
bk92ZXJsYXkoY29uc3QgU3RyaW5nJiBtZXRob2QsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JWYWx1ZT4gYXJndW1lbnQpOwogCiAgICAgUGFnZSogbV9wYWdlOwogICAgIEluc3BlY3Rv
ckNsaWVudCogbV9jbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JQYWdlQWdlbnQuY3BwCmluZGV4IGMwYmVkOWUuLjg3YTliYjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC02Niw3ICs2Niw2IEBA
CiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5LmgiCi0jaW5jbHVkZSAi
SW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2lu
Y2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCkBAIC03NCwxMiAr
NzMsMTMgQEAKICNpbmNsdWRlICJSZWd1bGFyRXhwcmVzc2lvbi5oIgogI2luY2x1ZGUgIlJlc291
cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNj
cmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlICJUZXh0UmVzb3Vy
Y2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKKyNpbmNsdWRl
IDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JW
YWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTGlz
dEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC05MCw2ICs5MCw4IEBACiAj
aW5jbHVkZSAiTGVnYWN5V2ViQXJjaGl2ZS5oIgogI2VuZGlmCiAKK3VzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGJvb2wgZGVjb2RlQnVm
ZmVyKGNvbnN0IGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0
RW5jb2RpbmdOYW1lLCBTdHJpbmcqIHJlc3VsdCkKQEAgLTM1MSw3ICszNTMsNyBAQCBUeXBlQnVp
bGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpFbnVtIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVk
UmVzb3VyY2VUeXBlSnNvbgogfQogCiBJbnNwZWN0b3JQYWdlQWdlbnQ6Okluc3BlY3RvclBhZ2VB
Z2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBQYWdlKiBwYWdl
LCBJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQsIEluamVjdGVkU2NyaXB0TWFuYWdlciog
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCwgSW5zcGVjdG9y
T3ZlcmxheSogb3ZlcmxheSkKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVyYWwo
IlBhZ2UiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShB
U0NJSUxpdGVyYWwoIlBhZ2UiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fcGFnZShw
YWdlKQogICAgICwgbV9pbnNwZWN0b3JBZ2VudChpbnNwZWN0b3JBZ2VudCkKICAgICAsIG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKQEAgLTM3MSw3ICszNzMs
NyBAQCBJbnNwZWN0b3JQYWdlQWdlbnQ6Okluc3BlY3RvclBhZ2VBZ2VudChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLAogewogfQogCi12b2lkIEluc3BlY3RvclBhZ2VB
Z2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERp
c3BhdGNoZXIpCit2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5u
ZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAg
ICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yUGFnZUZy
b250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRj
aGVyID0gSW5zcGVjdG9yUGFnZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3Bh
dGNoZXIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VB
Z2VudC5oCmluZGV4IDFiMjZiNmUuLjM4ZDdkMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTM1LDggKzM1LDkgQEAKIAogI2luY2x1ZGUg
IkRldmljZU9yaWVudGF0aW9uRGF0YS5oIgogI2luY2x1ZGUgIkdlb2xvY2F0aW9uUG9zaXRpb24u
aCIKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgorI2lu
Y2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNp
bmNsdWRlICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTQ0LDYg
KzQ1LDExIEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNzIEluc3BlY3RvckFycmF5
OworY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIENhY2hlZFJlc291cmNlOwpAQCAtNTQsOSArNjAsNyBAQCBjbGFzcyBGcm9udGVuZDsKIGNs
YXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKIGNsYXNz
IEluc3BlY3RvckFnZW50OwotY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBjbGFzcyBJbnNwZWN0b3JD
bGllbnQ7Ci1jbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnNwZWN0b3JPdmVybGF5Owog
Y2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFVSTDsKQEAgLTY3LDcgKzcxLDcgQEAg
Y2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7
CiAKLWNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQs
IHB1YmxpYyBJbnNwZWN0b3JQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIElu
c3BlY3RvclBhZ2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNw
ZWN0b3JQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShJbnNwZWN0b3JQYWdlQWdlbnQpOwogcHVibGljOgogICAgIGVudW0gUmVzb3VyY2VUeXBl
IHsKQEAgLTE2Myw3ICsxNjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY3JpcHRzRW5hYmxlZChi
b29sIGlzRW5hYmxlZCk7CiAKICAgICAvLyBJbnNwZWN0b3IgQ29udHJvbGxlciBBUEkKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tl
bmQoKSBPVkVSUklERTsKIAogICAgIC8vIENyb3NzLWFnZW50cyBBUEkKQEAgLTIxOCw3ICsyMjIs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pZ25vcmVTY3JpcHRzRW5hYmxlZE5vdGlmaWNhdGlv
bjsKICAgICBib29sIG1fc2hvd1BhaW50UmVjdHM7CiAgICAgU3RyaW5nIG1fZW11bGF0ZWRNZWRp
YTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtX3NjcmlwdHNUb0V2YWx1YXRlT25Mb2Fk
OworICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gbV9zY3JpcHRzVG9FdmFs
dWF0ZU9uTG9hZDsKICAgICBSZWZQdHI8R2VvbG9jYXRpb25Qb3NpdGlvbj4gbV9nZW9sb2NhdGlv
blBvc2l0aW9uOwogICAgIFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBtX3BsYXRmb3JtR2Vv
bG9jYXRpb25Qb3NpdGlvbjsKICAgICBSZWZQdHI8RGV2aWNlT3JpZW50YXRpb25EYXRhPiBtX2Rl
dmljZU9yaWVudGF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IGJhZjUxZjQuLjQ2Nzc2MmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKQEAg
LTQwLDIwICs0MCwyMiBAQAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckNvbnNvbGVBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5k
LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGlu
Z0FnZW50cy5oIgogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRl
ICJQYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCIKICNpbmNsdWRlICJTY3JpcHRIZWFwU25hcHNob3Qu
aCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZXIuaCIKICNpbmNsdWRlICJXb3JrZXJTY3JpcHREZWJ1
Z1NlcnZlci5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgorI2luY2x1ZGUg
PGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29u
Y2F0ZW5hdGUuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgVXNlckluaXRpYXRlZFByb2ZpbGVO
YW1lID0gIm9yZy53ZWJraXQucHJvZmlsZXMudXNlci1pbml0aWF0ZWQiOwpAQCAtMTE5LDcgKzEy
MSw3IEBAIFBhc3NPd25QdHI8SW5zcGVjdG9yUHJvZmlsZXJBZ2VudD4gSW5zcGVjdG9yUHJvZmls
ZXJBZ2VudDo6Y3JlYXRlKEluc3RydW1lbnRpbmdBCiB9CiAKIEluc3BlY3RvclByb2ZpbGVyQWdl
bnQ6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cywgSW5zcGVjdG9yQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQsIEluamVjdGVk
U2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgIDogSW5zcGVjdG9yQmFz
ZUFnZW50KEFTQ0lJTGl0ZXJhbCgiUHJvZmlsZXIiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAg
ICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIlByb2ZpbGVyIiksIGluc3RydW1l
bnRpbmdBZ2VudHMpCiAgICAgLCBtX2NvbnNvbGVBZ2VudChjb25zb2xlQWdlbnQpCiAgICAgLCBt
X2luamVjdGVkU2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBtX2Vu
YWJsZWQoZmFsc2UpCkBAIC0zMjcsNyArMzI5LDcgQEAgdm9pZCBJbnNwZWN0b3JQcm9maWxlckFn
ZW50OjpyZXNldEZyb250ZW5kUHJvZmlsZXMoKQogICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ci0+cmVzZXRQcm9maWxlcygpOwogfQogCi12b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250
ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVy
KQordm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1f
ZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JQcm9maWxlckZy
b250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRj
aGVyID0gSW5zcGVjdG9yUHJvZmlsZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmRE
aXNwYXRjaGVyLCB0aGlzKTsKQEAgLTQyMiw3ICs0MjQsNyBAQCB2b2lkIEluc3BlY3RvclByb2Zp
bGVyQWdlbnQ6OmdldE9iamVjdEJ5SGVhcE9iamVjdElkKEVycm9yU3RyaW5nKiBlcnJvciwgY29u
c3QgUwogICAgICAgICAqZXJyb3IgPSAiSW52YWxpZCBoZWFwIHNuYXBzaG90IG9iamVjdCBpZCI7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgU2NyaXB0T2JqZWN0IGhlYXBPYmplY3QgPSBT
Y3JpcHRQcm9maWxlcjo6b2JqZWN0QnlIZWFwT2JqZWN0SWQoaWQpOworICAgIERlcHJlY2F0ZWQ6
OlNjcmlwdE9iamVjdCBoZWFwT2JqZWN0ID0gU2NyaXB0UHJvZmlsZXI6Om9iamVjdEJ5SGVhcE9i
amVjdElkKGlkKTsKICAgICBpZiAoaGVhcE9iamVjdC5oYXNOb1ZhbHVlKCkpIHsKICAgICAgICAg
KmVycm9yID0gIk9iamVjdCBpcyBub3QgYXZhaWxhYmxlIjsKICAgICAgICAgcmV0dXJuOwpAQCAt
NDQ0LDcgKzQ0Niw3IEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0SGVhcE9iamVj
dElkKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyCiAgICAgICAgICplcnJvclN0
cmluZyA9ICJJbnNwZWN0ZWQgY29udGV4dCBoYXMgZ29uZSI7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgU2NyaXB0VmFsdWUgdmFsdWUgPSBpbmplY3RlZFNjcmlwdC5maW5kT2JqZWN0QnlJ
ZChvYmplY3RJZCk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgdmFsdWUgPSBpbmplY3Rl
ZFNjcmlwdC5maW5kT2JqZWN0QnlJZChvYmplY3RJZCk7CiAgICAgaWYgKHZhbHVlLmhhc05vVmFs
dWUoKSB8fCB2YWx1ZS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgICplcnJvclN0cmluZyA9ICJP
YmplY3Qgd2l0aCBnaXZlbiBpZCBub3QgZm91bmQiOwogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaAppbmRleCA1
MzcwOWM1Li45YWY3MGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUHJvZmlsZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQcm9maWxlckFnZW50LmgKQEAgLTMyLDIwICszMiwyNCBAQAogCiAjaWYgRU5BQkxFKEpB
VkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNw
ZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgorI2luY2x1ZGUgIkluc3BlY3Rvcldl
YkFnZW50QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKK2NsYXNzIEluc3BlY3RvckFycmF5OworY2xhc3MgSW5zcGVjdG9yT2JqZWN0
OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdl
cjsKLWNsYXNzIEluc3BlY3RvckFycmF5OwogY2xhc3MgSW5zcGVjdG9yQ29uc29sZUFnZW50Owot
Y2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNz
IFBhZ2U7CiBjbGFzcyBTY3JpcHRIZWFwU25hcHNob3Q7CkBAIC01NCw3ICs1OCw3IEBAIGNsYXNz
IFdvcmtlckdsb2JhbFNjb3BlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xh
c3MgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1
YmxpYyBJbnNwZWN0b3JQcm9maWxlckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJ
bnNwZWN0b3JQcm9maWxlckFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGlj
IEluc3BlY3RvclByb2ZpbGVyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShJbnNwZWN0b3JQcm9maWxlckFnZW50KTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yUHJvZmlsZXJB
Z2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JDb25zb2xlQWdlbnQq
LCBQYWdlKiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKik7CkBAIC04OCw3ICs5Miw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0SGVhcFNuYXBzaG90KEVycm9yU3RyaW5nKiwgaW50IHVp
ZCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVByb2ZpbGUoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIHR5cGUsIGludCB1aWQpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0
b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0
dWFsIHZvaWQgdGFrZUhlYXBTbmFwc2hvdChFcnJvclN0cmluZyosIGNvbnN0IGJvb2wqIHJlcG9y
dFByb2dyZXNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZUFnZW50LmNwcAppbmRleCAzOGRjZGFhLi41ZmFkYjQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC00OCw3
ICs0OCw2IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKLSNpbmNsdWRl
ICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAj
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKQEAgLTY3LDE2ICs2Niwx
OCBAQAogI2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0
RnJhbWUuaCIKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdC5oIgotCisjaW5jbHVkZSA8aW5zcGVj
dG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvclJlc291cmNl
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3Rvck5ldHdvcmtGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5k
Q2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvck5ldHdvcmtCYWNr
ZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKQEAgLTY1MCw3
ICs2NTEsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6Om1haW5GcmFtZU5hdmlnYXRl
ZChEb2N1bWVudExvYWRlciogbG9hZGVyKQogfQogCiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdB
Z2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBJbnNwZWN0b3JDbGllbnQqIGNs
aWVudCkKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIk5ldHdvcmsiKSwg
aW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVy
YWwoIk5ldHdvcmsiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fcGFnZUFnZW50KHBh
Z2VBZ2VudCkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fcmVzb3VyY2VzRGF0YShh
ZG9wdFB0cihuZXcgTmV0d29ya1Jlc291cmNlc0RhdGEoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAppbmRleCA4YzI3Zjk0Li4yNDgz
MWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50LmgKQEAgLTMxLDkgKzMxLDkgQEAKICNpZm5kZWYgSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dF9oCiAjZGVmaW5lIEluc3BlY3RvclJlc291cmNlQWdlbnRfaAogCi0jaW5jbHVkZSAiSW5zcGVj
dG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKLQorI2luY2x1ZGUgIkluc3BlY3Rvcldl
YkFnZW50QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC00MSw4ICs0MSw5IEBA
CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi1uYW1lc3BhY2UgV1RGIHsKLWNsYXNzIFN0cmlu
ZzsKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yQXJyYXk7CitjbGFzcyBJ
bnNwZWN0b3JPYmplY3Q7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUzLDkgKzU0LDcg
QEAgY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGb3JtRGF0YTsKIGNsYXNzIEZyYW1lOwog
Y2xhc3MgSFRUUEhlYWRlck1hcDsKLWNsYXNzIEluc3BlY3RvckFycmF5OwogY2xhc3MgSW5zcGVj
dG9yQ2xpZW50OwotY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3MgSW5zcGVjdG9yUGFnZUFn
ZW50OwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFVSTDsKQEAgLTc2LDcgKzc1
LDcgQEAgc3RydWN0IFdlYlNvY2tldEZyYW1lOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmlu
ZzsKIAotY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNl
QWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JOZXR3b3JrQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsK
K2NsYXNzIEluc3BlY3RvclJlc291cmNlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNl
LCBwdWJsaWMgSW5zcGVjdG9yTmV0d29ya0JhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yUmVzb3VyY2VBZ2VudD4gY3JlYXRl
KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBhZ2VB
Z2VudCogcGFnZUFnZW50LCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkKICAgICB7CkBAIC04NSw3
ICs4NCw3IEBAIHB1YmxpYzoKIAogICAgIH5JbnNwZWN0b3JSZXNvdXJjZUFnZW50KCk7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJh
Y2tlbmQoKSBPVkVSUklERTsKIAogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKQEAgLTEzNSw3ICsxMzQsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1
YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIHNldFVzZXJB
Z2VudE92ZXJyaWRlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRFeHRyYUhUVFBIZWFkZXJzKEVycm9yU3RyaW5nKiwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RXh0cmFIVFRQSGVh
ZGVycyhFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4mKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVzcG9uc2VCb2R5KEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQsIFN0cmluZyogY29udGVudCwgYm9vbCogYmFzZTY0RW5jb2Rl
ZCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVwbGF5WEhSKEVycm9yU3RyaW5nKiwgY29uc3QgU3Ry
aW5nJiByZXF1ZXN0SWQpOwpAQCAtMTYwLDcgKzE1OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2VuYWJsZWQ7CiAgICAgYm9vbCBtX2NhY2hlRGlzYWJsZWQ7CiAgICAgYm9vbCBtX2xvYWRpbmdY
SFJTeW5jaHJvbm91c2x5OwotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1fZXh0cmFSZXF1
ZXN0SGVhZGVyczsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1fZXh0
cmFSZXF1ZXN0SGVhZGVyczsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50KiwgUmVmUHRyPFhIUlJlcGxheURhdGE+PiBQZW5kaW5nWEhSUmVwbGF5RGF0YU1hcDsK
ICAgICBQZW5kaW5nWEhSUmVwbGF5RGF0YU1hcCBtX3BlbmRpbmdYSFJSZXBsYXlEYXRhOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcApp
bmRleCA4YjM0NjkwLi42ZWEyZjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcApAQCAtMzYsOCArMzYsOCBAQAogCiAjaW5jbHVk
ZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIK
LSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2Uu
aCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8cGFy
c2VyL1BhcnNlckVycm9yLmg+CiAjaW5jbHVkZSA8cGFyc2VyL1NvdXJjZUNvZGUuaD4KICNpbmNs
dWRlIDxydW50aW1lL0NvbXBsZXRpb24uaD4KQEAgLTUwLDYgKzUwLDggQEAKIAogdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdGF0aWMgYm9vbCBhc0Jvb2woY29uc3QgYm9vbCogY29uc3QgYikKQEAgLTU4
LDcgKzYwLDcgQEAgc3RhdGljIGJvb2wgYXNCb29sKGNvbnN0IGJvb2wqIGNvbnN0IGIpCiB9CiAK
IEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6SW5zcGVjdG9yUnVudGltZUFnZW50KEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJh
bCgiUnVudGltZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRC
YXNlKEFTQ0lJTGl0ZXJhbCgiUnVudGltZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwg
bV9lbmFibGVkKGZhbHNlKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKQogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCmluZGV4IDliNTdl
MmIuLjJlOTE1OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSdW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UnVudGltZUFnZW50LmgKQEAgLTMzLDI1ICszMywyOSBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5o
IgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBJbmplY3RlZFNjcmlwdDsKLWNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKK25hbWVzcGFj
ZSBJbnNwZWN0b3IgewogY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBjbGFzcyBJbnNwZWN0b3JPYmpl
Y3Q7CiBjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBJbmplY3RlZFNjcmlwdDsKK2NsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKIGNsYXNz
IEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBTY3JpcHREZWJ1Z1NlcnZlcjsKIGNsYXNzIFdv
cmtlckdsb2JhbFNjb3BlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3Mg
SW5zcGVjdG9yUnVudGltZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGlj
IEluc3BlY3RvclJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVj
dG9yUnVudGltZUFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3Bl
Y3RvclJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEluc3BlY3RvclJ1bnRpbWVBZ2VudCk7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5z
cGVjdG9yUnVudGltZUFnZW50KCk7CkBAIC03NCw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgY2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcqLAogICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwKICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFN0cmluZyYgZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3JBcnJheT4qIG9wdGlvbmFsQXJndW1lbnRzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+KiBvcHRpb25h
bEFyZ3VtZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wqIGRvTm90UGF1
c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGJvb2wqIHJldHVybkJ5VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBi
b29sKiBnZW5lcmF0ZVByZXZpZXcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5jcHAKaW5kZXggNjc2NjIyYi4uNzE2MDE2MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtNDksNyAr
NDksNiBAQAogI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JDU1NBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgotI2luY2x1ZGUg
Ikluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJSZWd1bGFy
RXhwcmVzc2lvbi5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCkBAIC02MCw3ICs1OSw3IEBACiAj
aW5jbHVkZSAiU3R5bGVTaGVldENvbnRlbnRzLmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldExpc3Qu
aCIKICNpbmNsdWRlICJXZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmgiCi0KKyNpbmNsdWRlIDxpbnNw
ZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMTQ0LDYg
KzE0Myw4IEBAIFBhc3NSZWZQdHI8V2ViQ29yZTo6Q1NTUnVsZVNvdXJjZURhdGE+IFBhcnNlZFN0
eWxlU2hlZXQ6OnJ1bGVTb3VyY2VEYXRhQXQodW5zaWduCiAgICAgcmV0dXJuIG1fc291cmNlRGF0
YS0+YXQoaW5kZXgpOwogfQogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGVudW0gTWVkaWFMaXN0U291cmNlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCmluZGV4IGY1MDM5YjQuLjNiNzliNjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaApA
QCAtMzAsOCArMzAsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRl
ci5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgotCisjaW5jbHVkZSA8aW5zcGVjdG9y
L0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNjQsMTIgKzYz
LDEyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgZXhwbGljaXQgSW5zcGVjdG9yQ1NT
SWQoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gdmFsdWUpCisgICAgZXhwbGljaXQgSW5zcGVjdG9y
Q1NTSWQoUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiB2YWx1ZSkKICAgICB7CiAg
ICAgICAgIGlmICghdmFsdWUtPmdldFN0cmluZygic3R5bGVTaGVldElkIiwgJm1fc3R5bGVTaGVl
dElkKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgICAgIFJlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4gb3JkaW5hbFZhbHVlID0gdmFsdWUtPmdldCgib3JkaW5hbCIpOworICAgICAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gb3JkaW5hbFZhbHVlID0gdmFsdWUt
PmdldCgib3JkaW5hbCIpOwogICAgICAgICBpZiAoIW9yZGluYWxWYWx1ZSB8fCAhb3JkaW5hbFZh
bHVlLT5hc051bWJlcigmbV9vcmRpbmFsKSkKICAgICAgICAgICAgIG1fc3R5bGVTaGVldElkID0g
IiI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlVGV4dEVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVUZXh0RWRpdG9yLmNwcAppbmRleCBiNmVjNGRiLi5mMzA5OWE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVUZXh0RWRpdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVUZXh0RWRpdG9yLmNwcApA
QCAtMzIsNiArMzIsOCBAQAogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JTdHlsZVNoZWV0LmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW5zcGVjdG9yU3R5bGVUZXh0RWRpdG9yOjpJbnNwZWN0
b3JTdHlsZVRleHRFZGl0b3IoVmVjdG9yPEluc3BlY3RvclN0eWxlUHJvcGVydHk+KiBhbGxQcm9w
ZXJ0aWVzLCBWZWN0b3I8SW5zcGVjdG9yU3R5bGVQcm9wZXJ0eT4qIGRpc2FibGVkUHJvcGVydGll
cywgY29uc3QgU3RyaW5nJiBzdHlsZVRleHQsIGNvbnN0IE5ld0xpbmVBbmRXaGl0ZXNwYWNlJiBm
b3JtYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHAKaW5kZXggNGM4OGIxYi4uNGIxYzhhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApAQCAtNTQsNiArNTQs
OCBAQAogI2luY2x1ZGUgIlRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oIgogI2luY2x1ZGUgPHd0Zi9D
dXJyZW50VGltZS5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHZvaWQgVGltZWxpbmVUaW1lQ29udmVydGVyOjpyZXNldCgpCkBAIC02NSw3
ICs2Nyw3IEBAIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6On5JbnNwZWN0b3JUaW1lbGluZUFnZW50
KCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yVGltZWxpbmVGcm9udGVuZERpc3BhdGNo
ZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rv
clRpbWVsaW5lQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhp
cyk7CkBAIC01ODAsNyArNTgyLDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRD
b21wbGV0ZUN1cnJlbnRSZWNvcmQoVGltZWxpbmVSZWNvcmRUeXBlIHR5cGUpCiB9CiAKIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQs
IEluc3BlY3Rvck1lbW9yeUFnZW50KiBtZW1vcnlBZ2VudCwgSW5zcGVjdG9yVHlwZSB0eXBlLCBJ
bnNwZWN0b3JDbGllbnQqIGNsaWVudCkKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxp
dGVyYWwoIlRpbWVsaW5lIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JB
Z2VudEJhc2UoQVNDSUlMaXRlcmFsKCJUaW1lbGluZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQog
ICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQogICAgICwgbV9tZW1vcnlBZ2VudChtZW1vcnlB
Z2VudCkKICAgICAsIG1faWQoMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5oCmluZGV4IDQ1ZGMyZjMuLjdiZmE1NTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaApAQCAtMzMs
MTAgKzMzLDExIEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVj
dG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1
ZXMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRlICJMYXlv
dXRSZWN0LmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi9XZWFrUHRyLmg+CkBAIC0xMjEsNyArMTIyLDcgQEAgcHJpdmF0ZToKIH07CiAKIGNsYXNz
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQKLSAgICA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQK
KyAgICA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UKICAgICAsIHB1YmxpYyBJbnNwZWN0b3JU
aW1lbGluZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCk7CiBwdWJsaWM6CkBAIC0xMzQsNyArMTM1LDcgQEAg
cHVibGljOgogCiAgICAgfkluc3BlY3RvclRpbWVsaW5lQWdlbnQoKTsKIAotICAgIHZpcnR1YWwg
dm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9W
RVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KEVycm9yU3RyaW5nKiwgY29uc3QgaW50
KiBtYXhDYWxsU3RhY2tEZXB0aCwgY29uc3QgYm9vbCogaW5jbHVkZURvbUNvdW50ZXJzKTsKQEAg
LTIyMCwzMyArMjIxLDMzIEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFRpbWVsaW5lUmVj
b3JkU3RhY2s7CiAKICAgICBzdHJ1Y3QgVGltZWxpbmVSZWNvcmRFbnRyeSB7Ci0gICAgICAgIFRp
bWVsaW5lUmVjb3JkRW50cnkoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlY29yZCwgUGFz
c1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEsIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
IGNoaWxkcmVuLCBUaW1lbGluZVJlY29yZFR5cGUgdHlwZSwgc2l6ZV90IHVzZWRIZWFwU2l6ZUF0
U3RhcnQpCisgICAgICAgIFRpbWVsaW5lUmVjb3JkRW50cnkoUGFzc1JlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdD4gcmVjb3JkLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0PiBkYXRhLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+IGNoaWxk
cmVuLCBUaW1lbGluZVJlY29yZFR5cGUgdHlwZSwgc2l6ZV90IHVzZWRIZWFwU2l6ZUF0U3RhcnQp
CiAgICAgICAgICAgICA6IHJlY29yZChyZWNvcmQpLCBkYXRhKGRhdGEpLCBjaGlsZHJlbihjaGls
ZHJlbiksIHR5cGUodHlwZSksIHVzZWRIZWFwU2l6ZUF0U3RhcnQodXNlZEhlYXBTaXplQXRTdGFy
dCkKICAgICAgICAgewogICAgICAgICB9Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IHJlY29yZDsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YTsKLSAgICAgICAg
UmVmUHRyPEluc3BlY3RvckFycmF5PiBjaGlsZHJlbjsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQ7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdD4gZGF0YTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
QXJyYXk+IGNoaWxkcmVuOwogICAgICAgICBUaW1lbGluZVJlY29yZFR5cGUgdHlwZTsKICAgICAg
ICAgc2l6ZV90IHVzZWRIZWFwU2l6ZUF0U3RhcnQ7CiAgICAgfTsKIAogICAgIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclBhZ2VBZ2VudCosIElu
c3BlY3Rvck1lbW9yeUFnZW50KiwgSW5zcGVjdG9yVHlwZSwgSW5zcGVjdG9yQ2xpZW50Kik7CiAK
LSAgICB2b2lkIHNlbmRFdmVudChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4pOwotICAgIHZv
aWQgYXBwZW5kUmVjb3JkKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhLCBUaW1lbGlu
ZVJlY29yZFR5cGUsIGJvb2wgY2FwdHVyZUNhbGxTdGFjaywgRnJhbWUqKTsKLSAgICB2b2lkIHB1
c2hDdXJyZW50UmVjb3JkKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiwgVGltZWxpbmVSZWNv
cmRUeXBlLCBib29sIGNhcHR1cmVDYWxsU3RhY2ssIEZyYW1lKik7CisgICAgdm9pZCBzZW5kRXZl
bnQoUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4pOworICAgIHZvaWQgYXBw
ZW5kUmVjb3JkKFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGRhdGEsIFRp
bWVsaW5lUmVjb3JkVHlwZSwgYm9vbCBjYXB0dXJlQ2FsbFN0YWNrLCBGcmFtZSopOworICAgIHZv
aWQgcHVzaEN1cnJlbnRSZWNvcmQoUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4sIFRpbWVsaW5lUmVjb3JkVHlwZSwgYm9vbCBjYXB0dXJlQ2FsbFN0YWNrLCBGcmFtZSopOwog
CiAgICAgdm9pZCBzZXRET01Db3VudGVycyhUeXBlQnVpbGRlcjo6VGltZWxpbmU6OlRpbWVsaW5l
RXZlbnQqIHJlY29yZCk7Ci0gICAgdm9pZCBzZXRGcmFtZUlkZW50aWZpZXIoSW5zcGVjdG9yT2Jq
ZWN0KiByZWNvcmQsIEZyYW1lKik7CisgICAgdm9pZCBzZXRGcmFtZUlkZW50aWZpZXIoSW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3QqIHJlY29yZCwgRnJhbWUqKTsKIAogICAgIHZvaWQgZGlkQ29t
cGxldGVDdXJyZW50UmVjb3JkKFRpbWVsaW5lUmVjb3JkVHlwZSk7CiAKLSAgICB2b2lkIHNldEhl
YXBTaXplU3RhdGlzdGljcyhJbnNwZWN0b3JPYmplY3QqIHJlY29yZCk7CisgICAgdm9pZCBzZXRI
ZWFwU2l6ZVN0YXRpc3RpY3MoSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIHJlY29yZCk7CiAg
ICAgdm9pZCBjb21taXRGcmFtZVJlY29yZCgpOwogCi0gICAgdm9pZCBhZGRSZWNvcmRUb1RpbWVs
aW5lKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiwgVGltZWxpbmVSZWNvcmRUeXBlKTsKLSAg
ICB2b2lkIGlubmVyQWRkUmVjb3JkVG9UaW1lbGluZShQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4sIFRpbWVsaW5lUmVjb3JkVHlwZSk7CisgICAgdm9pZCBhZGRSZWNvcmRUb1RpbWVsaW5lKFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+LCBUaW1lbGluZVJlY29yZFR5cGUp
OworICAgIHZvaWQgaW5uZXJBZGRSZWNvcmRUb1RpbWVsaW5lKFBhc3NSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3Q+LCBUaW1lbGluZVJlY29yZFR5cGUpOwogICAgIHZvaWQgY2xlYXJS
ZWNvcmRTdGFjaygpOwogCiAgICAgdm9pZCBsb2NhbFRvUGFnZVF1YWQoY29uc3QgUmVuZGVyT2Jq
ZWN0JiwgY29uc3QgTGF5b3V0UmVjdCYsIEZsb2F0UXVhZCopOwpAQCAtMjY2LDcgKzI2Nyw3IEBA
IHByaXZhdGU6CiAKICAgICBpbnQgbV9pZDsKICAgICBpbnQgbV9tYXhDYWxsU3RhY2tEZXB0aDsK
LSAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtX3BlbmRpbmdGcmFtZVJlY29yZDsKKyAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1fcGVuZGluZ0ZyYW1lUmVjb3JkOwog
ICAgIEluc3BlY3RvclR5cGUgbV9pbnNwZWN0b3JUeXBlOwogICAgIEluc3BlY3RvckNsaWVudCog
bV9jbGllbnQ7CiAgICAgV2Vha1B0ckZhY3Rvcnk8SW5zcGVjdG9yVGltZWxpbmVBZ2VudD4gbV93
ZWFrRmFjdG9yeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JBZ2VudFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV2Vi
QWdlbnRCYXNlLmgKc2ltaWxhcml0eSBpbmRleCA2OSUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaApyZW5hbWUgdG8gU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5oCmluZGV4IDRmZDAzNTMuLmRm
Y2M0YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2Vu
dFJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldlYkFn
ZW50QmFzZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNCwyOSArMjQs
MjggQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBJbnNwZWN0b3JBZ2VudFJlZ2lz
dHJ5X2gKLSNkZWZpbmUgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeV9oCisjaWZuZGVmIEluc3BlY3Rv
cldlYkFnZW50QmFzZV9oCisjZGVmaW5lIEluc3BlY3RvcldlYkFnZW50QmFzZV9oCiAKLSNpbmNs
dWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgot
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlICJJbnNwZWN0b3JGb3J3YXJkaW5nLmgi
CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOworY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIAotY2xh
c3MgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeSB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBhcHBlbmQoUGFz
c093blB0cjxJbnNwZWN0b3JCYXNlQWdlbnQ+KTsKK2NsYXNzIEluc3BlY3RvckFnZW50QmFzZSA6
IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50QmFzZSB7Citwcm90ZWN0ZWQ6CisgICAg
SW5zcGVjdG9yQWdlbnRCYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgSW5zdHJ1bWVudGluZ0FnZW50
cyogaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICAgICAgOiBJbnNwZWN0b3I6Okluc3BlY3RvckFn
ZW50QmFzZShuYW1lKQorICAgICAgICAsIG1faW5zdHJ1bWVudGluZ0FnZW50cyhpbnN0cnVtZW50
aW5nQWdlbnRzKQorICAgIHsKKyAgICB9CiAKLSAgICB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlciopOwotICAgIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKTsKLSAgICB2
b2lkIGRpc2NhcmRBZ2VudHMoKTsKLQotcHJpdmF0ZToKLSAgICBWZWN0b3I8T3duUHRyPEluc3Bl
Y3RvckJhc2VBZ2VudD4+IG1fYWdlbnRzOworICAgIEluc3RydW1lbnRpbmdBZ2VudHMqIG1faW5z
dHJ1bWVudGluZ0FnZW50czsKIH07Ci0KKyAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAot
I2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckFnZW50UmVnaXN0cnlfaCkKKyNlbmRpZiAvLyAh
ZGVmaW5lZChJbnNwZWN0b3JXZWJBZ2VudEJhc2VfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCmluZGV4IDMyODAxYzYuLjg4NDU2YzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50
LmNwcApAQCAtMzYsMTMgKzM2LDE1IEBACiAKICNpbmNsdWRlICJJbnNwZWN0b3JGb3J3YXJkaW5n
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JW
YWx1ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIgorI2luY2x1ZGUgPGluc3Bl
Y3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6V29ya2VyRnJv
bnRlbmRDaGFubmVsIDogcHVibGljIFdvcmtlckdsb2JhbFNjb3BlUHJveHk6OlBhZ2VJbnNwZWN0
b3IgewpAQCAtMTA3LDcgKzEwOSw3IEBAIFBhc3NPd25QdHI8SW5zcGVjdG9yV29ya2VyQWdlbnQ+
IEluc3BlY3RvcldvcmtlckFnZW50OjpjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50CiB9CiAKIElu
c3BlY3RvcldvcmtlckFnZW50OjpJbnNwZWN0b3JXb3JrZXJBZ2VudChJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJ
TGl0ZXJhbCgiV29ya2VyIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JB
Z2VudEJhc2UoQVNDSUlMaXRlcmFsKCJXb3JrZXIiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAg
ICAsIG1fZW5hYmxlZChmYWxzZSkKICAgICAsIG1fc2hvdWxkUGF1c2VEZWRpY2F0ZWRXb3JrZXJP
blN0YXJ0KGZhbHNlKQogewpAQCAtMTE5LDcgKzEyMSw3IEBAIEluc3BlY3RvcldvcmtlckFnZW50
Ojp+SW5zcGVjdG9yV29ya2VyQWdlbnQoKQogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0
SW5zcGVjdG9yV29ya2VyQWdlbnQoMCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6
OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZy
b250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRj
aGVyKQordm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWws
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yV29ya2VyRnJv
bnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNo
ZXIgPSBJbnNwZWN0b3JXb3JrZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNw
YXRjaGVyLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JXb3JrZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcldv
cmtlckFnZW50LmgKaW5kZXggYWI2MjIxYS4uZWE0NzVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmgKQEAgLTMxLDEyICszMSwxNiBAQAog
I2lmbmRlZiBJbnNwZWN0b3JXb3JrZXJBZ2VudF9oCiAjZGVmaW5lIEluc3BlY3RvcldvcmtlckFn
ZW50X2gKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFz
ZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
IAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIEluc3BlY3RvciB7CiBjbGFzcyBJbnNw
ZWN0b3JPYmplY3Q7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluc3BlY3Rvcldv
cmtlckZyb250ZW5kRGlzcGF0Y2hlcjsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFz
cyBVUkw7CkBAIC00NCwxMiArNDgsMTIgQEAgY2xhc3MgV29ya2VyR2xvYmFsU2NvcGVQcm94eTsK
IAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvcldvcmtlckFn
ZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3RvcldvcmtlckJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JXb3JrZXJBZ2VudCA6IHB1
YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JXb3JrZXJCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3Rv
cldvcmtlckFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyopOwogICAgIH5JbnNwZWN0
b3JXb3JrZXJBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Oklu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdp
bGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICAvLyBDYWxsZWQg
ZnJvbSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24KQEAgLTYzLDcgKzY3LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBjYW5JbnNwZWN0V29ya2VycyhFcnJvclN0cmluZyosIGJvb2wqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdFRvV29ya2VyKEVycm9yU3RyaW5nKiwgaW50IHdvcmtl
cklkKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdEZyb21Xb3JrZXIoRXJyb3JTdHJpbmcq
LCBpbnQgd29ya2VySWQpOwotICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZVRvV29ya2VyKEVy
cm9yU3RyaW5nKiwgaW50IHdvcmtlcklkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYg
bWVzc2FnZSk7CisgICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlVG9Xb3JrZXIoRXJyb3JTdHJp
bmcqLCBpbnQgd29ya2VySWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4mIG1lc3NhZ2UpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBdXRvY29ubmVjdFRvV29ya2VycyhF
cnJvclN0cmluZyosIGJvb2wgdmFsdWUpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuY3BwCmluZGV4IDhjZmIzMjguLjYyOGYx
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdl
bnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50
cy5jcHAKQEAgLTQwLDYgKzQwLDggQEAKICNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAordXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbnN0cnVtZW50aW5nQWdlbnRzOjpJ
bnN0cnVtZW50aW5nQWdlbnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0
d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IDk2OWQzMGQuLjVjY2E0NDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtNDYs
NiArNDYsOCBAQCBzdGF0aWMgc2l6ZV90IG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSA9IDEw
MCAqIDEwMDAgKiAxMDAwOwogc3RhdGljIHNpemVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250
ZW50U2l6ZSA9IDEwICogMTAwMCAqIDEwMDA7CiB9CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHAKaW5kZXggYmNkODlmMi4uY2VhYmJkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmNwcApAQCAtNDAsNyArNDAs
OCBAQAogI2luY2x1ZGUgIkluc3BlY3RvckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9N
QWdlbnQuaCIKICNpbmNsdWRlICJOb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisK
K3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
NjYsNyArNjcsNyBAQCB2b2lkIFBhZ2VDb25zb2xlQWdlbnQ6OmNsZWFyTWVzc2FnZXMoRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nKQogY2xhc3MgSW5zcGVjdGFibGVOb2RlIDogcHVibGljIEluamVj
dGVkU2NyaXB0SG9zdDo6SW5zcGVjdGFibGVPYmplY3QgewogcHVibGljOgogICAgIGV4cGxpY2l0
IEluc3BlY3RhYmxlTm9kZShOb2RlKiBub2RlKSA6IG1fbm9kZShub2RlKSB7IH0KLSAgICB2aXJ0
dWFsIFNjcmlwdFZhbHVlIGdldChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCisgICAgdmlydHVhbCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBnZXQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdDo6bm9kZUFzU2NyaXB0VmFsdWUoc3Rh
dGUsIG1fbm9kZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1BhZ2VEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVi
dWdnZXJBZ2VudC5jcHAKaW5kZXggODdmYWJlZS4uMDRkNDc5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCkBAIC00MSw2ICs0MSw4IEBACiAj
aW5jbHVkZSAiUGFnZUNvbnNvbGUuaCIKICNpbmNsdWRlICJQYWdlU2NyaXB0RGVidWdTZXJ2ZXIu
aCIKIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBQYXNzT3duUHRyPFBhZ2VEZWJ1Z2dlckFnZW50PiBQYWdlRGVidWdnZXJBZ2VudDo6Y3JlYXRl
KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBhZ2VB
Z2VudCogcGFnZUFnZW50LCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFu
YWdlciwgSW5zcGVjdG9yT3ZlcmxheSogb3ZlcmxheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmgKaW5kZXggNTU4NjMxMS4uYTVmODE4NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmgKQEAgLTMyLDYgKzMyLDcg
QEAKICNkZWZpbmUgUGFnZURlYnVnZ2VyQWdlbnRfaAogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRf
REVCVUdHRVIpICYmIEVOQUJMRShJTlNQRUNUT1IpCisKICNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAiUGFnZVNjcmlwdERlYnVnU2VydmVyLmgiCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcAppbmRleCA1N2IzYjMw
Li41NDg3NjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRp
bWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdl
bnQuY3BwCkBAIC00Nyw2ICs0Nyw4IEBACiAKIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpS
dW50aW1lOjpFeGVjdXRpb25Db250ZXh0RGVzY3JpcHRpb247CiAKK3VzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFnZVJ1bnRpbWVBZ2VudDo6UGFn
ZVJ1bnRpbWVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJ
bmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgUGFnZSogcGFnZSwg
SW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQpCkBAIC02Myw3ICs2NSw3IEBAIFBhZ2VSdW50
aW1lQWdlbnQ6On5QYWdlUnVudGltZUFnZW50KCkKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMt
PnNldFBhZ2VSdW50aW1lQWdlbnQoMCk7CiB9CiAKLXZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRl
bmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIp
Cit2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclJ1bnRpbWVGcm9udGVuZERp
c3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IElu
c3BlY3RvclJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVy
LCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGlt
ZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oCmlu
ZGV4IGU4YjMzYjIuLmNkMDRkOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9QYWdlUnVudGltZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VS
dW50aW1lQWdlbnQuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgUGFnZVJ1bnRpbWVBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBpbmplY3Rl
ZFNjcmlwdE1hbmFnZXIsIHBhZ2UsIHBhZ2VBZ2VudCkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5Q
YWdlUnVudGltZUFnZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Oklu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdp
bGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGVuYWJsZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3Ry
aW5nKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1l
bnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwCmlu
ZGV4IDg5YjlhMGIuLjM2NTdhOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9TY3JpcHRBcmd1bWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3Jp
cHRBcmd1bWVudHMuY3BwCkBAIC0zMSwxNiArMzEsMTYgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIKIAotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgi
CisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1QYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gU2NyaXB0QXJndW1lbnRzOjpjcmVhdGUo
SlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBWZWN0b3I8U2NyaXB0VmFsdWU+JiBhcmd1bWVu
dHMpCitQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gU2NyaXB0QXJndW1lbnRzOjpjcmVhdGUo
SlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBWZWN0b3I8RGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWU+JiBhcmd1bWVudHMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTY3JpcHRBcmd1bWVu
dHMoc2NyaXB0U3RhdGUsIGFyZ3VtZW50cykpOwogfQogCi1TY3JpcHRBcmd1bWVudHM6OlNjcmlw
dEFyZ3VtZW50cyhKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIFZlY3RvcjxTY3JpcHRWYWx1
ZT4mIGFyZ3VtZW50cykKK1NjcmlwdEFyZ3VtZW50czo6U2NyaXB0QXJndW1lbnRzKEpTQzo6RXhl
Y1N0YXRlKiBzY3JpcHRTdGF0ZSwgVmVjdG9yPERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlPiYgYXJn
dW1lbnRzKQogICAgIDogbV9nbG9iYWxPYmplY3Qoc2NyaXB0U3RhdGUtPnZtKCksIHNjcmlwdFN0
YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpCiB7CiAgICAgbV9hcmd1bWVudHMuc3dhcChhcmd1
bWVudHMpOwpAQCAtNTAsNyArNTAsNyBAQCBTY3JpcHRBcmd1bWVudHM6On5TY3JpcHRBcmd1bWVu
dHMoKQogewogfQogCi1jb25zdCBTY3JpcHRWYWx1ZSAmU2NyaXB0QXJndW1lbnRzOjphcmd1bWVu
dEF0KHNpemVfdCBpbmRleCkgY29uc3QKK2NvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlICZT
Y3JpcHRBcmd1bWVudHM6OmFyZ3VtZW50QXQoc2l6ZV90IGluZGV4KSBjb25zdAogewogICAgIEFT
U0VSVChtX2FyZ3VtZW50cy5zaXplKCkgPiBpbmRleCk7CiAgICAgcmV0dXJuIG1fYXJndW1lbnRz
W2luZGV4XTsKQEAgLTY4LDcgKzY4LDcgQEAgYm9vbCBTY3JpcHRBcmd1bWVudHM6OmdldEZpcnN0
QXJndW1lbnRBc1N0cmluZyhTdHJpbmcmIHJlc3VsdCwgYm9vbCBjaGVja0Zvck51bGwKICAgICBp
ZiAoIWFyZ3VtZW50Q291bnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgY29uc3Qg
U2NyaXB0VmFsdWUmIHZhbHVlID0gYXJndW1lbnRBdCgwKTsKKyAgICBjb25zdCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYgdmFsdWUgPSBhcmd1bWVudEF0KDApOwogICAgIGlmIChjaGVja0Zvck51
bGxPclVuZGVmaW5lZCAmJiAodmFsdWUuaXNOdWxsKCkgfHwgdmFsdWUuaXNVbmRlZmluZWQoKSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Njcmlw
dEFyZ3VtZW50cy5oCmluZGV4IDE3NDM5YTAuLjQ3YTk2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmgKQEAgLTEsMTAgKzEsMTAgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIAorICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQogICogbWV0OgotICogCisgKgogICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKICAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KICAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKQEAgLTE0LDcgKzE0LDcgQEAKICAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKICAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCiAgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICogCisgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwogICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKICAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgpAQCAtMzcsNiArMzcsMTAgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBEZXByZWNhdGVkIHsK
K2NsYXNzIFNjcmlwdFZhbHVlOworfQorCiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEV4ZWNTdGF0
ZTsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwpAQCAtNDQsMTUgKzQ4LDEzIEBAIGNsYXNzIEpTR2xv
YmFsT2JqZWN0OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNjcmlwdFZhbHVlOwot
CiBjbGFzcyBTY3JpcHRBcmd1bWVudHMgOiBwdWJsaWMgUmVmQ291bnRlZDxTY3JpcHRBcmd1bWVu
dHM+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGNy
ZWF0ZShKU0M6OkV4ZWNTdGF0ZSosIFZlY3RvcjxTY3JpcHRWYWx1ZT4mIGFyZ3VtZW50cyk7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBjcmVhdGUoSlNDOjpFeGVjU3Rh
dGUqLCBWZWN0b3I8RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWU+JiBhcmd1bWVudHMpOwogCiAgICAg
flNjcmlwdEFyZ3VtZW50cygpOwogCi0gICAgY29uc3QgU2NyaXB0VmFsdWUmIGFyZ3VtZW50QXQo
c2l6ZV90KSBjb25zdDsKKyAgICBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgYXJndW1l
bnRBdChzaXplX3QpIGNvbnN0OwogICAgIHNpemVfdCBhcmd1bWVudENvdW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9hcmd1bWVudHMuc2l6ZSgpOyB9CiAKICAgICBKU0M6OkV4ZWNTdGF0ZSogZ2xvYmFs
U3RhdGUoKSBjb25zdDsKQEAgLTYxLDEwICs2MywxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0Vx
dWFsKFNjcmlwdEFyZ3VtZW50cyopIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFNjcmlwdEFyZ3Vt
ZW50cyhKU0M6OkV4ZWNTdGF0ZSosIFZlY3RvcjxTY3JpcHRWYWx1ZT4mIGFyZ3VtZW50cyk7Cisg
ICAgU2NyaXB0QXJndW1lbnRzKEpTQzo6RXhlY1N0YXRlKiwgVmVjdG9yPERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlPiYgYXJndW1lbnRzKTsKIAogICAgIEpTQzo6U3Ryb25nPEpTQzo6SlNHbG9iYWxP
YmplY3Q+IG1fZ2xvYmFsT2JqZWN0OwotICAgIFZlY3RvcjxTY3JpcHRWYWx1ZT4gbV9hcmd1bWVu
dHM7CisgICAgVmVjdG9yPERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlPiBtX2FyZ3VtZW50czsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Nj
cmlwdENhbGxGcmFtZS5jcHAKaW5kZXggMWFiYmQ3NS4uNjZmNzhhYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHAKQEAgLTMyLDkgKzMyLDExIEBACiAj
aW5jbHVkZSAiU2NyaXB0Q2FsbEZyYW1lLmgiCiAKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVu
ZC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9J
bnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKK3VzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2NyaXB0Q2FsbEZyYW1l
OjpTY3JpcHRDYWxsRnJhbWUoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0TmFtZSwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5oCmluZGV4IDY3ZjBkMzYuLjI0
MjUxNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsRnJh
bWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmgKQEAg
LTM4LDkgKzM4LDExIEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotCituYW1lc3BhY2UgSW5z
cGVjdG9yIHsKIGNsYXNzIEluc3BlY3Rvck9iamVjdDsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBTY3JpcHRDYWxsRnJhbWUgIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHAKaW5kZXggZTY5NGJmMS4uMzZjNTAwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHAKQEAgLTMyLDcg
KzMyLDkgQEAKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKIAogI2luY2x1ZGUgIkluc3Bl
Y3RvclR5cGVCdWlsZGVyLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCisjaW5jbHVk
ZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgorCit1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9T
Y3JpcHRDYWxsU3RhY2suaAppbmRleCBlMGQ3ZmQ1Li5kOGVjMzU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oCkBAIC00Miw4ICs0Miw2IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW5zcGVjdG9yQXJyYXk7Ci0KIGNsYXNzIFNjcmlwdENh
bGxTdGFjayA6IHB1YmxpYyBSZWZDb3VudGVkPFNjcmlwdENhbGxTdGFjaz4gewogcHVibGljOgog
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSA9IDIwMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdMaXN0ZW5lci5oCmluZGV4
IDViY2E3NTEuLjBlYjRmYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9T
Y3JpcHREZWJ1Z0xpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Njcmlw
dERlYnVnTGlzdGVuZXIuaApAQCAtMzcsOCArMzcsMTEgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7CituYW1lc3BhY2UgRGVwcmVjYXRlZCB7CiBjbGFzcyBTY3JpcHRWYWx1ZTsKK30KKworbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTY3JpcHREZWJ1Z0xpc3RlbmVyIHsKIHB1YmxpYzoK
QEAgLTY4LDcgKzcxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFBhcnNlU291
cmNlKFNvdXJjZUlELCBjb25zdCBTY3JpcHQmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZhaWxl
ZFRvUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZGF0YSwgaW50
IGZpcnN0TGluZSwgaW50IGVycm9yTGluZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2UoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTY3Jp
cHRWYWx1ZSYgY2FsbEZyYW1lcywgY29uc3QgU2NyaXB0VmFsdWUmIGV4Y2VwdGlvbikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYgZXhjZXB0aW9uKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbnRpbnVlKCkgPSAwOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3Jk
RmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0
b3J5LmNwcAppbmRleCA4YmFhYjllLi45ZjJmN2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcApAQCAtMzYsMTUgKzM2LDE3IEBA
CiAKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgotI2luY2x1ZGUg
Ikluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJMYXlv
dXRSZWN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlNj
cmlwdENhbGxTdGFja0ZhY3RvcnkuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFs
dWVzLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1JlY29yZChkb3VibGUg
c3RhcnRUaW1lLCBpbnQgbWF4Q2FsbFN0YWNrRGVwdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmgKaW5kZXggZGI0NGIxZS4uZTRiZjkwYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9y
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3Rvcnku
aApAQCAtMzEsOSArMzEsOCBAQAogI2lmbmRlZiBUaW1lbGluZVJlY29yZEZhY3RvcnlfaAogI2Rl
ZmluZSBUaW1lbGluZVJlY29yZEZhY3RvcnlfaAogCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVz
LmgiCiAjaW5jbHVkZSAiVVJMLmgiCi0jaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgorI2luY2x1ZGUg
PGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00MSw2NCArNDAsNjIgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgRXZlbnQ7CiAgICAgY2xhc3MgRmxvYXRRdWFk
OwotICAgIGNsYXNzIEluc3BlY3Rvck9iamVjdDsKLSAgICBjbGFzcyBJbnRSZWN0OwogICAgIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKICAgICBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiAgICAg
Y2xhc3MgVGltZWxpbmVSZWNvcmRGYWN0b3J5IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlR2VuZXJpY1JlY29yZChkb3VibGUg
c3RhcnRUaW1lLCBpbnQgbWF4Q2FsbFN0YWNrRGVwdGgpOwotICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUJhY2tncm91bmRSZWNvcmQoZG91YmxlIHN0YXJ0
VGltZSwgY29uc3QgU3RyaW5nJiB0aHJlYWQpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlR2VuZXJpY1JlY29yZChkb3VibGUgc3Rh
cnRUaW1lLCBpbnQgbWF4Q2FsbFN0YWNrRGVwdGgpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlQmFja2dyb3VuZFJlY29yZChkb3Vi
bGUgc3RhcnRUaW1lLCBjb25zdCBTdHJpbmcmIHRocmVhZCk7CiAKLSAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVHQ0V2ZW50RGF0YShjb25zdCBzaXplX3Qg
dXNlZEhlYXBTaXplRGVsdGEpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlR0NFdmVudERhdGEoY29uc3Qgc2l6ZV90IHVzZWRIZWFw
U2l6ZURlbHRhKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IGNyZWF0ZUZ1bmN0aW9uQ2FsbERhdGEoY29uc3QgU3RyaW5nJiBzY3JpcHROYW1lLCBpbnQgc2Ny
aXB0TGluZSk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0PiBjcmVhdGVGdW5jdGlvbkNhbGxEYXRhKGNvbnN0IFN0cmluZyYgc2NyaXB0TmFtZSwg
aW50IHNjcmlwdExpbmUpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gY3JlYXRlRXZlbnREaXNwYXRjaERhdGEoY29uc3QgRXZlbnQmKTsKKyAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUV2ZW50RGlz
cGF0Y2hEYXRhKGNvbnN0IEV2ZW50Jik7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBjcmVhdGVHZW5lcmljVGltZXJEYXRhKGludCB0aW1lcklkKTsKKyAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUdl
bmVyaWNUaW1lckRhdGEoaW50IHRpbWVySWQpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gY3JlYXRlVGltZXJJbnN0YWxsRGF0YShpbnQgdGltZXJJZCwgaW50
IHRpbWVvdXQsIGJvb2wgc2luZ2xlU2hvdCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVUaW1lckluc3RhbGxEYXRhKGludCB0aW1l
cklkLCBpbnQgdGltZW91dCwgYm9vbCBzaW5nbGVTaG90KTsKIAotICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVhIUlJlYWR5U3RhdGVDaGFuZ2VEYXRhKGNv
bnN0IFN0cmluZyYgdXJsLCBpbnQgcmVhZHlTdGF0ZSk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVYSFJSZWFkeVN0YXRlQ2hhbmdl
RGF0YShjb25zdCBTdHJpbmcmIHVybCwgaW50IHJlYWR5U3RhdGUpOwogCi0gICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlWEhSTG9hZERhdGEoY29uc3QgU3Ry
aW5nJiB1cmwpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4gY3JlYXRlWEhSTG9hZERhdGEoY29uc3QgU3RyaW5nJiB1cmwpOwogCi0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlRXZhbHVhdGVTY3JpcHRE
YXRhKGNvbnN0IFN0cmluZyYsIGRvdWJsZSBsaW5lTnVtYmVyKTsKKyAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUV2YWx1YXRlU2NyaXB0
RGF0YShjb25zdCBTdHJpbmcmLCBkb3VibGUgbGluZU51bWJlcik7CiAKLSAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVUaW1lU3RhbXBEYXRhKGNvbnN0IFN0
cmluZyYpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdD4gY3JlYXRlVGltZVN0YW1wRGF0YShjb25zdCBTdHJpbmcmKTsKIAotICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVJlc291cmNlU2VuZFJlcXVlc3RE
YXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0
ZVJlc291cmNlU2VuZFJlcXVlc3REYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IGNyZWF0ZVNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0RGF0YShjb25zdCBTdHJpbmcmKTsK
KyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNy
ZWF0ZVNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0RGF0YShjb25zdCBTdHJpbmcmKTsKIAotICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVJlc291cmNlUmVjZWl2
ZVJlc3BvbnNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdD4gY3JlYXRlUmVzb3VyY2VSZWNlaXZlUmVzcG9uc2VEYXRhKGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKLSAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVSZWNlaXZlUmVzb3VyY2VEYXRhKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBpbnQgbGVuZ3RoKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVJlY2VpdmVSZXNvdXJjZURhdGEoY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQsIGludCBsZW5ndGgpOwogCi0gICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlUmVzb3VyY2VGaW5pc2hEYXRhKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBib29sIGRpZEZhaWwsIGRvdWJsZSBmaW5pc2hUaW1lKTsKKyAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVJl
c291cmNlRmluaXNoRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgYm9vbCBkaWRGYWlsLCBk
b3VibGUgZmluaXNoVGltZSk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBjcmVhdGVMYXlvdXREYXRhKHVuc2lnbmVkIGRpcnR5T2JqZWN0cywgdW5zaWduZWQg
dG90YWxPYmplY3RzLCBib29sIHBhcnRpYWxMYXlvdXQpOworICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlTGF5b3V0RGF0YSh1bnNpZ25l
ZCBkaXJ0eU9iamVjdHMsIHVuc2lnbmVkIHRvdGFsT2JqZWN0cywgYm9vbCBwYXJ0aWFsTGF5b3V0
KTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZURl
Y29kZUltYWdlRGF0YShjb25zdCBTdHJpbmcmIGltYWdlVHlwZSk7CisgICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVEZWNvZGVJbWFnZURh
dGEoY29uc3QgU3RyaW5nJiBpbWFnZVR5cGUpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gY3JlYXRlUmVzaXplSW1hZ2VEYXRhKGJvb2wgc2hvdWxkQ2FjaGUp
OworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4g
Y3JlYXRlUmVzaXplSW1hZ2VEYXRhKGJvb2wgc2hvdWxkQ2FjaGUpOwogCi0gICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlTWFya0RhdGEoYm9vbCBpc01haW5G
cmFtZSk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0PiBjcmVhdGVNYXJrRGF0YShib29sIGlzTWFpbkZyYW1lKTsKIAotICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVBhcnNlSFRNTERhdGEodW5zaWduZWQg
c3RhcnRMaW5lKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3Q+IGNyZWF0ZVBhcnNlSFRNTERhdGEodW5zaWduZWQgc3RhcnRMaW5lKTsKIAotICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUFuaW1hdGlvbkZy
YW1lRGF0YShpbnQgY2FsbGJhY2tJZCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVBbmltYXRpb25GcmFtZURhdGEoaW50IGNhbGxi
YWNrSWQpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3Jl
YXRlUGFpbnREYXRhKGNvbnN0IEZsb2F0UXVhZCYpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlUGFpbnREYXRhKGNvbnN0IEZsb2F0
UXVhZCYpOwogCi0gICAgICAgIHN0YXRpYyB2b2lkIGFwcGVuZExheW91dFJvb3QoSW5zcGVjdG9y
T2JqZWN0KiBkYXRhLCBjb25zdCBGbG9hdFF1YWQmKTsKKyAgICAgICAgc3RhdGljIHZvaWQgYXBw
ZW5kTGF5b3V0Um9vdChJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogZGF0YSwgY29uc3QgRmxv
YXRRdWFkJik7CiAKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi0gICAgICAgIHN0YXRpYyBpbmxp
bmUgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVdlYlNvY2tldENyZWF0ZURhdGEo
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBw
cm90b2NvbCkKKyAgICAgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiBjcmVhdGVXZWJTb2NrZXRDcmVhdGVEYXRhKHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEgPSBJbnNwZWN0b3JP
YmplY3Q6OmNyZWF0ZSgpOworICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0PiBkYXRhID0gSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAg
ICAgICAgICAgZGF0YS0+c2V0TnVtYmVyKCJpZGVudGlmaWVyIiwgaWRlbnRpZmllcik7CiAgICAg
ICAgICAgICBkYXRhLT5zZXRTdHJpbmcoInVybCIsIHVybC5zdHJpbmcoKSk7CiAgICAgICAgICAg
ICBpZiAoIXByb3RvY29sLmlzTnVsbCgpKQpAQCAtMTA2LDkgKzEwMyw5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgICAgIHJldHVybiBkYXRhLnJlbGVhc2UoKTsKICAgICAgICAgfQog
Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0
ZUdlbmVyaWNXZWJTb2NrZXREYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKKyAgICAgICAg
c3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVh
dGVHZW5lcmljV2ViU29ja2V0RGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEgPSBJbnNwZWN0b3JP
YmplY3Q6OmNyZWF0ZSgpOworICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0PiBkYXRhID0gSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAg
ICAgICAgICAgZGF0YS0+c2V0TnVtYmVyKCJpZGVudGlmaWVyIiwgaWRlbnRpZmllcik7CiAgICAg
ICAgICAgICByZXR1cm4gZGF0YS5yZWxlYXNlKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1dvcmtlckNvbnNvbGVBZ2VudC5jcHAKaW5kZXggMTViYjdhOC4uNjY2
YThkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckNvbnNvbGVB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckNvbnNvbGVBZ2Vu
dC5jcHAKQEAgLTM0LDYgKzM0LDggQEAKIAogI2luY2x1ZGUgIldvcmtlckNvbnNvbGVBZ2VudC5o
IgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFdvcmtlckNvbnNvbGVBZ2VudDo6V29ya2VyQ29uc29sZUFnZW50KEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtl
ckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVn
Z2VyQWdlbnQuY3BwCmluZGV4IDcxMzZlNDYuLjk3ZDAwZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKQEAgLTM4LDYgKzM4LDggQEAK
ICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDx3dGYvTWVzc2FnZVF1ZXVlLmg+
CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
bmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBlZjIzMDM3Li43ZjVlNzBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIu
Y3BwCkBAIC01MSw4ICs1MSwxMSBAQAogI2luY2x1ZGUgIldvcmtlclJlcG9ydGluZ1Byb3h5Lmgi
CiAjaW5jbHVkZSAiV29ya2VyUnVudGltZUFnZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFk
LmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg+CiAj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggNThiZGEy
MC4uYWEwZDkwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlcklu
c3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2Vy
SW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0zMywxOSArMzMsMjEgQEAKIAogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgiCi0jaW5jbHVk
ZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNl
LmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaD4KICNpbmNs
dWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KIAorbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFzcyBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcjsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI7Ci1jbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKLWNs
YXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKIGNsYXNzIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjsKIGNsYXNzIEluc3BlY3RvclJ1bnRpbWVBZ2VudDsKIGNsYXNzIEluc3RydW1lbnRpbmdB
Z2VudHM7CkBAIC03Miw5ICs3NCw5IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEluc3RydW1lbnRp
bmdBZ2VudHM+IG1faW5zdHJ1bWVudGluZ0FnZW50czsKICAgICBPd25QdHI8SW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyPiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKICAgICBJbnNwZWN0b3JSdW50aW1l
QWdlbnQqIG1fcnVudGltZUFnZW50OwotICAgIEluc3BlY3RvckFnZW50UmVnaXN0cnkgbV9hZ2Vu
dHM7CisgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5IG1fYWdlbnRzOwogICAg
IE93blB0cjxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw+IG1fZnJvbnRlbmRDaGFubmVsOwotICAg
IFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsK
KyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNr
ZW5kRGlzcGF0Y2hlcjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dv
cmtlclJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggYjA3YjYzMy4uMWVmODM3MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKQEAgLTQyLDYgKzQy
LDggQEAKICNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFk
LmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogV29ya2VyUnVudGltZUFnZW50OjpXb3JrZXJSdW50aW1lQWdlbnQoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3Rl
ZFNjcmlwdE1hbmFnZXIsIFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZSkKQEAg
LTU3LDcgKzU5LDcgQEAgV29ya2VyUnVudGltZUFnZW50Ojp+V29ya2VyUnVudGltZUFnZW50KCkK
ICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldFdvcmtlclJ1bnRpbWVBZ2VudCgwKTsKIH0K
IAotdm9pZCBXb3JrZXJSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFj
a2VuZERpc3BhdGNoZXIpCit2b2lkIFdvcmtlclJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fYmFja2Vu
ZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JSdW50aW1lQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShi
YWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
V29ya2VyUnVudGltZUFnZW50LmgKaW5kZXggNjdkZTA4YS4uNWI2MjljMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaApAQCAtNDgsNyArNDgsNyBA
QCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgfldvcmtlclJ1bnRpbWVBZ2VudCgpOwogCi0g
ICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRC
YWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICAvLyBQcm90b2NvbCBjb21tYW5kcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0NvbnNvbGUuY3BwCmluZGV4IGRkZTY1ZTMuLjMyN2VhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db25zb2xl
LmNwcApAQCAtNDcsOSArNDcsOSBAQAogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFja0ZhY3Rvcnku
aCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlLmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZXIu
aCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVu
dFBhcnNlci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2Ny
aXB0VmFsdWUuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAppbmRleCAwYmU5Zjk4Li5jYzY2MzZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0z
NSw3ICszNSw2IEBACiAjaW5jbHVkZSAiRm9ybURhdGFMaXN0LmgiCiAjaW5jbHVkZSAiRnJhbWUu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJJbnNw
ZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJQaW5nTG9hZGVyLmgi
CiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgpAQCAtNDYsMTAgKzQ1LDEzIEBA
CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZWN1cml0eVBvbGljeVZp
b2xhdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCisjaW5jbHVkZSA8aW5z
cGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvVGV4dFBvc2l0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogLy8gTm9ybWFsbHkgV2ViS2l0IHVzZXMgInN0YXRpYyIgZm9yIGludGVybmFsIGxpbmth
Z2UsIGJ1dCB1c2luZyAic3RhdGljIiBmb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggNDllMTg3
Yi4uYjhkODc3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTg2LDcgKzg2LDYgQEAKICNpbmNs
dWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRl
ICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRl
ICJTY3JvbGxpbmdDb29yZGluYXRvci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVk
ZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCkBAIC0xMDQsNiArMTAzLDcgQEAKICNpbmNsdWRlICJtYXJr
dXAuaCIKICNpbmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgogI2luY2x1ZGUgInJ1bnRpbWVfcm9v
dC5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlQ29uc29sZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlLmNwcApp
bmRleCA0ZmFhZTZkLi45YmNjMjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VDb25zb2xlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlLmNwcApA
QCAtNDIsOSArNDIsOSBAQAogI2luY2x1ZGUgIlNjcmlwdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUg
IlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCIK
LSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBh
cnNlci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0
VmFsdWUuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1Bs
dWdpblZpZXcuY3BwCmluZGV4IGQ2MGM4ODUuLmY4NDVjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcApAQCAtNjEsNyArNjEsNiBAQAogI2luY2x1ZGUgIlJlbmRlckJveC5o
IgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIu
aCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5o
IgpAQCAtNjksNiArNjgsNyBAQAogI2luY2x1ZGUgImNfaW5zdGFuY2UuaCIKICNpbmNsdWRlICJu
cHJ1bnRpbWVfaW1wbC5oIgogI2luY2x1ZGUgInJ1bnRpbWVfcm9vdC5oIgorI2luY2x1ZGUgPGJp
bmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAj
aW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgpA
QCAtNDY3LDcgKzQ2Nyw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QoUGx1Z2lu
UmVxdWVzdCogcmVxdWVzdCkKICAgICAKICAgICAvLyBFeGVjdXRpbmcgYSBzY3JpcHQgY2FuIGNh
dXNlIHRoZSBwbHVnaW4gdmlldyB0byBiZSBkZXN0cm95ZWQsIHNvIHdlIGtlZXAgYSByZWZlcmVu
Y2UgdG8gaXQuCiAgICAgUmVmUHRyPFBsdWdpblZpZXc+IHByb3RlY3Rvcih0aGlzKTsKLSAgICBT
Y3JpcHRWYWx1ZSByZXN1bHQgPSBtX3BhcmVudEZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0
KGpzU3RyaW5nLCByZXF1ZXN0LT5zaG91bGRBbGxvd1BvcHVwcygpKTsKKyAgICBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSByZXN1bHQgPSBtX3BhcmVudEZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2Ny
aXB0KGpzU3RyaW5nLCByZXF1ZXN0LT5zaG91bGRBbGxvd1BvcHVwcygpKTsKIAogICAgIGlmICh0
YXJnZXRGcmFtZU5hbWUuaXNOdWxsKCkpIHsKICAgICAgICAgU3RyaW5nIHJlc3VsdFN0cmluZzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA4MDlmZThjLi4wMDA2YmVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC02Myw3ICs2Myw2IEBACiAjaW5j
bHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkluc3BlY3Rvck92ZXJsYXkuaCIKLSNpbmNs
dWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgi
CiAjaW5jbHVkZSAiSW50ZXJuYWxTZXR0aW5ncy5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKQEAg
LTk2LDYgKzk1LDcgQEAKICNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgogI2luY2x1ZGUg
IldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPGJ5dGVjb2RlL0NvZGVCbG9jay5oPgorI2luY2x1
ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0pT
VmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVmZmVyLmg+CkBAIC0xNjcsNiArMTY3LDggQEAgdXNpbmcgSlNDOjpKU1ZhbHVl
OwogdXNpbmcgSlNDOjpTY3JpcHRFeGVjdXRhYmxlOwogdXNpbmcgSlNDOjpTdGFja1Zpc2l0b3I7
CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
dXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTEyODIsNyArMTI4NCw3IEBAIHByaXZhdGU6
CiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKIH07CiAKLVN0cmluZyBJbnRlcm5hbHM6OnBh
cnNlck1ldGFEYXRhKFNjcmlwdFZhbHVlIHZhbHVlKQorU3RyaW5nIEludGVybmFsczo6cGFyc2Vy
TWV0YURhdGEoRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgdmFsdWUpCiB7CiAgICAgSlNDOjpWTSog
dm0gPSBjb250ZXh0RG9jdW1lbnQoKS0+dm0oKTsKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9
IHZtLT50b3BDYWxsRnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCAyNWJj
YWZlLi4xMDkyNWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTMxLDcgKzMx
LDcgQEAKICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCi0jaW5j
bHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgog
I2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0Zsb2F0
MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC0xODEsNyArMTgxLDcg
QEAgcHVibGljOgogICAgIHZvaWQgZW1pdEluc3BlY3RvckRpZEJlZ2luRnJhbWUoKTsKICAgICB2
b2lkIGVtaXRJbnNwZWN0b3JEaWRDYW5jZWxGcmFtZSgpOwogCi0gICAgU3RyaW5nIHBhcnNlck1l
dGFEYXRhKFNjcmlwdFZhbHVlID0gU2NyaXB0VmFsdWUoKSk7CisgICAgU3RyaW5nIHBhcnNlck1l
dGFEYXRhKERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlID0gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUo
KSk7CiAKICAgICBib29sIGhhc1NwZWxsaW5nTWFya2VyKGludCBmcm9tLCBpbnQgbGVuZ3RoLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgYm9vbCBoYXNHcmFtbWFyTWFya2VyKGludCBmcm9tLCBpbnQg
bGVuZ3RoLCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
U2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IGUxNzdhNzAuLjEzOGJmYWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3Bw
CkBAIC00Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFBhc3NSZWZQdHI8TWVzc2Fn
ZUV2ZW50PiBjcmVhdGVDb25uZWN0RXZlbnQoUGFzc1JlZlB0cjxNZXNzYWdlUG9ydD4gcHJwUG9y
dCkKIHsKICAgICBSZWZQdHI8TWVzc2FnZVBvcnQ+IHBvcnQgPSBwcnBQb3J0OwotICAgIFJlZlB0
cjxNZXNzYWdlRXZlbnQ+IGV2ZW50ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUoYWRvcHRQdHIobmV3
IE1lc3NhZ2VQb3J0QXJyYXkoMSwgcG9ydCkpLCBTY3JpcHRWYWx1ZSgpLCBTdHJpbmcoKSwgU3Ry
aW5nKCksIHBvcnQpOworICAgIFJlZlB0cjxNZXNzYWdlRXZlbnQ+IGV2ZW50ID0gTWVzc2FnZUV2
ZW50OjpjcmVhdGUoYWRvcHRQdHIobmV3IE1lc3NhZ2VQb3J0QXJyYXkoMSwgcG9ydCkpLCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSgpLCBTdHJpbmcoKSwgU3RyaW5nKCksIHBvcnQpOwogICAgIGV2
ZW50LT5pbml0RXZlbnQoZXZlbnROYW1lcygpLmNvbm5lY3RFdmVudCwgZmFsc2UsIGZhbHNlKTsK
ICAgICByZXR1cm4gZXZlbnQucmVsZWFzZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCBlYzJkMTkwLi5mY2JmNjQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtMzcsNiArMzcsNyBA
QAogI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUg
IkV2ZW50RXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvckNvbnNvbGVJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlICJNZXNzYWdlUG9ydC5oIgpAQCAtNDQsNyArNDUsNiBAQAogI2luY2x1ZGUgIlNjaGVk
dWxlZEFjdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlNj
cmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oIgog
I2luY2x1ZGUgIldvcmtlckxvY2F0aW9uLmgiCkBAIC01NCwxNCArNTQsMTMgQEAKICNpbmNsdWRl
ICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgiCiAj
aW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RFeGNlcHRpb24uaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9T
Y3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogI2lmIEVOQUJMRShOT1RJ
RklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCiAjaW5jbHVkZSAiTm90
aWZpY2F0aW9uQ2VudGVyLmgiCiAjZW5kaWYKIAotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDbG9zZVdvcmtlckdsb2JhbFNjb3BlVGFz
ayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKQEAgLTI0MSw3ICsyNDAs
NyBAQCB2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjppbXBvcnRTY3JpcHRzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiB1cmxzLCBFeGNlcHRpb25Db2RlJgogCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzY3JpcHRM
b2FkZXItPmlkZW50aWZpZXIoKSwgc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSk7CiAKLSAgICAgICAg
U2NyaXB0VmFsdWUgZXhjZXB0aW9uOworICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBl
eGNlcHRpb247CiAgICAgICAgIG1fc2NyaXB0LT5ldmFsdWF0ZShTY3JpcHRTb3VyY2VDb2RlKHNj
cmlwdExvYWRlci0+c2NyaXB0KCksIHNjcmlwdExvYWRlci0+cmVzcG9uc2VVUkwoKSksICZleGNl
cHRpb24pOwogICAgICAgICBpZiAoIWV4Y2VwdGlvbi5oYXNOb1ZhbHVlKCkpIHsKICAgICAgICAg
ICAgIG1fc2NyaXB0LT5zZXRFeGNlcHRpb24oZXhjZXB0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyVGhyZWFkLmNwcAppbmRleCA1MGJmYTFkLi5mZWYzZTU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAi
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiU2Ny
aXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlRocmVh
ZEdsb2JhbERhdGEuaCIKICNpbmNsdWRlICJVUkwuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxUcmVlVmlld2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxUcmVlVmll
d2VyLmNwcAppbmRleCAxNjFkZDAxLi5jMzllNzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MVHJlZVZpZXdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVW
aWV3ZXIuY3BwCkBAIC0zOCwxMCArMzgsMTAgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0j
aW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiWE1M
Vmlld2VyQ1NTLmgiCiAjaW5jbHVkZSAiWE1MVmlld2VySlMuaCIKKyNpbmNsdWRlIDxiaW5kaW5n
cy9TY3JpcHRWYWx1ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggNzRhN2QwMC4uOTBl
ZmQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ci5jcHAKQEAgLTQ2LDcgKzQ2LDYgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAj
aW5jbHVkZSAiU2NyaXB0RWxlbWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIK
LSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIu
aCIKICNpbmNsdWRlICJUcmVlRGVwdGhMaW1pdC5oIgogI2luY2x1ZGUgIlhNTEVycm9ycy5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxp
YnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxp
YnhtbDIuY3BwCmluZGV4IDQ2YTkyZGIuLjUyYjhmOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTUyLDcg
KzUyLDYgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0
RWxlbWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJTY3Jp
cHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAppbmRleCBlNzFmNGZjLi40ZWVmZDMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKQEAgLTExOCw3ICsxMTgsNiBAQAogI2lu
Y2x1ZGUgIlJlbmRlcldpZGdldC5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNp
bmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNp
bmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCiAjaW5j
bHVkZSAiU2VsZWN0aW9uSGFuZGxlci5oIgpAQCAtMTcyLDYgKzE3MSw3IEBACiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0UmVmLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNTdHJpbmdSZWYuaD4KICNpbmNsdWRlIDxTaGFyZWRQb2ludGVyLmg+CisjaW5jbHVkZSA8Ymlu
ZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxjbWF0aD4KICNpbmNsdWRlIDxzeXMva2V5
Y29kZXMuaD4KICNpbmNsdWRlIDx1bmljb2RlL3VzdHJpbmcuaD4gLy8gcGxhdGZvcm0gSUNVCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwppbmRleCAwNDQ2YWIxLi4yNDBjYjZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0xMi0wNSAgSm9z
ZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFB1c2ggTW9yZSBJbnNwZWN0b3IgUmVxdWlyZWQgQ2xhc3NlcyBEb3duIGludG8gSmF2YVNj
cmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyNTMyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogQXBpL1dlYlBhZ2UuY3BwOgorCiAyMDEzLTEyLTAzICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNv
cmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBSZW1vdGUgSW5z
cGVjdG9yIGRlYnVnZ2luZyBjb25uZWN0aW9uIG1hbmFnZW1lbnQgaW50byBKYXZhU2NyaXB0Q29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nCmluZGV4IDMxZWUyYjUuLjdkZDVlNTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMiBAQAorMjAxMy0xMi0wNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9A
YXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggTW9yZSBJbnNwZWN0b3Ig
UmVxdWlyZWQgQ2xhc3NlcyBEb3duIGludG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTMyNAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6CisK
IDIwMTMtMTItMDMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIFJlbW90ZSBJbnNwZWN0b3IgZGVidWdnaW5nIGNvbm5l
Y3Rpb24gbWFuYWdlbWVudCBpbnRvIEphdmFTY3JpcHRDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwIGIv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
LmNwcAppbmRleCA5YzY4YzkxLi4xYTdhNzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAK
QEAgLTU5LDkgKzU5LDkgQEAKICNpbmNsdWRlIDxSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+CiAj
aW5jbHVkZSA8U2NoZW1lUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxTY3JpcHRDb250cm9sbGVyLmg+
Ci0jaW5jbHVkZSA8U2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxTZXR0aW5ncy5oPgogI2luY2x1
ZGUgPFRleHRJdGVyYXRvci5oPgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAj
aW5jbHVkZSA8YmluZGluZ3MvanMvR0NDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8aGlzdG9yeS9I
aXN0b3J5SXRlbS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfZnJhbWUuY3BwCmluZGV4IGYyYTIwYzMuLmEwNTJhYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfZnJhbWUuY3BwCkBAIC01Myw3ICs1Myw2IEBACiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2Vy
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJv
bGxlci5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCiAjaW5jbHVkZSAiU3Vic3RpdHV0ZURhdGEuaCIKICNpbmNsdWRlICJXaW5kb3dzS2V5Ym9h
cmRDb2Rlcy5oIgpAQCAtNjUsNiArNjQsNyBAQAogI2luY2x1ZGUgPEVjb3JlX0lucHV0Lmg+CiAj
aW5jbHVkZSA8RWluYS5oPgogI2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRlIDxiaW5kaW5ncy9T
Y3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPGVpbmFfc2FmZXR5X2NoZWNrcy5oPgogI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZwppbmRleCBjZTI4OWIyLi4yN2E3ZmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMTMtMTItMDUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVjdG9yIFJlcXVpcmVkIENs
YXNzZXMgRG93biBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKwogMjAx
My0xMi0wOSAgSm9hbm1hcmllIERpZ2dzICA8amRpZ2dzQGlnYWxpYS5jb20+CiAKICAgICAgICAg
QVg6IFtBVEtdIENvbnZlcnQgdGhlIGdldF97c3RyaW5nLHRleHR9X2F0X29mZnNldCBhdGt0ZXN0
LmMgdW5pdCB0ZXN0cyB0byBsYXlvdXQgdGVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCBmOWQ5YjFkZC4uNjAyMzI2NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtODUsNyArODUsNiBAQAogI2luY2x1
ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5o
IgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5o
IgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9NRG9jdW1lbnRQcml2
YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0ZG93bmxvYWQuaCIKQEAgLTExNCw2ICsxMTMsNyBAQAog
I2luY2x1ZGUgIndlYmtpdHdlYnBsdWdpbmRhdGFiYXNlcHJpdmF0ZS5oIgogI2luY2x1ZGUgIndl
YmtpdHdlYndpbmRvd2ZlYXR1cmVzLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vidmlld3ByaXZhdGUu
aCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPGdkay9nZGtr
ZXlzeW1zLmg+CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KICNpbmNsdWRlIDx3dGYvZ29i
amVjdC9HT3duUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hv
c3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9Q
bHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggMWU4ZThh
ZC4uNmMxOTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQv
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1Bs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtNTcsMTEgKzU3
LDExIEBACiAjaW1wb3J0IDxXZWJDb3JlL1Byb3h5U2VydmVyLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1NlY3VyaXR5T3JpZ2luLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4K
LSNpbXBvcnQgPFdlYkNvcmUvU2NyaXB0VmFsdWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVXNlckdl
c3R1cmVJbmRpY2F0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvbnBydW50aW1lX2ltcGwuaD4KICNp
bXBvcnQgPFdlYkNvcmUvcnVudGltZV9vYmplY3QuaD4KICNpbXBvcnQgPFdlYktpdFN5c3RlbUlu
dGVyZmFjZS5oPgorI2ltcG9ydCA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbXBvcnQgPG1h
Y2gvbWFjaC5oPgogI2ltcG9ydCA8dXRpbGl0eT4KICNpbXBvcnQgPHd0Zi9SZWZDb3VudGVkTGVh
a0NvdW50ZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5tbQppbmRleCBlMjVlYmU5Li5hMTRjODg1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
Lm1tCkBAIC00MywxMiArNDMsMTIgQEAKICNpbXBvcnQgIldlYlVJRGVsZWdhdGUuaCIKICNpbXBv
cnQgIldlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCA8YWxnb3JpdGhtPgorI2ltcG9ydCA8Ymlu
ZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvSW5zcGVjdG9yQ29udHJvbGxl
ci5oPgogI2ltcG9ydCA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9NYWluRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1NjcmlwdFZh
bHVlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0IDxXZWJLaXQv
RE9NRXh0ZW5zaW9ucy5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBlNGIyYmVkLi42ZjU4ODZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTg5LDcgKzg5LDYgQEAKICNpbXBv
cnQgPFdlYkNvcmUvUmVuZGVyV2lkZ2V0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1NjcmlwdFZhbHVlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5
T3JpZ2luLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NtYXJ0UmVwbGFjZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9TdHlsZVByb3BlcnRpZXMuaD4KQEAgLTEwMCw2ICs5OSw3IEBACiAjaW1wb3J0IDxXZWJD
b3JlL2h0bWxlZGl0aW5nLmg+CiAjaW1wb3J0IDxXZWJDb3JlL21hcmt1cC5oPgogI2ltcG9ydCA8
V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CisjaW1wb3J0IDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5o
PgogI2ltcG9ydCA8cnVudGltZS9KU0xvY2suaD4KICNpbXBvcnQgPHJ1bnRpbWUvSlNPYmplY3Qu
aD4KICNpbXBvcnQgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCmluZGV4IGRmN2Q2ZjQuLmNkMjdmNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KQEAgLTE2OSw3ICsxNjksNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvU2Ny
aXB0VmFsdWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbXBvcnQg
PFdlYkNvcmUvU2VjdXJpdHlQb2xpY3kuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2V0dGluZ3MuaD4K
QEAgLTE4NSw2ICsxODQsNyBAQAogI2ltcG9ydCA8V2ViS2l0L0RPTUV4dGVuc2lvbnMuaD4KICNp
bXBvcnQgPFdlYktpdC9ET01Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZh
Y2UuaD4KKyNpbXBvcnQgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW1wb3J0IDxtYWNoLW8v
ZHlsZC5oPgogI2ltcG9ydCA8b2JqYy9vYmpjLWF1dG8uaD4KICNpbXBvcnQgPG9iamMvcnVudGlt
ZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDRiNTJhNzUuLmQwM2E1MWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0xMi0wNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jh
cm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggTW9yZSBJbnNwZWN0
b3IgUmVxdWlyZWQgQ2xhc3NlcyBEb3duIGludG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTMyNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAg
ICAgICAqIFdlYlZpZXcuY3BwOgorCiAyMDEzLTEyLTA0ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdo
YW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIEV4aXRpbmcgZnJvbSBNZWRpYSBGdWxsIFNj
cmVlbiBtb2RlIHZpYSAnZXNjYXBlJyBrZXkgZG9lcyBub3Qgd29yayBwcm9wZXJseQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC93aW4v
V2ViRnJhbWUuY3BwCmluZGV4IGVhOGJkMTguLjQ5ZDY2Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5j
cHAKQEAgLTk5LDEyICs5OSwxMiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEl0ZXJhdG9yLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9KU0RPTUJpbmRpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nj
cmlwdENvbnRyb2xsZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdFZhbHVlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0FQSUNhc3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNPYmplY3QuaD4KKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUg
PHd0Zi9NYXRoRXh0cmFzLmg+CiAKICNpZiBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4
IGY5ZjVkMDYuLjA4Mzg0NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCkBAIC0xMzcsNyArMTM3LDYg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250
cm9sbGVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2Nyb2xsYmFyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxiYXJUaGVtZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KQEAgLTE0Nyw2ICsxNDYsNyBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvU3lzdGVtSW5mby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93
TWVzc2FnZUJyb2FkY2FzdGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dzVG91Y2guaD4K
KyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+CiAKICNpZiBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmZhMDkyMy4uY2I1ZDQwMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEzLTEyLTA1ICBKb3NlcGggUGVjb3Jhcm8gIDxw
ZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBNb3JlIElu
c3BlY3RvciBSZXF1aXJlZCBDbGFzc2VzIERvd24gaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1MzI0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3Rvci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgor
CisyMDEzLTEyLTA1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBNb3JlIEluc3BlY3RvciBSZXF1aXJlZCBDbGFzc2Vz
IERvd24gaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTI1MzI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmg6CisKIDIwMTMtMTIt
MDkgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxd
W1dLMl0gTGF5b3V0VGVzdHMgYXJlIGJyb2tlbiBhZnRlciByMTYwMzAxCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZTAwZDNhMi4u
NjEzZDVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcApAQCAtNjMsMTIgKzYzLDEyIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJF
bWJlZGRlZE9iamVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU2NoZWR1bGVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsVmlldy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3Vy
aXR5UG9saWN5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvVXNlckdlc3R1cmVJbmRpY2F0b3IuaD4KKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRW
YWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKQEAgLTExNzksNyArMTE3OSw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9y
bUphdmFTY3JpcHRVUkxSZXF1ZXN0KFVSTFJlcXVlc3QqIHJlcXVlc3QpCiAgICAgLy8gRXZhbHVh
dGUgdGhlIEphdmFTY3JpcHQgY29kZS4gTm90ZSB0aGF0IHJ1bm5pbmcgSmF2YVNjcmlwdCBoZXJl
IGNvdWxkIGNhdXNlIHRoZSBwbHVnLWluIHRvIGJlIGRlc3Ryb3llZCwgc28gd2UKICAgICAvLyBn
cmFiIHJlZmVyZW5jZXMgdG8gdGhlIHBsdWctaW4gaGVyZS4KICAgICBSZWZQdHI8UGx1Z2luPiBw
bHVnaW4gPSBtX3BsdWdpbjsKLSAgICBTY3JpcHRWYWx1ZSByZXN1bHQgPSBmcmFtZS0+c2NyaXB0
KCkuZXhlY3V0ZVNjcmlwdChqc1N0cmluZywgcmVxdWVzdC0+YWxsb3dQb3B1cHMoKSk7CisgICAg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVT
Y3JpcHQoanNTdHJpbmcsIHJlcXVlc3QtPmFsbG93UG9wdXBzKCkpOwogCiAgICAgLy8gQ2hlY2sg
aWYgZXZhbHVhdGluZyB0aGUgSmF2YVNjcmlwdCBkZXN0cm95ZWQgdGhlIHBsdWctaW4uCiAgICAg
aWYgKCFwbHVnaW4tPmNvbnRyb2xsZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKaW5kZXggYTg5MGY1Yi4uMTA1YmFiMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5j
cHAKQEAgLTM0LDEyICszNCwxMSBAQAogI2luY2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0
b3JDb250cm9sbGVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGb3J3YXJkaW5nLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvTWFpbkZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRW
YWx1ZS5oPgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9y
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKaW5k
ZXggZTY0ZjZkMy4uNDJhZWM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJJbnNwZWN0b3IuaApAQCAtMzAsMTggKzMwLDE0IEBACiAKICNpbmNsdWRlICJB
UElPYmplY3QuaCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9J
bnNwZWN0b3JGb3J3YXJkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNz
IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OwogY2xhc3MgV2ViUGFnZTsKLXN0cnVjdCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwogCiBjbGFzcyBXZWJJbnNwZWN0b3IgOiBwdWJsaWMg
QVBJOjpUeXBlZE9iamVjdDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlSW5zcGVjdG9yPiB7CiBw
dWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
aW5kZXggNTA1NzE1Ny4uMjI5ZWFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTI4LDcgKzEyOCw2IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY2hlbWVSZWdp
c3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NoYWRvd1Jvb3QuaD4KQEAgLTEzOSw2ICsxMzgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
VmlzaWJsZVBvc2l0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WaXNpYmxlVW5pdHMuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL21hcmt1cC5oPgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVl
Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9K
U0xvY2suaD4KICNpbmNsdWRlIDxydW50aW1lL09wZXJhdGlvbnMuaD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218796</attachid>
            <date>2013-12-09 13:48:15 -0800</date>
            <delta_ts>2013-12-09 14:43:14 -0800</delta_ts>
            <desc>[PATCH] For Bots 5</desc>
            <filename>for-bots-5.patch</filename>
            <type>text/plain</type>
            <size>731212</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAxM2M4YjA2Li4wMTdhZjdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00LDYgKzQsNyBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vQVBJIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMiCiAg
ICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9hc3NlbWJsZXIiCisgICAgIiR7SkFWQVNDUklQVENP
UkVfRElSfS9iaW5kaW5ncyIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J5dGVjb2RlIgog
ICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnl0ZWNvbXBpbGVyIgogICAgICIke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vZGZnIgpAQCAtNDUsNiArNDYsMTAgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NP
VVJDRVMKICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCiAgICAgYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNwcAogCisgICAgYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25D
YWxsLmNwcAorICAgIGJpbmRpbmdzL1NjcmlwdE9iamVjdC5jcHAKKyAgICBiaW5kaW5ncy9TY3Jp
cHRWYWx1ZS5jcHAKKwogICAgIGJ5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwCiAg
ICAgYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAogICAgIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNC
bG9jay5jcHAKQEAgLTIxNSw2ICsyMjAsMTEgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMK
ICAgICBoZWFwL1dlYWtTZXQuY3BwCiAgICAgaGVhcC9Xcml0ZUJhcnJpZXJTdXBwb3J0LmNwcAog
CisgICAgaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwCisgICAgaW5zcGVjdG9y
L0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcAorICAgIGluc3BlY3Rvci9JbnNwZWN0b3JU
eXBlQnVpbGRlci5jcHAKKyAgICBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcAorCiAgICAg
aW50ZXJwcmV0ZXIvQWJzdHJhY3RQQy5jcHAKICAgICBpbnRlcnByZXRlci9DYWxsRnJhbWUuY3Bw
CiAgICAgaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC01ODMsNiArNTkzLDcgQEAgZW5k
Zm9yZWFjaCAoKQogCiBzZXQoSmF2YVNjcmlwdENvcmVfRk9SV0FSRElOR19IRUFERVJTX0RJUkVD
VE9SSUVTCiAgICAgYXNzZW1ibGVyCisgICAgYmluZGluZ3MKICAgICBieXRlY29kZQogICAgIGNv
bGxlY3Rvci9oYW5kbGVzCiAgICAgZGVidWdnZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4
IDE2MWM4ZGEuLmEzYzVmMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEx
MCBAQAorMjAxMy0xMi0wNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgor
CisgICAgICAgIFBBUlQgNjogRXh0cmFjdCBHZW5lcmljIEluc3BlY3RvclR5cGVCdWlsZGVyCisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBNb3JlIEluc3BlY3RvciBSZXF1aXJlZCBDbGFz
c2VzIERvd24gaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1MzI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUeXBlQnVp
bGRlci5oOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1
dDo6T3B0T3V0cHV0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1
dDo6b3BlcmF0b3I9KToKKyAgICAgICAgKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1
dDo6aXNBc3NpZ25lZCk6CisgICAgICAgIChJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRw
dXQ6OmdldFZhbHVlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkV4YWN0bHlJ
bnQ6OkV4YWN0bHlJbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RXhhY3Rs
eUludDo6b3BlcmF0b3IgaW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkV4
YWN0bHlJbnQ6OmNhc3RfdG9faW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OmludCk6CisgICAgICAgIChJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lQ2FzdEhlbHBl
cjo6YXNzZXJ0VHlwZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1l
Q2FzdEhlbHBlcjo6YXNzZXJ0QW55KToKKyAgICAgICAgKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OlJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRJbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk6OkFycmF5KToKKyAgICAgICAgKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5OjpvcGVuQWNjZXNzb3JzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5OjphZGRJdGVtKToKKyAgICAgICAgKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5
OjpjcmVhdGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk6OnJ1bnRp
bWVDYXN0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5Ojphc3NlcnRD
b3JyZWN0VmFsdWUpOgorICAgICAgICAoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6U3RydWN0SXRl
bVRyYWl0czo6cHVzaFJlZlB0cik6CisgICAgICAgIChJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpT
dHJ1Y3RJdGVtVHJhaXRzOjphc3NlcnRDb3JyZWN0VmFsdWUpOgorCisyMDEzLTEyLTA1ICBKb3Nl
cGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogUHVzaCBNb3JlIEluc3BlY3RvciBSZXF1aXJlZCBDbGFzc2VzIERvd24gaW50byBKYXZhU2Ny
aXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTI1MzI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVy
czoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGJpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHA6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwLgorICAgICAg
ICAoSlNDOjpTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1bWVudCk6CisgICAg
ICAgIChKU0M6OlNjcmlwdEZ1bmN0aW9uQ2FsbDo6U2NyaXB0RnVuY3Rpb25DYWxsKToKKyAgICAg
ICAgKEpTQzo6U2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKToKKyAgICAgICAgKiBiaW5kaW5ncy9T
Y3JpcHRGdW5jdGlvbkNhbGwuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oLgorCisyMDEzLTEyLTA1ICBKb3NlcGggUGVjb3Jhcm8g
IDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBNb3Jl
IEluc3BlY3RvciBSZXF1aXJlZCBDbGFzc2VzIERvd24gaW50byBKYXZhU2NyaXB0Q29yZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1MzI0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUu
dmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL2NvcHkt
ZmlsZXMuY21kOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogYmluZGluZ3MvU2NyaXB0T2JqZWN0LmNwcDogQ29waWVkIGZyb20g
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5jcHAuCisgICAgICAgIChK
U0M6OlNjcmlwdE9iamVjdDo6U2NyaXB0T2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9TY3Jp
cHRPYmplY3QuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dE9iamVjdC5oLgorICAgICAgICAoSlNDOjpTY3JpcHRPYmplY3Q6OlNjcmlwdE9iamVjdCk6Cisg
ICAgICAgIChKU0M6OlNjcmlwdE9iamVjdDo6anNPYmplY3QpOgorICAgICAgICAoSlNDOjpTY3Jp
cHRPYmplY3Q6OnNjcmlwdFN0YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9TY3JpcHRWYWx1ZS5j
cHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5j
cHAuCisgICAgICAgIChKU0M6OlNjcmlwdFZhbHVlOjp+U2NyaXB0VmFsdWUpOgorICAgICAgICAo
SlNDOjpTY3JpcHRWYWx1ZTo6Z2V0U3RyaW5nKToKKyAgICAgICAgKEpTQzo6U2NyaXB0VmFsdWU6
OnRvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6U2NyaXB0VmFsdWU6OmlzRXF1YWwpOgorICAgICAg
ICAoSlNDOjpqc1RvSW5zcGVjdG9yVmFsdWUpOgorICAgICAgICAoSlNDOjpTY3JpcHRWYWx1ZTo6
dG9JbnNwZWN0b3JWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvU2NyaXB0VmFsdWUuaDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmguCisKKzIw
MTMtMTItMDUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVjdG9yIFJlcXVpcmVkIENsYXNzZXMgRG93
biBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxp
c3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUu
dmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3Ry
eS5oLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudEJhc2U6On5JbnNwZWN0b3JB
Z2VudEJhc2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudEJhc2U6OmRpc2Nh
cmRBZ2VudCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50QmFzZTo6SW5zcGVj
dG9yQWdlbnRCYXNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3Ry
eS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdl
bnRSZWdpc3RyeS5jcHAuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50UmVnaXN0
cnk6OmFwcGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnku
aDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVn
aXN0cnkuaC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
Y3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyLmNwcC4KKyAgICAgICAgKEluc3BlY3Rvcjo6Z2V0UHJvcGVydHlWYWx1ZSk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIuaC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwLgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaC4KKwogMjAxMy0xMi0wOSAgSm9zZXBoIFBl
Y29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBkb2NzL21ha2Ut
Ynl0ZWNvZGUtZG9jcy5wbApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1h
a2VmaWxlLmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDA4
NWZjYTcuLjc1ZGJlZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtl
ZmlsZS5hbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTUy
LDYgKzUyLDcgQEAgamF2YXNjcmlwdGNvcmVfY3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9Gb3J3YXJkaW5nSGVhZGVycyBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlciBcCisJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRp
bmdzIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUgXAogCS1J
JChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIgXAogCS1JJChzcmNk
aXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlciBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDgzYjIwNzYuLjM3YTczNzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC05NSw2ICs5NSwxMiBAQCBqYXZh
c2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L1JlcGF0Y2hCdWZmZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9TSDRB
c3NlbWJsZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJs
ZXIuaCBcCisgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9u
Q2FsbC5jcHAgXAorICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5j
dGlvbkNhbGwuaCBcCisgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdE9i
amVjdC5jcHAgXAorICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRPYmpl
Y3QuaCBcCisgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNw
cCBcCisgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxlLmNw
cCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2Zp
bGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAg
XApAQCAtNjEyLDcgKzYxOCwxNiBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUvdXRmX29sZC5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaWN1L3VuaWNvZGUvdXR5cGVzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
Y3UvdW5pY29kZS91dmVyc2lvbi5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckFnZW50QmFzZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgXAorCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCBc
CisJU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUeXBlQnVpbGRlci5j
cHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVHlwZUJ1aWxk
ZXIuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMu
Y3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5o
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQWJzdHJhY3RQQy5jcHAgXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9BYnN0cmFjdFBDLmggXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmggXApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggYTE0NDkyZS4uOGVmMjYxMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBAIC0yOTQsNiArMjk0LDkgQEAKICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxNYWNyb0Fzc2VtYmxlci5jcHAiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcSlNDVGVzdFJ1bm5lclV0aWxzLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcTWFjcm9Bc3NlbWJsZXJYODZDb21t
b24uY3BwIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcYmluZGluZ3Mv
U2NyaXB0RnVuY3Rpb25DYWxsLmNwcCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJp
bmRpbmdzXGJpbmRpbmdzL1NjcmlwdE9iamVjdC5jcHAiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxiaW5kaW5nc1xiaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5UHJvZmlsZS5jcHAiIC8+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxCeXRlY29kZUJhc2ljQmxvY2su
Y3BwIiAvPgpAQCAtNDU2LDYgKzQ1OSwxMCBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
aGVhcFxXZWFrSGFuZGxlT3duZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
aGVhcFxXZWFrU2V0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcV3Jp
dGVCYXJyaWVyU3VwcG9ydC5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNw
ZWN0b3JcSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIiAvPgorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvclR5cGVCdWlsZGVyLmNw
cCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JWYWx1
ZXMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcQWJzdHJh
Y3RQQy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxDYWxs
RnJhbWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcSW50
ZXJwcmV0ZXIuY3BwIiAvPgpAQCAtNzQ5LDYgKzc1Niw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxhc3NlbWJsZXJcTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxSZXBhdGNoQnVmZmVyLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcWDg2QXNzZW1ibGVyLmgiIC8+CisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xiaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaCIg
Lz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGJpbmRpbmdzL1NjcmlwdE9i
amVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcYmluZGluZ3Mv
U2NyaXB0VmFsdWUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFy
cmF5QWxsb2NhdGlvblByb2ZpbGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5
dGVjb2RlXEFycmF5UHJvZmlsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0
ZWNvZGVcQnlWYWxJbmZvLmgiIC8+CkBAIC05OTcsNyArMTAwNywxMiBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5caGVhcFxXZWFrU2V0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxoZWFwXFdlYWtTZXRJbmxpbmVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxoZWFwXFdyaXRlQmFycmllclN1cHBvcnQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JBZ2VudEJhc2UuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgiIC8+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJ
bnNwZWN0b3JUeXBlQnVpbGRlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5z
cGVjdG9yXEluc3BlY3RvclZhbHVlcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aW50ZXJwcmV0ZXJcQWJzdHJhY3RQQy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aW50ZXJwcmV0ZXJcQ2FjaGVkQ2FsbC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aW50ZXJwcmV0ZXJcQ2FsbEZyYW1lLmgiIC8+CkBAIC0xMzQ1LDQgKzEzNjAsNCBAQAogICA8SW1w
b3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0i
JChWQ1RhcmdldHNQYXRoKVxCdWlsZEN1c3RvbWl6YXRpb25zXG1hc20udGFyZ2V0cyIgLz4KICAg
PC9JbXBvcnRHcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8
L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZp
bHRlcnMKaW5kZXggYTI2MTBmNy4uMzUwNTQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0
ZXJzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtNCw2ICs0LDkgQEAKICAgICA8RmlsdGVy
IEluY2x1ZGU9ImFzc2VtYmxlciI+CiAgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NDI5NzgzYTEt
NWQ2YS00MDE5LWFkMWEtZGRiMmM5OGY5YjZjfTwvVW5pcXVlSWRlbnRpZmllcj4KICAgICA8L0Zp
bHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9ImJpbmRpbmdzIj4KKyAgICAgIDxVbmlxdWVJZGVu
dGlmaWVyPnswYmFjZTEyMy00NTgyLWVlYmMtOTMxNC03ODE5YjM3NmMxOTh9PC9VbmlxdWVJZGVu
dGlmaWVyPgorICAgIDwvRmlsdGVyPgogICAgIDxGaWx0ZXIgSW5jbHVkZT0iYnl0ZWNvZGUiPgog
ICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezc2NjA4OGEwLTEyMTYtNDg1NC1hYTQzLTU2MGM1ZTI4
MzY2OH08L1VuaXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+CkBAIC0xMDUsNiArMTA4LDE1
IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcTWFjcm9Bc3NlbWJsZXIu
Y3BwIj4KICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwu
Y3BwIj4KKyAgICAgIDxGaWx0ZXI+YmluZGluZ3M8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdE9iamVjdC5jcHAiPgor
ICAgICAgPEZpbHRlcj5iaW5kaW5nczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0VmFsdWUuY3BwIj4KKyAgICAgIDxG
aWx0ZXI+YmluZGluZ3M8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIj4KICAgICAg
IDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTI3OSw2ICsy
OTEsMTggQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcV3JpdGVCYXJyaWVyU3Vw
cG9ydC5jcHAiPgogICAgICAgPEZpbHRlcj5oZWFwPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQWdlbnRSZWdp
c3RyeS5jcHAiPgorICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsQ29t
cGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5jcHAiPgorICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KKyAg
ICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNw
ZWN0b3JUeXBlQnVpbGRlci5jcHAiPgorICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4K
KyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJ
bnNwZWN0b3JWYWx1ZXMuY3BwIj4KKyAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+Cisg
ICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxB
YnN0cmFjdFBDLmNwcCI+CiAgICAgICA8RmlsdGVyPmludGVycHJldGVyPC9GaWx0ZXI+CiAgICAg
PC9DbENvbXBpbGU+CkBAIC0xMzg4LDYgKzE0MTIsMTUgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGFzc2VtYmxlclxYODZBc3NlbWJsZXIuaCI+CiAgICAgICA8RmlsdGVyPmFzc2VtYmxl
cjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
YmluZGluZ3NcU2NyaXB0RnVuY3Rpb25DYWxsLmgiPgorICAgICAgPEZpbHRlcj5iaW5kaW5nczwv
RmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmlu
ZGluZ3NcU2NyaXB0T2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5iaW5kaW5nczwvRmlsdGVyPgor
ICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2Ny
aXB0VmFsdWUuaCI+CisgICAgICA8RmlsdGVyPmJpbmRpbmdzPC9GaWx0ZXI+CisgICAgPC9DbElu
Y2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9jYXRp
b25Qcm9maWxlLmgiPgogICAgICAgPEZpbHRlcj5ieXRlY29kZTwvRmlsdGVyPgogICAgIDwvQ2xJ
bmNsdWRlPgpAQCAtMTcxNSw5ICsxNzQ4LDI0IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxoZWFwXFdyaXRlQmFycmllclN1cHBvcnQuaCI+CiAgICAgICA8RmlsdGVyPmhlYXA8L0ZpbHRl
cj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3Rv
clxJbnNwZWN0b3JBZ2VudEJhc2UuaCI+CisgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVy
PgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9y
XEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCI+CisgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmls
dGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVj
dG9yXEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgiPgorICAgICAgPEZpbHRlcj5pbnNwZWN0
b3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGluc3BlY3RvclxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCI+CiAgICAgICA8RmlsdGVyPmlu
c3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvclR5cGVCdWlsZGVyLmgiPgorICAgICAgPEZpbHRlcj5p
bnNwZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JWYWx1ZXMuaCI+CisgICAgICA8RmlsdGVyPmluc3Bl
Y3RvcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caW50ZXJwcmV0ZXJcQWJzdHJhY3RQQy5oIj4KICAgICAgIDxGaWx0ZXI+aW50ZXJwcmV0ZXI8
L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTMxNzAsNCArMzIxOCw0IEBACiAgICAgICA8
RmlsdGVyPmppdDwvRmlsdGVyPgogICAgIDwvTUFTTT4KICAgPC9JdGVtR3JvdXA+Ci08L1Byb2pl
Y3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovY29weS1maWxlcy5j
bWQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9jb3B5LWZp
bGVzLmNtZAppbmRleCBmN2U0Mjk0Li44ODJjZTgzIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9jb3B5LWZpbGVzLmNtZAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9jb3B5LWZpbGVzLmNtZApA
QCAtMzksNiArMzksNyBAQCBlY2hvIENvcHlpbmcgcHJpdmF0ZSBoZWFkZXJzLi4uCiBta2RpciAi
JVByaXZhdGVIZWFkZXJzRGlyZWN0b3J5JSIgMj5OVUwNCiBmb3IgJSVkIGluICgNCiAgICAgYXNz
ZW1ibGVyDQorICAgIGJpbmRpbmdzDQogICAgIGJ5dGVjb2RlDQogICAgIGRmZw0KICAgICBkaXNh
c3NlbWJsZXINCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQzMjZhNjEuLjcwZDc1
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OTIsNiArODkyLDIwIEBACiAJ
CUExNzEyQjQxMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzEyQjQwMTFDN0IyMzUwMDdBNTMxNSAv
KiBSZWdFeHBLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlBMUEwMDlDMDE4MzFBMjJEMDBDRjg3MTEgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY0MDkyM0Mx
NTZFRUQzQjAwNTY2Q0IyIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUEwMDlDMTE4MzFBMjZFMDBDRjg3
MTEgLyogQVJNNjRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2NDA5MjNCMTU2RUVEM0IwMDU2NkNCMiAvKiBBUk02NEFzc2VtYmxlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1NENG
MkY1MTg0RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTRDRjJGMjE4NEVBQjI0MDAyMzdGMTkgLyog
U2NyaXB0VmFsdWUuY3BwICovOyB9OworCQlBNTRDRjJGNjE4NEVBQjI0MDAyMzdGMTkgLyogU2Ny
aXB0VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1NENGMkYzMTg0RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1NENGMkY5MTg0RUFFREEwMDIz
N0YxOSAvKiBTY3JpcHRPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTU0Q0YyRjcxODRFQUVEQTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5j
cHAgKi87IH07CisJCUE1NENGMkZBMTg0RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NENGMkY4MTg0
RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNTVEOTNBNTE4NTAxMkE4MDA0MDBERUQgLyogU2Ny
aXB0RnVuY3Rpb25DYWxsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1NUQ5M0EzMTg1MDEyQTgwMDQwMERFRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwu
Y3BwICovOyB9OworCQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25D
YWxsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTVE
OTNBNDE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTU1RDkzQUMxODUxNEY3OTAw
NDAwREVEIC8qIEluc3BlY3RvclR5cGVCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTVEOTNBQjE4NTE0Rjc5MDA0MDBERUQgLyogSW5zcGVj
dG9yVHlwZUJ1aWxkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlBNTkzQ0Y3QzE4NDAzNjAzMDBCRkNFMjcgLyogSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTU5M0NGN0ExODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
LmNwcCAqLzsgfTsKKwkJQTU5M0NGN0QxODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTkzQ0Y3QjE4NDAzNjAzMDBCRkNFMjcgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlB
NTkzQ0Y3RjE4NDAzNjJDMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRCYXNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTkzQ0Y3RTE4NDAzNjJDMDBC
RkNFMjcgLyogSW5zcGVjdG9yQWdlbnRCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTU5M0NGODIxODQwMzc3MTAwQkZDRTI3IC8qIEluc3Bl
Y3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTkzQ0Y4MDE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCAqLzsg
fTsKKwkJQTU5M0NGODMxODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5M0NGODExODQwMzc3
MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1OTNDRjg2MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNw
ZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1OTNDRjg0MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJl
Z2lzdHJ5LmNwcCAqLzsgfTsKKwkJQTU5M0NGODcxODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3Rv
ckFnZW50UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1OTNDRjg1MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTU5
NDU1OEYxODI0NUVGRDAwQ0MzODQzIC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5NDU1OEUxODI0
NUVERTAwQ0MzODQzIC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwICovOyB9OwogCQlB
NTk0NTU5MjE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OTQ1NTkwMTgy
NDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwICovOyB9OwogCQlB
NTk0NTU5MzE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTk0NTU5MTE4MjQ3
NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmggKi87IH07CkBAIC0yMjIx
LDYgKzIyMzUsMjAgQEAKIAkJQTE3MTJCM0ExMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ0V4cENhY2hlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3MTJCM0UxMUM3QjIyODAwN0E1MzE1
IC8qIFJlZ0V4cENhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4
cENhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNzEyQjQwMTFDN0IyMzUw
MDdBNTMxNSAvKiBSZWdFeHBLZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVnRXhwS2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1NENGMkYyMTg0RUFC
MjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTY3JpcHRWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE1NENGMkYzMTg0RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBNTRDRjJGNzE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2JqZWN0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdE9iamVjdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1NENGMkY4MTg0RUFFREEwMDIzN0YxOSAvKiBTY3Jp
cHRPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0T2JqZWN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1NUQ5M0EzMTg1MDEyQTgwMDQwMERF
RCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2NyaXB0RnVuY3Rpb25DYWxsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTU1RDkzQTQxODUwMTJBODAwNDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRGdW5jdGlvbkNhbGwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU1RDkzQUIxODUxNEY3OTAwNDAwREVEIC8qIElu
c3BlY3RvclR5cGVCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IElu
c3BlY3RvclR5cGVCdWlsZGVyLmg7IHBhdGggPSBpbnNwZWN0b3IvSW5zcGVjdG9yVHlwZUJ1aWxk
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU5M0NGN0ExODQwMzYwMzAwQkZD
RTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcDsgcGF0aCA9
IGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUE1OTNDRjdCMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlci5oOyBwYXRoID0gaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTNDRjdFMTg0MDM2
MkMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gSW5zcGVjdG9yQWdlbnRCYXNlLmg7IHBhdGggPSBpbnNwZWN0b3IvSW5zcGVj
dG9yQWdlbnRCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTNDRjgwMTg0
MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gSW5zcGVjdG9yVmFsdWVzLmNwcDsgcGF0aCA9IGluc3BlY3Rvci9J
bnNwZWN0b3JWYWx1ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTkzQ0Y4
MTE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEluc3BlY3RvclZhbHVlcy5oOyBwYXRoID0gaW5zcGVjdG9yL0luc3Bl
Y3RvclZhbHVlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTkzQ0Y4NDE4NDAz
OENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcDsgcGF0aCA9
IGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTU5M0NGODUxODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVn
aXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSW5zcGVjdG9yQWdlbnRS
ZWdpc3RyeS5oOyBwYXRoID0gaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU5NDU1OEUxODI0NUVERTAwQ0MzODQzIC8qIFJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHA7IHBhdGggPSBpbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNTk0NTU5MDE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2xvYmFs
T2JqZWN0RGVidWdnYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1OTQ1
NTkxMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzIxLDYgKzI3NDksNyBAQAogCQkJCUE3QzIy
NUNDMTM5OTgxRjEwMEZGMTY2MiAvKiBLZXl3b3JkTG9va3VwR2VuZXJhdG9yLnB5ICovLAogCQkJ
CTE0MzJFQkQ3MEEzNENBRDQwMDcxN0I5RiAvKiBBUEkgKi8sCiAJCQkJOTY4OENCMTIwRUQxMkI0
RTAwMUQ2NDlGIC8qIGFzc2VtYmxlciAqLywKKwkJCQlBNTRDRjJFQTE4NEVBNzM5MDAyMzdGMTkg
LyogYmluZGluZ3MgKi8sCiAJCQkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2Rl
ICovLAogCQkJCTdFMzlEODFEMEVDMzhFRkEwMDNBRjExQSAvKiBieXRlY29tcGlsZXIgKi8sCiAJ
CQkJMUM5MDUxM0UwQkE5RTg4MzAwODFFOUQwIC8qIENvbmZpZ3VyYXRpb25zICovLApAQCAtNDE5
MiwxMSArNDIyMSwzMiBAQAogCQkJcGF0aCA9IGJ5dGVjb2RlOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKIAkJfTsKKwkJQTU0Q0YyRUExODRFQTczOTAwMjM3RjE5IC8qIGJpbmRpbmdzICov
ID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlBNTVEOTNBMzE4
NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCAqLywKKwkJCQlBNTVEOTNB
NDE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggKi8sCisJCQkJQTU0Q0Yy
RjcxODRFQUVEQTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5jcHAgKi8sCisJCQkJQTU0Q0YyRjgx
ODRFQUVEQTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5oICovLAorCQkJCUE1NENGMkYyMTg0RUFC
MjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5jcHAgKi8sCisJCQkJQTU0Q0YyRjMxODRFQUIyNDAw
MjM3RjE5IC8qIFNjcmlwdFZhbHVlLmggKi8sCisJCQkpOworCQkJcGF0aCA9IGJpbmRpbmdzOwor
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJQTVCQTE1REYxODIzNDA5MjAwQTgy
RTY5IC8qIGluc3BlY3RvciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCiAJCQkJQTVCQTE1RTAxODIzNDA5RDAwQTgyRTY5IC8qIHJlbW90ZSAqLywKKwkJCQlBNTkz
Q0Y3RTE4NDAzNjJDMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRCYXNlLmggKi8sCisJCQkJQTU5
M0NGODQxODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwICovLAor
CQkJCUE1OTNDRjg1MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Lmgg
Ki8sCisJCQkJQTU5M0NGN0ExODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyLmNwcCAqLywKKwkJCQlBNTkzQ0Y3QjE4NDAzNjAzMDBCRkNFMjcgLyogSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIuaCAqLywKIAkJCQlBNTk0NTU5NDE4MjQ3OUVCMDBDQzM4NDMgLyog
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggKi8sCisJCQkJQTU1RDkzQUIxODUxNEY3OTAwNDAw
REVEIC8qIEluc3BlY3RvclR5cGVCdWlsZGVyLmggKi8sCisJCQkJQTU5M0NGODAxODQwMzc3MTAw
QkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5jcHAgKi8sCisJCQkJQTU5M0NGODExODQwMzc3MTAw
QkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5oICovLAogCQkJKTsKIAkJCW5hbWUgPSBpbnNwZWN0
b3I7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNDMzNyw2ICs0Mzg3LDcgQEAKIAkJ
CQkwRjJCNjZERjE3QjZCNUFCMDBBN0FFM0YgLyogRGF0YVZpZXcuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDRDIwMzRBMEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlQ29uc3RydWN0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxMzU5Q0YzMEZERDg5QUQwMDIwNjE4MCAvKiBEYXRlQ29udmVyc2lvbi5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQTU5M0NGN0YxODQwMzYyQzAwQkZDRTI3IC8qIEluc3BlY3Rv
ckFnZW50QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxMTY2MDIwRTE5OTdCNDAwODA2NkRE
IC8qIERhdGVJbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRBMTU2MzIxMDk2NjM2NTAw
NkZBMjYwIC8qIERhdGVJbnN0YW5jZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0QyMDM0
QzBFMTcxMzVFMDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC00
MzY4LDYgKzQ0MTksNyBAQAogCQkJCTBGODM2NEI3MTY0QjBDMTEwMDUzMzI5QSAvKiBERkdCcmFu
Y2hEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUExQTAwOUMwMTgzMUEyMkQwMENGODcx
MSAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVDOURDNTEz
MjhERjgyMDAyQjJBRDcgLyogREZHQnl0ZUNvZGVQYXJzZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUE1OTNDRjg3MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjI1NkMzNjE2MjdCMEFEMDA3RjI3ODMgLyogREZHQ2FsbEFycmF5
QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0IyOTRC
MTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRkZDOTU4MTRFRjkwQTIwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC00NDU0LDYgKzQ1MDYsNyBAQAogCQkJCTg2RUM5REQzMTMyOERGODIwMDJCMkFENyAvKiBE
RkdTcGVjdWxhdGl2ZUpJVC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEODlEMDAxN0EwQjhDQzAw
NzczQUQ4IC8qIERGR1NTQUNvbnZlcnNpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5
RkI0RjUxN0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUE1OTNDRjgzMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNjM5NDc4MTVEQ0UzNEIwMDZBNTk3QyAvKiBERkdTdHJ1Y3R1
cmVBYnN0cmFjdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMwOTdBMjE0NkIyOENDMDBD
RjI0NDIgLyogREZHVGh1bmtzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4QTMyODE3RDUxRjU3
MDBDQTJDNDAgLyogREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC00NDg4LDYgKzQ1NDEsNyBAQAogCQkJCTBGQjEwNTg2MTY3NTQ4MTIwMEY4QUI2RSAvKiBF
eGl0S2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQUIxNEJDRjVCQjAwODg1QjRGIC8q
IEV4cHJlc3Npb25SYW5nZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjM4MTdBREI1
RjMwMDVBQjE3NCAvKiBGbG9hdDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1NENGMkY2
MTg0RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdB
OEFGMzkxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYyNEU1NDMxN0VBOUY1OTAwQUJCMjE3IC8qIEZQUkluZm8uaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRkM5OUQ1MTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNo
cG9pbnQuaCBpbiBIZWFkZXJzICovLApAQCAtNDgzMyw2ICs0ODg3LDcgQEAKIAkJCQkwRjBDRDRD
MjE1RjFBNjA3MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5kZXhNb2RlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjlGQzhDNTE0RTFCNjA0MDBENTJBRTAgLyogUHV0S2luZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMTQ3Qjg0NjMwRTZERTZCMTAwNDc3NUE0IC8qIFB1dFByb3BlcnR5U2xvdC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQTU5M0NGN0QxODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY2MEFDMjE2NzQwRjgzMDAwMjk3
NzkgLyogUmVkdWNlV2hpdGVzcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NUEwRTE2
RjVDRDAwQjM0NDYwIC8qIFJlZ0V4cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE3MTJCM0YxMUM3
QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggaW4gSGVhZGVycyAqLywKQEAgLTQ4NzQsNiAr
NDkyOSw3IEBACiAJCQkJMEZEODJFNTQxNDFEQUVFRTAwMTc5Qzk0IC8qIFNwZWN1bGF0ZWRUeXBl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0MxRUFGMjE3OTg3QUI2MDAyOTlEQjIgLyogU3RhY2tW
aXNpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNERGMDREQTE2QjM5OTZEMDAxNkE1MTMgLyog
U3RhdGljUHJvcGVydHlBbmFseXNpcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU0Q0YyRkExODRF
QUVEQTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRDQTk1
OEIxNkFCNTBERTAwOTM4QTA2IC8qIFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3MzBCNjEyMTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJpY3RFdmFsQWN0aXZhdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NjYwRTE2RjVDRDAwQjM0NDYwIC8qIFN0cmlu
Z0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTQ5MzYsNiArNDk5Miw3IEBACiAJCQkJ
MTRCRTdEMzMxNzEzNUNGNDAwRDE4MDdBIC8qIFdlYWtJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBN0NBM0FFNDE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01hcENvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBN0NBM0FFQzE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEu
aCBpbiBIZWFkZXJzICovLAorCQkJCUE1NUQ5M0FDMTg1MTRGNzkwMDQwMERFRCAvKiBJbnNwZWN0
b3JUeXBlQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdDQTNBRTYxN0RBNDFBRTAwNjUz
OEFGIC8qIFdlYWtNYXBQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MjBCRTdCMTBB
QTZEREIwMEY0NTVEMiAvKiBXZWFrUmFuZG9tLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI0MkRB
NzEzRjNCMUU4MDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oIGluIEhlYWRlcnMg
Ki8sCkBAIC00OTQ5LDYgKzUwMDYsNyBAQAogCQkJCTQ1MTUzOUI5MTJEQzk5NDUwMEVGN0FDNCAv
KiBZYXJyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjY2NkVDRDE4MzZCMzdFMDBEMDE3RjEgLyog
REZHUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NjcwNEI4NTEyREJBMzM3MDBBOUZFN0IgLyogWWFyckludGVycHJldGVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI4NzEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODY3MDRCODgxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJz
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJy
UGF0dGVybi5oIGluIEhlYWRlcnMgKi8sCkBAIC01NDU0LDYgKzU1MTIsNyBAQAogCQkJCTBGRjQy
NzY0MTU5MUExQ0MwMDRDQjlGRiAvKiBERkdEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEZEODFBRDIxNTRGQjRFRTAwOTgzRTcyIC8qIERGR0RvbWluYXRvcnMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZEM0M4MjYxNDExNUQ0MDAwRkQ4MUNCIC8qIERGR0RyaXZlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlBNTkzQ0Y4MjE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9y
VmFsdWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjBGMTlFMTZCNzJBMEIwMDVERjk1QiAv
KiBERkdFZGdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3NERFRjkzMTgyRDk5MTQwMDUyMkMy
MiAvKiBNYXBJdGVyYXRvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkJDMEFF
NzE0OTZDN0M0MDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC01NTA5LDYgKzU1NjgsNyBAQAogCQkJCTBGQkUwRjc2MTZDMURCMEYwMDgyQzVFOCAvKiBERkdV
bmlmaWNhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzRCMTQ5MTZENDIwMTAw
MDFDREE1QSAvKiBERkdVc2VLaW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0IzQTJCMTU0
NzUwMDAwMDNFRDBGRiAvKiBERkdWYWxpZGF0ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNTVE
OTNBNTE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGMkJEQzRGMTUyMjhCRjMwMENEODkxMCAvKiBERkdWYWx1ZVNvdXJjZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkREQkZCNTE2NjZFRUQ4MDBDNTVGRUYgLyogREZHVmFyaWFi
bGVBY2Nlc3NEYXRhRHVtcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCREM1MTE1MjI4RkZE
MDBDRDg5MTAgLyogREZHVmFyaWFibGVFdmVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU1Mjks
NiArNTU4OSw3IEBACiAJCQkJMEY1NkExRDUxNTAwMUNGNDAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNv
dW50ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5NDU1OTIxODI0NzQ0NzAwQ0MzODQzIC8q
IEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkIxMDU4
NTE2NzU0ODBGMDBGOEFCNkUgLyogRXhpdEtpbmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTU0
Q0YyRjUxODRFQUIyNDAwMjM3RjE5IC8qIFNjcmlwdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGRUEwQTFDMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXAuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZFQTBBMUUxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMDkxNzA1MTNEQjAwQkI3
MjJDIC8qIEZUTENhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU1NTgsNiArNTYx
OSw3IEBACiAJCQkJMEY5RDMzOUExODAzQURCNzAwNzNDMkJDIC8qIEZUTFN0YWNrTWFwcy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEExNjE3MDZCQjkwMDBCQjcyMkMgLyogRlRMU3RhdGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMzVCRTExNzE3OEUxQzAwNjkwQzdGIC8qIEZUTFRo
dW5rcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNTkzQ0Y3QzE4NDAzNjAzMDBCRkNFMjcgLyog
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMzVC
RTMxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTFZhbHVlRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE0N0YzOUNCMTA3RUMzNzYwMDQyN0E0OCAvKiBGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRjBGMTlGMTZCNzJBMTcwMDVERjk1QiAvKiBGdW5jdGlvbkV4
ZWN1dGFibGVEdW1wLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTcwOCw2ICs1NzcwLDcgQEAKIAkJ
CQk4NkVCRjJGRjE1NjBGMDZBMDA4RTkyMjIgLyogTmFtZUNvbnN0cnVjdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTg2RUJGMzAxMTU2MEYwNkEwMDhFOTIyMiAvKiBOYW1lSW5zdGFuY2UuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJODZFQkYzMDMxNTYwRjA2QTAwOEU5MjIyIC8qIE5hbWVQcm90
b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTU0Q0YyRjkxODRFQUVEQTAwMjM3RjE5IC8q
IFNjcmlwdE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFMDEwN0VDN0U3MDA2
NTA0NDYgLyogTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
NDQ2OURFMTEwN0VDN0U3MDA2NTA0NDYgLyogTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMTQ4RjIxQjcxMDdFQzU0NzAwNDJFQzJDIC8qIE5vZGVzLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtNTgyNiw2ICs1ODg5LDcgQEAKIAkJCQk4NjcwNEI4NDEyREJBMzM3MDBB
OUZFN0IgLyogWWFyckludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0Qjg2
MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0
Qjg5MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlBNTkzQ0Y4NjE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI0MjEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRh
eENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRp
bmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKc2ltaWxhcml0eSBpbmRleCA3OCUKcmVuYW1lIGZy
b20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcApyZW5h
bWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5j
cHAKaW5kZXggMmVhMmI0Yi4uZjI2NDdkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcApAQCAtMSw0ICsxLDUgQEAKIC8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CkBAIC0zMSwxNyArMzIsMTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwuaCIKIAotI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4
ZWNTdGF0ZS5oIgorI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgi
Ci0KLSNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Citu
YW1lc3BhY2UgRGVwcmVjYXRlZCB7CiAKLXZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6
YXBwZW5kQXJndW1lbnQoY29uc3QgU2NyaXB0T2JqZWN0JiBhcmd1bWVudCkKK3ZvaWQgU2NyaXB0
Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQoY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0T2JqZWN0JiBhcmd1bWVudCkKIHsKICAgICBpZiAoYXJndW1lbnQuc2NyaXB0U3RhdGUoKSAh
PSBtX2V4ZWMpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01MCw3ICs0OSw3
IEBAIHZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQoY29uc3Qg
U2NyaXB0T2JqZWN0JiBhcmd1bWVudCkKICAgICBtX2FyZ3VtZW50cy5hcHBlbmQoYXJndW1lbnQu
anNPYmplY3QoKSk7CiB9CiAKLXZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5k
QXJndW1lbnQoY29uc3QgU2NyaXB0VmFsdWUmIGFyZ3VtZW50KQordm9pZCBTY3JpcHRDYWxsQXJn
dW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1bWVudChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYgYXJndW1lbnQpCiB7CiAgICAgbV9hcmd1bWVudHMuYXBwZW5kKGFyZ3VtZW50LmpzVmFsdWUo
KSk7CiB9CkBAIC01OCw3ICs1Nyw3IEBAIHZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6
YXBwZW5kQXJndW1lbnQoY29uc3QgU2NyaXB0VmFsdWUmIGFyZ3VtZW50KQogdm9pZCBTY3JpcHRD
YWxsQXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1bWVudChjb25zdCBTdHJpbmcmIGFyZ3VtZW50
KQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKG1fZXhlYyk7Ci0gICAgbV9hcmd1bWVudHMuYXBw
ZW5kKGpzU3RyaW5nV2l0aENhY2hlKG1fZXhlYywgYXJndW1lbnQpKTsKKyAgICBtX2FyZ3VtZW50
cy5hcHBlbmQoanNTdHJpbmcobV9leGVjLCBhcmd1bWVudCkpOwogfQogCiB2b2lkIFNjcmlwdENh
bGxBcmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KGNvbnN0IGNoYXIqIGFyZ3VtZW50KQpA
QCAtNjcsNyArNjYsNyBAQCB2b2lkIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVuZEFy
Z3VtZW50KGNvbnN0IGNoYXIqIGFyZ3VtZW50KQogICAgIG1fYXJndW1lbnRzLmFwcGVuZChqc1N0
cmluZyhtX2V4ZWMsIFN0cmluZyhhcmd1bWVudCkpKTsKIH0KIAotdm9pZCBTY3JpcHRDYWxsQXJn
dW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1bWVudChKU0M6OkpTVmFsdWUgYXJndW1lbnQpCit2b2lk
IFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KEpTVmFsdWUgYXJndW1l
bnQpCiB7CiAgICAgbV9hcmd1bWVudHMuYXBwZW5kKGFyZ3VtZW50KTsKIH0KQEAgLTEwNywxNCAr
MTA2LDE1IEBAIHZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQo
Ym9vbCBhcmd1bWVudCkKICAgICBtX2FyZ3VtZW50cy5hcHBlbmQoanNCb29sZWFuKGFyZ3VtZW50
KSk7CiB9CiAKLVNjcmlwdEZ1bmN0aW9uQ2FsbDo6U2NyaXB0RnVuY3Rpb25DYWxsKGNvbnN0IFNj
cmlwdE9iamVjdCYgdGhpc09iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKQorU2NyaXB0RnVuY3Rp
b25DYWxsOjpTY3JpcHRGdW5jdGlvbkNhbGwoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0
JiB0aGlzT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIFNjcmlwdEZ1bmN0aW9uQ2FsbEhhbmRs
ZXIgY2FsbEhhbmRsZXIpCiAgICAgOiBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyKHRoaXNPYmpl
Y3Quc2NyaXB0U3RhdGUoKSkKKyAgICAsIG1fY2FsbEhhbmRsZXIoY2FsbEhhbmRsZXIpCiAgICAg
LCBtX3RoaXNPYmplY3QodGhpc09iamVjdCkKICAgICAsIG1fbmFtZShuYW1lKQogewogfQogCi1T
Y3JpcHRWYWx1ZSBTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwoYm9vbCYgaGFkRXhjZXB0aW9uKQor
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgU2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKGJvb2wmIGhh
ZEV4Y2VwdGlvbikKIHsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IG1fdGhpc09iamVjdC5q
c09iamVjdCgpOwogCkBAIC0xMjMsMzIgKzEyMywzMiBAQCBTY3JpcHRWYWx1ZSBTY3JpcHRGdW5j
dGlvbkNhbGw6OmNhbGwoYm9vbCYgaGFkRXhjZXB0aW9uKQogICAgIEpTVmFsdWUgZnVuY3Rpb24g
PSB0aGlzT2JqZWN0LT5nZXQobV9leGVjLCBJZGVudGlmaWVyKG1fZXhlYywgbV9uYW1lKSk7CiAg
ICAgaWYgKG1fZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAgaGFkRXhjZXB0aW9uID0g
dHJ1ZTsKLSAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7CisgICAgICAgIHJldHVybiBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSgpOwogICAgIH0KIAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwog
ICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsK
ICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQotICAgICAgICByZXR1cm4gU2NyaXB0
VmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCk7CiAKICAg
ICBKU1ZhbHVlIHJlc3VsdDsKLSAgICBpZiAoaXNNYWluVGhyZWFkKCkpCi0gICAgICAgIHJlc3Vs
dCA9IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y2FsbChtX2V4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlw
ZSwgY2FsbERhdGEsIHRoaXNPYmplY3QsIG1fYXJndW1lbnRzKTsKKyAgICBpZiAobV9jYWxsSGFu
ZGxlcikKKyAgICAgICAgcmVzdWx0ID0gbV9jYWxsSGFuZGxlcihtX2V4ZWMsIGZ1bmN0aW9uLCBj
YWxsVHlwZSwgY2FsbERhdGEsIHRoaXNPYmplY3QsIG1fYXJndW1lbnRzKTsKICAgICBlbHNlCiAg
ICAgICAgIHJlc3VsdCA9IEpTQzo6Y2FsbChtX2V4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIHRoaXNPYmplY3QsIG1fYXJndW1lbnRzKTsKIAogICAgIGlmIChtX2V4ZWMtPmhhZEV4
Y2VwdGlvbigpKSB7CiAgICAgICAgIGhhZEV4Y2VwdGlvbiA9IHRydWU7Ci0gICAgICAgIHJldHVy
biBTY3JpcHRWYWx1ZSgpOworICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUo
KTsKICAgICB9CiAKLSAgICByZXR1cm4gU2NyaXB0VmFsdWUobV9leGVjLT52bSgpLCByZXN1bHQp
OworICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShtX2V4ZWMtPnZtKCksIHJlc3Vs
dCk7CiB9CiAKLVNjcmlwdFZhbHVlIFNjcmlwdEZ1bmN0aW9uQ2FsbDo6Y2FsbCgpCitEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSBTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwoKQogewogICAgIGJvb2wg
aGFkRXhjZXB0aW9uID0gZmFsc2U7CiAgICAgcmV0dXJuIGNhbGwoaGFkRXhjZXB0aW9uKTsKIH0K
IAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgRGVwcmVjYXRlZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmgKc2lt
aWxhcml0eSBpbmRleCA1MCUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0RnVuY3Rpb25DYWxsLmgKcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5k
aW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaAppbmRleCA1NmZhNDdjLi4wNGIyYWZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmgKQEAg
LTEsNCArMSw1IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzEsNTcgKzMyLDU2IEBACiAjaWZu
ZGVmIFNjcmlwdEZ1bmN0aW9uQ2FsbF9oCiAjZGVmaW5lIFNjcmlwdEZ1bmN0aW9uQ2FsbF9oCiAK
KyNpbmNsdWRlICJBcmdMaXN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCi0jaW5jbHVk
ZSAiU2NyaXB0U3RhdGUuaCIKLQotI2luY2x1ZGUgPHJ1bnRpbWUvQXJnTGlzdC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLSAgICBjbGFzcyBK
U1ZhbHVlOworY2xhc3MgSlNWYWx1ZTsKIH0KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNs
YXNzIFNjcmlwdFZhbHVlOworbmFtZXNwYWNlIERlcHJlY2F0ZWQgewogCi0gICAgY2xhc3MgU2Ny
aXB0Q2FsbEFyZ3VtZW50SGFuZGxlciB7Ci0gICAgcHVibGljOgotICAgICAgICBTY3JpcHRDYWxs
QXJndW1lbnRIYW5kbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkgOiBtX2V4ZWMoc3RhdGUpIHsg
fQorY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlciB7Citw
dWJsaWM6CisgICAgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcihKU0M6OkV4ZWNTdGF0ZSogc3Rh
dGUpIDogbV9leGVjKHN0YXRlKSB7IH0KIAotICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGNv
bnN0IFNjcmlwdE9iamVjdCYpOwotICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGNvbnN0IFNj
cmlwdFZhbHVlJik7Ci0gICAgICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoY29uc3QgY2hhciopOwot
ICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGNvbnN0IFN0cmluZyYpOwotICAgICAgICB2b2lk
IGFwcGVuZEFyZ3VtZW50KEpTQzo6SlNWYWx1ZSk7Ci0gICAgICAgIHZvaWQgYXBwZW5kQXJndW1l
bnQobG9uZyk7Ci0gICAgICAgIHZvaWQgYXBwZW5kQXJndW1lbnQobG9uZyBsb25nKTsKLSAgICAg
ICAgdm9pZCBhcHBlbmRBcmd1bWVudCh1bnNpZ25lZCBpbnQpOwotICAgICAgICB2b2lkIGFwcGVu
ZEFyZ3VtZW50KHVuc2lnbmVkIGxvbmcpOwotICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGlu
dCk7Ci0gICAgICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoYm9vbCk7CisgICAgdm9pZCBhcHBlbmRB
cmd1bWVudChjb25zdCBTY3JpcHRPYmplY3QmKTsKKyAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGNv
bnN0IFNjcmlwdFZhbHVlJik7CisgICAgdm9pZCBhcHBlbmRBcmd1bWVudChjb25zdCBjaGFyKik7
CisgICAgdm9pZCBhcHBlbmRBcmd1bWVudChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGFwcGVu
ZEFyZ3VtZW50KEpTQzo6SlNWYWx1ZSk7CisgICAgdm9pZCBhcHBlbmRBcmd1bWVudChsb25nKTsK
KyAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGxvbmcgbG9uZyk7CisgICAgdm9pZCBhcHBlbmRBcmd1
bWVudCh1bnNpZ25lZCBpbnQpOworICAgIHZvaWQgYXBwZW5kQXJndW1lbnQodW5zaWduZWQgbG9u
Zyk7CisgICAgdm9pZCBhcHBlbmRBcmd1bWVudChpbnQpOworICAgIHZvaWQgYXBwZW5kQXJndW1l
bnQoYm9vbCk7CiAKLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIEpTQzo6TWFya2VkQXJndW1lbnRC
dWZmZXIgbV9hcmd1bWVudHM7Ci0gICAgICAgIEpTQzo6RXhlY1N0YXRlKiBtX2V4ZWM7Citwcm90
ZWN0ZWQ6CisgICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBtX2FyZ3VtZW50czsKKyAgICBK
U0M6OkV4ZWNTdGF0ZSogbV9leGVjOwogCi0gICAgcHJpdmF0ZToKLSAgICAgICAgLy8gTWFya2Vk
QXJndW1lbnRCdWZmZXIgbXVzdCBiZSBzdGFjayBhbGxvY2F0ZWQsIHNvIHByZXZlbnQgaGVhcAot
ICAgICAgICAvLyBhbGxvYyBvZiBTY3JpcHRGdW5jdGlvbkNhbGwgYXMgd2VsbC4KLSAgICAgICAg
dm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDB4YmFkYmVlZik7IH0KLSAgICAgICAgdm9pZCogb3Bl
cmF0b3IgbmV3W10oc2l6ZV90KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oMHhiYWRiZWVmKTsgfQotICAgIH07Citwcml2YXRlOgorICAgIC8v
IE1hcmtlZEFyZ3VtZW50QnVmZmVyIG11c3QgYmUgc3RhY2sgYWxsb2NhdGVkLCBzbyBwcmV2ZW50
IGhlYXAKKyAgICAvLyBhbGxvYyBvZiBTY3JpcHRGdW5jdGlvbkNhbGwgYXMgd2VsbC4KKyAgICB2
b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMHhiYWRiZWVmKTsgfQorICAgIHZvaWQqIG9wZXJhdG9y
IG5ld1tdKHNpemVfdCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KDB4YmFkYmVlZik7IH0KK307CiAKLSAgICBjbGFzcyBTY3JpcHRGdW5jdGlv
bkNhbGwgOiBwdWJsaWMgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlciB7Ci0gICAgcHVibGljOgot
ICAgICAgICBTY3JpcHRGdW5jdGlvbkNhbGwoY29uc3QgU2NyaXB0T2JqZWN0JiB0aGlzT2JqZWN0
LCBjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgICAgICBTY3JpcHRWYWx1ZSBjYWxsKGJvb2wmIGhh
ZEV4Y2VwdGlvbik7Ci0gICAgICAgIFNjcmlwdFZhbHVlIGNhbGwoKTsKK2NsYXNzIEpTX0VYUE9S
VF9QUklWQVRFIFNjcmlwdEZ1bmN0aW9uQ2FsbCA6IHB1YmxpYyBTY3JpcHRDYWxsQXJndW1lbnRI
YW5kbGVyIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTQzo6SlNWYWx1ZSAoKlNjcmlwdEZ1bmN0
aW9uQ2FsbEhhbmRsZXIpKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgZnVuY3Rp
b25PYmplY3QsIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0IEpTQzo6Q2FsbERhdGEmIGNh
bGxEYXRhLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3Mp
OworICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbChjb25zdCBTY3JpcHRPYmplY3QmIHRoaXNPYmplY3Qs
IGNvbnN0IFN0cmluZyYgbmFtZSwgU2NyaXB0RnVuY3Rpb25DYWxsSGFuZGxlciBoYW5kbGVyID0g
bnVsbHB0cik7CisgICAgU2NyaXB0VmFsdWUgY2FsbChib29sJiBoYWRFeGNlcHRpb24pOworICAg
IFNjcmlwdFZhbHVlIGNhbGwoKTsKIAotICAgIHByb3RlY3RlZDoKLSAgICAgICAgU2NyaXB0T2Jq
ZWN0IG1fdGhpc09iamVjdDsKLSAgICAgICAgU3RyaW5nIG1fbmFtZTsKLSAgICB9OworcHJvdGVj
dGVkOgorICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbEhhbmRsZXIgbV9jYWxsSGFuZGxlcjsKKyAgICBT
Y3JpcHRPYmplY3QgbV90aGlzT2JqZWN0OworICAgIFN0cmluZyBtX25hbWU7Cit9OwogCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBEZXByZWNhdGVkCiAKICNlbmRpZiAv
LyBTY3JpcHRGdW5jdGlvbkNhbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Xb3JrZXJDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdz
L1NjcmlwdE9iamVjdC5jcHAKc2ltaWxhcml0eSBpbmRleCA3MSUKY29weSBmcm9tIFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQuY3BwCmNvcHkgdG8gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5jcHAKaW5kZXggMTViYjdhOC4uY2Nm
N2FmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckNvbnNvbGVB
Z2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdE9iamVj
dC5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CkBAIC0yOSwzMiArMzAsMjIgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiU2NyaXB0T2JqZWN0LmgiCiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQordXNpbmcgbmFtZXNw
YWNlIEpTQzsKIAotI2luY2x1ZGUgIldvcmtlckNvbnNvbGVBZ2VudC5oIgorbmFtZXNwYWNlIERl
cHJlY2F0ZWQgewogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVdvcmtlckNvbnNvbGVBZ2VudDo6
V29ya2VyQ29uc29sZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgIDog
SW5zcGVjdG9yQ29uc29sZUFnZW50KGluc3RydW1lbnRpbmdBZ2VudHMsIGluamVjdGVkU2NyaXB0
TWFuYWdlcikKLXsKLX0KLQotV29ya2VyQ29uc29sZUFnZW50Ojp+V29ya2VyQ29uc29sZUFnZW50
KCkKK1NjcmlwdE9iamVjdDo6U2NyaXB0T2JqZWN0KEV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIEpT
T2JqZWN0KiBvYmplY3QpCisgICAgOiBTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZS0+dm0oKSwgb2Jq
ZWN0KQorICAgICwgbV9zY3JpcHRTdGF0ZShzY3JpcHRTdGF0ZSkKIHsKIH0KIAotdm9pZCBXb3Jr
ZXJDb25zb2xlQWdlbnQ6OmFkZEluc3BlY3RlZE5vZGUoRXJyb3JTdHJpbmcqIGVycm9yLCBpbnQp
CitTY3JpcHRPYmplY3Q6OlNjcmlwdE9iamVjdChFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25z
dCBTY3JpcHRWYWx1ZSYgc2NyaXB0VmFsdWUpCisgICAgOiBTY3JpcHRWYWx1ZShzY3JpcHRTdGF0
ZS0+dm0oKSwgc2NyaXB0VmFsdWUuanNWYWx1ZSgpKQorICAgICwgbV9zY3JpcHRTdGF0ZShzY3Jp
cHRTdGF0ZSkKIHsKLSAgICAqZXJyb3IgPSAiYWRkSW5zcGVjdGVkTm9kZSBpcyBub3Qgc3VwcG9y
dGVkIGZvciB3b3JrZXJzIjsKIH0KIAotYm9vbCBXb3JrZXJDb25zb2xlQWdlbnQ6OmRldmVsb3Bl
ckV4dHJhc0VuYWJsZWQoKQotewotICAgIHJldHVybiB0cnVlOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQorfSAvLyBuYW1lc3BhY2Ug
RGVwcmVjYXRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckJhc2VBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdE9iamVj
dC5oCnNpbWlsYXJpdHkgaW5kZXggNjQlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JCYXNlQWdlbnQuaApyZW5hbWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2JpbmRpbmdzL1NjcmlwdE9iamVjdC5oCmluZGV4IDhiOTA5MzguLjhmN2IwZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYXNlQWdlbnQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0T2JqZWN0LmgKQEAgLTEsNSArMSw2
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yOCwzNiArMjksMjcg
QEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBJbnNwZWN0b3JCYXNlQWdlbnRfaAot
I2RlZmluZSBJbnNwZWN0b3JCYXNlQWdlbnRfaAorI2lmbmRlZiBTY3JpcHRPYmplY3RfaAorI2Rl
ZmluZSBTY3JpcHRPYmplY3RfaAogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXJzLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSAiSlNPYmpl
Y3QuaCIKKyNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Citu
YW1lc3BhY2UgRGVwcmVjYXRlZCB7CiAKLWNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsK
LWNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7Ci0KLWNsYXNzIEluc3BlY3RvckJhc2VBZ2VudCB7
CitjbGFzcyBTY3JpcHRPYmplY3QgOiBwdWJsaWMgU2NyaXB0VmFsdWUgewogcHVibGljOgotICAg
IHZpcnR1YWwgfkluc3BlY3RvckJhc2VBZ2VudCgpIHsgfQorICAgIEpTX0VYUE9SVF9QUklWQVRF
IFNjcmlwdE9iamVjdChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBTY3JpcHRPYmplY3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTY3JpcHRW
YWx1ZSYpOworICAgIFNjcmlwdE9iamVjdCgpIDogbV9zY3JpcHRTdGF0ZShudWxscHRyKSB7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBkaXNjYXJkQWdlbnQoKSB7IH0KKyAgICBKU0M6OkpTT2JqZWN0KiBqc09iamVj
dCgpIGNvbnN0IHsgcmV0dXJuIGFzT2JqZWN0KGpzVmFsdWUoKSk7IH0KKyAgICBKU0M6OkV4ZWNT
dGF0ZSogc2NyaXB0U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdFN0YXRlOyB9CiAKIHBy
b3RlY3RlZDoKLSAgICBJbnNwZWN0b3JCYXNlQWdlbnQoY29uc3QgU3RyaW5nJiBuYW1lLCBJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQotICAgICAgICA6IG1faW5zdHJ1
bWVudGluZ0FnZW50cyhpbnN0cnVtZW50aW5nQWdlbnRzKQotICAgICAgICAsIG1fbmFtZShuYW1l
KQotICAgIHsKLSAgICB9Ci0KLSAgICBJbnN0cnVtZW50aW5nQWdlbnRzKiBtX2luc3RydW1lbnRp
bmdBZ2VudHM7Ci0gICAgU3RyaW5nIG1fbmFtZTsKKyAgICBKU0M6OkV4ZWNTdGF0ZSogbV9zY3Jp
cHRTdGF0ZTsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIERl
cHJlY2F0ZWQKIAotI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckJhc2VBZ2VudF9oKQorI2Vu
ZGlmIC8vIFNjcmlwdE9iamVjdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2Ny
aXB0VmFsdWUuY3BwCnNpbWlsYXJpdHkgaW5kZXggNzIlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcApyZW5hbWUgdG8gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAppbmRleCA2ZDlmYjFkLi41YzYwYjFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4
LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoYykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApA
QCAtNywxMyArNywxMyBAQAogICogYXJlIG1ldDoKICAqCiAgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuIAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KICAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAogICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLiAKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YK
ICAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgogICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKICAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKQEAgLTMwLDIxICszMCwyMCBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAKKyNpbmNsdWRlICJB
UElDYXN0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCi0jaW5jbHVkZSAiSlNET01C
aW5kaW5nLmgiCi0jaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCi0KLSNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNW
YWx1ZVJlZi5oPgotCi0jaW5jbHVkZSA8aGVhcC9TdHJvbmcuaD4KLSNpbmNsdWRlIDxydW50aW1l
L0pTTG9jay5oPgorI2luY2x1ZGUgIkpTTG9jay5oIgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwor
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNw
YWNlIERlcHJlY2F0ZWQgewogCi1ib29sIFNjcmlwdFZhbHVlOjpnZXRTdHJpbmcoSlNDOjpFeGVj
U3RhdGUqIHNjcmlwdFN0YXRlLCBTdHJpbmcmIHJlc3VsdCkgY29uc3QKK1NjcmlwdFZhbHVlOjp+
U2NyaXB0VmFsdWUoKQoreworfQorCitib29sIFNjcmlwdFZhbHVlOjpnZXRTdHJpbmcoRXhlY1N0
YXRlKiBzY3JpcHRTdGF0ZSwgU3RyaW5nJiByZXN1bHQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3Zh
bHVlKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01NCw3ICs1Myw3IEBAIGJvb2wgU2NyaXB0
VmFsdWU6OmdldFN0cmluZyhKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIFN0cmluZyYgcmVz
dWx0KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1TdHJpbmcgU2NyaXB0VmFsdWU6OnRv
U3RyaW5nKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSkgY29uc3QKK1N0cmluZyBTY3JpcHRW
YWx1ZTo6dG9TdHJpbmcoRXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSkgY29uc3QKIHsKICAgICBTdHJp
bmcgcmVzdWx0ID0gbV92YWx1ZS5nZXQoKS50b1N0cmluZyhzY3JpcHRTdGF0ZSktPnZhbHVlKHNj
cmlwdFN0YXRlKTsKICAgICAvLyBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgYW4gZXhjZXB0aW9uIGlz
IHRocm93biBhcyBwYXJ0IG9mIGludm9raW5nIHRvU3RyaW5nIG9uIHRoZSBvYmplY3QuCkBAIC02
MywxMiArNjIsMTEgQEAgU3RyaW5nIFNjcmlwdFZhbHVlOjp0b1N0cmluZyhKU0M6OkV4ZWNTdGF0
ZSogc2NyaXB0U3RhdGUpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBTY3Jp
cHRWYWx1ZTo6aXNFcXVhbChKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IFNjcmlw
dFZhbHVlJiBhbm90aGVyVmFsdWUpIGNvbnN0Citib29sIFNjcmlwdFZhbHVlOjppc0VxdWFsKEV4
ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBhbm90aGVyVmFsdWUpIGNv
bnN0CiB7CiAgICAgaWYgKGhhc05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIGFub3RoZXJWYWx1
ZS5oYXNOb1ZhbHVlKCk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZUlzRXF1YWwodG9SZWYoc2NyaXB0
U3RhdGUpLCB0b1JlZihzY3JpcHRTdGF0ZSwganNWYWx1ZSgpKSwgdG9SZWYoc2NyaXB0U3RhdGUs
IGFub3RoZXJWYWx1ZS5qc1ZhbHVlKCkpLCAwKTsKKyAgICByZXR1cm4gSlNWYWx1ZUlzRXF1YWwo
dG9SZWYoc2NyaXB0U3RhdGUpLCB0b1JlZihzY3JpcHRTdGF0ZSwganNWYWx1ZSgpKSwgdG9SZWYo
c2NyaXB0U3RhdGUsIGFub3RoZXJWYWx1ZS5qc1ZhbHVlKCkpLCBudWxscHRyKTsKIH0KIAogYm9v
bCBTY3JpcHRWYWx1ZTo6aXNOdWxsKCkgY29uc3QKQEAgLTk4LDMzICs5NiwxNyBAQCBib29sIFNj
cmlwdFZhbHVlOjppc0Z1bmN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gZ2V0Q2FsbERhdGEobV92
YWx1ZS5nZXQoKSwgY2FsbERhdGEpICE9IENhbGxUeXBlTm9uZTsKIH0KIAotUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNjcmlwdFZhbHVlOjpzZXJpYWxpemUoSlNDOjpFeGVjU3Rh
dGUqIHNjcmlwdFN0YXRlLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucykK
LXsKLSAgICByZXR1cm4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoc2NyaXB0U3RhdGUs
IGpzVmFsdWUoKSwgMCwgMCwgdGhyb3dFeGNlcHRpb25zKTsKLX0KLQotUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IFNjcmlwdFZhbHVlOjpzZXJpYWxpemUoSlNDOjpFeGVjU3RhdGUq
IHNjcmlwdFN0YXRlLCBNZXNzYWdlUG9ydEFycmF5KiBtZXNzYWdlUG9ydHMsIEFycmF5QnVmZmVy
QXJyYXkqIGFycmF5QnVmZmVycywgYm9vbCYgZGlkVGhyb3cpCi17Ci0gICAgUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpjcmVhdGUoc2NyaXB0U3RhdGUsIGpzVmFsdWUoKSwgbWVzc2FnZVBvcnRzLCBhcnJheUJ1ZmZl
cnMpOwotICAgIGRpZFRocm93ID0gc2NyaXB0U3RhdGUtPmhhZEV4Y2VwdGlvbigpOwotICAgIHJl
dHVybiBzZXJpYWxpemVkVmFsdWUucmVsZWFzZSgpOwotfQotCi1TY3JpcHRWYWx1ZSBTY3JpcHRW
YWx1ZTo6ZGVzZXJpYWxpemUoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBTZXJpYWxpemVk
U2NyaXB0VmFsdWUqIHZhbHVlLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9u
cykKLXsKLSAgICByZXR1cm4gU2NyaXB0VmFsdWUoc2NyaXB0U3RhdGUtPnZtKCksIHZhbHVlLT5k
ZXNlcmlhbGl6ZShzY3JpcHRTdGF0ZSwgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSwgMCwgdGhyb3dFeGNlcHRpb25zKSk7Ci19Ci0KICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotc3Rh
dGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGpzVG9JbnNwZWN0b3JWYWx1ZShKU0M6OkV4
ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIEpTVmFsdWUgdmFsdWUsIGludCBtYXhEZXB0aCkKK3N0YXRp
YyBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBqc1RvSW5zcGVjdG9yVmFsdWUoRXhlY1N0YXRl
KiBzY3JpcHRTdGF0ZSwgSlNWYWx1ZSB2YWx1ZSwgaW50IG1heERlcHRoKQogewogICAgIGlmICgh
dmFsdWUpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAoIW1heERlcHRoKQot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICBtYXhEZXB0
aC0tOwogCiAgICAgaWYgKHZhbHVlLmlzTnVsbCgpIHx8IHZhbHVlLmlzVW5kZWZpbmVkKCkpCkBA
IC0xMzcsNiArMTE5LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGpzVG9J
bnNwZWN0b3JWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUKICAgICAgICAgU3RyaW5n
IHMgPSB2YWx1ZS5nZXRTdHJpbmcoc2NyaXB0U3RhdGUpOwogICAgICAgICByZXR1cm4gSW5zcGVj
dG9yU3RyaW5nOjpjcmVhdGUoU3RyaW5nKHMuY2hhcmFjdGVycygpLCBzLmxlbmd0aCgpKSk7CiAg
ICAgfQorCiAgICAgaWYgKHZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgaWYgKGlzSlNBcnJh
eSh2YWx1ZSkpIHsKICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gaW5zcGVjdG9y
QXJyYXkgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CkBAIC0xNDYsNyArMTI5LDcgQEAgc3Rh
dGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGpzVG9JbnNwZWN0b3JWYWx1ZShKU0M6OkV4
ZWNTdGF0ZSogc2NyaXB0U3RhdGUKICAgICAgICAgICAgICAgICBKU1ZhbHVlIGVsZW1lbnQgPSBh
cnJheS0+Z2V0SW5kZXgoc2NyaXB0U3RhdGUsIGkpOwogICAgICAgICAgICAgICAgIFJlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4gZWxlbWVudFZhbHVlID0ganNUb0luc3BlY3RvclZhbHVlKHNjcmlwdFN0
YXRlLCBlbGVtZW50LCBtYXhEZXB0aCk7CiAgICAgICAgICAgICAgICAgaWYgKCFlbGVtZW50VmFs
dWUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAgICBpbnNwZWN0b3JBcnJheS0+cHVzaFZhbHVl
KGVsZW1lbnRWYWx1ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gaW5zcGVj
dG9yQXJyYXk7CkBAIC0xNjAsMjAgKzE0MywyMSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3JWYWx1ZT4ganNUb0luc3BlY3RvclZhbHVlKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZQog
ICAgICAgICAgICAgSlNWYWx1ZSBwcm9wZXJ0eVZhbHVlID0gb2JqZWN0LT5nZXQoc2NyaXB0U3Rh
dGUsIG5hbWUpOwogICAgICAgICAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBpbnNwZWN0b3JW
YWx1ZSA9IGpzVG9JbnNwZWN0b3JWYWx1ZShzY3JpcHRTdGF0ZSwgcHJvcGVydHlWYWx1ZSwgbWF4
RGVwdGgpOwogICAgICAgICAgICAgaWYgKCFpbnNwZWN0b3JWYWx1ZSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAg
IGluc3BlY3Rvck9iamVjdC0+c2V0VmFsdWUoU3RyaW5nKG5hbWUuY2hhcmFjdGVycygpLCBuYW1l
Lmxlbmd0aCgpKSwgaW5zcGVjdG9yVmFsdWUpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBp
bnNwZWN0b3JPYmplY3Q7CiAgICAgfQorCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
cmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9y
VmFsdWU+IFNjcmlwdFZhbHVlOjp0b0luc3BlY3RvclZhbHVlKEpTQzo6RXhlY1N0YXRlKiBzY3Jp
cHRTdGF0ZSkgY29uc3QKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IFNjcmlwdFZhbHVlOjp0
b0luc3BlY3RvclZhbHVlKEV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUpIGNvbnN0CiB7Ci0gICAgSlND
OjpKU0xvY2tIb2xkZXIgaG9sZGVyKHNjcmlwdFN0YXRlKTsKKyAgICBKU0xvY2tIb2xkZXIgaG9s
ZGVyKHNjcmlwdFN0YXRlKTsKICAgICByZXR1cm4ganNUb0luc3BlY3RvclZhbHVlKHNjcmlwdFN0
YXRlLCBtX3ZhbHVlLmdldCgpLCBJbnNwZWN0b3JWYWx1ZTo6bWF4RGVwdGgpOwogfQogI2VuZGlm
IC8vIEVOQUJMRShJTlNQRUNUT1IpCiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFt
ZXNwYWNlIERlcHJlY2F0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdFZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFs
dWUuaApzaW1pbGFyaXR5IGluZGV4IDc2JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRWYWx1ZS5oCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmlu
ZGluZ3MvU2NyaXB0VmFsdWUuaAppbmRleCAwMTIxMGY1Li5kNWZhZGU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5oCkBAIC0xLDEwICsxLDExIEBACiAvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoYykgMjAwOCwgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogCisgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCiAgKiBtZXQ6Ci0gKiAK
KyAqCiAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAogICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpAQCAtMTQsNyArMTUsNyBAQAog
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwogICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KICAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKKyAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiAgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAogICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCkBAIC0zMSwyNSArMzIsMjQgQEAKICNpZm5kZWYgU2NyaXB0
VmFsdWVfaAogI2RlZmluZSBTY3JpcHRWYWx1ZV9oCiAKLSNpbmNsdWRlICJTZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgotI2luY2x1ZGUgPGhlYXAvU3Ry
b25nLmg+Ci0jaW5jbHVkZSA8aGVhcC9TdHJvbmdJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8cnVudGlt
ZS9KU0NKU1ZhbHVlLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9PcGVyYXRpb25zLmg+CisjaW5jbHVk
ZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJTdHJv
bmcuaCIKKyNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNv
cmUgewotCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIGNsYXNzIEluc3BlY3RvclZhbHVlOwotY2xh
c3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOworfQogCi1jbGFzcyBTY3JpcHRWYWx1ZSB7CituYW1l
c3BhY2UgRGVwcmVjYXRlZCB7CisKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFNjcmlwdFZhbHVl
IHsKIHB1YmxpYzoKICAgICBTY3JpcHRWYWx1ZSgpIHsgfQotICAgIFNjcmlwdFZhbHVlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFsdWUpIDogbV92YWx1ZSh2bSwgdmFsdWUpIHt9Ci0gICAg
dmlydHVhbCB+U2NyaXB0VmFsdWUoKSB7fQorICAgIFNjcmlwdFZhbHVlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTVmFsdWUgdmFsdWUpIDogbV92YWx1ZSh2bSwgdmFsdWUpIHsgfQorICAgIHZpcnR1YWwg
flNjcmlwdFZhbHVlKCk7CiAKICAgICBKU0M6OkpTVmFsdWUganNWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdmFsdWUuZ2V0KCk7IH0KICAgICBib29sIGdldFN0cmluZyhKU0M6OkV4ZWNTdGF0ZSos
IFN0cmluZyYgcmVzdWx0KSBjb25zdDsKQEAgLTY1LDE4ICs2NSwxNCBAQCBwdWJsaWM6CiAKICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0VmFsdWUmIG90aGVyKSBjb25zdCB7IHJldHVy
biBtX3ZhbHVlID09IG90aGVyLm1fdmFsdWU7IH0KIAotICAgIFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBzZXJpYWxpemUoSlNDOjpFeGVjU3RhdGUqLCBTZXJpYWxpemF0aW9uRXJy
b3JNb2RlID0gVGhyb3dpbmcpOwotICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBzZXJpYWxpemUoSlNDOjpFeGVjU3RhdGUqLCBNZXNzYWdlUG9ydEFycmF5KiwgQXJyYXlCdWZm
ZXJBcnJheSosIGJvb2wmKTsKLSAgICBzdGF0aWMgU2NyaXB0VmFsdWUgZGVzZXJpYWxpemUoSlND
OjpFeGVjU3RhdGUqLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBTZXJpYWxpemF0aW9uRXJyb3JN
b2RlID0gVGhyb3dpbmcpOwotCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBQYXNzUmVmUHRy
PEluc3BlY3RvclZhbHVlPiB0b0luc3BlY3RvclZhbHVlKEpTQzo6RXhlY1N0YXRlKikgY29uc3Q7
CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiB0b0luc3BlY3RvclZh
bHVlKEpTQzo6RXhlY1N0YXRlKikgY29uc3Q7CiAjZW5kaWYKIAogcHJpdmF0ZToKICAgICBKU0M6
OlN0cm9uZzxKU0M6OlVua25vd24+IG1fdmFsdWU7CiB9OwogCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCit9IC8vIG5hbWVzcGFjZSBEZXByZWNhdGVkCiAKICNlbmRpZiAvLyBTY3JpcHRWYWx1ZV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdp
c3RyeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJh
c2UuaApzaW1pbGFyaXR5IGluZGV4IDY4JQpjb3B5IGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaApjb3B5IHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmgKaW5kZXggNGZkMDM1My4uMjBhZDcxZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0
cnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50
QmFzZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNCwyOSArMjQsMzMg
QEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5
X2gKLSNkZWZpbmUgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeV9oCisjaWZuZGVmIEluc3BlY3RvckFn
ZW50QmFzZV9oCisjZGVmaW5lIEluc3BlY3RvckFnZW50QmFzZV9oCiAKLSNpbmNsdWRlICJJbnNw
ZWN0b3JCYXNlQWdlbnQuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNw
YWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIGNsYXNzIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOworY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogCi1jbGFz
cyBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5IHsKK2NsYXNzIEluc3BlY3RvckFnZW50QmFzZSB7CiBw
dWJsaWM6Ci0gICAgdm9pZCBhcHBlbmQoUGFzc093blB0cjxJbnNwZWN0b3JCYXNlQWdlbnQ+KTsK
KyAgICB2aXJ0dWFsIH5JbnNwZWN0b3JBZ2VudEJhc2UoKSB7IH0KIAotICAgIHZvaWQgZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKik7Ci0gICAgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZCgpOwotICAgIHZvaWQgZGlzY2FyZEFnZW50cygpOworICAgIHZpcnR1YWwgdm9pZCBkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95
RnJvbnRlbmRBbmRCYWNrZW5kKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkQWdlbnQo
KSB7IH0KIAotcHJpdmF0ZToKLSAgICBWZWN0b3I8T3duUHRyPEluc3BlY3RvckJhc2VBZ2VudD4+
IG1fYWdlbnRzOworcHJvdGVjdGVkOgorICAgIEluc3BlY3RvckFnZW50QmFzZShjb25zdCBTdHJp
bmcmIG5hbWUpCisgICAgICAgIDogbV9uYW1lKG5hbWUpCisgICAgeworICAgIH0KKworICAgIFN0
cmluZyBtX25hbWU7CiB9OworICAgIAorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckFnZW50UmVn
aXN0cnlfaCkKKyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JBZ2VudEJhc2VfaCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3Ry
eS5jcHAKc2ltaWxhcml0eSBpbmRleCA5NCUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwCmluZGV4IDA5OWQx
YTMuLjQ2ZTkyMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JBZ2VudFJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwCkBAIC0yNSwxNCArMjUsMTMgQEAKICAqLwogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotCiAjaW5jbHVkZSAi
SW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CisjaWYgRU5B
QkxFKElOU1BFQ1RPUikKIAotdm9pZCBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5OjphcHBlbmQoUGFz
c093blB0cjxJbnNwZWN0b3JCYXNlQWdlbnQ+IGFnZW50KQorbmFtZXNwYWNlIEluc3BlY3RvciB7
CisKK3ZvaWQgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6YXBwZW5kKFBhc3NPd25QdHI8SW5zcGVj
dG9yQWdlbnRCYXNlPiBhZ2VudCkKIHsKICAgICBtX2FnZW50cy5hcHBlbmQoYWdlbnQpOwogfQpA
QCAtNTUsNiArNTQsNiBAQCB2b2lkIEluc3BlY3RvckFnZW50UmVnaXN0cnk6OmRpc2NhcmRBZ2Vu
dHMoKQogICAgICAgICBtX2FnZW50c1tpXS0+ZGlzY2FyZEFnZW50KCk7CiB9CiAKLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5B
QkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JBZ2VudFJlZ2lzdHJ5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckFnZW50UmVnaXN0cnkuaApzaW1pbGFyaXR5IGluZGV4IDg3JQpjb3B5IGZyb20gU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaApjb3B5IHRvIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oCmlu
ZGV4IDRmZDAzNTMuLmNiNjU3MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgKQEAgLTI3LDI2ICsyNywyNyBAQAogI2lm
bmRlZiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5X2gKICNkZWZpbmUgSW5zcGVjdG9yQWdlbnRSZWdp
c3RyeV9oCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JBZ2VudEJhc2UuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CiAKIGNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOworY2xhc3MgSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsOwogCi1jbGFzcyBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5IHsKK2NsYXNz
IEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvckFnZW50UmVnaXN0cnkgewogcHVibGljOgotICAg
IHZvaWQgYXBwZW5kKFBhc3NPd25QdHI8SW5zcGVjdG9yQmFzZUFnZW50Pik7CisgICAgdm9pZCBh
cHBlbmQoUGFzc093blB0cjxJbnNwZWN0b3JBZ2VudEJhc2U+KTsKIAogICAgIHZvaWQgZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKik7CiAgICAgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZCgpOwogICAgIHZvaWQgZGlzY2FyZEFnZW50cygpOwogCiBwcml2YXRlOgotICAgIFZlY3Rv
cjxPd25QdHI8SW5zcGVjdG9yQmFzZUFnZW50Pj4gbV9hZ2VudHM7CisgICAgVmVjdG9yPE93blB0
cjxJbnNwZWN0b3JBZ2VudEJhc2U+PiBtX2FnZW50czsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gIWRlZmluZWQoSW5z
cGVjdG9yQWdlbnRSZWdpc3RyeV9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCnNpbWlsYXJpdHkgaW5k
ZXggOTYlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5jcHAKcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCmluZGV4IGJmYTRjNGIuLmMyNjY4NTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAKQEAgLTI5LDEyICsyOSwxMiBAQAogCiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvckZvcndhcmRpbmcuaCIKKyNpbmNsdWRl
ICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMu
aCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJbnNwZWN0b3Igewog
CiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjpDYWxsYmFja0Jhc2Uo
UGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gYmFja2VuZERpc3BhdGNoZXIs
IGludCBpZCkKICAgICA6IG1fYmFja2VuZERpc3BhdGNoZXIoYmFja2VuZERpc3BhdGNoZXIpCkBA
IC0xODcsNyArMTg3LDcgQEAgdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6cmVwb3J0
UHJvdG9jb2xFcnJvcihjb25zdCBsb25nKiBjb25zdCBjYWxsSWQsIEMKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgUmV0dXJuVmFsdWVUeXBlLCB0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIERl
ZmF1bHRWYWx1ZVR5cGU+Ci1SZXR1cm5WYWx1ZVR5cGUgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI6OmdldFByb3BlcnR5VmFsdWUoSW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yQXJyYXkqIHByb3RvY29sRXJyb3Jz
LCBEZWZhdWx0VmFsdWVUeXBlIGRlZmF1bHRWYWx1ZSwgYm9vbCAoKmFzTWV0aG9kKShJbnNwZWN0
b3JWYWx1ZSosIFZhbHVlVHlwZSopLCBjb25zdCBjaGFyKiB0eXBlTmFtZSkKK3N0YXRpYyBSZXR1
cm5WYWx1ZVR5cGUgZ2V0UHJvcGVydHlWYWx1ZShJbnNwZWN0b3JPYmplY3QqIG9iamVjdCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0b3JBcnJheSogcHJvdG9j
b2xFcnJvcnMsIERlZmF1bHRWYWx1ZVR5cGUgZGVmYXVsdFZhbHVlLCBib29sICgqYXNNZXRob2Qp
KEluc3BlY3RvclZhbHVlKiwgVmFsdWVUeXBlKiksIGNvbnN0IGNoYXIqIHR5cGVOYW1lKQogewog
ICAgIEFTU0VSVChwcm90b2NvbEVycm9ycyk7CiAKQEAgLTI1OSw2ICsyNTksNiBAQCBQYXNzUmVm
UHRyPEluc3BlY3RvckFycmF5PiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0QXJyYXko
SW5zcGVjdG9yT2JqZWN0KgogICAgIHJldHVybiBnZXRQcm9wZXJ0eVZhbHVlPFBhc3NSZWZQdHI8
SW5zcGVjdG9yQXJyYXk+LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+LCBJbnNwZWN0b3JBcnJheSo+
KG9iamVjdCwgbmFtZSwgdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMsIG51bGxwdHIsIEFzTWV0
aG9kQnJpZGdlczo6YXNBcnJheSwgIkFycmF5Iik7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RP
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci5oCnNpbWlsYXJpdHkgaW5kZXggODclCnJlbmFtZSBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oCnJlbmFtZSB0
byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLmgKaW5kZXggYTZlNGQyZi4uNTBmZTYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oCkBAIC0yNywx
MiArMjcsMTIgQEAKICNpZm5kZWYgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJfaAogI2RlZmlu
ZSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcl9oCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JUeXBl
QnVpbGRlci5oIgorI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIEluc3Bl
Y3RvciB7CiAKIGNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwogY2xhc3MgSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsOwpAQCAtNDcsMTUgKzQ3LDEzIEBAIHByb3RlY3RlZDoKICAgICBS
ZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiB9
OwogCi1jbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBSZWZDb3VudGVk
PEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiB7CitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI+IGNyZWF0ZShJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKTsK
LSAgICB2aXJ0dWFsIH5JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQogCi0gICAgY2xh
c3MgQ2FsbGJhY2tCYXNlOiBwdWJsaWMgUmVmQ291bnRlZDxDYWxsYmFja0Jhc2U+IHsKKyAgICBj
bGFzcyBDYWxsYmFja0Jhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxDYWxsYmFja0Jhc2U+IHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIENhbGxiYWNrQmFzZShQYXNzUmVmUHRyPEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyPiwgaW50IGlkKTsKLSAgICAgICAgdmlydHVhbCB+Q2FsbGJhY2tCYXNlKCkg
eyB9CiAKICAgICAgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNlbmRG
YWlsdXJlKGNvbnN0IEVycm9yU3RyaW5nJik7CkBAIC05OCwxMyArOTYsMTAgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqIGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgOiBtX2luc3BlY3RvckZyb250ZW5k
Q2hhbm5lbChpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIHsgfQogCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgUmV0dXJuVmFsdWVUeXBlLCB0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIERlZmF1
bHRWYWx1ZVR5cGU+Ci0gICAgc3RhdGljIFJldHVyblZhbHVlVHlwZSBnZXRQcm9wZXJ0eVZhbHVl
KEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVl
Rm91bmQsIEluc3BlY3RvckFycmF5KiBwcm90b2NvbEVycm9ycywgRGVmYXVsdFZhbHVlVHlwZSBk
ZWZhdWx0VmFsdWUsIGJvb2wgKCphc01ldGhvZCkoSW5zcGVjdG9yVmFsdWUqLCBWYWx1ZVR5cGUq
KSwgY29uc3QgY2hhciogdHlwZU5hbWUpOwotCiAgICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKICAgICBIYXNoTWFwPFN0cmluZywgSW5zcGVj
dG9yU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIqPiBtX2Rpc3BhdGNoZXJzOwogfTsKIAot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRp
ZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcl9oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUeXBlQnVpbGRlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUeXBlQnVpbGRlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlYTc2ZWMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclR5cGVCdWlsZGVy
LmgKQEAgLTAsMCArMSwzMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIFRoZSBDaHJvbWl1
bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEluc3BlY3RvclR5cGVCdWlsZGVyX2gKKyNkZWZp
bmUgSW5zcGVjdG9yVHlwZUJ1aWxkZXJfaAorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2lu
Y2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Cisj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK25h
bWVzcGFjZSBUeXBlQnVpbGRlciB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBPcHRP
dXRwdXQgeworcHVibGljOgorICAgIE9wdE91dHB1dCgpIDogbV9hc3NpZ25lZChmYWxzZSkgeyB9
CisKKyAgICB2b2lkIG9wZXJhdG9yPShUIHZhbHVlKQorICAgIHsKKyAgICAgICAgbV92YWx1ZSA9
IHZhbHVlOworICAgICAgICBtX2Fzc2lnbmVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICBib29sIGlz
QXNzaWduZWQoKSBjb25zdCB7IHJldHVybiBtX2Fzc2lnbmVkOyB9CisKKyAgICBUIGdldFZhbHVl
KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc0Fzc2lnbmVkKCkpOworICAgICAgICByZXR1cm4g
bV92YWx1ZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVCBtX3ZhbHVlOworICAgIGJvb2wgbV9h
c3NpZ25lZDsKKworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE9wdE91dHB1dCk7Cit9OworCisK
Ky8vIEEgc21hbGwgdHJhbnNpZW50IHdyYXBwZXIgYXJvdW5kIGludCB0eXBlLCB0aGF0IGNhbiBi
ZSB1c2VkIGFzIGEgZnVuY2l0b24gcGFyYW1ldGVyIHR5cGUKKy8vIGNsZXZlcmx5IGRpc2FsbG93
aW5nIEMrKyBpbXBsaWNpdCBjYXN0cyBmcm9tIGZsb2F0IG9yIGRvdWJsZS4KK2NsYXNzIEV4YWN0
bHlJbnQgeworcHVibGljOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgRXhhY3RseUlu
dChUIHQpIDogbV92YWx1ZShjYXN0X3RvX2ludDxUPih0KSkgeyB9CisgICAgRXhhY3RseUludCgp
IHsgfQorCisgICAgb3BlcmF0b3IgaW50KCkgeyByZXR1cm4gbV92YWx1ZTsgfQorCitwcml2YXRl
OgorICAgIGludCBtX3ZhbHVlOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBzdGF0
aWMgaW50IGNhc3RfdG9faW50KFQpIHsgcmV0dXJuIFQ6OmRlZmF1bHRfY2FzZV9jYXN0X2lzX25v
dF9zdXBwb3J0ZWQoKTsgfQorfTsKKwordGVtcGxhdGU8PgoraW5saW5lIGludCBFeGFjdGx5SW50
OjpjYXN0X3RvX2ludDxpbnQ+KGludCBpKSB7IHJldHVybiBpOyB9CisKK3RlbXBsYXRlPD4KK2lu
bGluZSBpbnQgRXhhY3RseUludDo6Y2FzdF90b19pbnQ8dW5zaWduZWQgaW50Pih1bnNpZ25lZCBp
bnQgaSkgeyByZXR1cm4gaTsgfQorCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorY2xhc3MgUnVudGlt
ZUNhc3RIZWxwZXIgeworcHVibGljOgorICAgIHRlbXBsYXRlPEluc3BlY3RvclZhbHVlOjpUeXBl
IFRZUEU+CisgICAgc3RhdGljIHZvaWQgYXNzZXJ0VHlwZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUp
CisgICAgeworICAgICAgICBBU1NFUlQodmFsdWUtPnR5cGUoKSA9PSBUWVBFKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgdm9pZCBhc3NlcnRBbnkoSW5zcGVjdG9yVmFsdWUqKQorICAgIHsKKyAgICB9
CisKKyAgICBzdGF0aWMgdm9pZCBhc3NlcnRJbnQoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQorICAg
IHsKKyAgICAgICAgZG91YmxlIHY7CisgICAgICAgIGJvb2wgY2FzdFJlcyA9IHZhbHVlLT5hc051
bWJlcigmdik7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoY2FzdFJlcywgY2FzdFJlcyk7CisgICAg
ICAgIEFTU0VSVChzdGF0aWNfY2FzdDxkb3VibGU+KHN0YXRpY19jYXN0PGludD4odikpID09IHYp
OworICAgIH0KK307CisjZW5kaWYKKworCisvLyBUaGlzIGNsYXNzIHByb3ZpZGVzICJUcmFpdHMi
IHR5cGUgZm9yIHRoZSBpbnB1dCB0eXBlIFQuIEl0IGlzIHByb2dyYW1tZWQgdXNpbmcgQysrIHRl
bXBsYXRlIHNwZWNpYWxpemF0aW9uCisvLyB0ZWNobmlxdWUuIEJ5IGRlZmF1bHQgaXQgc2ltcGx5
IHRha2VzICJJdGVtVHJhaXRzIiB0eXBlIGZyb20gVCwgYnV0IGl0IGRvZXNuJ3Qgd29yayB3aXRo
IHRoZSBiYXNlIHR5cGVzLgordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBBcnJheUl0ZW1I
ZWxwZXIgeworICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6SXRlbVRyYWl0cyBUcmFpdHM7Cit9Owor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY2xhc3MgQXJyYXkgOiBwdWJsaWMgSW5zcGVjdG9yQXJy
YXlCYXNlIHsKK3ByaXZhdGU6CisgICAgQXJyYXkoKSB7IH0KKworICAgIEluc3BlY3RvckFycmF5
KiBvcGVuQWNjZXNzb3JzKCkKKyAgICB7CisgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihJ
bnNwZWN0b3JBcnJheSkgPT0gc2l6ZW9mKEFycmF5PFQ+KSwgY2Fubm90X2Nhc3QpOworICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zcGVjdG9yQXJyYXkqPihzdGF0aWNfY2FzdDxJbnNwZWN0
b3JBcnJheUJhc2UqPih0aGlzKSk7CisgICAgfQorCitwdWJsaWM6CisgICAgdm9pZCBhZGRJdGVt
KFBhc3NSZWZQdHI8VD4gdmFsdWUpCisgICAgeworICAgICAgICBBcnJheUl0ZW1IZWxwZXI8VD46
OlRyYWl0czo6cHVzaFJlZlB0cih0aGlzLT5vcGVuQWNjZXNzb3JzKCksIHZhbHVlKTsKKyAgICB9
CisKKyAgICB2b2lkIGFkZEl0ZW0oVCB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFycmF5SXRlbUhl
bHBlcjxUPjo6VHJhaXRzOjpwdXNoUmF3KHRoaXMtPm9wZW5BY2Nlc3NvcnMoKSwgdmFsdWUpOwor
ICAgIH0KKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFycmF5PFQ+PiBjcmVhdGUoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBcnJheTxUPigpKTsKKyAgICB9CisKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxBcnJheTxUPj4gcnVudGltZUNhc3QoUGFzc1JlZlB0cjxJbnNwZWN0
b3JWYWx1ZT4gdmFsdWUpCisgICAgeworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFy
cmF5OworICAgICAgICBib29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNBcnJheSgmYXJyYXkpOworICAg
ICAgICBBU1NFUlRfVU5VU0VEKGNhc3RSZXMsIGNhc3RSZXMpOworI2lmICFBU1NFUlRfRElTQUJM
RUQKKyAgICAgICAgYXNzZXJ0Q29ycmVjdFZhbHVlKGFycmF5LmdldCgpKTsKKyNlbmRpZiAvLyAh
QVNTRVJUX0RJU0FCTEVECisgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihBcnJheTxUPikg
PT0gc2l6ZW9mKEluc3BlY3RvckFycmF5KSwgdHlwZV9jYXN0X3Byb2JsZW0pOworICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk8VD4qPihzdGF0aWNfY2FzdDxJbnNwZWN0b3JBcnJheUJh
c2UqPihhcnJheS5nZXQoKSkpOworICAgIH0KKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBz
dGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQorICAg
IHsKKyAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcnJheTsKKyAgICAgICAgYm9vbCBj
YXN0UmVzID0gdmFsdWUtPmFzQXJyYXkoJmFycmF5KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChj
YXN0UmVzLCBjYXN0UmVzKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFycmF5
LT5sZW5ndGgoKTsgaSsrKQorICAgICAgICAgICAgQXJyYXlJdGVtSGVscGVyPFQ+OjpUcmFpdHM6
OnRlbXBsYXRlIGFzc2VydENvcnJlY3RWYWx1ZTxUPihhcnJheS0+Z2V0KGkpLmdldCgpKTsKKyAg
ICB9CisjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAorfTsKKworc3RydWN0IFN0cnVjdEl0ZW1U
cmFpdHMgeworICAgIHN0YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkqIGFycmF5
LCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSkKKyAgICB7CisgICAgICAgIGFycmF5
LT5wdXNoVmFsdWUodmFsdWUpOworICAgIH0KKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJ
bnNwZWN0b3JWYWx1ZSogdmFsdWUpCisgICAgeworICAgICAgICBUOjphc3NlcnRDb3JyZWN0VmFs
dWUodmFsdWUpOworICAgIH0KKyNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECit9OworCit0ZW1w
bGF0ZTw+CitzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPFN0cmluZz4geworICAgIHN0cnVjdCBUcmFp
dHMgeworICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmF3KEluc3BlY3RvckFycmF5KiBhcnJheSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgYXJyYXktPnB1c2hT
dHJpbmcodmFsdWUpOworICAgICAgICB9CisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RW
YWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIFJ1bnRp
bWVDYXN0SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3RvclZhbHVlOjpUeXBlU3RyaW5nPih2YWx1
ZSk7CisgICAgICAgIH0KKyNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECisgICAgfTsKK307CisK
K3RlbXBsYXRlPD4KK3N0cnVjdCBBcnJheUl0ZW1IZWxwZXI8aW50PiB7CisgICAgc3RydWN0IFRy
YWl0cyB7CisgICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSYXcoSW5zcGVjdG9yQXJyYXkqIGFycmF5
LCBpbnQgdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGFycmF5LT5wdXNoSW50KHZhbHVl
KTsKKyAgICAgICAgfQorCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgorICAgICAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVj
dG9yVmFsdWUqIHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBSdW50aW1lQ2FzdEhlbHBl
cjo6YXNzZXJ0SW50KHZhbHVlKTsKKyAgICAgICAgfQorI2VuZGlmIC8vICFBU1NFUlRfRElTQUJM
RUQKKyAgICB9OworfTsKKwordGVtcGxhdGU8Pgorc3RydWN0IEFycmF5SXRlbUhlbHBlcjxkb3Vi
bGU+IHsKKyAgICBzdHJ1Y3QgVHJhaXRzIHsKKyAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJhdyhJ
bnNwZWN0b3JBcnJheSogYXJyYXksIGRvdWJsZSB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAg
ICAgYXJyYXktPnB1c2hOdW1iZXIodmFsdWUpOworICAgICAgICB9CisKKyNpZiAhQVNTRVJUX0RJ
U0FCTEVECisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgICAgIHN0YXRpYyB2b2lk
IGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3RvclZhbHVlOjpU
eXBlTnVtYmVyPih2YWx1ZSk7CisgICAgICAgIH0KKyNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVE
CisgICAgfTsKK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBBcnJheUl0ZW1IZWxwZXI8Ym9vbD4g
eworICAgIHN0cnVjdCBUcmFpdHMgeworICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmF3KEluc3Bl
Y3RvckFycmF5KiBhcnJheSwgYm9vbCB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgYXJy
YXktPnB1c2hCb29sZWFuKHZhbHVlKTsKKyAgICAgICAgfQorCisjaWYgIUFTU0VSVF9ESVNBQkxF
RAorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgICAgICBzdGF0aWMgdm9pZCBhc3Nl
cnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQorICAgICAgICB7CisgICAgICAg
ICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZUJv
b2xlYW4+KHZhbHVlKTsKKyAgICAgICAgfQorI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKKyAg
ICB9OworfTsKKwordGVtcGxhdGU8Pgorc3RydWN0IEFycmF5SXRlbUhlbHBlcjxJbnNwZWN0b3JW
YWx1ZT4geworICAgIHN0cnVjdCBUcmFpdHMgeworICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmVm
UHRyKEluc3BlY3RvckFycmF5KiBhcnJheSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFs
dWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGFycmF5LT5wdXNoVmFsdWUodmFsdWUpOworICAg
ICAgICB9CisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CisgICAgICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1
ZSogdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3Nl
cnRBbnkodmFsdWUpOworICAgICAgICB9CisjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAorICAg
IH07Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPEluc3BlY3Rvck9i
amVjdD4geworICAgIHN0cnVjdCBUcmFpdHMgeworICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmVm
UHRyKEluc3BlY3RvckFycmF5KiBhcnJheSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFs
dWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGFycmF5LT5wdXNoVmFsdWUodmFsdWUpOworICAg
ICAgICB9CisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CisgICAgICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1
ZSogdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3Nl
cnRUeXBlPEluc3BlY3RvclZhbHVlOjpUeXBlT2JqZWN0Pih2YWx1ZSk7CisgICAgICAgIH0KKyNl
bmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECisgICAgfTsKK307CisKK3RlbXBsYXRlPD4KK3N0cnVj
dCBBcnJheUl0ZW1IZWxwZXI8SW5zcGVjdG9yQXJyYXk+IHsKKyAgICBzdHJ1Y3QgVHJhaXRzIHsK
KyAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0b3JBcnJheSogYXJyYXksIFBh
c3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBh
cnJheS0+cHVzaEFycmF5KHZhbHVlKTsKKyAgICAgICAgfQorCisjaWYgIUFTU0VSVF9ESVNBQkxF
RAorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgICAgICBzdGF0aWMgdm9pZCBhc3Nl
cnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQorICAgICAgICB7CisgICAgICAg
ICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZUFy
cmF5Pih2YWx1ZSk7CisgICAgICAgIH0KKyNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECisgICAg
fTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPFR5
cGVCdWlsZGVyOjpBcnJheTxUPj4geworICAgIHN0cnVjdCBUcmFpdHMgeworICAgICAgICBzdGF0
aWMgdm9pZCBwdXNoUmVmUHRyKEluc3BlY3RvckFycmF5KiBhcnJheSwgUGFzc1JlZlB0cjxUeXBl
QnVpbGRlcjo6QXJyYXk8VD4+IHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBhcnJheS0+
cHVzaFZhbHVlKHZhbHVlKTsKKyAgICAgICAgfQorCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTPgorICAgICAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3Jy
ZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBT
Ojphc3NlcnRDb3JyZWN0VmFsdWUodmFsdWUpOworICAgICAgICB9CisjZW5kaWYgLy8gIUFTU0VS
VF9ESVNBQkxFRAorICAgIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBUeXBlQnVpbGRlcgorCit9
IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCisK
KyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JUeXBlQnVpbGRlcl9oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKc2ltaWxhcml0eSBpbmRl
eCA5OSUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVl
cy5jcHAKcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
VmFsdWVzLmNwcAppbmRleCA4ZmNlMzJkLi4yNDE5ZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNp
bmNsdWRlIDx3dGYvZHRvYS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
IAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIG5hbWVzcGFj
ZSB7CiAKQEAgLTgzMyw0ICs4MzMsNCBAQCBQYXNzUmVmUHRyPEluc3BlY3RvckJhc2ljVmFsdWU+
IEluc3BlY3RvckJhc2ljVmFsdWU6OmNyZWF0ZShkb3VibGUgdmFsdWUpCiAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBJbnNwZWN0b3JCYXNpY1ZhbHVlKHZhbHVlKSk7CiB9CiAKLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaApzaW1pbGFyaXR5IGluZGV4IDk1JQpyZW5h
bWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKcmVuYW1l
IHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKaW5k
ZXggY2JiN2Y3MS4uMDEyYTFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclZhbHVlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yVmFsdWVzLmgKQEAgLTM4LDEyICszOCwxMiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNw
YWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIGNsYXNzIEluc3BlY3RvckFy
cmF5OwogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogCi1jbGFzcyBJbnNwZWN0b3JWYWx1ZSA6IHB1
YmxpYyBSZWZDb3VudGVkPEluc3BlY3RvclZhbHVlPiB7CitjbGFzcyBKU19FWFBPUlRfUFJJVkFU
RSBJbnNwZWN0b3JWYWx1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3BlY3RvclZhbHVlPiB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGludCBtYXhEZXB0aCA9IDEwMDA7CiAKQEAgLTkwLDcg
KzkwLDcgQEAgcHJpdmF0ZToKICAgICBUeXBlIG1fdHlwZTsKIH07CiAKLWNsYXNzIEluc3BlY3Rv
ckJhc2ljVmFsdWUgOiBwdWJsaWMgSW5zcGVjdG9yVmFsdWUgeworY2xhc3MgSlNfRVhQT1JUX1BS
SVZBVEUgSW5zcGVjdG9yQmFzaWNWYWx1ZSA6IHB1YmxpYyBJbnNwZWN0b3JWYWx1ZSB7CiBwdWJs
aWM6CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JCYXNpY1ZhbHVlPiBjcmVhdGUo
Ym9vbCk7CkBAIC0xMTcsNyArMTE3LDcgQEAgcHJpdmF0ZToKICAgICB9OwogfTsKIAotY2xhc3Mg
SW5zcGVjdG9yU3RyaW5nIDogcHVibGljIEluc3BlY3RvclZhbHVlIHsKK2NsYXNzIEpTX0VYUE9S
VF9QUklWQVRFIEluc3BlY3RvclN0cmluZyA6IHB1YmxpYyBJbnNwZWN0b3JWYWx1ZSB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yU3RyaW5nPiBjcmVhdGUoY29uc3Qg
U3RyaW5nJik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yU3RyaW5nPiBjcmVhdGUo
Y29uc3QgY2hhciopOwpAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1f
c3RyaW5nVmFsdWU7CiB9OwogCi1jbGFzcyBJbnNwZWN0b3JPYmplY3RCYXNlIDogcHVibGljIElu
c3BlY3RvclZhbHVlIHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3Rvck9iamVjdEJh
c2UgOiBwdWJsaWMgSW5zcGVjdG9yVmFsdWUgewogcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hN
YXA8U3RyaW5nLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+PiBEaWN0aW9uYXJ5OwogCkBAIC0xOTIs
NyArMTkyLDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgSW5zcGVjdG9yT2JqZWN0IDogcHVibGljIElu
c3BlY3Rvck9iamVjdEJhc2UgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gY3JlYXRlKCk7CisgICAgc3RhdGljIEpTX0VYUE9SVF9QUklWQVRFIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGUoKTsKIAogICAgIHVzaW5nIEluc3BlY3Rvck9i
amVjdEJhc2U6OmFzT2JqZWN0OwogCkBAIC0yMjAsNyArMjIwLDcgQEAgcHVibGljOgogfTsKIAog
Ci1jbGFzcyBJbnNwZWN0b3JBcnJheUJhc2UgOiBwdWJsaWMgSW5zcGVjdG9yVmFsdWUgeworY2xh
c3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yQXJyYXlCYXNlIDogcHVibGljIEluc3BlY3Rv
clZhbHVlIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8SW5zcGVjdG9yVmFs
dWU+Pjo6aXRlcmF0b3IgaXRlcmF0b3I7CiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEluc3Bl
Y3RvclZhbHVlPj46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwpAQCAtMjYwLDcgKzI2
MCw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIEluc3BlY3RvckFycmF5IDogcHVibGljIEluc3BlY3Rv
ckFycmF5QmFzZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJy
YXk+IGNyZWF0ZSgpOworICAgIHN0YXRpYyBKU19FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPElu
c3BlY3RvckFycmF5PiBjcmVhdGUoKTsKIAogICAgIHVzaW5nIEluc3BlY3RvckFycmF5QmFzZTo6
YXNBcnJheTsKIApAQCAtMzYzLDYgKzM2Myw2IEBAIGlubGluZSB2b2lkIEluc3BlY3RvckFycmF5
QmFzZTo6cHVzaEFycmF5KFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHZhbHVlKQogICAgIG1f
ZGF0YS5hcHBlbmQodmFsdWUpOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5h
bWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvclZhbHVlc19o
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBjZmEzNDJkLi5iZTlmNmJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dApAQCAtMTU3Niw5ICsxNTc2LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGlu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCiAgICAgaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0TW9kdWxlLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKLSAgICBp
bnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAotICAgIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCiAg
ICAgaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNw
ZWN0b3JDbGllbnQuY3BwCkBAIC0xNjA5LDcgKzE2MDcsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VT
CiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCiAgICAgaW5zcGVjdG9yL0lu
c3BlY3RvclN0eWxlVGV4dEVkaXRvci5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHAKLSAgICBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcAogICAgIGluc3Bl
Y3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKICAgICBpbnNwZWN0b3IvSW5zdHJ1bWVudGlu
Z0FnZW50cy5jcHAKICAgICBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC0z
MDQ3LDEyICszMDQ0LDEyIEBAIGFkZF9jdXN0b21fY29tbWFuZCgKIAogIyBBbGwgV2ViIEluc3Bl
Y3RvciBnZW5lcmF0ZWQgZmlsZXMgYXJlIGNyZWF0ZWQgd2l0aCB0aGlzIG9uZSBjYWxsIHRvIENv
ZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0KIGFkZF9jdXN0b21fY29tbWFuZCgKLSAgICBPVVRQVVQg
JHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
cy5jcHAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3JGcm9udGVu
ZC5jcHAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3RvckZyb250ZW5kLmgg
JHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3RvclR5cGVCdWlsZGVyLmNwcCAk
e0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaAorICAg
IE9VVFBVVCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXJzLmNwcCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXJzLmggJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3Rv
ckZyb250ZW5kLmNwcCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yRnJv
bnRlbmQuaCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yV2ViVHlwZUJ1
aWxkZXJzLmNwcCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yV2ViVHlw
ZUJ1aWxkZXJzLmgKICAgICBNQUlOX0RFUEVOREVOQ1kgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09S
RV9ESVJ9L0luc3BlY3Rvci5qc29uCiAgICAgREVQRU5EUyAke1dFQkNPUkVfRElSfS9pbnNwZWN0
b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSAke1dFQkNPUkVfRElSfS9pbnNwZWN0b3IvQ29k
ZUdlbmVyYXRvckluc3BlY3RvclN0cmluZ3MucHkKICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNV
VEFCTEV9ICR7V0VCQ09SRV9ESVJ9L2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5
ICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3IuanNvbiAtLW91dHB1dF9o
X2RpciAiJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9IiAtLW91dHB1dF9jcHBfZGlyICIk
e0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0iIC0tb3V0cHV0X2pzX2RpciAiJHtERVJJVkVE
X1NPVVJDRVNfV0VCQ09SRV9ESVJ9IiAtLXdyaXRlX2Fsd2F5cwogICAgIFZFUkJBVElNKQotbGlz
dChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9J
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVf
RElSfS9JbnNwZWN0b3JGcm9udGVuZC5jcHAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9
L0luc3BlY3RvclR5cGVCdWlsZGVyLmNwcCkKK2xpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUyAk
e0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJz
LmNwcCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yRnJvbnRlbmQuY3Bw
ICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMu
Y3BwKQogCiAKICMgR2VuZXJhdGUgSW5zcGVjdG9yT3ZlcmxheVBhZ2UuaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDhiNjczNDYuLjZiY2NmMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MzAgQEAKKzIwMTMtMTIt
MDUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVjdG9yIFJlcXVpcmVkIENsYXNzZXMgRG93biBpbnRv
IEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjUzMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQYXJ0IDQ6IEV4dHJhY3QgSW5zcGVjdG9yVHlwZUJ1aWxkZXIgaGVscGVyIGZ1bmN0
aW9ucworCisgICAgICAgICAgLSBUaGVyZSBpcyBhIGNodW5rIG9mIEluc3BlY3RvclR5cGVCdWls
ZGVyIHRoYXQgbmV2ZXIgY2hhbmdlcy4gRXh0cmFjdCBpdCBpbnRvCisgICAgICAgICAgICBpdHMg
b3duIGZpbGUsIEluc3BlY3RvclR5cGVCdWlsZGVyLmggaW4gSlNDL2luc3BlY3RvciwgSW5zcGVj
dG9yIG5hbWVzcGFjZS4KKyAgICAgICAgICAtIFRoaXMgbW92ZXMgVHlwZUJ1aWxkZXIgZnJvbSBu
YW1lc3BhY2UgV2ViQ29yZSB0byBuYW1lc3BhY2UgSW5zcGVjdG9yCisgICAgICAgICAgLSBSZW5h
bWUgdGhlIFdlYkNvcmUgZ2VuZXJhdGVkIEluc3BlY3RvclR5cGVCdWlsZGVyIHRvIEluc3BlY3Rv
cldlYlR5cGVCdWlsZGVycywKKyAgICAgICAgICAgIGV2ZW50dWFsbHkgdGhlIENvZGVHZW5lcmF0
b3Igc2NyaXB0IHdpbGwgZG8gdGhpcyBmb3IgbW9yZSB0aGVuIFR5cGVCdWlsZGVycworICAgICAg
ICAgICAgYW5kIHRoZXJlIHdpbGwgYmUgIkpTIiBUeXBlQnVpbGRlcnMgYW5kICJXZWIiIFR5cGVC
dWlsZGVycyBmaWxlcy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEZv
cndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JUeXBlQnVpbGRlci5oOiBBZGRlZC4K
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFt
OgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAgICAgICog
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3Jp
cHRQcm9maWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2ZpbGU6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0
Rm9ySGVhZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQcm9maWxlOjpidWlsZEluc3BlY3Rv
ck9iamVjdEZvckJvdHRvbVVwSGVhZCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0UHJv
ZmlsZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5Ogor
ICAgICAgICAoQ29tbWFuZFJldHVyblBhc3NNb2RlbC5PcHRPdXRwdXQuZ2V0X3JldHVybl92YXJf
dHlwZSk6CisgICAgICAgIChDb21tYW5kUmV0dXJuUGFzc01vZGVsLk9wdE91dHB1dC5nZXRfb3V0
cHV0X3BhcmFtZXRlcl90eXBlKToKKyAgICAgICAgKFR5cGVNb2RlbC5FeGFjdGx5SW50LmdldF9p
bnB1dF9wYXJhbV90eXBlX3RleHQpOgorICAgICAgICAoVHlwZU1vZGVsLkV4YWN0bHlJbnQuZ2V0
X29wdF9vdXRwdXRfdHlwZV8pOgorICAgICAgICAoVHlwZUJpbmRpbmdzLmNyZWF0ZV9uYW1lZF90
eXBlX2RlY2xhcmF0aW9uLkhlbHBlcik6CisgICAgICAgIChUeXBlQmluZGluZ3MuY3JlYXRlX3R5
cGVfZGVjbGFyYXRpb25fLkVudW1CaW5kaW5nLmdldF9zZXR0ZXJfdmFsdWVfZXhwcmVzc2lvbl9w
YXR0ZXJuKToKKyAgICAgICAgKEluc3BlY3Rvcik6CisgICAgICAgIChBcnJheUJpbmRpbmcuZ2V0
X2FycmF5X2l0ZW1fY190eXBlX3RleHQpOgorICAgICAgICAqIGluc3BlY3Rvci9Db2RlR2VuZXJh
dG9ySW5zcGVjdG9yU3RyaW5ncy5weToKKyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kX2gpOgor
ICAgICAgICAoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzX2gpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9Db25zb2xlTWVzc2FnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjptZXNzYWdlU291cmNl
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6bWVzc2FnZVR5cGVWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjptZXNzYWdlTGV2ZWxWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlTWVz
c2FnZTo6YWRkVG9Gcm9udGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hV
dGlscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VhcmNoVXRpbHM6OmJ1aWxkT2Jq
ZWN0Rm9yU2VhcmNoTWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlYXJjaFV0aWxz
OjpzZWFyY2hJblRleHRCeUxpbmVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29udGVudFNlYXJj
aFV0aWxzLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbmplY3RlZFNjcmlwdDo6Y2FsbEZ1bmN0aW9uT24pOgorICAgICAgICAoV2ViQ29yZTo6SW5q
ZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT25DYWxsRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5q
ZWN0ZWRTY3JpcHQ6OndyYXBPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3Jp
cHQ6OndyYXBUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6d3JhcE5v
ZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0
ZWRTY3JpcHRCYXNlOjptYWtlRXZhbENhbGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdEJhc2UuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNN
b2R1bGUuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVs
ZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0SW1wbCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckFnZW50OjppbnNwZWN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0RnJh
bWVzV2l0aE1hbmlmZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQ6OmdldEFwcGxpY2F0aW9uQ2FjaGVGb3JGcmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQXBwbGlj
YXRpb25DYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQ6OmJ1aWxkQXJyYXlGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6YnVpbGRPYmplY3RGb3JB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NT
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JQcm9maWxlOjp0b0luc3BlY3Rv
ck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hl
ZFN0eWxlc0Zvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6Omdl
dElubGluZVN0eWxlc0Zvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdl
bnQ6OmdldENvbXB1dGVkU3R5bGVGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNTU0FnZW50OjpnZXRBbGxTdHlsZVNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDU1NBZ2VudDo6Z2V0U3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
U1NBZ2VudDo6c2V0U3R5bGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0Fn
ZW50OjpzZXRQcm9wZXJ0eVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdl
bnQ6OnRvZ2dsZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50
OjpzZXRSdWxlU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6
OmFkZFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN1cHBv
cnRlZENTU1Byb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6
OmdldE5hbWVkRmxvd0NvbGxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OnN0b3BTZWxlY3RvclByb2ZpbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNTU0FnZW50OjpzdG9wU2VsZWN0b3JQcm9maWxlckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ1NTQWdlbnQ6OmFzSW5zcGVjdG9yU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Y29sbGVjdFN0eWxlU2hlZXRzKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNTU0FnZW50Ojp2aWFJbnNwZWN0b3JTdHlsZVNoZWV0KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpkZXRlY3RPcmlnaW4pOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvclJ1bGVMaXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1
bGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVj
dEZvckF0dHJpYnV0ZXNTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2Vu
dDo6YnVpbGRBcnJheUZvclJlZ2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdl
bnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NQWdlbnQ6OnB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cXVlcnlTZWxlY3RvckFsbCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQYXRoVG9Gcm9udGVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpnZXRTZWFyY2hSZXN1bHRzKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpyZXNvbHZlTm9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0QXR0cmlidXRlcyk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JOb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yRWxlbWVudEF0dHJp
YnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlG
b3JDb250YWluZXJDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2Vu
dDo6YnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTUFnZW50OjpkaWRDb21taXRMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50OjpkaWRJbnNlcnRET01Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50OjpzdHlsZUF0dHJpYnV0ZUludmFsaWRhdGVkKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50OjpkZXNjcmlwdGlvbkZvckRPTUV2ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudDo6Z2V0RE9NU3RvcmFnZUl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6c3RvcmFnZUlkKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JEYXRhYmFzZUFnZW50OjpnZXREYXRhYmFzZVRhYmxlTmFtZXMpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRGF0YWJhc2VSZXNvdXJjZTo6YmluZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnJlYWtwb2ludEFjdGlvblR5
cGVGb3JTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
c2V0QnJlYWtwb2ludEJ5VXJsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OnNldEJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6cmVzb2x2ZUJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6c2VhcmNoSW5Db250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OnNldFNjcmlwdFNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRGdW5jdGlvbkRldGFpbHMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZXZhbHVhdGVPbkNhbGxGcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpjb21waWxlU2NyaXB0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJ1blNjcmlwdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjdXJyZW50Q2FsbEZyYW1lcyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXJzZVNvdXJj
ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OmNyZWF0ZVNuYXBzaG90SGVhZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpnZXRQcm9m
aWxlSGVhZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2Vu
dDo6Z2V0T2JqZWN0QnlIZWFwT2JqZWN0SWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JIZWFwUHJvZmlsZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbmRl
eGVkREJBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50OjpsYXll
cnNGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50Ojpn
YXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNoeSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6Z2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJMYXllckhp
ZXJhcmNoeSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6YnVp
bGRPYmplY3RGb3JMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVB
Z2VudDo6YnVpbGRPYmplY3RGb3JJbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckxheWVyVHJlZUFnZW50OjpyZWFzb25zRm9yQ29tcG9zaXRpbmdMYXllcik6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6cmVz
b3VyY2VUeXBlSnNvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmNh
Y2hlZFJlc291cmNlVHlwZUpzb24pOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JD
b29raWUpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRBcnJheUZvckNvb2tpZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpnZXRDb29raWVzKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0UmVzb3VyY2VUcmVlKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5SZXNvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpidWlsZE9iamVjdEZvclNlYXJjaFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclBhZ2VBZ2VudDo6YnVpbGRPYmplY3RGb3JGcmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UHJvZmlsZXJBZ2VudDo6Y3JlYXRlUHJvZmlsZUhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JQcm9maWxlckFnZW50OjpjcmVhdGVTbmFwc2hvdEhlYWRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRQcm9maWxlSGVhZGVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRDUFVQcm9maWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldE9iamVjdEJ5SGVhcE9i
amVjdElkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9yVGltaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxk
T2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0
Rm9yUmVzb3VyY2VSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvckNh
Y2hlZFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6
OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmJ1aWxkSW5pdGlhdG9yT2JqZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxTZW5kV2ViU29ja2V0
SGFuZHNoYWtlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50OjpkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFNlbmRXZWJTb2Nr
ZXRGcmFtZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmJ1aWxkRXJyb3JSYW5nZU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JSdW50aW1lQWdlbnQ6OnBhcnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJ1
bnRpbWVBZ2VudDo6ZXZhbHVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUnVudGlt
ZUFnZW50OjpjYWxsRnVuY3Rpb25Pbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSdW50
aW1lQWdlbnQ6OmdldFByb3BlcnRpZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JS
dW50aW1lQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZFNvdXJjZVJhbmdlT2JqZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OmJ1aWxkTWVkaWFPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsbE1lZGlh
TGlzdENoYWluKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlOjpidWlsZE9iamVj
dEZvclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlOjpidWlsZEFycmF5
Rm9yQ29tcHV0ZWRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZTo6c3R5
bGVXaXRoUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6SW5zcGVj
dG9yU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Ojpi
dWlsZE9iamVjdEZvclN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5
bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTdHlsZVNoZWV0SW5mbyk6CisgICAgICAgIChXZWJDb3Jl
OjpzZWxlY3RvcnNGcm9tU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxl
U2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3JMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdEZvclN0eWxlKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OnJlc291cmNlU3R5bGVTaGVldFRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRBcnJheUZvclJ1bGVMaXN0
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVT
dHlsZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
U3R5bGVTaGVldDo6Y2FuQmluZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVs
aW5lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9Qcm90b2NvbCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojppbm5lckFkZFJlY29yZFRvVGltZWxpbmUp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c2V0RE9NQ291bnRl
cnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c2VuZEV2ZW50
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
U2NyaXB0Q2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxGcmFtZTo6
YnVpbGRJbnNwZWN0b3JPYmplY3QpOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsRnJh
bWUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdENhbGxTdGFjazo6YnVpbGRJbnNwZWN0b3JBcnJheSk6CisgICAgICAg
ICogaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oOgorCisyMDEzLTEyLTA1ICBKb3NlcGggUGVj
b3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVz
aCBNb3JlIEluc3BlY3RvciBSZXF1aXJlZCBDbGFzc2VzIERvd24gaW50byBKYXZhU2NyaXB0Q29y
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1MzI0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFydCAz
OiBQdXNoIERvd24gU2NyaXB0RnVuY3Rpb25DYWxsCisKKyAgICAgICAgICAtIE1vdmUgU2NyaXB0
RnVuY3Rpb25DYWxsIHRvIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzIGludG8gbmFtZXNwYWNlIERl
cHJlY2F0ZWQuCisgICAgICAgICAgLSBHaXZlIGNvbnN0cnVjdG9yIGEgZnVuY3Rpb24gdG8gYWxs
IGZvciBhIGRpZmZlcmVudCBKU0M6OmNhbGwsIGJlY2F1c2UKKyAgICAgICAgICAgIFdlYkNvcmUg
U2NyaXB0RnVuY3Rpb25DYWxsJ3MgdXNlIEpTTWFpblRocmVhZEV4ZWNTdGF0ZSB3aGVuIGlzTWFp
blRocmVhZC4KKyAgICAgICAgICAtIFByZWZlciBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNh
bGwgZXZlcnl3aGVyZSBpdCBpcyB1c2VkIGluIFdlYkNvcmUuCisKKyAgICAgICAgKiBGb3J3YXJk
aW5nSGVhZGVycy9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaDogQWRkZWQuCisgICAgICAg
ICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBVc2VKU0MuY21ha2U6CisgICAgICAg
ICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJ
bk9uZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y3VycmVudFN0YXRlKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0
ZWRTY3JpcHQ6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Ojpj
YWxsRnVuY3Rpb25Pbik6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6ZXZhbHVh
dGVPbkNhbGxGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6Z2V0RnVu
Y3Rpb25EZXRhaWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpnZXRQcm9w
ZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpnZXRJbnRlcm5hbFBy
b3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6Om5vZGVGb3JPYmpl
Y3RJZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6cmVsZWFzZU9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmpl
Y3RlZFNjcmlwdDo6ZmluZE9iamVjdEJ5SWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRT
Y3JpcHQ6Omluc3BlY3ROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Ojpy
ZWxlYXNlT2JqZWN0R3JvdXApOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRCYXNlOjpjYWxsRnVuY3Rp
b25XaXRoRXZhbEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRCYXNl
OjptYWtlQ2FsbCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEJhc2U6Om1ha2VF
dmFsQ2FsbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6Y2FsbFdyYXBDb250ZXh0RnVu
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6Om1h
cmtGcmFtZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdENhbnZhc01vZHVs
ZTo6Y2FsbFN0YXJ0Q2FwdHVyaW5nRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0
ZWRTY3JpcHRDYW52YXNNb2R1bGU6OmNhbGxWb2lkRnVuY3Rpb25XaXRoVHJhY2VMb2dJZEFyZ3Vt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjp0cmFj
ZUxvZyk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6cmVw
bGF5VHJhY2VMb2cpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1
bGU6OnJlc291cmNlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdENhbnZh
c01vZHVsZTo6cmVzb3VyY2VTdGF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0TW9kdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0TW9kdWxlOjpl
bnN1cmVJbmplY3RlZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcm9udGVuZE1lbnVQcm92aWRlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJvbnRlbmRNZW51UHJvdmlkZXI6OmNvbnRleHRNZW51Q2xlYXJl
ZCk6CisKKzIwMTMtMTItMDUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVjdG9yIFJlcXVpcmVkIENs
YXNzZXMgRG93biBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBQYXJ0IDI6IFB1c2ggU2NyaXB0IHdyYXBwZXIgY2xhc3Nl
cyBkb3duIGludG8gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MuCisKKyAgICAgICAgICAtIE1vdmUg
U2NyaXB0T2JqZWN0IGFuZCBTY3JpcHRWYWx1ZSBpbnRvIEphdmFTY3JpcHRDb3JlIGJ1dCBuYW1l
c3BhY2UgRGVwcmVjYXRlZAorICAgICAgICAgIC0gQWRkIGZvcndhcmRpbmcgaGVhZGVycworICAg
ICAgICAgIC0gVXNlIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBhbmQgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUgZXZlcnl3aGVyZS4KKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2JpbmRp
bmdzL1NjcmlwdE9iamVjdC5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9i
aW5kaW5ncy9TY3JpcHRWYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0
LmFtOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5jcHA6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCQW55Lmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaDoK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcDoKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5Lmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCSW5kZXguY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4Lmg6
CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJD
b3JlOjpJREJJbmRleDo6b3BlbktleUN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCS2V5UmFuZ2UuY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJh
bmdlLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlSYW5nZTo6bG93ZXJCb3VuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJLZXlSYW5nZTo6dXBwZXJCb3VuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJLZXlSYW5nZTo6Ym91bmQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpwdXQpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmg6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHA6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCUmVxdWVzdC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJp
bGl0eVJhbmdlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlS
YW5nZS5oOgorICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNl
bWVudC5jcHA6CisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxh
Y2VtZW50Lmg6CisgICAgICAgICogVXNlSlNDLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUuZXhw
LmluOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAgICAg
ICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9E
aWN0aW9uYXJ5Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaWN0aW9uYXJ5OjpnZXRFdmVudExpc3Rl
bmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmRlc2VyaWFsaXplSURCVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
ZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSURCQmlu
ZGluZ1V0aWxpdGllcy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHA6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5Lmg6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY2hl
ZHVsZWRBY3Rpb24uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0Zh
Y3RvcnkuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvU2Ny
aXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNh
bGwuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5jcHA6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwLgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dEdsb2JhbE9iamVjdDo6U2NyaXB0R2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRQcm9maWxlci5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0UHJvZmls
ZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OnNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3Jp
cHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250
cm9sbGVyLmg6CisgICAgICAgICogZG9tL0N1c3RvbUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkN1c3RvbUV2ZW50Ojppbml0Q3VzdG9tRXZlbnQpOgorICAgICAgICAqIGRvbS9DdXN0b21F
dmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRXZlbnQ6OmRldGFpbCk6CisgICAgICAg
ICogZG9tL01lc3NhZ2VFdmVudC5jcHA6CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVzc2FnZUV2ZW50OjpkYXRhQXNTY3JpcHRWYWx1ZSk6CisgICAgICAgICogZG9tL1BvcFN0
YXRlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBvcFN0YXRlRXZlbnQ6OnN0YXRlKToKKyAg
ICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwOgorICAg
ICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHA6CisgICAgICAgICog
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdENhbnZhc01vZHVsZS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0Q2FudmFzTW9kdWxlLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
SG9zdC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRNb2R1bGUuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2Vu
dC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzSW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndyYXBDYW52YXMyRFJlbmRlcmluZ0NvbnRleHRG
b3JJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kSG9zdC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9m
aWxlckFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZUNv
bnNvbGVBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5jcHA6
CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmg6CisgICAgICAgICogcGFnZS9Db25zb2xlLmNwcDoK
KyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25zb2xlLmNw
cDoKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAq
IHdvcmtlcnMvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmNw
cDoKKyAgICAgICAgKiB4bWwvWE1MVHJlZVZpZXdlci5jcHA6CisgICAgICAgICogeG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlckxpYnhtbDIuY3BwOgorCisyMDEzLTEyLTA1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNv
cmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBNb3JlIEluc3Bl
Y3RvciBSZXF1aXJlZCBDbGFzc2VzIERvd24gaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1MzI0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFydCAxOiBQdXNoIGRvd24g
Y29yZSBpbnNwZWN0b3IgY2xhc3Nlcy4KKworICAgICAgICAgIC0gTW92ZSBJbnNwZWN0QWdlbnRC
YXNlLCBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciwg
SW5zcGVjdG9yVmFsdWVzCisgICAgICAgICAgICBkb3duIHRvIEphdmFTY3JpcHRDb3JlIGFuZCBp
bnRvIHRoZSBJbnNwZWN0b3IgbmFtZXNwYWNlLgorICAgICAgICAgIC0gQWRkIGZvcndhcmRpbmcg
aGVhZGVycyBmb3IgSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yIGZpbGVzLgorICAgICAgICAgIC0g
VXNlIHRoZSBJbnNwZWN0b3IgbmFtZXNwYWNlIHdoZXJlIGFwcHJvcHJpYXRlLgorICAgICAgICAg
IC0gUmVuYW1lIEluc3BlY3RvckJhc2VBZ2VudCB0byBJbnNwZWN0b3JBZ2VudEJhc2UgZm9yIGNs
YXJpdHkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBGb3J3YXJkaW5n
SGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmg6IEFkZGVkLgorICAgICAgICAq
IEZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Lmg6IEFk
ZGVkLgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9pbnNw
ZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg6IEFkZGVkLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxp
c3QuYW06CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNw
cDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmNwcDoKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0
VmFsdWUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmg6CisgICAgICAg
ICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHA6CisgICAgICAgICogaHRtbC9wYXJzZXIvWFNT
QXVkaXRvckRlbGVnYXRlLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvcklu
c3BlY3Rvci5weToKKyAgICAgICAgKFJhd1R5cGVzLkJhc2VUeXBlLmdldF9yYXdfdmFsaWRhdG9y
X2NhbGxfdGV4dCk6CisgICAgICAgIChSYXdUeXBlcy5PYmplY3QuZ2V0X2FycmF5X2l0ZW1fcmF3
X2NfdHlwZV90ZXh0KToKKyAgICAgICAgKFJhd1R5cGVzLkFueS5nZXRfYXJyYXlfaXRlbV9yYXdf
Y190eXBlX3RleHQpOgorICAgICAgICAoUmF3VHlwZXMuQXJyYXkuZ2V0X2FycmF5X2l0ZW1fcmF3
X2NfdHlwZV90ZXh0KToKKyAgICAgICAgKFR5cGVNb2RlbC5pbml0X2NsYXNzKToKKyAgICAgICAg
KFR5cGVCaW5kaW5ncy5jcmVhdGVfdHlwZV9kZWNsYXJhdGlvbl8uRW51bUJpbmRpbmcuZ2V0X2Nv
ZGVfZ2VuZXJhdG9yLkNvZGVHZW5lcmF0b3IuZ2VuZXJhdGVfdHlwZV9idWlsZGVyKToKKyAgICAg
ICAgKFR5cGVCaW5kaW5ncy5jcmVhdGVfdHlwZV9kZWNsYXJhdGlvbl8uQ2xhc3NCaW5kaW5nLmdl
dF9jb2RlX2dlbmVyYXRvci5Db2RlR2VuZXJhdG9yLmdlbmVyYXRlX3R5cGVfYnVpbGRlcik6Cisg
ICAgICAgIChHZW5lcmF0b3IuZ28pOgorICAgICAgICAoR2VuZXJhdG9yLnByb2Nlc3NfY29tbWFu
ZCk6CisgICAgICAgICogaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5
OgorICAgICAgICAodm9pZCk6CisgICAgICAgIChJbnNwZWN0b3JGcm9udGVuZF9oKToKKyAgICAg
ICAgKEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyc19oKToKKyAgICAgICAgKEFycmF5KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwOgorICAgICAgICAqIGluc3BlY3Rv
ci9Db25zb2xlTWVzc2FnZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9Db250ZW50U2VhcmNoVXRp
bHMuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbHMuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdEJhc2UuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlw
dEJhc2UuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUu
Y3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxl
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JBZ2VudEJhc2UuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmguCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBZ2Vu
dEJhc2U6Okluc3BlY3RvckFnZW50QmFzZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckFsbEluT25lLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudDo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJhc2VBZ2VudC5oOiBSZW1vdmVk
LgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6SW5zcGVjdG9yQ1NTQWdlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNhbnZhc0FnZW50OjpJbnNwZWN0b3JDYW52YXNBZ2VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
Q2xpZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6Okluc3BlY3RvckNvbnNv
bGVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNv
bnNvbGVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6SW5zcGVjdG9yRE9NQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Lmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6Okluc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6Okluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VB
Z2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JE
YXRhYmFzZVJlc291cmNlLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRm9yd2FyZGluZy5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6Okluc3BlY3Rv
ckhlYXBQcm9maWxlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckhlYXBQcm9m
aWxlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bmRleGVkREJBZ2VudDo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvcklucHV0QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5wdXRBZ2VudDo6SW5zcGVjdG9ySW5wdXRBZ2VudCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnB1dEFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckxheWVyVHJlZUFnZW50OjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JNZW1vcnlBZ2VudDo6SW5zcGVjdG9yTWVtb3J5QWdl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yT3ZlcmxheS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpJbnNwZWN0b3JQ
YWdlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdl
QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpJbnNwZWN0b3JQcm9m
aWxlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
clByb2ZpbGVyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclJlc291cmNlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
UnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJ1bnRpbWVBZ2Vu
dDo6SW5zcGVjdG9yUnVudGltZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
UnVudGltZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
Y3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDU1NJZDo6SW5zcGVjdG9yQ1NTSWQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuY3BwOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJbnNwZWN0b3JUaW1lbGluZUFnZW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6VGltZWxpbmVSZWNvcmRFbnRyeTo6VGlt
ZWxpbmVSZWNvcmRFbnRyeSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvcldvcmtlckFnZW50OjpJbnNwZWN0
b3JXb3JrZXJBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JXb3JrZXJBZ2VudDo6
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yV29ya2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50
cy5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVj
dG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZURlYnVn
Z2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9QYWdlUnVudGltZUFnZW50Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL1Nj
cmlwdENhbGxGcmFtZS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5o
OgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwOgorICAgICAgICAqIGlu
c3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvVGltZWxpbmVS
ZWNvcmRGYWN0b3J5LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0
b3J5Lmg6CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVdl
YlNvY2tldENyZWF0ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVSZWNvcmRGYWN0
b3J5OjpjcmVhdGVHZW5lcmljV2ViU29ja2V0RGF0YSk6CisgICAgICAgICogaW5zcGVjdG9yL1dv
cmtlckNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2Vy
QWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyUnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaDoKKyAgICAgICAgKiBwYWdl
L0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
Y3BwOgorCiAyMDEzLTEyLTA5ICBwZWF2b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29t
PgogCiAgICAgICAgIFtXaW5DYWlyb10gT3BlbkdMIGNvbXBpbGUgZXJyb3IuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9iaW5kaW5ncy9TY3JpcHRGdW5jdGlv
bkNhbGwuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2JpbmRpbmdzL1Njcmlw
dEZ1bmN0aW9uQ2FsbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1ZDJh
MDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9i
aW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2Vi
Q29yZV9GV0RfU2NyaXB0RnVuY3Rpb25DYWxsX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfU2NyaXB0
RnVuY3Rpb25DYWxsX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRGdW5jdGlvbkNh
bGwuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRl
cnMvYmluZGluZ3MvU2NyaXB0T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVh
ZGVycy9iaW5kaW5ncy9TY3JpcHRPYmplY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi43MzZiODI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2Fy
ZGluZ0hlYWRlcnMvYmluZGluZ3MvU2NyaXB0T2JqZWN0LmgKQEAgLTAsMCArMSw0IEBACisjaWZu
ZGVmIFdlYkNvcmVfRldEX1NjcmlwdE9iamVjdF9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1Njcmlw
dE9iamVjdF9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0T2JqZWN0Lmg+CisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2JpbmRpbmdz
L1NjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9iaW5kaW5n
cy9TY3JpcHRWYWx1ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3OGFm
NTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9i
aW5kaW5ncy9TY3JpcHRWYWx1ZS5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZX
RF9TY3JpcHRWYWx1ZV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1NjcmlwdFZhbHVlX2gKKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRWYWx1ZS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRC
YXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVj
dG9yQWdlbnRCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjFhMzVm
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2lu
c3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2Vi
Q29yZV9GV0RfSW5zcGVjdG9yQWdlbnRCYXNlX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfSW5zcGVj
dG9yQWdlbnRCYXNlX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBZ2VudEJh
c2UuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRl
cnMvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjlkYjk1YwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2Vu
dFJlZ2lzdHJ5LmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0luc3BlY3Rv
ckFnZW50UmVnaXN0cnlfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9JbnNwZWN0b3JBZ2VudFJlZ2lz
dHJ5X2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Lmg+
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2lu
c3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIGIvU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU1ZTg3ZAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9J
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcl9oCisjZGVmaW5lIFdlYkNvcmVfRldEX0luc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9G
b3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JUeXBlQnVpbGRl
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmOWUxMTMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5z
cGVjdG9yVHlwZUJ1aWxkZXIuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0Rf
SW5zcGVjdG9yVHlwZUJ1aWxkZXJfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9JbnNwZWN0b3JUeXBl
QnVpbGRlcl9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVHlwZUJ1aWxkZXIu
aD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMv
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hl
YWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmJkOTg1ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9G
b3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKQEAgLTAsMCArMSw0
IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0luc3BlY3RvclZhbHVlc19oCisjZGVmaW5lIFdlYkNv
cmVfRldEX0luc3BlY3RvclZhbHVlc19oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVj
dG9yVmFsdWVzLmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggMjFhMDhmYy4uNjA3
ZGJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTM2Miw4ICszNjIsOCBAQCBEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0luc3BlY3Rvci5qc29uOiAkKFdlYkNvcmUpL2luc3BlY3Rvci9TY3JpcHRz
L2dlbmVyYXRlLWNvbQogIyBBbGwgV2ViIEluc3BlY3RvciBnZW5lcmF0ZWQgZmlsZXMgYXJlIGNy
ZWF0ZWQgd2l0aCB0aGlzIG9uZSBjYWxsIHRvIENvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKIERl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmNwcDogRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3IuanNvbiAkKFdlYkNvcmUpL2luc3BlY3Rvci9D
b2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5ICQoV2ViQ29yZSkvaW5zcGVjdG9yL0NvZGVHZW5lcmF0
b3JJbnNwZWN0b3JTdHJpbmdzLnB5CiAJJChBTV9WX0dFTikkKFBZVEhPTikgJChXZWJDb3JlKS9p
bnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSAkPCAtLW91dHB1dF9oX2RpciAkKEdF
TlNPVVJDRVNfV0VCQ09SRSkgLS1vdXRwdXRfY3BwX2RpciAkKEdFTlNPVVJDRVNfV0VCQ09SRSkg
LS1vdXRwdXRfanNfZGlyICQoR0VOU09VUkNFU19XRUJDT1JFKQotRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9JbnNwZWN0b3JUeXBlQnVpbGRlci5oOiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3Bl
Y3RvclR5cGVCdWlsZGVyLmNwcAotRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JUeXBl
QnVpbGRlci5jcHA6IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmQuaAor
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaDogRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuY3BwCitEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0luc3BlY3RvcldlYlR5cGVCdWlsZGVycy5jcHA6IERlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmQuaAogRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNw
ZWN0b3JGcm9udGVuZC5oOiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3RvckZyb250ZW5k
LmNwcAogRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZC5jcHA6IERlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCiBEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qczogRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KaW5kZXggODQ0YWQ2OC4uYTZkOWIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCkBAIC0yNiw4ICsyNiw4IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZC5jcHAgXAogCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9JbnNwZWN0b3JPdmVybGF5UGFnZS5oIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3Bl
Y3RvclR5cGVCdWlsZGVyLmNwcCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JU
eXBlQnVpbGRlci5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3RvcldlYlR5cGVC
dWlsZGVycy5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yV2ViVHlwZUJ1
aWxkZXJzLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBYnN0cmFjdFdvcmtlci5jcHAg
XAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBYnN0cmFjdFdvcmtlci5oIFwKIAlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTQWxsQXVkaW9DYXBhYmlsaXRpZXMuY3BwIFwKQEAgLTI0NDQsMTEg
KzI0NDQsOSBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0RGVidWdTZXJ2ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRE
ZWJ1Z1NlcnZlci5oIFwKLQlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlv
bkNhbGwuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNh
bGwuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0SGVhcFNuYXBzaG90Lmgg
XAotCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHAgXAotCVNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0UHJvZmlsZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dFByb2ZpbGUuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZU5v
ZGUuaCBcCkBAIC0yNDU3LDggKzI0NTUsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaCBcCiAJU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRTdGF0ZS5oIFwKLQlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRW
YWx1ZS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmggXAog
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFdyYXBwYWJsZS5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGVJbmxpbmVzLmggXAogCVNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgXApAQCAtMzc3OSwx
MyArMzc3NSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBZ2VudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JB
Z2VudC5oIFwKLQlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3Ry
eS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5
LmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50LmggXAotCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci5oIFwKLQlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QmFzZUFnZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNB
Z2VudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2Vu
dC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzSW5zdHJ1bWVu
dGF0aW9uLmggXApAQCAtMzg1MSw4ICszODQyLDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVUZXh0RWRpdG9yLmggXAogCVNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBcCi0JU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAgXAotCVNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaCBcCisJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvcldlYkFnZW50QmFzZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yV29ya2VyQWdlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yV29ya2VyQWdlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcldv
cmtlclJlc291cmNlLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQW55LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFu
eS5jcHAKaW5kZXggY2IxZTYzZS4uODI3YTRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJBbnkuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgUGFzc1JlZlB0cjxJREJU
cmFuc2FjdGlvbj4gSURCQW55OjppZGJUcmFuc2FjdGlvbigpCiAgICAgcmV0dXJuIG1faWRiVHJh
bnNhY3Rpb247CiB9CiAKLWNvbnN0IFNjcmlwdFZhbHVlJiBJREJBbnk6OnNjcmlwdFZhbHVlKCkK
K2NvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBJREJBbnk6OnNjcmlwdFZhbHVlKCkKIHsK
ICAgICBBU1NFUlQobV90eXBlID09IFNjcmlwdFZhbHVlVHlwZSk7CiAgICAgcmV0dXJuIG1fc2Ny
aXB0VmFsdWU7CkBAIC0xODYsNyArMTg2LDcgQEAgSURCQW55OjpJREJBbnkoUGFzc1JlZlB0cjxJ
REJPYmplY3RTdG9yZT4gdmFsdWUpCiB7CiB9CiAKLUlEQkFueTo6SURCQW55KGNvbnN0IFNjcmlw
dFZhbHVlJiB2YWx1ZSkKK0lEQkFueTo6SURCQW55KGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlJiB2YWx1ZSkKICAgICA6IG1fdHlwZShTY3JpcHRWYWx1ZVR5cGUpCiAgICAgLCBtX3Njcmlw
dFZhbHVlKHZhbHVlKQogICAgICwgbV9pbnRlZ2VyKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkFueS5oCmluZGV4IDZkZTQ1Y2YuLmQ3Mjg0NTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5oCkBAIC0yOSw4ICsyOSw4IEBACiAjaWYgRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCiAKICNpbmNsdWRlICJJREJLZXlQYXRoLmgiCi0jaW5jbHVk
ZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKKyNpbmNsdWRl
IDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0x
MDEsNyArMTAxLDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8SURCSW5kZXg+IGlkYkluZGV4
KCk7CiAgICAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gaWRiT2JqZWN0U3RvcmUoKTsKICAg
ICBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBpZGJUcmFuc2FjdGlvbigpOwotICAgIGNvbnN0
IFNjcmlwdFZhbHVlJiBzY3JpcHRWYWx1ZSgpOworICAgIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlJiBzY3JpcHRWYWx1ZSgpOwogICAgIGludDY0X3QgaW50ZWdlcigpOwogICAgIGNvbnN0
IFN0cmluZyYgc3RyaW5nKCk7CiAgICAgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCgpIHsgcmV0
dXJuIG1faWRiS2V5UGF0aDsgfTsKQEAgLTExOCw3ICsxMTgsNyBAQCBwcml2YXRlOgogICAgIGV4
cGxpY2l0IElEQkFueShQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPik7CiAgICAgZXhwbGljaXQg
SURCQW55KGNvbnN0IElEQktleVBhdGgmKTsKICAgICBleHBsaWNpdCBJREJBbnkoY29uc3QgU3Ry
aW5nJik7Ci0gICAgZXhwbGljaXQgSURCQW55KGNvbnN0IFNjcmlwdFZhbHVlJik7CisgICAgZXhw
bGljaXQgSURCQW55KGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJik7CiAgICAgZXhwbGlj
aXQgSURCQW55KGludDY0X3QpOwogCiAgICAgY29uc3QgVHlwZSBtX3R5cGU7CkBAIC0xMzMsNyAr
MTMzLDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG1faWRi
T2JqZWN0U3RvcmU7CiAgICAgY29uc3QgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX2lkYlRyYW5z
YWN0aW9uOwogICAgIGNvbnN0IElEQktleVBhdGggbV9pZGJLZXlQYXRoOwotICAgIGNvbnN0IFNj
cmlwdFZhbHVlIG1fc2NyaXB0VmFsdWU7CisgICAgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUgbV9zY3JpcHRWYWx1ZTsKICAgICBjb25zdCBTdHJpbmcgbV9zdHJpbmc7CiAgICAgY29uc3Qg
aW50NjRfdCBtX2ludGVnZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkN1cnNvci5jcHAKaW5kZXggZWYwNjU0NC4uYjk5ZDgzZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCkBAIC05OCwxOSArOTgsMTkg
QEAgY29uc3QgU3RyaW5nJiBJREJDdXJzb3I6OmRpcmVjdGlvbigpIGNvbnN0CiAgICAgcmV0dXJu
IGRpcmVjdGlvblRvU3RyaW5nKG1fZGlyZWN0aW9uKTsKIH0KIAotY29uc3QgU2NyaXB0VmFsdWUm
IElEQkN1cnNvcjo6a2V5KCkgY29uc3QKK2NvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBJ
REJDdXJzb3I6OmtleSgpIGNvbnN0CiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJDdXJzb3I6
OmtleSIpOwogICAgIHJldHVybiBtX2N1cnJlbnRLZXlWYWx1ZTsKIH0KIAotY29uc3QgU2NyaXB0
VmFsdWUmIElEQkN1cnNvcjo6cHJpbWFyeUtleSgpIGNvbnN0Citjb25zdCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSYgSURCQ3Vyc29yOjpwcmltYXJ5S2V5KCkgY29uc3QKIHsKICAgICBMT0coU3Rv
cmFnZUFQSSwgIklEQkN1cnNvcjo6cHJpbWFyeUtleSIpOwogICAgIHJldHVybiBtX2N1cnJlbnRQ
cmltYXJ5S2V5VmFsdWU7CiB9CiAKLWNvbnN0IFNjcmlwdFZhbHVlJiBJREJDdXJzb3I6OnZhbHVl
KCkgY29uc3QKK2NvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBJREJDdXJzb3I6OnZhbHVl
KCkgY29uc3QKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgIklEQkN1cnNvcjo6dmFsdWUiKTsKICAg
ICByZXR1cm4gbV9jdXJyZW50VmFsdWU7CkBAIC0xMjEsNyArMTIxLDcgQEAgSURCQW55KiBJREJD
dXJzb3I6OnNvdXJjZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc291cmNlLmdldCgpOwogfQogCi1Q
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkN1cnNvcjo6dXBkYXRlKEpTQzo6RXhlY1N0YXRlKiBz
dGF0ZSwgU2NyaXB0VmFsdWUmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8
SURCUmVxdWVzdD4gSURCQ3Vyc29yOjp1cGRhdGUoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIExP
RyhTdG9yYWdlQVBJLCAiSURCQ3Vyc29yOjp1cGRhdGUiKTsKIApAQCAtMTc3LDcgKzE3Nyw3IEBA
IHZvaWQgSURCQ3Vyc29yOjphZHZhbmNlKHVuc2lnbmVkIGxvbmcgY291bnQsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogICAgIEFTU0VSVCghZWMpOwogfQogCi12b2lkIElEQkN1cnNvcjo6Y29udGludWVG
dW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1
ZSYga2V5VmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBJREJDdXJzb3I6OmNvbnRpbnVl
RnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUmIGtleVZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBET01S
ZXF1ZXN0U3RhdGUgcmVxdWVzdFN0YXRlKGNvbnRleHQpOwogICAgIFJlZlB0cjxJREJLZXk+IGtl
eSA9IHNjcmlwdFZhbHVlVG9JREJLZXkoJnJlcXVlc3RTdGF0ZSwga2V5VmFsdWUpOwpAQCAtMjYz
LDcgKzI2Myw3IEBAIHZvaWQgSURCQ3Vyc29yOjpjbG9zZSgpCiAgICAgfQogfQogCi12b2lkIElE
QkN1cnNvcjo6c2V0VmFsdWVSZWFkeShET01SZXF1ZXN0U3RhdGUqIHN0YXRlLCBQYXNzUmVmUHRy
PElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgU2NyaXB0VmFsdWUm
IHZhbHVlKQordm9pZCBJREJDdXJzb3I6OnNldFZhbHVlUmVhZHkoRE9NUmVxdWVzdFN0YXRlKiBz
dGF0ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlL
ZXksIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSkKIHsKICAgICBtX2N1cnJlbnRLZXkg
PSBrZXk7CiAgICAgbV9jdXJyZW50S2V5VmFsdWUgPSBpZGJLZXlUb1NjcmlwdFZhbHVlKHN0YXRl
LCBtX2N1cnJlbnRLZXkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJD
dXJzb3IuaAppbmRleCBjNmE3NDRmLi4wNGViMzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaApAQCAtMzEsOCArMzEsOCBAQAogI2luY2x1ZGUgIklE
QktleS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiSW5kZXhlZERC
LmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUu
aCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CkBAIC02MywyMiArNjMsMjIgQEAgcHVibGljOgogCiAgICAgLy8gSW1wbGVtZW50IHRo
ZSBJREwKICAgICBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbigpIGNvbnN0OwotICAgIGNvbnN0IFNj
cmlwdFZhbHVlJiBrZXkoKSBjb25zdDsKLSAgICBjb25zdCBTY3JpcHRWYWx1ZSYgcHJpbWFyeUtl
eSgpIGNvbnN0OwotICAgIGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1ZSgpIGNvbnN0OworICAgIGNv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXkoKSBjb25zdDsKKyAgICBjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYgcHJpbWFyeUtleSgpIGNvbnN0OworICAgIGNvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSgpIGNvbnN0OwogICAgIElEQkFueSogc291cmNlKCkg
Y29uc3Q7CiAKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHVwZGF0ZShKU0M6OkV4ZWNTdGF0
ZSosIFNjcmlwdFZhbHVlJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gdXBkYXRlKEpTQzo6RXhlY1N0YXRlKiwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBhZHZhbmNlKHVuc2lnbmVkIGxvbmcsIEV4Y2VwdGlv
bkNvZGUmKTsKICAgICAvLyBGSVhNRTogVHJ5IHRvIG1vZGlmeSB0aGUgY29kZSBnZW5lcmF0b3Ig
c28gdGhpcyBvdmVybG9hZCBpcyB1bm5lZWRlZC4KICAgICB2b2lkIGNvbnRpbnVlRnVuY3Rpb24o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IGNvbnRpbnVlRnVu
Y3Rpb24oc3RhdGljX2Nhc3Q8SURCS2V5Kj4oMCksIGVjKTsgfQotICAgIHZvaWQgY29udGludWVG
dW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwg
RXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgY29udGludWVGdW5jdGlvbihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9u
Q29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZGVsZXRlRnVuY3Rpb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZvaWQgY29udGludWVG
dW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHBv
c3RTdWNjZXNzSGFuZGxlckNhbGxiYWNrKCk7CiAgICAgdm9pZCBjbG9zZSgpOwotICAgIHZvaWQg
c2V0VmFsdWVSZWFkeShET01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NS
ZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBTY3JpcHRWYWx1ZSYpOworICAgIHZvaWQgc2V0VmFs
dWVSZWFkeShET01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8
SURCS2V5PiBwcmltYXJ5S2V5LCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYpOwogICAgIFBhc3NS
ZWZQdHI8SURCS2V5PiBpZGJQcmltYXJ5S2V5KCkgeyByZXR1cm4gbV9jdXJyZW50UHJpbWFyeUtl
eTsgfQogCiBwcm90ZWN0ZWQ6CkBAIC05NywxMSArOTcsMTEgQEAgcHJpdmF0ZToKICAgICBib29s
IG1fZ290VmFsdWU7CiAgICAgLy8gVGhlc2UgdmFsdWVzIGFyZSBoZWxkIGJlY2F1c2UgbV9iYWNr
ZW5kIG1heSBhZHZhbmNlIHdoaWxlIHRoZXkKICAgICAvLyBhcmUgc3RpbGwgdmFsaWQgZm9yIHRo
ZSBjdXJyZW50IHN1Y2Nlc3MgaGFuZGxlcnMuCi0gICAgU2NyaXB0VmFsdWUgbV9jdXJyZW50S2V5
VmFsdWU7Ci0gICAgU2NyaXB0VmFsdWUgbV9jdXJyZW50UHJpbWFyeUtleVZhbHVlOworICAgIERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG1fY3VycmVudEtleVZhbHVlOworICAgIERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlIG1fY3VycmVudFByaW1hcnlLZXlWYWx1ZTsKICAgICBSZWZQdHI8SURCS2V5
PiBtX2N1cnJlbnRLZXk7CiAgICAgUmVmUHRyPElEQktleT4gbV9jdXJyZW50UHJpbWFyeUtleTsK
LSAgICBTY3JpcHRWYWx1ZSBtX2N1cnJlbnRWYWx1ZTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSBtX2N1cnJlbnRWYWx1ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKaW5kZXggOWY0
MDZmYS4uZDI4YTU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRmFjdG9yeS5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCBQYXNzUmVmUHRyPElEQk9wZW5EQlJl
cXVlc3Q+IElEQkZhY3Rvcnk6OmRlbGV0ZURhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKLXNob3J0IElEQkZhY3Rvcnk6OmNtcChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYgZmlyc3RWYWx1ZSwg
Y29uc3QgU2NyaXB0VmFsdWUmIHNlY29uZFZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKK3Nob3J0
IElEQkZhY3Rvcnk6OmNtcChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZmlyc3RWYWx1ZSwgY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmIHNlY29uZFZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBET01SZXF1
ZXN0U3RhdGUgcmVxdWVzdFN0YXRlKGNvbnRleHQpOwogICAgIFJlZlB0cjxJREJLZXk+IGZpcnN0
ID0gc2NyaXB0VmFsdWVUb0lEQktleSgmcmVxdWVzdFN0YXRlLCBmaXJzdFZhbHVlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaAppbmRleCA3Mzc0ZWNm
Li43NzhmZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFj
dG9yeS5oCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQk9wZW5E
QlJlcXVlc3Q+IG9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFt
ZSwgdW5zaWduZWQgbG9uZyBsb25nIHZlcnNpb24sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNz
UmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IGRlbGV0ZURhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIHNob3J0
IGNtcChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU2NyaXB0VmFsdWUmIGZpcnN0LCBj
b25zdCBTY3JpcHRWYWx1ZSYgc2Vjb25kLCBFeGNlcHRpb25Db2RlJik7CisgICAgc2hvcnQgY21w
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYg
Zmlyc3QsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBzZWNvbmQsIEV4Y2VwdGlvbkNv
ZGUmKTsKIAogcHJpdmF0ZToKICAgICBJREJGYWN0b3J5KElEQkZhY3RvcnlCYWNrZW5kSW50ZXJm
YWNlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJ
bmRleC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAK
aW5kZXggZGY2MzczNC4uZWRmNGIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCSW5kZXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkluZGV4LmNwcApAQCAtNzUsNyArNzUsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBhcwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElE
QkluZGV4OjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0
IFNjcmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2Rl
JiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5DdXJzb3IoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
IGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAg
IExPRyhTdG9yYWdlQVBJLCAiSURCSW5kZXg6Om9wZW5DdXJzb3IiKTsKICAgICBSZWZQdHI8SURC
S2V5UmFuZ2U+IGtleVJhbmdlID0gSURCS2V5UmFuZ2U6Om9ubHkoY29udGV4dCwga2V5LCBlYyk7
CkBAIC0xMDAsNyArMTAwLDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Y291
bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlAKICAgICByZXR1cm4g
cmVxdWVzdDsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Y291bnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4Ojpjb3VudChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgIklE
QkluZGV4Ojpjb3VudCIpOwogICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBJREJL
ZXlSYW5nZTo6b25seShjb250ZXh0LCBrZXksIGVjKTsKQEAgLTEzMCw3ICsxMzAsNyBAQCBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsCiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKLVBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rp
b24sIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6
b3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJJbmRleDo6b3BlbktleUN1
cnNvciIpOwogICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBJREJLZXlSYW5nZTo6
b25seShjb250ZXh0LCBrZXksIGVjKTsKQEAgLTEzOSw3ICsxMzksNyBAQCBQYXNzUmVmUHRyPElE
QlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsCiAgICAgcmV0dXJuIG9wZW5LZXlDdXJzb3IoY29udGV4dCwga2V5UmFuZ2UucmVs
ZWFzZSgpLCBkaXJlY3Rpb24sIGVjKTsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJ
bmRleDo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZh
bHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJ
bmRleDo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIExPRyhTdG9y
YWdlQVBJLCAiSURCSW5kZXg6OmdldCIpOwogICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFu
Z2UgPSBJREJLZXlSYW5nZTo6b25seShjb250ZXh0LCBrZXksIGVjKTsKQEAgLTE2OSw3ICsxNjks
NyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpnZXQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cgogICAgIHJldHVybiByZXF1ZXN0OwogfQogCi1Q
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpnZXRLZXkoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMp
CitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpnZXRLZXkoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJJbmRleDo6Z2V0S2V5
Iik7CiAgICAgUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSA9IElEQktleVJhbmdlOjpvbmx5
KGNvbnRleHQsIGtleSwgZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCSW5kZXguaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkluZGV4LmgKaW5kZXggMjYxNGUwMi4uZjk1NGFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCkBAIC02MywyMyArNjMsMjMgQEAgcHVibGljOgogICAg
IC8vIEZJWE1FOiBUcnkgdG8gbW9kaWZ5IHRoZSBjb2RlIGdlbmVyYXRvciBzbyB0aGlzIGlzIHVu
bmVlZGVkLgogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3BlbkN1
cnNvcihjb250ZXh0LCBzdGF0aWNfY2FzdDxJREJLZXlSYW5nZSo+KDApLCBlYyk7IH0KICAgICBQ
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEV4Y2VwdGlvbkNvZGUm
IGVjKSB7IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIGtleVJhbmdlLCBJREJDdXJzb3I6OmRp
cmVjdGlvbk5leHQoKSwgZWMpOyB9Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vy
c29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBr
ZXksIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIGtleSwg
SURCQ3Vyc29yOjpkaXJlY3Rpb25OZXh0KCksIGVjKTsgfQorICAgIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4g
b3BlbkN1cnNvcihjb250ZXh0LCBrZXksIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCgpLCBlYyk7
IH0KICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlv
biwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNv
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgY29uc3Qg
U3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25D
b2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gY291bnQoY29udGV4
dCwgc3RhdGljX2Nhc3Q8SURCS2V5UmFuZ2UqPigwKSwgZWMpOyB9CiAgICAgUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJL
ZXlSYW5nZT4sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNv
dW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNl
cHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0
aW9uQ29kZSYpOwogCiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVy
biBvcGVuS2V5Q3Vyc29yKGNvbnRleHQsIHN0YXRpY19jYXN0PElEQktleVJhbmdlKj4oMCksIGVj
KTsgfQogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwg
RXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5LZXlDdXJzb3IoY29udGV4dCwga2V5UmFu
Z2UsIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCgpLCBlYyk7IH0KLSAgICBQYXNzUmVmUHRyPElE
QlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Y29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5L
ZXlDdXJzb3IoY29udGV4dCwga2V5LCBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHQoKSwgZWMpOyB9
CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4
Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBvcGVuS2V5Q3Vyc29yKGNvbnRleHQsIGtleSwgSURC
Q3Vyc29yOjpkaXJlY3Rpb25OZXh0KCksIGVjKTsgfQogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVz
dD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJL
ZXlSYW5nZT4sIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJik7Ci0gICAg
UGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhj
ZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbktleUN1cnNvcihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtl
eSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIFBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gZ2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRy
PElEQktleVJhbmdlPiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVz
dD4gZ2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBF
eGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBnZXQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2Vw
dGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGdldEtleShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIEV4Y2VwdGlvbkNvZGUmKTsK
LSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGdldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gZ2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CiAKICAgICB2b2lkIG1h
cmtEZWxldGVkKCkgeyBtX2RlbGV0ZWQgPSB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmNwcAppbmRleCA3MjhmOTUzLi4zZDU0ZmMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5n
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2Uu
Y3BwCkBAIC00OSwxMyArNDksMTMgQEAgSURCS2V5UmFuZ2U6OklEQktleVJhbmdlKFBhc3NSZWZQ
dHI8SURCS2V5PiBsb3dlciwgUGFzc1JlZlB0cjxJREJLZXk+IHVwcGVyLCBMb3cKIHsKIH0KIAot
U2NyaXB0VmFsdWUgSURCS2V5UmFuZ2U6Omxvd2VyVmFsdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCkgY29uc3QKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIElEQktleVJhbmdlOjps
b3dlclZhbHVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIGNvbnN0CiB7CiAgICAg
RE9NUmVxdWVzdFN0YXRlIHJlcXVlc3RTdGF0ZShjb250ZXh0KTsKICAgICByZXR1cm4gaWRiS2V5
VG9TY3JpcHRWYWx1ZSgmcmVxdWVzdFN0YXRlLCBtX2xvd2VyKTsKIH0KIAotU2NyaXB0VmFsdWUg
SURCS2V5UmFuZ2U6OnVwcGVyVmFsdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkg
Y29uc3QKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIElEQktleVJhbmdlOjp1cHBlclZhbHVlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgRE9NUmVxdWVzdFN0
YXRlIHJlcXVlc3RTdGF0ZShjb250ZXh0KTsKICAgICByZXR1cm4gaWRiS2V5VG9TY3JpcHRWYWx1
ZSgmcmVxdWVzdFN0YXRlLCBtX3VwcGVyKTsKQEAgLTcyLDcgKzcyLDcgQEAgUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6Om9ubHkoUGFzc1JlZlB0cjxJREJLZXk+IHBycEtleSwg
RXhjZXB0aW9uQ28KICAgICByZXR1cm4gSURCS2V5UmFuZ2U6OmNyZWF0ZShrZXksIGtleSwgTG93
ZXJCb3VuZENsb3NlZCwgVXBwZXJCb3VuZENsb3NlZCk7CiB9CiAKLVBhc3NSZWZQdHI8SURCS2V5
UmFuZ2U+IElEQktleVJhbmdlOjpvbmx5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IGNvbnN0IFNjcmlwdFZhbHVlJiBrZXlWYWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVm
UHRyPElEQktleVJhbmdlPiBJREJLZXlSYW5nZTo6b25seShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5VmFsdWUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIERPTVJlcXVlc3RTdGF0ZSByZXF1ZXN0U3RhdGUoY29udGV4
dCk7CiAgICAgUmVmUHRyPElEQktleT4ga2V5ID0gc2NyaXB0VmFsdWVUb0lEQktleSgmcmVxdWVz
dFN0YXRlLCBrZXlWYWx1ZSk7CkBAIC04NCw3ICs4NCw3IEBAIFBhc3NSZWZQdHI8SURCS2V5UmFu
Z2U+IElEQktleVJhbmdlOjpvbmx5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0CiAgICAgcmV0dXJuIElEQktleVJhbmdlOjpjcmVhdGUoa2V5LCBrZXksIExvd2VyQm91bmRD
bG9zZWQsIFVwcGVyQm91bmRDbG9zZWQpOwogfQogCi1QYXNzUmVmUHRyPElEQktleVJhbmdlPiBJ
REJLZXlSYW5nZTo6bG93ZXJCb3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBj
b25zdCBTY3JpcHRWYWx1ZSYgYm91bmRWYWx1ZSwgYm9vbCBvcGVuLCBFeGNlcHRpb25Db2RlJiBl
YykKK1Bhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IElEQktleVJhbmdlOjpsb3dlckJvdW5kKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
JiBib3VuZFZhbHVlLCBib29sIG9wZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIERPTVJl
cXVlc3RTdGF0ZSByZXF1ZXN0U3RhdGUoY29udGV4dCk7CiAgICAgUmVmUHRyPElEQktleT4gYm91
bmQgPSBzY3JpcHRWYWx1ZVRvSURCS2V5KCZyZXF1ZXN0U3RhdGUsIGJvdW5kVmFsdWUpOwpAQCAt
OTYsNyArOTYsNyBAQCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBJREJLZXlSYW5nZTo6bG93ZXJC
b3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgIHJldHVybiBJREJLZXlS
YW5nZTo6Y3JlYXRlKGJvdW5kLCAwLCBvcGVuID8gTG93ZXJCb3VuZE9wZW4gOiBMb3dlckJvdW5k
Q2xvc2VkLCBVcHBlckJvdW5kT3Blbik7CiB9CiAKLVBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IElE
QktleVJhbmdlOjp1cHBlckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFNjcmlwdFZhbHVlJiBib3VuZFZhbHVlLCBib29sIG9wZW4sIEV4Y2VwdGlvbkNvZGUmIGVj
KQorUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6OnVwcGVyQm91bmQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
IGJvdW5kVmFsdWUsIGJvb2wgb3BlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgRE9NUmVx
dWVzdFN0YXRlIHJlcXVlc3RTdGF0ZShjb250ZXh0KTsKICAgICBSZWZQdHI8SURCS2V5PiBib3Vu
ZCA9IHNjcmlwdFZhbHVlVG9JREJLZXkoJnJlcXVlc3RTdGF0ZSwgYm91bmRWYWx1ZSk7CkBAIC0x
MDgsNyArMTA4LDcgQEAgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6OnVwcGVy
Qm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKICAgICByZXR1cm4gSURCS2V5
UmFuZ2U6OmNyZWF0ZSgwLCBib3VuZCwgTG93ZXJCb3VuZE9wZW4sIG9wZW4gPyBVcHBlckJvdW5k
T3BlbiA6IFVwcGVyQm91bmRDbG9zZWQpOwogfQogCi1QYXNzUmVmUHRyPElEQktleVJhbmdlPiBJ
REJLZXlSYW5nZTo6Ym91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U2NyaXB0VmFsdWUmIGxvd2VyVmFsdWUsIGNvbnN0IFNjcmlwdFZhbHVlJiB1cHBlclZhbHVlLCBi
b29sIGxvd2VyT3BlbiwgYm9vbCB1cHBlck9wZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6OmJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBsb3dlclZhbHVlLCBj
b25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdXBwZXJWYWx1ZSwgYm9vbCBsb3dlck9wZW4s
IGJvb2wgdXBwZXJPcGVuLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBET01SZXF1ZXN0U3Rh
dGUgcmVxdWVzdFN0YXRlKGNvbnRleHQpOwogICAgIFJlZlB0cjxJREJLZXk+IGxvd2VyID0gc2Ny
aXB0VmFsdWVUb0lEQktleSgmcmVxdWVzdFN0YXRlLCBsb3dlclZhbHVlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5oCmluZGV4IDU0NzY5NWEuLmU1
NTFjZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktl
eVJhbmdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFu
Z2UuaApAQCAtNTksMjMgKzU5LDIzIEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQktleT4g
bG93ZXIoKSBjb25zdCB7IHJldHVybiBtX2xvd2VyOyB9CiAgICAgUGFzc1JlZlB0cjxJREJLZXk+
IHVwcGVyKCkgY29uc3QgeyByZXR1cm4gbV91cHBlcjsgfQogCi0gICAgU2NyaXB0VmFsdWUgbG93
ZXJWYWx1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgY29uc3Q7Ci0gICAgU2NyaXB0VmFsdWUg
dXBwZXJWYWx1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgY29uc3Q7CisgICAgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUgbG93ZXJWYWx1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgY29uc3Q7
CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgdXBwZXJWYWx1ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KikgY29uc3Q7CiAgICAgYm9vbCBsb3dlck9wZW4oKSBjb25zdCB7IHJldHVybiBtX2xv
d2VyVHlwZSA9PSBMb3dlckJvdW5kT3BlbjsgfQogICAgIGJvb2wgdXBwZXJPcGVuKCkgY29uc3Qg
eyByZXR1cm4gbV91cHBlclR5cGUgPT0gVXBwZXJCb3VuZE9wZW47IH0KIAogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPElEQktleVJhbmdlPiBvbmx5KFBhc3NSZWZQdHI8SURCS2V5PiB2YWx1ZSwgRXhj
ZXB0aW9uQ29kZSYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBvbmx5KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25D
b2RlJik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IG9ubHkoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2Vw
dGlvbkNvZGUmKTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBsb3dlckJv
dW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBi
b3VuZCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGxvd2VyQm91bmQoY29udGV4dCwgYm91
bmQsIGZhbHNlLCBlYyk7IH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gbG93
ZXJCb3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU2NyaXB0VmFsdWUmIGJvdW5k
LCBib29sIG9wZW4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJL
ZXlSYW5nZT4gbG93ZXJCb3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25z
dCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgYm91bmQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJl
dHVybiBsb3dlckJvdW5kKGNvbnRleHQsIGJvdW5kLCBmYWxzZSwgZWMpOyB9CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGxvd2VyQm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBib3VuZCwgYm9vbCBvcGVuLCBFeGNl
cHRpb25Db2RlJik7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gdXBwZXJC
b3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYg
Ym91bmQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiB1cHBlckJvdW5kKGNvbnRleHQsIGJv
dW5kLCBmYWxzZSwgZWMpOyB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHVw
cGVyQm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBib3Vu
ZCwgYm9vbCBvcGVuLCBFeGNlcHRpb25Db2RlJik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURC
S2V5UmFuZ2U+IHVwcGVyQm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGJvdW5kLCBFeGNlcHRpb25Db2RlJiBlYykgeyBy
ZXR1cm4gdXBwZXJCb3VuZChjb250ZXh0LCBib3VuZCwgZmFsc2UsIGVjKTsgfQorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiB1cHBlckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgYm91bmQsIGJvb2wgb3BlbiwgRXhj
ZXB0aW9uQ29kZSYpOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGJvdW5k
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBsb3dl
ciwgY29uc3QgU2NyaXB0VmFsdWUmIHVwcGVyLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4g
Ym91bmQoY29udGV4dCwgbG93ZXIsIHVwcGVyLCBmYWxzZSwgZmFsc2UsIGVjKTsgfQotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBib3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYgbG93ZXIsIGNvbnN0IFNjcmlwdFZhbHVlJiB1
cHBlciwgYm9vbCBsb3dlck9wZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBib3VuZChj
b250ZXh0LCBsb3dlciwgdXBwZXIsIGxvd2VyT3BlbiwgZmFsc2UsIGVjKTsgfQotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBib3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Y29uc3QgU2NyaXB0VmFsdWUmIGxvd2VyLCBjb25zdCBTY3JpcHRWYWx1ZSYgdXBwZXIsIGJvb2wg
bG93ZXJPcGVuLCBib29sIHVwcGVyT3BlbiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPElEQktleVJhbmdlPiBib3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgbG93ZXIsIGNvbnN0IERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlJiB1cHBlciwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGJvdW5k
KGNvbnRleHQsIGxvd2VyLCB1cHBlciwgZmFsc2UsIGZhbHNlLCBlYyk7IH0KKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gYm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGxvd2VyLCBjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYgdXBwZXIsIGJvb2wgbG93ZXJPcGVuLCBFeGNlcHRpb25Db2RlJiBl
YykgeyByZXR1cm4gYm91bmQoY29udGV4dCwgbG93ZXIsIHVwcGVyLCBsb3dlck9wZW4sIGZhbHNl
LCBlYyk7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gYm91bmQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBsb3dlciwg
Y29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHVwcGVyLCBib29sIGxvd2VyT3BlbiwgYm9v
bCB1cHBlck9wZW4sIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIGJvb2wgaXNPbmx5S2V5KCkgY29u
c3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlLmNwcAppbmRleCA2OWJhYmYxLi43ODY3ZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC04Niw3ICs4Niw3
IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmdldChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzCiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgp
OwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpnZXQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0
aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpnZXQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPElEQktleVJhbmdl
PiBrZXlSYW5nZSA9IElEQktleVJhbmdlOjpvbmx5KGNvbnRleHQsIGtleSwgZWMpOwogICAgIGlm
IChlYykKQEAgLTk0LDcgKzk0LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RT
dG9yZTo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnMKICAgICByZXR1
cm4gZ2V0KGNvbnRleHQsIGtleVJhbmdlLnJlbGVhc2UoKSwgZWMpOwogfQogCi1zdGF0aWMgdm9p
ZCBnZW5lcmF0ZUluZGV4S2V5c0ZvclZhbHVlKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRl
LCBjb25zdCBJREJJbmRleE1ldGFkYXRhJiBpbmRleE1ldGFkYXRhLCBjb25zdCBTY3JpcHRWYWx1
ZSYgb2JqZWN0VmFsdWUsIElEQk9iamVjdFN0b3JlOjpJbmRleEtleXMqIGluZGV4S2V5cykKK3N0
YXRpYyB2b2lkIGdlbmVyYXRlSW5kZXhLZXlzRm9yVmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1
ZXN0U3RhdGUsIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEsIGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBvYmplY3RWYWx1ZSwgSURCT2JqZWN0U3RvcmU6OkluZGV4
S2V5cyogaW5kZXhLZXlzKQogewogICAgIEFTU0VSVChpbmRleEtleXMpOwogICAgIFJlZlB0cjxJ
REJLZXk+IGluZGV4S2V5ID0gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChy
ZXF1ZXN0U3RhdGUsIG9iamVjdFZhbHVlLCBpbmRleE1ldGFkYXRhLmtleVBhdGgpOwpAQCAtMTE3
LDMxICsxMTcsMzEgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVJbmRleEtleXNGb3JWYWx1ZShET01S
ZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgY29uc3QgSURCSW4KICAgICB9CiB9CiAKLVBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmFkZChKU0M6OkV4ZWNTdGF0ZSogc3Rh
dGUsIFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9u
Q29kZSYgZWMpCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjphZGQoSlND
OjpFeGVjU3RhdGUqIHN0YXRlLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAg
IExPRyhTdG9yYWdlQVBJLCAiSURCT2JqZWN0U3RvcmU6OmFkZCIpOwogICAgIHJldHVybiBwdXQo
SURCRGF0YWJhc2VCYWNrZW5kOjpBZGRPbmx5LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgc3RhdGUs
IHZhbHVlLCBrZXksIGVjKTsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RT
dG9yZTo6YWRkKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgU2NyaXB0VmFsdWUmIHZhbHVlLCBFeGNl
cHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmFk
ZChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJPYmplY3RTdG9y
ZTo6YWRkIik7CiAgICAgcmV0dXJuIHB1dChJREJEYXRhYmFzZUJhY2tlbmQ6OkFkZE9ubHksIElE
QkFueTo6Y3JlYXRlKHRoaXMpLCBzdGF0ZSwgdmFsdWUsIHN0YXRpY19jYXN0PElEQktleSo+KDAp
LCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU2NyaXB0VmFs
dWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9i
amVjdFN0b3JlOjpwdXQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYgdmFsdWUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewogICAgIExPRyhTdG9yYWdlQVBJLCAiSURCT2JqZWN0U3RvcmU6OnB1dCIp
OwogICAgIHJldHVybiBwdXQoSURCRGF0YWJhc2VCYWNrZW5kOjpBZGRPclVwZGF0ZSwgSURCQW55
OjpjcmVhdGUodGhpcyksIHN0YXRlLCB2YWx1ZSwga2V5LCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFNj
cmlwdFZhbHVlJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIExPRyhTdG9y
YWdlQVBJLCAiSURCT2JqZWN0U3RvcmU6OnB1dCIpOwogICAgIHJldHVybiBwdXQoSURCRGF0YWJh
c2VCYWNrZW5kOjpBZGRPclVwZGF0ZSwgSURCQW55OjpjcmVhdGUodGhpcyksIHN0YXRlLCB2YWx1
ZSwgc3RhdGljX2Nhc3Q8SURCS2V5Kj4oMCksIGVjKTsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KElEQkRhdGFiYXNlQmFja2VuZDo6UHV0TW9kZSBwdXRN
b2RlLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFNj
cmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU2NyaXB0VmFsdWUmIGtleVZhbHVlLCBFeGNlcHRpb25D
b2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChJREJE
YXRhYmFzZUJhY2tlbmQ6OlB1dE1vZGUgcHV0TW9kZSwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJj
ZSwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUs
IGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXlWYWx1ZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKHN0YXRlKTsKICAgICBET01SZXF1ZXN0U3RhdGUgcmVx
dWVzdFN0YXRlKGNvbnRleHQpOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChJREJEYXRhYmFzZUJhY2tlbmQ6OlB1dE1vZGUgcHV0
TW9kZSwKICAgICByZXR1cm4gcHV0KHB1dE1vZGUsIHNvdXJjZSwgc3RhdGUsIHZhbHVlLCBrZXku
cmVsZWFzZSgpLCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3Rv
cmU6OnB1dChJREJEYXRhYmFzZUJhY2tlbmQ6OlB1dE1vZGUgcHV0TW9kZSwgUGFzc1JlZlB0cjxJ
REJBbnk+IHNvdXJjZSwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBTY3JpcHRWYWx1ZSYgdmFsdWUs
IFBhc3NSZWZQdHI8SURCS2V5PiBwcnBLZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KElEQkRhdGFiYXNlQmFja2VuZDo6UHV0
TW9kZSBwdXRNb2RlLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+
IHBycEtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPElEQktleT4ga2V5ID0g
cHJwS2V5OwogICAgIGlmIChtX2RlbGV0ZWQpIHsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBQYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoSURCRGF0YWJhc2VCYWNrZW5kOjpQ
dXRNb2RlIHB1dE1vZGUsCiAKICAgICAvLyBGSVhNRTogRXhwb3NlIHRoZSBKUyBlbmdpbmUgZXhj
ZXB0aW9uIHN0YXRlIHRocm91Z2ggU2NyaXB0U3RhdGUuCiAgICAgYm9vbCBkaWRUaHJvdyA9IGZh
bHNlOwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9
IHZhbHVlLnNlcmlhbGl6ZShzdGF0ZSwgMCwgMCwgZGlkVGhyb3cpOworICAgIFJlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6c2VyaWFsaXplKHZhbHVlLCBzdGF0ZSwgbnVsbHB0ciwgbnVsbHB0ciwgZGlkVGhyb3cpOwog
ICAgIGlmIChkaWRUaHJvdykgewogICAgICAgICAvLyBTZXR0aW5nIGFuIGV4cGxpY2l0IEV4Y2Vw
dGlvbkNvZGUgaGVyZSB3b3VsZCBkZWZlciBoYW5kbGluZyB0aGUgYWxyZWFkeSB0aHJvd24gZXhj
ZXB0aW9uLgogICAgICAgICByZXR1cm4gMDsKQEAgLTI2Miw3ICsyNjIsNyBAQCBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjbwogICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIAotUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9u
Q29kZSYgZWMpCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpkZWxldGVG
dW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8SURC
S2V5UmFuZ2U+IGtleVJhbmdlID0gSURCS2V5UmFuZ2U6Om9ubHkoY29udGV4dCwga2V5LCBlYyk7
CiAgICAgaWYgKGVjKQpAQCAtMzM2LDcgKzMzNiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBj
dXJzb3ItPmNvbnRpbnVlRnVuY3Rpb24oc3RhdGljX2Nhc3Q8SURCS2V5Kj4oMCksIEFTU0VSVF9O
T19FWENFUFRJT04pOwogCiAgICAgICAgICAgICBSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5ID0g
Y3Vyc29yLT5pZGJQcmltYXJ5S2V5KCk7Ci0gICAgICAgICAgICBTY3JpcHRWYWx1ZSB2YWx1ZSA9
IGN1cnNvci0+dmFsdWUoKTsKKyAgICAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHZh
bHVlID0gY3Vyc29yLT52YWx1ZSgpOwogCiAgICAgICAgICAgICBJREJPYmplY3RTdG9yZTo6SW5k
ZXhLZXlzIGluZGV4S2V5czsKICAgICAgICAgICAgIGdlbmVyYXRlSW5kZXhLZXlzRm9yVmFsdWUo
cmVxdWVzdC0+cmVxdWVzdFN0YXRlKCksIG1faW5kZXhNZXRhZGF0YSwgdmFsdWUsICZpbmRleEtl
eXMpOwpAQCAtNTAyLDcgKzUwMiw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0
U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4CiAgICAgcmV0
dXJuIG9wZW5DdXJzb3IoY29udGV4dCwga2V5UmFuZ2UsIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4
dCgpLCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9w
ZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFs
dWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9i
amVjdFN0b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIGtleSwgSURCQ3Vyc29yOjpkaXJlY3Rpb25O
ZXh0KCksIGVjKTsKIH0KQEAgLTUzNCw3ICs1MzQsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eAogICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwg
RXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3Jl
OjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlID0gSURCS2V5
UmFuZ2U6Om9ubHkoY29udGV4dCwga2V5LCBlYyk7CiAgICAgaWYgKGVjKQpAQCAtNTU4LDcgKzU1
OCw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmNvdW50KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhCiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFz
ZSgpOwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjb3VudChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBF
eGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6
OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFJlZlB0cjxJREJL
ZXlSYW5nZT4ga2V5UmFuZ2UgPSBJREJLZXlSYW5nZTo6b25seShjb250ZXh0LCBrZXksIGVjKTsK
ICAgICBpZiAoZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmUuaAppbmRleCBmZmY1ZmY5Li5kYTY1YTA1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKQEAgLTY1LDIxICs2NSwy
MSBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX3RyYW5zYWN0aW9uOyB9CiAgICAgYm9vbCBhdXRvSW5jcmVtZW50
KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5hdXRvSW5jcmVtZW50OyB9CiAKLSAgICBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IGFkZChKU0M6OkV4ZWNTdGF0ZSosIFNjcmlwdFZhbHVlJiwgRXhj
ZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gcHV0KEpTQzo6RXhlY1N0
YXRlKiwgU2NyaXB0VmFsdWUmLCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBhZGQoSlNDOjpFeGVjU3RhdGUqLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHB1dChKU0M6OkV4ZWNT
dGF0ZSosIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBh
c3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
RXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIEV4Y2VwdGlv
bkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlv
biwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNv
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIGNvbnN0
IFN0cmluZyYgZGlyZWN0aW9uLCBJREJEYXRhYmFzZUJhY2tlbmQ6OlRhc2tUeXBlLCBFeGNlcHRp
b25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRp
cmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3Bl
bkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmKTsKIAot
ICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZ2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IGdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5n
ZT4sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGFkZChKU0M6
OkV4ZWNTdGF0ZSosIFNjcmlwdFZhbHVlJiwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0
aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gcHV0KEpTQzo6RXhlY1N0YXRl
KiwgU2NyaXB0VmFsdWUmLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7
CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBhZGQoSlNDOjpFeGVjU3RhdGUqLCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHB1dChKU0M6OkV4ZWNT
dGF0ZSosIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
ZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5
UmFuZ2U+LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBkZWxl
dGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU2NyaXB0VmFsdWUmIGtl
eSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZGVsZXRlRnVu
Y3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNs
ZWFyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBQYXNz
UmVmUHRyPElEQkluZGV4PiBjcmVhdGVJbmRleChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgY29uc3QgRGlj
dGlvbmFyeSYgb3B0aW9ucywgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGNyZWF0ZUluZGV4
KGNvbnRleHQsIG5hbWUsIElEQktleVBhdGgoa2V5UGF0aCksIG9wdGlvbnMsIGVjKTsgfQpAQCAt
OTIsMTAgKzkyLDEwIEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY291
bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsg
cmV0dXJuIGNvdW50KGNvbnRleHQsIHN0YXRpY19jYXN0PElEQktleVJhbmdlKj4oMCksIGVjKTsg
fQogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU2Ny
aXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVz
dD4gY291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVz
dD4gcHV0KElEQkRhdGFiYXNlQmFja2VuZDo6UHV0TW9kZSwgUGFzc1JlZlB0cjxJREJBbnk+IHNv
dXJjZSwgSlNDOjpFeGVjU3RhdGUqLCBTY3JpcHRWYWx1ZSYsIGNvbnN0IFNjcmlwdFZhbHVlJiBr
ZXksIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHB1dChJREJE
YXRhYmFzZUJhY2tlbmQ6OlB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIEpTQzo6
RXhlY1N0YXRlKiwgU2NyaXB0VmFsdWUmLCBQYXNzUmVmUHRyPElEQktleT4sIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHB1dChJREJEYXRhYmFzZUJhY2tlbmQ6
OlB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIEpTQzo6RXhlY1N0YXRlKiwgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5
LCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBwdXQoSURCRGF0
YWJhc2VCYWNrZW5kOjpQdXRNb2RlLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBKU0M6OkV4
ZWNTdGF0ZSosIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgUGFzc1JlZlB0cjxJREJLZXk+LCBF
eGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBtYXJrRGVsZXRlZCgpIHsgbV9kZWxldGVkID0gdHJ1
ZTsgfQogICAgIHZvaWQgdHJhbnNhY3Rpb25GaW5pc2hlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCmluZGV4IDAwNDllZGEuLmQ1NjQ2
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3Qu
Y3BwCkBAIC0yMTMsNyArMjEzLDcgQEAgUGFzc1JlZlB0cjxJREJDdXJzb3I+IElEQlJlcXVlc3Q6
OmdldFJlc3VsdEN1cnNvcigpCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgSURCUmVxdWVzdDo6
c2V0UmVzdWx0Q3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yPiBjdXJzb3IsIFBhc3NSZWZQdHI8
SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBjb25zdCBTY3JpcHRW
YWx1ZSYgdmFsdWUpCit2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdEN1cnNvcihQYXNzUmVmUHRy
PElEQkN1cnNvcj4gY3Vyc29yLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElE
QktleT4gcHJpbWFyeUtleSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlKQog
ewogICAgIEFTU0VSVChtX3JlYWR5U3RhdGUgPT0gUEVORElORyk7CiAgICAgbV9jdXJzb3JLZXkg
PSBrZXk7CkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFz
c1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kPiBiYWNrZW5kLCBQYXNzUmVmUHRyPElEQksKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgRE9NUmVxdWVzdFN0YXRlOjpTY29wZSBzY29wZShtX3JlcXVlc3RT
dGF0ZSk7Ci0gICAgU2NyaXB0VmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVy
KHJlcXVlc3RTdGF0ZSgpLCBidWZmZXIpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHZh
bHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihyZXF1ZXN0U3RhdGUoKSwgYnVmZmVyKTsK
ICAgICBBU1NFUlQoIW1fcGVuZGluZ0N1cnNvcik7CiAgICAgUmVmUHRyPElEQkN1cnNvcj4gY3Vy
c29yOwogICAgIHN3aXRjaCAobV9jdXJzb3JUeXBlKSB7CkBAIC0zMjEsNyArMzIxLDcgQEAgdm9p
ZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlQnVm
ZmVyKQogICAgICAgICByZXR1cm47CiAKICAgICBET01SZXF1ZXN0U3RhdGU6OlNjb3BlIHNjb3Bl
KG1fcmVxdWVzdFN0YXRlKTsKLSAgICBTY3JpcHRWYWx1ZSB2YWx1ZSA9IGRlc2VyaWFsaXplSURC
VmFsdWVCdWZmZXIocmVxdWVzdFN0YXRlKCksIHZhbHVlQnVmZmVyKTsKKyAgICBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSB2YWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIocmVxdWVzdFN0
YXRlKCksIHZhbHVlQnVmZmVyKTsKICAgICBvblN1Y2Nlc3NJbnRlcm5hbCh2YWx1ZSk7CiB9CiAK
QEAgLTM0OCw3ICszNDgsNyBAQCB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gdmFsdWVCdWZmZXIsIFBhc3NSZWZQdHI8SURCSwogICAgIEFTU0VSVChr
ZXlQYXRoID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKG1fc291cmNlKS0+a2V5UGF0aCgpKTsKICNl
bmRpZgogICAgIERPTVJlcXVlc3RTdGF0ZTo6U2NvcGUgc2NvcGUobV9yZXF1ZXN0U3RhdGUpOwot
ICAgIFNjcmlwdFZhbHVlIHZhbHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihyZXF1ZXN0
U3RhdGUoKSwgdmFsdWVCdWZmZXIpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHZhbHVl
ID0gZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihyZXF1ZXN0U3RhdGUoKSwgdmFsdWVCdWZmZXIp
OwogCiAgICAgUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSA9IHBycFByaW1hcnlLZXk7CiAjaWZu
ZGVmIE5ERUJVRwpAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNz
SW50ZXJuYWwoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlKQogICAgIHJl
dHVybiBvblN1Y2Nlc3NJbnRlcm5hbChkZXNlcmlhbGl6ZUlEQlZhbHVlKHJlcXVlc3RTdGF0ZSgp
LCB2YWx1ZSkpOwogfQogCi12b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2Vzc0ludGVybmFsKGNvbnN0
IFNjcmlwdFZhbHVlJiB2YWx1ZSkKK3ZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzSW50ZXJuYWwo
Y29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlKQogewogICAgIG1fcmVzdWx0ID0g
SURCQW55OjpjcmVhdGUodmFsdWUpOwogICAgIGlmIChtX3BlbmRpbmdDdXJzb3IpIHsKQEAgLTQw
MCw3ICs0MDAsNyBAQCB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktl
eT4ga2V5LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleQogICAgICAgICByZXR1cm47CiAK
ICAgICBET01SZXF1ZXN0U3RhdGU6OlNjb3BlIHNjb3BlKG1fcmVxdWVzdFN0YXRlKTsKLSAgICBT
Y3JpcHRWYWx1ZSB2YWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIocmVxdWVzdFN0YXRl
KCksIGJ1ZmZlcik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgdmFsdWUgPSBkZXNlcmlh
bGl6ZUlEQlZhbHVlQnVmZmVyKHJlcXVlc3RTdGF0ZSgpLCBidWZmZXIpOwogICAgIEFTU0VSVCht
X3BlbmRpbmdDdXJzb3IpOwogICAgIHNldFJlc3VsdEN1cnNvcihtX3BlbmRpbmdDdXJzb3IucmVs
ZWFzZSgpLCBrZXksIHByaW1hcnlLZXksIHZhbHVlKTsKICAgICBlbnF1ZXVlRXZlbnQoY3JlYXRl
U3VjY2Vzc0V2ZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
UmVxdWVzdC5oCmluZGV4IDQzMDU4OWUuLmFjNzVkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKQEAgLTEyMCw3ICsxMjAsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgdm9pZCBlbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwogICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRFbnF1ZXVlRXZlbnQoKSBjb25zdDsKICAgICB2b2lkIG9uU3VjY2Vzc0lu
dGVybmFsKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7Ci0gICAgdm9pZCBvblN1
Y2Nlc3NJbnRlcm5hbChjb25zdCBTY3JpcHRWYWx1ZSYpOworICAgIHZvaWQgb25TdWNjZXNzSW50
ZXJuYWwoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmKTsKIAogICAgIFJlZlB0cjxJREJB
bnk+IG1fcmVzdWx0OwogICAgIHVuc2lnbmVkIHNob3J0IG1fZXJyb3JDb2RlOwpAQCAtMTQwLDcg
KzE0MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBP
VkVSUklERSBGSU5BTCB7IGRlcmVmKCk7IH0KIAogICAgIFBhc3NSZWZQdHI8SURCQ3Vyc29yPiBn
ZXRSZXN1bHRDdXJzb3IoKTsKLSAgICB2b2lkIHNldFJlc3VsdEN1cnNvcihQYXNzUmVmUHRyPElE
QkN1cnNvcj4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlL
ZXksIGNvbnN0IFNjcmlwdFZhbHVlJik7CisgICAgdm9pZCBzZXRSZXN1bHRDdXJzb3IoUGFzc1Jl
ZlB0cjxJREJDdXJzb3I+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiBw
cmltYXJ5S2V5LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYpOwogCiAgICAgUmVmUHRy
PElEQkFueT4gbV9zb3VyY2U7CiAgICAgY29uc3QgSURCRGF0YWJhc2VCYWNrZW5kOjpUYXNrVHlw
ZSBtX3Rhc2tUeXBlOwpAQCAtMTU1LDcgKzE1NSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPElE
QkN1cnNvcj4gbV9wZW5kaW5nQ3Vyc29yOwogICAgIFJlZlB0cjxJREJLZXk+IG1fY3Vyc29yS2V5
OwogICAgIFJlZlB0cjxJREJLZXk+IG1fY3Vyc29yUHJpbWFyeUtleTsKLSAgICBTY3JpcHRWYWx1
ZSBtX2N1cnNvclZhbHVlOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG1fY3Vyc29yVmFs
dWU7CiAgICAgYm9vbCBtX2RpZEZpcmVVcGdyYWRlTmVlZGVkRXZlbnQ7CiAgICAgYm9vbCBtX3By
ZXZlbnRQcm9wYWdhdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuY3BwCmluZGV4IDBkM2QyNmUuLjZjMTI1YTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJh
bmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxp
dHlSYW5nZS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5o
IgogI2luY2x1ZGUgIk1lZGlhU291cmNlU3RhdGVzLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUu
aCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPGludGVycHJl
dGVyL0NhbGxGcmFtZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgogCkBAIC01
MCw3ICs1MCw3IEBAIENhcGFiaWxpdHlSYW5nZTo6Q2FwYWJpbGl0eVJhbmdlKGNvbnN0IE1lZGlh
U3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlJiByYW5nZUluCiB7CiB9CiAKLXN0YXRpYyBTY3Jp
cHRWYWx1ZSBzY3JpcHRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IE1lZGlhU3RyZWFtU291
cmNlQ2FwYWJpbGl0eVJhbmdlOjpWYWx1ZVVuaW9uJiB2YWx1ZSwgTWVkaWFTdHJlYW1Tb3VyY2VD
YXBhYmlsaXR5UmFuZ2U6OlR5cGUgdHlwZSkKK3N0YXRpYyBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSBzY3JpcHRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlQ2Fw
YWJpbGl0eVJhbmdlOjpWYWx1ZVVuaW9uJiB2YWx1ZSwgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmls
aXR5UmFuZ2U6OlR5cGUgdHlwZSkKIHsKICAgICAvLyBOT1RFOiB0aGUgc3BlYyBzYXlzOgogICAg
IC8vICAgICAgLi4uIGFuIGltcGxlbWVudGF0aW9uIHNob3VsZCBtYWtlIGEgcmVhc29uYWJsZSBh
dHRlbXB0IHRvIHRyYW5zbGF0ZSBhbmQgc2NhbGUgdGhlIGhhcmR3YXJlJ3Mgc2V0dGluZwpAQCAt
NjMsMjYgKzYzLDI2IEBAIHN0YXRpYyBTY3JpcHRWYWx1ZSBzY3JpcHRWYWx1ZShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0CiAgICAgCiAgICAgc3dpdGNo
ICh0eXBlKSB7CiAgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZTo6Rmxv
YXQ6Ci0gICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBKU1ZhbHVlKHZhbHVl
LmFzRmxvYXQpKTsKKyAgICAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKGV4ZWMt
PnZtKCksIEpTVmFsdWUodmFsdWUuYXNGbG9hdCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlOjpVTG9uZzoKLSAgICAgICAgcmV0dXJu
IFNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIEpTVmFsdWUodmFsdWUuYXNVTG9uZykpOworICAgICAg
ICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwgSlNWYWx1ZSh2YWx1
ZS5hc1VMb25nKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2VD
YXBhYmlsaXR5UmFuZ2U6OlVuZGVmaW5lZDoKLSAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKGV4
ZWMtPnZtKCksIGpzVW5kZWZpbmVkKCkpOworICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUoZXhlYy0+dm0oKSwganNVbmRlZmluZWQoKSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBTY3JpcHRWYWx1ZShl
eGVjLT52bSgpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUoZXhlYy0+dm0oKSwganNVbmRlZmluZWQoKSk7CiB9CiAKLVNjcmlwdFZhbHVlIENhcGFi
aWxpdHlSYW5nZTo6bWluKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK0RlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlIENhcGFiaWxpdHlSYW5nZTo6bWluKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKICAg
ICByZXR1cm4gc2NyaXB0VmFsdWUoZXhlYywgbV9yYW5nZUluZm8ubWluKCksIG1fcmFuZ2VJbmZv
LnR5cGUoKSk7CiB9CiAKLVNjcmlwdFZhbHVlIENhcGFiaWxpdHlSYW5nZTo6bWF4KEV4ZWNTdGF0
ZSogZXhlYykgY29uc3QKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIENhcGFiaWxpdHlSYW5nZTo6
bWF4KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKICAgICByZXR1cm4gc2NyaXB0VmFsdWUoZXhl
YywgbV9yYW5nZUluZm8ubWF4KCksIG1fcmFuZ2VJbmZvLnR5cGUoKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaAppbmRl
eCAzNjg0MDY2Li45MDVhZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmgKQEAgLTMwLDggKzMwLDggQEAKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRp
ZXMuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJs
ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8aW50ZXJw
cmV0ZXIvQ2FsbEZyYW1lLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtNDMs
OCArNDMsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVmUHRyPENhcGFiaWxpdHlSYW5nZT4g
Y3JlYXRlKGNvbnN0IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlJik7CiAKLSAgICBT
Y3JpcHRWYWx1ZSBtaW4oSlNDOjpFeGVjU3RhdGUqKSBjb25zdDsKLSAgICBTY3JpcHRWYWx1ZSBt
YXgoSlNDOjpFeGVjU3RhdGUqKSBjb25zdDsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBt
aW4oSlNDOjpFeGVjU3RhdGUqKSBjb25zdDsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBt
YXgoSlNDOjpFeGVjU3RhdGUqKSBjb25zdDsKICAgICBib29sIHN1cHBvcnRlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmFuZ2VJbmZvLnN1cHBvcnRlZCgpOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJh
aW50LmgKaW5kZXggZmQyOTQ4MS4uMmE5M2ZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnQuaApAQCAtMzMs
OSArMzMsMTEgQEAKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KK25hbWVzcGFjZSBEZXByZWNh
dGVkIHsKIGNsYXNzIFNjcmlwdFZhbHVlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIE1lZGlhVHJhY2tDb25zdHJhaW50IDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFUcmFja0Nv
bnN0cmFpbnQ+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVw
bGFjZW1lbnQuY3BwCmluZGV4IDgyYjg2ZTkuLjBjMjkzNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2Vt
ZW50LmNwcApAQCAtNDEsNyArNDEsNiBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJS
ZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUg
IlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRl
ICJVc2VyQWdlbnRTY3JpcHRzLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBs
dWdpblJlcGxhY2VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tU
aW1lUGx1Z2luUmVwbGFjZW1lbnQuaAppbmRleCBkYWFlN2IxLi41YTE5MDdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2lu
UmVwbGFjZW1lbnQuaApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiUGx1Z2luUmVwbGFj
ZW1lbnQuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVl
LmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0T2JqZWN0Lmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNt
YWtlCmluZGV4IGE5NzFmYTAuLjYzODQ1OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Vz
ZUpTQy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKQEAgLTEyNCwxMiAr
MTI0LDEwIEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdzL2pzL1Nj
cmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCiAgICAgYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5jcHAKICAgICBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKLSAgICBiaW5kaW5n
cy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCi0gICAgYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0
LmNwcAorICAgIGJpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5jcHAKICAgICBiaW5kaW5n
cy9qcy9TY3JpcHRQcm9maWxlLmNwcAogICAgIGJpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmNw
cAogICAgIGJpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcAotICAgIGJpbmRpbmdzL2pzL1Njcmlw
dFZhbHVlLmNwcAogICAgIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKICAg
ICBiaW5kaW5ncy9qcy9XZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KaW5kZXggMzEzZGE3YS4uY2E3YmRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAg
LTE0MzAsNyArMTQzMCw2IEBAIF9fWk5LN1dlYkNvcmUxMVJlbmRlckxheWVyMjRuZWVkc0NvbXBv
c2l0ZWRTY3JvbGxpbmdFdgogX19aTks3V2ViQ29yZTExUmVuZGVyU3R5bGUxMWZvbnRNZXRyaWNz
RXYKIF9fWk5LN1dlYkNvcmUxMVJlbmRlclN0eWxlMjF2aXNpdGVkRGVwZW5kZW50Q29sb3JFaQog
X19aTks3V2ViQ29yZTExUmVuZGVyU3R5bGU0Zm9udEV2Ci1fX1pOSzdXZWJDb3JlMTFTY3JpcHRW
YWx1ZTlnZXRTdHJpbmdFUE4zSlNDOUV4ZWNTdGF0ZUVSTjNXVEY2U3RyaW5nRQogX19aTks3V2Vi
Q29yZTEyUmVuZGVyT2JqZWN0MTRlbmNsb3NpbmdMYXllckV2CiBfX1pOSzdXZWJDb3JlMTJSZW5k
ZXJPYmplY3QxNWxvY2FsVG9BYnNvbHV0ZUVSS05TXzEwRmxvYXRQb2ludEVqCiBfX1pOSzdXZWJD
b3JlMTJSZW5kZXJPYmplY3QxNnJlcGFpbnRSZWN0YW5nbGVFUktOU18xMExheW91dFJlY3RFYgpA
QCAtMTUwMiw3ICsxNTAxLDYgQEAgX19aTks3V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb24zMWdldENs
aXBwZWRWaXNpYmxlVGV4dFJlY3RhbmdsZXNFUk4zV1RGNlZlY3RvcklOU18KIF9fWk5LN1dlYkNv
cmUxNEZyYW1lU2VsZWN0aW9uMzZyb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnRF
dgogX19aTks3V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb242Ym91bmRzRWIKIF9fWk5LN1dlYkNvcmUx
NEluc2VydGlvblBvaW50OGlzQWN0aXZlRXYKLV9fWk5LN1dlYkNvcmUxNEluc3BlY3RvclZhbHVl
MTJ0b0pTT05TdHJpbmdFdgogX19aTks3V2ViQ29yZTE0UmVuZGVyTGlzdEl0ZW0xMG1hcmtlclRl
eHRFdgogX19aTks3V2ViQ29yZTE0UmVzb3VyY2VCdWZmZXI0ZGF0YUV2CiBfX1pOSzdXZWJDb3Jl
MTRSZXNvdXJjZUJ1ZmZlcjRzaXplRXYKQEAgLTI2MjUsNyArMjYyMyw3IEBAIF9fWk43V2ViQ29y
ZTE2SFRNTElucHV0RWxlbWVudDI1c2VsZWN0Q29sb3JJbkNvbG9yQ2hvb3NlckVSS05TXzVDb2xv
ckUKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogX19aTjdXZWJDb3JlMTVJbnNwZWN0b3JDbGllbnQz
MWRvRGlzcGF0Y2hNZXNzYWdlT25Gcm9udGVuZFBhZ2VFUE5TXzRQYWdlRVJLTjNXVEY2U3RyaW5n
RQogX19aTjdXZWJDb3JlMTdJbnNwZWN0b3JDb3VudGVyczEyY291bnRlclZhbHVlRU5TMF8xMUNv
dW50ZXJUeXBlRQotX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMTVjb25uZWN0RnJv
bnRlbmRFUE5TXzI0SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsRQorX19aTjdXZWJDb3JlMTlJbnNw
ZWN0b3JDb250cm9sbGVyMTVjb25uZWN0RnJvbnRlbmRFUE45SW5zcGVjdG9yMjRJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWxFCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxOGRpc2Nv
bm5lY3RGcm9udGVuZEV2CiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxOHNldFBy
b2ZpbGVyRW5hYmxlZEViCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIyNWV2YWx1
YXRlRm9yVGVzdEluRnJvbnRlbmRFbFJLTjNXVEY2U3RyaW5nRQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggYTNmODA5Ny4uYThjZjdhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBA
IC03NDIsNyArNzQyLDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJp
dmVkU291cmNlc1xIVE1MTmFtZXMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5jcHAiIC8+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQ
bGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVj
dG9yRnJvbnRlbmQuY3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEluc3BlY3RvclR5cGVCdWlsZGVyLmNwcCIgLz4KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JXZWJUeXBlQnVpbGRl
cnMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcSlNB
YnN0cmFjdFdvcmtlci5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgpAQCAtMTcyNzYsMjEgKzE3Mjc2LDcgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258
V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258
eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIj4K
LSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICA8
L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlw
dE9iamVjdC5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xT
Y3JpcHRHbG9iYWxPYmplY3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmlu
ZGluZ3NcanNcU2NyaXB0UHJvZmlsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxiaW5kaW5nc1xqc1xTY3JpcHRQcm9maWxlci5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2lu
MzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE3MzIwLDcgKzE3MzA2LDYgQEAKICAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAg
PC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3Jp
cHRWYWx1ZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xT
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KQEAgLTE3NjMzLDE0ICsxNzYxOCw2IEBACiAgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9k
dWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9k
dWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgot
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckFnZW50UmVnaXN0
cnkuY3BwIj4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGlu
c3BlY3RvclxJbnNwZWN0b3JBbGxJbk9uZS5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzIn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtMTc2NTcsMTQgKzE3NjM0LDYgQEAKICAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBp
bGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIuY3BwIj4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9F
eGNsdWRlZEZyb21CdWlsZD4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAiPgogICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE3OTA1LDE0ICsxNzg3NCw2
IEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9y
XEluc3BlY3RvclZhbHVlcy5jcHAiPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvcldvcmtlckFnZW50LmNwcCI+CiAgICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtMTgxMDUsNyArMTgw
NjYsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckZyb250ZW5kLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yT3Zl
cmxheVBhZ2UuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVk
U291cmNlc1xJbnNwZWN0b3JUeXBlQnVpbGRlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcSlNBYnN0cmFjdFdv
cmtlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEpTQXR0ci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEpTQmFyUHJvcC5oIiAvPgpAQCAtMTg1NzUsMTEgKzE4NTM2LDIwIEBACiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcV2ViQ29yZVxEZXJpdmVkU291cmNlc1xKU1dlYkdMVmVydGV4QXJyYXlP
YmplY3RPRVMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFjY2Vzc2liaWxpdHlc
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGNzc1xDU1NJbWFnZVNldFZhbHVlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxG
b3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuaCIgLz4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzXFNjcmlwdE9i
amVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNc
YmluZGluZ3NcU2NyaXB0VmFsdWUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZv
cndhcmRpbmdIZWFkZXJzXGhlYXBcQWxsb2NhdGlvblNwYWNlLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xoZWFwXEhlYXAuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGhlYXBcU2xvdFZpc2l0b3IuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGhlYXBcU3Ry
b25nSW5saW5lcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hl
YWRlcnNcaGVhcFxXZWFrLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJk
aW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yQWdlbnRCYXNlLmgiIC8+CisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yQWdl
bnRSZWdpc3RyeS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hl
YWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgiIC8+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJk
aW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIgLz4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JW
YWx1ZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJz
XG1hc21cWDg2QXNzZW1ibGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3
YXJkaW5nSGVhZGVyc1xwYXJzZXJcU291cmNlQ29kZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNccGFyc2VyXFNvdXJjZVByb3ZpZGVyLmgiIC8+CkBA
IC0yMDYyOCwxNSArMjA1OTgsMTMgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRp
bmdzXGpzXFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdENvbnRyb2xsZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdERlYnVnU2VydmVyLmgiIC8+Ci0gICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRGdW5jdGlvbkNhbGwuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdEhlYXBTbmFwc2hv
dC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0T2Jq
ZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRH
bG9iYWxPYmplY3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpz
XFNjcmlwdFByb2ZpbGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdz
XGpzXFNjcmlwdFByb2ZpbGVOb2RlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxi
aW5kaW5nc1xqc1xTY3JpcHRQcm9maWxlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cYmluZGluZ3NcanNcU2NyaXB0U291cmNlQ29kZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0U3RhdGUuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdFZhbHVlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRXcmFwcGFibGUuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU291cmNlSUQuaCIgLz4KQEAg
LTIwOTQ3LDggKzIwOTE1LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3Rv
clxJbmplY3RlZFNjcmlwdE1vZHVsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aW5zcGVjdG9yXEluc3BlY3RvckFnZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxpbnNwZWN0b3JcSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgiIC8+Ci0gICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
aCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JCYXNl
QWdlbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0
b3JDYW52YXNBZ2VudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9y
XEluc3BlY3RvckNhbnZhc0luc3RydW1lbnRhdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckNsaWVudC5oIiAvPgpAQCAtMjA5ODQsNyArMjA5
NTAsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvclN0
eWxlU2hlZXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNw
ZWN0b3JTdHlsZVRleHRFZGl0b3IuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGlu
c3BlY3RvclxJbnNwZWN0b3JUaW1lbGluZUFnZW50LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yVmFsdWVzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yV29ya2VyQWdlbnQuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JXb3JrZXJSZXNv
dXJjZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3RydW1l
bnRpbmdBZ2VudHMuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCBmMGIwMjY2Li5lZGRjZGQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZp
bHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
ai5maWx0ZXJzCkBAIC0yNTMsNiArMjUzLDkgQEAKICAgICA8RmlsdGVyIEluY2x1ZGU9IkZvcndh
cmRpbmdIZWFkZXJzIj4KICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5NTIxNmE3MC1hM2IyLTQ1
M2MtYTY2Zi1hODFjYzFhYmVmZWV9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgor
ICAgIDxGaWx0ZXIgSW5jbHVkZT0iRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3MiPgorICAgICAg
PFVuaXF1ZUlkZW50aWZpZXI+ezIxMzQzMTI0LTEyMzQtNDU0Mi1hOGFhLWViYWM4NzgxMjMxMn08
L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CiAgICAgPEZpbHRlciBJbmNsdWRlPSJG
b3J3YXJkaW5nSGVhZGVyc1x5YXJyIj4KICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnszYjliMTgx
OS0xYjMxLTQ3NzEtYjEyYS0zMmMyMTBmODQ3NmR9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwv
RmlsdGVyPgpAQCAtNDU2MywxMCArNDU2Niw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxiaW5kaW5nc1xqc1xTY3JpcHREZWJ1Z1NlcnZlci5jcHAiPgogICAgICAgPEZpbHRlcj5iaW5k
aW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCI+Ci0gICAgICA8RmlsdGVy
PmJpbmRpbmdzXGpzPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRPYmplY3QuY3BwIj4KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdEdsb2JhbE9iamVjdC5jcHAiPgogICAgICAg
PEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0UHJvZmlsZS5jcHAiPgpAQCAtNDU3
OCw5ICs0NTc4LDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNj
cmlwdFN0YXRlLmNwcCI+CiAgICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAgICAg
PC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3Jp
cHRWYWx1ZS5jcHAiPgotICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgotICAgIDwv
Q2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcCI+CiAgICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+
CiAgICAgPC9DbENvbXBpbGU+CkBAIC00ODI0LDE4ICs0ODIxLDEyIEBACiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQWdlbnQuY3BwIj4KICAgICAgIDxGaWx0
ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAiPgotICAgICAg
PEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JBbGxJbk9uZS5jcHAiPgogICAgICAg
PEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQu
Y3BwIj4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+
Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIuY3BwIj4KLSAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+Ci0gICAgPC9D
bENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9y
Q2FudmFzQWdlbnQuY3BwIj4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAg
PC9DbENvbXBpbGU+CkBAIC00OTI2LDkgKzQ5MTcsNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIj4KICAgICAgIDxGaWx0
ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yVmFsdWVzLmNwcCI+Ci0gICAgICA8RmlsdGVy
Pmluc3BlY3RvcjwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvcldvcmtlckFnZW50LmNwcCI+CiAgICAgICA8Rmls
dGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNTI4Nyw3ICs1Mjc1
LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJ
bnNwZWN0b3JGcm9udGVuZC5jcHAiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmls
dGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEluc3BlY3RvclR5cGVCdWlsZGVyLmNwcCI+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yV2ViVHlwZUJ1aWxk
ZXJzLmNwcCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9D
bENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcV2ViQ29yZVxEZXJpdmVkU291cmNlc1xKU0Fi
c3RyYWN0V29ya2VyLmNwcCI+CkBAIC0xMTUxMSwxMyArMTE0OTksMTAgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdERlYnVnU2VydmVyLmgiPgogICAgICAg
PEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0RnVuY3Rpb25DYWxsLmgiPgotICAg
ICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0SGVhcFNuYXBzaG90LmgiPgog
ICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0T2JqZWN0LmgiPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0R2xvYmFsT2JqZWN0Lmgi
PgogICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0UHJvZmlsZS5oIj4K
QEAgLTExNTM1LDkgKzExNTIwLDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRp
bmdzXGpzXFNjcmlwdFN0YXRlLmgiPgogICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVy
PgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3Nc
anNcU2NyaXB0VmFsdWUuaCI+Ci0gICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+Ci0g
ICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xT
Y3JpcHRXcmFwcGFibGUuaCI+CiAgICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAg
ICAgPC9DbEluY2x1ZGU+CkBAIC0xMjE5NSw2ICsxMjE3NywxNSBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cc3ZnXHByb3BlcnRpZXNcU1ZHVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9m
Zi5oIj4KICAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nXHN2Z1xwcm9wZXJ0aWVzPC9GaWx0ZXI+CiAg
ICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVh
ZGVyc1xiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuaCI+CisgICAgICA8RmlsdGVyPkZvcndh
cmRpbmdIZWFkZXJzXGJpbmRpbmdzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5nc1xTY3JpcHRPYmpl
Y3QuaCI+CisgICAgICA8RmlsdGVyPkZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzPC9GaWx0ZXI+
CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5n
SGVhZGVyc1xiaW5kaW5nc1xTY3JpcHRWYWx1ZS5oIj4KKyAgICAgIDxGaWx0ZXI+Rm9yd2FyZGlu
Z0hlYWRlcnNcYmluZGluZ3M8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWVcQXJnTGlzdC5oIj4KICAg
ICAgIDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRlcnNccnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJ
bmNsdWRlPgpAQCAtMTIyNDAsOSArMTIyMzEsMjQgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGhlYXBcU3Ryb25nLmgiPgogICAgICAgPEZpbHRlcj5Gb3J3
YXJkaW5nSGVhZGVyc1xoZWFwPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yQWdl
bnRCYXNlLmgiPgorICAgICAgPEZpbHRlcj5Gb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3I8L0Zp
bHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndh
cmRpbmdIZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgiPgorICAgICAg
PEZpbHRlcj5Gb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5j
bHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3Bl
Y3RvclxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIj4KKyAgICAgIDxGaWx0ZXI+Rm9yd2Fy
ZGluZ0hlYWRlcnNcaW5zcGVjdG9yPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsLmgiPgogICAgICAgPEZpbHRlcj5Gb3J3YXJkaW5nSGVhZGVyc1xpbnNw
ZWN0b3I8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JUeXBlQnVpbGRlci5oIj4K
KyAgICAgIDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yPC9GaWx0ZXI+CisgICAg
PC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVy
c1xpbnNwZWN0b3JcSW5zcGVjdG9yVmFsdWVzLmgiPgorICAgICAgPEZpbHRlcj5Gb3J3YXJkaW5n
SGVhZGVyc1xpbnNwZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGhpc3RvcnlcQmFja0ZvcndhcmRDbGllbnQuaCI+CiAgICAgICA8Rmls
dGVyPmhpc3Rvcnk8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTEyMzk2LDEyICsxMjQw
Miw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50LmgiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4K
ICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIj4KLSAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9G
aWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNw
ZWN0b3JcSW5zcGVjdG9yQmFzZUFnZW50LmgiPgotICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0Zp
bHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3Bl
Y3RvclxJbnNwZWN0b3JDYW52YXNBZ2VudC5oIj4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9G
aWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0xMjUwNyw3ICsxMjUwNyw3IEBACiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIj4K
ICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yVmFsdWVzLmgiPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvcldlYkFnZW50QmFzZS5o
Ij4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yV29ya2VyQWdlbnQu
aCI+CkBAIC0xMzA3Myw3ICsxMzA3Myw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yT3ZlcmxheVBhZ2UuaCI+CiAgICAgICA8Rmls
dGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hp
dGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yVHlwZUJ1aWxk
ZXIuaCI+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
SW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmgiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNl
czwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXFdlYkNvcmVc
RGVyaXZlZFNvdXJjZXNcSlNBYnN0cmFjdFdvcmtlci5oIj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyNjkxNGQ1Li41MWUxZTM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMjIxLDggKzEyMjEsNiBAQAogCQk0MDlFQkRDNTE2QjdGM0NBMDBDQkEzRkMgLyog
SlNDU1NGb250RmFjZUxvYWRFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MDlFQkRDNDE2QjdGM0NBMDBDQkEzRkMgLyogSlNDU1NGb250RmFj
ZUxvYWRFdmVudC5jcHAgKi87IH07CiAJCTQwRUNBRTdFMTZCOEI2NzIwMEMzNjEwMyAvKiBKU0RP
TUVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MEVDQUU3RDE2QjhCNjcyMDBDMzYxMDMgLyogSlNET01FcnJvci5oICovOyB9OwogCQk0MEVDQUU4
MTE2QjhCNjhBMDBDMzYxMDMgLyogSlNET01FcnJvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MEVDQUU4MDE2QjhCNjhBMDBDMzYxMDMgLyogSlNE
T01FcnJvci5jcHAgKi87IH07Ci0JCTQxMDAyQ0NEMEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRG
dW5jdGlvbkNhbGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxMDAyQ0NCMEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCAqLzsg
fTsKLQkJNDEwMDJDQ0UwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTAwMkNDQzBG
NjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCAqLzsgfTsKIAkJNDEwQjdF
NzIxMDQ1RkFCMDAwRDgyMjRGIC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMEI3RTcxMTA0NUZBQjAwMEQ4
MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgKi87IH07CiAJCTQxMjMwODFCMTM4QzQy
OTcwMEJDQ0ZDQSAvKiBXZWJDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjE5QjFBMDgyNDVFNUEwMDFFOUFCQyAvKiBXZWJD
b3JlLmZyYW1ld29yayAqLzsgfTsKIAkJNDEyMzA5MTMxMzhDNDJGRjAwQkNDRkNBIC8qIEphdmFT
Y3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY4MjE2Mjk5MDI5RjRGQjUwMTAwMDEzMSAvKiBKYXZhU2NyaXB0Q29yZS5m
cmFtZXdvcmsgKi87IH07CkBAIC0xMjkxLDggKzEyODksOCBAQAogCQk0MUYwNjE4RjBGNUYwNjk4
MDBBMDdFQUMgLyogQ29uc29sZU1lc3NhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGMDYxOEQwRjVGMDY5ODAwQTA3RUFDIC8qIENvbnNvbGVN
ZXNzYWdlLmNwcCAqLzsgfTsKIAkJNDFGMDYyMTQwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3Rv
ckRhdGFiYXNlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxRjA2MjEyMEY1RjE5MjYwMEEwN0VBQyAvKiBJbnNwZWN0b3JEYXRhYmFzZVJl
c291cmNlLmggKi87IH07CiAJCTQxRjA2MjE1MEY1RjE5MjYwMEEwN0VBQyAvKiBJbnNwZWN0b3JE
YXRhYmFzZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxRjA2MjEzMEY1RjE5MjYwMEEwN0VBQyAvKiBJbnNwZWN0b3JEYXRhYmFzZVJl
c291cmNlLmNwcCAqLzsgfTsKLQkJNDFGMDY2RTQwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdE9i
amVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFG
MDY2RTIwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQxRjA2NkU1MEY2NEJDRjYwMEEwN0VB
QyAvKiBTY3JpcHRPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFGMDY2RTMwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdE9iamVjdC5jcHAg
Ki87IH07CisJCTQxRjA2NkU0MEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRHbG9iYWxPYmplY3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjA2NkUy
MEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRHbG9iYWxPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MUYwNjZFNTBGNjRCQ0Y2MDBBMDdF
QUMgLyogU2NyaXB0R2xvYmFsT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjA2NkUzMEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRHbG9i
YWxPYmplY3QuY3BwICovOyB9OwogCQk0MUYxRDIxRjBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0
Q2FjaGVkRnJhbWVEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MUYxRDIxRDBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRh
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFG
MUQyMjAwRUYzNUMyQTAwREE4NzUzIC8qIFNjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYxRDIxRTBFRjM1QzJB
MDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcCAqLzsgfTsKIAkJNDFGNTg0Qzcx
MDQ2NTJDQjAwOUNBQTY0IC8qIEpTTWVzc2FnZVBvcnRDdXN0b20uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjU4NEM2MTA0NjUyQ0IwMDlDQUE2NCAv
KiBKU01lc3NhZ2VQb3J0Q3VzdG9tLmggKi87IH07CkBAIC0xNjA1LDggKzE2MDMsNiBAQAogCQk0
RjE1MzRFMDExQjUzMzAyMDAyMUZEODYgLyogRWRpdGluZ0JlaGF2aW9yVHlwZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMTUzNERGMTFCNTMzMDIw
MDIxRkQ4NiAvKiBFZGl0aW5nQmVoYXZpb3JUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRGMkQyMDU0MTJFQUU3QjMwMDVDMjg3NCAvKiBJ
bnNwZWN0b3JBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNEYyRDIwNTIxMkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3RvckFnZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEYyRDIwNTUxMkVB
RTdCMzAwNUMyODc0IC8qIEluc3BlY3RvckFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMkQyMDUzMTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNw
ZWN0b3JBZ2VudC5jcHAgKi87IH07Ci0JCTRGMzI4OUI1MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNw
ZWN0b3JWYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNEYzMjg5QjMxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5jcHAgKi87
IH07Ci0JCTRGMzI4OUI2MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMzI4OUI0MTFBNDJB
QUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0RjRGNUZGQjExQ0JEMkUxMDBBMTg2QkYgLyogSW5z
cGVjdG9yRnJvbnRlbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNEY0RjVGRkExMUNCRDJEMjAwQTE4NkJGIC8qIEluc3BlY3RvckZyb250ZW5kLmNw
cCAqLzsgfTsKIAkJNEY2RkRENjQxMzQxREVERDAwMUY4RUUzIC8qIEluc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjZG
REQ2MjEzNDFERUREMDAxRjhFRTMgLyogSW5zcGVjdG9yUGFnZUFnZW50LmNwcCAqLzsgfTsKIAkJ
NEY2RkRENjUxMzQxREVERDAwMUY4RUUzIC8qIEluc3BlY3RvclBhZ2VBZ2VudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEY2RkRENjMxMzQxREVERDAw
MUY4RUUzIC8qIEluc3BlY3RvclBhZ2VBZ2VudC5oICovOyB9OwpAQCAtMTg5Myw5ICsxODg5LDkg
QEAKIAkJNTNFRjc2NkMxNjUzMTk5NDAwNENCRTQ5IC8qIFNldHRpbmdzTWFjcm9zLmggaW4gQ29w
eSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
M0VGNzY2QTE2NTMwQTYxMDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCAqLzsgfTsKIAkJNTUw
QTBCQzkwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2
IC8qIFF1YWxpZmllZE5hbWUuY3BwICovOyB9OwogCQk1NTBBMEJDQTA4NUY2MDM5MDA3MzUzRDYg
LyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1NzNEMTM0NzE0
Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yVHlwZUJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczRDEzNDUxNENFMzlGRjAwNTdBQkNB
IC8qIEluc3BlY3RvclR5cGVCdWlsZGVyLmNwcCAqLzsgfTsKKwkJNTczRDEzNDcxNENFMzlGRjAw
NTdBQkNBIC8qIEluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzNEMTM0NTE0Q0UzOUZGMDA1N0FCQ0EgLyog
SW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmNwcCAqLzsgfTsKIAkJNTc4REEyMEUxNTIwRUI4QzAw
NjE0MUMxIC8qIEluc3BlY3RvckZyb250ZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0RjRGNUZGQzExQ0JEMzAxMDBBMTg2QkYgLyogSW5zcGVjdG9y
RnJvbnRlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwotCQk1NzhEQTIwRjE1MjBFQkEzMDA2MTQxQzEgLyogSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3M0QxMzQ2MTRD
RTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU3OERBMjBGMTUyMEVCQTMwMDYxNDFD
MSAvKiBJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3M0QxMzQ2MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0
b3JXZWJUeXBlQnVpbGRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1N0I3OTFBMzE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudERpc3RyaWJ1
dG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3
Qjc5MTlGMTRDNkE2MjkwMEYyMDJEMSAvKiBDb250ZW50RGlzdHJpYnV0b3IuY3BwICovOyB9Owog
CQk1N0I3OTFBNDE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudERpc3RyaWJ1dG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I3OTFBMDE0QzZBNjI5
MDBGMjAyRDEgLyogQ29udGVudERpc3RyaWJ1dG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTdDRjQ5NzQxNEVFMzZENzAwRUNGRjE0IC8qIElu
c2VydGlvblBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU3Q0Y0OTcyMTRFRTM2RDcwMEVDRkYxNCAvKiBJbnNlcnRpb25Qb2ludC5jcHAgKi87
IH07CkBAIC0yMTk3LDcgKzIxOTMsNiBAQAogCQk3QTc0RUNCQjEwMTgzOUE2MDBCRjkzOUUgLyog
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QTc0RUNCOTEwMTgzOUE2MDBCRjkzOUUgLyogSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50LmggKi87IH07CiAJCTdBNzRFQ0JEMTAxODM5REEwMEJGOTM5RSAvKiBKU0lu
c3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QTc0RUNCQzEwMTgzOURBMDBCRjkzOUUgLyogSlNJbnNwZWN0
b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwICovOyB9OwogCQk3QUEzNjVFRTEyRTcyNjU0MDBEQ0Ey
NDIgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQTM2NUVEMTJFNzI2NTQwMERDQTI0MiAvKiBJbnNwZWN0
b3JSdW50aW1lQWdlbnQuY3BwICovOyB9OwotCQk3QUE1MUI2RTE0ODNCNjE2MDBBRDI3NTIgLyog
SW5zcGVjdG9yQmFzZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QUE1MUI2QzE0ODNCNjE2MDBBRDI3NTIgLyogSW5zcGVjdG9yQmFzZUFnZW50
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0FB
NTFERDUxNDg1MDZBOTAwQUQyNzUyIC8qIEluc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQTUxREQzMTQ4NTA2QTkw
MEFEMjc1MiAvKiBJbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgKi87IH07CiAJCTdBQTUxREQ2MTQ4
NTA2QTkwMEFEMjc1MiAvKiBJbnNwZWN0b3JNZW1vcnlBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FBNTFERDQxNDg1MDZBOTAwQUQyNzUyIC8q
IEluc3BlY3Rvck1lbW9yeUFnZW50LmggKi87IH07CiAJCTdBQUJBMjU5MTRCQzYxMzMwMEFBOUEx
MSAvKiBET01FZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0FBQkEyNTcxNEJDNjEzMzAwQUE5QTExIC8qIERPTUVkaXRvci5jcHAgKi87IH07
CkBAIC0zMDE3LDggKzMwMTIsNiBAQAogCQk5MzQ0MkM5RTBEMkIzMzVDMDAzMzhGRjkgLyogSFRN
TFRhYmxlUm93c0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzNDQyQzlEMEQyQjMzNUMwMDMzOEZGOSAvKiBIVE1MVGFibGVSb3dzQ29s
bGVjdGlvbi5oICovOyB9OwogCQk5MzQ0MkNBMDBEMkIzMzYwMDAzMzhGRjkgLyogSFRNTFRhYmxl
Um93c0NvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTM0NDJDOUYwRDJCMzM2MDAwMzM4RkY5IC8qIEhUTUxUYWJsZVJvd3NDb2xsZWN0
aW9uLmNwcCAqLzsgfTsKIAkJOTM0OTA3RTQxMjVCQkJDODAwN0YyM0EwIC8qIEdyYXBoaWNzQ29u
dGV4dENHLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MzQ5MDdFMzEyNUJCQkM4MDA3RjIzQTAgLyogR3JhcGhpY3NDb250ZXh0Q0cuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk5MzRDQzBFMTBFRDM5RDZG
MDBBNjU4RjIgLyogU2NyaXB0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTM0Q0MwREYwRUQzOUQ2RjAwQTY1OEYyIC8qIFNjcmlwdFZhbHVl
LmNwcCAqLzsgfTsKLQkJOTM0Q0MwRTIwRUQzOUQ2RjAwQTY1OEYyIC8qIFNjcmlwdFZhbHVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzRDQzBFMDBF
RDM5RDZGMDBBNjU4RjIgLyogU2NyaXB0VmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzRDQzEwQTBFREIyMjM5MDBBNjU4RjIgLyogU2Ny
aXB0U291cmNlQ29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTM0Q0MxMDkwRURCMjIzOTAwQTY1OEYyIC8qIFNjcmlwdFNvdXJjZUNvZGUuaCAqLzsg
fTsKIAkJOTM0RDlCQTUwQjhDMTE2QjAwN0I0MkE5IC8qIFdlYkNvcmVOU1N0cmluZ0V4dHJhcy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNEQ5QkE0
MEI4QzExNkIwMDdCNDJBOSAvKiBXZWJDb3JlTlNTdHJpbmdFeHRyYXMubW0gKi87IH07CiAJCTkz
NEQ5QkE3MEI4QzExNzUwMDdCNDJBOSAvKiBXZWJDb3JlTlNTdHJpbmdFeHRyYXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNEQ5QkE2MEI4QzExNzUw
MDdCNDJBOSAvKiBXZWJDb3JlTlNTdHJpbmdFeHRyYXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzUyMCwxNSArMzUxMywxMiBAQAogCQlBNTEz
QjNEODExNEIxNjZBMDAxQzQyOUIgLyogS2V5RXZlbnRDb2NvYS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1Qzk3NEQwMTE0ODVGRjEwMDY2RjJBQiAv
KiBLZXlFdmVudENvY29hLm1tICovOyB9OwogCQlBNTRBODJFQzE1MjI4RDJGMDBDNzJCQTYgLyog
RE9NTm9kZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1NEE4MkVBMTUyMjhDQTMwMEM3MkJBNiAvKiBET01Ob2RlUHJpdmF0ZS5oICovOyB9
OwogCQlBNTRBODJGMTE1MjI4REY2MDBDNzJCQTYgLyogRE9NTm9kZVByaXZhdGUuaCBpbiBDb3B5
IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
NEE4MkVBMTUyMjhDQTMwMEM3MkJBNiAvKiBET01Ob2RlUHJpdmF0ZS5oICovOyB9OwotCQlBNTU2
QzI4ODE4MzIwNkE4MDA4Q0I3MjAgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTU2QzI4NjE4MzIwNkE4
MDA4Q0I3MjAgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAgKi87IH07Ci0JCUE1NTZDMjg5
MTgzMjA2QTgwMDhDQjcyMCAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTU2QzI4NzE4MzIwNkE4MDA4Q0I3
MjAgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1NzMyQjBBMTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRl
Q29tcG9uZW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTczMkIwODEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuY3BwICovOyB9
OwogCQlBNTczMkIwQjEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NzMyQjA5MTM2QTE2MUQw
MDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5oICovOyB9OworCQlBNTkzQ0Y4QjE4NDA1MzUyMDBC
RkNFMjcgLyogSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTkzQ0Y4QTE4NDA1MzUyMDBCRkNFMjcgLyogSW5zcGVj
dG9yV2ViQWdlbnRCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQTVBMkFGMEIxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QTJBRjA5
MTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5jcHAgKi87IH07CiAJCUE1QTJBRjBD
MTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBMkFGMEExODI5NzM0MzAwREUxNzI5IC8qIFBh
Z2VEZWJ1Z2dhYmxlLmggKi87IH07CiAJCUE1QUJCNzg3MTNCOTA0QkMwMEYxOTdFMyAvKiBMaW5l
QnJlYWtJdGVyYXRvclBvb2xJQ1UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1QUJCNzg2MTNCOTA0QkMwMEYxOTdFMyAvKiBMaW5lQnJlYWtJdGVyYXRv
clBvb2xJQ1UuaCAqLzsgfTsKLQkJQTVBQzRBRUYxODMzNjk3NTAwNzExNEUwIC8qIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1QUM0QUVEMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlci5jcHAgKi87IH07Ci0JCUE1QUM0QUYwMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTVBQzRBRUUxODMzNjk3NTAwNzExNEUwIC8qIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQTVBRkIzNEYxMTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUFGQjM0RDExNTE1MUE3
MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmNwcCAqLzsgfTsKIAkJQTVBRkIzNTAxMTUxNTFBNzAwQjA0
NUNCIC8qIFN0ZXBSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTVBRkIzNEUxMTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1QzU2NkFCMTI3QTNB
QUQwMEU4QTNGRiAvKiBEaXNrSW1hZ2VDYWNoZUNsaWVudElPUy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVDNTY2QUExMjdBM0FBRDAwRThBM0ZGIC8q
IERpc2tJbWFnZUNhY2hlQ2xpZW50SU9TLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc5MDgsOCArNzg5OCw2IEBACiAJCTQwOUVCREM0MTZCN0Yz
Q0EwMENCQTNGQyAvKiBKU0NTU0ZvbnRGYWNlTG9hZEV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ1NTRm9udEZhY2VMb2FkRXZlbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MEVDQUU3RDE2QjhCNjcyMDBDMzYxMDMgLyogSlNET01F
cnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUVycm9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQwRUNBRTgwMTZCOEI2OEEwMEMzNjEwMyAvKiBK
U0RPTUVycm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9N
RXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTAwMkNDQjBGNjZFREVG
MDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNjcmlwdEZ1bmN0aW9uQ2FsbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk0MTAwMkNDQzBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEZ1bmN0aW9uQ2FsbC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMEI3RTcxMTA0NUZBQjAwMEQ4MjI0
RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxMjdENTM2MEY4QUFCMUQwMEU0MjRGNSAvKiBTY3JpcHRTdGF0ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRTdGF0ZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzhEMzMzMTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVu
dENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRDb250ZXh0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03OTg0LDggKzc5NzIsOCBAQAogCQk0
MUYwNjE4RDBGNUYwNjk4MDBBMDdFQUMgLyogQ29uc29sZU1lc3NhZ2UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29uc29sZU1lc3NhZ2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MUYwNjIxMjBGNUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9y
RGF0YWJhc2VSZXNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNw
ZWN0b3JEYXRhYmFzZVJlc291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
RjA2MjEzMEY1RjE5MjYwMEEwN0VBQyAvKiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckRhdGFiYXNlUmVz
b3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MUYwNjZFMjBGNjRCQ0Y2
MDBBMDdFQUMgLyogU2NyaXB0T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNjcmlwdE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MUYwNjZF
MzBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0T2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxRjA2NkUyMEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRHbG9iYWxPYmplY3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0R2xvYmFsT2JqZWN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRjA2NkUzMEY2NEJDRjYwMEEwN0VBQyAv
KiBTY3JpcHRHbG9iYWxPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2NyaXB0R2xvYmFsT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDFGMUQyMUQwRUYzNUMyQTAwREE4NzUzIC8qIFNjcmlwdENhY2hlZEZyYW1lRGF0YS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRDYWNoZWRGcmFtZURhdGEuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGMUQyMUUwRUYzNUMyQTAwREE4NzUzIC8q
IFNjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MUY1ODRDNjEwNDY1MkNCMDA5Q0FBNjQgLyogSlNNZXNzYWdlUG9ydEN1c3RvbS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lc3NhZ2VQb3J0Q3VzdG9tLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MzQ0LDggKzgzMzIsNiBAQAogCQk0RjE1
MzRERjExQjUzMzAyMDAyMUZEODYgLyogRWRpdGluZ0JlaGF2aW9yVHlwZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdGluZ0JlaGF2aW9yVHlwZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEYyRDIwNTIxMkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3Rv
ckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckFnZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGMkQyMDUzMTJFQUU3QjMwMDVDMjg3
NCAvKiBJbnNwZWN0b3JBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbnNwZWN0b3JBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTRG
MzI4OUIzMTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yVmFsdWVzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNEYzMjg5QjQxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3Rv
clZhbHVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JWYWx1
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEY0RjVGRkExMUNCRDJEMjAwQTE4
NkJGIC8qIEluc3BlY3RvckZyb250ZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEluc3BlY3RvckZyb250ZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNEY0RjVGRkMxMUNCRDMwMTAwQTE4NkJGIC8qIEluc3BlY3RvckZyb250ZW5kLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckZyb250ZW5kLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGNkZERDYyMTM0MURFREQwMDFGOEVFMyAvKiBJbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW5zcGVjdG9yUGFnZUFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg2
NTksOCArODY0NSw4IEBACiAJCTUzRUY3NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01h
Y3Jvcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXR0aW5nc01hY3Jvcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYg
LyogUXVhbGlmaWVkTmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBRdWFsaWZpZWROYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTU1MEEwQkM4MDg1RjYwMzkw
MDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1YWxpZmllZE5hbWUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07Ci0JCTU3M0QxMzQ1MTRDRTM5RkYw
MDU3QUJDQSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JUeXBlQnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTU3M0QxMzQ2MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JUeXBl
QnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JUeXBl
QnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzNEMTM0NTE0Q0UzOUZG
MDA1N0FCQ0EgLyogSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3M0QxMzQ2MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNw
ZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTU3Qjc5MTlGMTRDNkE2MjkwMEYyMDJEMSAvKiBDb250ZW50RGlzdHJpYnV0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGVudERpc3RyaWJ1dG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdCNzkxQTAxNEM2QTYyOTAwRjIwMkQxIC8q
IENvbnRlbnREaXN0cmlidXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
b250ZW50RGlzdHJpYnV0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdDRjQ5
NzIxNEVFMzZENzAwRUNGRjE0IC8qIEluc2VydGlvblBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc2VydGlvblBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTg5OTYsNyArODk4Miw2IEBACiAJCTdBNzRFQ0I5MTAxODM5QTYwMEJG
OTM5RSAvKiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdBNzRFQ0JDMTAxODM5REEwMEJGOTM5RSAvKiBKU0luc3BlY3RvckZyb250
ZW5kSG9zdEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdBQTM2NUVEMTJFNzI2NTQwMERDQTI0MiAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yUnVudGlt
ZUFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0FBNTFCNkMxNDgzQjYx
NjAwQUQyNzUyIC8qIEluc3BlY3RvckJhc2VBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbnNwZWN0b3JCYXNlQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0FBNTFERDMxNDg1MDZBOTAwQUQyNzUyIC8qIEluc3BlY3Rvck1lbW9yeUFnZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rvck1lbW9yeUFn
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FBNTFERDQxNDg1MDZBOTAw
QUQyNzUyIC8qIEluc3BlY3Rvck1lbW9yeUFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEluc3BlY3Rvck1lbW9yeUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdBQUJBMjU3MTRCQzYxMzMwMEFBOUExMSAvKiBET01FZGl0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NRWRpdG9yLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTk4MDMsOCArOTc4OCw2IEBACiAJCTkzNDQyQzlEMEQyQjMzNUMw
MDMzOEZGOSAvKiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5MzQ0MkM5RjBEMkIzMzYwMDAzMzhGRjkgLyogSFRNTFRhYmxlUm93c0Nv
bGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTFRh
YmxlUm93c0NvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzQ5
MDdFMzEyNUJCQkM4MDA3RjIzQTAgLyogR3JhcGhpY3NDb250ZXh0Q0cuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0Q0cuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJOTM0Q0MwREYwRUQzOUQ2RjAwQTY1OEYyIC8qIFNjcmlwdFZhbHVlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdFZhbHVlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTM0Q0MwRTAwRUQzOUQ2RjAwQTY1OEYyIC8q
IFNjcmlwdFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdFZh
bHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNENDMTA5MEVEQjIyMzkwMEE2
NThGMiAvKiBTY3JpcHRTb3VyY2VDb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNjcmlwdFNvdXJjZUNvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM0
RDlCQTQwQjhDMTE2QjAwN0I0MkE5IC8qIFdlYkNvcmVOU1N0cmluZ0V4dHJhcy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlTlNTdHJpbmdFeHRyYXMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNEQ5QkE2MEI4QzExNzUwMDdCNDJB
OSAvKiBXZWJDb3JlTlNTdHJpbmdFeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkNvcmVOU1N0cmluZ0V4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTAzNDQsMTkgKzEwMzI3LDE2IEBACiAJCUE1MTgyMjU0MTdFMkEwRDQwMEE5QkExRCAv
KiBJbnNwZWN0b3JPdmVybGF5UGFnZS5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LmNzczsgcGF0aCA9IEluc3BlY3Rvck92ZXJsYXlQYWdl
LmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUxODIyNTUxN0UyQTBENDAwQTlC
QTFEIC8qIEluc3BlY3Rvck92ZXJsYXlQYWdlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gSW5z
cGVjdG9yT3ZlcmxheVBhZ2UuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1NEE4
MkVBMTUyMjhDQTMwMEM3MkJBNiAvKiBET01Ob2RlUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBET01Ob2RlUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlBNTU2QzI4NjE4MzIwNkE4MDA4Q0I3MjAgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3Ry
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JBZ2Vu
dFJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU1NkMyODcxODMy
MDZBODAwOENCNzIwIC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNTczMkIwODEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVu
dHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0ZUNvbXBvbmVu
dHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTczMkIwOTEzNkExNjFEMDA1
QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRGF0ZUNvbXBvbmVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU5M0NG
NzIxODQwMkNFOTAwQkZDRTI3IC8qIHByb3RvY29sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZm9sZGVyOyBwYXRoID0gcHJvdG9jb2w7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1OTNDRjczMTg0MDJENEIwMEJGQ0UyNyAvKiBDb2RlR2Vu
ZXJhdG9ySW5zcGVjdG9yLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gQ29kZUdlbmVyYXRvckluc3Bl
Y3Rvci5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU5M0NGNzQxODQwMkQ0QjAw
QkZDRTI3IC8qIENvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5ICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBw
YXRoID0gQ29kZUdlbmVyYXRvckluc3BlY3RvclN0cmluZ3MucHk7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE1OTNDRjc1MTg0MDJENEIwMEJGQ0UyNyAvKiBjb21iaW5lLWphdmFzY3Jp
cHQtcmVzb3VyY2VzLnBsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgcGF0aCA9ICJjb21iaW5lLWphdmFzY3JpcHQtcmVz
b3VyY2VzLnBsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU5M0NGOEExODQwNTM1
MjAwQkZDRTI3IC8qIEluc3BlY3RvcldlYkFnZW50QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTVBMkFGMDkxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VEZWJ1Z2dhYmxlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVBMkFGMEExODI5NzM0MzAwREUxNzI5
IC8qIFBhZ2VEZWJ1Z2dhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBh
Z2VEZWJ1Z2dhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QUJCNzg2MTNC
OTA0QkMwMEYxOTdFMyAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1QUM0QUVEMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUE1QUM0QUVFMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUFGQjM0RDEx
NTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0ZXBSYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE1QUZCMzRFMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3RlcFJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE1QzU2NkFBMTI3QTNBQUQwMEU4QTNGRiAvKiBEaXNrSW1hZ2VDYWNoZUNsaWVudElPUy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNrSW1hZ2VDYWNoZUNsaWVudElP
Uy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ0NDcsOCArMTQ0MjcsOCBAQAog
CQkJCTRGNzA3QTk4MTFFRjY3OTQwMEFDREE2OSAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cnMuaCAqLywKIAkJCQk0RjRGNUZGQTExQ0JEMkQyMDBBMTg2QkYgLyogSW5zcGVjdG9yRnJvbnRl
bmQuY3BwICovLAogCQkJCTRGNEY1RkZDMTFDQkQzMDEwMEExODZCRiAvKiBJbnNwZWN0b3JGcm9u
dGVuZC5oICovLAotCQkJCTU3M0QxMzQ1MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JUeXBl
QnVpbGRlci5jcHAgKi8sCi0JCQkJNTczRDEzNDYxNENFMzlGRjAwNTdBQkNBIC8qIEluc3BlY3Rv
clR5cGVCdWlsZGVyLmggKi8sCisJCQkJNTczRDEzNDUxNENFMzlGRjAwNTdBQkNBIC8qIEluc3Bl
Y3RvcldlYlR5cGVCdWlsZGVycy5jcHAgKi8sCisJCQkJNTczRDEzNDYxNENFMzlGRjAwNTdBQkNB
IC8qIEluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oICovLAogCQkJCTdBMEU3NkQ4MTBCRjA1OTgw
MEEwMjc2RSAvKiBKU0luamVjdGVkU2NyaXB0SG9zdC5jcHAgKi8sCiAJCQkJN0EwRTc2RDkxMEJG
MDU5ODAwQTAyNzZFIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0LmggKi8sCiAJCQkJN0EwRTc3MUMx
MEMwMERCMTAwQTAyNzZFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCAqLywKQEAgLTE0
NTAwLDEzICsxNDQ4MCw4IEBACiAJCQkJN0E1NjNGOTUxMkRGNUM5MTAwRjQ1MzZEIC8qIEluamVj
dGVkU2NyaXB0U291cmNlLmpzICovLAogCQkJCTRGMkQyMDUzMTJFQUU3QjMwMDVDMjg3NCAvKiBJ
bnNwZWN0b3JBZ2VudC5jcHAgKi8sCiAJCQkJNEYyRDIwNTIxMkVBRTdCMzAwNUMyODc0IC8qIElu
c3BlY3RvckFnZW50LmggKi8sCi0JCQkJQTU1NkMyODYxODMyMDZBODAwOENCNzIwIC8qIEluc3Bl
Y3RvckFnZW50UmVnaXN0cnkuY3BwICovLAotCQkJCUE1NTZDMjg3MTgzMjA2QTgwMDhDQjcyMCAv
KiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggKi8sCiAJCQkJQjg4NUU4RDIxMUUwNkREMjAwOUZG
QkY0IC8qIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgKi8sCiAJCQkJQjg4NUU4
RDMxMUUwNkREMjAwOUZGQkY0IC8qIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oICov
LAotCQkJCUE1QUM0QUVEMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlci5jcHAgKi8sCi0JCQkJQTVBQzRBRUUxODMzNjk3NTAwNzExNEUwIC8qIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmggKi8sCi0JCQkJN0FBNTFCNkMxNDgzQjYxNjAwQUQyNzUyIC8qIElu
c3BlY3RvckJhc2VBZ2VudC5oICovLAogCQkJCUFBRDc2NkU4MTU3RTUwMkYwMEU4NTQyMyAvKiBJ
bnNwZWN0b3JDYW52YXNBZ2VudC5jcHAgKi8sCiAJCQkJQUFENzY2RTkxNTdFNTAyRjAwRTg1NDIz
IC8qIEluc3BlY3RvckNhbnZhc0FnZW50LmggKi8sCiAJCQkJQUFENzY2RUExNTdFNTAyRjAwRTg1
NDIzIC8qIEluc3BlY3RvckNhbnZhc0luc3RydW1lbnRhdGlvbi5oICovLApAQCAtMTQ1NzYsOCAr
MTQ1NTEsNyBAQAogCQkJCTgyODg5QjRCMTNDNjIzOTIwMDlBNjE1NiAvKiBJbnNwZWN0b3JTdHls
ZVRleHRFZGl0b3IuaCAqLywKIAkJCQk3NTQxMzNBOTEwMkUwMEY0MDAwNzVEMDAgLyogSW5zcGVj
dG9yVGltZWxpbmVBZ2VudC5jcHAgKi8sCiAJCQkJNzU0MTMzQTcxMDJFMDBFODAwMDc1RDAwIC8q
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCAqLywKLQkJCQk0RjMyODlCMzExQTQyQUFCMDA1QUJF
N0UgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCAqLywKLQkJCQk0RjMyODlCNDExQTQyQUFCMDA1QUJF
N0UgLyogSW5zcGVjdG9yVmFsdWVzLmggKi8sCisJCQkJQTU5M0NGOEExODQwNTM1MjAwQkZDRTI3
IC8qIEluc3BlY3RvcldlYkFnZW50QmFzZS5oICovLAogCQkJCUYzODEwQzE5MTM2NUE0OTYwMEVE
NkUzMyAvKiBJbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAgKi8sCiAJCQkJRjM4MTBDMUExMzY1QTQ5
NjAwRUQ2RTMzIC8qIEluc3BlY3RvcldvcmtlckFnZW50LmggKi8sCiAJCQkJRjM3NUNDMDYxMTUw
RDMwMDAwOEREQjgxIC8qIEluc3BlY3RvcldvcmtlclJlc291cmNlLmggKi8sCkBAIC0xOTY2NCwx
MSArMTk2MzgsOSBAQAogCQkJCUE4M0UxQzcyMEU0OTA0MkIwMDE0MEI5QyAvKiBTY3JpcHRDb250
cm9sbGVyTWFjLm1tICovLAogCQkJCTlGNkZDMTk0MTEyMkU4MkEwMEU4MDE5NiAvKiBTY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAgKi8sCiAJCQkJOUY2RkMxOTUxMTIyRTgyQTAwRTgwMTk2IC8qIFNjcmlw
dERlYnVnU2VydmVyLmggKi8sCi0JCQkJNDEwMDJDQ0MwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlw
dEZ1bmN0aW9uQ2FsbC5jcHAgKi8sCi0JCQkJNDEwMDJDQ0IwRjY2RURFRjAwOUU2NjBEIC8qIFNj
cmlwdEZ1bmN0aW9uQ2FsbC5oICovLAogCQkJCTlGM0I5NDdEMTIyNDE3NTgwMDUzMDRFNyAvKiBT
Y3JpcHRIZWFwU25hcHNob3QuaCAqLywKLQkJCQk0MUYwNjZFMzBGNjRCQ0Y2MDBBMDdFQUMgLyog
U2NyaXB0T2JqZWN0LmNwcCAqLywKLQkJCQk0MUYwNjZFMjBGNjRCQ0Y2MDBBMDdFQUMgLyogU2Ny
aXB0T2JqZWN0LmggKi8sCisJCQkJNDFGMDY2RTMwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdEds
b2JhbE9iamVjdC5jcHAgKi8sCisJCQkJNDFGMDY2RTIwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlw
dEdsb2JhbE9iamVjdC5oICovLAogCQkJCUYzM0YwMjgxMTIwOTQ3RjIwMEU1NzQzQSAvKiBTY3Jp
cHRQcm9maWxlLmNwcCAqLywKIAkJCQk5RjcyMzA0QzExMTg0QjQxMDBBRDAxMjYgLyogU2NyaXB0
UHJvZmlsZS5oICovLAogCQkJCTlGQTM3RUUzMTE3MkZDODAwMEM0Q0Q1NSAvKiBTY3JpcHRQcm9m
aWxlTm9kZS5oICovLApAQCAtMTk2NzcsOCArMTk2NDksNiBAQAogCQkJCTkzNENDMTA5MEVEQjIy
MzkwMEE2NThGMiAvKiBTY3JpcHRTb3VyY2VDb2RlLmggKi8sCiAJCQkJNDEyN0Q1MzYwRjhBQUIx
RDAwRTQyNEY1IC8qIFNjcmlwdFN0YXRlLmNwcCAqLywKIAkJCQk0MUM3NjBCMDBFREUwM0QzMDBD
MTY1NUYgLyogU2NyaXB0U3RhdGUuaCAqLywKLQkJCQk5MzRDQzBERjBFRDM5RDZGMDBBNjU4RjIg
LyogU2NyaXB0VmFsdWUuY3BwICovLAotCQkJCTkzNENDMEUwMEVEMzlENkYwMEE2NThGMiAvKiBT
Y3JpcHRWYWx1ZS5oICovLAogCQkJCTIyOEMyODQ0MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRX
cmFwcGFibGUuaCAqLywKIAkJCQkxNDAwRDdBNzE3MTM2RUE3MDA3N0NFMDUgLyogU2NyaXB0V3Jh
cHBhYmxlSW5saW5lcy5oICovLAogCQkJCUE3NUU0OTc1MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwICovLApAQCAtMjIxMjEsNyArMjIwOTEsNiBAQAogCQkJCTI5
QTgxMjNGMEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWlu
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjMxMEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nl
c3NpYmlsaXR5VGFibGVSb3cuaCBpbiBIZWFkZXJzICovLAogCQkJCUI1RDMxREZCMTFDRjYxMEIw
MDlGMjJCNCAvKiBBY3RpdmVET01DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTU1NkMy
ODkxODMyMDZBODAwOENCNzIwIC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUxQzRERTY5MEVBNzVDMUUwMDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3QuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDRjdFNDkxMTM3Q0Q3QzcwMDFEREFFNyAvKiBBZGp1c3RWaWV3
U2l6ZU9yTm90LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NEQwQzQwNjExMTVGMUVBMDAxOEFBMzQg
LyogQWZmaW5lVHJhbnNmb3JtLmggaW4gSGVhZGVycyAqLywKQEAgLTIyNDI1LDcgKzIyMzk0LDYg
QEAKIAkJCQlBODBFNkQwMTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTSW5oZXJpdGVkVmFsdWUuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4MEU2RDA4MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NJbml0aWFs
VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNzcyRTEzMTMzMTYyMEMwMDFFQzlDRSAvKiBD
U1NMaW5lQm94Q29udGFpblZhbHVlLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNUFDNEFGMDE4MzM2
OTc1MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE4MEU2RDAzMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NNZWRpYVJ1bGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUY5OEZGRjQ1MTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBODBFNkQwMDBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTUGFnZVJ1bGUu
aCBpbiBIZWFkZXJzICovLApAQCAtMjMzODgsNyArMjMzNTYsNiBAQAogCQkJCTRGMkQyMDU0MTJF
QUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjg4
NUU4RDUxMUUwNkREMjAwOUZGQkY0IC8qIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNEY3MDdBOUExMUVGNjc5NDAwQUNEQTY5IC8qIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVycy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJN0FBNTFCNkUxNDgzQjYx
NjAwQUQyNzUyIC8qIEluc3BlY3RvckJhc2VBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUFE
NzY2RUMxNTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvckNhbnZhc0FnZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBQUQ3NjZFRDE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVjdG9yQ2FudmFzSW5z
dHJ1bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzgxQjk1QzBFOTczMzA4MDAyNjZF
MDcgLyogSW5zcGVjdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTIzNDI3LDggKzIzMzk0
LDcgQEAKIAkJCQk4MkFCMTc3NDEyNUM4MjY3MDBDNTA2OUQgLyogSW5zcGVjdG9yU3R5bGVTaGVl
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODI4ODlCNEQxM0M2MjM5MjAwOUE2MTU2IC8qIEluc3Bl
Y3RvclN0eWxlVGV4dEVkaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzU0MTMzQTgxMDJFMDBF
ODAwMDc1RDAwIC8qIEluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTU3OERBMjBGMTUyMEVCQTMwMDYxNDFDMSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJNEYzMjg5QjYxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVl
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTc4REEyMEYxNTIwRUJBMzAwNjE0MUMxIC8qIEluc3Bl
Y3RvcldlYlR5cGVCdWlsZGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjM4MTBDMUMxMzY1QTQ5
NjAwRUQ2RTMzIC8qIEluc3BlY3RvcldvcmtlckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
NzhFMDkyOTE3RDE0RDFDMDA0MjBBQTEgLyogUlRDU3RhdHNDYWxsYmFjay5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRjM3NUNDMDcxMTUwRDMwMDAwOEREQjgxIC8qIEluc3BlY3RvcldvcmtlclJlc291
cmNlLmggaW4gSGVhZGVycyAqLywKQEAgLTI0NTQ4LDkgKzI0NTE0LDggQEAKIAkJCQkwOEE0ODQ3
ODBFNTI3MkM1MDBDM0ZFNzYgLyogU2NyaXB0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTExQzlEOUIwRUIzNjgxMjAwRTQwOURCIC8qIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNERDcwODk3MTgzNTlGNkYwMDJCM0RDNiAvKiBTYW1wbGVNYXAuaCBp
biBIZWFkZXJzICovLAotCQkJCTQxMDAyQ0NEMEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5j
dGlvbkNhbGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTlGM0I5NDdFMTIyNDE3NTgwMDUzMDRFNyAv
KiBTY3JpcHRIZWFwU25hcHNob3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxRjA2NkU0MEY2NEJD
RjYwMEEwN0VBQyAvKiBTY3JpcHRPYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRjA2NkU0
MEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRHbG9iYWxPYmplY3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZEMzE2MDM2MTJCMDI2NzYwMEMxQTM1OSAvKiBTY3JpcHRQcm9jZXNzb3JOb2RlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5RjcyMzA0RjExMTg0QjQxMDBBRDAxMjYgLyogU2NyaXB0UHJvZmls
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUZBMzdFRTQxMTcyRkM4MDAwQzRDRDU1IC8qIFNjcmlw
dFByb2ZpbGVOb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTI0NTU4LDcgKzI0NTIzLDYgQEAKIAkJ
CQk4QTQxM0FFMDEyMDdCQkE1MDA4MjAxNkUgLyogU2NyaXB0UnVubmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5MzRDQzEwQTBFREIyMjM5MDBBNjU4RjIgLyogU2NyaXB0U291cmNlQ29kZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDFDNzYwQjEwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRl
LmggaW4gSGVhZGVycyAqLywKLQkJCQk5MzRDQzBFMjBFRDM5RDZGMDBBNjU4RjIgLyogU2NyaXB0
VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTIyOEMyODQ1MTBEODI1MDAwMDlEMEQwRSAvKiBT
Y3JpcHRXcmFwcGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MDBEN0E4MTcxMzZFQTcwMDc3
Q0UwNSAvKiBTY3JpcHRXcmFwcGFibGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzhB
RTM0RjEyRUEwOTZBMDBFQjNBRTYgLyogU2Nyb2xsYWJsZUFyZWEuaCBpbiBIZWFkZXJzICovLApA
QCAtMjQ5NTIsNiArMjQ5MTYsNyBAQAogCQkJCTA4OEEwRTBBMTI2RUYxREIwMDk3OEY3QSAvKiBT
VkdQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgxREQ0OUMxM0JBMUE2MDAwREM3NjI3
IC8qIFNWR1Byb3BlcnR5SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjU3Q0I1MkUxODJBM0VG
QzAwNzlBNjQ3IC8qIElubGluZUVsZW1lbnRCb3guaCBpbiBIZWFkZXJzICovLAorCQkJCUE1OTND
RjhCMTg0MDUzNTIwMEJGQ0UyNyAvKiBJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTA4OEEwRTBCMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eVRlYXJPZmYu
aCBpbiBIZWFkZXJzICovLAogCQkJCTA4OEEwRTBDMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQcm9w
ZXJ0eVRyYWl0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBOUEwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTgwMyw3
ICsyNTc2OCw2IEBACiAJCQkJNTlCNTk3NzMxMTA4NjU2QjAwNzE1OUU4IC8qIEJyaWRnZUpTQy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGNTVCM0RBRjEyNTFGMTJEMDAzRUYyNjkgLyogQnV0dG9u
SW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5Q0Y3MEQ3RTJCODIwMDdDMzk4
MyAvKiBjX2NsYXNzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE1QUM0QUVGMTgzMzY5NzUwMDcx
MTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxQTU2OUNGOTBEN0UyQjgyMDA3QzM5ODMgLyogY19pbnN0YW5jZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQTU2OUNGQjBEN0UyQjgyMDA3QzM5ODMgLyogY19ydW50aW1lLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBNTY5Q0ZEMEQ3RTJCODIwMDdDMzk4MyAvKiBjX3V0aWxpdHkuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC0yNjY4Myw4ICsyNjY0Nyw3IEBACiAJCQkJODI4ODlCNEMxM0M2MjM5
MjAwOUE2MTU2IC8qIEluc3BlY3RvclN0eWxlVGV4dEVkaXRvci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwNzI3N0U0RTE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbUF1ZGlvRGVzdGlu
YXRpb25Ob2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc1NDEzM0FBMTAyRTAwRjQwMDA3NUQw
MCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTU3M0Qx
MzQ3MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQk0RjMyODlCNTExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTU3M0QxMzQ3MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0
b3JXZWJUeXBlQnVpbGRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjM4MTBDMUIxMzY1QTQ5
NjAwRUQ2RTMzIC8qIEluc3BlY3RvcldvcmtlckFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUYzNTBCNzM1MTNGMTM3N0QwMDg4MEM0MyAvKiBJbnN0cnVtZW50aW5nQWdlbnRzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUIyNzUzNTYwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludENHLmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMjc3ODksMTQgKzI3NzUyLDEyIEBACiAJCQkJNDk5OEFFRDEx
M0ZCMjI0RDAwOTBCMUFBIC8qIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwOEE0ODQ3NzBFNTI3MkM1MDBDM0ZFNzYgLyogU2NyaXB0RWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTFDOURCMDBFQjM2OTk1MDBFNDA5REIgLyogU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0MTAwMkNDRTBGNjZFREVG
MDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQx
RjA2NkU1MEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNDFGMDY2RTUwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdEdsb2JhbE9iamVjdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjAzNTEyQjAyNjc2MDBDMUEzNTkgLyogU2NyaXB0UHJv
Y2Vzc29yTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGMzNGMDI4MjEyMDk0N0YyMDBFNTc0
M0EgLyogU2NyaXB0UHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5RjcyMzA1MDExMTg0
QjQxMDBBRDAxMjYgLyogU2NyaXB0UHJvZmlsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOEE0
MTNBRTExMjA3QkJBNTAwODIwMTZFIC8qIFNjcmlwdFJ1bm5lci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk0MTI3RDUzNzBGOEFBQjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJOTM0Q0MwRTEwRUQzOUQ2RjAwQTY1OEYyIC8qIFNjcmlwdFZhbHVlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDOEFFMzRFMTJFQTA5NkEwMEVCM0FFNiAvKiBTY3JvbGxhYmxl
QXJlYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDQTNCRjY3QzEwRDk5QkFFMDBFNkNFNTMgLyog
U2Nyb2xsQW5pbWF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1MTE1NkUxMkIxNzQ5QzAw
Qzk2NzU0IC8qIFNjcm9sbEFuaW1hdG9yTWFjLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0yNzg4OCw3
ICsyNzg0OSw2IEBACiAJCQkJQUEyQTVBRDUxNkE0ODYxNDAwOTc1QTI1IC8qIFNwZWVjaFN5bnRo
ZXNpcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBQTJBNUFEMzE2QTQ4NjBEMDA5NzVBMjUgLyog
U3BlZWNoU3ludGhlc2lzRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUEyQTVBRDExNkE0
ODYwNzAwOTc1QTI1IC8qIFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQlBNTU2QzI4ODE4MzIwNkE4MDA4Q0I3MjAgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3Ry
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBQTJBNUFDRDE2QTQ4NUZBMDA5NzVBMjUgLyogU3Bl
ZWNoU3ludGhlc2lzVm9pY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc4RkUxM0IxMjM2NkIx
MDAwQUNFOEQwIC8qIFNwZWxsQ2hlY2tlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCOERCREI0
RDEzMEIwRjhBMDBGNUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25h
cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaAppbmRleCA5NGRh
ODc4Li5mZDRiZWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0
aW9uYXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5oCkBA
IC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiSlNEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiSlNF
dmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJT
Y3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC05Miw3ICs5Miw3IEBAIFBhc3NSZWZQdHI8RXZl
bnRMaXN0ZW5lcj4gRGljdGlvbmFyeTo6Z2V0RXZlbnRMaXN0ZW5lcihjb25zdCBjaGFyKiBwcm9w
ZXJ0eU5hbWUsCiAgICAgaWYgKCFtX2RpY3Rpb25hcnkuaXNWYWxpZCgpKQogICAgICAgICByZXR1
cm4gMDsKIAotICAgIFNjcmlwdFZhbHVlIGV2ZW50TGlzdGVuZXI7CisgICAgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUgZXZlbnRMaXN0ZW5lcjsKICAgICBpZiAoIW1fZGljdGlvbmFyeS50cnlHZXRQ
cm9wZXJ0eShwcm9wZXJ0eU5hbWUsIGV2ZW50TGlzdGVuZXIpKQogICAgICAgICByZXR1cm4gMDsK
ICAgICBpZiAoZXZlbnRMaXN0ZW5lci5oYXNOb1ZhbHVlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCmluZGV4IGI4ZjFiYzguLjdh
NzdkYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdV
dGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdV
dGlsaXRpZXMuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgc3RhdGljIEpTVmFsdWUgZ2V0TnRoVmFs
dWVPbktleVBhdGgoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHJvb3RWYWx1ZSwgY29uc3QgVmUK
ICAgICByZXR1cm4gY3VycmVudFZhbHVlOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+
IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKK3N0YXRpYyBQ
YXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgY29u
c3QgU3RyaW5nJiBrZXlQYXRoKQogewogICAgIFZlY3RvcjxTdHJpbmc+IGtleVBhdGhFbGVtZW50
czsKICAgICBJREJLZXlQYXRoUGFyc2VFcnJvciBlcnJvcjsKQEAgLTIyOCw3ICsyMjgsNyBAQCBz
dGF0aWMgYm9vbCBjYW5JbmplY3ROdGhWYWx1ZU9uS2V5UGF0aChFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgcm9vdFZhbHVlLCBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIGluamVj
dElEQktleUludG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgUGFz
c1JlZlB0cjxJREJLZXk+IGtleSwgU2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBJREJLZXlQYXRo
JiBrZXlQYXRoKQorYm9vbCBpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0
YXRlKiByZXF1ZXN0U3RhdGUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKIHsKICAgICBMT0co
U3RvcmFnZUFQSSwgImluamVjdElEQktleUludG9TY3JpcHRWYWx1ZSIpOwogCkBAIC0yNTQsNyAr
MjU0LDcgQEAgYm9vbCBpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRl
KiByZXF1ZXN0U3RhdGUsIFBhc3NSZWZQdHI8SURCS2UKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
UGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgo
RE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1ZSwg
Y29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKK1Bhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJL
ZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRl
LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IElEQktleVBhdGgm
IGtleVBhdGgpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJjcmVhdGVJREJLZXlGcm9tU2NyaXB0
VmFsdWVBbmRLZXlQYXRoIik7CiAgICAgQVNTRVJUKCFrZXlQYXRoLmlzTnVsbCgpKTsKQEAgLTI3
Nyw3ICsyNzcsNyBAQCBQYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZh
bHVlQW5kS2V5UGF0aChET01SZXF1ZXN0U3RhdGUqIHJlcXVlcwogICAgIHJldHVybiBjcmVhdGVJ
REJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKGV4ZWMsIHZhbHVlLCBrZXlQYXRoLnN0cmlu
ZygpKTsKIH0KIAotYm9vbCBjYW5JbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVz
dFN0YXRlKiByZXF1ZXN0U3RhdGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBzY3JpcHRWYWx1ZSwgY29u
c3QgSURCS2V5UGF0aCYga2V5UGF0aCkKK2Jvb2wgY2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZh
bHVlKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYgc2NyaXB0VmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCiB7CiAgICAg
TE9HKFN0b3JhZ2VBUEksICJjYW5JbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUiKTsKIApAQCAt
Mjk0LDE2ICsyOTQsMTYgQEAgYm9vbCBjYW5JbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoRE9N
UmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIGNvbnN0IFNjcmlwdFYKICAgICByZXR1cm4gY2Fu
SW5qZWN0TnRoVmFsdWVPbktleVBhdGgoZXhlYywgc2NyaXB0VmFsdWUuanNWYWx1ZSgpLCBrZXlQ
YXRoRWxlbWVudHMsIGtleVBhdGhFbGVtZW50cy5zaXplKCkgLSAxKTsKIH0KIAotU2NyaXB0VmFs
dWUgZGVzZXJpYWxpemVJREJWYWx1ZShET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHBycFZhbHVlKQorRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUgZGVzZXJpYWxpemVJREJWYWx1ZShET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0
ZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHBycFZhbHVlKQogewogICAgIEV4
ZWNTdGF0ZSogZXhlYyA9IHJlcXVlc3RTdGF0ZS0+ZXhlYygpOwogICAgIFJlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IHBycFZhbHVlOwogICAgIGlmIChzZXJp
YWxpemVkVmFsdWUpCi0gICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoZXhl
Yywgc2VyaWFsaXplZFZhbHVlLmdldCgpLCBOb25UaHJvd2luZyk7Ci0gICAgcmV0dXJuIFNjcmlw
dFZhbHVlKGV4ZWMtPnZtKCksIGpzTnVsbCgpKTsKKyAgICAgICAgcmV0dXJuIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoZXhlYywgc2VyaWFsaXplZFZhbHVlLmdldCgpLCBOb25U
aHJvd2luZyk7CisgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKGV4ZWMtPnZtKCks
IGpzTnVsbCgpKTsKIH0KIAotU2NyaXB0VmFsdWUgZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihE
T01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHBy
cEJ1ZmZlcikKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWVCdWZm
ZXIoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiBwcnBCdWZmZXIpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gcmVxdWVzdFN0YXRlLT5leGVj
KCk7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcHJwQnVmZmVyOwpAQCAtMzEy
LDE4ICszMTIsMTggQEAgU2NyaXB0VmFsdWUgZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihET01S
ZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgUGFzc1JlZlB0cjwKICAgICAgICAgVmVjdG9yPHVp
bnQ4X3Q+IHZhbHVlOwogICAgICAgICB2YWx1ZS5hcHBlbmQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKTsKICAgICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFs
aXplZFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZUJ5dGVzKHZh
bHVlKTsKLSAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShleGVjLCBzZXJp
YWxpemVkVmFsdWUuZ2V0KCksIE5vblRocm93aW5nKTsKKyAgICAgICAgcmV0dXJuIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoZXhlYywgc2VyaWFsaXplZFZhbHVlLmdldCgpLCBO
b25UaHJvd2luZyk7CiAgICAgfQotICAgIHJldHVybiBTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBq
c051bGwoKSk7CisgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKGV4ZWMtPnZtKCks
IGpzTnVsbCgpKTsKIH0KIAotU2NyaXB0VmFsdWUgaWRiS2V5VG9TY3JpcHRWYWx1ZShET01SZXF1
ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSkKK0RlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlIGlkYktleVRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1
ZXN0U3RhdGUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXkpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVj
ID0gcmVxdWVzdFN0YXRlLT5leGVjKCk7Ci0gICAgcmV0dXJuIFNjcmlwdFZhbHVlKGV4ZWMtPnZt
KCksIGlkYktleVRvSlNWYWx1ZShleGVjLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBrZXkuZ2V0KCkpKTsKKyAgICByZXR1cm4gRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwgaWRiS2V5VG9KU1ZhbHVlKGV4ZWMsIGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIGtleS5n
ZXQoKSkpOwogfQogCi1QYXNzUmVmUHRyPElEQktleT4gc2NyaXB0VmFsdWVUb0lEQktleShET01S
ZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgY29uc3QgU2NyaXB0VmFsdWUmIHNjcmlwdFZhbHVl
KQorUGFzc1JlZlB0cjxJREJLZXk+IHNjcmlwdFZhbHVlVG9JREJLZXkoRE9NUmVxdWVzdFN0YXRl
KiByZXF1ZXN0U3RhdGUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBzY3JpcHRWYWx1
ZSkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSByZXF1ZXN0U3RhdGUtPmV4ZWMoKTsKICAgICBy
ZXR1cm4gY3JlYXRlSURCS2V5RnJvbVZhbHVlKGV4ZWMsIHNjcmlwdFZhbHVlLmpzVmFsdWUoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0
aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgK
aW5kZXggOTA4YzdmZC4uZjAxMmFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaApAQCAtMjksNyArMjksNyBAQAogI2lmIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgotI2luY2x1ZGUgIlNj
cmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MSwxMyArNDEsMTMg
QEAgY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBJREJLZXlQYXRoIGlkYktleVBhdGhGcm9tVmFsdWUo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpOwogCi1ib29sIGluamVjdElEQktleUludG9T
Y3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPElEQktleT4sIFNjcmlwdFZh
bHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOwotUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktl
eUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoRE9NUmVxdWVzdFN0YXRlKiwgY29uc3QgU2NyaXB0
VmFsdWUmLCBjb25zdCBJREJLZXlQYXRoJik7Ci1ib29sIGNhbkluamVjdElEQktleUludG9TY3Jp
cHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqLCBjb25zdCBTY3JpcHRWYWx1ZSYsIGNvbnN0IElEQktl
eVBhdGgmKTsKLVNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWUoRE9NUmVxdWVzdFN0YXRl
KiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKLVNjcmlwdFZhbHVlIGRlc2Vy
aWFsaXplSURCVmFsdWVCdWZmZXIoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxTaGFyZWRC
dWZmZXI+KTsKLVNjcmlwdFZhbHVlIGlkYktleVRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRl
KiwgUGFzc1JlZlB0cjxJREJLZXk+KTsKLVBhc3NSZWZQdHI8SURCS2V5PiBzY3JpcHRWYWx1ZVRv
SURCS2V5KERPTVJlcXVlc3RTdGF0ZSosIGNvbnN0IFNjcmlwdFZhbHVlJik7Citib29sIGluamVj
dElEQktleUludG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPElEQktl
eT4sIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOworUGFzc1Jl
ZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoRE9NUmVx
dWVzdFN0YXRlKiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBjb25zdCBJREJLZXlQ
YXRoJik7Citib29sIGNhbkluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3Rh
dGUqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsK
K0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWUoRE9NUmVxdWVzdFN0
YXRlKiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKK0RlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIoRE9NUmVxdWVzdFN0YXRlKiwgUGFz
c1JlZlB0cjxTaGFyZWRCdWZmZXI+KTsKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGlkYktleVRv
U2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxJREJLZXk+KTsKK1Bhc3NS
ZWZQdHI8SURCS2V5PiBzY3JpcHRWYWx1ZVRvSURCS2V5KERPTVJlcXVlc3RTdGF0ZSosIGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKaW5kZXggNTc3OTg5YS4uYTMwZjc5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbElu
T25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5P
bmUuY3BwCkBAIC0xNDksNyArMTQ5LDYgQEAKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0
b3J5LmNwcCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmNwcCIKICNpbmNsdWRlICJTY3Jp
cHREZWJ1Z1NlcnZlci5jcHAiCi0jaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCIKICNp
bmNsdWRlICJTY3JpcHRQcm9maWxlci5jcHAiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuY3BwIgog
I2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAppbmRleCA3ZWRiMWQ1Li40YzI4ODI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAKQEAgLTM3LDcgKzM3LDYg
QEAKICNpbmNsdWRlICJKU1N0b3JhZ2UuaCIKICNpbmNsdWRlICJKU1RyYWNrQ3VzdG9tLmgiCiAj
aW5jbHVkZSAiSlNWb2lkQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2lu
Y2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNUeXBl
ZEFycmF5cy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0xNDQsOSArMTQzLDkgQEAg
dm9pZCBKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
dmFsdWUsIFZlY3RvcjxTdHJpbmc+JgogICAgIH0KIH0KIAotdm9pZCBKU0RpY3Rpb25hcnk6OmNv
bnZlcnRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFNjcmlwdFZhbHVlJiBy
ZXN1bHQpCit2b2lkIEpTRGljdGlvbmFyeTo6Y29udmVydFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSB2YWx1ZSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHJlc3VsdCkKIHsKLSAgICBy
ZXN1bHQgPSBTY3JpcHRWYWx1ZShleGVjLT52bSgpLCB2YWx1ZSk7CisgICAgcmVzdWx0ID0gRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwgdmFsdWUpOwogfQogCiB2b2lkIEpTRGlj
dGlvbmFyeTo6Y29udmVydFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNEaWN0aW9uYXJ5LmgKaW5kZXggYTI5MDU2Zi4uM2E4ZTJjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmgKQEAgLTM0LDYgKzM0LDEwIEBACiAjaW5j
bHVkZSA8cnVudGltZS9VaW50OEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAor
bmFtZXNwYWNlIERlcHJlY2F0ZWQgeworY2xhc3MgU2NyaXB0VmFsdWU7Cit9CisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQXJyYXlWYWx1ZTsKQEAgLTQ2LDcgKzUwLDYgQEAgY2xhc3Mg
TWVkaWFLZXlFcnJvcjsKIGNsYXNzIE1lZGlhU3RyZWFtOwogY2xhc3MgTWVkaWFTdHJlYW1UcmFj
azsKIGNsYXNzIE5vZGU7Ci1jbGFzcyBTY3JpcHRWYWx1ZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTsKIGNsYXNzIFN0b3JhZ2U7CiBjbGFzcyBUcmFja0Jhc2U7CkBAIC0xMDgsNyArMTEx
LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBjb252ZXJ0VmFsdWUoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkpTVmFsdWUsIGRvdWJsZSYgcmVzdWx0KTsKICAgICBzdGF0aWMgdm9pZCBjb252
ZXJ0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIERpY3Rpb25hcnkmIHJlc3Vs
dCk7CiAgICAgc3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpK
U1ZhbHVlLCBTdHJpbmcmIHJlc3VsdCk7Ci0gICAgc3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBTY3JpcHRWYWx1ZSYgcmVzdWx0KTsKKyAgICBz
dGF0aWMgdm9pZCBjb252ZXJ0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiByZXN1bHQpOwogICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRW
YWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgVmVjdG9yPFN0cmluZz4mIHJlc3Vs
dCk7CiAgICAgc3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpK
U1ZhbHVlLCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYgcmVzdWx0KTsKICAgICBzdGF0
aWMgdm9pZCBjb252ZXJ0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIFJlZlB0
cjxET01XaW5kb3c+JiByZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcAppbmRleCBmZTZjOGJhLi43YWQz
NmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNF
bGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxD
YW52YXNFbGVtZW50Q3VzdG9tLmNwcApAQCAtMzEsMTMgKzMxLDE0IEBACiAjaW5jbHVkZSAiSFRN
TENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDYW52YXNJbnN0cnVtZW50YXRp
b24uaCIKICNpbmNsdWRlICJKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIgotI2luY2x1ZGUg
IlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgorI2lu
Y2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKwogI2lmIEVOQUJMRShXRUJHTCkKICNpbmNsdWRlICJKU0Rp
Y3Rpb25hcnkuaCIKICNpbmNsdWRlICJKU1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1
ZGUgIldlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCIKICNlbmRpZgotI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApAQCAtODUsOCArODYsOCBAQCBKU1ZhbHVl
IEpTSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQoRXhlY1N0YXRlKiBleGVjKQogICAgICAg
ICByZXR1cm4ganNOdWxsKCk7CiAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gdG9KUyhleGVjLCBnbG9i
YWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoY29udGV4dCkpOwogICAgIGlmIChJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmNhbnZhc0FnZW50RW5hYmxlZCgmY2FudmFzLmRvY3VtZW50KCkpKSB7Ci0g
ICAgICAgIFNjcmlwdE9iamVjdCBjb250ZXh0T2JqZWN0KGV4ZWMsIGpzVmFsdWUuZ2V0T2JqZWN0
KCkpOwotICAgICAgICBTY3JpcHRPYmplY3Qgd3JhcHBlZDsKKyAgICAgICAgRGVwcmVjYXRlZDo6
U2NyaXB0T2JqZWN0IGNvbnRleHRPYmplY3QoZXhlYywganNWYWx1ZS5nZXRPYmplY3QoKSk7Cisg
ICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCB3cmFwcGVkOwogICAgICAgICBpZiAoY29u
dGV4dC0+aXMyZCgpKQogICAgICAgICAgICAgd3JhcHBlZCA9IEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d3JhcENhbnZhczJEUmVuZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlvbigmY2Fu
dmFzLmRvY3VtZW50KCksIGNvbnRleHRPYmplY3QpOwogI2lmIEVOQUJMRShXRUJHTCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0
Q3VzdG9tLmNwcAppbmRleCA2OTk5ZmJlLi4wYjQ1MjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCkBA
IC00NCwxNSArNDQsMTUgQEAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdl
bnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJKU0V2ZW50TGlz
dGVuZXIuaCIKICNpbmNsdWRlICJKU0hUTUxBbGxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSlNI
VE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIkpTTm9kZUxp
c3QuaCIKICNpbmNsdWRlICJKU1N0b3JhZ2UuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgog
I2luY2x1ZGUgIlN0b3JhZ2UuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgor
I2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDxwYXJzZXIv
U291cmNlQ29kZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmg+CiAjaW5jbHVk
ZSA8cnVudGltZS9FcnJvci5oPgpAQCAtNjksMjAgKzY5LDIwIEBAIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTm9kZSogSW5qZWN0ZWRTY3JpcHRIb3N0Ojpz
Y3JpcHRWYWx1ZUFzTm9kZShTY3JpcHRWYWx1ZSB2YWx1ZSkKK05vZGUqIEluamVjdGVkU2NyaXB0
SG9zdDo6c2NyaXB0VmFsdWVBc05vZGUoRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgdmFsdWUpCiB7
CiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpIHx8IHZhbHVlLmlzTnVsbCgpKQogICAgICAgICBy
ZXR1cm4gMDsKICAgICByZXR1cm4gdG9Ob2RlKHZhbHVlLmpzVmFsdWUoKSk7CiB9CiAKLVNjcmlw
dFZhbHVlIEluamVjdGVkU2NyaXB0SG9zdDo6bm9kZUFzU2NyaXB0VmFsdWUoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlLCBOb2RlKiBub2RlKQorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgSW5qZWN0ZWRT
Y3JpcHRIb3N0Ojpub2RlQXNTY3JpcHRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIE5vZGUq
IG5vZGUpCiB7CiAgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvTm9kZShzdGF0ZSwgbm9kZSkp
Ci0gICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZShzdGF0ZS0+dm0oKSwganNOdWxsKCkpOworICAg
ICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoc3RhdGUtPnZtKCksIGpzTnVsbCgp
KTsKIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKHN0YXRlKTsKLSAgICByZXR1cm4gU2NyaXB0VmFs
dWUoc3RhdGUtPnZtKCksIHRvSlMoc3RhdGUsIGRlcHJlY2F0ZWRHbG9iYWxPYmplY3RGb3JQcm90
b3R5cGUoc3RhdGUpLCBub2RlKSk7CisgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
KHN0YXRlLT52bSgpLCB0b0pTKHN0YXRlLCBkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90
eXBlKHN0YXRlKSwgbm9kZSkpOwogfQogCiBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0Ojpp
bnNwZWN0ZWRPYmplY3QoRXhlY1N0YXRlKiBleGVjKQpAQCAtOTUsNyArOTUsNyBAQCBKU1ZhbHVl
IEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0ZWRPYmplY3QoRXhlY1N0YXRlKiBleGVjKQog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4
ZWMpOwotICAgIFNjcmlwdFZhbHVlIHNjcmlwdFZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYyk7Cisg
ICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgc2NyaXB0VmFsdWUgPSBvYmplY3QtPmdldChleGVj
KTsKICAgICBpZiAoc2NyaXB0VmFsdWUuaGFzTm9WYWx1ZSgpKQogICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKIApAQCAtMjQ3LDggKzI0Nyw4IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlw
dEhvc3Q6OmdldEV2ZW50TGlzdGVuZXJzKEV4ZWNTdGF0ZSogZXhlYykKIEpTVmFsdWUgSlNJbmpl
Y3RlZFNjcmlwdEhvc3Q6Omluc3BlY3QoRXhlY1N0YXRlKiBleGVjKQogewogICAgIGlmIChleGVj
LT5hcmd1bWVudENvdW50KCkgPj0gMikgewotICAgICAgICBTY3JpcHRWYWx1ZSBvYmplY3QoZXhl
Yy0+dm0oKSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwotICAgICAgICBTY3JpcHRWYWx1
ZSBoaW50cyhleGVjLT52bSgpLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKSk7CisgICAgICAg
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG9iamVjdChleGVjLT52bSgpLCBleGVjLT51bmNoZWNr
ZWRBcmd1bWVudCgwKSk7CisgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGhpbnRzKGV4
ZWMtPnZtKCksIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsKICAgICAgICAgaW1wbCgpLmlu
c3BlY3RJbXBsKG9iamVjdC50b0luc3BlY3RvclZhbHVlKGV4ZWMpLCBoaW50cy50b0luc3BlY3Rv
clZhbHVlKGV4ZWMpKTsKICAgICB9CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0TWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0TWFuYWdlci5j
cHAKaW5kZXggMmRiZTJkZS4uYTZkYTY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApAQCAtNDEsNyArNDEsNyBA
QAogI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAjaW5jbHVkZSAiSlNJbmplY3RlZFNj
cmlwdEhvc3QuaCIKICNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKLSNpbmNsdWRl
ICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3QuaD4KICNp
bmNsdWRlIDxwYXJzZXIvU291cmNlQ29kZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+
CiAKQEAgLTQ5LDcgKzQ5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1TY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmpl
Y3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0
YXRlLCBpbnQgaWQpCitEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgSlNDOjpFeGVj
U3RhdGUqIHNjcmlwdFN0YXRlLCBpbnQgaWQpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soc2Ny
aXB0U3RhdGUpOwogCkBAIC02NiwxMyArNjYsMTMgQEAgU2NyaXB0T2JqZWN0IEluamVjdGVkU2Ny
aXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEoK
ICAgICAgICAgZXZhbHVhdGlvblJldHVyblZhbHVlID0gSlNDOjpldmFsdWF0ZShzY3JpcHRTdGF0
ZSwgc291cmNlQ29kZSwgZ2xvYmFsVGhpc1ZhbHVlLCAmZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAg
ICAgfQogICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gU2NyaXB0
T2JqZWN0KCk7CisgICAgICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QoKTsKIAog
ICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGV2YWx1YXRpb25SZXR1cm5WYWx1ZTsKICAgICBD
YWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1
bmN0aW9uVmFsdWUsIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25l
KQotICAgICAgICByZXR1cm4gU2NyaXB0T2JqZWN0KCk7CisgICAgICAgIHJldHVybiBEZXByZWNh
dGVkOjpTY3JpcHRPYmplY3QoKTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAg
ICAgYXJncy5hcHBlbmQodG9KUyhzY3JpcHRTdGF0ZSwgZ2xvYmFsT2JqZWN0LCBtX2luamVjdGVk
U2NyaXB0SG9zdC5nZXQoKSkpOwpAQCAtODEsOCArODEsOCBAQCBTY3JpcHRPYmplY3QgSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJj
ZSwgSgogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBKU0M6OmNhbGwoc2NyaXB0U3RhdGUsIGZ1bmN0
aW9uVmFsdWUsIGNhbGxUeXBlLCBjYWxsRGF0YSwgZ2xvYmFsVGhpc1ZhbHVlLCBhcmdzKTsKICAg
ICBpZiAocmVzdWx0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBTY3JpcHRPYmplY3Qoc2Ny
aXB0U3RhdGUsIHJlc3VsdC5nZXRPYmplY3QoKSk7Ci0gICAgcmV0dXJuIFNjcmlwdE9iamVjdCgp
OworICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KHNjcmlwdFN0YXRlLCBy
ZXN1bHQuZ2V0T2JqZWN0KCkpOworICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3Qo
KTsKIH0KIAogYm9vbCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNhbkFjY2Vzc0luc3BlY3RlZFdp
bmRvdyhKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmNwcAppbmRleCA0MjkzYTQ2Li5h
NThjOGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJl
YWRFeGVjU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRo
cmVhZEV4ZWNTdGF0ZS5jcHAKQEAgLTQ2LDQgKzQ2LDEyIEBAIHZvaWQgSlNNYWluVGhyZWFkRXhl
Y1N0YXRlOjpkaWRMZWF2ZVNjcmlwdENvbnRleHQoKQogICAgIE11dGF0aW9uT2JzZXJ2ZXI6OmRl
bGl2ZXJBbGxNdXRhdGlvbnMoKTsKIH0KIAorSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uQ2FsbEhhbmRs
ZXJGcm9tQW55VGhyZWFkKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgZnVuY3Rp
b25PYmplY3QsIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0IEpTQzo6Q2FsbERhdGEmIGNh
bGxEYXRhLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3Mp
Cit7CisgICAgaWYgKGlzTWFpblRocmVhZCgpKQorICAgICAgICByZXR1cm4gSlNNYWluVGhyZWFk
RXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsVHlwZSwgY2FsbERhdGEs
IHRoaXNWYWx1ZSwgYXJncyk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gSlNDOjpjYWxsKGV4
ZWMsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgKaW5kZXggMzNiN2JkOS4uMmZhNjYyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0
YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0
YXRlLmgKQEAgLTI4LDkgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2lu
Y2x1ZGUgPHJ1bnRpbWUvQ29tcGxldGlvbi5oPgotI2lmbmRlZiBOREVCVUcKICNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgotI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDIs
NyArNDAsNyBAQCBjbGFzcyBKU01haW5UaHJlYWRFeGVjU3RhdGUgewogICAgIGZyaWVuZCBjbGFz
cyBKU01haW5UaHJlYWROdWxsU3RhdGU7CiBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6RXhlY1N0
YXRlKiBjdXJyZW50U3RhdGUoKQotICAgIHsgCisgICAgewogICAgICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogICAgICAgICByZXR1cm4gc19tYWluVGhyZWFkU3RhdGU7CiAgICAgfTsKQEAg
LTUzLDggKzUxLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSlNDOjpjYWxsKGV4ZWMsIGZ1
bmN0aW9uT2JqZWN0LCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7CiAgICAg
fTsKIAotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgaW5zdHJ1bWVu
dEZ1bmN0aW9uQ2FsbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSlNDOjpDYWxsVHlwZSwgY29u
c3QgSlNDOjpDYWxsRGF0YSYpOwotCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZShK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBzb3VyY2UsIEpTQzo6
SlNWYWx1ZSB0aGlzVmFsdWUsIEpTQzo6SlNWYWx1ZSogZXhjZXB0aW9uKQogICAgIHsKICAgICAg
ICAgSlNNYWluVGhyZWFkRXhlY1N0YXRlIGN1cnJlbnRTdGF0ZShleGVjKTsKQEAgLTYyLDYgKzU4
LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSlNDOjpldmFsdWF0ZShleGVjLCBzb3VyY2Us
IHRoaXNWYWx1ZSwgZXhjZXB0aW9uKTsKICAgICB9OwogCisgICAgc3RhdGljIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSBpbnN0cnVtZW50RnVuY3Rpb25DYWxsKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBKU0M6OkNhbGxUeXBlLCBjb25zdCBKU0M6OkNhbGxEYXRhJik7CisKICAgICBl
eHBsaWNpdCBKU01haW5UaHJlYWRFeGVjU3RhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
ICAgIDogbV9wcmV2aW91c1N0YXRlKHNfbWFpblRocmVhZFN0YXRlKQogICAgIHsKQEAgLTExMCw2
ICsxMDgsOCBAQCBwcml2YXRlOgogICAgIEpTQzo6RXhlY1N0YXRlKiBtX3ByZXZpb3VzU3RhdGU7
CiB9OwogCitKU0M6OkpTVmFsdWUgZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQoSlND
OjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgSlNDOjpDYWxs
VHlwZSBjYWxsVHlwZSwgY29uc3QgSlNDOjpDYWxsRGF0YSYgY2FsbERhdGEsIEpTQzo6SlNWYWx1
ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncyk7CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEpTTWFpblRocmVhZEV4ZWNTdGF0ZV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAKaW5kZXgg
MGE5YTRjMS4uYzg0Y2EwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcApAQCAtNTMsNyArNTMsNyBAQCBKU1ZhbHVlIEpTTWVz
c2FnZUV2ZW50OjpkYXRhKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKICAgICBKU1ZhbHVlIHJlc3Vs
dDsKICAgICBzd2l0Y2ggKGV2ZW50LmRhdGFUeXBlKCkpIHsKICAgICBjYXNlIE1lc3NhZ2VFdmVu
dDo6RGF0YVR5cGVTY3JpcHRWYWx1ZTogewotICAgICAgICBTY3JpcHRWYWx1ZSBzY3JpcHRWYWx1
ZSA9IGV2ZW50LmRhdGFBc1NjcmlwdFZhbHVlKCk7CisgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlIHNjcmlwdFZhbHVlID0gZXZlbnQuZGF0YUFzU2NyaXB0VmFsdWUoKTsKICAgICAgICAg
aWYgKHNjcmlwdFZhbHVlLmhhc05vVmFsdWUoKSkKICAgICAgICAgICAgIHJlc3VsdCA9IGpzTnVs
bCgpOwogICAgICAgICBlbHNlCkBAIC0xMDUsNyArMTA1LDcgQEAgc3RhdGljIEpTQzo6SlNWYWx1
ZSBoYW5kbGVJbml0TWVzc2FnZUV2ZW50KEpTTWVzc2FnZUV2ZW50KiBqc0V2ZW50LCBKU0M6OkV4
ZWNTdGEKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQotICAgIFNjcmlwdFZhbHVlIGRhdGFBcmcgPSBTY3Jp
cHRWYWx1ZShleGVjLT52bSgpLCBleGVjLT5hcmd1bWVudCgzKSk7CisgICAgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUgZGF0YUFyZyA9IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKGV4ZWMtPnZtKCks
IGV4ZWMtPmFyZ3VtZW50KDMpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NoZWR1bGVkQWN0aW9uLmNwcAppbmRleCAwNmM1MWNhLi45MTczZWRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKQEAgLTM3LDkgKzM3
LDkgQEAKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRl
ICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVk
ZSAiV29ya2VyVGhyZWFkLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNp
bmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNw
cAppbmRleCA1ZDY2YzRkLi43ZDY5NWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcApAQCAtMzgsNyArMzgsNyBAQAog
I2luY2x1ZGUgIlNjcmlwdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxGcmFtZS5o
IgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgi
CisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxpbnRlcnByZXRl
ci9DYWxsRnJhbWUuaD4KICNpbmNsdWRlIDxpbnRlcnByZXRlci9DYWxsRnJhbWVJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmg+CkBAIC0xOTksMTAgKzE5OSwx
MCBAQCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9y
Q29uc29sZShKU0M6OkV4ZWNTdGF0ZSogZXhlYwogCiBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50
cz4gY3JlYXRlU2NyaXB0QXJndW1lbnRzKEpTQzo6RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBz
a2lwQXJndW1lbnRDb3VudCkKIHsKLSAgICBWZWN0b3I8U2NyaXB0VmFsdWU+IGFyZ3VtZW50czsK
KyAgICBWZWN0b3I8RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWU+IGFyZ3VtZW50czsKICAgICBzaXpl
X3QgYXJndW1lbnRDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKICAgICBmb3IgKHNpemVf
dCBpID0gc2tpcEFyZ3VtZW50Q291bnQ7IGkgPCBhcmd1bWVudENvdW50OyArK2kpCi0gICAgICAg
IGFyZ3VtZW50cy5hcHBlbmQoU2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwgZXhlYy0+dW5jaGVja2Vk
QXJndW1lbnQoaSkpKTsKKyAgICAgICAgYXJndW1lbnRzLmFwcGVuZChEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZShleGVjLT52bSgpLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudChpKSkpOwogICAgIHJl
dHVybiBTY3JpcHRBcmd1bWVudHM6OmNyZWF0ZShleGVjLCBhcmd1bWVudHMpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDJj
M2VmOTNhZi4uMDA3YjAzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5jcHAKQEAgLTQwLDcgKzQwLDYgQEAKICNpbmNsdWRlICJQbHVnaW5WaWV3
LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNl
Q29kZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2NyaXB0YWJsZURv
Y3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdG9yYWdl
TmFtZXNwYWNlLmgiCkBAIC00OCw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50
RGF0YS5oIgogI2luY2x1ZGUgIm5wcnVudGltZV9pbXBsLmgiCiAjaW5jbHVkZSAicnVudGltZV9y
b290LmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxkZWJ1
Z2dlci9EZWJ1Z2dlci5oPgogI2luY2x1ZGUgPGhlYXAvU3Ryb25nSW5saW5lcy5oPgogI2luY2x1
ZGUgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oPgpAQCAtMTE3LDcgKzExNyw3IEBAIEpT
RE9NV2luZG93U2hlbGwqIFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVdpbmRvd1NoZWxsKERPTVdy
YXBwZXJXb3JsZCYgd29ybGQpCiAgICAgcmV0dXJuIHdpbmRvd1NoZWxsLmdldCgpOwogfQogCi1T
Y3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0
U291cmNlQ29kZSYgc291cmNlQ29kZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK0RlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZChjb25zdCBT
Y3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQogewog
ICAgIGNvbnN0IFNvdXJjZUNvZGUmIGpzU291cmNlQ29kZSA9IHNvdXJjZUNvZGUuanNTb3VyY2VD
b2RlKCk7CiAgICAgU3RyaW5nIHNvdXJjZVVSTCA9IGpzU291cmNlQ29kZS5wcm92aWRlcigpLT51
cmwoKTsKQEAgLTE0OSwxNCArMTQ5LDE0IEBAIFNjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6
OmV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlCiAgICAg
aWYgKGV2YWx1YXRpb25FeGNlcHRpb24pIHsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKGV4ZWMs
IGV2YWx1YXRpb25FeGNlcHRpb24sIHNvdXJjZUNvZGUuY2FjaGVkU2NyaXB0KCkpOwogICAgICAg
ICBtX3NvdXJjZVVSTCA9IHNhdmVkU291cmNlVVJMOwotICAgICAgICByZXR1cm4gU2NyaXB0VmFs
dWUoKTsKKyAgICAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCk7CiAgICAgfQog
CiAgICAgbV9zb3VyY2VVUkwgPSBzYXZlZFNvdXJjZVVSTDsKLSAgICByZXR1cm4gU2NyaXB0VmFs
dWUoZXhlYy0+dm0oKSwgcmV0dXJuVmFsdWUpOworICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZShleGVjLT52bSgpLCByZXR1cm5WYWx1ZSk7CiB9CiAKLVNjcmlwdFZhbHVlIFNjcmlw
dENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUp
IAorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29u
c3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkgCiB7CiAgICAgcmV0dXJuIGV2YWx1YXRl
SW5Xb3JsZChzb3VyY2VDb2RlLCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CiB9CkBAIC00NTgs
MTMgKzQ1OCwxMyBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNsZWFyU2NyaXB0T2JqZWN0cygp
CiAjZW5kaWYKIH0KIAotU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlw
dEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJv
b2wgZm9yY2VVc2VyR2VzdHVyZSkKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIFNjcmlwdENvbnRy
b2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0
IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCiB7CiAgICAgVXNlckdlc3R1
cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihmb3JjZVVzZXJHZXN0dXJlID8gRGVmaW5pdGVs
eVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6IFBvc3NpYmx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsK
ICAgICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUoc2NyaXB0LCBtX2ZyYW1lLmRvY3VtZW50
KCktPnVybCgpKTsKIAogICAgIGlmICghY2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVT
Y3JpcHQpIHx8IGlzUGF1c2VkKCkpCi0gICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOworICAg
ICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKTsKIAogICAgIHJldHVybiBldmFs
dWF0ZUluV29ybGQoc291cmNlQ29kZSwgd29ybGQpOwogfQpAQCAtNTAwLDE2ICs1MDAsMTYgQEAg
Ym9vbCBTY3JpcHRDb250cm9sbGVyOjpjYW5FeGVjdXRlU2NyaXB0cyhSZWFzb25Gb3JDYWxsaW5n
Q2FuRXhlY3V0ZVNjcmlwdHMgcmVhc28KICAgICByZXR1cm4gbV9mcmFtZS5sb2FkZXIoKS5jbGll
bnQoKS5hbGxvd1NjcmlwdChtX2ZyYW1lLnNldHRpbmdzKCkuaXNTY3JpcHRFbmFibGVkKCkpOwog
fQogCi1TY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0KGNvbnN0IFN0
cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCitEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0
LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCiB7CiAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2Vz
dHVyZUluZGljYXRvcihmb3JjZVVzZXJHZXN0dXJlID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2Vy
R2VzdHVyZSA6IFBvc3NpYmx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKICAgICByZXR1cm4gZXhl
Y3V0ZVNjcmlwdChTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdCwgbV9mcmFtZS5kb2N1bWVudCgpLT51
cmwoKSkpOwogfQogCi1TY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0
KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCitEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNv
ZGUmIHNvdXJjZUNvZGUpCiB7CiAgICAgaWYgKCFjYW5FeGVjdXRlU2NyaXB0cyhBYm91dFRvRXhl
Y3V0ZVNjcmlwdCkgfHwgaXNQYXVzZWQoKSkKLSAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7
CisgICAgICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSgpOwogCiAgICAgUmVmPEZy
YW1lPiBwcm90ZWN0KG1fZnJhbWUpOyAvLyBTY3JpcHQgZXhlY3V0aW9uIGNhbiBkZXN0cm95IHRo
ZSBmcmFtZSwgYW5kIHRodXMgdGhlIFNjcmlwdENvbnRyb2xsZXIuCiAKQEAgLTUzMiw3ICs1MzIs
NyBAQCBib29sIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoY29uc3Qg
VVJMJiB1cmwsIFNob3VsZFJlcGxhY2VEb2N1bQogICAgIGNvbnN0IGludCBqYXZhc2NyaXB0U2No
ZW1lTGVuZ3RoID0gc2l6ZW9mKCJqYXZhc2NyaXB0OiIpIC0gMTsKIAogICAgIFN0cmluZyBkZWNv
ZGVkVVJMID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHVybC5zdHJpbmcoKSk7Ci0gICAgU2Ny
aXB0VmFsdWUgcmVzdWx0ID0gZXhlY3V0ZVNjcmlwdChkZWNvZGVkVVJMLnN1YnN0cmluZyhqYXZh
c2NyaXB0U2NoZW1lTGVuZ3RoKSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgcmVzdWx0
ID0gZXhlY3V0ZVNjcmlwdChkZWNvZGVkVVJMLnN1YnN0cmluZyhqYXZhc2NyaXB0U2NoZW1lTGVu
Z3RoKSk7CiAKICAgICAvLyBJZiBleGVjdXRpbmcgc2NyaXB0IGNhdXNlZCB0aGlzIGZyYW1lIHRv
IGJlIHJlbW92ZWQgZnJvbSB0aGUgcGFnZSwgd2UKICAgICAvLyBkb24ndCB3YW50IHRvIHRyeSB0
byByZXBsYWNlIGl0cyBkb2N1bWVudCEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuaAppbmRleCAzNjZiNzI0Li42N2U5NmVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCkBAIC0zOCw2ICszOCwxMCBAQCBP
QkpDX0NMQVNTIEpTQ29udGV4dDsKIAogc3RydWN0IE5QT2JqZWN0OwogCituYW1lc3BhY2UgRGVw
cmVjYXRlZCB7CitjbGFzcyBTY3JpcHRWYWx1ZTsKK30KKwogbmFtZXNwYWNlIEpTQyB7CiAgICAg
Y2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgRXhlY1N0YXRlOwpAQCAtNTMsNyArNTcs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBIVE1MUGx1Z0luRWxlbWVudDsKIGNsYXNz
IEZyYW1lOwogY2xhc3MgU2NyaXB0U291cmNlQ29kZTsKLWNsYXNzIFNjcmlwdFZhbHVlOwogY2xh
c3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBXaWRnZXQ7CiAKQEAgLTk0LDkgKzk3LDkgQEAgcHVi
bGljOgogCiAgICAgc3RhdGljIHZvaWQgZ2V0QWxsV29ybGRzKFZlY3RvcjxSZWY8RE9NV3JhcHBl
cldvcmxkPj4mKTsKIAotICAgIFNjcmlwdFZhbHVlIGV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0
U291cmNlQ29kZSYpOwotICAgIFNjcmlwdFZhbHVlIGV4ZWN1dGVTY3JpcHQoY29uc3QgU3RyaW5n
JiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKLSAgICBTY3JpcHRWYWx1
ZSBleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNj
cmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOworICAgIERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlIGV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYpOworICAgIERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGV4ZWN1dGVTY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHQs
IGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSBleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcm
IHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOwogCiAgICAgLy8gUmV0dXJu
cyB0cnVlIGlmIGFyZ3VtZW50IGlzIGEgSmF2YVNjcmlwdCBVUkwuCiAgICAgYm9vbCBleGVjdXRl
SWZKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYsIFNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNj
cmlwdFVSTCBzaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgPSBSZXBsYWNlRG9j
dW1lbnRJZkphdmFTY3JpcHRVUkwpOwpAQCAtMTA1LDggKzEwOCw4IEBAIHB1YmxpYzoKICAgICAv
LyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVsZTogaXQgaXMgT0sgdG8gY2FsbCB0
aGlzIGZ1bmN0aW9uIGZyb20gYW55IHRocmVhZCwgZXZlbiByZWVudHJhbnRseS4KICAgICBzdGF0
aWMgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CiAKLSAgICBTY3JpcHRWYWx1ZSBldmFsdWF0
ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7Ci0gICAgU2NyaXB0VmFsdWUgZXZhbHVhdGVJbldv
cmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmKTsKKyAgICBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7Cisg
ICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNv
dXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmKTsKIAogICAgIFdURjo6VGV4dFBvc2l0aW9uIGV2
ZW50SGFuZGxlclBvc2l0aW9uKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCBhZGI1Nzc4Li4yM2Q0YTYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBA
IC00MSw4ICs0MSw4IEBACiAjaW5jbHVkZSAiUGFnZUNvbnNvbGUuaCIKICNpbmNsdWRlICJTY3Jp
cHRCcmVha3BvaW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0RGVidWdMaXN0ZW5lci5oIgotI2luY2x1
ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU291bmQuaCIKKyNpbmNsdWRlIDxiaW5kaW5n
cy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmg+
CiAjaW5jbHVkZSA8cGFyc2VyL1NvdXJjZVByb3ZpZGVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9K
U0xvY2suaD4KQEAgLTEzMCwxNCArMTMwLDE0IEBAIGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OmNh
blNldFNjcmlwdFNvdXJjZSgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFNjcmlwdERl
YnVnU2VydmVyOjpzZXRTY3JpcHRTb3VyY2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
Ym9vbCwgU3RyaW5nKiwgU2NyaXB0VmFsdWUqLCBTY3JpcHRPYmplY3QqKQorYm9vbCBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYs
IGJvb2wsIFN0cmluZyosIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKiwgRGVwcmVjYXRlZDo6U2Ny
aXB0T2JqZWN0KikKIHsKICAgICAvLyBGSVhNRSg0MDMwMCk6IGltcGxlbWVudCB0aGlzLgogICAg
IHJldHVybiBmYWxzZTsKIH0KIAogCi12b2lkIFNjcmlwdERlYnVnU2VydmVyOjp1cGRhdGVDYWxs
U3RhY2soU2NyaXB0VmFsdWUqKQordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6dXBkYXRlQ2FsbFN0
YWNrKERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKikKIHsKICAgICAvLyBUaGlzIG1ldGhvZCBpcyB1
c2VkIGZvciByZXN0YXJ0IGZyYW1lIGZlYXR1cmUgdGhhdCBpcyBub3QgaW1wbGVtZW50ZWQgeWV0
LgogICAgIC8vIEZJWE1FKDQwMzAwKTogaW1wbGVtZW50IHRoaXMuCkBAIC0xNTksNyArMTU5LDcg
QEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRQYXVzZShTY3JpcHREZWJ1Z0xp
c3RlbmVyKiBsaXN0ZW5lcikKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBqc0NhbGxGcmFt
ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgfQotICAgIGxpc3RlbmVyLT5kaWRQYXVzZShzdGF0ZSwg
U2NyaXB0VmFsdWUoc3RhdGUtPnZtKCksIGpzQ2FsbEZyYW1lKSwgU2NyaXB0VmFsdWUoKSk7Cisg
ICAgbGlzdGVuZXItPmRpZFBhdXNlKHN0YXRlLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShzdGF0
ZS0+dm0oKSwganNDYWxsRnJhbWUpLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSgpKTsKIH0KIAog
dm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRDb250aW51ZShTY3JpcHREZWJ1Z0xp
c3RlbmVyKiBsaXN0ZW5lcikKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIFNjcmlwdERlYnVnU2Vy
dmVyOjpjbGVhckNvbXBpbGVkU2NyaXB0cygpCiAgICAgLy8gRklYTUUoODk2NTIpOiBpbXBsZW1l
bnQgdGhpcy4KIH0KIAotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cnVuU2NyaXB0KEpTQzo6RXhl
Y1N0YXRlKiwgY29uc3QgU3RyaW5nJiwgU2NyaXB0VmFsdWUqLCBib29sKiwgU3RyaW5nKikKK3Zv
aWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJ1blNjcmlwdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0
cmluZyYsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKiwgYm9vbCosIFN0cmluZyopCiB7CiAgICAg
Ly8gRklYTUUoODk2NTIpOiBpbXBsZW1lbnQgdGhpcy4KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4IDJmZTlhZGEuLmE3MDE4YzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAt
MzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlNjcmlwdERlYnVnTGlzdGVuZXIuaCIKICNpbmNsdWRl
ICJTb3VyY2VJRC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2Ny
aXB0T2JqZWN0Lmg+CiAjaW5jbHVkZSA8ZGVidWdnZXIvRGVidWdnZXIuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC01MCwxMiArNTEsOSBA
QCBjbGFzcyBEZWJ1Z2dlckNhbGxGcmFtZTsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogY2xhc3Mg
RXhlY1N0YXRlOwogfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNjcmlwdERlYnVn
TGlzdGVuZXI7Ci1jbGFzcyBTY3JpcHRPYmplY3Q7Ci1jbGFzcyBTY3JpcHRWYWx1ZTsKLQogY2xh
c3MgU2NyaXB0RGVidWdTZXJ2ZXIgOiBwdWJsaWMgSlNDOjpEZWJ1Z2dlciB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoU2NyaXB0RGVidWdTZXJ2ZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKQEAgLTY0LDggKzYyLDggQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJCcmVh
a3BvaW50cygpOwogCiAgICAgYm9vbCBjYW5TZXRTY3JpcHRTb3VyY2UoKTsKLSAgICBib29sIHNl
dFNjcmlwdFNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIG5ld0Nv
bnRlbnQsIGJvb2wgcHJldmlldywgU3RyaW5nKiBlcnJvciwgU2NyaXB0VmFsdWUqIG5ld0NhbGxG
cmFtZXMsIFNjcmlwdE9iamVjdCogcmVzdWx0KTsKLSAgICB2b2lkIHVwZGF0ZUNhbGxTdGFjayhT
Y3JpcHRWYWx1ZSogY2FsbEZyYW1lKTsKKyAgICBib29sIHNldFNjcmlwdFNvdXJjZShjb25zdCBT
dHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIGJvb2wgcHJldmlldywg
U3RyaW5nKiBlcnJvciwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUqIG5ld0NhbGxGcmFtZXMsIERl
cHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCogcmVzdWx0KTsKKyAgICB2b2lkIHVwZGF0ZUNhbGxTdGFj
ayhEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSogY2FsbEZyYW1lKTsKIAogICAgIGJvb2wgY2F1c2Vz
UmVjb21waWxhdGlvbigpIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIHN1cHBvcnRzU2VwYXJh
dGVTY3JpcHRDb21waWxhdGlvbkFuZEV4ZWN1dGlvbigpIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC04
Miw3ICs4MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29tcGlsZVNjcmlwdChKU0M6OkV4ZWNT
dGF0ZSosIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkws
IFN0cmluZyogc2NyaXB0SUQsIFN0cmluZyogZXhjZXB0aW9uTWVzc2FnZSk7CiAgICAgdm9pZCBj
bGVhckNvbXBpbGVkU2NyaXB0cygpOwotICAgIHZvaWQgcnVuU2NyaXB0KEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgU2NyaXB0VmFsdWUqIHJlc3VsdCwgYm9vbCogd2Fz
VGhyb3duLCBTdHJpbmcqIGV4Y2VwdGlvbk1lc3NhZ2UpOworICAgIHZvaWQgcnVuU2NyaXB0KEpT
Qzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUqIHJlc3VsdCwgYm9vbCogd2FzVGhyb3duLCBTdHJpbmcqIGV4Y2VwdGlvbk1lc3NhZ2Up
OwogCiAgICAgY2xhc3MgVGFzayB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5jcHAKc2ltaWxh
cml0eSBpbmRleCA4NiUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0T2JqZWN0LmNwcApyZW5hbWUgdG8gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
R2xvYmFsT2JqZWN0LmNwcAppbmRleCAxNDJlNzIzLi5hOGI1YTYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5jcHAKQEAgLTI5LDEwICsyOSwxMCBA
QAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIK
KyNpbmNsdWRlICJTY3JpcHRHbG9iYWxPYmplY3QuaCIKIAogI2luY2x1ZGUgIkpTRE9NQmluZGlu
Zy5oIgotCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0T2JqZWN0Lmg+CiAjaW5jbHVkZSA8cnVu
dGltZS9KU0xvY2suaD4KIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCkBAIC00MywxOCArNDMsNiBA
QCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNjcmlwdE9i
amVjdDo6U2NyaXB0T2JqZWN0KEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgSlNPYmplY3Qq
IG9iamVjdCkKLSAgICA6IFNjcmlwdFZhbHVlKHNjcmlwdFN0YXRlLT52bSgpLCBvYmplY3QpCi0g
ICAgLCBtX3NjcmlwdFN0YXRlKHNjcmlwdFN0YXRlKQotewotfQotCi1TY3JpcHRPYmplY3Q6OlNj
cmlwdE9iamVjdChKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IFNjcmlwdFZhbHVl
JiBzY3JpcHRWYWx1ZSkKLSAgICA6IFNjcmlwdFZhbHVlKHNjcmlwdFN0YXRlLT52bSgpLCBzY3Jp
cHRWYWx1ZS5qc1ZhbHVlKCkpCi0gICAgLCBtX3NjcmlwdFN0YXRlKHNjcmlwdFN0YXRlKQotewot
fQotCiBzdGF0aWMgYm9vbCBoYW5kbGVFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0
YXRlKQogewogICAgIGlmICghc2NyaXB0U3RhdGUtPmhhZEV4Y2VwdGlvbigpKQpAQCAtNjQsNyAr
NTIsNyBAQCBzdGF0aWMgYm9vbCBoYW5kbGVFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqIHNjcmlw
dFN0YXRlKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6
OnNldChKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0
IFNjcmlwdE9iamVjdCYgdmFsdWUpCitib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KEpTQzo6
RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgY29uc3QgRGVwcmVjYXRl
ZDo6U2NyaXB0T2JqZWN0JiB2YWx1ZSkKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhzY3JpcHRT
dGF0ZSk7CiAgICAgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHV0RGlyZWN0
KHNjcmlwdFN0YXRlLT52bSgpLCBJZGVudGlmaWVyKHNjcmlwdFN0YXRlLCBuYW1lKSwgdmFsdWUu
anNPYmplY3QoKSk7CkBAIC04MSw3ICs2OSw3IEBAIGJvb2wgU2NyaXB0R2xvYmFsT2JqZWN0Ojpz
ZXQoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBJbnNwCiB9
CiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKIAotYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6
OmdldChKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUsIFNjcmlw
dE9iamVjdCYgdmFsdWUpCitib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6Z2V0KEpTQzo6RXhlY1N0
YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgRGVwcmVjYXRlZDo6U2NyaXB0T2Jq
ZWN0JiB2YWx1ZSkKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhzY3JpcHRTdGF0ZSk7CiAgICAg
SlNWYWx1ZSBqc1ZhbHVlID0gc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Z2V0
KHNjcmlwdFN0YXRlLCBJZGVudGlmaWVyKHNjcmlwdFN0YXRlLCBuYW1lKSk7CkBAIC05MSw3ICs3
OSw3IEBAIGJvb2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpnZXQoSlNDOjpFeGVjU3RhdGUqIHNjcmlw
dFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBTY3JpCiAgICAgaWYgKCFqc1ZhbHVlLmlzT2JqZWN0
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHZhbHVlID0gU2NyaXB0T2JqZWN0KHNj
cmlwdFN0YXRlLCBhc09iamVjdChqc1ZhbHVlKSk7CisgICAgdmFsdWUgPSBEZXByZWNhdGVkOjpT
Y3JpcHRPYmplY3Qoc2NyaXB0U3RhdGUsIGFzT2JqZWN0KGpzVmFsdWUpKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENh
bGxTdGFjay5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0
LmgKc2ltaWxhcml0eSBpbmRleCA2NCUKY29weSBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9TY3JpcHRDYWxsU3RhY2suaApjb3B5IHRvIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdEdsb2JhbE9iamVjdC5oCmluZGV4IGUwZDdmZDUuLmJlMWVhNjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuaApAQCAtMSwxMCArMSwxMCBAQAog
LyoKLSAqIENvcHlyaWdodCAoYykgMjAwOCwgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKICAqIG1ldDoK
LSAqIAorICoKICAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCkBAIC0xNCw3ICsxNCw3
IEBACiAgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCiAgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQogICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqIAorICoKICAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKICAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCiAgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKQEAgLTI4LDQ1ICsyOCw0MCBAQAogICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaWZuZGVmIFNjcmlwdENhbGxTdGFja19oCi0jZGVmaW5lIFNjcmlwdENh
bGxTdGFja19oCisjaWZuZGVmIFNjcmlwdEdsb2JhbE9iamVjdF9oCisjZGVmaW5lIFNjcmlwdEds
b2JhbE9iamVjdF9oCiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotI2luY2x1ZGUgIkluc3BlY3Rv
clR5cGVCdWlsZGVyLmgiCi0jZW5kaWYKK25hbWVzcGFjZSBEZXByZWNhdGVkIHsKK2NsYXNzIFNj
cmlwdE9iamVjdDsKK30KIAotI2luY2x1ZGUgIlNjcmlwdENhbGxGcmFtZS5oIgotI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEV4ZWNTdGF0ZTsKK30KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbnNwZWN0b3JBcnJheTsKK2NsYXNzIEluamVjdGVk
U2NyaXB0SG9zdDsKK2NsYXNzIEluc3BlY3RvckZyb250ZW5kSG9zdDsKK2NsYXNzIE1lZGlhQ29u
dHJvbHNIb3N0OwogCi1jbGFzcyBTY3JpcHRDYWxsU3RhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxT
Y3JpcHRDYWxsU3RhY2s+IHsKK2NsYXNzIFNjcmlwdEdsb2JhbE9iamVjdCB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlID0gMjAwOwot
ICAgIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRlKFZlY3Rv
cjxTY3JpcHRDYWxsRnJhbWU+Jik7Ci0KLSAgICB+U2NyaXB0Q2FsbFN0YWNrKCk7Ci0KLSAgICBj
b25zdCBTY3JpcHRDYWxsRnJhbWUgJmF0KHNpemVfdCkgY29uc3Q7Ci0gICAgc2l6ZV90IHNpemUo
KSBjb25zdDsKLQotICAgIGJvb2wgaXNFcXVhbChTY3JpcHRDYWxsU3RhY2sqKSBjb25zdDsKLQor
ICAgIHN0YXRpYyBib29sIHNldChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIGNv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYpOwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0g
ICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNh
bGxGcmFtZT4+IGJ1aWxkSW5zcGVjdG9yQXJyYXkoKSBjb25zdDsKKyAgICBzdGF0aWMgYm9vbCBz
ZXQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lLCBJbnNwZWN0b3JGcm9udGVuZEhv
c3QqKTsKKyAgICBzdGF0aWMgYm9vbCBzZXQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiBu
YW1lLCBJbmplY3RlZFNjcmlwdEhvc3QqKTsKKyNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9DT05U
Uk9MU19TQ1JJUFQpCisgICAgc3RhdGljIGJvb2wgc2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
Y2hhciogbmFtZSwgTWVkaWFDb250cm9sc0hvc3QqKTsKICNlbmRpZgogCisgICAgc3RhdGljIGJv
b2wgZ2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgRGVwcmVjYXRlZDo6U2Ny
aXB0T2JqZWN0Jik7CisgICAgc3RhdGljIGJvb2wgcmVtb3ZlKEpTQzo6RXhlY1N0YXRlKiwgY29u
c3QgY2hhciogbmFtZSk7CiBwcml2YXRlOgotICAgIFNjcmlwdENhbGxTdGFjayhWZWN0b3I8U2Ny
aXB0Q2FsbEZyYW1lPiYpOwotCi0gICAgVmVjdG9yPFNjcmlwdENhbGxGcmFtZT4gbV9mcmFtZXM7
CisgICAgU2NyaXB0R2xvYmFsT2JqZWN0KCkgeyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKLSNlbmRpZiAvLyBTY3JpcHRDYWxsU3RhY2tfaAorI2VuZGlmIC8vIFNjcmlwdEdsb2Jh
bE9iamVjdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRP
YmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZmJlNjcxLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5oCisrKyAvZGV2L251bGwKQEAgLTEsNzAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0Ogot
ICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0g
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgU2NyaXB0T2JqZWN0X2gKLSNkZWZpbmUgU2NyaXB0T2JqZWN0X2gKLQot
I2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKLQotI2lu
Y2x1ZGUgPGhlYXAvU3Ryb25nLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU09iamVjdC5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZEhvc3Q7Ci0K
LSAgICBjbGFzcyBTY3JpcHRPYmplY3QgOiBwdWJsaWMgU2NyaXB0VmFsdWUgewotICAgIHB1Ymxp
YzoKLSAgICAgICAgU2NyaXB0T2JqZWN0KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCop
OwotICAgICAgICBTY3JpcHRPYmplY3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTY3JpcHRWYWx1
ZSYpOwotICAgICAgICBTY3JpcHRPYmplY3QoKSA6IG1fc2NyaXB0U3RhdGUoMCkgeyB9Ci0gICAg
ICAgIEpTQzo6SlNPYmplY3QqIGpzT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gYXNPYmplY3QoanNW
YWx1ZSgpKTsgfQotICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUoKSBjb25zdCB7
IHJldHVybiBtX3NjcmlwdFN0YXRlOyB9Ci0KLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIEpTQzo6
RXhlY1N0YXRlKiBtX3NjcmlwdFN0YXRlOwotICAgIH07Ci0KLSAgICBjbGFzcyBTY3JpcHRHbG9i
YWxPYmplY3QgewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIGJvb2wgc2V0KEpTQzo6RXhl
Y1N0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgY29uc3QgU2NyaXB0T2JqZWN0Jik7Ci0jaWYgRU5B
QkxFKElOU1BFQ1RPUikKLSAgICAgICAgc3RhdGljIGJvb2wgc2V0KEpTQzo6RXhlY1N0YXRlKiwg
Y29uc3QgY2hhciogbmFtZSwgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Kik7Ci0jZW5kaWYKLSAgICAg
ICAgc3RhdGljIGJvb2wgZ2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgU2Ny
aXB0T2JqZWN0Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIHJlbW92ZShKU0M6OkV4ZWNTdGF0ZSos
IGNvbnN0IGNoYXIqIG5hbWUpOwotICAgIHByaXZhdGU6Ci0gICAgICAgIFNjcmlwdEdsb2JhbE9i
amVjdCgpIHsgfQotICAgIH07Ci0KLX0KLQotI2VuZGlmIC8vIFNjcmlwdE9iamVjdF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUuY3BwCmluZGV4IDQ1MDUwYWUu
LjIxMjQ0OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFBy
b2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUu
Y3BwCkBAIC0zMCw4ICszMCw4IEBACiAKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlLmgiCiAKLSNp
bmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNp
bmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8cHJvZmlsZXIv
UHJvZmlsZS5oPgogI2luY2x1ZGUgPHByb2ZpbGVyL1Byb2ZpbGVOb2RlLmg+CiAKQEAgLTc0LDE2
ICs3NCwxNiBAQCBkb3VibGUgU2NyaXB0UHJvZmlsZTo6aWRsZVRpbWUoKSBjb25zdAogfQogCiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKLXN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9m
aWxlcjo6Q1BVUHJvZmlsZU5vZGU+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9yKGNvbnN0IEpTQzo6
UHJvZmlsZU5vZGUqIG5vZGUpCitzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9yKGNv
bnN0IEpTQzo6UHJvZmlsZU5vZGUqIG5vZGUpCiB7CiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRy
PEpTQzo6UHJvZmlsZU5vZGU+PiBQcm9maWxlTm9kZXNMaXN0OwogICAgIGNvbnN0IFByb2ZpbGVO
b2Rlc0xpc3QmIG5vZGVDaGlsZHJlbiA9IG5vZGUtPmNoaWxkcmVuKCk7CiAgICAgUHJvZmlsZU5v
ZGVzTGlzdDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbm9kZUNoaWxkcmVuLmVuZCgpOwotICAgIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxl
Tm9kZT4+IGNoaWxkcmVuID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQcm9maWxl
cjo6Q1BVUHJvZmlsZU5vZGU+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2Zp
bGVOb2RlPj4gY2hpbGRyZW4gPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+OjpjcmVhdGUoKTsKICAg
ICBmb3IgKFByb2ZpbGVOb2Rlc0xpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBub2RlQ2hpbGRy
ZW4uYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikKICAgICAgICAgY2hpbGRyZW4tPmFkZEl0
ZW0oYnVpbGRJbnNwZWN0b3JPYmplY3RGb3IoaXRlci0+Z2V0KCkpKTsKIAotICAgIFJlZlB0cjxU
eXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlPiByZXN1bHQgPSBUeXBlQnVpbGRl
cjo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlOjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+IHJlc3VsdCA9IEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZTo6Y3JlYXRlKCkKICAg
ICAgICAgLnNldEZ1bmN0aW9uTmFtZShub2RlLT5mdW5jdGlvbk5hbWUoKSkKICAgICAgICAgLnNl
dFVybChub2RlLT51cmwoKSkKICAgICAgICAgLnNldExpbmVOdW1iZXIobm9kZS0+bGluZU51bWJl
cigpKQpAQCAtOTYsMTIgKzk2LDEyIEBAIHN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQ
cm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9yCiAgICAgcmV0
dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlByb2Zp
bGVyOjpDUFVQcm9maWxlTm9kZT4gU2NyaXB0UHJvZmlsZTo6YnVpbGRJbnNwZWN0b3JPYmplY3RG
b3JIZWFkKCkgY29uc3QKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UHJvZmls
ZXI6OkNQVVByb2ZpbGVOb2RlPiBTY3JpcHRQcm9maWxlOjpidWlsZEluc3BlY3Rvck9iamVjdEZv
ckhlYWQoKSBjb25zdAogewogICAgIHJldHVybiBidWlsZEluc3BlY3Rvck9iamVjdEZvcihtX3By
b2ZpbGUtPmhlYWQoKSk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpD
UFVQcm9maWxlTm9kZT4gU2NyaXB0UHJvZmlsZTo6YnVpbGRJbnNwZWN0b3JPYmplY3RGb3JCb3R0
b21VcEhlYWQoKSBjb25zdAorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9m
aWxlcjo6Q1BVUHJvZmlsZU5vZGU+IFNjcmlwdFByb2ZpbGU6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0
Rm9yQm90dG9tVXBIZWFkKCkgY29uc3QKIHsKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUuaAppbmRleCA4MDk1ZmU4Li4zYjI0MzUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5oCkBAIC0zNSw3ICsz
NSw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
LSNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgorI2luY2x1ZGUgIkluc3BlY3Rvcldl
YlR5cGVCdWlsZGVycy5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDQsOCArNDQs
NiBAQCBjbGFzcyBQcm9maWxlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEluc3Bl
Y3Rvck9iamVjdDsKLQogY2xhc3MgU2NyaXB0UHJvZmlsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNj
cmlwdFByb2ZpbGU+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTY3JpcHRQcm9m
aWxlPiBjcmVhdGUoUGFzc1JlZlB0cjxKU0M6OlByb2ZpbGU+IHByb2ZpbGUpOwpAQCAtNTcsOCAr
NTUsOCBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGlkbGVUaW1lKCkgY29uc3Q7CiAKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQ
cm9maWxlTm9kZT4gYnVpbGRJbnNwZWN0b3JPYmplY3RGb3JIZWFkKCkgY29uc3Q7Ci0gICAgUGFz
c1JlZlB0cjxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlPiBidWlsZEluc3Bl
Y3Rvck9iamVjdEZvckJvdHRvbVVwSGVhZCgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlPiBidWlsZEluc3BlY3Rv
ck9iamVjdEZvckhlYWQoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZT4gYnVpbGRJbnNwZWN0b3JPYmplY3RGb3JC
b3R0b21VcEhlYWQoKSBjb25zdDsKICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuY3BwCmluZGV4IGZkZTI3ZDAuLmZjOTM5OGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5jcHAKQEAg
LTM1LDggKzM1LDkgQEAKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIk1haW5G
cmFtZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNp
bmNsdWRlICJTY3JpcHRTdGF0ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5o
PgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8cHJvZmlsZXIv
TGVnYWN5UHJvZmlsZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCkBAIC00NywxMiAr
NDgsMTIgQEAgdm9pZCBTY3JpcHRQcm9maWxlcjo6Y29sbGVjdEdhcmJhZ2UoKQogICAgIGdjQ29u
dHJvbGxlcigpLmdhcmJhZ2VDb2xsZWN0U29vbigpOwogfQogCi1TY3JpcHRPYmplY3QgU2NyaXB0
UHJvZmlsZXI6Om9iamVjdEJ5SGVhcE9iamVjdElkKHVuc2lnbmVkKQorRGVwcmVjYXRlZDo6U2Ny
aXB0T2JqZWN0IFNjcmlwdFByb2ZpbGVyOjpvYmplY3RCeUhlYXBPYmplY3RJZCh1bnNpZ25lZCkK
IHsKLSAgICByZXR1cm4gU2NyaXB0T2JqZWN0KCk7CisgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNj
cmlwdE9iamVjdCgpOwogfQogCi11bnNpZ25lZCBTY3JpcHRQcm9maWxlcjo6Z2V0SGVhcE9iamVj
dElkKGNvbnN0IFNjcmlwdFZhbHVlJikKK3Vuc2lnbmVkIFNjcmlwdFByb2ZpbGVyOjpnZXRIZWFw
T2JqZWN0SWQoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmKQogewogICAgIHJldHVybiAw
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmls
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmgKaW5kZXgg
NzI3YzZlZS4uYzJmZGQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0UHJvZmlsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQ
cm9maWxlci5oCkBAIC0yOCwyMCArMjgsMjQgQEAKICNkZWZpbmUgU2NyaXB0UHJvZmlsZXJfaAog
CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisKICNpbmNsdWRlICJTY3JpcHRIZWFw
U25hcHNob3QuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlLmgiCiAjaW5jbHVkZSAiU2NyaXB0
U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CiAKK25hbWVzcGFjZSBEZXByZWNhdGVkIHsKK2NsYXNzIFNjcmlwdE9iamVjdDsKK2Ns
YXNzIFNjcmlwdFZhbHVlOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEV4dGVy
bmFsQXJyYXlWaXNpdG9yOwogY2xhc3MgRXh0ZXJuYWxTdHJpbmdWaXNpdG9yOwogY2xhc3MgV3Jh
cHBlZE5vZGVWaXNpdG9yOwogY2xhc3MgUGFnZTsKLWNsYXNzIFNjcmlwdE9iamVjdDsKLWNsYXNz
IFNjcmlwdFZhbHVlOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAKIGNsYXNzIFNjcmlwdFBy
b2ZpbGVyIHsKQEAgLTU3LDggKzYxLDggQEAgcHVibGljOgogICAgIH07CiAKICAgICBzdGF0aWMg
dm9pZCBjb2xsZWN0R2FyYmFnZSgpOwotICAgIHN0YXRpYyBTY3JpcHRPYmplY3Qgb2JqZWN0QnlI
ZWFwT2JqZWN0SWQodW5zaWduZWQgaWQpOwotICAgIHN0YXRpYyB1bnNpZ25lZCBnZXRIZWFwT2Jq
ZWN0SWQoY29uc3QgU2NyaXB0VmFsdWUmKTsKKyAgICBzdGF0aWMgRGVwcmVjYXRlZDo6U2NyaXB0
T2JqZWN0IG9iamVjdEJ5SGVhcE9iamVjdElkKHVuc2lnbmVkIGlkKTsKKyAgICBzdGF0aWMgdW5z
aWduZWQgZ2V0SGVhcE9iamVjdElkKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJik7CiAg
ICAgc3RhdGljIHZvaWQgc3RhcnQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGxl
KTsKICAgICBzdGF0aWMgdm9pZCBzdGFydEZvclBhZ2UoUGFnZSosIGNvbnN0IFN0cmluZyYgdGl0
bGUpOwogICAgIHN0YXRpYyB2b2lkIHN0YXJ0Rm9yV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xv
YmFsU2NvcGUqLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRTdGF0ZS5oCmluZGV4IDM0OWQ5NGEuLjcwZDE0YzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaApAQCAtMSwxMSArMSwxMSBAQAogLyoKICAqIENvcHly
aWdodCAoYykgMjAwOCwgMjAxMSBHb29nbGUgSW5jLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIAorICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQogICogbWV0OgotICogCisg
KgogICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKICAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKQEAgLTE1LDcgKzE1LDcgQEAKICAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKICAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCiAgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICogCisgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwogICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKICAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgpAQCAtMzQsNyArMzQsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IGNsYXNzIEV4ZWNTdGF0ZTsKLWNsYXNzIEpTR2xvYmFsT2JqZWN0OwogfQogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcAppbmRleCA2Zjg2YzhiLi4xNGFmNDhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTQw
LDcgKzQwLDYgQEAKICNpbmNsdWRlICJKU01lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiSlNOYXZp
Z2F0b3IuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlNjcmlwdFZh
bHVlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xp
ZW50RGF0YS5oIgogI2luY2x1ZGUgPGxpbWl0cz4KQEAgLTIwMDIsMTAgKzIwMDEsMTAgQEAgSlNW
YWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKEV4ZWNTdGF0ZSogZXhlYywg
SlNHbG9iYWxPYmplY3QqIGdsb2IKIH0KIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi1TY3JpcHRW
YWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplRm9ySW5zcGVjdG9yKEpTQzo6
RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSkKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemVGb3JJbnNwZWN0b3IoSlNDOjpFeGVjU3RhdGUqIHNj
cmlwdFN0YXRlKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZShzY3JpcHRTdGF0
ZSwgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgMCk7Ci0gICAgcmV0dXJuIFNj
cmlwdFZhbHVlKHNjcmlwdFN0YXRlLT52bSgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlKHNjcmlwdFN0YXRlLT52bSgpLCB2YWx1ZSk7CiB9CiAjZW5kaWYKIApA
QCAtMjA0OSw2ICsyMDQ4LDIzIEBAIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmJvb2xlYW5WYWx1ZShib29sIHZhbHVlCiAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoYnVmZmVyKSk7CiB9CiAKK1Bhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnNlcmlh
bGl6ZShjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIEpTQzo6RXhlY1N0YXRl
KiBzY3JpcHRTdGF0ZSwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCit7
CisgICAgcmV0dXJuIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHNjcmlwdFN0YXRlLCB2
YWx1ZS5qc1ZhbHVlKCksIG51bGxwdHIsIG51bGxwdHIsIHRocm93RXhjZXB0aW9ucyk7Cit9CisK
K1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OnNlcmlhbGl6ZShjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIEpTQzo6RXhl
Y1N0YXRlKiBzY3JpcHRTdGF0ZSwgTWVzc2FnZVBvcnRBcnJheSogbWVzc2FnZVBvcnRzLCBBcnJh
eUJ1ZmZlckFycmF5KiBhcnJheUJ1ZmZlcnMsIGJvb2wmIGRpZFRocm93KQoreworICAgIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKHNjcmlwdFN0YXRlLCB2YWx1ZS5qc1ZhbHVlKCksIG1lc3NhZ2VQb3J0
cywgYXJyYXlCdWZmZXJzKTsKKyAgICBkaWRUaHJvdyA9IHNjcmlwdFN0YXRlLT5oYWRFeGNlcHRp
b24oKTsKKyAgICByZXR1cm4gc2VyaWFsaXplZFZhbHVlLnJlbGVhc2UoKTsKK30KKworRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShKU0M6
OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUsIFNl
cmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQoreworICAgIHJldHVybiBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZS0+dm0oKSwgdmFsdWUtPmRlc2VyaWFsaXpl
KHNjcmlwdFN0YXRlLCBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAwLCB0aHJv
d0V4Y2VwdGlvbnMpKTsKK30KKwogdm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om1heWJlVGhy
b3dFeGNlcHRpb25JZlNlcmlhbGl6YXRpb25GYWlsZWQoRXhlY1N0YXRlKiBleGVjLCBTZXJpYWxp
emF0aW9uUmV0dXJuQ29kZSBjb2RlKQogewogICAgIGlmIChjb2RlID09IFN1Y2Nlc3NmdWxseUNv
bXBsZXRlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgKaW5kZXggNjlkMjVmNi4uODU5ODFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTI4LDYgKzI4LDcg
QEAKICNkZWZpbmUgU2VyaWFsaXplZFNjcmlwdFZhbHVlX2gKIAogI2luY2x1ZGUgIlNjcmlwdFN0
YXRlLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxoZWFw
L1N0cm9uZy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDxy
dW50aW1lL0pTQ0pTVmFsdWUuaD4KQEAgLTU3LDcgKzU4LDYgQEAgZW51bSBTZXJpYWxpemF0aW9u
UmV0dXJuQ29kZSB7CiAgICAgCiBlbnVtIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgeyBOb25UaHJv
d2luZywgVGhyb3dpbmcgfTsKIAotY2xhc3MgU2NyaXB0VmFsdWU7CiBjbGFzcyBTaGFyZWRCdWZm
ZXI7CiAKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6CkBAIC02Nyw4ICs2Nyw3IEBAIGNs
YXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6CiAgICAgcHVibGljIFJlZkNvdW50ZWQ8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiB7CiAjZW5kaWYKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNW
YWx1ZSwgTWVzc2FnZVBvcnRBcnJheSosIEFycmF5QnVmZmVyQXJyYXkqLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcmlhbGl6YXRpb25FcnJv
ck1vZGUgPSBUaHJvd2luZyk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIE1lc3NhZ2VQb3J0
QXJyYXkqLCBBcnJheUJ1ZmZlckFycmF5KiwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSA9IFRocm93
aW5nKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0
ZShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYsIE1lc3NhZ2VQb3J0QXJyYXkqLCBBcnJheUJ1ZmZl
ckFycmF5KiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYsIEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbik7CiAKQEAgLTgzLDYgKzgyLDEwIEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHVuZGVmaW5lZFZhbHVlKCk7
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBib29sZWFuVmFs
dWUoYm9vbCB2YWx1ZSk7CiAKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IHNlcmlhbGl6ZShjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIEpTQzo6RXhl
Y1N0YXRlKiwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSA9IFRocm93aW5nKTsKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZShjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYsIEpTQzo6RXhlY1N0YXRlKiwgTWVzc2FnZVBvcnRBcnJheSosIEFy
cmF5QnVmZmVyQXJyYXkqLCBib29sJik7CisgICAgc3RhdGljIERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlIGRlc2VyaWFsaXplKEpTQzo6RXhlY1N0YXRlKiwgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiwg
U2VyaWFsaXphdGlvbkVycm9yTW9kZSA9IFRocm93aW5nKTsKKwogICAgIHN0YXRpYyB1aW50MzJf
dCB3aXJlRm9ybWF0VmVyc2lvbigpOwogCiAgICAgU3RyaW5nIHRvU3RyaW5nKCk7CkBAIC05Miw3
ICs5NSw3IEBAIHB1YmxpYzoKICAgICBKU1ZhbHVlUmVmIGRlc2VyaWFsaXplKEpTQ29udGV4dFJl
ZiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAg
U2NyaXB0VmFsdWUgZGVzZXJpYWxpemVGb3JJbnNwZWN0b3IoSlNDOjpFeGVjU3RhdGUqKTsKKyAg
ICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUZvckluc3BlY3RvcihKU0M6OkV4
ZWNTdGF0ZSopOwogI2VuZGlmCiAKICAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEoKSBj
b25zdCB7IHJldHVybiBtX2RhdGE7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggMjkwYjFmMS4uNWRlNjA0YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29u
dHJvbGxlci5jcHAKQEAgLTMxLDEyICszMSwxMiBAQAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5o
IgogI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJT
Y3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJX
ZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNp
bmNsdWRlICJXb3JrZXJPYmplY3RQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdERlYnVn
U2VydmVyLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisjaW5jbHVkZSA8YmluZGluZ3Mv
U2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxoZWFwL1N0cm9uZ0lubGluZXMuaD4KICNpbmNsdWRl
IDxpbnRlcnByZXRlci9JbnRlcnByZXRlci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvQ29tcGxldGlv
bi5oPgpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZh
bHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKICAgICBpZiAoaXNFeGVj
dXRpb25Gb3JiaWRkZW4oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU2NyaXB0VmFsdWUgZXhj
ZXB0aW9uOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGV4Y2VwdGlvbjsKICAgICBldmFs
dWF0ZShzb3VyY2VDb2RlLCAmZXhjZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0aW9uLmpzVmFsdWUo
KSkgewogICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSgpKTsKQEAgLTEyMSw3ICsxMjEsNyBA
QCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJj
ZUNvZGUmIHNvdXJjZUNvZGUpCiAgICAgfQogfQogCi12b2lkIFdvcmtlclNjcmlwdENvbnRyb2xs
ZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIFNjcmlwdFZh
bHVlKiBleGNlcHRpb24pCit2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNv
bnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
KiBleGNlcHRpb24pCiB7CiAgICAgaWYgKGlzRXhlY3V0aW9uRm9yYmlkZGVuKCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTE0NSwxMyArMTQ1LDEzIEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxl
cjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgU2NyaXB0CiAg
ICAgICAgIGludCBjb2x1bW5OdW1iZXIgPSAwOwogICAgICAgICBTdHJpbmcgc291cmNlVVJMID0g
c291cmNlQ29kZS51cmwoKS5zdHJpbmcoKTsKICAgICAgICAgaWYgKG1fd29ya2VyR2xvYmFsU2Nv
cGUtPnNhbml0aXplU2NyaXB0RXJyb3IoZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIsIHNvdXJjZVVSTCwgc291cmNlQ29kZS5jYWNoZWRTY3JpcHQoKSkpCi0gICAgICAgICAg
ICAqZXhjZXB0aW9uID0gU2NyaXB0VmFsdWUoKm1fdm0sIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRp
b24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgZXJyb3JNZXNzYWdlLmltcGwoKSkpKTsKKyAgICAg
ICAgICAgICpleGNlcHRpb24gPSBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSgqbV92bSwgZXhlYy0+
dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBlcnJvck1lc3NhZ2Uu
aW1wbCgpKSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICAqZXhjZXB0aW9uID0gU2NyaXB0
VmFsdWUoKm1fdm0sIGV2YWx1YXRpb25FeGNlcHRpb24pOworICAgICAgICAgICAgKmV4Y2VwdGlv
biA9IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCptX3ZtLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsK
ICAgICB9CiB9CiAKLXZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6c2V0RXhjZXB0aW9uKGNv
bnN0IFNjcmlwdFZhbHVlJiBleGNlcHRpb24pCit2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6
OnNldEV4Y2VwdGlvbihjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZXhjZXB0aW9uKQog
ewogICAgIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxFeGVjKCktPnZtKCkudGhy
b3dFeGNlcHRpb24obV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbEV4ZWMoKSwgZXhj
ZXB0aW9uLmpzVmFsdWUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKaW5kZXggOGJiN2Y0OS4uMDI1YzM3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIu
aApAQCAtMzMsMTUgKzMzLDE4IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvVGhyZWFkaW5nLmg+CiAKK25hbWVzcGFjZSBEZXByZWNhdGVkIHsKK2NsYXNzIFNjcmlw
dFZhbHVlOworfQorCiBuYW1lc3BhY2UgSlNDIHsKLSAgICBjbGFzcyBWTTsKK2NsYXNzIFZNOwog
fQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBKU1dvcmtlckdsb2JhbFNjb3Bl
OwogICAgIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7Ci0gICAgY2xhc3MgU2NyaXB0VmFsdWU7CiAg
ICAgY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAKICAgICBjbGFzcyBXb3JrZXJTY3JpcHRDb250
cm9sbGVyIHsKQEAgLTU3LDkgKzYwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9
CiAKICAgICAgICAgdm9pZCBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7Ci0gICAg
ICAgIHZvaWQgZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIFNjcmlwdFZhbHVlKiBl
eGNlcHRpb24pOworICAgICAgICB2b2lkIGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUm
LCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSogZXhjZXB0aW9uKTsKIAotICAgICAgICB2b2lkIHNl
dEV4Y2VwdGlvbihjb25zdCBTY3JpcHRWYWx1ZSYpOworICAgICAgICB2b2lkIHNldEV4Y2VwdGlv
bihjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYpOwogCiAgICAgICAgIC8vIEFzeW5jIHJl
cXVlc3QgdG8gdGVybWluYXRlIGEgSlMgcnVuIGV4ZWN1dGlvbi4gRXZlbnR1YWxseSBjYXVzZXMg
dGVybWluYXRpb24KICAgICAgICAgLy8gZXhjZXB0aW9uIHJhaXNlZCBkdXJpbmcgSlMgZXhlY3V0
aW9uLCBpZiB0aGUgd29ya2VyIHRocmVhZCBoYXBwZW5zIHRvIHJ1biBKUy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggYWYw
NDQyYS4uYTY4ZjdkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTMyMzQsNyArMzIzNCw3IEBAIG15ICVuYXRpdmVUeXBl
ID0gKAogICAgICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiID0+ICJSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiIsCiAgICAgIkRhdGUiID0+ICJkb3VibGUiLAogICAgICJEaWN0aW9uYXJ5IiA9
PiAiRGljdGlvbmFyeSIsCi0gICAgImFueSIgPT4gIlNjcmlwdFZhbHVlIiwKKyAgICAiYW55IiA9
PiAiRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUiLAogICAgICJib29sZWFuIiA9PiAiYm9vbCIsCiAg
ICAgImRvdWJsZSIgPT4gImRvdWJsZSIsCiAgICAgImZsb2F0IiA9PiAiZmxvYXQiLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNw
cAppbmRleCA5MzFkYjI2Li43NzY0Yzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtMTY1MSw3ICsxNjUxLDcg
QEAgdm9pZCBzZXRKU1Rlc3RPYmpBbnlBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogdGhpc09iamVjdCwgSlNWYWx1ZSB2YWwKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KHRoaXNPYmplY3QpOwog
ICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Ci0gICAgU2NyaXB0VmFsdWUg
bmF0aXZlVmFsdWUoZXhlYy0+dm0oKSwgdmFsdWUpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlIG5hdGl2ZVZhbHVlKGV4ZWMtPnZtKCksIHZhbHVlKTsKICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKICAgICBpbXBsLnNldEFueUF0dHJpYnV0ZShuYXRp
dmVWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmNwcAppbmRleCBiMGZiYTk5Li5kNWVm
MGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgQ3Vz
dG9tRXZlbnQ6On5DdXN0b21FdmVudCgpCiB7CiB9CiAKLXZvaWQgQ3VzdG9tRXZlbnQ6OmluaXRD
dXN0b21FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29s
IGNhbmNlbGFibGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBkZXRhaWwpCit2b2lkIEN1c3RvbUV2ZW50
Ojppbml0Q3VzdG9tRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZGV0YWls
KQogewogICAgIEFTU0VSVCghbV9zZXJpYWxpemVkU2NyaXB0VmFsdWUuZ2V0KCkpOwogICAgIGlm
IChkaXNwYXRjaGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRXZl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5oCmluZGV4IGJjODkwOTYuLjdm
NGMxY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5oCkBAIC0yNywxNSArMjcsMTUgQEAKICNk
ZWZpbmUgQ3VzdG9tRXZlbnRfaAogCiAjaW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNsdWRlICJTY3Jp
cHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUg
PGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0
IEN1c3RvbUV2ZW50SW5pdCA6IHB1YmxpYyBFdmVudEluaXQgewogICAgIEN1c3RvbUV2ZW50SW5p
dCgpOwogCi0gICAgU2NyaXB0VmFsdWUgZGV0YWlsOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlIGRldGFpbDsKIH07CiAKIGNsYXNzIEN1c3RvbUV2ZW50IDogcHVibGljIEV2ZW50IHsKQEAg
LTUyLDE4ICs1MiwxOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3Vz
dG9tRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIpKTsKICAgICB9CiAKLSAgICB2b2lkIGluaXRDdXN0
b21FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNh
bmNlbGFibGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBkZXRhaWwpOworICAgIHZvaWQgaW5pdEN1c3Rv
bUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2Fu
Y2VsYWJsZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGRldGFpbCk7CiAKICAgICB2
aXJ0dWFsIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Q7CiAKLSAgICBjb25z
dCBTY3JpcHRWYWx1ZSYgZGV0YWlsKCkgY29uc3QgeyByZXR1cm4gbV9kZXRhaWw7IH0KKyAgICBj
b25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZGV0YWlsKCkgY29uc3QgeyByZXR1cm4gbV9k
ZXRhaWw7IH0KICAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKCkgeyByZXR1cm4gbV9zZXJpYWxpemVkU2NyaXB0VmFsdWU7IH0KIAogcHJp
dmF0ZToKICAgICBDdXN0b21FdmVudCgpOwogICAgIEN1c3RvbUV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgY29uc3QgQ3VzdG9tRXZlbnRJbml0JiBpbml0aWFsaXplcik7CiAKLSAgICBT
Y3JpcHRWYWx1ZSBtX2RldGFpbDsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBtX2RldGFp
bDsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX3NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKaW5kZXggZmQ4Njk3OC4u
NDM4OGM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKQEAgLTIxLDE0ICsyMSwx
MyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgogCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGlj
IGlubGluZSBib29sIGlzVmFsaWRTb3VyY2UoRXZlbnRUYXJnZXQqIHNvdXJjZSkKQEAgLTU2LDcg
KzU1LDcgQEAgTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBjb25zdCBNZXNzYWdlRXZlbnRJbml0JiBpbmkKIHsKIH0KIAotTWVzc2FnZUV2ZW50OjpN
ZXNzYWdlRXZlbnQoY29uc3QgU2NyaXB0VmFsdWUmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
LCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBzb3Vy
Y2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMpCitNZXNzYWdlRXZlbnQ6Ok1l
c3NhZ2VFdmVudChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIFBhc3NSZWZQdHI8RXZlbnRU
YXJnZXQ+IHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cykKICAgICA6
IEV2ZW50KGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQsIGZhbHNlLCBmYWxzZSkKICAgICAsIG1f
ZGF0YVR5cGUoRGF0YVR5cGVTY3JpcHRWYWx1ZSkKICAgICAsIG1fZGF0YUFzU2NyaXB0VmFsdWUo
ZGF0YSkKQEAgLTEwOCw3ICsxMDcsNyBAQCBNZXNzYWdlRXZlbnQ6On5NZXNzYWdlRXZlbnQoKQog
ewogfQogCi12b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IFNjcmlw
dFZhbHVlJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZl
bnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9y
dHMpCit2b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5n
JiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRB
cnJheT4gcG9ydHMpCiB7CiAgICAgaWYgKGRpc3BhdGNoZWQoKSkKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCmluZGV4IGI5N2E3MDMuLjY4NjBkMWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTWVzc2FnZUV2ZW50LmgKQEAgLTMyLDggKzMyLDggQEAKICNpbmNsdWRlICJET01XaW5k
b3cuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCi0jaW5j
bHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIK
KyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvQXJy
YXlCdWZmZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDMsNyArNDMsNyBAQCBjbGFz
cyBFdmVudFRhcmdldDsKIHN0cnVjdCBNZXNzYWdlRXZlbnRJbml0IDogcHVibGljIEV2ZW50SW5p
dCB7CiAgICAgTWVzc2FnZUV2ZW50SW5pdCgpOwogCi0gICAgU2NyaXB0VmFsdWUgZGF0YTsKKyAg
ICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBkYXRhOwogICAgIFN0cmluZyBvcmlnaW47CiAgICAg
U3RyaW5nIGxhc3RFdmVudElkOwogICAgIFJlZlB0cjxFdmVudFRhcmdldD4gc291cmNlOwpAQCAt
NTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IE1lc3NhZ2VFdmVudCk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVu
dD4gY3JlYXRlKFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMsIGNvbnN0IFNjcmlw
dFZhbHVlJiBkYXRhID0gU2NyaXB0VmFsdWUoKSwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSBTdHJp
bmcoKSwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9IFN0cmluZygpLCBQYXNzUmVmUHRyPEV2
ZW50VGFyZ2V0PiBzb3VyY2UgPSAwKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVu
dD4gY3JlYXRlKFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMsIGNvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJiBkYXRhID0gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKSwgY29u
c3QgU3RyaW5nJiBvcmlnaW4gPSBTdHJpbmcoKSwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9
IFN0cmluZygpLCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBzb3VyY2UgPSAwKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZXNzYWdlRXZlbnQoZGF0YSwgb3JpZ2luLCBsYXN0
RXZlbnRJZCwgc291cmNlLCBwb3J0cykpOwogICAgIH0KQEAgLTgyLDcgKzgyLDcgQEAgcHVibGlj
OgogICAgIH0KICAgICB2aXJ0dWFsIH5NZXNzYWdlRXZlbnQoKTsKIAotICAgIHZvaWQgaW5pdE1l
c3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29s
IGNhbmNlbGFibGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdp
biwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIFBhc3NPd25Q
dHI8TWVzc2FnZVBvcnRBcnJheT4pOworICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29u
c3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIFBhc3NPd25QdHI8TWVz
c2FnZVBvcnRBcnJheT4pOwogICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2Fn
ZVBvcnRBcnJheT4pOwogCiAgICAgY29uc3QgU3RyaW5nJiBvcmlnaW4oKSBjb25zdCB7IHJldHVy
biBtX29yaWdpbjsgfQpAQCAtMTA3LDcgKzEwNyw3IEBAIHB1YmxpYzoKICAgICAgICAgRGF0YVR5
cGVBcnJheUJ1ZmZlcgogICAgIH07CiAgICAgRGF0YVR5cGUgZGF0YVR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGFUeXBlOyB9Ci0gICAgY29uc3QgU2NyaXB0VmFsdWUmIGRhdGFBc1NjcmlwdFZh
bHVlKCkgY29uc3QgeyBBU1NFUlQobV9kYXRhVHlwZSA9PSBEYXRhVHlwZVNjcmlwdFZhbHVlKTsg
cmV0dXJuIG1fZGF0YUFzU2NyaXB0VmFsdWU7IH0KKyAgICBjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYgZGF0YUFzU2NyaXB0VmFsdWUoKSBjb25zdCB7IEFTU0VSVChtX2RhdGFUeXBlID09
IERhdGFUeXBlU2NyaXB0VmFsdWUpOyByZXR1cm4gbV9kYXRhQXNTY3JpcHRWYWx1ZTsgfQogICAg
IFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhQXNTZXJpYWxpemVkU2NyaXB0
VmFsdWUoKSBjb25zdCB7IEFTU0VSVChtX2RhdGFUeXBlID09IERhdGFUeXBlU2VyaWFsaXplZFNj
cmlwdFZhbHVlKTsgcmV0dXJuIG1fZGF0YUFzU2VyaWFsaXplZFNjcmlwdFZhbHVlOyB9CiAgICAg
U3RyaW5nIGRhdGFBc1N0cmluZygpIGNvbnN0IHsgQVNTRVJUKG1fZGF0YVR5cGUgPT0gRGF0YVR5
cGVTdHJpbmcpOyByZXR1cm4gbV9kYXRhQXNTdHJpbmc7IH0KICAgICBCbG9iKiBkYXRhQXNCbG9i
KCkgY29uc3QgeyBBU1NFUlQobV9kYXRhVHlwZSA9PSBEYXRhVHlwZUJsb2IpOyByZXR1cm4gbV9k
YXRhQXNCbG9iLmdldCgpOyB9CkBAIC0xMTYsNyArMTE2LDcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBNZXNzYWdlRXZlbnQoKTsKICAgICBNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiwgY29uc3QgTWVzc2FnZUV2ZW50SW5pdCYpOwotICAgIE1lc3NhZ2VFdmVudChjb25zdCBTY3Jp
cHRWYWx1ZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2
ZW50SWQsIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdl
UG9ydEFycmF5Pik7CisgICAgTWVzc2FnZUV2ZW50KGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJ
ZCwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gc291cmNlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0
QXJyYXk+KTsKICAgICBNZXNzYWdlRXZlbnQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElk
LCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRB
cnJheT4pOwogCiAgICAgZXhwbGljaXQgTWVzc2FnZUV2ZW50KGNvbnN0IFN0cmluZyYgZGF0YSwg
Y29uc3QgU3RyaW5nJiBvcmlnaW4pOwpAQCAtMTI0LDcgKzEyNCw3IEBAIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgTWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGRhdGEsIGNvbnN0
IFN0cmluZyYgb3JpZ2luKTsKIAogICAgIERhdGFUeXBlIG1fZGF0YVR5cGU7Ci0gICAgU2NyaXB0
VmFsdWUgbV9kYXRhQXNTY3JpcHRWYWx1ZTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBt
X2RhdGFBc1NjcmlwdFZhbHVlOwogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1f
ZGF0YUFzU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogICAgIFN0cmluZyBtX2RhdGFBc1N0cmluZzsK
ICAgICBSZWZQdHI8QmxvYj4gbV9kYXRhQXNCbG9iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1BvcFN0YXRlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50
LmgKaW5kZXggMjIxOTNhNC4uNTY4MjM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1BvcFN0YXRlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5o
CkBAIC0yOCwxNCArMjgsMTQgQEAKICNkZWZpbmUgUG9wU3RhdGVFdmVudF9oCiAKICNpbmNsdWRl
ICJFdmVudC5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8YmluZGluZ3Mv
U2NyaXB0VmFsdWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgUG9wU3RhdGVF
dmVudEluaXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKICAgICBQb3BTdGF0ZUV2ZW50SW5pdCgpOwog
Ci0gICAgU2NyaXB0VmFsdWUgc3RhdGU7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgc3Rh
dGU7CiB9OwogCiBjbGFzcyBIaXN0b3J5OwpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8UG9wU3RhdGVFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmlu
ZyYsIGNvbnN0IFBvcFN0YXRlRXZlbnRJbml0Jik7CiAKICAgICBQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zZXJpYWxp
emVkU3RhdGU7IH0KLSAgICBjb25zdCBTY3JpcHRWYWx1ZSYgc3RhdGUoKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlOyB9CisgICAgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHN0YXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQogICAgIEhpc3RvcnkqIGhpc3RvcnkoKSBjb25zdCB7
IHJldHVybiBtX2hpc3RvcnkuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgRXZlbnRJbnRlcmZhY2Ug
ZXZlbnRJbnRlcmZhY2UoKSBjb25zdDsKQEAgLTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICBQ
b3BTdGF0ZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFBvcFN0YXRlRXZlbnRJbml0
Jik7CiAgICAgZXhwbGljaXQgUG9wU3RhdGVFdmVudChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4sIFBhc3NSZWZQdHI8SGlzdG9yeT4pOwogCi0gICAgU2NyaXB0VmFsdWUgbV9zdGF0
ZTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBtX3N0YXRlOwogICAgIFJlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IG1fc2VyaWFsaXplZFN0YXRlOwogICAgIFJlZlB0cjxIaXN0b3J5
PiBtX2hpc3Rvcnk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCmluZGV4IDE1
N2M0Y2EuLmQ5Njg3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKQEAgLTQy
LDExICs0MiwxMSBAQAogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJT
Y3JpcHRSdW5uZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAi
U2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVk
ZSAiVGV4dE5vZGVUcmF2ZXJzYWwuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5o
PgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNzQ0OGJkOS4uNjZmN2ZhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xMzIsOCArMTMyLDkg
QEAKICNpZiBFTkFCTEUoTUVESUFfQ09OVFJPTFNfU0NSSVBUKQogI2luY2x1ZGUgIkpTTWVkaWFD
b250cm9sc0hvc3QuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xzSG9zdC5oIgotI2luY2x1ZGUg
IlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUgIlNjcmlwdEdsb2JhbE9iamVjdC5oIgogI2luY2x1
ZGUgIlVzZXJBZ2VudFNjcmlwdHMuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3Qu
aD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL1hTU0F1ZGl0b3IuY3BwCmluZGV4IGVkNzMwYjQuLjdmZjRjZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCkBAIC0zNywxNyArMzcsMTUgQEAKICNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MUGFyYW1FbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTFBhcnNlcklkaW9tcy5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2lu
Y2x1ZGUgIlhMaW5rTmFtZXMuaCIKLQotI2lmIEVOQUJMRShTVkcpCi0jaW5jbHVkZSAiU1ZHTmFt
ZXMuaCIKLSNlbmRpZgotCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAorI2lmIEVOQUJM
RShTVkcpCisjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcAppbmRleCBhZDMzZTAwLi5kMDYwNjli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdh
dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0
ZS5jcHAKQEAgLTM1LDEyICszNSwxNCBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5j
bHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgi
Ci0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiUGluZ0xvYWRlci5oIgog
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3Rv
clZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogWFNTQXVkaXRvckRlbGVnYXRlOjpYU1NBdWRpdG9yRGVsZWdh
dGUoRG9jdW1lbnQmIGRvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
Q29kZUdlbmVyYXRvckluc3BlY3Rvci5weQppbmRleCBhOTk1NTMwLi5hMWRiMWI3IDEwMDc1NQot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQpA
QCAtMjYyLDcgKzI2Miw3IEBAIGNsYXNzIFJhd1R5cGVzKG9iamVjdCk6CiAKICAgICAgICAgQGNs
YXNzbWV0aG9kCiAgICAgICAgIGRlZiBnZXRfcmF3X3ZhbGlkYXRvcl9jYWxsX3RleHQoY2xzKToK
LSAgICAgICAgICAgIHJldHVybiAiUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVj
dG9yVmFsdWU6OlR5cGUlcz4iICUgY2xzLmdldF92YWxpZGF0ZV9tZXRob2RfcGFyYW1zKCkudGVt
cGxhdGVfdHlwZQorICAgICAgICAgICAgcmV0dXJuICJSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0
VHlwZTxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlOjpUeXBlJXM+IiAlIGNscy5nZXRfdmFsaWRh
dGVfbWV0aG9kX3BhcmFtcygpLnRlbXBsYXRlX3R5cGUKIAogICAgIGNsYXNzIFN0cmluZyhCYXNl
VHlwZSk6CiAgICAgICAgIEBzdGF0aWNtZXRob2QKQEAgLTQ1MSw3ICs0NTEsNyBAQCBjbGFzcyBS
YXdUeXBlcyhvYmplY3QpOgogCiAgICAgICAgIEBzdGF0aWNtZXRob2QKICAgICAgICAgZGVmIGdl
dF9hcnJheV9pdGVtX3Jhd19jX3R5cGVfdGV4dCgpOgotICAgICAgICAgICAgcmV0dXJuICJJbnNw
ZWN0b3JPYmplY3QiCisgICAgICAgICAgICByZXR1cm4gIkluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0IgogCiAgICAgICAgIEBzdGF0aWNtZXRob2QKICAgICAgICAgZGVmIGdldF9yYXdfdHlwZV9t
b2RlbCgpOgpAQCAtNDg2LDcgKzQ4Niw3IEBAIGNsYXNzIFJhd1R5cGVzKG9iamVjdCk6CiAKICAg
ICAgICAgQHN0YXRpY21ldGhvZAogICAgICAgICBkZWYgZ2V0X2FycmF5X2l0ZW1fcmF3X2NfdHlw
ZV90ZXh0KCk6Ci0gICAgICAgICAgICByZXR1cm4gIkluc3BlY3RvclZhbHVlIgorICAgICAgICAg
ICAgcmV0dXJuICJJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlIgogCiAgICAgICAgIEBzdGF0aWNt
ZXRob2QKICAgICAgICAgZGVmIGdldF9yYXdfdHlwZV9tb2RlbCgpOgpAQCAtNTI5LDcgKzUyOSw3
IEBAIGNsYXNzIFJhd1R5cGVzKG9iamVjdCk6CiAKICAgICAgICAgQHN0YXRpY21ldGhvZAogICAg
ICAgICBkZWYgZ2V0X2FycmF5X2l0ZW1fcmF3X2NfdHlwZV90ZXh0KCk6Ci0gICAgICAgICAgICBy
ZXR1cm4gIkluc3BlY3RvckFycmF5IgorICAgICAgICAgICAgcmV0dXJuICJJbnNwZWN0b3I6Oklu
c3BlY3RvckFycmF5IgogCiAgICAgICAgIEBzdGF0aWNtZXRob2QKICAgICAgICAgZGVmIGdldF9y
YXdfdHlwZV9tb2RlbCgpOgpAQCAtNTkwLDcgKzU5MCw3IEBAIGNsYXNzIENvbW1hbmRSZXR1cm5Q
YXNzTW9kZWw6CiAgICAgICAgICAgICBzZWxmLnZhcl90eXBlID0gdmFyX3R5cGUKIAogICAgICAg
ICBkZWYgZ2V0X3JldHVybl92YXJfdHlwZShzZWxmKToKLSAgICAgICAgICAgIHJldHVybiAiVHlw
ZUJ1aWxkZXI6Ok9wdE91dHB1dDwlcz4iICUgc2VsZi52YXJfdHlwZQorICAgICAgICAgICAgcmV0
dXJuICJJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8JXM+IiAlIHNlbGYudmFyX3R5
cGUKIAogICAgICAgICBAc3RhdGljbWV0aG9kCiAgICAgICAgIGRlZiBnZXRfb3V0cHV0X2FyZ3Vt
ZW50X3ByZWZpeCgpOgpAQCAtNjAxLDcgKzYwMSw3IEBAIGNsYXNzIENvbW1hbmRSZXR1cm5QYXNz
TW9kZWw6CiAgICAgICAgICAgICByZXR1cm4gIiVzLmdldFZhbHVlKCkiCiAKICAgICAgICAgZGVm
IGdldF9vdXRwdXRfcGFyYW1ldGVyX3R5cGUoc2VsZik6Ci0gICAgICAgICAgICByZXR1cm4gIlR5
cGVCdWlsZGVyOjpPcHRPdXRwdXQ8JXM+KiIgJSBzZWxmLnZhcl90eXBlCisgICAgICAgICAgICBy
ZXR1cm4gIkluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDwlcz4qIiAlIHNlbGYudmFy
X3R5cGUKIAogICAgICAgICBAc3RhdGljbWV0aG9kCiAgICAgICAgIGRlZiBnZXRfc2V0X3JldHVy
bl9jb25kaXRpb24oKToKQEAgLTcxMiwxMCArNzEyLDEwIEBAIGNsYXNzIFR5cGVNb2RlbDoKICAg
ICAgICAgICAgIFR5cGVNb2RlbC5WYWx1ZVR5cGUuX19pbml0X18oc2VsZiwgImludCIsIEZhbHNl
KQogCiAgICAgICAgIGRlZiBnZXRfaW5wdXRfcGFyYW1fdHlwZV90ZXh0KHNlbGYpOgotICAgICAg
ICAgICAgcmV0dXJuICJUeXBlQnVpbGRlcjo6RXhhY3RseUludCIKKyAgICAgICAgICAgIHJldHVy
biAiSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RXhhY3RseUludCIKIAogICAgICAgICBkZWYgZ2V0
X29wdF9vdXRwdXRfdHlwZV8oc2VsZik6Ci0gICAgICAgICAgICByZXR1cm4gIlR5cGVCdWlsZGVy
OjpFeGFjdGx5SW50IgorICAgICAgICAgICAgcmV0dXJuICJJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpFeGFjdGx5SW50IgogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGluaXRfY2xhc3MoY2xz
KToKQEAgLTcyNiw5ICs3MjYsOSBAQCBjbGFzcyBUeXBlTW9kZWw6CiAgICAgICAgICAgICBjbHMu
SW50ID0gY2xzLlZhbHVlVHlwZSgiaW50IiwgRmFsc2UpCiAgICAgICAgIGNscy5OdW1iZXIgPSBj
bHMuVmFsdWVUeXBlKCJkb3VibGUiLCBGYWxzZSkKICAgICAgICAgY2xzLlN0cmluZyA9IGNscy5W
YWx1ZVR5cGUoIlN0cmluZyIsIFRydWUsKQotICAgICAgICBjbHMuT2JqZWN0ID0gY2xzLlJlZlB0
ckJhc2VkKCJJbnNwZWN0b3JPYmplY3QiKQotICAgICAgICBjbHMuQXJyYXkgPSBjbHMuUmVmUHRy
QmFzZWQoIkluc3BlY3RvckFycmF5IikKLSAgICAgICAgY2xzLkFueSA9IGNscy5SZWZQdHJCYXNl
ZCgiSW5zcGVjdG9yVmFsdWUiKQorICAgICAgICBjbHMuT2JqZWN0ID0gY2xzLlJlZlB0ckJhc2Vk
KCJJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCIpCisgICAgICAgIGNscy5BcnJheSA9IGNscy5S
ZWZQdHJCYXNlZCgiSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSIpCisgICAgICAgIGNscy5Bbnkg
PSBjbHMuUmVmUHRyQmFzZWQoIkluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUiKQogCiBUeXBlTW9k
ZWwuaW5pdF9jbGFzcygpCiAKQEAgLTgzNyw4ICs4MzcsOCBAQCBjbGFzcyBUeXBlQmluZGluZ3M6
CiAKICAgICAgICAgY2xhc3MgSGVscGVyOgogICAgICAgICAgICAgaXNfYWRfaG9jID0gRmFsc2UK
LSAgICAgICAgICAgIGZ1bGxfbmFtZV9wcmVmaXhfZm9yX3VzZSA9ICJUeXBlQnVpbGRlcjo6IiAr
IGNvbnRleHRfZG9tYWluX25hbWUgKyAiOjoiCi0gICAgICAgICAgICBmdWxsX25hbWVfcHJlZml4
X2Zvcl9pbXBsID0gIlR5cGVCdWlsZGVyOjoiICsgY29udGV4dF9kb21haW5fbmFtZSArICI6OiIK
KyAgICAgICAgICAgIGZ1bGxfbmFtZV9wcmVmaXhfZm9yX3VzZSA9ICJJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjoiICsgY29udGV4dF9kb21haW5fbmFtZSArICI6OiIKKyAgICAgICAgICAgIGZ1bGxf
bmFtZV9wcmVmaXhfZm9yX2ltcGwgPSAiSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6IiArIGNvbnRl
eHRfZG9tYWluX25hbWUgKyAiOjoiCiAKICAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKICAgICAg
ICAgICAgIGRlZiB3cml0ZV9kb2Mod3JpdGVyKToKQEAgLTkyOCw3ICs5MjgsNyBAQCBjbGFzcyBU
eXBlQmluZGluZ3M6CiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZW51bV9i
aW5kaW5nX2Nscy5uZWVkX2ludGVybmFsX3J1bnRpbWVfY2FzdF86CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKCIjaWYgJXNcbiIgJSBWQUxJREFUT1Jf
SUZERUZfTkFNRSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5u
ZXdsaW5lKCIgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVl
KiB2YWx1ZSk7XG4iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVy
Lm5ld2xpbmUoIiAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JWYWx1ZSogdmFsdWUpO1xuIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdyaXRlci5hcHBlbmQoIiNlbmRpZiAgLy8gJXNcbiIgJSBWQUxJREFUT1JfSUZERUZf
TkFNRSkKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yX3dy
aXRlciA9IGdlbmVyYXRlX2NvbnRleHQudmFsaWRhdG9yX3dyaXRlcgpAQCAtOTM4LDcgKzkzOCw3
IEBAIGNsYXNzIFR5cGVCaW5kaW5nczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIGRvbWFpbl9ndWFyZDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkb21haW5fZ3VhcmQuZ2VuZXJhdGVfb3Blbih2YWxpZGF0b3Jfd3JpdGVyKQogCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUo
InZvaWQgJXMlczo6YXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSlcbiIg
JSAoaGVscGVyLmZ1bGxfbmFtZV9wcmVmaXhfZm9yX2ltcGwsIGVudW1fbmFtZSkpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoInZv
aWQgJXMlczo6YXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZh
bHVlKVxuIiAlIChoZWxwZXIuZnVsbF9uYW1lX3ByZWZpeF9mb3JfaW1wbCwgZW51bV9uYW1lKSkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcl93cml0ZXIubmV3
bGluZSgie1xuIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRv
cl93cml0ZXIubmV3bGluZSgiICAgIFdURjo6U3RyaW5nIHM7XG4iKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCIgICAgYm9vbCBj
YXN0X3JlcyA9IHZhbHVlLT5hc1N0cmluZygmcyk7XG4iKQpAQCAtOTgwLDcgKzk4MCw3IEBAIGNs
YXNzIFR5cGVCaW5kaW5nczoKIAogICAgICAgICAgICAgICAgICAgICBAc3RhdGljbWV0aG9kCiAg
ICAgICAgICAgICAgICAgICAgIGRlZiBnZXRfc2V0dGVyX3ZhbHVlX2V4cHJlc3Npb25fcGF0dGVy
bigpOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJUeXBlQnVpbGRlcjo6Z2V0RW51
bUNvbnN0YW50VmFsdWUoJXMpIgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZSglcykiCiAKICAgICAgICAg
ICAgICAgICAgICAgQHN0YXRpY21ldGhvZAogICAgICAgICAgICAgICAgICAgICBkZWYgcmVkdWNl
X3RvX3Jhd190eXBlKCk6CkBAIC0xMTcyLDkgKzExNzIsOSBAQCBjbGFzcyBUeXBlQmluZGluZ3M6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQoY2xhc3NfbmFt
ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVuZCgiIDogcHVi
bGljICIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlzX29wZW5fdHlwZToK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQoIkluc3Bl
Y3Rvck9iamVjdCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIu
YXBwZW5kKCJJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCIpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
cml0ZXIuYXBwZW5kKCJJbnNwZWN0b3JPYmplY3RCYXNlIikKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQoIkluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
QmFzZSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQoIiB7
XG4iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgicHVi
bGljOlxuIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRfaG9jX3R5cGVfd3Jp
dGVyID0gd3JpdGVyLmluc2VydF93cml0ZXIoIiAgICAiKQpAQCAtMTIzNCw3ICsxMjM0LDcgQEAg
Y2xhc3MgVHlwZUJpbmRpbmdzOgogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdy
aXRlci5uZXdsaW5lX211bHRpbGluZShDb2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5jbGFz
c19iaW5kaW5nX2J1aWxkZXJfcGFydF80KQogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdyaXRlci5uZXdsaW5lKCIgICAgdHlwZWRlZiBUeXBlQnVpbGRlcjo6U3RydWN0SXRlbVRy
YWl0cyBJdGVtVHJhaXRzO1xuIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3Jp
dGVyLm5ld2xpbmUoIiAgICB0eXBlZGVmIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlN0cnVjdEl0
ZW1UcmFpdHMgSXRlbVRyYWl0cztcbiIpCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yIHByb3BfZGF0YSBpbiByZXNvbHZlX2RhdGEub3B0aW9uYWxfcHJvcGVydGllczoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BfbmFtZSA9IHByb3BfZGF0YS5w
WyJuYW1lIl0KQEAgLTEyNTEsMjUgKzEyNTEsMjUgQEAgY2xhc3MgVHlwZUJpbmRpbmdzOgogCiAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNldHRlcl9uYW1lIGluIElO
U1BFQ1RPUl9PQkpFQ1RfU0VUVEVSX05BTUVTOgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFz
ZTo6JXM7XG5cbiIgJSBzZXR0ZXJfbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgIHVzaW5nIEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0QmFzZTo6JXM7XG5cbiIgJSBzZXR0ZXJfbmFtZSkKIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiBjbGFzc19iaW5kaW5nX2Nscy5uZWVkX3VzZXJfcnVudGltZV9jYXN0
XzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIg
ICAgc3RhdGljIFBhc3NSZWZQdHI8JXM+IHJ1bnRpbWVDYXN0KFBhc3NSZWZQdHI8SW5zcGVjdG9y
VmFsdWU+IHZhbHVlKVxuIiAlIGNsYXNzX25hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgIHN0YXRpYyBQYXNzUmVmUHRyPCVzPiBydW50
aW1lQ2FzdChQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHZhbHVlKVxuIiAl
IGNsYXNzX25hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIu
bmV3bGluZSgiICAgIHtcbiIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
cml0ZXIubmV3bGluZSgiICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3Q7XG4i
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAg
ICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBvYmplY3Q7XG4iKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICAgICAg
Ym9vbCBjYXN0UmVzID0gdmFsdWUtPmFzT2JqZWN0KCZvYmplY3QpO1xuIikKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgICAgIEFTU0VSVF9V
TlVTRUQoY2FzdFJlcywgY2FzdFJlcyk7XG4iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd3JpdGVyLmFwcGVuZCgiI2lmICVzXG4iICUgVkFMSURBVE9SX0lGREVGX05BTUUp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAg
ICAgICBhc3NlcnRDb3JyZWN0VmFsdWUob2JqZWN0LmdldCgpKTtcbiIpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKCIjZW5kaWYgIC8vICVzXG4iICUg
VkFMSURBVE9SX0lGREVGX05BTUUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3cml0ZXIubmV3bGluZSgiICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoJXMpID09IHNp
emVvZihJbnNwZWN0b3JPYmplY3RCYXNlKSwgdHlwZV9jYXN0X3Byb2JsZW0pO1xuIiAlIGNsYXNz
X25hbWUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGlu
ZSgiICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8JXMqPihzdGF0aWNfY2FzdDxJbnNwZWN0b3JP
YmplY3RCYXNlKj4ob2JqZWN0LmdldCgpKSk7XG4iICUgY2xhc3NfbmFtZSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgICAgIENPTVBJTEVf
QVNTRVJUKHNpemVvZiglcykgPT0gc2l6ZW9mKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0QmFz
ZSksIHR5cGVfY2FzdF9wcm9ibGVtKTtcbiIgJSBjbGFzc19uYW1lKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PCVzKj4oc3RhdGljX2Nhc3Q8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3RCYXNlKj4o
b2JqZWN0LmdldCgpKSk7XG4iICUgY2xhc3NfbmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgfVxuIikKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQoIlxuIikKIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiBjbGFzc19iaW5kaW5nX2Nscy5uZWVkX2ludGVybmFsX3J1bnRp
bWVfY2FzdF86CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBw
ZW5kKCIjaWYgJXNcbiIgJSBWQUxJREFUT1JfSUZERUZfTkFNRSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgc3RhdGljIHZvaWQgYXNzZXJ0
Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSk7XG4iKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICBzdGF0aWMgdm9pZCBhc3Nl
cnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogdmFsdWUpO1xuIikKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQoIiNlbmRpZiAg
Ly8gJXNcbiIgJSBWQUxJREFUT1JfSUZERUZfTkFNRSkKIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2xvc2VkX2ZpZWxkX3NldCA9IChjb250ZXh0X2RvbWFpbl9uYW1lICsg
Ii4iICsgY2xhc3NfbmFtZSkgbm90IGluIFRZUEVTX1dJVEhfT1BFTl9GSUVMRF9MSVNUX1NFVApA
QCAtMTI4MSw3ICsxMjgxLDcgQEAgY2xhc3MgVHlwZUJpbmRpbmdzOgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgZG9tYWluX2d1YXJkOgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbl9ndWFyZC5nZW5lcmF0ZV9vcGVuKHZhbGlkYXRv
cl93cml0ZXIpCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRv
cl93cml0ZXIubmV3bGluZSgidm9pZCAlcyVzOjphc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9y
VmFsdWUqIHZhbHVlKVxuIiAlIChoZWxwZXIuZnVsbF9uYW1lX3ByZWZpeF9mb3JfaW1wbCwgY2xh
c3NfbmFtZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jf
d3JpdGVyLm5ld2xpbmUoInZvaWQgJXMlczo6YXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3Rvcjo6
SW5zcGVjdG9yVmFsdWUqIHZhbHVlKVxuIiAlIChoZWxwZXIuZnVsbF9uYW1lX3ByZWZpeF9mb3Jf
aW1wbCwgY2xhc3NfbmFtZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoIntcbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoIiAgICBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBvYmplY3Q7XG4iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCIgICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFzT2Jq
ZWN0KCZvYmplY3QpO1xuIikKQEAgLTE1MTksNyArMTUxOSw3IEBAIGNsYXNzIFR5cGVCaW5kaW5n
czoKIAogICAgICAgICAgICAgICAgICAgICBAY2xhc3NtZXRob2QKICAgICAgICAgICAgICAgICAg
ICAgZGVmIGdldF9hcnJheV9pdGVtX2NfdHlwZV90ZXh0KGNscyk6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gcmVwbGFjZV9yaWdodF9zaGlmdCgiVHlwZUJ1aWxkZXI6OkFycmF5PCVz
PiIgJSBjbHMucmVzb2x2ZV9kYXRhXy5pdGVtX3R5cGVfYmluZGluZy5nZXRfYXJyYXlfaXRlbV9j
X3R5cGVfdGV4dCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2Vfcmln
aHRfc2hpZnQoIkluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PCVzPiIgJSBjbHMucmVzb2x2
ZV9kYXRhXy5pdGVtX3R5cGVfYmluZGluZy5nZXRfYXJyYXlfaXRlbV9jX3R5cGVfdGV4dCgpKQog
CiAgICAgICAgICAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKICAgICAgICAgICAgICAgICAgICAg
ZGVmIGdldF9zZXR0ZXJfdmFsdWVfZXhwcmVzc2lvbl9wYXR0ZXJuKCk6CkBAIC0xOTAwLDEwICsx
OTAwLDEwIEBAIGNsYXNzIEdlbmVyYXRvcjoKICAgICAgICAgICAgIGRpc3BhdGNoZXJfbmFtZSA9
ICJJbnNwZWN0b3IiICsgQ2FwaXRhbGl6ZXIubG93ZXJfY2FtZWxfY2FzZV90b191cHBlcihkb21h
aW5fbmFtZSkgKyAiQmFja2VuZERpc3BhdGNoZXIiCiAgICAgICAgICAgICBhZ2VudF9pbnRlcmZh
Y2VfbmFtZSA9IGRpc3BhdGNoZXJfbmFtZSArICJIYW5kbGVyIgogCi0gICAgICAgICAgICBHZW5l
cmF0b3IuYmFja2VuZF9kaXNwYXRjaGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgiY2xhc3MgJXMg
RklOQUwgOiBwdWJsaWMgSW5zcGVjdG9yU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIge1xu
IiAlIGRpc3BhdGNoZXJfbmFtZSkKKyAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3Bh
dGNoZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCJjbGFzcyAlcyBGSU5BTCA6IHB1YmxpYyBJbnNw
ZWN0b3I6Okluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyIHtcbiIgJSBkaXNw
YXRjaGVyX25hbWUpCiAgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9kaXNwYXRjaGVyX2lu
dGVyZmFjZV9saXN0LmFwcGVuZCgicHVibGljOlxuIikKLSAgICAgICAgICAgIEdlbmVyYXRvci5i
YWNrZW5kX2Rpc3BhdGNoZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIgICAgc3RhdGljIFBhc3NS
ZWZQdHI8JXM+IGNyZWF0ZShJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciosICVzKik7XG4iICUg
KGRpc3BhdGNoZXJfbmFtZSwgYWdlbnRfaW50ZXJmYWNlX25hbWUpKQotICAgICAgICAgICAgR2Vu
ZXJhdG9yLmJhY2tlbmRfZGlzcGF0Y2hlcl9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoIiAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbWVzc2FnZSkgT1ZFUlJJREU7XG4iKQorICAgICAgICAg
ICAgR2VuZXJhdG9yLmJhY2tlbmRfZGlzcGF0Y2hlcl9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoIiAg
ICBzdGF0aWMgUGFzc1JlZlB0cjwlcz4gY3JlYXRlKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIqLCAlcyopO1xuIiAlIChkaXNwYXRjaGVyX25hbWUsIGFnZW50X2ludGVyZmFj
ZV9uYW1lKSkKKyAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3BhdGNoZXJfaW50ZXJm
YWNlX2xpc3QuYXBwZW5kKCIgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKGxvbmcgY2FsbElkLCBj
b25zdCBTdHJpbmcmIG1ldGhvZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4gbWVzc2FnZSkgT1ZFUlJJREU7XG4iKQogICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRf
ZGlzcGF0Y2hlcl9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoInByaXZhdGU6XG4iKQogCiAgICAgICAg
ICAgICBHZW5lcmF0b3IuYmFja2VuZF9oYW5kbGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgiY2xh
c3MgJXMge1xuIiAlIGFnZW50X2ludGVyZmFjZV9uYW1lKQpAQCAtMTkyMiw3ICsxOTIyLDcgQEAg
Y2xhc3MgR2VuZXJhdG9yOgogICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfaGFuZGxlcl9p
bnRlcmZhY2VfbGlzdC5hcHBlbmQoIn07XG5cbiIpCiAKICAgICAgICAgICAgIEdlbmVyYXRvci5i
YWNrZW5kX2Rpc3BhdGNoZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCJwcml2YXRlOlxuIikKLSAg
ICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3BhdGNoZXJfaW50ZXJmYWNlX2xpc3QuYXBw
ZW5kKCIgICAgJXMoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqLCAlcyopO1xuIiAlIChkaXNw
YXRjaGVyX25hbWUsIGFnZW50X2ludGVyZmFjZV9uYW1lKSkKKyAgICAgICAgICAgIEdlbmVyYXRv
ci5iYWNrZW5kX2Rpc3BhdGNoZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIgICAgJXMoSW5zcGVj
dG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciosICVzKik7XG4iICUgKGRpc3BhdGNoZXJf
bmFtZSwgYWdlbnRfaW50ZXJmYWNlX25hbWUpKQogICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tl
bmRfZGlzcGF0Y2hlcl9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoIiAgICAlcyogbV9hZ2VudDtcbiIg
JSBhZ2VudF9pbnRlcmZhY2VfbmFtZSkKICAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rp
c3BhdGNoZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCJ9O1xuXG4iKQogCkBAIC0yMDAzLDcgKzIw
MDMsNyBAQCBjbGFzcyBHZW5lcmF0b3I6CiAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2hhbmRs
ZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKGFkX2hvY190eXBlX291dHB1dCkKICAgICAgICAgYWRf
aG9jX3R5cGVfd3JpdGVyID0gV3JpdGVyKGFkX2hvY190eXBlX291dHB1dCwgIiAgICAiKQogCi0g
ICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3BhdGNoZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5k
KCIgICAgdm9pZCAlcyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdl
KTtcbiIgJSBqc29uX2NvbW1hbmRfbmFtZSkKKyAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfZGlz
cGF0Y2hlcl9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoIiAgICB2b2lkICVzKGxvbmcgY2FsbElkLCBj
b25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7XG4iICUganNvbl9jb21t
YW5kX25hbWUpCiAKICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfaGFuZGxlcl9pbnRlcmZhY2Vf
bGlzdC5hcHBlbmQoIiAgICB2aXJ0dWFsIHZvaWQgJXMoRXJyb3JTdHJpbmcqIiAlIGpzb25fY29t
bWFuZF9uYW1lKQogCkBAIC0yMDk4LDkgKzIwOTgsOSBAQCBjbGFzcyBHZW5lcmF0b3I6CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRf
bWV0aG9kX2ltcGxlbWVudGF0aW9uX2xpc3QsIFRlbXBsYXRlcy5jYWxsYmFja19tZXRob2QsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyJjYWxsYmFja05hbWUi
OiBjYWxsYmFja19uYW1lLCAiaGFuZGxlck5hbWUiOiBhZ2VudF9pbnRlcmZhY2VfbmFtZX0pCiAK
LSAgICAgICAgICAgIGNhbGxiYWNrX3dyaXRlci5uZXdsaW5lKCJjbGFzcyAiICsgY2FsbGJhY2tf
bmFtZSArICIgOiBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFz
ZSB7XG4iKQorICAgICAgICAgICAgY2FsbGJhY2tfd3JpdGVyLm5ld2xpbmUoImNsYXNzICIgKyBj
YWxsYmFja19uYW1lICsgIiA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjpDYWxsYmFja0Jhc2Uge1xuIikKICAgICAgICAgICAgIGNhbGxiYWNrX3dyaXRlci5u
ZXdsaW5lKCJwdWJsaWM6XG4iKQotICAgICAgICAgICAgY2FsbGJhY2tfd3JpdGVyLm5ld2xpbmUo
IiAgICAiICsgY2FsbGJhY2tfbmFtZSArICIoUGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcj4sIGludCBpZCk7XG4iKQorICAgICAgICAgICAgY2FsbGJhY2tfd3JpdGVyLm5ld2xp
bmUoIiAgICAiICsgY2FsbGJhY2tfbmFtZSArICIoUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyPiwgaW50IGlkKTtcbiIpCiAgICAgICAgICAgICBjYWxsYmFj
a193cml0ZXIubmV3bGluZSgiICAgIHZvaWQgc2VuZFN1Y2Nlc3MoIiArICIsICIuam9pbihkZWNs
X3BhcmFtZXRlcl9saXN0KSArICIpO1xuIikKICAgICAgICAgICAgIGNhbGxiYWNrX3dyaXRlci5u
ZXdsaW5lKCJ9O1xuIikKIApAQCAtMjEwOSw3ICsyMTA5LDcgQEAgY2xhc3MgR2VuZXJhdG9yOgog
ICAgICAgICAgICAgbWV0aG9kX2Rpc3BhdGNoX2hhbmRsaW5nLmFwcGVuZCgiICAgIFJlZlB0cjwl
czo6JXM+IGNhbGxiYWNrID0gYWRvcHRSZWYobmV3ICVzOjolcyhtX2JhY2tlbmREaXNwYXRjaGVy
LGNhbGxJZCkpO1xuIiAlIChhZ2VudF9pbnRlcmZhY2VfbmFtZSwgY2FsbGJhY2tfbmFtZSwgYWdl
bnRfaW50ZXJmYWNlX25hbWUsIGNhbGxiYWNrX25hbWUpKQogICAgICAgICAgICAgbWV0aG9kX2Vu
ZGluZ19oYW5kbGluZy5hcHBlbmQoIiAgICBpZiAoZXJyb3IubGVuZ3RoKCkpIHtcbiIpCiAgICAg
ICAgICAgICBtZXRob2RfZW5kaW5nX2hhbmRsaW5nLmFwcGVuZCgiICAgICAgICBjYWxsYmFjay0+
ZGlzYWJsZSgpO1xuIikKLSAgICAgICAgICAgIG1ldGhvZF9lbmRpbmdfaGFuZGxpbmcuYXBwZW5k
KCIgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJ
ZCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OlNlcnZlckVycm9yLCBlcnJvcik7XG4iKQor
ICAgICAgICAgICAgbWV0aG9kX2VuZGluZ19oYW5kbGluZy5hcHBlbmQoIiAgICAgICAgbV9iYWNr
ZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJbnNwZWN0b3I6Oklu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpTZXJ2ZXJFcnJvciwgZXJyb3IpO1xuIikKICAgICAg
ICAgICAgIG1ldGhvZF9lbmRpbmdfaGFuZGxpbmcuYXBwZW5kKCIgICAgICAgIHJldHVybjtcbiIp
CiAgICAgICAgICAgICBtZXRob2RfZW5kaW5nX2hhbmRsaW5nLmFwcGVuZCgiICAgIH0iKQogCkBA
IC0yNDEzLDggKzI0MTMsOCBAQCBiYWNrZW5kX2NwcF9maWxlID0gU21hcnRPdXRwdXQob3V0cHV0
X2NwcF9kaXJuYW1lICsgIi9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcgogZnJvbnRlbmRfaF9m
aWxlID0gU21hcnRPdXRwdXQob3V0cHV0X2hlYWRlcl9kaXJuYW1lICsgIi9JbnNwZWN0b3JGcm9u
dGVuZC5oIikKIGZyb250ZW5kX2NwcF9maWxlID0gU21hcnRPdXRwdXQob3V0cHV0X2NwcF9kaXJu
YW1lICsgIi9JbnNwZWN0b3JGcm9udGVuZC5jcHAiKQogCi10eXBlYnVpbGRlcl9oX2ZpbGUgPSBT
bWFydE91dHB1dChvdXRwdXRfaGVhZGVyX2Rpcm5hbWUgKyAiL0luc3BlY3RvclR5cGVCdWlsZGVy
LmgiKQotdHlwZWJ1aWxkZXJfY3BwX2ZpbGUgPSBTbWFydE91dHB1dChvdXRwdXRfY3BwX2Rpcm5h
bWUgKyAiL0luc3BlY3RvclR5cGVCdWlsZGVyLmNwcCIpCit0eXBlYnVpbGRlcl9oX2ZpbGUgPSBT
bWFydE91dHB1dChvdXRwdXRfaGVhZGVyX2Rpcm5hbWUgKyAiL0luc3BlY3RvcldlYlR5cGVCdWls
ZGVycy5oIikKK3R5cGVidWlsZGVyX2NwcF9maWxlID0gU21hcnRPdXRwdXQob3V0cHV0X2NwcF9k
aXJuYW1lICsgIi9JbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuY3BwIikKIAogYmFja2VuZF9qc19m
aWxlID0gU21hcnRPdXRwdXQob3V0cHV0X2pzX2Rpcm5hbWUgKyAiL0luc3BlY3RvckJhY2tlbmRD
b21tYW5kcy5qcyIpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2Rl
R2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weSBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9D
b2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weQppbmRleCA3YTUxOGE4Li4wMWZlNTEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rv
clN0cmluZ3MucHkKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJ
bnNwZWN0b3JTdHJpbmdzLnB5CkBAIC03MCw3ICs3MCw3IEBAIGJhY2tlbmRfZGlzcGF0Y2hlcl9k
aXNwYXRjaF9tZXRob2QgPSAoCiB7CiAgICAgUmVmPCR7ZGlzcGF0Y2hlck5hbWV9PiBwcm90ZWN0
KCp0aGlzKTsKIAotICAgIHR5cGVkZWYgdm9pZCAoJHtkaXNwYXRjaGVyTmFtZX06OipDYWxsSGFu
ZGxlcikobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7CisgICAg
dHlwZWRlZiB2b2lkICgke2Rpc3BhdGNoZXJOYW1lfTo6KkNhbGxIYW5kbGVyKShsb25nIGNhbGxJ
ZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOwogICAgIHR5cGVk
ZWYgSGFzaE1hcDxTdHJpbmcsIENhbGxIYW5kbGVyPiBEaXNwYXRjaE1hcDsKICAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKERpc3BhdGNoTWFwLCBkaXNwYXRjaE1hcCwgKCkpOwogICAgIGlmIChkaXNw
YXRjaE1hcC5pc0VtcHR5KCkpIHsKQEAgLTExMiw3ICsxMTIsNyBAQCAkY29kZQogIiIiKQogCiBj
YWxsYmFja19tZXRob2QgPSAoCi0iIiIke2hhbmRsZXJOYW1lfTo6JHtjYWxsYmFja05hbWV9Ojok
e2NhbGxiYWNrTmFtZX0oUGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gYmFj
a2VuZERpc3BhdGNoZXIsIGludCBpZCkgOiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2Fs
bGJhY2tCYXNlKGJhY2tlbmREaXNwYXRjaGVyLCBpZCkgeyB9CisiIiIke2hhbmRsZXJOYW1lfTo6
JHtjYWxsYmFja05hbWV9Ojoke2NhbGxiYWNrTmFtZX0oUGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcj4gYmFja2VuZERpc3BhdGNoZXIsIGludCBpZCkgOiBJbnNwZWN0b3I6Oklu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UoYmFja2VuZERpc3BhdGNoZXIs
IGlkKSB7IH0KIAogdm9pZCAke2hhbmRsZXJOYW1lfTo6JHtjYWxsYmFja05hbWV9OjpzZW5kU3Vj
Y2Vzcygke3BhcmFtZXRlcnN9KQogewpAQCAtMTI1LDE1ICsxMjUsMTQgQEAgZnJvbnRlbmRfaCA9
ICgKICIiIiNpZm5kZWYgSW5zcGVjdG9yRnJvbnRlbmRfaAogI2RlZmluZSBJbnNwZWN0b3JGcm9u
dGVuZF9oCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgotI2luY2x1ZGUgIklu
c3BlY3RvclZhbHVlcy5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIgor
I2luY2x1ZGUgIkluc3BlY3RvckZvcndhcmRpbmcuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5z
cGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWw7Ci0KICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCiAkZG9tYWlu
Q2xhc3NMaXN0CkBAIC0xNDksMTYgKzE0OCwxMyBAQCBiYWNrZW5kX2ggPSAoCiAiIiIjaWZuZGVm
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyc19oCiAjZGVmaW5lIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyc19oCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIgot
I2luY2x1ZGUgIkluc3BlY3RvclR5cGVCdWlsZGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2Vi
VHlwZUJ1aWxkZXJzLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbnNwZWN0b3JP
YmplY3Q7Ci1jbGFzcyBJbnNwZWN0b3JBcnJheTsKLQogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJp
bmc7CiAKICRoYW5kbGVySW50ZXJmYWNlcwpAQCAtMTc4LDExICsxNzQsMTMgQEAgYmFja2VuZF9j
cHAgPSAoCiAjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAKICNpbmNs
dWRlICJJbnNwZWN0b3JBZ2VudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckZvcndhcmRpbmcuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVj
dG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICRtZXRob2RzCkBAIC0yMDAsMTAgKzE5OCwxMSBAQCBmcm9udGVu
ZF9jcHAgPSAoCiAKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogCi0jaW5jbHVkZSAi
SW5zcGVjdG9yRm9yd2FyZGluZy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3Rv
cjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAkbWV0aG9kcwpAQCAtMjE1LDI5MSArMjE0LDIw
IEBAICRtZXRob2RzCiAKIHR5cGVidWlsZGVyX2ggPSAoCiAiIiIKLSNpZm5kZWYgSW5zcGVjdG9y
VHlwZUJ1aWxkZXJfaAotI2RlZmluZSBJbnNwZWN0b3JUeXBlQnVpbGRlcl9oCisvLyBGSVhNRTog
VFlQRS4KKyNpZm5kZWYgSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzX2gKKyNkZWZpbmUgSW5zcGVj
dG9yV2ViVHlwZUJ1aWxkZXJzX2gKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRl
ICJJbnNwZWN0b3JWYWx1ZXMuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVHlwZUJ1
aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJbnNwZWN0b3Igewog
CiBuYW1lc3BhY2UgVHlwZUJ1aWxkZXIgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3Mg
T3B0T3V0cHV0IHsKLXB1YmxpYzoKLSAgICBPcHRPdXRwdXQoKSA6IG1fYXNzaWduZWQoZmFsc2Up
IHsgfQotCi0gICAgdm9pZCBvcGVyYXRvcj0oVCB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIG1fdmFs
dWUgPSB2YWx1ZTsKLSAgICAgICAgbV9hc3NpZ25lZCA9IHRydWU7Ci0gICAgfQotCi0gICAgYm9v
bCBpc0Fzc2lnbmVkKCkgeyByZXR1cm4gbV9hc3NpZ25lZDsgfQotCi0gICAgVCBnZXRWYWx1ZSgp
Ci0gICAgewotICAgICAgICBBU1NFUlQoaXNBc3NpZ25lZCgpKTsKLSAgICAgICAgcmV0dXJuIG1f
dmFsdWU7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFQgbV92YWx1ZTsKLSAgICBib29sIG1fYXNz
aWduZWQ7Ci0KLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShPcHRPdXRwdXQpOwotfTsKLQotCi0v
LyBBIHNtYWxsIHRyYW5zaWVudCB3cmFwcGVyIGFyb3VuZCBpbnQgdHlwZSwgdGhhdCBjYW4gYmUg
dXNlZCBhcyBhIGZ1bmNpdG9uIHBhcmFtZXRlciB0eXBlCi0vLyBjbGV2ZXJseSBkaXNhbGxvd2lu
ZyBDKysgaW1wbGljaXQgY2FzdHMgZnJvbSBmbG9hdCBvciBkb3VibGUuCi1jbGFzcyBFeGFjdGx5
SW50IHsKLXB1YmxpYzoKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIEV4YWN0bHlJbnQo
VCB0KSA6IG1fdmFsdWUoY2FzdF90b19pbnQ8VD4odCkpIHt9Ci0KLSAgICBFeGFjdGx5SW50KCkg
e30KLQotICAgIG9wZXJhdG9yIGludCgpIHsgcmV0dXJuIG1fdmFsdWU7IH0KLXByaXZhdGU6Ci0g
ICAgaW50IG1fdmFsdWU7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBp
bnQgY2FzdF90b19pbnQoVCkgeyByZXR1cm4gVDo6ZGVmYXVsdF9jYXNlX2Nhc3RfaXNfbm90X3N1
cHBvcnRlZCgpOyB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1pbmxpbmUgaW50IEV4YWN0bHlJbnQ6OmNh
c3RfdG9faW50PGludD4oaW50IGkpIHsgcmV0dXJuIGk7IH0KLQotdGVtcGxhdGU8PgotaW5saW5l
IGludCBFeGFjdGx5SW50OjpjYXN0X3RvX2ludDx1bnNpZ25lZCBpbnQ+KHVuc2lnbmVkIGludCBp
KSB7IHJldHVybiBpOyB9Ci0KLWNsYXNzIFJ1bnRpbWVDYXN0SGVscGVyIHsKLXB1YmxpYzoKLSNp
ZiAkdmFsaWRhdG9ySWZkZWZOYW1lCi0gICAgdGVtcGxhdGU8SW5zcGVjdG9yVmFsdWU6OlR5cGUg
VFlQRT4KLSAgICBzdGF0aWMgdm9pZCBhc3NlcnRUeXBlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkK
LSAgICB7Ci0gICAgICAgIEFTU0VSVCh2YWx1ZS0+dHlwZSgpID09IFRZUEUpOwotICAgIH0KLSAg
ICBzdGF0aWMgdm9pZCBhc3NlcnRBbnkoSW5zcGVjdG9yVmFsdWUqKTsKLSAgICBzdGF0aWMgdm9p
ZCBhc3NlcnRJbnQoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKTsKLSNlbmRpZgotfTsKLQotCi0vLyBU
aGlzIGNsYXNzIHByb3ZpZGVzICJUcmFpdHMiIHR5cGUgZm9yIHRoZSBpbnB1dCB0eXBlIFQuIEl0
IGlzIHByb2dyYW1tZWQgdXNpbmcgQysrIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uCi0vLyB0ZWNo
bmlxdWUuIEJ5IGRlZmF1bHQgaXQgc2ltcGx5IHRha2VzICJJdGVtVHJhaXRzIiB0eXBlIGZyb20g
VCwgYnV0IGl0IGRvZXNuJ3Qgd29yayB3aXRoIHRoZSBiYXNlIHR5cGVzLgotdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KLXN0cnVjdCBBcnJheUl0ZW1IZWxwZXIgewotICAgIHR5cGVkZWYgdHlwZW5hbWUg
VDo6SXRlbVRyYWl0cyBUcmFpdHM7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3Mg
QXJyYXkgOiBwdWJsaWMgSW5zcGVjdG9yQXJyYXlCYXNlIHsKLXByaXZhdGU6Ci0gICAgQXJyYXko
KSB7IH0KLQotICAgIEluc3BlY3RvckFycmF5KiBvcGVuQWNjZXNzb3JzKCkgewotICAgICAgICBD
T01QSUxFX0FTU0VSVChzaXplb2YoSW5zcGVjdG9yQXJyYXkpID09IHNpemVvZihBcnJheTxUPiks
IGNhbm5vdF9jYXN0KTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3BlY3RvckFycmF5
Kj4oc3RhdGljX2Nhc3Q8SW5zcGVjdG9yQXJyYXlCYXNlKj4odGhpcykpOwotICAgIH0KLQotcHVi
bGljOgotICAgIHZvaWQgYWRkSXRlbShQYXNzUmVmUHRyPFQ+IHZhbHVlKQotICAgIHsKLSAgICAg
ICAgQXJyYXlJdGVtSGVscGVyPFQ+OjpUcmFpdHM6OnB1c2hSZWZQdHIodGhpcy0+b3BlbkFjY2Vz
c29ycygpLCB2YWx1ZSk7Ci0gICAgfQotCi0gICAgdm9pZCBhZGRJdGVtKFQgdmFsdWUpCi0gICAg
ewotICAgICAgICBBcnJheUl0ZW1IZWxwZXI8VD46OlRyYWl0czo6cHVzaFJhdyh0aGlzLT5vcGVu
QWNjZXNzb3JzKCksIHZhbHVlKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBcnJh
eTxUPj4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXJyYXk8
VD4oKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8QXJyYXk8VD4+IHJ1bnRpbWVD
YXN0KFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQotICAgIHsKLSAgICAgICAgUmVm
UHRyPEluc3BlY3RvckFycmF5PiBhcnJheTsKLSAgICAgICAgYm9vbCBjYXN0UmVzID0gdmFsdWUt
PmFzQXJyYXkoJmFycmF5KTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChjYXN0UmVzLCBjYXN0UmVz
KTsKLSNpZiAkdmFsaWRhdG9ySWZkZWZOYW1lCi0gICAgICAgIGFzc2VydENvcnJlY3RWYWx1ZShh
cnJheS5nZXQoKSk7Ci0jZW5kaWYgIC8vICR2YWxpZGF0b3JJZmRlZk5hbWUKLSAgICAgICAgQ09N
UElMRV9BU1NFUlQoc2l6ZW9mKEFycmF5PFQ+KSA9PSBzaXplb2YoSW5zcGVjdG9yQXJyYXkpLCB0
eXBlX2Nhc3RfcHJvYmxlbSk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTxUPio+
KHN0YXRpY19jYXN0PEluc3BlY3RvckFycmF5QmFzZSo+KGFycmF5LmdldCgpKSk7Ci0gICAgfQot
Ci0jaWYgJHZhbGlkYXRvcklmZGVmTmFtZQotICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RW
YWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCi0gICAgewotICAgICAgICBSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+IGFycmF5OwotICAgICAgICBib29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNBcnJheSgm
YXJyYXkpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKGNhc3RSZXMsIGNhc3RSZXMpOwotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJyYXktPmxlbmd0aCgpOyBpKyspCi0gICAgICAg
ICAgICBBcnJheUl0ZW1IZWxwZXI8VD46OlRyYWl0czo6dGVtcGxhdGUgYXNzZXJ0Q29ycmVjdFZh
bHVlPFQ+KGFycmF5LT5nZXQoaSkuZ2V0KCkpOwotICAgIH0KLQotI2VuZGlmIC8vICR2YWxpZGF0
b3JJZmRlZk5hbWUKLX07Ci0KLXN0cnVjdCBTdHJ1Y3RJdGVtVHJhaXRzIHsKLSAgICBzdGF0aWMg
dm9pZCBwdXNoUmVmUHRyKEluc3BlY3RvckFycmF5KiBhcnJheSwgUGFzc1JlZlB0cjxJbnNwZWN0
b3JWYWx1ZT4gdmFsdWUpCi0gICAgewotICAgICAgICBhcnJheS0+cHVzaFZhbHVlKHZhbHVlKTsK
LSAgICB9Ci0KLSNpZiAkdmFsaWRhdG9ySWZkZWZOYW1lCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KLSAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZh
bHVlKSB7Ci0gICAgICAgIFQ6OmFzc2VydENvcnJlY3RWYWx1ZSh2YWx1ZSk7Ci0gICAgfQotI2Vu
ZGlmICAvLyAkdmFsaWRhdG9ySWZkZWZOYW1lCi19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgQXJy
YXlJdGVtSGVscGVyPFN0cmluZz4gewotICAgIHN0cnVjdCBUcmFpdHMgewotICAgICAgICBzdGF0
aWMgdm9pZCBwdXNoUmF3KEluc3BlY3RvckFycmF5KiBhcnJheSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSkKLSAgICAgICAgewotICAgICAgICAgICAgYXJyYXktPnB1c2hTdHJpbmcodmFsdWUpOwotICAg
ICAgICB9Ci0KLSNpZiAkdmFsaWRhdG9ySWZkZWZOYW1lCi0gICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+Ci0gICAgICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JW
YWx1ZSogdmFsdWUpIHsKLSAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBl
PEluc3BlY3RvclZhbHVlOjpUeXBlU3RyaW5nPih2YWx1ZSk7Ci0gICAgICAgIH0KLSNlbmRpZiAg
Ly8gJHZhbGlkYXRvcklmZGVmTmFtZQotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qg
QXJyYXlJdGVtSGVscGVyPGludD4gewotICAgIHN0cnVjdCBUcmFpdHMgewotICAgICAgICBzdGF0
aWMgdm9pZCBwdXNoUmF3KEluc3BlY3RvckFycmF5KiBhcnJheSwgaW50IHZhbHVlKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBhcnJheS0+cHVzaEludCh2YWx1ZSk7Ci0gICAgICAgIH0KLQotI2lm
ICR2YWxpZGF0b3JJZmRlZk5hbWUKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAg
ICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkg
ewotICAgICAgICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydEludCh2YWx1ZSk7Ci0gICAg
ICAgIH0KLSNlbmRpZiAgLy8gJHZhbGlkYXRvcklmZGVmTmFtZQotICAgIH07Ci19OwotCi10ZW1w
bGF0ZTw+Ci1zdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPGRvdWJsZT4gewotICAgIHN0cnVjdCBUcmFp
dHMgewotICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmF3KEluc3BlY3RvckFycmF5KiBhcnJheSwg
ZG91YmxlIHZhbHVlKQotICAgICAgICB7Ci0gICAgICAgICAgICBhcnJheS0+cHVzaE51bWJlcih2
YWx1ZSk7Ci0gICAgICAgIH0KLQotI2lmICR2YWxpZGF0b3JJZmRlZk5hbWUKLSAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVl
KEluc3BlY3RvclZhbHVlKiB2YWx1ZSkgewotICAgICAgICAgICAgUnVudGltZUNhc3RIZWxwZXI6
OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFsdWU6OlR5cGVOdW1iZXI+KHZhbHVlKTsKLSAgICAgICAg
fQotI2VuZGlmICAvLyAkdmFsaWRhdG9ySWZkZWZOYW1lCi0gICAgfTsKLX07Ci0KLXRlbXBsYXRl
PD4KLXN0cnVjdCBBcnJheUl0ZW1IZWxwZXI8Ym9vbD4gewotICAgIHN0cnVjdCBUcmFpdHMgewot
ICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmF3KEluc3BlY3RvckFycmF5KiBhcnJheSwgYm9vbCB2
YWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgYXJyYXktPnB1c2hCb29sZWFuKHZhbHVlKTsK
LSAgICAgICAgfQotCi0jaWYgJHZhbGlkYXRvcklmZGVmTmFtZQotICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVj
dG9yVmFsdWUqIHZhbHVlKSB7Ci0gICAgICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0
VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZUJvb2xlYW4+KHZhbHVlKTsKLSAgICAgICAgfQotI2Vu
ZGlmICAvLyAkdmFsaWRhdG9ySWZkZWZOYW1lCi0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0
cnVjdCBBcnJheUl0ZW1IZWxwZXI8SW5zcGVjdG9yVmFsdWU+IHsKLSAgICBzdHJ1Y3QgVHJhaXRz
IHsKLSAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0b3JBcnJheSogYXJyYXks
IFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBhcnJheS0+cHVzaFZhbHVlKHZhbHVlKTsKLSAgICAgICAgfQotCi0jaWYgJHZhbGlkYXRvcklm
ZGVmTmFtZQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgdm9p
ZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKSB7Ci0gICAgICAgICAg
ICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0QW55KHZhbHVlKTsKLSAgICAgICAgfQotI2VuZGlm
ICAvLyAkdmFsaWRhdG9ySWZkZWZOYW1lCi0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVj
dCBBcnJheUl0ZW1IZWxwZXI8SW5zcGVjdG9yT2JqZWN0PiB7Ci0gICAgc3RydWN0IFRyYWl0cyB7
Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQ
YXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAg
YXJyYXktPnB1c2hWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIH0KLQotI2lmICR2YWxpZGF0b3JJZmRl
Zk5hbWUKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIHZvaWQg
YXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkgewotICAgICAgICAgICAg
UnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFsdWU6OlR5cGVPYmplY3Q+
KHZhbHVlKTsKLSAgICAgICAgfQotI2VuZGlmICAvLyAkdmFsaWRhdG9ySWZkZWZOYW1lCi0gICAg
fTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBBcnJheUl0ZW1IZWxwZXI8SW5zcGVjdG9yQXJy
YXk+IHsKLSAgICBzdHJ1Y3QgVHJhaXRzIHsKLSAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0
cihJbnNwZWN0b3JBcnJheSogYXJyYXksIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHZhbHVl
KQotICAgICAgICB7Ci0gICAgICAgICAgICBhcnJheS0+cHVzaEFycmF5KHZhbHVlKTsKLSAgICAg
ICAgfQotCi0jaWYgJHZhbGlkYXRvcklmZGVmTmFtZQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgotICAgICAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFs
dWUqIHZhbHVlKSB7Ci0gICAgICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJ
bnNwZWN0b3JWYWx1ZTo6VHlwZUFycmF5Pih2YWx1ZSk7Ci0gICAgICAgIH0KLSNlbmRpZiAgLy8g
JHZhbGlkYXRvcklmZGVmTmFtZQotICAgIH07Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
c3RydWN0IEFycmF5SXRlbUhlbHBlcjxUeXBlQnVpbGRlcjo6QXJyYXk8VD4+IHsKLSAgICBzdHJ1
Y3QgVHJhaXRzIHsKLSAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0b3JBcnJh
eSogYXJyYXksIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFQ+PiB2YWx1ZSkKLSAgICAg
ICAgewotICAgICAgICAgICAgYXJyYXktPnB1c2hWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIH0KLQot
I2lmICR2YWxpZGF0b3JJZmRlZk5hbWUKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUz4KLSAg
ICAgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1
ZSkgewotICAgICAgICAgICAgUzo6YXNzZXJ0Q29ycmVjdFZhbHVlKHZhbHVlKTsKLSAgICAgICAg
fQotI2VuZGlmICAvLyAkdmFsaWRhdG9ySWZkZWZOYW1lCi0gICAgfTsKLX07Ci0KICR7Zm9yd2Fy
ZHN9CiAKIFN0cmluZyBnZXRFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSk7CkBAIC01MDcsMTIg
KzIzNSwxMSBAQCBTdHJpbmcgZ2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpOwogJHt0eXBl
QnVpbGRlcnN9CiB9IC8vIG5hbWVzcGFjZSBUeXBlQnVpbGRlcgogCi0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKElO
U1BFQ1RPUikKIAotI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvclR5cGVCdWlsZGVyX2gpCisj
ZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzX2gpCiAKICIiIikKIApA
QCAtNTIyLDEwICsyNDksMTIgQEAgdHlwZWJ1aWxkZXJfY3BwID0gKAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVp
bGRlci5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKKworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIG5hbWVzcGFjZSBUeXBl
QnVpbGRlciB7CiAKQEAgLTU0MiwyNSArMjcxLDExIEBAICRpbXBsQ29kZQogCiAjaWYgJHZhbGlk
YXRvcklmZGVmTmFtZQogCi12b2lkIFR5cGVCdWlsZGVyOjpSdW50aW1lQ2FzdEhlbHBlcjo6YXNz
ZXJ0QW55KEluc3BlY3RvclZhbHVlKikKLXsKLSAgICAvLyBOby1vcC4KLX0KLQotCi12b2lkIFR5
cGVCdWlsZGVyOjpSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0SW50KEluc3BlY3RvclZhbHVlKiB2
YWx1ZSkKLXsKLSAgICBkb3VibGUgdjsKLSAgICBib29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNOdW1i
ZXIoJnYpOwotICAgIEFTU0VSVF9VTlVTRUQoY2FzdFJlcywgY2FzdFJlcyk7Ci0gICAgQVNTRVJU
KHN0YXRpY19jYXN0PGRvdWJsZT4oc3RhdGljX2Nhc3Q8aW50Pih2KSkgPT0gdik7Ci19Ci0KICR2
YWxpZGF0b3JDb2RlCiAKICNlbmRpZiAvLyAkdmFsaWRhdG9ySWZkZWZOYW1lCiAKLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5B
QkxFKElOU1BFQ1RPUikKICIiIikKQEAgLTU4NCwxNCArMjk5LDE0IEBAIGNsYXNzX2JpbmRpbmdf
YnVpbGRlcl9wYXJ0XzEgPSAoCiAgICAgdGVtcGxhdGU8aW50IFNUQVRFPgogICAgIGNsYXNzIEJ1
aWxkZXIgewogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1f
cmVzdWx0OworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1fcmVz
dWx0OwogCiAgICAgICAgIHRlbXBsYXRlPGludCBTVEVQPiBCdWlsZGVyPFNUQVRFIHwgU1RFUD4m
IGNhc3RTdGF0ZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRf
Y2FzdDxCdWlsZGVyPFNUQVRFIHwgU1RFUD4qPih0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAg
IEJ1aWxkZXIoUGFzc1JlZlB0cjwvKiVzKi9JbnNwZWN0b3JPYmplY3Q+IHB0cikKKyAgICAgICAg
QnVpbGRlcihQYXNzUmVmUHRyPC8qJXMqL0luc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBwdHIp
CiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IE5vRmllbGRz
U2V0LCBidWlsZGVyX2NyZWF0ZWRfaW5fbm9uX2luaXRfc3RhdGUpOwogICAgICAgICAgICAgbV9y
ZXN1bHQgPSBwdHI7CkBAIC02MTMsNyArMzI4LDcgQEAgY2xhc3NfYmluZGluZ19idWlsZGVyX3Bh
cnRfMyA9ICgiIiIKICAgICAgICAgb3BlcmF0b3IgUmVmUHRyPCVzPiYgKCkKICAgICAgICAgewog
ICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoU1RBVEUgPT0gQWxsRmllbGRzU2V0LCByZXN1bHRf
aXNfbm90X3JlYWR5KTsKLSAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZiglcykgPT0g
c2l6ZW9mKEluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKKyAgICAgICAgICAgIENPTVBJ
TEVfQVNTRVJUKHNpemVvZiglcykgPT0gc2l6ZW9mKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
KSwgY2Fubm90X2Nhc3QpOwogICAgICAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PFJl
ZlB0cjwlcz4qPigmbV9yZXN1bHQpOwogICAgICAgICB9CiAKQEAgLTYyOCw2ICszNDMsNiBAQCBj
bGFzc19iaW5kaW5nX2J1aWxkZXJfcGFydF8zID0gKCIiIgogY2xhc3NfYmluZGluZ19idWlsZGVy
X3BhcnRfNCA9ICgKICIiIiAgICBzdGF0aWMgQnVpbGRlcjxOb0ZpZWxkc1NldD4gY3JlYXRlKCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3JPYmpl
Y3Q6OmNyZWF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CiAgICAgfQogIiIiKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKaW5kZXggMGM5NzBiOC4uNmZiODVk
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCkBAIC0z
OCwxNCArMzgsMTYgQEAKICNpbmNsdWRlICJJZGVudGlmaWVyc0ZhY3RvcnkuaCIKICNpbmNsdWRl
ICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgot
I2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIlNjcmlwdEFyZ3VtZW50cy5o
IgogI2luY2x1ZGUgIlNjcmlwdENhbGxGcmFtZS5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFj
ay5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCIKLSNpbmNsdWRlICJTY3Jp
cHRWYWx1ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CisjaW5jbHVkZSA8
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Q29uc29sZU1lc3NhZ2U6OkNvbnNvbGVNZXNzYWdlKGJvb2wgY2FuR2VuZXJhdGVDYWxsU3RhY2ss
IE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2
ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmll
cikKQEAgLTEzOSw1NyArMTQxLDU3IEBAIHZvaWQgQ29uc29sZU1lc3NhZ2U6OmF1dG9nZW5lcmF0
ZU1ldGFkYXRhKGJvb2wgY2FuR2VuZXJhdGVDYWxsU3RhY2ssIEpTQzo6RXhlY1N0CiB9CiAKIC8v
IEtlZXAgaW4gc3luYyB3aXRoIGluc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMKLXN0
YXRpYyBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6RW51bSBt
ZXNzYWdlU291cmNlVmFsdWUoTWVzc2FnZVNvdXJjZSBzb3VyY2UpCitzdGF0aWMgSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6RW51bSBtZXNz
YWdlU291cmNlVmFsdWUoTWVzc2FnZVNvdXJjZSBzb3VyY2UpCiB7CiAgICAgc3dpdGNoIChzb3Vy
Y2UpIHsKLSAgICBjYXNlIFhNTE1lc3NhZ2VTb3VyY2U6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29u
c29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6WE1MOwotICAgIGNhc2UgSlNNZXNzYWdlU291
cmNlOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6
OkphdmFzY3JpcHQ7Ci0gICAgY2FzZSBOZXR3b3JrTWVzc2FnZVNvdXJjZTogcmV0dXJuIFR5cGVC
dWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpOZXR3b3JrOwotICAgIGNh
c2UgQ29uc29sZUFQSU1lc3NhZ2VTb3VyY2U6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6
Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6Q29uc29sZUFQSTsKLSAgICBjYXNlIFN0b3JhZ2VNZXNz
YWdlU291cmNlOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpT
b3VyY2U6OlN0b3JhZ2U7Ci0gICAgY2FzZSBBcHBDYWNoZU1lc3NhZ2VTb3VyY2U6IHJldHVybiBU
eXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6QXBwY2FjaGU7Ci0g
ICAgY2FzZSBSZW5kZXJpbmdNZXNzYWdlU291cmNlOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNv
bGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6OlJlbmRlcmluZzsKLSAgICBjYXNlIENTU01lc3Nh
Z2VTb3VyY2U6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNv
dXJjZTo6Q1NTOwotICAgIGNhc2UgU2VjdXJpdHlNZXNzYWdlU291cmNlOiByZXR1cm4gVHlwZUJ1
aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6OlNlY3VyaXR5OwotICAgIGNh
c2UgT3RoZXJNZXNzYWdlU291cmNlOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNv
bGVNZXNzYWdlOjpTb3VyY2U6Ok90aGVyOworICAgIGNhc2UgWE1MTWVzc2FnZVNvdXJjZTogcmV0
dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3Vy
Y2U6OlhNTDsKKyAgICBjYXNlIEpTTWVzc2FnZVNvdXJjZTogcmV0dXJuIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6OkphdmFzY3JpcHQ7Cisg
ICAgY2FzZSBOZXR3b3JrTWVzc2FnZVNvdXJjZTogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6Ok5ldHdvcms7CisgICAgY2FzZSBD
b25zb2xlQVBJTWVzc2FnZVNvdXJjZTogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNv
bnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6OkNvbnNvbGVBUEk7CisgICAgY2FzZSBTdG9y
YWdlTWVzc2FnZVNvdXJjZTogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6
OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6OlN0b3JhZ2U7CisgICAgY2FzZSBBcHBDYWNoZU1lc3Nh
Z2VTb3VyY2U6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xl
TWVzc2FnZTo6U291cmNlOjpBcHBjYWNoZTsKKyAgICBjYXNlIFJlbmRlcmluZ01lc3NhZ2VTb3Vy
Y2U6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2Fn
ZTo6U291cmNlOjpSZW5kZXJpbmc7CisgICAgY2FzZSBDU1NNZXNzYWdlU291cmNlOiByZXR1cm4g
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6
Q1NTOworICAgIGNhc2UgU2VjdXJpdHlNZXNzYWdlU291cmNlOiByZXR1cm4gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6U2VjdXJpdHk7Cisg
ICAgY2FzZSBPdGhlck1lc3NhZ2VTb3VyY2U6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpPdGhlcjsKICAgICB9Ci0gICAgcmV0
dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpPdGhlcjsK
KyAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3Nh
Z2U6OlNvdXJjZTo6T3RoZXI7CiB9CiAKLXN0YXRpYyBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29u
c29sZU1lc3NhZ2U6OlR5cGU6OkVudW0gbWVzc2FnZVR5cGVWYWx1ZShNZXNzYWdlVHlwZSB0eXBl
KQorc3RhdGljIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdl
OjpUeXBlOjpFbnVtIG1lc3NhZ2VUeXBlVmFsdWUoTWVzc2FnZVR5cGUgdHlwZSkKIHsKICAgICBz
d2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIExvZ01lc3NhZ2VUeXBlOiByZXR1cm4gVHlwZUJ1aWxk
ZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpMb2c7Ci0gICAgY2FzZSBDbGVhck1l
c3NhZ2VUeXBlOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpU
eXBlOjpDbGVhcjsKLSAgICBjYXNlIERpck1lc3NhZ2VUeXBlOiByZXR1cm4gVHlwZUJ1aWxkZXI6
OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpEaXI7Ci0gICAgY2FzZSBEaXJYTUxNZXNz
YWdlVHlwZTogcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlw
ZTo6RGlyWE1MOwotICAgIGNhc2UgVGFibGVNZXNzYWdlVHlwZTogcmV0dXJuIFR5cGVCdWlsZGVy
OjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6VGFibGU7Ci0gICAgY2FzZSBUcmFjZU1l
c3NhZ2VUeXBlOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpU
eXBlOjpUcmFjZTsKLSAgICBjYXNlIFN0YXJ0R3JvdXBNZXNzYWdlVHlwZTogcmV0dXJuIFR5cGVC
dWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6U3RhcnRHcm91cDsKLSAgICBj
YXNlIFN0YXJ0R3JvdXBDb2xsYXBzZWRNZXNzYWdlVHlwZTogcmV0dXJuIFR5cGVCdWlsZGVyOjpD
b25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6U3RhcnRHcm91cENvbGxhcHNlZDsKLSAgICBj
YXNlIEVuZEdyb3VwTWVzc2FnZVR5cGU6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29u
c29sZU1lc3NhZ2U6OlR5cGU6OkVuZEdyb3VwOwotICAgIGNhc2UgQXNzZXJ0TWVzc2FnZVR5cGU6
IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkFzc2Vy
dDsKLSAgICBjYXNlIFRpbWluZ01lc3NhZ2VUeXBlOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNv
bGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpUaW1pbmc7Ci0gICAgY2FzZSBQcm9maWxlTWVzc2Fn
ZVR5cGU6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6
OlByb2ZpbGU7Ci0gICAgY2FzZSBQcm9maWxlRW5kTWVzc2FnZVR5cGU6IHJldHVybiBUeXBlQnVp
bGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlByb2ZpbGVFbmQ7CisgICAgY2Fz
ZSBMb2dNZXNzYWdlVHlwZTogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6
OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpMb2c7CisgICAgY2FzZSBDbGVhck1lc3NhZ2VUeXBlOiBy
ZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5
cGU6OkNsZWFyOworICAgIGNhc2UgRGlyTWVzc2FnZVR5cGU6IHJldHVybiBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6RGlyOworICAgIGNhc2Ug
RGlyWE1MTWVzc2FnZVR5cGU6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xl
OjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6RGlyWE1MOworICAgIGNhc2UgVGFibGVNZXNzYWdlVHlw
ZTogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdl
OjpUeXBlOjpUYWJsZTsKKyAgICBjYXNlIFRyYWNlTWVzc2FnZVR5cGU6IHJldHVybiBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6VHJhY2U7Cisg
ICAgY2FzZSBTdGFydEdyb3VwTWVzc2FnZVR5cGU6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6U3RhcnRHcm91cDsKKyAgICBjYXNl
IFN0YXJ0R3JvdXBDb2xsYXBzZWRNZXNzYWdlVHlwZTogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpTdGFydEdyb3VwQ29sbGFwc2Vk
OworICAgIGNhc2UgRW5kR3JvdXBNZXNzYWdlVHlwZTogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpFbmRHcm91cDsKKyAgICBjYXNl
IEFzc2VydE1lc3NhZ2VUeXBlOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29s
ZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkFzc2VydDsKKyAgICBjYXNlIFRpbWluZ01lc3NhZ2VU
eXBlOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3Nh
Z2U6OlR5cGU6OlRpbWluZzsKKyAgICBjYXNlIFByb2ZpbGVNZXNzYWdlVHlwZTogcmV0dXJuIElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpQcm9m
aWxlOworICAgIGNhc2UgUHJvZmlsZUVuZE1lc3NhZ2VUeXBlOiByZXR1cm4gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlByb2ZpbGVFbmQ7CiAg
ICAgfQotICAgIHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5
cGU6OkxvZzsKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29u
c29sZU1lc3NhZ2U6OlR5cGU6OkxvZzsKIH0KIAotc3RhdGljIFR5cGVCdWlsZGVyOjpDb25zb2xl
OjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6OkVudW0gbWVzc2FnZUxldmVsVmFsdWUoTWVzc2FnZUxl
dmVsIGxldmVsKQorc3RhdGljIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNv
bGVNZXNzYWdlOjpMZXZlbDo6RW51bSBtZXNzYWdlTGV2ZWxWYWx1ZShNZXNzYWdlTGV2ZWwgbGV2
ZWwpCiB7CiAgICAgc3dpdGNoIChsZXZlbCkgewotICAgIGNhc2UgRGVidWdNZXNzYWdlTGV2ZWw6
IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpEZWJ1
ZzsKLSAgICBjYXNlIExvZ01lc3NhZ2VMZXZlbDogcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xl
OjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6OkxvZzsKLSAgICBjYXNlIFdhcm5pbmdNZXNzYWdlTGV2
ZWw6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpX
YXJuaW5nOwotICAgIGNhc2UgRXJyb3JNZXNzYWdlTGV2ZWw6IHJldHVybiBUeXBlQnVpbGRlcjo6
Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpFcnJvcjsKKyAgICBjYXNlIERlYnVnTWVz
c2FnZUxldmVsOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29s
ZU1lc3NhZ2U6OkxldmVsOjpEZWJ1ZzsKKyAgICBjYXNlIExvZ01lc3NhZ2VMZXZlbDogcmV0dXJu
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbDo6
TG9nOworICAgIGNhc2UgV2FybmluZ01lc3NhZ2VMZXZlbDogcmV0dXJuIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbDo6V2FybmluZzsKKyAgICBj
YXNlIEVycm9yTWVzc2FnZUxldmVsOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29u
c29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpFcnJvcjsKICAgICB9Ci0gICAgcmV0dXJuIFR5
cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6OkxvZzsKKyAgICByZXR1
cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVs
OjpMb2c7CiB9CiAKIHZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQoSW5zcGVjdG9y
Q29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciogY29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciwgSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIGJvb2wgZ2VuZXJhdGVQ
cmV2aWV3KQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3Nh
Z2U+IGpzb25PYmogPSBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OmNyZWF0
ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVN
ZXNzYWdlPiBqc29uT2JqID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29s
ZU1lc3NhZ2U6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRTb3VyY2UobWVzc2FnZVNvdXJjZVZhbHVl
KG1fc291cmNlKSkKICAgICAgICAgLnNldExldmVsKG1lc3NhZ2VMZXZlbFZhbHVlKG1fbGV2ZWwp
KQogICAgICAgICAuc2V0VGV4dChtX21lc3NhZ2UpOwpAQCAtMjA0LDExICsyMDYsMTEgQEAgdm9p
ZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVuZChJbnNwZWN0b3JDb25zb2xlRnJvbnRlbmRE
aXNwYXRjaGVyKiBjb25zb2xlRnIKICAgICBpZiAobV9hcmd1bWVudHMgJiYgbV9hcmd1bWVudHMt
PmFyZ3VtZW50Q291bnQoKSkgewogICAgICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dCA9IGluamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3IobV9hcmd1bWVudHMt
Pmdsb2JhbFN0YXRlKCkpOwogICAgICAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUo
KSkgewotICAgICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6
UnVudGltZTo6UmVtb3RlT2JqZWN0Pj4ganNvbkFyZ3MgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlw
ZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD46OmNyZWF0ZSgpOworICAgICAgICAgICAg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4+IGpzb25BcmdzID0gSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0
Pjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBpZiAobV90eXBlID09IFRhYmxlTWVzc2FnZVR5cGUg
JiYgZ2VuZXJhdGVQcmV2aWV3ICYmIG1fYXJndW1lbnRzLT5hcmd1bWVudENvdW50KCkpIHsKLSAg
ICAgICAgICAgICAgICBTY3JpcHRWYWx1ZSB0YWJsZSA9IG1fYXJndW1lbnRzLT5hcmd1bWVudEF0
KDApOwotICAgICAgICAgICAgICAgIFNjcmlwdFZhbHVlIGNvbHVtbnMgPSBtX2FyZ3VtZW50cy0+
YXJndW1lbnRDb3VudCgpID4gMSA/IG1fYXJndW1lbnRzLT5hcmd1bWVudEF0KDEpIDogU2NyaXB0
VmFsdWUoKTsKLSAgICAgICAgICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJl
bW90ZU9iamVjdD4gaW5zcGVjdG9yVmFsdWUgPSBpbmplY3RlZFNjcmlwdC53cmFwVGFibGUodGFi
bGUsIGNvbHVtbnMpOworICAgICAgICAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHRh
YmxlID0gbV9hcmd1bWVudHMtPmFyZ3VtZW50QXQoMCk7CisgICAgICAgICAgICAgICAgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUgY29sdW1ucyA9IG1fYXJndW1lbnRzLT5hcmd1bWVudENvdW50KCkg
PiAxID8gbV9hcmd1bWVudHMtPmFyZ3VtZW50QXQoMSkgOiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSgpOworICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q+IGluc3BlY3RvclZhbHVlID0gaW5qZWN0ZWRTY3JpcHQud3JhcFRh
YmxlKHRhYmxlLCBjb2x1bW5zKTsKICAgICAgICAgICAgICAgICBpZiAoIWluc3BlY3RvclZhbHVl
KSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CkBAIC0yMTYsNyArMjE4LDcgQEAgdm9pZCBDb25zb2xlTWVzc2Fn
ZTo6YWRkVG9Gcm9udGVuZChJbnNwZWN0b3JDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyKiBjb25z
b2xlRnIKICAgICAgICAgICAgICAgICBqc29uQXJncy0+YWRkSXRlbShpbnNwZWN0b3JWYWx1ZSk7
CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX2FyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsKLSAgICAgICAgICAg
ICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IGluc3Bl
Y3RvclZhbHVlID0gaW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChtX2FyZ3VtZW50cy0+YXJndW1l
bnRBdChpKSwgImNvbnNvbGUiLCBnZW5lcmF0ZVByZXZpZXcpOworICAgICAgICAgICAgICAgICAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBp
bnNwZWN0b3JWYWx1ZSA9IGluamVjdGVkU2NyaXB0LndyYXBPYmplY3QobV9hcmd1bWVudHMtPmFy
Z3VtZW50QXQoaSksICJjb25zb2xlIiwgZ2VuZXJhdGVQcmV2aWV3KTsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFpbnNwZWN0b3JWYWx1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oCmluZGV4IDA3Zjg4YjYuLjdmZDE2
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oCkBAIC0zOCwx
NSArMzgsMTcgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAorbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFzcyBJbnNwZWN0b3JPYmplY3Q7Cit9
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NV2luZG93OwogY2xhc3MgSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyOwotY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3MgU2NyaXB0QXJn
dW1lbnRzOwogY2xhc3MgU2NyaXB0Q2FsbEZyYW1lOwogY2xhc3MgU2NyaXB0Q2FsbFN0YWNrOwot
Y2xhc3MgU2NyaXB0VmFsdWU7CiAKIGNsYXNzIENvbnNvbGVNZXNzYWdlIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShDb25zb2xlTWVzc2FnZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmNwcAppbmRl
eCAwM2E4MDVmLi5lYTFhMGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
Q29udGVudFNlYXJjaFV0aWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29u
dGVudFNlYXJjaFV0aWxzLmNwcApAQCAtMzEsMTQgKzMxLDE0IEBACiAjaWYgRU5BQkxFKElOU1BF
Q1RPUikKIAogI2luY2x1ZGUgIkNvbnRlbnRTZWFyY2hVdGlscy5oIgotCi0jaW5jbHVkZSAiSW5z
cGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiUmVndWxhckV4cHJlc3Npb24uaCIKLQorI2luY2x1
ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvQnVtcFBvaW50
ZXJBbGxvY2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8
eWFyci9ZYXJyLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIG5hbWVzcGFjZSBDb250ZW50U2VhcmNoVXRpbHMgewogCkBAIC0xMjAsOSArMTIw
LDkgQEAgUGFzc093blB0cjxWZWN0b3I8c2l6ZV90Pj4gbGluZUVuZGluZ3MoY29uc3QgU3RyaW5n
JiB0ZXh0KQogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCi1zdGF0aWMgUGFzc1Jl
ZlB0cjxUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0Y2g+IGJ1aWxkT2JqZWN0Rm9yU2VhcmNo
TWF0Y2goaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgbGluZUNvbnRlbnQpCitzdGF0aWMg
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hNYXRjaD4gYnVp
bGRPYmplY3RGb3JTZWFyY2hNYXRjaChpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBsaW5l
Q29udGVudCkKIHsKLSAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaE1hdGNoOjpj
cmVhdGUoKQorICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hN
YXRjaDo6Y3JlYXRlKCkKICAgICAgICAgLnNldExpbmVOdW1iZXIobGluZU51bWJlcikKICAgICAg
ICAgLnNldExpbmVDb250ZW50KGxpbmVDb250ZW50KQogICAgICAgICAucmVsZWFzZSgpOwpAQCAt
MTUzLDkgKzE1Myw5IEBAIGludCBjb3VudFJlZ3VsYXJFeHByZXNzaW9uTWF0Y2hlcyhjb25zdCBS
ZWd1bGFyRXhwcmVzc2lvbiYgcmVnZXgsIGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6
U2VhcmNoTWF0Y2g+PiBzZWFyY2hJblRleHRCeUxpbmVzKGNvbnN0IFN0cmluZyYgdGV4dCwgY29u
c3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sIGlz
UmVnZXgpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaE1hdGNoPj4gc2VhcmNoSW5UZXh0QnlMaW5lcyhj
b25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wgY2FzZVNl
bnNpdGl2ZSwgY29uc3QgYm9vbCBpc1JlZ2V4KQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6
QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaE1hdGNoPj4gcmVzdWx0ID0gVHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hNYXRjaD46OmNyZWF0ZSgpOworICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpQYWdlOjpTZWFyY2hNYXRjaD4+IHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaE1hdGNoPjo6Y3JlYXRl
KCk7CiAKICAgICBSZWd1bGFyRXhwcmVzc2lvbiByZWdleCA9IENvbnRlbnRTZWFyY2hVdGlsczo6
Y3JlYXRlU2VhcmNoUmVnZXgocXVlcnksIGNhc2VTZW5zaXRpdmUsIGlzUmVnZXgpOwogICAgIFZl
Y3RvcjxwYWlyPGludCwgU3RyaW5nPj4gbWF0Y2hlcyA9IGdldFJlZ3VsYXJFeHByZXNzaW9uTWF0
Y2hlc0J5TGluZXMocmVnZXgsIHRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0Nv
bnRlbnRTZWFyY2hVdGlscy5oCmluZGV4IDYwYWQ2NzguLjMxMWI2MjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbHMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmgKQEAgLTMxLDIxICszMSwyMCBA
QAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvclR5cGVCdWls
ZGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmgiCiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IEluc3BlY3RvckFycmF5OwogY2xhc3MgUmVndWxhckV4cHJlc3Npb247CiAKIG5hbWVzcGFjZSBD
b250ZW50U2VhcmNoVXRpbHMgewogCiBSZWd1bGFyRXhwcmVzc2lvbiBjcmVhdGVTZWFyY2hSZWdl
eChjb25zdCBTdHJpbmcmIHF1ZXJ5LCBib29sIGNhc2VTZW5zaXRpdmUsIGJvb2wgaXNSZWdleCk7
CiBpbnQgY291bnRSZWd1bGFyRXhwcmVzc2lvbk1hdGNoZXMoY29uc3QgUmVndWxhckV4cHJlc3Np
b24mLCBjb25zdCBTdHJpbmcmKTsKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVC
dWlsZGVyOjpQYWdlOjpTZWFyY2hNYXRjaD4+IHNlYXJjaEluVGV4dEJ5TGluZXMoY29uc3QgU3Ry
aW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sIGNhc2VTZW5zaXRpdmUs
IGNvbnN0IGJvb2wgaXNSZWdleCk7CitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaE1hdGNoPj4gc2VhcmNo
SW5UZXh0QnlMaW5lcyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNv
bnN0IGJvb2wgY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCBpc1JlZ2V4KTsKIFRleHRQb3NpdGlv
biB0ZXh0UG9zaXRpb25Gcm9tT2Zmc2V0KHNpemVfdCBvZmZzZXQsIGNvbnN0IFZlY3RvcjxzaXpl
X3Q+JiBsaW5lRW5kaW5ncyk7CiBQYXNzT3duUHRyPFZlY3RvcjxzaXplX3Q+PiBsaW5lRW5kaW5n
cyhjb25zdCBTdHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdC5jcHAKaW5kZXggNzdmNzgwYy4uOTliYTlkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCkBAIC0zNiwxOCArMzYsMjEgQEAKIAogI2luY2x1ZGUg
IkluamVjdGVkU2NyaXB0SG9zdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TW9kdWxlLmgi
Ci0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCisjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhl
Y1N0YXRlLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgotI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2Fs
bC5oIgotI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPGJpbmRp
bmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oPgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVj
dC5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkFycmF5
OwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU7Ci11c2lu
ZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yOwotdXNp
bmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlw
dG9yOwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFp
bHM7Ci11c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0Owor
dXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk7Cit1c2luZyBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lOwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlsczsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcjsKK3VzaW5nIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yOwordXNpbmcgSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0OworCit1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU2LDE0ICs1OSwx
NCBAQCBJbmplY3RlZFNjcmlwdDo6SW5qZWN0ZWRTY3JpcHQoKQogewogfQogCi1JbmplY3RlZFNj
cmlwdDo6SW5qZWN0ZWRTY3JpcHQoU2NyaXB0T2JqZWN0IGluamVjdGVkU2NyaXB0T2JqZWN0LCBJ
bnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrIGFjY2Vzc0NoZWNrKQorSW5qZWN0ZWRTY3JpcHQ6Oklu
amVjdGVkU2NyaXB0KERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBpbmplY3RlZFNjcmlwdE9iamVj
dCwgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayBhY2Nlc3NDaGVjaykKICAgICA6IEluamVjdGVk
U2NyaXB0QmFzZSgiSW5qZWN0ZWRTY3JpcHQiLCBpbmplY3RlZFNjcmlwdE9iamVjdCwgYWNjZXNz
Q2hlY2spCiB7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlKEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9i
amVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgYm9vbCByZXR1cm5CeVZhbHVl
LCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+KiByZXN1bHQsIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93
bikKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBi
b29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgYm9vbCByZXR1cm5CeVZhbHVlLCBib29sIGdlbmVy
YXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdD4qIHJlc3VsdCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+
KiB3YXNUaHJvd24pCiB7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVk
U2NyaXB0T2JqZWN0KCksICJldmFsdWF0ZSIpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0
aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZXZhbHVhdGUiLCBXZWJD
b3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAgZnVuY3Rpb24uYXBw
ZW5kQXJndW1lbnQoZXhwcmVzc2lvbik7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2Jq
ZWN0R3JvdXApOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGluY2x1ZGVDb21tYW5kTGlu
ZUFQSSk7CkBAIC03Miw5ICs3NSw5IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uCiAgICAgbWFr
ZUV2YWxDYWxsKGVycm9yU3RyaW5nLCBmdW5jdGlvbiwgcmVzdWx0LCB3YXNUaHJvd24pOwogfQog
Ci12b2lkIEluamVjdGVkU2NyaXB0OjpjYWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwg
Y29uc3QgU3RyaW5nJiBhcmd1bWVudHMsIGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0
ZVByZXZpZXcsIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVz
dWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCit2b2lkIEluamVj
dGVkU2NyaXB0OjpjYWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5n
JiBhcmd1bWVudHMsIGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1
bHQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQog
ewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgp
LCAiY2FsbEZ1bmN0aW9uT24iKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwg
ZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImNhbGxGdW5jdGlvbk9uIiwgV2ViQ29y
ZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAgIGZ1bmN0aW9uLmFwcGVu
ZEFyZ3VtZW50KG9iamVjdElkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChleHByZXNz
aW9uKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChhcmd1bWVudHMpOwpAQCAtODMsOSAr
ODYsOSBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpjYWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZQogICAgIG1ha2VFdmFsQ2FsbChlcnJvclN0
cmluZywgZnVuY3Rpb24sIHJlc3VsdCwgd2FzVGhyb3duKTsKIH0KIAotdm9pZCBJbmplY3RlZFNj
cmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0
IFNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25z
dCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5j
bHVkZUNvbW1hbmRMaW5lQVBJLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2
aWV3LCBSZWZQdHI8UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0
PGJvb2w+KiB3YXNUaHJvd24pCit2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZy
YW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUmIGNhbGxGcmFtZXMsIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYg
ZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFu
ZExpbmVBUEksIGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0
cjxSZW1vdGVPYmplY3Q+KiByZXN1bHQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1
dDxib29sPiogd2FzVGhyb3duKQogewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihp
bmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZXZhbHVhdGVPbkNhbGxGcmFtZSIpOworICAgIERlcHJl
Y2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgp
LCAiZXZhbHVhdGVPbkNhbGxGcmFtZSIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9t
QW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYWxsRnJhbWVzKTsKICAg
ICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYWxsRnJhbWVJZCk7CiAgICAgZnVuY3Rpb24uYXBw
ZW5kQXJndW1lbnQoZXhwcmVzc2lvbik7CkBAIC05OCw3ICsxMDEsNyBAQCB2b2lkIEluamVjdGVk
U2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29u
c3QgU2NyaXB0VgogCiB2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRGdW5jdGlvbkRldGFpbHMoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxG
dW5jdGlvbkRldGFpbHM+KiByZXN1bHQpCiB7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0
aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJnZXRGdW5jdGlvbkRldGFpbHMiKTsKKyAgICBE
ZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmpl
Y3QoKSwgImdldEZ1bmN0aW9uRGV0YWlscyIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJG
cm9tQW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChmdW5jdGlvbklkKTsK
ICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdFZhbHVlOwogICAgIG1ha2VDYWxsKGZ1
bmN0aW9uLCAmcmVzdWx0VmFsdWUpOwpAQCAtMTEyLDcgKzExNSw3IEBAIHZvaWQgSW5qZWN0ZWRT
Y3JpcHQ6OmdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYKIAogdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0UHJvcGVydGllcyhFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGJvb2wgb3duUHJvcGVydGll
cywgUmVmUHRyPEFycmF5PFByb3BlcnR5RGVzY3JpcHRvcj4+KiBwcm9wZXJ0aWVzKQogewotICAg
IFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZ2V0
UHJvcGVydGllcyIpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlv
bihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZ2V0UHJvcGVydGllcyIsIFdlYkNvcmU6OmZ1bmN0
aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVu
dChvYmplY3RJZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob3duUHJvcGVydGllcyk7
CiAKQEAgLTEyNyw3ICsxMzAsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRQcm9wZXJ0aWVz
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplYwogCiB2b2lkIElu
amVjdGVkU2NyaXB0OjpnZXRJbnRlcm5hbFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBSZWZQdHI8QXJyYXk8SW50ZXJuYWxQcm9wZXJ0
eURlc2NyaXB0b3I+PiogcHJvcGVydGllcykKIHsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVu
Y3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImdldEludGVybmFsUHJvcGVydGllcyIpOwor
ICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlw
dE9iamVjdCgpLCAiZ2V0SW50ZXJuYWxQcm9wZXJ0aWVzIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxs
SGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVj
dElkKTsKIAogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0OwpAQCAtMTQ2LDExICsx
NDksMTEgQEAgTm9kZSogSW5qZWN0ZWRTY3JpcHQ6Om5vZGVGb3JPYmplY3RJZChjb25zdCBTdHJp
bmcmIG9iamVjdElkKQogICAgIGlmIChoYXNOb1ZhbHVlKCkgfHwgIWNhbkFjY2Vzc0luc3BlY3Rl
ZFdpbmRvdygpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBm
dW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAibm9kZUZvck9iamVjdElkIik7CisgICAg
RGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2Jq
ZWN0KCksICJub2RlRm9yT2JqZWN0SWQiLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJv
bUFueVRocmVhZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQpOwogCiAg
ICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKLSAgICBTY3JpcHRWYWx1ZSByZXN1bHRWYWx1
ZSA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsK
KyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSByZXN1bHRWYWx1ZSA9IGNhbGxGdW5jdGlvbldp
dGhFdmFsRW5hYmxlZChmdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKICAgICBBU1NFUlQoIWhhZEV4
Y2VwdGlvbik7CiAKICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0OjpzY3JpcHRWYWx1ZUFz
Tm9kZShyZXN1bHRWYWx1ZSk7CkBAIC0xNTgsMjAgKzE2MSwyMCBAQCBOb2RlKiBJbmplY3RlZFNj
cmlwdDo6bm9kZUZvck9iamVjdElkKGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpCiAKIHZvaWQgSW5q
ZWN0ZWRTY3JpcHQ6OnJlbGVhc2VPYmplY3QoY29uc3QgU3RyaW5nJiBvYmplY3RJZCkKIHsKLSAg
ICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgInJl
bGVhc2VPYmplY3QiKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rp
b24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgInJlbGVhc2VPYmplY3QiLCBXZWJDb3JlOjpmdW5j
dGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1l
bnQob2JqZWN0SWQpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0OwogICAgIG1h
a2VDYWxsKGZ1bmN0aW9uLCAmcmVzdWx0KTsKIH0KIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RF
QlVHR0VSKQotUGFzc1JlZlB0cjxBcnJheTxDYWxsRnJhbWU+PiBJbmplY3RlZFNjcmlwdDo6d3Jh
cENhbGxGcmFtZXMoY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMpCitQYXNzUmVmUHRyPEFy
cmF5PENhbGxGcmFtZT4+IEluamVjdGVkU2NyaXB0Ojp3cmFwQ2FsbEZyYW1lcyhjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcykKIHsKICAgICBBU1NFUlQoIWhhc05vVmFs
dWUoKSk7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2Jq
ZWN0KCksICJ3cmFwQ2FsbEZyYW1lcyIpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9u
Q2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAid3JhcENhbGxGcmFtZXMiLCBX
ZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAgZnVuY3Rpb24u
YXBwZW5kQXJndW1lbnQoY2FsbEZyYW1lcyk7CiAgICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxz
ZTsKLSAgICBTY3JpcHRWYWx1ZSBjYWxsRnJhbWVzVmFsdWUgPSBjYWxsRnVuY3Rpb25XaXRoRXZh
bEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUgY2FsbEZyYW1lc1ZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0
aW9uLCBoYWRFeGNlcHRpb24pOwogICAgIEFTU0VSVCghaGFkRXhjZXB0aW9uKTsKICAgICBSZWZQ
dHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdCA9IGNhbGxGcmFtZXNWYWx1ZS50b0luc3BlY3RvclZh
bHVlKHNjcmlwdFN0YXRlKCkpOwogICAgIGlmIChyZXN1bHQtPnR5cGUoKSA9PSBJbnNwZWN0b3JW
YWx1ZTo6VHlwZUFycmF5KQpAQCAtMTgwLDI2ICsxODMsMjYgQEAgUGFzc1JlZlB0cjxBcnJheTxD
YWxsRnJhbWU+PiBJbmplY3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMoY29uc3QgU2NyaXB0VmFs
dWUmIGMKIH0KICNlbmRpZgogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwT2JqZWN0KGNvbnN0IFNjcmlwdFZhbHVlJiB2
YWx1ZSwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3KSBjb25z
dAorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmpl
Y3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwT2JqZWN0KGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3
KSBjb25zdAogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKLSAgICBTY3JpcHRGdW5jdGlv
bkNhbGwgd3JhcEZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJ3cmFwT2JqZWN0Iik7
CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIHdyYXBGdW5jdGlvbihpbmplY3Rl
ZFNjcmlwdE9iamVjdCgpLCAid3JhcE9iamVjdCIpOwogICAgIHdyYXBGdW5jdGlvbi5hcHBlbmRB
cmd1bWVudCh2YWx1ZSk7CiAgICAgd3JhcEZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGdyb3VwTmFt
ZSk7CiAgICAgd3JhcEZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNhbkFjY2Vzc0luc3BlY3RlZFdp
bmRvdygpKTsKICAgICB3cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZ2VuZXJhdGVQcmV2aWV3
KTsKICAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwotICAgIFNjcmlwdFZhbHVlIHIgPSBj
YWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQod3JhcEZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwor
ICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHIgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJs
ZWQod3JhcEZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwogICAgIGlmIChoYWRFeGNlcHRpb24pCiAg
ICAgICAgIHJldHVybiAwOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJhd1Jlc3VsdCA9
IHIudG9JbnNwZWN0b3JWYWx1ZShzY3JpcHRTdGF0ZSgpKS0+YXNPYmplY3QoKTsKLSAgICByZXR1
cm4gVHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDo6cnVudGltZUNhc3QocmF3UmVz
dWx0KTsKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0OjpydW50aW1lQ2FzdChyYXdSZXN1bHQpOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwVGFibGUoY29u
c3QgU2NyaXB0VmFsdWUmIHRhYmxlLCBjb25zdCBTY3JpcHRWYWx1ZSYgY29sdW1ucykgY29uc3QK
K1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0
PiBJbmplY3RlZFNjcmlwdDo6d3JhcFRhYmxlKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
JiB0YWJsZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGNvbHVtbnMpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCB3cmFw
RnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgIndyYXBUYWJsZSIpOworICAgIERlcHJl
Y2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCB3cmFwRnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmpl
Y3QoKSwgIndyYXBUYWJsZSIpOwogICAgIHdyYXBGdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYW5B
Y2Nlc3NJbnNwZWN0ZWRXaW5kb3coKSk7CiAgICAgd3JhcEZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50
KHRhYmxlKTsKICAgICBpZiAoY29sdW1ucy5oYXNOb1ZhbHVlKCkpCkBAIC0yMDcsMjYgKzIxMCwy
NiBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVj
dGVkU2NyaXB0Ojp3cmFwVGFibGUoY29uc3QgUwogICAgIGVsc2UKICAgICAgICAgd3JhcEZ1bmN0
aW9uLmFwcGVuZEFyZ3VtZW50KGNvbHVtbnMpOwogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFs
c2U7Ci0gICAgU2NyaXB0VmFsdWUgciA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZCh3cmFw
RnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgciA9
IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZCh3cmFwRnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7
CiAgICAgaWYgKGhhZEV4Y2VwdGlvbikKICAgICAgICAgcmV0dXJuIDA7CiAgICAgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gcmF3UmVzdWx0ID0gci50b0luc3BlY3RvclZhbHVlKHNjcmlwdFN0YXRl
KCkpLT5hc09iamVjdCgpOwotICAgIHJldHVybiBUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0OjpydW50aW1lQ2FzdChyYXdSZXN1bHQpOworICAgIHJldHVybiBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q6OnJ1bnRpbWVDYXN0KHJhd1Jlc3VsdCk7
CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5q
ZWN0ZWRTY3JpcHQ6OndyYXBOb2RlKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1l
KQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmpl
Y3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwTm9kZShOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIGdy
b3VwTmFtZSkKIHsKICAgICByZXR1cm4gd3JhcE9iamVjdChub2RlQXNTY3JpcHRWYWx1ZShub2Rl
KSwgZ3JvdXBOYW1lKTsKIH0KIAotU2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHQ6OmZpbmRPYmpl
Y3RCeUlkKGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpIGNvbnN0CitEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSBJbmplY3RlZFNjcmlwdDo6ZmluZE9iamVjdEJ5SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJ
ZCkgY29uc3QKIHsKICAgICBBU1NFUlQoIWhhc05vVmFsdWUoKSk7Ci0gICAgU2NyaXB0RnVuY3Rp
b25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJmaW5kT2JqZWN0QnlJZCIp
OworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNj
cmlwdE9iamVjdCgpLCAiZmluZE9iamVjdEJ5SWQiLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5k
bGVyRnJvbUFueVRocmVhZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQp
OwogCiAgICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKLSAgICBTY3JpcHRWYWx1ZSByZXN1
bHRWYWx1ZSA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbiwgaGFkRXhjZXB0
aW9uKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSByZXN1bHRWYWx1ZSA9IGNhbGxGdW5j
dGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKICAgICBBU1NFUlQo
IWhhZEV4Y2VwdGlvbik7CiAgICAgcmV0dXJuIHJlc3VsdFZhbHVlOwogfQpAQCAtMjM0LDcgKzIz
Nyw3IEBAIFNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0OjpmaW5kT2JqZWN0QnlJZChjb25zdCBT
dHJpbmcmIG9iamVjdElkKSBjb25zdAogdm9pZCBJbmplY3RlZFNjcmlwdDo6aW5zcGVjdE5vZGUo
Tm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQoIWhhc05vVmFsdWUoKSk7Ci0gICAgU2NyaXB0RnVu
Y3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJpbnNwZWN0Tm9kZSIp
OworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNj
cmlwdE9iamVjdCgpLCAiaW5zcGVjdE5vZGUiLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVy
RnJvbUFueVRocmVhZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQobm9kZUFzU2NyaXB0
VmFsdWUobm9kZSkpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0OwogICAgIG1h
a2VDYWxsKGZ1bmN0aW9uLCAmcmVzdWx0KTsKQEAgLTI0MywxNCArMjQ2LDE0IEBAIHZvaWQgSW5q
ZWN0ZWRTY3JpcHQ6Omluc3BlY3ROb2RlKE5vZGUqIG5vZGUpCiB2b2lkIEluamVjdGVkU2NyaXB0
OjpyZWxlYXNlT2JqZWN0R3JvdXAoY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCkKIHsKICAgICBB
U1NFUlQoIWhhc05vVmFsdWUoKSk7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIHJlbGVhc2VGdW5j
dGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAicmVsZWFzZU9iamVjdEdyb3VwIik7CisgICAg
RGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIHJlbGVhc2VGdW5jdGlvbihpbmplY3RlZFNj
cmlwdE9iamVjdCgpLCAicmVsZWFzZU9iamVjdEdyb3VwIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxs
SGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAgIHJlbGVhc2VGdW5jdGlvbi5hcHBlbmRBcmd1bWVu
dChvYmplY3RHcm91cCk7CiAgICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKICAgICBjYWxs
RnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQocmVsZWFzZUZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwog
ICAgIEFTU0VSVCghaGFkRXhjZXB0aW9uKTsKIH0KIAotU2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3Jp
cHQ6Om5vZGVBc1NjcmlwdFZhbHVlKE5vZGUqIG5vZGUpCitEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSBJbmplY3RlZFNjcmlwdDo6bm9kZUFzU2NyaXB0VmFsdWUoTm9kZSogbm9kZSkKIHsKICAgICBy
ZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0Ojpub2RlQXNTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZSgp
LCBub2RlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKaW5k
ZXggOWI2YWQyZi4uZmQ5YjllNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0LmgKQEAgLTMzLDE5ICszMywyMSBAQAogCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRC
YXNlLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiSW5z
cGVjdG9yVHlwZUJ1aWxkZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMu
aCIKICNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3Qu
aCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
CituYW1lc3BhY2UgRGVwcmVjYXRlZCB7CitjbGFzcyBTY3JpcHRPYmplY3Q7Cit9CisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNb2R1bGU7CiBjbGFzcyBOb2Rl
OwotY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
IApAQCAtNjAsNDAgKzYyLDQwIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgIGJvb2wgaW5j
bHVkZUNvbW1hbmRMaW5lQVBJLAogICAgICAgICAgICAgICAgICAgYm9vbCByZXR1cm5CeVZhbHVl
LAogICAgICAgICAgICAgICAgICAgYm9vbCBnZW5lcmF0ZVByZXZpZXcsCi0gICAgICAgICAgICAg
ICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwK
LSAgICAgICAgICAgICAgICAgIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93
bik7CisgICAgICAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LAorICAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOwogICAgIHZvaWQgY2Fs
bEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcqLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
U3RyaW5nJiBvYmplY3RJZCwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYg
ZXhwcmVzc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgYXJndW1l
bnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCByZXR1cm5CeVZhbHVlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBnZW5lcmF0ZVByZXZpZXcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3Vs
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4q
IHdhc1Rocm93bik7CisgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNU
aHJvd24pOwogICAgIHZvaWQgZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyosCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYgY2FsbEZyYW1lcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5n
JiBjYWxsRnJhbWVJZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5n
JiBleHByZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcm
IG9iamVjdEdyb3VwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGluY2x1ZGVD
b21tYW5kTGluZUFQSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCByZXR1cm5C
eVZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGdlbmVyYXRlUHJldmll
dywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7Ci0gICAgdm9pZCBnZXRG
dW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4qIHJlc3VsdCk7Ci0g
ICAgdm9pZCBnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJ
ZCwgYm9vbCBvd25Qcm9wZXJ0aWVzLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiogcmVzdWx0KTsKLSAgICB2b2lkIGdl
dEludGVybmFsUHJvcGVydGllcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQs
IFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkludGVybmFs
UHJvcGVydHlEZXNjcmlwdG9yPj4qIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+
KiByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKTsKKyAgICB2b2lkIGdldEZ1bmN0aW9u
RGV0YWlscyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+KiByZXN1bHQp
OworICAgIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2Jq
ZWN0SWQsIGJvb2wgb3duUHJvcGVydGllcywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRv
cj4+KiByZXN1bHQpOworICAgIHZvaWQgZ2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEVycm9yU3RyaW5n
KiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlE
ZXNjcmlwdG9yPj4qIHJlc3VsdCk7CiAgICAgTm9kZSogbm9kZUZvck9iamVjdElkKGNvbnN0IFN0
cmluZyYgb2JqZWN0SWQpOwogICAgIHZvaWQgcmVsZWFzZU9iamVjdChjb25zdCBTdHJpbmcmIG9i
amVjdElkKTsKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIFBhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4g
d3JhcENhbGxGcmFtZXMoY29uc3QgU2NyaXB0VmFsdWUmKTsKKyAgICBQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2Vy
OjpDYWxsRnJhbWU+PiB3cmFwQ2FsbEZyYW1lcyhjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYpOwogI2VuZGlmCiAKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+IHdyYXBPYmplY3QoY29uc3QgU2NyaXB0VmFsdWUmLCBjb25zdCBTdHJpbmcmIGdy
b3VwTmFtZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcgPSBmYWxzZSkgY29uc3Q7Ci0gICAgUGFzc1Jl
ZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiB3cmFwVGFibGUoY29uc3Qg
U2NyaXB0VmFsdWUmIHRhYmxlLCBjb25zdCBTY3JpcHRWYWx1ZSYgY29sdW1ucykgY29uc3Q7Ci0g
ICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiB3cmFwTm9k
ZShOb2RlKiwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUpOwotICAgIFNjcmlwdFZhbHVlIGZpbmRP
YmplY3RCeUlkKGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiB3cmFwT2JqZWN0
KGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUs
IGJvb2wgZ2VuZXJhdGVQcmV2aWV3ID0gZmFsc2UpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiB3cmFwVGFibGUoY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHRhYmxlLCBjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYgY29sdW1ucykgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHdyYXBOb2RlKE5vZGUqLCBjb25zdCBTdHJp
bmcmIGdyb3VwTmFtZSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZmluZE9iamVjdEJ5
SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJZCkgY29uc3Q7CiAKICAgICB2b2lkIGluc3BlY3ROb2Rl
KE5vZGUqKTsKICAgICB2b2lkIHJlbGVhc2VPYmplY3RHcm91cChjb25zdCBTdHJpbmcmKTsKQEAg
LTEwMSw5ICsxMDMsOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBJbmpl
Y3RlZFNjcmlwdE1vZHVsZTsKICAgICBmcmllbmQgSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcihKU0M6OkV4ZWNTdGF0ZSopOwotICAgIEluamVj
dGVkU2NyaXB0KFNjcmlwdE9iamVjdCwgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayk7CisgICAg
SW5qZWN0ZWRTY3JpcHQoRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0LCBJbnNwZWN0ZWRTdGF0ZUFj
Y2Vzc0NoZWNrKTsKIAotICAgIFNjcmlwdFZhbHVlIG5vZGVBc1NjcmlwdFZhbHVlKE5vZGUqKTsK
KyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBub2RlQXNTY3JpcHRWYWx1ZShOb2RlKik7CiB9
OwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
QmFzZS5jcHAKaW5kZXggZDlmYmE0MC4uNjNmMjkxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAKQEAgLTM1LDEyICszNSwxNCBAQAogI2lu
Y2x1ZGUgIkluamVjdGVkU2NyaXB0QmFzZS5oIgogCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCi0jaW5jbHVkZSAiU2Ny
aXB0RnVuY3Rpb25DYWxsLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxs
Lmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDsKK3Vz
aW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDsKKwordXNp
bmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01MCwx
NCArNTIsMTQgQEAgSW5qZWN0ZWRTY3JpcHRCYXNlOjpJbmplY3RlZFNjcmlwdEJhc2UoY29uc3Qg
U3RyaW5nJiBuYW1lKQogewogfQogCi1JbmplY3RlZFNjcmlwdEJhc2U6OkluamVjdGVkU2NyaXB0
QmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIFNjcmlwdE9iamVjdCBpbmplY3RlZFNjcmlwdE9iamVj
dCwgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayBhY2Nlc3NDaGVjaykKK0luamVjdGVkU2NyaXB0
QmFzZTo6SW5qZWN0ZWRTY3JpcHRCYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgRGVwcmVjYXRlZDo6
U2NyaXB0T2JqZWN0IGluamVjdGVkU2NyaXB0T2JqZWN0LCBJbnNwZWN0ZWRTdGF0ZUFjY2Vzc0No
ZWNrIGFjY2Vzc0NoZWNrKQogICAgIDogbV9uYW1lKG5hbWUpCiAgICAgLCBtX2luamVjdGVkU2Ny
aXB0T2JqZWN0KGluamVjdGVkU2NyaXB0T2JqZWN0KQogICAgICwgbV9pbnNwZWN0ZWRTdGF0ZUFj
Y2Vzc0NoZWNrKGFjY2Vzc0NoZWNrKQogewogfQogCi12b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6
aW5pdGlhbGl6ZShTY3JpcHRPYmplY3QgaW5qZWN0ZWRTY3JpcHRPYmplY3QsIEluc3BlY3RlZFN0
YXRlQWNjZXNzQ2hlY2sgYWNjZXNzQ2hlY2spCit2b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6aW5p
dGlhbGl6ZShEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgaW5qZWN0ZWRTY3JpcHRPYmplY3QsIElu
c3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sgYWNjZXNzQ2hlY2spCiB7CiAgICAgbV9pbmplY3RlZFNj
cmlwdE9iamVjdCA9IGluamVjdGVkU2NyaXB0T2JqZWN0OwogICAgIG1faW5zcGVjdGVkU3RhdGVB
Y2Nlc3NDaGVjayA9IGFjY2Vzc0NoZWNrOwpAQCAtNjgsMTIgKzcwLDEyIEBAIGJvb2wgSW5qZWN0
ZWRTY3JpcHRCYXNlOjpjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coKSBjb25zdAogICAgIHJldHVy
biBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sobV9pbmplY3RlZFNjcmlwdE9iamVjdC5zY3Jp
cHRTdGF0ZSgpKTsKIH0KIAotY29uc3QgU2NyaXB0T2JqZWN0JiBJbmplY3RlZFNjcmlwdEJhc2U6
OmluamVjdGVkU2NyaXB0T2JqZWN0KCkgY29uc3QKK2NvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9i
amVjdCYgSW5qZWN0ZWRTY3JpcHRCYXNlOjppbmplY3RlZFNjcmlwdE9iamVjdCgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRPYmplY3Q7CiB9CiAKLVNjcmlwdFZhbHVlIElu
amVjdGVkU2NyaXB0QmFzZTo6Y2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKFNjcmlwdEZ1bmN0
aW9uQ2FsbCYgZnVuY3Rpb24sIGJvb2wmIGhhZEV4Y2VwdGlvbikgY29uc3QKK0RlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0QmFzZTo6Y2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFi
bGVkKERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24sIGJvb2wmIGhhZEV4
Y2VwdGlvbikgY29uc3QKIHsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUobV9pbmpl
Y3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQ2FsbEZ1
bmN0aW9uKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIG5hbWUoKSwgMSk7CkBAIC04Nyw3ICs4OSw3
IEBAIFNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0QmFzZTo6Y2FsbEZ1bmN0aW9uV2l0aEV2YWxF
bmFibGVkKFNjcmlwdEZ1bmN0aW9uQ2FsbCYKICAgICAgICAgICAgIHNjcmlwdFN0YXRlLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCktPnNldEV2YWxFbmFibGVkKHRydWUpOwogICAgIH0KIAotICAgIFNj
cmlwdFZhbHVlIHJlc3VsdFZhbHVlID0gZnVuY3Rpb24uY2FsbChoYWRFeGNlcHRpb24pOworICAg
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHJlc3VsdFZhbHVlID0gZnVuY3Rpb24uY2FsbChoYWRF
eGNlcHRpb24pOwogCiAgICAgaWYgKGV2YWxJc0Rpc2FibGVkKQogICAgICAgICBzY3JpcHRTdGF0
ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5zZXRFdmFsRW5hYmxlZChmYWxzZSk7CkBAIC05Niw3
ICs5OCw3IEBAIFNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0QmFzZTo6Y2FsbEZ1bmN0aW9uV2l0
aEV2YWxFbmFibGVkKFNjcmlwdEZ1bmN0aW9uQ2FsbCYKICAgICByZXR1cm4gcmVzdWx0VmFsdWU7
CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtlQ2FsbChTY3JpcHRGdW5jdGlvbkNh
bGwmIGZ1bmN0aW9uLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCit2b2lkIEluamVj
dGVkU2NyaXB0QmFzZTo6bWFrZUNhbGwoRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsJiBm
dW5jdGlvbiwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KQogewogICAgIGlmIChoYXNO
b1ZhbHVlKCkgfHwgIWNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdygpKSB7CiAgICAgICAgICpyZXN1
bHQgPSBJbnNwZWN0b3JWYWx1ZTo6bnVsbCgpOwpAQCAtMTA0LDcgKzEwNiw3IEBAIHZvaWQgSW5q
ZWN0ZWRTY3JpcHRCYXNlOjptYWtlQ2FsbChTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uLCBS
ZWZQdHI8SW5zcGVjdG9yCiAgICAgfQogCiAgICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsK
LSAgICBTY3JpcHRWYWx1ZSByZXN1bHRWYWx1ZSA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxl
ZChmdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBy
ZXN1bHRWYWx1ZSA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbiwgaGFkRXhj
ZXB0aW9uKTsKIAogICAgIEFTU0VSVCghaGFkRXhjZXB0aW9uKTsKICAgICBpZiAoIWhhZEV4Y2Vw
dGlvbikgewpAQCAtMTE1LDcgKzExNyw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtl
Q2FsbChTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uLCBSZWZQdHI8SW5zcGVjdG9yCiAgICAg
ICAgICpyZXN1bHQgPSBJbnNwZWN0b3JTdHJpbmc6OmNyZWF0ZSgiRXhjZXB0aW9uIHdoaWxlIG1h
a2luZyBhIGNhbGwuIik7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtlRXZhbENh
bGwoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9u
LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIG9iamVjdFJlc3Vs
dCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQordm9pZCBJbmplY3Rl
ZFNjcmlwdEJhc2U6Om1ha2VFdmFsQ2FsbChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIERlcHJl
Y2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24sIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiBvYmplY3RSZXN1bHQsIEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQogewogICAgIFJlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0OwogICAgIG1ha2VDYWxsKGZ1bmN0aW9uLCAmcmVzdWx0
KTsKQEAgLTEzOSw3ICsxNDEsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUV2YWxD
YWxsKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgU2NyaXB0RnVuY3Rpb25DYQogICAgICAgICAq
ZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IHJlc3VsdCBpcyBub3QgYSBwYWlyIG9mIHZh
bHVlIGFuZCB3YXNUaHJvd24gZmxhZyI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgKm9i
amVjdFJlc3VsdCA9IFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q6OnJ1bnRpbWVD
YXN0KHJlc3VsdE9iaik7CisgICAgKm9iamVjdFJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDo6cnVudGltZUNhc3QocmVzdWx0T2JqKTsKICAgICAq
d2FzVGhyb3duID0gd2FzVGhyb3duVmFsOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmgKaW5kZXggNzk2ZjZjMC4uNzVmNTI1NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaApAQCAtMzEsMTUgKzMx
LDIwIEBACiAjaWZuZGVmIEluamVjdGVkU2NyaXB0QmFzZV9oCiAjZGVmaW5lIEluamVjdGVkU2Ny
aXB0QmFzZV9oCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgotI2luY2x1ZGUg
IlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIgor
I2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIEluc3BlY3RvclZhbHVlOworbmFtZXNwYWNlIERlcHJlY2F0ZWQgewogY2xhc3MgU2NyaXB0
RnVuY3Rpb25DYWxsOworfQorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNzIEluc3BlY3Rv
clZhbHVlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9y
U3RyaW5nOwogCkBAIC01NiwxOCArNjEsMTggQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIHR5
cGVkZWYgYm9vbCAoKkluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spKEpTQzo6RXhlY1N0YXRlKik7
CiAgICAgSW5qZWN0ZWRTY3JpcHRCYXNlKGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgSW5qZWN0
ZWRTY3JpcHRCYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgU2NyaXB0T2JqZWN0LCBJbnNwZWN0ZWRT
dGF0ZUFjY2Vzc0NoZWNrKTsKKyAgICBJbmplY3RlZFNjcmlwdEJhc2UoY29uc3QgU3RyaW5nJiBu
YW1lLCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QsIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sp
OwogCi0gICAgdm9pZCBpbml0aWFsaXplKFNjcmlwdE9iamVjdCwgSW5zcGVjdGVkU3RhdGVBY2Nl
c3NDaGVjayk7CisgICAgdm9pZCBpbml0aWFsaXplKERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCwg
SW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayk7CiAgICAgYm9vbCBjYW5BY2Nlc3NJbnNwZWN0ZWRX
aW5kb3coKSBjb25zdDsKLSAgICBjb25zdCBTY3JpcHRPYmplY3QmIGluamVjdGVkU2NyaXB0T2Jq
ZWN0KCkgY29uc3Q7Ci0gICAgU2NyaXB0VmFsdWUgY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVk
KFNjcmlwdEZ1bmN0aW9uQ2FsbCYsIGJvb2wmIGhhZEV4Y2VwdGlvbikgY29uc3Q7Ci0gICAgdm9p
ZCBtYWtlQ2FsbChTY3JpcHRGdW5jdGlvbkNhbGwmLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiBy
ZXN1bHQpOwotICAgIHZvaWQgbWFrZUV2YWxDYWxsKEVycm9yU3RyaW5nKiwgU2NyaXB0RnVuY3Rp
b25DYWxsJiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1
bHQsIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7CisgICAgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiBpbmplY3RlZFNjcmlwdE9iamVjdCgpIGNvbnN0Owor
ICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChE
ZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwmLCBib29sJiBoYWRFeGNlcHRpb24pIGNvbnN0
OworICAgIHZvaWQgbWFrZUNhbGwoRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsJiwgUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOworICAgIHZvaWQgbWFrZUV2
YWxDYWxsKEVycm9yU3RyaW5nKiwgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsJiwgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3Vs
dCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOwog
CiBwcml2YXRlOgogICAgIFN0cmluZyBtX25hbWU7Ci0gICAgU2NyaXB0T2JqZWN0IG1faW5qZWN0
ZWRTY3JpcHRPYmplY3Q7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IG1faW5qZWN0ZWRT
Y3JpcHRPYmplY3Q7CiAgICAgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayBtX2luc3BlY3RlZFN0
YXRlQWNjZXNzQ2hlY2s7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmNwcAppbmRleCBmYWQ3OThiLi41OGJlNzM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52
YXNNb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dENhbnZhc01vZHVsZS5jcHAKQEAgLTM3LDE1ICszNywxOSBAQAogI2luY2x1ZGUgIkluamVjdGVk
U2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGVTb3VyY2UuaCIK
ICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRGdW5j
dGlvbkNhbGwuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlICJKU01haW5U
aHJlYWRFeGVjU3RhdGUuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwu
aD4KKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3QuaD4KKyNpbmNsdWRlIDxpbnNwZWN0
b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpBcnJh
eTsKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlSWQ7Ci11c2lu
ZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJjZUluZm87Ci11c2luZyBXZWJD
b3JlOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJjZVN0YXRlOwotdXNpbmcgV2ViQ29yZTo6
VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2c7Ci11c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRl
cjo6Q2FudmFzOjpUcmFjZUxvZ0lkOwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk7Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlSWQ7Cit1
c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlSW5mbzsKK3VzaW5n
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VTdGF0ZTsKK3VzaW5nIElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2c7Cit1c2luZyBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQ7CisKK3VzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjYsMzQgKzcwLDM0IEBAIFN0cmlu
ZyBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6c291cmNlKCkgY29uc3QKICAgICByZXR1cm4g
U3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KEluamVjdGVkU2NyaXB0Q2FudmFz
TW9kdWxlU291cmNlX2pzKSwgc2l6ZW9mKEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNl
X2pzKSk7CiB9CiAKLVNjcmlwdE9iamVjdCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6d3Jh
cENhbnZhczJEQ29udGV4dChjb25zdCBTY3JpcHRPYmplY3QmIGNvbnRleHQpCitEZXByZWNhdGVk
OjpTY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OndyYXBDYW52YXMyRENv
bnRleHQoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiBjb250ZXh0KQogewogICAgIHJl
dHVybiBjYWxsV3JhcENvbnRleHRGdW5jdGlvbigid3JhcENhbnZhczJEQ29udGV4dCIsIGNvbnRl
eHQpOwogfQogCiAjaWYgRU5BQkxFKFdFQkdMKQotU2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0
Q2FudmFzTW9kdWxlOjp3cmFwV2ViR0xDb250ZXh0KGNvbnN0IFNjcmlwdE9iamVjdCYgZ2xDb250
ZXh0KQorRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxl
Ojp3cmFwV2ViR0xDb250ZXh0KGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgZ2xDb250
ZXh0KQogewogICAgIHJldHVybiBjYWxsV3JhcENvbnRleHRGdW5jdGlvbigid3JhcFdlYkdMQ29u
dGV4dCIsIGdsQ29udGV4dCk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogCi1TY3JpcHRP
YmplY3QgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OmNhbGxXcmFwQ29udGV4dEZ1bmN0aW9u
KGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lLCBjb25zdCBTY3JpcHRPYmplY3QmIGNvbnRleHQp
CitEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OmNh
bGxXcmFwQ29udGV4dEZ1bmN0aW9uKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lLCBjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmIGNvbnRleHQpCiB7Ci0gICAgU2NyaXB0RnVuY3Rpb25D
YWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksIGZ1bmN0aW9uTmFtZSk7CisgICAg
RGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2Jq
ZWN0KCksIGZ1bmN0aW9uTmFtZSwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlU
aHJlYWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNvbnRleHQpOwogICAgIGJvb2wg
aGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgU2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBjYWxs
RnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CisgICAgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVu
YWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CiAgICAgaWYgKGhhZEV4Y2VwdGlvbiB8fCBy
ZXN1bHRWYWx1ZS5oYXNOb1ZhbHVlKCkgfHwgIXJlc3VsdFZhbHVlLmlzT2JqZWN0KCkpIHsKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBTY3JpcHRPYmplY3Qo
KTsKKyAgICAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCgpOwogICAgIH0KLSAg
ICByZXR1cm4gU2NyaXB0T2JqZWN0KGNvbnRleHQuc2NyaXB0U3RhdGUoKSwgcmVzdWx0VmFsdWUp
OworICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QoY29udGV4dC5zY3JpcHRTdGF0
ZSgpLCByZXN1bHRWYWx1ZSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6
Om1hcmtGcmFtZUVuZCgpCiB7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVj
dGVkU2NyaXB0T2JqZWN0KCksICJtYXJrRnJhbWVFbmQiKTsKKyAgICBEZXByZWNhdGVkOjpTY3Jp
cHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgIm1hcmtGcmFt
ZUVuZCIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICBS
ZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdFZhbHVlOwogICAgIG1ha2VDYWxsKGZ1bmN0aW9u
LCAmcmVzdWx0VmFsdWUpOwogICAgIEFTU0VSVChyZXN1bHRWYWx1ZSk7CkBAIC0xMTEsNyArMTE1
LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6c3RhcnRDYXB0dXJpbmcoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBUcmFjZUwKIAogdm9pZCBJbmplY3RlZFNjcmlwdENhbnZh
c01vZHVsZTo6Y2FsbFN0YXJ0Q2FwdHVyaW5nRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBmdW5jdGlv
bk5hbWUsIEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgVHJhY2VMb2dJZCogdHJhY2VMb2dJZCkK
IHsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3Qo
KSwgZnVuY3Rpb25OYW1lKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVu
Y3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgZnVuY3Rpb25OYW1lLCBXZWJDb3JlOjpmdW5j
dGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVl
PiByZXN1bHRWYWx1ZTsKICAgICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJlc3VsdFZhbHVlKTsKICAg
ICBpZiAoIXJlc3VsdFZhbHVlIHx8IHJlc3VsdFZhbHVlLT50eXBlKCkgIT0gSW5zcGVjdG9yVmFs
dWU6OlR5cGVTdHJpbmcgfHwgIXJlc3VsdFZhbHVlLT5hc1N0cmluZyh0cmFjZUxvZ0lkKSkKQEAg
LTEzMCw3ICsxMzQsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjpkcm9wVHJh
Y2VMb2coRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBUcgogCiB2b2lkIEluamVjdGVk
U2NyaXB0Q2FudmFzTW9kdWxlOjpjYWxsVm9pZEZ1bmN0aW9uV2l0aFRyYWNlTG9nSWRBcmd1bWVu
dChjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBj
b25zdCBUcmFjZUxvZ0lkJiB0cmFjZUxvZ0lkKQogewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBm
dW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCBmdW5jdGlvbk5hbWUpOworICAgIERlcHJl
Y2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgp
LCBmdW5jdGlvbk5hbWUsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFk
KTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudCh0cmFjZUxvZ0lkKTsKICAgICBib29sIGhh
ZEV4Y2VwdGlvbiA9IGZhbHNlOwogICAgIGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5j
dGlvbiwgaGFkRXhjZXB0aW9uKTsKQEAgLTE0MSw3ICsxNDUsNyBAQCB2b2lkIEluamVjdGVkU2Ny
aXB0Q2FudmFzTW9kdWxlOjpjYWxsVm9pZEZ1bmN0aW9uV2l0aFRyYWNlTG9nSWRBcmd1bWVudChj
b25zdCBTdAogCiB2b2lkIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjp0cmFjZUxvZyhFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFRyYWNlTG9nSWQmIHRyYWNlTG9nSWQsIGNvbnN0
IGludCogc3RhcnRPZmZzZXQsIGNvbnN0IGludCogbWF4TGVuZ3RoLCBSZWZQdHI8VHJhY2VMb2c+
KiB0cmFjZUxvZykKIHsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRT
Y3JpcHRPYmplY3QoKSwgInRyYWNlTG9nIik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rp
b25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJ0cmFjZUxvZyIsIFdlYkNv
cmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBl
bmRBcmd1bWVudCh0cmFjZUxvZ0lkKTsKICAgICBpZiAoc3RhcnRPZmZzZXQpCiAgICAgICAgIGZ1
bmN0aW9uLmFwcGVuZEFyZ3VtZW50KCpzdGFydE9mZnNldCk7CkBAIC0xNTksNyArMTYzLDcgQEAg
dm9pZCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6dHJhY2VMb2coRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBjb25zdCBUcmFjZUwKIAogdm9pZCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVs
ZTo6cmVwbGF5VHJhY2VMb2coRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBUcmFjZUxv
Z0lkJiB0cmFjZUxvZ0lkLCBpbnQgc3RlcE5vLCBSZWZQdHI8UmVzb3VyY2VTdGF0ZT4qIHJlc3Vs
dCkKIHsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmpl
Y3QoKSwgInJlcGxheVRyYWNlTG9nIik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25D
YWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJyZXBsYXlUcmFjZUxvZyIsIFdl
YkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudCh0cmFjZUxvZ0lkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChz
dGVwTm8pOwogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0VmFsdWU7CkBAIC0xNzQs
NyArMTc4LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6cmVwbGF5VHJhY2VM
b2coRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdAogCiB2b2lkIEluamVjdGVkU2NyaXB0
Q2FudmFzTW9kdWxlOjpyZXNvdXJjZUluZm8oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25z
dCBSZXNvdXJjZUlkJiByZXNvdXJjZUlkLCBSZWZQdHI8UmVzb3VyY2VJbmZvPiogcmVzdWx0KQog
ewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgp
LCAicmVzb3VyY2VJbmZvIik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1
bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJyZXNvdXJjZUluZm8iLCBXZWJDb3JlOjpm
dW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJn
dW1lbnQocmVzb3VyY2VJZCk7CiAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHRWYWx1
ZTsKICAgICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJlc3VsdFZhbHVlKTsKQEAgLTE4OCw3ICsxOTIs
NyBAQCB2b2lkIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjpyZXNvdXJjZUluZm8oRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZQogCiB2b2lkIEluamVjdGVkU2NyaXB0Q2FudmFz
TW9kdWxlOjpyZXNvdXJjZVN0YXRlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgVHJh
Y2VMb2dJZCYgdHJhY2VMb2dJZCwgY29uc3QgUmVzb3VyY2VJZCYgcmVzb3VyY2VJZCwgUmVmUHRy
PFJlc291cmNlU3RhdGU+KiByZXN1bHQpCiB7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0
aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJyZXNvdXJjZVN0YXRlIik7CisgICAgRGVwcmVj
YXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCks
ICJyZXNvdXJjZVN0YXRlIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJl
YWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHRyYWNlTG9nSWQpOwogICAgIGZ1bmN0
aW9uLmFwcGVuZEFyZ3VtZW50KHJlc291cmNlSWQpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1
ZT4gcmVzdWx0VmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdENhbnZhc01vZHVsZS5oCmluZGV4IGYzMzExMmMuLmFjZWNlNmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVs
ZS5oCkBAIC0zNSwxMCArMzUsMTMgQEAKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgRGVwcmVjYXRlZCB7CitjbGFz
cyBTY3JpcHRPYmplY3Q7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyOwotY2xhc3MgU2NyaXB0T2JqZWN0OwogCiAjaWYgRU5BQkxFKElOU1BF
Q1RPUikKIApAQCAtNTAsMjMgKzUzLDIzIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBJbmplY3Rl
ZFNjcmlwdENhbnZhc01vZHVsZSBtb2R1bGVGb3JTdGF0ZShJbmplY3RlZFNjcmlwdE1hbmFnZXIq
LCBKU0M6OkV4ZWNTdGF0ZSopOwogCi0gICAgU2NyaXB0T2JqZWN0IHdyYXBDYW52YXMyRENvbnRl
eHQoY29uc3QgU2NyaXB0T2JqZWN0Jik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IHdy
YXBDYW52YXMyRENvbnRleHQoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0Jik7CiAjaWYg
RU5BQkxFKFdFQkdMKQotICAgIFNjcmlwdE9iamVjdCB3cmFwV2ViR0xDb250ZXh0KGNvbnN0IFNj
cmlwdE9iamVjdCYpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCB3cmFwV2ViR0xDb250
ZXh0KGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYpOwogI2VuZGlmCiAgICAgdm9pZCBt
YXJrRnJhbWVFbmQoKTsKIAotICAgIHZvaWQgY2FwdHVyZUZyYW1lKEVycm9yU3RyaW5nKiwgVHlw
ZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCopOwotICAgIHZvaWQgc3RhcnRDYXB0dXJpbmco
RXJyb3JTdHJpbmcqLCBUeXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFjZUxvZ0lkKik7Ci0gICAgdm9p
ZCBzdG9wQ2FwdHVyaW5nKEVycm9yU3RyaW5nKiwgY29uc3QgVHlwZUJ1aWxkZXI6OkNhbnZhczo6
VHJhY2VMb2dJZCYpOwotICAgIHZvaWQgZHJvcFRyYWNlTG9nKEVycm9yU3RyaW5nKiwgY29uc3Qg
VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCYpOwotICAgIHZvaWQgdHJhY2VMb2coRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBpbnQqLCBjb25zdCBpbnQqLCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2c+Kik7Ci0gICAgdm9pZCByZXBsYXlUcmFjZUxv
ZyhFcnJvclN0cmluZyosIGNvbnN0IFR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQmLCBp
bnQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJjZVN0YXRlPiopOwotICAgIHZv
aWQgcmVzb3VyY2VJbmZvKEVycm9yU3RyaW5nKiwgY29uc3QgVHlwZUJ1aWxkZXI6OkNhbnZhczo6
UmVzb3VyY2VJZCYsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJjZUluZm8+Kik7
Ci0gICAgdm9pZCByZXNvdXJjZVN0YXRlKEVycm9yU3RyaW5nKiwgY29uc3QgVHlwZUJ1aWxkZXI6
OkNhbnZhczo6VHJhY2VMb2dJZCYsIGNvbnN0IFR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNl
SWQmLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VTdGF0ZT4qKTsKKyAgICB2
b2lkIGNhcHR1cmVGcmFtZShFcnJvclN0cmluZyosIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNh
bnZhczo6VHJhY2VMb2dJZCopOworICAgIHZvaWQgc3RhcnRDYXB0dXJpbmcoRXJyb3JTdHJpbmcq
LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQqKTsKKyAgICB2b2lk
IHN0b3BDYXB0dXJpbmcoRXJyb3JTdHJpbmcqLCBjb25zdCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDYW52YXM6OlRyYWNlTG9nSWQmKTsKKyAgICB2b2lkIGRyb3BUcmFjZUxvZyhFcnJvclN0cmlu
ZyosIGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCYpOwor
ICAgIHZvaWQgdHJhY2VMb2coRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBpbnQq
LCBjb25zdCBpbnQqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFj
ZUxvZz4qKTsKKyAgICB2b2lkIHJlcGxheVRyYWNlTG9nKEVycm9yU3RyaW5nKiwgY29uc3QgSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFjZUxvZ0lkJiwgaW50LCBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJjZVN0YXRlPiopOworICAgIHZvaWQg
cmVzb3VyY2VJbmZvKEVycm9yU3RyaW5nKiwgY29uc3QgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q2FudmFzOjpSZXNvdXJjZUlkJiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZh
czo6UmVzb3VyY2VJbmZvPiopOworICAgIHZvaWQgcmVzb3VyY2VTdGF0ZShFcnJvclN0cmluZyos
IGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCYsIGNvbnN0
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VJZCYsIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlU3RhdGU+Kik7CiAKIHByaXZhdGU6
Ci0gICAgU2NyaXB0T2JqZWN0IGNhbGxXcmFwQ29udGV4dEZ1bmN0aW9uKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFNjcmlwdE9iamVjdCYpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBjYWxs
V3JhcENvbnRleHRGdW5jdGlvbihjb25zdCBTdHJpbmcmLCBjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRPYmplY3QmKTsKICAgICB2b2lkIGNhbGxTdGFydENhcHR1cmluZ0Z1bmN0aW9uKGNvbnN0IFN0
cmluZyYsIEVycm9yU3RyaW5nKiwgU3RyaW5nKik7CiAgICAgdm9pZCBjYWxsVm9pZEZ1bmN0aW9u
V2l0aFRyYWNlTG9nSWRBcmd1bWVudChjb25zdCBTdHJpbmcmLCBFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0SG9zdC5jcHAKaW5kZXggZWY1MzNhYS4uNTQ2NzU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAKQEAgLTQ3LDE5ICs0NywyMCBAQAog
I2luY2x1ZGUgIkluc3BlY3RvckRhdGFiYXNlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKLSNpbmNsdWRl
ICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAjaW5jbHVkZSAi
U3RvcmFnZS5oIgotCi0jaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSNpbmNsdWRlICJEYXRhYmFz
ZS5oIgotI2VuZGlmCi0KICNpbmNsdWRlICJtYXJrdXAuaCIKLQorI2luY2x1ZGUgPGJpbmRpbmdz
L1NjcmlwdFZhbHVlLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAK
KyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorI2luY2x1ZGUgIkRhdGFiYXNlLmgiCisjZW5kaWYK
KwordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQ
YXNzUmVmUHRyPEluamVjdGVkU2NyaXB0SG9zdD4gSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUo
KQpAQCAtOTcsNyArOTgsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6ZGlzY29ubmVjdCgp
CiB2b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdEltcGwoUGFzc1JlZlB0cjxJbnNwZWN0
b3JWYWx1ZT4gb2JqZWN0LCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBoaW50cykKIHsKICAg
ICBpZiAobV9pbnNwZWN0b3JBZ2VudCkgewotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdD4gcmVtb3RlT2JqZWN0ID0gVHlwZUJ1aWxkZXI6OlJ1bnRpbWU6
OlJlbW90ZU9iamVjdDo6cnVudGltZUNhc3Qob2JqZWN0KTsKKyAgICAgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gcmVtb3RlT2JqZWN0ID0g
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0OjpydW50aW1lQ2Fz
dChvYmplY3QpOwogICAgICAgICBtX2luc3BlY3RvckFnZW50LT5pbnNwZWN0KHJlbW90ZU9iamVj
dCwgaGludHMtPmFzT2JqZWN0KCkpOwogICAgIH0KIH0KQEAgLTEyMSw5ICsxMjIsOSBAQCB2b2lk
IEluamVjdGVkU2NyaXB0SG9zdDo6Y29weVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIFBh
c3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpLT53cml0ZVBsYWluVGV4dCh0ZXh0LCBQ
YXN0ZWJvYXJkOjpDYW5ub3RTbWFydFJlcGxhY2UpOwogfQogCi1TY3JpcHRWYWx1ZSBJbmplY3Rl
ZFNjcmlwdEhvc3Q6Okluc3BlY3RhYmxlT2JqZWN0OjpnZXQoSlNDOjpFeGVjU3RhdGUqKQorRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHRIb3N0OjpJbnNwZWN0YWJsZU9iamVj
dDo6Z2V0KEpTQzo6RXhlY1N0YXRlKikKIHsKLSAgICByZXR1cm4gU2NyaXB0VmFsdWUoKTsKKyAg
ICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKTsKIH07CiAKIHZvaWQgSW5qZWN0ZWRT
Y3JpcHRIb3N0OjphZGRJbnNwZWN0ZWRPYmplY3QoUGFzc093blB0cjxJbmplY3RlZFNjcmlwdEhv
c3Q6Okluc3BlY3RhYmxlT2JqZWN0PiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgKaW5kZXggNGE4NDE4Mi4uOGM0NGQ3NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaApAQCAtMzYsNiArMzYs
MTUgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAorbmFtZXNwYWNlIERlcHJlY2F0ZWQgeworY2xhc3MgU2NyaXB0VmFsdWU7Cit9CisKK25h
bWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworY2xhc3MgSW5zcGVj
dG9yVmFsdWU7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGF0YWJhc2U7CkBA
IC00NiwxMiArNTUsOCBAQCBjbGFzcyBJbnNwZWN0b3JET01BZ2VudDsKIGNsYXNzIEluc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudDsKIGNsYXNzIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ7CiBjbGFzcyBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OwotY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwotY2xhc3MgSW5z
cGVjdG9yVmFsdWU7CiBjbGFzcyBOb2RlOwogY2xhc3MgU2NyaXB0RGVidWdTZXJ2ZXI7Ci1jbGFz
cyBTY3JpcHRPYmplY3Q7Ci1jbGFzcyBTY3JpcHRWYWx1ZTsKIGNsYXNzIFN0b3JhZ2U7CiAKIHN0
cnVjdCBFdmVudExpc3RlbmVySW5mbzsKQEAgLTg1LDIyICs5MCwyMiBAQCBwdWJsaWM6CiAjZW5k
aWYKICAgICB9CiAKLSAgICBzdGF0aWMgTm9kZSogc2NyaXB0VmFsdWVBc05vZGUoU2NyaXB0VmFs
dWUpOwotICAgIHN0YXRpYyBTY3JpcHRWYWx1ZSBub2RlQXNTY3JpcHRWYWx1ZShKU0M6OkV4ZWNT
dGF0ZSosIE5vZGUqKTsKKyAgICBzdGF0aWMgTm9kZSogc2NyaXB0VmFsdWVBc05vZGUoRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUpOworICAgIHN0YXRpYyBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBu
b2RlQXNTY3JpcHRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIE5vZGUqKTsKIAogICAgIHZvaWQgZGlz
Y29ubmVjdCgpOwogCiAgICAgY2xhc3MgSW5zcGVjdGFibGVPYmplY3QgewogICAgICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgU2NyaXB0
VmFsdWUgZ2V0KEpTQzo6RXhlY1N0YXRlKik7CisgICAgICAgIHZpcnR1YWwgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUgZ2V0KEpTQzo6RXhlY1N0YXRlKik7CiAgICAgICAgIHZpcnR1YWwgfkluc3Bl
Y3RhYmxlT2JqZWN0KCkgeyB9CiAgICAgfTsKICAgICB2b2lkIGFkZEluc3BlY3RlZE9iamVjdChQ
YXNzT3duUHRyPEluc3BlY3RhYmxlT2JqZWN0Pik7CiAgICAgdm9pZCBjbGVhckluc3BlY3RlZE9i
amVjdHMoKTsKICAgICBJbnNwZWN0YWJsZU9iamVjdCogaW5zcGVjdGVkT2JqZWN0KHVuc2lnbmVk
IGludCBudW0pOwogCi0gICAgdm9pZCBpbnNwZWN0SW1wbChQYXNzUmVmUHRyPEluc3BlY3RvclZh
bHVlPiBvYmplY3RUb0luc3BlY3QsIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGhpbnRzKTsK
KyAgICB2b2lkIGluc3BlY3RJbXBsKFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1
ZT4gb2JqZWN0VG9JbnNwZWN0LCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+
IGhpbnRzKTsKICAgICB2b2lkIGdldEV2ZW50TGlzdGVuZXJzSW1wbChOb2RlKiwgVmVjdG9yPEV2
ZW50TGlzdGVuZXJJbmZvPiYgbGlzdGVuZXJzQXJyYXkpOwogCiAgICAgdm9pZCBjbGVhckNvbnNv
bGVNZXNzYWdlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmNwcAppbmRleCA3YWEzZDQzLi4xMjc2YzQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApAQCAtMzcsMTAg
KzM3LDEyIEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3Rl
ZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdFNvdXJjZS5oIgotI2luY2x1
ZGUgIkluc3BlY3RvclZhbHVlcy5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1
ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0
b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCit1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NPd25QdHI8SW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyPiBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUZvclBhZ2UoKQpA
QCAtMTczLDcgKzE3NSw3IEBAIEluamVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6
aW5qZWN0ZWRTY3JpcHRGb3IoSlNDOjpFeGVjU3RhdGUqIGluc3BlY3RlCiAgICAgICAgIHJldHVy
biBJbmplY3RlZFNjcmlwdCgpOwogCiAgICAgaW50IGlkID0gaW5qZWN0ZWRTY3JpcHRJZEZvcihp
bnNwZWN0ZWRFeGVjU3RhdGUpOwotICAgIFNjcmlwdE9iamVjdCBpbmplY3RlZFNjcmlwdE9iamVj
dCA9IGNyZWF0ZUluamVjdGVkU2NyaXB0KGluamVjdGVkU2NyaXB0U291cmNlKCksIGluc3BlY3Rl
ZEV4ZWNTdGF0ZSwgaWQpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBpbmplY3RlZFNj
cmlwdE9iamVjdCA9IGNyZWF0ZUluamVjdGVkU2NyaXB0KGluamVjdGVkU2NyaXB0U291cmNlKCks
IGluc3BlY3RlZEV4ZWNTdGF0ZSwgaWQpOwogICAgIEluamVjdGVkU2NyaXB0IHJlc3VsdChpbmpl
Y3RlZFNjcmlwdE9iamVjdCwgbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKTsKICAgICBtX2lk
VG9JbmplY3RlZFNjcmlwdC5zZXQoaWQsIHJlc3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaAppbmRl
eCA2ODFlNDA4Li43YjQ4ZDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0TWFuYWdlci5oCkBAIC0zNSwxMyArMzUsMTkgQEAKICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2Ug
RGVwcmVjYXRlZCB7CitjbGFzcyBTY3JpcHRPYmplY3Q7Cit9CisKK25hbWVzcGFjZSBJbnNwZWN0
b3IgeworY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIERPTVdpbmRvdzsKIGNsYXNzIEluamVjdGVkU2NyaXB0OwogY2xhc3MgSW5qZWN0ZWRT
Y3JpcHRIb3N0OwotY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwotY2xhc3MgU2NyaXB0T2JqZWN0Owog
CiBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEluamVjdGVkU2NyaXB0TWFuYWdlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNjks
NyArNzUsNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IEluamVjdGVkU2NyaXB0TWFuYWdlcihJ
bnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKTsKIAogICAgIFN0cmluZyBpbmplY3RlZFNjcmlwdFNv
dXJjZSgpOwotICAgIFNjcmlwdE9iamVjdCBjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJp
bmcmIHNvdXJjZSwgSlNDOjpFeGVjU3RhdGUqLCBpbnQgaWQpOworICAgIERlcHJlY2F0ZWQ6OlNj
cmlwdE9iamVjdCBjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgSlND
OjpFeGVjU3RhdGUqLCBpbnQgaWQpOwogCiAgICAgc3RhdGljIGJvb2wgY2FuQWNjZXNzSW5zcGVj
dGVkV2luZG93KEpTQzo6RXhlY1N0YXRlKik7CiAgICAgc3RhdGljIGJvb2wgY2FuQWNjZXNzSW5z
cGVjdGVkV29ya2VyR2xvYmFsU2NvcGUoSlNDOjpFeGVjU3RhdGUqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwCmluZGV4IGRiMjA3Nzku
LjkyNjhlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdE1vZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0TW9kdWxlLmNwcApAQCAtMzYsOCArMzYsMTEgQEAKIAogI2luY2x1ZGUgIkluamVjdGVkU2Ny
aXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiU2Ny
aXB0RnVuY3Rpb25DYWxsLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisjaW5jbHVkZSAi
SlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0RnVuY3Rp
b25DYWxsLmg+CisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0T2JqZWN0Lmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTQsMTMgKzU3
LDEzIEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRNb2R1bGU6OmVuc3VyZUluamVjdGVkKEluamVjdGVk
U2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNCiAgICAgICAgIHJldHVybjsKIAogICAgIC8v
IEZJWE1FOiBNYWtlIHRoZSBJbmplY3RlZFNjcmlwdCBhIG1vZHVsZSBpdHNlbGYuCi0gICAgU2Ny
aXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0LmluamVjdGVkU2NyaXB0T2Jq
ZWN0KCksICJtb2R1bGUiKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVu
Y3Rpb24oaW5qZWN0ZWRTY3JpcHQuaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgIm1vZHVsZSIsIFdl
YkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudChuYW1lKCkpOwogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0g
ICAgU2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBpbmplY3RlZFNjcmlwdC5jYWxsRnVuY3Rpb25X
aXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CisgICAgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBpbmplY3RlZFNjcmlwdC5jYWxsRnVuY3Rpb25XaXRo
RXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CiAgICAgQVNTRVJUKCFoYWRFeGNl
cHRpb24pOwogICAgIGlmIChoYWRFeGNlcHRpb24gfHwgcmVzdWx0VmFsdWUuaGFzTm9WYWx1ZSgp
IHx8ICFyZXN1bHRWYWx1ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgIFNjcmlwdEZ1bmN0aW9uQ2Fs
bCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdC5pbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiaW5qZWN0
TW9kdWxlIik7CisgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlv
bihpbmplY3RlZFNjcmlwdC5pbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiaW5qZWN0TW9kdWxlIiwg
V2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAgICAgICBmdW5j
dGlvbi5hcHBlbmRBcmd1bWVudChuYW1lKCkpOwogICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1
bWVudChzb3VyY2UoKSk7CiAgICAgICAgIHJlc3VsdFZhbHVlID0gaW5qZWN0ZWRTY3JpcHQuY2Fs
bEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwpAQCAtNzAs
NyArNzMsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0TW9kdWxlOjplbnN1cmVJbmplY3RlZChJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TQogICAgICAgICB9CiAgICAgfQogCi0g
ICAgU2NyaXB0T2JqZWN0IG1vZHVsZU9iamVjdChzY3JpcHRTdGF0ZSwgcmVzdWx0VmFsdWUpOwor
ICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBtb2R1bGVPYmplY3Qoc2NyaXB0U3RhdGUsIHJl
c3VsdFZhbHVlKTsKICAgICBpbml0aWFsaXplKG1vZHVsZU9iamVjdCwgaW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLT5pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcAppbmRleCBlYTdiNDIwLi4xOTRiNzc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKQEAgLTQyLDIz
ICs0MiwyNCBAQAogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
IgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdB
Z2VudHMuaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgot
I2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNp
bmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNw
ZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBJbnNwZWN0b3JBZ2VudDo6SW5zcGVjdG9yQWdlbnQoUGFnZSogcGFnZSwgSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVND
SUlMaXRlcmFsKCJJbnNwZWN0b3IiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3Bl
Y3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkluc3BlY3RvciIpLCBpbnN0cnVtZW50aW5nQWdl
bnRzKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKHBhZ2UpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0
TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBtX2VuYWJsZWQoZmFsc2UpCkBA
IC05Myw3ICs5NCw3IEBAIHZvaWQgSW5zcGVjdG9yQWdlbnQ6OmRpZENsZWFyV2luZG93T2JqZWN0
SW5Xb3JsZChGcmFtZSogZnJhbWUsIERPTVdyYXBwZXJXb3JsZCYKICAgICBmcmFtZS0+c2NyaXB0
KCkuZXhlY3V0ZVNjcmlwdChzY3JpcHRTb3VyY2UudG9TdHJpbmcoKSk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJh
Y2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENo
YW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsK
ICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9ySW5z
cGVjdG9yRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2Vu
ZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRl
KGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKQEAgLTE1MCw3ICsxNTEsNyBAQCB2b2lkIEluc3Bl
Y3RvckFnZW50OjpzZXRJbmplY3RlZFNjcmlwdEZvck9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdp
biwgY29uc3QgU3RyaQogICAgIG1faW5qZWN0ZWRTY3JpcHRGb3JPcmlnaW4uc2V0KG9yaWdpbiwg
c291cmNlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JBZ2VudDo6aW5zcGVjdChQYXNzUmVmUHRyPFR5
cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IG9iamVjdFRvSW5zcGVjdCwgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhpbnRzKQordm9pZCBJbnNwZWN0b3JBZ2VudDo6aW5zcGVj
dChQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVj
dD4gb2JqZWN0VG9JbnNwZWN0LCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gaGludHMpCiB7
CiAgICAgaWYgKG1fZW5hYmxlZCAmJiBtX2Zyb250ZW5kRGlzcGF0Y2hlcikgewogICAgICAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlci0+aW5zcGVjdChvYmplY3RUb0luc3BlY3QsIGhpbnRzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKaW5kZXggZmI0YmQyNS4uMWNl
YTdjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKQEAgLTMw
LDExICszMCwxNyBAQAogI2lmbmRlZiBJbnNwZWN0b3JBZ2VudF9oCiAjZGVmaW5lIEluc3BlY3Rv
ckFnZW50X2gKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIklu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50
QmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAorbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFzcyBJbnNwZWN0b3JPYmplY3Q7Cit9CisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwpAQCAtNDIsMTMgKzQ4
LDEyIEBAIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBJbnNwZWN0b3JJbnNwZWN0b3JGcm9udGVuZERpc3BhdGNo
ZXI7Ci1jbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwog
Y2xhc3MgUGFnZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3Bl
Y3RvckFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3Rvcklu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JBZ2VudCA6
IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3Rv
ckFnZW50KTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JBZ2VudD4g
Y3JlYXRlKFBhZ2UqIHBhZ2UsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLCBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQpAQCAtNjQs
NyArNjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2
b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5z
cGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAg
dm9pZCBkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUqLCBET01XcmFwcGVyV29ybGQm
KTsKQEAgLTc5LDcgKzg0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRJbmplY3RlZFNjcmlw
dEZvck9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBzb3VyY2UpOwog
Ci0gICAgdm9pZCBpbnNwZWN0KFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdD4gb2JqZWN0VG9JbnNwZWN0LCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gaGlu
dHMpOworICAgIHZvaWQgaW5zcGVjdChQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gb2JqZWN0VG9JbnNwZWN0LCBQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBoaW50cyk7CiAKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9y
QWdlbnQoUGFnZSosIEluamVjdGVkU2NyaXB0TWFuYWdlciosIEluc3RydW1lbnRpbmdBZ2VudHMq
KTsKQEAgLTkwLDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXIq
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogCiAgICAgVmVjdG9yPHBhaXI8bG9uZywgU3RyaW5n
Pj4gbV9wZW5kaW5nRXZhbHVhdGVUZXN0Q29tbWFuZHM7Ci0gICAgcGFpcjxSZWZQdHI8VHlwZUJ1
aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+PiBt
X3BlbmRpbmdJbnNwZWN0RGF0YTsKKyAgICBwYWlyPFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+PiBtX3BlbmRpbmdJbnNwZWN0RGF0YTsKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiBtX2luamVjdGVkU2NyaXB0Rm9yT3JpZ2luOwogCiAgICAgYm9vbCBtX2VuYWJsZWQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcAppbmRleCAyNjNi
ZGQ5Li41MzAwZDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JB
bGxJbk9uZS5jcHAKQEAgLTM3LDkgKzM3LDcgQEAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1h
bmFnZXIuY3BwIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TW9kdWxlLmNwcCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JBZ2VudC5jcHAiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5j
cHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCIKLSNpbmNs
dWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwIgogI2luY2x1ZGUgIkluc3BlY3RvckNhbnZhc0FnZW50LmNwcCIKICNpbmNs
dWRlICJJbnNwZWN0b3JDbGllbnQuY3BwIgpAQCAtNzAsNyArNjgsNiBAQAogI2luY2x1ZGUgIklu
c3BlY3RvclN0eWxlU2hlZXQuY3BwIgogI2luY2x1ZGUgIkluc3BlY3RvclN0eWxlVGV4dEVkaXRv
ci5jcHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAiCi0jaW5jbHVkZSAi
SW5zcGVjdG9yVmFsdWVzLmNwcCIKICNpbmNsdWRlICJJbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAi
CiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5jcHAiCiAjaW5jbHVkZSAiTmV0d29ya1Jl
c291cmNlc0RhdGEuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAppbmRleCAwNGNjNTNhLi42ZDdk
ODA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcApAQCAtMzYsMjEgKzM2LDIzIEBACiAjaW5jbHVk
ZSAiSW5zcGVjdG9yQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5o
IgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJOZXR3b3JrU3Rh
dGVOb3RpZmllci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3Bv
bnNlLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgorCit1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEluc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudDo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KEluc3Ry
dW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCog
cGFnZUFnZW50KQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiQXBwbGlj
YXRpb25DYWNoZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRC
YXNlKEFTQ0lJTGl0ZXJhbCgiQXBwbGljYXRpb25DYWNoZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRz
KQogICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQogewogfQogCi12b2lkIEluc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
KiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUZyb250ZW5kRGlzcGF0Y2hlcj4o
ZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIs
IHRoaXMpOwpAQCAtOTIsOSArOTQsOSBAQCB2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudDo6bmV0d29ya1N0YXRlQ2hhbmdlZCgpCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPm5l
dHdvcmtTdGF0ZVVwZGF0ZWQoaXNOb3dPbmxpbmUpOwogfQogCi12b2lkIEluc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudDo6Z2V0RnJhbWVzV2l0aE1hbmlmZXN0cyhFcnJvclN0cmluZyosIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkZy
YW1lV2l0aE1hbmlmZXN0Pj4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNo
ZUFnZW50OjpnZXRGcmFtZXNXaXRoTWFuaWZlc3RzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0
aW9uQ2FjaGU6OkZyYW1lV2l0aE1hbmlmZXN0Pj4mIHJlc3VsdCkKIHsKLSAgICByZXN1bHQgPSBU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkZyYW1lV2l0
aE1hbmlmZXN0Pjo6Y3JlYXRlKCk7CisgICAgcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVX
aXRoTWFuaWZlc3Q+OjpjcmVhdGUoKTsKIAogICAgIEZyYW1lKiBtYWluRnJhbWUgPSBtX3BhZ2VB
Z2VudC0+bWFpbkZyYW1lKCk7CiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWU7IGZy
YW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KG1haW5GcmFtZSkpIHsKQEAg
LTEwNiw3ICsxMDgsNyBAQCB2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0
RnJhbWVzV2l0aE1hbmlmZXN0cyhFcnJvclN0cmluZyosIFJlZlB0cgogICAgICAgICBBcHBsaWNh
dGlvbkNhY2hlSG9zdDo6Q2FjaGVJbmZvIGluZm8gPSBob3N0LT5hcHBsaWNhdGlvbkNhY2hlSW5m
bygpOwogICAgICAgICBTdHJpbmcgbWFuaWZlc3RVUkwgPSBpbmZvLm1fbWFuaWZlc3Quc3RyaW5n
KCk7CiAgICAgICAgIGlmICghbWFuaWZlc3RVUkwuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkZyYW1lV2l0aE1hbmlmZXN0PiB2
YWx1ZSA9IFR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVzdDo6
Y3JlYXRlKCkKKyAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBs
aWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVzdD4gdmFsdWUgPSBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVzdDo6Y3JlYXRlKCkKICAg
ICAgICAgICAgICAgICAuc2V0RnJhbWVJZChtX3BhZ2VBZ2VudC0+ZnJhbWVJZChmcmFtZSkpCiAg
ICAgICAgICAgICAgICAgLnNldE1hbmlmZXN0VVJMKG1hbmlmZXN0VVJMKQogICAgICAgICAgICAg
ICAgIC5zZXRTdGF0dXMoc3RhdGljX2Nhc3Q8aW50Pihob3N0LT5zdGF0dXMoKSkpOwpAQCAtMTM0
LDcgKzEzNiw3IEBAIHZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpnZXRNYW5p
ZmVzdEZvckZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluCiAgICAgKm1hbmlmZXN0VVJMID0g
aW5mby5tX21hbmlmZXN0LnN0cmluZygpOwogfQogCi12b2lkIEluc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudDo6Z2V0QXBwbGljYXRpb25DYWNoZUZvckZyYW1lKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFwcGxp
Y2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU+JiBhcHBsaWNhdGlvbkNhY2hlKQordm9pZCBJ
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmdldEFwcGxpY2F0aW9uQ2FjaGVGb3JGcmFt
ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2Fj
aGU+JiBhcHBsaWNhdGlvbkNhY2hlKQogewogICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExv
YWRlciA9IGFzc2VydEZyYW1lV2l0aERvY3VtZW50TG9hZGVyKGVycm9yU3RyaW5nLCBmcmFtZUlk
KTsKICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQpAQCAtMTQ5LDkgKzE1MSw5IEBAIHZvaWQgSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpnZXRBcHBsaWNhdGlvbkNhY2hlRm9yRnJhbWUo
RXJyb3JTdHJpbmcqIGVyCiAgICAgYXBwbGljYXRpb25DYWNoZSA9IGJ1aWxkT2JqZWN0Rm9yQXBw
bGljYXRpb25DYWNoZShyZXNvdXJjZXMsIGluZm8pOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlPiBJbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZShjb25zdCBBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvTGlzdCYgYXBwbGljYXRpb25DYWNoZVJlc291
cmNlcywgY29uc3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OkNhY2hlSW5mbyYgYXBwbGljYXRpb25D
YWNoZUluZm8pCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9u
Q2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU+IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6
YnVpbGRPYmplY3RGb3JBcHBsaWNhdGlvbkNhY2hlKGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0
OjpSZXNvdXJjZUluZm9MaXN0JiBhcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzLCBjb25zdCBBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6Q2FjaGVJbmZvJiBhcHBsaWNhdGlvbkNhY2hlSW5mbykKIHsKLSAg
ICByZXR1cm4gVHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU6
OmNyZWF0ZSgpCisgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9u
Q2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRNYW5pZmVzdFVS
TChhcHBsaWNhdGlvbkNhY2hlSW5mby5tX21hbmlmZXN0LnN0cmluZygpKQogICAgICAgICAuc2V0
U2l6ZShhcHBsaWNhdGlvbkNhY2hlSW5mby5tX3NpemUpCiAgICAgICAgIC5zZXRDcmVhdGlvblRp
bWUoYXBwbGljYXRpb25DYWNoZUluZm8ubV9jcmVhdGlvblRpbWUpCkBAIC0xNjAsOSArMTYyLDkg
QEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25D
YWNoZT4gSW5zcGVjdG9yQXBwbGljYXRpb24KICAgICAgICAgLnJlbGVhc2UoKTsKIH0KIAotUGFz
c1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6
OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4+IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dDo6YnVpbGRBcnJheUZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMoY29uc3QgQXBwbGljYXRp
b25DYWNoZUhvc3Q6OlJlc291cmNlSW5mb0xpc3QmIGFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMp
CitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4+IElu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6YnVpbGRBcnJheUZvckFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZXMoY29uc3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mb0xpc3Qm
IGFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMpCiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpB
cnJheTxUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291
cmNlPj4gcmVzb3VyY2VzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpBcHBsaWNh
dGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+OjpjcmVhdGUoKTsKKyAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlPj4gcmVzb3VyY2VzID0g
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXBw
bGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlPjo6Y3JlYXRlKCk7CiAKICAg
ICBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvTGlzdDo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gYXBwbGljYXRpb25DYWNoZVJlc291cmNlcy5lbmQoKTsKICAgICBBcHBsaWNhdGlvbkNh
Y2hlSG9zdDo6UmVzb3VyY2VJbmZvTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBhcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VzLmJlZ2luKCk7CkBAIC0xNzIsNyArMTc0LDcgQEAgUGFzc1JlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0
aW9uQ2FjaGVSZXMKICAgICByZXR1cm4gcmVzb3VyY2VzOwogfQogCi1QYXNzUmVmUHRyPFR5cGVC
dWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IEluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6YnVpbGRPYmplY3RGb3JBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UoY29uc3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mbyYgcmVzb3Vy
Y2VJbmZvKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNh
Y2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudDo6YnVpbGRPYmplY3RGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoY29uc3QgQXBwbGlj
YXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mbyYgcmVzb3VyY2VJbmZvKQogewogICAgIFN0cmlu
ZyB0eXBlczsKICAgICBpZiAocmVzb3VyY2VJbmZvLm1faXNNYXN0ZXIpCkBAIC0xOTAsNyArMTky
LDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRp
b25DYWNoZVJlc291cmNlPiBJbnNwZWN0b3JBcHAKICAgICBpZiAocmVzb3VyY2VJbmZvLm1faXNF
eHBsaWNpdCkKICAgICAgICAgdHlwZXMuYXBwZW5kKCJFeHBsaWNpdCAiKTsKIAotICAgIFJlZlB0
cjxUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNl
PiB2YWx1ZSA9IFR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2U6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFw
cGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gdmFsdWUgPSBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRVcmwocmVzb3VyY2VJbmZvLm1fcmVzb3VyY2Uuc3Ry
aW5nKCkpCiAgICAgICAgIC5zZXRTaXplKHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VJbmZvLm1f
c2l6ZSkpCiAgICAgICAgIC5zZXRUeXBlKHR5cGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaAppbmRleCBl
YjA2YzhmLi44MjExYTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCkBAIC0yOCwyNyArMjgsMzAgQEAK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZUhvc3Qu
aCIKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgorI2lu
Y2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3Ig
eworY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworY2xhc3MgSW5zcGVjdG9yVmFsdWU7Cit9CisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRnJhbWU7Ci1jbGFzcyBJbnNwZWN0b3JBcnJheTsK
IGNsYXNzIEluc3BlY3RvckFnZW50OwogY2xhc3MgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUZy
b250ZW5kRGlzcGF0Y2hlcjsKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3BlY3Rv
clBhZ2VBZ2VudDsKLWNsYXNzIEluc3BlY3RvclZhbHVlOwogY2xhc3MgSW5zdHJ1bWVudGluZ0Fn
ZW50czsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiB0eXBlZGVmIFN0
cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCk7IFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KQpAQCAtNTcsMjUgKzYw
LDIyIEBAIHB1YmxpYzoKICAgICB9CiAgICAgfkluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dCgpIHsgfQogCi0gICAgLy8gSW5zcGVjdG9yQmFzZUFnZW50Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7
CiAKLSAgICAvLyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gQVBJCiAgICAgdm9pZCB1cGRhdGVB
cHBsaWNhdGlvbkNhY2hlU3RhdHVzKEZyYW1lKik7CiAgICAgdm9pZCBuZXR3b3JrU3RhdGVDaGFu
Z2VkKCk7CiAKLSAgICAvLyBBcHBsaWNhdGlvbkNhY2hlIEFQSSBmb3IgSW5zcGVjdG9yRnJvbnRl
bmQKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKik7Ci0gICAgdmlydHVhbCB2
b2lkIGdldEZyYW1lc1dpdGhNYW5pZmVzdHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVz
dD4+JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCBnZXRGcmFtZXNXaXRoTWFuaWZlc3RzKEVy
cm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkZyYW1lV2l0aE1hbmlmZXN0Pj4mIHJl
c3VsdCk7CiAgICAgdmlydHVhbCB2b2lkIGdldE1hbmlmZXN0Rm9yRnJhbWUoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIFN0cmluZyogbWFuaWZlc3RVUkwpOwotICAgIHZpcnR1
YWwgdm9pZCBnZXRBcHBsaWNhdGlvbkNhY2hlRm9yRnJhbWUoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIGZyYW1lSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBw
bGljYXRpb25DYWNoZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0QXBwbGljYXRpb25DYWNoZUZv
ckZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZT4mKTsK
IAogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoSW5zdHJ1bWVu
dGluZ0FnZW50cyosIEluc3BlY3RvclBhZ2VBZ2VudCopOwotICAgIFBhc3NSZWZQdHI8VHlwZUJ1
aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU+IGJ1aWxkT2JqZWN0Rm9y
QXBwbGljYXRpb25DYWNoZShjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZv
TGlzdCYsIGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpDYWNoZUluZm8mKTsKLSAgICBQYXNz
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6
QXBwbGljYXRpb25DYWNoZVJlc291cmNlPj4gYnVpbGRBcnJheUZvckFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZXMoY29uc3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mb0xpc3QmKTsK
LSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2U+IGJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlKGNv
bnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm8mKTsKKyAgICBQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2Fj
aGU+IGJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZShjb25zdCBBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6UmVzb3VyY2VJbmZvTGlzdCYsIGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpDYWNo
ZUluZm8mKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZT4+IGJ1aWxkQXJyYXlGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzKGNvbnN0IEFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm9MaXN0Jik7CisgICAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2U+IGJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlKGNvbnN0IEFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm8mKTsKIAogICAgIERvY3VtZW50TG9hZGVy
KiBhc3NlcnRGcmFtZVdpdGhEb2N1bWVudExvYWRlcihFcnJvclN0cmluZyosIFN0cmluZyBmcmFt
ZUlkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5j
cHAKaW5kZXggYmIxN2M2NS4uODNjNDIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC00Myw4ICs0Myw3IEBACiAjaW5jbHVkZSAiSFRN
TFN0eWxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9ySGlzdG9yeS5oIgotI2luY2x1ZGUgIkluc3BlY3RvclR5cGVCdWlsZGVyLmgi
Ci0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViVHlw
ZUJ1aWxkZXJzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUg
Ik5hbWVkRmxvd0NvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJOb2RlLmgiCkBAIC01Nyw3ICs1Niw3
IEBACiAjaW5jbHVkZSAiU3R5bGVSdWxlLmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldExpc3QuaCIK
ICNpbmNsdWRlICJXZWJLaXROYW1lZEZsb3cuaCIKLQorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNw
ZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTY1LDYgKzY0LDggQEAKICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29u
Y2F0ZW5hdGUuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBlbnVtIEZvcmNlUHNldWRvQ2xhc3NGbGFncyB7CkBAIC0xMTcsNyArMTE4LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRTZWxlY3Rvcihjb25zdCBDU1NTdHlsZVJ1bGUqKTsK
ICAgICB2b2lkIGNvbW1pdFNlbGVjdG9yKGJvb2wpOwogICAgIHZvaWQgY29tbWl0U2VsZWN0b3JU
aW1lKCk7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+
IHRvSW5zcGVjdG9yT2JqZWN0KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZT4gdG9JbnNwZWN0b3JPYmplY3QoKSBjb25z
dDsKIAogcHJpdmF0ZToKIApAQCAtMjA1LDExICsyMDYsMTEgQEAgaW5saW5lIHZvaWQgU2VsZWN0
b3JQcm9maWxlOjpjb21taXRTZWxlY3RvclRpbWUoKQogICAgIGl0LT52YWx1ZS50b3RhbFRpbWUg
Kz0gcHJvY2Vzc2luZ1RpbWVNUzsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpT
ZWxlY3RvclByb2ZpbGU+IFNlbGVjdG9yUHJvZmlsZTo6dG9JbnNwZWN0b3JPYmplY3QoKSBjb25z
dAorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmls
ZT4gU2VsZWN0b3JQcm9maWxlOjp0b0luc3BlY3Rvck9iamVjdCgpIGNvbnN0CiB7Ci0gICAgUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGVF
bnRyeT4+IHNlbGVjdG9yUHJvZmlsZURhdGEgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxk
ZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlRW50cnk+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpT
ZWxlY3RvclByb2ZpbGVFbnRyeT4+IHNlbGVjdG9yUHJvZmlsZURhdGEgPSBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJv
ZmlsZUVudHJ5Pjo6Y3JlYXRlKCk7CiAgICAgZm9yIChSdWxlTWF0Y2hpbmdTdGF0c01hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBtX3J1bGVNYXRjaGluZ1N0YXRzLmJlZ2luKCk7IGl0ICE9IG1fcnVs
ZU1hdGNoaW5nU3RhdHMuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVy
OjpDU1M6OlNlbGVjdG9yUHJvZmlsZUVudHJ5PiBlbnRyeSA9IFR5cGVCdWlsZGVyOjpDU1M6OlNl
bGVjdG9yUHJvZmlsZUVudHJ5OjpjcmVhdGUoKQorICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGVFbnRyeT4gZW50cnkgPSBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZUVudHJ5OjpjcmVhdGUoKQogICAgICAg
ICAgICAgLnNldFNlbGVjdG9yKGl0LT52YWx1ZS5zZWxlY3RvcikKICAgICAgICAgICAgIC5zZXRV
cmwoaXQtPnZhbHVlLnVybCkKICAgICAgICAgICAgIC5zZXRMaW5lTnVtYmVyKGl0LT52YWx1ZS5s
aW5lTnVtYmVyKQpAQCAtMjE5LDcgKzIyMCw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNT
Uzo6U2VsZWN0b3JQcm9maWxlPiBTZWxlY3RvclByb2ZpbGU6OnRvSW5zcGVjdG9yT2JqZWN0CiAg
ICAgICAgIHNlbGVjdG9yUHJvZmlsZURhdGEtPmFkZEl0ZW0oZW50cnkucmVsZWFzZSgpKTsKICAg
ICB9CiAKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlPiByZXN1
bHQgPSBUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU6OmNyZWF0ZSgpCisgICAgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlPiByZXN1bHQg
PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZTo6Y3JlYXRlKCkK
ICAgICAgICAgLnNldFRvdGFsVGltZSh0b3RhbE1hdGNoaW5nVGltZU1zKCkpCiAgICAgICAgIC5z
ZXREYXRhKHNlbGVjdG9yUHJvZmlsZURhdGEpOwogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgp
OwpAQCAtNjE2LDcgKzYxNyw3IEBAIENTU1N0eWxlUnVsZSogSW5zcGVjdG9yQ1NTQWdlbnQ6OmFz
Q1NTU3R5bGVSdWxlKENTU1J1bGUqIHJ1bGUpCiB9CiAKIEluc3BlY3RvckNTU0FnZW50OjpJbnNw
ZWN0b3JDU1NBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJ
bnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVND
SUlMaXRlcmFsKCJDU1MiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFn
ZW50QmFzZShBU0NJSUxpdGVyYWwoIkNTUyIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwg
bV9kb21BZ2VudChkb21BZ2VudCkKICAgICAsIG1fbGFzdFN0eWxlU2hlZXRJZCgxKQogewpAQCAt
NjI5LDcgKzYzMCw3IEBAIEluc3BlY3RvckNTU0FnZW50Ojp+SW5zcGVjdG9yQ1NTQWdlbnQoKQog
ICAgIHJlc2V0KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNw
ZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQ1NTRnJvbnRlbmREaXNwYXRjaGVyPihmcm9u
dGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JDU1NCYWNr
ZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKQEAgLTgxMCw3
ICs4MTEsNyBAQCBib29sIEluc3BlY3RvckNTU0FnZW50Ojpmb3JjZVBzZXVkb1N0YXRlKEVsZW1l
bnQqIGVsZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1ZG9UeQogICAgIH0KIH0KIAotdm9pZCBJbnNw
ZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBib29sKiBpbmNsdWRlUHNldWRvLCBjb25zdCBib29s
KiBpbmNsdWRlSW5oZXJpdGVkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVy
OjpDU1M6OlJ1bGVNYXRjaD4+JiBtYXRjaGVkQ1NTUnVsZXMsIFJlZlB0cjxUeXBlQnVpbGRlcjo6
QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6UHNldWRvSWRNYXRjaGVzPj4mIHBzZXVkb0lkTWF0Y2hl
cywgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpJbmhlcml0ZWRT
dHlsZUVudHJ5Pj4mIGluaGVyaXRlZEVudHJpZXMpCit2b2lkIEluc3BlY3RvckNTU0FnZW50Ojpn
ZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2Rl
SWQsIGNvbnN0IGJvb2wqIGluY2x1ZGVQc2V1ZG8sIGNvbnN0IGJvb2wqIGluY2x1ZGVJbmhlcml0
ZWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6OlJ1bGVNYXRjaD4+JiBtYXRjaGVkQ1NTUnVsZXMsIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlBzZXVk
b0lkTWF0Y2hlcz4+JiBwc2V1ZG9JZE1hdGNoZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50
cnk+PiYgaW5oZXJpdGVkRW50cmllcykKIHsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gZWxlbWVu
dEZvcklkKGVycm9yU3RyaW5nLCBub2RlSWQpOwogICAgIGlmICghZWxlbWVudCkKQEAgLTgyMywx
MSArODI0LDExIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JO
b2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vCiAKICAgICAvLyBQc2V1ZG8gZWxl
bWVudHMuCiAgICAgaWYgKCFpbmNsdWRlUHNldWRvIHx8ICppbmNsdWRlUHNldWRvKSB7Ci0gICAg
ICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6UHNldWRvSWRN
YXRjaGVzPj4gcHNldWRvRWxlbWVudHMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6
OkNTUzo6UHNldWRvSWRNYXRjaGVzPjo6Y3JlYXRlKCk7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlBzZXVk
b0lkTWF0Y2hlcz4+IHBzZXVkb0VsZW1lbnRzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+OjpjcmVhdGUo
KTsKICAgICAgICAgZm9yIChQc2V1ZG9JZCBwc2V1ZG9JZCA9IEZJUlNUX1BVQkxJQ19QU0VVRE9J
RDsgcHNldWRvSWQgPCBBRlRFUl9MQVNUX0lOVEVSTkFMX1BTRVVET0lEOyBwc2V1ZG9JZCA9IHN0
YXRpY19jYXN0PFBzZXVkb0lkPihwc2V1ZG9JZCArIDEpKSB7CiAgICAgICAgICAgICBWZWN0b3I8
UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiBtYXRjaGVkUnVsZXMgPSBzdHlsZVJlc29sdmVyLnBzZXVk
b1N0eWxlUnVsZXNGb3JFbGVtZW50KGVsZW1lbnQsIHBzZXVkb0lkLCBTdHlsZVJlc29sdmVyOjpB
bGxDU1NSdWxlcyk7CiAgICAgICAgICAgICBpZiAoIW1hdGNoZWRSdWxlcy5pc0VtcHR5KCkpIHsK
LSAgICAgICAgICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6UHNldWRvSWRNYXRjaGVz
PiBtYXRjaGVzID0gVHlwZUJ1aWxkZXI6OkNTUzo6UHNldWRvSWRNYXRjaGVzOjpjcmVhdGUoKQor
ICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlBzZXVk
b0lkTWF0Y2hlcz4gbWF0Y2hlcyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UHNldWRv
SWRNYXRjaGVzOjpjcmVhdGUoKQogICAgICAgICAgICAgICAgICAgICAuc2V0UHNldWRvSWQoc3Rh
dGljX2Nhc3Q8aW50Pihwc2V1ZG9JZCkpCiAgICAgICAgICAgICAgICAgICAgIC5zZXRNYXRjaGVz
KGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QobWF0Y2hlZFJ1bGVzLCBzdHlsZVJlc29sdmVy
LCBlbGVtZW50KSk7CiAgICAgICAgICAgICAgICAgcHNldWRvRWxlbWVudHMtPmFkZEl0ZW0obWF0
Y2hlcy5yZWxlYXNlKCkpOwpAQCAtODM5LDEyICs4NDAsMTIgQEAgdm9pZCBJbnNwZWN0b3JDU1NB
Z2VudDo6Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBp
bnQgbm8KIAogICAgIC8vIEluaGVyaXRlZCBzdHlsZXMuCiAgICAgaWYgKCFpbmNsdWRlSW5oZXJp
dGVkIHx8ICppbmNsdWRlSW5oZXJpdGVkKSB7Ci0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6
QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4+IGVudHJpZXMgPSBU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT46
OmNyZWF0ZSgpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5Pj4gZW50cmll
cyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT46OmNyZWF0ZSgpOwogICAgICAgICBFbGVtZW50KiBw
YXJlbnRFbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpOwogICAgICAgICB3aGlsZSAo
cGFyZW50RWxlbWVudCkgewogICAgICAgICAgICAgU3R5bGVSZXNvbHZlciYgcGFyZW50U3R5bGVS
ZXNvbHZlciA9IHBhcmVudEVsZW1lbnQtPmRvY3VtZW50KCkuZW5zdXJlU3R5bGVSZXNvbHZlcigp
OwogICAgICAgICAgICAgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4gcGFyZW50TWF0Y2hl
ZFJ1bGVzID0gcGFyZW50U3R5bGVSZXNvbHZlci5zdHlsZVJ1bGVzRm9yRWxlbWVudChwYXJlbnRF
bGVtZW50LCBTdHlsZVJlc29sdmVyOjpBbGxDU1NSdWxlcyk7Ci0gICAgICAgICAgICBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4gZW50cnkgPSBUeXBlQnVpbGRl
cjo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5OjpjcmVhdGUoKQorICAgICAgICAgICAgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4gZW50cnkg
PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk6OmNyZWF0
ZSgpCiAgICAgICAgICAgICAgICAgLnNldE1hdGNoZWRDU1NSdWxlcyhidWlsZEFycmF5Rm9yTWF0
Y2hlZFJ1bGVMaXN0KHBhcmVudE1hdGNoZWRSdWxlcywgc3R5bGVSZXNvbHZlciwgcGFyZW50RWxl
bWVudCkpOwogICAgICAgICAgICAgaWYgKHBhcmVudEVsZW1lbnQtPnN0eWxlKCkgJiYgcGFyZW50
RWxlbWVudC0+c3R5bGUoKS0+bGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JT
dHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUqIHN0eWxlU2hlZXQgPSBhc0luc3BlY3RvclN0eWxlU2hl
ZXQocGFyZW50RWxlbWVudCk7CkBAIC04NjAsNyArODYxLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NB
Z2VudDo6Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBp
bnQgbm8KICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldElubGluZVN0eWxl
c0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiBpbmxpbmVTdHlsZSwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpDU1M6OkNTU1N0eWxlPiYgYXR0cmlidXRlc1N0eWxlKQordm9pZCBJbnNwZWN0b3JDU1NBZ2Vu
dDo6Z2V0SW5saW5lU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBu
b2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgaW5s
aW5lU3R5bGUsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYg
YXR0cmlidXRlc1N0eWxlKQogewogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBlbGVtZW50Rm9ySWQo
ZXJyb3JTdHJpbmcsIG5vZGVJZCk7CiAgICAgaWYgKCFlbGVtZW50KQpAQCAtODcxLDExICs4NzIs
MTEgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0SW5saW5lU3R5bGVzRm9yTm9kZShFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2QKICAgICAgICAgcmV0dXJuOwogCiAgICAgaW5s
aW5lU3R5bGUgPSBzdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclN0eWxlKGVsZW1lbnQtPnN0eWxl
KCkpOwotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gYXR0cmlidXRlcyA9
IGJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRlc1N0eWxlKGVsZW1lbnQpOworICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBhdHRyaWJ1dGVzID0gYnVpbGRPYmpl
Y3RGb3JBdHRyaWJ1dGVzU3R5bGUoZWxlbWVudCk7CiAgICAgYXR0cmlidXRlc1N0eWxlID0gYXR0
cmlidXRlcyA/IGF0dHJpYnV0ZXMucmVsZWFzZSgpIDogMDsKIH0KIAotdm9pZCBJbnNwZWN0b3JD
U1NBZ2VudDo6Z2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBpbnQgbm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6
OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+JiBzdHlsZSkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdl
bnQ6OmdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50
IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4mIHN0eWxlKQogewog
ICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBlbGVtZW50Rm9ySWQoZXJyb3JTdHJpbmcsIG5vZGVJZCk7
CiAgICAgaWYgKCFlbGVtZW50KQpAQCAtODg2LDkgKzg4Nyw5IEBAIHZvaWQgSW5zcGVjdG9yQ1NT
QWdlbnQ6OmdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
aW50IG5vCiAgICAgc3R5bGUgPSBpbnNwZWN0b3JTdHlsZS0+YnVpbGRBcnJheUZvckNvbXB1dGVk
U3R5bGUoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0QWxsU3R5bGVTaGVldHMo
RXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6
OkNTU1N0eWxlU2hlZXRIZWFkZXI+PiYgc3R5bGVJbmZvcykKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdl
bnQ6OmdldEFsbFN0eWxlU2hlZXRzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVl
dEhlYWRlcj4+JiBzdHlsZUluZm9zKQogewotICAgIHN0eWxlSW5mb3MgPSBUeXBlQnVpbGRlcjo6
QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj46OmNyZWF0ZSgpOwor
ICAgIHN0eWxlSW5mb3MgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+OjpjcmVhdGUoKTsKICAgICBW
ZWN0b3I8RG9jdW1lbnQqPiBkb2N1bWVudHMgPSBtX2RvbUFnZW50LT5kb2N1bWVudHMoKTsKICAg
ICBmb3IgKFZlY3RvcjxEb2N1bWVudCo+OjppdGVyYXRvciBpdCA9IGRvY3VtZW50cy5iZWdpbigp
OyBpdCAhPSBkb2N1bWVudHMuZW5kKCk7ICsraXQpIHsKICAgICAgICAgU3R5bGVTaGVldExpc3Qq
IGxpc3QgPSAoKml0KS0+c3R5bGVTaGVldHMoKTsKQEAgLTkwMCw3ICs5MDEsNyBAQCB2b2lkIElu
c3BlY3RvckNTU0FnZW50OjpnZXRBbGxTdHlsZVNoZWV0cyhFcnJvclN0cmluZyosIFJlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYQogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0
U3R5bGVTaGVldChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc3R5bGVT
aGVldElkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEJvZHk+JiBzdHls
ZVNoZWV0T2JqZWN0KQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3R5bGVTaGVldChFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0Qm9keT4mIHN0eWxlU2hl
ZXRPYmplY3QpCiB7CiAgICAgSW5zcGVjdG9yU3R5bGVTaGVldCogaW5zcGVjdG9yU3R5bGVTaGVl
dCA9IGFzc2VydFN0eWxlU2hlZXRGb3JJZChlcnJvclN0cmluZywgc3R5bGVTaGVldElkKTsKICAg
ICBpZiAoIWluc3BlY3RvclN0eWxlU2hlZXQpCkBAIC05MjksNyArOTMwLDcgQEAgdm9pZCBJbnNw
ZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVTaGVldFRleHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBjb25zdCBTdHJpbmcKICAgICAqZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9F
cnJvclN0cmluZyhlYyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlVGV4
dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
JiBmdWxsU3R5bGVJZCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTU3R5bGU+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVRl
eHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiYgZnVsbFN0eWxlSWQsIGNvbnN0IFN0cmluZyYgdGV4dCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpCiB7CiAgICAgSW5zcGVjdG9yQ1NTSWQg
Y29tcG91bmRJZChmdWxsU3R5bGVJZCk7CiAgICAgQVNTRVJUKCFjb21wb3VuZElkLmlzRW1wdHko
KSk7CkBAIC05NDUsNyArOTQ2LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVU
ZXh0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluc3AKICAgICAqZXJy
b3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhlYyk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFByb3BlcnR5VGV4dChFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBmdWxsU3R5bGVJZCwgaW50IHBy
b3BlcnR5SW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBvdmVyd3JpdGUsIFJlZlB0cjxU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdl
bnQ6OnNldFByb3BlcnR5VGV4dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+JiBmdWxsU3R5bGVJZCwgaW50IHByb3BlcnR5SW5kZXgsIGNvbnN0
IFN0cmluZyYgdGV4dCwgYm9vbCBvdmVyd3JpdGUsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KQogewogICAgIEluc3BlY3RvckNTU0lkIGNvbXBv
dW5kSWQoZnVsbFN0eWxlSWQpOwogICAgIEFTU0VSVCghY29tcG91bmRJZC5pc0VtcHR5KCkpOwpA
QCAtOTYxLDcgKzk2Miw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFByb3BlcnR5VGV4
dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJCiAgICAgKmVycm9yU3Ry
aW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcoZWMpOwogfQogCi12b2lkIElu
c3BlY3RvckNTU0FnZW50Ojp0b2dnbGVQcm9wZXJ0eShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBmdWxsU3R5bGVJZCwgaW50IHByb3BlcnR5
SW5kZXgsIGJvb2wgZGlzYWJsZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYg
cmVzdWx0KQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6dG9nZ2xlUHJvcGVydHkoRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgZnVsbFN0eWxl
SWQsIGludCBwcm9wZXJ0eUluZGV4LCBib29sIGRpc2FibGUsIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KQogewogICAgIEluc3BlY3RvckNTU0lk
IGNvbXBvdW5kSWQoZnVsbFN0eWxlSWQpOwogICAgIEFTU0VSVCghY29tcG91bmRJZC5pc0VtcHR5
KCkpOwpAQCAtOTc3LDcgKzk3OCw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnRvZ2dsZVBy
b3BlcnR5KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluCiAgICAgKmVy
cm9yU3RyaW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcoZWMpOwogfQogCi12
b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0b3IoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgZnVsbFJ1bGVJZCwgY29uc3Qg
U3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+JiByZXN1
bHQpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0b3IoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgZnVsbFJ1bGVJZCwg
Y29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTUnVsZT4mIHJlc3VsdCkKIHsKICAgICBJbnNwZWN0b3JDU1NJZCBjb21wb3VuZElkKGZ1
bGxSdWxlSWQpOwogICAgIEFTU0VSVCghY29tcG91bmRJZC5pc0VtcHR5KCkpOwpAQCAtOTk0LDcg
Kzk5NSw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFJ1bGVTZWxlY3RvcihFcnJvclN0
cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJCiAgICAgKmVycm9yU3RyaW5nID0gSW5z
cGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcoZWMpOwogfQogCi12b2lkIEluc3BlY3RvckNT
U0FnZW50OjphZGRSdWxlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgaW50IGNvbnRl
eHROb2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NSdWxlPiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6YWRkUnVsZShFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IGludCBjb250ZXh0Tm9kZUlkLCBjb25zdCBTdHJp
bmcmIHNlbGVjdG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxl
PiYgcmVzdWx0KQogewogICAgIE5vZGUqIG5vZGUgPSBtX2RvbUFnZW50LT5hc3NlcnROb2RlKGVy
cm9yU3RyaW5nLCBjb250ZXh0Tm9kZUlkKTsKICAgICBpZiAoIW5vZGUpCkBAIC0xMDIwLDEyICsx
MDIxLDEyIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmFkZFJ1bGUoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBjb25zdCBpbnQgY29udGV4dE5vZGVJCiAgICAgcmVzdWx0ID0gaW5zcGVjdG9y
U3R5bGVTaGVldC0+YnVpbGRPYmplY3RGb3JSdWxlKHJ1bGUpOwogfQogCi12b2lkIEluc3BlY3Rv
ckNTU0FnZW50OjpnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwgUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+PiYg
Y3NzUHJvcGVydGllcykKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN1cHBvcnRlZENTU1By
b3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+PiYgY3NzUHJv
cGVydGllcykKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpD
U1M6OkNTU1Byb3BlcnR5SW5mbz4+IHByb3BlcnRpZXMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHlJbmZvPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTUHJvcGVydHlJbmZvPj4gcHJvcGVydGllcyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFy
cmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHlJbmZvPjo6Y3JlYXRl
KCk7CiAgICAgZm9yIChpbnQgaSA9IGZpcnN0Q1NTUHJvcGVydHk7IGkgPD0gbGFzdENTU1Byb3Bl
cnR5OyArK2kpIHsKICAgICAgICAgQ1NTUHJvcGVydHlJRCBpZCA9IGNvbnZlcnRUb0NTU1Byb3Bl
cnR5SUQoaSk7Ci0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eUlu
Zm8+IHByb3BlcnR5ID0gVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHlJbmZvOjpjcmVhdGUo
KQorICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0
eUluZm8+IHByb3BlcnR5ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0
eUluZm86OmNyZWF0ZSgpCiAgICAgICAgICAgICAuc2V0TmFtZShnZXRQcm9wZXJ0eU5hbWVTdHJp
bmcoaWQpKTsKIAogICAgICAgICBjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhh
bmQgPSBzaG9ydGhhbmRGb3JQcm9wZXJ0eShpZCk7CkBAIC0xMDMzLDcgKzEwMzQsNyBAQCB2b2lk
IEluc3BlY3RvckNTU0FnZW50OjpnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKEVycm9yU3RyaW5n
KiwgUmVmUHRyPFR5cGVCdWlsZAogICAgICAgICAgICAgcHJvcGVydGllcy0+YWRkSXRlbShwcm9w
ZXJ0eS5yZWxlYXNlKCkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAg
ICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBsb25naGFuZHMgPSBUeXBlQnVp
bGRlcjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBsb25naGFuZHMgPSBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBq
ID0gMDsgaiA8IHNob3J0aGFuZC5sZW5ndGgoKTsgKytqKSB7CiAgICAgICAgICAgICBDU1NQcm9w
ZXJ0eUlEIGxvbmdoYW5kSUQgPSBzaG9ydGhhbmQucHJvcGVydGllcygpW2pdOwogICAgICAgICAg
ICAgbG9uZ2hhbmRzLT5hZGRJdGVtKGdldFByb3BlcnR5TmFtZVN0cmluZyhsb25naGFuZElEKSk7
CkBAIC0xMDY0LDcgKzEwNjUsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojpmb3JjZVBzZXVk
b1N0YXRlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgYwogICAgIGVsZW1l
bnQtPmRvY3VtZW50KCkuc3R5bGVSZXNvbHZlckNoYW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVs
eSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE5hbWVkRmxvd0NvbGxlY3Rpb24o
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgZG9jdW1lbnROb2RlSWQsIFJlZlB0cjxUeXBl
QnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93Pj4mIHJlc3VsdCkKK3Zv
aWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE5hbWVkRmxvd0NvbGxlY3Rpb24oRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBpbnQgZG9jdW1lbnROb2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4+JiBy
ZXN1bHQpCiB7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9kb21BZ2VudC0+YXNzZXJ0RG9j
dW1lbnQoZXJyb3JTdHJpbmcsIGRvY3VtZW50Tm9kZUlkKTsKICAgICBpZiAoIWRvY3VtZW50KQpA
QCAtMTA3Myw3ICsxMDc0LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TmFtZWRGbG93
Q29sbGVjdGlvbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBkb2MKICAgICBtX25hbWVk
Rmxvd0NvbGxlY3Rpb25zUmVxdWVzdGVkLmFkZChkb2N1bWVudE5vZGVJZCk7CiAKICAgICBWZWN0
b3I8UmVmUHRyPFdlYktpdE5hbWVkRmxvdz4+IG5hbWVkRmxvd3NWZWN0b3IgPSBkb2N1bWVudC0+
bmFtZWRGbG93cygpLT5uYW1lZEZsb3dzKCk7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJh
eTxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+PiBuYW1lZEZsb3dzID0gVHlwZUJ1aWxkZXI6
OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz46OmNyZWF0ZSgpOworICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6Ok5hbWVkRmxvdz4+IG5hbWVkRmxvd3MgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJh
eTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz46OmNyZWF0ZSgpOwogCiAg
ICAgZm9yIChWZWN0b3I8UmVmUHRyPFdlYktpdE5hbWVkRmxvdz4+OjppdGVyYXRvciBpdCA9IG5h
bWVkRmxvd3NWZWN0b3IuYmVnaW4oKTsgaXQgIT0gbmFtZWRGbG93c1ZlY3Rvci5lbmQoKTsgKytp
dCkKICAgICAgICAgbmFtZWRGbG93cy0+YWRkSXRlbShidWlsZE9iamVjdEZvck5hbWVkRmxvdyhl
cnJvclN0cmluZywgaXQtPmdldCgpLCBkb2N1bWVudE5vZGVJZCkpOwpAQCAtMTA4NiwxNiArMTA4
NywxNiBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzdGFydFNlbGVjdG9yUHJvZmlsZXIoRXJy
b3JTdHJpbmcqKQogICAgIG1fY3VycmVudFNlbGVjdG9yUHJvZmlsZSA9IGFkb3B0UHRyKG5ldyBT
ZWxlY3RvclByb2ZpbGUoKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnN0b3BTZWxl
Y3RvclByb2ZpbGVyKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgUmVmUHRyPFR5cGVCdWlsZGVy
OjpDU1M6OlNlbGVjdG9yUHJvZmlsZT4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OnN0b3BTZWxlY3RvclByb2ZpbGVyKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlPiYgcmVzdWx0KQogewog
ICAgIHJlc3VsdCA9IHN0b3BTZWxlY3RvclByb2ZpbGVySW1wbChlcnJvclN0cmluZywgdHJ1ZSk7
CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlPiBJbnNw
ZWN0b3JDU1NBZ2VudDo6c3RvcFNlbGVjdG9yUHJvZmlsZXJJbXBsKEVycm9yU3RyaW5nKiwgYm9v
bCBuZWVkUHJvZmlsZSkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpT
ZWxlY3RvclByb2ZpbGU+IEluc3BlY3RvckNTU0FnZW50OjpzdG9wU2VsZWN0b3JQcm9maWxlcklt
cGwoRXJyb3JTdHJpbmcqLCBib29sIG5lZWRQcm9maWxlKQogewogICAgIGlmICghbV9jdXJyZW50
U2VsZWN0b3JQcm9maWxlKQogICAgICAgICByZXR1cm4gMDsKLSAgICBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlPiByZXN1bHQ7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlPiByZXN1bHQ7CiAgICAgaWYgKG1fZnJv
bnRlbmREaXNwYXRjaGVyICYmIG5lZWRQcm9maWxlKQogICAgICAgICByZXN1bHQgPSBtX2N1cnJl
bnRTZWxlY3RvclByb2ZpbGUtPnRvSW5zcGVjdG9yT2JqZWN0KCk7CiAgICAgbV9jdXJyZW50U2Vs
ZWN0b3JQcm9maWxlLmNsZWFyKCk7CkBAIC0xMTM2LDcgKzExMzcsNyBAQCBJbnNwZWN0b3JTdHls
ZVNoZWV0Rm9ySW5saW5lU3R5bGUqIEluc3BlY3RvckNTU0FnZW50Ojphc0luc3BlY3RvclN0eWxl
U2hlZXQoRWxlbQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgU3RyaW5nIG5ld1N0
eWxlU2hlZXRJZCA9IFN0cmluZzo6bnVtYmVyKG1fbGFzdFN0eWxlU2hlZXRJZCsrKTsKLSAgICAg
ICAgUmVmUHRyPEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZT4gaW5zcGVjdG9yU3R5
bGVTaGVldCA9IEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6Y3JlYXRlKG1fZG9t
QWdlbnQtPnBhZ2VBZ2VudCgpLCBuZXdTdHlsZVNoZWV0SWQsIGVsZW1lbnQsIFR5cGVCdWlsZGVy
OjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlJlZ3VsYXIsIHRoaXMpOworICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlPiBpbnNwZWN0b3JTdHlsZVNoZWV0ID0g
SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpjcmVhdGUobV9kb21BZ2VudC0+cGFn
ZUFnZW50KCksIG5ld1N0eWxlU2hlZXRJZCwgZWxlbWVudCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpSZWd1bGFyLCB0aGlzKTsKICAgICAgICAgbV9pZFRv
SW5zcGVjdG9yU3R5bGVTaGVldC5zZXQobmV3U3R5bGVTaGVldElkLCBpbnNwZWN0b3JTdHlsZVNo
ZWV0KTsKICAgICAgICAgbV9ub2RlVG9JbnNwZWN0b3JTdHlsZVNoZWV0LnNldChlbGVtZW50LCBp
bnNwZWN0b3JTdHlsZVNoZWV0KTsKICAgICAgICAgcmV0dXJuIGluc3BlY3RvclN0eWxlU2hlZXQu
Z2V0KCk7CkBAIC0xMTY4LDcgKzExNjksNyBAQCBpbnQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRvY3Vt
ZW50Tm9kZVdpdGhSZXF1ZXN0ZWRGbG93c0lkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICByZXR1
cm4gZG9jdW1lbnROb2RlSWQ7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmNvbGxlY3RT
dHlsZVNoZWV0cyhDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBUeXBlQnVpbGRlcjo6QXJyYXk8
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4qIHJlc3VsdCkKK3ZvaWQgSW5z
cGVjdG9yQ1NTQWdlbnQ6OmNvbGxlY3RTdHlsZVNoZWV0cyhDU1NTdHlsZVNoZWV0KiBzdHlsZVNo
ZWV0LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+KiByZXN1bHQpCiB7CiAgICAgSW5zcGVjdG9yU3R5
bGVTaGVldCogaW5zcGVjdG9yU3R5bGVTaGVldCA9IGJpbmRTdHlsZVNoZWV0KHN0YXRpY19jYXN0
PENTU1N0eWxlU2hlZXQqPihzdHlsZVNoZWV0KSk7CiAgICAgcmVzdWx0LT5hZGRJdGVtKGluc3Bl
Y3RvclN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9yU3R5bGVTaGVldEluZm8oKSk7CkBAIC0xMjQx
LDcgKzEyNDIsNyBAQCBJbnNwZWN0b3JTdHlsZVNoZWV0KiBJbnNwZWN0b3JDU1NBZ2VudDo6dmlh
SW5zcGVjdG9yU3R5bGVTaGVldChEb2N1bWVudCogZG9jdW1lbgogICAgICAgICByZXR1cm4gMDsK
IAogICAgIFN0cmluZyBpZCA9IFN0cmluZzo6bnVtYmVyKG1fbGFzdFN0eWxlU2hlZXRJZCsrKTsK
LSAgICBpbnNwZWN0b3JTdHlsZVNoZWV0ID0gSW5zcGVjdG9yU3R5bGVTaGVldDo6Y3JlYXRlKG1f
ZG9tQWdlbnQtPnBhZ2VBZ2VudCgpLCBpZCwgY3NzU3R5bGVTaGVldCwgVHlwZUJ1aWxkZXI6OkNT
Uzo6U3R5bGVTaGVldE9yaWdpbjo6SW5zcGVjdG9yLCBJbnNwZWN0b3JET01BZ2VudDo6ZG9jdW1l
bnRVUkxTdHJpbmcoZG9jdW1lbnQpLCB0aGlzKTsKKyAgICBpbnNwZWN0b3JTdHlsZVNoZWV0ID0g
SW5zcGVjdG9yU3R5bGVTaGVldDo6Y3JlYXRlKG1fZG9tQWdlbnQtPnBhZ2VBZ2VudCgpLCBpZCwg
Y3NzU3R5bGVTaGVldCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3Jp
Z2luOjpJbnNwZWN0b3IsIEluc3BlY3RvckRPTUFnZW50Ojpkb2N1bWVudFVSTFN0cmluZyhkb2N1
bWVudCksIHRoaXMpOwogICAgIG1faWRUb0luc3BlY3RvclN0eWxlU2hlZXQuc2V0KGlkLCBpbnNw
ZWN0b3JTdHlsZVNoZWV0KTsKICAgICBtX2Nzc1N0eWxlU2hlZXRUb0luc3BlY3RvclN0eWxlU2hl
ZXQuc2V0KGNzc1N0eWxlU2hlZXQsIGluc3BlY3RvclN0eWxlU2hlZXQpOwogICAgIG1fZG9jdW1l
bnRUb0luc3BlY3RvclN0eWxlU2hlZXQuc2V0KGRvY3VtZW50LCBpbnNwZWN0b3JTdHlsZVNoZWV0
KTsKQEAgLTEyNTgsMjIgKzEyNTksMjIgQEAgSW5zcGVjdG9yU3R5bGVTaGVldCogSW5zcGVjdG9y
Q1NTQWdlbnQ6OmFzc2VydFN0eWxlU2hlZXRGb3JJZChFcnJvclN0cmluZyogZXJyb3IKICAgICBy
ZXR1cm4gaXQtPnZhbHVlLmdldCgpOwogfQogCi1UeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0
T3JpZ2luOjpFbnVtIEluc3BlY3RvckNTU0FnZW50OjpkZXRlY3RPcmlnaW4oQ1NTU3R5bGVTaGVl
dCogcGFnZVN0eWxlU2hlZXQsIERvY3VtZW50KiBvd25lckRvY3VtZW50KQorSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpFbnVtIEluc3BlY3RvckNTU0FnZW50
OjpkZXRlY3RPcmlnaW4oQ1NTU3R5bGVTaGVldCogcGFnZVN0eWxlU2hlZXQsIERvY3VtZW50KiBv
d25lckRvY3VtZW50KQogewotICAgIFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46
OkVudW0gb3JpZ2luID0gVHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6UmVndWxh
cjsKKyAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OkVu
dW0gb3JpZ2luID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2lu
OjpSZWd1bGFyOwogICAgIGlmIChwYWdlU3R5bGVTaGVldCAmJiAhcGFnZVN0eWxlU2hlZXQtPm93
bmVyTm9kZSgpICYmIHBhZ2VTdHlsZVNoZWV0LT5ocmVmKCkuaXNFbXB0eSgpKQotICAgICAgICBv
cmlnaW4gPSBUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpVc2VyQWdlbnQ7Cisg
ICAgICAgIG9yaWdpbiA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9y
aWdpbjo6VXNlckFnZW50OwogICAgIGVsc2UgaWYgKHBhZ2VTdHlsZVNoZWV0ICYmIHBhZ2VTdHls
ZVNoZWV0LT5vd25lck5vZGUoKSAmJiBwYWdlU3R5bGVTaGVldC0+b3duZXJOb2RlKCktPm5vZGVO
YW1lKCkgPT0gIiNkb2N1bWVudCIpCi0gICAgICAgIG9yaWdpbiA9IFR5cGVCdWlsZGVyOjpDU1M6
OlN0eWxlU2hlZXRPcmlnaW46OlVzZXI7CisgICAgICAgIG9yaWdpbiA9IEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6VXNlcjsKICAgICBlbHNlIHsKICAgICAg
ICAgSW5zcGVjdG9yU3R5bGVTaGVldCogdmlhSW5zcGVjdG9yU3R5bGVTaGVldEZvck93bmVyID0g
dmlhSW5zcGVjdG9yU3R5bGVTaGVldChvd25lckRvY3VtZW50LCBmYWxzZSk7CiAgICAgICAgIGlm
ICh2aWFJbnNwZWN0b3JTdHlsZVNoZWV0Rm9yT3duZXIgJiYgcGFnZVN0eWxlU2hlZXQgPT0gdmlh
SW5zcGVjdG9yU3R5bGVTaGVldEZvck93bmVyLT5wYWdlU3R5bGVTaGVldCgpKQotICAgICAgICAg
ICAgb3JpZ2luID0gVHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6SW5zcGVjdG9y
OworICAgICAgICAgICAgb3JpZ2luID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHls
ZVNoZWV0T3JpZ2luOjpJbnNwZWN0b3I7CiAgICAgfQogICAgIHJldHVybiBvcmlnaW47CiB9CiAK
LVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6
OmJ1aWxkT2JqZWN0Rm9yUnVsZShTdHlsZVJ1bGUqIHN0eWxlUnVsZSwgU3R5bGVSZXNvbHZlciYg
c3R5bGVSZXNvbHZlcikKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NSdWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JSdWxlKFN0eWxlUnVsZSog
c3R5bGVSdWxlLCBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQogewogICAgIGlmICghc3R5
bGVSdWxlKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEyODcsNyArMTI4OCw3IEBAIFBhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2Jq
ZWN0Rm9yUnVsZShTdHlsCiAgICAgcmV0dXJuIGluc3BlY3RvclN0eWxlU2hlZXQgPyBpbnNwZWN0
b3JTdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclJ1bGUoY3Nzb21XcmFwcGVyKSA6IDA7CiB9CiAK
LVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6
OmJ1aWxkT2JqZWN0Rm9yUnVsZShDU1NTdHlsZVJ1bGUqIHJ1bGUpCitQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxk
T2JqZWN0Rm9yUnVsZShDU1NTdHlsZVJ1bGUqIHJ1bGUpCiB7CiAgICAgaWYgKCFydWxlKQogICAg
ICAgICByZXR1cm4gMDsKQEAgLTEyOTcsMTUgKzEyOTgsMTUgQEAgUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NSdWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JSdWxl
KENTU1MKICAgICByZXR1cm4gaW5zcGVjdG9yU3R5bGVTaGVldCA/IGluc3BlY3RvclN0eWxlU2hl
ZXQtPmJ1aWxkT2JqZWN0Rm9yUnVsZShydWxlKSA6IDA7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1
aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+PiBJbnNwZWN0b3JDU1NBZ2Vu
dDo6YnVpbGRBcnJheUZvclJ1bGVMaXN0KENTU1J1bGVMaXN0KiBydWxlTGlzdCkKK1Bhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NSdWxlPj4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JSdWxlTGlzdChD
U1NSdWxlTGlzdCogcnVsZUxpc3QpCiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPj4gcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5
cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxl
Pj4gcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NSdWxlPjo6Y3JlYXRlKCk7CiAgICAgaWYgKCFydWxlTGlzdCkKICAg
ICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
LCBzaXplID0gcnVsZUxpc3QtPmxlbmd0aCgpOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIENT
U1N0eWxlUnVsZSogcnVsZSA9IGFzQ1NTU3R5bGVSdWxlKHJ1bGVMaXN0LT5pdGVtKGkpKTsKLSAg
ICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+IHJ1bGVPYmplY3QgPSBidWls
ZE9iamVjdEZvclJ1bGUocnVsZSk7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDU1M6OkNTU1J1bGU+IHJ1bGVPYmplY3QgPSBidWlsZE9iamVjdEZvclJ1bGUocnVsZSk7
CiAgICAgICAgIGlmICghcnVsZU9iamVjdCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICByZXN1bHQtPmFkZEl0ZW0ocnVsZU9iamVjdCk7CkBAIC0xMzEzLDE4ICsxMzE0LDE4IEBAIFBh
c3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+PiBJ
bnNwZWN0b3JDU1NBZ2VudDo6YnVpCiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAK
LVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRj
aD4+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0
IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBtYXRjaGVkUnVsZXMsIFN0eWxlUmVzb2x2
ZXImIHN0eWxlUmVzb2x2ZXIsIEVsZW1lbnQqIGVsZW1lbnQpCitQYXNzUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UnVsZU1h
dGNoPj4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QoY29u
c3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIG1hdGNoZWRSdWxlcywgU3R5bGVSZXNv
bHZlciYgc3R5bGVSZXNvbHZlciwgRWxlbWVudCogZWxlbWVudCkKIHsKLSAgICBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRjaD4+IHJlc3VsdCA9IFR5
cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g+OjpjcmVhdGUoKTsK
KyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g+PiByZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRjaD46OmNyZWF0ZSgp
OwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1hdGNoZWRSdWxlcy5zaXplKCk7ICsr
aSkgewogICAgICAgICBpZiAoIW1hdGNoZWRSdWxlc1tpXS0+aXNTdHlsZVJ1bGUoKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICBTdHlsZVJ1bGUqIG1hdGNoZWRTdHlsZVJ1bGUgPSBz
dGF0aWNfY2FzdDxTdHlsZVJ1bGUqPihtYXRjaGVkUnVsZXNbaV0uZ2V0KCkpOwotICAgICAgICBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gcnVsZU9iamVjdCA9IGJ1aWxkT2JqZWN0
Rm9yUnVsZShtYXRjaGVkU3R5bGVSdWxlLCBzdHlsZVJlc29sdmVyKTsKKyAgICAgICAgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gcnVsZU9iamVjdCA9IGJ1aWxk
T2JqZWN0Rm9yUnVsZShtYXRjaGVkU3R5bGVSdWxlLCBzdHlsZVJlc29sdmVyKTsKICAgICAgICAg
aWYgKCFydWxlT2JqZWN0KQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIFJlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4gbWF0Y2hpbmdTZWxlY3RvcnMgPSBUeXBlQnVpbGRlcjo6
QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTxpbnQ+PiBtYXRjaGluZ1NlbGVjdG9ycyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFycmF5PGludD46OmNyZWF0ZSgpOwogICAgICAgICBjb25zdCBDU1NTZWxlY3Rvckxpc3Qm
IHNlbGVjdG9yTGlzdCA9IG1hdGNoZWRTdHlsZVJ1bGUtPnNlbGVjdG9yTGlzdCgpOwogICAgICAg
ICBsb25nIGluZGV4ID0gMDsKICAgICAgICAgZm9yIChjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0
b3IgPSBzZWxlY3Rvckxpc3QuZmlyc3QoKTsgc2VsZWN0b3I7IHNlbGVjdG9yID0gQ1NTU2VsZWN0
b3JMaXN0OjpuZXh0KHNlbGVjdG9yKSkgewpAQCAtMTMzMyw3ICsxMzM0LDcgQEAgUGFzc1JlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6UnVsZU1hdGNoPj4gSW5zcGVj
dG9yQ1NTQWdlbnQ6OmIKICAgICAgICAgICAgICAgICBtYXRjaGluZ1NlbGVjdG9ycy0+YWRkSXRl
bShpbmRleCk7CiAgICAgICAgICAgICArK2luZGV4OwogICAgICAgICB9Ci0gICAgICAgIFJlZlB0
cjxUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g+IG1hdGNoID0gVHlwZUJ1aWxkZXI6OkNTUzo6
UnVsZU1hdGNoOjpjcmVhdGUoKQorICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q1NTOjpSdWxlTWF0Y2g+IG1hdGNoID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpS
dWxlTWF0Y2g6OmNyZWF0ZSgpCiAgICAgICAgICAgICAuc2V0UnVsZShydWxlT2JqZWN0KQogICAg
ICAgICAgICAgLnNldE1hdGNoaW5nU2VsZWN0b3JzKG1hdGNoaW5nU2VsZWN0b3JzKTsKICAgICAg
ICAgcmVzdWx0LT5hZGRJdGVtKG1hdGNoKTsKQEAgLTEzNDIsNyArMTM0Myw3IEBAIFBhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRjaD4+IEluc3Bl
Y3RvckNTU0FnZW50OjpiCiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvckNTU0FnZW50OjpidWls
ZE9iamVjdEZvckF0dHJpYnV0ZXNTdHlsZShFbGVtZW50KiBlbGVtZW50KQorUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6
YnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5bGUoRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBp
ZiAoIWVsZW1lbnQtPmlzU3R5bGVkRWxlbWVudCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEz
NTksMjIgKzEzNjAsMjIgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4g
SW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQXR0cmlidXQKICAgICByZXR1cm4gaW5z
cGVjdG9yU3R5bGUtPmJ1aWxkT2JqZWN0Rm9yU3R5bGUoKTsKIH0KIAotUGFzc1JlZlB0cjxUeXBl
QnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uPj4gSW5zcGVjdG9yQ1NTQWdl
bnQ6OmJ1aWxkQXJyYXlGb3JSZWdpb25zKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgUGFzc1Jl
ZlB0cjxOb2RlTGlzdD4gcmVnaW9uTGlzdCwgaW50IGRvY3VtZW50Tm9kZUlkKQorUGFzc1JlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6OlJlZ2lvbj4+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yUmVnaW9ucyhFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IHJlZ2lvbkxpc3QsIGlu
dCBkb2N1bWVudE5vZGVJZCkKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVC
dWlsZGVyOjpDU1M6OlJlZ2lvbj4+IHJlZ2lvbnMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1
aWxkZXI6OkNTUzo6UmVnaW9uPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uPj4gcmVn
aW9ucyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6UmVnaW9uPjo6Y3JlYXRlKCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcmVnaW9uTGlzdC0+bGVuZ3RoKCk7ICsraSkgewotICAgICAgICBUeXBlQnVpbGRlcjo6Q1NT
OjpSZWdpb246OlJlZ2lvbk92ZXJzZXQ6OkVudW0gcmVnaW9uT3ZlcnNldDsKKyAgICAgICAgSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb246OlJlZ2lvbk92ZXJzZXQ6OkVudW0gcmVn
aW9uT3ZlcnNldDsKIAogICAgICAgICBzd2l0Y2ggKHRvRWxlbWVudChyZWdpb25MaXN0LT5pdGVt
KGkpKS0+cmVuZGVyUmVnaW9uKCktPnJlZ2lvbk92ZXJzZXRTdGF0ZSgpKSB7CiAgICAgICAgIGNh
c2UgUmVnaW9uRml0OgotICAgICAgICAgICAgcmVnaW9uT3ZlcnNldCA9IFR5cGVCdWlsZGVyOjpD
U1M6OlJlZ2lvbjo6UmVnaW9uT3ZlcnNldDo6Rml0OworICAgICAgICAgICAgcmVnaW9uT3ZlcnNl
dCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uOjpSZWdpb25PdmVyc2V0OjpG
aXQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBSZWdpb25FbXB0eToKLSAgICAg
ICAgICAgIHJlZ2lvbk92ZXJzZXQgPSBUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb246OlJlZ2lvbk92
ZXJzZXQ6OkVtcHR5OworICAgICAgICAgICAgcmVnaW9uT3ZlcnNldCA9IEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6UmVnaW9uOjpSZWdpb25PdmVyc2V0OjpFbXB0eTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFJlZ2lvbk92ZXJzZXQ6Ci0gICAgICAgICAgICByZWdpb25P
dmVyc2V0ID0gVHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uOjpSZWdpb25PdmVyc2V0OjpPdmVyc2V0
OworICAgICAgICAgICAgcmVnaW9uT3ZlcnNldCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNT
Uzo6UmVnaW9uOjpSZWdpb25PdmVyc2V0OjpPdmVyc2V0OwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgUmVnaW9uVW5kZWZpbmVkOgogICAgICAgICAgICAgY29udGludWU7CkBAIC0x
MzgzLDcgKzEzODQsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRl
cjo6Q1NTOjpSZWdpb24+PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbAogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6UmVn
aW9uPiByZWdpb24gPSBUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb246OmNyZWF0ZSgpCisgICAgICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbj4gcmVnaW9uID0gSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb246OmNyZWF0ZSgpCiAgICAgICAgICAgICAu
c2V0UmVnaW9uT3ZlcnNldChyZWdpb25PdmVyc2V0KQogICAgICAgICAgICAgLy8gZG9jdW1lbnRO
b2RlSWQgd2FzIHByZXZpb3VzbHkgYXNzZXJ0ZWQKICAgICAgICAgICAgIC5zZXROb2RlSWQobV9k
b21BZ2VudC0+cHVzaE5vZGVUb0Zyb250ZW5kKGVycm9yU3RyaW5nLCBkb2N1bWVudE5vZGVJZCwg
cmVnaW9uTGlzdC0+aXRlbShpKSkpOwpAQCAtMTM5NCwxNyArMTM5NSwxNyBAQCBQYXNzUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb24+PiBJbnNwZWN0b3JD
U1NBZ2VudDo6YnVpbAogICAgIHJldHVybiByZWdpb25zLnJlbGVhc2UoKTsKIH0KIAotUGFzc1Jl
ZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+IEluc3BlY3RvckNTU0FnZW50OjpidWls
ZE9iamVjdEZvck5hbWVkRmxvdyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFdlYktpdE5hbWVk
Rmxvdyogd2Via2l0TmFtZWRGbG93LCBpbnQgZG9jdW1lbnROb2RlSWQpCitQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93PiBJbnNwZWN0b3JDU1NBZ2VudDo6
YnVpbGRPYmplY3RGb3JOYW1lZEZsb3coRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBXZWJLaXRO
YW1lZEZsb3cqIHdlYmtpdE5hbWVkRmxvdywgaW50IGRvY3VtZW50Tm9kZUlkKQogewogICAgIFJl
ZlB0cjxOb2RlTGlzdD4gY29udGVudExpc3QgPSB3ZWJraXROYW1lZEZsb3ctPmdldENvbnRlbnQo
KTsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PGludD4+IGNvbnRlbnQgPSBUeXBlQnVp
bGRlcjo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkFycmF5PGludD4+IGNvbnRlbnQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJh
eTxpbnQ+OjpjcmVhdGUoKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb250ZW50
TGlzdC0+bGVuZ3RoKCk7ICsraSkgewogICAgICAgICAvLyBkb2N1bWVudE5vZGVJZCB3YXMgcHJl
dmlvdXNseSBhc3NlcnRlZAogICAgICAgICBjb250ZW50LT5hZGRJdGVtKG1fZG9tQWdlbnQtPnB1
c2hOb2RlVG9Gcm9udGVuZChlcnJvclN0cmluZywgZG9jdW1lbnROb2RlSWQsIGNvbnRlbnRMaXN0
LT5pdGVtKGkpKSk7CiAgICAgfQogCi0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVk
Rmxvdz4gbmFtZWRGbG93ID0gVHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93OjpjcmVhdGUoKQor
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4gbmFtZWRG
bG93ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c6OmNyZWF0ZSgpCiAg
ICAgICAgIC5zZXREb2N1bWVudE5vZGVJZChkb2N1bWVudE5vZGVJZCkKICAgICAgICAgLnNldE5h
bWUod2Via2l0TmFtZWRGbG93LT5uYW1lKCkuc3RyaW5nKCkpCiAgICAgICAgIC5zZXRPdmVyc2V0
KHdlYmtpdE5hbWVkRmxvdy0+b3ZlcnNldCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ1NTQWdlbnQuaAppbmRleCA5ZDNiNDBkLi5hMTZmZWM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaApAQCAtMjcsMTIgKzI3LDEyIEBA
CiAKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBv
bGljeS5oIgotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50Lmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yU3R5bGVTaGVldC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZh
bHVlcy5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5Q29udGV4dC5oIgotCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNjQsNyArNjQsNyBAQCBjbGFzcyBDaGFuZ2VS
ZWdpb25PdmVyc2V0VGFzazsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCiBjbGFzcyBJbnNwZWN0
b3JDU1NBZ2VudAotICAgIDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudAorICAgIDogcHVibGlj
IEluc3BlY3RvckFnZW50QmFzZQogICAgICwgcHVibGljIEluc3BlY3RvckRPTUFnZW50OjpET01M
aXN0ZW5lcgogICAgICwgcHVibGljIEluc3BlY3RvckNTU0JhY2tlbmREaXNwYXRjaGVySGFuZGxl
cgogICAgICwgcHVibGljIEluc3BlY3RvclN0eWxlU2hlZXQ6Okxpc3RlbmVyIHsKQEAgLTk2LDcg
Kzk2LDcgQEAgcHVibGljOgogICAgIH5JbnNwZWN0b3JDU1NBZ2VudCgpOwogCiAgICAgYm9vbCBm
b3JjZVBzZXVkb1N0YXRlKEVsZW1lbnQqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSk7Ci0gICAg
dmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc2NhcmRBZ2VudCgpOwogICAgIHZp
cnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKQEAgLTExMiwyNiArMTEyLDI2IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRpZFJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoRG9jdW1l
bnQqLCBXZWJLaXROYW1lZEZsb3cqLCBOb2RlKiBjb250ZW50RWxlbWVudCwgTm9kZSogbmV4dENv
bnRlbnRFbGVtZW50ID0gbnVsbHB0cik7CiAgICAgdm9pZCBkaWRVbnJlZ2lzdGVyTmFtZWRGbG93
Q29udGVudEVsZW1lbnQoRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cqLCBOb2RlKiBjb250ZW50
RWxlbWVudCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJy
b3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+Jik7Ci0gICAgdmlydHVhbCB2b2lk
IGdldElubGluZVN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiBpbmxpbmVTdHlsZSwgUmVmUHRyPFR5cGVCdWls
ZGVyOjpDU1M6OkNTU1N0eWxlPiYgYXR0cmlidXRlcyk7Ci0gICAgdmlydHVhbCB2b2lkIGdldE1h
dGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgYm9vbCog
aW5jbHVkZVBzZXVkbywgY29uc3QgYm9vbCogaW5jbHVkZUluaGVyaXRlZCwgUmVmUHRyPFR5cGVC
dWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g+PiYgbWF0Y2hlZENTU1J1
bGVzLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlBzZXVkb0lk
TWF0Y2hlcz4+JiBwc2V1ZG9JZE1hdGNoZXMsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlw
ZUJ1aWxkZXI6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4+JiBpbmhlcml0ZWRFbnRyaWVzKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0QWxsU3R5bGVTaGVldHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+
PiYgc3R5bGVTaGVldEluZm9zKTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U3R5bGVTaGVldChFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTU3R5bGVTaGVldEJvZHk+JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCBnZXRD
b21wdXRlZFN0eWxlRm9yTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNT
U0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+Jik7CisgICAgdmlydHVhbCB2b2lkIGdldElubGluZVN0
eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4mIGlubGluZVN0eWxlLCBSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4mIGF0dHJpYnV0ZXMpOworICAgIHZpcnR1YWwg
dm9pZCBnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNv
bnN0IGJvb2wqIGluY2x1ZGVQc2V1ZG8sIGNvbnN0IGJvb2wqIGluY2x1ZGVJbmhlcml0ZWQsIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDU1M6OlJ1bGVNYXRjaD4+JiBtYXRjaGVkQ1NTUnVsZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlBzZXVkb0lkTWF0
Y2hlcz4+JiBwc2V1ZG9JZE1hdGNoZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpB
cnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+PiYg
aW5oZXJpdGVkRW50cmllcyk7CisgICAgdmlydHVhbCB2b2lkIGdldEFsbFN0eWxlU2hlZXRzKEVy
cm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4+JiBzdHlsZVNoZWV0SW5m
b3MpOworICAgIHZpcnR1YWwgdm9pZCBnZXRTdHlsZVNoZWV0KEVycm9yU3RyaW5nKiwgY29uc3Qg
U3RyaW5nJiBzdHlsZVNoZWV0SWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
OkNTU1N0eWxlU2hlZXRCb2R5PiYgcmVzdWx0KTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0U3R5bGVT
aGVldFRleHQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgU3RyaW5n
KiByZXN1bHQpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBjb25zdCBTdHJpbmcmIHRleHQpOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRTdHlsZVRleHQoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiYgc3R5bGVJZCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9w
ZXJ0eVRleHQoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgc3R5
bGVJZCwgaW50IHByb3BlcnR5SW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBvdmVyd3Jp
dGUsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4mIHJlc3VsdCk7Ci0gICAgdmly
dHVhbCB2b2lkIHRvZ2dsZVByb3BlcnR5KEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4mIHN0eWxlSWQsIGludCBwcm9wZXJ0eUluZGV4LCBib29sIGRpc2FibGUsIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4mIHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFJ1bGVTZWxlY3RvcihFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+JiBydWxlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIFJlZlB0cjxUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkUnVsZShFcnJv
clN0cmluZyosIGludCBjb250ZXh0Tm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2b2lk
IGdldFN1cHBvcnRlZENTU1Byb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5SW5mbz4+JiByZXN1bHQpOwot
ICAgIHZpcnR1YWwgdm9pZCBmb3JjZVBzZXVkb1N0YXRlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJ
ZCwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgZm9yY2VkUHNldWRvQ2xhc3Nlcyk7Ci0g
ICAgdmlydHVhbCB2b2lkIGdldE5hbWVkRmxvd0NvbGxlY3Rpb24oRXJyb3JTdHJpbmcqLCBpbnQg
ZG9jdW1lbnROb2RlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNT
Uzo6TmFtZWRGbG93Pj4mIHJlc3VsdCk7CisgICAgdmlydHVhbCB2b2lkIHNldFN0eWxlVGV4dChF
cnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIHN0
eWxlSWQsIGNvbnN0IFN0cmluZyYgdGV4dCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9wZXJ0eVRl
eHQoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
JiBzdHlsZUlkLCBpbnQgcHJvcGVydHlJbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIG92
ZXJ3cml0ZSwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiBy
ZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVQcm9wZXJ0eShFcnJvclN0cmluZyosIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIHN0eWxlSWQsIGludCBwcm9w
ZXJ0eUluZGV4LCBib29sIGRpc2FibGUsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6OkNTU1N0eWxlPiYgcmVzdWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UnVsZVNlbGVjdG9y
KEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYg
cnVsZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkUnVsZShF
cnJvclN0cmluZyosIGludCBjb250ZXh0Tm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZ2V0U3VwcG9ydGVkQ1NTUHJvcGVydGllcyhFcnJvclN0cmluZyosIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDU1M6OkNTU1Byb3BlcnR5SW5mbz4+JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCBmb3Jj
ZVBzZXVkb1N0YXRlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiBmb3JjZWRQc2V1ZG9DbGFzc2VzKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZ2V0TmFtZWRGbG93Q29sbGVjdGlvbihFcnJvclN0cmluZyosIGludCBkb2N1bWVudE5v
ZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93Pj4mIHJlc3VsdCk7CiAKICAgICB2aXJ0dWFsIHZvaWQg
c3RhcnRTZWxlY3RvclByb2ZpbGVyKEVycm9yU3RyaW5nKik7Ci0gICAgdmlydHVhbCB2b2lkIHN0
b3BTZWxlY3RvclByb2ZpbGVyKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6
OlNlbGVjdG9yUHJvZmlsZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFNlbGVjdG9yUHJvZmls
ZXIoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxl
Y3RvclByb2ZpbGU+Jik7CiAKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVj
dG9yUHJvZmlsZT4gc3RvcFNlbGVjdG9yUHJvZmlsZXJJbXBsKEVycm9yU3RyaW5nKiwgYm9vbCBu
ZWVkUHJvZmlsZSk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
OlNlbGVjdG9yUHJvZmlsZT4gc3RvcFNlbGVjdG9yUHJvZmlsZXJJbXBsKEVycm9yU3RyaW5nKiwg
Ym9vbCBuZWVkUHJvZmlsZSk7CiAgICAgdm9pZCB3aWxsTWF0Y2hSdWxlKFN0eWxlUnVsZSosIElu
c3BlY3RvckNTU09NV3JhcHBlcnMmLCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uJik7CiAg
ICAgdm9pZCBkaWRNYXRjaFJ1bGUoYm9vbCk7CiAgICAgdm9pZCB3aWxsUHJvY2Vzc1J1bGUoU3R5
bGVSdWxlKiwgU3R5bGVSZXNvbHZlciYpOwpAQCAtMTU4LDIwICsxNTgsMjAgQEAgcHJpdmF0ZToK
ICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUqIGFzSW5zcGVjdG9yU3R5bGVT
aGVldChFbGVtZW50KiBlbGVtZW50KTsKICAgICBFbGVtZW50KiBlbGVtZW50Rm9ySWQoRXJyb3JT
dHJpbmcqLCBpbnQgbm9kZUlkKTsKICAgICBpbnQgZG9jdW1lbnROb2RlV2l0aFJlcXVlc3RlZEZs
b3dzSWQoRG9jdW1lbnQqKTsKLSAgICB2b2lkIGNvbGxlY3RTdHlsZVNoZWV0cyhDU1NTdHlsZVNo
ZWV0KiwgVHlwZUJ1aWxkZXI6OkFycmF5PFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0
eWxlU2hlZXRIZWFkZXI+Kik7CisgICAgdm9pZCBjb2xsZWN0U3R5bGVTaGVldHMoQ1NTU3R5bGVT
aGVldCosIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4qKTsKIAogICAgIEluc3BlY3RvclN0eWxlU2hl
ZXQqIGJpbmRTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqKTsKICAgICBJbnNwZWN0b3JTdHlsZVNo
ZWV0KiB2aWFJbnNwZWN0b3JTdHlsZVNoZWV0KERvY3VtZW50KiwgYm9vbCBjcmVhdGVJZkFic2Vu
dCk7CiAgICAgSW5zcGVjdG9yU3R5bGVTaGVldCogYXNzZXJ0U3R5bGVTaGVldEZvcklkKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJik7Ci0gICAgVHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVl
dE9yaWdpbjo6RW51bSBkZXRlY3RPcmlnaW4oQ1NTU3R5bGVTaGVldCogcGFnZVN0eWxlU2hlZXQs
IERvY3VtZW50KiBvd25lckRvY3VtZW50KTsKKyAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6OlN0eWxlU2hlZXRPcmlnaW46OkVudW0gZGV0ZWN0T3JpZ2luKENTU1N0eWxlU2hlZXQqIHBh
Z2VTdHlsZVNoZWV0LCBEb2N1bWVudCogb3duZXJEb2N1bWVudCk7CiAKLSAgICBQYXNzUmVmUHRy
PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9yUnVsZShTdHlsZVJ1bGUq
LCBTdHlsZVJlc29sdmVyJik7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NS
dWxlPiBidWlsZE9iamVjdEZvclJ1bGUoQ1NTU3R5bGVSdWxlKik7Ci0gICAgUGFzc1JlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4+IGJ1aWxkQXJyYXlG
b3JSdWxlTGlzdChDU1NSdWxlTGlzdCopOwotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRjaD4+IGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVs
ZUxpc3QoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mLCBTdHlsZVJlc29sdmVy
JiwgRWxlbWVudCopOwotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+
IGJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRlc1N0eWxlKEVsZW1lbnQqKTsKLSAgICBQYXNzUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb24+PiBidWlsZEFycmF5
Rm9yUmVnaW9ucyhFcnJvclN0cmluZyosIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+LCBpbnQgZG9jdW1l
bnROb2RlSWQpOwotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93PiBi
dWlsZE9iamVjdEZvck5hbWVkRmxvdyhFcnJvclN0cmluZyosIFdlYktpdE5hbWVkRmxvdyosIGlu
dCBkb2N1bWVudE5vZGVJZCk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9yUnVsZShTdHlsZVJ1bGUqLCBTdHlsZVJlc29s
dmVyJik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1
bGU+IGJ1aWxkT2JqZWN0Rm9yUnVsZShDU1NTdHlsZVJ1bGUqKTsKKyAgICBQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTUnVsZT4+IGJ1aWxkQXJyYXlGb3JSdWxlTGlzdChDU1NSdWxlTGlzdCopOworICAgIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q1NTOjpSdWxlTWF0Y2g+PiBidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0IFZl
Y3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiwgU3R5bGVSZXNvbHZlciYsIEVsZW1lbnQqKTsK
KyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IGJ1
aWxkT2JqZWN0Rm9yQXR0cmlidXRlc1N0eWxlKEVsZW1lbnQqKTsKKyAgICBQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6
UmVnaW9uPj4gYnVpbGRBcnJheUZvclJlZ2lvbnMoRXJyb3JTdHJpbmcqLCBQYXNzUmVmUHRyPE5v
ZGVMaXN0PiwgaW50IGRvY3VtZW50Tm9kZUlkKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93PiBidWlsZE9iamVjdEZvck5hbWVkRmxvdyhFcnJv
clN0cmluZyosIFdlYktpdE5hbWVkRmxvdyosIGludCBkb2N1bWVudE5vZGVJZCk7CiAKICAgICAv
LyBJbnNwZWN0b3JET01BZ2VudDo6RE9NTGlzdGVuZXIgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVtb3ZlRG9jdW1lbnQoRG9jdW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCmluZGV4IGY5ZjcyZjIuLjk0
MzA5OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52
YXNBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZh
c0FnZW50LmNwcApAQCAtNDcsMjIgKzQ3LDI0IEBACiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAj
aW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiU2NyaXB0
T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRT
dGF0ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgogCi11c2luZyBXZWJD
b3JlOjpUeXBlQnVpbGRlcjo6QXJyYXk7Ci11c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6Q2Fu
dmFzOjpSZXNvdXJjZUlkOwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVz
b3VyY2VJbmZvOwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VT
dGF0ZTsKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nOwotdXNp
bmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZDsKLXVzaW5nIFdlYkNv
cmU6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpGcmFtZUlkOwordXNpbmcgSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk7Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlJl
c291cmNlSWQ7Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNl
SW5mbzsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VTdGF0
ZTsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2c7Cit1c2lu
ZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQ7Cit1c2luZyBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpGcmFtZUlkOworCit1c2luZyBuYW1lc3BhY2Ug
SW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEluc3BlY3RvckNhbnZhc0FnZW50
OjpJbnNwZWN0b3JDYW52YXNBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVND
SUlMaXRlcmFsKCJDYW52YXMiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3Rv
ckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkNhbnZhcyIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQog
ICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9lbmFibGVkKGZhbHNlKQpAQCAtNzMs
NyArNzUsNyBAQCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6fkluc3BlY3RvckNhbnZhc0FnZW50KCkK
IHsKIH0KIAotdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckNh
bnZhc0FnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JDYW52YXNGcm9udGVuZERpc3BhdGNoZXI+KGZyb250
ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckNhbnZhc0Jh
Y2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpAQCAtMTc4
LDI3ICsxODAsMjcgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6Z2V0UmVzb3VyY2VTdGF0
ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFRyYWMKICAgICAgICAgbW9kdWxlLnJl
c291cmNlU3RhdGUoZXJyb3JTdHJpbmcsIHRyYWNlTG9nSWQsIHJlc291cmNlSWQsICZyZXN1bHQp
OwogfQogCi1TY3JpcHRPYmplY3QgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OndyYXBDYW52YXMyRFJl
bmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24oY29uc3QgU2NyaXB0T2JqZWN0JiBjb250
ZXh0KQorRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IEluc3BlY3RvckNhbnZhc0FnZW50Ojp3cmFw
Q2FudmFzMkRSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKGNvbnN0IERlcHJlY2F0
ZWQ6OlNjcmlwdE9iamVjdCYgY29udGV4dCkKIHsKICAgICBFcnJvclN0cmluZyBlcnJvcjsKICAg
ICBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZSBtb2R1bGUgPSBpbmplY3RlZFNjcmlwdENhbnZh
c01vZHVsZSgmZXJyb3IsIGNvbnRleHQpOwogICAgIGlmIChtb2R1bGUuaGFzTm9WYWx1ZSgpKQot
ICAgICAgICByZXR1cm4gU2NyaXB0T2JqZWN0KCk7CisgICAgICAgIHJldHVybiBEZXByZWNhdGVk
OjpTY3JpcHRPYmplY3QoKTsKICAgICByZXR1cm4gbm90aWZ5UmVuZGVyaW5nQ29udGV4dFdhc1dy
YXBwZWQobW9kdWxlLndyYXBDYW52YXMyRENvbnRleHQoY29udGV4dCkpOwogfQogCiAjaWYgRU5B
QkxFKFdFQkdMKQotU2NyaXB0T2JqZWN0IEluc3BlY3RvckNhbnZhc0FnZW50Ojp3cmFwV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKGNvbnN0IFNjcmlwdE9iamVjdCYgZ2xD
b250ZXh0KQorRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IEluc3BlY3RvckNhbnZhc0FnZW50Ojp3
cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKGNvbnN0IERlcHJlY2F0
ZWQ6OlNjcmlwdE9iamVjdCYgZ2xDb250ZXh0KQogewogICAgIEVycm9yU3RyaW5nIGVycm9yOwog
ICAgIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlIG1vZHVsZSA9IGluamVjdGVkU2NyaXB0Q2Fu
dmFzTW9kdWxlKCZlcnJvciwgZ2xDb250ZXh0KTsKICAgICBpZiAobW9kdWxlLmhhc05vVmFsdWUo
KSkKLSAgICAgICAgcmV0dXJuIFNjcmlwdE9iamVjdCgpOworICAgICAgICByZXR1cm4gRGVwcmVj
YXRlZDo6U2NyaXB0T2JqZWN0KCk7CiAgICAgcmV0dXJuIG5vdGlmeVJlbmRlcmluZ0NvbnRleHRX
YXNXcmFwcGVkKG1vZHVsZS53cmFwV2ViR0xDb250ZXh0KGdsQ29udGV4dCkpOwogfQogI2VuZGlm
CiAKLVNjcmlwdE9iamVjdCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6bm90aWZ5UmVuZGVyaW5nQ29u
dGV4dFdhc1dyYXBwZWQoY29uc3QgU2NyaXB0T2JqZWN0JiB3cmFwcGVkQ29udGV4dCkKK0RlcHJl
Y2F0ZWQ6OlNjcmlwdE9iamVjdCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6bm90aWZ5UmVuZGVyaW5n
Q29udGV4dFdhc1dyYXBwZWQoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiB3cmFwcGVk
Q29udGV4dCkKIHsKICAgICBBU1NFUlQobV9mcm9udGVuZERpc3BhdGNoZXIpOwogICAgIEpTQzo6
RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9IHdyYXBwZWRDb250ZXh0LnNjcmlwdFN0YXRlKCk7CkBA
IC0yMjQsMTMgKzIyNiwxMyBAQCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZSBJbnNwZWN0b3JD
YW52YXNBZ2VudDo6aW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUoRXJybwogICAgIHJldHVybiBt
b2R1bGU7CiB9CiAKLUluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlIEluc3BlY3RvckNhbnZhc0Fn
ZW50OjppbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGNvbnN0IFNjcmlwdE9iamVjdCYgc2NyaXB0T2JqZWN0KQorSW5qZWN0ZWRTY3JpcHRDYW52YXNN
b2R1bGUgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiBz
Y3JpcHRPYmplY3QpCiB7CiAgICAgaWYgKCFjaGVja0lzRW5hYmxlZChlcnJvclN0cmluZykpCiAg
ICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZSgpOwogICAgIGlmIChzY3Jp
cHRPYmplY3QuaGFzTm9WYWx1ZSgpKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IG9yaWdpbmFsIFNjcmlwdE9i
amVjdCBoYXMgbm8gdmFsdWUiOworICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJy
b3I6IG9yaWdpbmFsIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBoYXMgbm8gdmFsdWUiOwogICAg
ICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUoKTsKICAgICB9CiAgICAgcmV0
dXJuIGluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlKGVycm9yU3RyaW5nLCBzY3JpcHRPYmplY3Qu
c2NyaXB0U3RhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ2FudmFzQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
YW52YXNBZ2VudC5oCmluZGV4IDQ5ZDAzZTguLjI3ZDNlZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCkBAIC0zMywxNSArMzMsMjAgQEAK
IAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQu
aCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JGcm9udGVuZC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclR5cGVCdWlsZGVyLmgiCisj
aW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2Vi
VHlwZUJ1aWxkZXJzLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNl
IERlcHJlY2F0ZWQgeworY2xhc3MgU2NyaXB0T2JqZWN0OworfQorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEZyYW1lOwpAQCAtNDksMTEgKzU0LDEwIEBAIGNsYXNzIEluamVjdGVkU2Ny
aXB0Q2FudmFzTW9kdWxlOwogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3MgSW5z
cGVjdG9yUGFnZUFnZW50OwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKLWNsYXNzIFNjcmlw
dE9iamVjdDsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3Rv
ckNhbnZhc0FnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3Rv
ckNhbnZhc0JhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JDYW52YXNB
Z2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JDYW52YXNC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRy
PEluc3BlY3RvckNhbnZhc0FnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIEluamVjdGVkU2Ny
aXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgIHsKQEAgLTYxLDcgKzY1LDcg
QEAgcHVibGljOgogICAgIH0KICAgICB+SW5zcGVjdG9yQ2FudmFzQWdlbnQoKTsKIAotICAgIHZp
cnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciop
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZCgpIE9WRVJSSURFOwogCiAgICAgdm9pZCBmcmFtZU5hdmlnYXRlZChGcmFtZSopOwpAQCAtNjks
MzQgKzczLDM0IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEJlZ2luRnJhbWUoKTsKIAogICAgIC8v
IENhbGxlZCBmcm9tIEluc3BlY3RvckNhbnZhc0luc3RydW1lbnRhdGlvbi4KLSAgICBTY3JpcHRP
YmplY3Qgd3JhcENhbnZhczJEUmVuZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlvbihjb25z
dCBTY3JpcHRPYmplY3QmKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3Qgd3JhcENhbnZh
czJEUmVuZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlvbihjb25zdCBEZXByZWNhdGVkOjpT
Y3JpcHRPYmplY3QmKTsKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgU2NyaXB0T2JqZWN0IHdyYXBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24oY29uc3QgU2NyaXB0T2JqZWN0
Jik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IHdyYXBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRGb3JJbnN0cnVtZW50YXRpb24oY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0Jik7CiAj
ZW5kaWYKIAogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCiAgICAgdmlydHVhbCB2
b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9y
U3RyaW5nKik7Ci0gICAgdmlydHVhbCB2b2lkIGRyb3BUcmFjZUxvZyhFcnJvclN0cmluZyosIGNv
bnN0IFR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQmKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZHJvcFRyYWNlTG9nKEVycm9yU3RyaW5nKiwgY29uc3QgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q2FudmFzOjpUcmFjZUxvZ0lkJik7CiAgICAgdmlydHVhbCB2b2lkIGhhc1VuaW5zdHJ1bWVudGVk
Q2FudmFzZXMoRXJyb3JTdHJpbmcqLCBib29sKik7Ci0gICAgdmlydHVhbCB2b2lkIGNhcHR1cmVG
cmFtZShFcnJvclN0cmluZyosIGNvbnN0IFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpGcmFtZUlkKiwg
VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCopOwotICAgIHZpcnR1YWwgdm9pZCBzdGFy
dENhcHR1cmluZyhFcnJvclN0cmluZyosIGNvbnN0IFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpGcmFt
ZUlkKiwgVHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCopOwotICAgIHZpcnR1YWwgdm9p
ZCBzdG9wQ2FwdHVyaW5nKEVycm9yU3RyaW5nKiwgY29uc3QgVHlwZUJ1aWxkZXI6OkNhbnZhczo6
VHJhY2VMb2dJZCYpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUcmFjZUxvZyhFcnJvclN0cmluZyos
IGNvbnN0IFR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQmLCBjb25zdCBpbnQqLCBjb25z
dCBpbnQqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2c+Jik7Ci0gICAgdmly
dHVhbCB2b2lkIHJlcGxheVRyYWNlTG9nKEVycm9yU3RyaW5nKiwgY29uc3QgVHlwZUJ1aWxkZXI6
OkNhbnZhczo6VHJhY2VMb2dJZCYsIGludCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDYW52YXM6OlJl
c291cmNlU3RhdGU+Jik7Ci0gICAgdmlydHVhbCB2b2lkIGdldFJlc291cmNlSW5mbyhFcnJvclN0
cmluZyosIGNvbnN0IFR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlSWQmLCBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VJbmZvPiYpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRS
ZXNvdXJjZVN0YXRlKEVycm9yU3RyaW5nKiwgY29uc3QgVHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJh
Y2VMb2dJZCYsIGNvbnN0IFR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlSWQmLCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VTdGF0ZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQg
Y2FwdHVyZUZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
TmV0d29yazo6RnJhbWVJZCosIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VM
b2dJZCopOworICAgIHZpcnR1YWwgdm9pZCBzdGFydENhcHR1cmluZyhFcnJvclN0cmluZyosIGNv
bnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkZyYW1lSWQqLCBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3Rv
cENhcHR1cmluZyhFcnJvclN0cmluZyosIGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNh
bnZhczo6VHJhY2VMb2dJZCYpOworICAgIHZpcnR1YWwgdm9pZCBnZXRUcmFjZUxvZyhFcnJvclN0
cmluZyosIGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCYs
IGNvbnN0IGludCosIGNvbnN0IGludCosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
YW52YXM6OlRyYWNlTG9nPiYpOworICAgIHZpcnR1YWwgdm9pZCByZXBsYXlUcmFjZUxvZyhFcnJv
clN0cmluZyosIGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJ
ZCYsIGludCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VT
dGF0ZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVzb3VyY2VJbmZvKEVycm9yU3RyaW5nKiwg
Y29uc3QgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJjZUlkJiwgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VJbmZvPiYpOworICAgIHZp
cnR1YWwgdm9pZCBnZXRSZXNvdXJjZVN0YXRlKEVycm9yU3RyaW5nKiwgY29uc3QgSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFjZUxvZ0lkJiwgY29uc3QgSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJjZUlkJiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNhbnZhczo6UmVzb3VyY2VTdGF0ZT4mKTsKIAogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JD
YW52YXNBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKik7CiAKICAgICBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZSBp
bmplY3RlZFNjcmlwdENhbnZhc01vZHVsZShFcnJvclN0cmluZyosIEpTQzo6RXhlY1N0YXRlKik7
Ci0gICAgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUgaW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1
bGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTY3JpcHRPYmplY3QmKTsKKyAgICBJbmplY3RlZFNjcmlw
dENhbnZhc01vZHVsZSBpbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZShFcnJvclN0cmluZyosIGNv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYpOwogICAgIEluamVjdGVkU2NyaXB0Q2FudmFz
TW9kdWxlIGluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlKEVycm9yU3RyaW5nKiwgY29uc3QgU3Ry
aW5nJik7CiAKICAgICB2b2lkIGZpbmRGcmFtZXNXaXRoVW5pbnN0cnVtZW50ZWRDYW52YXNlcygp
OwogICAgIGJvb2wgY2hlY2tJc0VuYWJsZWQoRXJyb3JTdHJpbmcqKSBjb25zdDsKLSAgICBTY3Jp
cHRPYmplY3Qgbm90aWZ5UmVuZGVyaW5nQ29udGV4dFdhc1dyYXBwZWQoY29uc3QgU2NyaXB0T2Jq
ZWN0Jik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IG5vdGlmeVJlbmRlcmluZ0NvbnRl
eHRXYXNXcmFwcGVkKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYpOwogCiAgICAgSW5z
cGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXIq
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNhbnZhc0luc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0luc3RydW1lbnRhdGlvbi5oCmluZGV4IGQzZmRhNjAu
LjAxNTBjOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
YW52YXNJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ2FudmFzSW5zdHJ1bWVudGF0aW9uLmgKQEAgLTM0LDExICszNCwxMSBAQAogI2luY2x1
ZGUgIkluc3BlY3RvckNhbnZhc0FnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgotI2luY2x1ZGUgIlNj
cmlwdE9iamVjdC5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVNjcmlwdE9iamVjdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndyYXBDYW52YXMyRFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24oRG9jdW1lbnQq
IGRvY3VtZW50LCBjb25zdCBTY3JpcHRPYmplY3QmIGNvbnRleHQpCitEZXByZWNhdGVkOjpTY3Jp
cHRPYmplY3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3cmFwQ2FudmFzMkRSZW5kZXJpbmdD
b250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0T2JqZWN0JiBjb250ZXh0KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAg
ICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKSB7CkBAIC00OSwxMSArNDksMTEgQEAg
U2NyaXB0T2JqZWN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d3JhcENhbnZhczJEUmVuZGVy
aW5nQ29udGV4dEZvckluc3RydW1lbnQKICAgICBVTlVTRURfUEFSQU0oZG9jdW1lbnQpOwogICAg
IFVOVVNFRF9QQVJBTShjb250ZXh0KTsKICNlbmRpZgotICAgIHJldHVybiBTY3JpcHRPYmplY3Qo
KTsKKyAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KCk7CiB9CiAKICNpZiBFTkFC
TEUoV0VCR0wpCi1TY3JpcHRPYmplY3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3cmFwV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKERvY3VtZW50KiBkb2N1bWVudCwg
Y29uc3QgU2NyaXB0T2JqZWN0JiBnbENvbnRleHQpCitEZXByZWNhdGVkOjpTY3JpcHRPYmplY3Qg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5z
dHJ1bWVudGF0aW9uKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0
T2JqZWN0JiBnbENvbnRleHQpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2Vu
dHNGb3JEb2N1bWVudChkb2N1bWVudCkpIHsKQEAgLTY0LDcgKzY0LDcgQEAgU2NyaXB0T2JqZWN0
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d3JhcFdlYkdMUmVuZGVyaW5nQ29udGV4dEZvcklu
c3RydW1lbnRhdGkKICAgICBVTlVTRURfUEFSQU0oZG9jdW1lbnQpOwogICAgIFVOVVNFRF9QQVJB
TShnbENvbnRleHQpOwogI2VuZGlmCi0gICAgcmV0dXJuIFNjcmlwdE9iamVjdCgpOworICAgIHJl
dHVybiBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QoKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoV0VC
R0wpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGll
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5jcHAKaW5k
ZXggYzY3MjE0Mi4uYzMzZTZhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNsaWVudC5jcHAKQEAgLTM4LDcgKzM4LDkgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5j
bHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIK
LSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVl
Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oCmluZGV4IDQ0ZTdl
YTE2YS4uZGYzODlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGll
bnQuaApAQCAtMjcsNiArMjcsNyBAQAogI2lmbmRlZiBJbnNwZWN0b3JDbGllbnRfaAogI2RlZmlu
ZSBJbnNwZWN0b3JDbGllbnRfaAogCisjaW5jbHVkZSAiSW5zcGVjdG9yRm9yd2FyZGluZy5oIgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtMzQsNyArMzUsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyOwotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBQYWdlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCmluZGV4IGRhYTljNWIuLmRl
MTZmNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25z
b2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25z
b2xlQWdlbnQuY3BwCkBAIC00MywxNCArNDMsMTYgQEAKICNpbmNsdWRlICJTY3JpcHRDYWxsU3Rh
Y2suaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU2Ny
aXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlNj
cmlwdFByb2ZpbGVyLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0T2JqZWN0Lmg+CiAjaW5j
bHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5z
cGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBt
YXhpbXVtQ29uc29sZU1lc3NhZ2VzID0gMTAwMDsKQEAgLTU5LDcgKzYxLDcgQEAgc3RhdGljIGNv
bnN0IGludCBleHBpcmVDb25zb2xlTWVzc2FnZXNTdGVwID0gMTAwOwogaW50IEluc3BlY3RvckNv
bnNvbGVBZ2VudDo6c19lbmFibGVkQWdlbnRDb3VudCA9IDA7CiAKIEluc3BlY3RvckNvbnNvbGVB
Z2VudDo6SW5zcGVjdG9yQ29uc29sZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiQ29uc29sZSIpLCBpbnN0
cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgi
Q29uc29sZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9wcmV2aW91c01lc3NhZ2UoMCkK
ICAgICAsIG1fZXhwaXJlZENvbnNvbGVNZXNzYWdlQ291bnQoMCkKQEAgLTEyMiw3ICsxMjQsNyBA
QCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6cmVzZXQoKQogICAgIG1fY291bnRzLmNsZWFy
KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9y
Q29uc29sZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyPihm
cm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JDb25z
b2xlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CkBA
IC0zMjAsNyArMzIyLDcgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmFkZENvbnNvbGVN
ZXNzYWdlKFBhc3NPd25QdHI8Q29uc29sZU1lc3NhZ2U+IGNvbnNvbGUKIGNsYXNzIEluc3BlY3Rh
YmxlSGVhcE9iamVjdCA6IHB1YmxpYyBJbmplY3RlZFNjcmlwdEhvc3Q6Okluc3BlY3RhYmxlT2Jq
ZWN0IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBJbnNwZWN0YWJsZUhlYXBPYmplY3QoaW50IGhl
YXBPYmplY3RJZCkgOiBtX2hlYXBPYmplY3RJZChoZWFwT2JqZWN0SWQpIHsgfQotICAgIHZpcnR1
YWwgU2NyaXB0VmFsdWUgZ2V0KEpTQzo6RXhlY1N0YXRlKikKKyAgICB2aXJ0dWFsIERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlIGdldChKU0M6OkV4ZWNTdGF0ZSopCiAgICAgewogICAgICAgICByZXR1
cm4gU2NyaXB0UHJvZmlsZXI6Om9iamVjdEJ5SGVhcE9iamVjdElkKG1faGVhcE9iamVjdElkKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
c29sZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFn
ZW50LmgKaW5kZXggYzBmMGFkYy4uOTk0NTVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaApAQCAtMjksOCArMjksOSBAQAogCiAjaW5j
bHVkZSAiQ29uc29sZUFQSVR5cGVzLmgiCiAjaW5jbHVkZSAiQ29uc29sZVR5cGVzLmgiCi0jaW5j
bHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKKyNpbmNsdWRlICJJ
bnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTUyLDcgKzUz
LDcgQEAgY2xhc3MgU2NyaXB0UHJvZmlsZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7
CiAKLWNsYXNzIEluc3BlY3RvckNvbnNvbGVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdl
bnQsIHB1YmxpYyBJbnNwZWN0b3JDb25zb2xlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2Ns
YXNzIEluc3BlY3RvckNvbnNvbGVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1
YmxpYyBJbnNwZWN0b3JDb25zb2xlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JDb25zb2xlQWdlbnQpOwogcHVibGljOgogICAgIElu
c3BlY3RvckNvbnNvbGVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKik7CkBAIC02NCw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGVuYWJsZWQoKSBj
b25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KICAgICB2b2lkIHJlc2V0KCk7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
KSBPVkVSUklERTsKIAogICAgIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNl
LCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEpTQzo6
RXhlY1N0YXRlKiwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+LCB1bnNpZ25lZCBsb25nIHJl
cXVlc3RJZGVudGlmaWVyID0gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggZTIzZmUwNy4uNDM3NzU4MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNDIsNyAr
NDIsNiBAQAogI2luY2x1ZGUgIkluc3BlY3RvckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXJzLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yQ1NTQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDYW52YXNBZ2VudC5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgpAQCAtNzEsOCArNzAsMTAgQEAKICNpbmNsdWRlICJQ
YWdlRGVidWdnZXJBZ2VudC5oIgogI2luY2x1ZGUgIlBhZ2VSdW50aW1lQWdlbnQuaCIKICNpbmNs
dWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaD4K
KwordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCBh
NmUyZDdkLi5mNmU2ZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmgKQEAgLTMzLDEzICszMywxOCBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKIAotI2luY2x1ZGUgIkluc3BlY3RvckFnZW50UmVnaXN0cnkuaCIKLSNpbmNsdWRlICJJbnNw
ZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdp
c3RyeS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAorbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFzcyBJbnNwZWN0b3JPYmplY3Q7
CitjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CitjbGFzcyBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBET01XcmFwcGVy
V29ybGQ7CkBAIC00OCwxNSArNTMsMTIgQEAgY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3Mg
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3MgSW5zcGVjdG9yQWdlbnQ7CiBjbGFzcyBJbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcjsKIGNsYXNzIEluc3BlY3RvckNsaWVudDsKIGNsYXNzIEluc3BlY3RvckRPTUFnZW50Owog
Y2xhc3MgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDsKIGNsYXNzIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ7Ci1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CiBjbGFzcyBJbnNwZWN0b3JG
cm9udGVuZENsaWVudDsKIGNsYXNzIEluc3BlY3Rvck1lbW9yeUFnZW50OwotY2xhc3MgSW5zcGVj
dG9yT2JqZWN0OwogY2xhc3MgSW5zcGVjdG9yT3ZlcmxheTsKIGNsYXNzIEluc3BlY3RvclBhZ2VB
Z2VudDsKIGNsYXNzIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ7CkBAIC05NSw3ICs5Nyw3IEBAIHB1
YmxpYzoKICAgICBib29sIGhhc0xvY2FsRnJvbnRlbmQoKSBjb25zdDsKICAgICBib29sIGhhc1Jl
bW90ZUZyb250ZW5kKCkgY29uc3Q7CiAKLSAgICB2b2lkIGNvbm5lY3RGcm9udGVuZChJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqKTsKKyAgICB2b2lkIGNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6
Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCopOwogICAgIHZvaWQgZGlzY29ubmVjdEZyb250ZW5k
KCk7CiAgICAgdm9pZCBzZXRQcm9jZXNzSWQobG9uZyk7CiAKQEAgLTExMSw3ICsxMTMsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHNldEluZGljYXRpbmcoYm9vbCk7CiAKLSAgICBQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGUoKSBjb25zdDsK
KyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZv
ckhpZ2hsaWdodGVkTm9kZSgpIGNvbnN0OwogCiAgICAgYm9vbCBpc1VuZGVyVGVzdCgpOwogICAg
IHZvaWQgZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5n
JiBzY3JpcHQpOwpAQCAtMTU0LDEyICsxNTYsMTIgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JQ
cm9maWxlckFnZW50KiBtX3Byb2ZpbGVyQWdlbnQ7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKKyAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9pbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBPd25QdHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+
IG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7Ci0gICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKKyAgICBJbnNwZWN0b3I6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CiAgICAgUGFnZSogbV9w
YWdlOwogICAgIEluc3BlY3RvckNsaWVudCogbV9pbnNwZWN0b3JDbGllbnQ7Ci0gICAgSW5zcGVj
dG9yQWdlbnRSZWdpc3RyeSBtX2FnZW50czsKKyAgICBJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50
UmVnaXN0cnkgbV9hZ2VudHM7CiAgICAgYm9vbCBtX2lzVW5kZXJUZXN0OwogCiAjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmNwcAppbmRleCAzNzAzNDM4Li5lMWQyNzNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTEwMSw2ICsxMDEsOCBAQAog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMjEwLDcgKzIxMiw3IEBAIFN0cmlu
ZyBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhjb25zdCBFeGNlcHRpb25Db2RlJiBl
YykKIH0KIAogSW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFn
ZW50LCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zcGVj
dG9yT3ZlcmxheSogb3ZlcmxheSwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCi0gICAgOiBJbnNw
ZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJET00iKSwgaW5zdHJ1bWVudGluZ0FnZW50cykK
KyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkRPTSIpLCBpbnN0cnVtZW50
aW5nQWdlbnRzKQogICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQogICAgICwgbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9vdmVybGF5KG92
ZXJsYXkpCkBAIC0yMzAsNyArMjMyLDcgQEAgSW5zcGVjdG9yRE9NQWdlbnQ6On5JbnNwZWN0b3JE
T01BZ2VudCgpCiAgICAgQVNTRVJUKCFtX3NlYXJjaGluZ0Zvck5vZGUpOwogfQogCi12b2lkIElu
c3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
KiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJv
bnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNo
ZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3RvckRPTUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tl
bmREaXNwYXRjaGVyID0gSW5zcGVjdG9yRE9NQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNr
ZW5kRGlzcGF0Y2hlciwgdGhpcyk7CkBAIC00MjAsNyArNDIyLDcgQEAgRWxlbWVudCogSW5zcGVj
dG9yRE9NQWdlbnQ6OmFzc2VydEVkaXRhYmxlRWxlbWVudChFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIGludAogICAgIHJldHVybiBlbGVtZW50OwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50
OjpnZXREb2N1bWVudChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFJlZlB0cjxUeXBlQnVpbGRl
cjo6RE9NOjpOb2RlPiYgcm9vdCkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldERvY3VtZW50
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkRPTTo6Tm9kZT4mIHJvb3QpCiB7CiAgICAgbV9kb2N1bWVudFJlcXVlc3RlZCA9IHRydWU7CiAK
QEAgLTQ2MCw3ICs0NjIsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpwdXNoQ2hpbGROb2Rl
c1RvRnJvbnRlbmQoaW50IG5vZGVJZCwgaW50IGRlcHRoKQogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RE9NOjpOb2Rl
Pj4gY2hpbGRyZW4gPSBidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4obm9kZSwgZGVwdGgs
IG5vZGVNYXApOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+PiBjaGlsZHJlbiA9IGJ1aWxkQXJyYXlGb3JD
b250YWluZXJDaGlsZHJlbihub2RlLCBkZXB0aCwgbm9kZU1hcCk7CiAgICAgbV9mcm9udGVuZERp
c3BhdGNoZXItPnNldENoaWxkTm9kZXMobm9kZUlkLCBjaGlsZHJlbi5yZWxlYXNlKCkpOwogfQog
CkBAIC01MzgsNyArNTQwLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cXVlcnlTZWxlY3Rv
cihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnMKICAgICAgICAgKmVs
ZW1lbnRJZCA9IHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoZWxlbWVudC5nZXQoKSk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnF1ZXJ5U2VsZWN0b3JBbGwoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgUmVmUHRyPFR5cGVC
dWlsZGVyOjpBcnJheTxpbnQ+PiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cXVl
cnlTZWxlY3RvckFsbChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0
IFN0cmluZyYgc2VsZWN0b3JzLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8
aW50Pj4mIHJlc3VsdCkKIHsKICAgICBOb2RlKiBub2RlID0gYXNzZXJ0Tm9kZShlcnJvclN0cmlu
Zywgbm9kZUlkKTsKICAgICBpZiAoIW5vZGUpCkBAIC01NTUsNyArNTU3LDcgQEAgdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6cXVlcnlTZWxlY3RvckFsbChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGludCBub2RlSWQsIGMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHJlc3VsdCA9IFR5
cGVCdWlsZGVyOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKKyAgICByZXN1bHQgPSBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKIAogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBub2Rlcy0+bGVuZ3RoKCk7ICsraSkKICAgICAgICAgcmVzdWx0LT5hZGRJdGVt
KHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQobm9kZXMtPml0ZW0oaSkpKTsKQEAgLTU4Niw3ICs1ODgs
NyBAQCBpbnQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoTm9kZSog
bm9kZVRvUHVzaCkKICAgICAgICAgICAgIE93blB0cjxOb2RlVG9JZE1hcD4gbmV3TWFwID0gYWRv
cHRQdHIobmV3IE5vZGVUb0lkTWFwKTsKICAgICAgICAgICAgIGRhbmdsaW5nTWFwID0gbmV3TWFw
LmdldCgpOwogICAgICAgICAgICAgbV9kYW5nbGluZ05vZGVUb0lkTWFwcy5hcHBlbmQobmV3TWFw
LnJlbGVhc2UoKSk7Ci0gICAgICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVC
dWlsZGVyOjpET006Ok5vZGU+PiBjaGlsZHJlbiA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVp
bGRlcjo6RE9NOjpOb2RlPjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPj4g
Y2hpbGRyZW4gPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpET006Ok5vZGU+OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGNoaWxkcmVuLT5hZGRJ
dGVtKGJ1aWxkT2JqZWN0Rm9yTm9kZShub2RlLCAwLCBkYW5nbGluZ01hcCkpOwogICAgICAgICAg
ICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnNldENoaWxkTm9kZXMoMCwgY2hpbGRyZW4pOwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC04MTMsOSArODE1LDkgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6c2V0Tm9kZVZhbHVlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29u
c3QKICAgICBtX2RvbUVkaXRvci0+cmVwbGFjZVdob2xlVGV4dCh0b1RleHQobm9kZSksIHZhbHVl
LCBlcnJvclN0cmluZyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlz
dGVuZXJzRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0
IFN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxk
ZXI6OkRPTTo6RXZlbnRMaXN0ZW5lcj4+JiBsaXN0ZW5lcnNBcnJheSkKK3ZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6OmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006OkV2ZW50
TGlzdGVuZXI+PiYgbGlzdGVuZXJzQXJyYXkpCiB7Ci0gICAgbGlzdGVuZXJzQXJyYXkgPSBUeXBl
QnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRPTTo6RXZlbnRMaXN0ZW5lcj46OmNyZWF0ZSgp
OworICAgIGxpc3RlbmVyc0FycmF5ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpFdmVudExpc3RlbmVyPjo6Y3JlYXRlKCk7CiAgICAg
Tm9kZSogbm9kZSA9IGFzc2VydE5vZGUoZXJyb3JTdHJpbmcsIG5vZGVJZCk7CiAgICAgaWYgKCFu
b2RlKQogICAgICAgICByZXR1cm47CkBAIC05MjEsNyArOTIzLDcgQEAgdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6cGVyZm9ybVNlYXJjaChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZyYgd2gKICAgICAqcmVzdWx0Q291bnQgPSByZXN1bHRzVmVjdG9yLnNpemUoKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0U2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc2VhcmNoSWQsIGludCBmcm9tSW5kZXgsIGludCB0b0lu
ZGV4LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PGludD4+JiBub2RlSWRzKQordm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6Z2V0U2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cmluZyYgc2VhcmNoSWQsIGludCBmcm9tSW5kZXgsIGludCB0b0luZGV4LCBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4mIG5vZGVJZHMpCiB7CiAgICAg
U2VhcmNoUmVzdWx0czo6aXRlcmF0b3IgaXQgPSBtX3NlYXJjaFJlc3VsdHMuZmluZChzZWFyY2hJ
ZCk7CiAgICAgaWYgKGl0ID09IG1fc2VhcmNoUmVzdWx0cy5lbmQoKSkgewpAQCAtOTM1LDcgKzkz
Nyw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldFNlYXJjaFJlc3VsdHMoRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBub2RlSWRzID0gVHlwZUJ1aWxkZXI6OkFycmF5PGludD46OmNyZWF0ZSgpOworICAgIG5v
ZGVJZHMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKICAg
ICBmb3IgKGludCBpID0gZnJvbUluZGV4OyBpIDwgdG9JbmRleDsgKytpKQogICAgICAgICBub2Rl
SWRzLT5hZGRJdGVtKHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoKGl0LT52YWx1ZSlbaV0uZ2V0KCkp
KTsKIH0KQEAgLTEyMTIsNyArMTIxNCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldEZp
bGVJbnB1dEZpbGVzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwKICAgICBl
bGVtZW50LT5zZXRGaWxlcyhmaWxlTGlzdCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OnJlc29sdmVOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3Qg
U3RyaW5nKiBjb25zdCBvYmplY3RHcm91cCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpS
ZW1vdGVPYmplY3Q+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZXNvbHZlTm9k
ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyogY29u
c3Qgb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpS
ZW1vdGVPYmplY3Q+JiByZXN1bHQpCiB7CiAgICAgU3RyaW5nIG9iamVjdEdyb3VwTmFtZSA9IG9i
amVjdEdyb3VwID8gKm9iamVjdEdyb3VwIDogIiI7CiAgICAgTm9kZSogbm9kZSA9IG5vZGVGb3JJ
ZChub2RlSWQpOwpAQCAtMTIyMCw3ICsxMjIyLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
cmVzb2x2ZU5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdAog
ICAgICAgICAqZXJyb3JTdHJpbmcgPSAiTm8gbm9kZSB3aXRoIGdpdmVuIGlkIGZvdW5kIjsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJl
bW90ZU9iamVjdD4gb2JqZWN0ID0gcmVzb2x2ZU5vZGUobm9kZSwgb2JqZWN0R3JvdXBOYW1lKTsK
KyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0
PiBvYmplY3QgPSByZXNvbHZlTm9kZShub2RlLCBvYmplY3RHcm91cE5hbWUpOwogICAgIGlmICgh
b2JqZWN0KSB7CiAgICAgICAgICplcnJvclN0cmluZyA9ICJOb2RlIHdpdGggZ2l2ZW4gaWQgZG9l
cyBub3QgYmVsb25nIHRvIHRoZSBkb2N1bWVudCI7CiAgICAgICAgIHJldHVybjsKQEAgLTEyMjgs
NyArMTIzMCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlc29sdmVOb2RlKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QKICAgICByZXN1bHQgPSBvYmplY3Q7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldEF0dHJpYnV0ZXMoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmlu
Zz4+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRBdHRyaWJ1dGVzKEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkFycmF5PFN0cmluZz4+JiByZXN1bHQpCiB7CiAgICAgRWxlbWVudCogZWxlbWVudCA9
IGFzc2VydEVsZW1lbnQoZXJyb3JTdHJpbmcsIG5vZGVJZCk7CiAgICAgaWYgKCFlbGVtZW50KQpA
QCAtMTI2MCw3ICsxMjYyLDcgQEAgc3RhdGljIFN0cmluZyBkb2N1bWVudEJhc2VVUkxTdHJpbmco
RG9jdW1lbnQqIGRvY3VtZW50KQogICAgIHJldHVybiBkb2N1bWVudC0+Y29tcGxldGVVUkwoIiIp
LnN0cmluZygpOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpET006Ok5vZGU+IEluc3Bl
Y3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvck5vZGUoTm9kZSogbm9kZSwgaW50IGRlcHRoLCBO
b2RlVG9JZE1hcCogbm9kZXNNYXApCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkRPTTo6Tm9kZT4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiBu
b2RlLCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFwKiBub2Rlc01hcCkKIHsKICAgICBpbnQgaWQgPSBi
aW5kKG5vZGUsIG5vZGVzTWFwKTsKICAgICBTdHJpbmcgbm9kZU5hbWU7CkBAIC0xMjg5LDcgKzEy
OTEsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpET006Ok5vZGU+IEluc3BlY3RvckRPTUFn
ZW50OjpidWlsZE9iamVjdEZvck5vZGUoTm9kZSogbgogICAgICAgICBicmVhazsKICAgICB9CiAK
LSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4gdmFsdWUgPSBUeXBlQnVpbGRlcjo6
RE9NOjpOb2RlOjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpE
T006Ok5vZGU+IHZhbHVlID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpOb2RlOjpjcmVh
dGUoKQogICAgICAgICAuc2V0Tm9kZUlkKGlkKQogICAgICAgICAuc2V0Tm9kZVR5cGUoc3RhdGlj
X2Nhc3Q8aW50Pihub2RlLT5ub2RlVHlwZSgpKSkKICAgICAgICAgLnNldE5vZGVOYW1lKG5vZGVO
YW1lKQpAQCAtMTI5OSw3ICsxMzAxLDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpO
b2RlPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JOb2RlKE5vZGUqIG4KICAgICBp
ZiAobm9kZS0+aXNDb250YWluZXJOb2RlKCkpIHsKICAgICAgICAgaW50IG5vZGVDb3VudCA9IGlu
bmVyQ2hpbGROb2RlQ291bnQobm9kZSk7CiAgICAgICAgIHZhbHVlLT5zZXRDaGlsZE5vZGVDb3Vu
dChub2RlQ291bnQpOwotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpET006Ok5vZGU+PiBjaGlsZHJlbiA9IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJl
bihub2RlLCBkZXB0aCwgbm9kZXNNYXApOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPj4gY2hpbGRy
ZW4gPSBidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4obm9kZSwgZGVwdGgsIG5vZGVzTWFw
KTsKICAgICAgICAgaWYgKGNoaWxkcmVuLT5sZW5ndGgoKSA+IDApCiAgICAgICAgICAgICB2YWx1
ZS0+c2V0Q2hpbGRyZW4oY2hpbGRyZW4ucmVsZWFzZSgpKTsKICAgICB9CkBAIC0xMzE4LDcgKzEz
MjAsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpET006Ok5vZGU+IEluc3BlY3RvckRPTUFn
ZW50OjpidWlsZE9iamVjdEZvck5vZGUoTm9kZSogbgogICAgICAgICB9CiAKICAgICAgICAgaWYg
KFNoYWRvd1Jvb3QqIHJvb3QgPSBlbGVtZW50LT5zaGFkb3dSb290KCkpIHsKLSAgICAgICAgICAg
IFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4+IHNoYWRv
d1Jvb3RzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpET006Ok5vZGU+OjpjcmVh
dGUoKTsKKyAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+PiBzaGFkb3dSb290cyA9IEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT46
OmNyZWF0ZSgpOwogICAgICAgICAgICAgc2hhZG93Um9vdHMtPmFkZEl0ZW0oYnVpbGRPYmplY3RG
b3JOb2RlKHJvb3QsIDAsIG5vZGVzTWFwKSk7CiAgICAgICAgICAgICB2YWx1ZS0+c2V0U2hhZG93
Um9vdHMoc2hhZG93Um9vdHMpOwogICAgICAgICB9CkBAIC0xMzQ2LDkgKzEzNDgsOSBAQCBQYXNz
UmVmUHRyPFR5cGVCdWlsZGVyOjpET006Ok5vZGU+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9i
amVjdEZvck5vZGUoTm9kZSogbgogICAgIHJldHVybiB2YWx1ZS5yZWxlYXNlKCk7CiB9CiAKLVBh
c3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IEluc3BlY3RvckRPTUFnZW50Ojpi
dWlsZEFycmF5Rm9yRWxlbWVudEF0dHJpYnV0ZXMoRWxlbWVudCogZWxlbWVudCkKK1Bhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gSW5zcGVjdG9yRE9NQWdl
bnQ6OmJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmlidXRlcyhFbGVtZW50KiBlbGVtZW50KQogewot
ICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gYXR0cmlidXRlc1ZhbHVlID0g
VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBhdHRyaWJ1dGVzVmFsdWUgPSBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICAvLyBHbyB0aHJv
dWdoIGFsbCBhdHRyaWJ1dGVzIGFuZCBzZXJpYWxpemUgdGhlbS4KICAgICBpZiAoIWVsZW1lbnQt
Pmhhc0F0dHJpYnV0ZXMoKSkKICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXNWYWx1ZS5yZWxlYXNl
KCk7CkBAIC0xMzYyLDkgKzEzNjQsOSBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxT
dHJpbmc+PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckVsZW1lbnRBdAogICAgIHJl
dHVybiBhdHRyaWJ1dGVzVmFsdWUucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1
aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihOb2RlKiBjb250YWluZXIsIGludCBkZXB0aCwg
Tm9kZVRvSWRNYXAqIG5vZGVzTWFwKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+PiBJbnNwZWN0b3JET01B
Z2VudDo6YnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKE5vZGUqIGNvbnRhaW5lciwgaW50
IGRlcHRoLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApCiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcnJheTxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPj4gY2hpbGRyZW4gPSBUeXBlQnVpbGRlcjo6
QXJyYXk8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5v
ZGU+PiBjaGlsZHJlbiA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT46OmNyZWF0ZSgpOwogICAgIGlmIChkZXB0aCA9PSAwKSB7
CiAgICAgICAgIC8vIFNwZWNpYWwtY2FzZSB0aGUgb25seSB0ZXh0IGNoaWxkIC0gcHJldGVuZCB0
aGF0IGNvbnRhaW5lcidzIGNoaWxkcmVuIGhhdmUgYmVlbiByZXF1ZXN0ZWQuCiAgICAgICAgIE5v
ZGUqIGZpcnN0Q2hpbGQgPSBjb250YWluZXItPmZpcnN0Q2hpbGQoKTsKQEAgLTEzODYsNyArMTM4
OCw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpET006Ok5v
ZGU+PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBCiAgICAgcmV0dXJuIGNoaWxkcmVuLnJlbGVh
c2UoKTsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpFdmVudExpc3RlbmVyPiBJ
bnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKGNvbnN0IFJlZ2lz
dGVyZWRFdmVudExpc3RlbmVyJiByZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciwgY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXBJ
ZCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpFdmVudExpc3RlbmVy
PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKGNvbnN0IFJl
Z2lzdGVyZWRFdmVudExpc3RlbmVyJiByZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciwgY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyogb2JqZWN0R3Jv
dXBJZCkKIHsKICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lciA9IHJlZ2lz
dGVyZWRFdmVudExpc3RlbmVyLmxpc3RlbmVyOwogCkBAIC0xNDE0LDcgKzE0MTYsNyBAQCBQYXNz
UmVmUHRyPFR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI+IEluc3BlY3RvckRPTUFnZW50
OjpidWlsZE9iamVjdEZvckV2ZQogICAgICAgICB9CiAgICAgfQogCi0gICAgUmVmUHRyPFR5cGVC
dWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI+IHZhbHVlID0gVHlwZUJ1aWxkZXI6OkRPTTo6RXZl
bnRMaXN0ZW5lcjo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
RE9NOjpFdmVudExpc3RlbmVyPiB2YWx1ZSA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6
RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKCkKICAgICAgICAgLnNldFR5cGUoZXZlbnRUeXBlKQogICAg
ICAgICAuc2V0VXNlQ2FwdHVyZShyZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci51c2VDYXB0dXJlKQog
ICAgICAgICAuc2V0SXNBdHRyaWJ1dGUoZXZlbnRMaXN0ZW5lci0+aXNBdHRyaWJ1dGUoKSkKQEAg
LTE0MjMsMTAgKzE0MjUsMTAgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpFdmVudExp
c3RlbmVyPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JFdmUKICAgICBpZiAob2Jq
ZWN0R3JvdXBJZCAmJiBoYW5kbGVyICYmIHN0YXRlKSB7CiAgICAgICAgIEluamVjdGVkU2NyaXB0
IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0
Rm9yKHN0YXRlKTsKICAgICAgICAgaWYgKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCi0g
ICAgICAgICAgICB2YWx1ZS0+c2V0SGFuZGxlcihpbmplY3RlZFNjcmlwdC53cmFwT2JqZWN0KFNj
cmlwdFZhbHVlKHN0YXRlLT52bSgpLCBoYW5kbGVyKSwgKm9iamVjdEdyb3VwSWQpKTsKKyAgICAg
ICAgICAgIHZhbHVlLT5zZXRIYW5kbGVyKGluamVjdGVkU2NyaXB0LndyYXBPYmplY3QoRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUoc3RhdGUtPnZtKCksIGhhbmRsZXIpLCAqb2JqZWN0R3JvdXBJZCkp
OwogICAgIH0KICAgICBpZiAoIXNjcmlwdElELmlzTnVsbCgpKSB7Ci0gICAgICAgIFJlZlB0cjxU
eXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiBsb2NhdGlvbiA9IFR5cGVCdWlsZGVyOjpE
ZWJ1Z2dlcjo6TG9jYXRpb246OmNyZWF0ZSgpCisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IGxvY2F0aW9uID0gSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uOjpjcmVhdGUoKQogICAgICAgICAgICAgLnNldFNj
cmlwdElkKHNjcmlwdElEKQogICAgICAgICAgICAgLnNldExpbmVOdW1iZXIobGluZU51bWJlcik7
CiAgICAgICAgIHZhbHVlLT5zZXRMb2NhdGlvbihsb2NhdGlvbi5yZWxlYXNlKCkpOwpAQCAtMTUw
OSw3ICsxNTExLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkQ29tbWl0TG9hZChEb2N1
bWVudCogZG9jdW1lbnQpCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmNoaWxkTm9kZVJlbW92
ZWQocGFyZW50SWQsIGZyYW1lT3duZXJJZCk7CiAgICAgdW5iaW5kKGZyYW1lT3duZXIsICZtX2Rv
Y3VtZW50Tm9kZVRvSWRNYXApOwogCi0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpET006Ok5vZGU+
IHZhbHVlID0gYnVpbGRPYmplY3RGb3JOb2RlKGZyYW1lT3duZXIsIDAsICZtX2RvY3VtZW50Tm9k
ZVRvSWRNYXApOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+
IHZhbHVlID0gYnVpbGRPYmplY3RGb3JOb2RlKGZyYW1lT3duZXIsIDAsICZtX2RvY3VtZW50Tm9k
ZVRvSWRNYXApOwogICAgIE5vZGUqIHByZXZpb3VzU2libGluZyA9IGlubmVyUHJldmlvdXNTaWJs
aW5nKGZyYW1lT3duZXIpOwogICAgIGludCBwcmV2SWQgPSBwcmV2aW91c1NpYmxpbmcgPyBtX2Rv
Y3VtZW50Tm9kZVRvSWRNYXAuZ2V0KHByZXZpb3VzU2libGluZykgOiAwOwogICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyLT5jaGlsZE5vZGVJbnNlcnRlZChwYXJlbnRJZCwgcHJldklkLCB2YWx1ZS5y
ZWxlYXNlKCkpOwpAQCAtMTUzOSw3ICsxNTQxLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
ZGlkSW5zZXJ0RE9NTm9kZShOb2RlKiBub2RlKQogICAgICAgICAvLyBDaGlsZHJlbiBoYXZlIGJl
ZW4gcmVxdWVzdGVkIC0+IHJldHVybiB2YWx1ZSBvZiBhIG5ldyBjaGlsZC4KICAgICAgICAgTm9k
ZSogcHJldlNpYmxpbmcgPSBpbm5lclByZXZpb3VzU2libGluZyhub2RlKTsKICAgICAgICAgaW50
IHByZXZJZCA9IHByZXZTaWJsaW5nID8gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldChwcmV2U2li
bGluZykgOiAwOwotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4gdmFsdWUg
PSBidWlsZE9iamVjdEZvck5vZGUobm9kZSwgMCwgJm1fZG9jdW1lbnROb2RlVG9JZE1hcCk7Cisg
ICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+IHZhbHVlID0g
YnVpbGRPYmplY3RGb3JOb2RlKG5vZGUsIDAsICZtX2RvY3VtZW50Tm9kZVRvSWRNYXApOwogICAg
ICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+Y2hpbGROb2RlSW5zZXJ0ZWQocGFyZW50SWQsIHBy
ZXZJZCwgdmFsdWUucmVsZWFzZSgpKTsKICAgICB9CiB9CkBAIC0xNjA0LDcgKzE2MDYsNyBAQCB2
b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRSZW1vdmVET01BdHRyKEVsZW1lbnQqIGVsZW1lbnQs
IGNvbnN0IEF0b21pY1N0cmluZyYgbgogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzdHlsZUF0
dHJpYnV0ZUludmFsaWRhdGVkKGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGVsZW1lbnRzKQogewot
ICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4gbm9kZUlkcyA9IFR5cGVCdWlsZGVy
OjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8aW50Pj4gbm9kZUlkcyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PGlu
dD46OmNyZWF0ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBlbGVtZW50cy5z
aXplKCk7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IGVsZW1l
bnRzLmF0KGkpOwogICAgICAgICBpbnQgaWQgPSBib3VuZE5vZGVJZChlbGVtZW50KTsKQEAgLTE3
MjksNyArMTczMSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlQnlCYWNrZW5k
SWRUb0Zyb250ZW5kKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywKICAgICB9CiB9CiAKLVBhc3NS
ZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5zcGVjdG9yRE9NQWdl
bnQ6OnJlc29sdmVOb2RlKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApCitQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4g
SW5zcGVjdG9yRE9NQWdlbnQ6OnJlc29sdmVOb2RlKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYg
b2JqZWN0R3JvdXApCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFt
ZSgpOwogICAgIGlmICghZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5oCmluZGV4IGE1ZDYwYmMuLmYwMWY5YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC0zMywxMyArMzMsMTMgQEAKICNpbmNs
dWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAjaW5jbHVk
ZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50
LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5LmgiCi0jaW5j
bHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNl
LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJUaW1lci5oIgotCisjaW5j
bHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAg
LTQ5LDcgKzQ5LDEyIEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21pY1N0cmluZy5oPgogCituYW1lc3BhY2UgRGVwcmVjYXRlZCB7CitjbGFzcyBTY3Jp
cHRWYWx1ZTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgeworCiBjbGFzcyBDb250YWluZXJOb2Rl
OwogY2xhc3MgQ2hhcmFjdGVyRGF0YTsKIGNsYXNzIERPTUVkaXRvcjsKQEAgLTY2LDcgKzcxLDYg
QEAgY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIE5hbWVOb2RlTWFwOwogY2xhc3Mg
Tm9kZTsKIGNsYXNzIFJldmFsaWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s7Ci1jbGFzcyBTY3JpcHRW
YWx1ZTsKIGNsYXNzIFNoYWRvd1Jvb3Q7CiAKIHN0cnVjdCBIaWdobGlnaHRDb25maWc7CkBAIC04
OSw3ICs5Myw3IEBAIHN0cnVjdCBFdmVudExpc3RlbmVySW5mbyB7CiAgICAgY29uc3QgRXZlbnRM
aXN0ZW5lclZlY3RvciBldmVudExpc3RlbmVyVmVjdG9yOwogfTsKIAotY2xhc3MgSW5zcGVjdG9y
RE9NQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yRE9N
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckRPTUFnZW50IDogcHVi
bGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3RvckRPTUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yRE9NQWdlbnQp
OwogcHVibGljOgogICAgIHN0cnVjdCBET01MaXN0ZW5lciB7CkBAIC0xMTAsNyArMTE0LDcgQEAg
cHVibGljOgogCiAgICAgfkluc3BlY3RvckRPTUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklE
RTsKIAogICAgIFZlY3RvcjxEb2N1bWVudCo+IGRvY3VtZW50cygpOwpAQCAtMTE4LDggKzEyMiw4
IEBAIHB1YmxpYzoKIAogICAgIC8vIE1ldGhvZHMgY2FsbGVkIGZyb20gdGhlIGZyb250ZW5kIGZv
ciBET00gbm9kZXMgaW5zcGVjdGlvbi4KICAgICB2aXJ0dWFsIHZvaWQgcXVlcnlTZWxlY3RvcihF
cnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBpbnQqIGVs
ZW1lbnRJZCk7Ci0gICAgdmlydHVhbCB2b2lkIHF1ZXJ5U2VsZWN0b3JBbGwoRXJyb3JTdHJpbmcq
LCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcnJheTxpbnQ+PiYgcmVzdWx0KTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0RG9jdW1lbnQoRXJy
b3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4mIHJvb3QpOworICAgIHZp
cnR1YWwgdm9pZCBxdWVyeVNlbGVjdG9yQWxsKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29u
c3QgU3RyaW5nJiBzZWxlY3RvcnMsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJh
eTxpbnQ+PiYgcmVzdWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0RG9jdW1lbnQoRXJyb3JTdHJp
bmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiYgcm9vdCk7CiAg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGlsZE5vZGVzKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJ
ZCwgY29uc3QgaW50KiBkZXB0aCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEF0dHJpYnV0ZVZhbHVl
KEVycm9yU3RyaW5nKiwgaW50IGVsZW1lbnRJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIHZhbHVlKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QXR0cmlidXRlc0FzVGV4dChFcnJv
clN0cmluZyosIGludCBlbGVtZW50SWQsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5n
KiBuYW1lKTsKQEAgLTEyOSwyOSArMTMzLDI5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
Z2V0T3V0ZXJIVE1MKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgV1RGOjpTdHJpbmcqIG91dGVy
SFRNTCk7CiAgICAgdmlydHVhbCB2b2lkIHNldE91dGVySFRNTChFcnJvclN0cmluZyosIGludCBu
b2RlSWQsIGNvbnN0IFN0cmluZyYgb3V0ZXJIVE1MKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9k
ZVZhbHVlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0g
ICAgdmlydHVhbCB2b2lkIGdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShFcnJvclN0cmluZyosIGlu
dCBub2RlSWQsIGNvbnN0IFdURjo6U3RyaW5nKiBvYmplY3RHcm91cCwgUmVmUHRyPFR5cGVCdWls
ZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RE9NOjpFdmVudExpc3RlbmVyPj4mIGxpc3RlbmVyc0Fy
cmF5KTsKLSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVNlYXJjaChFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFy
cmF5Piogbm9kZUlkcywgU3RyaW5nKiBzZWFyY2hJZCwgaW50KiByZXN1bHRDb3VudCk7Ci0gICAg
dmlydHVhbCB2b2lkIGdldFNlYXJjaFJlc3VsdHMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcm
IHNlYXJjaElkLCBpbnQgZnJvbUluZGV4LCBpbnQgdG9JbmRleCwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcnJheTxpbnQ+PiYpOworICAgIHZpcnR1YWwgdm9pZCBnZXRFdmVudExpc3RlbmVyc0Zvck5v
ZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBXVEY6OlN0cmluZyogb2JqZWN0R3Jv
dXAsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI+PiYgbGlzdGVuZXJzQXJyYXkpOworICAgIHZpcnR1
YWwgdm9pZCBwZXJmb3JtU2VhcmNoKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB3aGl0ZXNw
YWNlVHJpbW1lZFF1ZXJ5LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4q
IG5vZGVJZHMsIFN0cmluZyogc2VhcmNoSWQsIGludCogcmVzdWx0Q291bnQpOworICAgIHZpcnR1
YWwgdm9pZCBnZXRTZWFyY2hSZXN1bHRzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWFy
Y2hJZCwgaW50IGZyb21JbmRleCwgaW50IHRvSW5kZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcnJheTxpbnQ+PiYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkU2VhcmNoUmVz
dWx0cyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2VhcmNoSWQpOwotICAgIHZpcnR1YWwg
dm9pZCByZXNvbHZlTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyog
b2JqZWN0R3JvdXAsIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYg
cmVzdWx0KTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QXR0cmlidXRlcyhFcnJvclN0cmluZyosIGlu
dCBub2RlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4mIHJlc3VsdCk7Ci0g
ICAgdmlydHVhbCB2b2lkIHNldEluc3BlY3RNb2RlRW5hYmxlZChFcnJvclN0cmluZyosIGJvb2wg
ZW5hYmxlZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGhpZ2hsaWdodENvbmZpZyk7
CisgICAgdmlydHVhbCB2b2lkIHJlc29sdmVOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwg
Y29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCk7CisgICAgdmlydHVhbCB2b2lkIGdldEF0
dHJpYnV0ZXMoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4mIHJlc3VsdCk7CisgICAgdmlydHVhbCB2b2lkIHNldElu
c3BlY3RNb2RlRW5hYmxlZChFcnJvclN0cmluZyosIGJvb2wgZW5hYmxlZCwgY29uc3QgUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiogaGlnaGxpZ2h0Q29uZmlnKTsKICAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdE5vZGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElk
LCBpbnQqIG5vZGVJZCk7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hOb2RlQnlQYXRoVG9Gcm9udGVu
ZChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgcGF0aCwgaW50KiBub2RlSWQpOwogICAgIHZp
cnR1YWwgdm9pZCBwdXNoTm9kZUJ5QmFja2VuZElkVG9Gcm9udGVuZChFcnJvclN0cmluZyosIEJh
Y2tlbmROb2RlSWQsIGludCogbm9kZUlkKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZUJhY2tl
bmROb2RlSWRzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBub2RlR3JvdXApOwogICAgIHZp
cnR1YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KEVycm9yU3RyaW5nKik7Ci0gICAgdmlydHVhbCB2b2lk
IGhpZ2hsaWdodFJlY3QoRXJyb3JTdHJpbmcqLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50
IGhlaWdodCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGNvbG9yLCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29v
cmRpbmF0ZXMpOwotICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHRRdWFkKEVycm9yU3RyaW5nKiwg
Y29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgcXVhZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4qIGNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0bGluZUNv
bG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0ZXMpOwotICAgIHZpcnR1YWwgdm9pZCBo
aWdobGlnaHROb2RlKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4m
IGhpZ2hsaWdodENvbmZpZywgY29uc3QgaW50KiBub2RlSWQsIGNvbnN0IFN0cmluZyogb2JqZWN0
SWQpOwotICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHRGcmFtZShFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGNvbG9yLCBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0bGluZUNvbG9yKTsKKyAgICB2aXJ0dWFs
IHZvaWQgaGlnaGxpZ2h0UmVjdChFcnJvclN0cmluZyosIGludCB4LCBpbnQgeSwgaW50IHdpZHRo
LCBpbnQgaGVpZ2h0LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBj
b2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piogb3V0bGluZUNv
bG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0ZXMpOworICAgIHZpcnR1YWwgdm9pZCBo
aWdobGlnaHRRdWFkKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVj
dG9yQXJyYXk+JiBxdWFkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
KiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piogb3V0bGlu
ZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0ZXMpOworICAgIHZpcnR1YWwgdm9p
ZCBoaWdobGlnaHROb2RlKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiYgaGlnaGxpZ2h0Q29uZmlnLCBjb25zdCBpbnQqIG5vZGVJZCwgY29uc3Qg
U3RyaW5nKiBvYmplY3RJZCk7CisgICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodEZyYW1lKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0Piogb3V0bGluZUNvbG9yKTsKIAogICAgIHZpcnR1YWwgdm9pZCBtb3ZlVG8oRXJyb3JT
dHJpbmcqLCBpbnQgbm9kZUlkLCBpbnQgdGFyZ2V0Tm9kZUlkLCBjb25zdCBpbnQqIGFuY2hvck5v
ZGVJZCwgaW50KiBuZXdOb2RlSWQpOwogICAgIHZpcnR1YWwgdm9pZCB1bmRvKEVycm9yU3RyaW5n
Kik7CiAgICAgdmlydHVhbCB2b2lkIHJlZG8oRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZv
aWQgbWFya1VuZG9hYmxlU3RhdGUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgZm9j
dXMoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RmlsZUlu
cHV0RmlsZXMoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9y
QXJyYXk+JiBmaWxlcyk7CisgICAgdmlydHVhbCB2b2lkIHNldEZpbGVJbnB1dEZpbGVzKEVycm9y
U3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJy
YXk+JiBmaWxlcyk7CiAKICAgICB2b2lkIGdldEV2ZW50TGlzdGVuZXJzKE5vZGUqLCBWZWN0b3I8
RXZlbnRMaXN0ZW5lckluZm8+JiBsaXN0ZW5lcnNBcnJheSwgYm9vbCBpbmNsdWRlQW5jZXN0b3Jz
KTsKIApAQCAtMTgyLDcgKzE4Niw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBTdHJpbmcgZG9j
dW1lbnRVUkxTdHJpbmcoRG9jdW1lbnQqKTsKIAotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gcmVzb2x2ZU5vZGUoTm9kZSosIGNvbnN0IFN0cmluZyYg
b2JqZWN0R3JvdXApOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0PiByZXNvbHZlTm9kZShOb2RlKiwgY29uc3QgU3RyaW5nJiBvYmpl
Y3RHcm91cCk7CiAgICAgYm9vbCBoYW5kbGVNb3VzZVByZXNzKCk7CiAgICAgYm9vbCBoYW5kbGVU
b3VjaEV2ZW50KE5vZGUqKTsKICAgICB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0
IEhpdFRlc3RSZXN1bHQmLCB1bnNpZ25lZCBtb2RpZmllckZsYWdzKTsKQEAgLTIxMCw4ICsyMTQs
OCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEluc3BlY3RvckRPTUFnZW50KEluc3RydW1lbnRp
bmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdlQWdlbnQqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJ
bnNwZWN0b3JPdmVybGF5KiwgSW5zcGVjdG9yQ2xpZW50Kik7CiAKLSAgICB2b2lkIHNldFNlYXJj
aGluZ0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBib29sIGVuYWJsZWQsIEluc3BlY3Rvck9iamVjdCog
aGlnaGxpZ2h0Q29uZmlnKTsKLSAgICBQYXNzT3duUHRyPEhpZ2hsaWdodENvbmZpZz4gaGlnaGxp
Z2h0Q29uZmlnRnJvbUluc3BlY3Rvck9iamVjdChFcnJvclN0cmluZyosIEluc3BlY3Rvck9iamVj
dCogaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsKKyAgICB2b2lkIHNldFNlYXJjaGluZ0Zvck5v
ZGUoRXJyb3JTdHJpbmcqLCBib29sIGVuYWJsZWQsIEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
KiBoaWdobGlnaHRDb25maWcpOworICAgIFBhc3NPd25QdHI8SGlnaGxpZ2h0Q29uZmlnPiBoaWdo
bGlnaHRDb25maWdGcm9tSW5zcGVjdG9yT2JqZWN0KEVycm9yU3RyaW5nKiwgSW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7CiAKICAgICAvLyBOb2Rl
LXJlbGF0ZWQgbWV0aG9kcy4KICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPE5vZGU+LCBpbnQ+
IE5vZGVUb0lkTWFwOwpAQCAtMjI2LDE4ICsyMzAsMTggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wg
aGFzQnJlYWtwb2ludChOb2RlKiwgaW50IHR5cGUpOwogICAgIHZvaWQgdXBkYXRlU3VidHJlZUJy
ZWFrcG9pbnRzKE5vZGUqIHJvb3QsIHVpbnQzMl90IHJvb3RNYXNrLCBib29sIHZhbHVlKTsKLSAg
ICB2b2lkIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQoTm9kZSogdGFyZ2V0LCBpbnQgYnJlYWtwb2lu
dFR5cGUsIGJvb2wgaW5zZXJ0aW9uLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGVzY3Jp
cHRpb24pOworICAgIHZvaWQgZGVzY3JpcHRpb25Gb3JET01FdmVudChOb2RlKiB0YXJnZXQsIGlu
dCBicmVha3BvaW50VHlwZSwgYm9vbCBpbnNlcnRpb24sIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3Q+IGRlc2NyaXB0aW9uKTsKIAotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkRPTTo6Tm9kZT4gYnVpbGRPYmplY3RGb3JOb2RlKE5vZGUqLCBpbnQgZGVwdGgsIE5vZGVU
b0lkTWFwKik7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gYnVp
bGRBcnJheUZvckVsZW1lbnRBdHRyaWJ1dGVzKEVsZW1lbnQqKTsKLSAgICBQYXNzUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPj4gYnVpbGRBcnJheUZvckNv
bnRhaW5lckNoaWxkcmVuKE5vZGUqIGNvbnRhaW5lciwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCog
bm9kZXNNYXApOwotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6RXZlbnRMaXN0ZW5l
cj4gYnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3Rl
bmVyJiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIE5vZGUqLCBjb25zdCBTdHJpbmcq
IG9iamVjdEdyb3VwSWQpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
RE9NOjpOb2RlPiBidWlsZE9iamVjdEZvck5vZGUoTm9kZSosIGludCBkZXB0aCwgTm9kZVRvSWRN
YXAqKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmlu
Zz4+IGJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmlidXRlcyhFbGVtZW50Kik7CisgICAgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpET006Ok5vZGU+PiBidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4oTm9kZSogY29udGFp
bmVyLCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFwKiBub2Rlc01hcCk7CisgICAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI+IGJ1aWxkT2JqZWN0Rm9y
RXZlbnRMaXN0ZW5lcihjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYsIGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBOb2RlKiwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cElkKTsK
IAogICAgIE5vZGUqIG5vZGVGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAKICAgICB2b2lk
IGRpc2NhcmRCaW5kaW5ncygpOwogCi0gICAgdm9pZCBpbm5lckhpZ2hsaWdodFF1YWQoUGFzc093
blB0cjxGbG9hdFF1YWQ+LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVz
ZVBhZ2VDb29yZGluYXRlcyk7CisgICAgdm9pZCBpbm5lckhpZ2hsaWdodFF1YWQoUGFzc093blB0
cjxGbG9hdFF1YWQ+LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBj
b2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piogb3V0bGluZUNv
bG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0ZXMpOwogCiAgICAgSW5zcGVjdG9yUGFn
ZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDg5ZmY2ZTkuLjE0MzE3MGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudC5jcHAKQEAgLTQwLDggKzQwLDggQEAKICNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNs
dWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3Rv
clZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
ewpAQCAtNjEsNiArNjEsOCBAQCBjb25zdCBpbnQgZG9tQnJlYWtwb2ludERlcml2ZWRUeXBlU2hp
ZnQgPSAxNjsKIAogfQogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFBhc3NPd25QdHI8SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudD4gSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudDo6Y3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMsIEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCwgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudCogZGVidWdnZXJBZ2VudCwgSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50KQpA
QCAtNjksNyArNzEsNyBAQCBQYXNzT3duUHRyPEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ+IElu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmNyZWF0ZShJbnN0cnVtZQogfQogCiBJbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCwg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCwgSW5zcGVjdG9yQWdlbnQqKQot
ICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiRE9NRGVidWdnZXIiKSwgaW5z
dHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwo
IkRPTURlYnVnZ2VyIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX2RvbUFnZW50KGRv
bUFnZW50KQogICAgICwgbV9kZWJ1Z2dlckFnZW50KGRlYnVnZ2VyQWdlbnQpCiAgICAgLCBtX3Bh
dXNlSW5OZXh0RXZlbnRMaXN0ZW5lcihmYWxzZSkKQEAgLTExMSw3ICsxMTMsNyBAQCB2b2lkIElu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoKQogICAgIGNsZWFyKCk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBi
YWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAg
IG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JET01EZWJ1Z2dlckJhY2tlbmREaXNwYXRj
aGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQpAQCAtMzE0LDcgKzMxNiw3
IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGVzY3JpcHRpb25Gb3JET01FdmVu
dChOb2RlKiB0YXJnZXQsIGludCBicmVha3BvCiAgICAgaWYgKCgxIDw8IGJyZWFrcG9pbnRUeXBl
KSAmIGluaGVyaXRhYmxlRE9NQnJlYWtwb2ludFR5cGVzTWFzaykgewogICAgICAgICAvLyBGb3Ig
aW5oZXJpdGFibGUgYnJlYWtwb2ludCB0eXBlcywgdGFyZ2V0IG5vZGUgaXNuJ3QgYWx3YXlzIHRo
ZSBzYW1lIGFzIHRoZSBub2RlIHRoYXQgb3ducyBhIGJyZWFrcG9pbnQuCiAgICAgICAgIC8vIFRh
cmdldCBub2RlIG1heSBiZSB1bmtub3duIHRvIGZyb250ZW5kLCBzbyB3ZSBuZWVkIHRvIHB1c2gg
aXQgZmlyc3QuCi0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0PiB0YXJnZXROb2RlT2JqZWN0ID0gbV9kb21BZ2VudC0+cmVzb2x2ZU5vZGUodGFyZ2V0LCBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpiYWNrdHJhY2VPYmplY3RHcm91cCk7CisgICAgICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHRhcmdl
dE5vZGVPYmplY3QgPSBtX2RvbUFnZW50LT5yZXNvbHZlTm9kZSh0YXJnZXQsIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmJhY2t0cmFjZU9iamVjdEdyb3VwKTsKICAgICAgICAgZGVzY3JpcHRpb24t
PnNldFZhbHVlKCJ0YXJnZXROb2RlIiwgdGFyZ2V0Tm9kZU9iamVjdCk7CiAKICAgICAgICAgLy8g
RmluZCBicmVha3BvaW50IG93bmVyIG5vZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaAppbmRleCA5NmY4OGE5Li5hM2RhYWZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50LmgKQEAgLTMzLDI2ICszMywzMCBAQAogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRf
REVCVUdHRVIpICYmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNl
QWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdl
bnRCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yT2Jq
ZWN0OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBJ
bnNwZWN0b3JBZ2VudDsKIGNsYXNzIEluc3BlY3RvckRPTUFnZW50OwogY2xhc3MgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDsKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3RydW1lbnRp
bmdBZ2VudHM7CiBjbGFzcyBOb2RlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAot
Y2xhc3MgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdl
bnQsIHB1YmxpYyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpMaXN0ZW5lciwgcHVibGljIEluc3Bl
Y3RvckRPTURlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6TGlzdGVuZXIsIHB1YmxpYyBJbnNwZWN0b3JET01EZWJ1Z2dl
ckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5z
cGVjdG9yRE9NRGVidWdnZXJBZ2VudCk7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqLCBJ
bnNwZWN0b3JET01BZ2VudCosIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqLCBJbnNwZWN0b3JBZ2Vu
dCopOwpAQCAtNzksNyArODMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsU2VuZFhNTEh0dHBS
ZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICB2b2lkIHBhdXNlT25OYXRpdmVFdmVudElm
TmVlZGVkKGJvb2wgaXNET01FdmVudCwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUsIGJvb2wgc3lu
Y2hyb25vdXMpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciop
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0
cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc2Nh
cmRBZ2VudCgpOwogCkBAIC05Myw3ICs5Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IGRpZFBhdXNlKCk7CiAgICAgdm9pZCBkaXNhYmxlKCk7CiAKLSAgICB2b2lkIGRlc2NyaXB0aW9u
Rm9yRE9NRXZlbnQoTm9kZSogdGFyZ2V0LCBpbnQgYnJlYWtwb2ludFR5cGUsIGJvb2wgaW5zZXJ0
aW9uLCBJbnNwZWN0b3JPYmplY3QqIGRlc2NyaXB0aW9uKTsKKyAgICB2b2lkIGRlc2NyaXB0aW9u
Rm9yRE9NRXZlbnQoTm9kZSogdGFyZ2V0LCBpbnQgYnJlYWtwb2ludFR5cGUsIGJvb2wgaW5zZXJ0
aW9uLCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogZGVzY3JpcHRpb24pOwogICAgIHZvaWQg
dXBkYXRlU3VidHJlZUJyZWFrcG9pbnRzKE5vZGUqLCB1aW50MzJfdCByb290TWFzaywgYm9vbCBz
ZXQpOwogICAgIGJvb2wgaGFzQnJlYWtwb2ludChOb2RlKiwgaW50IHR5cGUpOwogICAgIHZvaWQg
ZGlzY2FyZEJpbmRpbmdzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCmluZGV4IDY0NmRlMjMuLjljNTliMWE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50LmNwcApAQCAtNDEsNyArNDEsNiBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKLSNp
bmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRz
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgpAQCAtNTAsMTMg
KzQ5LDE1IEBACiAjaW5jbHVkZSAiU3RvcmFnZUFyZWEuaCIKICNpbmNsdWRlICJTdG9yYWdlTmFt
ZXNwYWNlLmgiCiAjaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCi0KKyNpbmNsdWRlIDxpbnNwZWN0
b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCit1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudDo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KQot
ICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiRE9NU3RvcmFnZSIpLCBpbnN0
cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgi
RE9NU3RvcmFnZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9wYWdlQWdlbnQocGFn
ZUFnZW50KQogICAgICwgbV9lbmFibGVkKGZhbHNlKQogewpAQCAtNjksNyArNzAsNyBAQCBJbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQ6On5JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQoKQogICAgIG1f
aW5zdHJ1bWVudGluZ0FnZW50cyA9IDA7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlz
cGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5k
Q2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQog
ewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JE
T01TdG9yYWdlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFj
a2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JET01TdG9yYWdlQmFja2VuZERpc3BhdGNoZXI6OmNy
ZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CkBAIC05Myw3ICs5NCw3IEBAIHZvaWQgSW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKICAgICBtX2VuYWJs
ZWQgPSBmYWxzZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmdldERPTVN0
b3JhZ2VJdGVtcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+JiBzdG9yYWdlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxk
ZXI6OkFycmF5PFN0cmluZz4+PiYgaXRlbXMpCit2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dDo6Z2V0RE9NU3RvcmFnZUl0ZW1zKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4mIHN0b3JhZ2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+PiYgaXRl
bXMpCiB7CiAgICAgRnJhbWUqIGZyYW1lOwogICAgIFJlZlB0cjxTdG9yYWdlQXJlYT4gc3RvcmFn
ZUFyZWEgPSBmaW5kU3RvcmFnZUFyZWEoZXJyb3JTdHJpbmcsIHN0b3JhZ2VJZCwgZnJhbWUpOwpA
QCAtMTAzLDEzICsxMDQsMTMgQEAgdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmdldERP
TVN0b3JhZ2VJdGVtcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnMKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6
OkFycmF5PFN0cmluZz4+PiBzdG9yYWdlSXRlbXMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1
aWxkZXI6OkFycmF5PFN0cmluZz4+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4+
IHN0b3JhZ2VJdGVtcyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+OjpjcmVhdGUoKTsKIAogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBzdG9yYWdlQXJlYS0+bGVuZ3RoKCk7ICsraSkgewogICAgICAgICBTdHJp
bmcga2V5ID0gc3RvcmFnZUFyZWEtPmtleShpKTsKICAgICAgICAgU3RyaW5nIHZhbHVlID0gc3Rv
cmFnZUFyZWEtPml0ZW0oa2V5KTsKIAotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5
PFN0cmluZz4+IGVudHJ5ID0gVHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwor
ICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gZW50
cnkgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAg
ICAgICAgZW50cnktPmFkZEl0ZW0oa2V5KTsKICAgICAgICAgZW50cnktPmFkZEl0ZW0odmFsdWUp
OwogICAgICAgICBzdG9yYWdlSXRlbXMtPmFkZEl0ZW0oZW50cnkucmVsZWFzZSgpKTsKQEAgLTE1
Nyw5ICsxNTgsOSBAQCBTdHJpbmcgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpzdG9yYWdlSWQo
U3RvcmFnZSogc3RvcmFnZSkKICAgICByZXR1cm4gc3RvcmFnZUlkKHNlY3VyaXR5T3JpZ2luLmdl
dCgpLCBpc0xvY2FsU3RvcmFnZSktPnRvSlNPTlN0cmluZygpOwogfQogCi1QYXNzUmVmUHRyPFR5
cGVCdWlsZGVyOjpET01TdG9yYWdlOjpTdG9yYWdlSWQ+IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dDo6c3RvcmFnZUlkKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgYm9vbCBpc0xvY2Fs
U3RvcmFnZSkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NU3RvcmFnZTo6
U3RvcmFnZUlkPiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OnN0b3JhZ2VJZChTZWN1cml0eU9y
aWdpbiogc2VjdXJpdHlPcmlnaW4sIGJvb2wgaXNMb2NhbFN0b3JhZ2UpCiB7Ci0gICAgcmV0dXJu
IFR5cGVCdWlsZGVyOjpET01TdG9yYWdlOjpTdG9yYWdlSWQ6OmNyZWF0ZSgpCisgICAgcmV0dXJu
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZDo6Y3JlYXRlKCkK
ICAgICAgICAgLnNldFNlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luLT50b1Jhd1N0cmluZygp
KQogICAgICAgICAuc2V0SXNMb2NhbFN0b3JhZ2UoaXNMb2NhbFN0b3JhZ2UpLnJlbGVhc2UoKTsK
IH0KQEAgLTE2OSw3ICsxNzAsNyBAQCB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlk
RGlzcGF0Y2hET01TdG9yYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBrZXksIGNvbgogICAgIGlmICgh
bV9mcm9udGVuZERpc3BhdGNoZXIgfHwgIW1fZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpET01TdG9yYWdlOjpTdG9yYWdlSWQ+IGlkID0gc3RvcmFn
ZUlkKHNlY3VyaXR5T3JpZ2luLCBzdG9yYWdlVHlwZSA9PSBMb2NhbFN0b3JhZ2UpOworICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET01TdG9yYWdlOjpTdG9yYWdlSWQ+IGlkID0g
c3RvcmFnZUlkKHNlY3VyaXR5T3JpZ2luLCBzdG9yYWdlVHlwZSA9PSBMb2NhbFN0b3JhZ2UpOwog
CiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmRv
bVN0b3JhZ2VJdGVtc0NsZWFyZWQoaWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCmluZGV4IDJjZDE3YjMuLjk3NDQxYjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50LmgKQEAgLTI5LDI3ICsyOSwzMCBAQAogI2lmbmRlZiBJbnNwZWN0b3JET01TdG9yYWdlQWdl
bnRfaAogI2RlZmluZSBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnRfaAogCi0jaW5jbHVkZSAiSW5z
cGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJz
LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSAiU3RvcmFn
ZUFyZWEuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBJbnNw
ZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yQXJyYXk7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgRnJhbWU7Ci1jbGFzcyBJbnNwZWN0b3JBcnJheTsKIGNsYXNzIEluc3BlY3RvckRP
TVN0b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI7CiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CiBj
bGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgUGFnZTsKIGNsYXNzIFNlY3VyaXR5T3Jp
Z2luOwogY2xhc3MgU3RvcmFnZTsKLWNsYXNzIFN0b3JhZ2VBcmVhOwogCiB0eXBlZGVmIFN0cmlu
ZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50IDogcHVibGlj
IEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3RvckRPTVN0b3JhZ2VCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50IDogcHVibGlj
IEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3RvckRPTVN0b3JhZ2VCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KQogICAgIHsKQEAgLTU3LDE5
ICs2MCwxOSBAQCBwdWJsaWM6CiAgICAgfQogICAgIH5JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQo
KTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250
ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZyb250
LWVuZC4KICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVh
bCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0RE9NU3Rv
cmFnZUl0ZW1zKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHN0
b3JhZ2VJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6QXJyYXk8U3Ry
aW5nPj4+JiBpdGVtcyk7Ci0gICAgdmlydHVhbCB2b2lkIHNldERPTVN0b3JhZ2VJdGVtKEVycm9y
U3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHN0b3JhZ2VJZCwgY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpOwotICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVET01TdG9yYWdlSXRlbShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+JiBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5KTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0
RE9NU3RvcmFnZUl0ZW1zKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiYgc3RvcmFnZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4+JiBpdGVtcyk7Cisg
ICAgdmlydHVhbCB2b2lkIHNldERPTVN0b3JhZ2VJdGVtKEVycm9yU3RyaW5nKiwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgc3RvcmFnZUlkLCBjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZURPTVN0
b3JhZ2VJdGVtKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0PiYgc3RvcmFnZUlkLCBjb25zdCBTdHJpbmcmIGtleSk7CiAKICAgICAvLyBDYWxsZWQg
ZnJvbSB0aGUgaW5qZWN0ZWQgc2NyaXB0LgogICAgIFN0cmluZyBzdG9yYWdlSWQoU3RvcmFnZSop
OwotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZD4gc3Rv
cmFnZUlkKFNlY3VyaXR5T3JpZ2luKiwgYm9vbCBpc0xvY2FsU3RvcmFnZSk7CisgICAgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET01TdG9yYWdlOjpTdG9yYWdlSWQ+IHN0b3Jh
Z2VJZChTZWN1cml0eU9yaWdpbiosIGJvb2wgaXNMb2NhbFN0b3JhZ2UpOwogCiAgICAgLy8gQ2Fs
bGVkIGZyb20gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCiAgICAgdm9pZCBkaWREaXNwYXRjaERP
TVN0b3JhZ2VFdmVudChjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwg
Y29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgU3RvcmFnZVR5cGUsIFNlY3VyaXR5T3JpZ2luKiwgUGFn
ZSopOwpAQCAtNzgsNyArODEsNyBAQCBwcml2YXRlOgogCiAgICAgSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKIAotICAg
IFBhc3NSZWZQdHI8U3RvcmFnZUFyZWE+IGZpbmRTdG9yYWdlQXJlYShFcnJvclN0cmluZyosIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiwgRnJhbWUqJik7CisgICAgUGFzc1JlZlB0cjxT
dG9yYWdlQXJlYT4gZmluZFN0b3JhZ2VBcmVhKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYsIEZyYW1lKiYpOwogCiAgICAgSW5zcGVjdG9yUGFn
ZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRE9NU3Rv
cmFnZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKaW5kZXgg
YzU4MDBlYS4uOWI4NTVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcApAQCAtMzcsOCArMzcsNiBAQAogI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRhdGFiYXNlUmVz
b3VyY2UuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgotCi0jaW5jbHVkZSAiSW5z
cGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1
ZGUgIlNRTEVycm9yLmgiCiAjaW5jbHVkZSAiU1FMUmVzdWx0U2V0LmgiCkBAIC01MCwxOCArNDgs
MjAgQEAKICNpbmNsdWRlICJTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaCIKICNpbmNsdWRl
ICJTUUxWYWx1ZS5oIgogI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgotCisjaW5jbHVkZSA8aW5z
cGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogdHlw
ZWRlZiBXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6
RXhlY3V0ZVNRTENhbGxiYWNrIEV4ZWN1dGVTUUxDYWxsYmFjazsKIAordXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgewogCiB2b2lk
IHJlcG9ydFRyYW5zYWN0aW9uRmFpbGVkKEV4ZWN1dGVTUUxDYWxsYmFjayogcmVxdWVzdENhbGxi
YWNrLCBTUUxFcnJvciogZXJyb3IpCiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpEYXRhYmFz
ZTo6RXJyb3I+IGVycm9yT2JqZWN0ID0gVHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpFcnJvcjo6Y3Jl
YXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkVycm9y
PiBlcnJvck9iamVjdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpFcnJvcjo6
Y3JlYXRlKCkKICAgICAgICAgLnNldE1lc3NhZ2UoZXJyb3ItPm1lc3NhZ2UoKSkKICAgICAgICAg
LnNldENvZGUoZXJyb3ItPmNvZGUoKSk7CiAgICAgcmVxdWVzdENhbGxiYWNrLT5zZW5kU3VjY2Vz
cygwLCAwLCBlcnJvck9iamVjdC5yZWxlYXNlKCkpOwpAQCAtODAsMTIgKzgwLDEyIEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIFNRTFJlc3VsdFNldFJvd0xpc3QqIHJvd0xpc3QgPSByZXN1bHRT
ZXQtPnJvd3MoKTsKIAotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+
IGNvbHVtbk5hbWVzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAg
ICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gY29sdW1u
TmFtZXMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsK
ICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvbHVtbnMgPSByb3dMaXN0LT5jb2x1bW5O
YW1lcygpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbHVtbnMuc2l6ZSgpOyAr
K2kpCiAgICAgICAgICAgICBjb2x1bW5OYW1lcy0+YWRkSXRlbShjb2x1bW5zW2ldKTsKIAotICAg
ICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3RvclZhbHVlPj4gdmFsdWVzID0g
VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3RvclZhbHVlPjo6Y3JlYXRlKCk7CisgICAgICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JWYWx1ZT4+IHZhbHVl
cyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3RvclZhbHVlPjo6Y3JlYXRl
KCk7CiAgICAgICAgIGNvbnN0IFZlY3RvcjxTUUxWYWx1ZT4mIGRhdGEgPSByb3dMaXN0LT52YWx1
ZXMoKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkYXRhLnNpemUoKTsgKytpKSB7
CiAgICAgICAgICAgICBjb25zdCBTUUxWYWx1ZSYgdmFsdWUgPSByb3dMaXN0LT52YWx1ZXMoKVtp
XTsKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmNsZWFy
UmVzb3VyY2VzKCkKIH0KIAogSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6SW5zcGVjdG9yRGF0YWJh
c2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQotICAgIDog
SW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiRGF0YWJhc2UiKSwgaW5zdHJ1bWVudGlu
Z0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkRhdGFiYXNl
IiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX2VuYWJsZWQoZmFsc2UpCiB7CiAgICAg
bV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JEYXRhYmFzZUFnZW50KHRoaXMpOwpA
QCAtMjIyLDcgKzIyMiw3IEBAIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6On5JbnNwZWN0b3JEYXRh
YmFzZUFnZW50KCkKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckRhdGFi
YXNlQWdlbnQoMCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFu
bmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lk
IEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRhdGFiYXNlRnJvbnRlbmRE
aXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJ
bnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNo
ZXIsIHRoaXMpOwpAQCAtMjU0LDE0ICsyNTQsMTQgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFn
ZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKICAgICBtX2VuYWJsZWQgPSBmYWxzZTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpnZXREYXRhYmFzZVRhYmxlTmFtZXMoRXJyb3JT
dHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWQsIFJlZlB0cjxUeXBlQnVpbGRl
cjo6QXJyYXk8U3RyaW5nPj4mIG5hbWVzKQordm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50Ojpn
ZXREYXRhYmFzZVRhYmxlTmFtZXMoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIGRh
dGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiYg
bmFtZXMpCiB7CiAgICAgaWYgKCFtX2VuYWJsZWQpIHsKICAgICAgICAgKmVycm9yID0gIkRhdGFi
YXNlIGFnZW50IGlzIG5vdCBlbmFibGVkIjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IG5hbWVzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgIG5hbWVz
ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAKICAg
ICBEYXRhYmFzZSogZGF0YWJhc2UgPSBkYXRhYmFzZUZvcklkKGRhdGFiYXNlSWQpOwogICAgIGlm
IChkYXRhYmFzZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRhdGFiYXNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
YXRhYmFzZUFnZW50LmgKaW5kZXggYTMyZjA2NC4uNTM5YTNhYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCkBAIC0zMSwyMiArMzEs
MjYgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpICYmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAK
LSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgorI2luY2x1
ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAorbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFzcyBJbnNwZWN0b3JBcnJheTsKK30KKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEYXRhYmFzZTsKLWNsYXNzIEluc3BlY3RvckFy
cmF5OwogY2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZTsKIGNsYXNzIEluc3RydW1lbnRp
bmdBZ2VudHM7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0
b3JEYXRhYmFzZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3Bl
Y3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckRh
dGFiYXNlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9y
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzT3duUHRyPEluc3BlY3RvckRhdGFiYXNlQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgIHsKQEAgLTU0LDcgKzU4LDcgQEAgcHVibGlj
OgogICAgIH0KICAgICB+SW5zcGVjdG9yRGF0YWJhc2VBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2
b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
LCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZF
UlJJREU7CiAKICAgICB2b2lkIGNsZWFyUmVzb3VyY2VzKCk7CkBAIC02Miw3ICs2Niw3IEBAIHB1
YmxpYzoKICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgZnJvbnQtZW5kLgogICAgIHZpcnR1YWwgdm9p
ZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0
cmluZyopOwotICAgIHZpcnR1YWwgdm9pZCBnZXREYXRhYmFzZVRhYmxlTmFtZXMoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8
U3RyaW5nPj4mIG5hbWVzKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VUYWJsZU5hbWVz
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4mIG5hbWVzKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZXhlY3V0ZVNRTChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZCwgY29uc3Qg
U3RyaW5nJiBxdWVyeSwgUGFzc1JlZlB0cjxFeGVjdXRlU1FMQ2FsbGJhY2s+KTsKIAogICAgIC8v
IENhbGxlZCBmcm9tIHRoZSBpbmplY3RlZCBzY3JpcHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAKaW5kZXggOWQ0Yjcz
Zi4uMjVhMzE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRhdGFiYXNlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcApAQCAtMzYsNyArMzYsOSBAQAogCiAjaW5jbHVkZSAi
RGF0YWJhc2UuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgotI2luY2x1ZGUgIklu
c3BlY3RvclZhbHVlcy5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4K
KwordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC01OCw3ICs2MCw3IEBAIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U6Okluc3BlY3RvckRhdGFi
YXNlUmVzb3VyY2UoUGFzc1JlZlB0cjxEYXRhYmFzZT4gZGF0YWJhCiAKIHZvaWQgSW5zcGVjdG9y
RGF0YWJhc2VSZXNvdXJjZTo6YmluZChJbnNwZWN0b3JEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hl
ciogZGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXIpCiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVy
OjpEYXRhYmFzZTo6RGF0YWJhc2U+IGpzb25PYmplY3QgPSBUeXBlQnVpbGRlcjo6RGF0YWJhc2U6
OkRhdGFiYXNlOjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpE
YXRhYmFzZTo6RGF0YWJhc2U+IGpzb25PYmplY3QgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpE
YXRhYmFzZTo6RGF0YWJhc2U6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRJZChtX2lkKQogICAgICAg
ICAuc2V0RG9tYWluKG1fZG9tYWluKQogICAgICAgICAuc2V0TmFtZShtX25hbWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5k
ZXggYWMyYjcwZS4uODVkZTI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtMzgsMjQgKzM4LDI3IEBACiAjaW5jbHVk
ZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JW
YWx1ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiUmVn
dWxhckV4cHJlc3Npb24uaCIKICNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5oIgotI2luY2x1
ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgor
I2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0lu
c3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi11c2lu
ZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6QXJyYXk7Ci11c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRl
cjo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlsczsKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVy
OjpEZWJ1Z2dlcjo6U2NyaXB0SWQ7Ci11c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0OwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk7Cit1
c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzOwor
dXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OlNjcmlwdElkOwordXNpbmcg
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0OworCit1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IGNoYXIq
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJhY2t0cmFjZU9iamVjdEdyb3VwID0gImJhY2t0cmFj
ZSI7CiAKIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVND
SUlMaXRlcmFsKCJEZWJ1Z2dlciIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVj
dG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiRGVidWdnZXIiKSwgaW5zdHJ1bWVudGluZ0FnZW50
cykKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikK
ICAgICAsIG1fcGF1c2VkU2NyaXB0U3RhdGUoMCkKICAgICAsIG1fY29udGludWVUb0xvY2F0aW9u
QnJlYWtwb2ludElEKG5vQnJlYWtwb2ludElEKQpAQCAtMTM2LDcgKzEzOSw3IEBAIHZvaWQgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiAgICAgZGlzYWJsZSgp
OwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcj4o
ZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yRGVi
dWdnZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsK
QEAgLTIwMCwxNSArMjAzLDE1IEBAIHN0YXRpYyBib29sIG1hdGNoZXMoY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgcGF0dGVybiwgYm9vbCBpc1JlZ2V4KQogCiBzdGF0aWMgYm9vbCBi
cmVha3BvaW50QWN0aW9uVHlwZUZvclN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcsIFNj
cmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlKiBvdXRwdXQpCiB7Ci0gICAgaWYgKHR5cGVTdHJpbmcg
PT0gVHlwZUJ1aWxkZXI6OmdldEVudW1Db25zdGFudFZhbHVlKFR5cGVCdWlsZGVyOjpEZWJ1Z2dl
cjo6QnJlYWtwb2ludEFjdGlvbjo6VHlwZTo6TG9nKSkgeworICAgIGlmICh0eXBlU3RyaW5nID09
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlOjpMb2cpKSB7CiAg
ICAgICAgICpvdXRwdXQgPSBTY3JpcHRCcmVha3BvaW50QWN0aW9uVHlwZUxvZzsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQotICAgIGlmICh0eXBlU3RyaW5nID09IFR5cGVCdWlsZGVyOjpn
ZXRFbnVtQ29uc3RhbnRWYWx1ZShUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rp
b246OlR5cGU6OkV2YWx1YXRlKSkgeworICAgIGlmICh0eXBlU3RyaW5nID09IEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlOjpFdmFsdWF0ZSkpIHsKICAgICAgICAg
Km91dHB1dCA9IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlRXZhbHVhdGU7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KLSAgICBpZiAodHlwZVN0cmluZyA9PSBUeXBlQnVpbGRlcjo6Z2V0
RW51bUNvbnN0YW50VmFsdWUoVHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9u
OjpUeXBlOjpTb3VuZCkpIHsKKyAgICBpZiAodHlwZVN0cmluZyA9PSBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1
Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6VHlwZTo6U291bmQpKSB7CiAgICAgICAgICpvdXRwdXQg
PSBTY3JpcHRCcmVha3BvaW50QWN0aW9uVHlwZVNvdW5kOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CkBAIC0yNTUsOSArMjU4LDkgQEAgc3RhdGljIGJvb2wgYnJlYWtwb2ludEFjdGlvbnNG
cm9tUHJvdG9jb2woRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBSZWZQdHI8SW5zcGUKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3Bv
aW50QnlVcmwoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbGluZU51bWJlciwgY29uc3Qg
U3RyaW5nKiBjb25zdCBvcHRpb25hbFVSTCwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbFVS
TFJlZ2V4LCBjb25zdCBpbnQqIGNvbnN0IG9wdGlvbmFsQ29sdW1uTnVtYmVyLCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0Piogb3B0aW9ucywgVHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVh
a3BvaW50SWQqIG91dEJyZWFrcG9pbnRJZGVudGlmaWVyLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+PiYgbG9jYXRpb25zKQordm9pZCBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbFVS
TCwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbFVSTFJlZ2V4LCBjb25zdCBpbnQqIGNvbnN0
IG9wdGlvbmFsQ29sdW1uTnVtYmVyLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3B0
aW9ucywgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCogb3V0
QnJlYWtwb2ludElkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJh
eTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+PiYgbG9jYXRpb25z
KQogewotICAgIGxvY2F0aW9ucyA9IEFycmF5PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRp
b24+OjpjcmVhdGUoKTsKKyAgICBsb2NhdGlvbnMgPSBBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+OjpjcmVhdGUoKTsKICAgICBpZiAoIW9wdGlvbmFsVVJM
ID09ICFvcHRpb25hbFVSTFJlZ2V4KSB7CiAgICAgICAgICplcnJvclN0cmluZyA9ICJFaXRoZXIg
dXJsIG9yIHVybFJlZ2V4IG11c3QgYmUgc3BlY2lmaWVkLiI7CiAgICAgICAgIHJldHVybjsKQEAg
LTI5NCw3ICsyOTcsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9p
bnRCeVVybChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBsaQogICAgICAgICBpZiAoIW1h
dGNoZXMoc2NyaXB0VVJMLCB1cmwsIGlzUmVnZXgpKQogICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IGxvY2F0aW9u
ID0gcmVzb2x2ZUJyZWFrcG9pbnQoYnJlYWtwb2ludElkZW50aWZpZXIsIGl0LT5rZXksIGJyZWFr
cG9pbnQpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6
OkxvY2F0aW9uPiBsb2NhdGlvbiA9IHJlc29sdmVCcmVha3BvaW50KGJyZWFrcG9pbnRJZGVudGlm
aWVyLCBpdC0+a2V5LCBicmVha3BvaW50KTsKICAgICAgICAgaWYgKGxvY2F0aW9uKQogICAgICAg
ICAgICAgbG9jYXRpb25zLT5hZGRJdGVtKGxvY2F0aW9uKTsKICAgICB9CkBAIC0zMTYsNyArMzE5
LDcgQEAgc3RhdGljIGJvb2wgcGFyc2VMb2NhdGlvbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IEluc3BlY3Rvck9iamVjdCogbG9jYXRpb24sIFMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGxvY2F0aW9uLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3B0aW9ucywgVHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpC
cmVha3BvaW50SWQqIG91dEJyZWFrcG9pbnRJZGVudGlmaWVyLCBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkRlYnVnZ2VyOjpMb2NhdGlvbj4mIGFjdHVhbExvY2F0aW9uKQordm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3Qg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGxvY2F0aW9uLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0Piogb3B0aW9ucywgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFr
cG9pbnRJZCogb3V0QnJlYWtwb2ludElkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+JiBhY3R1YWxMb2NhdGlvbikKIHsKICAgICBTb3Vy
Y2VJRCBzb3VyY2VJRDsKICAgICB1bnNpZ25lZCBsaW5lTnVtYmVyOwpAQCAtMzgzLDcgKzM4Niw3
IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y29udGludWVUb0xvY2F0aW9uKEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QKICAgICByZXN1bWUoZXJyb3JTdHJpbmcpOwogfQog
Ci1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OnJlc29sdmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElk
ZW50aWZpZXIsIFNvdXJjZUlEIHNvdXJjZUlELCBjb25zdCBTY3JpcHRCcmVha3BvaW50JiBicmVh
a3BvaW50KQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9j
YXRpb24+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlc29sdmVCcmVha3BvaW50KGNvbnN0IFN0
cmluZyYgYnJlYWtwb2ludElkZW50aWZpZXIsIFNvdXJjZUlEIHNvdXJjZUlELCBjb25zdCBTY3Jp
cHRCcmVha3BvaW50JiBicmVha3BvaW50KQogewogICAgIFNjcmlwdHNNYXA6Oml0ZXJhdG9yIHNj
cmlwdEl0ZXJhdG9yID0gbV9zY3JpcHRzLmZpbmQoc291cmNlSUQpOwogICAgIGlmIChzY3JpcHRJ
dGVyYXRvciA9PSBtX3NjcmlwdHMuZW5kKCkpCkBAIC00MDMsMTQgKzQwNiwxNCBAQCBQYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OnJlc29sdmVCcmVhawogICAgICAgICBkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHNJdGVyYXRv
ciA9IG1fYnJlYWtwb2ludElkZW50aWZpZXJUb0RlYnVnU2VydmVyQnJlYWtwb2ludElEcy5zZXQo
YnJlYWtwb2ludElkZW50aWZpZXIsIFZlY3RvcjxCcmVha3BvaW50SUQ+KCkpLml0ZXJhdG9yOwog
ICAgIGRlYnVnU2VydmVyQnJlYWtwb2ludElEc0l0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoZGVidWdT
ZXJ2ZXJCcmVha3BvaW50SUQpOwogCi0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6
TG9jYXRpb24+IGxvY2F0aW9uID0gVHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbjo6Y3Jl
YXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0
aW9uPiBsb2NhdGlvbiA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlv
bjo6Y3JlYXRlKCkKICAgICAgICAgLnNldFNjcmlwdElkKFN0cmluZzo6bnVtYmVyKHNvdXJjZUlE
KSkKICAgICAgICAgLnNldExpbmVOdW1iZXIoYWN0dWFsTGluZU51bWJlcik7CiAgICAgbG9jYXRp
b24tPnNldENvbHVtbk51bWJlcihhY3R1YWxDb2x1bW5OdW1iZXIpOwogICAgIHJldHVybiBsb2Nh
dGlvbjsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBzY3JpcHRUb0lu
c3BlY3Rvck9iamVjdChTY3JpcHRPYmplY3Qgc2NyaXB0T2JqZWN0KQorc3RhdGljIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBzY3JpcHRUb0luc3BlY3Rvck9iamVjdChEZXByZWNhdGVkOjpT
Y3JpcHRPYmplY3Qgc2NyaXB0T2JqZWN0KQogewogICAgIGlmIChzY3JpcHRPYmplY3QuaGFzTm9W
YWx1ZSgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTQyMCw3ICs0MjMsNyBAQCBzdGF0aWMgUGFz
c1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHNjcmlwdFRvSW5zcGVjdG9yT2JqZWN0KFNjcmlwdE9i
amVjdCBzY3JpcHRPYgogICAgIHJldHVybiB2YWx1ZS0+YXNPYmplY3QoKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZWFyY2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcqIGVycm9y
LCBjb25zdCBTdHJpbmcmIHNjcmlwdElEU3RyLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBi
b29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlv
bmFsSXNSZWdleCwgUmVmUHRyPEFycmF5PFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpQYWdlOjpTZWFy
Y2hNYXRjaD4+JiByZXN1bHRzKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZWFyY2hJ
bkNvbnRlbnQoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmlwdElEU3RyLCBj
b25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRp
dmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEFycmF5PEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaE1hdGNoPj4mIHJlc3VsdHMpCiB7CiAgICAg
Ym9vbCBpc1JlZ2V4ID0gb3B0aW9uYWxJc1JlZ2V4ID8gKm9wdGlvbmFsSXNSZWdleCA6IGZhbHNl
OwogICAgIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSA/ICpvcHRp
b25hbENhc2VTZW5zaXRpdmUgOiBmYWxzZTsKQEAgLTQzMywxMCArNDM2LDEwIEBAIHZvaWQgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6c2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5nKiBlcnJvciwg
Y29uc3QgU3RyaW5nJiBzCiAgICAgICAgICplcnJvciA9ICJObyBzY3JpcHQgZm9yIGlkOiAiICsg
c2NyaXB0SURTdHI7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0U2NyaXB0
U291cmNlKEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgY29uc3Qg
U3RyaW5nJiBuZXdDb250ZW50LCBjb25zdCBib29sKiBjb25zdCBwcmV2aWV3LCBSZWZQdHI8QXJy
YXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiYgbmV3Q2FsbEZyYW1lcywgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6c2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBzY3Jp
cHRJRCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBjb25zdCBib29sKiBjb25zdCBwcmV2aWV3
LCBSZWZQdHI8QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFt
ZT4+JiBuZXdDYWxsRnJhbWVzLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcmVzdWx0KQogewog
ICAgIGJvb2wgcHJldmlld09ubHkgPSBwcmV2aWV3ICYmICpwcmV2aWV3OwotICAgIFNjcmlwdE9i
amVjdCByZXN1bHRPYmplY3Q7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IHJlc3VsdE9i
amVjdDsKICAgICBpZiAoIXNjcmlwdERlYnVnU2VydmVyKCkuc2V0U2NyaXB0U291cmNlKHNjcmlw
dElELCBuZXdDb250ZW50LCBwcmV2aWV3T25seSwgZXJyb3IsICZtX2N1cnJlbnRDYWxsU3RhY2ss
ICZyZXN1bHRPYmplY3QpKQogICAgICAgICByZXR1cm47CiAgICAgbmV3Q2FsbEZyYW1lcyA9IGN1
cnJlbnRDYWxsRnJhbWVzKCk7CkBAIC00NTUsNyArNDU4LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpnZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJp
bmcmIHMKICAgICAgICAgKmVycm9yID0gIk5vIHNjcmlwdCBmb3IgaWQ6ICIgKyBzY3JpcHRJRFN0
cjsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRGdW5jdGlvbkRldGFpbHMo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0
cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4mIGRldGFpbHMpCit2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+JiBkZXRhaWxzKQogewogICAg
IEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIt
PmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQoZnVuY3Rpb25JZCk7CiAgICAgaWYgKGluamVjdGVk
U2NyaXB0Lmhhc05vVmFsdWUoKSkgewpAQCAtNTQ3LDcgKzU1MCw3IEBAIHZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6c2V0UGF1c2VPbkV4Y2VwdGlvbnNJbXBsKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywKICAgICAgICAgKmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yLiBDb3VsZCBu
b3QgY2hhbmdlIHBhdXNlIG9uIGV4Y2VwdGlvbnMgc3RhdGUiOwogfQogCi12b2lkIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OmV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24s
IGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGNvbnN0IGluY2x1
ZGVDb21tYW5kTGluZUFQSSwgY29uc3QgYm9vbCogY29uc3QgZG9Ob3RQYXVzZU9uRXhjZXB0aW9u
c0FuZE11dGVDb25zb2xlLCBjb25zdCBib29sKiBjb25zdCByZXR1cm5CeVZhbHVlLCBjb25zdCBi
b29sKiBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0PiYgcmVzdWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24p
Cit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJp
bmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIGNvbnN0IGJv
b2wqIGNvbnN0IGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY29uc3QgYm9vbCogY29uc3QgZG9Ob3RQ
YXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBib29sKiBjb25zdCByZXR1cm5C
eVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQogewogICAgIEluamVjdGVkU2Ny
aXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2Ny
aXB0Rm9yT2JqZWN0SWQoY2FsbEZyYW1lSWQpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNO
b1ZhbHVlKCkpIHsKQEAgLTU3MSw3ICs1NzQsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdAog
ICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpjb21waWxlU2NyaXB0KEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxTY3JpcHRJZD4qIHNjcmlw
dElELCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PFN0cmluZz4qIHN5bnRheEVycm9yTWVzc2FnZSkK
K3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y29tcGlsZVNjcmlwdChFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxTY3JpcHRJZD4qIHNjcmlw
dElELCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8U3RyaW5nPiogc3ludGF4RXJy
b3JNZXNzYWdlKQogewogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0
ZWRTY3JpcHRGb3JFdmFsKGVycm9yU3RyaW5nLCAwKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQu
aGFzTm9WYWx1ZSgpKSB7CkBAIC01OTAsNyArNTkzLDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50Ojpjb21waWxlU2NyaXB0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3Ry
aW4KICAgICAqc2NyaXB0SUQgPSBzY3JpcHRJRFZhbHVlOwogfQogCi12b2lkIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OnJ1blNjcmlwdChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFNj
cmlwdElkJiBzY3JpcHRJRCwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQsIGNvbnN0IFN0
cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGNvbnN0IGRvTm90UGF1c2VPbkV4
Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+JiByZXN1bHQsIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93
bikKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cnVuU2NyaXB0KEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgY29uc3QgU2NyaXB0SWQmIHNjcmlwdElELCBjb25zdCBpbnQqIGV4ZWN1dGlv
bkNvbnRleHRJZCwgY29uc3QgU3RyaW5nKiBjb25zdCBvYmplY3RHcm91cCwgY29uc3QgYm9vbCog
Y29uc3QgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKIHsKICAgICBJbmpl
Y3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0Rm9yRXZhbChlcnJvclN0
cmluZywgZXhlY3V0aW9uQ29udGV4dElkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9W
YWx1ZSgpKSB7CkBAIC02MDUsNyArNjA4LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpydW5TY3JpcHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTY3JpcHRJZCYKICAg
ICAgICAgbXV0ZUNvbnNvbGUoKTsKICAgICB9CiAKLSAgICBTY3JpcHRWYWx1ZSB2YWx1ZTsKKyAg
ICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB2YWx1ZTsKICAgICBib29sIHdhc1Rocm93blZhbHVl
OwogICAgIFN0cmluZyBleGNlcHRpb25NZXNzYWdlOwogICAgIHNjcmlwdERlYnVnU2VydmVyKCku
cnVuU2NyaXB0KGluamVjdGVkU2NyaXB0LnNjcmlwdFN0YXRlKCksIHNjcmlwdElELCAmdmFsdWUs
ICZ3YXNUaHJvd25WYWx1ZSwgJmV4Y2VwdGlvbk1lc3NhZ2UpOwpAQCAtNjM4LDE0ICs2NDEsMTQg
QEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzY3JpcHRFeGVjdXRpb25CbG9ja2VkQnlD
U1AoY29uc3QgU3RyaW5nJiBkaXJlY3RpdmUKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8QXJyYXk8
VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpjdXJyZW50Q2FsbEZyYW1lcygpCitQYXNzUmVmUHRyPEFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjdXJy
ZW50Q2FsbEZyYW1lcygpCiB7CiAgICAgaWYgKCFtX3BhdXNlZFNjcmlwdFN0YXRlKQotICAgICAg
ICByZXR1cm4gQXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+OjpjcmVhdGUo
KTsKKyAgICAgICAgcmV0dXJuIEFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2Vy
OjpDYWxsRnJhbWU+OjpjcmVhdGUoKTsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvcihtX3BhdXNlZFNj
cmlwdFN0YXRlKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gQXJyYXk8VHlwZUJ1aWxk
ZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+OjpjcmVhdGUoKTsKKyAgICAgICAgcmV0dXJuIEFycmF5
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+OjpjcmVhdGUoKTsK
ICAgICB9CiAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0LndyYXBDYWxsRnJhbWVzKG1fY3VycmVu
dENhbGxTdGFjayk7CiB9CkBAIC03MTUsNyArNzE4LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpkaWRQYXJzZVNvdXJjZShTb3VyY2VJRCBzb3VyY2VJRCwgY29uc3QgU2NyaXB0JiBp
blMKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFR5
cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IGxvY2F0aW9uID0gcmVzb2x2ZUJyZWFrcG9p
bnQoaXQtPmtleSwgc291cmNlSUQsIGJyZWFrcG9pbnQpOworICAgICAgICBSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiBsb2NhdGlvbiA9IHJlc29sdmVC
cmVha3BvaW50KGl0LT5rZXksIHNvdXJjZUlELCBicmVha3BvaW50KTsKICAgICAgICAgaWYgKGxv
Y2F0aW9uKQogICAgICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmJyZWFrcG9pbnRSZXNv
bHZlZChpdC0+a2V5LCBsb2NhdGlvbik7CiAgICAgfQpAQCAtNzI2LDcgKzcyOSw3IEBAIHZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZmFpbGVkVG9QYXJzZVNvdXJjZShjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgU3RyaW5nCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnNjcmlwdEZhaWxl
ZFRvUGFyc2UodXJsLCBkYXRhLCBmaXJzdExpbmUsIGVycm9yTGluZSwgZXJyb3JNZXNzYWdlKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZShKU0M6OkV4ZWNTdGF0
ZSogc2NyaXB0U3RhdGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBjb25zdCBTY3Jp
cHRWYWx1ZSYgZXhjZXB0aW9uKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVz
ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlJiBjYWxsRnJhbWVzLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZXhjZXB0aW9u
KQogewogICAgIEFTU0VSVChzY3JpcHRTdGF0ZSAmJiAhbV9wYXVzZWRTY3JpcHRTdGF0ZSk7CiAg
ICAgbV9wYXVzZWRTY3JpcHRTdGF0ZSA9IHNjcmlwdFN0YXRlOwpAQCAtNzU1LDcgKzc1OCw3IEBA
IHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UoSlNDOjpFeGVjU3RhdGUqIHNj
cmlwdFN0YXRlLCBjb25zdCBTY3JpcHRWCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRp
ZENvbnRpbnVlKCkKIHsKICAgICBtX3BhdXNlZFNjcmlwdFN0YXRlID0gMDsKLSAgICBtX2N1cnJl
bnRDYWxsU3RhY2sgPSBTY3JpcHRWYWx1ZSgpOworICAgIG1fY3VycmVudENhbGxTdGFjayA9IERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCk7CiAgICAgY2xlYXJCcmVha0RldGFpbHMoKTsKICAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVzdW1lZCgpOwogfQpAQCAtNzcwLDcgKzc3Myw3IEBAIHZv
aWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtQcm9ncmFtKEluc3BlY3RvckRlYnVnZ2Vy
RnJvbnRlbmREaXNwYXRjaGVyOjpSCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFy
KCkKIHsKICAgICBtX3BhdXNlZFNjcmlwdFN0YXRlID0gMDsKLSAgICBtX2N1cnJlbnRDYWxsU3Rh
Y2sgPSBTY3JpcHRWYWx1ZSgpOworICAgIG1fY3VycmVudENhbGxTdGFjayA9IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlKCk7CiAgICAgbV9zY3JpcHRzLmNsZWFyKCk7CiAgICAgbV9icmVha3BvaW50
SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SURzLmNsZWFyKCk7CiAgICAgbV9jb250
aW51ZVRvTG9jYXRpb25CcmVha3BvaW50SUQgPSBub0JyZWFrcG9pbnRJRDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCmluZGV4IDRiZTYw
MDAuLjk1ZWRhMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQuaApAQCAtMzEsMTIgKzMxLDE0IEBACiAjZGVmaW5lIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnRfaAogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJM
RShJTlNQRUNUT1IpCisKICNpbmNsdWRlICJCcmVha3BvaW50SUQuaCIKICNpbmNsdWRlICJDb25z
b2xlQVBJVHlwZXMuaCIKICNpbmNsdWRlICJDb25zb2xlVHlwZXMuaCIKICNpbmNsdWRlICJJbmpl
Y3RlZFNjcmlwdC5oIgotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250
ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0QnJlYWtwb2ludC5oIgogI2luY2x1ZGUgIlNjcmlwdERlYnVnTGlzdGVuZXIuaCIKICNpbmNs
dWRlICJTY3JpcHRTdGF0ZS5oIgpAQCAtNDgsMTkgKzUwLDI1IEBACiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAotbmFtZXNwYWNlIFdl
YkNvcmUgeworbmFtZXNwYWNlIERlcHJlY2F0ZWQgeworY2xhc3MgU2NyaXB0VmFsdWU7Cit9CiAK
LWNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKK25hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xh
c3MgSW5zcGVjdG9yQXJyYXk7CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnNwZWN0
b3JWYWx1ZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJbmplY3RlZFNjcmlw
dE1hbmFnZXI7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgU2NyaXB0RGVidWdT
ZXJ2ZXI7Ci1jbGFzcyBTY3JpcHRWYWx1ZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7
CiAKLWNsYXNzIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFn
ZW50LCBwdWJsaWMgU2NyaXB0RGVidWdMaXN0ZW5lciwgcHVibGljIEluc3BlY3RvckRlYnVnZ2Vy
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQg
OiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgU2NyaXB0RGVidWdMaXN0ZW5lciwg
cHVibGljIEluc3BlY3RvckRlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KTsgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGJhY2t0cmFjZU9i
amVjdEdyb3VwOwpAQCAtNzEsNyArNzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNh
blNldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyosIGJvb2wqKTsKICAgICB2aXJ0dWFsIHZvaWQg
c3VwcG9ydHNTZXBhcmF0ZVNjcmlwdENvbXBpbGF0aW9uQW5kRXhlY3V0aW9uKEVycm9yU3RyaW5n
KiwgYm9vbCopOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciop
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0
cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICBib29sIGlzUGF1c2VkKCk7
CkBAIC04MywxNSArOTEsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVy
cm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIHNldEJyZWFrcG9pbnRzQWN0aXZlKEVycm9y
U3RyaW5nKiwgYm9vbCBhY3RpdmUpOwogCi0gICAgdmlydHVhbCB2b2lkIHNldEJyZWFrcG9pbnRC
eVVybChFcnJvclN0cmluZyosIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFs
VVJMLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCogb3B0aW9uYWxD
b2x1bW5OdW1iZXIsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvcHRpb25zLCBUeXBl
QnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJy
YXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4+JiBsb2NhdGlvbnMpOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4mIGxvY2F0aW9uLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3B0
aW9ucywgVHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqLCBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4mIGFjdHVhbExvY2F0aW9uKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nKiwgaW50IGxpbmVOdW1iZXIsIGNv
bnN0IFN0cmluZyogb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxVUkxSZWdleCwg
Y29uc3QgaW50KiBvcHRpb25hbENvbHVtbk51bWJlciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0Piogb3B0aW9ucywgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdn
ZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+PiYgbG9jYXRpb25zKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0QnJlYWtwb2ludChFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIGxvY2F0aW9uLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBvcHRpb25zLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkRlYnVnZ2VyOjpMb2NhdGlvbj4mIGFjdHVhbExvY2F0aW9uKTsKICAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlQnJlYWtwb2ludChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElk
ZW50aWZpZXIpOwotICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJp
bmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgbG9jYXRpb24pOworICAgIHZpcnR1
YWwgdm9pZCBjb250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBsb2NhdGlvbik7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
c2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgY29u
c3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25z
dCBib29sKiBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1
aWxkZXI6OlBhZ2U6OlNlYXJjaE1hdGNoPj4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2NyaXB0
U291cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgY29uc3QgU3RyaW5n
JiBuZXdDb250ZW50LCBjb25zdCBib29sKiBwcmV2aWV3LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4mIG5ld0NhbGxGcmFtZXMsIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hJ
bkNvbnRlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNjcmlwdElELCBjb25zdCBTdHJp
bmcmIHF1ZXJ5LCBjb25zdCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wq
IG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaE1hdGNoPj4mKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJ
RCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBjb25zdCBib29sKiBwcmV2aWV3LCBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVi
dWdnZXI6OkNhbGxGcmFtZT4+JiBuZXdDYWxsRnJhbWVzLCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+JiByZXN1bHQpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRTY3JpcHRTb3VyY2Uo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNjcmlwdElELCBTdHJpbmcqIHNjcmlwdFNvdXJj
ZSk7Ci0gICAgdmlydHVhbCB2b2lkIGdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6RnVu
Y3Rpb25EZXRhaWxzPiYpOworICAgIHZpcnR1YWwgdm9pZCBnZXRGdW5jdGlvbkRldGFpbHMoRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiYpOwogICAgIHZpcnR1YWwgdm9p
ZCBwYXVzZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoRXJyb3JTdHJp
bmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RlcE92ZXIoRXJyb3JTdHJpbmcqKTsKQEAgLTEwNiwx
NSArMTE0LDE1IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Ym9vbCogZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBib29sKiByZXR1cm5CeVZhbHVlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0PiYgcmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlQnVpbGRlcjo6
T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOwotICAgIHZvaWQgY29tcGlsZVNjcmlwdChFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkwsIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpTY3JpcHRJ
ZD4qLCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PFN0cmluZz4qIHN5bnRheEVycm9yTWVzc2FnZSk7
Ci0gICAgdm9pZCBydW5TY3JpcHQoRXJyb3JTdHJpbmcqLCBjb25zdCBUeXBlQnVpbGRlcjo6RGVi
dWdnZXI6OlNjcmlwdElkJiwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQsIGNvbnN0IFN0
cmluZyogb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRN
dXRlQ29uc29sZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiBy
ZXN1bHQsIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKTsKKyAg
ICB2b2lkIGNvbXBpbGVTY3JpcHQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Np
b24sIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRP
dXRwdXQ8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OlNjcmlwdElkPiosIEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxTdHJpbmc+KiBzeW50YXhFcnJvck1lc3NhZ2Up
OworICAgIHZvaWQgcnVuU2NyaXB0KEVycm9yU3RyaW5nKiwgY29uc3QgSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6RGVidWdnZXI6OlNjcmlwdElkJiwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0
SWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGRvTm90UGF1c2VPbkV4
Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0
T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOwogICAgIHZpcnR1YWwgdm9pZCBzZXRPdmVybGF5TWVz
c2FnZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyopOwogCi0gICAgdm9pZCBzY2hlZHVsZVBh
dXNlT25OZXh0U3RhdGVtZW50KEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpS
ZWFzb246OkVudW0gYnJlYWtSZWFzb24sIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRh
KTsKKyAgICB2b2lkIHNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoSW5zcGVjdG9yRGVidWdn
ZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RW51bSBicmVha1JlYXNvbiwgUGFzc1JlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gZGF0YSk7CiAgICAgdm9pZCBjYW5jZWxQYXVz
ZU9uTmV4dFN0YXRlbWVudCgpOwotICAgIHZvaWQgYnJlYWtQcm9ncmFtKEluc3BlY3RvckRlYnVn
Z2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkVudW0gYnJlYWtSZWFzb24sIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhKTsKKyAgICB2b2lkIGJyZWFrUHJvZ3JhbShJbnNwZWN0
b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpFbnVtIGJyZWFrUmVhc29uLCBQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBkYXRhKTsKICAgICB2aXJ0dWFs
IHZvaWQgc2NyaXB0RXhlY3V0aW9uQmxvY2tlZEJ5Q1NQKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZl
VGV4dCk7CiAKICAgICBjbGFzcyBMaXN0ZW5lciB7CkBAIC0xNDEsMjEgKzE0OSwyMSBAQCBwcm90
ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRp
c2FibGUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2UoSlNDOjpFeGVjU3RhdGUqLCBjb25z
dCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywgY29uc3QgU2NyaXB0VmFsdWUmIGV4Y2VwdGlvbik7
CisgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlJiBleGNlcHRpb24pOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb250aW51ZSgpOwogICAgIHZv
aWQgcmVzZXQoKTsKIAogcHJpdmF0ZToKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2VuYWJsZWQ7IH07CiAKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBl
QnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IGN1cnJlbnRDYWxsRnJhbWVzKCk7CisgICAg
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4gY3VycmVudENhbGxGcmFtZXMoKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBkaWRQYXJzZVNvdXJjZShTb3VyY2VJRCwgY29uc3QgU2NyaXB0JikgT1ZF
UlJJREUgRklOQUw7CiAgICAgdmlydHVhbCB2b2lkIGZhaWxlZFRvUGFyc2VTb3VyY2UoY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZGF0YSwgaW50IGZpcnN0TGluZSwgaW50IGVycm9y
TGluZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIE9WRVJSSURFIEZJTkFMOwogCiAgICAg
dm9pZCBzZXRQYXVzZU9uRXhjZXB0aW9uc0ltcGwoRXJyb3JTdHJpbmcqLCBpbnQpOwogCi0gICAg
UGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiByZXNvbHZlQnJlYWtw
b2ludChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZGVudGlmaWVyLCBTb3VyY2VJRCwgY29uc3Qg
U2NyaXB0QnJlYWtwb2ludCYpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6RGVidWdnZXI6OkxvY2F0aW9uPiByZXNvbHZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGJy
ZWFrcG9pbnRJZGVudGlmaWVyLCBTb3VyY2VJRCwgY29uc3QgU2NyaXB0QnJlYWtwb2ludCYpOwog
ICAgIHZvaWQgY2xlYXIoKTsKICAgICBib29sIGFzc2VydFBhdXNlZChFcnJvclN0cmluZyopOwog
ICAgIHZvaWQgY2xlYXJCcmVha0RldGFpbHMoKTsKQEAgLTE2NCwxOSArMTcyLDE5IEBAIHByaXZh
dGU6CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U291cmNlSUQsIFNjcmlwdD4gU2NyaXB0c01hcDsK
ICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8QnJlYWtwb2ludElEPj4gQnJlYWtw
b2ludElkZW50aWZpZXJUb0RlYnVnU2VydmVyQnJlYWtwb2ludElEc01hcDsKLSAgICB0eXBlZGVm
IEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Pj4gQnJlYWtwb2ludElkZW50
aWZpZXJUb0JyZWFrcG9pbnRNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Pj4gQnJlYWtwb2ludElkZW50aWZpZXJUb0JyZWFr
cG9pbnRNYXA7CiAKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlz
cGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CiAgICAgUmVmUHRyPEluc3BlY3RvckRlYnVn
Z2VyQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAgSlNDOjpFeGVj
U3RhdGUqIG1fcGF1c2VkU2NyaXB0U3RhdGU7Ci0gICAgU2NyaXB0VmFsdWUgbV9jdXJyZW50Q2Fs
bFN0YWNrOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG1fY3VycmVudENhbGxTdGFjazsK
ICAgICBTY3JpcHRzTWFwIG1fc2NyaXB0czsKICAgICBCcmVha3BvaW50SWRlbnRpZmllclRvRGVi
dWdTZXJ2ZXJCcmVha3BvaW50SURzTWFwIG1fYnJlYWtwb2ludElkZW50aWZpZXJUb0RlYnVnU2Vy
dmVyQnJlYWtwb2ludElEczsKICAgICBCcmVha3BvaW50SWRlbnRpZmllclRvQnJlYWtwb2ludE1h
cCBtX2phdmFTY3JpcHRCcmVha3BvaW50czsKICAgICBCcmVha3BvaW50SUQgbV9jb250aW51ZVRv
TG9jYXRpb25CcmVha3BvaW50SUQ7CiAgICAgSW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3Bh
dGNoZXI6OlJlYXNvbjo6RW51bSBtX2JyZWFrUmVhc29uOwotICAgIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IG1fYnJlYWtBdXhEYXRhOworICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdD4gbV9icmVha0F1eERhdGE7CiAgICAgYm9vbCBtX2VuYWJsZWQ7CiAgICAgYm9vbCBtX2ph
dmFTY3JpcHRQYXVzZVNjaGVkdWxlZDsKICAgICBMaXN0ZW5lciogbV9saXN0ZW5lcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGb3J3YXJkaW5nLmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRm9yd2FyZGluZy5oCmluZGV4IGY2MDY1
OTQuLmY2OGZjZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGb3J3YXJkaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZv
cndhcmRpbmcuaApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsIHsgfTsKK3R5cGVkZWYgSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwg
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogfQogCiAjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVj
dG9yRm9yd2FyZGluZ19oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCmluZGV4IDg3MTFhOGUuLmFhOGNhMGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbC5jcHAKQEAgLTQ4LDE3ICs0OCwxOSBAQAogI2luY2x1ZGUgIk1haW5G
cmFtZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgi
Ci0jaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0
LmgiCisjaW5jbHVkZSAiU2NyaXB0R2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0U3Rh
dGUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVk
ZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgor
I2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBpbnNwZWN0b3JBdHRhY2hlZEhlaWdodFNldHRpbmcg
PSAiaW5zcGVjdG9yQXR0YWNoZWRIZWlnaHQiOwpAQCAtMzQ0LDcgKzM0Niw3IEBAIGJvb2wgSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6aXNVbmRlclRlc3QoKQogCiBib29sIEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWw6OmV2YWx1YXRlQXNCb29sZWFuKGNvbnN0IFN0cmluZyYgZXhw
cmVzc2lvbikKIHsKLSAgICBTY3JpcHRWYWx1ZSB2YWx1ZSA9IG1fZnJvbnRlbmRQYWdlLT5tYWlu
RnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KGV4cHJlc3Npb24pOworICAgIERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlIHZhbHVlID0gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLnNjcmlw
dCgpLmV4ZWN1dGVTY3JpcHQoZXhwcmVzc2lvbik7CiAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5n
KG1haW5Xb3JsZEV4ZWNTdGF0ZSgmbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpKSkgPT0gInRy
dWUiOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuY3BwCmluZGV4IGJlMjRlMWUuLjI4MDlmNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCkBAIC00Niw2ICs0Niw3
IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCIKKyNpbmNsdWRl
ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNs
dWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtNTMsMjkgKzU0LDMzIEBA
CiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5o
IgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKLSNpbmNsdWRlICJTY3JpcHRGdW5jdGlv
bkNhbGwuaCIKKyNpbmNsdWRlICJTY3JpcHRHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJTY3Jp
cHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNvdW5kLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRp
Y2F0b3IuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaD4KICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogY2xhc3Mg
RnJvbnRlbmRNZW51UHJvdmlkZXIgOiBwdWJsaWMgQ29udGV4dE1lbnVQcm92aWRlciB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RnJvbnRlbmRNZW51UHJvdmlkZXI+IGNyZWF0ZShJ
bnNwZWN0b3JGcm9udGVuZEhvc3QqIGZyb250ZW5kSG9zdCwgU2NyaXB0T2JqZWN0IGZyb250ZW5k
QXBpT2JqZWN0LCBjb25zdCBWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiYgaXRlbXMpCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8RnJvbnRlbmRNZW51UHJvdmlkZXI+IGNyZWF0ZShJbnNwZWN0b3JGcm9u
dGVuZEhvc3QqIGZyb250ZW5kSG9zdCwgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IGZyb250ZW5k
QXBpT2JqZWN0LCBjb25zdCBWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiYgaXRlbXMpCiAgICAgewog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZyb250ZW5kTWVudVByb3ZpZGVyKGZyb250ZW5k
SG9zdCwgZnJvbnRlbmRBcGlPYmplY3QsIGl0ZW1zKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQg
ZGlzY29ubmVjdCgpCiAgICAgewotICAgICAgICBtX2Zyb250ZW5kQXBpT2JqZWN0ID0gU2NyaXB0
T2JqZWN0KCk7CisgICAgICAgIG1fZnJvbnRlbmRBcGlPYmplY3QgPSBEZXByZWNhdGVkOjpTY3Jp
cHRPYmplY3QoKTsKICAgICAgICAgbV9mcm9udGVuZEhvc3QgPSAwOwogICAgIH0KICAgICAKIHBy
aXZhdGU6Ci0gICAgRnJvbnRlbmRNZW51UHJvdmlkZXIoSW5zcGVjdG9yRnJvbnRlbmRIb3N0KiBm
cm9udGVuZEhvc3QsIFNjcmlwdE9iamVjdCBmcm9udGVuZEFwaU9iamVjdCwgY29uc3QgVmVjdG9y
PENvbnRleHRNZW51SXRlbT4mIGl0ZW1zKQorICAgIEZyb250ZW5kTWVudVByb3ZpZGVyKEluc3Bl
Y3RvckZyb250ZW5kSG9zdCogZnJvbnRlbmRIb3N0LCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3Qg
ZnJvbnRlbmRBcGlPYmplY3QsIGNvbnN0IFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+JiBpdGVtcykK
ICAgICAgICAgOiBtX2Zyb250ZW5kSG9zdChmcm9udGVuZEhvc3QpCiAgICAgICAgICwgbV9mcm9u
dGVuZEFwaU9iamVjdChmcm9udGVuZEFwaU9iamVjdCkKICAgICAgICAgLCBtX2l0ZW1zKGl0ZW1z
KQpAQCAtOTksNyArMTA0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFVzZXJHZXN0dXJlSW5k
aWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7
CiAgICAgICAgICAgICBpbnQgaXRlbU51bWJlciA9IGl0ZW0tPmFjdGlvbigpIC0gQ29udGV4dE1l
bnVJdGVtQmFzZUN1c3RvbVRhZzsKIAotICAgICAgICAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1
bmN0aW9uKG1fZnJvbnRlbmRBcGlPYmplY3QsICJjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCIpOwor
ICAgICAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1fZnJv
bnRlbmRBcGlPYmplY3QsICJjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCIsIFdlYkNvcmU6OmZ1bmN0
aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICAgICAgICAgIGZ1bmN0aW9uLmFwcGVu
ZEFyZ3VtZW50KGl0ZW1OdW1iZXIpOwogICAgICAgICAgICAgZnVuY3Rpb24uY2FsbCgpOwogICAg
ICAgICB9CkBAIC0xMDgsNyArMTEzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY29u
dGV4dE1lbnVDbGVhcmVkKCkKICAgICB7CiAgICAgICAgIGlmIChtX2Zyb250ZW5kSG9zdCkgewot
ICAgICAgICAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1fZnJvbnRlbmRBcGlPYmpl
Y3QsICJjb250ZXh0TWVudUNsZWFyZWQiKTsKKyAgICAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlw
dEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2Zyb250ZW5kQXBpT2JqZWN0LCAiY29udGV4dE1lbnVD
bGVhcmVkIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAg
ICAgICAgICAgZnVuY3Rpb24uY2FsbCgpOwogCiAgICAgICAgICAgICBtX2Zyb250ZW5kSG9zdC0+
bV9tZW51UHJvdmlkZXIgPSAwOwpAQCAtMTE3LDcgKzEyMiw3IEBAIHByaXZhdGU6CiAgICAgfQog
CiAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0KiBtX2Zyb250ZW5kSG9zdDsKLSAgICBTY3JpcHRP
YmplY3QgbV9mcm9udGVuZEFwaU9iamVjdDsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3Qg
bV9mcm9udGVuZEFwaU9iamVjdDsKICAgICBWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiBtX2l0ZW1z
OwogfTsKICNlbmRpZgpAQCAtMjcyLDcgKzI3Nyw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRI
b3N0OjpzaG93Q29udGV4dE1lbnUoRXZlbnQqIGV2ZW50LCBjb25zdCBWZWN0b3I8Q29udGV4dE1l
CiAKICAgICBBU1NFUlQobV9mcm9udGVuZFBhZ2UpOwogICAgIEpTQzo6RXhlY1N0YXRlKiBmcm9u
dGVuZEV4ZWNTdGF0ZSA9IGV4ZWNTdGF0ZUZyb21QYWdlKGRlYnVnZ2VyV29ybGQoKSwgbV9mcm9u
dGVuZFBhZ2UpOwotICAgIFNjcmlwdE9iamVjdCBmcm9udGVuZEFwaU9iamVjdDsKKyAgICBEZXBy
ZWNhdGVkOjpTY3JpcHRPYmplY3QgZnJvbnRlbmRBcGlPYmplY3Q7CiAgICAgaWYgKCFTY3JpcHRH
bG9iYWxPYmplY3Q6OmdldChmcm9udGVuZEV4ZWNTdGF0ZSwgIkluc3BlY3RvckZyb250ZW5kQVBJ
IiwgZnJvbnRlbmRBcGlPYmplY3QpKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNwcAppbmRleCAwODE0YTBmLi43Yjc4OGFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmls
ZXJBZ2VudC5jcHAKQEAgLTM5LDYgKzM5LDggQEAKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdl
bnRzLmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZXIuaCIKIAordXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgY2hhciogY29u
c3QgVXNlckluaXRpYXRlZFByb2ZpbGVOYW1lSGVhcCA9ICJvcmcud2Via2l0LnByb2ZpbGVzLnVz
ZXItaW5pdGlhdGVkIjsKQEAgLTQ5LDcgKzUxLDcgQEAgUGFzc093blB0cjxJbnNwZWN0b3JIZWFw
UHJvZmlsZXJBZ2VudD4gSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OmNyZWF0ZShJbnN0cnUK
IH0KIAogSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6Okluc3BlY3RvckhlYXBQcm9maWxlckFn
ZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluamVjdGVkU2Ny
aXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgIDogSW5zcGVjdG9yQmFzZUFn
ZW50KEFTQ0lJTGl0ZXJhbCgiSGVhcFByb2ZpbGVyIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisg
ICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJIZWFwUHJvZmlsZXIiKSwgaW5z
dHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVk
U2NyaXB0TWFuYWdlcikKICAgICAsIG1fbmV4dFVzZXJJbml0aWF0ZWRIZWFwU25hcHNob3ROdW1i
ZXIoMSkKICAgICAsIG1fcHJvZmlsZUhlYWRlcnNSZXF1ZXN0ZWQoZmFsc2UpCkBAIC04MCw3ICs4
Miw3IEBAIHZvaWQgSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OnJlc2V0RnJvbnRlbmRQcm9m
aWxlcygpCiAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXNldFByb2ZpbGVzKCk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JI
ZWFwUHJvZmlsZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9ySGVhcFByb2ZpbGVyRnJvbnRlbmREaXNw
YXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNw
ZWN0b3JIZWFwUHJvZmlsZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRj
aGVyLCB0aGlzKTsKQEAgLTk5LDkgKzEwMSw5IEBAIHZvaWQgSW5zcGVjdG9ySGVhcFByb2ZpbGVy
QWdlbnQ6OmNvbGxlY3RHYXJiYWdlKFdlYkNvcmU6OkVycm9yU3RyaW5nKikKICAgICBTY3JpcHRQ
cm9maWxlcjo6Y29sbGVjdEdhcmJhZ2UoKTsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6
SGVhcFByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPiBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6
Y3JlYXRlU25hcHNob3RIZWFkZXIoY29uc3QgU2NyaXB0SGVhcFNuYXBzaG90JiBzbmFwc2hvdCkK
K1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6SGVhcFByb2ZpbGVyOjpQcm9maWxl
SGVhZGVyPiBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6Y3JlYXRlU25hcHNob3RIZWFkZXIo
Y29uc3QgU2NyaXB0SGVhcFNuYXBzaG90JiBzbmFwc2hvdCkKIHsKLSAgICBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkhlYXBQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4gaGVhZGVyID0gVHlwZUJ1aWxkZXI6
OkhlYXBQcm9maWxlcjo6UHJvZmlsZUhlYWRlcjo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6SGVhcFByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPiBoZWFkZXIgPSBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpIZWFwUHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI6OmNyZWF0
ZSgpCiAgICAgICAgIC5zZXRVaWQoc25hcHNob3QudWlkKCkpCiAgICAgICAgIC5zZXRUaXRsZShz
bmFwc2hvdC50aXRsZSgpKTsKICAgICBoZWFkZXItPnNldE1heEpTT2JqZWN0SWQoc25hcHNob3Qu
bWF4U25hcHNob3RKU09iamVjdElkKCkpOwpAQCAtMTEzLDEwICsxMTUsMTAgQEAgdm9pZCBJbnNw
ZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6aGFzSGVhcFByb2ZpbGVyKEVycm9yU3RyaW5nKiwgYm9v
bCogcmVzdWx0KQogICAgICpyZXN1bHQgPSBTY3JpcHRQcm9maWxlcjo6aGFzSGVhcFByb2ZpbGVy
KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OmdldFByb2ZpbGVIZWFk
ZXJzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6
SGVhcFByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPj4mIGhlYWRlcnMpCit2b2lkIEluc3BlY3Rvckhl
YXBQcm9maWxlckFnZW50OjpnZXRQcm9maWxlSGVhZGVycyhFcnJvclN0cmluZyosIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpIZWFw
UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+PiYgaGVhZGVycykKIHsKICAgICBtX3Byb2ZpbGVIZWFk
ZXJzUmVxdWVzdGVkID0gdHJ1ZTsKLSAgICBoZWFkZXJzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5
cGVCdWlsZGVyOjpIZWFwUHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+OjpjcmVhdGUoKTsKKyAgICBo
ZWFkZXJzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6SGVhcFByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPjo6Y3JlYXRlKCk7CiAKICAgICBJZFRv
SGVhcFNuYXBzaG90TWFwOjppdGVyYXRvciBzbmFwc2hvdHNFbmQgPSBtX3NuYXBzaG90cy5lbmQo
KTsKICAgICBmb3IgKElkVG9IZWFwU25hcHNob3RNYXA6Oml0ZXJhdG9yIGl0ID0gbV9zbmFwc2hv
dHMuYmVnaW4oKTsgaXQgIT0gc25hcHNob3RzRW5kOyArK2l0KQpAQCAtMTkwLDcgKzE5Miw3IEBA
IHZvaWQgSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OnRha2VIZWFwU25hcHNob3QoRXJyb3JT
dHJpbmcqLCBjb25zdCBib29sKiByZXBvCiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvckhlYXBQ
cm9maWxlckFnZW50OjpnZXRPYmplY3RCeUhlYXBPYmplY3RJZChFcnJvclN0cmluZyogZXJyb3Is
IGNvbnN0IFN0cmluZyYgaGVhcFNuYXBzaG90T2JqZWN0SWQsIGNvbnN0IFN0cmluZyogb2JqZWN0
R3JvdXAsIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0
KQordm9pZCBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6Z2V0T2JqZWN0QnlIZWFwT2JqZWN0
SWQoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIGhlYXBTbmFwc2hvdE9iamVjdElk
LCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0KQogewogICAgIGJvb2wgb2s7CiAgICAg
dW5zaWduZWQgaWQgPSBoZWFwU25hcHNob3RPYmplY3RJZC50b1VJbnQoJm9rKTsKQEAgLTE5OCw3
ICsyMDAsNyBAQCB2b2lkIEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpnZXRPYmplY3RCeUhl
YXBPYmplY3RJZChFcnJvclN0cmluZyogZXJyb3IsIGNvbgogICAgICAgICAqZXJyb3IgPSAiSW52
YWxpZCBoZWFwIHNuYXBzaG90IG9iamVjdCBpZCI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgU2NyaXB0T2JqZWN0IGhlYXBPYmplY3QgPSBTY3JpcHRQcm9maWxlcjo6b2JqZWN0QnlIZWFw
T2JqZWN0SWQoaWQpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBoZWFwT2JqZWN0ID0g
U2NyaXB0UHJvZmlsZXI6Om9iamVjdEJ5SGVhcE9iamVjdElkKGlkKTsKICAgICBpZiAoaGVhcE9i
amVjdC5oYXNOb1ZhbHVlKCkpIHsKICAgICAgICAgKmVycm9yID0gIk9iamVjdCBpcyBub3QgYXZh
aWxhYmxlIjsKICAgICAgICAgcmV0dXJuOwpAQCAtMjIwLDcgKzIyMiw3IEBAIHZvaWQgSW5zcGVj
dG9ySGVhcFByb2ZpbGVyQWdlbnQ6OmdldEhlYXBPYmplY3RJZChFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGNvbnN0CiAgICAgICAgICplcnJvclN0cmluZyA9ICJJbnNwZWN0ZWQgY29udGV4dCBo
YXMgZ29uZSI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgU2NyaXB0VmFsdWUgdmFsdWUg
PSBpbmplY3RlZFNjcmlwdC5maW5kT2JqZWN0QnlJZChvYmplY3RJZCk7CisgICAgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUgdmFsdWUgPSBpbmplY3RlZFNjcmlwdC5maW5kT2JqZWN0QnlJZChvYmpl
Y3RJZCk7CiAgICAgaWYgKHZhbHVlLmhhc05vVmFsdWUoKSB8fCB2YWx1ZS5pc1VuZGVmaW5lZCgp
KSB7CiAgICAgICAgICplcnJvclN0cmluZyA9ICJPYmplY3Qgd2l0aCBnaXZlbiBpZCBub3QgZm91
bmQiOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5oCmluZGV4IGNjMzY4NjguLjYyYzEzZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJB
Z2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmls
ZXJBZ2VudC5oCkBAIC0zMyw4ICszMyw5IEBACiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJV
R0dFUikgJiYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2Vu
dC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNDksNyArNTAsNyBAQCBjbGFzcyBTY3JpcHRQ
cm9maWxlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9y
SGVhcFByb2ZpbGVyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5z
cGVjdG9ySGVhcFByb2ZpbGVyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3Bl
Y3RvckhlYXBQcm9maWxlckFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGlj
IEluc3BlY3RvckhlYXBQcm9maWxlckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JI
ZWFwUHJvZmlsZXJBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbmplY3RlZFNj
cmlwdE1hbmFnZXIqKTsKQEAgLTYxLDE2ICs2MiwxNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IHZvaWQgaGFzSGVhcFByb2ZpbGVyKEVycm9yU3RyaW5nKiwgYm9vbCopOwogCi0gICAgdmlydHVh
bCB2b2lkIGdldFByb2ZpbGVIZWFkZXJzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcnJheTxUeXBlQnVpbGRlcjo6SGVhcFByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPj4mKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZ2V0UHJvZmlsZUhlYWRlcnMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6SGVhcFBy
b2ZpbGVyOjpQcm9maWxlSGVhZGVyPj4mKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0SGVhcFNuYXBz
aG90KEVycm9yU3RyaW5nKiwgaW50IHVpZCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVByb2Zp
bGUoRXJyb3JTdHJpbmcqLCBpbnQgdWlkKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5z
cGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAg
dmlydHVhbCB2b2lkIHRha2VIZWFwU25hcHNob3QoRXJyb3JTdHJpbmcqLCBjb25zdCBib29sKiBy
ZXBvcnRQcm9ncmVzcyk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0T2JqZWN0QnlIZWFwT2JqZWN0
SWQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGhlYXBTbmFwc2hvdE9iamVjdElkLCBjb25z
dCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdD4mIHJlc3VsdCk7CisgICAgdmlydHVhbCB2b2lkIGdldE9iamVjdEJ5SGVhcE9iamVj
dElkKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBoZWFwU25hcHNob3RPYmplY3RJZCwgY29u
c3QgU3RyaW5nKiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCk7CiAgICAgdmlydHVhbCB2b2lkIGdldEhlYXBP
YmplY3RJZChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIFN0cmluZyogaGVh
cFNuYXBzaG90T2JqZWN0SWQpOwogCiBwcml2YXRlOgpAQCAtODAsNyArODEsNyBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCByZXNldEZyb250ZW5kUHJvZmlsZXMoKTsKIAotICAgIFBhc3NSZWZQdHI8
VHlwZUJ1aWxkZXI6OkhlYXBQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4gY3JlYXRlU25hcHNob3RI
ZWFkZXIoY29uc3QgU2NyaXB0SGVhcFNuYXBzaG90Jik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpIZWFwUHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+IGNyZWF0ZVNuYXBz
aG90SGVhZGVyKGNvbnN0IFNjcmlwdEhlYXBTbmFwc2hvdCYpOwogCiAgICAgSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW5zcGVjdG9ySGVhcFByb2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0
Y2hlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRl
eGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQuY3BwCmluZGV4IGEwMjU3MTMuLmZiNDJmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApAQCAtNjEsMjcg
KzYxLDI4IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgotI2luY2x1ZGUg
Ikluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3Rv
clZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotdXNpbmcgV2ViQ29yZTo6VHlw
ZUJ1aWxkZXI6OkFycmF5OwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6
RGF0YWJhc2VXaXRoT2JqZWN0U3RvcmVzOwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6Oklu
ZGV4ZWREQjo6RGF0YUVudHJ5OwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkluZGV4ZWRE
Qjo6S2V5OwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6S2V5UGF0aDsK
LXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6OktleVJhbmdlOwotdXNpbmcg
V2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmU7Ci11c2luZyBXZWJD
b3JlOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpPYmplY3RTdG9yZUluZGV4OwordXNpbmcgSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk7Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpJbmRleGVkREI6OkRhdGFiYXNlV2l0aE9iamVjdFN0b3JlczsKK3VzaW5nIEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6RGF0YUVudHJ5OwordXNpbmcgSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6SW5kZXhlZERCOjpLZXk7Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpJ
bmRleGVkREI6OktleVBhdGg7Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpJbmRleGVk
REI6OktleVJhbmdlOwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpP
YmplY3RTdG9yZTsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6T2Jq
ZWN0U3RvcmVJbmRleDsKIAordHlwZWRlZiBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjpDYWxsYmFja0Jhc2UgUmVxdWVzdENhbGxiYWNrOwogdHlwZWRlZiBXZWJDb3JlOjpJ
bnNwZWN0b3JJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlcXVlc3REYXRhYmFz
ZU5hbWVzQ2FsbGJhY2sgUmVxdWVzdERhdGFiYXNlTmFtZXNDYWxsYmFjazsKIHR5cGVkZWYgV2Vi
Q29yZTo6SW5zcGVjdG9ySW5kZXhlZERCQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXF1ZXN0
RGF0YWJhc2VDYWxsYmFjayBSZXF1ZXN0RGF0YWJhc2VDYWxsYmFjazsKIHR5cGVkZWYgV2ViQ29y
ZTo6SW5zcGVjdG9ySW5kZXhlZERCQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXF1ZXN0RGF0
YUNhbGxiYWNrIFJlcXVlc3REYXRhQ2FsbGJhY2s7Ci10eXBlZGVmIFdlYkNvcmU6Okluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UgUmVxdWVzdENhbGxiYWNrOwogdHlwZWRl
ZiBXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkNs
ZWFyT2JqZWN0U3RvcmVDYWxsYmFjayBDbGVhck9iamVjdFN0b3JlQ2FsbGJhY2s7CiAKK3VzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNl
IHsKQEAgLTEyMyw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBSZWZQ
dHI8RE9NU3RyaW5nTGlzdD4gZGF0YWJhc2VOYW1lc0xpc3QgPSByZXF1ZXN0UmVzdWx0LT5kb21T
dHJpbmdMaXN0KCk7Ci0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4g
ZGF0YWJhc2VOYW1lcyA9IFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAg
ICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IGRhdGFi
YXNlTmFtZXMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUo
KTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkYXRhYmFzZU5hbWVzTGlzdC0+bGVu
Z3RoKCk7ICsraSkKICAgICAgICAgICAgIGRhdGFiYXNlTmFtZXMtPmFkZEl0ZW0oZGF0YWJhc2VO
YW1lc0xpc3QtPml0ZW0oaSkpOwogICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZFN1Y2Nl
c3MoZGF0YWJhc2VOYW1lcy5yZWxlYXNlKCkpOwpAQCAtMjUwLDcgKzI1MSw3IEBAIHN0YXRpYyBQ
YXNzUmVmUHRyPEtleVBhdGg+IGtleVBhdGhGcm9tSURCS2V5UGF0aChjb25zdCBJREJLZXlQYXRo
JiBpZGJLZXlQYXRoKQogICAgICAgICBicmVhazsKICAgICBjYXNlIElEQktleVBhdGg6OkFycmF5
VHlwZTogewogICAgICAgICBrZXlQYXRoID0gS2V5UGF0aDo6Y3JlYXRlKCkuc2V0VHlwZShLZXlQ
YXRoOjpUeXBlOjpBcnJheSk7Ci0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3Ry
aW5nPj4gYXJyYXkgPSBUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CisgICAg
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBhcnJheSA9
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwogICAgICAg
ICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RyaW5nQXJyYXkgPSBpZGJLZXlQYXRoLmFycmF5KCk7
CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RyaW5nQXJyYXkuc2l6ZSgpOyArK2kp
CiAgICAgICAgICAgICBhcnJheS0+YWRkSXRlbShzdHJpbmdBcnJheVtpXSk7CkBAIC0yODUsMTIg
KzI4NiwxMiBAQCBwdWJsaWM6CiAKICAgICAgICAgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSBk
YXRhYmFzZU1ldGFkYXRhID0gaWRiRGF0YWJhc2UtPm1ldGFkYXRhKCk7CiAKLSAgICAgICAgUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpPYmplY3RTdG9y
ZT4+IG9iamVjdFN0b3JlcyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6SW5kZXhl
ZERCOjpPYmplY3RTdG9yZT46OmNyZWF0ZSgpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpPYmpl
Y3RTdG9yZT4+IG9iamVjdFN0b3JlcyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmU+OjpjcmVhdGUoKTsK
IAogICAgICAgICBmb3IgKElEQkRhdGFiYXNlTWV0YWRhdGE6Ok9iamVjdFN0b3JlTWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IGRhdGFiYXNlTWV0YWRhdGEub2JqZWN0U3RvcmVzLmJlZ2luKCk7IGl0
ICE9IGRhdGFiYXNlTWV0YWRhdGEub2JqZWN0U3RvcmVzLmVuZCgpOyArK2l0KSB7CiAgICAgICAg
ICAgICBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZU1ldGFkYXRhID0g
aXQtPnZhbHVlOwogCi0gICAgICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVC
dWlsZGVyOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlSW5kZXg+PiBpbmRleGVzID0gVHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlSW5kZXg+OjpjcmVh
dGUoKTsKKyAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlSW5kZXg+PiBpbmRl
eGVzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6SW5kZXhlZERCOjpPYmplY3RTdG9yZUluZGV4Pjo6Y3JlYXRlKCk7CiAKICAgICAgICAgICAg
IGZvciAoSURCT2JqZWN0U3RvcmVNZXRhZGF0YTo6SW5kZXhNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gb2JqZWN0U3RvcmVNZXRhZGF0YS5pbmRleGVzLmJlZ2luKCk7IGl0ICE9IG9iamVjdFN0b3Jl
TWV0YWRhdGEuaW5kZXhlcy5lbmQoKTsgKytpdCkgewogICAgICAgICAgICAgICAgIGNvbnN0IElE
QkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEgPSBpdC0+dmFsdWU7CkBAIC01NTcsNyArNTU4
LDcgQEAgcHVibGljOgogfSAvLyBuYW1lc3BhY2UKIAogSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6
Okluc3BlY3RvckluZGV4ZWREQkFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJ
bnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudChB
U0NJSUxpdGVyYWwoIkluZGV4ZWREQiIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5z
cGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiSW5kZXhlZERCIiksIGluc3RydW1lbnRpbmdB
Z2VudHMpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFn
ZXIpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCiB7CkBAIC01NjcsNyArNTY4LDcgQEAg
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6On5JbnNwZWN0b3JJbmRleGVkREJBZ2VudCgpCiB7CiB9
CiAKLXZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAg
ICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckluZGV4ZWREQkJhY2tlbmREaXNwYXRj
aGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaAppbmRleCBiYTM3NTlh
Li5iOTU1MjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQuaApAQCAtMzMsNyArMzMsOCBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikgJiYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNl
QWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKKyNpbmNs
dWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00NCw3ICs0NSw3IEBAIGNs
YXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAK
LWNsYXNzIEluc3BlY3RvckluZGV4ZWREQkFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2Vu
dCwgcHVibGljIEluc3BlY3RvckluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7Citj
bGFzcyBJbnNwZWN0b3JJbmRleGVkREJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2Us
IHB1YmxpYyBJbnNwZWN0b3JJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckluZGV4ZWREQkFnZW50PiBjcmVh
dGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFn
ZUFnZW50KQogICAgIHsKQEAgLTUyLDcgKzUzLDcgQEAgcHVibGljOgogICAgIH0KICAgICB+SW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVj
dG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgLy8g
Q2FsbGVkIGZyb20gdGhlIGZyb250LWVuZC4KQEAgLTYwLDcgKzYxLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIHJl
cXVlc3REYXRhYmFzZU5hbWVzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9y
aWdpbiwgUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YWJhc2VOYW1lc0NhbGxiYWNrPik7CiAgICAgdmly
dHVhbCB2b2lkIHJlcXVlc3REYXRhYmFzZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2Vj
dXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBQYXNzUmVmUHRyPFJlcXVl
c3REYXRhYmFzZUNhbGxiYWNrPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3REYXRhKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRh
YmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGlu
ZGV4TmFtZSwgaW50IHNraXBDb3VudCwgaW50IHBhZ2VTaXplLCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0Pioga2V5UmFuZ2UsIFBhc3NSZWZQdHI8UmVxdWVzdERhdGFDYWxsYmFjaz4pOwor
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RGF0YShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYg
c2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcm
IG9iamVjdFN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUsIGludCBza2lwQ291bnQs
IGludCBwYWdlU2l6ZSwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piog
a2V5UmFuZ2UsIFBhc3NSZWZQdHI8UmVxdWVzdERhdGFDYWxsYmFjaz4pOwogICAgIHZpcnR1YWwg
dm9pZCBjbGVhck9iamVjdFN0b3JlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBpbl9zZWN1
cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBpbl9kYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYg
aW5fb2JqZWN0U3RvcmVOYW1lLCBQYXNzUmVmUHRyPENsZWFyT2JqZWN0U3RvcmVDYWxsYmFjaz4p
OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvcklucHV0QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
cHV0QWdlbnQuY3BwCmluZGV4IDdlY2NiOGQuLmM0Yjg3ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5wdXRBZ2VudC5jcHAKQEAgLTQ5LDEwICs0OSwxMiBA
QAogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIEluc3BlY3RvcklucHV0QWdlbnQ6Okluc3BlY3RvcklucHV0QWdlbnQoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgUGFnZSogcGFnZSkKLSAgICA6IEluc3Bl
Y3RvckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIklucHV0IiksIGluc3RydW1lbnRpbmdBZ2VudHMp
CisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJJbnB1dCIpLCBpbnN0cnVt
ZW50aW5nQWdlbnRzKQogICAgICwgbV9wYWdlKHBhZ2UpCiB7CiB9CkBAIC02MSw3ICs2Myw3IEBA
IEluc3BlY3RvcklucHV0QWdlbnQ6On5JbnNwZWN0b3JJbnB1dEFnZW50KCkKIHsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JJbnB1dEFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmRE
aXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JJbnB1dEFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9iYWNrZW5kRGlz
cGF0Y2hlciA9IEluc3BlY3RvcklucHV0QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5k
RGlzcGF0Y2hlciwgdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5wdXRBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvcklucHV0QWdlbnQuaAppbmRleCBhY2JhMjk5Li40ZTA2MmFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5wdXRBZ2VudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50LmgKQEAgLTMzLDggKzMzLDggQEAK
IAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQu
aCIKLQorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFBhZ2U7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9y
U3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JJbnB1dEFnZW50IDogcHVibGljIEluc3BlY3RvckJh
c2VBZ2VudCwgcHVibGljIEluc3BlY3RvcklucHV0QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsK
K2NsYXNzIEluc3BlY3RvcklucHV0QWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBw
dWJsaWMgSW5zcGVjdG9ySW5wdXRCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEluc3BlY3RvcklucHV0QWdlbnQpOwogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzT3duUHRyPEluc3BlY3RvcklucHV0QWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBQYWdlKiBwYWdlKQpAQCAtNTQsNyArNTQsNyBAQCBw
dWJsaWM6CiAKICAgICB+SW5zcGVjdG9ySW5wdXRBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lk
IGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJ
REU7CiAKICAgICAvLyBNZXRob2RzIGNhbGxlZCBmcm9tIHRoZSBmcm9udGVuZCBmb3Igc2ltdWxh
dGluZyBpbnB1dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggYzRjNTFjYi4uMTE3ZGIxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAK
QEAgLTgzLDYgKzgzLDggQEAKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCByZXF1ZXN0QW5p
bWF0aW9uRnJhbWVFdmVudE5hbWUgPSAicmVxdWVzdEFuaW1hdGlvbkZyYW1lIjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRl
eCBiZDVjOTUyLi4zM2I2YmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC00NSw2ICs0NSwxMCBAQAogI2luY2x1ZGUg
IldlYlNvY2tldEZyYW1lLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCituYW1lc3BhY2Ug
RGVwcmVjYXRlZCB7CitjbGFzcyBTY3JpcHRPYmplY3Q7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ1NTUnVsZTsKQEAgLTc3LDcgKzgxLDYgQEAgY2xhc3MgUmVzb3VyY2VSZXNw
b25zZTsKIGNsYXNzIFNjcmlwdEFyZ3VtZW50czsKIGNsYXNzIFNjcmlwdENhbGxTdGFjazsKIGNs
YXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTY3JpcHRPYmplY3Q7CiBjbGFzcyBT
Y3JpcHRQcm9maWxlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTaGFkb3dSb290OwpA
QCAtMjc2LDkgKzI3OSw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlV2Vi
U29ja2V0RnJhbWVFcnJvcihEb2N1bWVudCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwogI2VuZGlmCiAKLSAgICBzdGF0aWMgU2NyaXB0T2Jq
ZWN0IHdyYXBDYW52YXMyRFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24oRG9jdW1l
bnQqLCBjb25zdCBTY3JpcHRPYmplY3QmKTsKKyAgICBzdGF0aWMgRGVwcmVjYXRlZDo6U2NyaXB0
T2JqZWN0IHdyYXBDYW52YXMyRFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24oRG9j
dW1lbnQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmKTsKICNpZiBFTkFCTEUoV0VC
R0wpCi0gICAgc3RhdGljIFNjcmlwdE9iamVjdCB3cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9y
SW5zdHJ1bWVudGF0aW9uKERvY3VtZW50KiwgY29uc3QgU2NyaXB0T2JqZWN0Jik7CisgICAgc3Rh
dGljIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCB3cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9y
SW5zdHJ1bWVudGF0aW9uKERvY3VtZW50KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0
Jik7CiAjZW5kaWYKIAogICAgIHN0YXRpYyB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoUGFnZSop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJl
ZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVB
Z2VudC5jcHAKaW5kZXggZDI3ZjkwOS4uYzQxNWJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCkBAIC00NiwxMCArNDYs
MTIgQEAKICNpbmNsdWRlICJSZW5kZXJMYXllckNvbXBvc2l0b3IuaCIKICNpbmNsdWRlICJSZW5k
ZXJWaWV3LmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Okluc3BlY3RvckxheWVyVHJlZUFnZW50
KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCi0gICAgOiBJbnNwZWN0
b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJMYXllclRyZWUiKSwgaW5zdHJ1bWVudGluZ0FnZW50
cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkxheWVyVHJlZSIpLCBp
bnN0cnVtZW50aW5nQWdlbnRzKQogewogfQogCkBAIC01OCw3ICs2MCw3IEBAIEluc3BlY3Rvckxh
eWVyVHJlZUFnZW50Ojp+SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKQogICAgIHJlc2V0KCk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JMYXll
clRyZWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9
IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yTGF5ZXJUcmVlRnJvbnRlbmREaXNwYXRjaGVyPihm
cm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JMYXll
clRyZWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsK
QEAgLTEwNSw5ICsxMDcsOSBAQCB2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojpwc2V1ZG9F
bGVtZW50RGVzdHJveWVkKFBzZXVkb0VsZW1lbnQqIHBzZXVkb0VsZW1lbgogICAgIHVuYmluZFBz
ZXVkb0VsZW1lbnQocHNldWRvRWxlbWVudCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQ6OmxheWVyc0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlk
LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVy
Pj4mIGxheWVycykKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmxheWVyc0Zvck5vZGUo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXll
cj4+JiBsYXllcnMpCiB7Ci0gICAgbGF5ZXJzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpMYXllclRyZWU6OkxheWVyPjo6Y3JlYXRlKCk7CisgICAgbGF5ZXJzID0gSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpM
YXllcj46OmNyZWF0ZSgpOwogCiAgICAgTm9kZSogbm9kZSA9IG1faW5zdHJ1bWVudGluZ0FnZW50
cy0+aW5zcGVjdG9yRE9NQWdlbnQoKS0+bm9kZUZvcklkKG5vZGVJZCk7CiAgICAgaWYgKCFub2Rl
KSB7CkBAIC0xMjQsNyArMTI2LDcgQEAgdm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6bGF5
ZXJzRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQKICAgICBnYXRo
ZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNoeShlcnJvclN0cmluZywgcmVuZGVyZXIs
IGxheWVycyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmdhdGhlckxheWVy
c1VzaW5nUmVuZGVyT2JqZWN0SGllcmFyY2h5KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRl
cjo6TGF5ZXJUcmVlOjpMYXllcj4+JiBsYXllcnMpCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFn
ZW50OjpnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNoeShFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIFJlbmRlck9iamVjdCogcmVuZGVyZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVy
Pj4mIGxheWVycykKIHsKICAgICBpZiAocmVuZGVyZXItPmhhc0xheWVyKCkpIHsKICAgICAgICAg
Z2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJMYXllckhpZXJhcmNoeShlcnJvclN0cmluZywgdG9SZW5k
ZXJMYXllck1vZGVsT2JqZWN0KHJlbmRlcmVyKS0+bGF5ZXIoKSwgbGF5ZXJzKTsKQEAgLTEzNSw3
ICsxMzcsNyBAQCB2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpnYXRoZXJMYXllcnNVc2lu
Z1JlbmRlck9iamVjdEhpZXJhcmNoeShFcnJvclN0cmluZwogICAgICAgICBnYXRoZXJMYXllcnNV
c2luZ1JlbmRlck9iamVjdEhpZXJhcmNoeShlcnJvclN0cmluZywgcmVuZGVyZXIsIGxheWVycyk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmdhdGhlckxheWVyc1VzaW5nUmVu
ZGVyTGF5ZXJIaWVyYXJjaHkoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBSZW5kZXJMYXllciog
cmVuZGVyTGF5ZXIsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkxheWVy
VHJlZTo6TGF5ZXI+PiYgbGF5ZXJzKQordm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6Z2F0
aGVyTGF5ZXJzVXNpbmdSZW5kZXJMYXllckhpZXJhcmNoeShFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIFJlbmRlckxheWVyKiByZW5kZXJMYXllciwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+PiYgbGF5
ZXJzKQogewogICAgIGlmIChyZW5kZXJMYXllci0+aXNDb21wb3NpdGVkKCkpCiAgICAgICAgIGxh
eWVycy0+YWRkSXRlbShidWlsZE9iamVjdEZvckxheWVyKGVycm9yU3RyaW5nLCByZW5kZXJMYXll
cikpOwpAQCAtMTQ0LDcgKzE0Niw3IEBAIHZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Omdh
dGhlckxheWVyc1VzaW5nUmVuZGVyTGF5ZXJIaWVyYXJjaHkoRXJyb3JTdHJpbmcqCiAgICAgICAg
IGdhdGhlckxheWVyc1VzaW5nUmVuZGVyTGF5ZXJIaWVyYXJjaHkoZXJyb3JTdHJpbmcsIHJlbmRl
ckxheWVyLCBsYXllcnMpOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpMYXllclRyZWU6
OkxheWVyPiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6YnVpbGRPYmplY3RGb3JMYXllcihFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIFJlbmRlckxheWVyKiByZW5kZXJMYXllcikKK1Bhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4gSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTGF5ZXIoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIpCiB7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciA9ICZyZW5kZXJMYXllci0+cmVuZGVyZXIoKTsKICAgICBSZW5kZXJMYXllckJhY2tpbmcqIGJh
Y2tpbmcgPSByZW5kZXJMYXllci0+YmFja2luZygpOwpAQCAtMTY0LDcgKzE2Niw3IEBAIFBhc3NS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+IEluc3BlY3RvckxheWVyVHJlZUFn
ZW50OjpidWlsZE9iamVjdEZvCiAgICAgICAgIG5vZGUgPSByZW5kZXJlci0+cGFyZW50KCktPmVs
ZW1lbnQoKTsKIAogICAgIC8vIEJhc2ljIHNldCBvZiBwcm9wZXJ0aWVzLgotICAgIFJlZlB0cjxU
eXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4gbGF5ZXJPYmplY3QgPSBUeXBlQnVpbGRlcjo6
TGF5ZXJUcmVlOjpMYXllcjo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4gbGF5ZXJPYmplY3QgPSBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpMYXllclRyZWU6OkxheWVyOjpjcmVhdGUoKQogICAgICAgICAuc2V0TGF5ZXJJZChiaW5k
KHJlbmRlckxheWVyKSkKICAgICAgICAgLnNldE5vZGVJZChpZEZvck5vZGUoZXJyb3JTdHJpbmcs
IG5vZGUpKQogICAgICAgICAuc2V0Qm91bmRzKGJ1aWxkT2JqZWN0Rm9ySW50UmVjdChyZW5kZXJl
ci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSkpCkBAIC0yMTYsMTYgKzIxOCwxNiBAQCBpbnQg
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmlkRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIG5vZGVJZDsKIH0KIAotUGFzc1JlZlB0cjxUeXBl
QnVpbGRlcjo6TGF5ZXJUcmVlOjpJbnRSZWN0PiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6YnVp
bGRPYmplY3RGb3JJbnRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCitQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6SW50UmVjdD4gSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQ6OmJ1aWxkT2JqZWN0Rm9ySW50UmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAg
IHJldHVybiBUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpJbnRSZWN0OjpjcmVhdGUoKQorICAgIHJl
dHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkludFJlY3Q6OmNyZWF0ZSgp
CiAgICAgICAgIC5zZXRYKHJlY3QueCgpKQogICAgICAgICAuc2V0WShyZWN0LnkoKSkKICAgICAg
ICAgLnNldFdpZHRoKHJlY3Qud2lkdGgoKSkKICAgICAgICAgLnNldEhlaWdodChyZWN0LmhlaWdo
dCgpKS5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OnJlYXNv
bnNGb3JDb21wb3NpdGluZ0xheWVyKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3Ry
aW5nJiBsYXllcklkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6Q29tcG9zaXRpbmdS
ZWFzb25zPiYgY29tcG9zaXRpbmdSZWFzb25zKQordm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dDo6cmVhc29uc0ZvckNvbXBvc2l0aW5nTGF5ZXIoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbmcmIGxheWVySWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXll
clRyZWU6OkNvbXBvc2l0aW5nUmVhc29ucz4mIGNvbXBvc2l0aW5nUmVhc29ucykKIHsKICAgICBj
b25zdCBSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIgPSBtX2lkVG9MYXllci5nZXQobGF5ZXJJZCk7
CiAKQEAgLTIzNSw3ICsyMzcsNyBAQCB2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpyZWFz
b25zRm9yQ29tcG9zaXRpbmdMYXllcihFcnJvclN0cmluZyogZXJyb3JTdHJpbgogICAgIH0KIAog
ICAgIENvbXBvc2l0aW5nUmVhc29ucyByZWFzb25zQml0bWFzayA9IHJlbmRlckxheWVyLT5jb21w
b3NpdG9yKCkucmVhc29uc0ZvckNvbXBvc2l0aW5nKCpyZW5kZXJMYXllcik7Ci0gICAgY29tcG9z
aXRpbmdSZWFzb25zID0gVHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6Q29tcG9zaXRpbmdSZWFzb25z
OjpjcmVhdGUoKTsKKyAgICBjb21wb3NpdGluZ1JlYXNvbnMgPSBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpMYXllclRyZWU6OkNvbXBvc2l0aW5nUmVhc29uczo6Y3JlYXRlKCk7CiAKICAgICBpZiAo
cmVhc29uc0JpdG1hc2sgJiBDb21wb3NpdGluZ1JlYXNvbjNEVHJhbnNmb3JtKQogICAgICAgICBj
b21wb3NpdGluZ1JlYXNvbnMtPnNldFRyYW5zZm9ybTNEKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaAppbmRleCBhZjU1YTky
Li4xNzQ1NjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQuaApAQCAtMzEsOSArMzEsMTAgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNU
T1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgot
I2luY2x1ZGUgIkluc3BlY3RvclR5cGVCdWlsZGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2Vi
QWdlbnRCYXNlLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmgiCiAjaW5j
bHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC00Niw3ICs0Nyw3IEBAIGNsYXNzIEluc3RydW1lbnRp
bmdBZ2VudHM7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0
b3JMYXllclRyZWVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNw
ZWN0b3JMYXllclRyZWVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVj
dG9yTGF5ZXJUcmVlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc093blB0cjxJbnNwZWN0b3JMYXllclRyZWVBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgewpAQCAtNTQsNyArNTUsNyBAQCBw
dWJsaWM6CiAgICAgfQogICAgIH5JbnNwZWN0b3JMYXllclRyZWVBZ2VudCgpOwogCi0gICAgdmly
dHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5k
KCkgT1ZFUlJJREU7CiAgICAgdm9pZCByZXNldCgpOwogCkBAIC02NSw4ICs2Niw4IEBAIHB1Ymxp
YzoKICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgZnJvbnQtZW5kLgogICAgIHZpcnR1YWwgdm9pZCBl
bmFibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmlu
ZyopOwotICAgIHZpcnR1YWwgdm9pZCBsYXllcnNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5v
ZGVJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpM
YXllcj4+Jik7Ci0gICAgdmlydHVhbCB2b2lkIHJlYXNvbnNGb3JDb21wb3NpdGluZ0xheWVyKEVy
cm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBsYXllcklkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6Okxh
eWVyVHJlZTo6Q29tcG9zaXRpbmdSZWFzb25zPiYpOworICAgIHZpcnR1YWwgdm9pZCBsYXllcnNG
b3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+PiYp
OworICAgIHZpcnR1YWwgdm9pZCByZWFzb25zRm9yQ29tcG9zaXRpbmdMYXllcihFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgbGF5ZXJJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkxheWVyVHJlZTo6Q29tcG9zaXRpbmdSZWFzb25zPiYpOwogCiBwcml2YXRlOgogICAgIEluc3Bl
Y3RvckxheWVyVHJlZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqKTsKQEAgLTc1LDExICs3Niwx
MSBAQCBwcml2YXRlOgogICAgIFN0cmluZyBiaW5kKGNvbnN0IFJlbmRlckxheWVyKik7CiAgICAg
dm9pZCB1bmJpbmQoY29uc3QgUmVuZGVyTGF5ZXIqKTsKIAotICAgIHZvaWQgZ2F0aGVyTGF5ZXJz
VXNpbmdSZW5kZXJPYmplY3RIaWVyYXJjaHkoRXJyb3JTdHJpbmcqLCBSZW5kZXJPYmplY3QqLCBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPj4m
KTsKLSAgICB2b2lkIGdhdGhlckxheWVyc1VzaW5nUmVuZGVyTGF5ZXJIaWVyYXJjaHkoRXJyb3JT
dHJpbmcqLCBSZW5kZXJMYXllciosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxk
ZXI6OkxheWVyVHJlZTo6TGF5ZXI+PiYpOworICAgIHZvaWQgZ2F0aGVyTGF5ZXJzVXNpbmdSZW5k
ZXJPYmplY3RIaWVyYXJjaHkoRXJyb3JTdHJpbmcqLCBSZW5kZXJPYmplY3QqLCBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TGF5ZXJU
cmVlOjpMYXllcj4+Jik7CisgICAgdm9pZCBnYXRoZXJMYXllcnNVc2luZ1JlbmRlckxheWVySGll
cmFyY2h5KEVycm9yU3RyaW5nKiwgUmVuZGVyTGF5ZXIqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4+
Jik7CiAKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPiBidWls
ZE9iamVjdEZvckxheWVyKEVycm9yU3RyaW5nKiwgUmVuZGVyTGF5ZXIqKTsKLSAgICBQYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkludFJlY3Q+IGJ1aWxkT2JqZWN0Rm9ySW50UmVj
dChjb25zdCBJbnRSZWN0Jik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpMYXllclRyZWU6OkxheWVyPiBidWlsZE9iamVjdEZvckxheWVyKEVycm9yU3RyaW5nKiwgUmVu
ZGVyTGF5ZXIqKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkxheWVy
VHJlZTo6SW50UmVjdD4gYnVpbGRPYmplY3RGb3JJbnRSZWN0KGNvbnN0IEludFJlY3QmKTsKIAog
ICAgIGludCBpZEZvck5vZGUoRXJyb3JTdHJpbmcqLCBOb2RlKik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCmluZGV4IDc1OGI3YjQu
LjMyZDAxZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JN
ZW1vcnlBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1l
bW9yeUFnZW50LmNwcApAQCAtNDEsMTMgKzQxLDEzIEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JG
cm9udGVuZC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3Ry
dW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIk5v
ZGUuaCIKICNpbmNsdWRlICJOb2RlVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmls
ZXIuaCIKICNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0lu
c3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC01OCw4
ICs1OCwxMCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAvLyBVc2UgYSB0
eXBlIGFsaWFzIGluc3RlYWQgb2YgJ3VzaW5nJyBoZXJlIHdoaWNoIHdvdWxkIGNhdXNlIGEgY29u
ZmxpY3Qgb24gTWFjLgotdHlwZWRlZiBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6TWVtb3J5OjpNZW1v
cnlCbG9jayBJbnNwZWN0b3JNZW1vcnlCbG9jazsKLXR5cGVkZWYgV2ViQ29yZTo6VHlwZUJ1aWxk
ZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiBJbnNwZWN0b3JNZW1vcnlCbG9ja3M7Cit0
eXBlZGVmIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok1lbW9yeTo6TWVtb3J5QmxvY2sgSW5zcGVj
dG9yTWVtb3J5QmxvY2s7Cit0eXBlZGVmIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PElu
c3BlY3Rvck1lbW9yeUJsb2NrPiBJbnNwZWN0b3JNZW1vcnlCbG9ja3M7CisKK3VzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjcsNyArNjksNyBA
QCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6fkluc3BlY3Rvck1lbW9yeUFnZW50KCkKIHsKIH0KIAot
dm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNr
ZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2JhY2tl
bmREaXNwYXRjaGVyID0gSW5zcGVjdG9yTWVtb3J5QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShi
YWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CkBAIC04NSw3ICs4Nyw3IEBAIHZvaWQgSW5zcGVj
dG9yTWVtb3J5QWdlbnQ6OmdldERPTUNvdW50ZXJzKEVycm9yU3RyaW5nKiwgaW50KiBkb2N1bWVu
dHMsIGludCogbm9kCiB9CiAKIEluc3BlY3Rvck1lbW9yeUFnZW50OjpJbnNwZWN0b3JNZW1vcnlB
Z2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQotICAgIDogSW5z
cGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiTWVtb3J5IiksIGluc3RydW1lbnRpbmdBZ2Vu
dHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJNZW1vcnkiKSwgaW5z
dHJ1bWVudGluZ0FnZW50cykKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yTWVtb3J5QWdlbnQuaAppbmRleCBlMTkxMGRlLi44ZjE1NjU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaApAQCAtMzMsOCAr
MzMsOCBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvckJh
c2VBZ2VudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRC
YXNlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAKQEAgLTQ1LDEzICs0NSwxMyBAQCBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogCiB0
eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yTWVtb3J5QWdlbnQg
OiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yTWVtb3J5QmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3Rvck1lbW9yeUFnZW50IDogcHVibGlj
IEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvck1lbW9yeUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yTWVtb3J5QWdl
bnQpOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3Rvck1lbW9yeUFnZW50
PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyk7CiAgICAg
dmlydHVhbCB+SW5zcGVjdG9yTWVtb3J5QWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwog
CiAgICAgdmlydHVhbCB2b2lkIGdldERPTUNvdW50ZXJzKEVycm9yU3RyaW5nKiwgaW50KiBkb2N1
bWVudHMsIGludCogbm9kZXMsIGludCoganNFdmVudExpc3RlbmVycyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKaW5kZXggMjg2ODQxZi4uYTg1ZDhj
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcApA
QCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvckNsaWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvck92ZXJsYXlQYWdlLmgiCi0j
aW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5j
bHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTU1LDExICs1NCwxNCBAQAogI2lu
Y2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCisjaW5jbHVkZSA8
YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFs
dWVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCit1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaAppbmRleCBlZjk5MjMw
Li5iNTI5MjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
T3ZlcmxheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5
LmgKQEAgLTMyLDIwICszMiwyMiBAQAogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiRmxv
YXRRdWFkLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgotCiAjaW5jbHVkZSA8d3RmL093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAorbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CitjbGFz
cyBJbnNwZWN0b3JWYWx1ZTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xv
cjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEluc3BlY3RvckNsaWVudDsKLWNsYXNz
IEluc3BlY3RvclZhbHVlOwotY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3MgSW50UmVjdDsK
IGNsYXNzIE5vZGU7CiBjbGFzcyBQYWdlOwpAQCAtMTI0LDcgKzEyNiw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgZGlkU2V0U2VhcmNoaW5nRm9yTm9kZShib29sIGVuYWJsZWQpOwogCi0gICAgUGFz
c1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlKCkg
Y29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gYnVpbGRP
YmplY3RGb3JIaWdobGlnaHRlZE5vZGUoKSBjb25zdDsKIAogICAgIHZvaWQgZnJlZVBhZ2UoKTsK
IHByaXZhdGU6CkBAIC0xMzcsNyArMTM5LDcgQEAgcHJpdmF0ZToKICAgICBQYWdlKiBvdmVybGF5
UGFnZSgpOwogICAgIHZvaWQgcmVzZXQoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplLCBjb25z
dCBJbnRTaXplJiBmcmFtZVZpZXdGdWxsU2l6ZSk7CiAgICAgdm9pZCBldmFsdWF0ZUluT3Zlcmxh
eShjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgU3RyaW5nJiBhcmd1bWVudCk7Ci0gICAgdm9p
ZCBldmFsdWF0ZUluT3ZlcmxheShjb25zdCBTdHJpbmcmIG1ldGhvZCwgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4gYXJndW1lbnQpOworICAgIHZvaWQgZXZhbHVhdGVJbk92ZXJsYXkoY29uc3Qg
U3RyaW5nJiBtZXRob2QsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gYXJn
dW1lbnQpOwogCiAgICAgUGFnZSogbV9wYWdlOwogICAgIEluc3BlY3RvckNsaWVudCogbV9jbGll
bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3Bw
CmluZGV4IGMwYmVkOWUuLmY0ZGJmZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC02Niw3ICs2Niw2IEBACiAjaW5jbHVkZSAiSW5z
cGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVz
LmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIk1haW5GcmFt
ZS5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCkBAIC03NCwxMiArNzMsMTMgQEAKICNpbmNs
dWRlICJSZWd1bGFyRXhwcmVzc2lvbi5oIgogI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAj
aW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgog
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNs
dWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAj
aW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3Jp
cHRWYWx1ZS5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNs
dWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC05MCw2ICs5MCw4IEBACiAjaW5jbHVkZSAiTGVnYWN5
V2ViQXJjaGl2ZS5oIgogI2VuZGlmCiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGJvb2wgZGVjb2RlQnVmZmVyKGNvbnN0IGNoYXIq
IGJ1ZmZlciwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBT
dHJpbmcqIHJlc3VsdCkKQEAgLTI5NywyNyArMjk5LDI3IEBAIENhY2hlZFJlc291cmNlKiBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmNhY2hlZFJlc291cmNlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1
cmwpCiAgICAgcmV0dXJuIGNhY2hlZFJlc291cmNlOwogfQogCi1UeXBlQnVpbGRlcjo6UGFnZTo6
UmVzb3VyY2VUeXBlOjpFbnVtIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VUeXBlSnNvbihJ
bnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUpCitJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkVudW0gSW5zcGVjdG9yUGFnZUFnZW50
OjpyZXNvdXJjZVR5cGVKc29uKEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIHJlc291
cmNlVHlwZSkKIHsKICAgICBzd2l0Y2ggKHJlc291cmNlVHlwZSkgewogICAgIGNhc2UgRG9jdW1l
bnRSZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5
cGU6OkRvY3VtZW50OworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFn
ZTo6UmVzb3VyY2VUeXBlOjpEb2N1bWVudDsKICAgICBjYXNlIEltYWdlUmVzb3VyY2U6Ci0gICAg
ICAgIHJldHVybiBUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpJbWFnZTsKKyAgICAg
ICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6SW1h
Z2U7CiAgICAgY2FzZSBGb250UmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6
UGFnZTo6UmVzb3VyY2VUeXBlOjpGb250OworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpGb250OwogICAgIGNhc2UgU3R5bGVzaGVldFJl
c291cmNlOgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6
U3R5bGVzaGVldDsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6
OlJlc291cmNlVHlwZTo6U3R5bGVzaGVldDsKICAgICBjYXNlIFNjcmlwdFJlc291cmNlOgotICAg
ICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6U2NyaXB0OworICAg
ICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpT
Y3JpcHQ7CiAgICAgY2FzZSBYSFJSZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVy
OjpQYWdlOjpSZXNvdXJjZVR5cGU6OlhIUjsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6WEhSOwogICAgIGNhc2UgV2ViU29ja2V0UmVz
b3VyY2U6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpX
ZWJTb2NrZXQ7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpS
ZXNvdXJjZVR5cGU6OldlYlNvY2tldDsKICAgICBjYXNlIE90aGVyUmVzb3VyY2U6Ci0gICAgICAg
IHJldHVybiBUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpPdGhlcjsKKyAgICAgICAg
cmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6T3RoZXI7
CiAgICAgfQotICAgIHJldHVybiBUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpPdGhl
cjsKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBl
OjpPdGhlcjsKIH0KIAogSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgSW5zcGVjdG9y
UGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZVR5cGUoY29uc3QgQ2FjaGVkUmVzb3VyY2UmIGNhY2hl
ZFJlc291cmNlKQpAQCAtMzQ1LDEzICszNDcsMTMgQEAgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNv
dXJjZVR5cGUgSW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZVR5cGUoY29uc3QgQ2EK
ICAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291cmNlOwogfQogCi1UeXBl
QnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpFbnVtIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2Fj
aGVkUmVzb3VyY2VUeXBlSnNvbihjb25zdCBDYWNoZWRSZXNvdXJjZSYgY2FjaGVkUmVzb3VyY2Up
CitJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkVudW0gSW5zcGVj
dG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZVR5cGVKc29uKGNvbnN0IENhY2hlZFJlc291cmNl
JiBjYWNoZWRSZXNvdXJjZSkKIHsKICAgICByZXR1cm4gcmVzb3VyY2VUeXBlSnNvbihjYWNoZWRS
ZXNvdXJjZVR5cGUoY2FjaGVkUmVzb3VyY2UpKTsKIH0KIAogSW5zcGVjdG9yUGFnZUFnZW50OjpJ
bnNwZWN0b3JQYWdlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
cywgUGFnZSogcGFnZSwgSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50LCBJbmplY3RlZFNj
cmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zcGVjdG9yQ2xpZW50KiBjbGll
bnQsIEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXkpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQo
QVNDSUlMaXRlcmFsKCJQYWdlIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0
b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJQYWdlIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAg
ICAgLCBtX3BhZ2UocGFnZSkKICAgICAsIG1faW5zcGVjdG9yQWdlbnQoaW5zcGVjdG9yQWdlbnQp
CiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCkBA
IC0zNzEsNyArMzczLDcgQEAgSW5zcGVjdG9yUGFnZUFnZW50OjpJbnNwZWN0b3JQYWdlQWdlbnQo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywKIHsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCog
ZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3Bh
dGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3RvclBhZ2VGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9i
YWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvclBhZ2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRl
KGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKQEAgLTQ2MCw5ICs0NjIsOSBAQCB2b2lkIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6bmF2aWdhdGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVybCkK
ICAgICBmcmFtZS5sb2FkZXIoKS5jaGFuZ2VMb2NhdGlvbihmcmFtZS5kb2N1bWVudCgpLT5zZWN1
cml0eU9yaWdpbigpLCBmcmFtZS5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1cmwpLCAiIiwgZmFs
c2UsIGZhbHNlKTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OkNv
b2tpZT4gYnVpbGRPYmplY3RGb3JDb29raWUoY29uc3QgQ29va2llJiBjb29raWUpCitzdGF0aWMg
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpDb29raWU+IGJ1aWxkT2Jq
ZWN0Rm9yQ29va2llKGNvbnN0IENvb2tpZSYgY29va2llKQogewotICAgIHJldHVybiBUeXBlQnVp
bGRlcjo6UGFnZTo6Q29va2llOjpjcmVhdGUoKQorICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpQYWdlOjpDb29raWU6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXROYW1lKGNvb2tpZS5u
YW1lKQogICAgICAgICAuc2V0VmFsdWUoY29va2llLnZhbHVlKQogICAgICAgICAuc2V0RG9tYWlu
KGNvb2tpZS5kb21haW4pCkBAIC00NzUsOSArNDc3LDkgQEAgc3RhdGljIFBhc3NSZWZQdHI8VHlw
ZUJ1aWxkZXI6OlBhZ2U6OkNvb2tpZT4gYnVpbGRPYmplY3RGb3JDb29raWUoY29uc3QgQ29va2ll
JgogICAgICAgICAucmVsZWFzZSgpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRl
cjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OkNvb2tpZT4+IGJ1aWxkQXJyYXlGb3JDb29raWVz
KExpc3RIYXNoU2V0PENvb2tpZT4mIGNvb2tpZXNMaXN0KQorc3RhdGljIFBhc3NSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6
Q29va2llPj4gYnVpbGRBcnJheUZvckNvb2tpZXMoTGlzdEhhc2hTZXQ8Q29va2llPiYgY29va2ll
c0xpc3QpCiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFn
ZTo6Q29va2llPj4gY29va2llcyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFn
ZTo6Q29va2llPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkNvb2tpZT4+IGNvb2tpZXMgPSBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdl
OjpDb29raWU+OjpjcmVhdGUoKTsKIAogICAgIExpc3RIYXNoU2V0PENvb2tpZT46Oml0ZXJhdG9y
IGVuZCA9IGNvb2tpZXNMaXN0LmVuZCgpOwogICAgIExpc3RIYXNoU2V0PENvb2tpZT46Oml0ZXJh
dG9yIGl0ID0gY29va2llc0xpc3QuYmVnaW4oKTsKQEAgLTUyOCw3ICs1MzAsNyBAQCBzdGF0aWMg
VmVjdG9yPFVSTD4gYWxsUmVzb3VyY2VzVVJMc0ZvckZyYW1lKEZyYW1lKiBmcmFtZSkKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0Q29va2llcyhF
cnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6
OkNvb2tpZT4+JiBjb29raWVzKQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMo
RXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6Q29va2llPj4mIGNvb2tpZXMpCiB7CiAgICAgLy8gSWYg
d2UgY2FuIGdldCByYXcgY29va2llcy4KICAgICBMaXN0SGFzaFNldDxDb29raWU+IHJhd0Nvb2tp
ZXNMaXN0OwpAQCAtNTY3LDcgKzU2OSw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpnZXRD
b29raWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlCiAgICAg
aWYgKHJhd0Nvb2tpZXNJbXBsZW1lbnRlZCkKICAgICAgICAgY29va2llcyA9IGJ1aWxkQXJyYXlG
b3JDb29raWVzKHJhd0Nvb2tpZXNMaXN0KTsKICAgICBlbHNlCi0gICAgICAgIGNvb2tpZXMgPSBU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OkNvb2tpZT46OmNyZWF0ZSgpOwor
ICAgICAgICBjb29raWVzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxk
ZXI6OlBhZ2U6OkNvb2tpZT46OmNyZWF0ZSgpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6ZGVsZXRlQ29va2llKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lLCBj
b25zdCBTdHJpbmcmIHVybCkKQEAgLTU3Nyw3ICs1NzksNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VB
Z2VudDo6ZGVsZXRlQ29va2llKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1l
LCBjbwogICAgICAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoZnJhbWUtPmRvY3VtZW50KCksIHBh
cnNlZFVSTCwgY29va2llTmFtZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpnZXRS
ZXNvdXJjZVRyZWUoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1l
UmVzb3VyY2VUcmVlPiYgb2JqZWN0KQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldFJlc291
cmNlVHJlZShFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdl
OjpGcmFtZVJlc291cmNlVHJlZT4mIG9iamVjdCkKIHsKICAgICBvYmplY3QgPSBidWlsZE9iamVj
dEZvckZyYW1lVHJlZSgmbV9wYWdlLT5tYWluRnJhbWUoKSk7CiB9CkBAIC02MDQsOSArNjA2LDkg
QEAgc3RhdGljIGJvb2wgdGV4dENvbnRlbnRGb3JDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJj
ZSogY2FjaGVkUmVzb3VyY2UsIFN0cmluZyoKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlKEVycm9yU3RyaW5nKiwgY29uc3Qg
U3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBxdWVyeSwg
Y29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBjb25z
dCBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6
OlBhZ2U6OlNlYXJjaE1hdGNoPj4mIHJlc3VsdHMpCit2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6
c2VhcmNoSW5SZXNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIGNvbnN0IG9w
dGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJc1JlZ2V4LCBS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6UGFnZTo6U2VhcmNoTWF0Y2g+PiYgcmVzdWx0cykKIHsKLSAgICByZXN1bHRzID0gVHlwZUJ1
aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hNYXRjaD46OmNyZWF0ZSgpOwor
ICAgIHJlc3VsdHMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hNYXRjaD46OmNyZWF0ZSgpOwogCiAgICAgYm9vbCBpc1Jl
Z2V4ID0gb3B0aW9uYWxJc1JlZ2V4ID8gKm9wdGlvbmFsSXNSZWdleCA6IGZhbHNlOwogICAgIGJv
b2wgY2FzZVNlbnNpdGl2ZSA9IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSA/ICpvcHRpb25hbENhc2VT
ZW5zaXRpdmUgOiBmYWxzZTsKQEAgLTYzOCwxOCArNjQwLDE4IEBAIHZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50OjpzZWFyY2hJblJlc291cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFt
ZUlkLCBjCiAgICAgcmVzdWx0cyA9IENvbnRlbnRTZWFyY2hVdGlsczo6c2VhcmNoSW5UZXh0QnlM
aW5lcyhjb250ZW50LCBxdWVyeSwgY2FzZVNlbnNpdGl2ZSwgaXNSZWdleCk7CiB9CiAKLXN0YXRp
YyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hSZXN1bHQ+IGJ1aWxkT2JqZWN0
Rm9yU2VhcmNoUmVzdWx0KGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmws
IGludCBtYXRjaGVzQ291bnQpCitzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpQYWdlOjpTZWFyY2hSZXN1bHQ+IGJ1aWxkT2JqZWN0Rm9yU2VhcmNoUmVzdWx0KGNvbnN0
IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBtYXRjaGVzQ291bnQpCiB7
Ci0gICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hSZXN1bHQ6OmNyZWF0ZSgpCisg
ICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaFJlc3VsdDo6Y3Jl
YXRlKCkKICAgICAgICAgLnNldFVybCh1cmwpCiAgICAgICAgIC5zZXRGcmFtZUlkKGZyYW1lSWQp
CiAgICAgICAgIC5zZXRNYXRjaGVzQ291bnQobWF0Y2hlc0NvdW50KQogICAgICAgICAucmVsZWFz
ZSgpOwogfQogCi12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5SZXNvdXJjZXMoRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFs
Q2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiYgcmVz
dWx0cykKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlcyhFcnJvclN0
cmluZyosIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNl
U2Vuc2l0aXZlLCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpT
ZWFyY2hSZXN1bHQ+PiYgcmVzdWx0cykKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5
PFR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiBzZWFyY2hSZXN1bHRzID0gVHlwZUJ1
aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hSZXN1bHQ+OjpjcmVhdGUoKTsK
KyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4gc2VhcmNoUmVzdWx0cyA9IEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaFJl
c3VsdD46OmNyZWF0ZSgpOwogCiAgICAgYm9vbCBpc1JlZ2V4ID0gb3B0aW9uYWxJc1JlZ2V4ID8g
Km9wdGlvbmFsSXNSZWdleCA6IGZhbHNlOwogICAgIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IG9wdGlv
bmFsQ2FzZVNlbnNpdGl2ZSA/ICpvcHRpb25hbENhc2VTZW5zaXRpdmUgOiBmYWxzZTsKQEAgLTEw
MzUsOSArMTAzNyw5IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzY3JpcHRzRW5hYmxlZChi
b29sIGlzRW5hYmxlZCkKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+c2NyaXB0c0VuYWJsZWQo
aXNFbmFibGVkKTsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWU+IElu
c3BlY3RvclBhZ2VBZ2VudDo6YnVpbGRPYmplY3RGb3JGcmFtZShGcmFtZSogZnJhbWUpCitQYXNz
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lPiBJbnNwZWN0b3JQYWdl
QWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWUoRnJhbWUqIGZyYW1lKQogewotICAgIFJlZlB0cjxU
eXBlQnVpbGRlcjo6UGFnZTo6RnJhbWU+IGZyYW1lT2JqZWN0ID0gVHlwZUJ1aWxkZXI6OlBhZ2U6
OkZyYW1lOjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdl
OjpGcmFtZT4gZnJhbWVPYmplY3QgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpGcmFt
ZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldElkKGZyYW1lSWQoZnJhbWUpKQogICAgICAgICAuc2V0
TG9hZGVySWQobG9hZGVySWQoZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpKQogICAg
ICAgICAuc2V0VXJsKGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSkKQEAgLTEwNTUs
MTEgKzEwNTcsMTEgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWU+IEluc3Bl
Y3RvclBhZ2VBZ2VudDo6YnVpbGRPYmplY3RGb3JGcmFtZShGcmEKICAgICByZXR1cm4gZnJhbWVP
YmplY3Q7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VU
cmVlPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKEZyYW1lKiBm
cmFtZSkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNv
dXJjZVRyZWU+IEluc3BlY3RvclBhZ2VBZ2VudDo6YnVpbGRPYmplY3RGb3JGcmFtZVRyZWUoRnJh
bWUqIGZyYW1lKQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWU+IGZyYW1l
T2JqZWN0ID0gYnVpbGRPYmplY3RGb3JGcmFtZShmcmFtZSk7Ci0gICAgUmVmUHRyPFR5cGVCdWls
ZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU6OlJlc291cmNl
cz4+IHN1YnJlc291cmNlcyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6
RnJhbWVSZXNvdXJjZVRyZWU6OlJlc291cmNlcz46OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxUeXBl
QnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpQ
YWdlOjpGcmFtZVJlc291cmNlVHJlZTo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6UGFnZTo6RnJhbWU+IGZyYW1lT2JqZWN0ID0gYnVpbGRPYmplY3RGb3JGcmFt
ZShmcmFtZSk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlOjpSZXNvdXJjZXM+PiBz
dWJyZXNvdXJjZXMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZTo6UmVzb3VyY2VzPjo6Y3JlYXRlKCk7
CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VU
cmVlPiByZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNl
VHJlZTo6Y3JlYXRlKCkKICAgICAgICAgIC5zZXRGcmFtZShmcmFtZU9iamVjdCkKICAgICAgICAg
IC5zZXRSZXNvdXJjZXMoc3VicmVzb3VyY2VzKTsKIApAQCAtMTA2Nyw3ICsxMDY5LDcgQEAgUGFz
c1JlZlB0cjxUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+IEluc3BlY3RvclBh
Z2VBZ2VudDo6YnVpbGRPYmplY3QKICAgICBmb3IgKFZlY3RvcjxDYWNoZWRSZXNvdXJjZSo+Ojpj
b25zdF9pdGVyYXRvciBpdCA9IGFsbFJlc291cmNlcy5iZWdpbigpOyBpdCAhPSBhbGxSZXNvdXJj
ZXMuZW5kKCk7ICsraXQpIHsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNl
ID0gKml0OwogCi0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJj
ZVRyZWU6OlJlc291cmNlcz4gcmVzb3VyY2VPYmplY3QgPSBUeXBlQnVpbGRlcjo6UGFnZTo6RnJh
bWVSZXNvdXJjZVRyZWU6OlJlc291cmNlczo6Y3JlYXRlKCkKKyAgICAgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlOjpSZXNvdXJjZXM+IHJl
c291cmNlT2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJj
ZVRyZWU6OlJlc291cmNlczo6Y3JlYXRlKCkKICAgICAgICAgICAgIC5zZXRVcmwoY2FjaGVkUmVz
b3VyY2UtPnVybCgpKQogICAgICAgICAgICAgLnNldFR5cGUoY2FjaGVkUmVzb3VyY2VUeXBlSnNv
bigqY2FjaGVkUmVzb3VyY2UpKQogICAgICAgICAgICAgLnNldE1pbWVUeXBlKGNhY2hlZFJlc291
cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCkpOwpAQCAtMTA4MSwxMCArMTA4MywxMCBAQCBQYXNz
UmVmUHRyPFR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT4gSW5zcGVjdG9yUGFn
ZUFnZW50OjpidWlsZE9iamVjdAogICAgICAgICBzdWJyZXNvdXJjZXMtPmFkZEl0ZW0ocmVzb3Vy
Y2VPYmplY3QpOwogICAgIH0KIAotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1
aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPj4gY2hpbGRyZW5BcnJheTsKKyAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+PiBjaGlsZHJlbkFycmF5OwogICAgIGZvciAoRnJhbWUq
IGNoaWxkID0gZnJhbWUtPnRyZWUoKS5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxk
LT50cmVlKCkubmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAoIWNoaWxkcmVuQXJyYXkpIHsK
LSAgICAgICAgICAgIGNoaWxkcmVuQXJyYXkgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxk
ZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBjaGls
ZHJlbkFycmF5ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+OjpjcmVhdGUoKTsKICAgICAgICAgICAg
IHJlc3VsdC0+c2V0Q2hpbGRGcmFtZXMoY2hpbGRyZW5BcnJheSk7CiAgICAgICAgIH0KICAgICAg
ICAgY2hpbGRyZW5BcnJheS0+YWRkSXRlbShidWlsZE9iamVjdEZvckZyYW1lVHJlZShjaGlsZCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4
IDFiMjZiNmUuLjVkNjU2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JQYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUGFnZUFnZW50LmgKQEAgLTM1LDggKzM1LDkgQEAKIAogI2luY2x1ZGUgIkRldmljZU9yaWVu
dGF0aW9uRGF0YS5oIgogI2luY2x1ZGUgIkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKLSNpbmNsdWRl
ICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgorI2luY2x1ZGUgIkluc3Bl
Y3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJMYXlv
dXRSZWN0LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTQ0LDYgKzQ1LDExIEBACiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNzIEluc3BlY3RvckFycmF5OworY2xhc3MgSW5z
cGVjdG9yT2JqZWN0OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFJl
c291cmNlOwpAQCAtNTQsOSArNjAsNyBAQCBjbGFzcyBGcm9udGVuZDsKIGNsYXNzIEdyYXBoaWNz
Q29udGV4dDsKIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKIGNsYXNzIEluc3BlY3RvckFn
ZW50OwotY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7Ci1jbGFz
cyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnNwZWN0b3JPdmVybGF5OwogY2xhc3MgSW5zdHJ1
bWVudGluZ0FnZW50czsKIGNsYXNzIFVSTDsKQEAgLTY3LDcgKzcxLDcgQEAgY2xhc3MgVGV4dFJl
c291cmNlRGVjb2RlcjsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIElu
c3BlY3RvclBhZ2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNw
ZWN0b3JQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvclBhZ2VB
Z2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JQYWdlQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0
b3JQYWdlQWdlbnQpOwogcHVibGljOgogICAgIGVudW0gUmVzb3VyY2VUeXBlIHsKQEAgLTkwLDkg
Kzk0LDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBy
ZXNvdXJjZURhdGEoRnJhbWUqLCBjb25zdCBVUkwmLCBTdHJpbmcqIHRleHRFbmNvZGluZ05hbWUp
OwogICAgIHN0YXRpYyBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UoRnJhbWUqLCBjb25z
dCBVUkwmKTsKLSAgICBzdGF0aWMgVHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6RW51
bSByZXNvdXJjZVR5cGVKc29uKFJlc291cmNlVHlwZSk7CisgICAgc3RhdGljIEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6RW51bSByZXNvdXJjZVR5cGVKc29uKFJl
c291cmNlVHlwZSk7CiAgICAgc3RhdGljIFJlc291cmNlVHlwZSBjYWNoZWRSZXNvdXJjZVR5cGUo
Y29uc3QgQ2FjaGVkUmVzb3VyY2UmKTsKLSAgICBzdGF0aWMgVHlwZUJ1aWxkZXI6OlBhZ2U6OlJl
c291cmNlVHlwZTo6RW51bSBjYWNoZWRSZXNvdXJjZVR5cGVKc29uKGNvbnN0IENhY2hlZFJlc291
cmNlJik7CisgICAgc3RhdGljIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNl
VHlwZTo6RW51bSBjYWNoZWRSZXNvdXJjZVR5cGVKc29uKGNvbnN0IENhY2hlZFJlc291cmNlJik7
CiAKICAgICAvLyBQYWdlIEFQSSBmb3IgSW5zcGVjdG9yRnJvbnRlbmQKICAgICB2aXJ0dWFsIHZv
aWQgZW5hYmxlKEVycm9yU3RyaW5nKik7CkBAIC0xMDEsMTIgKzEwNSwxMiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZVNjcmlwdFRvRXZhbHVhdGVPbkxvYWQoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpOwogICAgIHZpcnR1YWwgdm9pZCByZWxvYWQoRXJy
b3JTdHJpbmcqLCBjb25zdCBib29sKiBvcHRpb25hbElnbm9yZUNhY2hlLCBjb25zdCBTdHJpbmcq
IG9wdGlvbmFsU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFNj
cmlwdFByZXByb2Nlc3Nvcik7CiAgICAgdmlydHVhbCB2b2lkIG5hdmlnYXRlKEVycm9yU3RyaW5n
KiwgY29uc3QgU3RyaW5nJiB1cmwpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRDb29raWVzKEVycm9y
U3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6Q29v
a2llPj4mIGNvb2tpZXMpOworICAgIHZpcnR1YWwgdm9pZCBnZXRDb29raWVzKEVycm9yU3RyaW5n
KiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OlBhZ2U6OkNvb2tpZT4+JiBjb29raWVzKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRl
Q29va2llKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lLCBjb25zdCBTdHJp
bmcmIHVybCk7Ci0gICAgdmlydHVhbCB2b2lkIGdldFJlc291cmNlVHJlZShFcnJvclN0cmluZyos
IFJlZlB0cjxUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+Jik7CisgICAgdmly
dHVhbCB2b2lkIGdldFJlc291cmNlVHJlZShFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT4mKTsKICAgICB2aXJ0dWFsIHZv
aWQgZ2V0UmVzb3VyY2VDb250ZW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlk
LCBjb25zdCBTdHJpbmcmIHVybCwgU3RyaW5nKiBjb250ZW50LCBib29sKiBiYXNlNjRFbmNvZGVk
KTsKLSAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoSW5SZXNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcXVlcnks
IGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJ
c1JlZ2V4LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpTZWFy
Y2hNYXRjaD4+Jik7Ci0gICAgdmlydHVhbCB2b2lkIHNlYXJjaEluUmVzb3VyY2VzKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiwgY29uc3QgYm9vbCogY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9v
bCogaXNSZWdleCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6
U2VhcmNoUmVzdWx0Pj4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoSW5SZXNvdXJjZShFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3Qg
Ym9vbCogb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0Y2g+PiYpOworICAgIHZp
cnR1YWwgdm9pZCBzZWFyY2hJblJlc291cmNlcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYs
IGNvbnN0IGJvb2wqIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGlzUmVnZXgsIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdl
OjpTZWFyY2hSZXN1bHQ+PiYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXREb2N1bWVudENvbnRlbnQo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgaHRtbCk7
CiAgICAgdmlydHVhbCB2b2lkIGNhbk92ZXJyaWRlRGV2aWNlTWV0cmljcyhFcnJvclN0cmluZyos
IGJvb2wqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RGV2aWNlTWV0cmljc092ZXJyaWRlKEVycm9y
U3RyaW5nKiwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBkb3VibGUgZm9udFNjYWxlRmFjdG9yLCBi
b29sIGZpdFdpbmRvdyk7CkBAIC0xNjMsNyArMTY3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2Ny
aXB0c0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpOwogCiAgICAgLy8gSW5zcGVjdG9yIENvbnRyb2xs
ZXIgQVBJCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJv
bnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICAvLyBDcm9zcy1hZ2VudHMgQVBJCkBA
IC0xOTAsOCArMTk0LDggQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBtYWluUmVzb3VyY2VD
b250ZW50KEZyYW1lKiwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCk7CiAg
ICAgc3RhdGljIGJvb2wgZGF0YUNvbnRlbnQoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6
ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUs
IFN0cmluZyogcmVzdWx0KTsKIAotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OkZy
YW1lPiBidWlsZE9iamVjdEZvckZyYW1lKEZyYW1lKik7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+IGJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKEZy
YW1lKik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpGcmFt
ZT4gYnVpbGRPYmplY3RGb3JGcmFtZShGcmFtZSopOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+IGJ1aWxkT2JqZWN0Rm9yRnJh
bWVUcmVlKEZyYW1lKik7CiAgICAgUGFnZSogbV9wYWdlOwogICAgIEluc3BlY3RvckFnZW50KiBt
X2luc3BlY3RvckFnZW50OwogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXI7CkBAIC0yMTgsNyArMjIyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faWdu
b3JlU2NyaXB0c0VuYWJsZWROb3RpZmljYXRpb247CiAgICAgYm9vbCBtX3Nob3dQYWludFJlY3Rz
OwogICAgIFN0cmluZyBtX2VtdWxhdGVkTWVkaWE7Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gbV9zY3JpcHRzVG9FdmFsdWF0ZU9uTG9hZDsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+IG1fc2NyaXB0c1RvRXZhbHVhdGVPbkxvYWQ7CiAgICAgUmVmUHRyPEdlb2xv
Y2F0aW9uUG9zaXRpb24+IG1fZ2VvbG9jYXRpb25Qb3NpdGlvbjsKICAgICBSZWZQdHI8R2VvbG9j
YXRpb25Qb3NpdGlvbj4gbV9wbGF0Zm9ybUdlb2xvY2F0aW9uUG9zaXRpb247CiAgICAgUmVmUHRy
PERldmljZU9yaWVudGF0aW9uRGF0YT4gbV9kZXZpY2VPcmllbnRhdGlvbjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAppbmRleCBi
YWY1MWY0Li4yN2RkNWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCkBAIC00MCwyMCArNDAsMjIgQEAKICNpbmNsdWRlICJJ
bmplY3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb25zb2xlQWdlbnQuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVl
cy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZVNjcmlwdERlYnVnU2VydmVyLmgiCiAj
aW5jbHVkZSAiU2NyaXB0SGVhcFNuYXBzaG90LmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0Lmgi
CiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZS5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGVyLmgi
CiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaCIKKyNpbmNsdWRlIDxiaW5kaW5n
cy9TY3JpcHRPYmplY3QuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+
CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKK3VzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IGNoYXIq
IGNvbnN0IFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSA9ICJvcmcud2Via2l0LnByb2ZpbGVzLnVz
ZXItaW5pdGlhdGVkIjsKQEAgLTExOSw3ICsxMjEsNyBAQCBQYXNzT3duUHRyPEluc3BlY3RvclBy
b2ZpbGVyQWdlbnQ+IEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmNyZWF0ZShJbnN0cnVtZW50aW5n
QQogfQogCiBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpJbnNwZWN0b3JQcm9maWxlckFnZW50KElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvckNvbnNvbGVB
Z2VudCogY29uc29sZUFnZW50LCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0
TWFuYWdlcikKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIlByb2ZpbGVy
IiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlM
aXRlcmFsKCJQcm9maWxlciIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9jb25zb2xl
QWdlbnQoY29uc29sZUFnZW50KQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9lbmFibGVkKGZhbHNlKQpAQCAtMTY4LDE5ICsxNzAs
MTkgQEAgdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50Ojpjb2xsZWN0R2FyYmFnZShXZWJDb3Jl
OjpFcnJvclN0cmluZyopCiAgICAgU2NyaXB0UHJvZmlsZXI6OmNvbGxlY3RHYXJiYWdlKCk7CiB9
CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPiBJbnNw
ZWN0b3JQcm9maWxlckFnZW50OjpjcmVhdGVQcm9maWxlSGVhZGVyKGNvbnN0IFNjcmlwdFByb2Zp
bGUmIHByb2ZpbGUpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlByb2ZpbGVy
OjpQcm9maWxlSGVhZGVyPiBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpjcmVhdGVQcm9maWxlSGVh
ZGVyKGNvbnN0IFNjcmlwdFByb2ZpbGUmIHByb2ZpbGUpCiB7Ci0gICAgcmV0dXJuIFR5cGVCdWls
ZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcjo6Y3JlYXRlKCkKLSAgICAgICAgLnNldFR5cGVJ
ZChUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI6OlR5cGVJZDo6Q1BVKQorICAg
IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcjo6
Y3JlYXRlKCkKKyAgICAgICAgLnNldFR5cGVJZChJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9m
aWxlcjo6UHJvZmlsZUhlYWRlcjo6VHlwZUlkOjpDUFUpCiAgICAgICAgIC5zZXRVaWQocHJvZmls
ZS51aWQoKSkKICAgICAgICAgLnNldFRpdGxlKHByb2ZpbGUudGl0bGUoKSkKICAgICAgICAgLnJl
bGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVI
ZWFkZXI+IEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmNyZWF0ZVNuYXBzaG90SGVhZGVyKGNvbnN0
IFNjcmlwdEhlYXBTbmFwc2hvdCYgc25hcHNob3QpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPiBJbnNwZWN0b3JQcm9maWxlckFnZW50
OjpjcmVhdGVTbmFwc2hvdEhlYWRlcihjb25zdCBTY3JpcHRIZWFwU25hcHNob3QmIHNuYXBzaG90
KQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+IGhl
YWRlciA9IFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcjo6Y3JlYXRlKCkKLSAg
ICAgICAgLnNldFR5cGVJZChUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI6OlR5
cGVJZDo6SEVBUCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UHJvZmlsZXI6
OlByb2ZpbGVIZWFkZXI+IGhlYWRlciA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlByb2ZpbGVy
OjpQcm9maWxlSGVhZGVyOjpjcmVhdGUoKQorICAgICAgICAuc2V0VHlwZUlkKEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyOjpUeXBlSWQ6OkhFQVApCiAgICAg
ICAgIC5zZXRVaWQoc25hcHNob3QudWlkKCkpCiAgICAgICAgIC5zZXRUaXRsZShzbmFwc2hvdC50
aXRsZSgpKTsKICAgICBoZWFkZXItPnNldE1heEpTT2JqZWN0SWQoc25hcHNob3QubWF4U25hcHNo
b3RKU09iamVjdElkKCkpOwpAQCAtMjQwLDEwICsyNDIsMTAgQEAgU3RyaW5nIEluc3BlY3RvclBy
b2ZpbGVyQWdlbnQ6OmdldEN1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUoYm9vbCBpbmNy
ZW1lbnQKICAgICByZXR1cm4gbWFrZVN0cmluZyhVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUsICcu
JywgU3RyaW5nOjpudW1iZXIobV9jdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOdW1iZXIpKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRQcm9maWxlSGVhZGVycyhFcnJv
clN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlByb2ZpbGVy
OjpQcm9maWxlSGVhZGVyPj4mIGhlYWRlcnMpCit2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6
OmdldFByb2ZpbGVIZWFkZXJzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVh
ZGVyPj4mIGhlYWRlcnMpCiB7CiAgICAgbV9wcm9maWxlSGVhZGVyc1JlcXVlc3RlZCA9IHRydWU7
Ci0gICAgaGVhZGVycyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6
OlByb2ZpbGVIZWFkZXI+OjpjcmVhdGUoKTsKKyAgICBoZWFkZXJzID0gSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVI
ZWFkZXI+OjpjcmVhdGUoKTsKIAogICAgIFByb2ZpbGVzTWFwOjppdGVyYXRvciBwcm9maWxlc0Vu
ZCA9IG1fcHJvZmlsZXMuZW5kKCk7CiAgICAgZm9yIChQcm9maWxlc01hcDo6aXRlcmF0b3IgaXQg
PSBtX3Byb2ZpbGVzLmJlZ2luKCk7IGl0ICE9IHByb2ZpbGVzRW5kOyArK2l0KQpAQCAtMjY4LDcg
KzI3MCw3IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlCiAKLXZvaWQgSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudDo6Z2V0Q1BVUHJvZmlsZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBy
YXdVaWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGU+JiBwcm9maWxl
T2JqZWN0KQordm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRDUFVQcm9maWxlKEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgaW50IHJhd1VpZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlPiYgcHJvZmlsZU9iamVjdCkKIHsKICAgICB1bnNp
Z25lZCB1aWQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmF3VWlkKTsKICAgICBQcm9maWxlc01h
cDo6aXRlcmF0b3IgaXQgPSBtX3Byb2ZpbGVzLmZpbmQodWlkKTsKQEAgLTI3Niw3ICsyNzgsNyBA
QCB2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldENQVVByb2ZpbGUoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBpbnQgcmF3VWlkLAogICAgICAgICAqZXJyb3JTdHJpbmcgPSAiUHJvZmls
ZSB3YXNuJ3QgZm91bmQiOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHByb2ZpbGVPYmpl
Y3QgPSBUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGU6OmNyZWF0ZSgpOworICAgIHBy
b2ZpbGVPYmplY3QgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmls
ZTo6Y3JlYXRlKCk7CiAgICAgcHJvZmlsZU9iamVjdC0+c2V0SGVhZChpdC0+dmFsdWUtPmJ1aWxk
SW5zcGVjdG9yT2JqZWN0Rm9ySGVhZCgpKTsKICAgICBwcm9maWxlT2JqZWN0LT5zZXRJZGxlVGlt
ZShpdC0+dmFsdWUtPmlkbGVUaW1lKCkpOwogfQpAQCAtMzI3LDcgKzMyOSw3IEBAIHZvaWQgSW5z
cGVjdG9yUHJvZmlsZXJBZ2VudDo6cmVzZXRGcm9udGVuZFByb2ZpbGVzKCkKICAgICAgICAgbV9m
cm9udGVuZERpc3BhdGNoZXItPnJlc2V0UHJvZmlsZXMoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JQ
cm9maWxlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBi
YWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6ZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBm
cm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0
Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yUHJvZmlsZXJGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAg
bV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvclByb2ZpbGVyQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CkBAIC00MTQsNyArNDE2LDcgQEAgdm9p
ZCBJbnNwZWN0b3JQcm9maWxlckFnZW50Ojp0b2dnbGVSZWNvcmRCdXR0b24oYm9vbCBpc1Byb2Zp
bGluZykKICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnNldFJlY29yZGluZ1Byb2ZpbGUo
aXNQcm9maWxpbmcpOwogfQogCi12b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldE9iamVj
dEJ5SGVhcE9iamVjdElkKEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBoZWFwU25h
cHNob3RPYmplY3RJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgUmVmUHRyPFR5cGVCdWls
ZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvclByb2Zp
bGVyQWdlbnQ6OmdldE9iamVjdEJ5SGVhcE9iamVjdElkKEVycm9yU3RyaW5nKiBlcnJvciwgY29u
c3QgU3RyaW5nJiBoZWFwU25hcHNob3RPYmplY3RJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91
cCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4m
IHJlc3VsdCkKIHsKICAgICBib29sIG9rOwogICAgIHVuc2lnbmVkIGlkID0gaGVhcFNuYXBzaG90
T2JqZWN0SWQudG9VSW50KCZvayk7CkBAIC00MjIsNyArNDI0LDcgQEAgdm9pZCBJbnNwZWN0b3JQ
cm9maWxlckFnZW50OjpnZXRPYmplY3RCeUhlYXBPYmplY3RJZChFcnJvclN0cmluZyogZXJyb3Is
IGNvbnN0IFMKICAgICAgICAgKmVycm9yID0gIkludmFsaWQgaGVhcCBzbmFwc2hvdCBvYmplY3Qg
aWQiOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIFNjcmlwdE9iamVjdCBoZWFwT2JqZWN0
ID0gU2NyaXB0UHJvZmlsZXI6Om9iamVjdEJ5SGVhcE9iamVjdElkKGlkKTsKKyAgICBEZXByZWNh
dGVkOjpTY3JpcHRPYmplY3QgaGVhcE9iamVjdCA9IFNjcmlwdFByb2ZpbGVyOjpvYmplY3RCeUhl
YXBPYmplY3RJZChpZCk7CiAgICAgaWYgKGhlYXBPYmplY3QuaGFzTm9WYWx1ZSgpKSB7CiAgICAg
ICAgICplcnJvciA9ICJPYmplY3QgaXMgbm90IGF2YWlsYWJsZSI7CiAgICAgICAgIHJldHVybjsK
QEAgLTQ0NCw3ICs0NDYsNyBAQCB2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldEhlYXBP
YmplY3RJZChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cgogICAgICAgICAqZXJy
b3JTdHJpbmcgPSAiSW5zcGVjdGVkIGNvbnRleHQgaGFzIGdvbmUiOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIFNjcmlwdFZhbHVlIHZhbHVlID0gaW5qZWN0ZWRTY3JpcHQuZmluZE9iamVj
dEJ5SWQob2JqZWN0SWQpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHZhbHVlID0gaW5q
ZWN0ZWRTY3JpcHQuZmluZE9iamVjdEJ5SWQob2JqZWN0SWQpOwogICAgIGlmICh2YWx1ZS5oYXNO
b1ZhbHVlKCkgfHwgdmFsdWUuaXNVbmRlZmluZWQoKSkgewogICAgICAgICAqZXJyb3JTdHJpbmcg
PSAiT2JqZWN0IHdpdGggZ2l2ZW4gaWQgbm90IGZvdW5kIjsKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgKaW5k
ZXggNTM3MDljNS4uM2Y3ODM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oCkBAIC0zMiwyMCArMzIsMjQgQEAKIAogI2lmIEVOQUJM
RShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAi
SW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKKyNpbmNsdWRlICJJbnNwZWN0
b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNw
YWNlIEluc3BlY3RvciB7CitjbGFzcyBJbnNwZWN0b3JBcnJheTsKK2NsYXNzIEluc3BlY3Rvck9i
amVjdDsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmplY3RlZFNjcmlwdE1h
bmFnZXI7Ci1jbGFzcyBJbnNwZWN0b3JBcnJheTsKIGNsYXNzIEluc3BlY3RvckNvbnNvbGVBZ2Vu
dDsKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBj
bGFzcyBQYWdlOwogY2xhc3MgU2NyaXB0SGVhcFNuYXBzaG90OwpAQCAtNTQsNyArNTgsNyBAQCBj
bGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAK
LWNsYXNzIEluc3BlY3RvclByb2ZpbGVyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50
LCBwdWJsaWMgSW5zcGVjdG9yUHJvZmlsZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xh
c3MgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1
YmxpYyBJbnNwZWN0b3JQcm9maWxlckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yUHJvZmlsZXJBZ2VudCk7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvclByb2Zp
bGVyQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yQ29uc29sZUFn
ZW50KiwgUGFnZSosIEluamVjdGVkU2NyaXB0TWFuYWdlciopOwpAQCAtODMsMTggKzg3LDE4IEBA
IHB1YmxpYzoKICAgICB2b2lkIGVuYWJsZShib29sIHNraXBSZWNvbXBpbGUpOwogICAgIGJvb2wg
ZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQogICAgIFN0cmluZyBnZXRDdXJy
ZW50VXNlckluaXRpYXRlZFByb2ZpbGVOYW1lKGJvb2wgaW5jcmVtZW50UHJvZmlsZU51bWJlciA9
IGZhbHNlKTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvZmlsZUhlYWRlcnMoRXJyb3JTdHJpbmcq
LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmls
ZUhlYWRlcj4+Jik7Ci0gICAgdmlydHVhbCB2b2lkIGdldENQVVByb2ZpbGUoRXJyb3JTdHJpbmcq
LCBpbnQgdWlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlPiYpOwor
ICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9maWxlSGVhZGVycyhFcnJvclN0cmluZyosIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9m
aWxlcjo6UHJvZmlsZUhlYWRlcj4+Jik7CisgICAgdmlydHVhbCB2b2lkIGdldENQVVByb2ZpbGUo
RXJyb3JTdHJpbmcqLCBpbnQgdWlkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UHJv
ZmlsZXI6OkNQVVByb2ZpbGU+Jik7CiAgICAgdmlydHVhbCB2b2lkIGdldEhlYXBTbmFwc2hvdChF
cnJvclN0cmluZyosIGludCB1aWQpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVQcm9maWxlKEVy
cm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB0eXBlLCBpbnQgdWlkKTsKIAotICAgIHZpcnR1YWwg
dm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9W
RVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIHRha2VIZWFwU25hcHNob3QoRXJyb3JTdHJpbmcq
LCBjb25zdCBib29sKiByZXBvcnRQcm9ncmVzcyk7CiAgICAgdm9pZCB0b2dnbGVSZWNvcmRCdXR0
b24oYm9vbCBpc1Byb2ZpbGluZyk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0T2JqZWN0QnlIZWFw
T2JqZWN0SWQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGhlYXBTbmFwc2hvdE9iamVjdElk
LCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6
OlJlbW90ZU9iamVjdD4mIHJlc3VsdCk7CisgICAgdmlydHVhbCB2b2lkIGdldE9iamVjdEJ5SGVh
cE9iamVjdElkKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBoZWFwU25hcHNob3RPYmplY3RJ
ZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCk7CiAgICAgdmlydHVhbCB2b2lkIGdl
dEhlYXBPYmplY3RJZChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIFN0cmlu
ZyogaGVhcFNuYXBzaG90T2JqZWN0SWQpOwogCiBwcm90ZWN0ZWQ6CkBAIC0xMDksOCArMTEzLDgg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc2V0RnJvbnRlbmRQcm9maWxlcygpOwogICAgIHZvaWQg
cmVzdG9yZUVuYWJsZW1lbnQoKTsKIAotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlByb2Zp
bGVyOjpQcm9maWxlSGVhZGVyPiBjcmVhdGVQcm9maWxlSGVhZGVyKGNvbnN0IFNjcmlwdFByb2Zp
bGUmKTsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRl
cj4gY3JlYXRlU25hcHNob3RIZWFkZXIoY29uc3QgU2NyaXB0SGVhcFNuYXBzaG90Jik7CisgICAg
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRl
cj4gY3JlYXRlUHJvZmlsZUhlYWRlcihjb25zdCBTY3JpcHRQcm9maWxlJik7CisgICAgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4gY3Jl
YXRlU25hcHNob3RIZWFkZXIoY29uc3QgU2NyaXB0SGVhcFNuYXBzaG90Jik7CiAKICAgICBJbnNw
ZWN0b3JDb25zb2xlQWdlbnQqIG1fY29uc29sZUFnZW50OwogICAgIEluamVjdGVkU2NyaXB0TWFu
YWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKaW5kZXggMzhkY2RhYS4uNTc2OGJk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50LmNwcApAQCAtNDgsNyArNDgsNiBAQAogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5o
IgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFn
ZUFnZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1
bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hl
LmgiCkBAIC02NywxNiArNjYsMTggQEAKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgog
I2luY2x1ZGUgIldlYlNvY2tldEZyYW1lLmgiCiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3QuaCIK
LQorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYv
Q3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3Rm
L0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hh
bm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9p
ZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JOZXR3b3JrRnJvbnRlbmRE
aXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJ
bnNwZWN0b3JOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hl
ciwgdGhpcyk7CkBAIC0xMDAsOSArMTAxLDkgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBidWlsZE9iamVjdEZvckhlYWRlcnMoY29uc3QgSFRUUEhlYWRlck1hcCYgaGUKICAg
ICByZXR1cm4gaGVhZGVyc09iamVjdDsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxk
ZXI6Ok5ldHdvcms6OlJlc291cmNlVGltaW5nPiBidWlsZE9iamVjdEZvclRpbWluZyhjb25zdCBS
ZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWluZywgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKK3N0YXRp
YyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc291cmNlVGlt
aW5nPiBidWlsZE9iamVjdEZvclRpbWluZyhjb25zdCBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWlu
ZywgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKLSAgICByZXR1cm4gVHlwZUJ1aWxkZXI6Ok5l
dHdvcms6OlJlc291cmNlVGltaW5nOjpjcmVhdGUoKQorICAgIHJldHVybiBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNvdXJjZVRpbWluZzo6Y3JlYXRlKCkKICAgICAgICAgLnNl
dFJlcXVlc3RUaW1lKGxvYWRlci0+dGltaW5nKCktPm1vbm90b25pY1RpbWVUb1BzZXVkb1dhbGxU
aW1lKHRpbWluZy5jb252ZXJ0UmVzb3VyY2VMb2FkVGltZVRvTW9ub3RvbmljVGltZSgwKSkpCiAg
ICAgICAgIC5zZXRQcm94eVN0YXJ0KHRpbWluZy5wcm94eVN0YXJ0KQogICAgICAgICAuc2V0UHJv
eHlFbmQodGltaW5nLnByb3h5RW5kKQpAQCAtMTE4LDkgKzExOSw5IEBAIHN0YXRpYyBQYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNvdXJjZVRpbWluZz4gYnVpbGRPYmplY3RGb3JU
aW1pbmcoY29uCiAgICAgICAgIC5yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFR5
cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXF1ZXN0PiBidWlsZE9iamVjdEZvclJlc291cmNlUmVxdWVz
dChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCitzdGF0aWMgUGFzc1JlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXF1ZXN0PiBidWlsZE9iamVjdEZvclJlc291
cmNlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgUmVmUHRy
PFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXF1ZXN0PiByZXF1ZXN0T2JqZWN0ID0gVHlwZUJ1aWxk
ZXI6Ok5ldHdvcms6OlJlcXVlc3Q6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6Ok5ldHdvcms6OlJlcXVlc3Q+IHJlcXVlc3RPYmplY3QgPSBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXF1ZXN0OjpjcmVhdGUoKQogICAgICAgICAuc2V0VXJsKHJl
cXVlc3QudXJsKCkuc3RyaW5nKCkpCiAgICAgICAgIC5zZXRNZXRob2QocmVxdWVzdC5odHRwTWV0
aG9kKCkpCiAgICAgICAgIC5zZXRIZWFkZXJzKGJ1aWxkT2JqZWN0Rm9ySGVhZGVycyhyZXF1ZXN0
Lmh0dHBIZWFkZXJGaWVsZHMoKSkpOwpAQCAtMTI5LDcgKzEzMCw3IEBAIHN0YXRpYyBQYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXF1ZXN0PiBidWlsZE9iamVjdEZvclJlc291cmNl
UmVxdWVzdChjCiAgICAgcmV0dXJuIHJlcXVlc3RPYmplY3Q7CiB9CiAKLXN0YXRpYyBQYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNwb25zZT4gYnVpbGRPYmplY3RGb3JSZXNvdXJj
ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBEb2N1bWVudExvYWRl
ciogbG9hZGVyKQorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0
d29yazo6UmVzcG9uc2U+IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKICAgICBp
ZiAocmVzcG9uc2UuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTM3LDcgKzEzOCw3
IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNwb25zZT4gYnVp
bGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlCiAgICAgZG91YmxlIHN0YXR1cyA9IHJlc3BvbnNl
Lmh0dHBTdGF0dXNDb2RlKCk7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gaGVhZGVycyA9
IGJ1aWxkT2JqZWN0Rm9ySGVhZGVycyhyZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkpOwogCi0g
ICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNwb25zZT4gcmVzcG9uc2VPYmplY3Qg
PSBUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVzcG9uc2U6OmNyZWF0ZSgpCisgICAgUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc3BvbnNlPiByZXNwb25zZU9iamVjdCA9
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc3BvbnNlOjpjcmVhdGUoKQogICAg
ICAgICAuc2V0VXJsKHJlc3BvbnNlLnVybCgpLnN0cmluZygpKQogICAgICAgICAuc2V0U3RhdHVz
KHN0YXR1cykKICAgICAgICAgLnNldFN0YXR1c1RleHQocmVzcG9uc2UuaHR0cFN0YXR1c1RleHQo
KSkKQEAgLTE1MywxNCArMTU0LDE0IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpO
ZXR3b3JrOjpSZXNwb25zZT4gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlCiAgICAgcmV0
dXJuIHJlc3BvbnNlT2JqZWN0OwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6
TmV0d29yazo6Q2FjaGVkUmVzb3VyY2U+IGJ1aWxkT2JqZWN0Rm9yQ2FjaGVkUmVzb3VyY2UoQ2Fj
aGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlLCBEb2N1bWVudExvYWRlciogbG9hZGVyKQorc3Rh
dGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6Q2FjaGVkUmVz
b3VyY2U+IGJ1aWxkT2JqZWN0Rm9yQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNhY2hl
ZFJlc291cmNlLCBEb2N1bWVudExvYWRlciogbG9hZGVyKQogewotICAgIFJlZlB0cjxUeXBlQnVp
bGRlcjo6TmV0d29yazo6Q2FjaGVkUmVzb3VyY2U+IHJlc291cmNlT2JqZWN0ID0gVHlwZUJ1aWxk
ZXI6Ok5ldHdvcms6OkNhY2hlZFJlc291cmNlOjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpDYWNoZWRSZXNvdXJjZT4gcmVzb3VyY2VPYmplY3Qg
PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpDYWNoZWRSZXNvdXJjZTo6Y3JlYXRl
KCkKICAgICAgICAgLnNldFVybChjYWNoZWRSZXNvdXJjZS0+dXJsKCkpCiAgICAgICAgIC5zZXRU
eXBlKEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2VUeXBlSnNvbigqY2FjaGVkUmVz
b3VyY2UpKQogICAgICAgICAuc2V0Qm9keVNpemUoY2FjaGVkUmVzb3VyY2UtPmVuY29kZWRTaXpl
KCkpOwogCi0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNwb25zZT4gcmVzb3Vy
Y2VSZXNwb25zZSA9IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShjYWNoZWRSZXNvdXJj
ZS0+cmVzcG9uc2UoKSwgbG9hZGVyKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6TmV0d29yazo6UmVzcG9uc2U+IHJlc291cmNlUmVzcG9uc2UgPSBidWlsZE9iamVjdEZvclJl
c291cmNlUmVzcG9uc2UoY2FjaGVkUmVzb3VyY2UtPnJlc3BvbnNlKCksIGxvYWRlcik7CiAgICAg
aWYgKHJlc291cmNlUmVzcG9uc2UpCiAgICAgICAgIHJlc291cmNlT2JqZWN0LT5zZXRSZXNwb25z
ZShyZXNvdXJjZVJlc3BvbnNlKTsKIApAQCAtMjE2LDkgKzIxNyw5IEBAIHZvaWQgSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
RG9jdW1lbnRMCiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJDYWNoZS1Db250
cm9sIiwgIm5vLWNhY2hlIik7CiAgICAgfQogCi0gICAgVHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291
cmNlVHlwZTo6RW51bSByZXNvdXJjZVR5cGUgPSBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNl
VHlwZUpzb24odHlwZSk7CisgICAgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3Vy
Y2VUeXBlOjpFbnVtIHJlc291cmNlVHlwZSA9IEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VU
eXBlSnNvbih0eXBlKTsKIAotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlh
dG9yPiBpbml0aWF0b3JPYmplY3QgPSBidWlsZEluaXRpYXRvck9iamVjdChsb2FkZXItPmZyYW1l
KCkgPyBsb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCkgOiAwKTsKKyAgICBSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yPiBpbml0aWF0b3JPYmplY3QgPSBi
dWlsZEluaXRpYXRvck9iamVjdChsb2FkZXItPmZyYW1lKCkgPyBsb2FkZXItPmZyYW1lKCktPmRv
Y3VtZW50KCkgOiAwKTsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVxdWVzdFdpbGxCZVNl
bnQocmVxdWVzdElkLCBtX3BhZ2VBZ2VudC0+ZnJhbWVJZChsb2FkZXItPmZyYW1lKCkpLCBtX3Bh
Z2VBZ2VudC0+bG9hZGVySWQobG9hZGVyKSwgbG9hZGVyLT51cmwoKS5zdHJpbmcoKSwgYnVpbGRP
YmplY3RGb3JSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCksIGN1cnJlbnRUaW1lKCksIGluaXRpYXRv
ck9iamVjdCwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKHJlZGlyZWN0UmVzcG9uc2Us
IGxvYWRlciksIHR5cGUgIT0gSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291cmNlID8gJnJl
c291cmNlVHlwZSA6IDApOwogfQogCkBAIC0yMzAsNyArMjMxLDcgQEAgdm9pZCBJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50OjptYXJrUmVzb3VyY2VBc0NhY2hlZCh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIpCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIpCiB7
CiAgICAgU3RyaW5nIHJlcXVlc3RJZCA9IElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlk
ZW50aWZpZXIpOwotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVzcG9uc2U+IHJl
c291cmNlUmVzcG9uc2UgPSBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UocmVzcG9uc2Us
IGxvYWRlcik7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJl
c3BvbnNlPiByZXNvdXJjZVJlc3BvbnNlID0gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNl
KHJlc3BvbnNlLCBsb2FkZXIpOwogCiAgICAgYm9vbCBpc05vdE1vZGlmaWVkID0gcmVzcG9uc2Uu
aHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7CiAKQEAgLTI0Myw3ICsyNDQsNyBAQCB2b2lkIEluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIERvY3VtZQogICAgIGlmIChjYWNoZWRSZXNvdXJjZSkgewogICAgICAgICAvLyBVc2Ug
bWltZSB0eXBlIGZyb20gY2FjaGVkIHJlc291cmNlIGluIGNhc2UgdGhlIG9uZSBpbiByZXNwb25z
ZSBpcyBlbXB0eS4KICAgICAgICAgaWYgKHJlc291cmNlUmVzcG9uc2UgJiYgcmVzcG9uc2UubWlt
ZVR5cGUoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlLT5zZXRTdHJp
bmcoVHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc3BvbnNlOjpNaW1lVHlwZSwgY2FjaGVkUmVzb3Vy
Y2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSk7CisgICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNl
LT5zZXRTdHJpbmcoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVzcG9uc2U6Ok1p
bWVUeXBlLCBjYWNoZWRSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpKTsKICAgICAgICAg
bV9yZXNvdXJjZXNEYXRhLT5hZGRDYWNoZWRSZXNvdXJjZShyZXF1ZXN0SWQsIGNhY2hlZFJlc291
cmNlKTsKICAgICB9CiAKQEAgLTMzNSw3ICszMzYsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNl
QWdlbnQ6OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciogbG9h
ZAogICAgICAgICBtX3Jlc291cmNlc0RhdGEtPnJldXNlWEhSUmVwbGF5RGF0YShyZXF1ZXN0SWQs
IHJhd1JlcXVlc3RJZCk7CiAgICAgfQogCi0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3Jr
OjpJbml0aWF0b3I+IGluaXRpYXRvck9iamVjdCA9IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KGxvYWRl
ci0+ZnJhbWUoKSA/IGxvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSA6IDApOworICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IGluaXRpYXRvck9i
amVjdCA9IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KGxvYWRlci0+ZnJhbWUoKSA/IGxvYWRlci0+ZnJh
bWUoKS0+ZG9jdW1lbnQoKSA6IDApOwogCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVl
c3RTZXJ2ZWRGcm9tTWVtb3J5Q2FjaGUocmVxdWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJZCwgbG9h
ZGVyLT51cmwoKS5zdHJpbmcoKSwgY3VycmVudFRpbWUoKSwgaW5pdGlhdG9yT2JqZWN0LCBidWls
ZE9iamVjdEZvckNhY2hlZFJlc291cmNlKHJlc291cmNlLCBsb2FkZXIpKTsKIH0KQEAgLTQ0MCwx
OSArNDQxLDE5IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkU2NoZWR1bGVTdHls
ZVJlY2FsY3VsYXRpb24oRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICBtX3N0eWxlUmVjYWxj
dWxhdGlvbkluaXRpYXRvciA9IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KGRvY3VtZW50KTsKIH0KIAot
UGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yPiBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpidWlsZEluaXRpYXRvck9iamVjdChEb2N1bWVudCogZG9jdW1lbnQpCitQYXNz
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4gSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudDo6YnVpbGRJbml0aWF0b3JPYmplY3QoRG9jdW1lbnQqIGRvY3VtZW50
KQogewogICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IHN0YWNrVHJhY2UgPSBjcmVhdGVTY3Jp
cHRDYWxsU3RhY2soU2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlLCB0
cnVlKTsKICAgICBpZiAoc3RhY2tUcmFjZSAmJiBzdGFja1RyYWNlLT5zaXplKCkgPiAwKSB7Ci0g
ICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yPiBpbml0aWF0b3JP
YmplY3QgPSBUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yOjpjcmVhdGUoKQotICAgICAg
ICAgICAgLnNldFR5cGUoVHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcjo6VHlwZTo6U2Ny
aXB0KTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6Oklu
aXRpYXRvcj4gaW5pdGlhdG9yT2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29y
azo6SW5pdGlhdG9yOjpjcmVhdGUoKQorICAgICAgICAgICAgLnNldFR5cGUoSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yOjpUeXBlOjpTY3JpcHQpOwogICAgICAgICBp
bml0aWF0b3JPYmplY3QtPnNldFN0YWNrVHJhY2Uoc3RhY2tUcmFjZS0+YnVpbGRJbnNwZWN0b3JB
cnJheSgpKTsKICAgICAgICAgcmV0dXJuIGluaXRpYXRvck9iamVjdDsKICAgICB9CiAKICAgICBp
ZiAoZG9jdW1lbnQgJiYgZG9jdW1lbnQtPnNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpKSB7Ci0g
ICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yPiBpbml0aWF0b3JP
YmplY3QgPSBUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yOjpjcmVhdGUoKQotICAgICAg
ICAgICAgLnNldFR5cGUoVHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcjo6VHlwZTo6UGFy
c2VyKTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6Oklu
aXRpYXRvcj4gaW5pdGlhdG9yT2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29y
azo6SW5pdGlhdG9yOjpjcmVhdGUoKQorICAgICAgICAgICAgLnNldFR5cGUoSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yOjpUeXBlOjpQYXJzZXIpOwogICAgICAgICBp
bml0aWF0b3JPYmplY3QtPnNldFVybChkb2N1bWVudC0+dXJsKCkuc3RyaW5nKCkpOwogICAgICAg
ICBpbml0aWF0b3JPYmplY3QtPnNldExpbmVOdW1iZXIoZG9jdW1lbnQtPnNjcmlwdGFibGVEb2N1
bWVudFBhcnNlcigpLT5saW5lTnVtYmVyKCkub25lQmFzZWRJbnQoKSk7CiAgICAgICAgIHJldHVy
biBpbml0aWF0b3JPYmplY3Q7CkBAIC00NjEsOCArNDYyLDggQEAgUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6TmV0d29yazo6SW5pdGlhdG9yPiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpidWlsZElu
aXRpYXQKICAgICBpZiAobV9pc1JlY2FsY3VsYXRpbmdTdHlsZSAmJiBtX3N0eWxlUmVjYWxjdWxh
dGlvbkluaXRpYXRvcikKICAgICAgICAgcmV0dXJuIG1fc3R5bGVSZWNhbGN1bGF0aW9uSW5pdGlh
dG9yOwogCi0gICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I6OmNyZWF0
ZSgpCi0gICAgICAgIC5zZXRUeXBlKFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I6OlR5
cGU6Ok90aGVyKQorICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJ
bml0aWF0b3I6OmNyZWF0ZSgpCisgICAgICAgIC5zZXRUeXBlKEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6Ok5ldHdvcms6OkluaXRpYXRvcjo6VHlwZTo6T3RoZXIpCiAgICAgICAgIC5yZWxlYXNlKCk7
CiB9CiAKQEAgLTQ3NSwxNCArNDc2LDE0IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
ZGlkQ3JlYXRlV2ViU29ja2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QKIAogdm9p
ZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVl
c3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpCiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpXZWJTb2NrZXRSZXF1ZXN0
PiByZXF1ZXN0T2JqZWN0ID0gVHlwZUJ1aWxkZXI6Ok5ldHdvcms6OldlYlNvY2tldFJlcXVlc3Q6
OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6Oldl
YlNvY2tldFJlcXVlc3Q+IHJlcXVlc3RPYmplY3QgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpO
ZXR3b3JrOjpXZWJTb2NrZXRSZXF1ZXN0OjpjcmVhdGUoKQogICAgICAgICAuc2V0SGVhZGVycyhi
dWlsZE9iamVjdEZvckhlYWRlcnMocmVxdWVzdC5odHRwSGVhZGVyRmllbGRzKCkpKTsKICAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlci0+d2ViU29ja2V0V2lsbFNlbmRIYW5kc2hha2VSZXF1ZXN0KElk
ZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCBjdXJyZW50VGltZSgpLCBy
ZXF1ZXN0T2JqZWN0KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNl
aXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxk
ZXI6Ok5ldHdvcms6OldlYlNvY2tldFJlc3BvbnNlPiByZXNwb25zZU9iamVjdCA9IFR5cGVCdWls
ZGVyOjpOZXR3b3JrOjpXZWJTb2NrZXRSZXNwb25zZTo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6V2ViU29ja2V0UmVzcG9uc2U+IHJlc3BvbnNl
T2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6V2ViU29ja2V0UmVzcG9u
c2U6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRTdGF0dXMocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUo
KSkKICAgICAgICAgLnNldFN0YXR1c1RleHQocmVzcG9uc2UuaHR0cFN0YXR1c1RleHQoKSkKICAg
ICAgICAgLnNldEhlYWRlcnMoYnVpbGRPYmplY3RGb3JIZWFkZXJzKHJlc3BvbnNlLmh0dHBIZWFk
ZXJGaWVsZHMoKSkpOwpAQCAtNDk2LDcgKzQ5Nyw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudDo6ZGlkQ2xvc2VXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogCiB2b2lk
IEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZSh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYlNvY2tldEZyYW1lJiBmcmFtZSkKIHsKLSAgICBS
ZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OldlYlNvY2tldEZyYW1lPiBmcmFtZU9iamVjdCA9
IFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpXZWJTb2NrZXRGcmFtZTo6Y3JlYXRlKCkKKyAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6V2ViU29ja2V0RnJhbWU+IGZyYW1l
T2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6V2ViU29ja2V0RnJhbWU6
OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRPcGNvZGUoZnJhbWUub3BDb2RlKQogICAgICAgICAuc2V0
TWFzayhmcmFtZS5tYXNrZWQpCiAgICAgICAgIC5zZXRQYXlsb2FkRGF0YShTdHJpbmcoZnJhbWUu
cGF5bG9hZCwgZnJhbWUucGF5bG9hZExlbmd0aCkpOwpAQCAtNTA1LDcgKzUwNiw3IEBAIHZvaWQg
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwKIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRTZW5k
V2ViU29ja2V0RnJhbWUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJTb2NrZXRG
cmFtZSYgZnJhbWUpCiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpXZWJTb2Nr
ZXRGcmFtZT4gZnJhbWVPYmplY3QgPSBUeXBlQnVpbGRlcjo6TmV0d29yazo6V2ViU29ja2V0RnJh
bWU6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6
OldlYlNvY2tldEZyYW1lPiBmcmFtZU9iamVjdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5l
dHdvcms6OldlYlNvY2tldEZyYW1lOjpjcmVhdGUoKQogICAgICAgICAuc2V0T3Bjb2RlKGZyYW1l
Lm9wQ29kZSkKICAgICAgICAgLnNldE1hc2soZnJhbWUubWFza2VkKQogICAgICAgICAuc2V0UGF5
bG9hZERhdGEoU3RyaW5nKGZyYW1lLnBheWxvYWQsIGZyYW1lLnBheWxvYWRMZW5ndGgpKTsKQEAg
LTY1MCw3ICs2NTEsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6Om1haW5GcmFtZU5h
dmlnYXRlZChEb2N1bWVudExvYWRlciogbG9hZGVyKQogfQogCiBJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBJbnNwZWN0b3JDbGll
bnQqIGNsaWVudCkKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIk5ldHdv
cmsiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJ
SUxpdGVyYWwoIk5ldHdvcmsiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fcGFnZUFn
ZW50KHBhZ2VBZ2VudCkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fcmVzb3VyY2Vz
RGF0YShhZG9wdFB0cihuZXcgTmV0d29ya1Jlc291cmNlc0RhdGEoKSkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAppbmRleCA4YzI3Zjk0
Li45ZjJlNzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZUFnZW50LmgKQEAgLTMxLDkgKzMxLDkgQEAKICNpZm5kZWYgSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudF9oCiAjZGVmaW5lIEluc3BlY3RvclJlc291cmNlQWdlbnRfaAogCi0jaW5jbHVkZSAi
SW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKLQorI2luY2x1ZGUgIkluc3Bl
Y3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC00MSw4ICs0
MSw5IEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi1uYW1lc3BhY2UgV1RGIHsKLWNsYXNz
IFN0cmluZzsKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yQXJyYXk7Citj
bGFzcyBJbnNwZWN0b3JPYmplY3Q7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUzLDkg
KzU0LDcgQEAgY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGb3JtRGF0YTsKIGNsYXNzIEZy
YW1lOwogY2xhc3MgSFRUUEhlYWRlck1hcDsKLWNsYXNzIEluc3BlY3RvckFycmF5OwogY2xhc3Mg
SW5zcGVjdG9yQ2xpZW50OwotY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3MgSW5zcGVjdG9y
UGFnZUFnZW50OwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFVSTDsKQEAgLTc2
LDcgKzc1LDcgQEAgc3RydWN0IFdlYlNvY2tldEZyYW1lOwogCiB0eXBlZGVmIFN0cmluZyBFcnJv
clN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0
b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JOZXR3b3JrQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyIHsKK2NsYXNzIEluc3BlY3RvclJlc291cmNlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdl
bnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yTmV0d29ya0JhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yUmVzb3VyY2VBZ2VudD4g
Y3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3Rv
clBhZ2VBZ2VudCogcGFnZUFnZW50LCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkKICAgICB7CkBA
IC04NSw3ICs4NCw3IEBAIHB1YmxpYzoKIAogICAgIH5JbnNwZWN0b3JSZXNvdXJjZUFnZW50KCk7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKQEAgLTExNiw3ICsxMTUs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNhbGN1bGF0ZVN0eWxlKCk7CiAgICAgdm9pZCBk
aWRTY2hlZHVsZVN0eWxlUmVjYWxjdWxhdGlvbihEb2N1bWVudCopOwogCi0gICAgUGFzc1JlZlB0
cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yPiBidWlsZEluaXRpYXRvck9iamVjdChE
b2N1bWVudCopOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29y
azo6SW5pdGlhdG9yPiBidWlsZEluaXRpYXRvck9iamVjdChEb2N1bWVudCopOwogCiAjaWYgRU5B
QkxFKFdFQl9TT0NLRVRTKQogICAgIHZvaWQgZGlkQ3JlYXRlV2ViU29ja2V0KHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgVVJMJiByZXF1ZXN0VVJMKTsKQEAgLTEzNSw3ICsxMzQsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIHNldFVz
ZXJBZ2VudE92ZXJyaWRlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpOwot
ICAgIHZpcnR1YWwgdm9pZCBzZXRFeHRyYUhUVFBIZWFkZXJzKEVycm9yU3RyaW5nKiwgY29uc3Qg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RXh0cmFIVFRQ
SGVhZGVycyhFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdD4mKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVzcG9uc2VCb2R5KEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFN0cmluZyogY29udGVudCwgYm9vbCogYmFzZTY0RW5j
b2RlZCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVwbGF5WEhSKEVycm9yU3RyaW5nKiwgY29uc3Qg
U3RyaW5nJiByZXF1ZXN0SWQpOwpAQCAtMTYwLDEyICsxNTksMTIgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fZW5hYmxlZDsKICAgICBib29sIG1fY2FjaGVEaXNhYmxlZDsKICAgICBib29sIG1fbG9h
ZGluZ1hIUlN5bmNocm9ub3VzbHk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbV9leHRy
YVJlcXVlc3RIZWFkZXJzOworICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4g
bV9leHRyYVJlcXVlc3RIZWFkZXJzOwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFRocmVhZGFibGVM
b2FkZXJDbGllbnQqLCBSZWZQdHI8WEhSUmVwbGF5RGF0YT4+IFBlbmRpbmdYSFJSZXBsYXlEYXRh
TWFwOwogICAgIFBlbmRpbmdYSFJSZXBsYXlEYXRhTWFwIG1fcGVuZGluZ1hIUlJlcGxheURhdGE7
CiAgICAgLy8gRklYTUU6IEluc3BlY3RvclJlc291cmNlQWdlbnQgc2hvdWxkIG5vdyBiZSBhd2Fy
ZSBvZiBzdHlsZSByZWNhbGN1bGF0aW9uLgotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29y
azo6SW5pdGlhdG9yPiBtX3N0eWxlUmVjYWxjdWxhdGlvbkluaXRpYXRvcjsKKyAgICBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yPiBtX3N0eWxlUmVjYWxj
dWxhdGlvbkluaXRpYXRvcjsKICAgICBib29sIG1faXNSZWNhbGN1bGF0aW5nU3R5bGU7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQu
Y3BwCmluZGV4IDhiMzQ2OTAuLmFkOGM0MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCkBAIC0zNiw4ICszNiw4IEBACiAKICNp
bmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdl
ci5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93
QmFzZS5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRl
IDxwYXJzZXIvUGFyc2VyRXJyb3IuaD4KICNpbmNsdWRlIDxwYXJzZXIvU291cmNlQ29kZS5oPgog
I2luY2x1ZGUgPHJ1bnRpbWUvQ29tcGxldGlvbi5oPgpAQCAtNTAsNiArNTAsOCBAQAogCiB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBib29sIGFzQm9vbChjb25zdCBib29sKiBjb25zdCBiKQpA
QCAtNTgsNyArNjAsNyBAQCBzdGF0aWMgYm9vbCBhc0Jvb2woY29uc3QgYm9vbCogY29uc3QgYikK
IH0KIAogSW5zcGVjdG9yUnVudGltZUFnZW50OjpJbnNwZWN0b3JSdW50aW1lQWdlbnQoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlM
aXRlcmFsKCJSdW50aW1lIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JB
Z2VudEJhc2UoQVNDSUlMaXRlcmFsKCJSdW50aW1lIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAg
ICAgLCBtX2VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihpbmpl
Y3RlZFNjcmlwdE1hbmFnZXIpCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCkBAIC04
MiwxNSArODQsMTUgQEAgc3RhdGljIFNjcmlwdERlYnVnU2VydmVyOjpQYXVzZU9uRXhjZXB0aW9u
c1N0YXRlIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoU2NyaXAKIH0KICNlbmRpZgogCi1zdGF0
aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6RXJyb3JSYW5nZT4gYnVpbGRFcnJv
clJhbmdlT2JqZWN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgdG9rZW5Mb2NhdGlvbikKK3N0YXRp
YyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkVycm9yUmFuZ2U+
IGJ1aWxkRXJyb3JSYW5nZU9iamVjdChjb25zdCBKU1Rva2VuTG9jYXRpb24mIHRva2VuTG9jYXRp
b24pCiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpFcnJvclJhbmdlPiByZXN1
bHQgPSBUeXBlQnVpbGRlcjo6UnVudGltZTo6RXJyb3JSYW5nZTo6Y3JlYXRlKCkKKyAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6RXJyb3JSYW5nZT4gcmVzdWx0ID0g
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6RXJyb3JSYW5nZTo6Y3JlYXRlKCkKICAg
ICAgICAgLnNldFN0YXJ0T2Zmc2V0KHRva2VuTG9jYXRpb24uc3RhcnRPZmZzZXQpCiAgICAgICAg
IC5zZXRFbmRPZmZzZXQodG9rZW5Mb2NhdGlvbi5lbmRPZmZzZXQpOwogICAgIHJldHVybiByZXN1
bHQucmVsZWFzZSgpOwogfQogCi12b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6cGFyc2UoRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIFR5cGVCdWlsZGVyOjpSdW50aW1l
OjpTeW50YXhFcnJvclR5cGU6OkVudW0qIHJlc3VsdCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxT
dHJpbmc+KiBtZXNzYWdlLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkVycm9yUmFuZ2U+
JiByYW5nZSkKK3ZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpwYXJzZShFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGlt
ZTo6U3ludGF4RXJyb3JUeXBlOjpFbnVtKiByZXN1bHQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
Ok9wdE91dHB1dDxTdHJpbmc+KiBtZXNzYWdlLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6UnVudGltZTo6RXJyb3JSYW5nZT4mIHJhbmdlKQogewogICAgIFZNKiB2bSA9IEpTRE9NV2lu
ZG93QmFzZTo6Y29tbW9uVk0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CkBAIC0xMDAs
MTYgKzEwMiwxNiBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6cGFyc2UoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIFR5cGVCdQogCiAgICAgc3dpdGNoIChlcnJv
ci5tX3N5bnRheEVycm9yVHlwZSkgewogICAgIGNhc2UgUGFyc2VyRXJyb3I6OlN5bnRheEVycm9y
Tm9uZToKLSAgICAgICAgKnJlc3VsdCA9IFR5cGVCdWlsZGVyOjpSdW50aW1lOjpTeW50YXhFcnJv
clR5cGU6Ok5vbmU7CisgICAgICAgICpyZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpS
dW50aW1lOjpTeW50YXhFcnJvclR5cGU6Ok5vbmU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
UGFyc2VyRXJyb3I6OlN5bnRheEVycm9ySXJyZWNvdmVyYWJsZToKLSAgICAgICAgKnJlc3VsdCA9
IFR5cGVCdWlsZGVyOjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGU6OklycmVjb3ZlcmFibGU7Cisg
ICAgICAgICpyZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpTeW50YXhF
cnJvclR5cGU6OklycmVjb3ZlcmFibGU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUGFyc2Vy
RXJyb3I6OlN5bnRheEVycm9yVW50ZXJtaW5hdGVkTGl0ZXJhbDoKLSAgICAgICAgKnJlc3VsdCA9
IFR5cGVCdWlsZGVyOjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGU6OlVudGVybWluYXRlZExpdGVy
YWw7CisgICAgICAgICpyZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpT
eW50YXhFcnJvclR5cGU6OlVudGVybWluYXRlZExpdGVyYWw7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgUGFyc2VyRXJyb3I6OlN5bnRheEVycm9yUmVjb3ZlcmFibGU6Ci0gICAgICAgICpyZXN1
bHQgPSBUeXBlQnVpbGRlcjo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBlOjpSZWNvdmVyYWJsZTsK
KyAgICAgICAgKnJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlN5bnRh
eEVycm9yVHlwZTo6UmVjb3ZlcmFibGU7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMTE5
LDcgKzEyMSw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpwYXJzZShFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgVHlwZUJ1CiAgICAgfQogfQogCi12b2lkIElu
c3BlY3RvclJ1bnRpbWVBZ2VudDo6ZXZhbHVhdGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAs
IGNvbnN0IGJvb2wqIGNvbnN0IGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY29uc3QgYm9vbCogY29u
c3QgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBpbnQqIGV4ZWN1
dGlvbkNvbnRleHRJZCwgY29uc3QgYm9vbCogY29uc3QgcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9v
bCogZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4mIHJlc3VsdCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQor
dm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRlKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVj
dEdyb3VwLCBjb25zdCBib29sKiBjb25zdCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGNvbnN0IGJv
b2wqIGNvbnN0IGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3QgaW50
KiBleGVjdXRpb25Db250ZXh0SWQsIGNvbnN0IGJvb2wqIGNvbnN0IHJldHVybkJ5VmFsdWUsIGNv
bnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCiB7CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0
ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdEZvckV2YWwoZXJyb3JTdHJpbmcsIGV4ZWN1dGlvbkNv
bnRleHRJZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKQEAgLTE0Miw3
ICsxNDQsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZXZhbHVhdGUoRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGV4cAogICAgIH0KIH0KIAotdm9pZCBJbnNw
ZWN0b3JSdW50aW1lQWdlbnQ6OmNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBjb25zdCBvcHRpb25hbEFyZ3VtZW50cywgY29uc3Qg
Ym9vbCogY29uc3QgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBi
b29sKiBjb25zdCByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBUeXBlQnVp
bGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCit2b2lkIEluc3BlY3RvclJ1bnRpbWVB
Z2VudDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFJlZlB0cjxJbnNw
ZWN0b3JBcnJheT4qIGNvbnN0IG9wdGlvbmFsQXJndW1lbnRzLCBjb25zdCBib29sKiBjb25zdCBk
b05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGJvb2wqIGNvbnN0IHJl
dHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCiB7CiAgICAgSW5qZWN0
ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0
ZWRTY3JpcHRGb3JPYmplY3RJZChvYmplY3RJZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhh
c05vVmFsdWUoKSkgewpAQCAtMTcxLDcgKzE3Myw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFn
ZW50OjpjYWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmlu
CiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVydGllcyhF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJv
b2wqIGNvbnN0IG93blByb3BlcnRpZXMsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1
aWxkZXI6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1bHQsIFJlZlB0cjxUeXBl
QnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNj
cmlwdG9yPj4mIGludGVybmFsUHJvcGVydGllcykKK3ZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50
OjpnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBv
YmplY3RJZCwgY29uc3QgYm9vbCogY29uc3Qgb3duUHJvcGVydGllcywgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlBy
b3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1bHQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5
RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFByb3BlcnRpZXMpCiB7CiAgICAgSW5qZWN0ZWRTY3JpcHQg
aW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRG
b3JPYmplY3RJZChvYmplY3RJZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUo
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRp
bWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2Vu
dC5oCmluZGV4IDliNTdlMmIuLjgyYzUyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKQEAgLTMzLDI1ICszMywyOSBAQAogCiAjaWYg
RU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2lu
Y2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3Rv
cldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBJbmplY3RlZFNjcmlwdDsKLWNsYXNzIEluamVjdGVkU2NyaXB0TWFu
YWdlcjsKK25hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBjbGFz
cyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKK30KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBJbmplY3RlZFNjcmlwdDsKK2NsYXNzIEluamVjdGVkU2NyaXB0
TWFuYWdlcjsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBTY3JpcHREZWJ1Z1Nl
cnZlcjsKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0
cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yUnVudGltZUFnZW50IDogcHVibGljIEluc3BlY3RvckJh
c2VBZ2VudCwgcHVibGljIEluc3BlY3RvclJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIg
eworY2xhc3MgSW5zcGVjdG9yUnVudGltZUFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFz
ZSwgcHVibGljIEluc3BlY3RvclJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvclJ1bnRpbWVBZ2VudCk7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+SW5zcGVjdG9yUnVudGltZUFnZW50KCk7CkBAIC02MCw3ICs2NCw3IEBAIHB1
YmxpYzoKICAgICAvLyBQYXJ0IG9mIHRoZSBwcm90b2NvbC4KICAgICB2aXJ0dWFsIHZvaWQgZW5h
YmxlKEVycm9yU3RyaW5nKikgeyBtX2VuYWJsZWQgPSB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lk
IGRpc2FibGUoRXJyb3JTdHJpbmcqKSB7IG1fZW5hYmxlZCA9IGZhbHNlOyB9Ci0gICAgdmlydHVh
bCB2b2lkIHBhcnNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBUeXBl
QnVpbGRlcjo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBlOjpFbnVtKiByZXN1bHQsIFR5cGVCdWls
ZGVyOjpPcHRPdXRwdXQ8U3RyaW5nPiogbWVzc2FnZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50
aW1lOjpFcnJvclJhbmdlPiYpOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZShFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGlt
ZTo6U3ludGF4RXJyb3JUeXBlOjpFbnVtKiByZXN1bHQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
Ok9wdE91dHB1dDxTdHJpbmc+KiBtZXNzYWdlLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6UnVudGltZTo6RXJyb3JSYW5nZT4mKTsKICAgICB2aXJ0dWFsIHZvaWQgZXZhbHVhdGUoRXJy
b3JTdHJpbmcqLAogICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLAog
ICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwKQEAgLTY5LDE5ICs3
MywxOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQqIGV4ZWN1dGlvbkNv
bnRleHRJZCwKICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wqIHJldHVybkJ5VmFsdWUsCiAg
ICAgICAgICAgICAgICAgICBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsCi0gICAgICAgICAg
ICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3Vs
dCwKLSAgICAgICAgICAgICAgICAgIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Ro
cm93bik7CisgICAgICAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LAorICAgICAgICAgICAgICAgICAgSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOwogICAgIHZpcnR1
YWwgdm9pZCBjYWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyosCiAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBTdHJpbmcmIG9iamVjdElkLAogICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVm
UHRyPEluc3BlY3RvckFycmF5Piogb3B0aW9uYWxBcmd1bWVudHMsCisgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4qIG9wdGlvbmFs
QXJndW1lbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCogZG9Ob3RQYXVz
ZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLAogICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJv
b2wqIGdlbmVyYXRlUHJldmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxUeXBl
QnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1l
OjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7CiAgICAgdmlydHVh
bCB2b2lkIHJlbGVhc2VPYmplY3QoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElk
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIG93blByb3BlcnRpZXMsIFJlZlB0cjxUeXBlQnVp
bGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiBy
ZXN1bHQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6Oklu
dGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4mIGludGVybmFsUHJvcGVydGllcyk7CisgICAgdmly
dHVhbCB2b2lkIGdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVj
dElkLCBjb25zdCBib29sKiBvd25Qcm9wZXJ0aWVzLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UHJvcGVydHlEZXNj
cmlwdG9yPj4mIHJlc3VsdCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9y
Pj4mIGludGVybmFsUHJvcGVydGllcyk7CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VPYmplY3RH
cm91cChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApOwogICAgIHZpcnR1
YWwgdm9pZCBydW4oRXJyb3JTdHJpbmcqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IDY3NjYyMmIuLmNhYTQ0Y2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAg
LTQ5LDcgKzQ5LDYgQEAKICNpbmNsdWRlICJIVE1MU3R5bGVFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yQ1NTQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKLSNp
bmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAi
UmVndWxhckV4cHJlc3Npb24uaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgpAQCAtNjAsMTMgKzU5
LDEzIEBACiAjaW5jbHVkZSAiU3R5bGVTaGVldENvbnRlbnRzLmgiCiAjaW5jbHVkZSAiU3R5bGVT
aGVldExpc3QuaCIKICNpbmNsdWRlICJXZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmgiCi0KKyNpbmNs
dWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAotdXNpbmcgV2ViQ29yZTo6VHlw
ZUJ1aWxkZXI6OkFycmF5OwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk7CiB1
c2luZyBXZWJDb3JlOjpSdWxlU291cmNlRGF0YUxpc3Q7CiB1c2luZyBXZWJDb3JlOjpDU1NSdWxl
U291cmNlRGF0YTsKIApAQCAtMTQ0LDYgKzE0Myw4IEBAIFBhc3NSZWZQdHI8V2ViQ29yZTo6Q1NT
UnVsZVNvdXJjZURhdGE+IFBhcnNlZFN0eWxlU2hlZXQ6OnJ1bGVTb3VyY2VEYXRhQXQodW5zaWdu
CiAgICAgcmV0dXJuIG1fc291cmNlRGF0YS0+YXQoaW5kZXgpOwogfQogCit1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gTWVkaWFMaXN0U291
cmNlIHsKQEAgLTE1MywxNCArMTU0LDE0IEBAIGVudW0gTWVkaWFMaXN0U291cmNlIHsKICAgICBN
ZWRpYUxpc3RTb3VyY2VJbXBvcnRSdWxlCiB9OwogCi1zdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6Q1NTOjpTb3VyY2VSYW5nZT4gYnVpbGRTb3VyY2VSYW5nZU9iamVjdChjb25zdCBTb3Vy
Y2VSYW5nZSYgcmFuZ2UsIFZlY3RvcjxzaXplX3Q+KiBsaW5lRW5kaW5ncykKK3N0YXRpYyBQYXNz
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U291cmNlUmFuZ2U+IGJ1aWxkU291
cmNlUmFuZ2VPYmplY3QoY29uc3QgU291cmNlUmFuZ2UmIHJhbmdlLCBWZWN0b3I8c2l6ZV90Piog
bGluZUVuZGluZ3MpCiB7CiAgICAgaWYgKCFsaW5lRW5kaW5ncykKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgVGV4dFBvc2l0aW9uIHN0YXJ0ID0gQ29udGVudFNlYXJjaFV0aWxzOjp0ZXh0UG9zaXRp
b25Gcm9tT2Zmc2V0KHJhbmdlLnN0YXJ0LCAqbGluZUVuZGluZ3MpOwogICAgIFRleHRQb3NpdGlv
biBlbmQgPSBDb250ZW50U2VhcmNoVXRpbHM6OnRleHRQb3NpdGlvbkZyb21PZmZzZXQocmFuZ2Uu
ZW5kLCAqbGluZUVuZGluZ3MpOwogCi0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OlNvdXJj
ZVJhbmdlPiByZXN1bHQgPSBUeXBlQnVpbGRlcjo6Q1NTOjpTb3VyY2VSYW5nZTo6Y3JlYXRlKCkK
KyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTb3VyY2VSYW5nZT4gcmVz
dWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTb3VyY2VSYW5nZTo6Y3JlYXRlKCkK
ICAgICAgICAgLnNldFN0YXJ0TGluZShzdGFydC5tX2xpbmUuemVyb0Jhc2VkSW50KCkpCiAgICAg
ICAgIC5zZXRTdGFydENvbHVtbihzdGFydC5tX2NvbHVtbi56ZXJvQmFzZWRJbnQoKSkKICAgICAg
ICAgLnNldEVuZExpbmUoZW5kLm1fbGluZS56ZXJvQmFzZWRJbnQoKSkKQEAgLTE2OCwyNiArMTY5
LDI2IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OlNvdXJjZVJhbmdlPiBi
dWlsZFNvdXJjZVJhbmdlT2JqZWN0KGNvbnN0IFNvCiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNl
KCk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU01lZGlhPiBi
dWlsZE1lZGlhT2JqZWN0KGNvbnN0IE1lZGlhTGlzdCogbWVkaWEsIE1lZGlhTGlzdFNvdXJjZSBt
ZWRpYUxpc3RTb3VyY2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQorc3RhdGljIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYT4gYnVpbGRNZWRpYU9iamVj
dChjb25zdCBNZWRpYUxpc3QqIG1lZGlhLCBNZWRpYUxpc3RTb3VyY2UgbWVkaWFMaXN0U291cmNl
LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKIHsKICAgICAvLyBNYWtlIGNlcnRhaW4gY29tcGls
ZXJzIGhhcHB5IGJ5IGluaXRpYWxpemluZyB8c291cmNlfCB1cC1mcm9udC4KLSAgICBUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NNZWRpYTo6U291cmNlOjpFbnVtIHNvdXJjZSA9IFR5cGVCdWlsZGVyOjpD
U1M6OkNTU01lZGlhOjpTb3VyY2U6OklubGluZVNoZWV0OworICAgIEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTTWVkaWE6OlNvdXJjZTo6RW51bSBzb3VyY2UgPSBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDU1M6OkNTU01lZGlhOjpTb3VyY2U6OklubGluZVNoZWV0OwogICAgIHN3aXRj
aCAobWVkaWFMaXN0U291cmNlKSB7CiAgICAgY2FzZSBNZWRpYUxpc3RTb3VyY2VNZWRpYVJ1bGU6
Ci0gICAgICAgIHNvdXJjZSA9IFR5cGVCdWlsZGVyOjpDU1M6OkNTU01lZGlhOjpTb3VyY2U6Ok1l
ZGlhUnVsZTsKKyAgICAgICAgc291cmNlID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NNZWRpYTo6U291cmNlOjpNZWRpYVJ1bGU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVk
aWFMaXN0U291cmNlSW1wb3J0UnVsZToKLSAgICAgICAgc291cmNlID0gVHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTTWVkaWE6OlNvdXJjZTo6SW1wb3J0UnVsZTsKKyAgICAgICAgc291cmNlID0gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYTo6U291cmNlOjpJbXBvcnRSdWxlOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIE1lZGlhTGlzdFNvdXJjZUxpbmtlZFNoZWV0OgotICAgICAg
ICBzb3VyY2UgPSBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYTo6U291cmNlOjpMaW5rZWRTaGVl
dDsKKyAgICAgICAgc291cmNlID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRp
YTo6U291cmNlOjpMaW5rZWRTaGVldDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYUxp
c3RTb3VyY2VJbmxpbmVTaGVldDoKLSAgICAgICAgc291cmNlID0gVHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTTWVkaWE6OlNvdXJjZTo6SW5saW5lU2hlZXQ7CisgICAgICAgIHNvdXJjZSA9IEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE6OlNvdXJjZTo6SW5saW5lU2hlZXQ7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIAotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRp
YT4gbWVkaWFPYmplY3QgPSBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYTo6Y3JlYXRlKCkKKyAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYT4gbWVkaWFPYmpl
Y3QgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU01lZGlhOjpjcmVhdGUoKQogICAg
ICAgICAuc2V0VGV4dChtZWRpYS0+bWVkaWFUZXh0KCkpCiAgICAgICAgIC5zZXRTb3VyY2Uoc291
cmNlKTsKIApAQCAtMjM4LDcgKzIzOSw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPENTU1J1bGVMaXN0
PiBhc0NTU1J1bGVMaXN0KENTU1J1bGUqIHJ1bGUpCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRp
YyB2b2lkIGZpbGxNZWRpYUxpc3RDaGFpbihDU1NSdWxlKiBydWxlLCBBcnJheTxUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NNZWRpYT4qIG1lZGlhQXJyYXkpCitzdGF0aWMgdm9pZCBmaWxsTWVkaWFMaXN0
Q2hhaW4oQ1NTUnVsZSogcnVsZSwgQXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NNZWRpYT4qIG1lZGlhQXJyYXkpCiB7CiAgICAgTWVkaWFMaXN0KiBtZWRpYUxpc3Q7CiAgICAg
Q1NTUnVsZSogcGFyZW50UnVsZSA9IHJ1bGU7CkBAIC0zMTYsMTEgKzMxNywxMSBAQCBJbnNwZWN0
b3JTdHlsZTo6fkluc3BlY3RvclN0eWxlKCkKIHsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OmJ1aWxkT2JqZWN0Rm9yU3R5bGUoKSBj
b25zdAorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBJ
bnNwZWN0b3JTdHlsZTo6YnVpbGRPYmplY3RGb3JTdHlsZSgpIGNvbnN0CiB7Ci0gICAgUmVmUHRy
PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiByZXN1bHQgPSBzdHlsZVdpdGhQcm9wZXJ0aWVz
KCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IHJl
c3VsdCA9IHN0eWxlV2l0aFByb3BlcnRpZXMoKTsKICAgICBpZiAoIW1fc3R5bGVJZC5pc0VtcHR5
KCkpCi0gICAgICAgIHJlc3VsdC0+c2V0U3R5bGVJZChtX3N0eWxlSWQuYXNQcm90b2NvbFZhbHVl
PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlSWQ+KCkpOworICAgICAgICByZXN1bHQtPnNldFN0
eWxlSWQobV9zdHlsZUlkLmFzUHJvdG9jb2xWYWx1ZTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6OkNTU1N0eWxlSWQ+KCkpOwogCiAgICAgcmVzdWx0LT5zZXRXaWR0aChtX3N0eWxlLT5nZXRQ
cm9wZXJ0eVZhbHVlKCJ3aWR0aCIpKTsKICAgICByZXN1bHQtPnNldEhlaWdodChtX3N0eWxlLT5n
ZXRQcm9wZXJ0eVZhbHVlKCJoZWlnaHQiKSk7CkBAIC0zMzIsMTUgKzMzMywxNSBAQCBQYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6YnVpbGRPYmpl
Y3RGb3JTdHlsZSgpIGNvbgogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCi1QYXNz
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NDb21wdXRlZFN0
eWxlUHJvcGVydHk+PiBJbnNwZWN0b3JTdHlsZTo6YnVpbGRBcnJheUZvckNvbXB1dGVkU3R5bGUo
KSBjb25zdAorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+IEluc3BlY3Rv
clN0eWxlOjpidWlsZEFycmF5Rm9yQ29tcHV0ZWRTdHlsZSgpIGNvbnN0CiB7Ci0gICAgUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJv
cGVydHk+PiByZXN1bHQgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
Q29tcHV0ZWRTdHlsZVByb3BlcnR5Pjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTQ29tcHV0
ZWRTdHlsZVByb3BlcnR5Pj4gcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+Ojpj
cmVhdGUoKTsKICAgICBWZWN0b3I8SW5zcGVjdG9yU3R5bGVQcm9wZXJ0eT4gcHJvcGVydGllczsK
ICAgICBwb3B1bGF0ZUFsbFByb3BlcnRpZXMoJnByb3BlcnRpZXMpOwogCiAgICAgZm9yIChWZWN0
b3I8SW5zcGVjdG9yU3R5bGVQcm9wZXJ0eT46Oml0ZXJhdG9yIGl0ID0gcHJvcGVydGllcy5iZWdp
bigpLCBpdEVuZCA9IHByb3BlcnRpZXMuZW5kKCk7IGl0ICE9IGl0RW5kOyArK2l0KSB7CiAgICAg
ICAgIGNvbnN0IENTU1Byb3BlcnR5U291cmNlRGF0YSYgcHJvcGVydHlFbnRyeSA9IGl0LT5zb3Vy
Y2VEYXRhOwotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTQ29tcHV0ZWRTdHls
ZVByb3BlcnR5PiBlbnRyeSA9IFR5cGVCdWlsZGVyOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9w
ZXJ0eTo6Y3JlYXRlKCkKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5PiBlbnRyeSA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5OjpjcmVhdGUoKQogICAgICAgICAgICAg
LnNldE5hbWUocHJvcGVydHlFbnRyeS5uYW1lKQogICAgICAgICAgICAgLnNldFZhbHVlKHByb3Bl
cnR5RW50cnkudmFsdWUpOwogICAgICAgICByZXN1bHQtPmFkZEl0ZW0oZW50cnkpOwpAQCAtNTE5
LDE0ICs1MjAsMTQgQEAgYm9vbCBJbnNwZWN0b3JTdHlsZTo6cG9wdWxhdGVBbGxQcm9wZXJ0aWVz
KFZlY3RvcjxJbnNwZWN0b3JTdHlsZVByb3BlcnR5PiogcmVzdWwKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5
bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjb25zdAorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVy
dGllcygpIGNvbnN0CiB7CiAgICAgVmVjdG9yPEluc3BlY3RvclN0eWxlUHJvcGVydHk+IHByb3Bl
cnRpZXM7CiAgICAgcG9wdWxhdGVBbGxQcm9wZXJ0aWVzKCZwcm9wZXJ0aWVzKTsKIAotICAgIFJl
ZlB0cjxBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eT4+IHByb3BlcnRpZXNPYmpl
Y3QgPSBBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eT46OmNyZWF0ZSgpOwotICAg
IFJlZlB0cjxBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpTaG9ydGhhbmRFbnRyeT4+IHNob3J0aGFu
ZEVudHJpZXMgPSBBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpTaG9ydGhhbmRFbnRyeT46OmNyZWF0
ZSgpOwotICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJv
cGVydHk+PiBwcm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHk7CisgICAgUmVmUHRy
PEFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk+PiBwcm9wZXJ0
aWVzT2JqZWN0ID0gQXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0
eT46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6OlNob3J0aGFuZEVudHJ5Pj4gc2hvcnRoYW5kRW50cmllcyA9IEFycmF5PEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNTUzo6U2hvcnRoYW5kRW50cnk+OjpjcmVhdGUoKTsKKyAgICBIYXNoTWFw
PFN0cmluZywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk+
PiBwcm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHk7CiAgICAgSGFzaFNldDxTdHJp
bmc+IGZvdW5kU2hvcnRoYW5kczsKICAgICBTdHJpbmcgcHJldmlvdXNQcmlvcml0eTsKICAgICBT
dHJpbmcgcHJldmlvdXNTdGF0dXM7CkBAIC01MzgsOSArNTM5LDkgQEAgUGFzc1JlZlB0cjxUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRp
ZXMoKSBjb24KICAgICAgICAgY29uc3QgQ1NTUHJvcGVydHlTb3VyY2VEYXRhJiBwcm9wZXJ0eUVu
dHJ5ID0gaXQtPnNvdXJjZURhdGE7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgbmFtZSA9IHByb3Bl
cnR5RW50cnkubmFtZTsKIAotICAgICAgICBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eTo6
U3RhdHVzOjpFbnVtIHN0YXR1cyA9IGl0LT5kaXNhYmxlZCA/IFR5cGVCdWlsZGVyOjpDU1M6OkNT
U1Byb3BlcnR5OjpTdGF0dXM6OkRpc2FibGVkIDogVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVy
dHk6OlN0YXR1czo6QWN0aXZlOworICAgICAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
OkNTU1Byb3BlcnR5OjpTdGF0dXM6OkVudW0gc3RhdHVzID0gaXQtPmRpc2FibGVkID8gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eTo6U3RhdHVzOjpEaXNhYmxlZCA6IElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlN0YXR1czo6QWN0aXZlOwog
Ci0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eT4gcHJvcGVydHkg
PSBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eTo6Y3JlYXRlKCkKKyAgICAgICAgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk+IHByb3BlcnR5ID0gSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eTo6Y3JlYXRlKCkKICAgICAgICAg
ICAgIC5zZXROYW1lKG5hbWUpCiAgICAgICAgICAgICAuc2V0VmFsdWUocHJvcGVydHlFbnRyeS52
YWx1ZSk7CiAKQEAgLTU3MywyMiArNTc0LDIyIEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVzKCkgY29uCiAg
ICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkID0gY3NzUHJvcGVydHlJRChu
YW1lKTsKICAgICAgICAgICAgICAgICAvLyBDYW5vbmljYWxpemUgcHJvcGVydHkgbmFtZXMgdG8g
dHJlYXQgbm9uLXByZWZpeGVkIGFuZCB2ZW5kb3ItcHJlZml4ZWQgcHJvcGVydHkgbmFtZXMgdGhl
IHNhbWUgKG9wYWNpdHkgdnMuIC13ZWJraXQtb3BhY2l0eSkuCiAgICAgICAgICAgICAgICAgU3Ry
aW5nIGNhbm9uaWNhbFByb3BlcnR5TmFtZSA9IHByb3BlcnR5SWQgPyBnZXRQcm9wZXJ0eU5hbWVT
dHJpbmcocHJvcGVydHlJZCkgOiBuYW1lOwotICAgICAgICAgICAgICAgIEhhc2hNYXA8U3RyaW5n
LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk+Pjo6aXRlcmF0b3IgYWN0aXZl
SXQgPSBwcm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHkuZmluZChjYW5vbmljYWxQ
cm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eT4+OjppdGVyYXRvciBhY3RpdmVJ
dCA9IHByb3BlcnR5TmFtZVRvUHJldmlvdXNBY3RpdmVQcm9wZXJ0eS5maW5kKGNhbm9uaWNhbFBy
b3BlcnR5TmFtZSk7CiAgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZUl0ICE9IHByb3BlcnR5TmFt
ZVRvUHJldmlvdXNBY3RpdmVQcm9wZXJ0eS5lbmQoKSkgewogICAgICAgICAgICAgICAgICAgICBp
ZiAocHJvcGVydHlFbnRyeS5wYXJzZWRPaykgewotICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBzdWNjZXNzUHJpb3JpdHkgPSBhY3RpdmVJdC0+dmFsdWUtPmdldFN0cmluZyhUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NQcm9wZXJ0eTo6UHJpb3JpdHksICZwcmV2aW91c1ByaW9yaXR5KTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgc3VjY2Vzc1N0YXR1cyA9IGFjdGl2ZUl0LT52YWx1ZS0+
Z2V0U3RyaW5nKFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpTdGF0dXMsICZwcmV2aW91
c1N0YXR1cyk7CisgICAgICAgICAgICAgICAgICAgICAgICBib29sIHN1Y2Nlc3NQcmlvcml0eSA9
IGFjdGl2ZUl0LT52YWx1ZS0+Z2V0U3RyaW5nKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTUHJvcGVydHk6OlByaW9yaXR5LCAmcHJldmlvdXNQcmlvcml0eSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIHN1Y2Nlc3NTdGF0dXMgPSBhY3RpdmVJdC0+dmFsdWUtPmdldFN0cmlu
ZyhJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpTdGF0dXMsICZwcmV2
aW91c1N0YXR1cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3VjY2Vzc1N0YXR1cyAm
JiBwcmV2aW91c1N0YXR1cyAhPSAiaW5hY3RpdmUiKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHByb3BlcnR5RW50cnkuaW1wb3J0YW50IHx8ICFzdWNjZXNzUHJpb3JpdHkpIC8v
IFByaW9yaXR5IG5vdCBzZXQgPT0gIm5vdCBpbXBvcnRhbnQiLgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaG91bGRJbmFjdGl2YXRlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlIGlmIChzdGF0dXMgPT0gVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVy
dHk6OlN0YXR1czo6QWN0aXZlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBp
ZiAoc3RhdHVzID09IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlN0
YXR1czo6QWN0aXZlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluYWN0
aXZhdGUgYSBub24taW1wb3J0YW50IHByb3BlcnR5IGZvbGxvd2luZyB0aGUgc2FtZS1uYW1lZCBp
bXBvcnRhbnQgcHJvcGVydHkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1
cyA9IFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpTdGF0dXM6OkluYWN0aXZlOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpTdGF0dXM6OkluYWN0aXZlOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJldmlvdXNQYXJz
ZWRPazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9IGFjdGl2ZUl0LT52
YWx1ZS0+Z2V0Qm9vbGVhbihUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eTo6UGFyc2VkT2ss
ICZwcmV2aW91c1BhcnNlZE9rKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3VjY2Vz
cyA9IGFjdGl2ZUl0LT52YWx1ZS0+Z2V0Qm9vbGVhbihJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6OkNTU1Byb3BlcnR5OjpQYXJzZWRPaywgJnByZXZpb3VzUGFyc2VkT2spOwogICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHN1Y2Nlc3MgJiYgIXByZXZpb3VzUGFyc2VkT2spCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2hvdWxkSW5hY3RpdmF0ZSA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgICAgIH0KQEAgLTU5Niw3ICs1OTcsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpD
U1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcygpIGNvbgog
ICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHku
c2V0KGNhbm9uaWNhbFByb3BlcnR5TmFtZSwgcHJvcGVydHkpOwogCiAgICAgICAgICAgICAgICAg
aWYgKHNob3VsZEluYWN0aXZhdGUpIHsKLSAgICAgICAgICAgICAgICAgICAgYWN0aXZlSXQtPnZh
bHVlLT5zZXRTdGF0dXMoVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlN0YXR1czo6SW5h
Y3RpdmUpOworICAgICAgICAgICAgICAgICAgICBhY3RpdmVJdC0+dmFsdWUtPnNldFN0YXR1cyhJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpTdGF0dXM6OkluYWN0aXZl
KTsKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lVG9QcmV2aW91c0FjdGl2ZVByb3Bl
cnR5LnNldChjYW5vbmljYWxQcm9wZXJ0eU5hbWUsIHByb3BlcnR5KTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNjA0LDEzICs2MDUsMTMgQEAgUGFzc1JlZlB0
cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFBy
b3BlcnRpZXMoKSBjb24KICAgICAgICAgICAgICAgICAvLyBEZWZhdWx0ICJpbXBsaWNpdCIgPT0g
ZmFsc2UuCiAgICAgICAgICAgICAgICAgaWYgKGltcGxpY2l0KQogICAgICAgICAgICAgICAgICAg
ICBwcm9wZXJ0eS0+c2V0SW1wbGljaXQodHJ1ZSk7Ci0gICAgICAgICAgICAgICAgc3RhdHVzID0g
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlN0YXR1czo6U3R5bGU7CisgICAgICAgICAg
ICAgICAgc3RhdHVzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eTo6
U3RhdHVzOjpTdHlsZTsKIAogICAgICAgICAgICAgICAgIFN0cmluZyBzaG9ydGhhbmQgPSBtX3N0
eWxlLT5nZXRQcm9wZXJ0eVNob3J0aGFuZChuYW1lKTsKICAgICAgICAgICAgICAgICBpZiAoIXNo
b3J0aGFuZC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFmb3VuZFNob3J0
aGFuZHMuY29udGFpbnMoc2hvcnRoYW5kKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgZm91
bmRTaG9ydGhhbmRzLmFkZChzaG9ydGhhbmQpOwotICAgICAgICAgICAgICAgICAgICAgICAgUmVm
UHRyPFR5cGVCdWlsZGVyOjpDU1M6OlNob3J0aGFuZEVudHJ5PiBlbnRyeSA9IFR5cGVCdWlsZGVy
OjpDU1M6OlNob3J0aGFuZEVudHJ5OjpjcmVhdGUoKQorICAgICAgICAgICAgICAgICAgICAgICAg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2hvcnRoYW5kRW50cnk+IGVudHJ5
ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTaG9ydGhhbmRFbnRyeTo6Y3JlYXRlKCkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0TmFtZShzaG9ydGhhbmQpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLnNldFZhbHVlKHNob3J0aGFuZFZhbHVlKHNob3J0aGFuZCkp
OwogICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnRoYW5kRW50cmllcy0+YWRkSXRlbShlbnRy
eSk7CkBAIC02MjAsMTEgKzYyMSwxMSBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNT
U1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcygpIGNvbgogICAgICAg
ICB9CiAKICAgICAgICAgLy8gRGVmYXVsdCAic3RhdHVzIiA9PSAic3R5bGUiLgotICAgICAgICBp
ZiAoc3RhdHVzICE9IFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpTdGF0dXM6OlN0eWxl
KQorICAgICAgICBpZiAoc3RhdHVzICE9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
UHJvcGVydHk6OlN0YXR1czo6U3R5bGUpCiAgICAgICAgICAgICBwcm9wZXJ0eS0+c2V0U3RhdHVz
KHN0YXR1cyk7CiAgICAgfQogCi0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxl
PiByZXN1bHQgPSBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZTo6Y3JlYXRlKCkKKyAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gcmVzdWx0ID0gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldENz
c1Byb3BlcnRpZXMocHJvcGVydGllc09iamVjdCkKICAgICAgICAgLnNldFNob3J0aGFuZEVudHJp
ZXMoc2hvcnRoYW5kRW50cmllcyk7CiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CkBAIC03
NTksNyArNzYwLDcgQEAgTmV3TGluZUFuZFdoaXRlc3BhY2UmIEluc3BlY3RvclN0eWxlOjpuZXdM
aW5lQW5kV2hpdGVzcGFjZURlbGltaXRlcnMoKSBjb25zdAogICAgIHJldHVybiBtX2Zvcm1hdDsK
IH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3JTdHlsZVNoZWV0PiBJbnNwZWN0b3JTdHlsZVNoZWV0
OjpjcmVhdGUoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0IFN0cmluZyYgaWQs
IFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4gcGFnZVN0eWxlU2hlZXQsIFR5cGVCdWlsZGVyOjpD
U1M6OlN0eWxlU2hlZXRPcmlnaW46OkVudW0gb3JpZ2luLCBjb25zdCBTdHJpbmcmIGRvY3VtZW50
VVJMLCBMaXN0ZW5lciogbGlzdGVuZXIpCitQYXNzUmVmUHRyPEluc3BlY3RvclN0eWxlU2hlZXQ+
IEluc3BlY3RvclN0eWxlU2hlZXQ6OmNyZWF0ZShJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2Vu
dCwgY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBwYWdlU3R5bGVT
aGVldCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpFbnVt
IG9yaWdpbiwgY29uc3QgU3RyaW5nJiBkb2N1bWVudFVSTCwgTGlzdGVuZXIqIGxpc3RlbmVyKQog
ewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5zcGVjdG9yU3R5bGVTaGVldChwYWdlQWdlbnQs
IGlkLCBwYWdlU3R5bGVTaGVldCwgb3JpZ2luLCBkb2N1bWVudFVSTCwgbGlzdGVuZXIpKTsKIH0K
QEAgLTc3Miw3ICs3NzMsNyBAQCBTdHJpbmcgSW5zcGVjdG9yU3R5bGVTaGVldDo6c3R5bGVTaGVl
dFVSTChDU1NTdHlsZVNoZWV0KiBwYWdlU3R5bGVTaGVldCkKICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKIH0KIAotSW5zcGVjdG9yU3R5bGVTaGVldDo6SW5zcGVjdG9yU3R5bGVTaGVldChJbnNw
ZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxD
U1NTdHlsZVNoZWV0PiBwYWdlU3R5bGVTaGVldCwgVHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVl
dE9yaWdpbjo6RW51bSBvcmlnaW4sIGNvbnN0IFN0cmluZyYgZG9jdW1lbnRVUkwsIExpc3RlbmVy
KiBsaXN0ZW5lcikKK0luc3BlY3RvclN0eWxlU2hlZXQ6Okluc3BlY3RvclN0eWxlU2hlZXQoSW5z
cGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8
Q1NTU3R5bGVTaGVldD4gcGFnZVN0eWxlU2hlZXQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNT
Uzo6U3R5bGVTaGVldE9yaWdpbjo6RW51bSBvcmlnaW4sIGNvbnN0IFN0cmluZyYgZG9jdW1lbnRV
UkwsIExpc3RlbmVyKiBsaXN0ZW5lcikKICAgICA6IG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkKICAg
ICAsIG1faWQoaWQpCiAgICAgLCBtX3BhZ2VTdHlsZVNoZWV0KHBhZ2VTdHlsZVNoZWV0KQpAQCAt
OTYzLDcgKzk2NCw3IEBAIENTU1N0eWxlUnVsZSogSW5zcGVjdG9yU3R5bGVTaGVldDo6cnVsZUZv
cklkKGNvbnN0IEluc3BlY3RvckNTU0lkJiBpZCkgY29uc3QKIAogfQogCi1QYXNzUmVmUHRyPFR5
cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5PiBJbnNwZWN0b3JTdHlsZVNoZWV0Ojpi
dWlsZE9iamVjdEZvclN0eWxlU2hlZXQoKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5PiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9i
amVjdEZvclN0eWxlU2hlZXQoKQogewogICAgIENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQgPSBw
YWdlU3R5bGVTaGVldCgpOwogICAgIGlmICghc3R5bGVTaGVldCkKQEAgLTk3MSw3ICs5NzIsNyBA
QCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5PiBJbnNwZWN0
b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdAogCiAgICAgUmVmUHRyPENTU1J1bGVMaXN0PiBjc3NS
dWxlTGlzdCA9IGFzQ1NTUnVsZUxpc3Qoc3R5bGVTaGVldCk7CiAKLSAgICBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEJvZHk+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpDU1M6
OkNTU1N0eWxlU2hlZXRCb2R5OjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5PiByZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5OjpjcmVhdGUoKQogICAgICAgICAuc2V0U3R5
bGVTaGVldElkKGlkKCkpCiAgICAgICAgIC5zZXRSdWxlcyhidWlsZEFycmF5Rm9yUnVsZUxpc3Qo
Y3NzUnVsZUxpc3QuZ2V0KCkpKTsKIApAQCAtOTgzLDcgKzk4NCw3IEBAIFBhc3NSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEJvZHk+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1
aWxkT2JqZWN0CiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4gSW5zcGVjdG9yU3R5bGVTaGVl
dDo6YnVpbGRPYmplY3RGb3JTdHlsZVNoZWV0SW5mbygpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4gSW5zcGVjdG9yU3R5bGVTaGVl
dDo6YnVpbGRPYmplY3RGb3JTdHlsZVNoZWV0SW5mbygpCiB7CiAgICAgQ1NTU3R5bGVTaGVldCog
c3R5bGVTaGVldCA9IHBhZ2VTdHlsZVNoZWV0KCk7CiAgICAgaWYgKCFzdHlsZVNoZWV0KQpAQCAt
OTkxLDcgKzk5Miw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVl
dEhlYWRlcj4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplCiAKICAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSBzdHlsZVNoZWV0LT5vd25lckRvY3VtZW50KCk7CiAgICAgRnJhbWUqIGZyYW1l
ID0gZG9jdW1lbnQgPyBkb2N1bWVudC0+ZnJhbWUoKSA6IDA7Ci0gICAgUmVmUHRyPFR5cGVCdWls
ZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpDU1M6
OkNTU1N0eWxlU2hlZXRIZWFkZXI6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4gcmVzdWx0ID0gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyOjpjcmVhdGUoKQogICAgICAgICAu
c2V0U3R5bGVTaGVldElkKGlkKCkpCiAgICAgICAgIC5zZXRPcmlnaW4obV9vcmlnaW4pCiAgICAg
ICAgIC5zZXREaXNhYmxlZChzdHlsZVNoZWV0LT5kaXNhYmxlZCgpKQpAQCAtMTAwMiwxMCArMTAw
MywxMCBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+
IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZQogICAgIHJldHVybiByZXN1bHQucmVsZWFz
ZSgpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4g
c2VsZWN0b3JzRnJvbVNvdXJjZShjb25zdCBDU1NSdWxlU291cmNlRGF0YSogc291cmNlRGF0YSwg
Y29uc3QgU3RyaW5nJiBzaGVldFRleHQpCitzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBzZWxlY3RvcnNGcm9tU291cmNlKGNvbnN0IENTU1J1
bGVTb3VyY2VEYXRhKiBzb3VyY2VEYXRhLCBjb25zdCBTdHJpbmcmIHNoZWV0VGV4dCkKIHsKICAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFJlZ3VsYXJFeHByZXNzaW9uLCBjb21tZW50LCAoIi9cXCpb
Xl0qP1xcKi8iLCBUZXh0Q2FzZVNlbnNpdGl2ZSwgTXVsdGlsaW5lRW5hYmxlZCkpOwotICAgIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OkFy
cmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxTdHJpbmc+PiByZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxT
dHJpbmc+OjpjcmVhdGUoKTsKICAgICBjb25zdCBTZWxlY3RvclJhbmdlTGlzdCYgcmFuZ2VzID0g
c291cmNlRGF0YS0+c2VsZWN0b3JSYW5nZXM7CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUg
PSByYW5nZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIGNvbnN0IFNvdXJjZVJh
bmdlJiByYW5nZSA9IHJhbmdlcy5hdChpKTsKQEAgLTEwMTgsMTIgKzEwMTksMTIgQEAgc3RhdGlj
IFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IHNlbGVjdG9yc0Zyb21Tb3Vy
Y2UoY29uc3QgQ1NTUnVsZVMKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAotUGFz
c1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3Rvckxpc3Q+IEluc3BlY3RvclN0eWxlU2hl
ZXQ6OmJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3JMaXN0KENTU1N0eWxlUnVsZSogcnVsZSkKK1Bhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3Rvckxpc3Q+IEluc3BlY3Rv
clN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3JMaXN0KENTU1N0eWxlUnVsZSogcnVs
ZSkKIHsKICAgICBSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IHNvdXJjZURhdGE7CiAgICAgaWYg
KGVuc3VyZVBhcnNlZERhdGFSZWFkeSgpKQogICAgICAgICBzb3VyY2VEYXRhID0gcnVsZVNvdXJj
ZURhdGFGb3IocnVsZS0+c3R5bGUoKSk7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxT
dHJpbmc+PiBzZWxlY3RvcnM7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFy
cmF5PFN0cmluZz4+IHNlbGVjdG9yczsKIAogICAgIC8vIFRoaXMgaW50ZW50aW9uYWxseSBkb2Vz
IG5vdCByZWx5IG9uIHRoZSBzb3VyY2UgZGF0YSB0byBhdm9pZCBjYXRjaGluZyB0aGUgdHJhaWxp
bmcgY29tbWVudHMgKGJlZm9yZSB0aGUgZGVjbGFyYXRpb24gc3RhcnRpbmcgJ3snKS4KICAgICBT
dHJpbmcgc2VsZWN0b3JUZXh0ID0gcnVsZS0+c2VsZWN0b3JUZXh0KCk7CkBAIC0xMDMxLDEyICsx
MDMyLDEyIEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JMaXN0PiBJbnNw
ZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdEZvclNlCiAgICAgaWYgKHNvdXJjZURhdGEpCiAg
ICAgICAgIHNlbGVjdG9ycyA9IHNlbGVjdG9yc0Zyb21Tb3VyY2Uoc291cmNlRGF0YS5nZXQoKSwg
bV9wYXJzZWRTdHlsZVNoZWV0LT50ZXh0KCkpOwogICAgIGVsc2UgewotICAgICAgICBzZWxlY3Rv
cnMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CisgICAgICAgIHNlbGVj
dG9ycyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwog
ICAgICAgICBjb25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCA9IHJ1bGUtPnN0eWxl
UnVsZSgpLT5zZWxlY3Rvckxpc3QoKTsKICAgICAgICAgZm9yIChjb25zdCBDU1NTZWxlY3Rvciog
c2VsZWN0b3IgPSBzZWxlY3Rvckxpc3QuZmlyc3QoKTsgc2VsZWN0b3I7IHNlbGVjdG9yID0gQ1NT
U2VsZWN0b3JMaXN0OjpuZXh0KHNlbGVjdG9yKSkKICAgICAgICAgICAgIHNlbGVjdG9ycy0+YWRk
SXRlbShzZWxlY3Rvci0+c2VsZWN0b3JUZXh0KCkpOwogICAgIH0KLSAgICBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkNTUzo6U2VsZWN0b3JMaXN0PiByZXN1bHQgPSBUeXBlQnVpbGRlcjo6Q1NTOjpTZWxl
Y3Rvckxpc3Q6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNT
Uzo6U2VsZWN0b3JMaXN0PiByZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNl
bGVjdG9yTGlzdDo6Y3JlYXRlKCkKICAgICAgICAgLnNldFNlbGVjdG9ycyhzZWxlY3RvcnMpCiAg
ICAgICAgIC5zZXRUZXh0KHNlbGVjdG9yVGV4dCkKICAgICAgICAgLnJlbGVhc2UoKTsKQEAgLTEw
NDUsMjkgKzEwNDYsMjkgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3Rvckxp
c3Q+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU2UKICAgICByZXR1cm4gcmVz
dWx0LnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxl
PiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdEZvclJ1bGUoQ1NTU3R5bGVSdWxlKiBy
dWxlKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+IElu
c3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZShDU1NTdHlsZVJ1bGUqIHJ1bGUp
CiB7CiAgICAgQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCA9IHBhZ2VTdHlsZVNoZWV0KCk7CiAg
ICAgaWYgKCFzdHlsZVNoZWV0KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiByZXN1bHQgPSBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxl
OjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1
bGU+IHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZTo6Y3JlYXRl
KCkKICAgICAgICAgLnNldFNlbGVjdG9yTGlzdChidWlsZE9iamVjdEZvclNlbGVjdG9yTGlzdChy
dWxlKSkKICAgICAgICAgLnNldFNvdXJjZUxpbmUocnVsZS0+c3R5bGVSdWxlKCktPnNvdXJjZUxp
bmUoKSkKICAgICAgICAgLnNldE9yaWdpbihtX29yaWdpbikKICAgICAgICAgLnNldFN0eWxlKGJ1
aWxkT2JqZWN0Rm9yU3R5bGUocnVsZS0+c3R5bGUoKSkpOwogCiAgICAgLy8gInNvdXJjZVVSTCIg
aXMgcHJlc2VudCBvbmx5IGZvciByZWd1bGFyIHJ1bGVzLCBvdGhlcndpc2UgIm9yaWdpbiIgc2hv
dWxkIGJlIHVzZWQgaW4gdGhlIGZyb250ZW5kLgotICAgIGlmIChtX29yaWdpbiA9PSBUeXBlQnVp
bGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpSZWd1bGFyKQorICAgIGlmIChtX29yaWdpbiA9
PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlJlZ3VsYXIp
CiAgICAgICAgIHJlc3VsdC0+c2V0U291cmNlVVJMKGZpbmFsVVJMKCkpOwogCiAgICAgaWYgKGNh
bkJpbmQoKSkgewogICAgICAgICBJbnNwZWN0b3JDU1NJZCBpZChydWxlSWQocnVsZSkpOwogICAg
ICAgICBpZiAoIWlkLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJlc3VsdC0+c2V0UnVsZUlkKGlk
LmFzUHJvdG9jb2xWYWx1ZTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlSWQ+KCkpOworICAgICAg
ICAgICAgcmVzdWx0LT5zZXRSdWxlSWQoaWQuYXNQcm90b2NvbFZhbHVlPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZUlkPigpKTsKICAgICB9CiAKLSAgICBSZWZQdHI8QXJyYXk8
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE+PiBtZWRpYUFycmF5ID0gQXJyYXk8VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTTWVkaWE+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8QXJyYXk8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYT4+IG1lZGlhQXJyYXkgPSBBcnJheTxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU01lZGlhPjo6Y3JlYXRlKCk7CiAKICAgICBmaWxsTWVk
aWFMaXN0Q2hhaW4ocnVsZSwgbWVkaWFBcnJheS5nZXQoKSk7CiAgICAgaWYgKG1lZGlhQXJyYXkt
Pmxlbmd0aCgpKQpAQCAtMTA3Niw3ICsxMDc3LDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NSdWxlPiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdEZvclJ1bGUoQ1MK
ICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTdHls
ZShDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RG
b3JTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkKIHsKICAgICBSZWZQdHI8Q1NTUnVs
ZVNvdXJjZURhdGE+IHNvdXJjZURhdGE7CiAgICAgaWYgKGVuc3VyZVBhcnNlZERhdGFSZWFkeSgp
KQpAQCAtMTA4NCwxMyArMTA4NSwxMyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNT
U1N0eWxlPiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdEZvclN0eWxlKAogCiAgICAg
SW5zcGVjdG9yQ1NTSWQgaWQgPSBydWxlT3JTdHlsZUlkKHN0eWxlKTsKICAgICBpZiAoaWQuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gYm9n
dXNTdHlsZSA9IFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlOjpjcmVhdGUoKQotICAgICAgICAg
ICAgLnNldENzc1Byb3BlcnRpZXMoQXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk+
OjpjcmVhdGUoKSkKLSAgICAgICAgICAgIC5zZXRTaG9ydGhhbmRFbnRyaWVzKEFycmF5PFR5cGVC
dWlsZGVyOjpDU1M6OlNob3J0aGFuZEVudHJ5Pjo6Y3JlYXRlKCkpOworICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gYm9ndXNTdHlsZSA9IEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU6OmNyZWF0ZSgpCisgICAgICAgICAgICAu
c2V0Q3NzUHJvcGVydGllcyhBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1By
b3BlcnR5Pjo6Y3JlYXRlKCkpCisgICAgICAgICAgICAuc2V0U2hvcnRoYW5kRW50cmllcyhBcnJh
eTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNob3J0aGFuZEVudHJ5Pjo6Y3JlYXRlKCkp
OwogICAgICAgICByZXR1cm4gYm9ndXNTdHlsZS5yZWxlYXNlKCk7CiAgICAgfQogICAgIFJlZlB0
cjxJbnNwZWN0b3JTdHlsZT4gaW5zcGVjdG9yU3R5bGUgPSBpbnNwZWN0b3JTdHlsZUZvcklkKGlk
KTsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IHJlc3VsdCA9IGluc3Bl
Y3RvclN0eWxlLT5idWlsZE9iamVjdEZvclN0eWxlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IHJlc3VsdCA9IGluc3BlY3RvclN0eWxlLT5idWls
ZE9iamVjdEZvclN0eWxlKCk7CiAKICAgICAvLyBTdHlsZSB0ZXh0IGNhbm5vdCBiZSByZXRyaWV2
ZWQgd2l0aG91dCBzdHlsZXNoZWV0LCBzbyBzZXQgY3NzVGV4dCBoZXJlLgogICAgIGlmIChzb3Vy
Y2VEYXRhKSB7CkBAIC0xMzc0LDcgKzEzNzUsNyBAQCBib29sIEluc3BlY3RvclN0eWxlU2hlZXQ6
Om9yaWdpbmFsU3R5bGVTaGVldFRleHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0CiAKIGJvb2wgSW5z
cGVjdG9yU3R5bGVTaGVldDo6cmVzb3VyY2VTdHlsZVNoZWV0VGV4dChTdHJpbmcqIHJlc3VsdCkg
Y29uc3QKIHsKLSAgICBpZiAobV9vcmlnaW4gPT0gVHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVl
dE9yaWdpbjo6VXNlciB8fCBtX29yaWdpbiA9PSBUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0
T3JpZ2luOjpVc2VyQWdlbnQpCisgICAgaWYgKG1fb3JpZ2luID09IEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6VXNlciB8fCBtX29yaWdpbiA9PSBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlVzZXJBZ2VudCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFtX3BhZ2VTdHlsZVNoZWV0IHx8ICFvd25lckRv
Y3VtZW50KCkgfHwgIW93bmVyRG9jdW1lbnQoKS0+ZnJhbWUoKSkKQEAgLTE0MDYsOSArMTQwNyw5
IEBAIGJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6aW5saW5lU3R5bGVTaGVldFRleHQoU3RyaW5n
KiByZXN1bHQpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1
aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+PiBJbnNwZWN0b3JTdHlsZVNo
ZWV0OjpidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3QqIHJ1bGVMaXN0KQorUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDU1M6OkNTU1J1bGU+PiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZEFycmF5Rm9yUnVsZUxp
c3QoQ1NTUnVsZUxpc3QqIHJ1bGVMaXN0KQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJy
YXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpBcnJh
eTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
UnVsZT4+IHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT46OmNyZWF0ZSgpOwogICAgIGlmICghcnVsZUxpc3Qp
CiAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogCkBAIC0xNDQwLDEyICsxNDQxLDEy
IEBAIHZvaWQgSW5zcGVjdG9yU3R5bGVTaGVldDo6Y29sbGVjdEZsYXRSdWxlcyhQYXNzUmVmUHRy
PENTU1J1bGVMaXN0PiBydWxlTGlzdCwgQ1NTCiAgICAgfQogfQogCi1QYXNzUmVmUHRyPEluc3Bl
Y3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZT4gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGlu
ZVN0eWxlOjpjcmVhdGUoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0IFN0cmlu
ZyYgaWQsIFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCwgVHlwZUJ1aWxkZXI6OkNTUzo6U3R5
bGVTaGVldE9yaWdpbjo6RW51bSBvcmlnaW4sIExpc3RlbmVyKiBsaXN0ZW5lcikKK1Bhc3NSZWZQ
dHI8SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlPiBJbnNwZWN0b3JTdHlsZVNoZWV0
Rm9ySW5saW5lU3R5bGU6OmNyZWF0ZShJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgY29u
c3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxFbGVtZW50PiBlbGVtZW50LCBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OkVudW0gb3JpZ2luLCBMaXN0ZW5lciog
bGlzdGVuZXIpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbnNwZWN0b3JTdHlsZVNoZWV0
Rm9ySW5saW5lU3R5bGUocGFnZUFnZW50LCBpZCwgZWxlbWVudCwgb3JpZ2luLCBsaXN0ZW5lcikp
OwogfQogCi1JbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6Okluc3BlY3RvclN0eWxl
U2hlZXRGb3JJbmxpbmVTdHlsZShJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgY29uc3Qg
U3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxFbGVtZW50PiBlbGVtZW50LCBUeXBlQnVpbGRlcjo6Q1NT
OjpTdHlsZVNoZWV0T3JpZ2luOjpFbnVtIG9yaWdpbiwgTGlzdGVuZXIqIGxpc3RlbmVyKQorSW5z
cGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5s
aW5lU3R5bGUoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0IFN0cmluZyYgaWQs
IFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpTdHlsZVNoZWV0T3JpZ2luOjpFbnVtIG9yaWdpbiwgTGlzdGVuZXIqIGxpc3RlbmVyKQogICAg
IDogSW5zcGVjdG9yU3R5bGVTaGVldChwYWdlQWdlbnQsIGlkLCAwLCBvcmlnaW4sICIiLCBsaXN0
ZW5lcikKICAgICAsIG1fZWxlbWVudChlbGVtZW50KQogICAgICwgbV9ydWxlU291cmNlRGF0YSgw
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hl
ZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgKaW5k
ZXggZjUwMzliNC4uMmIzMTZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5oCkBAIC0yOSw5ICsyOSw4IEBACiAjaW5jbHVkZSAiQ1NTU3R5bGVE
ZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JTdHlsZVRleHRFZGl0b3IuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5o
IgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgotCisjaW5jbHVkZSAiSW5zcGVjdG9yV2Vi
VHlwZUJ1aWxkZXJzLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNjQsMTIgKzYzLDEyIEBAIHB1YmxpYzoKICAgICB7
CiAgICAgfQogCi0gICAgZXhwbGljaXQgSW5zcGVjdG9yQ1NTSWQoUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gdmFsdWUpCisgICAgZXhwbGljaXQgSW5zcGVjdG9yQ1NTSWQoUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0PiB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICghdmFsdWUtPmdl
dFN0cmluZygic3R5bGVTaGVldElkIiwgJm1fc3R5bGVTaGVldElkKSkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgCi0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gb3JkaW5hbFZh
bHVlID0gdmFsdWUtPmdldCgib3JkaW5hbCIpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JWYWx1ZT4gb3JkaW5hbFZhbHVlID0gdmFsdWUtPmdldCgib3JkaW5hbCIpOwogICAg
ICAgICBpZiAoIW9yZGluYWxWYWx1ZSB8fCAhb3JkaW5hbFZhbHVlLT5hc051bWJlcigmbV9vcmRp
bmFsKSkKICAgICAgICAgICAgIG1fc3R5bGVTaGVldElkID0gIiI7CiAgICAgfQpAQCAtODUsNyAr
ODQsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQoKSBjb25zdCB7
IHJldHVybiBtX3N0eWxlU2hlZXRJZDsgfQogICAgIHVuc2lnbmVkIG9yZGluYWwoKSBjb25zdCB7
IHJldHVybiBtX29yZGluYWw7IH0KIAotICAgIC8vIElEIHR5cGUgaXMgZWl0aGVyIFR5cGVCdWls
ZGVyOjpDU1M6OkNTU1N0eWxlSWQgb3IgVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZUlkLgorICAg
IC8vIElEIHR5cGUgaXMgZWl0aGVyIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5
bGVJZCBvciBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGVJZC4KICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBJRD4KICAgICBQYXNzUmVmUHRyPElEPiBhc1Byb3RvY29sVmFsdWUoKSBj
b25zdAogICAgIHsKQEAgLTE0MCw4ICsxMzksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5z
cGVjdG9yU3R5bGUoKTsKIAogICAgIENTU1N0eWxlRGVjbGFyYXRpb24qIGNzc1N0eWxlKCkgY29u
c3QgeyByZXR1cm4gbV9zdHlsZS5nZXQoKTsgfQotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTU3R5bGU+IGJ1aWxkT2JqZWN0Rm9yU3R5bGUoKSBjb25zdDsKLSAgICBQYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NDb21wdXRlZFN0eWxl
UHJvcGVydHk+PiBidWlsZEFycmF5Rm9yQ29tcHV0ZWRTdHlsZSgpIGNvbnN0OworICAgIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gYnVpbGRPYmplY3RG
b3JTdHlsZSgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVy
dHk+PiBidWlsZEFycmF5Rm9yQ29tcHV0ZWRTdHlsZSgpIGNvbnN0OwogICAgIGJvb2wgaGFzRGlz
YWJsZWRQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gIW1fZGlzYWJsZWRQcm9wZXJ0aWVzLmlz
RW1wdHkoKTsgfQogICAgIGJvb2wgc2V0UHJvcGVydHlUZXh0KHVuc2lnbmVkIGluZGV4LCBjb25z
dCBTdHJpbmcmIHRleHQsIGJvb2wgb3ZlcndyaXRlLCBTdHJpbmcqIG9sZFRleHQsIEV4Y2VwdGlv
bkNvZGUmKTsKICAgICBib29sIHRvZ2dsZVByb3BlcnR5KHVuc2lnbmVkIGluZGV4LCBib29sIGRp
c2FibGUsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTE1Nyw3ICsxNTYsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgYXBwbHlTdHlsZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KSB7IEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOyByZXR1cm4gc2V0VGV4dCh0ZXh0LCBlYyk7IH0KIAogICAgIGJvb2wgcG9wdWxhdGVB
bGxQcm9wZXJ0aWVzKFZlY3RvcjxJbnNwZWN0b3JTdHlsZVByb3BlcnR5PiogcmVzdWx0KSBjb25z
dDsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBzdHlsZVdpdGhQ
cm9wZXJ0aWVzKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDU1M6OkNTU1N0eWxlPiBzdHlsZVdpdGhQcm9wZXJ0aWVzKCkgY29uc3Q7CiAgICAgUGFzc1Jl
ZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gZXh0cmFjdFNvdXJjZURhdGEoKSBjb25zdDsKICAgICBT
dHJpbmcgc2hvcnRoYW5kVmFsdWUoY29uc3QgU3RyaW5nJiBzaG9ydGhhbmRQcm9wZXJ0eSkgY29u
c3Q7CiAgICAgU3RyaW5nIHNob3J0aGFuZFByaW9yaXR5KGNvbnN0IFN0cmluZyYgc2hvcnRoYW5k
UHJvcGVydHkpIGNvbnN0OwpAQCAtMTgyLDcgKzE4MSw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAg
ICAgdHlwZWRlZiBIYXNoTWFwPENTU1N0eWxlRGVjbGFyYXRpb24qLCBSZWZQdHI8SW5zcGVjdG9y
U3R5bGU+PiBJbnNwZWN0b3JTdHlsZU1hcDsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3JTdHlsZVNoZWV0PiBjcmVhdGUoSW5zcGVjdG9yUGFnZUFnZW50KiwgY29uc3QgU3RyaW5nJiBp
ZCwgUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBwYWdlU3R5bGVTaGVldCwgVHlwZUJ1aWxkZXI6
OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6RW51bSwgY29uc3QgU3RyaW5nJiBkb2N1bWVudFVSTCwg
TGlzdGVuZXIqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JTdHlsZVNoZWV0PiBj
cmVhdGUoSW5zcGVjdG9yUGFnZUFnZW50KiwgY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxD
U1NTdHlsZVNoZWV0PiBwYWdlU3R5bGVTaGVldCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpTdHlsZVNoZWV0T3JpZ2luOjpFbnVtLCBjb25zdCBTdHJpbmcmIGRvY3VtZW50VVJMLCBMaXN0
ZW5lciopOwogICAgIHN0YXRpYyBTdHJpbmcgc3R5bGVTaGVldFVSTChDU1NTdHlsZVNoZWV0KiBw
YWdlU3R5bGVTaGVldCk7CiAKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JTdHlsZVNoZWV0KCk7CkBA
IC0xOTcsMTAgKzE5NiwxMCBAQCBwdWJsaWM6CiAgICAgQ1NTU3R5bGVSdWxlKiBhZGRSdWxlKGNv
bnN0IFN0cmluZyYgc2VsZWN0b3IsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBib29sIGRlbGV0ZVJ1
bGUoY29uc3QgSW5zcGVjdG9yQ1NTSWQmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgQ1NTU3R5bGVS
dWxlKiBydWxlRm9ySWQoY29uc3QgSW5zcGVjdG9yQ1NTSWQmKSBjb25zdDsKLSAgICBQYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5PiBidWlsZE9iamVjdEZvclN0
eWxlU2hlZXQoKTsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hl
ZXRIZWFkZXI+IGJ1aWxkT2JqZWN0Rm9yU3R5bGVTaGVldEluZm8oKTsKLSAgICBQYXNzUmVmUHRy
PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9yUnVsZShDU1NTdHlsZVJ1
bGUqKTsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBidWlsZE9i
amVjdEZvclN0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qKTsKKyAgICBQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEJvZHk+IGJ1aWxkT2JqZWN0Rm9y
U3R5bGVTaGVldCgpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NTdHlsZVNoZWV0SGVhZGVyPiBidWlsZE9iamVjdEZvclN0eWxlU2hlZXRJbmZvKCk7Cisg
ICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+IGJ1aWxk
T2JqZWN0Rm9yUnVsZShDU1NTdHlsZVJ1bGUqKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IGJ1aWxkT2JqZWN0Rm9yU3R5bGUoQ1NTU3R5bGVE
ZWNsYXJhdGlvbiopOwogICAgIGJvb2wgc2V0U3R5bGVUZXh0KGNvbnN0IEluc3BlY3RvckNTU0lk
JiwgY29uc3QgU3RyaW5nJiB0ZXh0LCBTdHJpbmcqIG9sZFRleHQsIEV4Y2VwdGlvbkNvZGUmKTsK
ICAgICBib29sIHNldFByb3BlcnR5VGV4dChjb25zdCBJbnNwZWN0b3JDU1NJZCYsIHVuc2lnbmVk
IHByb3BlcnR5SW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBvdmVyd3JpdGUsIFN0cmlu
Zyogb2xkUHJvcGVydHlUZXh0LCBFeGNlcHRpb25Db2RlJik7CiAgICAgYm9vbCB0b2dnbGVQcm9w
ZXJ0eShjb25zdCBJbnNwZWN0b3JDU1NJZCYsIHVuc2lnbmVkIHByb3BlcnR5SW5kZXgsIGJvb2wg
ZGlzYWJsZSwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtMjEzLDkgKzIxMiw5IEBAIHB1YmxpYzoKICAg
ICBJbnNwZWN0b3JDU1NJZCBzdHlsZUlkKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKSBjb25z
dCB7IHJldHVybiBydWxlT3JTdHlsZUlkKHN0eWxlKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgSW5z
cGVjdG9yU3R5bGVTaGVldChJbnNwZWN0b3JQYWdlQWdlbnQqLCBjb25zdCBTdHJpbmcmIGlkLCBQ
YXNzUmVmUHRyPENTU1N0eWxlU2hlZXQ+IHBhZ2VTdHlsZVNoZWV0LCBUeXBlQnVpbGRlcjo6Q1NT
OjpTdHlsZVNoZWV0T3JpZ2luOjpFbnVtLCBjb25zdCBTdHJpbmcmIGRvY3VtZW50VVJMLCBMaXN0
ZW5lciopOworICAgIEluc3BlY3RvclN0eWxlU2hlZXQoSW5zcGVjdG9yUGFnZUFnZW50KiwgY29u
c3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBwYWdlU3R5bGVTaGVldCwg
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpFbnVtLCBjb25z
dCBTdHJpbmcmIGRvY3VtZW50VVJMLCBMaXN0ZW5lciopOwogCi0gICAgYm9vbCBjYW5CaW5kKCkg
Y29uc3QgeyByZXR1cm4gbV9vcmlnaW4gIT0gVHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9y
aWdpbjo6VXNlckFnZW50ICYmIG1fb3JpZ2luICE9IFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hl
ZXRPcmlnaW46OlVzZXI7IH0KKyAgICBib29sIGNhbkJpbmQoKSBjb25zdCB7IHJldHVybiBtX29y
aWdpbiAhPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlVz
ZXJBZ2VudCAmJiBtX29yaWdpbiAhPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0eWxl
U2hlZXRPcmlnaW46OlVzZXI7IH0KICAgICBJbnNwZWN0b3JDU1NJZCBydWxlT3JTdHlsZUlkKENT
U1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKSBjb25zdDsKICAgICB2aXJ0dWFsIERvY3VtZW50KiBv
d25lckRvY3VtZW50KCkgY29uc3Q7CiAgICAgdmlydHVhbCBSZWZQdHI8Q1NTUnVsZVNvdXJjZURh
dGE+IHJ1bGVTb3VyY2VEYXRhRm9yKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKSBjb25zdDsK
QEAgLTI0MywxMyArMjQyLDEzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBvcmlnaW5hbFN0eWxlU2hl
ZXRUZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdDsKICAgICBib29sIHJlc291cmNlU3R5bGVTaGVl
dFRleHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0OwogICAgIGJvb2wgaW5saW5lU3R5bGVTaGVldFRl
eHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+PiBidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NT
UnVsZUxpc3QqKTsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yTGlz
dD4gYnVpbGRPYmplY3RGb3JTZWxlY3Rvckxpc3QoQ1NTU3R5bGVSdWxlKik7CisgICAgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDU1M6OkNTU1J1bGU+PiBidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3QqKTsKKyAg
ICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JMaXN0PiBi
dWlsZE9iamVjdEZvclNlbGVjdG9yTGlzdChDU1NTdHlsZVJ1bGUqKTsKIAogICAgIEluc3BlY3Rv
clBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CiAgICAgU3RyaW5nIG1faWQ7CiAgICAgUmVmUHRyPENT
U1N0eWxlU2hlZXQ+IG1fcGFnZVN0eWxlU2hlZXQ7Ci0gICAgVHlwZUJ1aWxkZXI6OkNTUzo6U3R5
bGVTaGVldE9yaWdpbjo6RW51bSBtX29yaWdpbjsKKyAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OkVudW0gbV9vcmlnaW47CiAgICAgU3RyaW5nIG1fZG9j
dW1lbnRVUkw7CiAgICAgYm9vbCBtX2lzUmV2YWxpZGF0aW5nOwogICAgIFBhcnNlZFN0eWxlU2hl
ZXQqIG1fcGFyc2VkU3R5bGVTaGVldDsKQEAgLTI2MCwxNCArMjU5LDE0IEBAIHByaXZhdGU6CiAK
IGNsYXNzIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSA6IHB1YmxpYyBJbnNwZWN0
b3JTdHlsZVNoZWV0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JT
dHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU+IGNyZWF0ZShJbnNwZWN0b3JQYWdlQWdlbnQqLCBjb25z
dCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPEVsZW1lbnQ+LCBUeXBlQnVpbGRlcjo6Q1NTOjpTdHls
ZVNoZWV0T3JpZ2luOjpFbnVtLCBMaXN0ZW5lciopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElu
c3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZT4gY3JlYXRlKEluc3BlY3RvclBhZ2VBZ2Vu
dCosIGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8RWxlbWVudD4sIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6RW51bSwgTGlzdGVuZXIqKTsKIAogICAg
IHZvaWQgZGlkTW9kaWZ5RWxlbWVudEF0dHJpYnV0ZSgpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRU
ZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdDsKICAgICB2aXJ0dWFsIENTU1N0eWxlRGVjbGFyYXRp
b24qIHN0eWxlRm9ySWQoY29uc3QgSW5zcGVjdG9yQ1NTSWQmIGlkKSBjb25zdCB7IEFTU0VSVF9V
TlVTRUQoaWQsICFpZC5vcmRpbmFsKCkpOyByZXR1cm4gaW5saW5lU3R5bGUoKTsgfQogCiBwcm90
ZWN0ZWQ6Ci0gICAgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlKEluc3BlY3RvclBh
Z2VBZ2VudCosIGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8RWxlbWVudD4sIFR5cGVCdWls
ZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OkVudW0sIExpc3RlbmVyKik7CisgICAgSW5zcGVj
dG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlKEluc3BlY3RvclBhZ2VBZ2VudCosIGNvbnN0IFN0
cmluZyYgaWQsIFBhc3NSZWZQdHI8RWxlbWVudD4sIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNT
Uzo6U3R5bGVTaGVldE9yaWdpbjo6RW51bSwgTGlzdGVuZXIqKTsKIAogICAgIHZpcnR1YWwgRG9j
dW1lbnQqIG93bmVyRG9jdW1lbnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIFJlZlB0cjxDU1NSdWxl
U291cmNlRGF0YT4gcnVsZVNvdXJjZURhdGFGb3IoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUp
IGNvbnN0IHsgQVNTRVJUX1VOVVNFRChzdHlsZSwgc3R5bGUgPT0gaW5saW5lU3R5bGUoKSk7IHJl
dHVybiBtX3J1bGVTb3VyY2VEYXRhOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yU3R5bGVUZXh0RWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuY3BwCmluZGV4IGI2ZWM0ZGIuLmYzMDk5YTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVRleHRF
ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVRl
eHRFZGl0b3IuY3BwCkBAIC0zMiw2ICszMiw4IEBACiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9t
cy5oIgogI2luY2x1ZGUgIkluc3BlY3RvclN0eWxlU2hlZXQuaCIKIAordXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbnNwZWN0b3JTdHlsZVRleHRF
ZGl0b3I6Okluc3BlY3RvclN0eWxlVGV4dEVkaXRvcihWZWN0b3I8SW5zcGVjdG9yU3R5bGVQcm9w
ZXJ0eT4qIGFsbFByb3BlcnRpZXMsIFZlY3RvcjxJbnNwZWN0b3JTdHlsZVByb3BlcnR5PiogZGlz
YWJsZWRQcm9wZXJ0aWVzLCBjb25zdCBTdHJpbmcmIHN0eWxlVGV4dCwgY29uc3QgTmV3TGluZUFu
ZFdoaXRlc3BhY2UmIGZvcm1hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAppbmRleCA0Yzg4YjFiLi4yNDcyZWQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3Bw
CkBAIC01NCw2ICs1NCw4IEBACiAjaW5jbHVkZSAiVGltZWxpbmVSZWNvcmRGYWN0b3J5LmgiCiAj
aW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBUaW1lbGluZVRpbWVDb252ZXJ0ZXI6OnJl
c2V0KCkKQEAgLTY1LDcgKzY3LDcgQEAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6fkluc3BlY3Rv
clRpbWVsaW5lQWdlbnQoKQogewogfQogCi12b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250
ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVy
KQordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1f
ZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JUaW1lbGluZUZy
b250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRj
aGVyID0gSW5zcGVjdG9yVGltZWxpbmVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmRE
aXNwYXRjaGVyLCB0aGlzKTsKQEAgLTQyMiw5OSArNDI0LDk5IEBAIHZvaWQgSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6YWRkUmVjb3JkVG9UaW1lbGluZShQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gcmVjCiAgICAgaW5uZXJBZGRSZWNvcmRUb1RpbWVsaW5lKHJlY29yZCwgdHlwZSk7CiB9CiAK
LXN0YXRpYyBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6RW51bSB0b1Byb3RvY29s
KFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBlKQorc3RhdGljIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OlRpbWVsaW5lOjpFdmVudFR5cGU6OkVudW0gdG9Qcm90b2NvbChUaW1lbGluZVJlY29yZFR5cGUg
dHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlw
ZTo6RXZlbnREaXNwYXRjaDoKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6
RXZlbnRUeXBlOjpFdmVudERpc3BhdGNoOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6RXZlbnREaXNwYXRjaDsKICAgICBjYXNlIFRp
bWVsaW5lUmVjb3JkVHlwZTo6QmVnaW5GcmFtZToKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVy
OjpUaW1lbGluZTo6RXZlbnRUeXBlOjpCZWdpbkZyYW1lOworICAgICAgICByZXR1cm4gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6QmVnaW5GcmFtZTsKICAgICBj
YXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6U2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb246Ci0gICAg
ICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6U2NoZWR1bGVTdHls
ZVJlY2FsY3VsYXRpb247CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpU
aW1lbGluZTo6RXZlbnRUeXBlOjpTY2hlZHVsZVN0eWxlUmVjYWxjdWxhdGlvbjsKICAgICBjYXNl
IFRpbWVsaW5lUmVjb3JkVHlwZTo6UmVjYWxjdWxhdGVTdHlsZXM6Ci0gICAgICAgIHJldHVybiBU
eXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6UmVjYWxjdWxhdGVTdHlsZXM7CisgICAg
ICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpS
ZWNhbGN1bGF0ZVN0eWxlczsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6SW52YWxpZGF0
ZUxheW91dDoKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBl
OjpJbnZhbGlkYXRlTGF5b3V0OworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6SW52YWxpZGF0ZUxheW91dDsKICAgICBjYXNlIFRpbWVs
aW5lUmVjb3JkVHlwZTo6TGF5b3V0OgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVs
aW5lOjpFdmVudFR5cGU6OkxheW91dDsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OkxheW91dDsKICAgICBjYXNlIFRpbWVsaW5lUmVj
b3JkVHlwZTo6UGFpbnQ6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2
ZW50VHlwZTo6UGFpbnQ7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpU
aW1lbGluZTo6RXZlbnRUeXBlOjpQYWludDsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6
U2Nyb2xsTGF5ZXI6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50
VHlwZTo6U2Nyb2xsTGF5ZXI7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpUaW1lbGluZTo6RXZlbnRUeXBlOjpTY3JvbGxMYXllcjsKICAgICBjYXNlIFRpbWVsaW5lUmVj
b3JkVHlwZTo6UmVzaXplSW1hZ2U6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxp
bmU6OkV2ZW50VHlwZTo6UmVzaXplSW1hZ2U7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpSZXNpemVJbWFnZTsKICAgICBjYXNlIFRp
bWVsaW5lUmVjb3JkVHlwZTo6Q29tcG9zaXRlTGF5ZXJzOgotICAgICAgICByZXR1cm4gVHlwZUJ1
aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OkNvbXBvc2l0ZUxheWVyczsKKyAgICAgICAgcmV0
dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OkNvbXBvc2l0
ZUxheWVyczsKIAogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpQYXJzZUhUTUw6Ci0gICAg
ICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6UGFyc2VIVE1MOwor
ICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlw
ZTo6UGFyc2VIVE1MOwogCiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlRpbWVySW5zdGFs
bDoKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpUaW1l
ckluc3RhbGw7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGlu
ZTo6RXZlbnRUeXBlOjpUaW1lckluc3RhbGw7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6
OlRpbWVyUmVtb3ZlOgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVu
dFR5cGU6OlRpbWVyUmVtb3ZlOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6VGltZXJSZW1vdmU7CiAgICAgY2FzZSBUaW1lbGluZVJl
Y29yZFR5cGU6OlRpbWVyRmlyZToKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGlu
ZTo6RXZlbnRUeXBlOjpUaW1lckZpcmU7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpUaW1lckZpcmU7CiAKICAgICBjYXNlIFRpbWVs
aW5lUmVjb3JkVHlwZTo6RXZhbHVhdGVTY3JpcHQ6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRl
cjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6RXZhbHVhdGVTY3JpcHQ7CisgICAgICAgIHJldHVybiBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpFdmFsdWF0ZVNjcmlw
dDsKIAogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpNYXJrTG9hZDoKLSAgICAgICAgcmV0
dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpNYXJrTG9hZDsKKyAgICAgICAg
cmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6Ok1hcmtM
b2FkOwogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpNYXJrRE9NQ29udGVudDoKLSAgICAg
ICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpNYXJrRE9NQ29udGVu
dDsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVu
dFR5cGU6Ok1hcmtET01Db250ZW50OwogCiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlRp
bWVTdGFtcDoKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBl
OjpUaW1lU3RhbXA7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1l
bGluZTo6RXZlbnRUeXBlOjpUaW1lU3RhbXA7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6
OlRpbWU6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6
VGltZTsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpF
dmVudFR5cGU6OlRpbWU7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlRpbWVFbmQ6Ci0g
ICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6VGltZUVuZDsK
KyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5
cGU6OlRpbWVFbmQ7CiAKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6U2NoZWR1bGVSZXNv
dXJjZVJlcXVlc3Q6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50
VHlwZTo6U2NoZWR1bGVSZXNvdXJjZVJlcXVlc3Q7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpTY2hlZHVsZVJlc291cmNlUmVxdWVz
dDsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6UmVzb3VyY2VTZW5kUmVxdWVzdDoKLSAg
ICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpSZXNvdXJjZVNl
bmRSZXF1ZXN0OworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxp
bmU6OkV2ZW50VHlwZTo6UmVzb3VyY2VTZW5kUmVxdWVzdDsKICAgICBjYXNlIFRpbWVsaW5lUmVj
b3JkVHlwZTo6UmVzb3VyY2VSZWNlaXZlUmVzcG9uc2U6Ci0gICAgICAgIHJldHVybiBUeXBlQnVp
bGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6UmVzb3VyY2VSZWNlaXZlUmVzcG9uc2U7CisgICAg
ICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpS
ZXNvdXJjZVJlY2VpdmVSZXNwb25zZTsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6UmVz
b3VyY2VSZWNlaXZlZERhdGE6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6
OkV2ZW50VHlwZTo6UmVzb3VyY2VSZWNlaXZlZERhdGE7CisgICAgICAgIHJldHVybiBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpSZXNvdXJjZVJlY2VpdmVkRGF0
YTsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6UmVzb3VyY2VGaW5pc2g6Ci0gICAgICAg
IHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6UmVzb3VyY2VGaW5pc2g7
CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRU
eXBlOjpSZXNvdXJjZUZpbmlzaDsKIAogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpYSFJS
ZWFkeVN0YXRlQ2hhbmdlOgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpF
dmVudFR5cGU6OlhIUlJlYWR5U3RhdGVDaGFuZ2U7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpYSFJSZWFkeVN0YXRlQ2hhbmdlOwog
ICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpYSFJMb2FkOgotICAgICAgICByZXR1cm4gVHlw
ZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlhIUkxvYWQ7CisgICAgICAgIHJldHVybiBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpYSFJMb2FkOwogCiAg
ICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OkZ1bmN0aW9uQ2FsbDoKLSAgICAgICAgcmV0dXJu
IFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpGdW5jdGlvbkNhbGw7CisgICAgICAg
IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpGdW5j
dGlvbkNhbGw7CiAKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6UmVxdWVzdEFuaW1hdGlv
bkZyYW1lOgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6
OlJlcXVlc3RBbmltYXRpb25GcmFtZTsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlJlcXVlc3RBbmltYXRpb25GcmFtZTsKICAgICBj
YXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6Q2FuY2VsQW5pbWF0aW9uRnJhbWU6Ci0gICAgICAgIHJl
dHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6Q2FuY2VsQW5pbWF0aW9uRnJh
bWU7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZl
bnRUeXBlOjpDYW5jZWxBbmltYXRpb25GcmFtZTsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlw
ZTo6RmlyZUFuaW1hdGlvbkZyYW1lOgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVs
aW5lOjpFdmVudFR5cGU6OkZpcmVBbmltYXRpb25GcmFtZTsKKyAgICAgICAgcmV0dXJuIEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OkZpcmVBbmltYXRpb25GcmFt
ZTsKIAogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpXZWJTb2NrZXRDcmVhdGU6Ci0gICAg
ICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6V2ViU29ja2V0Q3Jl
YXRlOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2
ZW50VHlwZTo6V2ViU29ja2V0Q3JlYXRlOwogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpX
ZWJTb2NrZXRTZW5kSGFuZHNoYWtlUmVxdWVzdDoKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVy
OjpUaW1lbGluZTo6RXZlbnRUeXBlOjpXZWJTb2NrZXRTZW5kSGFuZHNoYWtlUmVxdWVzdDsKKyAg
ICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6
OldlYlNvY2tldFNlbmRIYW5kc2hha2VSZXF1ZXN0OwogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRU
eXBlOjpXZWJTb2NrZXRSZWNlaXZlSGFuZHNoYWtlUmVzcG9uc2U6Ci0gICAgICAgIHJldHVybiBU
eXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6V2ViU29ja2V0UmVjZWl2ZUhhbmRzaGFr
ZVJlc3BvbnNlOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxp
bmU6OkV2ZW50VHlwZTo6V2ViU29ja2V0UmVjZWl2ZUhhbmRzaGFrZVJlc3BvbnNlOwogICAgIGNh
c2UgVGltZWxpbmVSZWNvcmRUeXBlOjpXZWJTb2NrZXREZXN0cm95OgotICAgICAgICByZXR1cm4g
VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OldlYlNvY2tldERlc3Ryb3k7CisgICAg
ICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpX
ZWJTb2NrZXREZXN0cm95OwogICAgIH0KIAotICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxp
bmU6OkV2ZW50VHlwZTo6VGltZVN0YW1wOworICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpUaW1lU3RhbXA7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudDo6aW5uZXJBZGRSZWNvcmRUb1RpbWVsaW5lKFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBwcnBSZWNvcmQsIFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBlKQogewotICAgIHBy
cFJlY29yZC0+c2V0U3RyaW5nKCJ0eXBlIiwgVHlwZUJ1aWxkZXI6OmdldEVudW1Db25zdGFudFZh
bHVlKHRvUHJvdG9jb2wodHlwZSkpKTsKKyAgICBwcnBSZWNvcmQtPnNldFN0cmluZygidHlwZSIs
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OmdldEVudW1Db25zdGFudFZhbHVlKHRvUHJvdG9jb2wo
dHlwZSkpKTsKIAotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6VGltZWxpbmU6OlRpbWVsaW5lRXZl
bnQ+IHJlY29yZCA9IFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6VGltZWxpbmVFdmVudDo6cnVudGlt
ZUNhc3QocHJwUmVjb3JkKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGlt
ZWxpbmU6OlRpbWVsaW5lRXZlbnQ+IHJlY29yZCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRp
bWVsaW5lOjpUaW1lbGluZUV2ZW50OjpydW50aW1lQ2FzdChwcnBSZWNvcmQpOwogCiAgICAgc2V0
RE9NQ291bnRlcnMocmVjb3JkLmdldCgpKTsKIApAQCAtNTMxLDcgKzUzMyw3IEBAIHN0YXRpYyBz
aXplX3QgdXNlZEhlYXBTaXplKCkKICAgICByZXR1cm4gSlNET01XaW5kb3c6OmNvbW1vblZNKCkt
PmhlYXAuc2l6ZSgpOwogfQogCi12b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnNldERPTUNv
dW50ZXJzKFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6VGltZWxpbmVFdmVudCogcmVjb3JkKQordm9p
ZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzZXRET01Db3VudGVycyhJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpUaW1lbGluZTo6VGltZWxpbmVFdmVudCogcmVjb3JkKQogewogICAgIHJlY29yZC0+
c2V0VXNlZEhlYXBTaXplKHVzZWRIZWFwU2l6ZSgpKTsKIApAQCAtNTQzLDcgKzU0NSw3IEBAIHZv
aWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c2V0RE9NQ291bnRlcnMoVHlwZUJ1aWxkZXI6OlRp
bWVsaW5lOjpUaW1lbGluZUV2ZW50CiAgICAgICAgICAgICBub2RlQ291bnQgPSBJbnNwZWN0b3JD
b3VudGVyczo6Y291bnRlclZhbHVlKEluc3BlY3RvckNvdW50ZXJzOjpOb2RlQ291bnRlcik7CiAg
ICAgICAgIH0KICAgICAgICAgaW50IGxpc3RlbmVyQ291bnQgPSBUaHJlYWRMb2NhbEluc3BlY3Rv
ckNvdW50ZXJzOjpjdXJyZW50KCkuY291bnRlclZhbHVlKFRocmVhZExvY2FsSW5zcGVjdG9yQ291
bnRlcnM6OkpTRXZlbnRMaXN0ZW5lckNvdW50ZXIpOwotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OlRpbWVsaW5lOjpET01Db3VudGVycz4gY291bnRlcnMgPSBUeXBlQnVpbGRlcjo6VGltZWxp
bmU6OkRPTUNvdW50ZXJzOjpjcmVhdGUoKQorICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6VGltZWxpbmU6OkRPTUNvdW50ZXJzPiBjb3VudGVycyA9IEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlRpbWVsaW5lOjpET01Db3VudGVyczo6Y3JlYXRlKCkKICAgICAgICAgICAgIC5z
ZXREb2N1bWVudHMoZG9jdW1lbnRDb3VudCkKICAgICAgICAgICAgIC5zZXROb2Rlcyhub2RlQ291
bnQpCiAgICAgICAgICAgICAuc2V0SnNFdmVudExpc3RlbmVycyhsaXN0ZW5lckNvdW50KTsKQEAg
LTU4MCw3ICs1ODIsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZENvbXBsZXRl
Q3VycmVudFJlY29yZChUaW1lbGluZVJlY29yZFR5cGUgdHlwZSkKIH0KIAogSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5zcGVj
dG9yTWVtb3J5QWdlbnQqIG1lbW9yeUFnZW50LCBJbnNwZWN0b3JUeXBlIHR5cGUsIEluc3BlY3Rv
ckNsaWVudCogY2xpZW50KQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgi
VGltZWxpbmUiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFz
ZShBU0NJSUxpdGVyYWwoIlRpbWVsaW5lIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBt
X3BhZ2VBZ2VudChwYWdlQWdlbnQpCiAgICAgLCBtX21lbW9yeUFnZW50KG1lbW9yeUFnZW50KQog
ICAgICwgbV9pZCgxKQpAQCAtNjA0LDcgKzYwNiw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6YXBwZW5kUmVjb3JkKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhLCBUaW1l
CiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnNlbmRFdmVudChQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gZXZlbnQpCiB7CiAgICAgLy8gRklYTUU6IHJ1bnRpbWVDYXN0IGlzIGEgaGFj
ay4gV2UgZG8gaXQgYmVjYXVzZSB3ZSBjYW4ndCBidWlsZCBUaW1lbGluZUV2ZW50IGRpcmVjdGx5
IG5vdy4KLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50PiBy
ZWNvcmRDaGVja2VkID0gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50OjpydW50
aW1lQ2FzdChldmVudCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVs
aW5lOjpUaW1lbGluZUV2ZW50PiByZWNvcmRDaGVja2VkID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ6OnJ1bnRpbWVDYXN0KGV2ZW50KTsKICAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlci0+ZXZlbnRSZWNvcmRlZChyZWNvcmRDaGVja2VkLnJlbGVhc2UoKSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1l
bGluZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVB
Z2VudC5oCmluZGV4IDQ1ZGMyZjMuLjA1YjhlMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaApAQCAtMzMsMTAgKzMzLDExIEBACiAK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50Lmgi
CisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yRnJvbnRlbmQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKyNpbmNsdWRl
ICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCisjaW5j
bHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+
CkBAIC0xMjEsNyArMTIyLDcgQEAgcHJpdmF0ZToKIH07CiAKIGNsYXNzIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQKLSAgICA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQKKyAgICA6IHB1YmxpYyBJ
bnNwZWN0b3JBZ2VudEJhc2UKICAgICAsIHB1YmxpYyBJbnNwZWN0b3JUaW1lbGluZUJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCk7CiBwdWJsaWM6CkBAIC0xMzQsNyArMTM1LDcgQEAgcHVibGljOgogCiAgICAg
fkluc3BlY3RvclRpbWVsaW5lQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5z
cGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAg
dmlydHVhbCB2b2lkIHN0YXJ0KEVycm9yU3RyaW5nKiwgY29uc3QgaW50KiBtYXhDYWxsU3RhY2tE
ZXB0aCwgY29uc3QgYm9vbCogaW5jbHVkZURvbUNvdW50ZXJzKTsKQEAgLTIyMCwzMyArMjIxLDMz
IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFRpbWVsaW5lUmVjb3JkU3RhY2s7CiAKICAg
ICBzdHJ1Y3QgVGltZWxpbmVSZWNvcmRFbnRyeSB7Ci0gICAgICAgIFRpbWVsaW5lUmVjb3JkRW50
cnkoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlY29yZCwgUGFzc1JlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IGRhdGEsIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGNoaWxkcmVuLCBUaW1l
bGluZVJlY29yZFR5cGUgdHlwZSwgc2l6ZV90IHVzZWRIZWFwU2l6ZUF0U3RhcnQpCisgICAgICAg
IFRpbWVsaW5lUmVjb3JkRW50cnkoUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4gcmVjb3JkLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBkYXRhLCBQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+IGNoaWxkcmVuLCBUaW1lbGluZVJl
Y29yZFR5cGUgdHlwZSwgc2l6ZV90IHVzZWRIZWFwU2l6ZUF0U3RhcnQpCiAgICAgICAgICAgICA6
IHJlY29yZChyZWNvcmQpLCBkYXRhKGRhdGEpLCBjaGlsZHJlbihjaGlsZHJlbiksIHR5cGUodHlw
ZSksIHVzZWRIZWFwU2l6ZUF0U3RhcnQodXNlZEhlYXBTaXplQXRTdGFydCkKICAgICAgICAgewog
ICAgICAgICB9Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlY29yZDsKLSAgICAg
ICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YTsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiBjaGlsZHJlbjsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0PiByZWNvcmQ7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4g
ZGF0YTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+IGNoaWxkcmVu
OwogICAgICAgICBUaW1lbGluZVJlY29yZFR5cGUgdHlwZTsKICAgICAgICAgc2l6ZV90IHVzZWRI
ZWFwU2l6ZUF0U3RhcnQ7CiAgICAgfTsKIAogICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQoSW5z
dHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclBhZ2VBZ2VudCosIEluc3BlY3Rvck1lbW9yeUFn
ZW50KiwgSW5zcGVjdG9yVHlwZSwgSW5zcGVjdG9yQ2xpZW50Kik7CiAKLSAgICB2b2lkIHNlbmRF
dmVudChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4pOwotICAgIHZvaWQgYXBwZW5kUmVjb3Jk
KFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhLCBUaW1lbGluZVJlY29yZFR5cGUsIGJv
b2wgY2FwdHVyZUNhbGxTdGFjaywgRnJhbWUqKTsKLSAgICB2b2lkIHB1c2hDdXJyZW50UmVjb3Jk
KFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiwgVGltZWxpbmVSZWNvcmRUeXBlLCBib29sIGNh
cHR1cmVDYWxsU3RhY2ssIEZyYW1lKik7CisgICAgdm9pZCBzZW5kRXZlbnQoUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4pOworICAgIHZvaWQgYXBwZW5kUmVjb3JkKFBhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGRhdGEsIFRpbWVsaW5lUmVjb3JkVHlw
ZSwgYm9vbCBjYXB0dXJlQ2FsbFN0YWNrLCBGcmFtZSopOworICAgIHZvaWQgcHVzaEN1cnJlbnRS
ZWNvcmQoUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4sIFRpbWVsaW5lUmVj
b3JkVHlwZSwgYm9vbCBjYXB0dXJlQ2FsbFN0YWNrLCBGcmFtZSopOwogCi0gICAgdm9pZCBzZXRE
T01Db3VudGVycyhUeXBlQnVpbGRlcjo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQqIHJlY29yZCk7
Ci0gICAgdm9pZCBzZXRGcmFtZUlkZW50aWZpZXIoSW5zcGVjdG9yT2JqZWN0KiByZWNvcmQsIEZy
YW1lKik7CisgICAgdm9pZCBzZXRET01Db3VudGVycyhJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpU
aW1lbGluZTo6VGltZWxpbmVFdmVudCogcmVjb3JkKTsKKyAgICB2b2lkIHNldEZyYW1lSWRlbnRp
ZmllcihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogcmVjb3JkLCBGcmFtZSopOwogCiAgICAg
dm9pZCBkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoVGltZWxpbmVSZWNvcmRUeXBlKTsKIAotICAg
IHZvaWQgc2V0SGVhcFNpemVTdGF0aXN0aWNzKEluc3BlY3Rvck9iamVjdCogcmVjb3JkKTsKKyAg
ICB2b2lkIHNldEhlYXBTaXplU3RhdGlzdGljcyhJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCog
cmVjb3JkKTsKICAgICB2b2lkIGNvbW1pdEZyYW1lUmVjb3JkKCk7CiAKLSAgICB2b2lkIGFkZFJl
Y29yZFRvVGltZWxpbmUoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+LCBUaW1lbGluZVJlY29y
ZFR5cGUpOwotICAgIHZvaWQgaW5uZXJBZGRSZWNvcmRUb1RpbWVsaW5lKFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiwgVGltZWxpbmVSZWNvcmRUeXBlKTsKKyAgICB2b2lkIGFkZFJlY29yZFRv
VGltZWxpbmUoUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4sIFRpbWVsaW5l
UmVjb3JkVHlwZSk7CisgICAgdm9pZCBpbm5lckFkZFJlY29yZFRvVGltZWxpbmUoUGFzc1JlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4sIFRpbWVsaW5lUmVjb3JkVHlwZSk7CiAgICAg
dm9pZCBjbGVhclJlY29yZFN0YWNrKCk7CiAKICAgICB2b2lkIGxvY2FsVG9QYWdlUXVhZChjb25z
dCBSZW5kZXJPYmplY3QmLCBjb25zdCBMYXlvdXRSZWN0JiwgRmxvYXRRdWFkKik7CkBAIC0yNjYs
NyArMjY3LDcgQEAgcHJpdmF0ZToKIAogICAgIGludCBtX2lkOwogICAgIGludCBtX21heENhbGxT
dGFja0RlcHRoOwotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1fcGVuZGluZ0ZyYW1lUmVj
b3JkOworICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gbV9wZW5kaW5nRnJh
bWVSZWNvcmQ7CiAgICAgSW5zcGVjdG9yVHlwZSBtX2luc3BlY3RvclR5cGU7CiAgICAgSW5zcGVj
dG9yQ2xpZW50KiBtX2NsaWVudDsKICAgICBXZWFrUHRyRmFjdG9yeTxJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50PiBtX3dlYWtGYWN0b3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JXZWJBZ2VudEJhc2UuaApzaW1pbGFyaXR5IGluZGV4IDY5JQpyZW5hbWUgZnJvbSBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oCnJlbmFtZSB0
byBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgKaW5kZXgg
NGZkMDM1My4uZGZjYzRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckFnZW50UmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yV2ViQWdlbnRCYXNlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAg
LTI0LDI5ICsyNCwyOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEluc3BlY3Rv
ckFnZW50UmVnaXN0cnlfaAotI2RlZmluZSBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5X2gKKyNpZm5k
ZWYgSW5zcGVjdG9yV2ViQWdlbnRCYXNlX2gKKyNkZWZpbmUgSW5zcGVjdG9yV2ViQWdlbnRCYXNl
X2gKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgIkluc3BlY3RvckZv
cndhcmRpbmcuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CitjbGFzcyBJbnN0cnVtZW50aW5nQWdl
bnRzOwogCi1jbGFzcyBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5IHsKLXB1YmxpYzoKLSAgICB2b2lk
IGFwcGVuZChQYXNzT3duUHRyPEluc3BlY3RvckJhc2VBZ2VudD4pOworY2xhc3MgSW5zcGVjdG9y
QWdlbnRCYXNlIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnRCYXNlIHsKK3Byb3Rl
Y3RlZDoKKyAgICBJbnNwZWN0b3JBZ2VudEJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgICAgICA6IEluc3BlY3Rvcjo6
SW5zcGVjdG9yQWdlbnRCYXNlKG5hbWUpCisgICAgICAgICwgbV9pbnN0cnVtZW50aW5nQWdlbnRz
KGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgeworICAgIH0KIAotICAgIHZvaWQgZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKik7Ci0gICAgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZCgpOwotICAgIHZvaWQgZGlzY2FyZEFnZW50cygpOwotCi1wcml2YXRlOgotICAgIFZlY3RvcjxP
d25QdHI8SW5zcGVjdG9yQmFzZUFnZW50Pj4gbV9hZ2VudHM7CisgICAgSW5zdHJ1bWVudGluZ0Fn
ZW50cyogbV9pbnN0cnVtZW50aW5nQWdlbnRzOwogfTsKLQorICAgIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCi0jZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yQWdlbnRSZWdpc3RyeV9oKQor
I2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvcldlYkFnZW50QmFzZV9oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKaW5kZXggMzI4MDFj
Ni4uODg0NTZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
cldvcmtlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
V29ya2VyQWdlbnQuY3BwCkBAIC0zNiwxMyArMzYsMTUgQEAKIAogI2luY2x1ZGUgIkluc3BlY3Rv
ckZvcndhcmRpbmcuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgotI2luY2x1ZGUg
Ikluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZVByb3h5LmgiCisjaW5j
bHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEluc3BlY3RvcldvcmtlckFnZW50
OjpXb3JrZXJGcm9udGVuZENoYW5uZWwgOiBwdWJsaWMgV29ya2VyR2xvYmFsU2NvcGVQcm94eTo6
UGFnZUluc3BlY3RvciB7CkBAIC0xMDcsNyArMTA5LDcgQEAgUGFzc093blB0cjxJbnNwZWN0b3JX
b3JrZXJBZ2VudD4gSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmNyZWF0ZShJbnN0cnVtZW50aW5nQWdl
bnQKIH0KIAogSW5zcGVjdG9yV29ya2VyQWdlbnQ6Okluc3BlY3RvcldvcmtlckFnZW50KEluc3Ry
dW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCi0gICAgOiBJbnNwZWN0b3JCYXNl
QWdlbnQoQVNDSUlMaXRlcmFsKCJXb3JrZXIiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6
IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIldvcmtlciIpLCBpbnN0cnVtZW50aW5n
QWdlbnRzKQogICAgICwgbV9lbmFibGVkKGZhbHNlKQogICAgICwgbV9zaG91bGRQYXVzZURlZGlj
YXRlZFdvcmtlck9uU3RhcnQoZmFsc2UpCiB7CkBAIC0xMTksNyArMTIxLDcgQEAgSW5zcGVjdG9y
V29ya2VyQWdlbnQ6On5JbnNwZWN0b3JXb3JrZXJBZ2VudCgpCiAgICAgbV9pbnN0cnVtZW50aW5n
QWdlbnRzLT5zZXRJbnNwZWN0b3JXb3JrZXJBZ2VudCgwKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JX
b3JrZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFj
a2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvcldvcmtlckFnZW50OjpkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250
ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVy
KQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3JXb3JrZXJGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNr
ZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvcldvcmtlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUo
YmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yV29ya2VyQWdlbnQuaAppbmRleCBhYjYyMjFhLi5lYTQ3NWVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaApAQCAtMzEsMTIg
KzMxLDE2IEBACiAjaWZuZGVmIEluc3BlY3RvcldvcmtlckFnZW50X2gKICNkZWZpbmUgSW5zcGVj
dG9yV29ya2VyQWdlbnRfaAogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5j
bHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9y
V2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSW5zcGVjdG9yIHsK
IGNsYXNzIEluc3BlY3Rvck9iamVjdDsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
SW5zcGVjdG9yV29ya2VyRnJvbnRlbmREaXNwYXRjaGVyOwogY2xhc3MgSW5zdHJ1bWVudGluZ0Fn
ZW50czsKIGNsYXNzIFVSTDsKQEAgLTQ0LDEyICs0OCwxMiBAQCBjbGFzcyBXb3JrZXJHbG9iYWxT
Y29wZVByb3h5OwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVj
dG9yV29ya2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVj
dG9yV29ya2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3Rvcldvcmtl
ckFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcldvcmtl
ckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25Q
dHI8SW5zcGVjdG9yV29ya2VyQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKik7CiAg
ICAgfkluc3BlY3RvcldvcmtlckFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIElu
c3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAg
IC8vIENhbGxlZCBmcm9tIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbgpAQCAtNjMsNyArNjcsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNhbkluc3BlY3RXb3JrZXJzKEVycm9yU3RyaW5n
KiwgYm9vbCopOwogICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0VG9Xb3JrZXIoRXJyb3JTdHJpbmcq
LCBpbnQgd29ya2VySWQpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0RnJvbVdvcmtlcihF
cnJvclN0cmluZyosIGludCB3b3JrZXJJZCk7Ci0gICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdl
VG9Xb3JrZXIoRXJyb3JTdHJpbmcqLCBpbnQgd29ya2VySWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+JiBtZXNzYWdlKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb1dvcmtl
cihFcnJvclN0cmluZyosIGludCB3b3JrZXJJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiYgbWVzc2FnZSk7CiAgICAgdmlydHVhbCB2b2lkIHNldEF1dG9jb25uZWN0
VG9Xb3JrZXJzKEVycm9yU3RyaW5nKiwgYm9vbCB2YWx1ZSk7CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5jcHAKaW5kZXggOGNm
YjMyOC4uNjI4ZjEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Ry
dW1lbnRpbmdBZ2VudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVt
ZW50aW5nQWdlbnRzLmNwcApAQCAtNDAsNiArNDAsOCBAQAogI2luY2x1ZGUgIldvcmtlckluc3Bl
Y3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCit1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEluc3RydW1lbnRp
bmdBZ2VudHM6Okluc3RydW1lbnRpbmdBZ2VudHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggOTY5ZDMwZC4uNWNjYTQ0NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwCkBAIC00Niw2ICs0Niw4IEBAIHN0YXRpYyBzaXplX3QgbWF4aW11bVJlc291cmNlc0NvbnRl
bnRTaXplID0gMTAwICogMTAwMCAqIDEwMDA7CiBzdGF0aWMgc2l6ZV90IG1heGltdW1TaW5nbGVS
ZXNvdXJjZUNvbnRlbnRTaXplID0gMTAgKiAxMDAwICogMTAwMDsKIH0KIAordXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmNwcAppbmRleCBiY2Q4OWYyLi5jZWFiYmQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwCkBA
IC00MCw3ICs0MCw4IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnQuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JET01BZ2VudC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRP
YmplY3QuaCIKKwordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC02Niw3ICs2Nyw3IEBAIHZvaWQgUGFnZUNvbnNvbGVBZ2VudDo6Y2xlYXJNZXNz
YWdlcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcpCiBjbGFzcyBJbnNwZWN0YWJsZU5vZGUgOiBw
dWJsaWMgSW5qZWN0ZWRTY3JpcHRIb3N0OjpJbnNwZWN0YWJsZU9iamVjdCB7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgSW5zcGVjdGFibGVOb2RlKE5vZGUqIG5vZGUpIDogbV9ub2RlKG5vZGUpIHsg
fQotICAgIHZpcnR1YWwgU2NyaXB0VmFsdWUgZ2V0KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKKyAg
ICB2aXJ0dWFsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGdldChKU0M6OkV4ZWNTdGF0ZSogc3Rh
dGUpCiAgICAgewogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0Ojpub2RlQXNTY3Jp
cHRWYWx1ZShzdGF0ZSwgbV9ub2RlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAppbmRleCA4N2ZhYmVlLi4wNGQ0NzlkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHAKQEAgLTQxLDYg
KzQxLDggQEAKICNpbmNsdWRlICJQYWdlQ29uc29sZS5oIgogI2luY2x1ZGUgIlBhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlci5oIgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFBhc3NPd25QdHI8UGFnZURlYnVnZ2VyQWdlbnQ+IFBhZ2VEZWJ1Z2dlckFn
ZW50OjpjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5z
cGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLCBJbnNwZWN0b3JPdmVybGF5KiBvdmVybGF5KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuaAppbmRleCA1NTg2MzExLi5hNWY4MTg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuaApAQCAt
MzIsNiArMzIsNyBAQAogI2RlZmluZSBQYWdlRGVidWdnZXJBZ2VudF9oCiAKICNpZiBFTkFCTEUo
SkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFKElOU1BFQ1RPUikKKwogI2luY2x1ZGUgIklu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKICNpbmNsdWRlICJQYWdlU2NyaXB0RGVidWdTZXJ2ZXIu
aCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwCmlu
ZGV4IDU3YjNiMzAuLmExYjY3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9QYWdlUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFn
ZVJ1bnRpbWVBZ2VudC5jcHAKQEAgLTQ1LDcgKzQ1LDkgQEAKICNpbmNsdWRlICJTY3JpcHRDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKIAotdXNpbmcgV2ViQ29yZTo6
VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHREZXNjcmlwdGlvbjsKK3VzaW5n
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHREZXNjcmlw
dGlvbjsKKwordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC02Myw3ICs2NSw3IEBAIFBhZ2VSdW50aW1lQWdlbnQ6On5QYWdlUnVudGltZUFnZW50
KCkKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldFBhZ2VSdW50aW1lQWdlbnQoMCk7CiB9
CiAKLXZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2Vu
ZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3RvclJ1bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7
CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvclJ1bnRpbWVCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oCmluZGV4IGU4YjMzYjIuLmNkMDRkOTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaApAQCAtNTEsNyArNTEs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgUGFnZVJ1bnRpbWVBZ2Vu
dChpbnN0cnVtZW50aW5nQWdlbnRzLCBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIHBhZ2UsIHBhZ2VB
Z2VudCkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5QYWdlUnVudGltZUFnZW50KCk7Ci0gICAgdmly
dHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5k
KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwCmluZGV4IDg5YjlhMGIuLjM2NTdhOTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwCkBAIC0zMSwxNiAr
MzEsMTYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMu
aCIKIAotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0
VmFsdWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPFNjcmlwdEFyZ3Vt
ZW50cz4gU2NyaXB0QXJndW1lbnRzOjpjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRl
LCBWZWN0b3I8U2NyaXB0VmFsdWU+JiBhcmd1bWVudHMpCitQYXNzUmVmUHRyPFNjcmlwdEFyZ3Vt
ZW50cz4gU2NyaXB0QXJndW1lbnRzOjpjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRl
LCBWZWN0b3I8RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWU+JiBhcmd1bWVudHMpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTY3JpcHRBcmd1bWVudHMoc2NyaXB0U3RhdGUsIGFyZ3VtZW50cykp
OwogfQogCi1TY3JpcHRBcmd1bWVudHM6OlNjcmlwdEFyZ3VtZW50cyhKU0M6OkV4ZWNTdGF0ZSog
c2NyaXB0U3RhdGUsIFZlY3RvcjxTY3JpcHRWYWx1ZT4mIGFyZ3VtZW50cykKK1NjcmlwdEFyZ3Vt
ZW50czo6U2NyaXB0QXJndW1lbnRzKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgVmVjdG9y
PERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlPiYgYXJndW1lbnRzKQogICAgIDogbV9nbG9iYWxPYmpl
Y3Qoc2NyaXB0U3RhdGUtPnZtKCksIHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkp
CiB7CiAgICAgbV9hcmd1bWVudHMuc3dhcChhcmd1bWVudHMpOwpAQCAtNTAsNyArNTAsNyBAQCBT
Y3JpcHRBcmd1bWVudHM6On5TY3JpcHRBcmd1bWVudHMoKQogewogfQogCi1jb25zdCBTY3JpcHRW
YWx1ZSAmU2NyaXB0QXJndW1lbnRzOjphcmd1bWVudEF0KHNpemVfdCBpbmRleCkgY29uc3QKK2Nv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlICZTY3JpcHRBcmd1bWVudHM6OmFyZ3VtZW50QXQo
c2l6ZV90IGluZGV4KSBjb25zdAogewogICAgIEFTU0VSVChtX2FyZ3VtZW50cy5zaXplKCkgPiBp
bmRleCk7CiAgICAgcmV0dXJuIG1fYXJndW1lbnRzW2luZGV4XTsKQEAgLTY4LDcgKzY4LDcgQEAg
Ym9vbCBTY3JpcHRBcmd1bWVudHM6OmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhTdHJpbmcmIHJl
c3VsdCwgYm9vbCBjaGVja0Zvck51bGwKICAgICBpZiAoIWFyZ3VtZW50Q291bnQoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVlID0gYXJndW1l
bnRBdCgwKTsKKyAgICBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUgPSBhcmd1
bWVudEF0KDApOwogICAgIGlmIChjaGVja0Zvck51bGxPclVuZGVmaW5lZCAmJiAodmFsdWUuaXNO
dWxsKCkgfHwgdmFsdWUuaXNVbmRlZmluZWQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oCmluZGV4IDE3NDM5YTAu
LjQ3YTk2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1
bWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmgK
QEAgLTEsMTAgKzEsMTAgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIAorICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQogICogbWV0OgotICogCisgKgogICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
QEAgLTE0LDcgKzE0LDcgQEAKICAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKICAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCiAgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICogCisgKgogICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwogICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKICAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgpAQCAtMzcsNiArMzcsMTAg
QEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKK25hbWVzcGFjZSBEZXByZWNhdGVkIHsKK2NsYXNzIFNjcmlwdFZhbHVlOworfQorCiBu
YW1lc3BhY2UgSlNDIHsKIGNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwpA
QCAtNDQsMTUgKzQ4LDEzIEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFNjcmlwdFZhbHVlOwotCiBjbGFzcyBTY3JpcHRBcmd1bWVudHMgOiBw
dWJsaWMgUmVmQ291bnRlZDxTY3JpcHRBcmd1bWVudHM+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSosIFZlY3Rv
cjxTY3JpcHRWYWx1ZT4mIGFyZ3VtZW50cyk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2NyaXB0
QXJndW1lbnRzPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqLCBWZWN0b3I8RGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWU+JiBhcmd1bWVudHMpOwogCiAgICAgflNjcmlwdEFyZ3VtZW50cygpOwogCi0gICAg
Y29uc3QgU2NyaXB0VmFsdWUmIGFyZ3VtZW50QXQoc2l6ZV90KSBjb25zdDsKKyAgICBjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgYXJndW1lbnRBdChzaXplX3QpIGNvbnN0OwogICAgIHNp
emVfdCBhcmd1bWVudENvdW50KCkgY29uc3QgeyByZXR1cm4gbV9hcmd1bWVudHMuc2l6ZSgpOyB9
CiAKICAgICBKU0M6OkV4ZWNTdGF0ZSogZ2xvYmFsU3RhdGUoKSBjb25zdDsKQEAgLTYxLDEwICs2
MywxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VxdWFsKFNjcmlwdEFyZ3VtZW50cyopIGNvbnN0
OwogCiBwcml2YXRlOgotICAgIFNjcmlwdEFyZ3VtZW50cyhKU0M6OkV4ZWNTdGF0ZSosIFZlY3Rv
cjxTY3JpcHRWYWx1ZT4mIGFyZ3VtZW50cyk7CisgICAgU2NyaXB0QXJndW1lbnRzKEpTQzo6RXhl
Y1N0YXRlKiwgVmVjdG9yPERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlPiYgYXJndW1lbnRzKTsKIAog
ICAgIEpTQzo6U3Ryb25nPEpTQzo6SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OwotICAg
IFZlY3RvcjxTY3JpcHRWYWx1ZT4gbV9hcmd1bWVudHM7CisgICAgVmVjdG9yPERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlPiBtX2FyZ3VtZW50czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHAKaW5kZXggMWFi
YmQ3NS4uYWJlOWUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Njcmlw
dENhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxG
cmFtZS5jcHAKQEAgLTMyLDkgKzMyLDExIEBACiAjaW5jbHVkZSAiU2NyaXB0Q2FsbEZyYW1lLmgi
CiAKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZh
bHVlcy5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogU2NyaXB0Q2FsbEZyYW1lOjpTY3JpcHRDYWxsRnJhbWUoY29uc3QgU3Ry
aW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgc2NyaXB0TmFtZSwgdW5zaWduZWQgbGlu
ZU51bWJlciwgdW5zaWduZWQgY29sdW1uKQpAQCAtNTgsOSArNjAsOSBAQCBib29sIFNjcmlwdENh
bGxGcmFtZTo6aXNFcXVhbChjb25zdCBTY3JpcHRDYWxsRnJhbWUmIG8pIGNvbnN0CiB9CiAKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q2Fs
bEZyYW1lPiBTY3JpcHRDYWxsRnJhbWU6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0KCkgY29uc3QKK1Bh
c3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q2FsbEZyYW1lPiBTY3Jp
cHRDYWxsRnJhbWU6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0KCkgY29uc3QKIHsKLSAgICByZXR1cm4g
VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNhbGxGcmFtZTo6Y3JlYXRlKCkKKyAgICByZXR1cm4gSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q2FsbEZyYW1lOjpjcmVhdGUoKQogICAgICAg
ICAuc2V0RnVuY3Rpb25OYW1lKG1fZnVuY3Rpb25OYW1lKQogICAgICAgICAuc2V0VXJsKG1fc2Ny
aXB0TmFtZSkKICAgICAgICAgLnNldExpbmVOdW1iZXIobV9saW5lTnVtYmVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5oCmluZGV4IDY3ZjBkMzYuLmQ2ZGNmYTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmgKQEAgLTMyLDE1
ICszMiwxNyBAQAogI2RlZmluZSBTY3JpcHRDYWxsRnJhbWVfaAogCiAjaWYgRU5BQkxFKElOU1BF
Q1RPUikKLSNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgorI2luY2x1ZGUgIkluc3Bl
Y3RvcldlYlR5cGVCdWlsZGVycy5oIgogI2VuZGlmCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KK25hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworfQorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcmlwdENhbGxGcmFtZSAgewogcHVibGljOgpA
QCAtNTUsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VxdWFsKGNvbnN0IFNjcmlwdENh
bGxGcmFtZSYpIGNvbnN0OwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBQYXNzUmVmUHRy
PFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDYWxsRnJhbWU+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0KCkg
Y29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpD
YWxsRnJhbWU+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0KCkgY29uc3Q7CiAjZW5kaWYKIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2su
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHAKaW5kZXgg
ZTY5NGJmMS4uYzRhZjFiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Nj
cmlwdENhbGxTdGFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENh
bGxTdGFjay5jcHAKQEAgLTMxLDggKzMxLDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRl
ci5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgorI2luY2x1ZGUgIkluc3BlY3Rvcldl
YlR5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4K
KwordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC03OSw5ICs4MSw5IEBAIGJvb2wgU2NyaXB0Q2FsbFN0YWNrOjppc0VxdWFsKFNjcmlwdENhbGxT
dGFjayogbykgY29uc3QKIH0KIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi1QYXNzUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q2FsbEZyYW1lPj4gU2NyaXB0
Q2FsbFN0YWNrOjpidWlsZEluc3BlY3RvckFycmF5KCkgY29uc3QKK1Bhc3NSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6
Q2FsbEZyYW1lPj4gU2NyaXB0Q2FsbFN0YWNrOjpidWlsZEluc3BlY3RvckFycmF5KCkgY29uc3QK
IHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDb25zb2xlOjpD
YWxsRnJhbWU+PiBmcmFtZXMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNvbnNv
bGU6OkNhbGxGcmFtZT46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDYWxsRnJhbWU+PiBm
cmFtZXMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDb25zb2xlOjpDYWxsRnJhbWU+OjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fZnJhbWVzLnNpemUoKTsgaSsrKQogICAgICAgICBmcmFtZXMtPmFkZEl0ZW0obV9m
cmFtZXMuYXQoaSkuYnVpbGRJbnNwZWN0b3JPYmplY3QoKSk7CiAgICAgcmV0dXJuIGZyYW1lczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaAppbmRleCBlMGQ3ZmQ1
Li4xOTc1ZGE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENh
bGxTdGFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2su
aApAQCAtMzIsNyArMzIsNyBAQAogI2RlZmluZSBTY3JpcHRDYWxsU3RhY2tfaAogCiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKLSNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgorI2luY2x1
ZGUgIkluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIgogI2VuZGlmCiAKICNpbmNsdWRlICJTY3Jp
cHRDYWxsRnJhbWUuaCIKQEAgLTQyLDggKzQyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBJbnNwZWN0b3JBcnJheTsKLQogY2xhc3MgU2NyaXB0Q2FsbFN0YWNrIDogcHVibGlj
IFJlZkNvdW50ZWQ8U2NyaXB0Q2FsbFN0YWNrPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0
IHNpemVfdCBtYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlID0gMjAwOwpAQCAtNTgsNyArNTYsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc0VxdWFsKFNjcmlwdENhbGxTdGFjayopIGNvbnN0OwogCiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxU
eXBlQnVpbGRlcjo6Q29uc29sZTo6Q2FsbEZyYW1lPj4gYnVpbGRJbnNwZWN0b3JBcnJheSgpIGNv
bnN0OworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q2FsbEZyYW1lPj4gYnVpbGRJbnNwZWN0b3JBcnJh
eSgpIGNvbnN0OwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1NjcmlwdERlYnVnTGlzdGVuZXIuaAppbmRleCA1YmNhNzUxLi4wZWI0ZmIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdMaXN0ZW5lci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmgKQEAgLTM3LDgg
KzM3LDExIEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIERlcHJlY2F0ZWQg
ewogY2xhc3MgU2NyaXB0VmFsdWU7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
U2NyaXB0RGVidWdMaXN0ZW5lciB7CiBwdWJsaWM6CkBAIC02OCw3ICs3MSw3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgdm9pZCBkaWRQYXJzZVNvdXJjZShTb3VyY2VJRCwgY29uc3QgU2NyaXB0
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmYWlsZWRUb1BhcnNlU291cmNlKGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBTdHJpbmcmIGRhdGEsIGludCBmaXJzdExpbmUsIGludCBlcnJvckxpbmUs
IGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFBh
dXNlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNvbnN0
IFNjcmlwdFZhbHVlJiBleGNlcHRpb24pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2Uo
SlNDOjpFeGVjU3RhdGUqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgY2FsbEZyYW1l
cywgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGV4Y2VwdGlvbikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRDb250aW51ZSgpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAKaW5kZXggOGJhYWI5ZS4uOWYy
ZjdmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3Jk
RmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3Jk
RmFjdG9yeS5jcHAKQEAgLTM2LDE1ICszNiwxNyBAQAogCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNp
bmNsdWRlICJGbG9hdFF1YWQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNs
dWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIlJlc291
cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJT
Y3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCisj
aW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9DdXJy
ZW50VGltZS5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rv
cnk6OmNyZWF0ZUdlbmVyaWNSZWNvcmQoZG91YmxlIHN0YXJ0VGltZSwgaW50IG1heENhbGxTdGFj
a0RlcHRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVj
b3JkRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFj
dG9yeS5oCmluZGV4IGRiNDRiMWUuLmU0YmY5MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmgKQEAgLTMxLDkgKzMxLDggQEAKICNpZm5k
ZWYgVGltZWxpbmVSZWNvcmRGYWN0b3J5X2gKICNkZWZpbmUgVGltZWxpbmVSZWNvcmRGYWN0b3J5
X2gKIAotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIlVSTC5oIgotI2lu
Y2x1ZGUgIkxheW91dFJlY3QuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVz
Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIApAQCAtNDEsNjQgKzQwLDYyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNs
YXNzIEV2ZW50OwogICAgIGNsYXNzIEZsb2F0UXVhZDsKLSAgICBjbGFzcyBJbnNwZWN0b3JPYmpl
Y3Q7Ci0gICAgY2xhc3MgSW50UmVjdDsKICAgICBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiAgICAg
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIAogICAgIGNsYXNzIFRpbWVsaW5lUmVjb3JkRmFjdG9y
eSB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGNyZWF0ZUdlbmVyaWNSZWNvcmQoZG91YmxlIHN0YXJ0VGltZSwgaW50IG1heENhbGxTdGFj
a0RlcHRoKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVh
dGVCYWNrZ3JvdW5kUmVjb3JkKGRvdWJsZSBzdGFydFRpbWUsIGNvbnN0IFN0cmluZyYgdGhyZWFk
KTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
IGNyZWF0ZUdlbmVyaWNSZWNvcmQoZG91YmxlIHN0YXJ0VGltZSwgaW50IG1heENhbGxTdGFja0Rl
cHRoKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q+IGNyZWF0ZUJhY2tncm91bmRSZWNvcmQoZG91YmxlIHN0YXJ0VGltZSwgY29uc3QgU3RyaW5n
JiB0aHJlYWQpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
Y3JlYXRlR0NFdmVudERhdGEoY29uc3Qgc2l6ZV90IHVzZWRIZWFwU2l6ZURlbHRhKTsKKyAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUdD
RXZlbnREYXRhKGNvbnN0IHNpemVfdCB1c2VkSGVhcFNpemVEZWx0YSk7CiAKLSAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVGdW5jdGlvbkNhbGxEYXRhKGNv
bnN0IFN0cmluZyYgc2NyaXB0TmFtZSwgaW50IHNjcmlwdExpbmUpOworICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlRnVuY3Rpb25DYWxs
RGF0YShjb25zdCBTdHJpbmcmIHNjcmlwdE5hbWUsIGludCBzY3JpcHRMaW5lKTsKIAotICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUV2ZW50RGlzcGF0Y2hE
YXRhKGNvbnN0IEV2ZW50Jik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVFdmVudERpc3BhdGNoRGF0YShjb25zdCBFdmVudCYpOwog
Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlR2VuZXJp
Y1RpbWVyRGF0YShpbnQgdGltZXJJZCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVHZW5lcmljVGltZXJEYXRhKGludCB0aW1lcklk
KTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVRp
bWVySW5zdGFsbERhdGEoaW50IHRpbWVySWQsIGludCB0aW1lb3V0LCBib29sIHNpbmdsZVNob3Qp
OworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4g
Y3JlYXRlVGltZXJJbnN0YWxsRGF0YShpbnQgdGltZXJJZCwgaW50IHRpbWVvdXQsIGJvb2wgc2lu
Z2xlU2hvdCk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBj
cmVhdGVYSFJSZWFkeVN0YXRlQ2hhbmdlRGF0YShjb25zdCBTdHJpbmcmIHVybCwgaW50IHJlYWR5
U3RhdGUpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdD4gY3JlYXRlWEhSUmVhZHlTdGF0ZUNoYW5nZURhdGEoY29uc3QgU3RyaW5nJiB1cmwsIGlu
dCByZWFkeVN0YXRlKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGNyZWF0ZVhIUkxvYWREYXRhKGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVhIUkxvYWREYXRh
KGNvbnN0IFN0cmluZyYgdXJsKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IGNyZWF0ZUV2YWx1YXRlU2NyaXB0RGF0YShjb25zdCBTdHJpbmcmLCBkb3VibGUg
bGluZU51bWJlcik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0PiBjcmVhdGVFdmFsdWF0ZVNjcmlwdERhdGEoY29uc3QgU3RyaW5nJiwgZG91Ymxl
IGxpbmVOdW1iZXIpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gY3JlYXRlVGltZVN0YW1wRGF0YShjb25zdCBTdHJpbmcmKTsKKyAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVRpbWVTdGFtcERhdGEo
Y29uc3QgU3RyaW5nJik7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBjcmVhdGVSZXNvdXJjZVNlbmRSZXF1ZXN0RGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVSZXNvdXJjZVNlbmRSZXF1ZXN0RGF0YShj
b25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAKLSAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVTY2hlZHVsZVJlc291
cmNlUmVxdWVzdERhdGEoY29uc3QgU3RyaW5nJik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVTY2hlZHVsZVJlc291cmNlUmVxdWVz
dERhdGEoY29uc3QgU3RyaW5nJik7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBjcmVhdGVSZXNvdXJjZVJlY2VpdmVSZXNwb25zZURhdGEoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVJlc291cmNlUmVjZWl2
ZVJlc3BvbnNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3Jl
YXRlUmVjZWl2ZVJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgaW50IGxlbmd0
aCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiBjcmVhdGVSZWNlaXZlUmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBpbnQg
bGVuZ3RoKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNy
ZWF0ZVJlc291cmNlRmluaXNoRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgYm9vbCBkaWRG
YWlsLCBkb3VibGUgZmluaXNoVGltZSk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVSZXNvdXJjZUZpbmlzaERhdGEoY29uc3QgU3Ry
aW5nJiByZXF1ZXN0SWQsIGJvb2wgZGlkRmFpbCwgZG91YmxlIGZpbmlzaFRpbWUpOwogCi0gICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlTGF5b3V0RGF0YSh1
bnNpZ25lZCBkaXJ0eU9iamVjdHMsIHVuc2lnbmVkIHRvdGFsT2JqZWN0cywgYm9vbCBwYXJ0aWFs
TGF5b3V0KTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+IGNyZWF0ZUxheW91dERhdGEodW5zaWduZWQgZGlydHlPYmplY3RzLCB1bnNpZ25lZCB0
b3RhbE9iamVjdHMsIGJvb2wgcGFydGlhbExheW91dCk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVEZWNvZGVJbWFnZURhdGEoY29uc3QgU3RyaW5n
JiBpbWFnZVR5cGUpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdD4gY3JlYXRlRGVjb2RlSW1hZ2VEYXRhKGNvbnN0IFN0cmluZyYgaW1hZ2VUeXBl
KTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVJl
c2l6ZUltYWdlRGF0YShib29sIHNob3VsZENhY2hlKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVJlc2l6ZUltYWdlRGF0YShib29s
IHNob3VsZENhY2hlKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGNyZWF0ZU1hcmtEYXRhKGJvb2wgaXNNYWluRnJhbWUpOworICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlTWFya0RhdGEoYm9vbCBp
c01haW5GcmFtZSk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBjcmVhdGVQYXJzZUhUTUxEYXRhKHVuc2lnbmVkIHN0YXJ0TGluZSk7CisgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVQYXJzZUhUTUxE
YXRhKHVuc2lnbmVkIHN0YXJ0TGluZSk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBjcmVhdGVBbmltYXRpb25GcmFtZURhdGEoaW50IGNhbGxiYWNrSWQpOwor
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3Jl
YXRlQW5pbWF0aW9uRnJhbWVEYXRhKGludCBjYWxsYmFja0lkKTsKIAotICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVBhaW50RGF0YShjb25zdCBGbG9hdFF1
YWQmKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q+IGNyZWF0ZVBhaW50RGF0YShjb25zdCBGbG9hdFF1YWQmKTsKIAotICAgICAgICBzdGF0aWMg
dm9pZCBhcHBlbmRMYXlvdXRSb290KEluc3BlY3Rvck9iamVjdCogZGF0YSwgY29uc3QgRmxvYXRR
dWFkJik7CisgICAgICAgIHN0YXRpYyB2b2lkIGFwcGVuZExheW91dFJvb3QoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3QqIGRhdGEsIGNvbnN0IEZsb2F0UXVhZCYpOwogCiAjaWYgRU5BQkxFKFdF
Ql9TT0NLRVRTKQotICAgICAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBjcmVhdGVXZWJTb2NrZXRDcmVhdGVEYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCisgICAgICAgIHN0YXRpYyBp
bmxpbmUgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlV2ViU29j
a2V0Q3JlYXRlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHByb3RvY29sKQogICAgICAgICB7Ci0gICAgICAgICAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBkYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKKyAgICAgICAg
ICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gZGF0YSA9IEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGRhdGEtPnNldE51bWJlcigi
aWRlbnRpZmllciIsIGlkZW50aWZpZXIpOwogICAgICAgICAgICAgZGF0YS0+c2V0U3RyaW5nKCJ1
cmwiLCB1cmwuc3RyaW5nKCkpOwogICAgICAgICAgICAgaWYgKCFwcm90b2NvbC5pc051bGwoKSkK
QEAgLTEwNiw5ICsxMDMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICByZXR1
cm4gZGF0YS5yZWxlYXNlKCk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgaW5saW5lIFBh
c3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVHZW5lcmljV2ViU29ja2V0RGF0YSh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIpCisgICAgICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlR2VuZXJpY1dlYlNvY2tldERhdGEodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyKQogICAgICAgICB7Ci0gICAgICAgICAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBkYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKKyAgICAgICAg
ICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gZGF0YSA9IEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGRhdGEtPnNldE51bWJlcigi
aWRlbnRpZmllciIsIGlkZW50aWZpZXIpOwogICAgICAgICAgICAgcmV0dXJuIGRhdGEucmVsZWFz
ZSgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29y
a2VyQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJDb25z
b2xlQWdlbnQuY3BwCmluZGV4IDE1YmI3YTguLjY2NmE4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQuY3BwCkBAIC0zNCw2ICszNCw4IEBACiAK
ICNpbmNsdWRlICJXb3JrZXJDb25zb2xlQWdlbnQuaCIKIAordXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXb3JrZXJDb25zb2xlQWdlbnQ6Oldvcmtl
ckNvbnNvbGVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJ
bmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcAppbmRleCA3MTM2ZTQ2
Li45N2QwMGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVi
dWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVn
Z2VyQWdlbnQuY3BwCkBAIC0zOCw2ICszOCw4IEBACiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgi
CiAjaW5jbHVkZSA8d3RmL01lc3NhZ2VRdWV1ZS5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5k
ZXggZWYyMzAzNy4uN2Y1ZTcwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNTEsOCArNTEsMTEgQEAKICNp
bmNsdWRlICJXb3JrZXJSZXBvcnRpbmdQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlclJ1bnRpbWVB
Z2VudC5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9J
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
bmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5z
cGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDU4YmRhMjAuLmFhMGQ5MGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaApAQCAt
MzMsMTkgKzMzLDIxIEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5z
cGVjdG9yQWdlbnRSZWdpc3RyeS5oIgotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgor
I2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9J
bnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKK25hbWVzcGFj
ZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7Cit9CisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotY2xhc3Mg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7Ci1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWw7CiBjbGFzcyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb247CiBjbGFzcyBJbnNwZWN0b3JSdW50
aW1lQWdlbnQ7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwpAQCAtNzIsOSArNzQsOSBAQCBw
cml2YXRlOgogICAgIFJlZlB0cjxJbnN0cnVtZW50aW5nQWdlbnRzPiBtX2luc3RydW1lbnRpbmdB
Z2VudHM7CiAgICAgT3duUHRyPEluamVjdGVkU2NyaXB0TWFuYWdlcj4gbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXI7CiAgICAgSW5zcGVjdG9yUnVudGltZUFnZW50KiBtX3J1bnRpbWVBZ2VudDsKLSAg
ICBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5IG1fYWdlbnRzOworICAgIEluc3BlY3Rvcjo6SW5zcGVj
dG9yQWdlbnRSZWdpc3RyeSBtX2FnZW50czsKICAgICBPd25QdHI8SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsPiBtX2Zyb250ZW5kQ2hhbm5lbDsKLSAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCmluZGV4
IGIwN2I2MzMuLjFlZjgzNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9X
b3JrZXJSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3Jr
ZXJSdW50aW1lQWdlbnQuY3BwCkBAIC00Miw2ICs0Miw4IEBACiAjaW5jbHVkZSAiV29ya2VyUnVu
TG9vcC5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogCit1c2luZyBuYW1lc3BhY2UgSW5z
cGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdvcmtlclJ1bnRpbWVBZ2VudDo6V29y
a2VyUnVudGltZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMs
IEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBXb3JrZXJHbG9i
YWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUpCkBAIC01Nyw3ICs1OSw3IEBAIFdvcmtlclJ1bnRp
bWVBZ2VudDo6fldvcmtlclJ1bnRpbWVBZ2VudCgpCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRz
LT5zZXRXb3JrZXJSdW50aW1lQWdlbnQoMCk7CiB9CiAKLXZvaWQgV29ya2VyUnVudGltZUFnZW50
OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBXb3Jr
ZXJSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Oklu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNr
ZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yUnVu
dGltZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oCmluZGV4
IDY3ZGUwOGEuLjViNjI5YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9X
b3JrZXJSdW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2Vy
UnVudGltZUFnZW50LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0
dWFsIH5Xb3JrZXJSdW50aW1lQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5z
cGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAg
Ly8gUHJvdG9jb2wgY29tbWFuZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnNvbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcAppbmRleCBkZGU2NWUz
Li4zMjdlYTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKQEAgLTQ3LDkgKzQ3LDkgQEAKICNp
bmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmls
ZS5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUu
aCIKICNpbmNsdWRlICJTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJTZXR0
aW5ncy5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8c3Rk
aW8uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1
cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGlj
eS5jcHAKaW5kZXggMGJlOWY5OC4uY2M2NjM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q29udGVudFNlY3VyaXR5UG9saWN5LmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIkZv
cm1EYXRhTGlzdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSAiUGluZ0xvYWRlci5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXMuaCIKQEAgLTQ2LDEwICs0NSwxMyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5oIgogI2luY2x1ZGUg
IlRleHRFbmNvZGluZy5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlv
bi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCit1c2luZyBuYW1lc3BhY2Ug
SW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIE5vcm1hbGx5IFdlYktpdCB1
c2VzICJzdGF0aWMiIGZvciBpbnRlcm5hbCBsaW5rYWdlLCBidXQgdXNpbmcgInN0YXRpYyIgZm9y
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDQ5ZTE4N2IuLmI4ZDg3NzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwCkBAIC04Niw3ICs4Niw2IEBACiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRl
ICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2lu
Y2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgpAQCAt
MTA0LDYgKzEwMyw3IEBACiAjaW5jbHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSAibnBydW50aW1l
X2ltcGwuaCIKICNpbmNsdWRlICJydW50aW1lX3Jvb3QuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9T
Y3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZS5jcHAKaW5kZXggNGZhYWU2ZC4uOWJjYzI2NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZS5jcHAKQEAgLTQyLDkgKzQyLDkgQEAKICNpbmNsdWRl
ICJTY3JpcHRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNs
dWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIK
ICNpbmNsdWRlICJTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJTZXR0aW5n
cy5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8c3RkaW8u
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBkNjBjODg1
Li5mODQ1Y2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTYxLDcg
KzYxLDYgQEAKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3Qu
aCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUu
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAj
aW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKQEAgLTY5LDYgKzY4LDcgQEAKICNpbmNs
dWRlICJjX2luc3RhbmNlLmgiCiAjaW5jbHVkZSAibnBydW50aW1lX2ltcGwuaCIKICNpbmNsdWRl
ICJydW50aW1lX3Jvb3QuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2lu
Y2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+
CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KQEAgLTQ2Nyw3ICs0NjcsNyBAQCB2b2lkIFBs
dWdpblZpZXc6OnBlcmZvcm1SZXF1ZXN0KFBsdWdpblJlcXVlc3QqIHJlcXVlc3QpCiAgICAgCiAg
ICAgLy8gRXhlY3V0aW5nIGEgc2NyaXB0IGNhbiBjYXVzZSB0aGUgcGx1Z2luIHZpZXcgdG8gYmUg
ZGVzdHJveWVkLCBzbyB3ZSBrZWVwIGEgcmVmZXJlbmNlIHRvIGl0LgogICAgIFJlZlB0cjxQbHVn
aW5WaWV3PiBwcm90ZWN0b3IodGhpcyk7Ci0gICAgU2NyaXB0VmFsdWUgcmVzdWx0ID0gbV9wYXJl
bnRGcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChqc1N0cmluZywgcmVxdWVzdC0+c2hvdWxk
QWxsb3dQb3B1cHMoKSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgcmVzdWx0ID0gbV9w
YXJlbnRGcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChqc1N0cmluZywgcmVxdWVzdC0+c2hv
dWxkQWxsb3dQb3B1cHMoKSk7CiAKICAgICBpZiAodGFyZ2V0RnJhbWVOYW1lLmlzTnVsbCgpKSB7
CiAgICAgICAgIFN0cmluZyByZXN1bHRTdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKaW5kZXggODA5ZmU4Yy4uMDAwNmJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcApAQCAtNjMsNyArNjMsNiBAQAogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWwuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JPdmVybGF5LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAj
aW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIkludGVybmFsU2V0dGlu
Z3MuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC05Niw2ICs5NSw3IEBACiAjaW5jbHVkZSAi
Vmlld3BvcnRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRl
IDxieXRlY29kZS9Db2RlQmxvY2suaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFs
dWVzLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oPgpAQCAtMTY3
LDYgKzE2Nyw4IEBAIHVzaW5nIEpTQzo6SlNWYWx1ZTsKIHVzaW5nIEpTQzo6U2NyaXB0RXhlY3V0
YWJsZTsKIHVzaW5nIEpTQzo6U3RhY2tWaXNpdG9yOwogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7
CkBAIC0xMjgyLDcgKzEyODQsNyBAQCBwcml2YXRlOgogICAgIENvZGVCbG9jayogbV9jb2RlQmxv
Y2s7CiB9OwogCi1TdHJpbmcgSW50ZXJuYWxzOjpwYXJzZXJNZXRhRGF0YShTY3JpcHRWYWx1ZSB2
YWx1ZSkKK1N0cmluZyBJbnRlcm5hbHM6OnBhcnNlck1ldGFEYXRhKERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlIHZhbHVlKQogewogICAgIEpTQzo6Vk0qIHZtID0gY29udGV4dERvY3VtZW50KCktPnZt
KCk7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB2bS0+dG9wQ2FsbEZyYW1lOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggMjViY2FmZS4uMTA5MjVlZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiQ29udGV4dERl
c3RydWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIu
aCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5j
bHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVm
ZmVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9GbG9hdDMyQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgpAQCAtMTgxLDcgKzE4MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVtaXRJ
bnNwZWN0b3JEaWRCZWdpbkZyYW1lKCk7CiAgICAgdm9pZCBlbWl0SW5zcGVjdG9yRGlkQ2FuY2Vs
RnJhbWUoKTsKIAotICAgIFN0cmluZyBwYXJzZXJNZXRhRGF0YShTY3JpcHRWYWx1ZSA9IFNjcmlw
dFZhbHVlKCkpOworICAgIFN0cmluZyBwYXJzZXJNZXRhRGF0YShEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSA9IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCkpOwogCiAgICAgYm9vbCBoYXNTcGVsbGlu
Z01hcmtlcihpbnQgZnJvbSwgaW50IGxlbmd0aCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIGJvb2wg
aGFzR3JhbW1hck1hcmtlcihpbnQgZnJvbSwgaW50IGxlbmd0aCwgRXhjZXB0aW9uQ29kZSYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJHbG9iYWxTY29w
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNw
cAppbmRleCBlMTc3YTcwLi4xMzhiZmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4gY3JlYXRlQ29ubmVjdEV2ZW50
KFBhc3NSZWZQdHI8TWVzc2FnZVBvcnQ+IHBycFBvcnQpCiB7CiAgICAgUmVmUHRyPE1lc3NhZ2VQ
b3J0PiBwb3J0ID0gcHJwUG9ydDsKLSAgICBSZWZQdHI8TWVzc2FnZUV2ZW50PiBldmVudCA9IE1l
c3NhZ2VFdmVudDo6Y3JlYXRlKGFkb3B0UHRyKG5ldyBNZXNzYWdlUG9ydEFycmF5KDEsIHBvcnQp
KSwgU2NyaXB0VmFsdWUoKSwgU3RyaW5nKCksIFN0cmluZygpLCBwb3J0KTsKKyAgICBSZWZQdHI8
TWVzc2FnZUV2ZW50PiBldmVudCA9IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKGFkb3B0UHRyKG5ldyBN
ZXNzYWdlUG9ydEFycmF5KDEsIHBvcnQpKSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKSwgU3Ry
aW5nKCksIFN0cmluZygpLCBwb3J0KTsKICAgICBldmVudC0+aW5pdEV2ZW50KGV2ZW50TmFtZXMo
KS5jb25uZWN0RXZlbnQsIGZhbHNlLCBmYWxzZSk7CiAgICAgcmV0dXJuIGV2ZW50LnJlbGVhc2Uo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2Nv
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5k
ZXggZWMyZDE5MC4uZmNiZjY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJH
bG9iYWxTY29wZS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJFcnJvckV2ZW50Lmgi
CiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5oIgorI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb25zb2xlSW5zdHJ1bWVu
dGF0aW9uLmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKQEAg
LTQ0LDcgKzQ1LDYgQEAKICNpbmNsdWRlICJTY2hlZHVsZWRBY3Rpb24uaCIKICNpbmNsdWRlICJT
Y3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVk
ZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUg
Ildvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXb3JrZXJMb2NhdGlvbi5o
IgpAQCAtNTQsMTQgKzU0LDEzIEBACiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVk
ZSAiV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0RXhj
ZXB0aW9uLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FD
WV9OT1RJRklDQVRJT05TKQogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNlbnRlci5oIgogI2VuZGlm
CiAKLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ2xvc2VXb3JrZXJHbG9iYWxTY29wZVRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzayB7CkBAIC0yNDEsNyArMjQwLDcgQEAgdm9pZCBXb3JrZXJHbG9iYWxTY29w
ZTo6aW1wb3J0U2NyaXB0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdXJscywgRXhjZXB0aW9uQ29k
ZSYKIAogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgc2NyaXB0TG9hZGVyLT5pZGVudGlmaWVyKCksIHNjcmlw
dExvYWRlci0+c2NyaXB0KCkpOwogCi0gICAgICAgIFNjcmlwdFZhbHVlIGV4Y2VwdGlvbjsKKyAg
ICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZXhjZXB0aW9uOwogICAgICAgICBtX3Njcmlw
dC0+ZXZhbHVhdGUoU2NyaXB0U291cmNlQ29kZShzY3JpcHRMb2FkZXItPnNjcmlwdCgpLCBzY3Jp
cHRMb2FkZXItPnJlc3BvbnNlVVJMKCkpLCAmZXhjZXB0aW9uKTsKICAgICAgICAgaWYgKCFleGNl
cHRpb24uaGFzTm9WYWx1ZSgpKSB7CiAgICAgICAgICAgICBtX3NjcmlwdC0+c2V0RXhjZXB0aW9u
KGV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRo
cmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXgg
NTBiZmExZC4uZmVmM2U1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNw
cApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJUaHJlYWRHbG9iYWxEYXRhLmgiCiAjaW5jbHVkZSAi
VVJMLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAKaW5kZXggMTYxZGQwMS4uYzM5
ZTc1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxUcmVlVmlld2VyLmNwcApAQCAtMzgsMTAgKzM4LDEw
IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAj
aW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlhNTFZpZXdlckNTUy5oIgogI2luY2x1ZGUgIlhN
TFZpZXdlckpTLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXIuY3BwCmluZGV4IDc0YTdkMDAuLjkwZWZkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC00Niw3ICs0Niw2IEBACiAj
aW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNjcmlwdEVsZW1lbnQuaCIK
ICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIK
ICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiVHJlZURlcHRoTGlt
aXQuaCIKICNpbmNsdWRlICJYTUxFcnJvcnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCA0NmE5MmRiLi41
MmI4Zjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1
bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC01Miw3ICs1Miw2IEBACiAjaW5jbHVkZSAiUmVzb3Vy
Y2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNjcmlwdEVsZW1lbnQuaCIKICNpbmNsdWRlICJTY3Jp
cHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZWN1
cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291
cmNlRGVjb2Rlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9X
ZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKaW5k
ZXggZTcxZjRmYy4uNGVlZmQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0FwaS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBh
Z2UuY3BwCkBAIC0xMTgsNyArMTE4LDYgQEAKICNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIKICNp
bmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5o
IgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNp
bmNsdWRlICJTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIlNlbGVjdGlvbkhhbmRsZXIuaCIK
QEAgLTE3Miw2ICsxNzEsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ29udGV4dFJl
Zi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CiAjaW5jbHVkZSA8
U2hhcmVkUG9pbnRlci5oPgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5j
bHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8c3lzL2tleWNvZGVzLmg+CiAjaW5jbHVkZSA8dW5pY29k
ZS91c3RyaW5nLmg+IC8vIHBsYXRmb3JtIElDVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cK
aW5kZXggMDQ0NmFiMS4uMjQwY2I2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMTMtMTItMDUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVjdG9yIFJl
cXVpcmVkIENsYXNzZXMgRG93biBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFwaS9XZWJQYWdlLmNwcDoKKwogMjAx
My0xMi0wMyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IFB1c2ggUmVtb3RlIEluc3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlv
biBtYW5hZ2VtZW50IGludG8gSmF2YVNjcmlwdENvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCAzMWVl
MmI1Li43ZGQ1ZTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMTIt
MDUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVjdG9yIFJlcXVpcmVkIENsYXNzZXMgRG93biBpbnRv
IEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjUzMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgorCiAyMDEzLTEyLTAzICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBS
ZW1vdGUgSW5zcGVjdG9yIGRlYnVnZ2luZyBjb25uZWN0aW9uIG1hbmFnZW1lbnQgaW50byBKYXZh
U2NyaXB0Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKaW5kZXggOWM2OGM5MS4uMWE3YTc5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCkBAIC01OSw5ICs1OSw5IEBACiAjaW5jbHVk
ZSA8UnVudGltZUVuYWJsZWRGZWF0dXJlcy5oPgogI2luY2x1ZGUgPFNjaGVtZVJlZ2lzdHJ5Lmg+
CiAjaW5jbHVkZSA8U2NyaXB0Q29udHJvbGxlci5oPgotI2luY2x1ZGUgPFNjcmlwdFZhbHVlLmg+
CiAjaW5jbHVkZSA8U2V0dGluZ3MuaD4KICNpbmNsdWRlIDxUZXh0SXRlcmF0b3IuaD4KKyNpbmNs
dWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPGJpbmRpbmdzL2pzL0dDQ29u
dHJvbGxlci5oPgogI2luY2x1ZGUgPGhpc3RvcnkvSGlzdG9yeUl0ZW0uaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAppbmRleCBmMmEyMGMz
Li5hMDUyYWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcApAQCAtNTMsNyArNTMs
NiBAQAogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVx
dWVzdC5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRW
YWx1ZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlN1YnN0aXR1dGVE
YXRhLmgiCiAjaW5jbHVkZSAiV2luZG93c0tleWJvYXJkQ29kZXMuaCIKQEAgLTY1LDYgKzY0LDcg
QEAKICNpbmNsdWRlIDxFY29yZV9JbnB1dC5oPgogI2luY2x1ZGUgPEVpbmEuaD4KICNpbmNsdWRl
IDxFdmFzLmg+CisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxl
aW5hX3NhZmV0eV9jaGVja3MuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggY2UyODliMi4uMjdhN2Zk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTEyLTA1ICBKb3NlcGgg
UGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
UHVzaCBNb3JlIEluc3BlY3RvciBSZXF1aXJlZCBDbGFzc2VzIERvd24gaW50byBKYXZhU2NyaXB0
Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1
MzI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3
ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisKIDIwMTMtMTItMDkgIEpvYW5tYXJpZSBEaWdncyAg
PGpkaWdnc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEFYOiBbQVRLXSBDb252ZXJ0IHRoZSBnZXRf
e3N0cmluZyx0ZXh0fV9hdF9vZmZzZXQgYXRrdGVzdC5jIHVuaXQgdGVzdHMgdG8gbGF5b3V0IHRl
c3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggZjlk
OWIxZGQuLjYwMjMyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
dy5jcHAKQEAgLTg1LDcgKzg1LDYgQEAKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2lu
Y2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9s
bGVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgog
I2luY2x1ZGUgIldlYktpdERPTURvY3VtZW50UHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdGRv
d25sb2FkLmgiCkBAIC0xMTQsNiArMTEzLDcgQEAKICNpbmNsdWRlICJ3ZWJraXR3ZWJwbHVnaW5k
YXRhYmFzZXByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oIgog
I2luY2x1ZGUgIndlYmtpdHdlYnZpZXdwcml2YXRlLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2Ny
aXB0VmFsdWUuaD4KICNpbmNsdWRlIDxnZGsvZ2Rra2V5c3ltcy5oPgogI2luY2x1ZGUgPGdsaWIv
Z2kxOG4tbGliLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5j
ZVByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3h5Lm1tCmluZGV4IDFlOGU4YWQuLjZjMTk2MzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHkubW0KQEAgLTU3LDExICs1NywxMSBAQAogI2ltcG9ydCA8V2ViQ29yZS9Q
cm94eVNlcnZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2ltcG9y
dCA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1NjcmlwdFZh
bHVlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL25wcnVudGltZV9pbXBsLmg+CiAjaW1wb3J0IDxXZWJDb3JlL3J1bnRpbWVfb2Jq
ZWN0Lmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KKyNpbXBvcnQgPGJpbmRp
bmdzL1NjcmlwdFZhbHVlLmg+CiAjaW1wb3J0IDxtYWNoL21hY2guaD4KICNpbXBvcnQgPHV0aWxp
dHk+CiAjaW1wb3J0IDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KaW5k
ZXggZTI1ZWJlOS4uYTE0Yzg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQpAQCAtNDMsMTIgKzQzLDEyIEBACiAj
aW1wb3J0ICJXZWJVSURlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJWaWV3SW50ZXJuYWwuaCIKICNp
bXBvcnQgPGFsZ29yaXRobT4KKyNpbXBvcnQgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0luc3BlY3RvckNvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxl
ci5oPgotI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRWYWx1ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9T
b2Z0TGlua2luZy5oPgogI2ltcG9ydCA8V2ViS2l0L0RPTUV4dGVuc2lvbnMuaD4KICNpbXBvcnQg
PFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUu
bW0KaW5kZXggZTRiMmJlZC4uNmY1ODg2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZy
YW1lLm1tCkBAIC04OSw3ICs4OSw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlcldpZGdldC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNpbXBvcnQg
PFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRWYWx1
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9TbWFydFJlcGxhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3R5bGVQcm9wZXJ0aWVzLmg+CkBA
IC0xMDAsNiArOTksNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9odG1sZWRpdGluZy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9tYXJrdXAuaD4KICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgor
I2ltcG9ydCA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbXBvcnQgPHJ1bnRpbWUvSlNMb2Nr
Lmg+CiAjaW1wb3J0IDxydW50aW1lL0pTT2JqZWN0Lmg+CiAjaW1wb3J0IDxydW50aW1lL0pTQ0pT
VmFsdWUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBkZjdkNmY0Li5j
ZDI3ZjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xNjksNyArMTY5
LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9TY2hlbWVSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRDb250
cm9sbGVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1NjcmlwdFZhbHVlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5UG9saWN5Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+CkBAIC0xODUsNiArMTg0LDcgQEAKICNpbXBv
cnQgPFdlYktpdC9ET01FeHRlbnNpb25zLmg+CiAjaW1wb3J0IDxXZWJLaXQvRE9NUHJpdmF0ZS5o
PgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CisjaW1wb3J0IDxiaW5kaW5ncy9T
Y3JpcHRWYWx1ZS5oPgogI2ltcG9ydCA8bWFjaC1vL2R5bGQuaD4KICNpbXBvcnQgPG9iamMvb2Jq
Yy1hdXRvLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA0
YjUyYTc1Li5kMDNhNTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMt
MTItMDUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVjdG9yIFJlcXVpcmVkIENsYXNzZXMgRG93biBp
bnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKwogMjAx
My0xMi0wNCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBb
V2luXSBFeGl0aW5nIGZyb20gTWVkaWEgRnVsbCBTY3JlZW4gbW9kZSB2aWEgJ2VzY2FwZScga2V5
IGRvZXMgbm90IHdvcmsgcHJvcGVybHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAppbmRleCBlYThiZDE4
Li40OWQ2NmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCkBAIC05OSwxMiArOTksMTIgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL1RleHRJdGVyYXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNET01C
aW5kaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmln
aW4uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9j
ay5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0Lmg+CisjaW5jbHVkZSA8Ymlu
ZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiAjaWYg
VVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAppbmRleCBmOWY1ZDA2Li4wODM4NDc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJWaWV3LmNwcApAQCAtMTM3LDcgKzEzNyw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY2hlbWVSZWdpc3RyeS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGJhci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2Nyb2xsYmFyVGhlbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5
T3JpZ2luLmg+CkBAIC0xNDcsNiArMTQ2LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1N5c3RlbUlu
Zm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd01lc3NhZ2VCcm9hZGNhc3Rlci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvV2luZG93c1RvdWNoLmg+CisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0
VmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiAjaWYgVVNFKENHKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCmluZGV4IDJmYTA5MjMuLmNiNWQ0MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAor
MjAxMy0xMi0wNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggTW9yZSBJbnNwZWN0b3IgUmVxdWlyZWQgQ2xhc3NlcyBE
b3duIGludG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyNTMyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKworMjAxMy0xMi0wNSAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2gg
TW9yZSBJbnNwZWN0b3IgUmVxdWlyZWQgQ2xhc3NlcyBEb3duIGludG8gSmF2YVNjcmlwdENvcmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTMyNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3Rvci5oOgorCiAyMDEzLTEyLTA5ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hv
aUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIExheW91dFRlc3RzIGFyZSBicm9r
ZW4gYWZ0ZXIgcjE2MDMwMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCmluZGV4IGUwMGQzYTIuLjYxM2Q1ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTYzLDEyICs2Mywx
MiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyRW1iZWRkZWRPYmplY3QuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlTG9hZFNjaGVkdWxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Ny
aXB0Q29udHJvbGxlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0VmFsdWUuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1Njcm9sbFZpZXcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3Jp
Z2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eVBvbGljeS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2V0dGluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNhdG9y
Lmg+CisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CkBAIC0xMTc5LDcgKzEx
NzksNyBAQCB2b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1KYXZhU2NyaXB0VVJMUmVxdWVzdChVUkxS
ZXF1ZXN0KiByZXF1ZXN0KQogICAgIC8vIEV2YWx1YXRlIHRoZSBKYXZhU2NyaXB0IGNvZGUuIE5v
dGUgdGhhdCBydW5uaW5nIEphdmFTY3JpcHQgaGVyZSBjb3VsZCBjYXVzZSB0aGUgcGx1Zy1pbiB0
byBiZSBkZXN0cm95ZWQsIHNvIHdlCiAgICAgLy8gZ3JhYiByZWZlcmVuY2VzIHRvIHRoZSBwbHVn
LWluIGhlcmUuCiAgICAgUmVmUHRyPFBsdWdpbj4gcGx1Z2luID0gbV9wbHVnaW47Ci0gICAgU2Ny
aXB0VmFsdWUgcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoanNTdHJpbmcs
IHJlcXVlc3QtPmFsbG93UG9wdXBzKCkpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHJl
c3VsdCA9IGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KGpzU3RyaW5nLCByZXF1ZXN0LT5h
bGxvd1BvcHVwcygpKTsKIAogICAgIC8vIENoZWNrIGlmIGV2YWx1YXRpbmcgdGhlIEphdmFTY3Jp
cHQgZGVzdHJveWVkIHRoZSBwbHVnLWluLgogICAgIGlmICghcGx1Z2luLT5jb250cm9sbGVyKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVj
dG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3Iu
Y3BwCmluZGV4IGE4OTBmNWIuLjEwNWJhYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCkBAIC0zNCwxMiArMzQsMTEgQEAKICNp
bmNsdWRlICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
cy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yQ29udHJvbGxlci5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvSW5zcGVjdG9yRm9yd2FyZGluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01haW5GcmFtZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxl
ci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0VmFsdWUuaD4KKyNpbmNsdWRlIDxiaW5kaW5n
cy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oCmluZGV4IGU2NGY2ZDMuLjQyYWVjNTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKQEAg
LTMwLDE4ICszMCwxNCBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ29u
bmVjdGlvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRm9yd2FyZGluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7
Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudDsKIGNsYXNzIFdlYlBhZ2U7Ci1zdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczsK
IAogY2xhc3MgV2ViSW5zcGVjdG9yIDogcHVibGljIEFQSTo6VHlwZWRPYmplY3Q8QVBJOjpPYmpl
Y3Q6OlR5cGU6OkJ1bmRsZUluc3BlY3Rvcj4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDUwNTcxNTcuLjIyOWVhZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTEy
OCw3ICsxMjgsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NjcmlwdENvbnRyb2xsZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdFZhbHVlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NldHRpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFkb3dSb290Lmg+CkBAIC0xMzks
NiArMTM4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Zpc2libGVQb3NpdGlvbi5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvVmlzaWJsZVVuaXRzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9tYXJrdXAuaD4K
KyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlND
SlNWYWx1ZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8cnVudGlt
ZS9PcGVyYXRpb25zLmg+Cg==
</data>
<flag name="commit-queue"
          id="242322"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218804</attachid>
            <date>2013-12-09 14:43:14 -0800</date>
            <delta_ts>2013-12-10 15:16:38 -0800</delta_ts>
            <desc>[PATCH] For Bots 6</desc>
            <filename>for-bots-6.patch</filename>
            <type>text/plain</type>
            <size>730901</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAxM2M4YjA2Li4zNTk5YmIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00LDYgKzQsNyBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vQVBJIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMiCiAg
ICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9hc3NlbWJsZXIiCisgICAgIiR7SkFWQVNDUklQVENP
UkVfRElSfS9iaW5kaW5ncyIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J5dGVjb2RlIgog
ICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnl0ZWNvbXBpbGVyIgogICAgICIke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vZGZnIgpAQCAtNDUsNiArNDYsMTAgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NP
VVJDRVMKICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCiAgICAgYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNwcAogCisgICAgYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25D
YWxsLmNwcAorICAgIGJpbmRpbmdzL1NjcmlwdE9iamVjdC5jcHAKKyAgICBiaW5kaW5ncy9TY3Jp
cHRWYWx1ZS5jcHAKKwogICAgIGJ5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwCiAg
ICAgYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAogICAgIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNC
bG9jay5jcHAKQEAgLTIxNSw2ICsyMjAsMTAgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMK
ICAgICBoZWFwL1dlYWtTZXQuY3BwCiAgICAgaGVhcC9Xcml0ZUJhcnJpZXJTdXBwb3J0LmNwcAog
CisgICAgaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwCisgICAgaW5zcGVjdG9y
L0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcAorICAgIGluc3BlY3Rvci9JbnNwZWN0b3JW
YWx1ZXMuY3BwCisKICAgICBpbnRlcnByZXRlci9BYnN0cmFjdFBDLmNwcAogICAgIGludGVycHJl
dGVyL0NhbGxGcmFtZS5jcHAKICAgICBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTU4
Myw2ICs1OTIsNyBAQCBlbmRmb3JlYWNoICgpCiAKIHNldChKYXZhU2NyaXB0Q29yZV9GT1JXQVJE
SU5HX0hFQURFUlNfRElSRUNUT1JJRVMKICAgICBhc3NlbWJsZXIKKyAgICBiaW5kaW5ncwogICAg
IGJ5dGVjb2RlCiAgICAgY29sbGVjdG9yL2hhbmRsZXMKICAgICBkZWJ1Z2dlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKaW5kZXggYmI0ZmQxNi4uNjQyZTQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTEwIEBACisyMDEzLTEyLTA1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNv
cmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgUEFSVCA2OiBFeHRyYWN0IEdlbmVyaWMgSW5zcGVj
dG9yVHlwZUJ1aWxkZXIKKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVj
dG9yIFJlcXVpcmVkIENsYXNzZXMgRG93biBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclR5cGVCdWlsZGVyLmg6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6T3B0T3V0cHV0OjpPcHRPdXRwdXQpOgorICAgICAgICAoSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6T3B0T3V0cHV0OjpvcGVyYXRvcj0pOgorICAgICAgICAoSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6T3B0T3V0cHV0Ojppc0Fzc2lnbmVkKToKKyAgICAgICAgKEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6Ok9wdE91dHB1dDo6Z2V0VmFsdWUpOgorICAgICAgICAoSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6RXhhY3RseUludDo6RXhhY3RseUludCk6CisgICAgICAgIChJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpFeGFjdGx5SW50OjpvcGVyYXRvciBpbnQpOgorICAgICAgICAoSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6RXhhY3RseUludDo6Y2FzdF90b19pbnQpOgorICAgICAgICAoSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6aW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OlJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRBbnkpOgorICAgICAgICAoSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZUNhc3RIZWxwZXI6OmFzc2VydEludCk6CisgICAgICAg
IChJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTo6QXJyYXkpOgorICAgICAgICAoSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk6Om9wZW5BY2Nlc3NvcnMpOgorICAgICAgICAoSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk6OmFkZEl0ZW0pOgorICAgICAgICAoSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6QXJyYXk6OmNyZWF0ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTo6cnVudGltZUNhc3QpOgorICAgICAgICAoSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk6OmFzc2VydENvcnJlY3RWYWx1ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpTdHJ1Y3RJdGVtVHJhaXRzOjpwdXNoUmVmUHRyKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlN0cnVjdEl0ZW1UcmFpdHM6OmFzc2VydENvcnJlY3RWYWx1ZSk6CisK
KzIwMTMtMTItMDUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVjdG9yIFJlcXVpcmVkIENsYXNzZXMg
RG93biBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNw
cDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9u
Q2FsbC5jcHAuCisgICAgICAgIChKU0M6OlNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVu
ZEFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6U2NyaXB0RnVuY3Rpb25DYWxsOjpTY3JpcHRGdW5j
dGlvbkNhbGwpOgorICAgICAgICAoSlNDOjpTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwpOgorICAg
ICAgICAqIGJpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmguCisKKzIwMTMtMTItMDUg
IEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVjdG9yIFJlcXVpcmVkIENsYXNzZXMgRG93biBpbnRvIEph
dmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjUzMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAg
ICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnZjeHByb2ovY29weS1maWxlcy5jbWQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9TY3JpcHRPYmplY3Qu
Y3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50
LmNwcC4KKyAgICAgICAgKEpTQzo6U2NyaXB0T2JqZWN0OjpTY3JpcHRPYmplY3QpOgorICAgICAg
ICAqIGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmguCisgICAgICAgIChKU0M6OlNjcmlwdE9iamVjdDo6
U2NyaXB0T2JqZWN0KToKKyAgICAgICAgKEpTQzo6U2NyaXB0T2JqZWN0Ojpqc09iamVjdCk6Cisg
ICAgICAgIChKU0M6OlNjcmlwdE9iamVjdDo6c2NyaXB0U3RhdGUpOgorICAgICAgICAqIGJpbmRp
bmdzL1NjcmlwdFZhbHVlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdFZhbHVlLmNwcC4KKyAgICAgICAgKEpTQzo6U2NyaXB0VmFsdWU6On5TY3JpcHRW
YWx1ZSk6CisgICAgICAgIChKU0M6OlNjcmlwdFZhbHVlOjpnZXRTdHJpbmcpOgorICAgICAgICAo
SlNDOjpTY3JpcHRWYWx1ZTo6dG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpTY3JpcHRWYWx1ZTo6
aXNFcXVhbCk6CisgICAgICAgIChKU0M6OmpzVG9JbnNwZWN0b3JWYWx1ZSk6CisgICAgICAgIChK
U0M6OlNjcmlwdFZhbHVlOjp0b0luc3BlY3RvclZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9T
Y3JpcHRWYWx1ZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0VmFsdWUuaC4KKworMjAxMy0xMi0wNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBw
bGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggTW9yZSBJbnNwZWN0b3IgUmVx
dWlyZWQgQ2xhc3NlcyBEb3duIGludG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTMyNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yQWdlbnRCYXNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JBZ2VudFJlZ2lzdHJ5LmguCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50
QmFzZTo6fkluc3BlY3RvckFnZW50QmFzZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3Rv
ckFnZW50QmFzZTo6ZGlzY2FyZEFnZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9y
QWdlbnRCYXNlOjpJbnNwZWN0b3JBZ2VudEJhc2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9yQWdlbnRSZWdpc3RyeTo6YXBwZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yQWdlbnRSZWdpc3RyeS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwLgorICAgICAgICAoSW5zcGVjdG9yOjpn
ZXRQcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlci5oLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1
ZXMuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZh
bHVlcy5jcHAuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oLgorCiAyMDEz
LTEyLTA4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQ1NFIHNo
b3VsZCB3b3JrIGluIFNTQQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1h
a2VmaWxlLmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDA4
NWZjYTcuLjc1ZGJlZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtl
ZmlsZS5hbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTUy
LDYgKzUyLDcgQEAgamF2YXNjcmlwdGNvcmVfY3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9Gb3J3YXJkaW5nSGVhZGVycyBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlciBcCisJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRp
bmdzIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUgXAogCS1J
JChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIgXAogCS1JJChzcmNk
aXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlciBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDgzYjIwNzYuLjgxN2FhNzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC05NSw2ICs5NSwxMiBAQCBqYXZh
c2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L1JlcGF0Y2hCdWZmZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9TSDRB
c3NlbWJsZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJs
ZXIuaCBcCisgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9u
Q2FsbC5jcHAgXAorICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5j
dGlvbkNhbGwuaCBcCisgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdE9i
amVjdC5jcHAgXAorICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRPYmpl
Y3QuaCBcCisgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNw
cCBcCisgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxlLmNw
cCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2Zp
bGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAg
XApAQCAtNjEyLDcgKzYxOCwxNSBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUvdXRmX29sZC5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaWN1L3VuaWNvZGUvdXR5cGVzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
Y3UvdW5pY29kZS91dmVyc2lvbi5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckFnZW50QmFzZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgXAorCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCBc
CisJU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUeXBlQnVpbGRlci5o
IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAg
XAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9BYnN0cmFjdFBDLmNwcCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Fic3RyYWN0UEMuaCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENhbGwuaCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvagppbmRleCBhMTQ0OTJlLi43MDI5MWU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTI5NCw2ICsyOTQsOSBAQAogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXE1hY3JvQXNzZW1ibGVyLmNwcCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEFQSVxKU0NUZXN0UnVubmVyVXRpbHMuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5j
cHAiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xiaW5kaW5ncy9TY3Jp
cHRGdW5jdGlvbkNhbGwuY3BwIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGlu
Z3NcYmluZGluZ3MvU2NyaXB0T2JqZWN0LmNwcCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGJpbmRpbmdzXGJpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlQcm9maWxlLmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEJ5dGVjb2RlQmFzaWNCbG9jay5jcHAi
IC8+CkBAIC00NTYsNiArNDU5LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBc
V2Vha0hhbmRsZU93bmVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBc
V2Vha1NldC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXFdyaXRlQmFy
cmllclN1cHBvcnQuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9y
XEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5caW5zcGVjdG9yXEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCIgLz4KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JWYWx1ZXMuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcQWJzdHJhY3RQQy5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxDYWxsRnJhbWUuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcSW50ZXJwcmV0ZXIuY3BwIiAv
PgpAQCAtNzQ5LDYgKzc1NSw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhc3NlbWJs
ZXJcTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGFzc2VtYmxlclxSZXBhdGNoQnVmZmVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
Llxhc3NlbWJsZXJcWDg2QXNzZW1ibGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxiaW5kaW5nc1xiaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaCIgLz4KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oIiAvPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcYmluZGluZ3MvU2NyaXB0VmFsdWUuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlvblBy
b2ZpbGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5UHJv
ZmlsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQnlWYWxJbmZv
LmgiIC8+CkBAIC05OTcsNyArMTAwNiwxMiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aGVhcFxXZWFrU2V0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXFdlYWtT
ZXRJbmxpbmVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXFdyaXRlQmFy
cmllclN1cHBvcnQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJ
bnNwZWN0b3JBZ2VudEJhc2UuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3Bl
Y3RvclxJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIg
Lz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JUeXBlQnVp
bGRlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3Rv
clZhbHVlcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcQWJz
dHJhY3RQQy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcQ2Fj
aGVkQ2FsbC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcQ2Fs
bEZyYW1lLmgiIC8+CkBAIC0xMzQ1LDQgKzEzNTksNCBAQAogICA8SW1wb3J0R3JvdXAgTGFiZWw9
IkV4dGVuc2lvblRhcmdldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRo
KVxCdWlsZEN1c3RvbWl6YXRpb25zXG1hc20udGFyZ2V0cyIgLz4KICAgPC9JbXBvcnRHcm91cD4K
LTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYTI2
MTBmNy4uY2EwNTc4ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ouZmlsdGVycwpAQCAtNCw2ICs0LDkgQEAKICAgICA8RmlsdGVyIEluY2x1ZGU9ImFzc2Vt
YmxlciI+CiAgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NDI5NzgzYTEtNWQ2YS00MDE5LWFkMWEt
ZGRiMmM5OGY5YjZjfTwvVW5pcXVlSWRlbnRpZmllcj4KICAgICA8L0ZpbHRlcj4KKyAgICA8Rmls
dGVyIEluY2x1ZGU9ImJpbmRpbmdzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnswYmFjZTEy
My00NTgyLWVlYmMtOTMxNC03ODE5YjM3NmMxOTh9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwv
RmlsdGVyPgogICAgIDxGaWx0ZXIgSW5jbHVkZT0iYnl0ZWNvZGUiPgogICAgICAgPFVuaXF1ZUlk
ZW50aWZpZXI+ezc2NjA4OGEwLTEyMTYtNDg1NC1hYTQzLTU2MGM1ZTI4MzY2OH08L1VuaXF1ZUlk
ZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+CkBAIC0xMDUsNiArMTA4LDE1IEBACiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcTWFjcm9Bc3NlbWJsZXIuY3BwIj4KICAgICAgIDxG
aWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIj4KKyAgICAgIDxG
aWx0ZXI+YmluZGluZ3M8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdE9iamVjdC5jcHAiPgorICAgICAgPEZpbHRlcj5i
aW5kaW5nczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cYmluZGluZ3NcU2NyaXB0VmFsdWUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+YmluZGluZ3M8
L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5
dGVjb2RlXEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNv
ZGU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTI3OSw2ICsyOTEsMTUgQEAKICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAiPgogICAg
ICAgPEZpbHRlcj5oZWFwPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAiPgorICAg
ICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5j
cHAiPgorICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JWYWx1ZXMuY3Bw
Ij4KKyAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxBYnN0cmFjdFBDLmNwcCI+CiAg
ICAgICA8RmlsdGVyPmludGVycHJldGVyPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0x
Mzg4LDYgKzE0MDksMTUgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxY
ODZBc3NlbWJsZXIuaCI+CiAgICAgICA8RmlsdGVyPmFzc2VtYmxlcjwvRmlsdGVyPgogICAgIDwv
Q2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0RnVu
Y3Rpb25DYWxsLmgiPgorICAgICAgPEZpbHRlcj5iaW5kaW5nczwvRmlsdGVyPgorICAgIDwvQ2xJ
bmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0T2JqZWN0
LmgiPgorICAgICAgPEZpbHRlcj5iaW5kaW5nczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0VmFsdWUuaCI+CisgICAg
ICA8RmlsdGVyPmJpbmRpbmdzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmgiPgogICAg
ICAgPEZpbHRlcj5ieXRlY29kZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMTcxNSw5
ICsxNzQ1LDI0IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXFdyaXRlQmFycmll
clN1cHBvcnQuaCI+CiAgICAgICA8RmlsdGVyPmhlYXA8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVk
ZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JBZ2VudEJh
c2UuaCI+CisgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRl
PgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckFnZW50UmVn
aXN0cnkuaCI+CisgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNs
dWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyLmgiPgorICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KKyAgICA8
L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwuaCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgog
ICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXElu
c3BlY3RvclR5cGVCdWlsZGVyLmgiPgorICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4K
KyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJ
bnNwZWN0b3JWYWx1ZXMuaCI+CisgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgorICAg
IDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcQWJz
dHJhY3RQQy5oIj4KICAgICAgIDxGaWx0ZXI+aW50ZXJwcmV0ZXI8L0ZpbHRlcj4KICAgICA8L0Ns
SW5jbHVkZT4KQEAgLTMxNzAsNCArMzIxNSw0IEBACiAgICAgICA8RmlsdGVyPmppdDwvRmlsdGVy
PgogICAgIDwvTUFTTT4KICAgPC9JdGVtR3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovY29weS1maWxlcy5jbWQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9jb3B5LWZpbGVzLmNtZAppbmRleCBmN2U0
Mjk0Li44ODJjZTgzIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9jb3B5LWZpbGVzLmNtZAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmN4cHJvai9jb3B5LWZpbGVzLmNtZApAQCAtMzksNiArMzksNyBAQCBl
Y2hvIENvcHlpbmcgcHJpdmF0ZSBoZWFkZXJzLi4uCiBta2RpciAiJVByaXZhdGVIZWFkZXJzRGly
ZWN0b3J5JSIgMj5OVUwNCiBmb3IgJSVkIGluICgNCiAgICAgYXNzZW1ibGVyDQorICAgIGJpbmRp
bmdzDQogICAgIGJ5dGVjb2RlDQogICAgIGRmZw0KICAgICBkaXNhc3NlbWJsZXINCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQzMjZhNjEuLjcwZDc1NTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC04OTIsNiArODkyLDIwIEBACiAJCUExNzEyQjQxMTFDN0IyMzUw
MDdBNTMxNSAvKiBSZWdFeHBLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEExNzEyQjQwMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUEwMDlDMDE4
MzFBMjJEMDBDRjg3MTEgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY0MDkyM0MxNTZFRUQzQjAwNTY2Q0IyIC8q
IE1hY3JvQXNzZW1ibGVyQVJNNjQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlBMUEwMDlDMTE4MzFBMjZFMDBDRjg3MTEgLyogQVJNNjRBc3NlbWJs
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NDA5
MjNCMTU2RUVEM0IwMDU2NkNCMiAvKiBBUk02NEFzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1NENGMkY1MTg0RUFCMjQwMDIzN0Yx
OSAvKiBTY3JpcHRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTRDRjJGMjE4NEVBQjI0MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuY3BwICov
OyB9OworCQlBNTRDRjJGNjE4NEVBQjI0MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NENGMkYzMTg0RUFCMjQw
MDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUE1NENGMkY5MTg0RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRPYmpl
Y3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU0
Q0YyRjcxODRFQUVEQTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5jcHAgKi87IH07CisJCUE1NENG
MkZBMTg0RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NENGMkY4MTg0RUFFREEwMDIzN0YxOSAvKiBT
Y3JpcHRPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlBNTVEOTNBNTE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NUQ5M0Ez
MTg1MDEyQTgwMDQwMERFRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwICovOyB9OworCQlBNTVE
OTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTVEOTNBNDE4NTAxMkE4MDA0MDBE
RUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTU1RDkzQUMxODUxNEY3OTAwNDAwREVEIC8qIEluc3BlY3Rv
clR5cGVCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTVEOTNBQjE4NTE0Rjc5MDA0MDBERUQgLyogSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNTkzQ0Y3
QzE4NDAzNjAzMDBCRkNFMjcgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5M0NGN0ExODQwMzYw
MzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCAqLzsgfTsKKwkJQTU5
M0NGN0QxODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTkzQ0Y3QjE4NDAz
NjAzMDBCRkNFMjcgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNTkzQ0Y3RjE4NDAzNjJDMDBC
RkNFMjcgLyogSW5zcGVjdG9yQWdlbnRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNTkzQ0Y3RTE4NDAzNjJDMDBCRkNFMjcgLyogSW5zcGVjdG9y
QWdlbnRCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJQTU5M0NGODIxODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTkzQ0Y4MDE4NDAz
NzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCAqLzsgfTsKKwkJQTU5M0NGODMxODQw
Mzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5M0NGODExODQwMzc3MTAwQkZDRTI3IC8qIEluc3Bl
Y3RvclZhbHVlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUE1OTNDRjg2MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OTND
Rjg0MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcCAqLzsgfTsK
KwkJQTU5M0NGODcxODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OTNDRjg1MTg0
MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTU5NDU1OEYxODI0NUVGRDAwQ0Mz
ODQzIC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5NDU1OEUxODI0NUVERTAwQ0MzODQzIC8qIFJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwICovOyB9OwogCQlBNTk0NTU5MjE4MjQ3NDQ3MDBD
QzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OTQ1NTkwMTgyNDc0NDcwMENDMzg0MyAvKiBK
U0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwICovOyB9OwogCQlBNTk0NTU5MzE4MjQ3NDQ3MDBD
QzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTk0NTU5MTE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNH
bG9iYWxPYmplY3REZWJ1Z2dhYmxlLmggKi87IH07CkBAIC0yMjIxLDYgKzIyMzUsMjAgQEAKIAkJ
QTE3MTJCM0ExMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ0V4cENhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTE3MTJCM0UxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cENhY2hlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNzEyQjQwMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBL
ZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwS2V5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1NENGMkYyMTg0RUFCMjQwMDIzN0YxOSAvKiBTY3Jp
cHRWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRW
YWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1NENGMkYzMTg0RUFCMjQw
MDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTY3JpcHRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTRDRjJGNzE4
NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNjcmlwdE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUE1NENGMkY4MTg0RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUE1NUQ5M0EzMTg1MDEyQTgwMDQwMERFRCAvKiBTY3JpcHRGdW5jdGlv
bkNhbGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0RnVu
Y3Rpb25DYWxsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU1RDkzQTQxODUw
MTJBODAwNDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTY3JpcHRGdW5jdGlvbkNhbGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTU1RDkzQUIxODUxNEY3OTAwNDAwREVEIC8qIEluc3BlY3RvclR5cGVCdWlsZGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEluc3BlY3RvclR5cGVCdWlsZGVy
Lmg7IHBhdGggPSBpbnNwZWN0b3IvSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTU5M0NGN0ExODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcDsgcGF0aCA9IGluc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1
OTNDRjdCMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ci5oOyBwYXRoID0gaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTNDRjdFMTg0MDM2MkMwMEJGQ0UyNyAvKiBJbnNw
ZWN0b3JBZ2VudEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSW5zcGVj
dG9yQWdlbnRCYXNlLmg7IHBhdGggPSBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTNDRjgwMTg0MDM3NzEwMEJGQ0UyNyAvKiBJ
bnNwZWN0b3JWYWx1ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
SW5zcGVjdG9yVmFsdWVzLmNwcDsgcGF0aCA9IGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTkzQ0Y4MTE4NDAzNzcxMDBCRkNFMjcg
LyogSW5zcGVjdG9yVmFsdWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IElu
c3BlY3RvclZhbHVlcy5oOyBwYXRoID0gaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTkzQ0Y4NDE4NDAzOENBMDBCRkNFMjcgLyogSW5z
cGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcDsgcGF0aCA9IGluc3BlY3Rvci9JbnNwZWN0
b3JBZ2VudFJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU5M0NG
ODUxODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oOyBwYXRoID0g
aW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTU5NDU1OEUxODI0NUVERTAwQ0MzODQzIC8qIFJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZS5jcHA7IHBhdGggPSBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTk0NTU5
MDE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1OTQ1NTkxMTgyNDc0NDcwMENDMzg0
MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yNzIxLDYgKzI3NDksNyBAQAogCQkJCUE3QzIyNUNDMTM5OTgxRjEwMEZGMTY2
MiAvKiBLZXl3b3JkTG9va3VwR2VuZXJhdG9yLnB5ICovLAogCQkJCTE0MzJFQkQ3MEEzNENBRDQw
MDcxN0I5RiAvKiBBUEkgKi8sCiAJCQkJOTY4OENCMTIwRUQxMkI0RTAwMUQ2NDlGIC8qIGFzc2Vt
YmxlciAqLywKKwkJCQlBNTRDRjJFQTE4NEVBNzM5MDAyMzdGMTkgLyogYmluZGluZ3MgKi8sCiAJ
CQkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovLAogCQkJCTdFMzlEODFE
MEVDMzhFRkEwMDNBRjExQSAvKiBieXRlY29tcGlsZXIgKi8sCiAJCQkJMUM5MDUxM0UwQkE5RTg4
MzAwODFFOUQwIC8qIENvbmZpZ3VyYXRpb25zICovLApAQCAtNDE5MiwxMSArNDIyMSwzMiBAQAog
CQkJcGF0aCA9IGJ5dGVjb2RlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJ
QTU0Q0YyRUExODRFQTczOTAwMjM3RjE5IC8qIGJpbmRpbmdzICovID0geworCQkJaXNhID0gUEJY
R3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlBNTVEOTNBMzE4NTAxMkE4MDA0MDBERUQgLyog
U2NyaXB0RnVuY3Rpb25DYWxsLmNwcCAqLywKKwkJCQlBNTVEOTNBNDE4NTAxMkE4MDA0MDBERUQg
LyogU2NyaXB0RnVuY3Rpb25DYWxsLmggKi8sCisJCQkJQTU0Q0YyRjcxODRFQUVEQTAwMjM3RjE5
IC8qIFNjcmlwdE9iamVjdC5jcHAgKi8sCisJCQkJQTU0Q0YyRjgxODRFQUVEQTAwMjM3RjE5IC8q
IFNjcmlwdE9iamVjdC5oICovLAorCQkJCUE1NENGMkYyMTg0RUFCMjQwMDIzN0YxOSAvKiBTY3Jp
cHRWYWx1ZS5jcHAgKi8sCisJCQkJQTU0Q0YyRjMxODRFQUIyNDAwMjM3RjE5IC8qIFNjcmlwdFZh
bHVlLmggKi8sCisJCQkpOworCQkJcGF0aCA9IGJpbmRpbmdzOworCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKKwkJfTsKIAkJQTVCQTE1REYxODIzNDA5MjAwQTgyRTY5IC8qIGluc3BlY3RvciAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQTVCQTE1RTAx
ODIzNDA5RDAwQTgyRTY5IC8qIHJlbW90ZSAqLywKKwkJCQlBNTkzQ0Y3RTE4NDAzNjJDMDBCRkNF
MjcgLyogSW5zcGVjdG9yQWdlbnRCYXNlLmggKi8sCisJCQkJQTU5M0NGODQxODQwMzhDQTAwQkZD
RTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwICovLAorCQkJCUE1OTNDRjg1MTg0MDM4
Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggKi8sCisJCQkJQTU5M0NGN0Ex
ODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCAqLywKKwkJ
CQlBNTkzQ0Y3QjE4NDAzNjAzMDBCRkNFMjcgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
aCAqLywKIAkJCQlBNTk0NTU5NDE4MjQ3OUVCMDBDQzM4NDMgLyogSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsLmggKi8sCisJCQkJQTU1RDkzQUIxODUxNEY3OTAwNDAwREVEIC8qIEluc3BlY3RvclR5
cGVCdWlsZGVyLmggKi8sCisJCQkJQTU5M0NGODAxODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3Rv
clZhbHVlcy5jcHAgKi8sCisJCQkJQTU5M0NGODExODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3Rv
clZhbHVlcy5oICovLAogCQkJKTsKIAkJCW5hbWUgPSBpbnNwZWN0b3I7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtNDMzNyw2ICs0Mzg3LDcgQEAKIAkJCQkwRjJCNjZERjE3QjZCNUFC
MDBBN0FFM0YgLyogRGF0YVZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDIwMzRBMEUxNzEz
NUUwMDJDN0U4MiAvKiBEYXRlQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMzU5
Q0YzMEZERDg5QUQwMDIwNjE4MCAvKiBEYXRlQ29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQTU5M0NGN0YxODQwMzYyQzAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50QmFzZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkMxMTY2MDIwRTE5OTdCNDAwODA2NkREIC8qIERhdGVJbnN0YW5jZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTRBMTU2MzIxMDk2NjM2NTAwNkZBMjYwIC8qIERhdGVJbnN0
YW5jZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0QyMDM0QzBFMTcxMzVFMDAyQzdFODIg
LyogRGF0ZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC00MzY4LDYgKzQ0MTksNyBAQAog
CQkJCTBGODM2NEI3MTY0QjBDMTEwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJlY3Rpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUExQTAwOUMwMTgzMUEyMkQwMENGODcxMSAvKiBNYWNyb0Fzc2VtYmxl
ckFSTTY0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVDOURDNTEzMjhERjgyMDAyQjJBRDcgLyog
REZHQnl0ZUNvZGVQYXJzZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1OTNDRjg3MTg0MDM4Q0Ew
MEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjI1NkMzNjE2MjdCMEFEMDA3RjI3ODMgLyogREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhH
ZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0IyOTRCMTRDM0NEMkYwMDdDM0RCMSAv
KiBERkdDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkZDOTU4MTRFRjkwQTIw
MEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC00NDU0LDYgKzQ1MDYs
NyBAQAogCQkJCTg2RUM5REQzMTMyOERGODIwMDJCMkFENyAvKiBERkdTcGVjdWxhdGl2ZUpJVC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEODlEMDAxN0EwQjhDQzAwNzczQUQ4IC8qIERGR1NTQUNv
bnZlcnNpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5RkI0RjUxN0ZDQjkxNzAwQ0I2
N0Y4IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1OTNDRjgz
MTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGNjM5NDc4MTVEQ0UzNEIwMDZBNTk3QyAvKiBERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkMwOTdBMjE0NkIyOENDMDBDRjI0NDIgLyogREZHVGh1bmtz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4QTMyODE3RDUxRjU3MDBDQTJDNDAgLyogREZHVGll
clVwQ2hlY2tJbmplY3Rpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC00NDg4LDYgKzQ1NDEs
NyBAQAogCQkJCTBGQjEwNTg2MTY3NTQ4MTIwMEY4QUI2RSAvKiBFeGl0S2luZC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYwQjgzQUIxNEJDRjVCQjAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUlu
Zm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjM4MTdBREI1RjMwMDVBQjE3NCAvKiBGbG9h
dDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1NENGMkY2MTg0RUFCMjQwMDIzN0YxOSAv
KiBTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzkxN0FEQjVGMzAwNUFC
MTc0IC8qIEZsb2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NDMxN0VBOUY1
OTAwQUJCMjE3IC8qIEZQUkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkM5OUQ1MTg0RUUz
MTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaCBpbiBIZWFkZXJz
ICovLApAQCAtNDgzMyw2ICs0ODg3LDcgQEAKIAkJCQkwRjBDRDRDMjE1RjFBNjA3MDAzMkYxQzAg
LyogUHV0RGlyZWN0SW5kZXhNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjlGQzhDNTE0RTFC
NjA0MDBENTJBRTAgLyogUHV0S2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3Qjg0NjMwRTZE
RTZCMTAwNDc3NUE0IC8qIFB1dFByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU5
M0NGN0QxODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkY2MEFDMjE2NzQwRjgzMDAwMjk3NzkgLyogUmVkdWNlV2hpdGVz
cGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NUEwRTE2RjVDRDAwQjM0NDYwIC8qIFJl
Z0V4cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE3MTJCM0YxMUM3QjIyODAwN0E1MzE1IC8qIFJl
Z0V4cENhY2hlLmggaW4gSGVhZGVycyAqLywKQEAgLTQ4NzQsNiArNDkyOSw3IEBACiAJCQkJMEZE
ODJFNTQxNDFEQUVFRTAwMTc5Qzk0IC8qIFNwZWN1bGF0ZWRUeXBlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBN0MxRUFGMjE3OTg3QUI2MDAyOTlEQjIgLyogU3RhY2tWaXNpdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNERGMDREQTE2QjM5OTZEMDAxNkE1MTMgLyogU3RhdGljUHJvcGVydHlBbmFs
eXNpcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU0Q0YyRkExODRFQUVEQTAwMjM3RjE5IC8qIFNj
cmlwdE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRDQTk1OEIxNkFCNTBERTAwOTM4QTA2
IC8qIFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MzBCNjEy
MTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJpY3RFdmFsQWN0aXZhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMxOEM0NjYwRTE2RjVDRDAwQjM0NDYwIC8qIFN0cmluZ0NvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLywKQEAgLTQ5MzYsNiArNDk5Miw3IEBACiAJCQkJMTRCRTdEMzMxNzEzNUNGNDAw
RDE4MDdBIC8qIFdlYWtJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0NBM0FFNDE3REE0
MUFFMDA2NTM4QUYgLyogV2Vha01hcENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
N0NBM0FFQzE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuaCBpbiBIZWFkZXJzICovLAor
CQkJCUE1NUQ5M0FDMTg1MTRGNzkwMDQwMERFRCAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTdDQTNBRTYxN0RBNDFBRTAwNjUzOEFGIC8qIFdlYWtNYXBQcm90
b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MjBCRTdCMTBBQTZEREIwMEY0NTVEMiAvKiBX
ZWFrUmFuZG9tLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI0MkRBNzEzRjNCMUU4MDA3QURENEMg
LyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oIGluIEhlYWRlcnMgKi8sCkBAIC00OTQ5LDYgKzUw
MDYsNyBAQAogCQkJCTQ1MTUzOUI5MTJEQzk5NDUwMEVGN0FDNCAvKiBZYXJyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjY2NkVDRDE4MzZCMzdFMDBEMDE3RjEgLyogREZHUmVzdXJyZWN0aW9uRm9y
VmFsaWRhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI4NTEyREJBMzM3MDBB
OUZFN0IgLyogWWFyckludGVycHJldGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTVEOTNBNjE4
NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NjcwNEI4NzEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODY3MDRCODgxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oIGluIEhlYWRl
cnMgKi8sCkBAIC01NDU0LDYgKzU1MTIsNyBAQAogCQkJCTBGRjQyNzY0MTU5MUExQ0MwMDRDQjlG
RiAvKiBERkdEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEODFBRDIxNTRG
QjRFRTAwOTgzRTcyIC8qIERGR0RvbWluYXRvcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZE
M0M4MjYxNDExNUQ0MDAwRkQ4MUNCIC8qIERGR0RyaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlBNTkzQ0Y4MjE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRjBGMTlFMTZCNzJBMEIwMDVERjk1QiAvKiBERkdFZGdlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE3NERFRjkzMTgyRDk5MTQwMDUyMkMyMiAvKiBNYXBJdGVyYXRvclBy
b3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkJDMEFFNzE0OTZDN0M0MDBENEZCREQg
LyogREZHRXhpdFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01NTA5LDYgKzU1NjgsNyBA
QAogCQkJCTBGQkUwRjc2MTZDMURCMEYwMDgyQzVFOCAvKiBERkdVbmlmaWNhdGlvblBoYXNlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzRCMTQ5MTZENDIwMTAwMDFDREE1QSAvKiBERkdVc2VL
aW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0IzQTJCMTU0NzUwMDAwMDNFRDBGRiAvKiBE
RkdWYWxpZGF0ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNTVEOTNBNTE4NTAxMkE4MDA0MDBE
RUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkJEQzRG
MTUyMjhCRjMwMENEODkxMCAvKiBERkdWYWx1ZVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkREQkZCNTE2NjZFRUQ4MDBDNTVGRUYgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCREM1MTE1MjI4RkZEMDBDRDg5MTAgLyogREZHVmFy
aWFibGVFdmVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU1MjksNiArNTU4OSw3IEBACiAJCQkJ
MEY1NkExRDUxNTAwMUNGNDAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTU5NDU1OTIxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVi
dWdnYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkIxMDU4NTE2NzU0ODBGMDBGOEFCNkUg
LyogRXhpdEtpbmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTU0Q0YyRjUxODRFQUIyNDAwMjM3
RjE5IC8qIFNjcmlwdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEwQTFDMTcwOEIw
MDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZF
QTBBMUUxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMDkxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxp
dGllcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU1NTgsNiArNTYxOSw3IEBACiAJCQkJMEY5RDMz
OUExODAzQURCNzAwNzNDMkJDIC8qIEZUTFN0YWNrTWFwcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkVBMEExNjE3MDZCQjkwMDBCQjcyMkMgLyogRlRMU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEYyMzVCRTExNzE3OEUxQzAwNjkwQzdGIC8qIEZUTFRodW5rcy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlBNTkzQ0Y3QzE4NDAzNjAzMDBCRkNFMjcgLyogSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMzVCRTMxNzE3OEUxQzAwNjkwQzdG
IC8qIEZUTFZhbHVlRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUNCMTA3RUMz
NzYwMDQyN0E0OCAvKiBGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGRjBGMTlGMTZCNzJBMTcwMDVERjk1QiAvKiBGdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmNwcCBp
biBTb3VyY2VzICovLApAQCAtNTcwOCw2ICs1NzcwLDcgQEAKIAkJCQk4NkVCRjJGRjE1NjBGMDZB
MDA4RTkyMjIgLyogTmFtZUNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUJG
MzAxMTU2MEYwNkEwMDhFOTIyMiAvKiBOYW1lSW5zdGFuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODZFQkYzMDMxNTYwRjA2QTAwOEU5MjIyIC8qIE5hbWVQcm90b3R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQTU0Q0YyRjkxODRFQUVEQTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFMDEwN0VDN0U3MDA2NTA0NDYgLyogTmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFMTEwN0VDN0U3MDA2
NTA0NDYgLyogTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ4
RjIxQjcxMDdFQzU0NzAwNDJFQzJDIC8qIE5vZGVzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTgy
Niw2ICs1ODg5LDcgQEAKIAkJCQk4NjcwNEI4NDEyREJBMzM3MDBBOUZFN0IgLyogWWFyckludGVy
cHJldGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0Qjg2MTJEQkEzMzcwMEE5RkU3QiAv
KiBZYXJySklULmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0Qjg5MTJEQkEzMzcwMEE5RkU3
QiAvKiBZYXJyUGF0dGVybi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNTkzQ0Y4NjE4NDAzOENB
MDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk4NjcwNEI0MjEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlv
bkNhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9u
Q2FsbC5jcHAKc2ltaWxhcml0eSBpbmRleCA3OCUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcApyZW5hbWUgdG8gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKaW5kZXggMmVhMmI0Yi4u
ZjI2NDdkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVu
Y3Rpb25DYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0
RnVuY3Rpb25DYWxsLmNwcApAQCAtMSw0ICsxLDUgQEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0z
MSwxNyArMzIsMTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY3JpcHRGdW5j
dGlvbkNhbGwuaCIKIAotI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgorI2luY2x1
ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCi0KLSNpbmNsdWRlIDxydW50
aW1lL0pTTG9jay5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2luZyBu
YW1lc3BhY2UgSlNDOwogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgRGVwcmVjYXRl
ZCB7CiAKLXZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQoY29u
c3QgU2NyaXB0T2JqZWN0JiBhcmd1bWVudCkKK3ZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxl
cjo6YXBwZW5kQXJndW1lbnQoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiBhcmd1bWVu
dCkKIHsKICAgICBpZiAoYXJndW1lbnQuc2NyaXB0U3RhdGUoKSAhPSBtX2V4ZWMpIHsKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01MCw3ICs0OSw3IEBAIHZvaWQgU2NyaXB0Q2Fs
bEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQoY29uc3QgU2NyaXB0T2JqZWN0JiBhcmd1
bWVudCkKICAgICBtX2FyZ3VtZW50cy5hcHBlbmQoYXJndW1lbnQuanNPYmplY3QoKSk7CiB9CiAK
LXZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQoY29uc3QgU2Ny
aXB0VmFsdWUmIGFyZ3VtZW50KQordm9pZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyOjphcHBl
bmRBcmd1bWVudChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgYXJndW1lbnQpCiB7CiAg
ICAgbV9hcmd1bWVudHMuYXBwZW5kKGFyZ3VtZW50LmpzVmFsdWUoKSk7CiB9CkBAIC01OCw3ICs1
Nyw3IEBAIHZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQoY29u
c3QgU2NyaXB0VmFsdWUmIGFyZ3VtZW50KQogdm9pZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVy
OjphcHBlbmRBcmd1bWVudChjb25zdCBTdHJpbmcmIGFyZ3VtZW50KQogewogICAgIEpTTG9ja0hv
bGRlciBsb2NrKG1fZXhlYyk7Ci0gICAgbV9hcmd1bWVudHMuYXBwZW5kKGpzU3RyaW5nV2l0aENh
Y2hlKG1fZXhlYywgYXJndW1lbnQpKTsKKyAgICBtX2FyZ3VtZW50cy5hcHBlbmQoanNTdHJpbmco
bV9leGVjLCBhcmd1bWVudCkpOwogfQogCiB2b2lkIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6
OmFwcGVuZEFyZ3VtZW50KGNvbnN0IGNoYXIqIGFyZ3VtZW50KQpAQCAtNjcsNyArNjYsNyBAQCB2
b2lkIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KGNvbnN0IGNoYXIq
IGFyZ3VtZW50KQogICAgIG1fYXJndW1lbnRzLmFwcGVuZChqc1N0cmluZyhtX2V4ZWMsIFN0cmlu
Zyhhcmd1bWVudCkpKTsKIH0KIAotdm9pZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyOjphcHBl
bmRBcmd1bWVudChKU0M6OkpTVmFsdWUgYXJndW1lbnQpCit2b2lkIFNjcmlwdENhbGxBcmd1bWVu
dEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KEpTVmFsdWUgYXJndW1lbnQpCiB7CiAgICAgbV9hcmd1
bWVudHMuYXBwZW5kKGFyZ3VtZW50KTsKIH0KQEAgLTEwNywxNCArMTA2LDE1IEBAIHZvaWQgU2Ny
aXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQoYm9vbCBhcmd1bWVudCkKICAg
ICBtX2FyZ3VtZW50cy5hcHBlbmQoanNCb29sZWFuKGFyZ3VtZW50KSk7CiB9CiAKLVNjcmlwdEZ1
bmN0aW9uQ2FsbDo6U2NyaXB0RnVuY3Rpb25DYWxsKGNvbnN0IFNjcmlwdE9iamVjdCYgdGhpc09i
amVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKQorU2NyaXB0RnVuY3Rpb25DYWxsOjpTY3JpcHRGdW5j
dGlvbkNhbGwoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiB0aGlzT2JqZWN0LCBjb25z
dCBTdHJpbmcmIG5hbWUsIFNjcmlwdEZ1bmN0aW9uQ2FsbEhhbmRsZXIgY2FsbEhhbmRsZXIpCiAg
ICAgOiBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyKHRoaXNPYmplY3Quc2NyaXB0U3RhdGUoKSkK
KyAgICAsIG1fY2FsbEhhbmRsZXIoY2FsbEhhbmRsZXIpCiAgICAgLCBtX3RoaXNPYmplY3QodGhp
c09iamVjdCkKICAgICAsIG1fbmFtZShuYW1lKQogewogfQogCi1TY3JpcHRWYWx1ZSBTY3JpcHRG
dW5jdGlvbkNhbGw6OmNhbGwoYm9vbCYgaGFkRXhjZXB0aW9uKQorRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUgU2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKGJvb2wmIGhhZEV4Y2VwdGlvbikKIHsKICAg
ICBKU09iamVjdCogdGhpc09iamVjdCA9IG1fdGhpc09iamVjdC5qc09iamVjdCgpOwogCkBAIC0x
MjMsMzIgKzEyMywzMiBAQCBTY3JpcHRWYWx1ZSBTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwoYm9v
bCYgaGFkRXhjZXB0aW9uKQogICAgIEpTVmFsdWUgZnVuY3Rpb24gPSB0aGlzT2JqZWN0LT5nZXQo
bV9leGVjLCBJZGVudGlmaWVyKG1fZXhlYywgbV9uYW1lKSk7CiAgICAgaWYgKG1fZXhlYy0+aGFk
RXhjZXB0aW9uKCkpIHsKICAgICAgICAgaGFkRXhjZXB0aW9uID0gdHJ1ZTsKLSAgICAgICAgcmV0
dXJuIFNjcmlwdFZhbHVlKCk7CisgICAgICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSgpOwogICAgIH0KIAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxU
eXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUg
PT0gQ2FsbFR5cGVOb25lKQotICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoKTsKKyAgICAgICAg
cmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCk7CiAKICAgICBKU1ZhbHVlIHJlc3VsdDsK
LSAgICBpZiAoaXNNYWluVGhyZWFkKCkpCi0gICAgICAgIHJlc3VsdCA9IEpTTWFpblRocmVhZEV4
ZWNTdGF0ZTo6Y2FsbChtX2V4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNP
YmplY3QsIG1fYXJndW1lbnRzKTsKKyAgICBpZiAobV9jYWxsSGFuZGxlcikKKyAgICAgICAgcmVz
dWx0ID0gbV9jYWxsSGFuZGxlcihtX2V4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEs
IHRoaXNPYmplY3QsIG1fYXJndW1lbnRzKTsKICAgICBlbHNlCiAgICAgICAgIHJlc3VsdCA9IEpT
Qzo6Y2FsbChtX2V4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNPYmplY3Qs
IG1fYXJndW1lbnRzKTsKIAogICAgIGlmIChtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAgICAg
ICAgIGhhZEV4Y2VwdGlvbiA9IHRydWU7Ci0gICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOwor
ICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKTsKICAgICB9CiAKLSAgICBy
ZXR1cm4gU2NyaXB0VmFsdWUobV9leGVjLT52bSgpLCByZXN1bHQpOworICAgIHJldHVybiBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZShtX2V4ZWMtPnZtKCksIHJlc3VsdCk7CiB9CiAKLVNjcmlwdFZh
bHVlIFNjcmlwdEZ1bmN0aW9uQ2FsbDo6Y2FsbCgpCitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBT
Y3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwoKQogewogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFs
c2U7CiAgICAgcmV0dXJuIGNhbGwoaGFkRXhjZXB0aW9uKTsKIH0KIAotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgRGVwcmVjYXRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmgKc2ltaWxhcml0eSBpbmRleCA1MCUK
cmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxs
LmgKcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlv
bkNhbGwuaAppbmRleCA1NmZhNDdjLi4wNGIyYWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmgKQEAgLTEsNCArMSw1IEBACiAvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dApAQCAtMzEsNTcgKzMyLDU2IEBACiAjaWZuZGVmIFNjcmlwdEZ1bmN0aW9u
Q2FsbF9oCiAjZGVmaW5lIFNjcmlwdEZ1bmN0aW9uQ2FsbF9oCiAKKyNpbmNsdWRlICJBcmdMaXN0
LmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCi0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIK
LQotI2luY2x1ZGUgPHJ1bnRpbWUvQXJnTGlzdC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLSAgICBjbGFzcyBKU1ZhbHVlOworY2xhc3MgSlNW
YWx1ZTsKIH0KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIFNjcmlwdFZhbHVlOwor
bmFtZXNwYWNlIERlcHJlY2F0ZWQgewogCi0gICAgY2xhc3MgU2NyaXB0Q2FsbEFyZ3VtZW50SGFu
ZGxlciB7Ci0gICAgcHVibGljOgotICAgICAgICBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyKEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSkgOiBtX2V4ZWMoc3RhdGUpIHsgfQorY2xhc3MgSlNfRVhQT1JU
X1BSSVZBVEUgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlciB7CitwdWJsaWM6CisgICAgU2NyaXB0
Q2FsbEFyZ3VtZW50SGFuZGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpIDogbV9leGVjKHN0YXRl
KSB7IH0KIAotICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGNvbnN0IFNjcmlwdE9iamVjdCYp
OwotICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGNvbnN0IFNjcmlwdFZhbHVlJik7Ci0gICAg
ICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoY29uc3QgY2hhciopOwotICAgICAgICB2b2lkIGFwcGVu
ZEFyZ3VtZW50KGNvbnN0IFN0cmluZyYpOwotICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KEpT
Qzo6SlNWYWx1ZSk7Ci0gICAgICAgIHZvaWQgYXBwZW5kQXJndW1lbnQobG9uZyk7Ci0gICAgICAg
IHZvaWQgYXBwZW5kQXJndW1lbnQobG9uZyBsb25nKTsKLSAgICAgICAgdm9pZCBhcHBlbmRBcmd1
bWVudCh1bnNpZ25lZCBpbnQpOwotICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KHVuc2lnbmVk
IGxvbmcpOwotICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGludCk7Ci0gICAgICAgIHZvaWQg
YXBwZW5kQXJndW1lbnQoYm9vbCk7CisgICAgdm9pZCBhcHBlbmRBcmd1bWVudChjb25zdCBTY3Jp
cHRPYmplY3QmKTsKKyAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGNvbnN0IFNjcmlwdFZhbHVlJik7
CisgICAgdm9pZCBhcHBlbmRBcmd1bWVudChjb25zdCBjaGFyKik7CisgICAgdm9pZCBhcHBlbmRB
cmd1bWVudChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KEpTQzo6SlNW
YWx1ZSk7CisgICAgdm9pZCBhcHBlbmRBcmd1bWVudChsb25nKTsKKyAgICB2b2lkIGFwcGVuZEFy
Z3VtZW50KGxvbmcgbG9uZyk7CisgICAgdm9pZCBhcHBlbmRBcmd1bWVudCh1bnNpZ25lZCBpbnQp
OworICAgIHZvaWQgYXBwZW5kQXJndW1lbnQodW5zaWduZWQgbG9uZyk7CisgICAgdm9pZCBhcHBl
bmRBcmd1bWVudChpbnQpOworICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoYm9vbCk7CiAKLSAgICBw
cm90ZWN0ZWQ6Ci0gICAgICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgbV9hcmd1bWVudHM7
Ci0gICAgICAgIEpTQzo6RXhlY1N0YXRlKiBtX2V4ZWM7Citwcm90ZWN0ZWQ6CisgICAgSlNDOjpN
YXJrZWRBcmd1bWVudEJ1ZmZlciBtX2FyZ3VtZW50czsKKyAgICBKU0M6OkV4ZWNTdGF0ZSogbV9l
eGVjOwogCi0gICAgcHJpdmF0ZToKLSAgICAgICAgLy8gTWFya2VkQXJndW1lbnRCdWZmZXIgbXVz
dCBiZSBzdGFjayBhbGxvY2F0ZWQsIHNvIHByZXZlbnQgaGVhcAotICAgICAgICAvLyBhbGxvYyBv
ZiBTY3JpcHRGdW5jdGlvbkNhbGwgYXMgd2VsbC4KLSAgICAgICAgdm9pZCogb3BlcmF0b3IgbmV3
KHNpemVfdCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KDB4YmFkYmVlZik7IH0KLSAgICAgICAgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90
KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
MHhiYWRiZWVmKTsgfQotICAgIH07Citwcml2YXRlOgorICAgIC8vIE1hcmtlZEFyZ3VtZW50QnVm
ZmVyIG11c3QgYmUgc3RhY2sgYWxsb2NhdGVkLCBzbyBwcmV2ZW50IGhlYXAKKyAgICAvLyBhbGxv
YyBvZiBTY3JpcHRGdW5jdGlvbkNhbGwgYXMgd2VsbC4KKyAgICB2b2lkKiBvcGVyYXRvciBuZXco
c2l6ZV90KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oMHhiYWRiZWVmKTsgfQorICAgIHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCkgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDB4YmFk
YmVlZik7IH0KK307CiAKLSAgICBjbGFzcyBTY3JpcHRGdW5jdGlvbkNhbGwgOiBwdWJsaWMgU2Ny
aXB0Q2FsbEFyZ3VtZW50SGFuZGxlciB7Ci0gICAgcHVibGljOgotICAgICAgICBTY3JpcHRGdW5j
dGlvbkNhbGwoY29uc3QgU2NyaXB0T2JqZWN0JiB0aGlzT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5h
bWUpOwotICAgICAgICBTY3JpcHRWYWx1ZSBjYWxsKGJvb2wmIGhhZEV4Y2VwdGlvbik7Ci0gICAg
ICAgIFNjcmlwdFZhbHVlIGNhbGwoKTsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFNjcmlwdEZ1
bmN0aW9uQ2FsbCA6IHB1YmxpYyBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyIHsKK3B1YmxpYzoK
KyAgICB0eXBlZGVmIEpTQzo6SlNWYWx1ZSAoKlNjcmlwdEZ1bmN0aW9uQ2FsbEhhbmRsZXIpKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIEpTQzo6Q2Fs
bFR5cGUgY2FsbFR5cGUsIGNvbnN0IEpTQzo6Q2FsbERhdGEmIGNhbGxEYXRhLCBKU0M6OkpTVmFs
dWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MpOworICAgIFNjcmlwdEZ1bmN0
aW9uQ2FsbChjb25zdCBTY3JpcHRPYmplY3QmIHRoaXNPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgU2NyaXB0RnVuY3Rpb25DYWxsSGFuZGxlciBoYW5kbGVyID0gbnVsbHB0cik7CisgICAgU2Ny
aXB0VmFsdWUgY2FsbChib29sJiBoYWRFeGNlcHRpb24pOworICAgIFNjcmlwdFZhbHVlIGNhbGwo
KTsKIAotICAgIHByb3RlY3RlZDoKLSAgICAgICAgU2NyaXB0T2JqZWN0IG1fdGhpc09iamVjdDsK
LSAgICAgICAgU3RyaW5nIG1fbmFtZTsKLSAgICB9OworcHJvdGVjdGVkOgorICAgIFNjcmlwdEZ1
bmN0aW9uQ2FsbEhhbmRsZXIgbV9jYWxsSGFuZGxlcjsKKyAgICBTY3JpcHRPYmplY3QgbV90aGlz
T2JqZWN0OworICAgIFN0cmluZyBtX25hbWU7Cit9OwogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Cit9IC8vIG5hbWVzcGFjZSBEZXByZWNhdGVkCiAKICNlbmRpZiAvLyBTY3JpcHRGdW5jdGlvbkNh
bGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdl
bnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5jcHAK
c2ltaWxhcml0eSBpbmRleCA3MSUKY29weSBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9X
b3JrZXJDb25zb2xlQWdlbnQuY3BwCmNvcHkgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRp
bmdzL1NjcmlwdE9iamVjdC5jcHAKaW5kZXggMTViYjdhOC4uY2NmN2FmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5jcHAKQEAgLTEsNSArMSw2
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yOSwzMiArMzAsMjIg
QEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2NyaXB0T2JqZWN0Lmgi
CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQordXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotI2luY2x1
ZGUgIldvcmtlckNvbnNvbGVBZ2VudC5oIgorbmFtZXNwYWNlIERlcHJlY2F0ZWQgewogCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLVdvcmtlckNvbnNvbGVBZ2VudDo6V29ya2VyQ29uc29sZUFnZW50
KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluamVjdGVkU2NyaXB0
TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgIDogSW5zcGVjdG9yQ29uc29sZUFn
ZW50KGluc3RydW1lbnRpbmdBZ2VudHMsIGluamVjdGVkU2NyaXB0TWFuYWdlcikKLXsKLX0KLQot
V29ya2VyQ29uc29sZUFnZW50Ojp+V29ya2VyQ29uc29sZUFnZW50KCkKK1NjcmlwdE9iamVjdDo6
U2NyaXB0T2JqZWN0KEV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIEpTT2JqZWN0KiBvYmplY3QpCisg
ICAgOiBTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZS0+dm0oKSwgb2JqZWN0KQorICAgICwgbV9zY3Jp
cHRTdGF0ZShzY3JpcHRTdGF0ZSkKIHsKIH0KIAotdm9pZCBXb3JrZXJDb25zb2xlQWdlbnQ6OmFk
ZEluc3BlY3RlZE5vZGUoRXJyb3JTdHJpbmcqIGVycm9yLCBpbnQpCitTY3JpcHRPYmplY3Q6OlNj
cmlwdE9iamVjdChFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcHRWYWx1ZSYgc2Ny
aXB0VmFsdWUpCisgICAgOiBTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZS0+dm0oKSwgc2NyaXB0VmFs
dWUuanNWYWx1ZSgpKQorICAgICwgbV9zY3JpcHRTdGF0ZShzY3JpcHRTdGF0ZSkKIHsKLSAgICAq
ZXJyb3IgPSAiYWRkSW5zcGVjdGVkTm9kZSBpcyBub3Qgc3VwcG9ydGVkIGZvciB3b3JrZXJzIjsK
IH0KIAotYm9vbCBXb3JrZXJDb25zb2xlQWdlbnQ6OmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKQot
ewotICAgIHJldHVybiB0cnVlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQorfSAvLyBuYW1lc3BhY2UgRGVwcmVjYXRlZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhc2VBZ2VudC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5oCnNpbWlsYXJpdHkgaW5k
ZXggNjQlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYXNl
QWdlbnQuaApyZW5hbWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdE9i
amVjdC5oCmluZGV4IDhiOTA5MzguLjhmN2IwZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JCYXNlQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYmluZGluZ3MvU2NyaXB0T2JqZWN0LmgKQEAgLTEsNSArMSw2IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yOCwzNiArMjksMjcgQEAKICAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotI2lmbmRlZiBJbnNwZWN0b3JCYXNlQWdlbnRfaAotI2RlZmluZSBJbnNwZWN0b3JC
YXNlQWdlbnRfaAorI2lmbmRlZiBTY3JpcHRPYmplY3RfaAorI2RlZmluZSBTY3JpcHRPYmplY3Rf
aAogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCi0jaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJT
Y3JpcHRWYWx1ZS5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgRGVwcmVjYXRl
ZCB7CiAKLWNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKLWNsYXNzIEluc3RydW1lbnRp
bmdBZ2VudHM7Ci0KLWNsYXNzIEluc3BlY3RvckJhc2VBZ2VudCB7CitjbGFzcyBTY3JpcHRPYmpl
Y3QgOiBwdWJsaWMgU2NyaXB0VmFsdWUgewogcHVibGljOgotICAgIHZpcnR1YWwgfkluc3BlY3Rv
ckJhc2VBZ2VudCgpIHsgfQorICAgIEpTX0VYUE9SVF9QUklWQVRFIFNjcmlwdE9iamVjdChKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBTY3Jp
cHRPYmplY3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTY3JpcHRWYWx1ZSYpOworICAgIFNjcmlw
dE9iamVjdCgpIDogbV9zY3JpcHRTdGF0ZShudWxscHRyKSB7IH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJk
QWdlbnQoKSB7IH0KKyAgICBKU0M6OkpTT2JqZWN0KiBqc09iamVjdCgpIGNvbnN0IHsgcmV0dXJu
IGFzT2JqZWN0KGpzVmFsdWUoKSk7IH0KKyAgICBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUo
KSBjb25zdCB7IHJldHVybiBtX3NjcmlwdFN0YXRlOyB9CiAKIHByb3RlY3RlZDoKLSAgICBJbnNw
ZWN0b3JCYXNlQWdlbnQoY29uc3QgU3RyaW5nJiBuYW1lLCBJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzKQotICAgICAgICA6IG1faW5zdHJ1bWVudGluZ0FnZW50cyhpbnN0
cnVtZW50aW5nQWdlbnRzKQotICAgICAgICAsIG1fbmFtZShuYW1lKQotICAgIHsKLSAgICB9Ci0K
LSAgICBJbnN0cnVtZW50aW5nQWdlbnRzKiBtX2luc3RydW1lbnRpbmdBZ2VudHM7Ci0gICAgU3Ry
aW5nIG1fbmFtZTsKKyAgICBKU0M6OkV4ZWNTdGF0ZSogbV9zY3JpcHRTdGF0ZTsKIH07CiAKLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIERlcHJlY2F0ZWQKIAotI2VuZGlm
IC8vICFkZWZpbmVkKEluc3BlY3RvckJhc2VBZ2VudF9oKQorI2VuZGlmIC8vIFNjcmlwdE9iamVj
dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCnNpbWls
YXJpdHkgaW5kZXggNzIlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdFZhbHVlLmNwcApyZW5hbWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Nj
cmlwdFZhbHVlLmNwcAppbmRleCA2ZDlmYjFkLi41YzYwYjFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoYykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNywxMyArNywxMyBAQAog
ICogYXJlIG1ldDoKICAqCiAgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
ICAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAogICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgogICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKICAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
Ci0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLiAKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKICAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKQEAgLTMwLDIxICszMCwyMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAKKyNpbmNsdWRlICJBUElDYXN0LmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yVmFsdWVzLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVk
ZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCi0KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9B
UElDYXN0Lmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZVJlZi5oPgotCi0jaW5j
bHVkZSA8aGVhcC9TdHJvbmcuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgorI2luY2x1
ZGUgIkpTTG9jay5oIgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwordXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIERlcHJlY2F0ZWQgewog
Ci1ib29sIFNjcmlwdFZhbHVlOjpnZXRTdHJpbmcoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRl
LCBTdHJpbmcmIHJlc3VsdCkgY29uc3QKK1NjcmlwdFZhbHVlOjp+U2NyaXB0VmFsdWUoKQorewor
fQorCitib29sIFNjcmlwdFZhbHVlOjpnZXRTdHJpbmcoRXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwg
U3RyaW5nJiByZXN1bHQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3ZhbHVlKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC01NCw3ICs1Myw3IEBAIGJvb2wgU2NyaXB0VmFsdWU6OmdldFN0cmluZyhK
U0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIFN0cmluZyYgcmVzdWx0KSBjb25zdAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1TdHJpbmcgU2NyaXB0VmFsdWU6OnRvU3RyaW5nKEpTQzo6RXhlY1N0
YXRlKiBzY3JpcHRTdGF0ZSkgY29uc3QKK1N0cmluZyBTY3JpcHRWYWx1ZTo6dG9TdHJpbmcoRXhl
Y1N0YXRlKiBzY3JpcHRTdGF0ZSkgY29uc3QKIHsKICAgICBTdHJpbmcgcmVzdWx0ID0gbV92YWx1
ZS5nZXQoKS50b1N0cmluZyhzY3JpcHRTdGF0ZSktPnZhbHVlKHNjcmlwdFN0YXRlKTsKICAgICAv
LyBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgYW4gZXhjZXB0aW9uIGlzIHRocm93biBhcyBwYXJ0IG9m
IGludm9raW5nIHRvU3RyaW5nIG9uIHRoZSBvYmplY3QuCkBAIC02MywxMiArNjIsMTEgQEAgU3Ry
aW5nIFNjcmlwdFZhbHVlOjp0b1N0cmluZyhKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUpIGNv
bnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBTY3JpcHRWYWx1ZTo6aXNFcXVhbChK
U0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBhbm90aGVyVmFs
dWUpIGNvbnN0Citib29sIFNjcmlwdFZhbHVlOjppc0VxdWFsKEV4ZWNTdGF0ZSogc2NyaXB0U3Rh
dGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBhbm90aGVyVmFsdWUpIGNvbnN0CiB7CiAgICAgaWYgKGhh
c05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIGFub3RoZXJWYWx1ZS5oYXNOb1ZhbHVlKCk7Ci0K
LSAgICByZXR1cm4gSlNWYWx1ZUlzRXF1YWwodG9SZWYoc2NyaXB0U3RhdGUpLCB0b1JlZihzY3Jp
cHRTdGF0ZSwganNWYWx1ZSgpKSwgdG9SZWYoc2NyaXB0U3RhdGUsIGFub3RoZXJWYWx1ZS5qc1Zh
bHVlKCkpLCAwKTsKKyAgICByZXR1cm4gSlNWYWx1ZUlzRXF1YWwodG9SZWYoc2NyaXB0U3RhdGUp
LCB0b1JlZihzY3JpcHRTdGF0ZSwganNWYWx1ZSgpKSwgdG9SZWYoc2NyaXB0U3RhdGUsIGFub3Ro
ZXJWYWx1ZS5qc1ZhbHVlKCkpLCBudWxscHRyKTsKIH0KIAogYm9vbCBTY3JpcHRWYWx1ZTo6aXNO
dWxsKCkgY29uc3QKQEAgLTk4LDMzICs5NiwxNyBAQCBib29sIFNjcmlwdFZhbHVlOjppc0Z1bmN0
aW9uKCkgY29uc3QKICAgICByZXR1cm4gZ2V0Q2FsbERhdGEobV92YWx1ZS5nZXQoKSwgY2FsbERh
dGEpICE9IENhbGxUeXBlTm9uZTsKIH0KIAotUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IFNjcmlwdFZhbHVlOjpzZXJpYWxpemUoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBT
ZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucykKLXsKLSAgICByZXR1cm4gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoc2NyaXB0U3RhdGUsIGpzVmFsdWUoKSwgMCwgMCwg
dGhyb3dFeGNlcHRpb25zKTsKLX0KLQotUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IFNjcmlwdFZhbHVlOjpzZXJpYWxpemUoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBNZXNz
YWdlUG9ydEFycmF5KiBtZXNzYWdlUG9ydHMsIEFycmF5QnVmZmVyQXJyYXkqIGFycmF5QnVmZmVy
cywgYm9vbCYgZGlkVGhyb3cpCi17Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
c2VyaWFsaXplZFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoc2NyaXB0U3Rh
dGUsIGpzVmFsdWUoKSwgbWVzc2FnZVBvcnRzLCBhcnJheUJ1ZmZlcnMpOwotICAgIGRpZFRocm93
ID0gc2NyaXB0U3RhdGUtPmhhZEV4Y2VwdGlvbigpOwotICAgIHJldHVybiBzZXJpYWxpemVkVmFs
dWUucmVsZWFzZSgpOwotfQotCi1TY3JpcHRWYWx1ZSBTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUo
SlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVl
LCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucykKLXsKLSAgICByZXR1cm4g
U2NyaXB0VmFsdWUoc2NyaXB0U3RhdGUtPnZtKCksIHZhbHVlLT5kZXNlcmlhbGl6ZShzY3JpcHRT
dGF0ZSwgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgMCwgdGhyb3dFeGNlcHRp
b25zKSk7Ci19Ci0KICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotc3RhdGljIFBhc3NSZWZQdHI8SW5z
cGVjdG9yVmFsdWU+IGpzVG9JbnNwZWN0b3JWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3Rh
dGUsIEpTVmFsdWUgdmFsdWUsIGludCBtYXhEZXB0aCkKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiBqc1RvSW5zcGVjdG9yVmFsdWUoRXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgSlNW
YWx1ZSB2YWx1ZSwgaW50IG1heERlcHRoKQogewogICAgIGlmICghdmFsdWUpIHsKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAoIW1heERlcHRoKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICBtYXhEZXB0aC0tOwogCiAgICAgaWYgKHZh
bHVlLmlzTnVsbCgpIHx8IHZhbHVlLmlzVW5kZWZpbmVkKCkpCkBAIC0xMzcsNiArMTE5LDcgQEAg
c3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGpzVG9JbnNwZWN0b3JWYWx1ZShKU0M6
OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUKICAgICAgICAgU3RyaW5nIHMgPSB2YWx1ZS5nZXRTdHJp
bmcoc2NyaXB0U3RhdGUpOwogICAgICAgICByZXR1cm4gSW5zcGVjdG9yU3RyaW5nOjpjcmVhdGUo
U3RyaW5nKHMuY2hhcmFjdGVycygpLCBzLmxlbmd0aCgpKSk7CiAgICAgfQorCiAgICAgaWYgKHZh
bHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgaWYgKGlzSlNBcnJheSh2YWx1ZSkpIHsKICAgICAg
ICAgICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gaW5zcGVjdG9yQXJyYXkgPSBJbnNwZWN0b3JB
cnJheTo6Y3JlYXRlKCk7CkBAIC0xNDYsNyArMTI5LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5z
cGVjdG9yVmFsdWU+IGpzVG9JbnNwZWN0b3JWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3Rh
dGUKICAgICAgICAgICAgICAgICBKU1ZhbHVlIGVsZW1lbnQgPSBhcnJheS0+Z2V0SW5kZXgoc2Ny
aXB0U3RhdGUsIGkpOwogICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gZWxl
bWVudFZhbHVlID0ganNUb0luc3BlY3RvclZhbHVlKHNjcmlwdFN0YXRlLCBlbGVtZW50LCBtYXhE
ZXB0aCk7CiAgICAgICAgICAgICAgICAgaWYgKCFlbGVtZW50VmFsdWUpCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAgICAgICAgICAgICBpbnNwZWN0b3JBcnJheS0+cHVzaFZhbHVlKGVsZW1lbnRWYWx1ZSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gaW5zcGVjdG9yQXJyYXk7CkBAIC0xNjAs
MjAgKzE0MywyMSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4ganNUb0luc3Bl
Y3RvclZhbHVlKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZQogICAgICAgICAgICAgSlNWYWx1
ZSBwcm9wZXJ0eVZhbHVlID0gb2JqZWN0LT5nZXQoc2NyaXB0U3RhdGUsIG5hbWUpOwogICAgICAg
ICAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBpbnNwZWN0b3JWYWx1ZSA9IGpzVG9JbnNwZWN0
b3JWYWx1ZShzY3JpcHRTdGF0ZSwgcHJvcGVydHlWYWx1ZSwgbWF4RGVwdGgpOwogICAgICAgICAg
ICAgaWYgKCFpbnNwZWN0b3JWYWx1ZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIGluc3BlY3Rvck9iamVjdC0+
c2V0VmFsdWUoU3RyaW5nKG5hbWUuY2hhcmFjdGVycygpLCBuYW1lLmxlbmd0aCgpKSwgaW5zcGVj
dG9yVmFsdWUpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBpbnNwZWN0b3JPYmplY3Q7CiAg
ICAgfQorCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IFNjcmlwdFZhbHVl
Ojp0b0luc3BlY3RvclZhbHVlKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSkgY29uc3QKK1Bh
c3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IFNjcmlwdFZhbHVlOjp0b0luc3BlY3RvclZhbHVlKEV4
ZWNTdGF0ZSogc2NyaXB0U3RhdGUpIGNvbnN0CiB7Ci0gICAgSlNDOjpKU0xvY2tIb2xkZXIgaG9s
ZGVyKHNjcmlwdFN0YXRlKTsKKyAgICBKU0xvY2tIb2xkZXIgaG9sZGVyKHNjcmlwdFN0YXRlKTsK
ICAgICByZXR1cm4ganNUb0luc3BlY3RvclZhbHVlKHNjcmlwdFN0YXRlLCBtX3ZhbHVlLmdldCgp
LCBJbnNwZWN0b3JWYWx1ZTo6bWF4RGVwdGgpOwogfQogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNU
T1IpCiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIERlcHJlY2F0ZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuaApzaW1pbGFyaXR5IGlu
ZGV4IDc2JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1
ZS5oCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUu
aAppbmRleCAwMTIxMGY1Li5kNWZhZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5n
cy9TY3JpcHRWYWx1ZS5oCkBAIC0xLDEwICsxLDExIEBACiAvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoYykgMjAw
OCwgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogCisgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCiAgKiBtZXQ6Ci0gKiAKKyAqCiAgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAogICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgogICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQpAQCAtMTQsNyArMTUsNyBAQAogICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwogICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KICAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKiAKKyAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiAgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAogICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCkBAIC0zMSwyNSArMzIsMjQgQEAKICNpZm5kZWYgU2NyaXB0VmFsdWVfaAogI2RlZmluZSBT
Y3JpcHRWYWx1ZV9oCiAKLSNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNs
dWRlICJTY3JpcHRTdGF0ZS5oIgotI2luY2x1ZGUgPGhlYXAvU3Ryb25nLmg+Ci0jaW5jbHVkZSA8
aGVhcC9TdHJvbmdJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+Ci0j
aW5jbHVkZSA8cnVudGltZS9PcGVyYXRpb25zLmg+CisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgor
I2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJTdHJvbmcuaCIKKyNpbmNsdWRlICJT
dHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotCituYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKIGNsYXNzIEluc3BlY3RvclZhbHVlOwotY2xhc3MgU2VyaWFsaXplZFNjcmlw
dFZhbHVlOworfQogCi1jbGFzcyBTY3JpcHRWYWx1ZSB7CituYW1lc3BhY2UgRGVwcmVjYXRlZCB7
CisKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFNjcmlwdFZhbHVlIHsKIHB1YmxpYzoKICAgICBT
Y3JpcHRWYWx1ZSgpIHsgfQotICAgIFNjcmlwdFZhbHVlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFs
dWUgdmFsdWUpIDogbV92YWx1ZSh2bSwgdmFsdWUpIHt9Ci0gICAgdmlydHVhbCB+U2NyaXB0VmFs
dWUoKSB7fQorICAgIFNjcmlwdFZhbHVlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFsdWUp
IDogbV92YWx1ZSh2bSwgdmFsdWUpIHsgfQorICAgIHZpcnR1YWwgflNjcmlwdFZhbHVlKCk7CiAK
ICAgICBKU0M6OkpTVmFsdWUganNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUuZ2V0KCk7
IH0KICAgICBib29sIGdldFN0cmluZyhKU0M6OkV4ZWNTdGF0ZSosIFN0cmluZyYgcmVzdWx0KSBj
b25zdDsKQEAgLTY1LDE4ICs2NSwxNCBAQCBwdWJsaWM6CiAKICAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgU2NyaXB0VmFsdWUmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IG90aGVy
Lm1fdmFsdWU7IH0KIAotICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJp
YWxpemUoSlNDOjpFeGVjU3RhdGUqLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcp
OwotICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemUoSlNDOjpF
eGVjU3RhdGUqLCBNZXNzYWdlUG9ydEFycmF5KiwgQXJyYXlCdWZmZXJBcnJheSosIGJvb2wmKTsK
LSAgICBzdGF0aWMgU2NyaXB0VmFsdWUgZGVzZXJpYWxpemUoSlNDOjpFeGVjU3RhdGUqLCBTZXJp
YWxpemVkU2NyaXB0VmFsdWUqLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcpOwot
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB0
b0luc3BlY3RvclZhbHVlKEpTQzo6RXhlY1N0YXRlKikgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiB0b0luc3BlY3RvclZhbHVlKEpTQzo6RXhlY1N0YXRl
KikgY29uc3Q7CiAjZW5kaWYKIAogcHJpdmF0ZToKICAgICBKU0M6OlN0cm9uZzxKU0M6OlVua25v
d24+IG1fdmFsdWU7CiB9OwogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFj
ZSBEZXByZWNhdGVkCiAKICNlbmRpZiAvLyBTY3JpcHRWYWx1ZV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaApzaW1pbGFyaXR5IGlu
ZGV4IDY4JQpjb3B5IGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50
UmVnaXN0cnkuaApjb3B5IHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQWdlbnRCYXNlLmgKaW5kZXggNGZkMDM1My4uMjBhZDcxZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNCwyOSArMjQsMzMgQEAKICAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotI2lmbmRlZiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5X2gKLSNkZWZpbmUgSW5zcGVj
dG9yQWdlbnRSZWdpc3RyeV9oCisjaWZuZGVmIEluc3BlY3RvckFnZW50QmFzZV9oCisjZGVmaW5l
IEluc3BlY3RvckFnZW50QmFzZV9oCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIK
LSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFt
ZXNwYWNlIEluc3BlY3RvciB7CiAKIGNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwor
Y2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogCi1jbGFzcyBJbnNwZWN0b3JBZ2VudFJl
Z2lzdHJ5IHsKK2NsYXNzIEluc3BlY3RvckFnZW50QmFzZSB7CiBwdWJsaWM6Ci0gICAgdm9pZCBh
cHBlbmQoUGFzc093blB0cjxJbnNwZWN0b3JCYXNlQWdlbnQ+KTsKKyAgICB2aXJ0dWFsIH5JbnNw
ZWN0b3JBZ2VudEJhc2UoKSB7IH0KIAotICAgIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
Kik7Ci0gICAgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpOwotICAgIHZvaWQg
ZGlzY2FyZEFnZW50cygpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5k
KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkQWdlbnQoKSB7IH0KIAotcHJpdmF0ZToK
LSAgICBWZWN0b3I8T3duUHRyPEluc3BlY3RvckJhc2VBZ2VudD4+IG1fYWdlbnRzOworcHJvdGVj
dGVkOgorICAgIEluc3BlY3RvckFnZW50QmFzZShjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgICAg
IDogbV9uYW1lKG5hbWUpCisgICAgeworICAgIH0KKworICAgIFN0cmluZyBtX25hbWU7CiB9Owor
ICAgIAorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckFnZW50UmVnaXN0cnlfaCkKKyNlbmRpZiAv
LyAhZGVmaW5lZChJbnNwZWN0b3JBZ2VudEJhc2VfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAKc2ltaWxhcml0eSBp
bmRleCA5NCUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFn
ZW50UmVnaXN0cnkuY3BwCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwCmluZGV4IDA5OWQxYTMuLjQ2ZTkyMDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVn
aXN0cnkuY3BwCkBAIC0yNSwxNCArMjUsMTMgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgi
Ci0KLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotCiAjaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnRSZWdp
c3RyeS5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAot
dm9pZCBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5OjphcHBlbmQoUGFzc093blB0cjxJbnNwZWN0b3JC
YXNlQWdlbnQ+IGFnZW50KQorbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK3ZvaWQgSW5zcGVjdG9y
QWdlbnRSZWdpc3RyeTo6YXBwZW5kKFBhc3NPd25QdHI8SW5zcGVjdG9yQWdlbnRCYXNlPiBhZ2Vu
dCkKIHsKICAgICBtX2FnZW50cy5hcHBlbmQoYWdlbnQpOwogfQpAQCAtNTUsNiArNTQsNiBAQCB2
b2lkIEluc3BlY3RvckFnZW50UmVnaXN0cnk6OmRpc2NhcmRBZ2VudHMoKQogICAgICAgICBtX2Fn
ZW50c1tpXS0+ZGlzY2FyZEFnZW50KCk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30g
Ly8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0
cnkuaApzaW1pbGFyaXR5IGluZGV4IDg3JQpjb3B5IGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaApjb3B5IHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oCmluZGV4IDRmZDAzNTMuLmNiNjU3
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJl
Z2lzdHJ5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JB
Z2VudFJlZ2lzdHJ5LmgKQEAgLTI3LDI2ICsyNywyNyBAQAogI2lmbmRlZiBJbnNwZWN0b3JBZ2Vu
dFJlZ2lzdHJ5X2gKICNkZWZpbmUgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeV9oCiAKLSNpbmNsdWRl
ICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudEJhc2UuaCIK
ICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAot
bmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIGNsYXNzIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOworY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwog
Ci1jbGFzcyBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5IHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRF
IEluc3BlY3RvckFnZW50UmVnaXN0cnkgewogcHVibGljOgotICAgIHZvaWQgYXBwZW5kKFBhc3NP
d25QdHI8SW5zcGVjdG9yQmFzZUFnZW50Pik7CisgICAgdm9pZCBhcHBlbmQoUGFzc093blB0cjxJ
bnNwZWN0b3JBZ2VudEJhc2U+KTsKIAogICAgIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
Kik7CiAgICAgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpOwogICAgIHZvaWQg
ZGlzY2FyZEFnZW50cygpOwogCiBwcml2YXRlOgotICAgIFZlY3RvcjxPd25QdHI8SW5zcGVjdG9y
QmFzZUFnZW50Pj4gbV9hZ2VudHM7CisgICAgVmVjdG9yPE93blB0cjxJbnNwZWN0b3JBZ2VudEJh
c2U+PiBtX2FnZW50czsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNw
YWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yQWdlbnRSZWdpc3Ry
eV9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9t
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAK
cmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIuY3BwCmluZGV4IGJmYTRjNGIuLmMyNjY4NTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ci5jcHAKQEAgLTI5LDEyICsyOSwxMiBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2lu
Y2x1ZGUgIkluc3BlY3RvckZvcndhcmRpbmcuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLW5hbWVz
cGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjpDYWxsYmFja0Jhc2UoUGFzc1JlZlB0cjxJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcj4gYmFja2VuZERpc3BhdGNoZXIsIGludCBpZCkKICAgICA6IG1f
YmFja2VuZERpc3BhdGNoZXIoYmFja2VuZERpc3BhdGNoZXIpCkBAIC0xODcsNyArMTg3LDcgQEAg
dm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6cmVwb3J0UHJvdG9jb2xFcnJvcihjb25z
dCBsb25nKiBjb25zdCBjYWxsSWQsIEMKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuVmFs
dWVUeXBlLCB0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIERlZmF1bHRWYWx1ZVR5cGU+Ci1S
ZXR1cm5WYWx1ZVR5cGUgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFByb3BlcnR5VmFs
dWUoSW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFs
dWVGb3VuZCwgSW5zcGVjdG9yQXJyYXkqIHByb3RvY29sRXJyb3JzLCBEZWZhdWx0VmFsdWVUeXBl
IGRlZmF1bHRWYWx1ZSwgYm9vbCAoKmFzTWV0aG9kKShJbnNwZWN0b3JWYWx1ZSosIFZhbHVlVHlw
ZSopLCBjb25zdCBjaGFyKiB0eXBlTmFtZSkKK3N0YXRpYyBSZXR1cm5WYWx1ZVR5cGUgZ2V0UHJv
cGVydHlWYWx1ZShJbnNwZWN0b3JPYmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBi
b29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0b3JBcnJheSogcHJvdG9jb2xFcnJvcnMsIERlZmF1bHRW
YWx1ZVR5cGUgZGVmYXVsdFZhbHVlLCBib29sICgqYXNNZXRob2QpKEluc3BlY3RvclZhbHVlKiwg
VmFsdWVUeXBlKiksIGNvbnN0IGNoYXIqIHR5cGVOYW1lKQogewogICAgIEFTU0VSVChwcm90b2Nv
bEVycm9ycyk7CiAKQEAgLTI1OSw2ICsyNTksNiBAQCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5
PiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0QXJyYXkoSW5zcGVjdG9yT2JqZWN0Kgog
ICAgIHJldHVybiBnZXRQcm9wZXJ0eVZhbHVlPFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+LCBS
ZWZQdHI8SW5zcGVjdG9yQXJyYXk+LCBJbnNwZWN0b3JBcnJheSo+KG9iamVjdCwgbmFtZSwgdmFs
dWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMsIG51bGxwdHIsIEFzTWV0aG9kQnJpZGdlczo6YXNBcnJh
eSwgIkFycmF5Iik7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNl
IEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5o
CnNpbWlsYXJpdHkgaW5kZXggODclCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgKaW5kZXggYTZlNGQy
Zi4uNTBmZTYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oCkBAIC0yNywxMiArMjcsMTIgQEAKICNpZm5k
ZWYgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJfaAogI2RlZmluZSBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcl9oCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgorI2luY2x1
ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIGNsYXNzIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
OwpAQCAtNDcsMTUgKzQ3LDEzIEBAIHByb3RlY3RlZDoKICAgICBSZWZQdHI8SW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiB9OwogCi1jbGFzcyBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyPiB7CitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlciA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI+IGNyZWF0ZShJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKTsKLSAgICB2aXJ0dWFsIH5JbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQogCi0gICAgY2xhc3MgQ2FsbGJhY2tCYXNlOiBw
dWJsaWMgUmVmQ291bnRlZDxDYWxsYmFja0Jhc2U+IHsKKyAgICBjbGFzcyBDYWxsYmFja0Jhc2Ug
OiBwdWJsaWMgUmVmQ291bnRlZDxDYWxsYmFja0Jhc2U+IHsKICAgICBwdWJsaWM6CiAgICAgICAg
IENhbGxiYWNrQmFzZShQYXNzUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiwgaW50
IGlkKTsKLSAgICAgICAgdmlydHVhbCB+Q2FsbGJhY2tCYXNlKCkgeyB9CiAKICAgICAgICAgYm9v
bCBpc0FjdGl2ZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNlbmRGYWlsdXJlKGNvbnN0IEVycm9y
U3RyaW5nJik7CkBAIC05OCwxMyArOTYsMTAgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCkgOiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbChpbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwpIHsgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuVmFsdWVU
eXBlLCB0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIERlZmF1bHRWYWx1ZVR5cGU+Ci0gICAg
c3RhdGljIFJldHVyblZhbHVlVHlwZSBnZXRQcm9wZXJ0eVZhbHVlKEluc3BlY3Rvck9iamVjdCog
b2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3RvckFy
cmF5KiBwcm90b2NvbEVycm9ycywgRGVmYXVsdFZhbHVlVHlwZSBkZWZhdWx0VmFsdWUsIGJvb2wg
KCphc01ldGhvZCkoSW5zcGVjdG9yVmFsdWUqLCBWYWx1ZVR5cGUqKSwgY29uc3QgY2hhciogdHlw
ZU5hbWUpOwotCiAgICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250
ZW5kQ2hhbm5lbDsKICAgICBIYXNoTWFwPFN0cmluZywgSW5zcGVjdG9yU3VwcGxlbWVudGFsQmFj
a2VuZERpc3BhdGNoZXIqPiBtX2Rpc3BhdGNoZXJzOwogfTsKIAotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyAhZGVmaW5lZChJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcl9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUeXBlQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUeXBlQnVpbGRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjhlYTc2ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclR5cGVCdWlsZGVyLmgKQEAgLTAsMCArMSwzMzcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEluc3BlY3RvclR5cGVCdWlsZGVyX2gKKyNkZWZpbmUgSW5zcGVjdG9yVHlwZUJ1
aWxkZXJfaAorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgIkluc3BlY3RvclZh
bHVlcy5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK25hbWVzcGFjZSBUeXBlQnVpbGRl
ciB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBPcHRPdXRwdXQgeworcHVibGljOgor
ICAgIE9wdE91dHB1dCgpIDogbV9hc3NpZ25lZChmYWxzZSkgeyB9CisKKyAgICB2b2lkIG9wZXJh
dG9yPShUIHZhbHVlKQorICAgIHsKKyAgICAgICAgbV92YWx1ZSA9IHZhbHVlOworICAgICAgICBt
X2Fzc2lnbmVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICBib29sIGlzQXNzaWduZWQoKSBjb25zdCB7
IHJldHVybiBtX2Fzc2lnbmVkOyB9CisKKyAgICBUIGdldFZhbHVlKCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChpc0Fzc2lnbmVkKCkpOworICAgICAgICByZXR1cm4gbV92YWx1ZTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgVCBtX3ZhbHVlOworICAgIGJvb2wgbV9hc3NpZ25lZDsKKworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKE9wdE91dHB1dCk7Cit9OworCisKKy8vIEEgc21hbGwgdHJhbnNp
ZW50IHdyYXBwZXIgYXJvdW5kIGludCB0eXBlLCB0aGF0IGNhbiBiZSB1c2VkIGFzIGEgZnVuY2l0
b24gcGFyYW1ldGVyIHR5cGUKKy8vIGNsZXZlcmx5IGRpc2FsbG93aW5nIEMrKyBpbXBsaWNpdCBj
YXN0cyBmcm9tIGZsb2F0IG9yIGRvdWJsZS4KK2NsYXNzIEV4YWN0bHlJbnQgeworcHVibGljOgor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgRXhhY3RseUludChUIHQpIDogbV92YWx1ZShj
YXN0X3RvX2ludDxUPih0KSkgeyB9CisgICAgRXhhY3RseUludCgpIHsgfQorCisgICAgb3BlcmF0
b3IgaW50KCkgeyByZXR1cm4gbV92YWx1ZTsgfQorCitwcml2YXRlOgorICAgIGludCBtX3ZhbHVl
OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBzdGF0aWMgaW50IGNhc3RfdG9faW50
KFQpIHsgcmV0dXJuIFQ6OmRlZmF1bHRfY2FzZV9jYXN0X2lzX25vdF9zdXBwb3J0ZWQoKTsgfQor
fTsKKwordGVtcGxhdGU8PgoraW5saW5lIGludCBFeGFjdGx5SW50OjpjYXN0X3RvX2ludDxpbnQ+
KGludCBpKSB7IHJldHVybiBpOyB9CisKK3RlbXBsYXRlPD4KK2lubGluZSBpbnQgRXhhY3RseUlu
dDo6Y2FzdF90b19pbnQ8dW5zaWduZWQgaW50Pih1bnNpZ25lZCBpbnQgaSkgeyByZXR1cm4gaTsg
fQorCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorY2xhc3MgUnVudGltZUNhc3RIZWxwZXIgeworcHVi
bGljOgorICAgIHRlbXBsYXRlPEluc3BlY3RvclZhbHVlOjpUeXBlIFRZUEU+CisgICAgc3RhdGlj
IHZvaWQgYXNzZXJ0VHlwZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCisgICAgeworICAgICAgICBB
U1NFUlQodmFsdWUtPnR5cGUoKSA9PSBUWVBFKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBh
c3NlcnRBbnkoSW5zcGVjdG9yVmFsdWUqKQorICAgIHsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9p
ZCBhc3NlcnRJbnQoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgZG91Ymxl
IHY7CisgICAgICAgIGJvb2wgY2FzdFJlcyA9IHZhbHVlLT5hc051bWJlcigmdik7CisgICAgICAg
IEFTU0VSVF9VTlVTRUQoY2FzdFJlcywgY2FzdFJlcyk7CisgICAgICAgIEFTU0VSVChzdGF0aWNf
Y2FzdDxkb3VibGU+KHN0YXRpY19jYXN0PGludD4odikpID09IHYpOworICAgIH0KK307CisjZW5k
aWYKKworCisvLyBUaGlzIGNsYXNzIHByb3ZpZGVzICJUcmFpdHMiIHR5cGUgZm9yIHRoZSBpbnB1
dCB0eXBlIFQuIEl0IGlzIHByb2dyYW1tZWQgdXNpbmcgQysrIHRlbXBsYXRlIHNwZWNpYWxpemF0
aW9uCisvLyB0ZWNobmlxdWUuIEJ5IGRlZmF1bHQgaXQgc2ltcGx5IHRha2VzICJJdGVtVHJhaXRz
IiB0eXBlIGZyb20gVCwgYnV0IGl0IGRvZXNuJ3Qgd29yayB3aXRoIHRoZSBiYXNlIHR5cGVzLgor
dGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBBcnJheUl0ZW1IZWxwZXIgeworICAgIHR5cGVk
ZWYgdHlwZW5hbWUgVDo6SXRlbVRyYWl0cyBUcmFpdHM7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgorY2xhc3MgQXJyYXkgOiBwdWJsaWMgSW5zcGVjdG9yQXJyYXlCYXNlIHsKK3ByaXZhdGU6
CisgICAgQXJyYXkoKSB7IH0KKworICAgIEluc3BlY3RvckFycmF5KiBvcGVuQWNjZXNzb3JzKCkK
KyAgICB7CisgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihJbnNwZWN0b3JBcnJheSkgPT0g
c2l6ZW9mKEFycmF5PFQ+KSwgY2Fubm90X2Nhc3QpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SW5zcGVjdG9yQXJyYXkqPihzdGF0aWNfY2FzdDxJbnNwZWN0b3JBcnJheUJhc2UqPih0aGlz
KSk7CisgICAgfQorCitwdWJsaWM6CisgICAgdm9pZCBhZGRJdGVtKFBhc3NSZWZQdHI8VD4gdmFs
dWUpCisgICAgeworICAgICAgICBBcnJheUl0ZW1IZWxwZXI8VD46OlRyYWl0czo6cHVzaFJlZlB0
cih0aGlzLT5vcGVuQWNjZXNzb3JzKCksIHZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZEl0
ZW0oVCB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFycmF5SXRlbUhlbHBlcjxUPjo6VHJhaXRzOjpw
dXNoUmF3KHRoaXMtPm9wZW5BY2Nlc3NvcnMoKSwgdmFsdWUpOworICAgIH0KKworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEFycmF5PFQ+PiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBBcnJheTxUPigpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxB
cnJheTxUPj4gcnVudGltZUNhc3QoUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpCisg
ICAgeworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFycmF5OworICAgICAgICBib29s
IGNhc3RSZXMgPSB2YWx1ZS0+YXNBcnJheSgmYXJyYXkpOworICAgICAgICBBU1NFUlRfVU5VU0VE
KGNhc3RSZXMsIGNhc3RSZXMpOworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgYXNzZXJ0
Q29ycmVjdFZhbHVlKGFycmF5LmdldCgpKTsKKyNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECisg
ICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihBcnJheTxUPikgPT0gc2l6ZW9mKEluc3BlY3Rv
ckFycmF5KSwgdHlwZV9jYXN0X3Byb2JsZW0pOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
QXJyYXk8VD4qPihzdGF0aWNfY2FzdDxJbnNwZWN0b3JBcnJheUJhc2UqPihhcnJheS5nZXQoKSkp
OworICAgIH0KKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBzdGF0aWMgdm9pZCBhc3NlcnRD
b3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgUmVmUHRy
PEluc3BlY3RvckFycmF5PiBhcnJheTsKKyAgICAgICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFz
QXJyYXkoJmFycmF5KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChjYXN0UmVzLCBjYXN0UmVzKTsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFycmF5LT5sZW5ndGgoKTsgaSsrKQor
ICAgICAgICAgICAgQXJyYXlJdGVtSGVscGVyPFQ+OjpUcmFpdHM6OnRlbXBsYXRlIGFzc2VydENv
cnJlY3RWYWx1ZTxUPihhcnJheS0+Z2V0KGkpLmdldCgpKTsKKyAgICB9CisjZW5kaWYgLy8gIUFT
U0VSVF9ESVNBQkxFRAorfTsKKworc3RydWN0IFN0cnVjdEl0ZW1UcmFpdHMgeworICAgIHN0YXRp
YyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiB2YWx1ZSkKKyAgICB7CisgICAgICAgIGFycmF5LT5wdXNoVmFsdWUodmFsdWUp
OworICAgIH0KKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgorICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFs
dWUpCisgICAgeworICAgICAgICBUOjphc3NlcnRDb3JyZWN0VmFsdWUodmFsdWUpOworICAgIH0K
KyNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgQXJy
YXlJdGVtSGVscGVyPFN0cmluZz4geworICAgIHN0cnVjdCBUcmFpdHMgeworICAgICAgICBzdGF0
aWMgdm9pZCBwdXNoUmF3KEluc3BlY3RvckFycmF5KiBhcnJheSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSkKKyAgICAgICAgeworICAgICAgICAgICAgYXJyYXktPnB1c2hTdHJpbmcodmFsdWUpOworICAg
ICAgICB9CisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CisgICAgICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1
ZSogdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3Nl
cnRUeXBlPEluc3BlY3RvclZhbHVlOjpUeXBlU3RyaW5nPih2YWx1ZSk7CisgICAgICAgIH0KKyNl
bmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECisgICAgfTsKK307CisKK3RlbXBsYXRlPD4KK3N0cnVj
dCBBcnJheUl0ZW1IZWxwZXI8aW50PiB7CisgICAgc3RydWN0IFRyYWl0cyB7CisgICAgICAgIHN0
YXRpYyB2b2lkIHB1c2hSYXcoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBpbnQgdmFsdWUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGFycmF5LT5wdXNoSW50KHZhbHVlKTsKKyAgICAgICAgfQorCisj
aWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgICAg
ICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQor
ICAgICAgICB7CisgICAgICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0SW50KHZhbHVl
KTsKKyAgICAgICAgfQorI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKKyAgICB9OworfTsKKwor
dGVtcGxhdGU8Pgorc3RydWN0IEFycmF5SXRlbUhlbHBlcjxkb3VibGU+IHsKKyAgICBzdHJ1Y3Qg
VHJhaXRzIHsKKyAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJhdyhJbnNwZWN0b3JBcnJheSogYXJy
YXksIGRvdWJsZSB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgYXJyYXktPnB1c2hOdW1i
ZXIodmFsdWUpOworICAgICAgICB9CisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1
ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIFJ1bnRpbWVD
YXN0SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3RvclZhbHVlOjpUeXBlTnVtYmVyPih2YWx1ZSk7
CisgICAgICAgIH0KKyNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECisgICAgfTsKK307CisKK3Rl
bXBsYXRlPD4KK3N0cnVjdCBBcnJheUl0ZW1IZWxwZXI8Ym9vbD4geworICAgIHN0cnVjdCBUcmFp
dHMgeworICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmF3KEluc3BlY3RvckFycmF5KiBhcnJheSwg
Ym9vbCB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgYXJyYXktPnB1c2hCb29sZWFuKHZh
bHVlKTsKKyAgICAgICAgfQorCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorICAgICAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5z
cGVjdG9yVmFsdWUqIHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBSdW50aW1lQ2FzdEhl
bHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZUJvb2xlYW4+KHZhbHVlKTsKKyAg
ICAgICAgfQorI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKKyAgICB9OworfTsKKwordGVtcGxh
dGU8Pgorc3RydWN0IEFycmF5SXRlbUhlbHBlcjxJbnNwZWN0b3JWYWx1ZT4geworICAgIHN0cnVj
dCBUcmFpdHMgeworICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmVmUHRyKEluc3BlY3RvckFycmF5
KiBhcnJheSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGFycmF5LT5wdXNoVmFsdWUodmFsdWUpOworICAgICAgICB9CisKKyNpZiAhQVNT
RVJUX0RJU0FCTEVECisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgICAgIHN0YXRp
YyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRBbnkodmFsdWUpOworICAg
ICAgICB9CisjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAorICAgIH07Cit9OworCit0ZW1wbGF0
ZTw+CitzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPEluc3BlY3Rvck9iamVjdD4geworICAgIHN0cnVj
dCBUcmFpdHMgeworICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmVmUHRyKEluc3BlY3RvckFycmF5
KiBhcnJheSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGFycmF5LT5wdXNoVmFsdWUodmFsdWUpOworICAgICAgICB9CisKKyNpZiAhQVNT
RVJUX0RJU0FCTEVECisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgICAgIHN0YXRp
YyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3RvclZh
bHVlOjpUeXBlT2JqZWN0Pih2YWx1ZSk7CisgICAgICAgIH0KKyNlbmRpZiAvLyAhQVNTRVJUX0RJ
U0FCTEVECisgICAgfTsKK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBBcnJheUl0ZW1IZWxwZXI8
SW5zcGVjdG9yQXJyYXk+IHsKKyAgICBzdHJ1Y3QgVHJhaXRzIHsKKyAgICAgICAgc3RhdGljIHZv
aWQgcHVzaFJlZlB0cihJbnNwZWN0b3JBcnJheSogYXJyYXksIFBhc3NSZWZQdHI8SW5zcGVjdG9y
QXJyYXk+IHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBhcnJheS0+cHVzaEFycmF5KHZh
bHVlKTsKKyAgICAgICAgfQorCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorICAgICAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5z
cGVjdG9yVmFsdWUqIHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBSdW50aW1lQ2FzdEhl
bHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZUFycmF5Pih2YWx1ZSk7CisgICAg
ICAgIH0KKyNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECisgICAgfTsKK307CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPFR5cGVCdWlsZGVyOjpBcnJheTxU
Pj4geworICAgIHN0cnVjdCBUcmFpdHMgeworICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmVmUHRy
KEluc3BlY3RvckFycmF5KiBhcnJheSwgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VD4+
IHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBhcnJheS0+cHVzaFZhbHVlKHZhbHVlKTsK
KyAgICAgICAgfQorCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBTPgorICAgICAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9y
VmFsdWUqIHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBTOjphc3NlcnRDb3JyZWN0VmFs
dWUodmFsdWUpOworICAgICAgICB9CisjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAorICAgIH07
Cit9OworCit9IC8vIG5hbWVzcGFjZSBUeXBlQnVpbGRlcgorCit9IC8vIG5hbWVzcGFjZSBJbnNw
ZWN0b3IKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCisKKyNlbmRpZiAvLyAhZGVmaW5l
ZChJbnNwZWN0b3JUeXBlQnVpbGRlcl9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclZhbHVlcy5jcHAKc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20g
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKcmVuYW1lIHRvIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcAppbmRleCA4
ZmNlMzJkLi4yNDE5ZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yVmFsdWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclZhbHVlcy5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlIDx3dGYvZHRvYS5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAotbmFtZXNwYWNlIFdlYkNv
cmUgeworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIG5hbWVzcGFjZSB7CiAKQEAgLTgzMyw0ICs4
MzMsNCBAQCBQYXNzUmVmUHRyPEluc3BlY3RvckJhc2ljVmFsdWU+IEluc3BlY3RvckJhc2ljVmFs
dWU6OmNyZWF0ZShkb3VibGUgdmFsdWUpCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbnNwZWN0
b3JCYXNpY1ZhbHVlKHZhbHVlKSk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8g
bmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclZhbHVlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JWYWx1ZXMuaApzaW1pbGFyaXR5IGluZGV4IDk1JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKaW5kZXggY2JiN2Y3MS4uMDEyYTFh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgK
QEAgLTM4LDEyICszOCwxMiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFt
ZXNwYWNlIEluc3BlY3RvciB7CiAKIGNsYXNzIEluc3BlY3RvckFycmF5OwogY2xhc3MgSW5zcGVj
dG9yT2JqZWN0OwogCi1jbGFzcyBJbnNwZWN0b3JWYWx1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPElu
c3BlY3RvclZhbHVlPiB7CitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JWYWx1ZSA6
IHB1YmxpYyBSZWZDb3VudGVkPEluc3BlY3RvclZhbHVlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IGNvbnN0IGludCBtYXhEZXB0aCA9IDEwMDA7CiAKQEAgLTkwLDcgKzkwLDcgQEAgcHJpdmF0ZToK
ICAgICBUeXBlIG1fdHlwZTsKIH07CiAKLWNsYXNzIEluc3BlY3RvckJhc2ljVmFsdWUgOiBwdWJs
aWMgSW5zcGVjdG9yVmFsdWUgeworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yQmFz
aWNWYWx1ZSA6IHB1YmxpYyBJbnNwZWN0b3JWYWx1ZSB7CiBwdWJsaWM6CiAKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJbnNwZWN0b3JCYXNpY1ZhbHVlPiBjcmVhdGUoYm9vbCk7CkBAIC0xMTcsNyAr
MTE3LDcgQEAgcHJpdmF0ZToKICAgICB9OwogfTsKIAotY2xhc3MgSW5zcGVjdG9yU3RyaW5nIDog
cHVibGljIEluc3BlY3RvclZhbHVlIHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3Rv
clN0cmluZyA6IHB1YmxpYyBJbnNwZWN0b3JWYWx1ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8SW5zcGVjdG9yU3RyaW5nPiBjcmVhdGUoY29uc3QgU3RyaW5nJik7CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yU3RyaW5nPiBjcmVhdGUoY29uc3QgY2hhciopOwpAQCAt
MTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3RyaW5nVmFsdWU7CiB9Owog
Ci1jbGFzcyBJbnNwZWN0b3JPYmplY3RCYXNlIDogcHVibGljIEluc3BlY3RvclZhbHVlIHsKK2Ns
YXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3Rvck9iamVjdEJhc2UgOiBwdWJsaWMgSW5zcGVj
dG9yVmFsdWUgewogcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+PiBEaWN0aW9uYXJ5OwogCkBAIC0xOTIsNyArMTkyLDcgQEAgcHJpdmF0
ZToKIAogY2xhc3MgSW5zcGVjdG9yT2JqZWN0IDogcHVibGljIEluc3BlY3Rvck9iamVjdEJhc2Ug
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRl
KCk7CisgICAgc3RhdGljIEpTX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBjcmVhdGUoKTsKIAogICAgIHVzaW5nIEluc3BlY3Rvck9iamVjdEJhc2U6OmFzT2JqZWN0
OwogCkBAIC0yMjAsNyArMjIwLDcgQEAgcHVibGljOgogfTsKIAogCi1jbGFzcyBJbnNwZWN0b3JB
cnJheUJhc2UgOiBwdWJsaWMgSW5zcGVjdG9yVmFsdWUgeworY2xhc3MgSlNfRVhQT1JUX1BSSVZB
VEUgSW5zcGVjdG9yQXJyYXlCYXNlIDogcHVibGljIEluc3BlY3RvclZhbHVlIHsKIHB1YmxpYzoK
ICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8SW5zcGVjdG9yVmFsdWU+Pjo6aXRlcmF0b3IgaXRl
cmF0b3I7CiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEluc3BlY3RvclZhbHVlPj46OmNvbnN0
X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwpAQCAtMjYwLDcgKzI2MCw3IEBAIHByaXZhdGU6CiAK
IGNsYXNzIEluc3BlY3RvckFycmF5IDogcHVibGljIEluc3BlY3RvckFycmF5QmFzZSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGNyZWF0ZSgpOworICAg
IHN0YXRpYyBKU19FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBjcmVh
dGUoKTsKIAogICAgIHVzaW5nIEluc3BlY3RvckFycmF5QmFzZTo6YXNBcnJheTsKIApAQCAtMzYz
LDYgKzM2Myw2IEBAIGlubGluZSB2b2lkIEluc3BlY3RvckFycmF5QmFzZTo6cHVzaEFycmF5KFBh
c3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHZhbHVlKQogICAgIG1fZGF0YS5hcHBlbmQodmFsdWUp
OwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IK
IAogI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvclZhbHVlc19oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCBjZmEzNDJkLi5iZTlmNmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTU3Niw5
ICsxNTc2LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGluc3BlY3Rvci9JbmplY3RlZFNj
cmlwdE1hbmFnZXIuY3BwCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcAog
ICAgIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKLSAgICBpbnNwZWN0b3IvSW5zcGVjdG9y
QWdlbnRSZWdpc3RyeS5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNo
ZUFnZW50LmNwcAotICAgIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAK
ICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCiAgICAgaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhc0FnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuY3BwCkBA
IC0xNjA5LDcgKzE2MDcsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaW5zcGVjdG9yL0lu
c3BlY3RvclN0eWxlU2hlZXQuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlVGV4dEVk
aXRvci5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKLSAgICBp
bnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JXb3Jr
ZXJBZ2VudC5jcHAKICAgICBpbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5jcHAKICAgICBp
bnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC0zMDQ3LDEyICszMDQ0LDEyIEBA
IGFkZF9jdXN0b21fY29tbWFuZCgKIAogIyBBbGwgV2ViIEluc3BlY3RvciBnZW5lcmF0ZWQgZmls
ZXMgYXJlIGNyZWF0ZWQgd2l0aCB0aGlzIG9uZSBjYWxsIHRvIENvZGVHZW5lcmF0b3JJbnNwZWN0
b3IucG0KIGFkZF9jdXN0b21fY29tbWFuZCgKLSAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNf
V0VCQ09SRV9ESVJ9L0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5jcHAgJHtERVJJVkVEX1NP
VVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oICR7REVSSVZF
RF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3JGcm9udGVuZC5jcHAgJHtERVJJVkVEX1NP
VVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3RvckZyb250ZW5kLmggJHtERVJJVkVEX1NPVVJDRVNf
V0VCQ09SRV9ESVJ9L0luc3BlY3RvclR5cGVCdWlsZGVyLmNwcCAke0RFUklWRURfU09VUkNFU19X
RUJDT1JFX0RJUn0vSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaAorICAgIE9VVFBVVCAke0RFUklWRURf
U09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmNwcCAke0RF
UklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgg
JHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3RvckZyb250ZW5kLmNwcCAke0RF
UklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yRnJvbnRlbmQuaCAke0RFUklWRURf
U09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmNwcCAke0RFUklW
RURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmgKICAgICBN
QUlOX0RFUEVOREVOQ1kgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3Rvci5q
c29uCiAgICAgREVQRU5EUyAke1dFQkNPUkVfRElSfS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvcklu
c3BlY3Rvci5weSAke1dFQkNPUkVfRElSfS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rv
clN0cmluZ3MucHkKICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7V0VCQ09SRV9E
SVJ9L2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5ICR7REVSSVZFRF9TT1VSQ0VT
X1dFQkNPUkVfRElSfS9JbnNwZWN0b3IuanNvbiAtLW91dHB1dF9oX2RpciAiJHtERVJJVkVEX1NP
VVJDRVNfV0VCQ09SRV9ESVJ9IiAtLW91dHB1dF9jcHBfZGlyICIke0RFUklWRURfU09VUkNFU19X
RUJDT1JFX0RJUn0iIC0tb3V0cHV0X2pzX2RpciAiJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9E
SVJ9IiAtLXdyaXRlX2Fsd2F5cwogICAgIFZFUkJBVElNKQotbGlzdChBUFBFTkQgV2ViQ29yZV9T
T1VSQ0VTICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcnMuY3BwICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3JGcm9u
dGVuZC5jcHAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3RvclR5cGVCdWls
ZGVyLmNwcCkKK2xpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUyAke0RFUklWRURfU09VUkNFU19X
RUJDT1JFX0RJUn0vSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmNwcCAke0RFUklWRURfU09V
UkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yRnJvbnRlbmQuY3BwICR7REVSSVZFRF9TT1VSQ0VT
X1dFQkNPUkVfRElSfS9JbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuY3BwKQogCiAKICMgR2VuZXJh
dGUgSW5zcGVjdG9yT3ZlcmxheVBhZ2UuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDJjODgyNWUuLmE2NjcyOGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MzAgQEAKKzIwMTMtMTItMDUgIEpvc2VwaCBQZWNvcmFy
byAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1v
cmUgSW5zcGVjdG9yIFJlcXVpcmVkIENsYXNzZXMgRG93biBpbnRvIEphdmFTY3JpcHRDb3JlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXJ0IDQ6IEV4
dHJhY3QgSW5zcGVjdG9yVHlwZUJ1aWxkZXIgaGVscGVyIGZ1bmN0aW9ucworCisgICAgICAgICAg
LSBUaGVyZSBpcyBhIGNodW5rIG9mIEluc3BlY3RvclR5cGVCdWlsZGVyIHRoYXQgbmV2ZXIgY2hh
bmdlcy4gRXh0cmFjdCBpdCBpbnRvCisgICAgICAgICAgICBpdHMgb3duIGZpbGUsIEluc3BlY3Rv
clR5cGVCdWlsZGVyLmggaW4gSlNDL2luc3BlY3RvciwgSW5zcGVjdG9yIG5hbWVzcGFjZS4KKyAg
ICAgICAgICAtIFRoaXMgbW92ZXMgVHlwZUJ1aWxkZXIgZnJvbSBuYW1lc3BhY2UgV2ViQ29yZSB0
byBuYW1lc3BhY2UgSW5zcGVjdG9yCisgICAgICAgICAgLSBSZW5hbWUgdGhlIFdlYkNvcmUgZ2Vu
ZXJhdGVkIEluc3BlY3RvclR5cGVCdWlsZGVyIHRvIEluc3BlY3RvcldlYlR5cGVCdWlsZGVycywK
KyAgICAgICAgICAgIGV2ZW50dWFsbHkgdGhlIENvZGVHZW5lcmF0b3Igc2NyaXB0IHdpbGwgZG8g
dGhpcyBmb3IgbW9yZSB0aGVuIFR5cGVCdWlsZGVycworICAgICAgICAgICAgYW5kIHRoZXJlIHdp
bGwgYmUgIkpTIiBUeXBlQnVpbGRlcnMgYW5kICJXZWIiIFR5cGVCdWlsZGVycyBmaWxlcy4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2lu
c3BlY3Rvci9JbnNwZWN0b3JUeXBlQnVpbGRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dl
YkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9yKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdFByb2ZpbGU6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9ySGVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRQcm9maWxlOjpidWlsZEluc3BlY3Rvck9iamVjdEZvckJvdHRvbVVw
SGVhZCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5oOgorICAgICAgICAq
IGluc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5OgorICAgICAgICAoQ29tbWFuZFJl
dHVyblBhc3NNb2RlbC5PcHRPdXRwdXQuZ2V0X3JldHVybl92YXJfdHlwZSk6CisgICAgICAgIChD
b21tYW5kUmV0dXJuUGFzc01vZGVsLk9wdE91dHB1dC5nZXRfb3V0cHV0X3BhcmFtZXRlcl90eXBl
KToKKyAgICAgICAgKFR5cGVNb2RlbC5FeGFjdGx5SW50LmdldF9pbnB1dF9wYXJhbV90eXBlX3Rl
eHQpOgorICAgICAgICAoVHlwZU1vZGVsLkV4YWN0bHlJbnQuZ2V0X29wdF9vdXRwdXRfdHlwZV8p
OgorICAgICAgICAoVHlwZUJpbmRpbmdzLmNyZWF0ZV9uYW1lZF90eXBlX2RlY2xhcmF0aW9uLkhl
bHBlcik6CisgICAgICAgIChUeXBlQmluZGluZ3MuY3JlYXRlX3R5cGVfZGVjbGFyYXRpb25fLkVu
dW1CaW5kaW5nLmdldF9zZXR0ZXJfdmFsdWVfZXhwcmVzc2lvbl9wYXR0ZXJuKToKKyAgICAgICAg
KEluc3BlY3Rvcik6CisgICAgICAgIChBcnJheUJpbmRpbmcuZ2V0X2FycmF5X2l0ZW1fY190eXBl
X3RleHQpOgorICAgICAgICAqIGluc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5n
cy5weToKKyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kX2gpOgorICAgICAgICAoSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXJzX2gpOgorICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2Fn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjptZXNzYWdlU291cmNlVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6bWVzc2FnZVR5cGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjptZXNzYWdlTGV2
ZWxWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVu
ZCk6CisgICAgICAgICogaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50U2VhcmNoVXRpbHM6OmJ1aWxkT2JqZWN0Rm9yU2VhcmNoTWF0Y2gp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlYXJjaFV0aWxzOjpzZWFyY2hJblRleHRCeUxp
bmVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluamVj
dGVkU2NyaXB0OjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6
Y2FsbEZ1bmN0aW9uT24pOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmV2YWx1
YXRlT25DYWxsRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBP
YmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBUYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6d3JhcE5vZGUpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNj
cmlwdEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtl
RXZhbENhbGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuY3BwOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0
ZWRTY3JpcHRIb3N0OjppbnNwZWN0SW1wbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50OjppbnNwZWN0KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0RnJhbWVzV2l0aE1hbmlmZXN0cyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmdldEFw
cGxpY2F0aW9uQ2FjaGVGb3JGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmJ1aWxkQXJyYXlG
b3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6YnVpbGRPYmplY3RGb3JBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2VsZWN0b3JQcm9maWxlOjp0b0luc3BlY3Rvck9iamVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldElubGluZVN0eWxlc0Zvck5v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldENvbXB1dGVkU3R5
bGVGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRBbGxT
dHlsZVNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3R5
bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVU
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzZXRQcm9wZXJ0eVRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnRvZ2dsZVByb3BlcnR5
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmFkZFJ1bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN1cHBvcnRlZENTU1Byb3BlcnRpZXMp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE5hbWVkRmxvd0NvbGxl
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnN0b3BTZWxlY3Rv
clByb2ZpbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzdG9wU2Vs
ZWN0b3JQcm9maWxlckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6
OmFzSW5zcGVjdG9yU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NB
Z2VudDo6Y29sbGVjdFN0eWxlU2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNT
U0FnZW50Ojp2aWFJbnNwZWN0b3JTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNTU0FnZW50OjpkZXRlY3RPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvclJ1bGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNTdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvclJl
Z2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0
Rm9yTmFtZWRGbG93KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2Vu
dDo6Z2V0RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnB1
c2hDaGlsZE5vZGVzVG9Gcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01B
Z2VudDo6cXVlcnlTZWxlY3RvckFsbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01B
Z2VudDo6cHVzaE5vZGVQYXRoVG9Gcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01BZ2VudDo6Z2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTUFnZW50OjpnZXRTZWFyY2hSZXN1bHRzKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTUFnZW50OjpyZXNvbHZlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6Z2V0QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yRWxlbWVudEF0dHJpYnV0ZXMpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJl
bik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JF
dmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRD
b21taXRMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRJbnNl
cnRET01Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzdHlsZUF0
dHJpYnV0ZUludmFsaWRhdGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkZXNjcmlwdGlv
bkZvckRPTUV2ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6Z2V0
RE9NU3RvcmFnZUl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudDo6c3RvcmFnZUlkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudDo6ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
RGF0YWJhc2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZUFn
ZW50OjpnZXREYXRhYmFzZVRhYmxlTmFtZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JEYXRhYmFzZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNl
UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJj
ZTo6YmluZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6YnJlYWtwb2ludEFjdGlvblR5cGVGb3JTdHJpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludEJ5VXJs
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9p
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzb2x2ZUJy
ZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2Vh
cmNoSW5Db250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OnNldFNjcmlwdFNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpnZXRGdW5jdGlvbkRldGFpbHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6ZXZhbHVhdGVPbkNhbGxGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50Ojpjb21waWxlU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJ1blNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpjdXJyZW50Q2FsbEZyYW1lcyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXJzZVNvdXJjZSk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SGVhcFByb2ZpbGVyQWdlbnQ6OmNyZWF0ZVNuYXBzaG90SGVhZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpnZXRQcm9maWxlSGVhZGVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6Z2V0T2JqZWN0QnlIZWFw
T2JqZWN0SWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2Vu
dC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50OjpsYXllcnNGb3JOb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50OjpnYXRoZXJMYXllcnNVc2luZ1Jl
bmRlck9iamVjdEhpZXJhcmNoeSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRy
ZWVBZ2VudDo6Z2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJMYXllckhpZXJhcmNoeSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6YnVpbGRPYmplY3RGb3JMYXllcik6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6YnVpbGRPYmplY3RG
b3JJbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50Ojpy
ZWFzb25zRm9yQ29tcG9zaXRpbmdMYXllcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckxheWVyVHJlZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFn
ZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VUeXBlSnNvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmNhY2hlZFJlc291cmNlVHlwZUpz
b24pOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JDb29raWUpOgorICAgICAgICAo
V2ViQ29yZTo6YnVpbGRBcnJheUZvckNvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yUGFnZUFnZW50OjpnZXRDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBh
Z2VBZ2VudDo6Z2V0UmVzb3VyY2VUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBh
Z2VBZ2VudDo6c2VhcmNoSW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVj
dEZvclNlYXJjaFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6
OnNlYXJjaEluUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2Vu
dDo6YnVpbGRPYmplY3RGb3JGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdl
QWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVy
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Y3Jl
YXRlUHJvZmlsZUhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFn
ZW50OjpjcmVhdGVTbmFwc2hvdEhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQ
cm9maWxlckFnZW50OjpnZXRQcm9maWxlSGVhZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JQcm9maWxlckFnZW50OjpnZXRDUFVQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldE9iamVjdEJ5SGVhcE9iamVjdElkKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2Jq
ZWN0Rm9yVGltaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25z
ZSk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvckNhY2hlZFJlc291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlUmVz
cG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkTG9h
ZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJl
c291cmNlQWdlbnQ6OmJ1aWxkSW5pdGlhdG9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlV2Vi
U29ja2V0SGFuZHNoYWtlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFNlbmRXZWJTb2NrZXRGcmFtZSk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkRXJy
b3JSYW5nZU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6
OnBhcnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZXZhbHVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpjYWxsRnVuY3Rp
b25Pbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFByb3Bl
cnRpZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpidWlsZFNvdXJjZVJhbmdlT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkTWVk
aWFPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsbE1lZGlhTGlzdENoYWluKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlOjpidWlsZE9iamVjdEZvclN0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlOjpidWlsZEFycmF5Rm9yQ29tcHV0ZWRTdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6SW5zcGVjdG9yU3R5bGVTaGVldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdEZvclN0eWxl
U2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmpl
Y3RGb3JTdHlsZVNoZWV0SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpzZWxlY3RvcnNGcm9tU291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0
Rm9yU2VsZWN0b3JMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6
OmJ1aWxkT2JqZWN0Rm9yUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNo
ZWV0OjpidWlsZE9iamVjdEZvclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0
eWxlU2hlZXQ6OnJlc291cmNlU3R5bGVTaGVldFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yU3R5bGVTaGVldDo6YnVpbGRBcnJheUZvclJ1bGVMaXN0KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6SW5zcGVjdG9yU3R5
bGVTaGVldEZvcklubGluZVN0eWxlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5
bGVTaGVldC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6Y2FuQmlu
ZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6dG9Qcm90b2NvbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JU
aW1lbGluZUFnZW50Ojppbm5lckFkZFJlY29yZFRvVGltZWxpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c2V0RE9NQ291bnRlcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c2VuZEV2ZW50KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9QYWdl
UnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxGcmFtZTo6YnVpbGRJbnNwZWN0b3JPYmpl
Y3QpOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENh
bGxTdGFjazo6YnVpbGRJbnNwZWN0b3JBcnJheSk6CisgICAgICAgICogaW5zcGVjdG9yL1Njcmlw
dENhbGxTdGFjay5oOgorCisyMDEzLTEyLTA1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0Bh
cHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBNb3JlIEluc3BlY3RvciBS
ZXF1aXJlZCBDbGFzc2VzIERvd24gaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1MzI0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFydCAzOiBQdXNoIERvd24gU2NyaXB0
RnVuY3Rpb25DYWxsCisKKyAgICAgICAgICAtIE1vdmUgU2NyaXB0RnVuY3Rpb25DYWxsIHRvIEph
dmFTY3JpcHRDb3JlL2JpbmRpbmdzIGludG8gbmFtZXNwYWNlIERlcHJlY2F0ZWQuCisgICAgICAg
ICAgLSBHaXZlIGNvbnN0cnVjdG9yIGEgZnVuY3Rpb24gdG8gYWxsIGZvciBhIGRpZmZlcmVudCBK
U0M6OmNhbGwsIGJlY2F1c2UKKyAgICAgICAgICAgIFdlYkNvcmUgU2NyaXB0RnVuY3Rpb25DYWxs
J3MgdXNlIEpTTWFpblRocmVhZEV4ZWNTdGF0ZSB3aGVuIGlzTWFpblRocmVhZC4KKyAgICAgICAg
ICAtIFByZWZlciBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZXZlcnl3aGVyZSBpdCBp
cyB1c2VkIGluIFdlYkNvcmUuCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9iaW5kaW5n
cy9TY3JpcHRGdW5jdGlvbkNhbGwuaDogQWRkZWQuCisgICAgICAgICogR05VbWFrZWZpbGUubGlz
dC5hbToKKyAgICAgICAgKiBVc2VKU0MuY21ha2U6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qLmZpbHRlcnM6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTWFpblRo
cmVhZEV4ZWNTdGF0ZTo6Y3VycmVudFN0YXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpjYWxsRnVuY3Rpb25Pbik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6Z2V0RnVuY3Rpb25EZXRhaWxzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpnZXRQcm9wZXJ0aWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpnZXRJbnRlcm5hbFByb3BlcnRpZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6Om5vZGVGb3JPYmplY3RJZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6cmVsZWFzZU9iamVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbmplY3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5q
ZWN0ZWRTY3JpcHQ6OndyYXBPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3Jp
cHQ6OndyYXBUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6ZmluZE9i
amVjdEJ5SWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6Omluc3BlY3ROb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpyZWxlYXNlT2JqZWN0R3JvdXAp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRCYXNlOjpjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtlQ2FsbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEJhc2U6Om1ha2VFdmFsQ2FsbCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3Rl
ZFNjcmlwdENhbnZhc01vZHVsZTo6Y2FsbFdyYXBDb250ZXh0RnVuY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6Om1hcmtGcmFtZUVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6Y2FsbFN0YXJ0Q2FwdHVy
aW5nRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1
bGU6OmNhbGxWb2lkRnVuY3Rpb25XaXRoVHJhY2VMb2dJZEFyZ3VtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjp0cmFjZUxvZyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6cmVwbGF5VHJhY2VMb2cpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OnJlc291cmNlSW5mbyk6
CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6cmVzb3VyY2VT
dGF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0TW9kdWxlOjplbnN1cmVJbmplY3RlZCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcm9udGVuZE1l
bnVQcm92aWRlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
RnJvbnRlbmRNZW51UHJvdmlkZXI6OmNvbnRleHRNZW51Q2xlYXJlZCk6CisKKzIwMTMtMTItMDUg
IEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVjdG9yIFJlcXVpcmVkIENsYXNzZXMgRG93biBpbnRvIEph
dmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjUzMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBQYXJ0IDI6IFB1c2ggU2NyaXB0IHdyYXBwZXIgY2xhc3NlcyBkb3duIGludG8gSmF2YVNj
cmlwdENvcmUvYmluZGluZ3MuCisKKyAgICAgICAgICAtIE1vdmUgU2NyaXB0T2JqZWN0IGFuZCBT
Y3JpcHRWYWx1ZSBpbnRvIEphdmFTY3JpcHRDb3JlIGJ1dCBuYW1lc3BhY2UgRGVwcmVjYXRlZAor
ICAgICAgICAgIC0gQWRkIGZvcndhcmRpbmcgaGVhZGVycworICAgICAgICAgIC0gVXNlIERlcHJl
Y2F0ZWQ6OlNjcmlwdE9iamVjdCBhbmQgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZXZlcnl3aGVy
ZS4KKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5o
OiBBZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9iaW5kaW5ncy9TY3JpcHRWYWx1
ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5jcHA6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCQW55Lmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJGYWN0b3J5Lmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpJREJJbmRleDo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6b3Bl
bktleUN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuY3Bw
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJREJLZXlSYW5nZTo6bG93ZXJCb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJL
ZXlSYW5nZTo6dXBwZXJCb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlSYW5nZTo6Ym91
bmQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCUmVxdWVzdC5jcHA6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5o
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmNwcDoKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5oOgorICAgICAgICAq
IE1vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHA6CisgICAgICAg
ICogTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lmg6CisgICAgICAg
ICogVXNlSlNDLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9EaWN0aW9uYXJ5Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpEaWN0aW9uYXJ5OjpnZXRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRl
c2VyaWFsaXplSURCVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6ZGVzZXJpYWxpemVJREJWYWx1
ZUJ1ZmZlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHA6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNEaWN0aW9uYXJ5Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQ2FudmFz
RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlw
dEhvc3RDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1
Z1NlcnZlci5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1NjcmlwdEdsb2JhbE9iamVjdC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEds
b2JhbE9iamVjdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ2xpZW50LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEdsb2JhbE9iamVjdDo6U2Ny
aXB0R2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5j
cHA6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuaDoKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OnNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmRlc2VyaWFsaXplKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAg
ICogZG9tL0N1c3RvbUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUV2ZW50Ojpp
bml0Q3VzdG9tRXZlbnQpOgorICAgICAgICAqIGRvbS9DdXN0b21FdmVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6Q3VzdG9tRXZlbnQ6OmRldGFpbCk6CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVu
dC5jcHA6CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
TWVzc2FnZUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50Ojpk
YXRhQXNTY3JpcHRWYWx1ZSk6CisgICAgICAgICogZG9tL1BvcFN0YXRlRXZlbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBvcFN0YXRlRXZlbnQ6OnN0YXRlKToKKyAgICAgICAgKiBkb20vU2NyaXB0
RWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9D
b25zb2xlTWVzc2FnZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHA6
CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0QmFzZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01v
ZHVsZS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxl
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHA6CisgICAgICAg
ICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oOgorICAgICAgICAqIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNj
cmlwdE1hbmFnZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUu
Y3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHA6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2Fu
dmFzSW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndyYXBDYW52YXMyRFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3cmFwV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29s
ZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVn
Z2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRM
b2NhbC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHA6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNwcDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxl
ckFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHA6Cisg
ICAgICAgICogaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5jcHA6CisgICAgICAgICogaW5zcGVj
dG9yL1NjcmlwdEFyZ3VtZW50cy5oOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHREZWJ1Z0xp
c3RlbmVyLmg6CisgICAgICAgICogcGFnZS9Db25zb2xlLmNwcDoKKyAgICAgICAgKiBwYWdlL0Zy
YW1lLmNwcDoKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25zb2xlLmNwcDoKKyAgICAgICAgKiBwbHVn
aW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAg
ICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHdvcmtlcnMvU2hhcmVkV29y
a2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
Y3BwOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKiB4bWwv
WE1MVHJlZVZpZXdlci5jcHA6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ci5jcHA6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3Bw
OgorCisyMDEzLTEyLTA1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBNb3JlIEluc3BlY3RvciBSZXF1aXJlZCBDbGFz
c2VzIERvd24gaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1MzI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUGFydCAxOiBQdXNoIGRvd24gY29yZSBpbnNwZWN0b3IgY2xh
c3Nlcy4KKworICAgICAgICAgIC0gTW92ZSBJbnNwZWN0QWdlbnRCYXNlLCBJbnNwZWN0b3JBZ2Vu
dFJlZ2lzdHJ5LCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9yVmFsdWVzCisg
ICAgICAgICAgICBkb3duIHRvIEphdmFTY3JpcHRDb3JlIGFuZCBpbnRvIHRoZSBJbnNwZWN0b3Ig
bmFtZXNwYWNlLgorICAgICAgICAgIC0gQWRkIGZvcndhcmRpbmcgaGVhZGVycyBmb3IgSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yIGZpbGVzLgorICAgICAgICAgIC0gVXNlIHRoZSBJbnNwZWN0b3Ig
bmFtZXNwYWNlIHdoZXJlIGFwcHJvcHJpYXRlLgorICAgICAgICAgIC0gUmVuYW1lIEluc3BlY3Rv
ckJhc2VBZ2VudCB0byBJbnNwZWN0b3JBZ2VudEJhc2UgZm9yIGNsYXJpdHkuCisKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3Iv
SW5zcGVjdG9yQWdlbnRCYXNlLmg6IEFkZGVkLgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJz
L2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Lmg6IEFkZGVkLgorICAgICAgICAqIEZv
cndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yVmFs
dWVzLmg6IEFkZGVkLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICog
V2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
ajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHRQcm9maWxlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRQ
cm9maWxlLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmg6CisgICAgICAgICogaHRtbC9wYXJzZXIvWFNT
QXVkaXRvci5jcHA6CisgICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNw
cDoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weToKKyAgICAg
ICAgKFJhd1R5cGVzLkJhc2VUeXBlLmdldF9yYXdfdmFsaWRhdG9yX2NhbGxfdGV4dCk6CisgICAg
ICAgIChSYXdUeXBlcy5PYmplY3QuZ2V0X2FycmF5X2l0ZW1fcmF3X2NfdHlwZV90ZXh0KToKKyAg
ICAgICAgKFJhd1R5cGVzLkFueS5nZXRfYXJyYXlfaXRlbV9yYXdfY190eXBlX3RleHQpOgorICAg
ICAgICAoUmF3VHlwZXMuQXJyYXkuZ2V0X2FycmF5X2l0ZW1fcmF3X2NfdHlwZV90ZXh0KToKKyAg
ICAgICAgKFR5cGVNb2RlbC5pbml0X2NsYXNzKToKKyAgICAgICAgKFR5cGVCaW5kaW5ncy5jcmVh
dGVfdHlwZV9kZWNsYXJhdGlvbl8uRW51bUJpbmRpbmcuZ2V0X2NvZGVfZ2VuZXJhdG9yLkNvZGVH
ZW5lcmF0b3IuZ2VuZXJhdGVfdHlwZV9idWlsZGVyKToKKyAgICAgICAgKFR5cGVCaW5kaW5ncy5j
cmVhdGVfdHlwZV9kZWNsYXJhdGlvbl8uQ2xhc3NCaW5kaW5nLmdldF9jb2RlX2dlbmVyYXRvci5D
b2RlR2VuZXJhdG9yLmdlbmVyYXRlX3R5cGVfYnVpbGRlcik6CisgICAgICAgIChHZW5lcmF0b3Iu
Z28pOgorICAgICAgICAoR2VuZXJhdG9yLnByb2Nlc3NfY29tbWFuZCk6CisgICAgICAgICogaW5z
cGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5OgorICAgICAgICAodm9pZCk6
CisgICAgICAgIChJbnNwZWN0b3JGcm9udGVuZF9oKToKKyAgICAgICAgKEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyc19oKToKKyAgICAgICAgKEFycmF5KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
Q29uc29sZU1lc3NhZ2UuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5o
OgorICAgICAgICAqIGluc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbHMuY3BwOgorICAgICAgICAq
IGluc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbHMuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2Uu
Y3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuY3BwOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdEhvc3QuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
QWdlbnQ6Okluc3BlY3RvckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50
OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lz
dHJ5LmguCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBZ2VudEJhc2U6Okluc3BlY3RvckFn
ZW50QmFzZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6SW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckJhc2VBZ2VudC5oOiBSZW1vdmVkLgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
U1NBZ2VudDo6SW5zcGVjdG9yQ1NTQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q1NTQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNh
bnZhc0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpJ
bnNwZWN0b3JDYW52YXNBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNB
Z2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2xp
ZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6Okluc3BlY3RvckNvbnNvbGVBZ2VudCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6SW5z
cGVjdG9yRE9NQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6SW5z
cGVjdG9yRE9NRGVidWdnZXJBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01E
ZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQ6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNw
cDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVn
Z2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRm9yd2FyZGluZy5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6Okluc3BlY3RvckhlYXBQcm9maWxlckFnZW50
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JIZWFw
UHJvZmlsZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6SW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvcklucHV0QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5wdXRBZ2Vu
dDo6SW5zcGVjdG9ySW5wdXRBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnB1
dEFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JJbnB1dEFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJl
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50OjpJ
bnNwZWN0b3JMYXllclRyZWVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXll
clRyZWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yTWVtb3J5QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JNZW1vcnlBZ2VudDo6SW5zcGVjdG9yTWVtb3J5QWdlbnQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JPdmVybGF5LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5o
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpJbnNwZWN0b3JQYWdlQWdlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpJbnNwZWN0b3JQcm9maWxlckFnZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6SW5zcGVj
dG9yUmVzb3VyY2VBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6SW5zcGVjdG9yUnVudGlt
ZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50Lmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDU1NJZDo6SW5zcGVjdG9yQ1NTSWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JT
dHlsZVRleHRFZGl0b3IuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGlu
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JU
aW1lbGluZUFnZW50OjpJbnNwZWN0b3JUaW1lbGluZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
VGltZWxpbmVBZ2VudDo6VGltZWxpbmVSZWNvcmRFbnRyeTo6VGltZWxpbmVSZWNvcmRFbnRyeSk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvcldvcmtlckFnZW50OjpJbnNwZWN0b3JXb3JrZXJBZ2VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JXb3JrZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5jcHA6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
UGFnZUNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFn
ZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlUnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAq
IGluc3BlY3Rvci9QYWdlUnVudGltZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL1Njcmlw
dEFyZ3VtZW50cy5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHA6
CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxs
U3RhY2suaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVdlYlNvY2tldENyZWF0ZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5lcmlj
V2ViU29ja2V0RGF0YSk6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckNvbnNvbGVBZ2VudC5j
cHA6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAg
ICAqIGluc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVudGlt
ZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9Xb3JrZXJSdW50aW1lQWdlbnQuaDoKKyAgICAgICAgKiBwYWdlL0NvbnRlbnRTZWN1cml0eVBv
bGljeS5jcHA6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorCiAyMDEzLTEyLTA5
ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEltcGxlbWVudCBE
b2N1bWVudC5jbG9uZU5vZGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGlu
Z0hlYWRlcnMvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9G
b3J3YXJkaW5nSGVhZGVycy9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NWQyYTA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxs
LmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX1NjcmlwdEZ1bmN0aW9uQ2Fs
bF9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1NjcmlwdEZ1bmN0aW9uQ2FsbF9oCisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvU2NyaXB0RnVuY3Rpb25DYWxsLmg+CisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5o
IGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvYmluZGluZ3MvU2NyaXB0T2JqZWN0
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM2YjgyNwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2JpbmRpbmdzL1Njcmlw
dE9iamVjdC5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9TY3JpcHRPYmpl
Y3RfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9TY3JpcHRPYmplY3RfaAorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1NjcmlwdE9iamVjdC5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dl
YkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvYmluZGluZ3MvU2NyaXB0VmFsdWUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzhhZjUwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvYmluZGluZ3MvU2NyaXB0VmFsdWUuaApAQCAt
MCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfU2NyaXB0VmFsdWVfaAorI2RlZmluZSBX
ZWJDb3JlX0ZXRF9TY3JpcHRWYWx1ZV9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0
VmFsdWUuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hl
YWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxYTM1ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNl
LmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0luc3BlY3RvckFnZW50QmFz
ZV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX0luc3BlY3RvckFnZW50QmFzZV9oCisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQWdlbnRCYXNlLmg+CisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2Vu
dFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3Iv
SW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmY5ZGI5NWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oCkBAIC0wLDAgKzEsNCBA
QAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5X2gKKyNkZWZpbmUg
V2ViQ29yZV9GV0RfSW5zcGVjdG9yQWdlbnRSZWdpc3RyeV9oCisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9J
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjllNWU4N2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaApAQCAtMCww
ICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJf
aAorI2RlZmluZSBXZWJDb3JlX0ZXRF9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcl9oCisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaD4KKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9y
L0luc3BlY3RvclR5cGVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9pbnNwZWN0b3IvSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5mZjllMTEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvclR5cGVCdWlsZGVyLmgKQEAgLTAs
MCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0luc3BlY3RvclR5cGVCdWlsZGVyX2gKKyNk
ZWZpbmUgV2ViQ29yZV9GV0RfSW5zcGVjdG9yVHlwZUJ1aWxkZXJfaAorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0luc3BlY3RvclR5cGVCdWlsZGVyLmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JW
YWx1ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDk4NWY2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9y
L0luc3BlY3RvclZhbHVlcy5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9J
bnNwZWN0b3JWYWx1ZXNfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9JbnNwZWN0b3JWYWx1ZXNfaAor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVlcy5oPgorI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCmluZGV4IDIxYTA4ZmMuLjYwN2RiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFt
CkBAIC0zNjIsOCArMzYyLDggQEAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3IuanNv
bjogJChXZWJDb3JlKS9pbnNwZWN0b3IvU2NyaXB0cy9nZW5lcmF0ZS1jb20KICMgQWxsIFdlYiBJ
bnNwZWN0b3IgZ2VuZXJhdGVkIGZpbGVzIGFyZSBjcmVhdGVkIHdpdGggdGhpcyBvbmUgY2FsbCB0
byBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5CiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVycy5jcHA6IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVj
dG9yLmpzb24gJChXZWJDb3JlKS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSAk
KFdlYkNvcmUpL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weQogCSQo
QU1fVl9HRU4pJChQWVRIT04pICQoV2ViQ29yZSkvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNw
ZWN0b3IucHkgJDwgLS1vdXRwdXRfaF9kaXIgJChHRU5TT1VSQ0VTX1dFQkNPUkUpIC0tb3V0cHV0
X2NwcF9kaXIgJChHRU5TT1VSQ0VTX1dFQkNPUkUpIC0tb3V0cHV0X2pzX2RpciAkKEdFTlNPVVJD
RVNfV0VCQ09SRSkKLURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yVHlwZUJ1aWxkZXIu
aDogRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JUeXBlQnVpbGRlci5jcHAKLURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yVHlwZUJ1aWxkZXIuY3BwOiBEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0luc3BlY3RvckZyb250ZW5kLmgKK0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5z
cGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmg6IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9y
V2ViVHlwZUJ1aWxkZXJzLmNwcAorRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JXZWJU
eXBlQnVpbGRlcnMuY3BwOiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3RvckZyb250ZW5k
LmgKIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmQuaDogRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZC5jcHAKIERlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSW5zcGVjdG9yRnJvbnRlbmQuY3BwOiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3Rv
ckJhY2tlbmRDb21tYW5kcy5qcwogRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JCYWNr
ZW5kQ29tbWFuZHMuanM6IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXJzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDg0NGFkNjguLmE2
ZDliMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysr
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjYsOCArMjYsOCBAQCB3
ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVj
dG9yRnJvbnRlbmQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3RvckZyb250
ZW5kLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yT3ZlcmxheVBhZ2UuaCBc
Ci0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JUeXBlQnVpbGRlci5jcHAgXAotCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCBcCisJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuY3BwIFwKKwlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0luc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIFwKIAlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTQWJzdHJhY3RXb3JrZXIuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTQWJzdHJhY3RXb3JrZXIuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0FsbEF1ZGlv
Q2FwYWJpbGl0aWVzLmNwcCBcCkBAIC0yNDQ0LDExICsyNDQ0LDkgQEAgd2ViY29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggXAog
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaCBcCi0JU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBcCi0JU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmggXAogCVNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdEhlYXBTbmFwc2hvdC5oIFwKLQlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRPYmplY3QuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRPYmplY3QuaCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2Jq
ZWN0LmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0
LmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmggXAogCVNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVOb2RlLmggXApAQCAtMjQ1Nyw4ICsyNDU1LDYg
QEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRTb3VyY2VDb2RlLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRl
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaCBcCi0JU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwIFwKLQlTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRXcmFwcGFibGUuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
V3JhcHBhYmxlSW5saW5lcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwIFwKQEAgLTM3NzksMTMgKzM3NzUsOCBAQCB3ZWJjb3JlX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaCBcCi0JU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oIFwKLQlTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIFwKLQlTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCBcCi0JU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhc2VBZ2VudC5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNhbnZhc0luc3RydW1lbnRhdGlvbi5oIFwKQEAgLTM4NTEsOCArMzg0
Miw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclN0eWxlVGV4dEVkaXRvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JUaW1lbGluZUFnZW50LmggXAotCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JWYWx1ZXMuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVz
LmggXAorCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCBc
CiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmggXAogCVNvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJSZXNvdXJjZS5oIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuY3BwCmluZGV4IGNiMWU2M2UuLjgyN2E0
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmNwcApAQCAt
MTEyLDcgKzExMiw3IEBAIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IElEQkFueTo6aWRiVHJh
bnNhY3Rpb24oKQogICAgIHJldHVybiBtX2lkYlRyYW5zYWN0aW9uOwogfQogCi1jb25zdCBTY3Jp
cHRWYWx1ZSYgSURCQW55OjpzY3JpcHRWYWx1ZSgpCitjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYgSURCQW55OjpzY3JpcHRWYWx1ZSgpCiB7CiAgICAgQVNTRVJUKG1fdHlwZSA9PSBTY3Jp
cHRWYWx1ZVR5cGUpOwogICAgIHJldHVybiBtX3NjcmlwdFZhbHVlOwpAQCAtMTg2LDcgKzE4Niw3
IEBAIElEQkFueTo6SURCQW55KFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IHZhbHVlKQogewog
fQogCi1JREJBbnk6OklEQkFueShjb25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUpCitJREJBbnk6OklE
QkFueShjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUpCiAgICAgOiBtX3R5cGUo
U2NyaXB0VmFsdWVUeXBlKQogICAgICwgbV9zY3JpcHRWYWx1ZSh2YWx1ZSkKICAgICAsIG1faW50
ZWdlcigwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
QW55LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuaAppbmRleCA2
ZGU0NWNmLi5kNzI4NDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJBbnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJB
bnkuaApAQCAtMjksOCArMjksOCBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiAj
aW5jbHVkZSAiSURCS2V5UGF0aC5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0V3JhcHBhYmxlLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4K
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAg
ICBQYXNzUmVmUHRyPElEQkluZGV4PiBpZGJJbmRleCgpOwogICAgIFBhc3NSZWZQdHI8SURCT2Jq
ZWN0U3RvcmU+IGlkYk9iamVjdFN0b3JlKCk7CiAgICAgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bj4gaWRiVHJhbnNhY3Rpb24oKTsKLSAgICBjb25zdCBTY3JpcHRWYWx1ZSYgc2NyaXB0VmFsdWUo
KTsKKyAgICBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgc2NyaXB0VmFsdWUoKTsKICAg
ICBpbnQ2NF90IGludGVnZXIoKTsKICAgICBjb25zdCBTdHJpbmcmIHN0cmluZygpOwogICAgIGNv
bnN0IElEQktleVBhdGgmIGtleVBhdGgoKSB7IHJldHVybiBtX2lkYktleVBhdGg7IH07CkBAIC0x
MTgsNyArMTE4LDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBJREJBbnkoUGFzc1JlZlB0cjxJ
REJUcmFuc2FjdGlvbj4pOwogICAgIGV4cGxpY2l0IElEQkFueShjb25zdCBJREJLZXlQYXRoJik7
CiAgICAgZXhwbGljaXQgSURCQW55KGNvbnN0IFN0cmluZyYpOwotICAgIGV4cGxpY2l0IElEQkFu
eShjb25zdCBTY3JpcHRWYWx1ZSYpOworICAgIGV4cGxpY2l0IElEQkFueShjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYpOwogICAgIGV4cGxpY2l0IElEQkFueShpbnQ2NF90KTsKIAogICAg
IGNvbnN0IFR5cGUgbV90eXBlOwpAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgY29u
c3QgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBtX2lkYk9iamVjdFN0b3JlOwogICAgIGNvbnN0IFJl
ZlB0cjxJREJUcmFuc2FjdGlvbj4gbV9pZGJUcmFuc2FjdGlvbjsKICAgICBjb25zdCBJREJLZXlQ
YXRoIG1faWRiS2V5UGF0aDsKLSAgICBjb25zdCBTY3JpcHRWYWx1ZSBtX3NjcmlwdFZhbHVlOwor
ICAgIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG1fc2NyaXB0VmFsdWU7CiAgICAgY29u
c3QgU3RyaW5nIG1fc3RyaW5nOwogICAgIGNvbnN0IGludDY0X3QgbV9pbnRlZ2VyOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCmluZGV4IGVm
MDY1NDQuLmI5OWQ4M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQ3Vyc29yLmNwcApAQCAtOTgsMTkgKzk4LDE5IEBAIGNvbnN0IFN0cmluZyYgSURCQ3Vyc29y
OjpkaXJlY3Rpb24oKSBjb25zdAogICAgIHJldHVybiBkaXJlY3Rpb25Ub1N0cmluZyhtX2RpcmVj
dGlvbik7CiB9CiAKLWNvbnN0IFNjcmlwdFZhbHVlJiBJREJDdXJzb3I6OmtleSgpIGNvbnN0Citj
b25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgSURCQ3Vyc29yOjprZXkoKSBjb25zdAogewog
ICAgIExPRyhTdG9yYWdlQVBJLCAiSURCQ3Vyc29yOjprZXkiKTsKICAgICByZXR1cm4gbV9jdXJy
ZW50S2V5VmFsdWU7CiB9CiAKLWNvbnN0IFNjcmlwdFZhbHVlJiBJREJDdXJzb3I6OnByaW1hcnlL
ZXkoKSBjb25zdAorY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIElEQkN1cnNvcjo6cHJp
bWFyeUtleSgpIGNvbnN0CiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJDdXJzb3I6OnByaW1h
cnlLZXkiKTsKICAgICByZXR1cm4gbV9jdXJyZW50UHJpbWFyeUtleVZhbHVlOwogfQogCi1jb25z
dCBTY3JpcHRWYWx1ZSYgSURCQ3Vyc29yOjp2YWx1ZSgpIGNvbnN0Citjb25zdCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYgSURCQ3Vyc29yOjp2YWx1ZSgpIGNvbnN0CiB7CiAgICAgTE9HKFN0b3Jh
Z2VBUEksICJJREJDdXJzb3I6OnZhbHVlIik7CiAgICAgcmV0dXJuIG1fY3VycmVudFZhbHVlOwpA
QCAtMTIxLDcgKzEyMSw3IEBAIElEQkFueSogSURCQ3Vyc29yOjpzb3VyY2UoKSBjb25zdAogICAg
IHJldHVybiBtX3NvdXJjZS5nZXQoKTsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJD
dXJzb3I6OnVwZGF0ZShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFNjcmlwdFZhbHVlJiB2YWx1ZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkN1cnNvcjo6dXBk
YXRlKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVl
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgIklEQkN1cnNvcjo6
dXBkYXRlIik7CiAKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIElEQkN1cnNvcjo6YWR2YW5jZSh1
bnNpZ25lZCBsb25nIGNvdW50LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBBU1NFUlQoIWVjKTsK
IH0KIAotdm9pZCBJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGtleVZhbHVlLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3ZvaWQgSURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXlWYWx1ZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgRE9NUmVxdWVzdFN0YXRlIHJlcXVlc3RTdGF0ZShj
b250ZXh0KTsKICAgICBSZWZQdHI8SURCS2V5PiBrZXkgPSBzY3JpcHRWYWx1ZVRvSURCS2V5KCZy
ZXF1ZXN0U3RhdGUsIGtleVZhbHVlKTsKQEAgLTI2Myw3ICsyNjMsNyBAQCB2b2lkIElEQkN1cnNv
cjo6Y2xvc2UoKQogICAgIH0KIH0KIAotdm9pZCBJREJDdXJzb3I6OnNldFZhbHVlUmVhZHkoRE9N
UmVxdWVzdFN0YXRlKiBzdGF0ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJ
REJLZXk+IHByaW1hcnlLZXksIFNjcmlwdFZhbHVlJiB2YWx1ZSkKK3ZvaWQgSURCQ3Vyc29yOjpz
ZXRWYWx1ZVJlYWR5KERPTVJlcXVlc3RTdGF0ZSogc3RhdGUsIFBhc3NSZWZQdHI8SURCS2V5PiBr
ZXksIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYgdmFsdWUpCiB7CiAgICAgbV9jdXJyZW50S2V5ID0ga2V5OwogICAgIG1fY3VycmVudEtleVZh
bHVlID0gaWRiS2V5VG9TY3JpcHRWYWx1ZShzdGF0ZSwgbV9jdXJyZW50S2V5KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKaW5kZXggYzZhNzQ0Zi4uMDRl
YjM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vy
c29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgK
QEAgLTMxLDggKzMxLDggQEAKICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJJREJUcmFu
c2FjdGlvbi5oIgogI2luY2x1ZGUgIkluZGV4ZWREQi5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2Ny
aXB0VmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNjMsMjIgKzYzLDIyIEBA
IHB1YmxpYzoKIAogICAgIC8vIEltcGxlbWVudCB0aGUgSURMCiAgICAgY29uc3QgU3RyaW5nJiBk
aXJlY3Rpb24oKSBjb25zdDsKLSAgICBjb25zdCBTY3JpcHRWYWx1ZSYga2V5KCkgY29uc3Q7Ci0g
ICAgY29uc3QgU2NyaXB0VmFsdWUmIHByaW1hcnlLZXkoKSBjb25zdDsKLSAgICBjb25zdCBTY3Jp
cHRWYWx1ZSYgdmFsdWUoKSBjb25zdDsKKyAgICBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYga2V5KCkgY29uc3Q7CisgICAgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHByaW1h
cnlLZXkoKSBjb25zdDsKKyAgICBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUo
KSBjb25zdDsKICAgICBJREJBbnkqIHNvdXJjZSgpIGNvbnN0OwogCi0gICAgUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiB1cGRhdGUoSlNDOjpFeGVjU3RhdGUqLCBTY3JpcHRWYWx1ZSYsIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHVwZGF0ZShKU0M6OkV4ZWNTdGF0
ZSosIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQg
YWR2YW5jZSh1bnNpZ25lZCBsb25nLCBFeGNlcHRpb25Db2RlJik7CiAgICAgLy8gRklYTUU6IFRy
eSB0byBtb2RpZnkgdGhlIGNvZGUgZ2VuZXJhdG9yIHNvIHRoaXMgb3ZlcmxvYWQgaXMgdW5uZWVk
ZWQuCiAgICAgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBF
eGNlcHRpb25Db2RlJiBlYykgeyBjb250aW51ZUZ1bmN0aW9uKHN0YXRpY19jYXN0PElEQktleSo+
KDApLCBlYyk7IH0KLSAgICB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lk
IGNvbnRpbnVlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElE
QlJlcXVlc3Q+IGRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRp
b25Db2RlJik7CiAKICAgICB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBwb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygp
OwogICAgIHZvaWQgY2xvc2UoKTsKLSAgICB2b2lkIHNldFZhbHVlUmVhZHkoRE9NUmVxdWVzdFN0
YXRlKiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwg
U2NyaXB0VmFsdWUmKTsKKyAgICB2b2lkIHNldFZhbHVlUmVhZHkoRE9NUmVxdWVzdFN0YXRlKiwg
UGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmKTsKICAgICBQYXNzUmVmUHRyPElEQktleT4gaWRiUHJpbWFyeUtl
eSgpIHsgcmV0dXJuIG1fY3VycmVudFByaW1hcnlLZXk7IH0KIAogcHJvdGVjdGVkOgpAQCAtOTcs
MTEgKzk3LDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2dvdFZhbHVlOwogICAgIC8vIFRoZXNl
IHZhbHVlcyBhcmUgaGVsZCBiZWNhdXNlIG1fYmFja2VuZCBtYXkgYWR2YW5jZSB3aGlsZSB0aGV5
CiAgICAgLy8gYXJlIHN0aWxsIHZhbGlkIGZvciB0aGUgY3VycmVudCBzdWNjZXNzIGhhbmRsZXJz
LgotICAgIFNjcmlwdFZhbHVlIG1fY3VycmVudEtleVZhbHVlOwotICAgIFNjcmlwdFZhbHVlIG1f
Y3VycmVudFByaW1hcnlLZXlWYWx1ZTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBtX2N1
cnJlbnRLZXlWYWx1ZTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBtX2N1cnJlbnRQcmlt
YXJ5S2V5VmFsdWU7CiAgICAgUmVmUHRyPElEQktleT4gbV9jdXJyZW50S2V5OwogICAgIFJlZlB0
cjxJREJLZXk+IG1fY3VycmVudFByaW1hcnlLZXk7Ci0gICAgU2NyaXB0VmFsdWUgbV9jdXJyZW50
VmFsdWU7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgbV9jdXJyZW50VmFsdWU7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkZhY3RvcnkuY3BwCmluZGV4IDlmNDA2ZmEuLmQyOGE1N2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCkBAIC0xNjUsNyAr
MTY1LDcgQEAgUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJREJGYWN0b3J5OjpkZWxldGVE
YXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KgogICAgIHJldHVybiByZXF1ZXN0OwogfQog
Ci1zaG9ydCBJREJGYWN0b3J5OjpjbXAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Y29uc3QgU2NyaXB0VmFsdWUmIGZpcnN0VmFsdWUsIGNvbnN0IFNjcmlwdFZhbHVlJiBzZWNvbmRW
YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitzaG9ydCBJREJGYWN0b3J5OjpjbXAoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGZp
cnN0VmFsdWUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBzZWNvbmRWYWx1ZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgRE9NUmVxdWVzdFN0YXRlIHJlcXVlc3RTdGF0ZShjb250
ZXh0KTsKICAgICBSZWZQdHI8SURCS2V5PiBmaXJzdCA9IHNjcmlwdFZhbHVlVG9JREJLZXkoJnJl
cXVlc3RTdGF0ZSwgZmlyc3RWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJGYWN0b3J5LmgKaW5kZXggNzM3NGVjZi4uNzc4ZmQ1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaApAQCAtNjYsNyArNjYsNyBAQCBw
dWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBvcGVuKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIHVuc2lnbmVkIGxvbmcgbG9uZyB2ZXJz
aW9uLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBk
ZWxldGVEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1l
LCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBzaG9ydCBjbXAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBmaXJzdCwgY29uc3QgU2NyaXB0VmFsdWUmIHNlY29uZCwg
RXhjZXB0aW9uQ29kZSYpOworICAgIHNob3J0IGNtcChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Y29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGZpcnN0LCBjb25zdCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSYgc2Vjb25kLCBFeGNlcHRpb25Db2RlJik7CiAKIHByaXZhdGU6CiAgICAgSURC
RmFjdG9yeShJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZSopOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCmluZGV4IGRmNjM3MzQuLmVkZjRiMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKQEAgLTc1
LDcgKzc1LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbkN1cnNvcihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXMKICAgICByZXR1cm4gcmVxdWVzdDsK
IH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbkN1cnNvcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBjb25zdCBT
dHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0
aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgIklEQkluZGV4
OjpvcGVuQ3Vyc29yIik7CiAgICAgUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSA9IElEQktl
eVJhbmdlOjpvbmx5KGNvbnRleHQsIGtleSwgZWMpOwpAQCAtMTAwLDcgKzEwMCw3IEBAIFBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFBhc3NSZWZQCiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKLVBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gSURCSW5kZXg6OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJJbmRleDo6Y291bnQiKTsKICAgICBSZWZQ
dHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlID0gSURCS2V5UmFuZ2U6Om9ubHkoY29udGV4dCwga2V5
LCBlYyk7CkBAIC0xMzAsNyArMTMwLDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRl
eDo6b3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgIHJl
dHVybiByZXF1ZXN0OwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVu
S2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZh
bHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bh
c3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwg
Y29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIExPRyhT
dG9yYWdlQVBJLCAiSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IiKTsKICAgICBSZWZQdHI8SURCS2V5
UmFuZ2U+IGtleVJhbmdlID0gSURCS2V5UmFuZ2U6Om9ubHkoY29udGV4dCwga2V5LCBlYyk7CkBA
IC0xMzksNyArMTM5LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3Blbktl
eUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgIHJldHVybiBvcGVu
S2V5Q3Vyc29yKGNvbnRleHQsIGtleVJhbmdlLnJlbGVhc2UoKSwgZGlyZWN0aW9uLCBlYyk7CiB9
CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBl
YykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgIklEQkluZGV4OjpnZXQiKTsK
ICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlID0gSURCS2V5UmFuZ2U6Om9ubHkoY29u
dGV4dCwga2V5LCBlYyk7CkBAIC0xNjksNyArMTY5LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0
PiBJREJJbmRleDo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQ
dHIKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJ
bmRleDo6Z2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlw
dFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJ
REJJbmRleDo6Z2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIExP
RyhTdG9yYWdlQVBJLCAiSURCSW5kZXg6OmdldEtleSIpOwogICAgIFJlZlB0cjxJREJLZXlSYW5n
ZT4ga2V5UmFuZ2UgPSBJREJLZXlSYW5nZTo6b25seShjb250ZXh0LCBrZXksIGVjKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCmluZGV4IDI2MTRlMDIuLmY5
NTRhZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQklu
ZGV4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaApA
QCAtNjMsMjMgKzYzLDIzIEBAIHB1YmxpYzoKICAgICAvLyBGSVhNRTogVHJ5IHRvIG1vZGlmeSB0
aGUgY29kZSBnZW5lcmF0b3Igc28gdGhpcyBpcyB1bm5lZWRlZC4KICAgICBQYXNzUmVmUHRyPElE
QlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhj
ZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwgc3RhdGljX2Nhc3Q8
SURCS2V5UmFuZ2UqPigwKSwgZWMpOyB9CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVu
Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5
UmFuZ2U+IGtleVJhbmdlLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3BlbkN1cnNvcihj
b250ZXh0LCBrZXlSYW5nZSwgSURCQ3Vyc29yOjpkaXJlY3Rpb25OZXh0KCksIGVjKTsgfQotICAg
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykgeyBy
ZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCBrZXksIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCgp
LCBlYyk7IH0KKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtl
eSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwga2V5LCBJ
REJDdXJzb3I6OmRpcmVjdGlvbk5leHQoKSwgZWMpOyB9CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQ
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRp
b25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBjb25z
dCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURC
UmVxdWVzdD4gY291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9u
Q29kZSYgZWMpIHsgcmV0dXJuIGNvdW50KGNvbnRleHQsIHN0YXRpY19jYXN0PElEQktleVJhbmdl
Kj4oMCksIGVjKTsgfQogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY291bnQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBFeGNlcHRpb25Db2RlJik7
Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gY291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIFBhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3BlbktleUN1cnNvcihjb250ZXh0LCBz
dGF0aWNfY2FzdDxJREJLZXlSYW5nZSo+KDApLCBlYyk7IH0KICAgICBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFz
c1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVy
biBvcGVuS2V5Q3Vyc29yKGNvbnRleHQsIGtleVJhbmdlLCBJREJDdXJzb3I6OmRpcmVjdGlvbk5l
eHQoKSwgZWMpOyB9Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4
Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBvcGVuS2V5Q3Vyc29yKGNvbnRleHQsIGtleSwgSURC
Q3Vyc29yOjpkaXJlY3Rpb25OZXh0KCksIGVjKTsgfQorICAgIFBhc3NSZWZQdHI8SURCUmVxdWVz
dD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4g
b3BlbktleUN1cnNvcihjb250ZXh0LCBrZXksIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCgpLCBl
Yyk7IH0KICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBjb25zdCBTdHJpbmcmIGRp
cmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3Bl
bktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU2NyaXB0VmFsdWUmIGtl
eSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9u
LCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGdldChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIEV4Y2VwdGlvbkNv
ZGUmKTsKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGdldChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gZ2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBnZXRLZXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8
SURCS2V5UmFuZ2U+LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0
PiBnZXRLZXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXks
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGdldEtleShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwg
RXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdm9pZCBtYXJrRGVsZXRlZCgpIHsgbV9kZWxldGVkID0g
dHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJLZXlSYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlS
YW5nZS5jcHAKaW5kZXggNzI4Zjk1My4uM2Q1NGZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmNwcApAQCAtNDksMTMgKzQ5LDEzIEBAIElE
QktleVJhbmdlOjpJREJLZXlSYW5nZShQYXNzUmVmUHRyPElEQktleT4gbG93ZXIsIFBhc3NSZWZQ
dHI8SURCS2V5PiB1cHBlciwgTG93CiB7CiB9CiAKLVNjcmlwdFZhbHVlIElEQktleVJhbmdlOjps
b3dlclZhbHVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIGNvbnN0CitEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSBJREJLZXlSYW5nZTo6bG93ZXJWYWx1ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KSBjb25zdAogewogICAgIERPTVJlcXVlc3RTdGF0ZSByZXF1ZXN0U3Rh
dGUoY29udGV4dCk7CiAgICAgcmV0dXJuIGlkYktleVRvU2NyaXB0VmFsdWUoJnJlcXVlc3RTdGF0
ZSwgbV9sb3dlcik7CiB9CiAKLVNjcmlwdFZhbHVlIElEQktleVJhbmdlOjp1cHBlclZhbHVlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIGNvbnN0CitEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSBJREJLZXlSYW5nZTo6dXBwZXJWYWx1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KSBjb25zdAogewogICAgIERPTVJlcXVlc3RTdGF0ZSByZXF1ZXN0U3RhdGUoY29udGV4dCk7
CiAgICAgcmV0dXJuIGlkYktleVRvU2NyaXB0VmFsdWUoJnJlcXVlc3RTdGF0ZSwgbV91cHBlcik7
CkBAIC03Miw3ICs3Miw3IEBAIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IElEQktleVJhbmdlOjpv
bmx5KFBhc3NSZWZQdHI8SURCS2V5PiBwcnBLZXksIEV4Y2VwdGlvbkNvCiAgICAgcmV0dXJuIElE
QktleVJhbmdlOjpjcmVhdGUoa2V5LCBrZXksIExvd2VyQm91bmRDbG9zZWQsIFVwcGVyQm91bmRD
bG9zZWQpOwogfQogCi1QYXNzUmVmUHRyPElEQktleVJhbmdlPiBJREJLZXlSYW5nZTo6b25seShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5VmFs
dWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gSURCS2V5UmFu
Z2U6Om9ubHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUmIGtleVZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBET01S
ZXF1ZXN0U3RhdGUgcmVxdWVzdFN0YXRlKGNvbnRleHQpOwogICAgIFJlZlB0cjxJREJLZXk+IGtl
eSA9IHNjcmlwdFZhbHVlVG9JREJLZXkoJnJlcXVlc3RTdGF0ZSwga2V5VmFsdWUpOwpAQCAtODQs
NyArODQsNyBAQCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBJREJLZXlSYW5nZTo6b25seShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdAogICAgIHJldHVybiBJREJLZXlSYW5n
ZTo6Y3JlYXRlKGtleSwga2V5LCBMb3dlckJvdW5kQ2xvc2VkLCBVcHBlckJvdW5kQ2xvc2VkKTsK
IH0KIAotUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6Omxvd2VyQm91bmQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGJvdW5kVmFs
dWUsIGJvb2wgb3BlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQktleVJhbmdl
PiBJREJLZXlSYW5nZTo6bG93ZXJCb3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgYm91bmRWYWx1ZSwgYm9vbCBvcGVuLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBET01SZXF1ZXN0U3RhdGUgcmVxdWVzdFN0YXRlKGNv
bnRleHQpOwogICAgIFJlZlB0cjxJREJLZXk+IGJvdW5kID0gc2NyaXB0VmFsdWVUb0lEQktleSgm
cmVxdWVzdFN0YXRlLCBib3VuZFZhbHVlKTsKQEAgLTk2LDcgKzk2LDcgQEAgUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6Omxvd2VyQm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwKICAgICByZXR1cm4gSURCS2V5UmFuZ2U6OmNyZWF0ZShib3VuZCwgMCwgb3Bl
biA/IExvd2VyQm91bmRPcGVuIDogTG93ZXJCb3VuZENsb3NlZCwgVXBwZXJCb3VuZE9wZW4pOwog
fQogCi1QYXNzUmVmUHRyPElEQktleVJhbmdlPiBJREJLZXlSYW5nZTo6dXBwZXJCb3VuZChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYgYm91bmRWYWx1
ZSwgYm9vbCBvcGVuLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCS2V5UmFuZ2U+
IElEQktleVJhbmdlOjp1cHBlckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBib3VuZFZhbHVlLCBib29sIG9wZW4sIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIERPTVJlcXVlc3RTdGF0ZSByZXF1ZXN0U3RhdGUoY29u
dGV4dCk7CiAgICAgUmVmUHRyPElEQktleT4gYm91bmQgPSBzY3JpcHRWYWx1ZVRvSURCS2V5KCZy
ZXF1ZXN0U3RhdGUsIGJvdW5kVmFsdWUpOwpAQCAtMTA4LDcgKzEwOCw3IEBAIFBhc3NSZWZQdHI8
SURCS2V5UmFuZ2U+IElEQktleVJhbmdlOjp1cHBlckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsCiAgICAgcmV0dXJuIElEQktleVJhbmdlOjpjcmVhdGUoMCwgYm91bmQsIExv
d2VyQm91bmRPcGVuLCBvcGVuID8gVXBwZXJCb3VuZE9wZW4gOiBVcHBlckJvdW5kQ2xvc2VkKTsK
IH0KIAotUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6OmJvdW5kKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBsb3dlclZhbHVlLCBj
b25zdCBTY3JpcHRWYWx1ZSYgdXBwZXJWYWx1ZSwgYm9vbCBsb3dlck9wZW4sIGJvb2wgdXBwZXJP
cGVuLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IElEQktleVJh
bmdlOjpib3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYgbG93ZXJWYWx1ZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUmIHVwcGVyVmFsdWUsIGJvb2wgbG93ZXJPcGVuLCBib29sIHVwcGVyT3BlbiwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgRE9NUmVxdWVzdFN0YXRlIHJlcXVlc3RTdGF0ZShjb250ZXh0KTsK
ICAgICBSZWZQdHI8SURCS2V5PiBsb3dlciA9IHNjcmlwdFZhbHVlVG9JREJLZXkoJnJlcXVlc3RT
dGF0ZSwgbG93ZXJWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJLZXlSYW5nZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCS2V5UmFuZ2UuaAppbmRleCA1NDc2OTVhLi5lNTUxY2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmgKQEAgLTU5LDIzICs1OSwyMyBAQCBw
dWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJREJLZXk+IGxvd2VyKCkgY29uc3QgeyByZXR1cm4gbV9s
b3dlcjsgfQogICAgIFBhc3NSZWZQdHI8SURCS2V5PiB1cHBlcigpIGNvbnN0IHsgcmV0dXJuIG1f
dXBwZXI7IH0KIAotICAgIFNjcmlwdFZhbHVlIGxvd2VyVmFsdWUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopIGNvbnN0OwotICAgIFNjcmlwdFZhbHVlIHVwcGVyVmFsdWUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopIGNvbnN0OworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGxvd2VyVmFsdWUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIGNvbnN0OworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlIHVwcGVyVmFsdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIGNvbnN0OwogICAgIGJvb2wg
bG93ZXJPcGVuKCkgY29uc3QgeyByZXR1cm4gbV9sb3dlclR5cGUgPT0gTG93ZXJCb3VuZE9wZW47
IH0KICAgICBib29sIHVwcGVyT3BlbigpIGNvbnN0IHsgcmV0dXJuIG1fdXBwZXJUeXBlID09IFVw
cGVyQm91bmRPcGVuOyB9CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gb25s
eShQYXNzUmVmUHRyPElEQktleT4gdmFsdWUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gb25seShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29u
c3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBQYXNzUmVm
UHRyPElEQktleVJhbmdlPiBvbmx5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gbG93ZXJCb3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYgYm91bmQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7
IHJldHVybiBsb3dlckJvdW5kKGNvbnRleHQsIGJvdW5kLCBmYWxzZSwgZWMpOyB9Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGxvd2VyQm91bmQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBib3VuZCwgYm9vbCBvcGVuLCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGxvd2VyQm91bmQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
IGJvdW5kLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gbG93ZXJCb3VuZChjb250ZXh0LCBi
b3VuZCwgZmFsc2UsIGVjKTsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBs
b3dlckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYgYm91bmQsIGJvb2wgb3BlbiwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHVwcGVyQm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGJvdW5kLCBFeGNlcHRpb25Db2RlJiBlYykg
eyByZXR1cm4gdXBwZXJCb3VuZChjb250ZXh0LCBib3VuZCwgZmFsc2UsIGVjKTsgfQotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiB1cHBlckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYgYm91bmQsIGJvb2wgb3BlbiwgRXhjZXB0aW9uQ29k
ZSYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiB1cHBlckJvdW5kKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
JiBib3VuZCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIHVwcGVyQm91bmQoY29udGV4dCwg
Ym91bmQsIGZhbHNlLCBlYyk7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4g
dXBwZXJCb3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmIGJvdW5kLCBib29sIG9wZW4sIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBib3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYgbG93ZXIsIGNvbnN0IFNjcmlwdFZhbHVlJiB1cHBl
ciwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGJvdW5kKGNvbnRleHQsIGxvd2VyLCB1cHBl
ciwgZmFsc2UsIGZhbHNlLCBlYyk7IH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXlSYW5n
ZT4gYm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFs
dWUmIGxvd2VyLCBjb25zdCBTY3JpcHRWYWx1ZSYgdXBwZXIsIGJvb2wgbG93ZXJPcGVuLCBFeGNl
cHRpb25Db2RlJiBlYykgeyByZXR1cm4gYm91bmQoY29udGV4dCwgbG93ZXIsIHVwcGVyLCBsb3dl
ck9wZW4sIGZhbHNlLCBlYyk7IH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4g
Ym91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBsb3dlciwg
Y29uc3QgU2NyaXB0VmFsdWUmIHVwcGVyLCBib29sIGxvd2VyT3BlbiwgYm9vbCB1cHBlck9wZW4s
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gYm91
bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmIGxvd2VyLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdXBwZXIsIEV4
Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBib3VuZChjb250ZXh0LCBsb3dlciwgdXBwZXIsIGZh
bHNlLCBmYWxzZSwgZWMpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGJv
dW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlJiBsb3dlciwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHVwcGVyLCBi
b29sIGxvd2VyT3BlbiwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGJvdW5kKGNvbnRleHQs
IGxvd2VyLCB1cHBlciwgbG93ZXJPcGVuLCBmYWxzZSwgZWMpOyB9CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SURCS2V5UmFuZ2U+IGJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgbG93ZXIsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlJiB1cHBlciwgYm9vbCBsb3dlck9wZW4sIGJvb2wgdXBwZXJPcGVuLCBFeGNlcHRpb25Db2Rl
Jik7CiAKICAgICBib29sIGlzT25seUtleSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggNjliYWJmMS4u
Nzg2N2Y1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlLmNwcApAQCAtODYsNyArODYsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IElEQk9iamVjdFN0b3JlOjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFz
cwogICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBJREJPYmplY3RTdG9yZTo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewogICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBJREJLZXlSYW5nZTo6
b25seShjb250ZXh0LCBrZXksIGVjKTsKICAgICBpZiAoZWMpCkBAIC05NCw3ICs5NCw3IEBAIFBh
c3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmdldChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBjb25zCiAgICAgcmV0dXJuIGdldChjb250ZXh0LCBrZXlSYW5nZS5y
ZWxlYXNlKCksIGVjKTsKIH0KIAotc3RhdGljIHZvaWQgZ2VuZXJhdGVJbmRleEtleXNGb3JWYWx1
ZShET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYg
aW5kZXhNZXRhZGF0YSwgY29uc3QgU2NyaXB0VmFsdWUmIG9iamVjdFZhbHVlLCBJREJPYmplY3RT
dG9yZTo6SW5kZXhLZXlzKiBpbmRleEtleXMpCitzdGF0aWMgdm9pZCBnZW5lcmF0ZUluZGV4S2V5
c0ZvclZhbHVlKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBjb25zdCBJREJJbmRleE1l
dGFkYXRhJiBpbmRleE1ldGFkYXRhLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgb2Jq
ZWN0VmFsdWUsIElEQk9iamVjdFN0b3JlOjpJbmRleEtleXMqIGluZGV4S2V5cykKIHsKICAgICBB
U1NFUlQoaW5kZXhLZXlzKTsKICAgICBSZWZQdHI8SURCS2V5PiBpbmRleEtleSA9IGNyZWF0ZUlE
QktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgocmVxdWVzdFN0YXRlLCBvYmplY3RWYWx1ZSwg
aW5kZXhNZXRhZGF0YS5rZXlQYXRoKTsKQEAgLTExNywzMSArMTE3LDMxIEBAIHN0YXRpYyB2b2lk
IGdlbmVyYXRlSW5kZXhLZXlzRm9yVmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUs
IGNvbnN0IElEQkluCiAgICAgfQogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVj
dFN0b3JlOjphZGQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNv
bnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6YWRkKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYg
a2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgIklEQk9iamVj
dFN0b3JlOjphZGQiKTsKICAgICByZXR1cm4gcHV0KElEQkRhdGFiYXNlQmFja2VuZDo6QWRkT25s
eSwgSURCQW55OjpjcmVhdGUodGhpcyksIHN0YXRlLCB2YWx1ZSwga2V5LCBlYyk7CiB9CiAKLVBh
c3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmFkZChKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUsIFNjcmlwdFZhbHVlJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjphZGQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAg
IExPRyhTdG9yYWdlQVBJLCAiSURCT2JqZWN0U3RvcmU6OmFkZCIpOwogICAgIHJldHVybiBwdXQo
SURCRGF0YWJhc2VCYWNrZW5kOjpBZGRPbmx5LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgc3RhdGUs
IHZhbHVlLCBzdGF0aWNfY2FzdDxJREJLZXkqPigwKSwgZWMpOwogfQogCi1QYXNzUmVmUHRyPElE
QlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBTY3Jp
cHRWYWx1ZSYgdmFsdWUsIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVj
KQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KEpTQzo6RXhlY1N0
YXRlKiBzdGF0ZSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coU3Rv
cmFnZUFQSSwgIklEQk9iamVjdFN0b3JlOjpwdXQiKTsKICAgICByZXR1cm4gcHV0KElEQkRhdGFi
YXNlQmFja2VuZDo6QWRkT3JVcGRhdGUsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBzdGF0ZSwgdmFs
dWUsIGtleSwgZWMpOwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3Jl
OjpwdXQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBTY3JpcHRWYWx1ZSYgdmFsdWUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgIklEQk9iamVjdFN0b3JlOjpw
dXQiKTsKICAgICByZXR1cm4gcHV0KElEQkRhdGFiYXNlQmFja2VuZDo6QWRkT3JVcGRhdGUsIElE
QkFueTo6Y3JlYXRlKHRoaXMpLCBzdGF0ZSwgdmFsdWUsIHN0YXRpY19jYXN0PElEQktleSo+KDAp
LCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChJ
REJEYXRhYmFzZUJhY2tlbmQ6OlB1dE1vZGUgcHV0TW9kZSwgUGFzc1JlZlB0cjxJREJBbnk+IHNv
dXJjZSwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IFNj
cmlwdFZhbHVlJiBrZXlWYWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoSURCRGF0YWJhc2VCYWNrZW5kOjpQdXRNb2RlIHB1
dE1vZGUsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYga2V5VmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJvbUV4ZWNTdGF0ZShz
dGF0ZSk7CiAgICAgRE9NUmVxdWVzdFN0YXRlIHJlcXVlc3RTdGF0ZShjb250ZXh0KTsKQEAgLTE0
OSw3ICsxNDksNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQo
SURCRGF0YWJhc2VCYWNrZW5kOjpQdXRNb2RlIHB1dE1vZGUsCiAgICAgcmV0dXJuIHB1dChwdXRN
b2RlLCBzb3VyY2UsIHN0YXRlLCB2YWx1ZSwga2V5LnJlbGVhc2UoKSwgZWMpOwogfQogCi1QYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoSURCRGF0YWJhc2VCYWNrZW5k
OjpQdXRNb2RlIHB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIEpTQzo6RXhlY1N0
YXRlKiBzdGF0ZSwgU2NyaXB0VmFsdWUmIHZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5
LCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3Rv
cmU6OnB1dChJREJEYXRhYmFzZUJhY2tlbmQ6OlB1dE1vZGUgcHV0TW9kZSwgUGFzc1JlZlB0cjxJ
REJBbnk+IHNvdXJjZSwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYgdmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBwcnBLZXksIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewogICAgIFJlZlB0cjxJREJLZXk+IGtleSA9IHBycEtleTsKICAgICBpZiAobV9kZWxldGVk
KSB7CkBAIC0xNjcsNyArMTY3LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RT
dG9yZTo6cHV0KElEQkRhdGFiYXNlQmFja2VuZDo6UHV0TW9kZSBwdXRNb2RlLAogCiAgICAgLy8g
RklYTUU6IEV4cG9zZSB0aGUgSlMgZW5naW5lIGV4Y2VwdGlvbiBzdGF0ZSB0aHJvdWdoIFNjcmlw
dFN0YXRlLgogICAgIGJvb2wgZGlkVGhyb3cgPSBmYWxzZTsKLSAgICBSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUgPSB2YWx1ZS5zZXJpYWxpemUoc3RhdGUsIDAs
IDAsIGRpZFRocm93KTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxp
emVkVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnNlcmlhbGl6ZSh2YWx1ZSwgc3RhdGUs
IG51bGxwdHIsIG51bGxwdHIsIGRpZFRocm93KTsKICAgICBpZiAoZGlkVGhyb3cpIHsKICAgICAg
ICAgLy8gU2V0dGluZyBhbiBleHBsaWNpdCBFeGNlcHRpb25Db2RlIGhlcmUgd291bGQgZGVmZXIg
aGFuZGxpbmcgdGhlIGFscmVhZHkgdGhyb3duIGV4Y2VwdGlvbi4KICAgICAgICAgcmV0dXJuIDA7
CkBAIC0yNjIsNyArMjYyLDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9y
ZTo6ZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY28KICAgICByZXR1cm4g
cmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0
U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSA9IElEQktl
eVJhbmdlOjpvbmx5KGNvbnRleHQsIGtleSwgZWMpOwogICAgIGlmIChlYykKQEAgLTMzNiw3ICsz
MzYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY3Vyc29yLT5jb250aW51ZUZ1bmN0aW9uKHN0
YXRpY19jYXN0PElEQktleSo+KDApLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIAogICAgICAgICAg
ICAgUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSA9IGN1cnNvci0+aWRiUHJpbWFyeUtleSgpOwot
ICAgICAgICAgICAgU2NyaXB0VmFsdWUgdmFsdWUgPSBjdXJzb3ItPnZhbHVlKCk7CisgICAgICAg
ICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB2YWx1ZSA9IGN1cnNvci0+dmFsdWUoKTsKIAog
ICAgICAgICAgICAgSURCT2JqZWN0U3RvcmU6OkluZGV4S2V5cyBpbmRleEtleXM7CiAgICAgICAg
ICAgICBnZW5lcmF0ZUluZGV4S2V5c0ZvclZhbHVlKHJlcXVlc3QtPnJlcXVlc3RTdGF0ZSgpLCBt
X2luZGV4TWV0YWRhdGEsIHZhbHVlLCAmaW5kZXhLZXlzKTsKQEAgLTUwMiw3ICs1MDIsNyBAQCBQ
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleAogICAgIHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIGtl
eVJhbmdlLCBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHQoKSwgZWMpOwogfQogCi1QYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVj
KQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICByZXR1cm4gb3BlbkN1cnNvcihjb250
ZXh0LCBrZXksIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCgpLCBlYyk7CiB9CkBAIC01MzQsNyAr
NTM0LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNv
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXgKICAgICByZXR1cm4gcmVxdWVzdC5yZWxl
YXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5D
dXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUm
IGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBj
b25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRy
PElEQktleVJhbmdlPiBrZXlSYW5nZSA9IElEQktleVJhbmdlOjpvbmx5KGNvbnRleHQsIGtleSwg
ZWMpOwogICAgIGlmIChlYykKQEAgLTU1OCw3ICs1NTgsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IElEQk9iamVjdFN0b3JlOjpjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBQYQogICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjb3VudChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlID0gSURCS2V5
UmFuZ2U6Om9ubHkoY29udGV4dCwga2V5LCBlYyk7CiAgICAgaWYgKGVjKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKaW5kZXggZmZmNWZm
OS4uZGE2NWEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZS5oCkBAIC02NSwyMSArNjUsMjEgQEAgcHVibGljOgogICAgIFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2Fj
dGlvbjsgfQogICAgIGJvb2wgYXV0b0luY3JlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRh
dGEuYXV0b0luY3JlbWVudDsgfQogCi0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBhZGQoSlND
OjpFeGVjU3RhdGUqLCBTY3JpcHRWYWx1ZSYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IHB1dChKU0M6OkV4ZWNTdGF0ZSosIFNjcmlwdFZhbHVlJiwgRXhjZXB0
aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gYWRkKEpTQzo6RXhlY1N0YXRl
KiwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBwdXQoSlNDOjpFeGVjU3RhdGUqLCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5D
dXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTY3Jp
cHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0
PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQ
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgSURCRGF0
YWJhc2VCYWNrZW5kOjpUYXNrVHlwZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU2Ny
aXB0VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYg
ZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IGdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhj
ZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZ2V0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRp
b25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBnZXQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBFeGNlcHRpb25Db2RlJik7Ci0gICAg
UGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBhZGQoSlNDOjpFeGVjU3RhdGUqLCBTY3JpcHRWYWx1ZSYs
IGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IHB1dChKU0M6OkV4ZWNTdGF0ZSosIFNjcmlwdFZhbHVlJiwgY29uc3QgU2Ny
aXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVz
dD4gYWRkKEpTQzo6RXhlY1N0YXRlKiwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBwdXQoSlNDOjpFeGVjU3RhdGUqLCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgRXhjZXB0aW9uQ29kZSYpOwot
ICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQ
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IGRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7
CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjbGVhcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgUGFzc1JlZlB0cjxJREJJbmRleD4gY3JlYXRlSW5k
ZXgoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIEV4Y2VwdGlv
bkNvZGUmIGVjKSB7IHJldHVybiBjcmVhdGVJbmRleChjb250ZXh0LCBuYW1lLCBJREJLZXlQYXRo
KGtleVBhdGgpLCBvcHRpb25zLCBlYyk7IH0KQEAgLTkyLDEwICs5MiwxMCBAQCBwdWJsaWM6CiAK
ICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBjb3VudChjb250ZXh0LCBzdGF0
aWNfY2FzdDxJREJLZXlSYW5nZSo+KDApLCBlYyk7IH0KICAgICBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleVJhbmdl
PiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY291bnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2Rl
Jik7CiAKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHB1dChJREJEYXRhYmFzZUJhY2tlbmQ6
OlB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIEpTQzo6RXhlY1N0YXRlKiwgU2Ny
aXB0VmFsdWUmLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7Ci0gICAg
UGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBwdXQoSURCRGF0YWJhc2VCYWNrZW5kOjpQdXRNb2RlLCBQ
YXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBKU0M6OkV4ZWNTdGF0ZSosIFNjcmlwdFZhbHVlJiwg
UGFzc1JlZlB0cjxJREJLZXk+LCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBwdXQoSURCRGF0YWJhc2VCYWNrZW5kOjpQdXRNb2RlLCBQYXNzUmVmUHRyPElEQkFu
eT4gc291cmNlLCBKU0M6OkV4ZWNTdGF0ZSosIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBh
c3NSZWZQdHI8SURCUmVxdWVzdD4gcHV0KElEQkRhdGFiYXNlQmFja2VuZDo6UHV0TW9kZSwgUGFz
c1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgSlNDOjpFeGVjU3RhdGUqLCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYsIFBhc3NSZWZQdHI8SURCS2V5PiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQg
bWFya0RlbGV0ZWQoKSB7IG1fZGVsZXRlZCA9IHRydWU7IH0KICAgICB2b2lkIHRyYW5zYWN0aW9u
RmluaXNoZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJS
ZXF1ZXN0LmNwcAppbmRleCAwMDQ5ZWRhLi5kNTY0NjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcApAQCAtMjEzLDcgKzIxMyw3IEBAIFBh
c3NSZWZQdHI8SURCQ3Vyc29yPiBJREJSZXF1ZXN0OjpnZXRSZXN1bHRDdXJzb3IoKQogICAgIHJl
dHVybiAwOwogfQogCi12b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdEN1cnNvcihQYXNzUmVmUHRy
PElEQkN1cnNvcj4gY3Vyc29yLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElE
QktleT4gcHJpbWFyeUtleSwgY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVlKQordm9pZCBJREJSZXF1
ZXN0OjpzZXRSZXN1bHRDdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3I+IGN1cnNvciwgUGFzc1Jl
ZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSkKIHsKICAgICBBU1NFUlQobV9yZWFkeVN0YXRl
ID09IFBFTkRJTkcpOwogICAgIG1fY3Vyc29yS2V5ID0ga2V5OwpAQCAtMjgyLDcgKzI4Miw3IEBA
IHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZD4g
YmFja2VuZCwgUGFzc1JlZlB0cjxJREJLCiAgICAgICAgIHJldHVybjsKIAogICAgIERPTVJlcXVl
c3RTdGF0ZTo6U2NvcGUgc2NvcGUobV9yZXF1ZXN0U3RhdGUpOwotICAgIFNjcmlwdFZhbHVlIHZh
bHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihyZXF1ZXN0U3RhdGUoKSwgYnVmZmVyKTsK
KyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB2YWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVC
dWZmZXIocmVxdWVzdFN0YXRlKCksIGJ1ZmZlcik7CiAgICAgQVNTRVJUKCFtX3BlbmRpbmdDdXJz
b3IpOwogICAgIFJlZlB0cjxJREJDdXJzb3I+IGN1cnNvcjsKICAgICBzd2l0Y2ggKG1fY3Vyc29y
VHlwZSkgewpAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBh
c3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgRE9NUmVxdWVzdFN0YXRlOjpTY29wZSBzY29wZShtX3JlcXVlc3RTdGF0ZSk7Ci0gICAgU2Ny
aXB0VmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKHJlcXVlc3RTdGF0ZSgp
LCB2YWx1ZUJ1ZmZlcik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgdmFsdWUgPSBkZXNl
cmlhbGl6ZUlEQlZhbHVlQnVmZmVyKHJlcXVlc3RTdGF0ZSgpLCB2YWx1ZUJ1ZmZlcik7CiAgICAg
b25TdWNjZXNzSW50ZXJuYWwodmFsdWUpOwogfQogCkBAIC0zNDgsNyArMzQ4LDcgQEAgdm9pZCBJ
REJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlQnVmZmVy
LCBQYXNzUmVmUHRyPElEQksKICAgICBBU1NFUlQoa2V5UGF0aCA9PSBlZmZlY3RpdmVPYmplY3RT
dG9yZShtX3NvdXJjZSktPmtleVBhdGgoKSk7CiAjZW5kaWYKICAgICBET01SZXF1ZXN0U3RhdGU6
OlNjb3BlIHNjb3BlKG1fcmVxdWVzdFN0YXRlKTsKLSAgICBTY3JpcHRWYWx1ZSB2YWx1ZSA9IGRl
c2VyaWFsaXplSURCVmFsdWVCdWZmZXIocmVxdWVzdFN0YXRlKCksIHZhbHVlQnVmZmVyKTsKKyAg
ICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB2YWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVCdWZm
ZXIocmVxdWVzdFN0YXRlKCksIHZhbHVlQnVmZmVyKTsKIAogICAgIFJlZlB0cjxJREJLZXk+IHBy
aW1hcnlLZXkgPSBwcnBQcmltYXJ5S2V5OwogI2lmbmRlZiBOREVCVUcKQEAgLTM4Myw3ICszODMs
NyBAQCB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2Vzc0ludGVybmFsKFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiB2YWx1ZSkKICAgICByZXR1cm4gb25TdWNjZXNzSW50ZXJuYWwoZGVz
ZXJpYWxpemVJREJWYWx1ZShyZXF1ZXN0U3RhdGUoKSwgdmFsdWUpKTsKIH0KIAotdm9pZCBJREJS
ZXF1ZXN0OjpvblN1Y2Nlc3NJbnRlcm5hbChjb25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUpCit2b2lk
IElEQlJlcXVlc3Q6Om9uU3VjY2Vzc0ludGVybmFsKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlJiB2YWx1ZSkKIHsKICAgICBtX3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlKHZhbHVlKTsKICAg
ICBpZiAobV9wZW5kaW5nQ3Vyc29yKSB7CkBAIC00MDAsNyArNDAwLDcgQEAgdm9pZCBJREJSZXF1
ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+
IHByaW1hcnlLZXkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRE9NUmVxdWVzdFN0YXRlOjpTY29w
ZSBzY29wZShtX3JlcXVlc3RTdGF0ZSk7Ci0gICAgU2NyaXB0VmFsdWUgdmFsdWUgPSBkZXNlcmlh
bGl6ZUlEQlZhbHVlQnVmZmVyKHJlcXVlc3RTdGF0ZSgpLCBidWZmZXIpOworICAgIERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlIHZhbHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihyZXF1ZXN0
U3RhdGUoKSwgYnVmZmVyKTsKICAgICBBU1NFUlQobV9wZW5kaW5nQ3Vyc29yKTsKICAgICBzZXRS
ZXN1bHRDdXJzb3IobV9wZW5kaW5nQ3Vyc29yLnJlbGVhc2UoKSwga2V5LCBwcmltYXJ5S2V5LCB2
YWx1ZSk7CiAgICAgZW5xdWV1ZUV2ZW50KGNyZWF0ZVN1Y2Nlc3NFdmVudCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAppbmRleCA0MzA1ODllLi5h
Yzc1ZGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJS
ZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVz
dC5oCkBAIC0xMjAsNyArMTIwLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZW5xdWV1ZUV2ZW50
KFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW5xdWV1ZUV2ZW50
KCkgY29uc3Q7CiAgICAgdm9pZCBvblN1Y2Nlc3NJbnRlcm5hbChQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4pOwotICAgIHZvaWQgb25TdWNjZXNzSW50ZXJuYWwoY29uc3QgU2NyaXB0
VmFsdWUmKTsKKyAgICB2b2lkIG9uU3VjY2Vzc0ludGVybmFsKGNvbnN0IERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlJik7CiAKICAgICBSZWZQdHI8SURCQW55PiBtX3Jlc3VsdDsKICAgICB1bnNpZ25l
ZCBzaG9ydCBtX2Vycm9yQ29kZTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklOQUwgeyBkZXJlZigpOyB9
CiAKICAgICBQYXNzUmVmUHRyPElEQkN1cnNvcj4gZ2V0UmVzdWx0Q3Vyc29yKCk7Ci0gICAgdm9p
ZCBzZXRSZXN1bHRDdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3I+LCBQYXNzUmVmUHRyPElEQktl
eT4sIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBjb25zdCBTY3JpcHRWYWx1ZSYpOwor
ICAgIHZvaWQgc2V0UmVzdWx0Q3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yPiwgUGFzc1JlZlB0
cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgY29uc3QgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUmKTsKIAogICAgIFJlZlB0cjxJREJBbnk+IG1fc291cmNlOwogICAgIGNv
bnN0IElEQkRhdGFiYXNlQmFja2VuZDo6VGFza1R5cGUgbV90YXNrVHlwZTsKQEAgLTE1NSw3ICsx
NTUsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJREJDdXJzb3I+IG1fcGVuZGluZ0N1cnNvcjsK
ICAgICBSZWZQdHI8SURCS2V5PiBtX2N1cnNvcktleTsKICAgICBSZWZQdHI8SURCS2V5PiBtX2N1
cnNvclByaW1hcnlLZXk7Ci0gICAgU2NyaXB0VmFsdWUgbV9jdXJzb3JWYWx1ZTsKKyAgICBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSBtX2N1cnNvclZhbHVlOwogICAgIGJvb2wgbV9kaWRGaXJlVXBn
cmFkZU5lZWRlZEV2ZW50OwogICAgIGJvb2wgbV9wcmV2ZW50UHJvcGFnYXRpb247CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdl
LmNwcAppbmRleCAwZDNkMjZlLi42YzEyNWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuY3BwCkBAIC0zMiw3ICszMiw3
IEBACiAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJNZWRpYVNvdXJjZVN0
YXRlcy5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2Ny
aXB0VmFsdWUuaD4KICNpbmNsdWRlIDxpbnRlcnByZXRlci9DYWxsRnJhbWUuaD4KICNpbmNsdWRl
IDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KIApAQCAtNTAsNyArNTAsNyBAQCBDYXBhYmlsaXR5UmFu
Z2U6OkNhcGFiaWxpdHlSYW5nZShjb25zdCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5n
ZSYgcmFuZ2VJbgogewogfQogCi1zdGF0aWMgU2NyaXB0VmFsdWUgc2NyaXB0VmFsdWUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZTo6VmFsdWVV
bmlvbiYgdmFsdWUsIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlOjpUeXBlIHR5cGUp
CitzdGF0aWMgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgc2NyaXB0VmFsdWUoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZTo6VmFsdWVVbmlvbiYg
dmFsdWUsIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlOjpUeXBlIHR5cGUpCiB7CiAg
ICAgLy8gTk9URTogdGhlIHNwZWMgc2F5czoKICAgICAvLyAgICAgIC4uLiBhbiBpbXBsZW1lbnRh
dGlvbiBzaG91bGQgbWFrZSBhIHJlYXNvbmFibGUgYXR0ZW1wdCB0byB0cmFuc2xhdGUgYW5kIHNj
YWxlIHRoZSBoYXJkd2FyZSdzIHNldHRpbmcKQEAgLTYzLDI2ICs2MywyNiBAQCBzdGF0aWMgU2Ny
aXB0VmFsdWUgc2NyaXB0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBNZWRpYVN0cmVhbVNv
dXJjZUNhcGFiaWxpdAogICAgIAogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgTWVkaWFT
dHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2U6OkZsb2F0OgotICAgICAgICByZXR1cm4gU2NyaXB0
VmFsdWUoZXhlYy0+dm0oKSwgSlNWYWx1ZSh2YWx1ZS5hc0Zsb2F0KSk7CisgICAgICAgIHJldHVy
biBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBKU1ZhbHVlKHZhbHVlLmFzRmxv
YXQpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxp
dHlSYW5nZTo6VUxvbmc6Ci0gICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBK
U1ZhbHVlKHZhbHVlLmFzVUxvbmcpKTsKKyAgICAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlKGV4ZWMtPnZtKCksIEpTVmFsdWUodmFsdWUuYXNVTG9uZykpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlOjpVbmRlZmluZWQ6
Ci0gICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBqc1VuZGVmaW5lZCgpKTsK
KyAgICAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIGpzVW5k
ZWZpbmVkKCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4gU2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwganNVbmRlZmluZWQoKSk7
CisgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIGpzVW5kZWZp
bmVkKCkpOwogfQogCi1TY3JpcHRWYWx1ZSBDYXBhYmlsaXR5UmFuZ2U6Om1pbihFeGVjU3RhdGUq
IGV4ZWMpIGNvbnN0CitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBDYXBhYmlsaXR5UmFuZ2U6Om1p
bihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHNjcmlwdFZhbHVlKGV4ZWMs
IG1fcmFuZ2VJbmZvLm1pbigpLCBtX3JhbmdlSW5mby50eXBlKCkpOwogfQogCi1TY3JpcHRWYWx1
ZSBDYXBhYmlsaXR5UmFuZ2U6Om1heChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CitEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSBDYXBhYmlsaXR5UmFuZ2U6Om1heChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIHNjcmlwdFZhbHVlKGV4ZWMsIG1fcmFuZ2VJbmZvLm1heCgpLCBtX3Jh
bmdlSW5mby50eXBlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmgKaW5kZXggMzY4NDA2Ni4uOTA1YWUzZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5n
ZS5oCkBAIC0zMCw4ICszMCw4IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1
ZGUgIk1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFs
dWUuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9T
Y3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPGludGVycHJldGVyL0NhbGxGcmFtZS5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTQzLDggKzQzLDggQEAgcHVibGljOgogCiAgICAg
c3RhdGljIFJlZlB0cjxDYXBhYmlsaXR5UmFuZ2U+IGNyZWF0ZShjb25zdCBNZWRpYVN0cmVhbVNv
dXJjZUNhcGFiaWxpdHlSYW5nZSYpOwogCi0gICAgU2NyaXB0VmFsdWUgbWluKEpTQzo6RXhlY1N0
YXRlKikgY29uc3Q7Ci0gICAgU2NyaXB0VmFsdWUgbWF4KEpTQzo6RXhlY1N0YXRlKikgY29uc3Q7
CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgbWluKEpTQzo6RXhlY1N0YXRlKikgY29uc3Q7
CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgbWF4KEpTQzo6RXhlY1N0YXRlKikgY29uc3Q7
CiAgICAgYm9vbCBzdXBwb3J0ZWQoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlSW5mby5zdXBwb3J0
ZWQoKTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5oCmluZGV4IGZkMjk0ODEuLjJhOTNm
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFU
cmFja0NvbnN0cmFpbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhVHJhY2tDb25zdHJhaW50LmgKQEAgLTMzLDkgKzMzLDExIEBACiAjaW5jbHVkZSAiU2Ny
aXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAotbmFtZXNwYWNl
IFdlYkNvcmUgewotCituYW1lc3BhY2UgRGVwcmVjYXRlZCB7CiBjbGFzcyBTY3JpcHRWYWx1ZTsK
K30KKworbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVRyYWNrQ29uc3RyYWludCA6
IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhVHJhY2tDb25zdHJhaW50PiwgcHVibGljIFNjcmlwdFdy
YXBwYWJsZSB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bs
dWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcAppbmRleCA4MmI4NmU5
Li4wYzI5MzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVp
Y2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAKQEAgLTQxLDcgKzQxLDYgQEAK
ICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgogI2luY2x1ZGUg
IlNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRl
ICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiVXNlckFnZW50U2NyaXB0cy5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmgKaW5k
ZXggZGFhZTdiMS4uNWExOTA3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
bHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmgKQEAgLTI4LDcgKzI4
LDcgQEAKIAogI2luY2x1ZGUgIlBsdWdpblJlcGxhY2VtZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0
U3RhdGUuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1Nj
cmlwdE9iamVjdC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5j
bWFrZSBiL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQppbmRleCBhOTcxZmEwLi42Mzg0NTk4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvVXNlSlNDLmNtYWtlCkBAIC0xMjQsMTIgKzEyNCwxMCBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcAog
ICAgIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCiAgICAgYmluZGluZ3MvanMvU2Ny
aXB0RGVidWdTZXJ2ZXIuY3BwCi0gICAgYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmNw
cAotICAgIGJpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHAKKyAgICBiaW5kaW5ncy9qcy9TY3Jp
cHRHbG9iYWxPYmplY3QuY3BwCiAgICAgYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5jcHAKICAg
ICBiaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5jcHAKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRT
dGF0ZS5jcHAKLSAgICBiaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAKICAgICBiaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCiAgICAgYmluZGluZ3MvanMvV2ViQ29yZVR5cGVk
QXJyYXlDb250cm9sbGVyLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDMxM2RhN2EuLmNh
N2JkYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xNDMwLDcgKzE0MzAsNiBAQCBfX1pOSzdX
ZWJDb3JlMTFSZW5kZXJMYXllcjI0bmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nRXYKIF9fWk5LN1dl
YkNvcmUxMVJlbmRlclN0eWxlMTFmb250TWV0cmljc0V2CiBfX1pOSzdXZWJDb3JlMTFSZW5kZXJT
dHlsZTIxdmlzaXRlZERlcGVuZGVudENvbG9yRWkKIF9fWk5LN1dlYkNvcmUxMVJlbmRlclN0eWxl
NGZvbnRFdgotX19aTks3V2ViQ29yZTExU2NyaXB0VmFsdWU5Z2V0U3RyaW5nRVBOM0pTQzlFeGVj
U3RhdGVFUk4zV1RGNlN0cmluZ0UKIF9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDE0ZW5jbG9z
aW5nTGF5ZXJFdgogX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTVsb2NhbFRvQWJzb2x1dGVF
UktOU18xMEZsb2F0UG9pbnRFagogX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTZyZXBhaW50
UmVjdGFuZ2xlRVJLTlNfMTBMYXlvdXRSZWN0RWIKQEAgLTE1MDIsNyArMTUwMSw2IEBAIF9fWk5L
N1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uMzFnZXRDbGlwcGVkVmlzaWJsZVRleHRSZWN0YW5nbGVz
RVJOM1dURjZWZWN0b3JJTlNfCiBfX1pOSzdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjM2cm9vdEVk
aXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50RXYKIF9fWk5LN1dlYkNvcmUxNEZyYW1lU2Vs
ZWN0aW9uNmJvdW5kc0ViCiBfX1pOSzdXZWJDb3JlMTRJbnNlcnRpb25Qb2ludDhpc0FjdGl2ZUV2
Ci1fX1pOSzdXZWJDb3JlMTRJbnNwZWN0b3JWYWx1ZTEydG9KU09OU3RyaW5nRXYKIF9fWk5LN1dl
YkNvcmUxNFJlbmRlckxpc3RJdGVtMTBtYXJrZXJUZXh0RXYKIF9fWk5LN1dlYkNvcmUxNFJlc291
cmNlQnVmZmVyNGRhdGFFdgogX19aTks3V2ViQ29yZTE0UmVzb3VyY2VCdWZmZXI0c2l6ZUV2CkBA
IC0yNjI1LDcgKzI2MjMsNyBAQCBfX1pON1dlYkNvcmUxNkhUTUxJbnB1dEVsZW1lbnQyNXNlbGVj
dENvbG9ySW5Db2xvckNob29zZXJFUktOU181Q29sb3JFCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
IF9fWk43V2ViQ29yZTE1SW5zcGVjdG9yQ2xpZW50MzFkb0Rpc3BhdGNoTWVzc2FnZU9uRnJvbnRl
bmRQYWdlRVBOU180UGFnZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE3SW5zcGVjdG9y
Q291bnRlcnMxMmNvdW50ZXJWYWx1ZUVOUzBfMTFDb3VudGVyVHlwZUUKLV9fWk43V2ViQ29yZTE5
SW5zcGVjdG9yQ29udHJvbGxlcjE1Y29ubmVjdEZyb250ZW5kRVBOU18yNEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbEUKK19fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE1Y29ubmVjdEZy
b250ZW5kRVBOOUluc3BlY3RvcjI0SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsRQogX19aTjdXZWJD
b3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMThkaXNjb25uZWN0RnJvbnRlbmRFdgogX19aTjdXZWJD
b3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMThzZXRQcm9maWxlckVuYWJsZWRFYgogX19aTjdXZWJD
b3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMjVldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kRWxSS04z
V1RGNlN0cmluZ0UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qCmluZGV4IGEzZjgwOTcuLmE4Y2Y3YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtNzQyLDcgKzc0Miw3IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSFRNTE5hbWVzLmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmok
KFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckZyb250ZW5kLmNwcCIgLz4KLSAgICA8
Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3Jt
QXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JUeXBl
QnVpbGRlci5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVxXZWJDb3JlXERlcml2ZWRTb3VyY2VzXEpTQWJzdHJhY3RXb3JrZXIuY3BwIj4KICAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE3Mjc2LDIxICsxNzI3
Niw3IEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGlu
Z3NcanNcU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCI+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMici
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMici
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzIn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRPYmplY3QuY3BwIiAvPgorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0R2xvYmFsT2JqZWN0LmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdFByb2ZpbGUuY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0UHJvZmls
ZXIuY3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+CkBAIC0xNzMyMCw3ICsxNzMwNiw2IEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMy
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCci
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0VmFsdWUuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCI+
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC0xNzYzMywx
NCArMTc2MTgsNiBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGluc3BlY3RvclxJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcCI+Ci0gICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5D
YWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1By
b2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1By
b2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgPC9DbENvbXBpbGU+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQWxsSW5PbmUu
Y3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE3
NjU3LDE0ICsxNzYzNCw2IEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCI+Ci0gICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgPC9D
bENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9y
Q2FudmFzQWdlbnQuY3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+CkBAIC0xNzkwNSwxNCArMTc4NzQsNiBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlv
bnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlv
bnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JWYWx1ZXMuY3BwIj4KLSAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgot
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgot
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAg
ICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNw
ZWN0b3JXb3JrZXJBZ2VudC5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KQEAgLTE4MTA1LDcgKzE4MDY2LDcgQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJl
KVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xJbnNwZWN0b3JGcm9udGVuZC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3Rvck92ZXJsYXlQYWdlLmgiIC8+Ci0gICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hp
dGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yVHlwZUJ1aWxk
ZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVxXZWJD
b3JlXERlcml2ZWRTb3VyY2VzXEpTQWJzdHJhY3RXb3JrZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0F0dHIuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJj
aGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0JhclByb3AuaCIgLz4K
QEAgLTE4NTc1LDExICsxODUzNiwyMCBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXFdlYkNvcmVcRGVy
aXZlZFNvdXJjZXNcSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxhY2Nlc3NpYmlsaXR5XEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Lmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjc3NcQ1NTSW1hZ2VTZXRWYWx1ZS5oIiAv
PgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3Nc
U2NyaXB0RnVuY3Rpb25DYWxsLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3
YXJkaW5nSGVhZGVyc1xiaW5kaW5nc1xTY3JpcHRPYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzXFNjcmlwdFZhbHVlLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xoZWFwXEFsbG9j
YXRpb25TcGFjZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hl
YWRlcnNcaGVhcFxIZWFwLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJk
aW5nSGVhZGVyc1xoZWFwXFNsb3RWaXNpdG9yLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xoZWFwXFN0cm9uZ0lubGluZXMuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGhlYXBcV2Vhay5oIiAvPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3Bl
Y3RvckFnZW50QmFzZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGlu
Z0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCIgLz4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2Fy
ZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIiAvPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3Bl
Y3RvclR5cGVCdWlsZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJk
aW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yVmFsdWVzLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xtYXNtXFg4NkFzc2VtYmxlci5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNccGFyc2VyXFNvdXJj
ZUNvZGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJz
XHBhcnNlclxTb3VyY2VQcm92aWRlci5oIiAvPgpAQCAtMjA2MjgsMTUgKzIwNTk4LDEzIEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRDYWxsU3RhY2tGYWN0
b3J5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRD
b250cm9sbGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xT
Y3JpcHREZWJ1Z1NlcnZlci5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGlu
Z3NcanNcU2NyaXB0RnVuY3Rpb25DYWxsLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxiaW5kaW5nc1xqc1xTY3JpcHRIZWFwU25hcHNob3QuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdE9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0R2xvYmFsT2JqZWN0LmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRQcm9maWxlLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRQcm9maWxlTm9kZS5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0UHJvZmlsZXIu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdFNvdXJj
ZUNvZGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlw
dFN0YXRlLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3Jp
cHRWYWx1ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2Ny
aXB0V3JhcHBhYmxlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xq
c1xTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGJpbmRpbmdzXGpzXFNvdXJjZUlELmgiIC8+CkBAIC0yMDk0Nyw4ICsyMDkxNSw2IEBACiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JBZ2VudC5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVj
dG9yXEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFzZUFnZW50LmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JDYW52YXNJbnN0cnVtZW50
YXRpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0
b3JDbGllbnQuaCIgLz4KQEAgLTIwOTg0LDcgKzIwOTUwLDcgQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JTdHlsZVNoZWV0LmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yU3R5bGVUZXh0RWRpdG9yLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yVGltZWxpbmVB
Z2VudC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3Rv
clZhbHVlcy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3Bl
Y3RvcldlYkFnZW50QmFzZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVj
dG9yXEluc3BlY3RvcldvcmtlckFnZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxpbnNwZWN0b3JcSW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnN0cnVtZW50aW5nQWdlbnRzLmgiIC8+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRl
cnMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRl
cnMKaW5kZXggZjBiMDI2Ni4uZWRkY2RkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMjUzLDYgKzI1Myw5
IEBACiAgICAgPEZpbHRlciBJbmNsdWRlPSJGb3J3YXJkaW5nSGVhZGVycyI+CiAgICAgICA8VW5p
cXVlSWRlbnRpZmllcj57OTUyMTZhNzAtYTNiMi00NTNjLWE2NmYtYTgxY2MxYWJlZmVlfTwvVW5p
cXVlSWRlbnRpZmllcj4KICAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkZvcndh
cmRpbmdIZWFkZXJzXGJpbmRpbmdzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnsyMTM0MzEy
NC0xMjM0LTQ1NDItYThhYS1lYmFjODc4MTIzMTJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwv
RmlsdGVyPgogICAgIDxGaWx0ZXIgSW5jbHVkZT0iRm9yd2FyZGluZ0hlYWRlcnNceWFyciI+CiAg
ICAgICA8VW5pcXVlSWRlbnRpZmllcj57M2I5YjE4MTktMWIzMS00NzcxLWIxMmEtMzJjMjEwZjg0
NzZkfTwvVW5pcXVlSWRlbnRpZmllcj4KICAgICA8L0ZpbHRlcj4KQEAgLTQ1NjMsMTAgKzQ1NjYs
NyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdEZ1
bmN0aW9uQ2FsbC5jcHAiPgotICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgotICAg
IDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2Ny
aXB0T2JqZWN0LmNwcCI+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xT
Y3JpcHRHbG9iYWxPYmplY3QuY3BwIj4KICAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRl
cj4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdz
XGpzXFNjcmlwdFByb2ZpbGUuY3BwIj4KQEAgLTQ1NzgsOSArNDU3OCw2IEBACiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRTdGF0ZS5jcHAiPgogICAgICAgPEZp
bHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0VmFsdWUuY3BwIj4KLSAgICAgIDxGaWx0
ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAiPgogICAg
ICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNDgy
NCwxOCArNDgyMSwxMiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXElu
c3BlY3RvckFnZW50LmNwcCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAg
IDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3Bl
Y3RvckFnZW50UmVnaXN0cnkuY3BwIj4KLSAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+
Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3Jc
SW5zcGVjdG9yQWxsSW5PbmUuY3BwIj4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+
CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3Jc
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCI+CiAgICAgICA8RmlsdGVyPmluc3Bl
Y3RvcjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5caW5zcGVjdG9yXEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCI+Ci0gICAgICA8Rmls
dGVyPmluc3BlY3RvcjwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckNhbnZhc0FnZW50LmNwcCI+CiAgICAgICA8
RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNDkyNiw5ICs0
OTE3LDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JU
aW1lbGluZUFnZW50LmNwcCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAg
IDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3Bl
Y3RvclZhbHVlcy5jcHAiPgotICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KLSAgICA8
L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0
b3JXb3JrZXJBZ2VudC5jcHAiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAg
ICA8L0NsQ29tcGlsZT4KQEAgLTUyODcsNyArNTI3NSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yRnJvbnRlbmQuY3BwIj4KICAg
ICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JU
eXBlQnVpbGRlci5jcHAiPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5jcHAiPgogICAgICAgPEZpbHRlcj5E
ZXJpdmVkU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcSlNBYnN0cmFjdFdvcmtlci5jcHAiPgpAQCAtMTE1
MTEsMTMgKzExNDk5LDEwIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xq
c1xTY3JpcHREZWJ1Z1NlcnZlci5oIj4KICAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRl
cj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdz
XGpzXFNjcmlwdEZ1bmN0aW9uQ2FsbC5oIj4KLSAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0Zp
bHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRp
bmdzXGpzXFNjcmlwdEhlYXBTbmFwc2hvdC5oIj4KICAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8
L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJp
bmRpbmdzXGpzXFNjcmlwdE9iamVjdC5oIj4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJp
bmRpbmdzXGpzXFNjcmlwdEdsb2JhbE9iamVjdC5oIj4KICAgICAgIDxGaWx0ZXI+YmluZGluZ3Nc
anM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGJpbmRpbmdzXGpzXFNjcmlwdFByb2ZpbGUuaCI+CkBAIC0xMTUzNSw5ICsxMTUyMCw2IEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRTdGF0ZS5oIj4KICAg
ICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdFZhbHVlLmgiPgotICAgICAg
PEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0V3JhcHBhYmxlLmgiPgogICAgICAg
PEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMTIxOTUs
NiArMTIxNzcsMTUgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHN2Z1xwcm9wZXJ0aWVz
XFNWR1RyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaCI+CiAgICAgICA8RmlsdGVyPnJlbmRl
cmluZ1xzdmdccHJvcGVydGllczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3NcU2NyaXB0RnVuY3Rp
b25DYWxsLmgiPgorICAgICAgPEZpbHRlcj5Gb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5nczwvRmls
dGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2Fy
ZGluZ0hlYWRlcnNcYmluZGluZ3NcU2NyaXB0T2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5Gb3J3
YXJkaW5nSGVhZGVyc1xiaW5kaW5nczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3NcU2NyaXB0VmFs
dWUuaCI+CisgICAgICA8RmlsdGVyPkZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzPC9GaWx0ZXI+
CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5n
SGVhZGVyc1xydW50aW1lXEFyZ0xpc3QuaCI+CiAgICAgICA8RmlsdGVyPkZvcndhcmRpbmdIZWFk
ZXJzXHJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTEyMjQwLDkgKzEyMjMx
LDI0IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xoZWFw
XFN0cm9uZy5oIj4KICAgICAgIDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRlcnNcaGVhcDwvRmlsdGVy
PgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGlu
Z0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvckFnZW50QmFzZS5oIj4KKyAgICAgIDxGaWx0ZXI+
Rm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+Cisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5z
cGVjdG9yQWdlbnRSZWdpc3RyeS5oIj4KKyAgICAgIDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRlcnNc
aW5zcGVjdG9yPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIuaCI+CisgICAgICA8RmlsdGVyPkZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvcjwvRmls
dGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2Fy
ZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIj4KICAgICAg
IDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbElu
Y2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNw
ZWN0b3JcSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCI+CisgICAgICA8RmlsdGVyPkZvcndhcmRpbmdI
ZWFkZXJzXGluc3BlY3RvcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvclZhbHVl
cy5oIj4KKyAgICAgIDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yPC9GaWx0ZXI+
CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoaXN0b3J5XEJh
Y2tGb3J3YXJkQ2xpZW50LmgiPgogICAgICAgPEZpbHRlcj5oaXN0b3J5PC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CkBAIC0xMjM5NiwxMiArMTI0MDIsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oIj4KICAg
ICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
aCI+Ci0gICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgot
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckJhc2VBZ2VudC5o
Ij4KLSAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQ2FudmFzQWdlbnQu
aCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpA
QCAtMTI1MDcsNyArMTI1MDcsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVj
dG9yXEluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3Rvcjwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5z
cGVjdG9yXEluc3BlY3RvclZhbHVlcy5oIj4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGlu
c3BlY3RvclxJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3Rv
cjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aW5zcGVjdG9yXEluc3BlY3RvcldvcmtlckFnZW50LmgiPgpAQCAtMTMwNzMsNyArMTMwNzMsNyBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3Bl
Y3Rvck92ZXJsYXlQYWdlLmgiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVy
PgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEluc3BlY3RvclR5cGVCdWlsZGVyLmgiPgorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5o
Ij4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVk
ZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmok
KFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVxXZWJDb3JlXERlcml2ZWRTb3VyY2VzXEpTQWJzdHJhY3RX
b3JrZXIuaCI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggMjY5MTRkNS4uNTFlMWUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIyMSw4ICsxMjIxLDYgQEAK
IAkJNDA5RUJEQzUxNkI3RjNDQTAwQ0JBM0ZDIC8qIEpTQ1NTRm9udEZhY2VMb2FkRXZlbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA5RUJEQzQx
NkI3RjNDQTAwQ0JBM0ZDIC8qIEpTQ1NTRm9udEZhY2VMb2FkRXZlbnQuY3BwICovOyB9OwogCQk0
MEVDQUU3RTE2QjhCNjcyMDBDMzYxMDMgLyogSlNET01FcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDBFQ0FFN0QxNkI4QjY3MjAwQzM2MTAzIC8q
IEpTRE9NRXJyb3IuaCAqLzsgfTsKIAkJNDBFQ0FFODExNkI4QjY4QTAwQzM2MTAzIC8qIEpTRE9N
RXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDBFQ0FFODAxNkI4QjY4QTAwQzM2MTAzIC8qIEpTRE9NRXJyb3IuY3BwICovOyB9OwotCQk0MTAw
MkNDRDBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTAwMkNDQjBGNjZFREVGMDA5RTY2
MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggKi87IH07Ci0JCTQxMDAyQ0NFMEY2NkVERUYwMDlF
NjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwMDJDQ0MwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1
bmN0aW9uQ2FsbC5jcHAgKi87IH07CiAJCTQxMEI3RTcyMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01l
c3NhZ2VFdmVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTBCN0U3MTEwNDVGQUIwMDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0
b20uY3BwICovOyB9OwogCQk0MTIzMDgxQjEzOEM0Mjk3MDBCQ0NGQ0EgLyogV2ViQ29yZS5mcmFt
ZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
M0YxOUIxQTA4MjQ1RTVBMDAxRTlBQkMgLyogV2ViQ29yZS5mcmFtZXdvcmsgKi87IH07CiAJCTQx
MjMwOTEzMTM4QzQyRkYwMEJDQ0ZDQSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJh
bWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGODIxNjI5OTAyOUY0
RkI1MDEwMDAxMzEgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwpAQCAtMTI5MSw4
ICsxMjg5LDggQEAKIAkJNDFGMDYxOEYwRjVGMDY5ODAwQTA3RUFDIC8qIENvbnNvbGVNZXNzYWdl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjA2
MThEMEY1RjA2OTgwMEEwN0VBQyAvKiBDb25zb2xlTWVzc2FnZS5jcHAgKi87IH07CiAJCTQxRjA2
MjE0MEY1RjE5MjYwMEEwN0VBQyAvKiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjIxMjBGNUYxOTI2
MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oICovOyB9OwogCQk0MUYwNjIx
NTBGNUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjIxMzBGNUYxOTI2
MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgKi87IH07Ci0JCTQxRjA2
NkU0MEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjA2NkUyMEY2NEJDRjYwMEEwN0VBQyAvKiBT
Y3JpcHRPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQk0MUYwNjZFNTBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0T2JqZWN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjA2NkUzMEY2NEJD
RjYwMEEwN0VBQyAvKiBTY3JpcHRPYmplY3QuY3BwICovOyB9OworCQk0MUYwNjZFNDBGNjRCQ0Y2
MDBBMDdFQUMgLyogU2NyaXB0R2xvYmFsT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjZFMjBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0
R2xvYmFsT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNDFGMDY2RTUwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdEdsb2JhbE9iamVjdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjZF
MzBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0R2xvYmFsT2JqZWN0LmNwcCAqLzsgfTsKIAkJNDFG
MUQyMUYwRUYzNUMyQTAwREE4NzUzIC8qIFNjcmlwdENhY2hlZEZyYW1lRGF0YS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGMUQyMUQwRUYzNUMyQTAw
REE4NzUzIC8qIFNjcmlwdENhY2hlZEZyYW1lRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxRjFEMjIwMEVGMzVDMkEwMERBODc1MyAvKiBT
Y3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDFGMUQyMUUwRUYzNUMyQTAwREE4NzUzIC8qIFNjcmlwdENhY2hlZEZy
YW1lRGF0YS5jcHAgKi87IH07CiAJCTQxRjU4NEM3MTA0NjUyQ0IwMDlDQUE2NCAvKiBKU01lc3Nh
Z2VQb3J0Q3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MUY1ODRDNjEwNDY1MkNCMDA5Q0FBNjQgLyogSlNNZXNzYWdlUG9ydEN1c3RvbS5oICov
OyB9OwpAQCAtMTYwNSw4ICsxNjAzLDYgQEAKIAkJNEYxNTM0RTAxMUI1MzMwMjAwMjFGRDg2IC8q
IEVkaXRpbmdCZWhhdmlvclR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0RjE1MzRERjExQjUzMzAyMDAyMUZEODYgLyogRWRpdGluZ0JlaGF2aW9y
VHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0RjJEMjA1NDEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMkQyMDUyMTJFQUU3QjMwMDVD
Mjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTRGMkQyMDU1MTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JB
Z2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
RjJEMjA1MzEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQuY3BwICovOyB9OwotCQk0
RjMyODlCNTExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMzI4OUIzMTFBNDJBQUIwMDVB
QkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwICovOyB9OwotCQk0RjMyODlCNjExQTQyQUFCMDA1
QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0RjMyODlCNDExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFs
dWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NEY0RjVGRkIxMUNCRDJFMTAwQTE4NkJGIC8qIEluc3BlY3RvckZyb250ZW5kLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNEY1RkZBMTFDQkQyRDIw
MEExODZCRiAvKiBJbnNwZWN0b3JGcm9udGVuZC5jcHAgKi87IH07CiAJCTRGNkZERDY0MTM0MURF
REQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEY2RkRENjIxMzQxREVERDAwMUY4RUUzIC8qIElu
c3BlY3RvclBhZ2VBZ2VudC5jcHAgKi87IH07CiAJCTRGNkZERDY1MTM0MURFREQwMDFGOEVFMyAv
KiBJbnNwZWN0b3JQYWdlQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDRGNkZERDYzMTM0MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdl
bnQuaCAqLzsgfTsKQEAgLTE4OTMsOSArMTg4OSw5IEBACiAJCTUzRUY3NjZDMTY1MzE5OTQwMDRD
QkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNFRjc2NkExNjUzMEE2MTAwNENCRTQ5IC8q
IFNldHRpbmdzTWFjcm9zLmggKi87IH07CiAJCTU1MEEwQkM5MDg1RjYwMzkwMDczNTNENiAvKiBR
dWFsaWZpZWROYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU1MEEwQkM3MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCAqLzsg
fTsKIAkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM4MDg1RjYwMzkw
MDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTczRDEzNDcxNENFMzlGRjAwNTdBQkNBIC8qIEluc3BlY3Rv
clR5cGVCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU3M0QxMzQ1MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5j
cHAgKi87IH07CisJCTU3M0QxMzQ3MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JXZWJUeXBl
QnVpbGRlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTczRDEzNDUxNENFMzlGRjAwNTdBQkNBIC8qIEluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5j
cHAgKi87IH07CiAJCTU3OERBMjBFMTUyMEVCOEMwMDYxNDFDMSAvKiBJbnNwZWN0b3JGcm9udGVu
ZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEY0RjVG
RkMxMUNCRDMwMTAwQTE4NkJGIC8qIEluc3BlY3RvckZyb250ZW5kLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTc4REEyMEYxNTIwRUJBMzAwNjE0
MUMxIC8qIEluc3BlY3RvclR5cGVCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NzNEMTM0NjE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9y
VHlwZUJ1aWxkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk1NzhEQTIwRjE1MjBFQkEzMDA2MTQxQzEgLyogSW5zcGVjdG9yV2ViVHlwZUJ1aWxk
ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzNE
MTM0NjE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTdCNzkxQTMxNEM2
QTYyOTAwRjIwMkQxIC8qIENvbnRlbnREaXN0cmlidXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I3OTE5RjE0QzZBNjI5MDBGMjAyRDEgLyog
Q29udGVudERpc3RyaWJ1dG9yLmNwcCAqLzsgfTsKIAkJNTdCNzkxQTQxNEM2QTYyOTAwRjIwMkQx
IC8qIENvbnRlbnREaXN0cmlidXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTdCNzkxQTAxNEM2QTYyOTAwRjIwMkQxIC8qIENvbnRlbnREaXN0cmli
dXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTU3Q0Y0OTc0MTRFRTM2RDcwMEVDRkYxNCAvKiBJbnNlcnRpb25Qb2ludC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0NGNDk3MjE0RUUzNkQ3MDBF
Q0ZGMTQgLyogSW5zZXJ0aW9uUG9pbnQuY3BwICovOyB9OwpAQCAtMjE5Nyw3ICsyMTkzLDYgQEAK
IAkJN0E3NEVDQkIxMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E3NEVDQjkx
MDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oICovOyB9OwogCQk3
QTc0RUNCRDEwMTgzOURBMDBCRjkzOUUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E3NEVD
QkMxMDE4MzlEQTAwQkY5MzlFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCAq
LzsgfTsKIAkJN0FBMzY1RUUxMkU3MjY1NDAwRENBMjQyIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2Vu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUEz
NjVFRDEyRTcyNjU0MDBEQ0EyNDIgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCAqLzsgfTsK
LQkJN0FBNTFCNkUxNDgzQjYxNjAwQUQyNzUyIC8qIEluc3BlY3RvckJhc2VBZ2VudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FBNTFCNkMxNDgzQjYx
NjAwQUQyNzUyIC8qIEluc3BlY3RvckJhc2VBZ2VudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdBQTUxREQ1MTQ4NTA2QTkwMEFEMjc1MiAvKiBJ
bnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QUE1MUREMzE0ODUwNkE5MDBBRDI3NTIgLyogSW5zcGVjdG9yTWVtb3J5
QWdlbnQuY3BwICovOyB9OwogCQk3QUE1MURENjE0ODUwNkE5MDBBRDI3NTIgLyogSW5zcGVjdG9y
TWVtb3J5QWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdBQTUxREQ0MTQ4NTA2QTkwMEFEMjc1MiAvKiBJbnNwZWN0b3JNZW1vcnlBZ2VudC5oICov
OyB9OwogCQk3QUFCQTI1OTE0QkM2MTMzMDBBQTlBMTEgLyogRE9NRWRpdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQUJBMjU3MTRCQzYxMzMw
MEFBOUExMSAvKiBET01FZGl0b3IuY3BwICovOyB9OwpAQCAtMzAxNyw4ICszMDEyLDYgQEAKIAkJ
OTM0NDJDOUUwRDJCMzM1QzAwMzM4RkY5IC8qIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzQ0MkM5RDBEMkIz
MzVDMDAzMzhGRjkgLyogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uaCAqLzsgfTsKIAkJOTM0NDJD
QTAwRDJCMzM2MDAwMzM4RkY5IC8qIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNDQyQzlGMEQyQjMzNjAw
MDMzOEZGOSAvKiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAgKi87IH07CiAJCTkzNDkwN0U0
MTI1QkJCQzgwMDdGMjNBMCAvKiBHcmFwaGljc0NvbnRleHRDRy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0OTA3RTMxMjVCQkJDODAwN0YyM0EwIC8q
IEdyYXBoaWNzQ29udGV4dENHLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKLQkJOTM0Q0MwRTEwRUQzOUQ2RjAwQTY1OEYyIC8qIFNjcmlwdFZhbHVlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNENDMERG
MEVEMzlENkYwMEE2NThGMiAvKiBTY3JpcHRWYWx1ZS5jcHAgKi87IH07Ci0JCTkzNENDMEUyMEVE
MzlENkYwMEE2NThGMiAvKiBTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0Q0MwRTAwRUQzOUQ2RjAwQTY1OEYyIC8qIFNjcmlwdFZh
bHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
OTM0Q0MxMEEwRURCMjIzOTAwQTY1OEYyIC8qIFNjcmlwdFNvdXJjZUNvZGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNENDMTA5MEVEQjIyMzkwMEE2
NThGMiAvKiBTY3JpcHRTb3VyY2VDb2RlLmggKi87IH07CiAJCTkzNEQ5QkE1MEI4QzExNkIwMDdC
NDJBOSAvKiBXZWJDb3JlTlNTdHJpbmdFeHRyYXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzREOUJBNDBCOEMxMTZCMDA3QjQyQTkgLyogV2ViQ29y
ZU5TU3RyaW5nRXh0cmFzLm1tICovOyB9OwogCQk5MzREOUJBNzBCOEMxMTc1MDA3QjQyQTkgLyog
V2ViQ29yZU5TU3RyaW5nRXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5MzREOUJBNjBCOEMxMTc1MDA3QjQyQTkgLyogV2ViQ29yZU5TU3RyaW5n
RXh0cmFzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTM1MjAsMTUgKzM1MTMsMTIgQEAKIAkJQTUxM0IzRDgxMTRCMTY2QTAwMUM0MjlCIC8qIEtl
eUV2ZW50Q29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNUM5NzREMDExNDg1RkYxMDA2NkYyQUIgLyogS2V5RXZlbnRDb2NvYS5tbSAqLzsgfTsK
IAkJQTU0QTgyRUMxNTIyOEQyRjAwQzcyQkE2IC8qIERPTU5vZGVQcml2YXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTRBODJFQTE1MjI4Q0EzMDBD
NzJCQTYgLyogRE9NTm9kZVByaXZhdGUuaCAqLzsgfTsKIAkJQTU0QTgyRjExNTIyOERGNjAwQzcy
QkE2IC8qIERPTU5vZGVQcml2YXRlLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTRBODJFQTE1MjI4Q0EzMDBDNzJCQTYgLyog
RE9NTm9kZVByaXZhdGUuaCAqLzsgfTsKLQkJQTU1NkMyODgxODMyMDZBODAwOENCNzIwIC8qIElu
c3BlY3RvckFnZW50UmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTU1NkMyODYxODMyMDZBODAwOENCNzIwIC8qIEluc3BlY3RvckFnZW50
UmVnaXN0cnkuY3BwICovOyB9OwotCQlBNTU2QzI4OTE4MzIwNkE4MDA4Q0I3MjAgLyogSW5zcGVj
dG9yQWdlbnRSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTU1NkMyODcxODMyMDZBODAwOENCNzIwIC8qIEluc3BlY3RvckFnZW50UmVnaXN0
cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlB
NTczMkIwQTEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3MzJCMDgxMzZBMTYxRDAwNUM4
RDdDIC8qIERhdGVDb21wb25lbnRzLmNwcCAqLzsgfTsKIAkJQTU3MzJCMEIxMzZBMTYxRDAwNUM4
RDdDIC8qIERhdGVDb21wb25lbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNTczMkIwOTEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMu
aCAqLzsgfTsKKwkJQTU5M0NGOEIxODQwNTM1MjAwQkZDRTI3IC8qIEluc3BlY3RvcldlYkFnZW50
QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5
M0NGOEExODQwNTM1MjAwQkZDRTI3IC8qIEluc3BlY3RvcldlYkFnZW50QmFzZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1QTJBRjBCMTgyOTcz
NDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUEyQUYwOTE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURl
YnVnZ2FibGUuY3BwICovOyB9OwogCQlBNUEyQUYwQzE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURl
YnVnZ2FibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1QTJBRjBBMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5oICovOyB9OwogCQlB
NUFCQjc4NzEzQjkwNEJDMDBGMTk3RTMgLyogTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUFCQjc4NjEzQjkw
NEJDMDBGMTk3RTMgLyogTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmggKi87IH07Ci0JCUE1QUM0
QUVGMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUFDNEFFRDE4MzM2
OTc1MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwICovOyB9OwotCQlB
NUFDNEFGMDE4MzM2OTc1MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QUM0QUVFMTgz
MzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1QUZCMzRGMTE1MTUxQTcw
MEIwNDVDQiAvKiBTdGVwUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTVBRkIzNEQxMTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5jcHAg
Ki87IH07CiAJCUE1QUZCMzUwMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QUZCMzRFMTE1MTUxQTcw
MEIwNDVDQiAvKiBTdGVwUmFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlBNUM1NjZBQjEyN0EzQUFEMDBFOEEzRkYgLyogRGlza0ltYWdlQ2Fj
aGVDbGllbnRJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1QzU2NkFBMTI3QTNBQUQwMEU4QTNGRiAvKiBEaXNrSW1hZ2VDYWNoZUNsaWVudElPUy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03OTA4
LDggKzc4OTgsNiBAQAogCQk0MDlFQkRDNDE2QjdGM0NBMDBDQkEzRkMgLyogSlNDU1NGb250RmFj
ZUxvYWRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NT
U0ZvbnRGYWNlTG9hZEV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDBF
Q0FFN0QxNkI4QjY3MjAwQzM2MTAzIC8qIEpTRE9NRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNET01FcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MEVDQUU4MDE2QjhCNjhBMDBDMzYxMDMgLyogSlNET01FcnJvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTUVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNDEwMDJDQ0IwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9u
Q2FsbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRGdW5jdGlvbkNh
bGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDEwMDJDQ0MwRjY2RURFRjAwOUU2
NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MTBCN0U3MTEwNDVGQUIwMDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZXNzYWdlRXZlbnRD
dXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTI3RDUzNjBGOEFBQjFE
MDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2NyaXB0U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTM4RDMzMzEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50Q29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNzk4NCw4ICs3OTcyLDggQEAKIAkJNDFGMDYxOEQwRjVGMDY5ODAwQTA3RUFDIC8q
IENvbnNvbGVNZXNzYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENvbnNvbGVNZXNzYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGMDYy
MTIwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUYwNjIxMzBGNUYxOTI2MDBBMDdFQUMgLyog
SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNDFGMDY2RTIwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdE9iamVjdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRPYmplY3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDFGMDY2RTMwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlw
dE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRP
YmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUYwNjZFMjBGNjRCQ0Y2
MDBBMDdFQUMgLyogU2NyaXB0R2xvYmFsT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNjcmlwdEdsb2JhbE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MUYwNjZFMzBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0R2xvYmFsT2JqZWN0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEdsb2JhbE9iamVjdC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRjFEMjFEMEVGMzVDMkEwMERBODc1
MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxRjFEMjFFMEVGMzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURhdGEuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0Q2FjaGVkRnJhbWVE
YXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGNTg0QzYxMDQ2NTJDQjAw
OUNBQTY0IC8qIEpTTWVzc2FnZVBvcnRDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNNZXNzYWdlUG9ydEN1c3RvbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtODM0NCw4ICs4MzMyLDYgQEAKIAkJNEYxNTM0REYxMUI1MzMwMjAwMjFGRDg2IC8qIEVk
aXRpbmdCZWhhdmlvclR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVk
aXRpbmdCZWhhdmlvclR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGMkQy
MDUyMTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0RjJEMjA1MzEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQWdlbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0RjMyODlCMzExQTQyQUFCMDA1QUJFN0UgLyog
SW5zcGVjdG9yVmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEluc3BlY3RvclZhbHVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTRGMzI4
OUI0MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yVmFsdWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTRGNEY1RkZBMTFDQkQyRDIwMEExODZCRiAvKiBJbnNwZWN0b3JGcm9udGVuZC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JGcm9udGVu
ZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGNEY1RkZDMTFDQkQzMDEwMEEx
ODZCRiAvKiBJbnNwZWN0b3JGcm9udGVuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnNwZWN0b3JGcm9udGVuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
RjZGREQ2MjEzNDFERUREMDAxRjhFRTMgLyogSW5zcGVjdG9yUGFnZUFnZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvclBhZ2VBZ2VudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NjU5LDggKzg2NDUsOCBAQAogCQk1M0VGNzY2
QTE2NTMwQTYxMDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2V0dGluZ3NNYWNyb3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVhbGlm
aWVkTmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQk1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWFs
aWZpZWROYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwotCQk1NzNEMTM0NTE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yVHlwZUJ1
aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9y
VHlwZUJ1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1NzNEMTM0NjE0
Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTczRDEzNDUxNENFMzlGRjAwNTdBQkNBIC8qIEluc3BlY3RvcldlYlR5
cGVCdWlsZGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNw
ZWN0b3JXZWJUeXBlQnVpbGRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
NzNEMTM0NjE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0I3OTE5RjE0QzZBNjI5MDBGMjAyRDEg
LyogQ29udGVudERpc3RyaWJ1dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENvbnRlbnREaXN0cmlidXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTU3Qjc5MUEwMTRDNkE2MjkwMEYyMDJEMSAvKiBDb250ZW50RGlzdHJpYnV0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGVudERpc3RyaWJ1dG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3Q0Y0OTcyMTRFRTM2RDcwMEVDRkYxNCAvKiBJbnNl
cnRpb25Qb2ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNl
cnRpb25Qb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04OTk2LDcgKzg5
ODIsNiBAQAogCQk3QTc0RUNCOTEwMTgzOUE2MDBCRjkzOUUgLyogSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTc0RUNCQzEwMTgz
OURBMDBCRjkzOUUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUEzNjVFRDEyRTcyNjU0MDBE
Q0EyNDIgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTdBQTUxQjZDMTQ4M0I2MTYwMEFEMjc1MiAvKiBJbnNwZWN0b3JCYXNl
QWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQmFzZUFn
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBQTUxREQzMTQ4NTA2QTkwMEFE
Mjc1MiAvKiBJbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdBQTUxREQ0MTQ4NTA2QTkwMEFEMjc1MiAvKiBJbnNwZWN0b3JNZW1vcnlB
Z2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JNZW1vcnlB
Z2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUFCQTI1NzE0QkM2MTMzMDBB
QTlBMTEgLyogRE9NRWRpdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERPTUVkaXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05ODAzLDgg
Kzk3ODgsNiBAQAogCQk5MzQ0MkM5RDBEMkIzMzVDMDAzMzhGRjkgLyogSFRNTFRhYmxlUm93c0Nv
bGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTFRhYmxlUm93
c0NvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM0NDJDOUYwRDJC
MzM2MDAwMzM4RkY5IC8qIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM0OTA3RTMxMjVCQkJDODAwN0YyM0EwIC8qIEdy
YXBoaWNzQ29udGV4dENHLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dENHLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTkzNENDMERGMEVE
MzlENkYwMEE2NThGMiAvKiBTY3JpcHRWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTY3JpcHRWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTkzNENDMEUwMEVEMzlENkYwMEE2NThGMiAvKiBTY3JpcHRWYWx1ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5MzRDQzEwOTBFREIyMjM5MDBBNjU4RjIgLyogU2NyaXB0U291cmNlQ29kZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRTb3VyY2VDb2RlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNEQ5QkE0MEI4QzExNkIwMDdCNDJBOSAvKiBX
ZWJDb3JlTlNTdHJpbmdFeHRyYXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViQ29yZU5TU3RyaW5nRXh0cmFzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5MzREOUJBNjBCOEMxMTc1MDA3QjQyQTkgLyogV2ViQ29yZU5TU3RyaW5nRXh0cmFz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlTlNTdHJpbmdFeHRy
YXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMzQ0LDE5ICsxMDMyNywxNiBA
QAogCQlBNTE4MjI1NDE3RTJBMEQ0MDBBOUJBMUQgLyogSW5zcGVjdG9yT3ZlcmxheVBhZ2UuY3Nz
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5j
c3M7IHBhdGggPSBJbnNwZWN0b3JPdmVybGF5UGFnZS5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE1MTgyMjU1MTdFMkEwRDQwMEE5QkExRCAvKiBJbnNwZWN0b3JPdmVybGF5UGFn
ZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEluc3BlY3Rvck92ZXJsYXlQYWdlLmpzOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTRBODJFQTE1MjI4Q0EzMDBDNzJCQTYgLyogRE9N
Tm9kZVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NTm9kZVBy
aXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU1NkMyODYxODMyMDZBODAw
OENCNzIwIC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUE1NTZDMjg3MTgzMjA2QTgwMDhDQjcyMCAvKiBJbnNwZWN0b3JB
Z2VudFJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3Rv
ckFnZW50UmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3MzJCMDgx
MzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERhdGVDb21wb25lbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTU3MzJCMDkxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGVDb21wb25lbnRzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1OTNDRjcyMTg0MDJDRTkwMEJGQ0UyNyAvKiBwcm90
b2NvbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZv
bGRlcjsgcGF0aCA9IHByb3RvY29sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTkz
Q0Y3MzE4NDAyRDRCMDBCRkNFMjcgLyogQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5
dGhvbjsgcGF0aCA9IENvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHk7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE1OTNDRjc0MTg0MDJENEIwMEJGQ0UyNyAvKiBDb2RlR2VuZXJhdG9ySW5z
cGVjdG9yU3RyaW5ncy5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IENvZGVHZW5lcmF0b3JJbnNwZWN0
b3JTdHJpbmdzLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTkzQ0Y3NTE4NDAy
RDRCMDBCRkNFMjcgLyogY29tYmluZS1qYXZhc2NyaXB0LXJlc291cmNlcy5wbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7
IHBhdGggPSAiY29tYmluZS1qYXZhc2NyaXB0LXJlc291cmNlcy5wbCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUE1OTNDRjhBMTg0MDUzNTIwMEJGQ0UyNyAvKiBJbnNwZWN0b3JXZWJB
Z2VudEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yV2Vi
QWdlbnRCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QTJBRjA5MTgyOTcz
NDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQYWdlRGVidWdnYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE1QTJBRjBBMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlRGVidWdnYWJsZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNUFCQjc4NjEzQjkwNEJDMDBGMTk3RTMgLyogTGluZUJyZWFr
SXRlcmF0b3JQb29sSUNVLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmVC
cmVha0l0ZXJhdG9yUG9vbElDVS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNUFD
NEFFRDE4MzM2OTc1MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNUFDNEFFRTE4MzM2OTc1
MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVBRkIzNEQxMTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5n
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGVwUmFuZ2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUFGQjM0RTExNTE1MUE3MDBCMDQ1Q0Ig
LyogU3RlcFJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0ZXBSYW5n
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUM1NjZBQTEyN0EzQUFEMDBFOEEz
RkYgLyogRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE0NDQ3LDggKzE0NDI3LDggQEAKIAkJCQk0RjcwN0E5ODExRUY2Nzk0MDBBQ0RB
NjkgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmggKi8sCiAJCQkJNEY0RjVGRkExMUNC
RDJEMjAwQTE4NkJGIC8qIEluc3BlY3RvckZyb250ZW5kLmNwcCAqLywKIAkJCQk0RjRGNUZGQzEx
Q0JEMzAxMDBBMTg2QkYgLyogSW5zcGVjdG9yRnJvbnRlbmQuaCAqLywKLQkJCQk1NzNEMTM0NTE0
Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yVHlwZUJ1aWxkZXIuY3BwICovLAotCQkJCTU3M0Qx
MzQ2MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5oICovLAorCQkJCTU3
M0QxMzQ1MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuY3BwICov
LAorCQkJCTU3M0QxMzQ2MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JXZWJUeXBlQnVpbGRl
cnMuaCAqLywKIAkJCQk3QTBFNzZEODEwQkYwNTk4MDBBMDI3NkUgLyogSlNJbmplY3RlZFNjcmlw
dEhvc3QuY3BwICovLAogCQkJCTdBMEU3NkQ5MTBCRjA1OTgwMEEwMjc2RSAvKiBKU0luamVjdGVk
U2NyaXB0SG9zdC5oICovLAogCQkJCTdBMEU3NzFDMTBDMDBEQjEwMEEwMjc2RSAvKiBKU0luc3Bl
Y3RvckZyb250ZW5kSG9zdC5jcHAgKi8sCkBAIC0xNDUwMCwxMyArMTQ0ODAsOCBAQAogCQkJCTdB
NTYzRjk1MTJERjVDOTEwMEY0NTM2RCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5qcyAqLywKIAkJ
CQk0RjJEMjA1MzEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQuY3BwICovLAogCQkJ
CTRGMkQyMDUyMTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5oICovLAotCQkJCUE1
NTZDMjg2MTgzMjA2QTgwMDhDQjcyMCAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcCAqLywK
LQkJCQlBNTU2QzI4NzE4MzIwNkE4MDA4Q0I3MjAgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5o
ICovLAogCQkJCUI4ODVFOEQyMTFFMDZERDIwMDlGRkJGNCAvKiBJbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQuY3BwICovLAogCQkJCUI4ODVFOEQzMTFFMDZERDIwMDlGRkJGNCAvKiBJbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCAqLywKLQkJCQlBNUFDNEFFRDE4MzM2OTc1MDA3
MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwICovLAotCQkJCUE1QUM0QUVF
MTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oICovLAotCQkJ
CTdBQTUxQjZDMTQ4M0I2MTYwMEFEMjc1MiAvKiBJbnNwZWN0b3JCYXNlQWdlbnQuaCAqLywKIAkJ
CQlBQUQ3NjZFODE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwICov
LAogCQkJCUFBRDc2NkU5MTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JDYW52YXNBZ2VudC5o
ICovLAogCQkJCUFBRDc2NkVBMTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JDYW52YXNJbnN0
cnVtZW50YXRpb24uaCAqLywKQEAgLTE0NTc2LDggKzE0NTUxLDcgQEAKIAkJCQk4Mjg4OUI0QjEz
QzYyMzkyMDA5QTYxNTYgLyogSW5zcGVjdG9yU3R5bGVUZXh0RWRpdG9yLmggKi8sCiAJCQkJNzU0
MTMzQTkxMDJFMDBGNDAwMDc1RDAwIC8qIEluc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwICovLAog
CQkJCTc1NDEzM0E3MTAyRTAwRTgwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50Lmgg
Ki8sCi0JCQkJNEYzMjg5QjMxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5jcHAg
Ki8sCi0JCQkJNEYzMjg5QjQxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5oICov
LAorCQkJCUE1OTNDRjhBMTg0MDUzNTIwMEJGQ0UyNyAvKiBJbnNwZWN0b3JXZWJBZ2VudEJhc2Uu
aCAqLywKIAkJCQlGMzgxMEMxOTEzNjVBNDk2MDBFRDZFMzMgLyogSW5zcGVjdG9yV29ya2VyQWdl
bnQuY3BwICovLAogCQkJCUYzODEwQzFBMTM2NUE0OTYwMEVENkUzMyAvKiBJbnNwZWN0b3JXb3Jr
ZXJBZ2VudC5oICovLAogCQkJCUYzNzVDQzA2MTE1MEQzMDAwMDhEREI4MSAvKiBJbnNwZWN0b3JX
b3JrZXJSZXNvdXJjZS5oICovLApAQCAtMTk2NjQsMTEgKzE5NjM4LDkgQEAKIAkJCQlBODNFMUM3
MjBFNDkwNDJCMDAxNDBCOUMgLyogU2NyaXB0Q29udHJvbGxlck1hYy5tbSAqLywKIAkJCQk5RjZG
QzE5NDExMjJFODJBMDBFODAxOTYgLyogU2NyaXB0RGVidWdTZXJ2ZXIuY3BwICovLAogCQkJCTlG
NkZDMTk1MTEyMkU4MkEwMEU4MDE5NiAvKiBTY3JpcHREZWJ1Z1NlcnZlci5oICovLAotCQkJCTQx
MDAyQ0NDMEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwICovLAotCQkJ
CTQxMDAyQ0NCMEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCAqLywKIAkJ
CQk5RjNCOTQ3RDEyMjQxNzU4MDA1MzA0RTcgLyogU2NyaXB0SGVhcFNuYXBzaG90LmggKi8sCi0J
CQkJNDFGMDY2RTMwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdE9iamVjdC5jcHAgKi8sCi0JCQkJ
NDFGMDY2RTIwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdE9iamVjdC5oICovLAorCQkJCTQxRjA2
NkUzMEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRHbG9iYWxPYmplY3QuY3BwICovLAorCQkJCTQx
RjA2NkUyMEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRHbG9iYWxPYmplY3QuaCAqLywKIAkJCQlG
MzNGMDI4MTEyMDk0N0YyMDBFNTc0M0EgLyogU2NyaXB0UHJvZmlsZS5jcHAgKi8sCiAJCQkJOUY3
MjMwNEMxMTE4NEI0MTAwQUQwMTI2IC8qIFNjcmlwdFByb2ZpbGUuaCAqLywKIAkJCQk5RkEzN0VF
MzExNzJGQzgwMDBDNENENTUgLyogU2NyaXB0UHJvZmlsZU5vZGUuaCAqLywKQEAgLTE5Njc3LDgg
KzE5NjQ5LDYgQEAKIAkJCQk5MzRDQzEwOTBFREIyMjM5MDBBNjU4RjIgLyogU2NyaXB0U291cmNl
Q29kZS5oICovLAogCQkJCTQxMjdENTM2MEY4QUFCMUQwMEU0MjRGNSAvKiBTY3JpcHRTdGF0ZS5j
cHAgKi8sCiAJCQkJNDFDNzYwQjAwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggKi8s
Ci0JCQkJOTM0Q0MwREYwRUQzOUQ2RjAwQTY1OEYyIC8qIFNjcmlwdFZhbHVlLmNwcCAqLywKLQkJ
CQk5MzRDQzBFMDBFRDM5RDZGMDBBNjU4RjIgLyogU2NyaXB0VmFsdWUuaCAqLywKIAkJCQkyMjhD
Mjg0NDEwRDgyNTAwMDA5RDBEMEUgLyogU2NyaXB0V3JhcHBhYmxlLmggKi8sCiAJCQkJMTQwMEQ3
QTcxNzEzNkVBNzAwNzdDRTA1IC8qIFNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCAqLywKIAkJCQlB
NzVFNDk3NTEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCAqLywK
QEAgLTIyMTIxLDcgKzIyMDkxLDYgQEAKIAkJCQkyOUE4MTIzRjBGQkI5QzFEMDA1MTAyOTMgLyog
QWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQky
OUE4MTIzMTBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eVRhYmxlUm93LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCNUQzMURGQjExQ0Y2MTBCMDA5RjIyQjQgLyogQWN0aXZlRE9NQ2FsbGJh
Y2suaCBpbiBIZWFkZXJzICovLAotCQkJCUE1NTZDMjg5MTgzMjA2QTgwMDhDQjcyMCAvKiBJbnNw
ZWN0b3JBZ2VudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUM0REU2OTBFQTc1QzFF
MDAyM0NDRDYgLyogQWN0aXZlRE9NT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0Y3RTQ5
MTEzN0NEN0M3MDAxRERBRTcgLyogQWRqdXN0Vmlld1NpemVPck5vdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODREMEM0MDYxMTE1RjFFQTAwMThBQTM0IC8qIEFmZmluZVRyYW5zZm9ybS5oIGluIEhl
YWRlcnMgKi8sCkBAIC0yMjQyNSw3ICsyMjM5NCw2IEBACiAJCQkJQTgwRTZEMDEwQTE5ODlDQTAw
N0ZCOEM1IC8qIENTU0luaGVyaXRlZFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFNkQw
ODBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTSW5pdGlhbFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzc3MkUxMzEzMzE2MjBDMDAxRUM5Q0UgLyogQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJQTVBQzRBRjAxODMzNjk3NTAwNzExNEUwIC8qIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFNkQwMzBBMTk4OUNBMDA3
RkI4QzUgLyogQ1NTTWVkaWFSdWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGOThGRkY0NTExQTI2
NzYyMDBGNTQ4RTggLyogQ1NTT01VdGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZEMDAw
QTE5ODlDQTAwN0ZCOEM1IC8qIENTU1BhZ2VSdWxlLmggaW4gSGVhZGVycyAqLywKQEAgLTIzMzg4
LDcgKzIzMzU2LDYgQEAKIAkJCQk0RjJEMjA1NDEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9y
QWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUI4ODVFOEQ1MTFFMDZERDIwMDlGRkJGNCAvKiBJ
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTRGNzA3
QTlBMTFFRjY3OTQwMEFDREE2OSAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTdBQTUxQjZFMTQ4M0I2MTYwMEFEMjc1MiAvKiBJbnNwZWN0b3JCYXNl
QWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUFBRDc2NkVDMTU3RTUwMkYwMEU4NTQyMyAvKiBJ
bnNwZWN0b3JDYW52YXNBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUFENzY2RUQxNTdFNTAy
RjAwRTg1NDIzIC8qIEluc3BlY3RvckNhbnZhc0luc3RydW1lbnRhdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUM4MUI5NUMwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yMzQyNyw4ICsyMzM5NCw3IEBACiAJCQkJODJBQjE3NzQxMjVDODI2
NzAwQzUwNjlEIC8qIEluc3BlY3RvclN0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTgy
ODg5QjREMTNDNjIzOTIwMDlBNjE1NiAvKiBJbnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTc1NDEzM0E4MTAyRTAwRTgwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1l
bGluZUFnZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk1NzhEQTIwRjE1MjBFQkEzMDA2MTQxQzEg
LyogSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTRGMzI4OUI2MTFB
NDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3
OERBMjBGMTUyMEVCQTMwMDYxNDFDMSAvKiBJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUYzODEwQzFDMTM2NUE0OTYwMEVENkUzMyAvKiBJbnNwZWN0b3JXb3Jr
ZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc4RTA5MjkxN0QxNEQxQzAwNDIwQUExIC8q
IFJUQ1N0YXRzQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUYzNzVDQzA3MTE1MEQzMDAw
MDhEREI4MSAvKiBJbnNwZWN0b3JXb3JrZXJSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
NDU0OCw5ICsyNDUxNCw4IEBACiAJCQkJMDhBNDg0NzgwRTUyNzJDNTAwQzNGRTc2IC8qIFNjcmlw
dEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMUM5RDlCMEVCMzY4MTIwMEU0MDlEQiAv
KiBTY3JpcHRFeGVjdXRpb25Db250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREQ3MDg5NzE4
MzU5RjZGMDAyQjNEQzYgLyogU2FtcGxlTWFwLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTAwMkND
RDBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5RjNCOTQ3RTEyMjQxNzU4MDA1MzA0RTcgLyogU2NyaXB0SGVhcFNuYXBzaG90LmggaW4g
SGVhZGVycyAqLywKLQkJCQk0MUYwNjZFNDBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0T2JqZWN0
LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUYwNjZFNDBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0
R2xvYmFsT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAzNjEyQjAyNjc2MDBDMUEz
NTkgLyogU2NyaXB0UHJvY2Vzc29yTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUY3MjMwNEYx
MTE4NEI0MTAwQUQwMTI2IC8qIFNjcmlwdFByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTlG
QTM3RUU0MTE3MkZDODAwMEM0Q0Q1NSAvKiBTY3JpcHRQcm9maWxlTm9kZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yNDU1OCw3ICsyNDUyMyw2IEBACiAJCQkJOEE0MTNBRTAxMjA3QkJBNTAwODIwMTZF
IC8qIFNjcmlwdFJ1bm5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM0Q0MxMEEwRURCMjIzOTAw
QTY1OEYyIC8qIFNjcmlwdFNvdXJjZUNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQzc2MEIx
MEVERTAzRDMwMEMxNjU1RiAvKiBTY3JpcHRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJOTM0
Q0MwRTIwRUQzOUQ2RjAwQTY1OEYyIC8qIFNjcmlwdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyMjhDMjg0NTEwRDgyNTAwMDA5RDBEMEUgLyogU2NyaXB0V3JhcHBhYmxlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNDAwRDdBODE3MTM2RUE3MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxlSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4QUUzNEYxMkVBMDk2QTAwRUIzQUU2IC8qIFNj
cm9sbGFibGVBcmVhLmggaW4gSGVhZGVycyAqLywKQEAgLTI0OTUyLDYgKzI0OTE2LDcgQEAKIAkJ
CQkwODhBMEUwQTEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTA4MURENDlDMTNCQTFBNjAwMERDNzYyNyAvKiBTVkdQcm9wZXJ0eUluZm8uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUI1N0NCNTJFMTgyQTNFRkMwMDc5QTY0NyAvKiBJbmxpbmVFbGVtZW50
Qm94LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTkzQ0Y4QjE4NDA1MzUyMDBCRkNFMjcgLyogSW5z
cGVjdG9yV2ViQWdlbnRCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODhBMEUwQjEyNkVGMURC
MDA5NzhGN0EgLyogU1ZHUHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODhB
MEUwQzEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlUcmFpdHMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUIyMjI3QTlBMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjU4MDMsNyArMjU3NjgsNiBAQAogCQkJCTU5QjU5Nzcz
MTEwODY1NkIwMDcxNTlFOCAvKiBCcmlkZ2VKU0MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjU1
QjNEQUYxMjUxRjEyRDAwM0VGMjY5IC8qIEJ1dHRvbklucHV0VHlwZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQTU2OUNGNzBEN0UyQjgyMDA3QzM5ODMgLyogY19jbGFzcy5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQlBNUFDNEFFRjE4MzM2OTc1MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlDRjkwRDdFMkI4MjAwN0MzOTgz
IC8qIGNfaW5zdGFuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlDRkIwRDdFMkI4MjAw
N0MzOTgzIC8qIGNfcnVudGltZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUNGRDBEN0Uy
QjgyMDA3QzM5ODMgLyogY191dGlsaXR5LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjY2ODMsOCAr
MjY2NDcsNyBAQAogCQkJCTgyODg5QjRDMTNDNjIzOTIwMDlBNjE1NiAvKiBJbnNwZWN0b3JTdHls
ZVRleHRFZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcyNzdFNEUxN0QwMThDQzAwMTU1
MzREIC8qIEpTTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3NTQxMzNBQTEwMkUwMEY0MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1NzNEMTM0NzE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5z
cGVjdG9yVHlwZUJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNEYzMjg5QjUxMUE0MkFB
QjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1NzNE
MTM0NzE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUYzODEwQzFCMTM2NUE0OTYwMEVENkUzMyAvKiBJbnNwZWN0b3JXb3Jr
ZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGMzUwQjczNTEzRjEzNzdEMDA4ODBDNDMg
LyogSW5zdHJ1bWVudGluZ0FnZW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjc1MzU2MDBC
MDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3Nzg5
LDE0ICsyNzc1MiwxMiBAQAogCQkJCTQ5OThBRUQxMTNGQjIyNEQwMDkwQjFBQSAvKiBTY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDhBNDg0NzcwRTUy
NzJDNTAwQzNGRTc2IC8qIFNjcmlwdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEx
QzlEQjAwRUIzNjk5NTAwRTQwOURCIC8qIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJNDEwMDJDQ0UwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9u
Q2FsbC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0MUYwNjZFNTBGNjRCQ0Y2MDBBMDdFQUMgLyog
U2NyaXB0T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxRjA2NkU1MEY2NEJDRjYwMEEw
N0VBQyAvKiBTY3JpcHRHbG9iYWxPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYw
MzUxMkIwMjY3NjAwQzFBMzU5IC8qIFNjcmlwdFByb2Nlc3Nvck5vZGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRjMzRjAyODIxMjA5NDdGMjAwRTU3NDNBIC8qIFNjcmlwdFByb2ZpbGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOUY3MjMwNTAxMTE4NEI0MTAwQUQwMTI2IC8qIFNjcmlwdFByb2Zp
bGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCThBNDEzQUUxMTIwN0JCQTUwMDgyMDE2RSAvKiBT
Y3JpcHRSdW5uZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEyN0Q1MzcwRjhBQUIxRDAwRTQy
NEY1IC8qIFNjcmlwdFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTkzNENDMEUxMEVEMzlE
NkYwMEE2NThGMiAvKiBTY3JpcHRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzhBRTM0
RTEyRUEwOTZBMDBFQjNBRTYgLyogU2Nyb2xsYWJsZUFyZWEuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQ0EzQkY2N0MxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDNTExNTZFMTJCMTc0OUMwMEM5Njc1NCAvKiBTY3JvbGxBbmltYXRvck1h
Yy5tbSBpbiBTb3VyY2VzICovLApAQCAtMjc4ODgsNyArMjc4NDksNiBAQAogCQkJCUFBMkE1QUQ1
MTZBNDg2MTQwMDk3NUEyNSAvKiBTcGVlY2hTeW50aGVzaXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQUEyQTVBRDMxNkE0ODYwRDAwOTc1QTI1IC8qIFNwZWVjaFN5bnRoZXNpc0V2ZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUFBMkE1QUQxMTZBNDg2MDcwMDk3NUEyNSAvKiBTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTU1NkMyODgxODMyMDZBODAw
OENCNzIwIC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QUEyQTVBQ0QxNkE0ODVGQTAwOTc1QTI1IC8qIFNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE3OEZFMTNCMTIzNjZCMTAwMEFDRThEMCAvKiBTcGVsbENoZWNrZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjhEQkRCNEQxMzBCMEY4QTAwRjVDREIxIC8qIFNwZWxs
aW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9EaWN0aW9uYXJ5LmgKaW5kZXggOTRkYTg3OC4uZmQ0YmVlNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUg
IkpTRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxi
aW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpA
QCAtOTIsNyArOTIsNyBAQCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IERpY3Rpb25hcnk6Omdl
dEV2ZW50TGlzdGVuZXIoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLAogICAgIGlmICghbV9kaWN0
aW9uYXJ5LmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBTY3JpcHRWYWx1ZSBl
dmVudExpc3RlbmVyOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGV2ZW50TGlzdGVuZXI7
CiAgICAgaWYgKCFtX2RpY3Rpb25hcnkudHJ5R2V0UHJvcGVydHkocHJvcGVydHlOYW1lLCBldmVu
dExpc3RlbmVyKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKGV2ZW50TGlzdGVuZXIuaGFz
Tm9WYWx1ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmlu
ZGluZ1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5n
VXRpbGl0aWVzLmNwcAppbmRleCBiOGYxYmM4Li43YTc3ZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApAQCAtMTc4LDcgKzE3
OCw3IEBAIHN0YXRpYyBKU1ZhbHVlIGdldE50aFZhbHVlT25LZXlQYXRoKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSByb290VmFsdWUsIGNvbnN0IFZlCiAgICAgcmV0dXJuIGN1cnJlbnRWYWx1ZTsK
IH0KIAotc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFs
dWVBbmRLZXlQYXRoKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVlLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgpCitzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlE
QktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKIHsKICAg
ICBWZWN0b3I8U3RyaW5nPiBrZXlQYXRoRWxlbWVudHM7CiAgICAgSURCS2V5UGF0aFBhcnNlRXJy
b3IgZXJyb3I7CkBAIC0yMjgsNyArMjI4LDcgQEAgc3RhdGljIGJvb2wgY2FuSW5qZWN0TnRoVmFs
dWVPbktleVBhdGgoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHJvb3RWYWx1ZSwgY29uc3QKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoRE9N
UmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFNjcmlw
dFZhbHVlJiB2YWx1ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKK2Jvb2wgaW5qZWN0SURC
S2V5SW50b1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBQYXNzUmVm
UHRyPElEQktleT4ga2V5LCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IElE
QktleVBhdGgmIGtleVBhdGgpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJpbmplY3RJREJLZXlJ
bnRvU2NyaXB0VmFsdWUiKTsKIApAQCAtMjU0LDcgKzI1NCw3IEBAIGJvb2wgaW5qZWN0SURCS2V5
SW50b1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBQYXNzUmVmUHRy
PElEQktlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJ
REJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0
YXRlLCBjb25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgp
CitQYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0
aChET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUmIHZhbHVlLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQogewogICAgIExPRyhTdG9y
YWdlQVBJLCAiY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aCIpOwogICAgIEFT
U0VSVCgha2V5UGF0aC5pc051bGwoKSk7CkBAIC0yNzcsNyArMjc3LDcgQEAgUGFzc1JlZlB0cjxJ
REJLZXk+IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoRE9NUmVxdWVzdFN0
YXRlKiByZXF1ZXMKICAgICByZXR1cm4gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5
UGF0aChleGVjLCB2YWx1ZSwga2V5UGF0aC5zdHJpbmcoKSk7CiB9CiAKLWJvb2wgY2FuSW5qZWN0
SURCS2V5SW50b1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBjb25z
dCBTY3JpcHRWYWx1ZSYgc2NyaXB0VmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCiti
b29sIGNhbkluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqIHJlcXVl
c3RTdGF0ZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHNjcmlwdFZhbHVlLCBjb25z
dCBJREJLZXlQYXRoJiBrZXlQYXRoKQogewogICAgIExPRyhTdG9yYWdlQVBJLCAiY2FuSW5qZWN0
SURCS2V5SW50b1NjcmlwdFZhbHVlIik7CiAKQEAgLTI5NCwxNiArMjk0LDE2IEBAIGJvb2wgY2Fu
SW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRl
LCBjb25zdCBTY3JpcHRWCiAgICAgcmV0dXJuIGNhbkluamVjdE50aFZhbHVlT25LZXlQYXRoKGV4
ZWMsIHNjcmlwdFZhbHVlLmpzVmFsdWUoKSwga2V5UGF0aEVsZW1lbnRzLCBrZXlQYXRoRWxlbWVu
dHMuc2l6ZSgpIC0gMSk7CiB9CiAKLVNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWUoRE9N
UmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBwcnBWYWx1ZSkKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFs
dWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBwcnBWYWx1ZSkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSByZXF1ZXN0U3Rh
dGUtPmV4ZWMoKTsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVk
VmFsdWUgPSBwcnBWYWx1ZTsKICAgICBpZiAoc2VyaWFsaXplZFZhbHVlKQotICAgICAgICByZXR1
cm4gU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKGV4ZWMsIHNlcmlhbGl6ZWRWYWx1ZS5nZXQoKSwg
Tm9uVGhyb3dpbmcpOwotICAgIHJldHVybiBTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBqc051bGwo
KSk7CisgICAgICAgIHJldHVybiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKGV4
ZWMsIHNlcmlhbGl6ZWRWYWx1ZS5nZXQoKSwgTm9uVGhyb3dpbmcpOworICAgIHJldHVybiBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBqc051bGwoKSk7CiB9CiAKLVNjcmlwdFZh
bHVlIGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3Rh
dGUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBwcnBCdWZmZXIpCitEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVz
dFN0YXRlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcHJwQnVmZmVyKQogewogICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IHJlcXVlc3RTdGF0ZS0+ZXhlYygpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IHBycEJ1ZmZlcjsKQEAgLTMxMiwxOCArMzEyLDE4IEBAIFNjcmlwdFZhbHVl
IGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUs
IFBhc3NSZWZQdHI8CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZTsKICAgICAgICAgdmFs
dWUuYXBwZW5kKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmVCeXRlcyh2YWx1ZSk7Ci0gICAgICAgIHJldHVybiBTY3Jp
cHRWYWx1ZTo6ZGVzZXJpYWxpemUoZXhlYywgc2VyaWFsaXplZFZhbHVlLmdldCgpLCBOb25UaHJv
d2luZyk7CisgICAgICAgIHJldHVybiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXpl
KGV4ZWMsIHNlcmlhbGl6ZWRWYWx1ZS5nZXQoKSwgTm9uVGhyb3dpbmcpOwogICAgIH0KLSAgICBy
ZXR1cm4gU2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwganNOdWxsKCkpOworICAgIHJldHVybiBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBqc051bGwoKSk7CiB9CiAKLVNjcmlwdFZh
bHVlIGlkYktleVRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIFBh
c3NSZWZQdHI8SURCS2V5PiBrZXkpCitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBpZGJLZXlUb1Nj
cmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBQYXNzUmVmUHRyPElEQktl
eT4ga2V5KQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHJlcXVlc3RTdGF0ZS0+ZXhlYygpOwot
ICAgIHJldHVybiBTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBpZGJLZXlUb0pTVmFsdWUoZXhlYywg
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwg
a2V5LmdldCgpKSk7CisgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKGV4ZWMtPnZt
KCksIGlkYktleVRvSlNWYWx1ZShleGVjLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBrZXkuZ2V0KCkpKTsKIH0KIAotUGFzc1JlZlB0cjxJ
REJLZXk+IHNjcmlwdFZhbHVlVG9JREJLZXkoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUs
IGNvbnN0IFNjcmlwdFZhbHVlJiBzY3JpcHRWYWx1ZSkKK1Bhc3NSZWZQdHI8SURCS2V5PiBzY3Jp
cHRWYWx1ZVRvSURCS2V5KERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYgc2NyaXB0VmFsdWUpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVj
ID0gcmVxdWVzdFN0YXRlLT5leGVjKCk7CiAgICAgcmV0dXJuIGNyZWF0ZUlEQktleUZyb21WYWx1
ZShleGVjLCBzY3JpcHRWYWx1ZS5qc1ZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oCmluZGV4IDkwOGM3ZmQuLmYwMTJhZWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgK
QEAgLTI5LDcgKzI5LDcgQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1
ZGUgIkRpY3Rpb25hcnkuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPGJp
bmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNDEsMTMgKzQxLDEzIEBAIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAog
SURCS2V5UGF0aCBpZGJLZXlQYXRoRnJvbVZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1Zh
bHVlKTsKIAotYm9vbCBpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRl
KiwgUGFzc1JlZlB0cjxJREJLZXk+LCBTY3JpcHRWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsK
LVBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRo
KERPTVJlcXVlc3RTdGF0ZSosIGNvbnN0IFNjcmlwdFZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYp
OwotYm9vbCBjYW5JbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiwg
Y29uc3QgU2NyaXB0VmFsdWUmLCBjb25zdCBJREJLZXlQYXRoJik7Ci1TY3JpcHRWYWx1ZSBkZXNl
cmlhbGl6ZUlEQlZhbHVlKERPTVJlcXVlc3RTdGF0ZSosIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPik7Ci1TY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKERPTVJl
cXVlc3RTdGF0ZSosIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPik7Ci1TY3JpcHRWYWx1ZSBpZGJL
ZXlUb1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSosIFBhc3NSZWZQdHI8SURCS2V5Pik7Ci1Q
YXNzUmVmUHRyPElEQktleT4gc2NyaXB0VmFsdWVUb0lEQktleShET01SZXF1ZXN0U3RhdGUqLCBj
b25zdCBTY3JpcHRWYWx1ZSYpOworYm9vbCBpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoRE9N
UmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxJREJLZXk+LCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYsIGNvbnN0IElEQktleVBhdGgmKTsKK1Bhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlG
cm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKERPTVJlcXVlc3RTdGF0ZSosIGNvbnN0IERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOworYm9vbCBjYW5JbmplY3RJREJL
ZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiwgY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmLCBjb25zdCBJREJLZXlQYXRoJik7CitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBk
ZXNlcmlhbGl6ZUlEQlZhbHVlKERPTVJlcXVlc3RTdGF0ZSosIFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPik7CitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZh
bHVlQnVmZmVyKERPTVJlcXVlc3RTdGF0ZSosIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPik7CitE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBpZGJLZXlUb1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0
ZSosIFBhc3NSZWZQdHI8SURCS2V5Pik7CitQYXNzUmVmUHRyPElEQktleT4gc2NyaXB0VmFsdWVU
b0lEQktleShET01SZXF1ZXN0U3RhdGUqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYp
OwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGlu
Z3NBbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxs
SW5PbmUuY3BwCmluZGV4IDU3Nzk4OWEuLmEzMGY3OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcApAQCAtMTQ5LDcgKzE0OSw2IEBA
CiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAiCiAjaW5jbHVkZSAiU2NyaXB0
Q29udHJvbGxlci5jcHAiCiAjaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIgotI2luY2x1
ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZXIuY3Bw
IgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmNwcCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0
aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAK
aW5kZXggN2VkYjFkNS4uNGMyODgyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNEaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RpY3Rpb25hcnkuY3BwCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiSlNTdG9yYWdlLmgi
CiAjaW5jbHVkZSAiSlNUcmFja0N1c3RvbS5oIgogI2luY2x1ZGUgIkpTVm9pZENhbGxiYWNrLmgi
Ci0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaCIKICNpbmNsdWRlIDxydW50aW1lL0pTVHlwZWRBcnJheXMuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgpAQCAtMTQ0LDkgKzE0Myw5IEBAIHZvaWQgSlNEaWN0aW9uYXJ5Ojpjb252ZXJ0
VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBWZWN0b3I8U3RyaW5nPiYKICAg
ICB9CiB9CiAKLXZvaWQgSlNEaWN0aW9uYXJ5Ojpjb252ZXJ0VmFsdWUoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHZhbHVlLCBTY3JpcHRWYWx1ZSYgcmVzdWx0KQordm9pZCBKU0RpY3Rpb25hcnk6
OmNvbnZlcnRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiByZXN1bHQpCiB7Ci0gICAgcmVzdWx0ID0gU2NyaXB0VmFsdWUoZXhlYy0+
dm0oKSwgdmFsdWUpOworICAgIHJlc3VsdCA9IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKGV4ZWMt
PnZtKCksIHZhbHVlKTsKIH0KIAogdm9pZCBKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZShFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
JiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rp
b25hcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCmluZGV4
IGEyOTA1NmYuLjNhOGUyY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRGljdGlvbmFyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlv
bmFyeS5oCkBAIC0zNCw2ICszNCwxMCBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5o
PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKK25hbWVzcGFjZSBEZXByZWNhdGVkIHsKK2Ns
YXNzIFNjcmlwdFZhbHVlOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFycmF5
VmFsdWU7CkBAIC00Niw3ICs1MCw2IEBAIGNsYXNzIE1lZGlhS2V5RXJyb3I7CiBjbGFzcyBNZWRp
YVN0cmVhbTsKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2s7CiBjbGFzcyBOb2RlOwotY2xhc3MgU2Ny
aXB0VmFsdWU7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiBjbGFzcyBTdG9yYWdlOwog
Y2xhc3MgVHJhY2tCYXNlOwpAQCAtMTA4LDcgKzExMSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IHZvaWQgY29udmVydFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBkb3VibGUm
IHJlc3VsdCk7CiAgICAgc3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpKU1ZhbHVlLCBEaWN0aW9uYXJ5JiByZXN1bHQpOwogICAgIHN0YXRpYyB2b2lkIGNvbnZl
cnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgU3RyaW5nJiByZXN1bHQpOwot
ICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1
ZSwgU2NyaXB0VmFsdWUmIHJlc3VsdCk7CisgICAgc3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgcmVz
dWx0KTsKICAgICBzdGF0aWMgdm9pZCBjb252ZXJ0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTVmFsdWUsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpOwogICAgIHN0YXRpYyB2b2lkIGNvbnZl
cnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4mIHJlc3VsdCk7CiAgICAgc3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBSZWZQdHI8RE9NV2luZG93PiYgcmVzdWx0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVu
dEN1c3RvbS5jcHAKaW5kZXggZmU2YzhiYS4uN2FkMzZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAKQEAg
LTMxLDEzICszMSwxNCBAQAogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yQ2FudmFzSW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSlNDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRl
IDxiaW5kaW5ncy9TY3JpcHRPYmplY3QuaD4KKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CisKICNp
ZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiSlNEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiSlNX
ZWJHTFJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJXZWJHTENvbnRleHRBdHRyaWJ1dGVz
LmgiCiAjZW5kaWYKLSNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiAKQEAgLTg1LDggKzg2LDggQEAgSlNWYWx1ZSBKU0hUTUxDYW52YXNFbGVtZW50OjpnZXRD
b250ZXh0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIEpT
VmFsdWUganNWYWx1ZSA9IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGNv
bnRleHQpKTsKICAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjYW52YXNBZ2VudEVu
YWJsZWQoJmNhbnZhcy5kb2N1bWVudCgpKSkgewotICAgICAgICBTY3JpcHRPYmplY3QgY29udGV4
dE9iamVjdChleGVjLCBqc1ZhbHVlLmdldE9iamVjdCgpKTsKLSAgICAgICAgU2NyaXB0T2JqZWN0
IHdyYXBwZWQ7CisgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBjb250ZXh0T2JqZWN0
KGV4ZWMsIGpzVmFsdWUuZ2V0T2JqZWN0KCkpOworICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRP
YmplY3Qgd3JhcHBlZDsKICAgICAgICAgaWYgKGNvbnRleHQtPmlzMmQoKSkKICAgICAgICAgICAg
IHdyYXBwZWQgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndyYXBDYW52YXMyRFJlbmRlcmlu
Z0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24oJmNhbnZhcy5kb2N1bWVudCgpLCBjb250ZXh0T2Jq
ZWN0KTsKICNpZiBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKaW5kZXggNjk5OWZiZS4u
MGI0NTIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3Rl
ZFNjcmlwdEhvc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcApAQCAtNDQsMTUgKzQ0LDE1IEBACiAjaW5jbHVk
ZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9y
VmFsdWVzLmgiCiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiSlNIVE1M
QWxsQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkpTSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRl
ICJKU05vZGUuaCIKICNpbmNsdWRlICJKU05vZGVMaXN0LmgiCiAjaW5jbHVkZSAiSlNTdG9yYWdl
LmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTdG9yYWdlLmgiCisjaW5j
bHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVj
dG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8cGFyc2VyL1NvdXJjZUNvZGUuaD4KICNpbmNsdWRlIDxy
dW50aW1lL0RhdGVJbnN0YW5jZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KQEAgLTY5
LDIwICs2OSwyMCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLU5vZGUqIEluamVjdGVkU2NyaXB0SG9zdDo6c2NyaXB0VmFsdWVBc05vZGUoU2NyaXB0VmFs
dWUgdmFsdWUpCitOb2RlKiBJbmplY3RlZFNjcmlwdEhvc3Q6OnNjcmlwdFZhbHVlQXNOb2RlKERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHZhbHVlKQogewogICAgIGlmICghdmFsdWUuaXNPYmplY3Qo
KSB8fCB2YWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIHRvTm9k
ZSh2YWx1ZS5qc1ZhbHVlKCkpOwogfQogCi1TY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdEhvc3Q6
Om5vZGVBc1NjcmlwdFZhbHVlKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgTm9kZSogbm9kZSkKK0Rl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0SG9zdDo6bm9kZUFzU2NyaXB0VmFs
dWUoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBOb2RlKiBub2RlKQogewogICAgIGlmICghc2hvdWxk
QWxsb3dBY2Nlc3NUb05vZGUoc3RhdGUsIG5vZGUpKQotICAgICAgICByZXR1cm4gU2NyaXB0VmFs
dWUoc3RhdGUtPnZtKCksIGpzTnVsbCgpKTsKKyAgICAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlKHN0YXRlLT52bSgpLCBqc051bGwoKSk7CiAKICAgICBKU0xvY2tIb2xkZXIgbG9j
ayhzdGF0ZSk7Ci0gICAgcmV0dXJuIFNjcmlwdFZhbHVlKHN0YXRlLT52bSgpLCB0b0pTKHN0YXRl
LCBkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBlKHN0YXRlKSwgbm9kZSkpOworICAg
IHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShzdGF0ZS0+dm0oKSwgdG9KUyhzdGF0ZSwg
ZGVwcmVjYXRlZEdsb2JhbE9iamVjdEZvclByb3RvdHlwZShzdGF0ZSksIG5vZGUpKTsKIH0KIAog
SlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdGVkT2JqZWN0KEV4ZWNTdGF0ZSog
ZXhlYykKQEAgLTk1LDcgKzk1LDcgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6aW5z
cGVjdGVkT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiAKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICBTY3JpcHRWYWx1ZSBzY3Jp
cHRWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
IHNjcmlwdFZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYyk7CiAgICAgaWYgKHNjcmlwdFZhbHVlLmhh
c05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKQEAgLTI0Nyw4ICsy
NDcsOCBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXRFdmVudExpc3RlbmVycyhF
eGVjU3RhdGUqIGV4ZWMpCiBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0KEV4
ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDIpIHsK
LSAgICAgICAgU2NyaXB0VmFsdWUgb2JqZWN0KGV4ZWMtPnZtKCksIGV4ZWMtPnVuY2hlY2tlZEFy
Z3VtZW50KDApKTsKLSAgICAgICAgU2NyaXB0VmFsdWUgaGludHMoZXhlYy0+dm0oKSwgZXhlYy0+
dW5jaGVja2VkQXJndW1lbnQoMSkpOworICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBv
YmplY3QoZXhlYy0+dm0oKSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgICAgICBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBoaW50cyhleGVjLT52bSgpLCBleGVjLT51bmNoZWNrZWRB
cmd1bWVudCgxKSk7CiAgICAgICAgIGltcGwoKS5pbnNwZWN0SW1wbChvYmplY3QudG9JbnNwZWN0
b3JWYWx1ZShleGVjKSwgaGludHMudG9JbnNwZWN0b3JWYWx1ZShleGVjKSk7CiAgICAgfQogICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCmluZGV4IDJkYmUyZGUuLmE2ZGE2NDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2Ny
aXB0TWFuYWdlci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1
c3RvbS5oIgogI2luY2x1ZGUgIkpTSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiSlNN
YWluVGhyZWFkRXhlY1N0YXRlLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisjaW5jbHVk
ZSA8YmluZGluZ3MvU2NyaXB0T2JqZWN0Lmg+CiAjaW5jbHVkZSA8cGFyc2VyL1NvdXJjZUNvZGUu
aD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgogCkBAIC00OSw3ICs0OSw3IEBAIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2NyaXB0T2JqZWN0IElu
amVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBz
b3VyY2UsIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgaW50IGlkKQorRGVwcmVjYXRlZDo6
U2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQo
Y29uc3QgU3RyaW5nJiBzb3VyY2UsIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgaW50IGlk
KQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKHNjcmlwdFN0YXRlKTsKIApAQCAtNjYsMTMgKzY2
LDEzIEBAIFNjcmlwdE9iamVjdCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVk
U2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBKCiAgICAgICAgIGV2YWx1YXRpb25SZXR1cm5W
YWx1ZSA9IEpTQzo6ZXZhbHVhdGUoc2NyaXB0U3RhdGUsIHNvdXJjZUNvZGUsIGdsb2JhbFRoaXNW
YWx1ZSwgJmV2YWx1YXRpb25FeGNlcHRpb24pOwogICAgIH0KICAgICBpZiAoZXZhbHVhdGlvbkV4
Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIFNjcmlwdE9iamVjdCgpOworICAgICAgICByZXR1cm4g
RGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KCk7CiAKICAgICBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUg
PSBldmFsdWF0aW9uUmV0dXJuVmFsdWU7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgQ2Fs
bFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvblZhbHVlLCBjYWxsRGF0YSk7CiAg
ICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKLSAgICAgICAgcmV0dXJuIFNjcmlwdE9i
amVjdCgpOworICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KCk7CiAKICAg
ICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIGFyZ3MuYXBwZW5kKHRvSlMoc2NyaXB0
U3RhdGUsIGdsb2JhbE9iamVjdCwgbV9pbmplY3RlZFNjcmlwdEhvc3QuZ2V0KCkpKTsKQEAgLTgx
LDggKzgxLDggQEAgU2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5q
ZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEoKIAogICAgIEpTVmFsdWUgcmVzdWx0
ID0gSlNDOjpjYWxsKHNjcmlwdFN0YXRlLCBmdW5jdGlvblZhbHVlLCBjYWxsVHlwZSwgY2FsbERh
dGEsIGdsb2JhbFRoaXNWYWx1ZSwgYXJncyk7CiAgICAgaWYgKHJlc3VsdC5pc09iamVjdCgpKQot
ICAgICAgICByZXR1cm4gU2NyaXB0T2JqZWN0KHNjcmlwdFN0YXRlLCByZXN1bHQuZ2V0T2JqZWN0
KCkpOwotICAgIHJldHVybiBTY3JpcHRPYmplY3QoKTsKKyAgICAgICAgcmV0dXJuIERlcHJlY2F0
ZWQ6OlNjcmlwdE9iamVjdChzY3JpcHRTdGF0ZSwgcmVzdWx0LmdldE9iamVjdCgpKTsKKyAgICBy
ZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KCk7CiB9CiAKIGJvb2wgSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyOjpjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coSlNDOjpFeGVjU3RhdGUqIHNjcmlw
dFN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhy
ZWFkRXhlY1N0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVh
ZEV4ZWNTdGF0ZS5jcHAKaW5kZXggNDI5M2E0Ni4uYTU4YzhmNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuY3BwCkBAIC00Niw0
ICs0NiwxMiBAQCB2b2lkIEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6ZGlkTGVhdmVTY3JpcHRDb250
ZXh0KCkKICAgICBNdXRhdGlvbk9ic2VydmVyOjpkZWxpdmVyQWxsTXV0YXRpb25zKCk7CiB9CiAK
K0pTQzo6SlNWYWx1ZSBmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZChKU0M6OkV4ZWNT
dGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBKU0M6OkNhbGxUeXBlIGNh
bGxUeXBlLCBjb25zdCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0YSwgSlNDOjpKU1ZhbHVlIHRoaXNW
YWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzKQoreworICAgIGlmIChpc01haW5UaHJlYWQo
KSkKKyAgICAgICAgcmV0dXJuIEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y2FsbChleGVjLCBmdW5j
dGlvbk9iamVjdCwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MpOworICAgIGVs
c2UKKyAgICAgICAgcmV0dXJuIEpTQzo6Y2FsbChleGVjLCBmdW5jdGlvbk9iamVjdCwgY2FsbFR5
cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRF
eGVjU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNT
dGF0ZS5oCmluZGV4IDMzYjdiZDkuLjJmYTY2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oCkBAIC0yOCw5ICsyOCw3IEBACiAK
ICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlIDxydW50aW1lL0NvbXBsZXRpb24u
aD4KLSNpZm5kZWYgTkRFQlVHCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNlbmRpZgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQyLDcgKzQwLDcgQEAgY2xhc3MgSlNNYWluVGhy
ZWFkRXhlY1N0YXRlIHsKICAgICBmcmllbmQgY2xhc3MgSlNNYWluVGhyZWFkTnVsbFN0YXRlOwog
cHVibGljOgogICAgIHN0YXRpYyBKU0M6OkV4ZWNTdGF0ZSogY3VycmVudFN0YXRlKCkKLSAgICB7
IAorICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgcmV0dXJu
IHNfbWFpblRocmVhZFN0YXRlOwogICAgIH07CkBAIC01Myw4ICs1MSw2IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIEpTQzo6Y2FsbChleGVjLCBmdW5jdGlvbk9iamVjdCwgY2FsbFR5cGUsIGNh
bGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MpOwogICAgIH07CiAKLSAgICBzdGF0aWMgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llIGluc3RydW1lbnRGdW5jdGlvbkNhbGwoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIEpTQzo6Q2FsbFR5cGUsIGNvbnN0IEpTQzo6Q2FsbERhdGEmKTsKLQogICAg
IHN0YXRpYyBKU0M6OkpTVmFsdWUgZXZhbHVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IEpTQzo6U291cmNlQ29kZSYgc291cmNlLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBKU0M6OkpT
VmFsdWUqIGV4Y2VwdGlvbikKICAgICB7CiAgICAgICAgIEpTTWFpblRocmVhZEV4ZWNTdGF0ZSBj
dXJyZW50U3RhdGUoZXhlYyk7CkBAIC02Miw2ICs1OCw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIEpTQzo6ZXZhbHVhdGUoZXhlYywgc291cmNlLCB0aGlzVmFsdWUsIGV4Y2VwdGlvbik7CiAg
ICAgfTsKIAorICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgaW5zdHJ1
bWVudEZ1bmN0aW9uQ2FsbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSlNDOjpDYWxsVHlwZSwg
Y29uc3QgSlNDOjpDYWxsRGF0YSYpOworCiAgICAgZXhwbGljaXQgSlNNYWluVGhyZWFkRXhlY1N0
YXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjKQogICAgICAgICA6IG1fcHJldmlvdXNTdGF0ZShzX21h
aW5UaHJlYWRTdGF0ZSkKICAgICB7CkBAIC0xMTAsNiArMTA4LDggQEAgcHJpdmF0ZToKICAgICBK
U0M6OkV4ZWNTdGF0ZSogbV9wcmV2aW91c1N0YXRlOwogfTsKIAorSlNDOjpKU1ZhbHVlIGZ1bmN0
aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpT
VmFsdWUgZnVuY3Rpb25PYmplY3QsIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0IEpTQzo6
Q2FsbERhdGEmIGNhbGxEYXRhLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFy
Z0xpc3QmIGFyZ3MpOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBKU01h
aW5UaHJlYWRFeGVjU3RhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwCmluZGV4IDBhOWE0YzEuLmM4NGNhMGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAK
QEAgLTUzLDcgKzUzLDcgQEAgSlNWYWx1ZSBKU01lc3NhZ2VFdmVudDo6ZGF0YShFeGVjU3RhdGUq
IGV4ZWMpIGNvbnN0CiAgICAgSlNWYWx1ZSByZXN1bHQ7CiAgICAgc3dpdGNoIChldmVudC5kYXRh
VHlwZSgpKSB7CiAgICAgY2FzZSBNZXNzYWdlRXZlbnQ6OkRhdGFUeXBlU2NyaXB0VmFsdWU6IHsK
LSAgICAgICAgU2NyaXB0VmFsdWUgc2NyaXB0VmFsdWUgPSBldmVudC5kYXRhQXNTY3JpcHRWYWx1
ZSgpOworICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBzY3JpcHRWYWx1ZSA9IGV2ZW50
LmRhdGFBc1NjcmlwdFZhbHVlKCk7CiAgICAgICAgIGlmIChzY3JpcHRWYWx1ZS5oYXNOb1ZhbHVl
KCkpCiAgICAgICAgICAgICByZXN1bHQgPSBqc051bGwoKTsKICAgICAgICAgZWxzZQpAQCAtMTA1
LDcgKzEwNSw3IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUgaGFuZGxlSW5pdE1lc3NhZ2VFdmVudChK
U01lc3NhZ2VFdmVudCoganNFdmVudCwgSlNDOjpFeGVjU3RhCiAgICAgICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0K
LSAgICBTY3JpcHRWYWx1ZSBkYXRhQXJnID0gU2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwgZXhlYy0+
YXJndW1lbnQoMykpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRhdGFBcmcgPSBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBleGVjLT5hcmd1bWVudCgzKSk7CiAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKaW5k
ZXggMDZjNTFjYS4uOTE3M2VkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NoZWR1bGVkQWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y2hlZHVsZWRBY3Rpb24uY3BwCkBAIC0zNyw5ICszNyw5IEBACiAjaW5jbHVkZSAiU2NyaXB0Q29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRl
ICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRl
ICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorI2luY2x1
ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4K
IAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKaW5kZXggNWQ2NmM0ZC4uN2Q2OTVhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFj
dG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNr
RmFjdG9yeS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMu
aCIKICNpbmNsdWRlICJTY3JpcHRDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3Rh
Y2suaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1Njcmlw
dFZhbHVlLmg+CiAjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg+CiAjaW5jbHVkZSA8
aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lSW5saW5lcy5oPgogI2luY2x1ZGUgPGludGVycHJldGVyL1N0
YWNrVmlzaXRvci5oPgpAQCAtMTk5LDEwICsxOTksMTAgQEAgUGFzc1JlZlB0cjxTY3JpcHRDYWxs
U3RhY2s+IGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMKIAogUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgc2tpcEFyZ3VtZW50Q291bnQpCiB7Ci0gICAg
VmVjdG9yPFNjcmlwdFZhbHVlPiBhcmd1bWVudHM7CisgICAgVmVjdG9yPERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlPiBhcmd1bWVudHM7CiAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBleGVjLT5h
cmd1bWVudENvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IHNraXBBcmd1bWVudENvdW50OyBp
IDwgYXJndW1lbnRDb3VudDsgKytpKQotICAgICAgICBhcmd1bWVudHMuYXBwZW5kKFNjcmlwdFZh
bHVlKGV4ZWMtPnZtKCksIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKSk7CisgICAgICAgIGFy
Z3VtZW50cy5hcHBlbmQoRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwgZXhlYy0+
dW5jaGVja2VkQXJndW1lbnQoaSkpKTsKICAgICByZXR1cm4gU2NyaXB0QXJndW1lbnRzOjpjcmVh
dGUoZXhlYywgYXJndW1lbnRzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCAyYzNlZjkzYWYuLjAwN2IwMzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC00MCw3
ICs0MCw2IEBACiAjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxT
dGFjay5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRW
YWx1ZS5oIgogI2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUg
IlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZS5oIgpAQCAtNDgsNiArNDcs
NyBAQAogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlICJucHJ1bnRp
bWVfaW1wbC5oIgogI2luY2x1ZGUgInJ1bnRpbWVfcm9vdC5oIgorI2luY2x1ZGUgPGJpbmRpbmdz
L1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8ZGVidWdnZXIvRGVidWdnZXIuaD4KICNpbmNsdWRl
IDxoZWFwL1N0cm9uZ0lubGluZXMuaD4KICNpbmNsdWRlIDxydW50aW1lL0luaXRpYWxpemVUaHJl
YWRpbmcuaD4KQEAgLTExNyw3ICsxMTcsNyBAQCBKU0RPTVdpbmRvd1NoZWxsKiBTY3JpcHRDb250
cm9sbGVyOjpjcmVhdGVXaW5kb3dTaGVsbChET01XcmFwcGVyV29ybGQmIHdvcmxkKQogICAgIHJl
dHVybiB3aW5kb3dTaGVsbC5nZXQoKTsKIH0KIAotU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxl
cjo6ZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERP
TVdyYXBwZXJXb3JsZCYgd29ybGQpCitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBTY3JpcHRDb250
cm9sbGVyOjpldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29k
ZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKICAgICBjb25zdCBTb3VyY2VDb2RlJiBqc1Nv
dXJjZUNvZGUgPSBzb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpOwogICAgIFN0cmluZyBzb3VyY2VV
UkwgPSBqc1NvdXJjZUNvZGUucHJvdmlkZXIoKS0+dXJsKCk7CkBAIC0xNDksMTQgKzE0OSwxNCBA
QCBTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQoY29uc3QgU2Ny
aXB0U291cmNlQ29kZSYgc291cmNlQ29kZQogICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKSB7
CiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihleGVjLCBldmFsdWF0aW9uRXhjZXB0aW9uLCBzb3Vy
Y2VDb2RlLmNhY2hlZFNjcmlwdCgpKTsKICAgICAgICAgbV9zb3VyY2VVUkwgPSBzYXZlZFNvdXJj
ZVVSTDsKLSAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7CisgICAgICAgIHJldHVybiBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSgpOwogICAgIH0KIAogICAgIG1fc291cmNlVVJMID0gc2F2ZWRT
b3VyY2VVUkw7Ci0gICAgcmV0dXJuIFNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIHJldHVyblZhbHVl
KTsKKyAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwgcmV0dXJu
VmFsdWUpOwogfQogCi1TY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25z
dCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKSAKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
IFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJj
ZUNvZGUpIAogewogICAgIHJldHVybiBldmFsdWF0ZUluV29ybGQoc291cmNlQ29kZSwgbWFpblRo
cmVhZE5vcm1hbFdvcmxkKCkpOwogfQpAQCAtNDU4LDEzICs0NTgsMTMgQEAgdm9pZCBTY3JpcHRD
b250cm9sbGVyOjpjbGVhclNjcmlwdE9iamVjdHMoKQogI2VuZGlmCiB9CiAKLVNjcmlwdFZhbHVl
IFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYg
d29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCitEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3Js
ZChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3Jj
ZVVzZXJHZXN0dXJlKQogewogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0
b3IoZm9yY2VVc2VyR2VzdHVyZSA/IERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUgOiBQ
b3NzaWJseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAgICAgU2NyaXB0U291cmNlQ29kZSBzb3Vy
Y2VDb2RlKHNjcmlwdCwgbV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSk7CiAKICAgICBpZiAoIWNh
bkV4ZWN1dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBpc1BhdXNlZCgpKQotICAg
ICAgICByZXR1cm4gU2NyaXB0VmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlKCk7CiAKICAgICByZXR1cm4gZXZhbHVhdGVJbldvcmxkKHNvdXJjZUNvZGUsIHdv
cmxkKTsKIH0KQEAgLTUwMCwxNiArNTAwLDE2IEBAIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6Y2Fu
RXhlY3V0ZVNjcmlwdHMoUmVhc29uRm9yQ2FsbGluZ0NhbkV4ZWN1dGVTY3JpcHRzIHJlYXNvCiAg
ICAgcmV0dXJuIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuYWxsb3dTY3JpcHQobV9mcmFtZS5z
ZXR0aW5ncygpLmlzU2NyaXB0RW5hYmxlZCgpKTsKIH0KIAotU2NyaXB0VmFsdWUgU2NyaXB0Q29u
dHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVz
ZXJHZXN0dXJlKQorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhl
Y3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQog
ewogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoZm9yY2VVc2VyR2Vz
dHVyZSA/IERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUgOiBQb3NzaWJseVByb2Nlc3Np
bmdVc2VyR2VzdHVyZSk7CiAgICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHQoU2NyaXB0U291cmNlQ29k
ZShzY3JpcHQsIG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpKTsKIH0KIAotU2NyaXB0VmFsdWUg
U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBz
b3VyY2VDb2RlKQorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhl
Y3V0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQogewogICAgIGlm
ICghY2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpIHx8IGlzUGF1c2VkKCkp
Ci0gICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOworICAgICAgICByZXR1cm4gRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUoKTsKIAogICAgIFJlZjxGcmFtZT4gcHJvdGVjdChtX2ZyYW1lKTsgLy8g
U2NyaXB0IGV4ZWN1dGlvbiBjYW4gZGVzdHJveSB0aGUgZnJhbWUsIGFuZCB0aHVzIHRoZSBTY3Jp
cHRDb250cm9sbGVyLgogCkBAIC01MzIsNyArNTMyLDcgQEAgYm9vbCBTY3JpcHRDb250cm9sbGVy
OjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYgdXJsLCBTaG91bGRSZXBsYWNlRG9j
dW0KICAgICBjb25zdCBpbnQgamF2YXNjcmlwdFNjaGVtZUxlbmd0aCA9IHNpemVvZigiamF2YXNj
cmlwdDoiKSAtIDE7CiAKICAgICBTdHJpbmcgZGVjb2RlZFVSTCA9IGRlY29kZVVSTEVzY2FwZVNl
cXVlbmNlcyh1cmwuc3RyaW5nKCkpOwotICAgIFNjcmlwdFZhbHVlIHJlc3VsdCA9IGV4ZWN1dGVT
Y3JpcHQoZGVjb2RlZFVSTC5zdWJzdHJpbmcoamF2YXNjcmlwdFNjaGVtZUxlbmd0aCkpOworICAg
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHJlc3VsdCA9IGV4ZWN1dGVTY3JpcHQoZGVjb2RlZFVS
TC5zdWJzdHJpbmcoamF2YXNjcmlwdFNjaGVtZUxlbmd0aCkpOwogCiAgICAgLy8gSWYgZXhlY3V0
aW5nIHNjcmlwdCBjYXVzZWQgdGhpcyBmcmFtZSB0byBiZSByZW1vdmVkIGZyb20gdGhlIHBhZ2Us
IHdlCiAgICAgLy8gZG9uJ3Qgd2FudCB0byB0cnkgdG8gcmVwbGFjZSBpdHMgZG9jdW1lbnQhCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggMzY2
YjcyNC4uNjdlOTZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuaApAQCAtMzgsNiArMzgsMTAgQEAgT0JKQ19DTEFTUyBKU0NvbnRleHQ7CiAKIHN0
cnVjdCBOUE9iamVjdDsKIAorbmFtZXNwYWNlIERlcHJlY2F0ZWQgeworY2xhc3MgU2NyaXB0VmFs
dWU7Cit9CisKIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAg
IGNsYXNzIEV4ZWNTdGF0ZTsKQEAgLTUzLDcgKzU3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgSFRNTFBsdWdJbkVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIFNjcmlwdFNvdXJj
ZUNvZGU7Ci1jbGFzcyBTY3JpcHRWYWx1ZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3Mg
V2lkZ2V0OwogCkBAIC05NCw5ICs5Nyw5IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGdl
dEFsbFdvcmxkcyhWZWN0b3I8UmVmPERPTVdyYXBwZXJXb3JsZD4+Jik7CiAKLSAgICBTY3JpcHRW
YWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKLSAgICBTY3JpcHRW
YWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdl
c3R1cmUgPSBmYWxzZSk7Ci0gICAgU2NyaXB0VmFsdWUgZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9N
V3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVy
ZSA9IGZhbHNlKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBleGVjdXRlU2NyaXB0KGNv
bnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBleGVj
dXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUgPSBm
YWxzZSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZXhlY3V0ZVNjcmlwdEluV29ybGQo
RE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2Vz
dHVyZSA9IGZhbHNlKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhcmd1bWVudCBpcyBhIEph
dmFTY3JpcHQgVVJMLgogICAgIGJvb2wgZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTChjb25zdCBVUkwm
LCBTaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgc2hvdWxkUmVwbGFjZURvY3Vt
ZW50SWZKYXZhU2NyaXB0VVJMID0gUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMKTsKQEAg
LTEwNSw4ICsxMDgsOCBAQCBwdWJsaWM6CiAgICAgLy8gRGFyd2luIGlzIGFuIGV4Y2VwdGlvbiB0
byB0aGlzIHJ1bGU6IGl0IGlzIE9LIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBmcm9tIGFueSB0aHJl
YWQsIGV2ZW4gcmVlbnRyYW50bHkuCiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGlu
ZygpOwogCi0gICAgU2NyaXB0VmFsdWUgZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYp
OwotICAgIFNjcmlwdFZhbHVlIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2Rl
JiwgRE9NV3JhcHBlcldvcmxkJik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZXZhbHVh
dGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
IGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxk
Jik7CiAKICAgICBXVEY6OlRleHRQb3NpdGlvbiBldmVudEhhbmRsZXJQb3NpdGlvbigpIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1Nl
cnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5j
cHAKaW5kZXggYWRiNTc3OC4uMjNkNGE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtNDEsOCArNDEsOCBAQAogI2luY2x1ZGUg
IlBhZ2VDb25zb2xlLmgiCiAjaW5jbHVkZSAiU2NyaXB0QnJlYWtwb2ludC5oIgogI2luY2x1ZGUg
IlNjcmlwdERlYnVnTGlzdGVuZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1
ZGUgIlNvdW5kLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRl
IDxkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oPgogI2luY2x1ZGUgPHBhcnNlci9Tb3VyY2VQ
cm92aWRlci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CkBAIC0xMzAsMTQgKzEzMCwx
NCBAQCBib29sIFNjcmlwdERlYnVnU2VydmVyOjpjYW5TZXRTY3JpcHRTb3VyY2UoKQogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0U291cmNl
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGJvb2wsIFN0cmluZyosIFNjcmlwdFZhbHVl
KiwgU2NyaXB0T2JqZWN0KikKK2Jvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OnNldFNjcmlwdFNvdXJj
ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sLCBTdHJpbmcqLCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSosIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCopCiB7CiAgICAgLy8gRklY
TUUoNDAzMDApOiBpbXBsZW1lbnQgdGhpcy4KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIAotdm9p
ZCBTY3JpcHREZWJ1Z1NlcnZlcjo6dXBkYXRlQ2FsbFN0YWNrKFNjcmlwdFZhbHVlKikKK3ZvaWQg
U2NyaXB0RGVidWdTZXJ2ZXI6OnVwZGF0ZUNhbGxTdGFjayhEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSopCiB7CiAgICAgLy8gVGhpcyBtZXRob2QgaXMgdXNlZCBmb3IgcmVzdGFydCBmcmFtZSBmZWF0
dXJlIHRoYXQgaXMgbm90IGltcGxlbWVudGVkIHlldC4KICAgICAvLyBGSVhNRSg0MDMwMCk6IGlt
cGxlbWVudCB0aGlzLgpAQCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6
OmRpc3BhdGNoRGlkUGF1c2UoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIpCiAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAganNDYWxsRnJhbWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIH0K
LSAgICBsaXN0ZW5lci0+ZGlkUGF1c2Uoc3RhdGUsIFNjcmlwdFZhbHVlKHN0YXRlLT52bSgpLCBq
c0NhbGxGcmFtZSksIFNjcmlwdFZhbHVlKCkpOworICAgIGxpc3RlbmVyLT5kaWRQYXVzZShzdGF0
ZSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoc3RhdGUtPnZtKCksIGpzQ2FsbEZyYW1lKSwgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUoKSk7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRp
c3BhdGNoRGlkQ29udGludWUoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIpCkBAIC0zMTks
NyArMzE5LDcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y2xlYXJDb21waWxlZFNjcmlwdHMo
KQogICAgIC8vIEZJWE1FKDg5NjUyKTogaW1wbGVtZW50IHRoaXMuCiB9CiAKLXZvaWQgU2NyaXB0
RGVidWdTZXJ2ZXI6OnJ1blNjcmlwdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYsIFNj
cmlwdFZhbHVlKiwgYm9vbCosIFN0cmluZyopCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpydW5T
Y3JpcHQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmLCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSosIGJvb2wqLCBTdHJpbmcqKQogewogICAgIC8vIEZJWE1FKDg5NjUyKTogaW1wbGVtZW50
IHRoaXMuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRE
ZWJ1Z1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2
ZXIuaAppbmRleCAyZmU5YWRhLi5hNzAxOGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJT
Y3JpcHREZWJ1Z0xpc3RlbmVyLmgiCiAjaW5jbHVkZSAiU291cmNlSUQuaCIKICNpbmNsdWRlICJU
aW1lci5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgogI2luY2x1ZGUgPGRl
YnVnZ2VyL0RlYnVnZ2VyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgpAQCAtNTAsMTIgKzUxLDkgQEAgY2xhc3MgRGVidWdnZXJDYWxsRnJhbWU7
CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsKIGNsYXNzIEV4ZWNTdGF0ZTsKIH0KKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBTY3JpcHREZWJ1Z0xpc3RlbmVyOwotY2xhc3MgU2NyaXB0T2Jq
ZWN0OwotY2xhc3MgU2NyaXB0VmFsdWU7Ci0KIGNsYXNzIFNjcmlwdERlYnVnU2VydmVyIDogcHVi
bGljIEpTQzo6RGVidWdnZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjcmlwdERlYnVn
U2VydmVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC02NCw4ICs2Miw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyQnJlYWtwb2ludHMoKTsKIAogICAgIGJvb2wgY2Fu
U2V0U2NyaXB0U291cmNlKCk7Ci0gICAgYm9vbCBzZXRTY3JpcHRTb3VyY2UoY29uc3QgU3RyaW5n
JiBzb3VyY2VJRCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBib29sIHByZXZpZXcsIFN0cmlu
ZyogZXJyb3IsIFNjcmlwdFZhbHVlKiBuZXdDYWxsRnJhbWVzLCBTY3JpcHRPYmplY3QqIHJlc3Vs
dCk7Ci0gICAgdm9pZCB1cGRhdGVDYWxsU3RhY2soU2NyaXB0VmFsdWUqIGNhbGxGcmFtZSk7Cisg
ICAgYm9vbCBzZXRTY3JpcHRTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU3Ry
aW5nJiBuZXdDb250ZW50LCBib29sIHByZXZpZXcsIFN0cmluZyogZXJyb3IsIERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlKiBuZXdDYWxsRnJhbWVzLCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QqIHJl
c3VsdCk7CisgICAgdm9pZCB1cGRhdGVDYWxsU3RhY2soRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUq
IGNhbGxGcmFtZSk7CiAKICAgICBib29sIGNhdXNlc1JlY29tcGlsYXRpb24oKSB7IHJldHVybiB0
cnVlOyB9CiAgICAgYm9vbCBzdXBwb3J0c1NlcGFyYXRlU2NyaXB0Q29tcGlsYXRpb25BbmRFeGVj
dXRpb24oKSB7IHJldHVybiBmYWxzZTsgfQpAQCAtODIsNyArODAsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGNvbXBpbGVTY3JpcHQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIGV4cHJl
c3Npb24sIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBTdHJpbmcqIHNjcmlwdElELCBTdHJpbmcq
IGV4Y2VwdGlvbk1lc3NhZ2UpOwogICAgIHZvaWQgY2xlYXJDb21waWxlZFNjcmlwdHMoKTsKLSAg
ICB2b2lkIHJ1blNjcmlwdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQs
IFNjcmlwdFZhbHVlKiByZXN1bHQsIGJvb2wqIHdhc1Rocm93biwgU3RyaW5nKiBleGNlcHRpb25N
ZXNzYWdlKTsKKyAgICB2b2lkIHJ1blNjcmlwdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0SUQsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKiByZXN1bHQsIGJvb2wqIHdhc1Ro
cm93biwgU3RyaW5nKiBleGNlcHRpb25NZXNzYWdlKTsKIAogICAgIGNsYXNzIFRhc2sgewogICAg
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRHbG9iYWxPYmplY3QuY3BwCnNpbWlsYXJpdHkgaW5kZXggODYlCnJlbmFtZSBmcm9t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHAKcmVuYW1lIHRvIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5jcHAKaW5kZXggMTQy
ZTcyMy4uYThiNWE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9i
YWxPYmplY3QuY3BwCkBAIC0yOSwxMCArMjksMTAgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisjaW5jbHVkZSAiU2NyaXB0R2xvYmFsT2Jq
ZWN0LmgiCiAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLQorI2luY2x1ZGUgPGJpbmRpbmdz
L1NjcmlwdE9iamVjdC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQpAQCAtNDMsMTggKzQzLDYgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1TY3JpcHRPYmplY3Q6OlNjcmlwdE9iamVjdChKU0M6OkV4
ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIEpTT2JqZWN0KiBvYmplY3QpCi0gICAgOiBTY3JpcHRWYWx1
ZShzY3JpcHRTdGF0ZS0+dm0oKSwgb2JqZWN0KQotICAgICwgbV9zY3JpcHRTdGF0ZShzY3JpcHRT
dGF0ZSkKLXsKLX0KLQotU2NyaXB0T2JqZWN0OjpTY3JpcHRPYmplY3QoSlNDOjpFeGVjU3RhdGUq
IHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcHRWYWx1ZSYgc2NyaXB0VmFsdWUpCi0gICAgOiBTY3Jp
cHRWYWx1ZShzY3JpcHRTdGF0ZS0+dm0oKSwgc2NyaXB0VmFsdWUuanNWYWx1ZSgpKQotICAgICwg
bV9zY3JpcHRTdGF0ZShzY3JpcHRTdGF0ZSkKLXsKLX0KLQogc3RhdGljIGJvb2wgaGFuZGxlRXhj
ZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSkKIHsKICAgICBpZiAoIXNjcmlwdFN0
YXRlLT5oYWRFeGNlcHRpb24oKSkKQEAgLTY0LDcgKzUyLDcgQEAgc3RhdGljIGJvb2wgaGFuZGxl
RXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSkKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLWJvb2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQoSlNDOjpFeGVjU3RhdGUqIHNjcmlw
dFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBTY3JpcHRPYmplY3QmIHZhbHVlKQorYm9v
bCBTY3JpcHRHbG9iYWxPYmplY3Q6OnNldChKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNv
bnN0IGNoYXIqIG5hbWUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgdmFsdWUpCiB7
CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soc2NyaXB0U3RhdGUpOwogICAgIHNjcmlwdFN0YXRlLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCktPnB1dERpcmVjdChzY3JpcHRTdGF0ZS0+dm0oKSwgSWRlbnRp
ZmllcihzY3JpcHRTdGF0ZSwgbmFtZSksIHZhbHVlLmpzT2JqZWN0KCkpOwpAQCAtODEsNyArNjks
NyBAQCBib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRT
dGF0ZSwgY29uc3QgY2hhciogbmFtZSwgSW5zcAogfQogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNU
T1IpCiAKLWJvb2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpnZXQoSlNDOjpFeGVjU3RhdGUqIHNjcmlw
dFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBTY3JpcHRPYmplY3QmIHZhbHVlKQorYm9vbCBTY3Jp
cHRHbG9iYWxPYmplY3Q6OmdldChKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNo
YXIqIG5hbWUsIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgdmFsdWUpCiB7CiAgICAgSlNMb2Nr
SG9sZGVyIGxvY2soc2NyaXB0U3RhdGUpOwogICAgIEpTVmFsdWUganNWYWx1ZSA9IHNjcmlwdFN0
YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdldChzY3JpcHRTdGF0ZSwgSWRlbnRpZmllcihz
Y3JpcHRTdGF0ZSwgbmFtZSkpOwpAQCAtOTEsNyArNzksNyBAQCBib29sIFNjcmlwdEdsb2JhbE9i
amVjdDo6Z2V0KEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwg
U2NyaQogICAgIGlmICghanNWYWx1ZS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICB2YWx1ZSA9IFNjcmlwdE9iamVjdChzY3JpcHRTdGF0ZSwgYXNPYmplY3QoanNWYWx1
ZSkpOworICAgIHZhbHVlID0gRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KHNjcmlwdFN0YXRlLCBh
c09iamVjdChqc1ZhbHVlKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5oCnNpbWlsYXJpdHkgaW5kZXggNjQlCmNv
cHkgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmgKY29weSB0
byBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuaAppbmRleCBl
MGQ3ZmQ1Li5iZTFlYTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2Ny
aXB0Q2FsbFN0YWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0R2xv
YmFsT2JqZWN0LmgKQEAgLTEsMTAgKzEsMTAgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDgs
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIAorICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCiAgKiBtZXQ6Ci0gKiAKKyAqCiAgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAog
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgogICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQpAQCAtMTQsNyArMTQsNyBAQAogICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwogICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
ICAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKiAKKyAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiAgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAogICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CkBAIC0yOCw0NSArMjgsNDAgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBTY3Jp
cHRDYWxsU3RhY2tfaAotI2RlZmluZSBTY3JpcHRDYWxsU3RhY2tfaAorI2lmbmRlZiBTY3JpcHRH
bG9iYWxPYmplY3RfaAorI2RlZmluZSBTY3JpcHRHbG9iYWxPYmplY3RfaAogCi0jaWYgRU5BQkxF
KElOU1BFQ1RPUikKLSNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgotI2VuZGlmCitu
YW1lc3BhY2UgRGVwcmVjYXRlZCB7CitjbGFzcyBTY3JpcHRPYmplY3Q7Cit9CiAKLSNpbmNsdWRl
ICJTY3JpcHRDYWxsRnJhbWUuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorbmFtZXNwYWNlIEpT
QyB7CitjbGFzcyBFeGVjU3RhdGU7Cit9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
SW5zcGVjdG9yQXJyYXk7CitjbGFzcyBJbmplY3RlZFNjcmlwdEhvc3Q7CitjbGFzcyBJbnNwZWN0
b3JGcm9udGVuZEhvc3Q7CitjbGFzcyBNZWRpYUNvbnRyb2xzSG9zdDsKIAotY2xhc3MgU2NyaXB0
Q2FsbFN0YWNrIDogcHVibGljIFJlZkNvdW50ZWQ8U2NyaXB0Q2FsbFN0YWNrPiB7CitjbGFzcyBT
Y3JpcHRHbG9iYWxPYmplY3QgewogcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4
Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSA9IDIwMDsKLSAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTY3JpcHRDYWxsU3RhY2s+IGNyZWF0ZShWZWN0b3I8U2NyaXB0Q2FsbEZyYW1lPiYpOwotCi0g
ICAgflNjcmlwdENhbGxTdGFjaygpOwotCi0gICAgY29uc3QgU2NyaXB0Q2FsbEZyYW1lICZhdChz
aXplX3QpIGNvbnN0OwotICAgIHNpemVfdCBzaXplKCkgY29uc3Q7Ci0KLSAgICBib29sIGlzRXF1
YWwoU2NyaXB0Q2FsbFN0YWNrKikgY29uc3Q7Ci0KKyAgICBzdGF0aWMgYm9vbCBzZXQoSlNDOjpF
eGVjU3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmpl
Y3QmKTsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6
OkFycmF5PFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDYWxsRnJhbWU+PiBidWlsZEluc3BlY3RvckFy
cmF5KCkgY29uc3Q7CisgICAgc3RhdGljIGJvb2wgc2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
Y2hhciogbmFtZSwgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Kik7CisgICAgc3RhdGljIGJvb2wgc2V0
KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgSW5qZWN0ZWRTY3JpcHRIb3N0Kik7
CisjZW5kaWYKKyNpZiBFTkFCTEUoTUVESUFfQ09OVFJPTFNfU0NSSVBUKQorICAgIHN0YXRpYyBi
b29sIHNldChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIE1lZGlhQ29udHJvbHNI
b3N0Kik7CiAjZW5kaWYKIAorICAgIHN0YXRpYyBib29sIGdldChKU0M6OkV4ZWNTdGF0ZSosIGNv
bnN0IGNoYXIqIG5hbWUsIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYpOworICAgIHN0YXRpYyBi
b29sIHJlbW92ZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUpOwogcHJpdmF0ZToK
LSAgICBTY3JpcHRDYWxsU3RhY2soVmVjdG9yPFNjcmlwdENhbGxGcmFtZT4mKTsKLQotICAgIFZl
Y3RvcjxTY3JpcHRDYWxsRnJhbWU+IG1fZnJhbWVzOworICAgIFNjcmlwdEdsb2JhbE9iamVjdCgp
IHsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gU2NyaXB0Q2Fs
bFN0YWNrX2gKKyNlbmRpZiAvLyBTY3JpcHRHbG9iYWxPYmplY3RfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
M2ZiZTY3MS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRP
YmplY3QuaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgot
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFNjcmlwdE9iamVj
dF9oCi0jZGVmaW5lIFNjcmlwdE9iamVjdF9oCi0KLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgot
I2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCi0KLSNpbmNsdWRlIDxoZWFwL1N0cm9uZy5oPgotI2lu
Y2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3QuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0gICAg
Y2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OwotCi0gICAgY2xhc3MgU2NyaXB0T2JqZWN0IDog
cHVibGljIFNjcmlwdFZhbHVlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFNjcmlwdE9iamVjdChK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqKTsKLSAgICAgICAgU2NyaXB0T2JqZWN0KEpT
Qzo6RXhlY1N0YXRlKiwgY29uc3QgU2NyaXB0VmFsdWUmKTsKLSAgICAgICAgU2NyaXB0T2JqZWN0
KCkgOiBtX3NjcmlwdFN0YXRlKDApIHsgfQotICAgICAgICBKU0M6OkpTT2JqZWN0KiBqc09iamVj
dCgpIGNvbnN0IHsgcmV0dXJuIGFzT2JqZWN0KGpzVmFsdWUoKSk7IH0KLSAgICAgICAgSlNDOjpF
eGVjU3RhdGUqIHNjcmlwdFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRTdGF0ZTsgfQot
Ci0gICAgcHJvdGVjdGVkOgotICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogbV9zY3JpcHRTdGF0ZTsK
LSAgICB9OwotCi0gICAgY2xhc3MgU2NyaXB0R2xvYmFsT2JqZWN0IHsKLSAgICBwdWJsaWM6Ci0g
ICAgICAgIHN0YXRpYyBib29sIHNldChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUs
IGNvbnN0IFNjcmlwdE9iamVjdCYpOwotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgICAgIHN0
YXRpYyBib29sIHNldChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIEluc3BlY3Rv
ckZyb250ZW5kSG9zdCopOwotI2VuZGlmCi0gICAgICAgIHN0YXRpYyBib29sIGdldChKU0M6OkV4
ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIFNjcmlwdE9iamVjdCYpOwotICAgICAgICBzdGF0
aWMgYm9vbCByZW1vdmUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lKTsKLSAgICBw
cml2YXRlOgotICAgICAgICBTY3JpcHRHbG9iYWxPYmplY3QoKSB7IH0KLSAgICB9OwotCi19Ci0K
LSNlbmRpZiAvLyBTY3JpcHRPYmplY3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRQcm9maWxlLmNwcAppbmRleCA0NTA1MGFlLi4yMTI0NDkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmNwcApAQCAtMzAsOCArMzAsOCBAQAogCiAj
aW5jbHVkZSAiU2NyaXB0UHJvZmlsZS5oIgogCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgi
CiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3Rv
clZhbHVlcy5oPgogI2luY2x1ZGUgPHByb2ZpbGVyL1Byb2ZpbGUuaD4KICNpbmNsdWRlIDxwcm9m
aWxlci9Qcm9maWxlTm9kZS5oPgogCkBAIC03NCwxNiArNzQsMTYgQEAgZG91YmxlIFNjcmlwdFBy
b2ZpbGU6OmlkbGVUaW1lKCkgY29uc3QKIH0KIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi1zdGF0
aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlPiBidWls
ZEluc3BlY3Rvck9iamVjdEZvcihjb25zdCBKU0M6OlByb2ZpbGVOb2RlKiBub2RlKQorc3RhdGlj
IFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGVO
b2RlPiBidWlsZEluc3BlY3Rvck9iamVjdEZvcihjb25zdCBKU0M6OlByb2ZpbGVOb2RlKiBub2Rl
KQogewogICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxKU0M6OlByb2ZpbGVOb2RlPj4gUHJvZmls
ZU5vZGVzTGlzdDsKICAgICBjb25zdCBQcm9maWxlTm9kZXNMaXN0JiBub2RlQ2hpbGRyZW4gPSBu
b2RlLT5jaGlsZHJlbigpOwogICAgIFByb2ZpbGVOb2Rlc0xpc3Q6OmNvbnN0X2l0ZXJhdG9yIGVu
ZCA9IG5vZGVDaGlsZHJlbi5lbmQoKTsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5
cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+PiBjaGlsZHJlbiA9IFR5cGVCdWls
ZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlPjo6Y3JlYXRl
KCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZT4+IGNoaWxkcmVuID0gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UHJvZmlsZXI6
OkNQVVByb2ZpbGVOb2RlPjo6Y3JlYXRlKCk7CiAgICAgZm9yIChQcm9maWxlTm9kZXNMaXN0Ojpj
b25zdF9pdGVyYXRvciBpdGVyID0gbm9kZUNoaWxkcmVuLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyAr
K2l0ZXIpCiAgICAgICAgIGNoaWxkcmVuLT5hZGRJdGVtKGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9y
KGl0ZXItPmdldCgpKSk7CiAKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQ
cm9maWxlTm9kZT4gcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9k
ZTo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UHJvZmlsZXI6
OkNQVVByb2ZpbGVOb2RlPiByZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9maWxl
cjo6Q1BVUHJvZmlsZU5vZGU6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRGdW5jdGlvbk5hbWUobm9k
ZS0+ZnVuY3Rpb25OYW1lKCkpCiAgICAgICAgIC5zZXRVcmwobm9kZS0+dXJsKCkpCiAgICAgICAg
IC5zZXRMaW5lTnVtYmVyKG5vZGUtPmxpbmVOdW1iZXIoKSkKQEAgLTk2LDEyICs5NiwxMiBAQCBz
dGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlPiBi
dWlsZEluc3BlY3Rvck9iamVjdEZvcgogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQog
Ci1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+IFNjcmlw
dFByb2ZpbGU6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9ySGVhZCgpIGNvbnN0CitQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZT4gU2NyaXB0
UHJvZmlsZTo6YnVpbGRJbnNwZWN0b3JPYmplY3RGb3JIZWFkKCkgY29uc3QKIHsKICAgICByZXR1
cm4gYnVpbGRJbnNwZWN0b3JPYmplY3RGb3IobV9wcm9maWxlLT5oZWFkKCkpOwogfQogCi1QYXNz
UmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+IFNjcmlwdFByb2Zp
bGU6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9yQm90dG9tVXBIZWFkKCkgY29uc3QKK1Bhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlPiBTY3Jp
cHRQcm9maWxlOjpidWlsZEluc3BlY3Rvck9iamVjdEZvckJvdHRvbVVwSGVhZCgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRQcm9maWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9m
aWxlLmgKaW5kZXggODA5NWZlOC4uM2IyNDM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdFByb2ZpbGUuaApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0jaW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1
aWxkZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCIKICNlbmRpZgog
CiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQ0LDggKzQ0LDYgQEAgY2xhc3MgUHJvZmlsZTsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbnNwZWN0b3JPYmplY3Q7Ci0KIGNsYXNzIFNjcmlw
dFByb2ZpbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxTY3JpcHRQcm9maWxlPiB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8U2NyaXB0UHJvZmlsZT4gY3JlYXRlKFBhc3NSZWZQdHI8SlND
OjpQcm9maWxlPiBwcm9maWxlKTsKQEAgLTU3LDggKzU1LDggQEAgcHVibGljOgogICAgIGRvdWJs
ZSBpZGxlVGltZSgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBQYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+IGJ1aWxkSW5zcGVjdG9y
T2JqZWN0Rm9ySGVhZCgpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlByb2Zp
bGVyOjpDUFVQcm9maWxlTm9kZT4gYnVpbGRJbnNwZWN0b3JPYmplY3RGb3JCb3R0b21VcEhlYWQo
KSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlByb2ZpbGVy
OjpDUFVQcm9maWxlTm9kZT4gYnVpbGRJbnNwZWN0b3JPYmplY3RGb3JIZWFkKCkgY29uc3Q7Cisg
ICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmls
ZU5vZGU+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9yQm90dG9tVXBIZWFkKCkgY29uc3Q7CiAjZW5k
aWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdFByb2ZpbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2Zp
bGVyLmNwcAppbmRleCBmZGUyN2QwLi5mYzkzOThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuY3BwCkBAIC0zNSw4ICszNSw5IEBACiAjaW5jbHVkZSAi
SlNET01XaW5kb3cuaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJQYWdlLmgi
Ci0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKKyNp
bmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3QuaD4KKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3Jp
cHRWYWx1ZS5oPgogI2luY2x1ZGUgPHByb2ZpbGVyL0xlZ2FjeVByb2ZpbGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KIApAQCAtNDcsMTIgKzQ4LDEyIEBAIHZvaWQgU2NyaXB0UHJvZmls
ZXI6OmNvbGxlY3RHYXJiYWdlKCkKICAgICBnY0NvbnRyb2xsZXIoKS5nYXJiYWdlQ29sbGVjdFNv
b24oKTsKIH0KIAotU2NyaXB0T2JqZWN0IFNjcmlwdFByb2ZpbGVyOjpvYmplY3RCeUhlYXBPYmpl
Y3RJZCh1bnNpZ25lZCkKK0RlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBTY3JpcHRQcm9maWxlcjo6
b2JqZWN0QnlIZWFwT2JqZWN0SWQodW5zaWduZWQpCiB7Ci0gICAgcmV0dXJuIFNjcmlwdE9iamVj
dCgpOworICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QoKTsKIH0KIAotdW5zaWdu
ZWQgU2NyaXB0UHJvZmlsZXI6OmdldEhlYXBPYmplY3RJZChjb25zdCBTY3JpcHRWYWx1ZSYpCit1
bnNpZ25lZCBTY3JpcHRQcm9maWxlcjo6Z2V0SGVhcE9iamVjdElkKGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJikKIHsKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRQcm9maWxlci5oCmluZGV4IDcyN2M2ZWUuLmMyZmRkMjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuaApAQCAtMjgsMjAgKzI4LDI0
IEBACiAjZGVmaW5lIFNjcmlwdFByb2ZpbGVyX2gKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RF
QlVHR0VSKQorCiAjaW5jbHVkZSAiU2NyaXB0SGVhcFNuYXBzaG90LmgiCiAjaW5jbHVkZSAiU2Ny
aXB0UHJvZmlsZS5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCituYW1lc3BhY2UgRGVwcmVj
YXRlZCB7CitjbGFzcyBTY3JpcHRPYmplY3Q7CitjbGFzcyBTY3JpcHRWYWx1ZTsKK30KKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFeHRlcm5hbEFycmF5VmlzaXRvcjsKIGNsYXNzIEV4
dGVybmFsU3RyaW5nVmlzaXRvcjsKIGNsYXNzIFdyYXBwZWROb2RlVmlzaXRvcjsKIGNsYXNzIFBh
Z2U7Ci1jbGFzcyBTY3JpcHRPYmplY3Q7Ci1jbGFzcyBTY3JpcHRWYWx1ZTsKIGNsYXNzIFdvcmtl
ckdsb2JhbFNjb3BlOwogCiBjbGFzcyBTY3JpcHRQcm9maWxlciB7CkBAIC01Nyw4ICs2MSw4IEBA
IHB1YmxpYzoKICAgICB9OwogCiAgICAgc3RhdGljIHZvaWQgY29sbGVjdEdhcmJhZ2UoKTsKLSAg
ICBzdGF0aWMgU2NyaXB0T2JqZWN0IG9iamVjdEJ5SGVhcE9iamVjdElkKHVuc2lnbmVkIGlkKTsK
LSAgICBzdGF0aWMgdW5zaWduZWQgZ2V0SGVhcE9iamVjdElkKGNvbnN0IFNjcmlwdFZhbHVlJik7
CisgICAgc3RhdGljIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBvYmplY3RCeUhlYXBPYmplY3RJ
ZCh1bnNpZ25lZCBpZCk7CisgICAgc3RhdGljIHVuc2lnbmVkIGdldEhlYXBPYmplY3RJZChjb25z
dCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYpOwogICAgIHN0YXRpYyB2b2lkIHN0YXJ0KEpTQzo6
RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAgICAgc3RhdGljIHZvaWQgc3RhcnRG
b3JQYWdlKFBhZ2UqLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKICAgICBzdGF0aWMgdm9pZCBzdGFy
dEZvcldvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlKiwgY29uc3QgU3RyaW5nJiB0
aXRsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaAppbmRleCAzNDlk
OTRhLi43MGQxNGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgK
QEAgLTEsMTEgKzEsMTEgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMTEgR29vZ2xl
IEluYy4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKKyAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKICAqIG1ldDoKLSAqIAorICoKICAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CiAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCkBAIC0xNSw3ICsxNSw3IEBACiAgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCiAgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQogICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
IAorICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKICAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCiAgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKQEAgLTM0
LDcgKzM0LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBFeGVjU3RhdGU7Ci1jbGFzcyBK
U0dsb2JhbE9iamVjdDsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggNmY4
NmM4Yi4uMTRhZjQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAiSlNN
ZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIkpTTmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlci5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxsaW1p
dHM+CkBAIC0yMDAyLDEwICsyMDAxLDEwIEBAIEpTVmFsdWUgU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpkZXNlcmlhbGl6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iCiB9CiAK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotU2NyaXB0VmFsdWUgU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpkZXNlcmlhbGl6ZUZvckluc3BlY3RvcihKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUpCitE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXpl
Rm9ySW5zcGVjdG9yKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSkKIHsKICAgICBKU1ZhbHVl
IHZhbHVlID0gZGVzZXJpYWxpemUoc2NyaXB0U3RhdGUsIHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCksIDApOwotICAgIHJldHVybiBTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZS0+dm0o
KSwgdmFsdWUpOworICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShzY3JpcHRTdGF0
ZS0+dm0oKSwgdmFsdWUpOwogfQogI2VuZGlmCiAKQEAgLTIwNDksNiArMjA0OCwyMyBAQCBQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpib29s
ZWFuVmFsdWUoYm9vbCB2YWx1ZQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VyaWFsaXplZFNj
cmlwdFZhbHVlKGJ1ZmZlcikpOwogfQogCitQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpzZXJpYWxpemUoY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmIHZhbHVlLCBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIFNlcmlhbGl6YXRp
b25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQoreworICAgIHJldHVybiBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmNyZWF0ZShzY3JpcHRTdGF0ZSwgdmFsdWUuanNWYWx1ZSgpLCBudWxscHRyLCBu
dWxscHRyLCB0aHJvd0V4Y2VwdGlvbnMpOworfQorCitQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpzZXJpYWxpemUoY29uc3QgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIE1lc3Nh
Z2VQb3J0QXJyYXkqIG1lc3NhZ2VQb3J0cywgQXJyYXlCdWZmZXJBcnJheSogYXJyYXlCdWZmZXJz
LCBib29sJiBkaWRUaHJvdykKK3sKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBz
ZXJpYWxpemVkVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzY3JpcHRTdGF0
ZSwgdmFsdWUuanNWYWx1ZSgpLCBtZXNzYWdlUG9ydHMsIGFycmF5QnVmZmVycyk7CisgICAgZGlk
VGhyb3cgPSBzY3JpcHRTdGF0ZS0+aGFkRXhjZXB0aW9uKCk7CisgICAgcmV0dXJuIHNlcmlhbGl6
ZWRWYWx1ZS5yZWxlYXNlKCk7Cit9CisKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBT
ZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93
RXhjZXB0aW9ucykKK3sKKyAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoc2NyaXB0
U3RhdGUtPnZtKCksIHZhbHVlLT5kZXNlcmlhbGl6ZShzY3JpcHRTdGF0ZSwgc2NyaXB0U3RhdGUt
PmxleGljYWxHbG9iYWxPYmplY3QoKSwgMCwgdGhyb3dFeGNlcHRpb25zKSk7Cit9CisKIHZvaWQg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjptYXliZVRocm93RXhjZXB0aW9uSWZTZXJpYWxpemF0aW9u
RmFpbGVkKEV4ZWNTdGF0ZSogZXhlYywgU2VyaWFsaXphdGlvblJldHVybkNvZGUgY29kZSkKIHsK
ICAgICBpZiAoY29kZSA9PSBTdWNjZXNzZnVsbHlDb21wbGV0ZWQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDY5ZDI1ZjYu
Ljg1OTgxYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjZGVmaW5lIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZV9oCiAKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdz
L1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8aGVhcC9TdHJvbmcuaD4KICNpbmNsdWRlIDxydW50
aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CkBAIC01
Nyw3ICs1OCw2IEBAIGVudW0gU2VyaWFsaXphdGlvblJldHVybkNvZGUgewogICAgIAogZW51bSBT
ZXJpYWxpemF0aW9uRXJyb3JNb2RlIHsgTm9uVGhyb3dpbmcsIFRocm93aW5nIH07CiAKLWNsYXNz
IFNjcmlwdFZhbHVlOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBTZXJpYWxpemVkU2Ny
aXB0VmFsdWUgOgpAQCAtNjcsOCArNjcsNyBAQCBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWUg
OgogICAgIHB1YmxpYyBSZWZDb3VudGVkPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gewogI2VuZGlm
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBj
cmVhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIE1lc3NhZ2VQb3J0QXJyYXkqLCBB
cnJheUJ1ZmZlckFycmF5KiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcpOworICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpKU1ZhbHVlLCBNZXNzYWdlUG9ydEFycmF5KiwgQXJyYXlCdWZmZXJBcnJheSos
IFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVm
LCBNZXNzYWdlUG9ydEFycmF5KiwgQXJyYXlCdWZmZXJBcnJheSosIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVh
dGUoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogCkBA
IC04Myw2ICs4MiwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiB1bmRlZmluZWRWYWx1ZSgpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gYm9vbGVhblZhbHVlKGJvb2wgdmFsdWUpOwogCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemUoY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBKU0M6OkV4ZWNTdGF0ZSosIFNlcmlhbGl6YXRpb25FcnJv
ck1vZGUgPSBUaHJvd2luZyk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBzZXJpYWxpemUoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBKU0M6OkV4
ZWNTdGF0ZSosIE1lc3NhZ2VQb3J0QXJyYXkqLCBBcnJheUJ1ZmZlckFycmF5KiwgYm9vbCYpOwor
ICAgIHN0YXRpYyBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZShKU0M6OkV4ZWNT
dGF0ZSosIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBU
aHJvd2luZyk7CisKICAgICBzdGF0aWMgdWludDMyX3Qgd2lyZUZvcm1hdFZlcnNpb24oKTsKIAog
ICAgIFN0cmluZyB0b1N0cmluZygpOwpAQCAtOTIsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgSlNW
YWx1ZVJlZiBkZXNlcmlhbGl6ZShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7
CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIFNjcmlwdFZhbHVlIGRlc2VyaWFsaXplRm9y
SW5zcGVjdG9yKEpTQzo6RXhlY1N0YXRlKik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUg
ZGVzZXJpYWxpemVGb3JJbnNwZWN0b3IoSlNDOjpFeGVjU3RhdGUqKTsKICNlbmRpZgogCiAgICAg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xs
ZXIuY3BwCmluZGV4IDI5MGIxZjEuLjVkZTYwNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0zMSwxMiArMzEs
MTIgQEAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1
ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2lu
Y2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyT2JqZWN0UHJveHku
aCIKICNpbmNsdWRlICJXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5oIgogI2luY2x1ZGUgIldvcmtl
clRocmVhZC5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8
aGVhcC9TdHJvbmdJbmxpbmVzLmg+CiAjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
aD4KICNpbmNsdWRlIDxydW50aW1lL0NvbXBsZXRpb24uaD4KQEAgLTExMyw3ICsxMTMsNyBAQCB2
b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNv
ZGUmIHNvdXJjZUNvZGUpCiAgICAgaWYgKGlzRXhlY3V0aW9uRm9yYmlkZGVuKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFNjcmlwdFZhbHVlIGV4Y2VwdGlvbjsKKyAgICBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSBleGNlcHRpb247CiAgICAgZXZhbHVhdGUoc291cmNlQ29kZSwgJmV4Y2VwdGlv
bik7CiAgICAgaWYgKGV4Y2VwdGlvbi5qc1ZhbHVlKCkpIHsKICAgICAgICAgSlNMb2NrSG9sZGVy
IGxvY2sodm0oKSk7CkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9s
bGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQogICAgIH0K
IH0KIAotdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRT
b3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBTY3JpcHRWYWx1ZSogZXhjZXB0aW9uKQordm9pZCBXb3Jr
ZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3Vy
Y2VDb2RlLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSogZXhjZXB0aW9uKQogewogICAgIGlmIChp
c0V4ZWN1dGlvbkZvcmJpZGRlbigpKQogICAgICAgICByZXR1cm47CkBAIC0xNDUsMTMgKzE0NSwx
MyBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNv
dXJjZUNvZGUmIHNvdXJjZUNvZGUsIFNjcmlwdAogICAgICAgICBpbnQgY29sdW1uTnVtYmVyID0g
MDsKICAgICAgICAgU3RyaW5nIHNvdXJjZVVSTCA9IHNvdXJjZUNvZGUudXJsKCkuc3RyaW5nKCk7
CiAgICAgICAgIGlmIChtX3dvcmtlckdsb2JhbFNjb3BlLT5zYW5pdGl6ZVNjcmlwdEVycm9yKGVy
cm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwsIHNvdXJjZUNv
ZGUuY2FjaGVkU2NyaXB0KCkpKQotICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IFNjcmlwdFZhbHVl
KCptX3ZtLCBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMs
IGVycm9yTWVzc2FnZS5pbXBsKCkpKSk7CisgICAgICAgICAgICAqZXhjZXB0aW9uID0gRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUoKm1fdm0sIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywg
Y3JlYXRlRXJyb3IoZXhlYywgZXJyb3JNZXNzYWdlLmltcGwoKSkpKTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IFNjcmlwdFZhbHVlKCptX3ZtLCBldmFsdWF0aW9uRXhj
ZXB0aW9uKTsKKyAgICAgICAgICAgICpleGNlcHRpb24gPSBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSgqbV92bSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAgICAgfQogfQogCi12b2lkIFdvcmtlclNj
cmlwdENvbnRyb2xsZXI6OnNldEV4Y2VwdGlvbihjb25zdCBTY3JpcHRWYWx1ZSYgZXhjZXB0aW9u
KQordm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpzZXRFeGNlcHRpb24oY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmIGV4Y2VwdGlvbikKIHsKICAgICBtX3dvcmtlckdsb2JhbFNjb3Bl
V3JhcHBlci0+Z2xvYmFsRXhlYygpLT52bSgpLnRocm93RXhjZXB0aW9uKG1fd29ya2VyR2xvYmFs
U2NvcGVXcmFwcGVyLT5nbG9iYWxFeGVjKCksIGV4Y2VwdGlvbi5qc1ZhbHVlKCkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5o
CmluZGV4IDhiYjdmNDkuLjAyNWMzN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKQEAgLTMzLDE1ICszMywxOCBAQAogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCituYW1l
c3BhY2UgRGVwcmVjYXRlZCB7CitjbGFzcyBTY3JpcHRWYWx1ZTsKK30KKwogbmFtZXNwYWNlIEpT
QyB7Ci0gICAgY2xhc3MgVk07CitjbGFzcyBWTTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgY2xhc3MgSlNXb3JrZXJHbG9iYWxTY29wZTsKICAgICBjbGFzcyBTY3JpcHRTb3VyY2VD
b2RlOwotICAgIGNsYXNzIFNjcmlwdFZhbHVlOwogICAgIGNsYXNzIFdvcmtlckdsb2JhbFNjb3Bl
OwogCiAgICAgY2xhc3MgV29ya2VyU2NyaXB0Q29udHJvbGxlciB7CkBAIC01Nyw5ICs2MCw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZXZhbHVhdGUo
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYpOwotICAgICAgICB2b2lkIGV2YWx1YXRlKGNvbnN0IFNj
cmlwdFNvdXJjZUNvZGUmLCBTY3JpcHRWYWx1ZSogZXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCBl
dmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUq
IGV4Y2VwdGlvbik7CiAKLSAgICAgICAgdm9pZCBzZXRFeGNlcHRpb24oY29uc3QgU2NyaXB0VmFs
dWUmKTsKKyAgICAgICAgdm9pZCBzZXRFeGNlcHRpb24oY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUmKTsKIAogICAgICAgICAvLyBBc3luYyByZXF1ZXN0IHRvIHRlcm1pbmF0ZSBhIEpTIHJ1
biBleGVjdXRpb24uIEV2ZW50dWFsbHkgY2F1c2VzIHRlcm1pbmF0aW9uCiAgICAgICAgIC8vIGV4
Y2VwdGlvbiByYWlzZWQgZHVyaW5nIEpTIGV4ZWN1dGlvbiwgaWYgdGhlIHdvcmtlciB0aHJlYWQg
aGFwcGVucyB0byBydW4gSlMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGFmMDQ0MmEuLmE2OGY3ZGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0z
MjM0LDcgKzMyMzQsNyBAQCBteSAlbmF0aXZlVHlwZSA9ICgKICAgICAiU2VyaWFsaXplZFNjcmlw
dFZhbHVlIiA9PiAiUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4iLAogICAgICJEYXRlIiA9
PiAiZG91YmxlIiwKICAgICAiRGljdGlvbmFyeSIgPT4gIkRpY3Rpb25hcnkiLAotICAgICJhbnki
ID0+ICJTY3JpcHRWYWx1ZSIsCisgICAgImFueSIgPT4gIkRlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
IiwKICAgICAiYm9vbGVhbiIgPT4gImJvb2wiLAogICAgICJkb3VibGUiID0+ICJkb3VibGUiLAog
ICAgICJmbG9hdCIgPT4gImZsb2F0IiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggOTMxZGIyNi4uNzc2NGM4NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5jcHAKQEAgLTE2NTEsNyArMTY1MSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqQW55QXR0
cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
Q2FzdDxKU1Rlc3RPYmoqPih0aGlzT2JqZWN0KTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOwotICAgIFNjcmlwdFZhbHVlIG5hdGl2ZVZhbHVlKGV4ZWMtPnZtKCksIHZh
bHVlKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBuYXRpdmVWYWx1ZShleGVjLT52bSgp
LCB2YWx1ZSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47
CiAgICAgaW1wbC5zZXRBbnlBdHRyaWJ1dGUobmF0aXZlVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0
b21FdmVudC5jcHAKaW5kZXggYjBmYmE5OS4uZDVlZjBiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0N1c3RvbUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9t
RXZlbnQuY3BwCkBAIC00OCw3ICs0OCw3IEBAIEN1c3RvbUV2ZW50Ojp+Q3VzdG9tRXZlbnQoKQog
ewogfQogCi12b2lkIEN1c3RvbUV2ZW50Ojppbml0Q3VzdG9tRXZlbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBTY3JpcHRW
YWx1ZSYgZGV0YWlsKQordm9pZCBDdXN0b21FdmVudDo6aW5pdEN1c3RvbUV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGRldGFpbCkKIHsKICAgICBBU1NFUlQoIW1fc2VyaWFs
aXplZFNjcmlwdFZhbHVlLmdldCgpKTsKICAgICBpZiAoZGlzcGF0Y2hlZCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Q3VzdG9tRXZlbnQuaAppbmRleCBiYzg5MDk2Li43ZjRjMWNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9t
RXZlbnQuaApAQCAtMjcsMTUgKzI3LDE1IEBACiAjZGVmaW5lIEN1c3RvbUV2ZW50X2gKIAogI2lu
Y2x1ZGUgIkV2ZW50LmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBDdXN0b21FdmVudEluaXQgOiBwdWJsaWMg
RXZlbnRJbml0IHsKICAgICBDdXN0b21FdmVudEluaXQoKTsKIAotICAgIFNjcmlwdFZhbHVlIGRl
dGFpbDsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBkZXRhaWw7CiB9OwogCiBjbGFzcyBD
dXN0b21FdmVudCA6IHB1YmxpYyBFdmVudCB7CkBAIC01MiwxOCArNTIsMTggQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEN1c3RvbUV2ZW50KHR5cGUsIGluaXRpYWxpemVy
KSk7CiAgICAgfQogCi0gICAgdm9pZCBpbml0Q3VzdG9tRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBTY3JpcHRWYWx1
ZSYgZGV0YWlsKTsKKyAgICB2b2lkIGluaXRDdXN0b21FdmVudChjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiBkZXRhaWwpOwogCiAgICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBldmVu
dEludGVyZmFjZSgpIGNvbnN0OwogCi0gICAgY29uc3QgU2NyaXB0VmFsdWUmIGRldGFpbCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGV0YWlsOyB9CisgICAgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUmIGRldGFpbCgpIGNvbnN0IHsgcmV0dXJuIG1fZGV0YWlsOyB9CiAgICAgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpIHsgcmV0dXJuIG1f
c2VyaWFsaXplZFNjcmlwdFZhbHVlOyB9CiAKIHByaXZhdGU6CiAgICAgQ3VzdG9tRXZlbnQoKTsK
ICAgICBDdXN0b21FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEN1c3RvbUV2
ZW50SW5pdCYgaW5pdGlhbGl6ZXIpOwogCi0gICAgU2NyaXB0VmFsdWUgbV9kZXRhaWw7CisgICAg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgbV9kZXRhaWw7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gbV9zZXJpYWxpemVkU2NyaXB0VmFsdWU7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9N
ZXNzYWdlRXZlbnQuY3BwCmluZGV4IGZkODY5NzguLjQzODhjOWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9N
ZXNzYWdlRXZlbnQuY3BwCkBAIC0yMSwxNCArMjEsMTMgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKgog
ICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKIAot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkU291cmNl
KEV2ZW50VGFyZ2V0KiBzb3VyY2UpCkBAIC01Niw3ICs1NSw3IEBAIE1lc3NhZ2VFdmVudDo6TWVz
c2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVzc2FnZUV2ZW50SW5p
dCYgaW5pCiB7CiB9CiAKLU1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KGNvbnN0IFNjcmlwdFZh
bHVlJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJ
ZCwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gc291cmNlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0
QXJyYXk+IHBvcnRzKQorTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoY29uc3QgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcm
IGxhc3RFdmVudElkLCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBzb3VyY2UsIFBhc3NPd25QdHI8
TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMpCiAgICAgOiBFdmVudChldmVudE5hbWVzKCkubWVzc2Fn
ZUV2ZW50LCBmYWxzZSwgZmFsc2UpCiAgICAgLCBtX2RhdGFUeXBlKERhdGFUeXBlU2NyaXB0VmFs
dWUpCiAgICAgLCBtX2RhdGFBc1NjcmlwdFZhbHVlKGRhdGEpCkBAIC0xMDgsNyArMTA3LDcgQEAg
TWVzc2FnZUV2ZW50Ojp+TWVzc2FnZUV2ZW50KCkKIHsKIH0KIAotdm9pZCBNZXNzYWdlRXZlbnQ6
OmluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBTY3JpcHRWYWx1ZSYgZGF0YSwgY29uc3QgU3RyaW5n
JiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIERPTVdpbmRvdyogc291cmNlLCBQ
YXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzKQordm9pZCBNZXNzYWdlRXZlbnQ6Omlu
aXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwg
Ym9vbCBjYW5jZWxhYmxlLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZGF0YSwgY29u
c3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIERPTVdpbmRvdyog
c291cmNlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzKQogewogICAgIGlmIChk
aXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NZXNzYWdlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaApp
bmRleCBiOTdhNzAzLi42ODYwZDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVz
c2FnZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCkBAIC0z
Miw4ICszMiw4IEBACiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIK
ICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5j
bHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0
VmFsdWUuaD4KICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgRXZlbnRUYXJnZXQ7CiBzdHJ1Y3QgTWVz
c2FnZUV2ZW50SW5pdCA6IHB1YmxpYyBFdmVudEluaXQgewogICAgIE1lc3NhZ2VFdmVudEluaXQo
KTsKIAotICAgIFNjcmlwdFZhbHVlIGRhdGE7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUg
ZGF0YTsKICAgICBTdHJpbmcgb3JpZ2luOwogICAgIFN0cmluZyBsYXN0RXZlbnRJZDsKICAgICBS
ZWZQdHI8RXZlbnRUYXJnZXQ+IHNvdXJjZTsKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZXNzYWdlRXZlbnQpOwogICAgIH0KLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShQYXNzT3duUHRyPE1lc3Nh
Z2VQb3J0QXJyYXk+IHBvcnRzLCBjb25zdCBTY3JpcHRWYWx1ZSYgZGF0YSA9IFNjcmlwdFZhbHVl
KCksIGNvbnN0IFN0cmluZyYgb3JpZ2luID0gU3RyaW5nKCksIGNvbnN0IFN0cmluZyYgbGFzdEV2
ZW50SWQgPSBTdHJpbmcoKSwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gc291cmNlID0gMCkKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShQYXNzT3duUHRyPE1lc3Nh
Z2VQb3J0QXJyYXk+IHBvcnRzLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZGF0YSA9
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCksIGNvbnN0IFN0cmluZyYgb3JpZ2luID0gU3RyaW5n
KCksIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQgPSBTdHJpbmcoKSwgUGFzc1JlZlB0cjxFdmVu
dFRhcmdldD4gc291cmNlID0gMCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
TWVzc2FnZUV2ZW50KGRhdGEsIG9yaWdpbiwgbGFzdEV2ZW50SWQsIHNvdXJjZSwgcG9ydHMpKTsK
ICAgICB9CkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+TWVz
c2FnZUV2ZW50KCk7CiAKLSAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBTY3JpcHRW
YWx1ZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50
SWQsIERPTVdpbmRvdyogc291cmNlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+KTsKKyAg
ICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIERP
TVdpbmRvdyogc291cmNlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+KTsKICAgICB2b2lk
IGluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0
YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIERPTVdp
bmRvdyogc291cmNlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+KTsKIAogICAgIGNvbnN0
IFN0cmluZyYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KQEAgLTEwNyw3ICsx
MDcsNyBAQCBwdWJsaWM6CiAgICAgICAgIERhdGFUeXBlQXJyYXlCdWZmZXIKICAgICB9OwogICAg
IERhdGFUeXBlIGRhdGFUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhVHlwZTsgfQotICAgIGNv
bnN0IFNjcmlwdFZhbHVlJiBkYXRhQXNTY3JpcHRWYWx1ZSgpIGNvbnN0IHsgQVNTRVJUKG1fZGF0
YVR5cGUgPT0gRGF0YVR5cGVTY3JpcHRWYWx1ZSk7IHJldHVybiBtX2RhdGFBc1NjcmlwdFZhbHVl
OyB9CisgICAgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGRhdGFBc1NjcmlwdFZhbHVl
KCkgY29uc3QgeyBBU1NFUlQobV9kYXRhVHlwZSA9PSBEYXRhVHlwZVNjcmlwdFZhbHVlKTsgcmV0
dXJuIG1fZGF0YUFzU2NyaXB0VmFsdWU7IH0KICAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gZGF0YUFzU2VyaWFsaXplZFNjcmlwdFZhbHVlKCkgY29uc3QgeyBBU1NFUlQobV9k
YXRhVHlwZSA9PSBEYXRhVHlwZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7IHJldHVybiBtX2RhdGFB
c1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsgfQogICAgIFN0cmluZyBkYXRhQXNTdHJpbmcoKSBjb25z
dCB7IEFTU0VSVChtX2RhdGFUeXBlID09IERhdGFUeXBlU3RyaW5nKTsgcmV0dXJuIG1fZGF0YUFz
U3RyaW5nOyB9CiAgICAgQmxvYiogZGF0YUFzQmxvYigpIGNvbnN0IHsgQVNTRVJUKG1fZGF0YVR5
cGUgPT0gRGF0YVR5cGVCbG9iKTsgcmV0dXJuIG1fZGF0YUFzQmxvYi5nZXQoKTsgfQpAQCAtMTE2
LDcgKzExNiw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgTWVzc2FnZUV2ZW50KCk7CiAgICAg
TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IE1lc3NhZ2VFdmVudEluaXQm
KTsKLSAgICBNZXNzYWdlRXZlbnQoY29uc3QgU2NyaXB0VmFsdWUmIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBQYXNzUmVmUHRyPEV2ZW50VGFy
Z2V0PiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4pOworICAgIE1lc3NhZ2VF
dmVudChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBv
cmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+
IHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5Pik7CiAgICAgTWVzc2FnZUV2ZW50
KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9y
aWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4g
c291cmNlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+KTsKIAogICAgIGV4cGxpY2l0IE1l
c3NhZ2VFdmVudChjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luKTsKQEAg
LTEyNCw3ICsxMjQsNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IE1lc3NhZ2VFdmVudChQYXNz
UmVmUHRyPEFycmF5QnVmZmVyPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbik7CiAKICAgICBE
YXRhVHlwZSBtX2RhdGFUeXBlOwotICAgIFNjcmlwdFZhbHVlIG1fZGF0YUFzU2NyaXB0VmFsdWU7
CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgbV9kYXRhQXNTY3JpcHRWYWx1ZTsKICAgICBS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX2RhdGFBc1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTsKICAgICBTdHJpbmcgbV9kYXRhQXNTdHJpbmc7CiAgICAgUmVmUHRyPEJsb2I+IG1fZGF0YUFz
QmxvYjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5oCmluZGV4IDIyMTkzYTQuLjU2ODIzNDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaApAQCAtMjgsMTQgKzI4LDE0IEBACiAjZGVm
aW5lIFBvcFN0YXRlRXZlbnRfaAogCiAjaW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNsdWRlICJTY3Jp
cHRWYWx1ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RydWN0IFBvcFN0YXRlRXZlbnRJbml0IDogcHVibGljIEV2ZW50SW5p
dCB7CiAgICAgUG9wU3RhdGVFdmVudEluaXQoKTsKIAotICAgIFNjcmlwdFZhbHVlIHN0YXRlOwor
ICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHN0YXRlOwogfTsKIAogY2xhc3MgSGlzdG9yeTsK
QEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBvcFN0YXRl
RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBQb3BTdGF0ZUV2ZW50SW5p
dCYpOwogCiAgICAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRT
dGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VyaWFsaXplZFN0YXRlOyB9Ci0gICAgY29uc3QgU2Ny
aXB0VmFsdWUmIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQorICAgIGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0K
ICAgICBIaXN0b3J5KiBoaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9oaXN0b3J5LmdldCgpOyB9
CiAKICAgICB2aXJ0dWFsIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Q7CkBA
IC01OSw3ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgUG9wU3RhdGVFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmLCBjb25zdCBQb3BTdGF0ZUV2ZW50SW5pdCYpOwogICAgIGV4cGxpY2l0IFBvcFN0YXRl
RXZlbnQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPEhpc3Rv
cnk+KTsKIAotICAgIFNjcmlwdFZhbHVlIG1fc3RhdGU7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUgbV9zdGF0ZTsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX3Nlcmlh
bGl6ZWRTdGF0ZTsKICAgICBSZWZQdHI8SGlzdG9yeT4gbV9oaXN0b3J5OwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFbGVtZW50LmNwcAppbmRleCAxNTdjNGNhLi5kOTY4NzVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCkBAIC00MiwxMSArNDIsMTEgQEAKICNpbmNsdWRlICJT
Y3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0UnVubmVyLmgiCiAjaW5jbHVkZSAi
U2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAi
U2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHROb2RlVHJhdmVyc2FsLmgiCisj
aW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0hhc2guaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCmluZGV4IDc0NDhiZDkuLjY2ZjdmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcApAQCAtMTMyLDggKzEzMiw5IEBACiAjaWYgRU5BQkxFKE1FRElBX0NPTlRS
T0xTX1NDUklQVCkKICNpbmNsdWRlICJKU01lZGlhQ29udHJvbHNIb3N0LmgiCiAjaW5jbHVkZSAi
TWVkaWFDb250cm9sc0hvc3QuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRl
ICJTY3JpcHRHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJVc2VyQWdlbnRTY3JpcHRzLmgiCisj
aW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0T2JqZWN0Lmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAppbmRleCBl
ZDczMGI0Li43ZmY0Y2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Y
U1NBdWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9y
LmNwcApAQCAtMzcsMTcgKzM3LDE1IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVk
ZSAiSFRNTFBhcmFtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKLSNp
bmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1
ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJYTGlua05hbWVzLmgiCi0KLSNp
ZiBFTkFCTEUoU1ZHKQotI2luY2x1ZGUgIlNWR05hbWVzLmgiCi0jZW5kaWYKLQogI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CiAKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlNWR05hbWVz
LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRv
ckRlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxl
Z2F0ZS5jcHAKaW5kZXggYWQzM2UwMC4uZDA2MDY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuY3BwCkBAIC0zNSwxMiArMzUsMTQgQEAK
ICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVl
cy5oIgogI2luY2x1ZGUgIlBpbmdMb2FkZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCit1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFhTU0F1
ZGl0b3JEZWxlZ2F0ZTo6WFNTQXVkaXRvckRlbGVnYXRlKERvY3VtZW50JiBkb2N1bWVudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9y
LnB5IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkK
aW5kZXggYTk5NTUzMC4uYTFkYjFiNyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKQEAgLTI2Miw3ICsyNjIsNyBAQCBjbGFzcyBS
YXdUeXBlcyhvYmplY3QpOgogCiAgICAgICAgIEBjbGFzc21ldGhvZAogICAgICAgICBkZWYgZ2V0
X3Jhd192YWxpZGF0b3JfY2FsbF90ZXh0KGNscyk6Ci0gICAgICAgICAgICByZXR1cm4gIlJ1bnRp
bWVDYXN0SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3RvclZhbHVlOjpUeXBlJXM+IiAlIGNscy5n
ZXRfdmFsaWRhdGVfbWV0aG9kX3BhcmFtcygpLnRlbXBsYXRlX3R5cGUKKyAgICAgICAgICAgIHJl
dHVybiAiUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yOjpJbnNwZWN0b3JW
YWx1ZTo6VHlwZSVzPiIgJSBjbHMuZ2V0X3ZhbGlkYXRlX21ldGhvZF9wYXJhbXMoKS50ZW1wbGF0
ZV90eXBlCiAKICAgICBjbGFzcyBTdHJpbmcoQmFzZVR5cGUpOgogICAgICAgICBAc3RhdGljbWV0
aG9kCkBAIC00NTEsNyArNDUxLDcgQEAgY2xhc3MgUmF3VHlwZXMob2JqZWN0KToKIAogICAgICAg
ICBAc3RhdGljbWV0aG9kCiAgICAgICAgIGRlZiBnZXRfYXJyYXlfaXRlbV9yYXdfY190eXBlX3Rl
eHQoKToKLSAgICAgICAgICAgIHJldHVybiAiSW5zcGVjdG9yT2JqZWN0IgorICAgICAgICAgICAg
cmV0dXJuICJJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCIKIAogICAgICAgICBAc3RhdGljbWV0
aG9kCiAgICAgICAgIGRlZiBnZXRfcmF3X3R5cGVfbW9kZWwoKToKQEAgLTQ4Niw3ICs0ODYsNyBA
QCBjbGFzcyBSYXdUeXBlcyhvYmplY3QpOgogCiAgICAgICAgIEBzdGF0aWNtZXRob2QKICAgICAg
ICAgZGVmIGdldF9hcnJheV9pdGVtX3Jhd19jX3R5cGVfdGV4dCgpOgotICAgICAgICAgICAgcmV0
dXJuICJJbnNwZWN0b3JWYWx1ZSIKKyAgICAgICAgICAgIHJldHVybiAiSW5zcGVjdG9yOjpJbnNw
ZWN0b3JWYWx1ZSIKIAogICAgICAgICBAc3RhdGljbWV0aG9kCiAgICAgICAgIGRlZiBnZXRfcmF3
X3R5cGVfbW9kZWwoKToKQEAgLTUyOSw3ICs1MjksNyBAQCBjbGFzcyBSYXdUeXBlcyhvYmplY3Qp
OgogCiAgICAgICAgIEBzdGF0aWNtZXRob2QKICAgICAgICAgZGVmIGdldF9hcnJheV9pdGVtX3Jh
d19jX3R5cGVfdGV4dCgpOgotICAgICAgICAgICAgcmV0dXJuICJJbnNwZWN0b3JBcnJheSIKKyAg
ICAgICAgICAgIHJldHVybiAiSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSIKIAogICAgICAgICBA
c3RhdGljbWV0aG9kCiAgICAgICAgIGRlZiBnZXRfcmF3X3R5cGVfbW9kZWwoKToKQEAgLTU5MCw3
ICs1OTAsNyBAQCBjbGFzcyBDb21tYW5kUmV0dXJuUGFzc01vZGVsOgogICAgICAgICAgICAgc2Vs
Zi52YXJfdHlwZSA9IHZhcl90eXBlCiAKICAgICAgICAgZGVmIGdldF9yZXR1cm5fdmFyX3R5cGUo
c2VsZik6Ci0gICAgICAgICAgICByZXR1cm4gIlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8JXM+IiAl
IHNlbGYudmFyX3R5cGUKKyAgICAgICAgICAgIHJldHVybiAiSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6T3B0T3V0cHV0PCVzPiIgJSBzZWxmLnZhcl90eXBlCiAKICAgICAgICAgQHN0YXRpY21ldGhv
ZAogICAgICAgICBkZWYgZ2V0X291dHB1dF9hcmd1bWVudF9wcmVmaXgoKToKQEAgLTYwMSw3ICs2
MDEsNyBAQCBjbGFzcyBDb21tYW5kUmV0dXJuUGFzc01vZGVsOgogICAgICAgICAgICAgcmV0dXJu
ICIlcy5nZXRWYWx1ZSgpIgogCiAgICAgICAgIGRlZiBnZXRfb3V0cHV0X3BhcmFtZXRlcl90eXBl
KHNlbGYpOgotICAgICAgICAgICAgcmV0dXJuICJUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PCVzPioi
ICUgc2VsZi52YXJfdHlwZQorICAgICAgICAgICAgcmV0dXJuICJJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpPcHRPdXRwdXQ8JXM+KiIgJSBzZWxmLnZhcl90eXBlCiAKICAgICAgICAgQHN0YXRpY21l
dGhvZAogICAgICAgICBkZWYgZ2V0X3NldF9yZXR1cm5fY29uZGl0aW9uKCk6CkBAIC03MTIsMTAg
KzcxMiwxMCBAQCBjbGFzcyBUeXBlTW9kZWw6CiAgICAgICAgICAgICBUeXBlTW9kZWwuVmFsdWVU
eXBlLl9faW5pdF9fKHNlbGYsICJpbnQiLCBGYWxzZSkKIAogICAgICAgICBkZWYgZ2V0X2lucHV0
X3BhcmFtX3R5cGVfdGV4dChzZWxmKToKLSAgICAgICAgICAgIHJldHVybiAiVHlwZUJ1aWxkZXI6
OkV4YWN0bHlJbnQiCisgICAgICAgICAgICByZXR1cm4gIkluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkV4YWN0bHlJbnQiCiAKICAgICAgICAgZGVmIGdldF9vcHRfb3V0cHV0X3R5cGVfKHNlbGYpOgot
ICAgICAgICAgICAgcmV0dXJuICJUeXBlQnVpbGRlcjo6RXhhY3RseUludCIKKyAgICAgICAgICAg
IHJldHVybiAiSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RXhhY3RseUludCIKIAogICAgIEBjbGFz
c21ldGhvZAogICAgIGRlZiBpbml0X2NsYXNzKGNscyk6CkBAIC03MjYsOSArNzI2LDkgQEAgY2xh
c3MgVHlwZU1vZGVsOgogICAgICAgICAgICAgY2xzLkludCA9IGNscy5WYWx1ZVR5cGUoImludCIs
IEZhbHNlKQogICAgICAgICBjbHMuTnVtYmVyID0gY2xzLlZhbHVlVHlwZSgiZG91YmxlIiwgRmFs
c2UpCiAgICAgICAgIGNscy5TdHJpbmcgPSBjbHMuVmFsdWVUeXBlKCJTdHJpbmciLCBUcnVlLCkK
LSAgICAgICAgY2xzLk9iamVjdCA9IGNscy5SZWZQdHJCYXNlZCgiSW5zcGVjdG9yT2JqZWN0IikK
LSAgICAgICAgY2xzLkFycmF5ID0gY2xzLlJlZlB0ckJhc2VkKCJJbnNwZWN0b3JBcnJheSIpCi0g
ICAgICAgIGNscy5BbnkgPSBjbHMuUmVmUHRyQmFzZWQoIkluc3BlY3RvclZhbHVlIikKKyAgICAg
ICAgY2xzLk9iamVjdCA9IGNscy5SZWZQdHJCYXNlZCgiSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3QiKQorICAgICAgICBjbHMuQXJyYXkgPSBjbHMuUmVmUHRyQmFzZWQoIkluc3BlY3Rvcjo6SW5z
cGVjdG9yQXJyYXkiKQorICAgICAgICBjbHMuQW55ID0gY2xzLlJlZlB0ckJhc2VkKCJJbnNwZWN0
b3I6Okluc3BlY3RvclZhbHVlIikKIAogVHlwZU1vZGVsLmluaXRfY2xhc3MoKQogCkBAIC04Mzcs
OCArODM3LDggQEAgY2xhc3MgVHlwZUJpbmRpbmdzOgogCiAgICAgICAgIGNsYXNzIEhlbHBlcjoK
ICAgICAgICAgICAgIGlzX2FkX2hvYyA9IEZhbHNlCi0gICAgICAgICAgICBmdWxsX25hbWVfcHJl
Zml4X2Zvcl91c2UgPSAiVHlwZUJ1aWxkZXI6OiIgKyBjb250ZXh0X2RvbWFpbl9uYW1lICsgIjo6
IgotICAgICAgICAgICAgZnVsbF9uYW1lX3ByZWZpeF9mb3JfaW1wbCA9ICJUeXBlQnVpbGRlcjo6
IiArIGNvbnRleHRfZG9tYWluX25hbWUgKyAiOjoiCisgICAgICAgICAgICBmdWxsX25hbWVfcHJl
Zml4X2Zvcl91c2UgPSAiSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6IiArIGNvbnRleHRfZG9tYWlu
X25hbWUgKyAiOjoiCisgICAgICAgICAgICBmdWxsX25hbWVfcHJlZml4X2Zvcl9pbXBsID0gIklu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OiIgKyBjb250ZXh0X2RvbWFpbl9uYW1lICsgIjo6IgogCiAg
ICAgICAgICAgICBAc3RhdGljbWV0aG9kCiAgICAgICAgICAgICBkZWYgd3JpdGVfZG9jKHdyaXRl
cik6CkBAIC05MjgsNyArOTI4LDcgQEAgY2xhc3MgVHlwZUJpbmRpbmdzOgogCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIGVudW1fYmluZGluZ19jbHMubmVlZF9pbnRlcm5hbF9y
dW50aW1lX2Nhc3RfOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVy
LmFwcGVuZCgiI2lmICVzXG4iICUgVkFMSURBVE9SX0lGREVGX05BTUUpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgIHN0YXRpYyB2b2lkIGFz
c2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpO1xuIikKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgc3RhdGljIHZvaWQg
YXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVlKTtcbiIp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKCIjZW5k
aWYgIC8vICVzXG4iICUgVkFMSURBVE9SX0lGREVGX05BTUUpCiAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcl93cml0ZXIgPSBnZW5lcmF0ZV9jb250ZXh0LnZh
bGlkYXRvcl93cml0ZXIKQEAgLTkzOCw3ICs5MzgsNyBAQCBjbGFzcyBUeXBlQmluZGluZ3M6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkb21haW5fZ3VhcmQ6CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluX2d1YXJkLmdlbmVyYXRl
X29wZW4odmFsaWRhdG9yX3dyaXRlcikKIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCJ2b2lkICVzJXM6OmFzc2VydENvcnJlY3RW
YWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpXG4iICUgKGhlbHBlci5mdWxsX25hbWVfcHJlZml4
X2Zvcl9pbXBsLCBlbnVtX25hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCJ2b2lkICVzJXM6OmFzc2VydENvcnJlY3RWYWx1
ZShJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiB2YWx1ZSlcbiIgJSAoaGVscGVyLmZ1bGxfbmFt
ZV9wcmVmaXhfZm9yX2ltcGwsIGVudW1fbmFtZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoIntcbiIpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoIiAgICBXVEY6
OlN0cmluZyBzO1xuIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlk
YXRvcl93cml0ZXIubmV3bGluZSgiICAgIGJvb2wgY2FzdF9yZXMgPSB2YWx1ZS0+YXNTdHJpbmco
JnMpO1xuIikKQEAgLTk4MCw3ICs5ODAsNyBAQCBjbGFzcyBUeXBlQmluZGluZ3M6CiAKICAgICAg
ICAgICAgICAgICAgICAgQHN0YXRpY21ldGhvZAogICAgICAgICAgICAgICAgICAgICBkZWYgZ2V0
X3NldHRlcl92YWx1ZV9leHByZXNzaW9uX3BhdHRlcm4oKToKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAiVHlwZUJ1aWxkZXI6OmdldEVudW1Db25zdGFudFZhbHVlKCVzKSIKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAiSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Z2V0RW51
bUNvbnN0YW50VmFsdWUoJXMpIgogCiAgICAgICAgICAgICAgICAgICAgIEBzdGF0aWNtZXRob2QK
ICAgICAgICAgICAgICAgICAgICAgZGVmIHJlZHVjZV90b19yYXdfdHlwZSgpOgpAQCAtMTE3Miw5
ICsxMTcyLDkgQEAgY2xhc3MgVHlwZUJpbmRpbmdzOgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3cml0ZXIuYXBwZW5kKGNsYXNzX25hbWUpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdyaXRlci5hcHBlbmQoIiA6IHB1YmxpYyAiKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiBpc19vcGVuX3R5cGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3cml0ZXIuYXBwZW5kKCJJbnNwZWN0b3JPYmplY3QiKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVuZCgiSW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3QiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVuZCgiSW5zcGVjdG9yT2Jq
ZWN0QmFzZSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBw
ZW5kKCJJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdEJhc2UiKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKCIge1xuIikKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoInB1YmxpYzpcbiIpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFkX2hvY190eXBlX3dyaXRlciA9IHdyaXRlci5pbnNlcnRfd3JpdGVy
KCIgICAgIikKQEAgLTEyMzQsNyArMTIzNCw3IEBAIGNsYXNzIFR5cGVCaW5kaW5nczoKIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZV9tdWx0aWxpbmUoQ29k
ZUdlbmVyYXRvckluc3BlY3RvclN0cmluZ3MuY2xhc3NfYmluZGluZ19idWlsZGVyX3BhcnRfNCkK
IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgIHR5
cGVkZWYgVHlwZUJ1aWxkZXI6OlN0cnVjdEl0ZW1UcmFpdHMgSXRlbVRyYWl0cztcbiIpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgdHlwZWRlZiBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpTdHJ1Y3RJdGVtVHJhaXRzIEl0ZW1UcmFpdHM7XG4iKQog
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwcm9wX2RhdGEgaW4gcmVzb2x2
ZV9kYXRhLm9wdGlvbmFsX3Byb3BlcnRpZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwcm9wX25hbWUgPSBwcm9wX2RhdGEucFsibmFtZSJdCkBAIC0xMjUxLDI1ICsxMjUx
LDI1IEBAIGNsYXNzIFR5cGVCaW5kaW5nczoKIAogCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiBzZXR0ZXJfbmFtZSBpbiBJTlNQRUNUT1JfT0JKRUNUX1NFVFRFUl9OQU1F
UzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGlu
ZSgiICAgIHVzaW5nIEluc3BlY3Rvck9iamVjdEJhc2U6OiVzO1xuXG4iICUgc2V0dGVyX25hbWUp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUo
IiAgICB1c2luZyBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdEJhc2U6OiVzO1xuXG4iICUgc2V0
dGVyX25hbWUpCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2xhc3NfYmlu
ZGluZ19jbHMubmVlZF91c2VyX3J1bnRpbWVfY2FzdF86Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgIHN0YXRpYyBQYXNzUmVmUHRyPCVzPiBy
dW50aW1lQ2FzdChQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSlcbiIgJSBjbGFzc19u
YW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUo
IiAgICBzdGF0aWMgUGFzc1JlZlB0cjwlcz4gcnVudGltZUNhc3QoUGFzc1JlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3RvclZhbHVlPiB2YWx1ZSlcbiIgJSBjbGFzc19uYW1lKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICB7XG4iKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICAgICAgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0O1xuIikKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdD4gb2JqZWN0O1xuIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgICAgIGJvb2wgY2FzdFJlcyA9IHZhbHVlLT5hc09i
amVjdCgmb2JqZWN0KTtcbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
cml0ZXIubmV3bGluZSgiICAgICAgICBBU1NFUlRfVU5VU0VEKGNhc3RSZXMsIGNhc3RSZXMpO1xu
IikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQoIiNp
ZiAlc1xuIiAlIFZBTElEQVRPUl9JRkRFRl9OQU1FKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICAgICAgYXNzZXJ0Q29ycmVjdFZhbHVlKG9i
amVjdC5nZXQoKSk7XG4iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3Jp
dGVyLmFwcGVuZCgiI2VuZGlmICAvLyAlc1xuIiAlIFZBTElEQVRPUl9JRkRFRl9OQU1FKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICAgICAg
Q09NUElMRV9BU1NFUlQoc2l6ZW9mKCVzKSA9PSBzaXplb2YoSW5zcGVjdG9yT2JqZWN0QmFzZSks
IHR5cGVfY2FzdF9wcm9ibGVtKTtcbiIgJSBjbGFzc19uYW1lKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PCVzKj4oc3RhdGljX2Nhc3Q8SW5zcGVjdG9yT2JqZWN0QmFzZSo+KG9iamVjdC5nZXQoKSkp
O1xuIiAlIGNsYXNzX25hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
cml0ZXIubmV3bGluZSgiICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoJXMpID09IHNpemVv
ZihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdEJhc2UpLCB0eXBlX2Nhc3RfcHJvYmxlbSk7XG4i
ICUgY2xhc3NfbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRl
ci5uZXdsaW5lKCIgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDwlcyo+KHN0YXRpY19jYXN0PElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0QmFzZSo+KG9iamVjdC5nZXQoKSkpO1xuIiAlIGNsYXNz
X25hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGlu
ZSgiICAgIH1cbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIu
YXBwZW5kKCJcbiIpCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2xhc3Nf
YmluZGluZ19jbHMubmVlZF9pbnRlcm5hbF9ydW50aW1lX2Nhc3RfOgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVuZCgiI2lmICVzXG4iICUgVkFMSURBVE9S
X0lGREVGX05BTUUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIu
bmV3bGluZSgiICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1
ZSogdmFsdWUpO1xuIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRl
ci5uZXdsaW5lKCIgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3Rvcjo6
SW5zcGVjdG9yVmFsdWUqIHZhbHVlKTtcbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3cml0ZXIuYXBwZW5kKCIjZW5kaWYgIC8vICVzXG4iICUgVkFMSURBVE9SX0lGREVG
X05BTUUpCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlZF9maWVs
ZF9zZXQgPSAoY29udGV4dF9kb21haW5fbmFtZSArICIuIiArIGNsYXNzX25hbWUpIG5vdCBpbiBU
WVBFU19XSVRIX09QRU5fRklFTERfTElTVF9TRVQKQEAgLTEyODEsNyArMTI4MSw3IEBAIGNsYXNz
IFR5cGVCaW5kaW5nczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRv
bWFpbl9ndWFyZDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21h
aW5fZ3VhcmQuZ2VuZXJhdGVfb3Blbih2YWxpZGF0b3Jfd3JpdGVyKQogCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoInZvaWQgJXMl
czo6YXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSlcbiIgJSAoaGVscGVy
LmZ1bGxfbmFtZV9wcmVmaXhfZm9yX2ltcGwsIGNsYXNzX25hbWUpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCJ2b2lkICVzJXM6
OmFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiB2YWx1ZSlcbiIg
JSAoaGVscGVyLmZ1bGxfbmFtZV9wcmVmaXhfZm9yX2ltcGwsIGNsYXNzX25hbWUpKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCJ7
XG4iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRl
ci5uZXdsaW5lKCIgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0O1xuIikKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcl93cml0ZXIubmV3bGluZSgi
ICAgIGJvb2wgY2FzdFJlcyA9IHZhbHVlLT5hc09iamVjdCgmb2JqZWN0KTtcbiIpCkBAIC0xNTE5
LDcgKzE1MTksNyBAQCBjbGFzcyBUeXBlQmluZGluZ3M6CiAKICAgICAgICAgICAgICAgICAgICAg
QGNsYXNzbWV0aG9kCiAgICAgICAgICAgICAgICAgICAgIGRlZiBnZXRfYXJyYXlfaXRlbV9jX3R5
cGVfdGV4dChjbHMpOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2Vfcmln
aHRfc2hpZnQoIlR5cGVCdWlsZGVyOjpBcnJheTwlcz4iICUgY2xzLnJlc29sdmVfZGF0YV8uaXRl
bV90eXBlX2JpbmRpbmcuZ2V0X2FycmF5X2l0ZW1fY190eXBlX3RleHQoKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiByZXBsYWNlX3JpZ2h0X3NoaWZ0KCJJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcnJheTwlcz4iICUgY2xzLnJlc29sdmVfZGF0YV8uaXRlbV90eXBlX2JpbmRpbmcu
Z2V0X2FycmF5X2l0ZW1fY190eXBlX3RleHQoKSkKIAogICAgICAgICAgICAgICAgICAgICBAc3Rh
dGljbWV0aG9kCiAgICAgICAgICAgICAgICAgICAgIGRlZiBnZXRfc2V0dGVyX3ZhbHVlX2V4cHJl
c3Npb25fcGF0dGVybigpOgpAQCAtMTkwMCwxMCArMTkwMCwxMCBAQCBjbGFzcyBHZW5lcmF0b3I6
CiAgICAgICAgICAgICBkaXNwYXRjaGVyX25hbWUgPSAiSW5zcGVjdG9yIiArIENhcGl0YWxpemVy
Lmxvd2VyX2NhbWVsX2Nhc2VfdG9fdXBwZXIoZG9tYWluX25hbWUpICsgIkJhY2tlbmREaXNwYXRj
aGVyIgogICAgICAgICAgICAgYWdlbnRfaW50ZXJmYWNlX25hbWUgPSBkaXNwYXRjaGVyX25hbWUg
KyAiSGFuZGxlciIKIAotICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfZGlzcGF0Y2hlcl9p
bnRlcmZhY2VfbGlzdC5hcHBlbmQoImNsYXNzICVzIEZJTkFMIDogcHVibGljIEluc3BlY3RvclN1
cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyIHtcbiIgJSBkaXNwYXRjaGVyX25hbWUpCisgICAg
ICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9kaXNwYXRjaGVyX2ludGVyZmFjZV9saXN0LmFwcGVu
ZCgiY2xhc3MgJXMgRklOQUwgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JTdXBwbGVtZW50
YWxCYWNrZW5kRGlzcGF0Y2hlciB7XG4iICUgZGlzcGF0Y2hlcl9uYW1lKQogICAgICAgICAgICAg
R2VuZXJhdG9yLmJhY2tlbmRfZGlzcGF0Y2hlcl9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoInB1Ymxp
YzpcbiIpCi0gICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9kaXNwYXRjaGVyX2ludGVyZmFj
ZV9saXN0LmFwcGVuZCgiICAgIHN0YXRpYyBQYXNzUmVmUHRyPCVzPiBjcmVhdGUoSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqLCAlcyopO1xuIiAlIChkaXNwYXRjaGVyX25hbWUsIGFnZW50X2lu
dGVyZmFjZV9uYW1lKSkKLSAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3BhdGNoZXJf
aW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKGxvbmcgY2Fs
bElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1l
c3NhZ2UpIE9WRVJSSURFO1xuIikKKyAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3Bh
dGNoZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIgICAgc3RhdGljIFBhc3NSZWZQdHI8JXM+IGNy
ZWF0ZShJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiwgJXMqKTtcbiIgJSAo
ZGlzcGF0Y2hlcl9uYW1lLCBhZ2VudF9pbnRlcmZhY2VfbmFtZSkpCisgICAgICAgICAgICBHZW5l
cmF0b3IuYmFja2VuZF9kaXNwYXRjaGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgiICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1lc3NhZ2UpIE9WRVJSSURFO1xuIikK
ICAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3BhdGNoZXJfaW50ZXJmYWNlX2xpc3Qu
YXBwZW5kKCJwcml2YXRlOlxuIikKIAogICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfaGFu
ZGxlcl9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoImNsYXNzICVzIHtcbiIgJSBhZ2VudF9pbnRlcmZh
Y2VfbmFtZSkKQEAgLTE5MjIsNyArMTkyMiw3IEBAIGNsYXNzIEdlbmVyYXRvcjoKICAgICAgICAg
ICAgIEdlbmVyYXRvci5iYWNrZW5kX2hhbmRsZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCJ9O1xu
XG4iKQogCiAgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9kaXNwYXRjaGVyX2ludGVyZmFj
ZV9saXN0LmFwcGVuZCgicHJpdmF0ZTpcbiIpCi0gICAgICAgICAgICBHZW5lcmF0b3IuYmFja2Vu
ZF9kaXNwYXRjaGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgiICAgICVzKEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyKiwgJXMqKTtcbiIgJSAoZGlzcGF0Y2hlcl9uYW1lLCBhZ2VudF9pbnRlcmZh
Y2VfbmFtZSkpCisgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9kaXNwYXRjaGVyX2ludGVy
ZmFjZV9saXN0LmFwcGVuZCgiICAgICVzKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqLCAlcyopO1xuIiAlIChkaXNwYXRjaGVyX25hbWUsIGFnZW50X2ludGVyZmFjZV9uYW1l
KSkKICAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3BhdGNoZXJfaW50ZXJmYWNlX2xp
c3QuYXBwZW5kKCIgICAgJXMqIG1fYWdlbnQ7XG4iICUgYWdlbnRfaW50ZXJmYWNlX25hbWUpCiAg
ICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9kaXNwYXRjaGVyX2ludGVyZmFjZV9saXN0LmFw
cGVuZCgifTtcblxuIikKIApAQCAtMjAwMyw3ICsyMDAzLDcgQEAgY2xhc3MgR2VuZXJhdG9yOgog
ICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9oYW5kbGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZChh
ZF9ob2NfdHlwZV9vdXRwdXQpCiAgICAgICAgIGFkX2hvY190eXBlX3dyaXRlciA9IFdyaXRlcihh
ZF9ob2NfdHlwZV9vdXRwdXQsICIgICAgIikKIAotICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9k
aXNwYXRjaGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgiICAgIHZvaWQgJXMobG9uZyBjYWxsSWQs
IGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7XG4iICUganNvbl9jb21tYW5kX25hbWUp
CisgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3BhdGNoZXJfaW50ZXJmYWNlX2xpc3QuYXBw
ZW5kKCIgICAgdm9pZCAlcyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3QmIG1lc3NhZ2UpO1xuIiAlIGpzb25fY29tbWFuZF9uYW1lKQogCiAgICAgICAgIEdlbmVy
YXRvci5iYWNrZW5kX2hhbmRsZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIgICAgdmlydHVhbCB2
b2lkICVzKEVycm9yU3RyaW5nKiIgJSBqc29uX2NvbW1hbmRfbmFtZSkKIApAQCAtMjA5OCw5ICsy
MDk4LDkgQEAgY2xhc3MgR2VuZXJhdG9yOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX21ldGhvZF9pbXBsZW1lbnRhdGlvbl9saXN0
LCBUZW1wbGF0ZXMuY2FsbGJhY2tfbWV0aG9kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHsiY2FsbGJhY2tOYW1lIjogY2FsbGJhY2tfbmFtZSwgImhhbmRsZXJO
YW1lIjogYWdlbnRfaW50ZXJmYWNlX25hbWV9KQogCi0gICAgICAgICAgICBjYWxsYmFja193cml0
ZXIubmV3bGluZSgiY2xhc3MgIiArIGNhbGxiYWNrX25hbWUgKyAiIDogcHVibGljIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2Uge1xuIikKKyAgICAgICAgICAgIGNhbGxi
YWNrX3dyaXRlci5uZXdsaW5lKCJjbGFzcyAiICsgY2FsbGJhY2tfbmFtZSArICIgOiBwdWJsaWMg
SW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlIHtcbiIp
CiAgICAgICAgICAgICBjYWxsYmFja193cml0ZXIubmV3bGluZSgicHVibGljOlxuIikKLSAgICAg
ICAgICAgIGNhbGxiYWNrX3dyaXRlci5uZXdsaW5lKCIgICAgIiArIGNhbGxiYWNrX25hbWUgKyAi
KFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+LCBpbnQgaWQpO1xuIikKKyAg
ICAgICAgICAgIGNhbGxiYWNrX3dyaXRlci5uZXdsaW5lKCIgICAgIiArIGNhbGxiYWNrX25hbWUg
KyAiKFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4sIGlu
dCBpZCk7XG4iKQogICAgICAgICAgICAgY2FsbGJhY2tfd3JpdGVyLm5ld2xpbmUoIiAgICB2b2lk
IHNlbmRTdWNjZXNzKCIgKyAiLCAiLmpvaW4oZGVjbF9wYXJhbWV0ZXJfbGlzdCkgKyAiKTtcbiIp
CiAgICAgICAgICAgICBjYWxsYmFja193cml0ZXIubmV3bGluZSgifTtcbiIpCiAKQEAgLTIxMDks
NyArMjEwOSw3IEBAIGNsYXNzIEdlbmVyYXRvcjoKICAgICAgICAgICAgIG1ldGhvZF9kaXNwYXRj
aF9oYW5kbGluZy5hcHBlbmQoIiAgICBSZWZQdHI8JXM6OiVzPiBjYWxsYmFjayA9IGFkb3B0UmVm
KG5ldyAlczo6JXMobV9iYWNrZW5kRGlzcGF0Y2hlcixjYWxsSWQpKTtcbiIgJSAoYWdlbnRfaW50
ZXJmYWNlX25hbWUsIGNhbGxiYWNrX25hbWUsIGFnZW50X2ludGVyZmFjZV9uYW1lLCBjYWxsYmFj
a19uYW1lKSkKICAgICAgICAgICAgIG1ldGhvZF9lbmRpbmdfaGFuZGxpbmcuYXBwZW5kKCIgICAg
aWYgKGVycm9yLmxlbmd0aCgpKSB7XG4iKQogICAgICAgICAgICAgbWV0aG9kX2VuZGluZ19oYW5k
bGluZy5hcHBlbmQoIiAgICAgICAgY2FsbGJhY2stPmRpc2FibGUoKTtcbiIpCi0gICAgICAgICAg
ICBtZXRob2RfZW5kaW5nX2hhbmRsaW5nLmFwcGVuZCgiICAgICAgICBtX2JhY2tlbmREaXNwYXRj
aGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyOjpTZXJ2ZXJFcnJvciwgZXJyb3IpO1xuIikKKyAgICAgICAgICAgIG1ldGhvZF9lbmRpbmdf
aGFuZGxpbmcuYXBwZW5kKCIgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3Rv
Y29sRXJyb3IoJmNhbGxJZCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6
U2VydmVyRXJyb3IsIGVycm9yKTtcbiIpCiAgICAgICAgICAgICBtZXRob2RfZW5kaW5nX2hhbmRs
aW5nLmFwcGVuZCgiICAgICAgICByZXR1cm47XG4iKQogICAgICAgICAgICAgbWV0aG9kX2VuZGlu
Z19oYW5kbGluZy5hcHBlbmQoIiAgICB9IikKIApAQCAtMjQxMyw4ICsyNDEzLDggQEAgYmFja2Vu
ZF9jcHBfZmlsZSA9IFNtYXJ0T3V0cHV0KG91dHB1dF9jcHBfZGlybmFtZSArICIvSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIKIGZyb250ZW5kX2hfZmlsZSA9IFNtYXJ0T3V0cHV0KG91dHB1dF9o
ZWFkZXJfZGlybmFtZSArICIvSW5zcGVjdG9yRnJvbnRlbmQuaCIpCiBmcm9udGVuZF9jcHBfZmls
ZSA9IFNtYXJ0T3V0cHV0KG91dHB1dF9jcHBfZGlybmFtZSArICIvSW5zcGVjdG9yRnJvbnRlbmQu
Y3BwIikKIAotdHlwZWJ1aWxkZXJfaF9maWxlID0gU21hcnRPdXRwdXQob3V0cHV0X2hlYWRlcl9k
aXJuYW1lICsgIi9JbnNwZWN0b3JUeXBlQnVpbGRlci5oIikKLXR5cGVidWlsZGVyX2NwcF9maWxl
ID0gU21hcnRPdXRwdXQob3V0cHV0X2NwcF9kaXJuYW1lICsgIi9JbnNwZWN0b3JUeXBlQnVpbGRl
ci5jcHAiKQordHlwZWJ1aWxkZXJfaF9maWxlID0gU21hcnRPdXRwdXQob3V0cHV0X2hlYWRlcl9k
aXJuYW1lICsgIi9JbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCIpCit0eXBlYnVpbGRlcl9jcHBf
ZmlsZSA9IFNtYXJ0T3V0cHV0KG91dHB1dF9jcHBfZGlybmFtZSArICIvSW5zcGVjdG9yV2ViVHlw
ZUJ1aWxkZXJzLmNwcCIpCiAKIGJhY2tlbmRfanNfZmlsZSA9IFNtYXJ0T3V0cHV0KG91dHB1dF9q
c19kaXJuYW1lICsgIi9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMiKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3RvclN0cmluZ3Mu
cHkgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3RvclN0cmlu
Z3MucHkKaW5kZXggN2E1MThhOC4uMDFmZTUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weQpAQCAtNzAs
NyArNzAsNyBAQCBiYWNrZW5kX2Rpc3BhdGNoZXJfZGlzcGF0Y2hfbWV0aG9kID0gKAogewogICAg
IFJlZjwke2Rpc3BhdGNoZXJOYW1lfT4gcHJvdGVjdCgqdGhpcyk7CiAKLSAgICB0eXBlZGVmIHZv
aWQgKCR7ZGlzcGF0Y2hlck5hbWV9OjoqQ2FsbEhhbmRsZXIpKGxvbmcgY2FsbElkLCBjb25zdCBJ
bnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOworICAgIHR5cGVkZWYgdm9pZCAoJHtkaXNwYXRjaGVy
TmFtZX06OipDYWxsSGFuZGxlcikobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0JiBtZXNzYWdlKTsKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBDYWxsSGFu
ZGxlcj4gRGlzcGF0Y2hNYXA7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChEaXNwYXRjaE1hcCwg
ZGlzcGF0Y2hNYXAsICgpKTsKICAgICBpZiAoZGlzcGF0Y2hNYXAuaXNFbXB0eSgpKSB7CkBAIC0x
MTIsNyArMTEyLDcgQEAgJGNvZGUKICIiIikKIAogY2FsbGJhY2tfbWV0aG9kID0gKAotIiIiJHto
YW5kbGVyTmFtZX06OiR7Y2FsbGJhY2tOYW1lfTo6JHtjYWxsYmFja05hbWV9KFBhc3NSZWZQdHI8
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IGJhY2tlbmREaXNwYXRjaGVyLCBpbnQgaWQpIDog
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZShiYWNrZW5kRGlzcGF0Y2hl
ciwgaWQpIHsgfQorIiIiJHtoYW5kbGVyTmFtZX06OiR7Y2FsbGJhY2tOYW1lfTo6JHtjYWxsYmFj
a05hbWV9KFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IGJhY2tlbmREaXNw
YXRjaGVyLCBpbnQgaWQpIDogSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6
Q2FsbGJhY2tCYXNlKGJhY2tlbmREaXNwYXRjaGVyLCBpZCkgeyB9CiAKIHZvaWQgJHtoYW5kbGVy
TmFtZX06OiR7Y2FsbGJhY2tOYW1lfTo6c2VuZFN1Y2Nlc3MoJHtwYXJhbWV0ZXJzfSkKIHsKQEAg
LTEyNSwxNSArMTI1LDE0IEBAIGZyb250ZW5kX2ggPSAoCiAiIiIjaWZuZGVmIEluc3BlY3RvckZy
b250ZW5kX2gKICNkZWZpbmUgSW5zcGVjdG9yRnJvbnRlbmRfaAogCi0jaW5jbHVkZSAiSW5zcGVj
dG9yVHlwZUJ1aWxkZXIuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKyNpbmNsdWRl
ICJJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JGb3J3YXJk
aW5nLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwotCiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKIAogJGRvbWFpbkNsYXNzTGlzdApAQCAtMTQ5LDE2ICsxNDgs
MTMgQEAgYmFja2VuZF9oID0gKAogIiIiI2lmbmRlZiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cnNfaAogI2RlZmluZSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnNfaAogCi0jaW5jbHVkZSAi
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVp
bGRlci5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUg
PGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgogI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwotY2xhc3MgSW5zcGVjdG9yQXJy
YXk7Ci0KIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCiAkaGFuZGxlckludGVyZmFjZXMK
QEAgLTE3OCwxMSArMTc0LDEzIEBAIGJhY2tlbmRfY3BwID0gKAogI2luY2x1ZGUgIkluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVycy5oIgogCiAjaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnQuaCIKLSNp
bmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGb3J3YXJkaW5n
LmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAordXNp
bmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAkbWV0aG9k
cwpAQCAtMjAwLDEwICsxOTgsMTEgQEAgZnJvbnRlbmRfY3BwID0gKAogCiAjaW5jbHVkZSAiSW5z
cGVjdG9yRnJvbnRlbmQuaCIKIAotI2luY2x1ZGUgIkluc3BlY3RvckZvcndhcmRpbmcuaCIKICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogJG1ldGhvZHMKQEAgLTIxNSwyOTEgKzIxNCwyMCBAQCAkbWV0aG9kcwogCiB0eXBlYnVpbGRl
cl9oID0gKAogIiIiCi0jaWZuZGVmIEluc3BlY3RvclR5cGVCdWlsZGVyX2gKLSNkZWZpbmUgSW5z
cGVjdG9yVHlwZUJ1aWxkZXJfaAorLy8gRklYTUU6IFRZUEUuCisjaWZuZGVmIEluc3BlY3Rvcldl
YlR5cGVCdWlsZGVyc19oCisjZGVmaW5lIEluc3BlY3RvcldlYlR5cGVCdWlsZGVyc19oCiAKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCisjaW5j
bHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclR5cGVCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogbmFtZXNwYWNlIFR5cGVCdWlsZGVyIHsK
IAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIE9wdE91dHB1dCB7Ci1wdWJsaWM6Ci0gICAg
T3B0T3V0cHV0KCkgOiBtX2Fzc2lnbmVkKGZhbHNlKSB7IH0KLQotICAgIHZvaWQgb3BlcmF0b3I9
KFQgdmFsdWUpCi0gICAgewotICAgICAgICBtX3ZhbHVlID0gdmFsdWU7Ci0gICAgICAgIG1fYXNz
aWduZWQgPSB0cnVlOwotICAgIH0KLQotICAgIGJvb2wgaXNBc3NpZ25lZCgpIHsgcmV0dXJuIG1f
YXNzaWduZWQ7IH0KLQotICAgIFQgZ2V0VmFsdWUoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGlz
QXNzaWduZWQoKSk7Ci0gICAgICAgIHJldHVybiBtX3ZhbHVlOwotICAgIH0KLQotcHJpdmF0ZToK
LSAgICBUIG1fdmFsdWU7Ci0gICAgYm9vbCBtX2Fzc2lnbmVkOwotCi0gICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoT3B0T3V0cHV0KTsKLX07Ci0KLQotLy8gQSBzbWFsbCB0cmFuc2llbnQgd3JhcHBl
ciBhcm91bmQgaW50IHR5cGUsIHRoYXQgY2FuIGJlIHVzZWQgYXMgYSBmdW5jaXRvbiBwYXJhbWV0
ZXIgdHlwZQotLy8gY2xldmVybHkgZGlzYWxsb3dpbmcgQysrIGltcGxpY2l0IGNhc3RzIGZyb20g
ZmxvYXQgb3IgZG91YmxlLgotY2xhc3MgRXhhY3RseUludCB7Ci1wdWJsaWM6Ci0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLSAgICBFeGFjdGx5SW50KFQgdCkgOiBtX3ZhbHVlKGNhc3RfdG9faW50
PFQ+KHQpKSB7fQotCi0gICAgRXhhY3RseUludCgpIHt9Ci0KLSAgICBvcGVyYXRvciBpbnQoKSB7
IHJldHVybiBtX3ZhbHVlOyB9Ci1wcml2YXRlOgotICAgIGludCBtX3ZhbHVlOwotCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgaW50IGNhc3RfdG9faW50KFQpIHsgcmV0dXJu
IFQ6OmRlZmF1bHRfY2FzZV9jYXN0X2lzX25vdF9zdXBwb3J0ZWQoKTsgfQotfTsKLQotdGVtcGxh
dGU8PgotaW5saW5lIGludCBFeGFjdGx5SW50OjpjYXN0X3RvX2ludDxpbnQ+KGludCBpKSB7IHJl
dHVybiBpOyB9Ci0KLXRlbXBsYXRlPD4KLWlubGluZSBpbnQgRXhhY3RseUludDo6Y2FzdF90b19p
bnQ8dW5zaWduZWQgaW50Pih1bnNpZ25lZCBpbnQgaSkgeyByZXR1cm4gaTsgfQotCi1jbGFzcyBS
dW50aW1lQ2FzdEhlbHBlciB7Ci1wdWJsaWM6Ci0jaWYgJHZhbGlkYXRvcklmZGVmTmFtZQotICAg
IHRlbXBsYXRlPEluc3BlY3RvclZhbHVlOjpUeXBlIFRZUEU+Ci0gICAgc3RhdGljIHZvaWQgYXNz
ZXJ0VHlwZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCi0gICAgewotICAgICAgICBBU1NFUlQodmFs
dWUtPnR5cGUoKSA9PSBUWVBFKTsKLSAgICB9Ci0gICAgc3RhdGljIHZvaWQgYXNzZXJ0QW55KElu
c3BlY3RvclZhbHVlKik7Ci0gICAgc3RhdGljIHZvaWQgYXNzZXJ0SW50KEluc3BlY3RvclZhbHVl
KiB2YWx1ZSk7Ci0jZW5kaWYKLX07Ci0KLQotLy8gVGhpcyBjbGFzcyBwcm92aWRlcyAiVHJhaXRz
IiB0eXBlIGZvciB0aGUgaW5wdXQgdHlwZSBULiBJdCBpcyBwcm9ncmFtbWVkIHVzaW5nIEMrKyB0
ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbgotLy8gdGVjaG5pcXVlLiBCeSBkZWZhdWx0IGl0IHNpbXBs
eSB0YWtlcyAiSXRlbVRyYWl0cyIgdHlwZSBmcm9tIFQsIGJ1dCBpdCBkb2Vzbid0IHdvcmsgd2l0
aCB0aGUgYmFzZSB0eXBlcy4KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgQXJyYXlJdGVt
SGVscGVyIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6Okl0ZW1UcmFpdHMgVHJhaXRzOwotfTsK
LQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIEFycmF5IDogcHVibGljIEluc3BlY3RvckFy
cmF5QmFzZSB7Ci1wcml2YXRlOgotICAgIEFycmF5KCkgeyB9Ci0KLSAgICBJbnNwZWN0b3JBcnJh
eSogb3BlbkFjY2Vzc29ycygpIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEluc3Bl
Y3RvckFycmF5KSA9PSBzaXplb2YoQXJyYXk8VD4pLCBjYW5ub3RfY2FzdCk7Ci0gICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxJbnNwZWN0b3JBcnJheSo+KHN0YXRpY19jYXN0PEluc3BlY3RvckFy
cmF5QmFzZSo+KHRoaXMpKTsKLSAgICB9Ci0KLXB1YmxpYzoKLSAgICB2b2lkIGFkZEl0ZW0oUGFz
c1JlZlB0cjxUPiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIEFycmF5SXRlbUhlbHBlcjxUPjo6VHJh
aXRzOjpwdXNoUmVmUHRyKHRoaXMtPm9wZW5BY2Nlc3NvcnMoKSwgdmFsdWUpOwotICAgIH0KLQot
ICAgIHZvaWQgYWRkSXRlbShUIHZhbHVlKQotICAgIHsKLSAgICAgICAgQXJyYXlJdGVtSGVscGVy
PFQ+OjpUcmFpdHM6OnB1c2hSYXcodGhpcy0+b3BlbkFjY2Vzc29ycygpLCB2YWx1ZSk7Ci0gICAg
fQotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8QXJyYXk8VD4+IGNyZWF0ZSgpCi0gICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFycmF5PFQ+KCkpOwotICAgIH0KLQotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEFycmF5PFQ+PiBydW50aW1lQ2FzdChQYXNzUmVmUHRyPEluc3BlY3RvclZh
bHVlPiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJyYXk7
Ci0gICAgICAgIGJvb2wgY2FzdFJlcyA9IHZhbHVlLT5hc0FycmF5KCZhcnJheSk7Ci0gICAgICAg
IEFTU0VSVF9VTlVTRUQoY2FzdFJlcywgY2FzdFJlcyk7Ci0jaWYgJHZhbGlkYXRvcklmZGVmTmFt
ZQotICAgICAgICBhc3NlcnRDb3JyZWN0VmFsdWUoYXJyYXkuZ2V0KCkpOwotI2VuZGlmICAvLyAk
dmFsaWRhdG9ySWZkZWZOYW1lCi0gICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihBcnJheTxU
PikgPT0gc2l6ZW9mKEluc3BlY3RvckFycmF5KSwgdHlwZV9jYXN0X3Byb2JsZW0pOwotICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk8VD4qPihzdGF0aWNfY2FzdDxJbnNwZWN0b3JBcnJh
eUJhc2UqPihhcnJheS5nZXQoKSkpOwotICAgIH0KLQotI2lmICR2YWxpZGF0b3JJZmRlZk5hbWUK
LSAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVl
KQotICAgIHsKLSAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcnJheTsKLSAgICAgICAg
Ym9vbCBjYXN0UmVzID0gdmFsdWUtPmFzQXJyYXkoJmFycmF5KTsKLSAgICAgICAgQVNTRVJUX1VO
VVNFRChjYXN0UmVzLCBjYXN0UmVzKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGFycmF5LT5sZW5ndGgoKTsgaSsrKQotICAgICAgICAgICAgQXJyYXlJdGVtSGVscGVyPFQ+OjpU
cmFpdHM6OnRlbXBsYXRlIGFzc2VydENvcnJlY3RWYWx1ZTxUPihhcnJheS0+Z2V0KGkpLmdldCgp
KTsKLSAgICB9Ci0KLSNlbmRpZiAvLyAkdmFsaWRhdG9ySWZkZWZOYW1lCi19OwotCi1zdHJ1Y3Qg
U3RydWN0SXRlbVRyYWl0cyB7Ci0gICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0b3JB
cnJheSogYXJyYXksIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQotICAgIHsKLSAg
ICAgICAgYXJyYXktPnB1c2hWYWx1ZSh2YWx1ZSk7Ci0gICAgfQotCi0jaWYgJHZhbGlkYXRvcklm
ZGVmTmFtZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHZvaWQgYXNzZXJ0
Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkgewotICAgICAgICBUOjphc3NlcnRD
b3JyZWN0VmFsdWUodmFsdWUpOwotICAgIH0KLSNlbmRpZiAgLy8gJHZhbGlkYXRvcklmZGVmTmFt
ZQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IEFycmF5SXRlbUhlbHBlcjxTdHJpbmc+IHsKLSAg
ICBzdHJ1Y3QgVHJhaXRzIHsKLSAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJhdyhJbnNwZWN0b3JB
cnJheSogYXJyYXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGFycmF5LT5wdXNoU3RyaW5nKHZhbHVlKTsKLSAgICAgICAgfQotCi0jaWYgJHZhbGlkYXRvcklm
ZGVmTmFtZQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgdm9p
ZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKSB7Ci0gICAgICAgICAg
ICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZVN0cmlu
Zz4odmFsdWUpOwotICAgICAgICB9Ci0jZW5kaWYgIC8vICR2YWxpZGF0b3JJZmRlZk5hbWUKLSAg
ICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IEFycmF5SXRlbUhlbHBlcjxpbnQ+IHsKLSAg
ICBzdHJ1Y3QgVHJhaXRzIHsKLSAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJhdyhJbnNwZWN0b3JB
cnJheSogYXJyYXksIGludCB2YWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgYXJyYXktPnB1
c2hJbnQodmFsdWUpOwotICAgICAgICB9Ci0KLSNpZiAkdmFsaWRhdG9ySWZkZWZOYW1lCi0gICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJl
Y3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpIHsKLSAgICAgICAgICAgIFJ1bnRpbWVDYXN0
SGVscGVyOjphc3NlcnRJbnQodmFsdWUpOwotICAgICAgICB9Ci0jZW5kaWYgIC8vICR2YWxpZGF0
b3JJZmRlZk5hbWUKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IEFycmF5SXRlbUhl
bHBlcjxkb3VibGU+IHsKLSAgICBzdHJ1Y3QgVHJhaXRzIHsKLSAgICAgICAgc3RhdGljIHZvaWQg
cHVzaFJhdyhJbnNwZWN0b3JBcnJheSogYXJyYXksIGRvdWJsZSB2YWx1ZSkKLSAgICAgICAgewot
ICAgICAgICAgICAgYXJyYXktPnB1c2hOdW1iZXIodmFsdWUpOwotICAgICAgICB9Ci0KLSNpZiAk
dmFsaWRhdG9ySWZkZWZOYW1lCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAg
IHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpIHsK
LSAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3RvclZhbHVl
OjpUeXBlTnVtYmVyPih2YWx1ZSk7Ci0gICAgICAgIH0KLSNlbmRpZiAgLy8gJHZhbGlkYXRvcklm
ZGVmTmFtZQotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgQXJyYXlJdGVtSGVscGVy
PGJvb2w+IHsKLSAgICBzdHJ1Y3QgVHJhaXRzIHsKLSAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJh
dyhJbnNwZWN0b3JBcnJheSogYXJyYXksIGJvb2wgdmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGFycmF5LT5wdXNoQm9vbGVhbih2YWx1ZSk7Ci0gICAgICAgIH0KLQotI2lmICR2YWxpZGF0
b3JJZmRlZk5hbWUKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGlj
IHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkgewotICAgICAg
ICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFsdWU6OlR5cGVC
b29sZWFuPih2YWx1ZSk7Ci0gICAgICAgIH0KLSNlbmRpZiAgLy8gJHZhbGlkYXRvcklmZGVmTmFt
ZQotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPEluc3Bl
Y3RvclZhbHVlPiB7Ci0gICAgc3RydWN0IFRyYWl0cyB7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1
c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVl
PiB2YWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgYXJyYXktPnB1c2hWYWx1ZSh2YWx1ZSk7
Ci0gICAgICAgIH0KLQotI2lmICR2YWxpZGF0b3JJZmRlZk5hbWUKLSAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3Bl
Y3RvclZhbHVlKiB2YWx1ZSkgewotICAgICAgICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2Vy
dEFueSh2YWx1ZSk7Ci0gICAgICAgIH0KLSNlbmRpZiAgLy8gJHZhbGlkYXRvcklmZGVmTmFtZQot
ICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPEluc3BlY3Rv
ck9iamVjdD4gewotICAgIHN0cnVjdCBUcmFpdHMgewotICAgICAgICBzdGF0aWMgdm9pZCBwdXNo
UmVmUHRyKEluc3BlY3RvckFycmF5KiBhcnJheSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4g
dmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGFycmF5LT5wdXNoVmFsdWUodmFsdWUpOwot
ICAgICAgICB9Ci0KLSNpZiAkdmFsaWRhdG9ySWZkZWZOYW1lCi0gICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0
b3JWYWx1ZSogdmFsdWUpIHsKLSAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRU
eXBlPEluc3BlY3RvclZhbHVlOjpUeXBlT2JqZWN0Pih2YWx1ZSk7Ci0gICAgICAgIH0KLSNlbmRp
ZiAgLy8gJHZhbGlkYXRvcklmZGVmTmFtZQotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1
Y3QgQXJyYXlJdGVtSGVscGVyPEluc3BlY3RvckFycmF5PiB7Ci0gICAgc3RydWN0IFRyYWl0cyB7
Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQ
YXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiB2YWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAg
YXJyYXktPnB1c2hBcnJheSh2YWx1ZSk7Ci0gICAgICAgIH0KLQotI2lmICR2YWxpZGF0b3JJZmRl
Zk5hbWUKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIHZvaWQg
YXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkgewotICAgICAgICAgICAg
UnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFsdWU6OlR5cGVBcnJheT4o
dmFsdWUpOwotICAgICAgICB9Ci0jZW5kaWYgIC8vICR2YWxpZGF0b3JJZmRlZk5hbWUKLSAgICB9
OwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBBcnJheUl0ZW1IZWxwZXI8VHlw
ZUJ1aWxkZXI6OkFycmF5PFQ+PiB7Ci0gICAgc3RydWN0IFRyYWl0cyB7Ci0gICAgICAgIHN0YXRp
YyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRyPFR5cGVC
dWlsZGVyOjpBcnJheTxUPj4gdmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGFycmF5LT5w
dXNoVmFsdWUodmFsdWUpOwotICAgICAgICB9Ci0KLSNpZiAkdmFsaWRhdG9ySWZkZWZOYW1lCi0g
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFM+Ci0gICAgICAgIHN0YXRpYyB2b2lkIGFzc2VydENv
cnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpIHsKLSAgICAgICAgICAgIFM6OmFzc2Vy
dENvcnJlY3RWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIH0KLSNlbmRpZiAgLy8gJHZhbGlkYXRvcklm
ZGVmTmFtZQotICAgIH07Ci19OwotCiAke2ZvcndhcmRzfQogCiBTdHJpbmcgZ2V0RW51bUNvbnN0
YW50VmFsdWUoaW50IGNvZGUpOwpAQCAtNTA3LDEyICsyMzUsMTEgQEAgU3RyaW5nIGdldEVudW1D
b25zdGFudFZhbHVlKGludCBjb2RlKTsKICR7dHlwZUJ1aWxkZXJzfQogfSAvLyBuYW1lc3BhY2Ug
VHlwZUJ1aWxkZXIKIAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJ
bnNwZWN0b3IKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNlbmRpZiAvLyAhZGVm
aW5lZChJbnNwZWN0b3JUeXBlQnVpbGRlcl9oKQorI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3Rv
cldlYlR5cGVCdWlsZGVyc19oKQogCiAiIiIpCiAKQEAgLTUyMiwxMCArMjQ5LDEyIEBAIHR5cGVi
dWlsZGVyX2NwcCA9ICgKICNpbmNsdWRlICJjb25maWcuaCIKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0
b3JXZWJUeXBlQnVpbGRlcnMuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLW5h
bWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKK25hbWVzcGFj
ZSBJbnNwZWN0b3IgewogCiBuYW1lc3BhY2UgVHlwZUJ1aWxkZXIgewogCkBAIC01NDIsMjUgKzI3
MSwxMSBAQCAkaW1wbENvZGUKIAogI2lmICR2YWxpZGF0b3JJZmRlZk5hbWUKIAotdm9pZCBUeXBl
QnVpbGRlcjo6UnVudGltZUNhc3RIZWxwZXI6OmFzc2VydEFueShJbnNwZWN0b3JWYWx1ZSopCi17
Ci0gICAgLy8gTm8tb3AuCi19Ci0KLQotdm9pZCBUeXBlQnVpbGRlcjo6UnVudGltZUNhc3RIZWxw
ZXI6OmFzc2VydEludChJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCi17Ci0gICAgZG91YmxlIHY7Ci0g
ICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFzTnVtYmVyKCZ2KTsKLSAgICBBU1NFUlRfVU5VU0VE
KGNhc3RSZXMsIGNhc3RSZXMpOwotICAgIEFTU0VSVChzdGF0aWNfY2FzdDxkb3VibGU+KHN0YXRp
Y19jYXN0PGludD4odikpID09IHYpOwotfQotCiAkdmFsaWRhdG9yQ29kZQogCiAjZW5kaWYgLy8g
JHZhbGlkYXRvcklmZGVmTmFtZQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVz
cGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCiAiIiIpCkBAIC01
ODQsMTQgKzI5OSwxNCBAQCBjbGFzc19iaW5kaW5nX2J1aWxkZXJfcGFydF8xID0gKAogICAgIHRl
bXBsYXRlPGludCBTVEFURT4KICAgICBjbGFzcyBCdWlsZGVyIHsKICAgICBwcml2YXRlOgotICAg
ICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKKyAgICAgICAgUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKIAogICAgICAgICB0ZW1wbGF0ZTxp
bnQgU1RFUD4gQnVpbGRlcjxTVEFURSB8IFNURVA+JiBjYXN0U3RhdGUoKQogICAgICAgICB7CiAg
ICAgICAgICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8QnVpbGRlcjxTVEFURSB8IFNURVA+
Kj4odGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBCdWlsZGVyKFBhc3NSZWZQdHI8Lyolcyov
SW5zcGVjdG9yT2JqZWN0PiBwdHIpCisgICAgICAgIEJ1aWxkZXIoUGFzc1JlZlB0cjwvKiVzKi9J
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gcHRyKQogICAgICAgICB7CiAgICAgICAgICAgICBD
T01QSUxFX0FTU0VSVChTVEFURSA9PSBOb0ZpZWxkc1NldCwgYnVpbGRlcl9jcmVhdGVkX2luX25v
bl9pbml0X3N0YXRlKTsKICAgICAgICAgICAgIG1fcmVzdWx0ID0gcHRyOwpAQCAtNjEzLDcgKzMy
OCw3IEBAIGNsYXNzX2JpbmRpbmdfYnVpbGRlcl9wYXJ0XzMgPSAoIiIiCiAgICAgICAgIG9wZXJh
dG9yIFJlZlB0cjwlcz4mICgpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJU
KFNUQVRFID09IEFsbEZpZWxkc1NldCwgcmVzdWx0X2lzX25vdF9yZWFkeSk7Ci0gICAgICAgICAg
ICBDT01QSUxFX0FTU0VSVChzaXplb2YoJXMpID09IHNpemVvZihJbnNwZWN0b3JPYmplY3QpLCBj
YW5ub3RfY2FzdCk7CisgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoJXMpID09IHNp
emVvZihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKICAgICAgICAg
ICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxSZWZQdHI8JXM+Kj4oJm1fcmVzdWx0KTsKICAg
ICAgICAgfQogCkBAIC02MjgsNiArMzQzLDYgQEAgY2xhc3NfYmluZGluZ19idWlsZGVyX3BhcnRf
MyA9ICgiIiIKIGNsYXNzX2JpbmRpbmdfYnVpbGRlcl9wYXJ0XzQgPSAoCiAiIiIgICAgc3RhdGlj
IEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gQnVp
bGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CisgICAgICAgIHJl
dHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdDo6Y3Jl
YXRlKCkpOwogICAgIH0KICIiIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db25zb2xlTWVzc2FnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1l
c3NhZ2UuY3BwCmluZGV4IDBjOTcwYjguLjZmYjg1ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcApAQCAtMzgsMTQgKzM4LDE2IEBACiAjaW5jbHVkZSAi
SWRlbnRpZmllcnNGYWN0b3J5LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNs
dWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMu
aCIKICNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsRnJh
bWUuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRlICJTY3JpcHRDYWxs
U3RhY2tGYWN0b3J5LmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxiaW5k
aW5ncy9TY3JpcHRWYWx1ZS5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMu
aD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENvbnNvbGVNZXNzYWdlOjpDb25zb2xlTWVz
c2FnZShib29sIGNhbkdlbmVyYXRlQ2FsbFN0YWNrLCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVz
c2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCkBAIC0xMzksNTcgKzE0MSw1NyBAQCB2
b2lkIENvbnNvbGVNZXNzYWdlOjphdXRvZ2VuZXJhdGVNZXRhZGF0YShib29sIGNhbkdlbmVyYXRl
Q2FsbFN0YWNrLCBKU0M6OkV4ZWNTdAogfQogCiAvLyBLZWVwIGluIHN5bmMgd2l0aCBpbnNwZWN0
b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCi1zdGF0aWMgVHlwZUJ1aWxkZXI6OkNvbnNvbGU6
OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6OkVudW0gbWVzc2FnZVNvdXJjZVZhbHVlKE1lc3NhZ2VT
b3VyY2Ugc291cmNlKQorc3RhdGljIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNv
bnNvbGVNZXNzYWdlOjpTb3VyY2U6OkVudW0gbWVzc2FnZVNvdXJjZVZhbHVlKE1lc3NhZ2VTb3Vy
Y2Ugc291cmNlKQogewogICAgIHN3aXRjaCAoc291cmNlKSB7Ci0gICAgY2FzZSBYTUxNZXNzYWdl
U291cmNlOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3Vy
Y2U6OlhNTDsKLSAgICBjYXNlIEpTTWVzc2FnZVNvdXJjZTogcmV0dXJuIFR5cGVCdWlsZGVyOjpD
b25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpKYXZhc2NyaXB0OwotICAgIGNhc2UgTmV0
d29ya01lc3NhZ2VTb3VyY2U6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1l
c3NhZ2U6OlNvdXJjZTo6TmV0d29yazsKLSAgICBjYXNlIENvbnNvbGVBUElNZXNzYWdlU291cmNl
OiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6OkNv
bnNvbGVBUEk7Ci0gICAgY2FzZSBTdG9yYWdlTWVzc2FnZVNvdXJjZTogcmV0dXJuIFR5cGVCdWls
ZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpTdG9yYWdlOwotICAgIGNhc2Ug
QXBwQ2FjaGVNZXNzYWdlU291cmNlOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNv
bGVNZXNzYWdlOjpTb3VyY2U6OkFwcGNhY2hlOwotICAgIGNhc2UgUmVuZGVyaW5nTWVzc2FnZVNv
dXJjZTogcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNl
OjpSZW5kZXJpbmc7Ci0gICAgY2FzZSBDU1NNZXNzYWdlU291cmNlOiByZXR1cm4gVHlwZUJ1aWxk
ZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6OkNTUzsKLSAgICBjYXNlIFNlY3Vy
aXR5TWVzc2FnZVNvdXJjZTogcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVz
c2FnZTo6U291cmNlOjpTZWN1cml0eTsKLSAgICBjYXNlIE90aGVyTWVzc2FnZVNvdXJjZTogcmV0
dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpPdGhlcjsK
KyAgICBjYXNlIFhNTE1lc3NhZ2VTb3VyY2U6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpYTUw7CisgICAgY2FzZSBKU01lc3Nh
Z2VTb3VyY2U6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xl
TWVzc2FnZTo6U291cmNlOjpKYXZhc2NyaXB0OworICAgIGNhc2UgTmV0d29ya01lc3NhZ2VTb3Vy
Y2U6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2Fn
ZTo6U291cmNlOjpOZXR3b3JrOworICAgIGNhc2UgQ29uc29sZUFQSU1lc3NhZ2VTb3VyY2U6IHJl
dHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291
cmNlOjpDb25zb2xlQVBJOworICAgIGNhc2UgU3RvcmFnZU1lc3NhZ2VTb3VyY2U6IHJldHVybiBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpT
dG9yYWdlOworICAgIGNhc2UgQXBwQ2FjaGVNZXNzYWdlU291cmNlOiByZXR1cm4gSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6QXBwY2FjaGU7
CisgICAgY2FzZSBSZW5kZXJpbmdNZXNzYWdlU291cmNlOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6UmVuZGVyaW5nOworICAg
IGNhc2UgQ1NTTWVzc2FnZVNvdXJjZTogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNv
bnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6OkNTUzsKKyAgICBjYXNlIFNlY3VyaXR5TWVz
c2FnZVNvdXJjZTogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNv
bGVNZXNzYWdlOjpTb3VyY2U6OlNlY3VyaXR5OworICAgIGNhc2UgT3RoZXJNZXNzYWdlU291cmNl
OiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6
OlNvdXJjZTo6T3RoZXI7CiAgICAgfQotICAgIHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6
Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6T3RoZXI7CisgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6Ok90aGVyOwogfQogCi1z
dGF0aWMgVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpFbnVtIG1l
c3NhZ2VUeXBlVmFsdWUoTWVzc2FnZVR5cGUgdHlwZSkKK3N0YXRpYyBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6RW51bSBtZXNzYWdlVHlwZVZh
bHVlKE1lc3NhZ2VUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBM
b2dNZXNzYWdlVHlwZTogcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2Fn
ZTo6VHlwZTo6TG9nOwotICAgIGNhc2UgQ2xlYXJNZXNzYWdlVHlwZTogcmV0dXJuIFR5cGVCdWls
ZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6Q2xlYXI7Ci0gICAgY2FzZSBEaXJN
ZXNzYWdlVHlwZTogcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6
VHlwZTo6RGlyOwotICAgIGNhc2UgRGlyWE1MTWVzc2FnZVR5cGU6IHJldHVybiBUeXBlQnVpbGRl
cjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkRpclhNTDsKLSAgICBjYXNlIFRhYmxl
TWVzc2FnZVR5cGU6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6
OlR5cGU6OlRhYmxlOwotICAgIGNhc2UgVHJhY2VNZXNzYWdlVHlwZTogcmV0dXJuIFR5cGVCdWls
ZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6VHJhY2U7Ci0gICAgY2FzZSBTdGFy
dEdyb3VwTWVzc2FnZVR5cGU6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1l
c3NhZ2U6OlR5cGU6OlN0YXJ0R3JvdXA7Ci0gICAgY2FzZSBTdGFydEdyb3VwQ29sbGFwc2VkTWVz
c2FnZVR5cGU6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5
cGU6OlN0YXJ0R3JvdXBDb2xsYXBzZWQ7Ci0gICAgY2FzZSBFbmRHcm91cE1lc3NhZ2VUeXBlOiBy
ZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpFbmRHcm91
cDsKLSAgICBjYXNlIEFzc2VydE1lc3NhZ2VUeXBlOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNv
bGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpBc3NlcnQ7Ci0gICAgY2FzZSBUaW1pbmdNZXNzYWdl
VHlwZTogcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6
VGltaW5nOwotICAgIGNhc2UgUHJvZmlsZU1lc3NhZ2VUeXBlOiByZXR1cm4gVHlwZUJ1aWxkZXI6
OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpQcm9maWxlOwotICAgIGNhc2UgUHJvZmls
ZUVuZE1lc3NhZ2VUeXBlOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNz
YWdlOjpUeXBlOjpQcm9maWxlRW5kOworICAgIGNhc2UgTG9nTWVzc2FnZVR5cGU6IHJldHVybiBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6TG9n
OworICAgIGNhc2UgQ2xlYXJNZXNzYWdlVHlwZTogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpDbGVhcjsKKyAgICBjYXNlIERpck1l
c3NhZ2VUeXBlOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29s
ZU1lc3NhZ2U6OlR5cGU6OkRpcjsKKyAgICBjYXNlIERpclhNTE1lc3NhZ2VUeXBlOiByZXR1cm4g
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkRp
clhNTDsKKyAgICBjYXNlIFRhYmxlTWVzc2FnZVR5cGU6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6VGFibGU7CisgICAgY2FzZSBU
cmFjZU1lc3NhZ2VUeXBlOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6
Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlRyYWNlOworICAgIGNhc2UgU3RhcnRHcm91cE1lc3NhZ2VU
eXBlOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3Nh
Z2U6OlR5cGU6OlN0YXJ0R3JvdXA7CisgICAgY2FzZSBTdGFydEdyb3VwQ29sbGFwc2VkTWVzc2Fn
ZVR5cGU6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVz
c2FnZTo6VHlwZTo6U3RhcnRHcm91cENvbGxhcHNlZDsKKyAgICBjYXNlIEVuZEdyb3VwTWVzc2Fn
ZVR5cGU6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVz
c2FnZTo6VHlwZTo6RW5kR3JvdXA7CisgICAgY2FzZSBBc3NlcnRNZXNzYWdlVHlwZTogcmV0dXJu
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpB
c3NlcnQ7CisgICAgY2FzZSBUaW1pbmdNZXNzYWdlVHlwZTogcmV0dXJuIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpUaW1pbmc7CisgICAgY2Fz
ZSBQcm9maWxlTWVzc2FnZVR5cGU6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25z
b2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6UHJvZmlsZTsKKyAgICBjYXNlIFByb2ZpbGVFbmRN
ZXNzYWdlVHlwZTogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNv
bGVNZXNzYWdlOjpUeXBlOjpQcm9maWxlRW5kOwogICAgIH0KLSAgICByZXR1cm4gVHlwZUJ1aWxk
ZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpMb2c7CisgICAgcmV0dXJuIEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpMb2c7CiB9
CiAKLXN0YXRpYyBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpF
bnVtIG1lc3NhZ2VMZXZlbFZhbHVlKE1lc3NhZ2VMZXZlbCBsZXZlbCkKK3N0YXRpYyBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6OkVudW0gbWVz
c2FnZUxldmVsVmFsdWUoTWVzc2FnZUxldmVsIGxldmVsKQogewogICAgIHN3aXRjaCAobGV2ZWwp
IHsKLSAgICBjYXNlIERlYnVnTWVzc2FnZUxldmVsOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNv
bGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbDo6RGVidWc7Ci0gICAgY2FzZSBMb2dNZXNzYWdlTGV2
ZWw6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpM
b2c7Ci0gICAgY2FzZSBXYXJuaW5nTWVzc2FnZUxldmVsOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNv
bnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbDo6V2FybmluZzsKLSAgICBjYXNlIEVycm9yTWVz
c2FnZUxldmVsOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpM
ZXZlbDo6RXJyb3I7CisgICAgY2FzZSBEZWJ1Z01lc3NhZ2VMZXZlbDogcmV0dXJuIEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbDo6RGVidWc7Cisg
ICAgY2FzZSBMb2dNZXNzYWdlTGV2ZWw6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
b25zb2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6OkxvZzsKKyAgICBjYXNlIFdhcm5pbmdNZXNz
YWdlTGV2ZWw6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xl
TWVzc2FnZTo6TGV2ZWw6Oldhcm5pbmc7CisgICAgY2FzZSBFcnJvck1lc3NhZ2VMZXZlbDogcmV0
dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZl
bDo6RXJyb3I7CiAgICAgfQotICAgIHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29s
ZU1lc3NhZ2U6OkxldmVsOjpMb2c7CisgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbDo6TG9nOwogfQogCiB2b2lkIENvbnNvbGVN
ZXNzYWdlOjphZGRUb0Zyb250ZW5kKEluc3BlY3RvckNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIq
IGNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLCBib29sIGdlbmVyYXRlUHJldmlldykKIHsKLSAgICBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlPiBqc29uT2JqID0gVHlwZUJ1aWxkZXI6
OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZT4ganNvbk9iaiA9IEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpjcmVhdGUoKQogICAgICAg
ICAuc2V0U291cmNlKG1lc3NhZ2VTb3VyY2VWYWx1ZShtX3NvdXJjZSkpCiAgICAgICAgIC5zZXRM
ZXZlbChtZXNzYWdlTGV2ZWxWYWx1ZShtX2xldmVsKSkKICAgICAgICAgLnNldFRleHQobV9tZXNz
YWdlKTsKQEAgLTIwNCwxMSArMjA2LDExIEBAIHZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRvRnJv
bnRlbmQoSW5zcGVjdG9yQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciogY29uc29sZUZyCiAgICAg
aWYgKG1fYXJndW1lbnRzICYmIG1fYXJndW1lbnRzLT5hcmd1bWVudENvdW50KCkpIHsKICAgICAg
ICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdE1hbmFnZXIt
PmluamVjdGVkU2NyaXB0Rm9yKG1fYXJndW1lbnRzLT5nbG9iYWxTdGF0ZSgpKTsKICAgICAgICAg
aWYgKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4+IGpz
b25BcmdzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q+OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+
PiBqc29uQXJncyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD46OmNyZWF0ZSgpOwogICAgICAgICAgICAg
aWYgKG1fdHlwZSA9PSBUYWJsZU1lc3NhZ2VUeXBlICYmIGdlbmVyYXRlUHJldmlldyAmJiBtX2Fy
Z3VtZW50cy0+YXJndW1lbnRDb3VudCgpKSB7Ci0gICAgICAgICAgICAgICAgU2NyaXB0VmFsdWUg
dGFibGUgPSBtX2FyZ3VtZW50cy0+YXJndW1lbnRBdCgwKTsKLSAgICAgICAgICAgICAgICBTY3Jp
cHRWYWx1ZSBjb2x1bW5zID0gbV9hcmd1bWVudHMtPmFyZ3VtZW50Q291bnQoKSA+IDEgPyBtX2Fy
Z3VtZW50cy0+YXJndW1lbnRBdCgxKSA6IFNjcmlwdFZhbHVlKCk7Ci0gICAgICAgICAgICAgICAg
UmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IGluc3BlY3RvclZhbHVl
ID0gaW5qZWN0ZWRTY3JpcHQud3JhcFRhYmxlKHRhYmxlLCBjb2x1bW5zKTsKKyAgICAgICAgICAg
ICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB0YWJsZSA9IG1fYXJndW1lbnRzLT5hcmd1bWVu
dEF0KDApOworICAgICAgICAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGNvbHVtbnMg
PSBtX2FyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgpID4gMSA/IG1fYXJndW1lbnRzLT5hcmd1bWVu
dEF0KDEpIDogRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKTsKKyAgICAgICAgICAgICAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBpbnNwZWN0
b3JWYWx1ZSA9IGluamVjdGVkU2NyaXB0LndyYXBUYWJsZSh0YWJsZSwgY29sdW1ucyk7CiAgICAg
ICAgICAgICAgICAgaWYgKCFpbnNwZWN0b3JWYWx1ZSkgewogICAgICAgICAgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjE2
LDcgKzIxOCw3IEBAIHZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQoSW5zcGVjdG9y
Q29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciogY29uc29sZUZyCiAgICAgICAgICAgICAgICAganNv
bkFyZ3MtPmFkZEl0ZW0oaW5zcGVjdG9yVmFsdWUpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9hcmd1bWVudHMtPmFyZ3Vt
ZW50Q291bnQoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRl
cjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBpbnNwZWN0b3JWYWx1ZSA9IGluamVjdGVkU2NyaXB0
LndyYXBPYmplY3QobV9hcmd1bWVudHMtPmFyZ3VtZW50QXQoaSksICJjb25zb2xlIiwgZ2VuZXJh
dGVQcmV2aWV3KTsKKyAgICAgICAgICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gaW5zcGVjdG9yVmFsdWUgPSBpbmplY3RlZFNj
cmlwdC53cmFwT2JqZWN0KG1fYXJndW1lbnRzLT5hcmd1bWVudEF0KGkpLCAiY29uc29sZSIsIGdl
bmVyYXRlUHJldmlldyk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghaW5zcGVjdG9yVmFsdWUp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvbnNvbGVNZXNzYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29s
ZU1lc3NhZ2UuaAppbmRleCAwN2Y4OGI2Li43ZmQxNmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvQ29uc29sZU1lc3NhZ2UuaApAQCAtMzgsMTUgKzM4LDE3IEBACiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0
b3IgeworY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIERPTVdpbmRvdzsKIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKLWNsYXNzIElu
c3BlY3Rvck9iamVjdDsKIGNsYXNzIFNjcmlwdEFyZ3VtZW50czsKIGNsYXNzIFNjcmlwdENhbGxG
cmFtZTsKIGNsYXNzIFNjcmlwdENhbGxTdGFjazsKLWNsYXNzIFNjcmlwdFZhbHVlOwogCiBjbGFz
cyBDb25zb2xlTWVzc2FnZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29uc29sZU1lc3Nh
Z2UpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAKaW5kZXggMDNhODA1Zi4uZWExYTBlNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAKQEAgLTMx
LDE0ICszMSwxNCBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKICNpbmNsdWRlICJDb250ZW50
U2VhcmNoVXRpbHMuaCIKLQotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUg
IlJlZ3VsYXJFeHByZXNzaW9uLmgiCi0KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFs
dWVzLmg+CiAjaW5jbHVkZSA8d3RmL0J1bXBQb2ludGVyQWxsb2NhdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHlhcnIvWWFyci5oPgogCit1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgQ29udGVu
dFNlYXJjaFV0aWxzIHsKIApAQCAtMTIwLDkgKzEyMCw5IEBAIFBhc3NPd25QdHI8VmVjdG9yPHNp
emVfdD4+IGxpbmVFbmRpbmdzKGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICByZXR1cm4gcmVzdWx0
LnJlbGVhc2UoKTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OlNl
YXJjaE1hdGNoPiBidWlsZE9iamVjdEZvclNlYXJjaE1hdGNoKGludCBsaW5lTnVtYmVyLCBjb25z
dCBTdHJpbmcmIGxpbmVDb250ZW50KQorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0Y2g+IGJ1aWxkT2JqZWN0Rm9yU2VhcmNoTWF0Y2goaW50
IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgbGluZUNvbnRlbnQpCiB7Ci0gICAgcmV0dXJuIFR5
cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hNYXRjaDo6Y3JlYXRlKCkKKyAgICByZXR1cm4gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0Y2g6OmNyZWF0ZSgpCiAgICAgICAgIC5z
ZXRMaW5lTnVtYmVyKGxpbmVOdW1iZXIpCiAgICAgICAgIC5zZXRMaW5lQ29udGVudChsaW5lQ29u
dGVudCkKICAgICAgICAgLnJlbGVhc2UoKTsKQEAgLTE1Myw5ICsxNTMsOSBAQCBpbnQgY291bnRS
ZWd1bGFyRXhwcmVzc2lvbk1hdGNoZXMoY29uc3QgUmVndWxhckV4cHJlc3Npb24mIHJlZ2V4LCBj
b25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaE1hdGNoPj4gc2VhcmNoSW5UZXh0
QnlMaW5lcyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJv
b2wgY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCBpc1JlZ2V4KQorUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpTZWFy
Y2hNYXRjaD4+IHNlYXJjaEluVGV4dEJ5TGluZXMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBT
dHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wgaXNSZWdl
eCkKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpT
ZWFyY2hNYXRjaD4+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFn
ZTo6U2VhcmNoTWF0Y2g+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0Y2g+PiBy
ZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpQYWdlOjpTZWFyY2hNYXRjaD46OmNyZWF0ZSgpOwogCiAgICAgUmVndWxhckV4cHJlc3Np
b24gcmVnZXggPSBDb250ZW50U2VhcmNoVXRpbHM6OmNyZWF0ZVNlYXJjaFJlZ2V4KHF1ZXJ5LCBj
YXNlU2Vuc2l0aXZlLCBpc1JlZ2V4KTsKICAgICBWZWN0b3I8cGFpcjxpbnQsIFN0cmluZz4+IG1h
dGNoZXMgPSBnZXRSZWd1bGFyRXhwcmVzc2lvbk1hdGNoZXNCeUxpbmVzKHJlZ2V4LCB0ZXh0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbHMu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbHMuaAppbmRleCA2
MGFkNjc4Li4zMTFiNjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29u
dGVudFNlYXJjaFV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRT
ZWFyY2hVdGlscy5oCkBAIC0zMSwyMSArMzEsMjAgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CiAKLSNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgorI2luY2x1ZGUgIkluc3BlY3Rv
cldlYlR5cGVCdWlsZGVycy5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbnNwZWN0b3JBcnJheTsKIGNsYXNzIFJl
Z3VsYXJFeHByZXNzaW9uOwogCiBuYW1lc3BhY2UgQ29udGVudFNlYXJjaFV0aWxzIHsKIAogUmVn
dWxhckV4cHJlc3Npb24gY3JlYXRlU2VhcmNoUmVnZXgoY29uc3QgU3RyaW5nJiBxdWVyeSwgYm9v
bCBjYXNlU2Vuc2l0aXZlLCBib29sIGlzUmVnZXgpOwogaW50IGNvdW50UmVndWxhckV4cHJlc3Np
b25NYXRjaGVzKGNvbnN0IFJlZ3VsYXJFeHByZXNzaW9uJiwgY29uc3QgU3RyaW5nJik7Ci1QYXNz
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0Y2g+
PiBzZWFyY2hJblRleHRCeUxpbmVzKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBx
dWVyeSwgY29uc3QgYm9vbCBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sIGlzUmVnZXgpOworUGFz
c1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpQYWdlOjpTZWFyY2hNYXRjaD4+IHNlYXJjaEluVGV4dEJ5TGluZXMoY29uc3QgU3RyaW5n
JiB0ZXh0LCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sIGNhc2VTZW5zaXRpdmUsIGNv
bnN0IGJvb2wgaXNSZWdleCk7CiBUZXh0UG9zaXRpb24gdGV4dFBvc2l0aW9uRnJvbU9mZnNldChz
aXplX3Qgb2Zmc2V0LCBjb25zdCBWZWN0b3I8c2l6ZV90PiYgbGluZUVuZGluZ3MpOwogUGFzc093
blB0cjxWZWN0b3I8c2l6ZV90Pj4gbGluZUVuZGluZ3MoY29uc3QgU3RyaW5nJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCmluZGV4IDc3Zjc4MGMuLjk5
YmE5ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcApA
QCAtMzYsMTggKzM2LDIxIEBACiAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKICNp
bmNsdWRlICJJbmplY3RlZFNjcmlwdE1vZHVsZS5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVl
cy5oIgorI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgogI2luY2x1ZGUgIk5vZGUu
aCIKLSNpbmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwuaCIKLSNpbmNsdWRlICJTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaD4K
KyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3QuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3Iv
SW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLXVz
aW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpBcnJheTsKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWls
ZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lOwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OlJ1
bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcjsKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpS
dW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcjsKLXVzaW5nIFdlYkNvcmU6OlR5cGVC
dWlsZGVyOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzOwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1
aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFycmF5OwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxG
cmFtZTsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpGdW5jdGlvbkRl
dGFpbHM7Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpQcm9wZXJ0eURl
c2NyaXB0b3I7Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpJbnRlcm5h
bFByb3BlcnR5RGVzY3JpcHRvcjsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRp
bWU6OlJlbW90ZU9iamVjdDsKKwordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC01NiwxNCArNTksMTQgQEAgSW5qZWN0ZWRTY3JpcHQ6OkluamVj
dGVkU2NyaXB0KCkKIHsKIH0KIAotSW5qZWN0ZWRTY3JpcHQ6OkluamVjdGVkU2NyaXB0KFNjcmlw
dE9iamVjdCBpbmplY3RlZFNjcmlwdE9iamVjdCwgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayBh
Y2Nlc3NDaGVjaykKK0luamVjdGVkU2NyaXB0OjpJbmplY3RlZFNjcmlwdChEZXByZWNhdGVkOjpT
Y3JpcHRPYmplY3QgaW5qZWN0ZWRTY3JpcHRPYmplY3QsIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hl
Y2sgYWNjZXNzQ2hlY2spCiAgICAgOiBJbmplY3RlZFNjcmlwdEJhc2UoIkluamVjdGVkU2NyaXB0
IiwgaW5qZWN0ZWRTY3JpcHRPYmplY3QsIGFjY2Vzc0NoZWNrKQogewogfQogCi12b2lkIEluamVj
dGVkU2NyaXB0OjpldmFsdWF0ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29t
bWFuZExpbmVBUEksIGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBUeXBlQnVp
bGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCit2b2lkIEluamVjdGVkU2NyaXB0Ojpl
dmFsdWF0ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lv
biwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEks
IGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsIEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQogewotICAgIFNjcmlw
dEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZXZhbHVhdGUi
KTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRT
Y3JpcHRPYmplY3QoKSwgImV2YWx1YXRlIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZy
b21BbnlUaHJlYWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGV4cHJlc3Npb24pOwog
ICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdEdyb3VwKTsKICAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudChpbmNsdWRlQ29tbWFuZExpbmVBUEkpOwpAQCAtNzIsOSArNzUsOSBAQCB2
b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNv
bnN0IFN0cmluZyYgZXhwcmVzc2lvbgogICAgIG1ha2VFdmFsQ2FsbChlcnJvclN0cmluZywgZnVu
Y3Rpb24sIHJlc3VsdCwgd2FzVGhyb3duKTsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdDo6Y2Fs
bEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVj
dElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgYXJndW1lbnRzLCBi
b29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1
dDxib29sPiogd2FzVGhyb3duKQordm9pZCBJbmplY3RlZFNjcmlwdDo6Y2FsbEZ1bmN0aW9uT24o
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBT
dHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgYXJndW1lbnRzLCBib29sIHJldHVybkJ5
VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKIHsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwg
ZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImNhbGxGdW5jdGlvbk9uIik7CisgICAg
RGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2Jq
ZWN0KCksICJjYWxsRnVuY3Rpb25PbiIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9t
QW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RJZCk7CiAgICAg
ZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZXhwcmVzc2lvbik7CiAgICAgZnVuY3Rpb24uYXBwZW5k
QXJndW1lbnQoYXJndW1lbnRzKTsKQEAgLTgzLDkgKzg2LDkgQEAgdm9pZCBJbmplY3RlZFNjcmlw
dDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IG9iamUKICAgICBtYWtlRXZhbENhbGwoZXJyb3JTdHJpbmcsIGZ1bmN0aW9uLCByZXN1bHQsIHdh
c1Rocm93bik7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT25DYWxsRnJhbWUo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywg
Y29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25z
dCBTdHJpbmcmIG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgYm9vbCBy
ZXR1cm5CeVZhbHVlLCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPFJlbW90ZU9iamVjdD4q
IHJlc3VsdCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQordm9pZCBJ
bmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBjb25zdCBTdHJp
bmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYg
b2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBib29sIHJldHVybkJ5VmFs
dWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKIHsKLSAg
ICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImV2
YWx1YXRlT25DYWxsRnJhbWUiKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwg
ZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImV2YWx1YXRlT25DYWxsRnJhbWUiLCBX
ZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAgZnVuY3Rpb24u
YXBwZW5kQXJndW1lbnQoY2FsbEZyYW1lcyk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQo
Y2FsbEZyYW1lSWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGV4cHJlc3Npb24pOwpA
QCAtOTgsNyArMTAxLDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFt
ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFNjcmlwdFYKIAogdm9pZCBJbmplY3Rl
ZFNjcmlwdDo6Z2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8RnVuY3Rpb25EZXRhaWxzPiogcmVzdWx0KQog
ewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgp
LCAiZ2V0RnVuY3Rpb25EZXRhaWxzIik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25D
YWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJnZXRGdW5jdGlvbkRldGFpbHMi
LCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAgZnVuY3Rp
b24uYXBwZW5kQXJndW1lbnQoZnVuY3Rpb25JZCk7CiAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVl
PiByZXN1bHRWYWx1ZTsKICAgICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJlc3VsdFZhbHVlKTsKQEAg
LTExMiw3ICsxMTUsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRGdW5jdGlvbkRldGFpbHMo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmCiAKIHZvaWQgSW5qZWN0ZWRT
Y3JpcHQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIG9iamVjdElkLCBib29sIG93blByb3BlcnRpZXMsIFJlZlB0cjxBcnJheTxQcm9wZXJ0eURl
c2NyaXB0b3I+PiogcHJvcGVydGllcykKIHsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rp
b24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImdldFByb3BlcnRpZXMiKTsKKyAgICBEZXByZWNh
dGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwg
ImdldFByb3BlcnRpZXMiLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVh
ZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQpOwogICAgIGZ1bmN0aW9u
LmFwcGVuZEFyZ3VtZW50KG93blByb3BlcnRpZXMpOwogCkBAIC0xMjcsNyArMTMwLDcgQEAgdm9p
ZCBJbmplY3RlZFNjcmlwdDo6Z2V0UHJvcGVydGllcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cmluZyYgb2JqZWMKIAogdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0SW50ZXJuYWxQ
cm9wZXJ0aWVzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJ
ZCwgUmVmUHRyPEFycmF5PEludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4qIHByb3BlcnRpZXMp
CiB7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0
KCksICJnZXRJbnRlcm5hbFByb3BlcnRpZXMiKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5j
dGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImdldEludGVybmFsUHJv
cGVydGllcyIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAg
ICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RJZCk7CiAKICAgICBSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+IHJlc3VsdDsKQEAgLTE0NiwxMSArMTQ5LDExIEBAIE5vZGUqIEluamVjdGVkU2Ny
aXB0Ojpub2RlRm9yT2JqZWN0SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJZCkKICAgICBpZiAoaGFz
Tm9WYWx1ZSgpIHx8ICFjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coKSkKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmpl
Y3QoKSwgIm5vZGVGb3JPYmplY3RJZCIpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9u
Q2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAibm9kZUZvck9iamVjdElkIiwg
V2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAgIGZ1bmN0aW9u
LmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKIAogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFs
c2U7Ci0gICAgU2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVu
YWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUgcmVzdWx0VmFsdWUgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhh
ZEV4Y2VwdGlvbik7CiAgICAgQVNTRVJUKCFoYWRFeGNlcHRpb24pOwogCiAgICAgcmV0dXJuIElu
amVjdGVkU2NyaXB0SG9zdDo6c2NyaXB0VmFsdWVBc05vZGUocmVzdWx0VmFsdWUpOwpAQCAtMTU4
LDIwICsxNjEsMjAgQEAgTm9kZSogSW5qZWN0ZWRTY3JpcHQ6Om5vZGVGb3JPYmplY3RJZChjb25z
dCBTdHJpbmcmIG9iamVjdElkKQogCiB2b2lkIEluamVjdGVkU2NyaXB0OjpyZWxlYXNlT2JqZWN0
KGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpCiB7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0
aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJyZWxlYXNlT2JqZWN0Iik7CisgICAgRGVwcmVj
YXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCks
ICJyZWxlYXNlT2JqZWN0IiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJl
YWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKICAgICBSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+IHJlc3VsdDsKICAgICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJlc3VsdCk7
CiB9CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLVBhc3NSZWZQdHI8QXJyYXk8
Q2FsbEZyYW1lPj4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVzKGNvbnN0IFNjcmlwdFZh
bHVlJiBjYWxsRnJhbWVzKQorUGFzc1JlZlB0cjxBcnJheTxDYWxsRnJhbWU+PiBJbmplY3RlZFNj
cmlwdDo6d3JhcENhbGxGcmFtZXMoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGNhbGxG
cmFtZXMpCiB7CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwotICAgIFNjcmlwdEZ1bmN0aW9u
Q2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAid3JhcENhbGxGcmFtZXMiKTsK
KyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3Jp
cHRPYmplY3QoKSwgIndyYXBDYWxsRnJhbWVzIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxl
ckZyb21BbnlUaHJlYWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNhbGxGcmFtZXMp
OwogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgU2NyaXB0VmFsdWUgY2FsbEZy
YW1lc1ZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNl
cHRpb24pOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGNhbGxGcmFtZXNWYWx1ZSA9IGNh
bGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKICAgICBB
U1NFUlQoIWhhZEV4Y2VwdGlvbik7CiAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHQg
PSBjYWxsRnJhbWVzVmFsdWUudG9JbnNwZWN0b3JWYWx1ZShzY3JpcHRTdGF0ZSgpKTsKICAgICBp
ZiAocmVzdWx0LT50eXBlKCkgPT0gSW5zcGVjdG9yVmFsdWU6OlR5cGVBcnJheSkKQEAgLTE4MCwy
NiArMTgzLDI2IEBAIFBhc3NSZWZQdHI8QXJyYXk8Q2FsbEZyYW1lPj4gSW5qZWN0ZWRTY3JpcHQ6
OndyYXBDYWxsRnJhbWVzKGNvbnN0IFNjcmlwdFZhbHVlJiBjCiB9CiAjZW5kaWYKIAotUGFzc1Jl
ZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6
d3JhcE9iamVjdChjb25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IFN0cmluZyYgZ3JvdXBO
YW1lLCBib29sIGdlbmVyYXRlUHJldmlldykgY29uc3QKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcE9i
amVjdChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IFN0cmluZyYg
Z3JvdXBOYW1lLCBib29sIGdlbmVyYXRlUHJldmlldykgY29uc3QKIHsKICAgICBBU1NFUlQoIWhh
c05vVmFsdWUoKSk7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIHdyYXBGdW5jdGlvbihpbmplY3Rl
ZFNjcmlwdE9iamVjdCgpLCAid3JhcE9iamVjdCIpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1
bmN0aW9uQ2FsbCB3cmFwRnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgIndyYXBPYmpl
Y3QiKTsKICAgICB3cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1lbnQodmFsdWUpOwogICAgIHdyYXBG
dW5jdGlvbi5hcHBlbmRBcmd1bWVudChncm91cE5hbWUpOwogICAgIHdyYXBGdW5jdGlvbi5hcHBl
bmRBcmd1bWVudChjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coKSk7CiAgICAgd3JhcEZ1bmN0aW9u
LmFwcGVuZEFyZ3VtZW50KGdlbmVyYXRlUHJldmlldyk7CiAgICAgYm9vbCBoYWRFeGNlcHRpb24g
PSBmYWxzZTsKLSAgICBTY3JpcHRWYWx1ZSByID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVk
KHdyYXBGdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSByID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKHdyYXBGdW5jdGlvbiwgaGFkRXhjZXB0
aW9uKTsKICAgICBpZiAoaGFkRXhjZXB0aW9uKQogICAgICAgICByZXR1cm4gMDsKICAgICBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiByYXdSZXN1bHQgPSByLnRvSW5zcGVjdG9yVmFsdWUoc2NyaXB0
U3RhdGUoKSktPmFzT2JqZWN0KCk7Ci0gICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpSdW50aW1lOjpS
ZW1vdGVPYmplY3Q6OnJ1bnRpbWVDYXN0KHJhd1Jlc3VsdCk7CisgICAgcmV0dXJuIEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDo6cnVudGltZUNhc3QocmF3UmVz
dWx0KTsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0
PiBJbmplY3RlZFNjcmlwdDo6d3JhcFRhYmxlKGNvbnN0IFNjcmlwdFZhbHVlJiB0YWJsZSwgY29u
c3QgU2NyaXB0VmFsdWUmIGNvbHVtbnMpIGNvbnN0CitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBUYWJs
ZShjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdGFibGUsIGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiBjb2x1bW5zKSBjb25zdAogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgp
KTsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgd3JhcEZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2Jq
ZWN0KCksICJ3cmFwVGFibGUiKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwg
d3JhcEZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJ3cmFwVGFibGUiKTsKICAgICB3
cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KCkpOwog
ICAgIHdyYXBGdW5jdGlvbi5hcHBlbmRBcmd1bWVudCh0YWJsZSk7CiAgICAgaWYgKGNvbHVtbnMu
aGFzTm9WYWx1ZSgpKQpAQCAtMjA3LDI2ICsyMTAsMjYgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRl
cjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcFRhYmxlKGNvbnN0
IFMKICAgICBlbHNlCiAgICAgICAgIHdyYXBGdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjb2x1bW5z
KTsKICAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwotICAgIFNjcmlwdFZhbHVlIHIgPSBj
YWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQod3JhcEZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwor
ICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHIgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJs
ZWQod3JhcEZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwogICAgIGlmIChoYWRFeGNlcHRpb24pCiAg
ICAgICAgIHJldHVybiAwOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJhd1Jlc3VsdCA9
IHIudG9JbnNwZWN0b3JWYWx1ZShzY3JpcHRTdGF0ZSgpKS0+YXNPYmplY3QoKTsKLSAgICByZXR1
cm4gVHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDo6cnVudGltZUNhc3QocmF3UmVz
dWx0KTsKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0OjpydW50aW1lQ2FzdChyYXdSZXN1bHQpOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwTm9kZShOb2Rl
KiBub2RlLCBjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcE5v
ZGUoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUpCiB7CiAgICAgcmV0dXJuIHdy
YXBPYmplY3Qobm9kZUFzU2NyaXB0VmFsdWUobm9kZSksIGdyb3VwTmFtZSk7CiB9CiAKLVNjcmlw
dFZhbHVlIEluamVjdGVkU2NyaXB0OjpmaW5kT2JqZWN0QnlJZChjb25zdCBTdHJpbmcmIG9iamVj
dElkKSBjb25zdAorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHQ6OmZpbmRP
YmplY3RCeUlkKGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFo
YXNOb1ZhbHVlKCkpOwotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNj
cmlwdE9iamVjdCgpLCAiZmluZE9iamVjdEJ5SWQiKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRG
dW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImZpbmRPYmplY3RC
eUlkIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAgIGZ1
bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKIAogICAgIGJvb2wgaGFkRXhjZXB0aW9u
ID0gZmFsc2U7Ci0gICAgU2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBjYWxsRnVuY3Rpb25XaXRo
RXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CisgICAgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rp
b24sIGhhZEV4Y2VwdGlvbik7CiAgICAgQVNTRVJUKCFoYWRFeGNlcHRpb24pOwogICAgIHJldHVy
biByZXN1bHRWYWx1ZTsKIH0KQEAgLTIzNCw3ICsyMzcsNyBAQCBTY3JpcHRWYWx1ZSBJbmplY3Rl
ZFNjcmlwdDo6ZmluZE9iamVjdEJ5SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJZCkgY29uc3QKIHZv
aWQgSW5qZWN0ZWRTY3JpcHQ6Omluc3BlY3ROb2RlKE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJU
KCFoYXNOb1ZhbHVlKCkpOwotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3Rl
ZFNjcmlwdE9iamVjdCgpLCAiaW5zcGVjdE5vZGUiKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRG
dW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImluc3BlY3ROb2Rl
IiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAgIGZ1bmN0
aW9uLmFwcGVuZEFyZ3VtZW50KG5vZGVBc1NjcmlwdFZhbHVlKG5vZGUpKTsKICAgICBSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+IHJlc3VsdDsKICAgICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJlc3VsdCk7
CkBAIC0yNDMsMTQgKzI0NiwxNCBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjppbnNwZWN0Tm9kZShO
b2RlKiBub2RlKQogdm9pZCBJbmplY3RlZFNjcmlwdDo6cmVsZWFzZU9iamVjdEdyb3VwKGNvbnN0
IFN0cmluZyYgb2JqZWN0R3JvdXApCiB7CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwotICAg
IFNjcmlwdEZ1bmN0aW9uQ2FsbCByZWxlYXNlRnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3Qo
KSwgInJlbGVhc2VPYmplY3RHcm91cCIpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9u
Q2FsbCByZWxlYXNlRnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgInJlbGVhc2VPYmpl
Y3RHcm91cCIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAg
ICByZWxlYXNlRnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0R3JvdXApOwogICAgIGJvb2wg
aGFkRXhjZXB0aW9uID0gZmFsc2U7CiAgICAgY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKHJl
bGVhc2VGdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKICAgICBBU1NFUlQoIWhhZEV4Y2VwdGlvbik7
CiB9CiAKLVNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0Ojpub2RlQXNTY3JpcHRWYWx1ZShOb2Rl
KiBub2RlKQorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHQ6Om5vZGVBc1Nj
cmlwdFZhbHVlKE5vZGUqIG5vZGUpCiB7CiAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdDo6
bm9kZUFzU2NyaXB0VmFsdWUoc2NyaXB0U3RhdGUoKSwgbm9kZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCmluZGV4IDliNmFkMmYuLmZkOWI5ZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCkBAIC0zMywxOSArMzMsMjEg
QEAKIAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0QmFzZS5oIgogI2luY2x1ZGUgIkluamVjdGVk
U2NyaXB0TWFuYWdlci5oIgotI2luY2x1ZGUgIkluc3BlY3RvclR5cGVCdWlsZGVyLmgiCisjaW5j
bHVkZSAiSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmgiCiAjaW5jbHVkZSAiU2NyaXB0QXJndW1l
bnRzLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAorbmFtZXNwYWNlIERlcHJlY2F0ZWQgewor
Y2xhc3MgU2NyaXB0T2JqZWN0OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElu
amVjdGVkU2NyaXB0TW9kdWxlOwogY2xhc3MgTm9kZTsKLWNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKQEAgLTYwLDQwICs2Miw0MCBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgICBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwKICAgICAg
ICAgICAgICAgICAgIGJvb2wgcmV0dXJuQnlWYWx1ZSwKICAgICAgICAgICAgICAgICAgIGJvb2wg
Z2VuZXJhdGVQcmV2aWV3LAotICAgICAgICAgICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsCi0gICAgICAgICAgICAgICAgICBUeXBlQnVp
bGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOworICAgICAgICAgICAgICAgICAgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3Vs
dCwKKyAgICAgICAgICAgICAgICAgIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxi
b29sPiogd2FzVGhyb3duKTsKICAgICB2b2lkIGNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nKiwK
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sCiAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBTdHJpbmcmIGFyZ3VtZW50cywKICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgcmV0dXJuQnlWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZ2Vu
ZXJhdGVQcmV2aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVy
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOworICAgICAgICAgICAg
ICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdD4qIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKTsKICAgICB2b2lkIGV2YWx1YXRl
T25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgcmV0dXJuQnlWYWx1ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBnZW5lcmF0ZVByZXZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJv
b2w+KiB3YXNUaHJvd24pOwotICAgIHZvaWQgZ2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5n
KiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2Vy
OjpGdW5jdGlvbkRldGFpbHM+KiByZXN1bHQpOwotICAgIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGJvb2wgb3duUHJvcGVydGllcywgUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UnVudGltZTo6UHJvcGVydHlEZXNj
cmlwdG9yPj4qIHJlc3VsdCk7Ci0gICAgdm9pZCBnZXRJbnRlcm5hbFByb3BlcnRpZXMoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5
PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+KiByZXN1
bHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdh
c1Rocm93bik7CisgICAgdm9pZCBnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1
Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiogcmVzdWx0KTsKKyAgICB2b2lkIGdldFByb3BlcnRpZXMo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIG93blByb3BlcnRpZXMs
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiogcmVzdWx0KTsKKyAgICB2b2lkIGdl
dEludGVybmFsUHJvcGVydGllcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQs
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+KiByZXN1bHQpOwogICAg
IE5vZGUqIG5vZGVGb3JPYmplY3RJZChjb25zdCBTdHJpbmcmIG9iamVjdElkKTsKICAgICB2b2lk
IHJlbGVhc2VPYmplY3QoY29uc3QgU3RyaW5nJiBvYmplY3RJZCk7CiAKICNpZiBFTkFCTEUoSkFW
QVNDUklQVF9ERUJVR0dFUikKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBl
QnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IHdyYXBDYWxsRnJhbWVzKGNvbnN0IFNjcmlw
dFZhbHVlJik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4gd3JhcENhbGxGcmFt
ZXMoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmKTsKICNlbmRpZgogCi0gICAgUGFzc1Jl
ZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiB3cmFwT2JqZWN0KGNvbnN0
IFNjcmlwdFZhbHVlJiwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUsIGJvb2wgZ2VuZXJhdGVQcmV2
aWV3ID0gZmFsc2UpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6
OlJlbW90ZU9iamVjdD4gd3JhcFRhYmxlKGNvbnN0IFNjcmlwdFZhbHVlJiB0YWJsZSwgY29uc3Qg
U2NyaXB0VmFsdWUmIGNvbHVtbnMpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gd3JhcE5vZGUoTm9kZSosIGNvbnN0IFN0cmluZyYgZ3Jv
dXBOYW1lKTsKLSAgICBTY3JpcHRWYWx1ZSBmaW5kT2JqZWN0QnlJZChjb25zdCBTdHJpbmcmIG9i
amVjdElkKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdD4gd3JhcE9iamVjdChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYsIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lLCBib29sIGdlbmVyYXRlUHJldmlldyA9IGZh
bHNlKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRp
bWU6OlJlbW90ZU9iamVjdD4gd3JhcFRhYmxlKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
JiB0YWJsZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGNvbHVtbnMpIGNvbnN0Owor
ICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0PiB3cmFwTm9kZShOb2RlKiwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUpOworICAgIERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlIGZpbmRPYmplY3RCeUlkKGNvbnN0IFN0cmluZyYgb2JqZWN0SWQp
IGNvbnN0OwogCiAgICAgdm9pZCBpbnNwZWN0Tm9kZShOb2RlKik7CiAgICAgdm9pZCByZWxlYXNl
T2JqZWN0R3JvdXAoY29uc3QgU3RyaW5nJik7CkBAIC0xMDEsOSArMTAzLDkgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgSW5qZWN0ZWRTY3JpcHRNb2R1bGU7CiAgICAgZnJp
ZW5kIEluamVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRG
b3IoSlNDOjpFeGVjU3RhdGUqKTsKLSAgICBJbmplY3RlZFNjcmlwdChTY3JpcHRPYmplY3QsIElu
c3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOworICAgIEluamVjdGVkU2NyaXB0KERlcHJlY2F0ZWQ6
OlNjcmlwdE9iamVjdCwgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayk7CiAKLSAgICBTY3JpcHRW
YWx1ZSBub2RlQXNTY3JpcHRWYWx1ZShOb2RlKik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUgbm9kZUFzU2NyaXB0VmFsdWUoTm9kZSopOwogfTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwCmluZGV4IGQ5ZmJhNDAuLjYz
ZjI5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJh
c2UuY3BwCkBAIC0zNSwxMiArMzUsMTQgQEAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEJhc2Uu
aCIKIAogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIklu
c3BlY3RvclZhbHVlcy5oIgotI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5oIgorI2luY2x1
ZGUgPGJpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9J
bnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWls
ZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q7Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q7CisKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTAsMTQgKzUyLDE0IEBAIEluamVjdGVkU2NyaXB0
QmFzZTo6SW5qZWN0ZWRTY3JpcHRCYXNlKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKIH0KIAotSW5q
ZWN0ZWRTY3JpcHRCYXNlOjpJbmplY3RlZFNjcmlwdEJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBT
Y3JpcHRPYmplY3QgaW5qZWN0ZWRTY3JpcHRPYmplY3QsIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hl
Y2sgYWNjZXNzQ2hlY2spCitJbmplY3RlZFNjcmlwdEJhc2U6OkluamVjdGVkU2NyaXB0QmFzZShj
b25zdCBTdHJpbmcmIG5hbWUsIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBpbmplY3RlZFNjcmlw
dE9iamVjdCwgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayBhY2Nlc3NDaGVjaykKICAgICA6IG1f
bmFtZShuYW1lKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE9iamVjdChpbmplY3RlZFNjcmlwdE9i
amVjdCkKICAgICAsIG1faW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayhhY2Nlc3NDaGVjaykKIHsK
IH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6OmluaXRpYWxpemUoU2NyaXB0T2JqZWN0IGlu
amVjdGVkU2NyaXB0T2JqZWN0LCBJbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrIGFjY2Vzc0NoZWNr
KQordm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6OmluaXRpYWxpemUoRGVwcmVjYXRlZDo6U2NyaXB0
T2JqZWN0IGluamVjdGVkU2NyaXB0T2JqZWN0LCBJbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrIGFj
Y2Vzc0NoZWNrKQogewogICAgIG1faW5qZWN0ZWRTY3JpcHRPYmplY3QgPSBpbmplY3RlZFNjcmlw
dE9iamVjdDsKICAgICBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sgPSBhY2Nlc3NDaGVjazsK
QEAgLTY4LDEyICs3MCwxMiBAQCBib29sIEluamVjdGVkU2NyaXB0QmFzZTo6Y2FuQWNjZXNzSW5z
cGVjdGVkV2luZG93KCkgY29uc3QKICAgICByZXR1cm4gbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0No
ZWNrKG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKSk7CiB9CiAKLWNvbnN0IFNj
cmlwdE9iamVjdCYgSW5qZWN0ZWRTY3JpcHRCYXNlOjppbmplY3RlZFNjcmlwdE9iamVjdCgpIGNv
bnN0Citjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmIEluamVjdGVkU2NyaXB0QmFzZTo6
aW5qZWN0ZWRTY3JpcHRPYmplY3QoKSBjb25zdAogewogICAgIHJldHVybiBtX2luamVjdGVkU2Ny
aXB0T2JqZWN0OwogfQogCi1TY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdEJhc2U6OmNhbGxGdW5j
dGlvbldpdGhFdmFsRW5hYmxlZChTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uLCBib29sJiBo
YWRFeGNlcHRpb24pIGNvbnN0CitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlw
dEJhc2U6OmNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChEZXByZWNhdGVkOjpTY3JpcHRGdW5j
dGlvbkNhbGwmIGZ1bmN0aW9uLCBib29sJiBoYWRFeGNlcHRpb24pIGNvbnN0CiB7CiAgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3Rh
dGUoKSk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbENhbGxGdW5jdGlvbihzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBuYW1lKCksIDEpOwpAQCAtODcsNyArODksNyBAQCBTY3JpcHRWYWx1ZSBJbmplY3RlZFNj
cmlwdEJhc2U6OmNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChTY3JpcHRGdW5jdGlvbkNhbGwm
CiAgICAgICAgICAgICBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5zZXRFdmFs
RW5hYmxlZCh0cnVlKTsKICAgICB9CiAKLSAgICBTY3JpcHRWYWx1ZSByZXN1bHRWYWx1ZSA9IGZ1
bmN0aW9uLmNhbGwoaGFkRXhjZXB0aW9uKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBy
ZXN1bHRWYWx1ZSA9IGZ1bmN0aW9uLmNhbGwoaGFkRXhjZXB0aW9uKTsKIAogICAgIGlmIChldmFs
SXNEaXNhYmxlZCkKICAgICAgICAgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+
c2V0RXZhbEVuYWJsZWQoZmFsc2UpOwpAQCAtOTYsNyArOTgsNyBAQCBTY3JpcHRWYWx1ZSBJbmpl
Y3RlZFNjcmlwdEJhc2U6OmNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChTY3JpcHRGdW5jdGlv
bkNhbGwmCiAgICAgcmV0dXJuIHJlc3VsdFZhbHVlOwogfQogCi12b2lkIEluamVjdGVkU2NyaXB0
QmFzZTo6bWFrZUNhbGwoU2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwgUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiogcmVzdWx0KQordm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6Om1ha2VDYWxsKERl
cHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24sIFJlZlB0cjxJbnNwZWN0b3JW
YWx1ZT4qIHJlc3VsdCkKIHsKICAgICBpZiAoaGFzTm9WYWx1ZSgpIHx8ICFjYW5BY2Nlc3NJbnNw
ZWN0ZWRXaW5kb3coKSkgewogICAgICAgICAqcmVzdWx0ID0gSW5zcGVjdG9yVmFsdWU6Om51bGwo
KTsKQEAgLTEwNCw3ICsxMDYsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUNhbGwo
U2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwgUmVmUHRyPEluc3BlY3RvcgogICAgIH0KIAog
ICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgU2NyaXB0VmFsdWUgcmVzdWx0VmFs
dWUgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7
CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBjYWxsRnVuY3Rpb25X
aXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CiAKICAgICBBU1NFUlQoIWhh
ZEV4Y2VwdGlvbik7CiAgICAgaWYgKCFoYWRFeGNlcHRpb24pIHsKQEAgLTExNSw3ICsxMTcsNyBA
QCB2b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUNhbGwoU2NyaXB0RnVuY3Rpb25DYWxsJiBm
dW5jdGlvbiwgUmVmUHRyPEluc3BlY3RvcgogICAgICAgICAqcmVzdWx0ID0gSW5zcGVjdG9yU3Ry
aW5nOjpjcmVhdGUoIkV4Y2VwdGlvbiB3aGlsZSBtYWtpbmcgYSBjYWxsLiIpOwogfQogCi12b2lk
IEluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUV2YWxDYWxsKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgU2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q+KiBvYmplY3RSZXN1bHQsIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8
Ym9vbD4qIHdhc1Rocm93bikKK3ZvaWQgSW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtlRXZhbENhbGwo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwm
IGZ1bmN0aW9uLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0Piogb2JqZWN0UmVzdWx0LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8
Ym9vbD4qIHdhc1Rocm93bikKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdDsK
ICAgICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJlc3VsdCk7CkBAIC0xMzksNyArMTQxLDcgQEAgdm9p
ZCBJbmplY3RlZFNjcmlwdEJhc2U6Om1ha2VFdmFsQ2FsbChFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIFNjcmlwdEZ1bmN0aW9uQ2EKICAgICAgICAgKmVycm9yU3RyaW5nID0gIkludGVybmFsIGVy
cm9yOiByZXN1bHQgaXMgbm90IGEgcGFpciBvZiB2YWx1ZSBhbmQgd2FzVGhyb3duIGZsYWciOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgICpvYmplY3RSZXN1bHQgPSBUeXBlQnVpbGRlcjo6
UnVudGltZTo6UmVtb3RlT2JqZWN0OjpydW50aW1lQ2FzdChyZXN1bHRPYmopOworICAgICpvYmpl
Y3RSZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q6
OnJ1bnRpbWVDYXN0KHJlc3VsdE9iaik7CiAgICAgKndhc1Rocm93biA9IHdhc1Rocm93blZhbDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5oCmlu
ZGV4IDc5NmY2YzAuLjc1ZjUyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRCYXNlLmgKQEAgLTMxLDE1ICszMSwyMCBAQAogI2lmbmRlZiBJbmplY3RlZFNj
cmlwdEJhc2VfaAogI2RlZmluZSBJbmplY3RlZFNjcmlwdEJhc2VfaAogCi0jaW5jbHVkZSAiSW5z
cGVjdG9yVHlwZUJ1aWxkZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRl
ICJJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRP
YmplY3QuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBJbnNwZWN0b3JWYWx1ZTsKK25hbWVz
cGFjZSBEZXByZWNhdGVkIHsKIGNsYXNzIFNjcmlwdEZ1bmN0aW9uQ2FsbDsKK30KKworbmFtZXNw
YWNlIEluc3BlY3RvciB7CitjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKK30KKworbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIApAQCAtNTYsMTggKzYxLDE4
IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICB0eXBlZGVmIGJvb2wgKCpJbnNwZWN0ZWRTdGF0
ZUFjY2Vzc0NoZWNrKShKU0M6OkV4ZWNTdGF0ZSopOwogICAgIEluamVjdGVkU2NyaXB0QmFzZShj
b25zdCBTdHJpbmcmIG5hbWUpOwotICAgIEluamVjdGVkU2NyaXB0QmFzZShjb25zdCBTdHJpbmcm
IG5hbWUsIFNjcmlwdE9iamVjdCwgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayk7CisgICAgSW5q
ZWN0ZWRTY3JpcHRCYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgRGVwcmVjYXRlZDo6U2NyaXB0T2Jq
ZWN0LCBJbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKTsKIAotICAgIHZvaWQgaW5pdGlhbGl6ZShT
Y3JpcHRPYmplY3QsIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOworICAgIHZvaWQgaW5pdGlh
bGl6ZShEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QsIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sp
OwogICAgIGJvb2wgY2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KCkgY29uc3Q7Ci0gICAgY29uc3Qg
U2NyaXB0T2JqZWN0JiBpbmplY3RlZFNjcmlwdE9iamVjdCgpIGNvbnN0OwotICAgIFNjcmlwdFZh
bHVlIGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChTY3JpcHRGdW5jdGlvbkNhbGwmLCBib29s
JiBoYWRFeGNlcHRpb24pIGNvbnN0OwotICAgIHZvaWQgbWFrZUNhbGwoU2NyaXB0RnVuY3Rpb25D
YWxsJiwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKLSAgICB2b2lkIG1ha2VFdmFs
Q2FsbChFcnJvclN0cmluZyosIFNjcmlwdEZ1bmN0aW9uQ2FsbCYsIFJlZlB0cjxUeXBlQnVpbGRl
cjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0
PGJvb2w+KiB3YXNUaHJvd24pOworICAgIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYg
aW5qZWN0ZWRTY3JpcHRPYmplY3QoKSBjb25zdDsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25D
YWxsJiwgYm9vbCYgaGFkRXhjZXB0aW9uKSBjb25zdDsKKyAgICB2b2lkIG1ha2VDYWxsKERlcHJl
Y2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCYsIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZh
bHVlPiogcmVzdWx0KTsKKyAgICB2b2lkIG1ha2VFdmFsQ2FsbChFcnJvclN0cmluZyosIERlcHJl
Y2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCYsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9u
YW1lOwotICAgIFNjcmlwdE9iamVjdCBtX2luamVjdGVkU2NyaXB0T2JqZWN0OworICAgIERlcHJl
Y2F0ZWQ6OlNjcmlwdE9iamVjdCBtX2luamVjdGVkU2NyaXB0T2JqZWN0OwogICAgIEluc3BlY3Rl
ZFN0YXRlQWNjZXNzQ2hlY2sgbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9k
dWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01v
ZHVsZS5jcHAKaW5kZXggZmFkNzk4Yi4uNThiZTczOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuY3BwCkBAIC0zNywx
NSArMzcsMTkgQEAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVj
dGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmgiCi0jaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCi0jaW5jbHVkZSAiU2Ny
aXB0T2JqZWN0LmgiCisjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCisjaW5jbHVk
ZSA8YmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmg+CisjaW5jbHVkZSA8YmluZGluZ3MvU2Ny
aXB0T2JqZWN0Lmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogCi11
c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6QXJyYXk7Ci11c2luZyBXZWJDb3JlOjpUeXBlQnVp
bGRlcjo6Q2FudmFzOjpSZXNvdXJjZUlkOwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkNh
bnZhczo6UmVzb3VyY2VJbmZvOwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6
UmVzb3VyY2VTdGF0ZTsKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNl
TG9nOwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZDsKK3Vz
aW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5OwordXNpbmcgSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJjZUlkOwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q2FudmFzOjpSZXNvdXJjZUluZm87Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
YW52YXM6OlJlc291cmNlU3RhdGU7Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52
YXM6OlRyYWNlTG9nOwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFj
ZUxvZ0lkOworCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTY2LDM0ICs3MCwzNCBAQCBTdHJpbmcgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1
bGU6OnNvdXJjZSgpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZyhyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZV9qcyksIHNpemVvZihJ
bmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZV9qcykpOwogfQogCi1TY3JpcHRPYmplY3Qg
SW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OndyYXBDYW52YXMyRENvbnRleHQoY29uc3QgU2Ny
aXB0T2JqZWN0JiBjb250ZXh0KQorRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IEluamVjdGVkU2Ny
aXB0Q2FudmFzTW9kdWxlOjp3cmFwQ2FudmFzMkRDb250ZXh0KGNvbnN0IERlcHJlY2F0ZWQ6OlNj
cmlwdE9iamVjdCYgY29udGV4dCkKIHsKICAgICByZXR1cm4gY2FsbFdyYXBDb250ZXh0RnVuY3Rp
b24oIndyYXBDYW52YXMyRENvbnRleHQiLCBjb250ZXh0KTsKIH0KIAogI2lmIEVOQUJMRShXRUJH
TCkKLVNjcmlwdE9iamVjdCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6d3JhcFdlYkdMQ29u
dGV4dChjb25zdCBTY3JpcHRPYmplY3QmIGdsQ29udGV4dCkKK0RlcHJlY2F0ZWQ6OlNjcmlwdE9i
amVjdCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6d3JhcFdlYkdMQ29udGV4dChjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmIGdsQ29udGV4dCkKIHsKICAgICByZXR1cm4gY2FsbFdy
YXBDb250ZXh0RnVuY3Rpb24oIndyYXBXZWJHTENvbnRleHQiLCBnbENvbnRleHQpOwogfQogI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHTCkKIAotU2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0Q2FudmFz
TW9kdWxlOjpjYWxsV3JhcENvbnRleHRGdW5jdGlvbihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFt
ZSwgY29uc3QgU2NyaXB0T2JqZWN0JiBjb250ZXh0KQorRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0
IEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjpjYWxsV3JhcENvbnRleHRGdW5jdGlvbihjb25z
dCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiBj
b250ZXh0KQogewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlw
dE9iamVjdCgpLCBmdW5jdGlvbk5hbWUpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9u
Q2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCBmdW5jdGlvbk5hbWUsIFdlYkNv
cmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBl
bmRBcmd1bWVudChjb250ZXh0KTsKICAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwotICAg
IFNjcmlwdFZhbHVlIHJlc3VsdFZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1
bmN0aW9uLCBoYWRFeGNlcHRpb24pOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHJlc3Vs
dFZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRp
b24pOwogICAgIGlmIChoYWRFeGNlcHRpb24gfHwgcmVzdWx0VmFsdWUuaGFzTm9WYWx1ZSgpIHx8
ICFyZXN1bHRWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICByZXR1cm4gU2NyaXB0T2JqZWN0KCk7CisgICAgICAgIHJldHVybiBEZXByZWNh
dGVkOjpTY3JpcHRPYmplY3QoKTsKICAgICB9Ci0gICAgcmV0dXJuIFNjcmlwdE9iamVjdChjb250
ZXh0LnNjcmlwdFN0YXRlKCksIHJlc3VsdFZhbHVlKTsKKyAgICByZXR1cm4gRGVwcmVjYXRlZDo6
U2NyaXB0T2JqZWN0KGNvbnRleHQuc2NyaXB0U3RhdGUoKSwgcmVzdWx0VmFsdWUpOwogfQogCiB2
b2lkIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjptYXJrRnJhbWVFbmQoKQogewotICAgIFNj
cmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAibWFya0Zy
YW1lRW5kIik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGlu
amVjdGVkU2NyaXB0T2JqZWN0KCksICJtYXJrRnJhbWVFbmQiLCBXZWJDb3JlOjpmdW5jdGlvbkNh
bGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1
bHRWYWx1ZTsKICAgICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJlc3VsdFZhbHVlKTsKICAgICBBU1NF
UlQocmVzdWx0VmFsdWUpOwpAQCAtMTExLDcgKzExNSw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRD
YW52YXNNb2R1bGU6OnN0YXJ0Q2FwdHVyaW5nKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgVHJh
Y2VMCiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OmNhbGxTdGFydENhcHR1cmlu
Z0Z1bmN0aW9uKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lLCBFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIFRyYWNlTG9nSWQqIHRyYWNlTG9nSWQpCiB7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxs
IGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksIGZ1bmN0aW9uTmFtZSk7CisgICAgRGVw
cmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0
KCksIGZ1bmN0aW9uTmFtZSwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJl
YWQpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0VmFsdWU7CiAgICAgbWFrZUNh
bGwoZnVuY3Rpb24sICZyZXN1bHRWYWx1ZSk7CiAgICAgaWYgKCFyZXN1bHRWYWx1ZSB8fCByZXN1
bHRWYWx1ZS0+dHlwZSgpICE9IEluc3BlY3RvclZhbHVlOjpUeXBlU3RyaW5nIHx8ICFyZXN1bHRW
YWx1ZS0+YXNTdHJpbmcodHJhY2VMb2dJZCkpCkBAIC0xMzAsNyArMTM0LDcgQEAgdm9pZCBJbmpl
Y3RlZFNjcmlwdENhbnZhc01vZHVsZTo6ZHJvcFRyYWNlTG9nKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgY29uc3QgVHIKIAogdm9pZCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6Y2FsbFZv
aWRGdW5jdGlvbldpdGhUcmFjZUxvZ0lkQXJndW1lbnQoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5h
bWUsIEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgVHJhY2VMb2dJZCYgdHJhY2VMb2dJ
ZCkKIHsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmpl
Y3QoKSwgZnVuY3Rpb25OYW1lKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwg
ZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgZnVuY3Rpb25OYW1lLCBXZWJDb3JlOjpm
dW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJn
dW1lbnQodHJhY2VMb2dJZCk7CiAgICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKICAgICBj
YWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CkBAIC0x
NDEsNyArMTQ1LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6Y2FsbFZvaWRG
dW5jdGlvbldpdGhUcmFjZUxvZ0lkQXJndW1lbnQoY29uc3QgU3QKIAogdm9pZCBJbmplY3RlZFNj
cmlwdENhbnZhc01vZHVsZTo6dHJhY2VMb2coRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25z
dCBUcmFjZUxvZ0lkJiB0cmFjZUxvZ0lkLCBjb25zdCBpbnQqIHN0YXJ0T2Zmc2V0LCBjb25zdCBp
bnQqIG1heExlbmd0aCwgUmVmUHRyPFRyYWNlTG9nPiogdHJhY2VMb2cpCiB7Ci0gICAgU2NyaXB0
RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJ0cmFjZUxvZyIp
OworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNj
cmlwdE9iamVjdCgpLCAidHJhY2VMb2ciLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJv
bUFueVRocmVhZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQodHJhY2VMb2dJZCk7CiAg
ICAgaWYgKHN0YXJ0T2Zmc2V0KQogICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudCgqc3Rh
cnRPZmZzZXQpOwpAQCAtMTU5LDcgKzE2Myw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRDYW52YXNN
b2R1bGU6OnRyYWNlTG9nKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgVHJhY2VMCiAK
IHZvaWQgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OnJlcGxheVRyYWNlTG9nKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgY29uc3QgVHJhY2VMb2dJZCYgdHJhY2VMb2dJZCwgaW50IHN0ZXBO
bywgUmVmUHRyPFJlc291cmNlU3RhdGU+KiByZXN1bHQpCiB7Ci0gICAgU2NyaXB0RnVuY3Rpb25D
YWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJyZXBsYXlUcmFjZUxvZyIpOwor
ICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlw
dE9iamVjdCgpLCAicmVwbGF5VHJhY2VMb2ciLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVy
RnJvbUFueVRocmVhZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQodHJhY2VMb2dJZCk7
CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoc3RlcE5vKTsKICAgICBSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+IHJlc3VsdFZhbHVlOwpAQCAtMTc0LDcgKzE3OCw3IEBAIHZvaWQgSW5qZWN0ZWRT
Y3JpcHRDYW52YXNNb2R1bGU6OnJlcGxheVRyYWNlTG9nKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgY29uc3QKIAogdm9pZCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6cmVzb3VyY2VJbmZv
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVzb3VyY2VJZCYgcmVzb3VyY2VJZCwg
UmVmUHRyPFJlc291cmNlSW5mbz4qIHJlc3VsdCkKIHsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwg
ZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgInJlc291cmNlSW5mbyIpOworICAgIERl
cHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVj
dCgpLCAicmVzb3VyY2VJbmZvIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlU
aHJlYWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHJlc291cmNlSWQpOwogICAgIFJl
ZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0VmFsdWU7CiAgICAgbWFrZUNhbGwoZnVuY3Rpb24s
ICZyZXN1bHRWYWx1ZSk7CkBAIC0xODgsNyArMTkyLDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdENh
bnZhc01vZHVsZTo6cmVzb3VyY2VJbmZvKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3Qg
UmUKIAogdm9pZCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6cmVzb3VyY2VTdGF0ZShFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFRyYWNlTG9nSWQmIHRyYWNlTG9nSWQsIGNvbnN0
IFJlc291cmNlSWQmIHJlc291cmNlSWQsIFJlZlB0cjxSZXNvdXJjZVN0YXRlPiogcmVzdWx0KQog
ewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgp
LCAicmVzb3VyY2VTdGF0ZSIpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBm
dW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAicmVzb3VyY2VTdGF0ZSIsIFdlYkNvcmU6
OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRB
cmd1bWVudCh0cmFjZUxvZ0lkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChyZXNvdXJj
ZUlkKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdFZhbHVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuaApp
bmRleCBmMzMxMTJjLi5hY2VjZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuaApAQCAtMzUsMTAgKzM1LDEzIEBACiAj
aW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAorbmFtZXNwYWNlIERlcHJlY2F0ZWQgeworY2xhc3MgU2NyaXB0T2JqZWN0OworfQorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKLWNsYXNzIFNj
cmlwdE9iamVjdDsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKQEAgLTUwLDIzICs1MywyMyBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUgbW9kdWxl
Rm9yU3RhdGUoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSlNDOjpFeGVjU3RhdGUqKTsKIAotICAg
IFNjcmlwdE9iamVjdCB3cmFwQ2FudmFzMkRDb250ZXh0KGNvbnN0IFNjcmlwdE9iamVjdCYpOwor
ICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCB3cmFwQ2FudmFzMkRDb250ZXh0KGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYpOwogI2lmIEVOQUJMRShXRUJHTCkKLSAgICBTY3JpcHRP
YmplY3Qgd3JhcFdlYkdMQ29udGV4dChjb25zdCBTY3JpcHRPYmplY3QmKTsKKyAgICBEZXByZWNh
dGVkOjpTY3JpcHRPYmplY3Qgd3JhcFdlYkdMQ29udGV4dChjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRPYmplY3QmKTsKICNlbmRpZgogICAgIHZvaWQgbWFya0ZyYW1lRW5kKCk7CiAKLSAgICB2b2lk
IGNhcHR1cmVGcmFtZShFcnJvclN0cmluZyosIFR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9n
SWQqKTsKLSAgICB2b2lkIHN0YXJ0Q2FwdHVyaW5nKEVycm9yU3RyaW5nKiwgVHlwZUJ1aWxkZXI6
OkNhbnZhczo6VHJhY2VMb2dJZCopOwotICAgIHZvaWQgc3RvcENhcHR1cmluZyhFcnJvclN0cmlu
ZyosIGNvbnN0IFR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQmKTsKLSAgICB2b2lkIGRy
b3BUcmFjZUxvZyhFcnJvclN0cmluZyosIGNvbnN0IFR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNl
TG9nSWQmKTsKLSAgICB2b2lkIHRyYWNlTG9nKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgaW50KiwgY29uc3QgaW50KiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNl
TG9nPiopOwotICAgIHZvaWQgcmVwbGF5VHJhY2VMb2coRXJyb3JTdHJpbmcqLCBjb25zdCBUeXBl
QnVpbGRlcjo6Q2FudmFzOjpUcmFjZUxvZ0lkJiwgaW50LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNh
bnZhczo6UmVzb3VyY2VTdGF0ZT4qKTsKLSAgICB2b2lkIHJlc291cmNlSW5mbyhFcnJvclN0cmlu
ZyosIGNvbnN0IFR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlSWQmLCBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VJbmZvPiopOwotICAgIHZvaWQgcmVzb3VyY2VTdGF0ZShF
cnJvclN0cmluZyosIGNvbnN0IFR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQmLCBjb25z
dCBUeXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJjZUlkJiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpD
YW52YXM6OlJlc291cmNlU3RhdGU+Kik7CisgICAgdm9pZCBjYXB0dXJlRnJhbWUoRXJyb3JTdHJp
bmcqLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQqKTsKKyAgICB2
b2lkIHN0YXJ0Q2FwdHVyaW5nKEVycm9yU3RyaW5nKiwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q2FudmFzOjpUcmFjZUxvZ0lkKik7CisgICAgdm9pZCBzdG9wQ2FwdHVyaW5nKEVycm9yU3RyaW5n
KiwgY29uc3QgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFjZUxvZ0lkJik7Cisg
ICAgdm9pZCBkcm9wVHJhY2VMb2coRXJyb3JTdHJpbmcqLCBjb25zdCBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQmKTsKKyAgICB2b2lkIHRyYWNlTG9nKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiwgY29uc3QgaW50KiwgY29uc3QgaW50KiwgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2c+Kik7CisgICAgdm9pZCByZXBsYXlU
cmFjZUxvZyhFcnJvclN0cmluZyosIGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZh
czo6VHJhY2VMb2dJZCYsIGludCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZh
czo6UmVzb3VyY2VTdGF0ZT4qKTsKKyAgICB2b2lkIHJlc291cmNlSW5mbyhFcnJvclN0cmluZyos
IGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VJZCYsIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlSW5mbz4qKTsKKyAgICB2
b2lkIHJlc291cmNlU3RhdGUoRXJyb3JTdHJpbmcqLCBjb25zdCBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQmLCBjb25zdCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
YW52YXM6OlJlc291cmNlSWQmLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q2FudmFz
OjpSZXNvdXJjZVN0YXRlPiopOwogCiBwcml2YXRlOgotICAgIFNjcmlwdE9iamVjdCBjYWxsV3Jh
cENvbnRleHRGdW5jdGlvbihjb25zdCBTdHJpbmcmLCBjb25zdCBTY3JpcHRPYmplY3QmKTsKKyAg
ICBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgY2FsbFdyYXBDb250ZXh0RnVuY3Rpb24oY29uc3Qg
U3RyaW5nJiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0Jik7CiAgICAgdm9pZCBjYWxs
U3RhcnRDYXB0dXJpbmdGdW5jdGlvbihjb25zdCBTdHJpbmcmLCBFcnJvclN0cmluZyosIFN0cmlu
ZyopOwogICAgIHZvaWQgY2FsbFZvaWRGdW5jdGlvbldpdGhUcmFjZUxvZ0lkQXJndW1lbnQoY29u
c3QgU3RyaW5nJiwgRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmKTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwCmluZGV4IGVmNTMzYWEu
LjU0Njc1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dEhvc3QuY3BwCkBAIC00NywxOSArNDcsMjAgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JEYXRhYmFz
ZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvckZyb250ZW5kLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5j
bHVkZSAiUGFzdGVib2FyZC5oIgogI2luY2x1ZGUgIlN0b3JhZ2UuaCIKLQotI2lmIEVOQUJMRShT
UUxfREFUQUJBU0UpCi0jaW5jbHVkZSAiRGF0YWJhc2UuaCIKLSNlbmRpZgotCiAjaW5jbHVkZSAi
bWFya3VwLmgiCi0KKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgorI2luY2x1ZGUg
PGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkK
KyNpbmNsdWRlICJEYXRhYmFzZS5oIgorI2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxJbmplY3RlZFNjcmlwdEhv
c3Q+IEluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkKQEAgLTk3LDcgKzk4LDcgQEAgdm9pZCBJ
bmplY3RlZFNjcmlwdEhvc3Q6OmRpc2Nvbm5lY3QoKQogdm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6
Omluc3BlY3RJbXBsKFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IG9iamVjdCwgUGFzc1JlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4gaGludHMpCiB7CiAgICAgaWYgKG1faW5zcGVjdG9yQWdlbnQpIHsK
LSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHJlbW90
ZU9iamVjdCA9IFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q6OnJ1bnRpbWVDYXN0
KG9iamVjdCk7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1l
OjpSZW1vdGVPYmplY3Q+IHJlbW90ZU9iamVjdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdDo6cnVudGltZUNhc3Qob2JqZWN0KTsKICAgICAgICAgbV9pbnNw
ZWN0b3JBZ2VudC0+aW5zcGVjdChyZW1vdGVPYmplY3QsIGhpbnRzLT5hc09iamVjdCgpKTsKICAg
ICB9CiB9CkBAIC0xMjEsOSArMTIyLDkgQEAgdm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6OmNvcHlU
ZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5k
UGFzdGUoKS0+d3JpdGVQbGFpblRleHQodGV4dCwgUGFzdGVib2FyZDo6Q2Fubm90U21hcnRSZXBs
YWNlKTsKIH0KIAotU2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHRIb3N0OjpJbnNwZWN0YWJsZU9i
amVjdDo6Z2V0KEpTQzo6RXhlY1N0YXRlKikKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIEluamVj
dGVkU2NyaXB0SG9zdDo6SW5zcGVjdGFibGVPYmplY3Q6OmdldChKU0M6OkV4ZWNTdGF0ZSopCiB7
Ci0gICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7CisgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlKCk7CiB9OwogCiB2b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6YWRkSW5zcGVjdGVkT2Jq
ZWN0KFBhc3NPd25QdHI8SW5qZWN0ZWRTY3JpcHRIb3N0OjpJbnNwZWN0YWJsZU9iamVjdD4gb2Jq
ZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
SG9zdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oCmlu
ZGV4IDRhODQxODIuLjhjNDRkNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdEhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRIb3N0LmgKQEAgLTM2LDYgKzM2LDE1IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKK25hbWVzcGFjZSBEZXByZWNhdGVk
IHsKK2NsYXNzIFNjcmlwdFZhbHVlOworfQorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNz
IEluc3BlY3Rvck9iamVjdDsKK2NsYXNzIEluc3BlY3RvclZhbHVlOworfQorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIERhdGFiYXNlOwpAQCAtNDYsMTIgKzU1LDggQEAgY2xhc3MgSW5z
cGVjdG9yRE9NQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ7CiBjbGFzcyBJ
bnNwZWN0b3JEYXRhYmFzZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDsKLWNs
YXNzIEluc3BlY3Rvck9iamVjdDsKLWNsYXNzIEluc3BlY3RvclZhbHVlOwogY2xhc3MgTm9kZTsK
IGNsYXNzIFNjcmlwdERlYnVnU2VydmVyOwotY2xhc3MgU2NyaXB0T2JqZWN0OwotY2xhc3MgU2Ny
aXB0VmFsdWU7CiBjbGFzcyBTdG9yYWdlOwogCiBzdHJ1Y3QgRXZlbnRMaXN0ZW5lckluZm87CkBA
IC04NSwyMiArOTAsMjIgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCi0gICAgc3RhdGljIE5v
ZGUqIHNjcmlwdFZhbHVlQXNOb2RlKFNjcmlwdFZhbHVlKTsKLSAgICBzdGF0aWMgU2NyaXB0VmFs
dWUgbm9kZUFzU2NyaXB0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBOb2RlKik7CisgICAgc3RhdGlj
IE5vZGUqIHNjcmlwdFZhbHVlQXNOb2RlKERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKTsKKyAgICBz
dGF0aWMgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgbm9kZUFzU2NyaXB0VmFsdWUoSlNDOjpFeGVj
U3RhdGUqLCBOb2RlKik7CiAKICAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKIAogICAgIGNsYXNzIElu
c3BlY3RhYmxlT2JqZWN0IHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
cHVibGljOgotICAgICAgICB2aXJ0dWFsIFNjcmlwdFZhbHVlIGdldChKU0M6OkV4ZWNTdGF0ZSop
OworICAgICAgICB2aXJ0dWFsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGdldChKU0M6OkV4ZWNT
dGF0ZSopOwogICAgICAgICB2aXJ0dWFsIH5JbnNwZWN0YWJsZU9iamVjdCgpIHsgfQogICAgIH07
CiAgICAgdm9pZCBhZGRJbnNwZWN0ZWRPYmplY3QoUGFzc093blB0cjxJbnNwZWN0YWJsZU9iamVj
dD4pOwogICAgIHZvaWQgY2xlYXJJbnNwZWN0ZWRPYmplY3RzKCk7CiAgICAgSW5zcGVjdGFibGVP
YmplY3QqIGluc3BlY3RlZE9iamVjdCh1bnNpZ25lZCBpbnQgbnVtKTsKIAotICAgIHZvaWQgaW5z
cGVjdEltcGwoUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gb2JqZWN0VG9JbnNwZWN0LCBQYXNz
UmVmUHRyPEluc3BlY3RvclZhbHVlPiBoaW50cyk7CisgICAgdm9pZCBpbnNwZWN0SW1wbChQYXNz
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IG9iamVjdFRvSW5zcGVjdCwgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiBoaW50cyk7CiAgICAgdm9pZCBnZXRFdmVu
dExpc3RlbmVyc0ltcGwoTm9kZSosIFZlY3RvcjxFdmVudExpc3RlbmVySW5mbz4mIGxpc3RlbmVy
c0FycmF5KTsKIAogICAgIHZvaWQgY2xlYXJDb25zb2xlTWVzc2FnZXMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggN2Fh
M2Q0My4uMTI3NmM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0TWFuYWdlci5jcHAKQEAgLTM3LDEwICszNywxMiBAQAogI2luY2x1ZGUgIkluamVj
dGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAi
SW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKLSNp
bmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3Qu
aD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBQYXNzT3duUHRyPEluamVjdGVkU2NyaXB0TWFuYWdlcj4gSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyOjpjcmVhdGVGb3JQYWdlKCkKQEAgLTE3Myw3ICsxNzUsNyBAQCBJbmplY3Rl
ZFNjcmlwdCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKEpTQzo6RXhl
Y1N0YXRlKiBpbnNwZWN0ZQogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKIAogICAg
IGludCBpZCA9IGluamVjdGVkU2NyaXB0SWRGb3IoaW5zcGVjdGVkRXhlY1N0YXRlKTsKLSAgICBT
Y3JpcHRPYmplY3QgaW5qZWN0ZWRTY3JpcHRPYmplY3QgPSBjcmVhdGVJbmplY3RlZFNjcmlwdChp
bmplY3RlZFNjcmlwdFNvdXJjZSgpLCBpbnNwZWN0ZWRFeGVjU3RhdGUsIGlkKTsKKyAgICBEZXBy
ZWNhdGVkOjpTY3JpcHRPYmplY3QgaW5qZWN0ZWRTY3JpcHRPYmplY3QgPSBjcmVhdGVJbmplY3Rl
ZFNjcmlwdChpbmplY3RlZFNjcmlwdFNvdXJjZSgpLCBpbnNwZWN0ZWRFeGVjU3RhdGUsIGlkKTsK
ICAgICBJbmplY3RlZFNjcmlwdCByZXN1bHQoaW5qZWN0ZWRTY3JpcHRPYmplY3QsIG1faW5zcGVj
dGVkU3RhdGVBY2Nlc3NDaGVjayk7CiAgICAgbV9pZFRvSW5qZWN0ZWRTY3JpcHQuc2V0KGlkLCBy
ZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKaW5kZXggNjgxZTQwOC4uN2I0OGQzNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaApAQCAt
MzUsMTMgKzM1LDE5IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIERlcHJlY2F0ZWQgeworY2xhc3MgU2NyaXB0
T2JqZWN0OworfQorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNzIEluc3BlY3Rvck9iamVj
dDsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBET01XaW5kb3c7CiBjbGFzcyBJ
bmplY3RlZFNjcmlwdDsKIGNsYXNzIEluamVjdGVkU2NyaXB0SG9zdDsKLWNsYXNzIEluc3BlY3Rv
ck9iamVjdDsKLWNsYXNzIFNjcmlwdE9iamVjdDsKIAogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbmplY3RlZFNjcmlwdE1hbmFnZXIpOyBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTY5LDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBJbmplY3RlZFNjcmlwdE1hbmFnZXIoSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayk7
CiAKICAgICBTdHJpbmcgaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKTsKLSAgICBTY3JpcHRPYmplY3Qg
Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEpTQzo6RXhlY1N0YXRl
KiwgaW50IGlkKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgY3JlYXRlSW5qZWN0ZWRT
Y3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEpTQzo6RXhlY1N0YXRlKiwgaW50IGlkKTsKIAog
ICAgIHN0YXRpYyBib29sIGNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdyhKU0M6OkV4ZWNTdGF0ZSop
OwogICAgIHN0YXRpYyBib29sIGNhbkFjY2Vzc0luc3BlY3RlZFdvcmtlckdsb2JhbFNjb3BlKEpT
Qzo6RXhlY1N0YXRlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRNb2R1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0TW9kdWxlLmNwcAppbmRleCBkYjIwNzc5Li45MjY4ZWRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAKQEAgLTM2LDggKzM2
LDExIEBACiAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVjdGVk
U2NyaXB0TWFuYWdlci5oIgotI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5oIgotI2luY2x1
ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgor
I2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oPgorI2luY2x1ZGUgPGJpbmRp
bmdzL1NjcmlwdE9iamVjdC5oPgorCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU0LDEzICs1NywxMyBAQCB2b2lkIEluamVjdGVkU2NyaXB0
TW9kdWxlOjplbnN1cmVJbmplY3RlZChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2Ny
aXB0TQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogTWFrZSB0aGUgSW5qZWN0ZWRT
Y3JpcHQgYSBtb2R1bGUgaXRzZWxmLgotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihp
bmplY3RlZFNjcmlwdC5pbmplY3RlZFNjcmlwdE9iamVjdCgpLCAibW9kdWxlIik7CisgICAgRGVw
cmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0LmluamVj
dGVkU2NyaXB0T2JqZWN0KCksICJtb2R1bGUiLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVy
RnJvbUFueVRocmVhZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQobmFtZSgpKTsKICAg
ICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwotICAgIFNjcmlwdFZhbHVlIHJlc3VsdFZhbHVl
ID0gaW5qZWN0ZWRTY3JpcHQuY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBo
YWRFeGNlcHRpb24pOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHJlc3VsdFZhbHVlID0g
aW5qZWN0ZWRTY3JpcHQuY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRF
eGNlcHRpb24pOwogICAgIEFTU0VSVCghaGFkRXhjZXB0aW9uKTsKICAgICBpZiAoaGFkRXhjZXB0
aW9uIHx8IHJlc3VsdFZhbHVlLmhhc05vVmFsdWUoKSB8fCAhcmVzdWx0VmFsdWUuaXNPYmplY3Qo
KSkgewotICAgICAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHQu
aW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImluamVjdE1vZHVsZSIpOworICAgICAgICBEZXByZWNh
dGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHQuaW5qZWN0ZWRT
Y3JpcHRPYmplY3QoKSwgImluamVjdE1vZHVsZSIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRs
ZXJGcm9tQW55VGhyZWFkKTsKICAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQobmFtZSgp
KTsKICAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoc291cmNlKCkpOwogICAgICAgICBy
ZXN1bHRWYWx1ZSA9IGluamVjdGVkU2NyaXB0LmNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChm
dW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKQEAgLTcwLDcgKzczLDcgQEAgdm9pZCBJbmplY3RlZFNj
cmlwdE1vZHVsZTo6ZW5zdXJlSW5qZWN0ZWQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3Rl
ZFNjcmlwdE0KICAgICAgICAgfQogICAgIH0KIAotICAgIFNjcmlwdE9iamVjdCBtb2R1bGVPYmpl
Y3Qoc2NyaXB0U3RhdGUsIHJlc3VsdFZhbHVlKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRPYmpl
Y3QgbW9kdWxlT2JqZWN0KHNjcmlwdFN0YXRlLCByZXN1bHRWYWx1ZSk7CiAgICAgaW5pdGlhbGl6
ZShtb2R1bGVPYmplY3QsIGluamVjdGVkU2NyaXB0TWFuYWdlci0+aW5zcGVjdGVkU3RhdGVBY2Nl
c3NDaGVjaygpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2Vu
dC5jcHAKaW5kZXggZWE3YjQyMC4uMTk0Yjc3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQWdlbnQuY3BwCkBAIC00MiwyMyArNDIsMjQgQEAKICNpbmNsdWRlICJJbnNw
ZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1
ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiTWFpbkZy
YW1lLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgog
I2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRGdW5jdGlvbkNh
bGwuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFs
dWUuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKK3VzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW5zcGVjdG9yQWdlbnQ6
Okluc3BlY3RvckFnZW50KFBhZ2UqIHBhZ2UsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLCBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
KQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiSW5zcGVjdG9yIiksIGlu
c3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFs
KCJJbnNwZWN0b3IiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1faW5zcGVjdGVkUGFn
ZShwYWdlKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKQogICAgICwgbV9lbmFibGVkKGZhbHNlKQpAQCAtOTMsNyArOTQsNyBAQCB2b2lkIEluc3Bl
Y3RvckFnZW50OjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUqIGZyYW1lLCBET01X
cmFwcGVyV29ybGQmCiAgICAgZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoc2NyaXB0U291
cmNlLnRvU3RyaW5nKCkpOwogfQogCi12b2lkIEluc3BlY3RvckFnZW50OjpkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWws
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5z
cGVjdG9yQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvckluc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcj4o
ZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9ySW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7
CkBAIC0xNTAsNyArMTUxLDcgQEAgdm9pZCBJbnNwZWN0b3JBZ2VudDo6c2V0SW5qZWN0ZWRTY3Jp
cHRGb3JPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmkKICAgICBtX2luamVj
dGVkU2NyaXB0Rm9yT3JpZ2luLnNldChvcmlnaW4sIHNvdXJjZSk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yQWdlbnQ6Omluc3BlY3QoUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0PiBvYmplY3RUb0luc3BlY3QsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBoaW50
cykKK3ZvaWQgSW5zcGVjdG9yQWdlbnQ6Omluc3BlY3QoUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IG9iamVjdFRvSW5zcGVjdCwgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhpbnRzKQogewogICAgIGlmIChtX2VuYWJsZWQgJiYgbV9m
cm9udGVuZERpc3BhdGNoZXIpIHsKICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmluc3Bl
Y3Qob2JqZWN0VG9JbnNwZWN0LCBoaW50cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JBZ2VudC5oCmluZGV4IGZiNGJkMjUuLjFjZWE3YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oCkBAIC0zMCwxMSArMzAsMTcgQEAKICNpZm5kZWYgSW5z
cGVjdG9yQWdlbnRfaAogI2RlZmluZSBJbnNwZWN0b3JBZ2VudF9oCiAKLSNpbmNsdWRlICJJbnNw
ZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMu
aCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKKyNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3Igewor
Y2xhc3MgSW5zcGVjdG9yT2JqZWN0OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IERPTVdyYXBwZXJXb3JsZDsKQEAgLTQyLDEzICs0OCwxMiBAQCBjbGFzcyBEb2N1bWVudExvYWRl
cjsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3MgSW5z
cGVjdG9ySW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVyOwotY2xhc3MgSW5zcGVjdG9yT2JqZWN0
OwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFBhZ2U7CiAKIHR5cGVkZWYgU3Ry
aW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JBZ2VudCA6IHB1YmxpYyBJbnNwZWN0
b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXIgeworY2xhc3MgSW5zcGVjdG9yQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNl
LCBwdWJsaWMgSW5zcGVjdG9ySW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JBZ2VudCk7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NPd25QdHI8SW5zcGVjdG9yQWdlbnQ+IGNyZWF0ZShQYWdlKiBwYWdlLCBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zdHJ1bWVudGluZ0FnZW50
cyogaW5zdHJ1bWVudGluZ0FnZW50cykKQEAgLTY0LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHZv
aWQgZW5hYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIHZvaWQgZGlkQ2xlYXJXaW5kb3dPYmplY3RJ
bldvcmxkKEZyYW1lKiwgRE9NV3JhcHBlcldvcmxkJik7CkBAIC03OSw3ICs4NCw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgc2V0SW5qZWN0ZWRTY3JpcHRGb3JPcmlnaW4oY29uc3QgU3RyaW5nJiBv
cmlnaW4sIGNvbnN0IFN0cmluZyYgc291cmNlKTsKIAotICAgIHZvaWQgaW5zcGVjdChQYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IG9iamVjdFRvSW5zcGVjdCwg
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhpbnRzKTsKKyAgICB2b2lkIGluc3BlY3QoUGFz
c1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IG9i
amVjdFRvSW5zcGVjdCwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gaGlu
dHMpOwogCiBwcml2YXRlOgogICAgIEluc3BlY3RvckFnZW50KFBhZ2UqLCBJbmplY3RlZFNjcmlw
dE1hbmFnZXIqLCBJbnN0cnVtZW50aW5nQWdlbnRzKik7CkBAIC05MCw3ICs5NSw3IEBAIHByaXZh
dGU6CiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsK
IAogICAgIFZlY3RvcjxwYWlyPGxvbmcsIFN0cmluZz4+IG1fcGVuZGluZ0V2YWx1YXRlVGVzdENv
bW1hbmRzOwotICAgIHBhaXI8UmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmpl
Y3Q+LCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Pj4gbV9wZW5kaW5nSW5zcGVjdERhdGE7CisgICAg
cGFpcjxSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0
PiwgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Pj4gbV9wZW5kaW5nSW5zcGVjdERh
dGE7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbV9pbmplY3RlZFNjcmlwdEZvck9yaWdp
bjsKIAogICAgIGJvb2wgbV9lbmFibGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBbGxJbk9uZS5jcHAKaW5kZXggMjYzYmRkOS4uNTMwMGQ5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwCkBAIC0zNyw5ICszNyw3
IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCIKICNpbmNsdWRlICJJbmpl
Y3RlZFNjcmlwdE1vZHVsZS5jcHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnQuY3BwIgotI2lu
Y2x1ZGUgIkluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwIgogI2luY2x1ZGUgIkluc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIuY3BwIgogI2luY2x1ZGUgIkluc3BlY3RvckNTU0FnZW50LmNwcCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JDYW52YXNBZ2VudC5jcHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmNwcCIK
QEAgLTcwLDcgKzY4LDYgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCIKICNp
bmNsdWRlICJJbnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuY3BwIgogI2luY2x1ZGUgIkluc3BlY3Rv
clRpbWVsaW5lQWdlbnQuY3BwIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5jcHAiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdB
Z2VudHMuY3BwIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudC5jcHAKaW5kZXggMDRjYzUzYS4uNmQ3ZDgwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5j
cHAKQEAgLTM2LDIxICszNiwyMyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckFnZW50LmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQu
aCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5n
QWdlbnRzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0YXRlTm90aWZpZXIuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUgPGluc3BlY3Rv
ci9JbnNwZWN0b3JWYWx1ZXMuaD4KKwordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6Okluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKLSAgICA6IEluc3BlY3Rv
ckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIkFwcGxpY2F0aW9uQ2FjaGUiKSwgaW5zdHJ1bWVudGlu
Z0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkFwcGxpY2F0
aW9uQ2FjaGUiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fcGFnZUFnZW50KHBhZ2VB
Z2VudCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5k
Q2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQor
dm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFu
bmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAg
ICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9i
YWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKQEAgLTkyLDkgKzk0LDkgQEAg
dm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6Om5ldHdvcmtTdGF0ZUNoYW5nZWQo
KQogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5uZXR3b3JrU3RhdGVVcGRhdGVkKGlzTm93T25s
aW5lKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmdldEZyYW1l
c1dpdGhNYW5pZmVzdHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5
cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVzdD4+JiByZXN1bHQp
Cit2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0RnJhbWVzV2l0aE1hbmlm
ZXN0cyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVz
dD4+JiByZXN1bHQpCiB7Ci0gICAgcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVzdD46OmNyZWF0ZSgpOworICAg
IHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkZyYW1lV2l0aE1hbmlmZXN0Pjo6Y3JlYXRlKCk7CiAK
ICAgICBGcmFtZSogbWFpbkZyYW1lID0gbV9wYWdlQWdlbnQtPm1haW5GcmFtZSgpOwogICAgIGZv
ciAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LnRyYXZlcnNlTmV4dChtYWluRnJhbWUpKSB7CkBAIC0xMDYsNyArMTA4LDcgQEAgdm9pZCBJbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmdldEZyYW1lc1dpdGhNYW5pZmVzdHMoRXJyb3JT
dHJpbmcqLCBSZWZQdHIKICAgICAgICAgQXBwbGljYXRpb25DYWNoZUhvc3Q6OkNhY2hlSW5mbyBp
bmZvID0gaG9zdC0+YXBwbGljYXRpb25DYWNoZUluZm8oKTsKICAgICAgICAgU3RyaW5nIG1hbmlm
ZXN0VVJMID0gaW5mby5tX21hbmlmZXN0LnN0cmluZygpOwogICAgICAgICBpZiAoIW1hbmlmZXN0
VVJMLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcHBsaWNh
dGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVzdD4gdmFsdWUgPSBUeXBlQnVpbGRlcjo6QXBwbGlj
YXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q6OmNyZWF0ZSgpCisgICAgICAgICAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFu
aWZlc3Q+IHZhbHVlID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6
RnJhbWVXaXRoTWFuaWZlc3Q6OmNyZWF0ZSgpCiAgICAgICAgICAgICAgICAgLnNldEZyYW1lSWQo
bV9wYWdlQWdlbnQtPmZyYW1lSWQoZnJhbWUpKQogICAgICAgICAgICAgICAgIC5zZXRNYW5pZmVz
dFVSTChtYW5pZmVzdFVSTCkKICAgICAgICAgICAgICAgICAuc2V0U3RhdHVzKHN0YXRpY19jYXN0
PGludD4oaG9zdC0+c3RhdHVzKCkpKTsKQEAgLTEzNCw3ICsxMzYsNyBAQCB2b2lkIEluc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0TWFuaWZlc3RGb3JGcmFtZShFcnJvclN0cmluZyog
ZXJyb3JTdHJpbgogICAgICptYW5pZmVzdFVSTCA9IGluZm8ubV9tYW5pZmVzdC5zdHJpbmcoKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmdldEFwcGxpY2F0aW9u
Q2FjaGVGb3JGcmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJh
bWVJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNh
Y2hlPiYgYXBwbGljYXRpb25DYWNoZSkKK3ZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50OjpnZXRBcHBsaWNhdGlvbkNhY2hlRm9yRnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpB
cHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlPiYgYXBwbGljYXRpb25DYWNoZSkKIHsK
ICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBhc3NlcnRGcmFtZVdpdGhEb2N1
bWVudExvYWRlcihlcnJvclN0cmluZywgZnJhbWVJZCk7CiAgICAgaWYgKCFkb2N1bWVudExvYWRl
cikKQEAgLTE0OSw5ICsxNTEsOSBAQCB2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dDo6Z2V0QXBwbGljYXRpb25DYWNoZUZvckZyYW1lKEVycm9yU3RyaW5nKiBlcgogICAgIGFwcGxp
Y2F0aW9uQ2FjaGUgPSBidWlsZE9iamVjdEZvckFwcGxpY2F0aW9uQ2FjaGUocmVzb3VyY2VzLCBp
bmZvKTsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBw
bGljYXRpb25DYWNoZT4gSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpidWlsZE9iamVj
dEZvckFwcGxpY2F0aW9uQ2FjaGUoY29uc3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNl
SW5mb0xpc3QmIGFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMsIGNvbnN0IEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjpDYWNoZUluZm8mIGFwcGxpY2F0aW9uQ2FjaGVJbmZvKQorUGFzc1JlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlPiBJ
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25D
YWNoZShjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvTGlzdCYgYXBwbGlj
YXRpb25DYWNoZVJlc291cmNlcywgY29uc3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OkNhY2hlSW5m
byYgYXBwbGljYXRpb25DYWNoZUluZm8pCiB7Ci0gICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpBcHBs
aWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlOjpjcmVhdGUoKQorICAgIHJldHVybiBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlOjpj
cmVhdGUoKQogICAgICAgICAuc2V0TWFuaWZlc3RVUkwoYXBwbGljYXRpb25DYWNoZUluZm8ubV9t
YW5pZmVzdC5zdHJpbmcoKSkKICAgICAgICAgLnNldFNpemUoYXBwbGljYXRpb25DYWNoZUluZm8u
bV9zaXplKQogICAgICAgICAuc2V0Q3JlYXRpb25UaW1lKGFwcGxpY2F0aW9uQ2FjaGVJbmZvLm1f
Y3JlYXRpb25UaW1lKQpAQCAtMTYwLDkgKzE2Miw5IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6
OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU+IEluc3BlY3RvckFwcGxpY2F0aW9u
CiAgICAgICAgIC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5
PFR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+
PiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmJ1aWxkQXJyYXlGb3JBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VzKGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm9M
aXN0JiBhcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hl
OjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+PiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQ6OmJ1aWxkQXJyYXlGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzKGNvbnN0IEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm9MaXN0JiBhcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Vz
KQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkFwcGxpY2F0
aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4+IHJlc291cmNlcyA9IFR5cGVCdWls
ZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNo
ZVJlc291cmNlPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZT4+IHJlc291cmNlcyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFy
cmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZT46OmNyZWF0ZSgpOwogCiAgICAgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlJl
c291cmNlSW5mb0xpc3Q6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZXMuZW5kKCk7CiAgICAgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mb0xpc3Q6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gYXBwbGljYXRpb25DYWNoZVJlc291cmNlcy5iZWdpbigpOwpA
QCAtMTcyLDcgKzE3NCw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzCiAgICAgcmV0dXJuIHJl
c291cmNlczsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6
QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6
OmJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlKGNvbnN0IEFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjpSZXNvdXJjZUluZm8mIHJlc291cmNlSW5mbykKK1Bhc3NSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291
cmNlPiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUlu
Zm8mIHJlc291cmNlSW5mbykKIHsKICAgICBTdHJpbmcgdHlwZXM7CiAgICAgaWYgKHJlc291cmNl
SW5mby5tX2lzTWFzdGVyKQpAQCAtMTkwLDcgKzE5Miw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gSW5zcGVjdG9y
QXBwCiAgICAgaWYgKHJlc291cmNlSW5mby5tX2lzRXhwbGljaXQpCiAgICAgICAgIHR5cGVzLmFw
cGVuZCgiRXhwbGljaXQgIik7CiAKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9u
Q2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gdmFsdWUgPSBUeXBlQnVpbGRlcjo6QXBw
bGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUoKQorICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2U+IHZhbHVlID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXBwbGljYXRp
b25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUoKQogICAgICAgICAuc2V0
VXJsKHJlc291cmNlSW5mby5tX3Jlc291cmNlLnN0cmluZygpKQogICAgICAgICAuc2V0U2l6ZShz
dGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlSW5mby5tX3NpemUpKQogICAgICAgICAuc2V0VHlwZSh0
eXBlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50LmgKaW5kZXggZWIwNmM4Zi4uODIxMWEzNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQuaApAQCAtMjgsMjcgKzI4LDMwIEBACiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAog
I2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVIb3N0LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFz
ZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJh
c2UuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgogCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNzIEluc3BlY3Rvck9iamVjdDsK
K2NsYXNzIEluc3BlY3RvclZhbHVlOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEZyYW1lOwotY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBjbGFzcyBJbnNwZWN0b3JBZ2VudDsKIGNs
YXNzIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNoZXI7Ci1jbGFzcyBJ
bnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0
b3JWYWx1ZTsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBQYWdlOwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNz
IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdl
bnQsIHB1YmxpYyBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyIHsKK2NsYXNzIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCA6IHB1YmxpYyBJbnNw
ZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ+IGNyZWF0
ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdl
QWdlbnQqIHBhZ2VBZ2VudCkKQEAgLTU3LDI1ICs2MCwyMiBAQCBwdWJsaWM6CiAgICAgfQogICAg
IH5JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoKSB7IH0KIAotICAgIC8vIEluc3BlY3Rv
ckJhc2VBZ2VudAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJv
eUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCi0gICAgLy8gSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uIEFQSQogICAgIHZvaWQgdXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1cyhGcmFt
ZSopOwogICAgIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZCgpOwogCi0gICAgLy8gQXBwbGljYXRp
b25DYWNoZSBBUEkgZm9yIEluc3BlY3RvckZyb250ZW5kCiAgICAgdmlydHVhbCB2b2lkIGVuYWJs
ZShFcnJvclN0cmluZyopOwotICAgIHZpcnR1YWwgdm9pZCBnZXRGcmFtZXNXaXRoTWFuaWZlc3Rz
KEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6QXBw
bGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+PiYgcmVzdWx0KTsKKyAgICB2aXJ0dWFs
IHZvaWQgZ2V0RnJhbWVzV2l0aE1hbmlmZXN0cyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBsaWNhdGlv
bkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVzdD4+JiByZXN1bHQpOwogICAgIHZpcnR1YWwgdm9pZCBn
ZXRNYW5pZmVzdEZvckZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBT
dHJpbmcqIG1hbmlmZXN0VVJMKTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QXBwbGljYXRpb25DYWNo
ZUZvckZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU+Jik7CisgICAgdmly
dHVhbCB2b2lkIGdldEFwcGxpY2F0aW9uQ2FjaGVGb3JGcmFtZShFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgZnJhbWVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0
aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU+Jik7CiAKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdl
QWdlbnQqKTsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpB
cHBsaWNhdGlvbkNhY2hlPiBidWlsZE9iamVjdEZvckFwcGxpY2F0aW9uQ2FjaGUoY29uc3QgQXBw
bGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mb0xpc3QmLCBjb25zdCBBcHBsaWNhdGlvbkNh
Y2hlSG9zdDo6Q2FjaGVJbmZvJik7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8
VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4+
IGJ1aWxkQXJyYXlGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzKGNvbnN0IEFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjpSZXNvdXJjZUluZm9MaXN0Jik7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRl
cjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBidWlsZE9iamVj
dEZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
UmVzb3VyY2VJbmZvJik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpB
cHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlPiBidWlsZE9iamVjdEZvckFwcGxpY2F0
aW9uQ2FjaGUoY29uc3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mb0xpc3QmLCBj
b25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Q2FjaGVJbmZvJik7CisgICAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBs
aWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+PiBidWlsZEFycmF5Rm9yQXBw
bGljYXRpb25DYWNoZVJlc291cmNlcyhjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3Vy
Y2VJbmZvTGlzdCYpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXBw
bGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBidWlsZE9iamVjdEZvckFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3Vy
Y2VJbmZvJik7CiAKICAgICBEb2N1bWVudExvYWRlciogYXNzZXJ0RnJhbWVXaXRoRG9jdW1lbnRM
b2FkZXIoRXJyb3JTdHJpbmcqLCBTdHJpbmcgZnJhbWVJZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IGJiMTdjNjUuLjgzYzQyMzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcApA
QCAtNDMsOCArNDMsNyBAQAogI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JET01BZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckhpc3RvcnkuaCIKLSNp
bmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVl
cy5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIgogI2luY2x1ZGUgIklu
c3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJOYW1lZEZsb3dDb2xsZWN0aW9uLmgiCiAj
aW5jbHVkZSAiTm9kZS5oIgpAQCAtNTcsNyArNTYsNyBAQAogI2luY2x1ZGUgIlN0eWxlUnVsZS5o
IgogI2luY2x1ZGUgIlN0eWxlU2hlZXRMaXN0LmgiCiAjaW5jbHVkZSAiV2ViS2l0TmFtZWRGbG93
LmgiCi0KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8
d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmLmg+CkBAIC02NSw2ICs2NCw4IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKK3VzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBGb3JjZVBzZXVk
b0NsYXNzRmxhZ3MgewpAQCAtMTE3LDcgKzExOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0
U2VsZWN0b3IoY29uc3QgQ1NTU3R5bGVSdWxlKik7CiAgICAgdm9pZCBjb21taXRTZWxlY3Rvcihi
b29sKTsKICAgICB2b2lkIGNvbW1pdFNlbGVjdG9yVGltZSgpOwotICAgIFBhc3NSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlPiB0b0luc3BlY3Rvck9iamVjdCgpIGNvbnN0
OworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclBy
b2ZpbGU+IHRvSW5zcGVjdG9yT2JqZWN0KCkgY29uc3Q7CiAKIHByaXZhdGU6CiAKQEAgLTIwNSwx
MSArMjA2LDExIEBAIGlubGluZSB2b2lkIFNlbGVjdG9yUHJvZmlsZTo6Y29tbWl0U2VsZWN0b3JU
aW1lKCkKICAgICBpdC0+dmFsdWUudG90YWxUaW1lICs9IHByb2Nlc3NpbmdUaW1lTVM7CiB9CiAK
LVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlPiBTZWxlY3RvclBy
b2ZpbGU6OnRvSW5zcGVjdG9yT2JqZWN0KCkgY29uc3QKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+IFNlbGVjdG9yUHJvZmlsZTo6dG9JbnNw
ZWN0b3JPYmplY3QoKSBjb25zdAogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlw
ZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlRW50cnk+PiBzZWxlY3RvclByb2ZpbGVEYXRh
ID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZUVu
dHJ5Pjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlRW50cnk+PiBzZWxl
Y3RvclByb2ZpbGVEYXRhID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGVFbnRyeT46OmNyZWF0ZSgpOwogICAg
IGZvciAoUnVsZU1hdGNoaW5nU3RhdHNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9ydWxlTWF0
Y2hpbmdTdGF0cy5iZWdpbigpOyBpdCAhPSBtX3J1bGVNYXRjaGluZ1N0YXRzLmVuZCgpOyArK2l0
KSB7Ci0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGVFbnRy
eT4gZW50cnkgPSBUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGVFbnRyeTo6Y3JlYXRl
KCkKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQ
cm9maWxlRW50cnk+IGVudHJ5ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3Rv
clByb2ZpbGVFbnRyeTo6Y3JlYXRlKCkKICAgICAgICAgICAgIC5zZXRTZWxlY3RvcihpdC0+dmFs
dWUuc2VsZWN0b3IpCiAgICAgICAgICAgICAuc2V0VXJsKGl0LT52YWx1ZS51cmwpCiAgICAgICAg
ICAgICAuc2V0TGluZU51bWJlcihpdC0+dmFsdWUubGluZU51bWJlcikKQEAgLTIxOSw3ICsyMjAs
NyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZT4gU2VsZWN0
b3JQcm9maWxlOjp0b0luc3BlY3Rvck9iamVjdAogICAgICAgICBzZWxlY3RvclByb2ZpbGVEYXRh
LT5hZGRJdGVtKGVudHJ5LnJlbGVhc2UoKSk7CiAgICAgfQogCi0gICAgUmVmUHRyPFR5cGVCdWls
ZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZT4gcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OkNTUzo6U2Vs
ZWN0b3JQcm9maWxlOjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDU1M6OlNlbGVjdG9yUHJvZmlsZT4gcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpTZWxlY3RvclByb2ZpbGU6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRUb3RhbFRpbWUodG90
YWxNYXRjaGluZ1RpbWVNcygpKQogICAgICAgICAuc2V0RGF0YShzZWxlY3RvclByb2ZpbGVEYXRh
KTsKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKQEAgLTYxNiw3ICs2MTcsNyBAQCBDU1NT
dHlsZVJ1bGUqIEluc3BlY3RvckNTU0FnZW50Ojphc0NTU1N0eWxlUnVsZShDU1NSdWxlKiBydWxl
KQogfQogCiBJbnNwZWN0b3JDU1NBZ2VudDo6SW5zcGVjdG9yQ1NTQWdlbnQoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50
KQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiQ1NTIiksIGluc3RydW1l
bnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJDU1Mi
KSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fZG9tQWdlbnQoZG9tQWdlbnQpCiAgICAg
LCBtX2xhc3RTdHlsZVNoZWV0SWQoMSkKIHsKQEAgLTYyOSw3ICs2MzAsNyBAQCBJbnNwZWN0b3JD
U1NBZ2VudDo6fkluc3BlY3RvckNTU0FnZW50KCkKICAgICByZXNldCgpOwogfQogCi12b2lkIElu
c3BlY3RvckNTU0FnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
KiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJv
bnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNo
ZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3RvckNTU0Zyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tl
bmREaXNwYXRjaGVyID0gSW5zcGVjdG9yQ1NTQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNr
ZW5kRGlzcGF0Y2hlciwgdGhpcyk7CkBAIC04MTAsNyArODExLDcgQEAgYm9vbCBJbnNwZWN0b3JD
U1NBZ2VudDo6Zm9yY2VQc2V1ZG9TdGF0ZShFbGVtZW50KiBlbGVtZW50LCBDU1NTZWxlY3Rvcjo6
UHNldWRvVHkKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRT
dHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3Qg
Ym9vbCogaW5jbHVkZVBzZXVkbywgY29uc3QgYm9vbCogaW5jbHVkZUluaGVyaXRlZCwgUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g+PiYgbWF0Y2hl
ZENTU1J1bGVzLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlBz
ZXVkb0lkTWF0Y2hlcz4+JiBwc2V1ZG9JZE1hdGNoZXMsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJy
YXk8VHlwZUJ1aWxkZXI6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4+JiBpbmhlcml0ZWRFbnRy
aWVzKQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBib29sKiBpbmNsdWRlUHNl
dWRvLCBjb25zdCBib29sKiBpbmNsdWRlSW5oZXJpdGVkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g+PiYg
bWF0Y2hlZENTU1J1bGVzLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+PiYgcHNldWRvSWRNYXRj
aGVzLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5Pj4mIGluaGVyaXRlZEVudHJpZXMpCiB7
CiAgICAgRWxlbWVudCogZWxlbWVudCA9IGVsZW1lbnRGb3JJZChlcnJvclN0cmluZywgbm9kZUlk
KTsKICAgICBpZiAoIWVsZW1lbnQpCkBAIC04MjMsMTEgKzgyNCwxMSBAQCB2b2lkIEluc3BlY3Rv
ckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIGludCBubwogCiAgICAgLy8gUHNldWRvIGVsZW1lbnRzLgogICAgIGlmICghaW5jbHVkZVBz
ZXVkbyB8fCAqaW5jbHVkZVBzZXVkbykgewotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz4+IHBzZXVkb0VsZW1lbnRzID0g
VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz46OmNy
ZWF0ZSgpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+PiBwc2V1ZG9FbGVtZW50
cyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNTUzo6UHNldWRvSWRNYXRjaGVzPjo6Y3JlYXRlKCk7CiAgICAgICAgIGZvciAoUHNldWRvSWQg
cHNldWRvSWQgPSBGSVJTVF9QVUJMSUNfUFNFVURPSUQ7IHBzZXVkb0lkIDwgQUZURVJfTEFTVF9J
TlRFUk5BTF9QU0VVRE9JRDsgcHNldWRvSWQgPSBzdGF0aWNfY2FzdDxQc2V1ZG9JZD4ocHNldWRv
SWQgKyAxKSkgewogICAgICAgICAgICAgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4gbWF0
Y2hlZFJ1bGVzID0gc3R5bGVSZXNvbHZlci5wc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChlbGVt
ZW50LCBwc2V1ZG9JZCwgU3R5bGVSZXNvbHZlcjo6QWxsQ1NTUnVsZXMpOwogICAgICAgICAgICAg
aWYgKCFtYXRjaGVkUnVsZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFR5
cGVCdWlsZGVyOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz4gbWF0Y2hlcyA9IFR5cGVCdWlsZGVyOjpD
U1M6OlBzZXVkb0lkTWF0Y2hlczo6Y3JlYXRlKCkKKyAgICAgICAgICAgICAgICBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+IG1hdGNoZXMgPSBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlBzZXVkb0lkTWF0Y2hlczo6Y3JlYXRlKCkKICAgICAg
ICAgICAgICAgICAgICAgLnNldFBzZXVkb0lkKHN0YXRpY19jYXN0PGludD4ocHNldWRvSWQpKQog
ICAgICAgICAgICAgICAgICAgICAuc2V0TWF0Y2hlcyhidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVM
aXN0KG1hdGNoZWRSdWxlcywgc3R5bGVSZXNvbHZlciwgZWxlbWVudCkpOwogICAgICAgICAgICAg
ICAgIHBzZXVkb0VsZW1lbnRzLT5hZGRJdGVtKG1hdGNoZXMucmVsZWFzZSgpKTsKQEAgLTgzOSwx
MiArODQwLDEyIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JO
b2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vCiAKICAgICAvLyBJbmhlcml0ZWQg
c3R5bGVzLgogICAgIGlmICghaW5jbHVkZUluaGVyaXRlZCB8fCAqaW5jbHVkZUluaGVyaXRlZCkg
ewotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6Oklu
aGVyaXRlZFN0eWxlRW50cnk+PiBlbnRyaWVzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+OjpjcmVhdGUoKTsKKyAgICAgICAgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNT
Uzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4+IGVudHJpZXMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+
OjpjcmVhdGUoKTsKICAgICAgICAgRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQtPnBh
cmVudEVsZW1lbnQoKTsKICAgICAgICAgd2hpbGUgKHBhcmVudEVsZW1lbnQpIHsKICAgICAgICAg
ICAgIFN0eWxlUmVzb2x2ZXImIHBhcmVudFN0eWxlUmVzb2x2ZXIgPSBwYXJlbnRFbGVtZW50LT5k
b2N1bWVudCgpLmVuc3VyZVN0eWxlUmVzb2x2ZXIoKTsKICAgICAgICAgICAgIFZlY3RvcjxSZWZQ
dHI8U3R5bGVSdWxlQmFzZT4+IHBhcmVudE1hdGNoZWRSdWxlcyA9IHBhcmVudFN0eWxlUmVzb2x2
ZXIuc3R5bGVSdWxlc0ZvckVsZW1lbnQocGFyZW50RWxlbWVudCwgU3R5bGVSZXNvbHZlcjo6QWxs
Q1NTUnVsZXMpOwotICAgICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkluaGVyaXRl
ZFN0eWxlRW50cnk+IGVudHJ5ID0gVHlwZUJ1aWxkZXI6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRy
eTo6Y3JlYXRlKCkKKyAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6OkluaGVyaXRlZFN0eWxlRW50cnk+IGVudHJ5ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5OjpjcmVhdGUoKQogICAgICAgICAgICAgICAgIC5zZXRN
YXRjaGVkQ1NTUnVsZXMoYnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChwYXJlbnRNYXRjaGVk
UnVsZXMsIHN0eWxlUmVzb2x2ZXIsIHBhcmVudEVsZW1lbnQpKTsKICAgICAgICAgICAgIGlmIChw
YXJlbnRFbGVtZW50LT5zdHlsZSgpICYmIHBhcmVudEVsZW1lbnQtPnN0eWxlKCktPmxlbmd0aCgp
KSB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlKiBz
dHlsZVNoZWV0ID0gYXNJbnNwZWN0b3JTdHlsZVNoZWV0KHBhcmVudEVsZW1lbnQpOwpAQCAtODYw
LDcgKzg2MSw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JO
b2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vCiAgICAgfQogfQogCi12b2lkIElu
c3BlY3RvckNTU0FnZW50OjpnZXRJbmxpbmVTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYg
aW5saW5lU3R5bGUsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4mIGF0dHJpYnV0
ZXNTdHlsZSkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldElubGluZVN0eWxlc0Zvck5vZGUo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4mIGlubGluZVN0eWxlLCBSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4mIGF0dHJpYnV0ZXNTdHlsZSkKIHsKICAgICBF
bGVtZW50KiBlbGVtZW50ID0gZWxlbWVudEZvcklkKGVycm9yU3RyaW5nLCBub2RlSWQpOwogICAg
IGlmICghZWxlbWVudCkKQEAgLTg3MSwxMSArODcyLDExIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdl
bnQ6OmdldElubGluZVN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQg
bm9kCiAgICAgICAgIHJldHVybjsKIAogICAgIGlubGluZVN0eWxlID0gc3R5bGVTaGVldC0+YnVp
bGRPYmplY3RGb3JTdHlsZShlbGVtZW50LT5zdHlsZSgpKTsKLSAgICBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTU3R5bGU+IGF0dHJpYnV0ZXMgPSBidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNT
dHlsZShlbGVtZW50KTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NTdHlsZT4gYXR0cmlidXRlcyA9IGJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRlc1N0eWxlKGVsZW1l
bnQpOwogICAgIGF0dHJpYnV0ZXNTdHlsZSA9IGF0dHJpYnV0ZXMgPyBhdHRyaWJ1dGVzLnJlbGVh
c2UoKSA6IDA7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldENvbXB1dGVkU3R5bGVG
b3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPFR5cGVC
dWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+
PiYgc3R5bGUpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRDb21wdXRlZFN0eWxlRm9yTm9k
ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU0NvbXB1
dGVkU3R5bGVQcm9wZXJ0eT4+JiBzdHlsZSkKIHsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gZWxl
bWVudEZvcklkKGVycm9yU3RyaW5nLCBub2RlSWQpOwogICAgIGlmICghZWxlbWVudCkKQEAgLTg4
Niw5ICs4ODcsOSBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRDb21wdXRlZFN0eWxlRm9y
Tm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBubwogICAgIHN0eWxlID0gaW5zcGVj
dG9yU3R5bGUtPmJ1aWxkQXJyYXlGb3JDb21wdXRlZFN0eWxlKCk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yQ1NTQWdlbnQ6OmdldEFsbFN0eWxlU2hlZXRzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVC
dWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPj4mIHN0
eWxlSW5mb3MpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRBbGxTdHlsZVNoZWV0cyhFcnJv
clN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+PiYgc3R5bGVJbmZvcykKIHsK
LSAgICBzdHlsZUluZm9zID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNT
U1N0eWxlU2hlZXRIZWFkZXI+OjpjcmVhdGUoKTsKKyAgICBzdHlsZUluZm9zID0gSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHls
ZVNoZWV0SGVhZGVyPjo6Y3JlYXRlKCk7CiAgICAgVmVjdG9yPERvY3VtZW50Kj4gZG9jdW1lbnRz
ID0gbV9kb21BZ2VudC0+ZG9jdW1lbnRzKCk7CiAgICAgZm9yIChWZWN0b3I8RG9jdW1lbnQqPjo6
aXRlcmF0b3IgaXQgPSBkb2N1bWVudHMuYmVnaW4oKTsgaXQgIT0gZG9jdW1lbnRzLmVuZCgpOyAr
K2l0KSB7CiAgICAgICAgIFN0eWxlU2hlZXRMaXN0KiBsaXN0ID0gKCppdCktPnN0eWxlU2hlZXRz
KCk7CkBAIC05MDAsNyArOTAxLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0QWxsU3R5
bGVTaGVldHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmEKICAgICB9CiB9
CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN0eWxlU2hlZXQoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5PiYgc3R5bGVTaGVldE9iamVjdCkKK3ZvaWQgSW5zcGVj
dG9yQ1NTQWdlbnQ6OmdldFN0eWxlU2hlZXQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTU3R5bGVTaGVldEJvZHk+JiBzdHlsZVNoZWV0T2JqZWN0KQogewogICAgIEluc3BlY3Rv
clN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQgPSBhc3NlcnRTdHlsZVNoZWV0Rm9ySWQo
ZXJyb3JTdHJpbmcsIHN0eWxlU2hlZXRJZCk7CiAgICAgaWYgKCFpbnNwZWN0b3JTdHlsZVNoZWV0
KQpAQCAtOTI5LDcgKzkzMCw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlU2hl
ZXRUZXh0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nCiAgICAgKmVycm9y
U3RyaW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcoZWMpOwogfQogCi12b2lk
IEluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVRleHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgZnVsbFN0eWxlSWQsIGNvbnN0IFN0cmlu
ZyYgdGV4dCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KQordm9p
ZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVUZXh0KEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGZ1bGxTdHlsZUlkLCBjb25zdCBTdHJp
bmcmIHRleHQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYg
cmVzdWx0KQogewogICAgIEluc3BlY3RvckNTU0lkIGNvbXBvdW5kSWQoZnVsbFN0eWxlSWQpOwog
ICAgIEFTU0VSVCghY29tcG91bmRJZC5pc0VtcHR5KCkpOwpAQCAtOTQ1LDcgKzk0Niw3IEBAIHZv
aWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlVGV4dChFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIGNvbnN0IFJlZlB0cjxJbnNwCiAgICAgKmVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9NQWdl
bnQ6OnRvRXJyb3JTdHJpbmcoZWMpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRQ
cm9wZXJ0eVRleHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiYgZnVsbFN0eWxlSWQsIGludCBwcm9wZXJ0eUluZGV4LCBjb25zdCBTdHJpbmcm
IHRleHQsIGJvb2wgb3ZlcndyaXRlLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+
JiByZXN1bHQpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRQcm9wZXJ0eVRleHQoRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgZnVsbFN0
eWxlSWQsIGludCBwcm9wZXJ0eUluZGV4LCBjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wgb3Zlcndy
aXRlLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4mIHJlc3Vs
dCkKIHsKICAgICBJbnNwZWN0b3JDU1NJZCBjb21wb3VuZElkKGZ1bGxTdHlsZUlkKTsKICAgICBB
U1NFUlQoIWNvbXBvdW5kSWQuaXNFbXB0eSgpKTsKQEAgLTk2MSw3ICs5NjIsNyBAQCB2b2lkIElu
c3BlY3RvckNTU0FnZW50OjpzZXRQcm9wZXJ0eVRleHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBjb25zdCBSZWZQdHI8SQogICAgICplcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50Ojp0
b0Vycm9yU3RyaW5nKGVjKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6dG9nZ2xlUHJv
cGVydHkoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiYgZnVsbFN0eWxlSWQsIGludCBwcm9wZXJ0eUluZGV4LCBib29sIGRpc2FibGUsIFJlZlB0
cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yQ1NT
QWdlbnQ6OnRvZ2dsZVByb3BlcnR5KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4mIGZ1bGxTdHlsZUlkLCBpbnQgcHJvcGVydHlJbmRleCwgYm9v
bCBkaXNhYmxlLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4m
IHJlc3VsdCkKIHsKICAgICBJbnNwZWN0b3JDU1NJZCBjb21wb3VuZElkKGZ1bGxTdHlsZUlkKTsK
ICAgICBBU1NFUlQoIWNvbXBvdW5kSWQuaXNFbXB0eSgpKTsKQEAgLTk3Nyw3ICs5NzgsNyBAQCB2
b2lkIEluc3BlY3RvckNTU0FnZW50Ojp0b2dnbGVQcm9wZXJ0eShFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGNvbnN0IFJlZlB0cjxJbgogICAgICplcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFn
ZW50Ojp0b0Vycm9yU3RyaW5nKGVjKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0
UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4mIGZ1bGxSdWxlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIFJlZlB0cjxU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JDU1NBZ2Vu
dDo6c2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4mIGZ1bGxSdWxlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+JiByZXN1bHQpCiB7CiAg
ICAgSW5zcGVjdG9yQ1NTSWQgY29tcG91bmRJZChmdWxsUnVsZUlkKTsKICAgICBBU1NFUlQoIWNv
bXBvdW5kSWQuaXNFbXB0eSgpKTsKQEAgLTk5NCw3ICs5OTUsNyBAQCB2b2lkIEluc3BlY3RvckNT
U0FnZW50OjpzZXRSdWxlU2VsZWN0b3IoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBS
ZWZQdHI8SQogICAgICplcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3Ry
aW5nKGVjKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6YWRkUnVsZShFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGNvbnN0IGludCBjb250ZXh0Tm9kZUlkLCBjb25zdCBTdHJpbmcmIHNl
bGVjdG9yLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCkKK3ZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OmFkZFJ1bGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25z
dCBpbnQgY29udGV4dE5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCkKIHsKICAgICBOb2RlKiBu
b2RlID0gbV9kb21BZ2VudC0+YXNzZXJ0Tm9kZShlcnJvclN0cmluZywgY29udGV4dE5vZGVJZCk7
CiAgICAgaWYgKCFub2RlKQpAQCAtMTAyMCwxMiArMTAyMSwxMiBAQCB2b2lkIEluc3BlY3RvckNT
U0FnZW50OjphZGRSdWxlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgaW50IGNvbnRl
eHROb2RlSQogICAgIHJlc3VsdCA9IGluc3BlY3RvclN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9y
UnVsZShydWxlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3VwcG9ydGVkQ1NT
UHJvcGVydGllcyhFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHlJbmZvPj4mIGNzc1Byb3BlcnRpZXMpCit2b2lkIEluc3Bl
Y3RvckNTU0FnZW50OjpnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTUHJvcGVydHlJbmZvPj4mIGNzc1Byb3BlcnRpZXMpCiB7Ci0gICAgUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+PiBwcm9w
ZXJ0aWVzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5
SW5mbz46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJh
eTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5SW5mbz4+IHByb3BlcnRp
ZXMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDU1M6OkNTU1Byb3BlcnR5SW5mbz46OmNyZWF0ZSgpOwogICAgIGZvciAoaW50IGkgPSBmaXJz
dENTU1Byb3BlcnR5OyBpIDw9IGxhc3RDU1NQcm9wZXJ0eTsgKytpKSB7CiAgICAgICAgIENTU1By
b3BlcnR5SUQgaWQgPSBjb252ZXJ0VG9DU1NQcm9wZXJ0eUlEKGkpOwotICAgICAgICBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHlJbmZvPiBwcm9wZXJ0eSA9IFR5cGVCdWlsZGVy
OjpDU1M6OkNTU1Byb3BlcnR5SW5mbzo6Y3JlYXRlKCkKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHlJbmZvPiBwcm9wZXJ0eSA9IEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHlJbmZvOjpjcmVhdGUoKQogICAgICAgICAg
ICAgLnNldE5hbWUoZ2V0UHJvcGVydHlOYW1lU3RyaW5nKGlkKSk7CiAKICAgICAgICAgY29uc3Qg
U3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kID0gc2hvcnRoYW5kRm9yUHJvcGVydHko
aWQpOwpAQCAtMTAzMyw3ICsxMDM0LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3Vw
cG9ydGVkQ1NTUHJvcGVydGllcyhFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGQKICAgICAg
ICAgICAgIHByb3BlcnRpZXMtPmFkZEl0ZW0ocHJvcGVydHkucmVsZWFzZSgpKTsKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJy
YXk8U3RyaW5nPj4gbG9uZ2hhbmRzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz46OmNyZWF0
ZSgpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5n
Pj4gbG9uZ2hhbmRzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPjo6Y3Jl
YXRlKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBzaG9ydGhhbmQubGVuZ3Ro
KCk7ICsraikgewogICAgICAgICAgICAgQ1NTUHJvcGVydHlJRCBsb25naGFuZElEID0gc2hvcnRo
YW5kLnByb3BlcnRpZXMoKVtqXTsKICAgICAgICAgICAgIGxvbmdoYW5kcy0+YWRkSXRlbShnZXRQ
cm9wZXJ0eU5hbWVTdHJpbmcobG9uZ2hhbmRJRCkpOwpAQCAtMTA2NCw3ICsxMDY1LDcgQEAgdm9p
ZCBJbnNwZWN0b3JDU1NBZ2VudDo6Zm9yY2VQc2V1ZG9TdGF0ZShFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGludCBub2RlSWQsIGMKICAgICBlbGVtZW50LT5kb2N1bWVudCgpLnN0eWxlUmVzb2x2
ZXJDaGFuZ2VkKFJlY2FsY1N0eWxlSW1tZWRpYXRlbHkpOwogfQogCi12b2lkIEluc3BlY3RvckNT
U0FnZW50OjpnZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
aW50IGRvY3VtZW50Tm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVy
OjpDU1M6Ok5hbWVkRmxvdz4+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRO
YW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IGRvY3VtZW50
Tm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+PiYgcmVzdWx0KQogewogICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IG1fZG9tQWdlbnQtPmFzc2VydERvY3VtZW50KGVycm9yU3RyaW5nLCBkb2N1bWVu
dE5vZGVJZCk7CiAgICAgaWYgKCFkb2N1bWVudCkKQEAgLTEwNzMsNyArMTA3NCw3IEBAIHZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE5hbWVkRmxvd0NvbGxlY3Rpb24oRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBpbnQgZG9jCiAgICAgbV9uYW1lZEZsb3dDb2xsZWN0aW9uc1JlcXVlc3RlZC5h
ZGQoZG9jdW1lbnROb2RlSWQpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJLaXROYW1lZEZsb3c+
PiBuYW1lZEZsb3dzVmVjdG9yID0gZG9jdW1lbnQtPm5hbWVkRmxvd3MoKS0+bmFtZWRGbG93cygp
OwotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRG
bG93Pj4gbmFtZWRGbG93cyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpO
YW1lZEZsb3c+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+PiBuYW1lZEZsb3dz
ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpOYW1lZEZsb3c+OjpjcmVhdGUoKTsKIAogICAgIGZvciAoVmVjdG9yPFJlZlB0cjxXZWJL
aXROYW1lZEZsb3c+Pjo6aXRlcmF0b3IgaXQgPSBuYW1lZEZsb3dzVmVjdG9yLmJlZ2luKCk7IGl0
ICE9IG5hbWVkRmxvd3NWZWN0b3IuZW5kKCk7ICsraXQpCiAgICAgICAgIG5hbWVkRmxvd3MtPmFk
ZEl0ZW0oYnVpbGRPYmplY3RGb3JOYW1lZEZsb3coZXJyb3JTdHJpbmcsIGl0LT5nZXQoKSwgZG9j
dW1lbnROb2RlSWQpKTsKQEAgLTEwODYsMTYgKzEwODcsMTYgQEAgdm9pZCBJbnNwZWN0b3JDU1NB
Z2VudDo6c3RhcnRTZWxlY3RvclByb2ZpbGVyKEVycm9yU3RyaW5nKikKICAgICBtX2N1cnJlbnRT
ZWxlY3RvclByb2ZpbGUgPSBhZG9wdFB0cihuZXcgU2VsZWN0b3JQcm9maWxlKCkpOwogfQogCi12
b2lkIEluc3BlY3RvckNTU0FnZW50OjpzdG9wU2VsZWN0b3JQcm9maWxlcihFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+JiBy
ZXN1bHQpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzdG9wU2VsZWN0b3JQcm9maWxlcihFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
OlNlbGVjdG9yUHJvZmlsZT4mIHJlc3VsdCkKIHsKICAgICByZXN1bHQgPSBzdG9wU2VsZWN0b3JQ
cm9maWxlckltcGwoZXJyb3JTdHJpbmcsIHRydWUpOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OnN0b3BTZWxlY3Rv
clByb2ZpbGVySW1wbChFcnJvclN0cmluZyosIGJvb2wgbmVlZFByb2ZpbGUpCitQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlPiBJbnNwZWN0b3JD
U1NBZ2VudDo6c3RvcFNlbGVjdG9yUHJvZmlsZXJJbXBsKEVycm9yU3RyaW5nKiwgYm9vbCBuZWVk
UHJvZmlsZSkKIHsKICAgICBpZiAoIW1fY3VycmVudFNlbGVjdG9yUHJvZmlsZSkKICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZT4g
cmVzdWx0OworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9y
UHJvZmlsZT4gcmVzdWx0OwogICAgIGlmIChtX2Zyb250ZW5kRGlzcGF0Y2hlciAmJiBuZWVkUHJv
ZmlsZSkKICAgICAgICAgcmVzdWx0ID0gbV9jdXJyZW50U2VsZWN0b3JQcm9maWxlLT50b0luc3Bl
Y3Rvck9iamVjdCgpOwogICAgIG1fY3VycmVudFNlbGVjdG9yUHJvZmlsZS5jbGVhcigpOwpAQCAt
MTEzNiw3ICsxMTM3LDcgQEAgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlKiBJbnNw
ZWN0b3JDU1NBZ2VudDo6YXNJbnNwZWN0b3JTdHlsZVNoZWV0KEVsZW0KICAgICAgICAgICAgIHJl
dHVybiAwOwogCiAgICAgICAgIFN0cmluZyBuZXdTdHlsZVNoZWV0SWQgPSBTdHJpbmc6Om51bWJl
cihtX2xhc3RTdHlsZVNoZWV0SWQrKyk7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JTdHlsZVNo
ZWV0Rm9ySW5saW5lU3R5bGU+IGluc3BlY3RvclN0eWxlU2hlZXQgPSBJbnNwZWN0b3JTdHlsZVNo
ZWV0Rm9ySW5saW5lU3R5bGU6OmNyZWF0ZShtX2RvbUFnZW50LT5wYWdlQWdlbnQoKSwgbmV3U3R5
bGVTaGVldElkLCBlbGVtZW50LCBUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpS
ZWd1bGFyLCB0aGlzKTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxp
bmVTdHlsZT4gaW5zcGVjdG9yU3R5bGVTaGVldCA9IEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxp
bmVTdHlsZTo6Y3JlYXRlKG1fZG9tQWdlbnQtPnBhZ2VBZ2VudCgpLCBuZXdTdHlsZVNoZWV0SWQs
IGVsZW1lbnQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6
UmVndWxhciwgdGhpcyk7CiAgICAgICAgIG1faWRUb0luc3BlY3RvclN0eWxlU2hlZXQuc2V0KG5l
d1N0eWxlU2hlZXRJZCwgaW5zcGVjdG9yU3R5bGVTaGVldCk7CiAgICAgICAgIG1fbm9kZVRvSW5z
cGVjdG9yU3R5bGVTaGVldC5zZXQoZWxlbWVudCwgaW5zcGVjdG9yU3R5bGVTaGVldCk7CiAgICAg
ICAgIHJldHVybiBpbnNwZWN0b3JTdHlsZVNoZWV0LmdldCgpOwpAQCAtMTE2OCw3ICsxMTY5LDcg
QEAgaW50IEluc3BlY3RvckNTU0FnZW50Ojpkb2N1bWVudE5vZGVXaXRoUmVxdWVzdGVkRmxvd3NJ
ZChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgcmV0dXJuIGRvY3VtZW50Tm9kZUlkOwogfQogCi12
b2lkIEluc3BlY3RvckNTU0FnZW50Ojpjb2xsZWN0U3R5bGVTaGVldHMoQ1NTU3R5bGVTaGVldCog
c3R5bGVTaGVldCwgVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxl
U2hlZXRIZWFkZXI+KiByZXN1bHQpCit2b2lkIEluc3BlY3RvckNTU0FnZW50Ojpjb2xsZWN0U3R5
bGVTaGVldHMoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVy
PiogcmVzdWx0KQogewogICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hl
ZXQgPSBiaW5kU3R5bGVTaGVldChzdGF0aWNfY2FzdDxDU1NTdHlsZVNoZWV0Kj4oc3R5bGVTaGVl
dCkpOwogICAgIHJlc3VsdC0+YWRkSXRlbShpbnNwZWN0b3JTdHlsZVNoZWV0LT5idWlsZE9iamVj
dEZvclN0eWxlU2hlZXRJbmZvKCkpOwpAQCAtMTI0MSw3ICsxMjQyLDcgQEAgSW5zcGVjdG9yU3R5
bGVTaGVldCogSW5zcGVjdG9yQ1NTQWdlbnQ6OnZpYUluc3BlY3RvclN0eWxlU2hlZXQoRG9jdW1l
bnQqIGRvY3VtZW4KICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBTdHJpbmcgaWQgPSBTdHJpbmc6
Om51bWJlcihtX2xhc3RTdHlsZVNoZWV0SWQrKyk7Ci0gICAgaW5zcGVjdG9yU3R5bGVTaGVldCA9
IEluc3BlY3RvclN0eWxlU2hlZXQ6OmNyZWF0ZShtX2RvbUFnZW50LT5wYWdlQWdlbnQoKSwgaWQs
IGNzc1N0eWxlU2hlZXQsIFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46Okluc3Bl
Y3RvciwgSW5zcGVjdG9yRE9NQWdlbnQ6OmRvY3VtZW50VVJMU3RyaW5nKGRvY3VtZW50KSwgdGhp
cyk7CisgICAgaW5zcGVjdG9yU3R5bGVTaGVldCA9IEluc3BlY3RvclN0eWxlU2hlZXQ6OmNyZWF0
ZShtX2RvbUFnZW50LT5wYWdlQWdlbnQoKSwgaWQsIGNzc1N0eWxlU2hlZXQsIEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6SW5zcGVjdG9yLCBJbnNwZWN0b3JE
T01BZ2VudDo6ZG9jdW1lbnRVUkxTdHJpbmcoZG9jdW1lbnQpLCB0aGlzKTsKICAgICBtX2lkVG9J
bnNwZWN0b3JTdHlsZVNoZWV0LnNldChpZCwgaW5zcGVjdG9yU3R5bGVTaGVldCk7CiAgICAgbV9j
c3NTdHlsZVNoZWV0VG9JbnNwZWN0b3JTdHlsZVNoZWV0LnNldChjc3NTdHlsZVNoZWV0LCBpbnNw
ZWN0b3JTdHlsZVNoZWV0KTsKICAgICBtX2RvY3VtZW50VG9JbnNwZWN0b3JTdHlsZVNoZWV0LnNl
dChkb2N1bWVudCwgaW5zcGVjdG9yU3R5bGVTaGVldCk7CkBAIC0xMjU4LDIyICsxMjU5LDIyIEBA
IEluc3BlY3RvclN0eWxlU2hlZXQqIEluc3BlY3RvckNTU0FnZW50Ojphc3NlcnRTdHlsZVNoZWV0
Rm9ySWQoRXJyb3JTdHJpbmcqIGVycm9yCiAgICAgcmV0dXJuIGl0LT52YWx1ZS5nZXQoKTsKIH0K
IAotVHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6RW51bSBJbnNwZWN0b3JDU1NB
Z2VudDo6ZGV0ZWN0T3JpZ2luKENTU1N0eWxlU2hlZXQqIHBhZ2VTdHlsZVNoZWV0LCBEb2N1bWVu
dCogb3duZXJEb2N1bWVudCkKK0luc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVl
dE9yaWdpbjo6RW51bSBJbnNwZWN0b3JDU1NBZ2VudDo6ZGV0ZWN0T3JpZ2luKENTU1N0eWxlU2hl
ZXQqIHBhZ2VTdHlsZVNoZWV0LCBEb2N1bWVudCogb3duZXJEb2N1bWVudCkKIHsKLSAgICBUeXBl
QnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpFbnVtIG9yaWdpbiA9IFR5cGVCdWlsZGVy
OjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlJlZ3VsYXI7CisgICAgSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpFbnVtIG9yaWdpbiA9IEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6UmVndWxhcjsKICAgICBpZiAocGFnZVN0
eWxlU2hlZXQgJiYgIXBhZ2VTdHlsZVNoZWV0LT5vd25lck5vZGUoKSAmJiBwYWdlU3R5bGVTaGVl
dC0+aHJlZigpLmlzRW1wdHkoKSkKLSAgICAgICAgb3JpZ2luID0gVHlwZUJ1aWxkZXI6OkNTUzo6
U3R5bGVTaGVldE9yaWdpbjo6VXNlckFnZW50OworICAgICAgICBvcmlnaW4gPSBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlVzZXJBZ2VudDsKICAgICBlbHNl
IGlmIChwYWdlU3R5bGVTaGVldCAmJiBwYWdlU3R5bGVTaGVldC0+b3duZXJOb2RlKCkgJiYgcGFn
ZVN0eWxlU2hlZXQtPm93bmVyTm9kZSgpLT5ub2RlTmFtZSgpID09ICIjZG9jdW1lbnQiKQotICAg
ICAgICBvcmlnaW4gPSBUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpVc2VyOwor
ICAgICAgICBvcmlnaW4gPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRP
cmlnaW46OlVzZXI7CiAgICAgZWxzZSB7CiAgICAgICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIHZp
YUluc3BlY3RvclN0eWxlU2hlZXRGb3JPd25lciA9IHZpYUluc3BlY3RvclN0eWxlU2hlZXQob3du
ZXJEb2N1bWVudCwgZmFsc2UpOwogICAgICAgICBpZiAodmlhSW5zcGVjdG9yU3R5bGVTaGVldEZv
ck93bmVyICYmIHBhZ2VTdHlsZVNoZWV0ID09IHZpYUluc3BlY3RvclN0eWxlU2hlZXRGb3JPd25l
ci0+cGFnZVN0eWxlU2hlZXQoKSkKLSAgICAgICAgICAgIG9yaWdpbiA9IFR5cGVCdWlsZGVyOjpD
U1M6OlN0eWxlU2hlZXRPcmlnaW46Okluc3BlY3RvcjsKKyAgICAgICAgICAgIG9yaWdpbiA9IElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6SW5zcGVjdG9yOwog
ICAgIH0KICAgICByZXR1cm4gb3JpZ2luOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpD
U1M6OkNTU1J1bGU+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvclJ1bGUoU3R5bGVS
dWxlKiBzdHlsZVJ1bGUsIFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCitQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6
OmJ1aWxkT2JqZWN0Rm9yUnVsZShTdHlsZVJ1bGUqIHN0eWxlUnVsZSwgU3R5bGVSZXNvbHZlciYg
c3R5bGVSZXNvbHZlcikKIHsKICAgICBpZiAoIXN0eWxlUnVsZSkKICAgICAgICAgcmV0dXJuIDA7
CkBAIC0xMjg3LDcgKzEyODgsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1
bGU+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvclJ1bGUoU3R5bAogICAgIHJldHVy
biBpbnNwZWN0b3JTdHlsZVNoZWV0ID8gaW5zcGVjdG9yU3R5bGVTaGVldC0+YnVpbGRPYmplY3RG
b3JSdWxlKGNzc29tV3JhcHBlcikgOiAwOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpD
U1M6OkNTU1J1bGU+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvclJ1bGUoQ1NTU3R5
bGVSdWxlKiBydWxlKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNT
U1J1bGU+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvclJ1bGUoQ1NTU3R5bGVSdWxl
KiBydWxlKQogewogICAgIGlmICghcnVsZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMjk3LDE1
ICsxMjk4LDE1IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gSW5zcGVj
dG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZShDU1NTCiAgICAgcmV0dXJuIGluc3BlY3Rv
clN0eWxlU2hlZXQgPyBpbnNwZWN0b3JTdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclJ1bGUocnVs
ZSkgOiAwOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NSdWxlPj4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JSdWxlTGlzdChD
U1NSdWxlTGlzdCogcnVsZUxpc3QpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4+IEluc3BlY3RvckNT
U0FnZW50OjpidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3QqIHJ1bGVMaXN0KQogewot
ICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4+
IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPjo6
Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4+IHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT46OmNy
ZWF0ZSgpOwogICAgIGlmICghcnVsZUxpc3QpCiAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFz
ZSgpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgc2l6ZSA9IHJ1bGVMaXN0LT5sZW5ndGgo
KTsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBDU1NTdHlsZVJ1bGUqIHJ1bGUgPSBhc0NTU1N0
eWxlUnVsZShydWxlTGlzdC0+aXRlbShpKSk7Ci0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NSdWxlPiBydWxlT2JqZWN0ID0gYnVpbGRPYmplY3RGb3JSdWxlKHJ1bGUpOworICAg
ICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiBydWxlT2Jq
ZWN0ID0gYnVpbGRPYmplY3RGb3JSdWxlKHJ1bGUpOwogICAgICAgICBpZiAoIXJ1bGVPYmplY3Qp
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgcmVzdWx0LT5hZGRJdGVtKHJ1bGVPYmpl
Y3QpOwpAQCAtMTMxMywxOCArMTMxNCwxOCBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJh
eTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPj4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aQogICAg
IHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpB
cnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g+PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVp
bGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJh
c2U+PiYgbWF0Y2hlZFJ1bGVzLCBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBFbGVtZW50
KiBlbGVtZW50KQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRjaD4+IEluc3BlY3RvckNTU0FnZW50Ojpi
dWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxl
QmFzZT4+JiBtYXRjaGVkUnVsZXMsIFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIEVsZW1l
bnQqIGVsZW1lbnQpCiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRl
cjo6Q1NTOjpSdWxlTWF0Y2g+PiByZXN1bHQgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxk
ZXI6OkNTUzo6UnVsZU1hdGNoPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UnVsZU1hdGNoPj4g
cmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpSdWxlTWF0Y2g+OjpjcmVhdGUoKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtYXRjaGVkUnVsZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKCFtYXRjaGVk
UnVsZXNbaV0tPmlzU3R5bGVSdWxlKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
U3R5bGVSdWxlKiBtYXRjaGVkU3R5bGVSdWxlID0gc3RhdGljX2Nhc3Q8U3R5bGVSdWxlKj4obWF0
Y2hlZFJ1bGVzW2ldLmdldCgpKTsKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNT
U1J1bGU+IHJ1bGVPYmplY3QgPSBidWlsZE9iamVjdEZvclJ1bGUobWF0Y2hlZFN0eWxlUnVsZSwg
c3R5bGVSZXNvbHZlcik7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6OkNTU1J1bGU+IHJ1bGVPYmplY3QgPSBidWlsZE9iamVjdEZvclJ1bGUobWF0Y2hlZFN0eWxl
UnVsZSwgc3R5bGVSZXNvbHZlcik7CiAgICAgICAgIGlmICghcnVsZU9iamVjdCkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PGludD4+IG1h
dGNoaW5nU2VsZWN0b3JzID0gVHlwZUJ1aWxkZXI6OkFycmF5PGludD46OmNyZWF0ZSgpOworICAg
ICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4gbWF0Y2hpbmdT
ZWxlY3RvcnMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsK
ICAgICAgICAgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QgPSBtYXRjaGVkU3R5
bGVSdWxlLT5zZWxlY3Rvckxpc3QoKTsKICAgICAgICAgbG9uZyBpbmRleCA9IDA7CiAgICAgICAg
IGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gc2VsZWN0b3JMaXN0LmZpcnN0KCk7
IHNlbGVjdG9yOyBzZWxlY3RvciA9IENTU1NlbGVjdG9yTGlzdDo6bmV4dChzZWxlY3RvcikpIHsK
QEAgLTEzMzMsNyArMTMzNCw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVC
dWlsZGVyOjpDU1M6OlJ1bGVNYXRjaD4+IEluc3BlY3RvckNTU0FnZW50OjpiCiAgICAgICAgICAg
ICAgICAgbWF0Y2hpbmdTZWxlY3RvcnMtPmFkZEl0ZW0oaW5kZXgpOwogICAgICAgICAgICAgKytp
bmRleDsKICAgICAgICAgfQotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6UnVsZU1h
dGNoPiBtYXRjaCA9IFR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRjaDo6Y3JlYXRlKCkKKyAgICAg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UnVsZU1hdGNoPiBtYXRjaCA9
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UnVsZU1hdGNoOjpjcmVhdGUoKQogICAgICAg
ICAgICAgLnNldFJ1bGUocnVsZU9iamVjdCkKICAgICAgICAgICAgIC5zZXRNYXRjaGluZ1NlbGVj
dG9ycyhtYXRjaGluZ1NlbGVjdG9ycyk7CiAgICAgICAgIHJlc3VsdC0+YWRkSXRlbShtYXRjaCk7
CkBAIC0xMzQyLDcgKzEzNDMsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBl
QnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g+PiBJbnNwZWN0b3JDU1NBZ2VudDo6YgogICAgIHJldHVy
biByZXN1bHQucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNT
U1N0eWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5bGUo
RWxlbWVudCogZWxlbWVudCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NTdHlsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRlc1N0
eWxlKEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgaWYgKCFlbGVtZW50LT5pc1N0eWxlZEVsZW1l
bnQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMzU5LDIyICsxMzYwLDIyIEBAIFBhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZE9i
amVjdEZvckF0dHJpYnV0CiAgICAgcmV0dXJuIGluc3BlY3RvclN0eWxlLT5idWlsZE9iamVjdEZv
clN0eWxlKCk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVy
OjpDU1M6OlJlZ2lvbj4+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yUmVnaW9ucyhF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IHJlZ2lvbkxpc3Qs
IGludCBkb2N1bWVudE5vZGVJZCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb24+PiBJbnNwZWN0b3JDU1NB
Z2VudDo6YnVpbGRBcnJheUZvclJlZ2lvbnMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBQYXNz
UmVmUHRyPE5vZGVMaXN0PiByZWdpb25MaXN0LCBpbnQgZG9jdW1lbnROb2RlSWQpCiB7Ci0gICAg
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb24+PiByZWdp
b25zID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbj46OmNyZWF0
ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbj4+IHJlZ2lvbnMgPSBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbj46OmNyZWF0ZSgp
OwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lvbkxpc3QtPmxlbmd0aCgpOyAr
K2kpIHsKLSAgICAgICAgVHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uOjpSZWdpb25PdmVyc2V0OjpF
bnVtIHJlZ2lvbk92ZXJzZXQ7CisgICAgICAgIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6
UmVnaW9uOjpSZWdpb25PdmVyc2V0OjpFbnVtIHJlZ2lvbk92ZXJzZXQ7CiAKICAgICAgICAgc3dp
dGNoICh0b0VsZW1lbnQocmVnaW9uTGlzdC0+aXRlbShpKSktPnJlbmRlclJlZ2lvbigpLT5yZWdp
b25PdmVyc2V0U3RhdGUoKSkgewogICAgICAgICBjYXNlIFJlZ2lvbkZpdDoKLSAgICAgICAgICAg
IHJlZ2lvbk92ZXJzZXQgPSBUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb246OlJlZ2lvbk92ZXJzZXQ6
OkZpdDsKKyAgICAgICAgICAgIHJlZ2lvbk92ZXJzZXQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDU1M6OlJlZ2lvbjo6UmVnaW9uT3ZlcnNldDo6Rml0OwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgUmVnaW9uRW1wdHk6Ci0gICAgICAgICAgICByZWdpb25PdmVyc2V0ID0gVHlw
ZUJ1aWxkZXI6OkNTUzo6UmVnaW9uOjpSZWdpb25PdmVyc2V0OjpFbXB0eTsKKyAgICAgICAgICAg
IHJlZ2lvbk92ZXJzZXQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbjo6UmVn
aW9uT3ZlcnNldDo6RW1wdHk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBSZWdp
b25PdmVyc2V0OgotICAgICAgICAgICAgcmVnaW9uT3ZlcnNldCA9IFR5cGVCdWlsZGVyOjpDU1M6
OlJlZ2lvbjo6UmVnaW9uT3ZlcnNldDo6T3ZlcnNldDsKKyAgICAgICAgICAgIHJlZ2lvbk92ZXJz
ZXQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbjo6UmVnaW9uT3ZlcnNldDo6
T3ZlcnNldDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFJlZ2lvblVuZGVmaW5l
ZDoKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTM4Myw3ICsxMzg0LDcgQEAgUGFzc1JlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uPj4gSW5zcGVjdG9y
Q1NTQWdlbnQ6OmJ1aWwKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAg
ICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbj4gcmVnaW9uID0gVHlwZUJ1aWxkZXI6
OkNTUzo6UmVnaW9uOjpjcmVhdGUoKQorICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpSZWdpb24+IHJlZ2lvbiA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6
UmVnaW9uOjpjcmVhdGUoKQogICAgICAgICAgICAgLnNldFJlZ2lvbk92ZXJzZXQocmVnaW9uT3Zl
cnNldCkKICAgICAgICAgICAgIC8vIGRvY3VtZW50Tm9kZUlkIHdhcyBwcmV2aW91c2x5IGFzc2Vy
dGVkCiAgICAgICAgICAgICAuc2V0Tm9kZUlkKG1fZG9tQWdlbnQtPnB1c2hOb2RlVG9Gcm9udGVu
ZChlcnJvclN0cmluZywgZG9jdW1lbnROb2RlSWQsIHJlZ2lvbkxpc3QtPml0ZW0oaSkpKTsKQEAg
LTEzOTQsMTcgKzEzOTUsMTcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1
aWxkZXI6OkNTUzo6UmVnaW9uPj4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWwKICAgICByZXR1cm4g
cmVnaW9ucy5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6TmFt
ZWRGbG93PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JOYW1lZEZsb3coRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBXZWJLaXROYW1lZEZsb3cqIHdlYmtpdE5hbWVkRmxvdywgaW50
IGRvY3VtZW50Tm9kZUlkKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
Ok5hbWVkRmxvdz4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgV2ViS2l0TmFtZWRGbG93KiB3ZWJraXROYW1lZEZsb3cs
IGludCBkb2N1bWVudE5vZGVJZCkKIHsKICAgICBSZWZQdHI8Tm9kZUxpc3Q+IGNvbnRlbnRMaXN0
ID0gd2Via2l0TmFtZWRGbG93LT5nZXRDb250ZW50KCk7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcnJheTxpbnQ+PiBjb250ZW50ID0gVHlwZUJ1aWxkZXI6OkFycmF5PGludD46OmNyZWF0ZSgp
OworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+PiBjb250ZW50
ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CiAKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29udGVudExpc3QtPmxlbmd0aCgpOyArK2kpIHsKICAg
ICAgICAgLy8gZG9jdW1lbnROb2RlSWQgd2FzIHByZXZpb3VzbHkgYXNzZXJ0ZWQKICAgICAgICAg
Y29udGVudC0+YWRkSXRlbShtX2RvbUFnZW50LT5wdXNoTm9kZVRvRnJvbnRlbmQoZXJyb3JTdHJp
bmcsIGRvY3VtZW50Tm9kZUlkLCBjb250ZW50TGlzdC0+aXRlbShpKSkpOwogICAgIH0KIAotICAg
IFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+IG5hbWVkRmxvdyA9IFR5cGVCdWls
ZGVyOjpDU1M6Ok5hbWVkRmxvdzo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+IG5hbWVkRmxvdyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6TmFtZWRGbG93OjpjcmVhdGUoKQogICAgICAgICAuc2V0RG9jdW1lbnROb2RlSWQo
ZG9jdW1lbnROb2RlSWQpCiAgICAgICAgIC5zZXROYW1lKHdlYmtpdE5hbWVkRmxvdy0+bmFtZSgp
LnN0cmluZygpKQogICAgICAgICAuc2V0T3ZlcnNldCh3ZWJraXROYW1lZEZsb3ctPm92ZXJzZXQo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKaW5kZXgg
OWQzYjQwZC4uYTE2ZmVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNTU0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNTU0FnZW50LmgKQEAgLTI3LDEyICsyNywxMiBAQAogCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3Iu
aCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKLSNpbmNsdWRlICJJbnNwZWN0
b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclN0eWxl
U2hlZXQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKyNpbmNsdWRlICJJbnNwZWN0
b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRlICJTZWN1cml0eUNvbnRleHQuaCIKLQorI2luY2x1
ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
QEAgLTY0LDcgKzY0LDcgQEAgY2xhc3MgQ2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s7CiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKIAogY2xhc3MgSW5zcGVjdG9yQ1NTQWdlbnQKLSAgICA6IHB1YmxpYyBJ
bnNwZWN0b3JCYXNlQWdlbnQKKyAgICA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UKICAgICAs
IHB1YmxpYyBJbnNwZWN0b3JET01BZ2VudDo6RE9NTGlzdGVuZXIKICAgICAsIHB1YmxpYyBJbnNw
ZWN0b3JDU1NCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKICAgICAsIHB1YmxpYyBJbnNwZWN0b3JT
dHlsZVNoZWV0OjpMaXN0ZW5lciB7CkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKICAgICB+SW5z
cGVjdG9yQ1NTQWdlbnQoKTsKIAogICAgIGJvb2wgZm9yY2VQc2V1ZG9TdGF0ZShFbGVtZW50Kiwg
Q1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVj
dG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBkaXNjYXJkQWdlbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3Ry
aW5nKik7CkBAIC0xMTIsMjYgKzExMiwyNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWdpc3Rl
ck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93KiwgTm9k
ZSogY29udGVudEVsZW1lbnQsIE5vZGUqIG5leHRDb250ZW50RWxlbWVudCA9IG51bGxwdHIpOwog
ICAgIHZvaWQgZGlkVW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50Kiwg
V2ViS2l0TmFtZWRGbG93KiwgTm9kZSogY29udGVudEVsZW1lbnQpOwogCi0gICAgdmlydHVhbCB2
b2lkIGdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NDb21wdXRlZFN0eWxl
UHJvcGVydHk+PiYpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbmxpbmVTdHlsZXNGb3JOb2RlKEVy
cm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxl
PiYgaW5saW5lU3R5bGUsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4mIGF0dHJp
YnV0ZXMpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0
cmluZyosIGludCBub2RlSWQsIGNvbnN0IGJvb2wqIGluY2x1ZGVQc2V1ZG8sIGNvbnN0IGJvb2wq
IGluY2x1ZGVJbmhlcml0ZWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6
OkNTUzo6UnVsZU1hdGNoPj4mIG1hdGNoZWRDU1NSdWxlcywgUmVmUHRyPFR5cGVCdWlsZGVyOjpB
cnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+PiYgcHNldWRvSWRNYXRjaGVz
LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkluaGVyaXRlZFN0
eWxlRW50cnk+PiYgaW5oZXJpdGVkRW50cmllcyk7Ci0gICAgdmlydHVhbCB2b2lkIGdldEFsbFN0
eWxlU2hlZXRzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPj4mIHN0eWxlU2hlZXRJbmZvcyk7Ci0gICAg
dmlydHVhbCB2b2lkIGdldFN0eWxlU2hlZXQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHN0
eWxlU2hlZXRJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5PiYg
cmVzdWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JT
dHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+PiYp
OworICAgIHZpcnR1YWwgdm9pZCBnZXRJbmxpbmVTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiwg
aW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+
JiBpbmxpbmVTdHlsZSwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5
bGU+JiBhdHRyaWJ1dGVzKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0TWF0Y2hlZFN0eWxlc0Zvck5v
ZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBib29sKiBpbmNsdWRlUHNldWRvLCBj
b25zdCBib29sKiBpbmNsdWRlSW5oZXJpdGVkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g+PiYgbWF0Y2hl
ZENTU1J1bGVzLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+PiYgcHNldWRvSWRNYXRjaGVzLCBS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5Pj4mIGluaGVyaXRlZEVudHJpZXMpOworICAgIHZp
cnR1YWwgdm9pZCBnZXRBbGxTdHlsZVNoZWV0cyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0
eWxlU2hlZXRIZWFkZXI+PiYgc3R5bGVTaGVldEluZm9zKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0
U3R5bGVTaGVldChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0Qm9keT4mIHJlc3Vs
dCk7CiAgICAgdmlydHVhbCB2b2lkIGdldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIFN0cmluZyogcmVzdWx0KTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0U3R5bGVTaGVldFRleHQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hl
ZXRJZCwgY29uc3QgU3RyaW5nJiB0ZXh0KTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U3R5bGVUZXh0
KEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHN0eWxlSWQsIGNv
bnN0IFN0cmluZyYgdGV4dCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgcmVz
dWx0KTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UHJvcGVydHlUZXh0KEVycm9yU3RyaW5nKiwgY29u
c3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHN0eWxlSWQsIGludCBwcm9wZXJ0eUluZGV4LCBj
b25zdCBTdHJpbmcmIHRleHQsIGJvb2wgb3ZlcndyaXRlLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTU3R5bGU+JiByZXN1bHQpOwotICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVQcm9wZXJ0eShF
cnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBzdHlsZUlkLCBpbnQg
cHJvcGVydHlJbmRleCwgYm9vbCBkaXNhYmxlLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
U3R5bGU+JiByZXN1bHQpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRSdWxlU2VsZWN0b3IoRXJyb3JT
dHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcnVsZUlkLCBjb25zdCBTdHJp
bmcmIHNlbGVjdG9yLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCk7
Ci0gICAgdmlydHVhbCB2b2lkIGFkZFJ1bGUoRXJyb3JTdHJpbmcqLCBpbnQgY29udGV4dE5vZGVJ
ZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1
bGU+JiByZXN1bHQpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVz
KEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NQcm9wZXJ0eUluZm8+PiYgcmVzdWx0KTsKLSAgICB2aXJ0dWFsIHZvaWQgZm9yY2VQc2V1
ZG9TdGF0ZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JB
cnJheT4mIGZvcmNlZFBzZXVkb0NsYXNzZXMpOwotICAgIHZpcnR1YWwgdm9pZCBnZXROYW1lZEZs
b3dDb2xsZWN0aW9uKEVycm9yU3RyaW5nKiwgaW50IGRvY3VtZW50Tm9kZUlkLCBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4+JiByZXN1bHQpOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRTdHlsZVRleHQoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBzdHlsZUlkLCBjb25zdCBTdHJpbmcmIHRleHQs
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJvcGVydHlUZXh0KEVycm9yU3RyaW5nKiwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgc3R5bGVJZCwgaW50IHByb3BlcnR5SW5k
ZXgsIGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBvdmVyd3JpdGUsIFJlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQg
dG9nZ2xlUHJvcGVydHkoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+JiBzdHlsZUlkLCBpbnQgcHJvcGVydHlJbmRleCwgYm9vbCBkaXNhYmxlLCBS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4mIHJlc3VsdCk7Cisg
ICAgdmlydHVhbCB2b2lkIHNldFJ1bGVTZWxlY3RvcihFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIHJ1bGVJZCwgY29uc3QgU3RyaW5nJiBzZWxl
Y3RvciwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4mIHJlc3Vs
dCk7CisgICAgdmlydHVhbCB2b2lkIGFkZFJ1bGUoRXJyb3JTdHJpbmcqLCBpbnQgY29udGV4dE5v
ZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCk7CisgICAgdmlydHVhbCB2b2lkIGdldFN1cHBvcnRl
ZENTU1Byb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+PiYg
cmVzdWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9yY2VQc2V1ZG9TdGF0ZShFcnJvclN0cmluZyos
IGludCBub2RlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYgZm9y
Y2VkUHNldWRvQ2xhc3Nlcyk7CisgICAgdmlydHVhbCB2b2lkIGdldE5hbWVkRmxvd0NvbGxlY3Rp
b24oRXJyb3JTdHJpbmcqLCBpbnQgZG9jdW1lbnROb2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4+
JiByZXN1bHQpOwogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0U2VsZWN0b3JQcm9maWxlcihFcnJv
clN0cmluZyopOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wU2VsZWN0b3JQcm9maWxlcihFcnJvclN0
cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+Jik7CisgICAg
dmlydHVhbCB2b2lkIHN0b3BTZWxlY3RvclByb2ZpbGVyKEVycm9yU3RyaW5nKiwgUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlPiYpOwogCi0gICAgUGFz
c1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+IHN0b3BTZWxlY3RvclBy
b2ZpbGVySW1wbChFcnJvclN0cmluZyosIGJvb2wgbmVlZFByb2ZpbGUpOworICAgIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+IHN0b3BTZWxl
Y3RvclByb2ZpbGVySW1wbChFcnJvclN0cmluZyosIGJvb2wgbmVlZFByb2ZpbGUpOwogICAgIHZv
aWQgd2lsbE1hdGNoUnVsZShTdHlsZVJ1bGUqLCBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzJiwgRG9j
dW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbiYpOwogICAgIHZvaWQgZGlkTWF0Y2hSdWxlKGJvb2wp
OwogICAgIHZvaWQgd2lsbFByb2Nlc3NSdWxlKFN0eWxlUnVsZSosIFN0eWxlUmVzb2x2ZXImKTsK
QEAgLTE1OCwyMCArMTU4LDIwIEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yU3R5bGVTaGVldEZv
cklubGluZVN0eWxlKiBhc0luc3BlY3RvclN0eWxlU2hlZXQoRWxlbWVudCogZWxlbWVudCk7CiAg
ICAgRWxlbWVudCogZWxlbWVudEZvcklkKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCk7CiAgICAg
aW50IGRvY3VtZW50Tm9kZVdpdGhSZXF1ZXN0ZWRGbG93c0lkKERvY3VtZW50Kik7Ci0gICAgdm9p
ZCBjb2xsZWN0U3R5bGVTaGVldHMoQ1NTU3R5bGVTaGVldCosIFR5cGVCdWlsZGVyOjpBcnJheTxX
ZWJDb3JlOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPiopOworICAgIHZv
aWQgY29sbGVjdFN0eWxlU2hlZXRzKENTU1N0eWxlU2hlZXQqLCBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFk
ZXI+Kik7CiAKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBiaW5kU3R5bGVTaGVldChDU1NTdHls
ZVNoZWV0Kik7CiAgICAgSW5zcGVjdG9yU3R5bGVTaGVldCogdmlhSW5zcGVjdG9yU3R5bGVTaGVl
dChEb2N1bWVudCosIGJvb2wgY3JlYXRlSWZBYnNlbnQpOwogICAgIEluc3BlY3RvclN0eWxlU2hl
ZXQqIGFzc2VydFN0eWxlU2hlZXRGb3JJZChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYpOwot
ICAgIFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OkVudW0gZGV0ZWN0T3JpZ2lu
KENTU1N0eWxlU2hlZXQqIHBhZ2VTdHlsZVNoZWV0LCBEb2N1bWVudCogb3duZXJEb2N1bWVudCk7
CisgICAgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpFbnVt
IGRldGVjdE9yaWdpbihDU1NTdHlsZVNoZWV0KiBwYWdlU3R5bGVTaGVldCwgRG9jdW1lbnQqIG93
bmVyRG9jdW1lbnQpOwogCi0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxl
PiBidWlsZE9iamVjdEZvclJ1bGUoU3R5bGVSdWxlKiwgU3R5bGVSZXNvbHZlciYpOwotICAgIFBh
c3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gYnVpbGRPYmplY3RGb3JSdWxlKENT
U1N0eWxlUnVsZSopOwotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpDU1M6OkNTU1J1bGU+PiBidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3QqKTsK
LSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpSdWxl
TWF0Y2g+PiBidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0IFZlY3RvcjxSZWZQdHI8
U3R5bGVSdWxlQmFzZT4+JiwgU3R5bGVSZXNvbHZlciYsIEVsZW1lbnQqKTsKLSAgICBQYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNT
dHlsZShFbGVtZW50Kik7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1
aWxkZXI6OkNTUzo6UmVnaW9uPj4gYnVpbGRBcnJheUZvclJlZ2lvbnMoRXJyb3JTdHJpbmcqLCBQ
YXNzUmVmUHRyPE5vZGVMaXN0PiwgaW50IGRvY3VtZW50Tm9kZUlkKTsKLSAgICBQYXNzUmVmUHRy
PFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4gYnVpbGRPYmplY3RGb3JOYW1lZEZsb3coRXJy
b3JTdHJpbmcqLCBXZWJLaXROYW1lZEZsb3cqLCBpbnQgZG9jdW1lbnROb2RlSWQpOworICAgIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiBidWlsZE9iamVj
dEZvclJ1bGUoU3R5bGVSdWxlKiwgU3R5bGVSZXNvbHZlciYpOworICAgIFBhc3NSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiBidWlsZE9iamVjdEZvclJ1bGUoQ1NT
U3R5bGVSdWxlKik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJh
eTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+PiBidWlsZEFycmF5Rm9yUnVs
ZUxpc3QoQ1NTUnVsZUxpc3QqKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UnVsZU1hdGNoPj4gYnVpbGRB
cnJheUZvck1hdGNoZWRSdWxlTGlzdChjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+
PiYsIFN0eWxlUmVzb2x2ZXImLCBFbGVtZW50Kik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNTdHls
ZShFbGVtZW50Kik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJh
eTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbj4+IGJ1aWxkQXJyYXlGb3JSZWdp
b25zKEVycm9yU3RyaW5nKiwgUGFzc1JlZlB0cjxOb2RlTGlzdD4sIGludCBkb2N1bWVudE5vZGVJ
ZCk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxv
dz4gYnVpbGRPYmplY3RGb3JOYW1lZEZsb3coRXJyb3JTdHJpbmcqLCBXZWJLaXROYW1lZEZsb3cq
LCBpbnQgZG9jdW1lbnROb2RlSWQpOwogCiAgICAgLy8gSW5zcGVjdG9yRE9NQWdlbnQ6OkRPTUxp
c3RlbmVyIGltcGxlbWVudGF0aW9uCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlbW92ZURvY3VtZW50
KERvY3VtZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ2FudmFzQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNh
bnZhc0FnZW50LmNwcAppbmRleCBmOWY3MmYyLi45NDMwOTk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKQEAgLTQ3LDIyICs0Nywy
NCBAQAogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlNjcmlw
dFByb2ZpbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKKyNpbmNsdWRlIDxiaW5kaW5n
cy9TY3JpcHRPYmplY3QuaD4KIAotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkFycmF5Owot
dXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VJZDsKLXVzaW5nIFdl
YkNvcmU6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlSW5mbzsKLXVzaW5nIFdlYkNvcmU6
OlR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlU3RhdGU7Ci11c2luZyBXZWJDb3JlOjpUeXBl
QnVpbGRlcjo6Q2FudmFzOjpUcmFjZUxvZzsKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpD
YW52YXM6OlRyYWNlTG9nSWQ7Ci11c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6
RnJhbWVJZDsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5OwordXNpbmcgSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJjZUlkOwordXNpbmcgSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJjZUluZm87Cit1c2luZyBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlU3RhdGU7Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nOwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q2FudmFzOjpUcmFjZUxvZ0lkOwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29y
azo6RnJhbWVJZDsKKwordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6SW5zcGVjdG9yQ2FudmFzQWdlbnQoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50
KiBwYWdlQWdlbnQsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiQ2FudmFzIiksIGluc3Ry
dW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJD
YW52YXMiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fcGFnZUFnZW50KHBhZ2VBZ2Vu
dCkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikK
ICAgICAsIG1fZW5hYmxlZChmYWxzZSkKQEAgLTczLDcgKzc1LDcgQEAgSW5zcGVjdG9yQ2FudmFz
QWdlbnQ6On5JbnNwZWN0b3JDYW52YXNBZ2VudCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ2Fu
dmFzQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tl
bmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVu
ZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikK
IHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
Q2FudmFzRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2Vu
ZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JDYW52YXNCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJh
Y2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKQEAgLTE3OCwyNyArMTgwLDI3IEBAIHZvaWQgSW5zcGVj
dG9yQ2FudmFzQWdlbnQ6OmdldFJlc291cmNlU3RhdGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBjb25zdCBUcmFjCiAgICAgICAgIG1vZHVsZS5yZXNvdXJjZVN0YXRlKGVycm9yU3RyaW5nLCB0
cmFjZUxvZ0lkLCByZXNvdXJjZUlkLCAmcmVzdWx0KTsKIH0KIAotU2NyaXB0T2JqZWN0IEluc3Bl
Y3RvckNhbnZhc0FnZW50Ojp3cmFwQ2FudmFzMkRSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVu
dGF0aW9uKGNvbnN0IFNjcmlwdE9iamVjdCYgY29udGV4dCkKK0RlcHJlY2F0ZWQ6OlNjcmlwdE9i
amVjdCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6d3JhcENhbnZhczJEUmVuZGVyaW5nQ29udGV4dEZv
ckluc3RydW1lbnRhdGlvbihjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmIGNvbnRleHQp
CiB7CiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1
bGUgbW9kdWxlID0gaW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUoJmVycm9yLCBjb250ZXh0KTsK
ICAgICBpZiAobW9kdWxlLmhhc05vVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIFNjcmlwdE9iamVj
dCgpOworICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KCk7CiAgICAgcmV0
dXJuIG5vdGlmeVJlbmRlcmluZ0NvbnRleHRXYXNXcmFwcGVkKG1vZHVsZS53cmFwQ2FudmFzMkRD
b250ZXh0KGNvbnRleHQpKTsKIH0KIAogI2lmIEVOQUJMRShXRUJHTCkKLVNjcmlwdE9iamVjdCBJ
bnNwZWN0b3JDYW52YXNBZ2VudDo6d3JhcFdlYkdMUmVuZGVyaW5nQ29udGV4dEZvckluc3RydW1l
bnRhdGlvbihjb25zdCBTY3JpcHRPYmplY3QmIGdsQ29udGV4dCkKK0RlcHJlY2F0ZWQ6OlNjcmlw
dE9iamVjdCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6d3JhcFdlYkdMUmVuZGVyaW5nQ29udGV4dEZv
ckluc3RydW1lbnRhdGlvbihjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmIGdsQ29udGV4
dCkKIHsKICAgICBFcnJvclN0cmluZyBlcnJvcjsKICAgICBJbmplY3RlZFNjcmlwdENhbnZhc01v
ZHVsZSBtb2R1bGUgPSBpbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZSgmZXJyb3IsIGdsQ29udGV4
dCk7CiAgICAgaWYgKG1vZHVsZS5oYXNOb1ZhbHVlKCkpCi0gICAgICAgIHJldHVybiBTY3JpcHRP
YmplY3QoKTsKKyAgICAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCgpOwogICAg
IHJldHVybiBub3RpZnlSZW5kZXJpbmdDb250ZXh0V2FzV3JhcHBlZChtb2R1bGUud3JhcFdlYkdM
Q29udGV4dChnbENvbnRleHQpKTsKIH0KICNlbmRpZgogCi1TY3JpcHRPYmplY3QgSW5zcGVjdG9y
Q2FudmFzQWdlbnQ6Om5vdGlmeVJlbmRlcmluZ0NvbnRleHRXYXNXcmFwcGVkKGNvbnN0IFNjcmlw
dE9iamVjdCYgd3JhcHBlZENvbnRleHQpCitEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgSW5zcGVj
dG9yQ2FudmFzQWdlbnQ6Om5vdGlmeVJlbmRlcmluZ0NvbnRleHRXYXNXcmFwcGVkKGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgd3JhcHBlZENvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1f
ZnJvbnRlbmREaXNwYXRjaGVyKTsKICAgICBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUgPSB3
cmFwcGVkQ29udGV4dC5zY3JpcHRTdGF0ZSgpOwpAQCAtMjI0LDEzICsyMjYsMTMgQEAgSW5qZWN0
ZWRTY3JpcHRDYW52YXNNb2R1bGUgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmluamVjdGVkU2NyaXB0
Q2FudmFzTW9kdWxlKEVycm8KICAgICByZXR1cm4gbW9kdWxlOwogfQogCi1JbmplY3RlZFNjcmlw
dENhbnZhc01vZHVsZSBJbnNwZWN0b3JDYW52YXNBZ2VudDo6aW5qZWN0ZWRTY3JpcHRDYW52YXNN
b2R1bGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTY3JpcHRPYmplY3QmIHNjcmlw
dE9iamVjdCkKK0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlIEluc3BlY3RvckNhbnZhc0FnZW50
OjppbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgc2NyaXB0T2JqZWN0KQogewogICAgIGlmICgh
Y2hlY2tJc0VuYWJsZWQoZXJyb3JTdHJpbmcpKQogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3Jp
cHRDYW52YXNNb2R1bGUoKTsKICAgICBpZiAoc2NyaXB0T2JqZWN0Lmhhc05vVmFsdWUoKSkgewog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIklu
dGVybmFsIGVycm9yOiBvcmlnaW5hbCBTY3JpcHRPYmplY3QgaGFzIG5vIHZhbHVlIjsKKyAgICAg
ICAgKmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yOiBvcmlnaW5hbCBEZXByZWNhdGVkOjpT
Y3JpcHRPYmplY3QgaGFzIG5vIHZhbHVlIjsKICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0
Q2FudmFzTW9kdWxlKCk7CiAgICAgfQogICAgIHJldHVybiBpbmplY3RlZFNjcmlwdENhbnZhc01v
ZHVsZShlcnJvclN0cmluZywgc2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRlKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaAppbmRleCA0OWQwM2U4
Li4yN2QzZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q2FudmFzQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2Fu
dmFzQWdlbnQuaApAQCAtMzMsMTUgKzMzLDIwIEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQog
Ci0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKLSNpbmNs
dWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50
QmFzZS5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIgogI2luY2x1ZGUg
IlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBEZXByZWNhdGVkIHsKK2NsYXNzIFNjcmlw
dE9iamVjdDsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZTsKQEAgLTQ5
LDExICs1NCwxMCBAQCBjbGFzcyBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTsKIGNsYXNzIElu
amVjdGVkU2NyaXB0TWFuYWdlcjsKIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKIGNsYXNzIElu
c3RydW1lbnRpbmdBZ2VudHM7Ci1jbGFzcyBTY3JpcHRPYmplY3Q7CiAKIHR5cGVkZWYgU3RyaW5n
IEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JDYW52YXNBZ2VudCA6IHB1YmxpYyBJbnNw
ZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JDYW52YXNCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXIgeworY2xhc3MgSW5zcGVjdG9yQ2FudmFzQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdl
bnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yQ2FudmFzQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JDYW52YXNBZ2VudD4gY3Jl
YXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBh
Z2VBZ2VudCogcGFnZUFnZW50LCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0
TWFuYWdlcikKICAgICB7CkBAIC02MSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgfklu
c3BlY3RvckNhbnZhc0FnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rv
cjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIHZvaWQg
ZnJhbWVOYXZpZ2F0ZWQoRnJhbWUqKTsKQEAgLTY5LDM0ICs3MywzNCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkaWRCZWdpbkZyYW1lKCk7CiAKICAgICAvLyBDYWxsZWQgZnJvbSBJbnNwZWN0b3JDYW52
YXNJbnN0cnVtZW50YXRpb24uCi0gICAgU2NyaXB0T2JqZWN0IHdyYXBDYW52YXMyRFJlbmRlcmlu
Z0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24oY29uc3QgU2NyaXB0T2JqZWN0Jik7CisgICAgRGVw
cmVjYXRlZDo6U2NyaXB0T2JqZWN0IHdyYXBDYW52YXMyRFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0
cnVtZW50YXRpb24oY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0Jik7CiAjaWYgRU5BQkxF
KFdFQkdMKQotICAgIFNjcmlwdE9iamVjdCB3cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5z
dHJ1bWVudGF0aW9uKGNvbnN0IFNjcmlwdE9iamVjdCYpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlw
dE9iamVjdCB3cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYpOwogI2VuZGlmCiAKICAgICAvLyBDYWxsZWQgZnJv
bSB0aGUgZnJvbnQtZW5kLgogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwotICAgIHZpcnR1YWwgdm9p
ZCBkcm9wVHJhY2VMb2coRXJyb3JTdHJpbmcqLCBjb25zdCBUeXBlQnVpbGRlcjo6Q2FudmFzOjpU
cmFjZUxvZ0lkJik7CisgICAgdmlydHVhbCB2b2lkIGRyb3BUcmFjZUxvZyhFcnJvclN0cmluZyos
IGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCYpOwogICAg
IHZpcnR1YWwgdm9pZCBoYXNVbmluc3RydW1lbnRlZENhbnZhc2VzKEVycm9yU3RyaW5nKiwgYm9v
bCopOwotICAgIHZpcnR1YWwgdm9pZCBjYXB0dXJlRnJhbWUoRXJyb3JTdHJpbmcqLCBjb25zdCBU
eXBlQnVpbGRlcjo6TmV0d29yazo6RnJhbWVJZCosIFR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNl
TG9nSWQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRDYXB0dXJpbmcoRXJyb3JTdHJpbmcqLCBj
b25zdCBUeXBlQnVpbGRlcjo6TmV0d29yazo6RnJhbWVJZCosIFR5cGVCdWlsZGVyOjpDYW52YXM6
OlRyYWNlTG9nSWQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcENhcHR1cmluZyhFcnJvclN0cmlu
ZyosIGNvbnN0IFR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0VHJhY2VMb2coRXJyb3JTdHJpbmcqLCBjb25zdCBUeXBlQnVpbGRlcjo6Q2FudmFz
OjpUcmFjZUxvZ0lkJiwgY29uc3QgaW50KiwgY29uc3QgaW50KiwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpDYW52YXM6OlRyYWNlTG9nPiYpOwotICAgIHZpcnR1YWwgdm9pZCByZXBsYXlUcmFjZUxvZyhF
cnJvclN0cmluZyosIGNvbnN0IFR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQmLCBpbnQs
IFJlZlB0cjxUeXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJjZVN0YXRlPiYpOwotICAgIHZpcnR1
YWwgdm9pZCBnZXRSZXNvdXJjZUluZm8oRXJyb3JTdHJpbmcqLCBjb25zdCBUeXBlQnVpbGRlcjo6
Q2FudmFzOjpSZXNvdXJjZUlkJiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNl
SW5mbz4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVzb3VyY2VTdGF0ZShFcnJvclN0cmluZyos
IGNvbnN0IFR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQmLCBjb25zdCBUeXBlQnVpbGRl
cjo6Q2FudmFzOjpSZXNvdXJjZUlkJiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291
cmNlU3RhdGU+Jik7CisgICAgdmlydHVhbCB2b2lkIGNhcHR1cmVGcmFtZShFcnJvclN0cmluZyos
IGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkZyYW1lSWQqLCBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQqKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c3RhcnRDYXB0dXJpbmcoRXJyb3JTdHJpbmcqLCBjb25zdCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpOZXR3b3JrOjpGcmFtZUlkKiwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFj
ZUxvZ0lkKik7CisgICAgdmlydHVhbCB2b2lkIHN0b3BDYXB0dXJpbmcoRXJyb3JTdHJpbmcqLCBj
b25zdCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0VHJhY2VMb2coRXJyb3JTdHJpbmcqLCBjb25zdCBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQmLCBjb25zdCBpbnQqLCBjb25zdCBpbnQqLCBS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFjZUxvZz4mKTsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVwbGF5VHJhY2VMb2coRXJyb3JTdHJpbmcqLCBjb25zdCBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQmLCBpbnQsIFJlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlU3RhdGU+Jik7CisgICAgdmlydHVhbCB2b2lk
IGdldFJlc291cmNlSW5mbyhFcnJvclN0cmluZyosIGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNhbnZhczo6UmVzb3VyY2VJZCYsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
YW52YXM6OlJlc291cmNlSW5mbz4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVzb3VyY2VTdGF0
ZShFcnJvclN0cmluZyosIGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJh
Y2VMb2dJZCYsIGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VJ
ZCYsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlU3RhdGU+
Jik7CiAKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yQ2FudmFzQWdlbnQoSW5zdHJ1bWVudGluZ0Fn
ZW50cyosIEluc3BlY3RvclBhZ2VBZ2VudCosIEluamVjdGVkU2NyaXB0TWFuYWdlciopOwogCiAg
ICAgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUgaW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUo
RXJyb3JTdHJpbmcqLCBKU0M6OkV4ZWNTdGF0ZSopOwotICAgIEluamVjdGVkU2NyaXB0Q2FudmFz
TW9kdWxlIGluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlKEVycm9yU3RyaW5nKiwgY29uc3QgU2Ny
aXB0T2JqZWN0Jik7CisgICAgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUgaW5qZWN0ZWRTY3Jp
cHRDYW52YXNNb2R1bGUoRXJyb3JTdHJpbmcqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmpl
Y3QmKTsKICAgICBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZSBpbmplY3RlZFNjcmlwdENhbnZh
c01vZHVsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYpOwogCiAgICAgdm9pZCBmaW5kRnJh
bWVzV2l0aFVuaW5zdHJ1bWVudGVkQ2FudmFzZXMoKTsKICAgICBib29sIGNoZWNrSXNFbmFibGVk
KEVycm9yU3RyaW5nKikgY29uc3Q7Ci0gICAgU2NyaXB0T2JqZWN0IG5vdGlmeVJlbmRlcmluZ0Nv
bnRleHRXYXNXcmFwcGVkKGNvbnN0IFNjcmlwdE9iamVjdCYpOworICAgIERlcHJlY2F0ZWQ6OlNj
cmlwdE9iamVjdCBub3RpZnlSZW5kZXJpbmdDb250ZXh0V2FzV3JhcHBlZChjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRPYmplY3QmKTsKIAogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdl
bnQ7CiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNJbnN0
cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNJ
bnN0cnVtZW50YXRpb24uaAppbmRleCBkM2ZkYTYwLi4wMTUwYzkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzSW5zdHJ1bWVudGF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0luc3RydW1lbnRhdGlv
bi5oCkBAIC0zNCwxMSArMzQsMTEgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JDYW52YXNBZ2VudC5o
IgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkluc3Ry
dW1lbnRpbmdBZ2VudHMuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlIDxi
aW5kaW5ncy9TY3JpcHRPYmplY3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TY3JpcHRP
YmplY3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3cmFwQ2FudmFzMkRSZW5kZXJpbmdDb250
ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU2NyaXB0T2Jq
ZWN0JiBjb250ZXh0KQorRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d3JhcENhbnZhczJEUmVuZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlvbihE
b2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgY29udGV4
dCkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRv
Y3VtZW50KSkgewpAQCAtNDksMTEgKzQ5LDExIEBAIFNjcmlwdE9iamVjdCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndyYXBDYW52YXMyRFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50CiAg
ICAgVU5VU0VEX1BBUkFNKGRvY3VtZW50KTsKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CiAj
ZW5kaWYKLSAgICByZXR1cm4gU2NyaXB0T2JqZWN0KCk7CisgICAgcmV0dXJuIERlcHJlY2F0ZWQ6
OlNjcmlwdE9iamVjdCgpOwogfQogCiAjaWYgRU5BQkxFKFdFQkdMKQotU2NyaXB0T2JqZWN0IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d3JhcFdlYkdMUmVuZGVyaW5nQ29udGV4dEZvckluc3Ry
dW1lbnRhdGlvbihEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFNjcmlwdE9iamVjdCYgZ2xDb250
ZXh0KQorRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d3JhcFdlYkdMUmVuZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlvbihEb2N1bWVudCogZG9j
dW1lbnQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgZ2xDb250ZXh0KQogewogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKSB7
CkBAIC02NCw3ICs2NCw3IEBAIFNjcmlwdE9iamVjdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndyYXBXZWJHTFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpCiAgICAgVU5VU0VEX1BB
UkFNKGRvY3VtZW50KTsKICAgICBVTlVTRURfUEFSQU0oZ2xDb250ZXh0KTsKICNlbmRpZgotICAg
IHJldHVybiBTY3JpcHRPYmplY3QoKTsKKyAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0T2Jq
ZWN0KCk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IGM2NzIxNDIuLmMzM2U2YWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuY3BwCkBAIC0zOCw3ICsz
OCw5IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIK
KyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgorCit1c2luZyBuYW1lc3BhY2UgSW5z
cGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDbGllbnQuaAppbmRleCA0NGU3ZWExNmEuLmRmMzg5ZDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNp
Zm5kZWYgSW5zcGVjdG9yQ2xpZW50X2gKICNkZWZpbmUgSW5zcGVjdG9yQ2xpZW50X2gKIAorI2lu
Y2x1ZGUgIkluc3BlY3RvckZvcndhcmRpbmcuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTM0
LDcgKzM1LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5zcGVjdG9yQ29udHJv
bGxlcjsKLWNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKIGNsYXNzIEZyYW1lOwogY2xh
c3MgUGFnZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
c29sZUFnZW50LmNwcAppbmRleCBkYWE5YzViLi5kZTE2ZjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcApAQCAtNDMsMTQgKzQz
LDE2IEBACiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2Fs
bFN0YWNrRmFjdG9yeS5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRl
ICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlci5oIgorI2luY2x1ZGUg
PGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4aW11bUNvbnNvbGVNZXNzYWdlcyA9IDEw
MDA7CkBAIC01OSw3ICs2MSw3IEBAIHN0YXRpYyBjb25zdCBpbnQgZXhwaXJlQ29uc29sZU1lc3Nh
Z2VzU3RlcCA9IDEwMDsKIGludCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OnNfZW5hYmxlZEFnZW50
Q291bnQgPSAwOwogCiBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6Okluc3BlY3RvckNvbnNvbGVBZ2Vu
dChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbmplY3RlZFNjcmlw
dE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKLSAgICA6IEluc3BlY3RvckJhc2VBZ2Vu
dChBU0NJSUxpdGVyYWwoIkNvbnNvbGUiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IElu
c3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkNvbnNvbGUiKSwgaW5zdHJ1bWVudGluZ0Fn
ZW50cykKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdl
cikKICAgICAsIG1fcHJldmlvdXNNZXNzYWdlKDApCiAgICAgLCBtX2V4cGlyZWRDb25zb2xlTWVz
c2FnZUNvdW50KDApCkBAIC0xMjIsNyArMTI0LDcgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdl
bnQ6OnJlc2V0KCkKICAgICBtX2NvdW50cy5jbGVhcigpOwogfQogCi12b2lkIEluc3BlY3RvckNv
bnNvbGVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFj
a2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6ZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9u
dGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hl
cikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2Jh
Y2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yQ29uc29sZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVh
dGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpAQCAtMzIwLDcgKzMyMiw3IEBAIHZvaWQgSW5z
cGVjdG9yQ29uc29sZUFnZW50OjphZGRDb25zb2xlTWVzc2FnZShQYXNzT3duUHRyPENvbnNvbGVN
ZXNzYWdlPiBjb25zb2xlCiBjbGFzcyBJbnNwZWN0YWJsZUhlYXBPYmplY3QgOiBwdWJsaWMgSW5q
ZWN0ZWRTY3JpcHRIb3N0OjpJbnNwZWN0YWJsZU9iamVjdCB7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgSW5zcGVjdGFibGVIZWFwT2JqZWN0KGludCBoZWFwT2JqZWN0SWQpIDogbV9oZWFwT2JqZWN0
SWQoaGVhcE9iamVjdElkKSB7IH0KLSAgICB2aXJ0dWFsIFNjcmlwdFZhbHVlIGdldChKU0M6OkV4
ZWNTdGF0ZSopCisgICAgdmlydHVhbCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBnZXQoSlNDOjpF
eGVjU3RhdGUqKQogICAgIHsKICAgICAgICAgcmV0dXJuIFNjcmlwdFByb2ZpbGVyOjpvYmplY3RC
eUhlYXBPYmplY3RJZChtX2hlYXBPYmplY3RJZCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCmluZGV4IGMwZjBhZGMuLjk5NDU1
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xl
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFn
ZW50LmgKQEAgLTI5LDggKzI5LDkgQEAKIAogI2luY2x1ZGUgIkNvbnNvbGVBUElUeXBlcy5oIgog
I2luY2x1ZGUgIkNvbnNvbGVUeXBlcy5oIgotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5o
IgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIklu
c3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAj
aW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC01Miw3ICs1Myw3IEBAIGNsYXNzIFNjcmlwdFByb2ZpbGU7
CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JDb25zb2xl
QWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yQ29uc29s
ZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JDb25zb2xlQWdlbnQg
OiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yQ29uc29sZUJhY2tl
bmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9y
Q29uc29sZUFnZW50KTsKIHB1YmxpYzoKICAgICBJbnNwZWN0b3JDb25zb2xlQWdlbnQoSW5zdHJ1
bWVudGluZ0FnZW50cyosIEluamVjdGVkU2NyaXB0TWFuYWdlciopOwpAQCAtNjQsNyArNjUsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9
CiAgICAgdm9pZCByZXNldCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6
Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICB2b2lkIGFk
ZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZl
bCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBKU0M6OkV4ZWNTdGF0ZSosIFBhc3NSZWZQdHI8U2Ny
aXB0QXJndW1lbnRzPiwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciA9IDApOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4
IGUyM2ZlMDcuLjQzNzc1ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTQyLDcgKzQyLDYgQEAKICNpbmNsdWRlICJJbnNwZWN0
b3JBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oIgog
I2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgotI2luY2x1ZGUgIkluc3Bl
Y3RvckJhc2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNTU0FnZW50LmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQuaCIK
QEAgLTcxLDggKzcwLDEwIEBACiAjaW5jbHVkZSAiUGFnZURlYnVnZ2VyQWdlbnQuaCIKICNpbmNs
dWRlICJQYWdlUnVudGltZUFnZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlNj
cmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9y
L0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggYTZlMmQ3ZC4uZjZlNmQ4NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0zMywxMyAr
MzMsMTggQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JB
Z2VudFJlZ2lzdHJ5LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVk
ZSA8aW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaD4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBJbnNw
ZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsOworY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7Cit9CisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwpAQCAtNDgsMTUgKzUzLDEyIEBA
IGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKIGNs
YXNzIEluc3BlY3RvckFnZW50OwogY2xhc3MgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
OwotY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CiBjbGFzcyBJbnNwZWN0b3JDbGll
bnQ7CiBjbGFzcyBJbnNwZWN0b3JET01BZ2VudDsKIGNsYXNzIEluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OwotY2xhc3MgSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsOwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiBjbGFzcyBJbnNw
ZWN0b3JNZW1vcnlBZ2VudDsKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3BlY3Rv
ck92ZXJsYXk7CiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JQcm9m
aWxlckFnZW50OwpAQCAtOTUsNyArOTcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNMb2NhbEZy
b250ZW5kKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNSZW1vdGVGcm9udGVuZCgpIGNvbnN0OwogCi0g
ICAgdm9pZCBjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKik7CisgICAg
dm9pZCBjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
KTsKICAgICB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZCgpOwogICAgIHZvaWQgc2V0UHJvY2Vzc0lk
KGxvbmcpOwogCkBAIC0xMTEsNyArMTEzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRJbmRp
Y2F0aW5nKGJvb2wpOwogCi0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2Jq
ZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGUoKSBjb25zdDsK
IAogICAgIGJvb2wgaXNVbmRlclRlc3QoKTsKICAgICB2b2lkIGV2YWx1YXRlRm9yVGVzdEluRnJv
bnRlbmQobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgc2NyaXB0KTsKQEAgLTE1NCwxMiArMTU2
LDEyIEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudCogbV9wcm9maWxlckFn
ZW50OwogI2VuZGlmCiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1f
aW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI+IG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CiAgICAg
T3duUHRyPEluc3BlY3RvckZyb250ZW5kQ2xpZW50PiBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50
OwotICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWw7CisgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG1faW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsOwogICAgIFBhZ2UqIG1fcGFnZTsKICAgICBJbnNwZWN0b3JDbGllbnQq
IG1faW5zcGVjdG9yQ2xpZW50OwotICAgIEluc3BlY3RvckFnZW50UmVnaXN0cnkgbV9hZ2VudHM7
CisgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5IG1fYWdlbnRzOwogICAgIGJv
b2wgbV9pc1VuZGVyVGVzdDsKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggMzcwMzQz
OC4uZTFkMjczYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwCkBAIC0xMDEsNiArMTAxLDggQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxO
YW1lczsKQEAgLTIxMCw3ICsyMTIsNyBAQCBTdHJpbmcgSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJy
b3JTdHJpbmcoY29uc3QgRXhjZXB0aW9uQ29kZSYgZWMpCiB9CiAKIEluc3BlY3RvckRPTUFnZW50
OjpJbnNwZWN0b3JET01BZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXksIEluc3Bl
Y3RvckNsaWVudCogY2xpZW50KQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJh
bCgiRE9NIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2Uo
QVNDSUlMaXRlcmFsKCJET00iKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fcGFnZUFn
ZW50KHBhZ2VBZ2VudCkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2Ny
aXB0TWFuYWdlcikKICAgICAsIG1fb3ZlcmxheShvdmVybGF5KQpAQCAtMjMwLDcgKzIzMiw3IEBA
IEluc3BlY3RvckRPTUFnZW50Ojp+SW5zcGVjdG9yRE9NQWdlbnQoKQogICAgIEFTU0VSVCghbV9z
ZWFyY2hpbmdGb3JOb2RlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFu
bmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lk
IEluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
OjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JET01Gcm9udGVuZERpc3BhdGNoZXI+
KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckRP
TUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpAQCAt
NDIwLDcgKzQyMiw3IEBAIEVsZW1lbnQqIEluc3BlY3RvckRPTUFnZW50Ojphc3NlcnRFZGl0YWJs
ZUVsZW1lbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQKICAgICByZXR1cm4gZWxlbWVu
dDsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0RG9jdW1lbnQoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4mIHJvb3QpCit2b2lk
IEluc3BlY3RvckRPTUFnZW50OjpnZXREb2N1bWVudChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+JiByb290KQogewogICAg
IG1fZG9jdW1lbnRSZXF1ZXN0ZWQgPSB0cnVlOwogCkBAIC00NjAsNyArNDYyLDcgQEAgdm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6cHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKGludCBub2RlSWQsIGlu
dCBkZXB0aCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxUeXBlQnVpbGRl
cjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4+IGNoaWxkcmVuID0gYnVpbGRBcnJheUZv
ckNvbnRhaW5lckNoaWxkcmVuKG5vZGUsIGRlcHRoLCBub2RlTWFwKTsKKyAgICBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpO
b2RlPj4gY2hpbGRyZW4gPSBidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4obm9kZSwgZGVw
dGgsIG5vZGVNYXApOwogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5zZXRDaGlsZE5vZGVzKG5v
ZGVJZCwgY2hpbGRyZW4ucmVsZWFzZSgpKTsKIH0KIApAQCAtNTM4LDcgKzU0MCw3IEBAIHZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OnF1ZXJ5U2VsZWN0b3IoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBpbnQgbm9kZUlkLCBjb25zCiAgICAgICAgICplbGVtZW50SWQgPSBwdXNoTm9kZVBhdGhUb0Zy
b250ZW5kKGVsZW1lbnQuZ2V0KCkpOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpxdWVy
eVNlbGVjdG9yQWxsKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3Qg
U3RyaW5nJiBzZWxlY3RvcnMsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4mIHJlc3Vs
dCkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnF1ZXJ5U2VsZWN0b3JBbGwoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PGludD4+JiByZXN1bHQpCiB7CiAgICAgTm9k
ZSogbm9kZSA9IGFzc2VydE5vZGUoZXJyb3JTdHJpbmcsIG5vZGVJZCk7CiAgICAgaWYgKCFub2Rl
KQpAQCAtNTU1LDcgKzU1Nyw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnF1ZXJ5U2VsZWN0
b3JBbGwoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICByZXN1bHQgPSBUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pjo6Y3Jl
YXRlKCk7CisgICAgcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pjo6
Y3JlYXRlKCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbm9kZXMtPmxlbmd0aCgp
OyArK2kpCiAgICAgICAgIHJlc3VsdC0+YWRkSXRlbShwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKG5v
ZGVzLT5pdGVtKGkpKSk7CkBAIC01ODYsNyArNTg4LDcgQEAgaW50IEluc3BlY3RvckRPTUFnZW50
OjpwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKE5vZGUqIG5vZGVUb1B1c2gpCiAgICAgICAgICAgICBP
d25QdHI8Tm9kZVRvSWRNYXA+IG5ld01hcCA9IGFkb3B0UHRyKG5ldyBOb2RlVG9JZE1hcCk7CiAg
ICAgICAgICAgICBkYW5nbGluZ01hcCA9IG5ld01hcC5nZXQoKTsKICAgICAgICAgICAgIG1fZGFu
Z2xpbmdOb2RlVG9JZE1hcHMuYXBwZW5kKG5ld01hcC5yZWxlYXNlKCkpOwotICAgICAgICAgICAg
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPj4gY2hpbGRy
ZW4gPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT46OmNyZWF0ZSgp
OworICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4+IGNoaWxkcmVuID0gSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPjo6Y3JlYXRl
KCk7CiAgICAgICAgICAgICBjaGlsZHJlbi0+YWRkSXRlbShidWlsZE9iamVjdEZvck5vZGUobm9k
ZSwgMCwgZGFuZ2xpbmdNYXApKTsKICAgICAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5z
ZXRDaGlsZE5vZGVzKDAsIGNoaWxkcmVuKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtODEzLDkg
KzgxNSw5IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldE5vZGVWYWx1ZShFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0CiAgICAgbV9kb21FZGl0b3ItPnJlcGxh
Y2VXaG9sZVRleHQodG9UZXh0KG5vZGUpLCB2YWx1ZSwgZXJyb3JTdHJpbmcpOwogfQogCi12b2lk
IEluc3BlY3RvckRPTUFnZW50OjpnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI+PiYg
bGlzdGVuZXJzQXJyYXkpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRFdmVudExpc3RlbmVy
c0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJp
bmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpFdmVudExpc3RlbmVyPj4mIGxpc3RlbmVyc0FycmF5
KQogewotICAgIGxpc3RlbmVyc0FycmF5ID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVy
OjpET006OkV2ZW50TGlzdGVuZXI+OjpjcmVhdGUoKTsKKyAgICBsaXN0ZW5lcnNBcnJheSA9IElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6
RXZlbnRMaXN0ZW5lcj46OmNyZWF0ZSgpOwogICAgIE5vZGUqIG5vZGUgPSBhc3NlcnROb2RlKGVy
cm9yU3RyaW5nLCBub2RlSWQpOwogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuOwpAQCAt
OTIxLDcgKzkyMyw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnBlcmZvcm1TZWFyY2goRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHdoCiAgICAgKnJlc3VsdENvdW50
ID0gcmVzdWx0c1ZlY3Rvci5zaXplKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6Omdl
dFNlYXJjaFJlc3VsdHMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHNl
YXJjaElkLCBpbnQgZnJvbUluZGV4LCBpbnQgdG9JbmRleCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpB
cnJheTxpbnQ+PiYgbm9kZUlkcykKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldFNlYXJjaFJl
c3VsdHMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHNlYXJjaElkLCBp
bnQgZnJvbUluZGV4LCBpbnQgdG9JbmRleCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PGludD4+JiBub2RlSWRzKQogewogICAgIFNlYXJjaFJlc3VsdHM6Oml0ZXJhdG9yIGl0
ID0gbV9zZWFyY2hSZXN1bHRzLmZpbmQoc2VhcmNoSWQpOwogICAgIGlmIChpdCA9PSBtX3NlYXJj
aFJlc3VsdHMuZW5kKCkpIHsKQEAgLTkzNSw3ICs5MzcsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpnZXRTZWFyY2hSZXN1bHRzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3Ry
aW5nJgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbm9kZUlkcyA9IFR5cGVCdWlsZGVy
OjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKKyAgICBub2RlSWRzID0gSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CiAgICAgZm9yIChpbnQgaSA9IGZyb21JbmRleDsg
aSA8IHRvSW5kZXg7ICsraSkKICAgICAgICAgbm9kZUlkcy0+YWRkSXRlbShwdXNoTm9kZVBhdGhU
b0Zyb250ZW5kKChpdC0+dmFsdWUpW2ldLmdldCgpKSk7CiB9CkBAIC0xMjEyLDcgKzEyMTQsNyBA
QCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRGaWxlSW5wdXRGaWxlcyhFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGludCBub2RlSWQsCiAgICAgZWxlbWVudC0+c2V0RmlsZXMoZmlsZUxpc3Qp
OwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZXNvbHZlTm9kZShFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAs
IFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0KQordm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6cmVzb2x2ZU5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0KQogewog
ICAgIFN0cmluZyBvYmplY3RHcm91cE5hbWUgPSBvYmplY3RHcm91cCA/ICpvYmplY3RHcm91cCA6
ICIiOwogICAgIE5vZGUqIG5vZGUgPSBub2RlRm9ySWQobm9kZUlkKTsKQEAgLTEyMjAsNyArMTIy
Miw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlc29sdmVOb2RlKEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QKICAgICAgICAgKmVycm9yU3RyaW5nID0gIk5v
IG5vZGUgd2l0aCBnaXZlbiBpZCBmb3VuZCI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
UmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IG9iamVjdCA9IHJlc29s
dmVOb2RlKG5vZGUsIG9iamVjdEdyb3VwTmFtZSk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gb2JqZWN0ID0gcmVzb2x2ZU5vZGUobm9k
ZSwgb2JqZWN0R3JvdXBOYW1lKTsKICAgICBpZiAoIW9iamVjdCkgewogICAgICAgICAqZXJyb3JT
dHJpbmcgPSAiTm9kZSB3aXRoIGdpdmVuIGlkIGRvZXMgbm90IGJlbG9uZyB0byB0aGUgZG9jdW1l
bnQiOwogICAgICAgICByZXR1cm47CkBAIC0xMjI4LDcgKzEyMzAsNyBAQCB2b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpyZXNvbHZlTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2Rl
SWQsIGNvbnN0CiAgICAgcmVzdWx0ID0gb2JqZWN0OwogfQogCi12b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpnZXRBdHRyaWJ1dGVzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwg
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiYgcmVzdWx0KQordm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6Z2V0QXR0cmlidXRlcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBu
b2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiYgcmVz
dWx0KQogewogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBhc3NlcnRFbGVtZW50KGVycm9yU3RyaW5n
LCBub2RlSWQpOwogICAgIGlmICghZWxlbWVudCkKQEAgLTEyNjAsNyArMTI2Miw3IEBAIHN0YXRp
YyBTdHJpbmcgZG9jdW1lbnRCYXNlVVJMU3RyaW5nKERvY3VtZW50KiBkb2N1bWVudCkKICAgICBy
ZXR1cm4gZG9jdW1lbnQtPmNvbXBsZXRlVVJMKCIiKS5zdHJpbmcoKTsKIH0KIAotUGFzc1JlZlB0
cjxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RG
b3JOb2RlKE5vZGUqIG5vZGUsIGludCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKQorUGFz
c1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+IEluc3BlY3RvckRPTUFn
ZW50OjpidWlsZE9iamVjdEZvck5vZGUoTm9kZSogbm9kZSwgaW50IGRlcHRoLCBOb2RlVG9JZE1h
cCogbm9kZXNNYXApCiB7CiAgICAgaW50IGlkID0gYmluZChub2RlLCBub2Rlc01hcCk7CiAgICAg
U3RyaW5nIG5vZGVOYW1lOwpAQCAtMTI4OSw3ICsxMjkxLDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6RE9NOjpOb2RlPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JOb2RlKE5v
ZGUqIG4KICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpE
T006Ok5vZGU+IHZhbHVlID0gVHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZTo6Y3JlYXRlKCkKKyAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiB2YWx1ZSA9IEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldE5vZGVJZChp
ZCkKICAgICAgICAgLnNldE5vZGVUeXBlKHN0YXRpY19jYXN0PGludD4obm9kZS0+bm9kZVR5cGUo
KSkpCiAgICAgICAgIC5zZXROb2RlTmFtZShub2RlTmFtZSkKQEAgLTEyOTksNyArMTMwMSw3IEBA
IFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1
aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiBuCiAgICAgaWYgKG5vZGUtPmlzQ29udGFpbmVyTm9kZSgp
KSB7CiAgICAgICAgIGludCBub2RlQ291bnQgPSBpbm5lckNoaWxkTm9kZUNvdW50KG5vZGUpOwog
ICAgICAgICB2YWx1ZS0+c2V0Q2hpbGROb2RlQ291bnQobm9kZUNvdW50KTsKLSAgICAgICAgUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPj4gY2hpbGRyZW4g
PSBidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4obm9kZSwgZGVwdGgsIG5vZGVzTWFwKTsK
KyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4+IGNoaWxkcmVuID0gYnVpbGRBcnJheUZvckNvbnRhaW5l
ckNoaWxkcmVuKG5vZGUsIGRlcHRoLCBub2Rlc01hcCk7CiAgICAgICAgIGlmIChjaGlsZHJlbi0+
bGVuZ3RoKCkgPiAwKQogICAgICAgICAgICAgdmFsdWUtPnNldENoaWxkcmVuKGNoaWxkcmVuLnJl
bGVhc2UoKSk7CiAgICAgfQpAQCAtMTMxOCw3ICsxMzIwLDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6RE9NOjpOb2RlPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JOb2RlKE5v
ZGUqIG4KICAgICAgICAgfQogCiAgICAgICAgIGlmIChTaGFkb3dSb290KiByb290ID0gZWxlbWVu
dC0+c2hhZG93Um9vdCgpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5
PFR5cGVCdWlsZGVyOjpET006Ok5vZGU+PiBzaGFkb3dSb290cyA9IFR5cGVCdWlsZGVyOjpBcnJh
eTxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9N
OjpOb2RlPj4gc2hhZG93Um9vdHMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+OjpjcmVhdGUoKTsKICAgICAgICAgICAgIHNo
YWRvd1Jvb3RzLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTm9kZShyb290LCAwLCBub2Rlc01hcCkp
OwogICAgICAgICAgICAgdmFsdWUtPnNldFNoYWRvd1Jvb3RzKHNoYWRvd1Jvb3RzKTsKICAgICAg
ICAgfQpAQCAtMTM0Niw5ICsxMzQ4LDkgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpO
b2RlPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JOb2RlKE5vZGUqIG4KICAgICBy
ZXR1cm4gdmFsdWUucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJh
eTxTdHJpbmc+PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckVsZW1lbnRBdHRyaWJ1
dGVzKEVsZW1lbnQqIGVsZW1lbnQpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PFN0cmluZz4+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yRWxlbWVudEF0
dHJpYnV0ZXMoRWxlbWVudCogZWxlbWVudCkKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PFN0cmluZz4+IGF0dHJpYnV0ZXNWYWx1ZSA9IFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+
OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3Ry
aW5nPj4gYXR0cmlidXRlc1ZhbHVlID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3Ry
aW5nPjo6Y3JlYXRlKCk7CiAgICAgLy8gR28gdGhyb3VnaCBhbGwgYXR0cmlidXRlcyBhbmQgc2Vy
aWFsaXplIHRoZW0uCiAgICAgaWYgKCFlbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkpCiAgICAgICAg
IHJldHVybiBhdHRyaWJ1dGVzVmFsdWUucmVsZWFzZSgpOwpAQCAtMTM2Miw5ICsxMzY0LDkgQEAg
UGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gSW5zcGVjdG9yRE9NQWdlbnQ6
OmJ1aWxkQXJyYXlGb3JFbGVtZW50QXQKICAgICByZXR1cm4gYXR0cmlidXRlc1ZhbHVlLnJlbGVh
c2UoKTsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRP
TTo6Tm9kZT4+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRy
ZW4oTm9kZSogY29udGFpbmVyLCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFwKiBub2Rlc01hcCkKK1Bh
c3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6RE9NOjpOb2RlPj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JDb250YWlu
ZXJDaGlsZHJlbihOb2RlKiBjb250YWluZXIsIGludCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVz
TWFwKQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRPTTo6
Tm9kZT4+IGNoaWxkcmVuID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpET006Ok5v
ZGU+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPj4gY2hpbGRyZW4gPSBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+Ojpj
cmVhdGUoKTsKICAgICBpZiAoZGVwdGggPT0gMCkgewogICAgICAgICAvLyBTcGVjaWFsLWNhc2Ug
dGhlIG9ubHkgdGV4dCBjaGlsZCAtIHByZXRlbmQgdGhhdCBjb250YWluZXIncyBjaGlsZHJlbiBo
YXZlIGJlZW4gcmVxdWVzdGVkLgogICAgICAgICBOb2RlKiBmaXJzdENoaWxkID0gY29udGFpbmVy
LT5maXJzdENoaWxkKCk7CkBAIC0xMzg2LDcgKzEzODgsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1
aWxkQQogICAgIHJldHVybiBjaGlsZHJlbi5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2Jq
ZWN0Rm9yRXZlbnRMaXN0ZW5lcihjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYgcmVnaXN0
ZXJlZEV2ZW50TGlzdGVuZXIsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBOb2RlKiBu
b2RlLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwSWQpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxk
T2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYgcmVn
aXN0ZXJlZEV2ZW50TGlzdGVuZXIsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBOb2Rl
KiBub2RlLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwSWQpCiB7CiAgICAgUmVmUHRyPEV2ZW50
TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIgPSByZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5saXN0ZW5l
cjsKIApAQCAtMTQxNCw3ICsxNDE2LDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpF
dmVudExpc3RlbmVyPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JFdmUKICAgICAg
ICAgfQogICAgIH0KIAotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpFdmVudExpc3RlbmVy
PiB2YWx1ZSA9IFR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI6OmNyZWF0ZSgpCisgICAg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gdmFsdWUg
PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI6OmNyZWF0ZSgpCiAg
ICAgICAgIC5zZXRUeXBlKGV2ZW50VHlwZSkKICAgICAgICAgLnNldFVzZUNhcHR1cmUocmVnaXN0
ZXJlZEV2ZW50TGlzdGVuZXIudXNlQ2FwdHVyZSkKICAgICAgICAgLnNldElzQXR0cmlidXRlKGV2
ZW50TGlzdGVuZXItPmlzQXR0cmlidXRlKCkpCkBAIC0xNDIzLDEwICsxNDI1LDEwIEBAIFBhc3NS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gSW5zcGVjdG9yRE9NQWdlbnQ6
OmJ1aWxkT2JqZWN0Rm9yRXZlCiAgICAgaWYgKG9iamVjdEdyb3VwSWQgJiYgaGFuZGxlciAmJiBz
dGF0ZSkgewogICAgICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvcihzdGF0ZSk7CiAgICAgICAgIGlmICgh
aW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQotICAgICAgICAgICAgdmFsdWUtPnNldEhhbmRs
ZXIoaW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChTY3JpcHRWYWx1ZShzdGF0ZS0+dm0oKSwgaGFu
ZGxlciksICpvYmplY3RHcm91cElkKSk7CisgICAgICAgICAgICB2YWx1ZS0+c2V0SGFuZGxlcihp
bmplY3RlZFNjcmlwdC53cmFwT2JqZWN0KERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKHN0YXRlLT52
bSgpLCBoYW5kbGVyKSwgKm9iamVjdEdyb3VwSWQpKTsKICAgICB9CiAgICAgaWYgKCFzY3JpcHRJ
RC5pc051bGwoKSkgewotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2Nh
dGlvbj4gbG9jYXRpb24gPSBUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uOjpjcmVhdGUo
KQorICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0
aW9uPiBsb2NhdGlvbiA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlv
bjo6Y3JlYXRlKCkKICAgICAgICAgICAgIC5zZXRTY3JpcHRJZChzY3JpcHRJRCkKICAgICAgICAg
ICAgIC5zZXRMaW5lTnVtYmVyKGxpbmVOdW1iZXIpOwogICAgICAgICB2YWx1ZS0+c2V0TG9jYXRp
b24obG9jYXRpb24ucmVsZWFzZSgpKTsKQEAgLTE1MDksNyArMTUxMSw3IEBAIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OmRpZENvbW1pdExvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIG1fZnJv
bnRlbmREaXNwYXRjaGVyLT5jaGlsZE5vZGVSZW1vdmVkKHBhcmVudElkLCBmcmFtZU93bmVySWQp
OwogICAgIHVuYmluZChmcmFtZU93bmVyLCAmbV9kb2N1bWVudE5vZGVUb0lkTWFwKTsKIAotICAg
IFJlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiB2YWx1ZSA9IGJ1aWxkT2JqZWN0Rm9yTm9k
ZShmcmFtZU93bmVyLCAwLCAmbV9kb2N1bWVudE5vZGVUb0lkTWFwKTsKKyAgICBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiB2YWx1ZSA9IGJ1aWxkT2JqZWN0Rm9yTm9k
ZShmcmFtZU93bmVyLCAwLCAmbV9kb2N1bWVudE5vZGVUb0lkTWFwKTsKICAgICBOb2RlKiBwcmV2
aW91c1NpYmxpbmcgPSBpbm5lclByZXZpb3VzU2libGluZyhmcmFtZU93bmVyKTsKICAgICBpbnQg
cHJldklkID0gcHJldmlvdXNTaWJsaW5nID8gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldChwcmV2
aW91c1NpYmxpbmcpIDogMDsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+Y2hpbGROb2RlSW5z
ZXJ0ZWQocGFyZW50SWQsIHByZXZJZCwgdmFsdWUucmVsZWFzZSgpKTsKQEAgLTE1MzksNyArMTU0
MSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZEluc2VydERPTU5vZGUoTm9kZSogbm9k
ZSkKICAgICAgICAgLy8gQ2hpbGRyZW4gaGF2ZSBiZWVuIHJlcXVlc3RlZCAtPiByZXR1cm4gdmFs
dWUgb2YgYSBuZXcgY2hpbGQuCiAgICAgICAgIE5vZGUqIHByZXZTaWJsaW5nID0gaW5uZXJQcmV2
aW91c1NpYmxpbmcobm9kZSk7CiAgICAgICAgIGludCBwcmV2SWQgPSBwcmV2U2libGluZyA/IG1f
ZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQocHJldlNpYmxpbmcpIDogMDsKLSAgICAgICAgUmVmUHRy
PFR5cGVCdWlsZGVyOjpET006Ok5vZGU+IHZhbHVlID0gYnVpbGRPYmplY3RGb3JOb2RlKG5vZGUs
IDAsICZtX2RvY3VtZW50Tm9kZVRvSWRNYXApOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6RE9NOjpOb2RlPiB2YWx1ZSA9IGJ1aWxkT2JqZWN0Rm9yTm9kZShub2RlLCAw
LCAmbV9kb2N1bWVudE5vZGVUb0lkTWFwKTsKICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIt
PmNoaWxkTm9kZUluc2VydGVkKHBhcmVudElkLCBwcmV2SWQsIHZhbHVlLnJlbGVhc2UoKSk7CiAg
ICAgfQogfQpAQCAtMTYwNCw3ICsxNjA2LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlk
UmVtb3ZlRE9NQXR0cihFbGVtZW50KiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIG4KIAog
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c3R5bGVBdHRyaWJ1dGVJbnZhbGlkYXRlZChjb25zdCBW
ZWN0b3I8RWxlbWVudCo+JiBlbGVtZW50cykKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PGludD4+IG5vZGVJZHMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7Cisg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PGludD4+IG5vZGVJZHMgPSBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwLCBzaXplID0gZWxlbWVudHMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKSB7CiAg
ICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBlbGVtZW50cy5hdChpKTsKICAgICAgICAgaW50IGlk
ID0gYm91bmROb2RlSWQoZWxlbWVudCk7CkBAIC0xNzI5LDcgKzE3MzEsNyBAQCB2b2lkIEluc3Bl
Y3RvckRPTUFnZW50OjpwdXNoTm9kZUJ5QmFja2VuZElkVG9Gcm9udGVuZChFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsCiAgICAgfQogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1l
OjpSZW1vdGVPYmplY3Q+IEluc3BlY3RvckRPTUFnZW50OjpyZXNvbHZlTm9kZShOb2RlKiBub2Rl
LCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluc3BlY3RvckRPTUFnZW50OjpyZXNvbHZl
Tm9kZShOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKQogewogICAgIEZyYW1l
KiBmcmFtZSA9IG5vZGUtPmRvY3VtZW50KCkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCBhNWQ2MGJj
Li5mMDFmOWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuaApAQCAtMzMsMTMgKzMzLDEzIEBACiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNs
dWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5o
IgotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yT3ZlcmxheS5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgor
I2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVy
LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKLQorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JW
YWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC00OSw3ICs0OSwxMiBAQAogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIAorbmFt
ZXNwYWNlIERlcHJlY2F0ZWQgeworY2xhc3MgU2NyaXB0VmFsdWU7Cit9CisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKKwogY2xhc3MgQ29udGFpbmVyTm9kZTsKIGNsYXNzIENoYXJhY3RlckRhdGE7CiBj
bGFzcyBET01FZGl0b3I7CkBAIC02Niw3ICs3MSw2IEBAIGNsYXNzIEluc3RydW1lbnRpbmdBZ2Vu
dHM7CiBjbGFzcyBOYW1lTm9kZU1hcDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBSZXZhbGlkYXRlU3R5
bGVBdHRyaWJ1dGVUYXNrOwotY2xhc3MgU2NyaXB0VmFsdWU7CiBjbGFzcyBTaGFkb3dSb290Owog
CiBzdHJ1Y3QgSGlnaGxpZ2h0Q29uZmlnOwpAQCAtODksNyArOTMsNyBAQCBzdHJ1Y3QgRXZlbnRM
aXN0ZW5lckluZm8gewogICAgIGNvbnN0IEV2ZW50TGlzdGVuZXJWZWN0b3IgZXZlbnRMaXN0ZW5l
clZlY3RvcjsKIH07CiAKLWNsYXNzIEluc3BlY3RvckRPTUFnZW50IDogcHVibGljIEluc3BlY3Rv
ckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3RvckRPTUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7
CitjbGFzcyBJbnNwZWN0b3JET01BZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1
YmxpYyBJbnNwZWN0b3JET01CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEluc3BlY3RvckRPTUFnZW50KTsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgRE9N
TGlzdGVuZXIgewpAQCAtMTEwLDcgKzExNCw3IEBAIHB1YmxpYzoKIAogICAgIH5JbnNwZWN0b3JE
T01BZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciop
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0
cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICBWZWN0b3I8RG9jdW1lbnQq
PiBkb2N1bWVudHMoKTsKQEAgLTExOCw4ICsxMjIsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBNZXRo
b2RzIGNhbGxlZCBmcm9tIHRoZSBmcm9udGVuZCBmb3IgRE9NIG5vZGVzIGluc3BlY3Rpb24uCiAg
ICAgdmlydHVhbCB2b2lkIHF1ZXJ5U2VsZWN0b3IoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBj
b25zdCBTdHJpbmcmIHNlbGVjdG9ycywgaW50KiBlbGVtZW50SWQpOwotICAgIHZpcnR1YWwgdm9p
ZCBxdWVyeVNlbGVjdG9yQWxsKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5n
JiBzZWxlY3RvcnMsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4mIHJlc3VsdCk7Ci0g
ICAgdmlydHVhbCB2b2lkIGdldERvY3VtZW50KEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWls
ZGVyOjpET006Ok5vZGU+JiByb290KTsKKyAgICB2aXJ0dWFsIHZvaWQgcXVlcnlTZWxlY3RvckFs
bChFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4mIHJlc3VsdCk7CisgICAgdmly
dHVhbCB2b2lkIGdldERvY3VtZW50KEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkRPTTo6Tm9kZT4mIHJvb3QpOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hp
bGROb2RlcyhFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IGludCogZGVwdGgpOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRBdHRyaWJ1dGVWYWx1ZShFcnJvclN0cmluZyosIGludCBlbGVtZW50
SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAgICAgdmlydHVh
bCB2b2lkIHNldEF0dHJpYnV0ZXNBc1RleHQoRXJyb3JTdHJpbmcqLCBpbnQgZWxlbWVudElkLCBj
b25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyogbmFtZSk7CkBAIC0xMjksMjkgKzEzMywy
OSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldE91dGVySFRNTChFcnJvclN0cmluZyos
IGludCBub2RlSWQsIFdURjo6U3RyaW5nKiBvdXRlckhUTUwpOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRPdXRlckhUTUwoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIG91dGVy
SFRNTCk7CiAgICAgdmlydHVhbCB2b2lkIHNldE5vZGVWYWx1ZShFcnJvclN0cmluZyosIGludCBu
b2RlSWQsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRFdmVudExp
c3RlbmVyc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBXVEY6OlN0cmlu
Zyogb2JqZWN0R3JvdXAsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRP
TTo6RXZlbnRMaXN0ZW5lcj4+JiBsaXN0ZW5lcnNBcnJheSk7Ci0gICAgdmlydHVhbCB2b2lkIHBl
cmZvcm1TZWFyY2goRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHdoaXRlc3BhY2VUcmltbWVk
UXVlcnksIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIG5vZGVJZHMsIFN0cmluZyogc2Vh
cmNoSWQsIGludCogcmVzdWx0Q291bnQpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTZWFyY2hSZXN1
bHRzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCwgaW50IGZyb21JbmRleCwg
aW50IHRvSW5kZXgsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4mKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJ
ZCwgY29uc3QgV1RGOjpTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpFdmVudExpc3RlbmVy
Pj4mIGxpc3RlbmVyc0FycmF5KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVNlYXJjaChFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+KiBub2RlSWRzLCBTdHJpbmcqIHNlYXJjaElk
LCBpbnQqIHJlc3VsdENvdW50KTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0U2VhcmNoUmVzdWx0cyhF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2VhcmNoSWQsIGludCBmcm9tSW5kZXgsIGludCB0
b0luZGV4LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4mKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzY2FyZFNlYXJjaFJlc3VsdHMoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIHNlYXJjaElkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZU5vZGUoRXJyb3JTdHJp
bmcqLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8VHlwZUJ1
aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2b2lk
IGdldEF0dHJpYnV0ZXMoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PFN0cmluZz4+JiByZXN1bHQpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRJbnNwZWN0
TW9kZUVuYWJsZWQoRXJyb3JTdHJpbmcqLCBib29sIGVuYWJsZWQsIGNvbnN0IFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+KiBoaWdobGlnaHRDb25maWcpOworICAgIHZpcnR1YWwgdm9pZCByZXNvbHZl
Tm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAs
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiBy
ZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCBnZXRBdHRyaWJ1dGVzKEVycm9yU3RyaW5nKiwgaW50
IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+JiBy
ZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCBzZXRJbnNwZWN0TW9kZUVuYWJsZWQoRXJyb3JTdHJp
bmcqLCBib29sIGVuYWJsZWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4qIGhpZ2hsaWdodENvbmZpZyk7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3ROb2RlKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgaW50KiBub2RlSWQpOwogICAgIHZpcnR1
YWwgdm9pZCBwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIHBhdGgsIGludCogbm9kZUlkKTsKICAgICB2aXJ0dWFsIHZvaWQgcHVzaE5vZGVCeUJhY2tl
bmRJZFRvRnJvbnRlbmQoRXJyb3JTdHJpbmcqLCBCYWNrZW5kTm9kZUlkLCBpbnQqIG5vZGVJZCk7
CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VCYWNrZW5kTm9kZUlkcyhFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyYgbm9kZUdyb3VwKTsKICAgICB2aXJ0dWFsIHZvaWQgaGlkZUhpZ2hsaWdodChF
cnJvclN0cmluZyopOwotICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHRSZWN0KEVycm9yU3RyaW5n
KiwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNvbnN0IFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dGxp
bmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKTsKLSAgICB2aXJ0dWFsIHZv
aWQgaGlnaGxpZ2h0UXVhZChFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJh
eT4mIHF1YWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNv
b3JkaW5hdGVzKTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0Tm9kZShFcnJvclN0cmluZyos
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBoaWdobGlnaHRDb25maWcsIGNvbnN0IGlu
dCogbm9kZUlkLCBjb25zdCBTdHJpbmcqIG9iamVjdElkKTsKLSAgICB2aXJ0dWFsIHZvaWQgaGln
aGxpZ2h0RnJhbWUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4qIG91dGxpbmVDb2xvcik7CisgICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodFJlY3QoRXJyb3JT
dHJpbmcqLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgY29uc3QgUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNv
b3JkaW5hdGVzKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0UXVhZChFcnJvclN0cmluZyos
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYgcXVhZCwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFn
ZUNvb3JkaW5hdGVzKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0Tm9kZShFcnJvclN0cmlu
ZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIGhpZ2hsaWdodENv
bmZpZywgY29uc3QgaW50KiBub2RlSWQsIGNvbnN0IFN0cmluZyogb2JqZWN0SWQpOworICAgIHZp
cnR1YWwgdm9pZCBoaWdobGlnaHRGcmFtZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJh
bWVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvcik7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgbW92ZVRvKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgaW50IHRh
cmdldE5vZGVJZCwgY29uc3QgaW50KiBhbmNob3JOb2RlSWQsIGludCogbmV3Tm9kZUlkKTsKICAg
ICB2aXJ0dWFsIHZvaWQgdW5kbyhFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCByZWRv
KEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIG1hcmtVbmRvYWJsZVN0YXRlKEVycm9y
U3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIGZvY3VzKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJ
ZCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldEZpbGVJbnB1dEZpbGVzKEVycm9yU3RyaW5nKiwgaW50
IG5vZGVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgZmlsZXMpOworICAgIHZpcnR1
YWwgdm9pZCBzZXRGaWxlSW5wdXRGaWxlcyhFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYgZmlsZXMpOwogCiAgICAgdm9pZCBn
ZXRFdmVudExpc3RlbmVycyhOb2RlKiwgVmVjdG9yPEV2ZW50TGlzdGVuZXJJbmZvPiYgbGlzdGVu
ZXJzQXJyYXksIGJvb2wgaW5jbHVkZUFuY2VzdG9ycyk7CiAKQEAgLTE4Miw3ICsxODYsNyBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgU3RyaW5nIGRvY3VtZW50VVJMU3RyaW5nKERvY3VtZW50Kik7
CiAKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHJl
c29sdmVOb2RlKE5vZGUqLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKTsKKyAgICBQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gcmVzb2x2
ZU5vZGUoTm9kZSosIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApOwogICAgIGJvb2wgaGFuZGxl
TW91c2VQcmVzcygpOwogICAgIGJvb2wgaGFuZGxlVG91Y2hFdmVudChOb2RlKik7CiAgICAgdm9p
ZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiwgdW5zaWduZWQg
bW9kaWZpZXJGbGFncyk7CkBAIC0yMTAsOCArMjE0LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBJbnNwZWN0b3JET01BZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFn
ZW50KiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSW5zcGVjdG9yT3ZlcmxheSosIEluc3BlY3Rv
ckNsaWVudCopOwogCi0gICAgdm9pZCBzZXRTZWFyY2hpbmdGb3JOb2RlKEVycm9yU3RyaW5nKiwg
Ym9vbCBlbmFibGVkLCBJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdodENvbmZpZyk7Ci0gICAgUGFz
c093blB0cjxIaWdobGlnaHRDb25maWc+IGhpZ2hsaWdodENvbmZpZ0Zyb21JbnNwZWN0b3JPYmpl
Y3QoRXJyb3JTdHJpbmcqLCBJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdodEluc3BlY3Rvck9iamVj
dCk7CisgICAgdm9pZCBzZXRTZWFyY2hpbmdGb3JOb2RlKEVycm9yU3RyaW5nKiwgYm9vbCBlbmFi
bGVkLCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICBQ
YXNzT3duUHRyPEhpZ2hsaWdodENvbmZpZz4gaGlnaGxpZ2h0Q29uZmlnRnJvbUluc3BlY3Rvck9i
amVjdChFcnJvclN0cmluZyosIEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBoaWdobGlnaHRJ
bnNwZWN0b3JPYmplY3QpOwogCiAgICAgLy8gTm9kZS1yZWxhdGVkIG1ldGhvZHMuCiAgICAgdHlw
ZWRlZiBIYXNoTWFwPFJlZlB0cjxOb2RlPiwgaW50PiBOb2RlVG9JZE1hcDsKQEAgLTIyNiwxOCAr
MjMwLDE4IEBAIHByaXZhdGU6CiAKICAgICBib29sIGhhc0JyZWFrcG9pbnQoTm9kZSosIGludCB0
eXBlKTsKICAgICB2b2lkIHVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhOb2RlKiByb290LCB1aW50
MzJfdCByb290TWFzaywgYm9vbCB2YWx1ZSk7Ci0gICAgdm9pZCBkZXNjcmlwdGlvbkZvckRPTUV2
ZW50KE5vZGUqIHRhcmdldCwgaW50IGJyZWFrcG9pbnRUeXBlLCBib29sIGluc2VydGlvbiwgUGFz
c1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRlc2NyaXB0aW9uKTsKKyAgICB2b2lkIGRlc2NyaXB0
aW9uRm9yRE9NRXZlbnQoTm9kZSogdGFyZ2V0LCBpbnQgYnJlYWtwb2ludFR5cGUsIGJvb2wgaW5z
ZXJ0aW9uLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBkZXNjcmlwdGlv
bik7CiAKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpET006Ok5vZGU+IGJ1aWxkT2JqZWN0
Rm9yTm9kZShOb2RlKiwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCopOwotICAgIFBhc3NSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IGJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmlidXRl
cyhFbGVtZW50Kik7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxk
ZXI6OkRPTTo6Tm9kZT4+IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihOb2RlKiBjb250
YWluZXIsIGludCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKTsKLSAgICBQYXNzUmVmUHRy
PFR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI+IGJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0
ZW5lcihjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYsIGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBOb2RlKiwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cElkKTsKKyAgICBQYXNz
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4gYnVpbGRPYmplY3RGb3JO
b2RlKE5vZGUqLCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFwKik7CisgICAgUGFzc1JlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBidWlsZEFycmF5Rm9yRWxlbWVudEF0
dHJpYnV0ZXMoRWxlbWVudCopOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPj4gYnVpbGRBcnJheUZv
ckNvbnRhaW5lckNoaWxkcmVuKE5vZGUqIGNvbnRhaW5lciwgaW50IGRlcHRoLCBOb2RlVG9JZE1h
cCogbm9kZXNNYXApOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9N
OjpFdmVudExpc3RlbmVyPiBidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIoY29uc3QgUmVnaXN0
ZXJlZEV2ZW50TGlzdGVuZXImLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgTm9kZSos
IGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXBJZCk7CiAKICAgICBOb2RlKiBub2RlRm9yUGF0aChj
b25zdCBTdHJpbmcmIHBhdGgpOwogCiAgICAgdm9pZCBkaXNjYXJkQmluZGluZ3MoKTsKIAotICAg
IHZvaWQgaW5uZXJIaWdobGlnaHRRdWFkKFBhc3NPd25QdHI8RmxvYXRRdWFkPiwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4qIGNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
Piogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0ZXMpOworICAgIHZv
aWQgaW5uZXJIaWdobGlnaHRRdWFkKFBhc3NPd25QdHI8RmxvYXRRdWFkPiwgY29uc3QgUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNv
b3JkaW5hdGVzKTsKIAogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CiAgICAg
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNw
cAppbmRleCA4OWZmNmU5Li4xNDMxNzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCkBAIC00MCw4ICs0MCw4IEBA
CiAjaW5jbHVkZSAiSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCi0jaW5j
bHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5o
IgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIHsKQEAgLTYxLDYgKzYxLDggQEAgY29uc3Qg
aW50IGRvbUJyZWFrcG9pbnREZXJpdmVkVHlwZVNoaWZ0ID0gMTY7CiAKIH0KIAordXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzT3duUHRyPElu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ+IEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmNyZWF0
ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JET01B
Z2VudCogZG9tQWdlbnQsIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQsIElu
c3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCkKQEAgLTY5LDcgKzcxLDcgQEAgUGFzc093blB0
cjxJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50PiBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojpj
cmVhdGUoSW5zdHJ1bWUKIH0KIAogSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQsIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRl
YnVnZ2VyQWdlbnQsIEluc3BlY3RvckFnZW50KikKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudChB
U0NJSUxpdGVyYWwoIkRPTURlYnVnZ2VyIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJ
bnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJET01EZWJ1Z2dlciIpLCBpbnN0cnVtZW50
aW5nQWdlbnRzKQogICAgICwgbV9kb21BZ2VudChkb21BZ2VudCkKICAgICAsIG1fZGVidWdnZXJB
Z2VudChkZWJ1Z2dlckFnZW50KQogICAgICwgbV9wYXVzZUluTmV4dEV2ZW50TGlzdGVuZXIoZmFs
c2UpCkBAIC0xMTEsNyArMTEzLDcgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojpk
aXNhYmxlKCkKICAgICBjbGVhcigpOwogfQogCi12b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
LCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIElu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5z
cGVjdG9yRE9NRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRj
aGVyLCB0aGlzKTsKIH0KQEAgLTMxNCw3ICszMTYsNyBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQ6OmRlc2NyaXB0aW9uRm9yRE9NRXZlbnQoTm9kZSogdGFyZ2V0LCBpbnQgYnJlYWtw
bwogICAgIGlmICgoMSA8PCBicmVha3BvaW50VHlwZSkgJiBpbmhlcml0YWJsZURPTUJyZWFrcG9p
bnRUeXBlc01hc2spIHsKICAgICAgICAgLy8gRm9yIGluaGVyaXRhYmxlIGJyZWFrcG9pbnQgdHlw
ZXMsIHRhcmdldCBub2RlIGlzbid0IGFsd2F5cyB0aGUgc2FtZSBhcyB0aGUgbm9kZSB0aGF0IG93
bnMgYSBicmVha3BvaW50LgogICAgICAgICAvLyBUYXJnZXQgbm9kZSBtYXkgYmUgdW5rbm93biB0
byBmcm9udGVuZCwgc28gd2UgbmVlZCB0byBwdXNoIGl0IGZpcnN0LgotICAgICAgICBSZWZQdHI8
VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gdGFyZ2V0Tm9kZU9iamVjdCA9IG1f
ZG9tQWdlbnQtPnJlc29sdmVOb2RlKHRhcmdldCwgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YmFj
a3RyYWNlT2JqZWN0R3JvdXApOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiB0YXJnZXROb2RlT2JqZWN0ID0gbV9kb21BZ2VudC0+
cmVzb2x2ZU5vZGUodGFyZ2V0LCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpiYWNrdHJhY2VPYmpl
Y3RHcm91cCk7CiAgICAgICAgIGRlc2NyaXB0aW9uLT5zZXRWYWx1ZSgidGFyZ2V0Tm9kZSIsIHRh
cmdldE5vZGVPYmplY3QpOwogCiAgICAgICAgIC8vIEZpbmQgYnJlYWtwb2ludCBvd25lciBub2Rl
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50LmgKaW5kZXggOTZmODhhOS4uYTNkYWFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCkBAIC0zMywyNiArMzMs
MzAgQEAKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEUoSU5TUEVD
VE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKK2NsYXNzIEluc3BlY3Rvck9iamVjdDsKK30KKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBFbGVtZW50OwogY2xhc3MgSW5zcGVjdG9yQWdlbnQ7CiBjbGFzcyBJbnNw
ZWN0b3JET01BZ2VudDsKIGNsYXNzIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ7Ci1jbGFzcyBJbnNw
ZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgTm9kZTsKIAog
dHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6TGlzdGVuZXIsIHB1YmxpYyBJbnNwZWN0b3JET01EZWJ1Z2dlckJhY2tlbmREaXNw
YXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50IDogcHVibGlj
IEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okxpc3Rl
bmVyLCBwdWJsaWMgSW5zcGVjdG9yRE9NRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQpOwog
cHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ+
IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yRE9NQWdlbnQqLCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50KiwgSW5zcGVjdG9yQWdlbnQqKTsKQEAgLTc5LDcgKzgzLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgd2lsbFNlbmRYTUxIdHRwUmVxdWVzdChjb25zdCBTdHJpbmcmIHVybCk7
CiAgICAgdm9pZCBwYXVzZU9uTmF0aXZlRXZlbnRJZk5lZWRlZChib29sIGlzRE9NRXZlbnQsIGNv
bnN0IFN0cmluZyYgZXZlbnROYW1lLCBib29sIHN5bmNocm9ub3VzKTsKIAotICAgIHZpcnR1YWwg
dm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkQWdlbnQoKTsKIApAQCAtOTMsNyArOTcs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZSgpOwogICAgIHZvaWQgZGlz
YWJsZSgpOwogCi0gICAgdm9pZCBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KE5vZGUqIHRhcmdldCwg
aW50IGJyZWFrcG9pbnRUeXBlLCBib29sIGluc2VydGlvbiwgSW5zcGVjdG9yT2JqZWN0KiBkZXNj
cmlwdGlvbik7CisgICAgdm9pZCBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KE5vZGUqIHRhcmdldCwg
aW50IGJyZWFrcG9pbnRUeXBlLCBib29sIGluc2VydGlvbiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3QqIGRlc2NyaXB0aW9uKTsKICAgICB2b2lkIHVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhO
b2RlKiwgdWludDMyX3Qgcm9vdE1hc2ssIGJvb2wgc2V0KTsKICAgICBib29sIGhhc0JyZWFrcG9p
bnQoTm9kZSosIGludCB0eXBlKTsKICAgICB2b2lkIGRpc2NhcmRCaW5kaW5ncygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNw
cAppbmRleCA2NDZkZTIzLi45YzU5YjFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKQEAgLTQxLDcgKzQxLDYgQEAK
ICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgi
CiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNp
bmNsdWRlICJQYWdlR3JvdXAuaCIKQEAgLTUwLDEzICs0OSwxNSBAQAogI2luY2x1ZGUgIlN0b3Jh
Z2VBcmVhLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZS5oIgogI2luY2x1ZGUgIlZvaWRD
YWxsYmFjay5oIgotCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6Okluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJ
bnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudChB
U0NJSUxpdGVyYWwoIkRPTVN0b3JhZ2UiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IElu
c3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkRPTVN0b3JhZ2UiKSwgaW5zdHJ1bWVudGlu
Z0FnZW50cykKICAgICAsIG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkKICAgICAsIG1fZW5hYmxlZChm
YWxzZSkKIHsKQEAgLTY5LDcgKzcwLDcgQEAgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Ojp+SW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50KCkKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMgPSAwOwog
fQogCi12b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NU3RvcmFnZUZyb250ZW5kRGlzcGF0Y2hl
cj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9y
RE9NU3RvcmFnZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRo
aXMpOwpAQCAtOTMsNyArOTQsNyBAQCB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlz
YWJsZShFcnJvclN0cmluZyopCiAgICAgbV9lbmFibGVkID0gZmFsc2U7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50OjpnZXRET01TdG9yYWdlSXRlbXMoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgc3RvcmFnZUlkLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+Pj4mIGl0ZW1z
KQordm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmdldERPTVN0b3JhZ2VJdGVtcyhFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBzdG9y
YWdlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+Pj4mIGl0ZW1zKQogewogICAgIEZyYW1lKiBmcmFtZTsK
ICAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhID0gZmluZFN0b3JhZ2VBcmVhKGVy
cm9yU3RyaW5nLCBzdG9yYWdlSWQsIGZyYW1lKTsKQEAgLTEwMywxMyArMTA0LDEzIEBAIHZvaWQg
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpnZXRET01TdG9yYWdlSXRlbXMoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBjb25zCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+Pj4gc3RvcmFnZUl0
ZW1zID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+Pjo6Y3Jl
YXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+PiBzdG9yYWdlSXRlbXMgPSBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+
Pjo6Y3JlYXRlKCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3RvcmFnZUFyZWEt
Pmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgU3RyaW5nIGtleSA9IHN0b3JhZ2VBcmVhLT5rZXko
aSk7CiAgICAgICAgIFN0cmluZyB2YWx1ZSA9IHN0b3JhZ2VBcmVhLT5pdGVtKGtleSk7CiAKLSAg
ICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBlbnRyeSA9IFR5cGVCdWls
ZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IGVudHJ5ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgICAgIGVudHJ5LT5hZGRJdGVtKGtleSk7
CiAgICAgICAgIGVudHJ5LT5hZGRJdGVtKHZhbHVlKTsKICAgICAgICAgc3RvcmFnZUl0ZW1zLT5h
ZGRJdGVtKGVudHJ5LnJlbGVhc2UoKSk7CkBAIC0xNTcsOSArMTU4LDkgQEAgU3RyaW5nIEluc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudDo6c3RvcmFnZUlkKFN0b3JhZ2UqIHN0b3JhZ2UpCiAgICAgcmV0
dXJuIHN0b3JhZ2VJZChzZWN1cml0eU9yaWdpbi5nZXQoKSwgaXNMb2NhbFN0b3JhZ2UpLT50b0pT
T05TdHJpbmcoKTsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NU3RvcmFnZTo6U3Rv
cmFnZUlkPiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OnN0b3JhZ2VJZChTZWN1cml0eU9yaWdp
biogc2VjdXJpdHlPcmlnaW4sIGJvb2wgaXNMb2NhbFN0b3JhZ2UpCitQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZD4gSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50OjpzdG9yYWdlSWQoU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBib29s
IGlzTG9jYWxTdG9yYWdlKQogewotICAgIHJldHVybiBUeXBlQnVpbGRlcjo6RE9NU3RvcmFnZTo6
U3RvcmFnZUlkOjpjcmVhdGUoKQorICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpE
T01TdG9yYWdlOjpTdG9yYWdlSWQ6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRTZWN1cml0eU9yaWdp
bihzZWN1cml0eU9yaWdpbi0+dG9SYXdTdHJpbmcoKSkKICAgICAgICAgLnNldElzTG9jYWxTdG9y
YWdlKGlzTG9jYWxTdG9yYWdlKS5yZWxlYXNlKCk7CiB9CkBAIC0xNjksNyArMTcwLDcgQEAgdm9p
ZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50KGNv
bnN0IFN0cmluZyYga2V5LCBjb24KICAgICBpZiAoIW1fZnJvbnRlbmREaXNwYXRjaGVyIHx8ICFt
X2VuYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6RE9N
U3RvcmFnZTo6U3RvcmFnZUlkPiBpZCA9IHN0b3JhZ2VJZChzZWN1cml0eU9yaWdpbiwgc3RvcmFn
ZVR5cGUgPT0gTG9jYWxTdG9yYWdlKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkPiBpZCA9IHN0b3JhZ2VJZChzZWN1cml0eU9yaWdpbiwg
c3RvcmFnZVR5cGUgPT0gTG9jYWxTdG9yYWdlKTsKIAogICAgIGlmIChrZXkuaXNOdWxsKCkpCiAg
ICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5kb21TdG9yYWdlSXRlbXNDbGVhcmVkKGlkKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQuaAppbmRleCAyY2QxN2IzLi45NzQ0MWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCkBAIC0yOSwyNyArMjksMzAgQEAK
ICNpZm5kZWYgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50X2gKICNkZWZpbmUgSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50X2gKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1
ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3Rvcldl
YkFnZW50QmFzZS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhLmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNzIEluc3BlY3RvckFy
cmF5OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lOwotY2xhc3MgSW5z
cGVjdG9yQXJyYXk7CiBjbGFzcyBJbnNwZWN0b3JET01TdG9yYWdlRnJvbnRlbmREaXNwYXRjaGVy
OwogY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50OwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsK
IGNsYXNzIFBhZ2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFN0b3JhZ2U7Ci1jbGFz
cyBTdG9yYWdlQXJlYTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIElu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1Ymxp
YyBJbnNwZWN0b3JET01TdG9yYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIElu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1Ymxp
YyBJbnNwZWN0b3JET01TdG9yYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ+IGNyZWF0ZShJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdl
bnQqIHBhZ2VBZ2VudCkKICAgICB7CkBAIC01NywxOSArNjAsMTkgQEAgcHVibGljOgogICAgIH0K
ICAgICB+SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsK
IAogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCiAgICAgdmlydHVhbCB2b2lkIGVu
YWJsZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5n
Kik7Ci0gICAgdmlydHVhbCB2b2lkIGdldERPTVN0b3JhZ2VJdGVtcyhFcnJvclN0cmluZyosIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBzdG9yYWdlSWQsIFJlZlB0cjxUeXBlQnVpbGRl
cjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+PiYgaXRlbXMpOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRET01TdG9yYWdlSXRlbShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+JiBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcm
IHZhbHVlKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRE9NU3RvcmFnZUl0ZW0oRXJyb3JTdHJp
bmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgc3RvcmFnZUlkLCBjb25zdCBTdHJp
bmcmIGtleSk7CisgICAgdmlydHVhbCB2b2lkIGdldERPTVN0b3JhZ2VJdGVtcyhFcnJvclN0cmlu
ZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIHN0b3JhZ2VJZCwg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFycmF5PFN0cmluZz4+PiYgaXRlbXMpOworICAgIHZpcnR1YWwgdm9pZCBzZXRET01TdG9y
YWdlSXRlbShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdD4mIHN0b3JhZ2VJZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUp
OworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVET01TdG9yYWdlSXRlbShFcnJvclN0cmluZyosIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIHN0b3JhZ2VJZCwgY29uc3Qg
U3RyaW5nJiBrZXkpOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGluamVjdGVkIHNjcmlwdC4K
ICAgICBTdHJpbmcgc3RvcmFnZUlkKFN0b3JhZ2UqKTsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpET01TdG9yYWdlOjpTdG9yYWdlSWQ+IHN0b3JhZ2VJZChTZWN1cml0eU9yaWdpbiosIGJv
b2wgaXNMb2NhbFN0b3JhZ2UpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkPiBzdG9yYWdlSWQoU2VjdXJpdHlPcmlnaW4qLCBib29s
IGlzTG9jYWxTdG9yYWdlKTsKIAogICAgIC8vIENhbGxlZCBmcm9tIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbgogICAgIHZvaWQgZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQoY29uc3QgU3RyaW5n
JiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIFN0
b3JhZ2VUeXBlLCBTZWN1cml0eU9yaWdpbiosIFBhZ2UqKTsKQEAgLTc4LDcgKzgxLDcgQEAgcHJp
dmF0ZToKIAogICAgIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRz
KiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7CiAKLSAgICBQYXNzUmVmUHRyPFN0b3JhZ2VBcmVhPiBm
aW5kU3RvcmFnZUFyZWEoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiYsIEZyYW1lKiYpOworICAgIFBhc3NSZWZQdHI8U3RvcmFnZUFyZWE+IGZpbmRTdG9yYWdlQXJl
YShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4m
LCBGcmFtZSomKTsKIAogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckRPTVN0b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI+IG1f
ZnJvbnRlbmREaXNwYXRjaGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCmluZGV4IGM1ODAwZWEuLjliODU1Y2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAK
QEAgLTM3LDggKzM3LDYgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yRnJvbnRlbmQuaCIKLQotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUg
Ikluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJTUUxFcnJvci5oIgogI2luY2x1ZGUg
IlNRTFJlc3VsdFNldC5oIgpAQCAtNTAsMTggKzQ4LDIwIEBACiAjaW5jbHVkZSAiU1FMVHJhbnNh
Y3Rpb25FcnJvckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiU1FMVmFsdWUuaCIKICNpbmNsdWRlICJW
b2lkQ2FsbGJhY2suaCIKLQorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIHR5cGVkZWYgV2ViQ29yZTo6SW5zcGVjdG9yRGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxDYWxsYmFjayBFeGVjdXRl
U1FMQ2FsbGJhY2s7CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogbmFtZXNwYWNlIHsKIAogdm9pZCByZXBvcnRUcmFuc2FjdGlvbkZhaWxlZChF
eGVjdXRlU1FMQ2FsbGJhY2sqIHJlcXVlc3RDYWxsYmFjaywgU1FMRXJyb3IqIGVycm9yKQogewot
ICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkVycm9yPiBlcnJvck9iamVjdCA9IFR5
cGVCdWlsZGVyOjpEYXRhYmFzZTo6RXJyb3I6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpFcnJvcj4gZXJyb3JPYmplY3QgPSBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpEYXRhYmFzZTo6RXJyb3I6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRNZXNz
YWdlKGVycm9yLT5tZXNzYWdlKCkpCiAgICAgICAgIC5zZXRDb2RlKGVycm9yLT5jb2RlKCkpOwog
ICAgIHJlcXVlc3RDYWxsYmFjay0+c2VuZFN1Y2Nlc3MoMCwgMCwgZXJyb3JPYmplY3QucmVsZWFz
ZSgpKTsKQEAgLTgwLDEyICs4MCwxMiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBTUUxSZXN1
bHRTZXRSb3dMaXN0KiByb3dMaXN0ID0gcmVzdWx0U2V0LT5yb3dzKCk7CiAKLSAgICAgICAgUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBjb2x1bW5OYW1lcyA9IFR5cGVCdWlsZGVy
OjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IGNvbHVtbk5hbWVzID0gSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBjb2x1bW5zID0gcm93TGlzdC0+Y29sdW1uTmFtZXMoKTsKICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBjb2x1bW5zLnNpemUoKTsgKytpKQogICAgICAgICAgICAgY29sdW1uTmFt
ZXMtPmFkZEl0ZW0oY29sdW1uc1tpXSk7CiAKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpB
cnJheTxJbnNwZWN0b3JWYWx1ZT4+IHZhbHVlcyA9IFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0
b3JWYWx1ZT46OmNyZWF0ZSgpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8SW5zcGVjdG9yVmFsdWU+PiB2YWx1ZXMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3JWYWx1ZT46OmNyZWF0ZSgpOwogICAgICAgICBjb25zdCBWZWN0b3I8
U1FMVmFsdWU+JiBkYXRhID0gcm93TGlzdC0+dmFsdWVzKCk7CiAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgZGF0YS5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgY29uc3QgU1FMVmFs
dWUmIHZhbHVlID0gcm93TGlzdC0+dmFsdWVzKClbaV07CkBAIC0yMTEsNyArMjExLDcgQEAgdm9p
ZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpjbGVhclJlc291cmNlcygpCiB9CiAKIEluc3BlY3Rv
ckRhdGFiYXNlQWdlbnQ6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50
cyogaW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxp
dGVyYWwoIkRhdGFiYXNlIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JB
Z2VudEJhc2UoQVNDSUlMaXRlcmFsKCJEYXRhYmFzZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQog
ICAgICwgbV9lbmFibGVkKGZhbHNlKQogewogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudCh0aGlzKTsKQEAgLTIyMiw3ICsyMjIsNyBAQCBJbnNwZWN0
b3JEYXRhYmFzZUFnZW50Ojp+SW5zcGVjdG9yRGF0YWJhc2VBZ2VudCgpCiAgICAgbV9pbnN0cnVt
ZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JEYXRhYmFzZUFnZW50KDApOwogfQogCi12b2lkIElu
c3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50Ojpk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tl
bmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0b3JEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVs
KTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlz
cGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKQEAgLTI1NCwxNCArMjU0
LDE0IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyop
CiAgICAgbV9lbmFibGVkID0gZmFsc2U7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dDo6Z2V0RGF0YWJhc2VUYWJsZU5hbWVzKEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5n
JiBkYXRhYmFzZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+JiBuYW1lcykK
K3ZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6Z2V0RGF0YWJhc2VUYWJsZU5hbWVzKEVycm9y
U3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4mIG5hbWVzKQogewogICAgIGlmICghbV9lbmFi
bGVkKSB7CiAgICAgICAgICplcnJvciA9ICJEYXRhYmFzZSBhZ2VudCBpcyBub3QgZW5hYmxlZCI7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBuYW1lcyA9IFR5cGVCdWlsZGVyOjpBcnJh
eTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICBuYW1lcyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwogCiAgICAgRGF0YWJhc2UqIGRhdGFiYXNlID0gZGF0
YWJhc2VGb3JJZChkYXRhYmFzZUlkKTsKICAgICBpZiAoZGF0YWJhc2UpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCmluZGV4IGEzMmYw
NjQuLjUzOWEzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JEYXRhYmFzZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRhdGFiYXNlQWdlbnQuaApAQCAtMzEsMjIgKzMxLDI2IEBACiAKICNpZiBFTkFCTEUoSU5TUEVD
VE9SKSAmJiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFn
ZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2Uu
aCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3Ig
eworY2xhc3MgSW5zcGVjdG9yQXJyYXk7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgRGF0YWJhc2U7Ci1jbGFzcyBJbnNwZWN0b3JBcnJheTsKIGNsYXNzIEluc3BlY3RvckRhdGFi
YXNlUmVzb3VyY2U7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogCiB0eXBlZGVmIFN0cmlu
ZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudCA6IHB1YmxpYyBJ
bnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JEYXRhYmFzZUFnZW50IDogcHVibGljIEluc3Bl
Y3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JEYXRhYmFz
ZUFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykK
ICAgICB7CkBAIC01NCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgfkluc3BlY3RvckRh
dGFiYXNlQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxs
RGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgdm9pZCBjbGVhclJl
c291cmNlcygpOwpAQCAtNjIsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGVkIGZyb20g
dGhlIGZyb250LWVuZC4KICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKik7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0RGF0YWJhc2VUYWJsZU5hbWVzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBkYXRhYmFz
ZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+JiBuYW1lcyk7CisgICAgdmly
dHVhbCB2b2lkIGdldERhdGFiYXNlVGFibGVOYW1lcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmlu
Zz4+JiBuYW1lcyk7CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUwoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIGRhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgcXVlcnksIFBhc3NSZWZQdHI8
RXhlY3V0ZVNRTENhbGxiYWNrPik7CiAKICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgaW5qZWN0ZWQg
c2NyaXB0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRh
dGFiYXNlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRh
dGFiYXNlUmVzb3VyY2UuY3BwCmluZGV4IDlkNGI3M2YuLjI1YTMxNDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAK
QEAgLTM2LDcgKzM2LDkgQEAKIAogI2luY2x1ZGUgIkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yRnJvbnRlbmQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKyNpbmNsdWRl
IDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTgsNyArNjAsNyBAQCBJbnNwZWN0b3JE
YXRhYmFzZVJlc291cmNlOjpJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlKFBhc3NSZWZQdHI8RGF0
YWJhc2U+IGRhdGFiYQogCiB2b2lkIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U6OmJpbmQoSW5z
cGVjdG9yRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXIqIGRhdGFiYXNlRnJvbnRlbmREaXNwYXRj
aGVyKQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkRhdGFiYXNlPiBqc29u
T2JqZWN0ID0gVHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpEYXRhYmFzZTo6Y3JlYXRlKCkKKyAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkRhdGFiYXNlPiBqc29uT2Jq
ZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkRhdGFiYXNlOjpjcmVhdGUo
KQogICAgICAgICAuc2V0SWQobV9pZCkKICAgICAgICAgLnNldERvbWFpbihtX2RvbWFpbikKICAg
ICAgICAgLnNldE5hbWUobV9uYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGFjMmI3MGUuLjg1ZGUyNDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5j
cHAKQEAgLTM4LDI0ICszOCwyNyBAQAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5o
IgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFn
ZUFnZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1
bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIlJlZ3VsYXJFeHByZXNzaW9uLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RGVidWdTZXJ2ZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNs
dWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3QuaD4KKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRW
YWx1ZS5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkFy
cmF5OwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFp
bHM7Ci11c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OlNjcmlwdElkOwotdXNp
bmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDsKK3VzaW5nIElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5OwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlsczsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkRlYnVnZ2VyOjpTY3JpcHRJZDsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdDsKKwordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBjaGFyKiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpi
YWNrdHJhY2VPYmplY3RHcm91cCA9ICJiYWNrdHJhY2UiOwogCiBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiRGVidWdnZXIiKSwgaW5z
dHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwo
IkRlYnVnZ2VyIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0
TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBtX3BhdXNlZFNjcmlwdFN0YXRl
KDApCiAgICAgLCBtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJRChub0JyZWFrcG9pbnRJ
RCkKQEAgLTEzNiw3ICsxMzksNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpc2Fi
bGUoRXJyb3JTdHJpbmcqKQogICAgIGRpc2FibGUoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNr
ZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9u
dGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hl
cikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9i
YWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckRlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXI6OmNy
ZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CkBAIC0yMDAsMTUgKzIwMywxNSBAQCBzdGF0
aWMgYm9vbCBtYXRjaGVzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdHRlcm4s
IGJvb2wgaXNSZWdleCkKIAogc3RhdGljIGJvb2wgYnJlYWtwb2ludEFjdGlvblR5cGVGb3JTdHJp
bmcoY29uc3QgU3RyaW5nJiB0eXBlU3RyaW5nLCBTY3JpcHRCcmVha3BvaW50QWN0aW9uVHlwZSog
b3V0cHV0KQogewotICAgIGlmICh0eXBlU3RyaW5nID09IFR5cGVCdWlsZGVyOjpnZXRFbnVtQ29u
c3RhbnRWYWx1ZShUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU6
OkxvZykpIHsKKyAgICBpZiAodHlwZVN0cmluZyA9PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpn
ZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJl
YWtwb2ludEFjdGlvbjo6VHlwZTo6TG9nKSkgewogICAgICAgICAqb3V0cHV0ID0gU2NyaXB0QnJl
YWtwb2ludEFjdGlvblR5cGVMb2c7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBp
ZiAodHlwZVN0cmluZyA9PSBUeXBlQnVpbGRlcjo6Z2V0RW51bUNvbnN0YW50VmFsdWUoVHlwZUJ1
aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlOjpFdmFsdWF0ZSkpIHsKKyAg
ICBpZiAodHlwZVN0cmluZyA9PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpnZXRFbnVtQ29uc3Rh
bnRWYWx1ZShJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlv
bjo6VHlwZTo6RXZhbHVhdGUpKSB7CiAgICAgICAgICpvdXRwdXQgPSBTY3JpcHRCcmVha3BvaW50
QWN0aW9uVHlwZUV2YWx1YXRlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgaWYg
KHR5cGVTdHJpbmcgPT0gVHlwZUJ1aWxkZXI6OmdldEVudW1Db25zdGFudFZhbHVlKFR5cGVCdWls
ZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6VHlwZTo6U291bmQpKSB7CisgICAgaWYg
KHR5cGVTdHJpbmcgPT0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Z2V0RW51bUNvbnN0YW50VmFs
dWUoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5
cGU6OlNvdW5kKSkgewogICAgICAgICAqb3V0cHV0ID0gU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5
cGVTb3VuZDsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjU1LDkgKzI1OCw5IEBA
IHN0YXRpYyBib29sIGJyZWFrcG9pbnRBY3Rpb25zRnJvbVByb3RvY29sKEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgUmVmUHRyPEluc3BlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkws
IGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBjb25zdCBv
cHRpb25hbENvbHVtbk51bWJlciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG9wdGlv
bnMsIFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiBvdXRCcmVha3BvaW50SWRl
bnRpZmllciwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RGVidWdnZXI6
OkxvY2F0aW9uPj4mIGxvY2F0aW9ucykKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0
QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IGxpbmVOdW1iZXIs
IGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0
aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBjb25zdCBvcHRpb25hbENvbHVtbk51bWJlciwgY29u
c3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG9wdGlvbnMsIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9pbnRJZGVudGlmaWVyLCBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9ucykKIHsKLSAgICBsb2NhdGlvbnMgPSBBcnJh
eTxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPjo6Y3JlYXRlKCk7CisgICAgbG9jYXRp
b25zID0gQXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPjo6
Y3JlYXRlKCk7CiAgICAgaWYgKCFvcHRpb25hbFVSTCA9PSAhb3B0aW9uYWxVUkxSZWdleCkgewog
ICAgICAgICAqZXJyb3JTdHJpbmcgPSAiRWl0aGVyIHVybCBvciB1cmxSZWdleCBtdXN0IGJlIHNw
ZWNpZmllZC4iOwogICAgICAgICByZXR1cm47CkBAIC0yOTQsNyArMjk3LDcgQEAgdm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBpbnQgbGkKICAgICAgICAgaWYgKCFtYXRjaGVzKHNjcmlwdFVSTCwgdXJsLCBpc1Jl
Z2V4KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRl
cjo6RGVidWdnZXI6OkxvY2F0aW9uPiBsb2NhdGlvbiA9IHJlc29sdmVCcmVha3BvaW50KGJyZWFr
cG9pbnRJZGVudGlmaWVyLCBpdC0+a2V5LCBicmVha3BvaW50KTsKKyAgICAgICAgUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gbG9jYXRpb24gPSByZXNv
bHZlQnJlYWtwb2ludChicmVha3BvaW50SWRlbnRpZmllciwgaXQtPmtleSwgYnJlYWtwb2ludCk7
CiAgICAgICAgIGlmIChsb2NhdGlvbikKICAgICAgICAgICAgIGxvY2F0aW9ucy0+YWRkSXRlbShs
b2NhdGlvbik7CiAgICAgfQpAQCAtMzE2LDcgKzMxOSw3IEBAIHN0YXRpYyBib29sIHBhcnNlTG9j
YXRpb24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBJbnNwZWN0b3JPYmplY3QqIGxvY2F0aW9u
LCBTCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
c2V0QnJlYWtwb2ludChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+JiBsb2NhdGlvbiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG9w
dGlvbnMsIFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiBvdXRCcmVha3BvaW50
SWRlbnRpZmllciwgUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+JiBhY3R1
YWxMb2NhdGlvbikKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludChF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBs
b2NhdGlvbiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG9wdGlvbnMsIEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9pbnRJZGVu
dGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9u
PiYgYWN0dWFsTG9jYXRpb24pCiB7CiAgICAgU291cmNlSUQgc291cmNlSUQ7CiAgICAgdW5zaWdu
ZWQgbGluZU51bWJlcjsKQEAgLTM4Myw3ICszODYsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0
CiAgICAgcmVzdW1lKGVycm9yU3RyaW5nKTsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6
RGVidWdnZXI6OkxvY2F0aW9uPiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXNvbHZlQnJlYWtw
b2ludChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZGVudGlmaWVyLCBTb3VyY2VJRCBzb3VyY2VJ
RCwgY29uc3QgU2NyaXB0QnJlYWtwb2ludCYgYnJlYWtwb2ludCkKK1Bhc3NSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpyZXNvbHZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZGVudGlmaWVy
LCBTb3VyY2VJRCBzb3VyY2VJRCwgY29uc3QgU2NyaXB0QnJlYWtwb2ludCYgYnJlYWtwb2ludCkK
IHsKICAgICBTY3JpcHRzTWFwOjppdGVyYXRvciBzY3JpcHRJdGVyYXRvciA9IG1fc2NyaXB0cy5m
aW5kKHNvdXJjZUlEKTsKICAgICBpZiAoc2NyaXB0SXRlcmF0b3IgPT0gbV9zY3JpcHRzLmVuZCgp
KQpAQCAtNDAzLDE0ICs0MDYsMTQgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6
OkxvY2F0aW9uPiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXNvbHZlQnJlYWsKICAgICAgICAg
ZGVidWdTZXJ2ZXJCcmVha3BvaW50SURzSXRlcmF0b3IgPSBtX2JyZWFrcG9pbnRJZGVudGlmaWVy
VG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHMuc2V0KGJyZWFrcG9pbnRJZGVudGlmaWVyLCBWZWN0
b3I8QnJlYWtwb2ludElEPigpKS5pdGVyYXRvcjsKICAgICBkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJ
RHNJdGVyYXRvci0+dmFsdWUuYXBwZW5kKGRlYnVnU2VydmVyQnJlYWtwb2ludElEKTsKIAotICAg
IFJlZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiBsb2NhdGlvbiA9IFR5cGVC
dWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb246OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gbG9jYXRpb24gPSBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb246OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRT
Y3JpcHRJZChTdHJpbmc6Om51bWJlcihzb3VyY2VJRCkpCiAgICAgICAgIC5zZXRMaW5lTnVtYmVy
KGFjdHVhbExpbmVOdW1iZXIpOwogICAgIGxvY2F0aW9uLT5zZXRDb2x1bW5OdW1iZXIoYWN0dWFs
Q29sdW1uTnVtYmVyKTsKICAgICByZXR1cm4gbG9jYXRpb247CiB9CiAKLXN0YXRpYyBQYXNzUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gc2NyaXB0VG9JbnNwZWN0b3JPYmplY3QoU2NyaXB0T2JqZWN0
IHNjcmlwdE9iamVjdCkKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gc2NyaXB0
VG9JbnNwZWN0b3JPYmplY3QoRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IHNjcmlwdE9iamVjdCkK
IHsKICAgICBpZiAoc2NyaXB0T2JqZWN0Lmhhc05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIDA7
CkBAIC00MjAsNyArNDIzLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBz
Y3JpcHRUb0luc3BlY3Rvck9iamVjdChTY3JpcHRPYmplY3Qgc2NyaXB0T2IKICAgICByZXR1cm4g
dmFsdWUtPmFzT2JqZWN0KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2Vh
cmNoSW5Db250ZW50KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRFN0
ciwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vu
c2l0aXZlLCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxBcnJheTxX
ZWJDb3JlOjpUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0Y2g+PiYgcmVzdWx0cykKK3ZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5nKiBlcnJv
ciwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRFN0ciwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3Qg
Ym9vbCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBjb25zdCBvcHRp
b25hbElzUmVnZXgsIFJlZlB0cjxBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpT
ZWFyY2hNYXRjaD4+JiByZXN1bHRzKQogewogICAgIGJvb2wgaXNSZWdleCA9IG9wdGlvbmFsSXNS
ZWdleCA/ICpvcHRpb25hbElzUmVnZXggOiBmYWxzZTsKICAgICBib29sIGNhc2VTZW5zaXRpdmUg
PSBvcHRpb25hbENhc2VTZW5zaXRpdmUgPyAqb3B0aW9uYWxDYXNlU2Vuc2l0aXZlIDogZmFsc2U7
CkBAIC00MzMsMTAgKzQzNiwxMCBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNlYXJj
aEluQ29udGVudChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgcwogICAgICAgICAq
ZXJyb3IgPSAiTm8gc2NyaXB0IGZvciBpZDogIiArIHNjcmlwdElEU3RyOwogfQogCi12b2lkIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyogZXJyb3Is
IGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudCwgY29uc3Qg
Ym9vbCogY29uc3QgcHJldmlldywgUmVmUHRyPEFycmF5PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6
Q2FsbEZyYW1lPj4mIG5ld0NhbGxGcmFtZXMsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiByZXN1
bHQpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldFNjcmlwdFNvdXJjZShFcnJvclN0
cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIGNvbnN0IFN0cmluZyYgbmV3Q29u
dGVudCwgY29uc3QgYm9vbCogY29uc3QgcHJldmlldywgUmVmUHRyPEFycmF5PEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiYgbmV3Q2FsbEZyYW1lcywgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4mIHJlc3VsdCkKIHsKICAgICBib29sIHByZXZpZXdPbmx5ID0gcHJl
dmlldyAmJiAqcHJldmlldzsKLSAgICBTY3JpcHRPYmplY3QgcmVzdWx0T2JqZWN0OworICAgIERl
cHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCByZXN1bHRPYmplY3Q7CiAgICAgaWYgKCFzY3JpcHREZWJ1
Z1NlcnZlcigpLnNldFNjcmlwdFNvdXJjZShzY3JpcHRJRCwgbmV3Q29udGVudCwgcHJldmlld09u
bHksIGVycm9yLCAmbV9jdXJyZW50Q2FsbFN0YWNrLCAmcmVzdWx0T2JqZWN0KSkKICAgICAgICAg
cmV0dXJuOwogICAgIG5ld0NhbGxGcmFtZXMgPSBjdXJyZW50Q2FsbEZyYW1lcygpOwpAQCAtNDU1
LDcgKzQ1OCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Z2V0U2NyaXB0U291cmNl
KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBzCiAgICAgICAgICplcnJvciA9ICJO
byBzY3JpcHQgZm9yIGlkOiAiICsgc2NyaXB0SURTdHI7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6Z2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpG
dW5jdGlvbkRldGFpbHM+JiBkZXRhaWxzKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpn
ZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGZ1bmN0aW9uSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6RnVu
Y3Rpb25EZXRhaWxzPiYgZGV0YWlscykKIHsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNj
cmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvck9iamVjdElk
KGZ1bmN0aW9uSWQpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKQEAg
LTU0Nyw3ICs1NTAsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldFBhdXNlT25F
eGNlcHRpb25zSW1wbChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsCiAgICAgICAgICplcnJvclN0
cmluZyA9ICJJbnRlcm5hbCBlcnJvci4gQ291bGQgbm90IGNoYW5nZSBwYXVzZSBvbiBleGNlcHRp
b25zIHN0YXRlIjsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpldmFsdWF0ZU9u
Q2FsbEZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBjYWxsRnJh
bWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVj
dEdyb3VwLCBjb25zdCBib29sKiBjb25zdCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGNvbnN0IGJv
b2wqIGNvbnN0IGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3QgYm9v
bCogY29uc3QgcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgVHlwZUJ1aWxk
ZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJp
bmcqIGNvbnN0IG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBjb25zdCBpbmNsdWRlQ29tbWFuZExp
bmVBUEksIGNvbnN0IGJvb2wqIGNvbnN0IGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29u
c29sZSwgY29uc3QgYm9vbCogY29uc3QgcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJh
dGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4q
IHdhc1Rocm93bikKIHsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKGNhbGxGcmFtZUlk
KTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CkBAIC01NzEsNyArNTc0
LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6Y29tcGlsZVNjcmlwdChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNv
bnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIFR5cGVCdWls
ZGVyOjpPcHRPdXRwdXQ8U2NyaXB0SWQ+KiBzY3JpcHRJRCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1
dDxTdHJpbmc+KiBzeW50YXhFcnJvck1lc3NhZ2UpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmNvbXBpbGVTY3JpcHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpPcHRPdXRwdXQ8U2NyaXB0SWQ+KiBzY3JpcHRJRCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6T3B0T3V0cHV0PFN0cmluZz4qIHN5bnRheEVycm9yTWVzc2FnZSkKIHsKICAgICBJbmplY3Rl
ZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0Rm9yRXZhbChlcnJvclN0cmlu
ZywgMCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewpAQCAtNTkwLDcg
KzU5Myw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y29tcGlsZVNjcmlwdChFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluCiAgICAgKnNjcmlwdElEID0gc2NyaXB0
SURWYWx1ZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpydW5TY3JpcHQoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTY3JpcHRJZCYgc2NyaXB0SUQsIGNvbnN0IGlu
dCogZXhlY3V0aW9uQ29udGV4dElkLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBj
b25zdCBib29sKiBjb25zdCBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBUeXBlQnVp
bGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCit2b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OnJ1blNjcmlwdChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFNjcmlwdElk
JiBzY3JpcHRJRCwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQsIGNvbnN0IFN0cmluZyog
Y29uc3Qgb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGNvbnN0IGRvTm90UGF1c2VPbkV4Y2VwdGlv
bnNBbmRNdXRlQ29uc29sZSwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6
OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0
PGJvb2w+KiB3YXNUaHJvd24pCiB7CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQg
PSBpbmplY3RlZFNjcmlwdEZvckV2YWwoZXJyb3JTdHJpbmcsIGV4ZWN1dGlvbkNvbnRleHRJZCk7
CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewpAQCAtNjA1LDcgKzYwOCw3
IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cnVuU2NyaXB0KEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgY29uc3QgU2NyaXB0SWQmCiAgICAgICAgIG11dGVDb25zb2xlKCk7CiAgICAg
fQogCi0gICAgU2NyaXB0VmFsdWUgdmFsdWU7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUg
dmFsdWU7CiAgICAgYm9vbCB3YXNUaHJvd25WYWx1ZTsKICAgICBTdHJpbmcgZXhjZXB0aW9uTWVz
c2FnZTsKICAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLnJ1blNjcmlwdChpbmplY3RlZFNjcmlwdC5z
Y3JpcHRTdGF0ZSgpLCBzY3JpcHRJRCwgJnZhbHVlLCAmd2FzVGhyb3duVmFsdWUsICZleGNlcHRp
b25NZXNzYWdlKTsKQEAgLTYzOCwxNCArNjQxLDE0IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6c2NyaXB0RXhlY3V0aW9uQmxvY2tlZEJ5Q1NQKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZl
CiAgICAgfQogfQogCi1QYXNzUmVmUHRyPEFycmF5PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2Fs
bEZyYW1lPj4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y3VycmVudENhbGxGcmFtZXMoKQorUGFz
c1JlZlB0cjxBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1l
Pj4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y3VycmVudENhbGxGcmFtZXMoKQogewogICAgIGlm
ICghbV9wYXVzZWRTY3JpcHRTdGF0ZSkKLSAgICAgICAgcmV0dXJuIEFycmF5PFR5cGVCdWlsZGVy
OjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPjo6Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBBcnJheTxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPjo6Y3JlYXRlKCk7CiAg
ICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdl
ci0+aW5qZWN0ZWRTY3JpcHRGb3IobV9wYXVzZWRTY3JpcHRTdGF0ZSk7CiAgICAgaWYgKGluamVj
dGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgcmV0dXJuIEFycmF5PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPjo6
Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpE
ZWJ1Z2dlcjo6Q2FsbEZyYW1lPjo6Y3JlYXRlKCk7CiAgICAgfQogICAgIHJldHVybiBpbmplY3Rl
ZFNjcmlwdC53cmFwQ2FsbEZyYW1lcyhtX2N1cnJlbnRDYWxsU3RhY2spOwogfQpAQCAtNzE1LDcg
KzcxOCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGFyc2VTb3VyY2UoU291
cmNlSUQgc291cmNlSUQsIGNvbnN0IFNjcmlwdCYgaW5TCiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0
aW9uPiBsb2NhdGlvbiA9IHJlc29sdmVCcmVha3BvaW50KGl0LT5rZXksIHNvdXJjZUlELCBicmVh
a3BvaW50KTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2Vy
OjpMb2NhdGlvbj4gbG9jYXRpb24gPSByZXNvbHZlQnJlYWtwb2ludChpdC0+a2V5LCBzb3VyY2VJ
RCwgYnJlYWtwb2ludCk7CiAgICAgICAgIGlmIChsb2NhdGlvbikKICAgICAgICAgICAgIG1fZnJv
bnRlbmREaXNwYXRjaGVyLT5icmVha3BvaW50UmVzb2x2ZWQoaXQtPmtleSwgbG9jYXRpb24pOwog
ICAgIH0KQEAgLTcyNiw3ICs3MjksNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmZh
aWxlZFRvUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZwogICAgIG1f
ZnJvbnRlbmREaXNwYXRjaGVyLT5zY3JpcHRGYWlsZWRUb1BhcnNlKHVybCwgZGF0YSwgZmlyc3RM
aW5lLCBlcnJvckxpbmUsIGVycm9yTWVzc2FnZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6ZGlkUGF1c2UoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3Jp
cHRWYWx1ZSYgY2FsbEZyYW1lcywgY29uc3QgU2NyaXB0VmFsdWUmIGV4Y2VwdGlvbikKK3ZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0
YXRlLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywgY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmIGV4Y2VwdGlvbikKIHsKICAgICBBU1NFUlQoc2NyaXB0U3Rh
dGUgJiYgIW1fcGF1c2VkU2NyaXB0U3RhdGUpOwogICAgIG1fcGF1c2VkU2NyaXB0U3RhdGUgPSBz
Y3JpcHRTdGF0ZTsKQEAgLTc1NSw3ICs3NTgsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmRpZFBhdXNlKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0Vgog
dm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRDb250aW51ZSgpCiB7CiAgICAgbV9wYXVz
ZWRTY3JpcHRTdGF0ZSA9IDA7Ci0gICAgbV9jdXJyZW50Q2FsbFN0YWNrID0gU2NyaXB0VmFsdWUo
KTsKKyAgICBtX2N1cnJlbnRDYWxsU3RhY2sgPSBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSgpOwog
ICAgIGNsZWFyQnJlYWtEZXRhaWxzKCk7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlc3Vt
ZWQoKTsKIH0KQEAgLTc3MCw3ICs3NzMsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OmJyZWFrUHJvZ3JhbShJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6Ugogdm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjbGVhcigpCiB7CiAgICAgbV9wYXVzZWRTY3JpcHRT
dGF0ZSA9IDA7Ci0gICAgbV9jdXJyZW50Q2FsbFN0YWNrID0gU2NyaXB0VmFsdWUoKTsKKyAgICBt
X2N1cnJlbnRDYWxsU3RhY2sgPSBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSgpOwogICAgIG1fc2Ny
aXB0cy5jbGVhcigpOwogICAgIG1fYnJlYWtwb2ludElkZW50aWZpZXJUb0RlYnVnU2VydmVyQnJl
YWtwb2ludElEcy5jbGVhcigpOwogICAgIG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElE
ID0gbm9CcmVha3BvaW50SUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuaAppbmRleCA0YmU2MDAwLi45NWVkYTA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTMxLDEy
ICszMSwxNCBAQAogI2RlZmluZSBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50X2gKIAogI2lmIEVOQUJM
RShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEUoSU5TUEVDVE9SKQorCiAjaW5jbHVkZSAi
QnJlYWtwb2ludElELmgiCiAjaW5jbHVkZSAiQ29uc29sZUFQSVR5cGVzLmgiCiAjaW5jbHVkZSAi
Q29uc29sZVR5cGVzLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKLSNpbmNsdWRlICJJ
bnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgorI2luY2x1ZGUgIkluc3BlY3Rv
cldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgIlNjcmlwdEJyZWFrcG9pbnQuaCIKICNpbmNsdWRl
ICJTY3JpcHREZWJ1Z0xpc3RlbmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKQEAgLTQ4
LDE5ICs1MCwyNSBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdIYXNoLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEZXByZWNh
dGVkIHsKK2NsYXNzIFNjcmlwdFZhbHVlOworfQogCi1jbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFn
ZXI7CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIGNsYXNzIEluc3BlY3RvckFycmF5OwogY2xhc3Mg
SW5zcGVjdG9yT2JqZWN0OwogY2xhc3MgSW5zcGVjdG9yVmFsdWU7Cit9CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3MgSW5zdHJ1bWVu
dGluZ0FnZW50czsKIGNsYXNzIFNjcmlwdERlYnVnU2VydmVyOwotY2xhc3MgU2NyaXB0VmFsdWU7
CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIFNjcmlwdERlYnVnTGlz
dGVuZXIsIHB1YmxpYyBJbnNwZWN0b3JEZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7
CitjbGFzcyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFz
ZSwgcHVibGljIFNjcmlwdERlYnVnTGlzdGVuZXIsIHB1YmxpYyBJbnNwZWN0b3JEZWJ1Z2dlckJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVj
dG9yRGVidWdnZXJBZ2VudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBiYWNrdHJhY2VPYmplY3RHcm91cDsKQEAgLTcxLDcgKzc5LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjYW5TZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJp
bmcqLCBib29sKik7CiAgICAgdmlydHVhbCB2b2lkIHN1cHBvcnRzU2VwYXJhdGVTY3JpcHRDb21w
aWxhdGlvbkFuZEV4ZWN1dGlvbihFcnJvclN0cmluZyosIGJvb2wqKTsKIAotICAgIHZpcnR1YWwg
dm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9W
RVJSSURFOwogCiAgICAgYm9vbCBpc1BhdXNlZCgpOwpAQCAtODMsMTUgKzkxLDE1IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRCcmVha3BvaW50c0FjdGl2ZShFcnJvclN0cmluZyosIGJvb2wgYWN0aXZlKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBzZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJpbmcqLCBpbnQgbGlu
ZU51bWJlciwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFVSTCwgY29uc3QgU3RyaW5nKiBvcHRpb25h
bFVSTFJlZ2V4LCBjb25zdCBpbnQqIG9wdGlvbmFsQ29sdW1uTnVtYmVyLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0Piogb3B0aW9ucywgVHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3Bv
aW50SWQqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6
TG9jYXRpb24+PiYgbG9jYXRpb25zKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QnJlYWtwb2ludChF
cnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBsb2NhdGlvbiwgY29u
c3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG9wdGlvbnMsIFR5cGVCdWlsZGVyOjpEZWJ1Z2dl
cjo6QnJlYWtwb2ludElkKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+
JiBhY3R1YWxMb2NhdGlvbik7CisgICAgdmlydHVhbCB2b2lkIHNldEJyZWFrcG9pbnRCeVVybChF
cnJvclN0cmluZyosIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJMLCBj
b25zdCBTdHJpbmcqIG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCogb3B0aW9uYWxDb2x1bW5O
dW1iZXIsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG9wdGlvbnMs
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqLCBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVi
dWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9ucyk7CisgICAgdmlydHVhbCB2b2lkIHNldEJyZWFr
cG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q+JiBsb2NhdGlvbiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piog
b3B0aW9ucywgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCos
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+JiBhY3R1
YWxMb2NhdGlvbik7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUJyZWFrcG9pbnQoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZGVudGlmaWVyKTsKLSAgICB2aXJ0dWFsIHZv
aWQgY29udGludWVUb0xvY2F0aW9uKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4mIGxvY2F0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgY29udGludWVUb0xvY2F0aW9u
KEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYg
bG9jYXRpb24pOwogCi0gICAgdmlydHVhbCB2b2lkIHNlYXJjaEluQ29udGVudChFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJv
b2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hNYXRjaD4+
Jik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgc2NyaXB0SUQsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudCwgY29uc3QgYm9vbCog
cHJldmlldywgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RGVidWdnZXI6
OkNhbGxGcmFtZT4+JiBuZXdDYWxsRnJhbWVzLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcmVz
dWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiBzY3JpcHRJRCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogb3B0
aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdl
OjpTZWFyY2hNYXRjaD4+Jik7CisgICAgdmlydHVhbCB2b2lkIHNldFNjcmlwdFNvdXJjZShFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVu
dCwgY29uc3QgYm9vbCogcHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFy
cmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiYgbmV3Q2Fs
bEZyYW1lcywgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgcmVzdWx0KTsKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiBzY3JpcHRJRCwgU3RyaW5nKiBzY3JpcHRTb3VyY2UpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRG
dW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4mKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZ2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBm
dW5jdGlvbklkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkZ1bmN0
aW9uRGV0YWlscz4mKTsKICAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoRXJyb3JTdHJpbmcqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVzdW1lKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIHN0
ZXBPdmVyKEVycm9yU3RyaW5nKik7CkBAIC0xMDYsMTUgKzExNCwxNSBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wqIGRvTm90UGF1c2VPbkV4Y2VwdGlv
bnNBbmRNdXRlQ29uc29sZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9v
bCogcmV0dXJuQnlWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9v
bCogZ2VuZXJhdGVQcmV2aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8
VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3du
KTsKLSAgICB2b2lkIGNvbXBpbGVTY3JpcHQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGV4
cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0
PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6U2NyaXB0SWQ+KiwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1
dDxTdHJpbmc+KiBzeW50YXhFcnJvck1lc3NhZ2UpOwotICAgIHZvaWQgcnVuU2NyaXB0KEVycm9y
U3RyaW5nKiwgY29uc3QgVHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpTY3JpcHRJZCYsIGNvbnN0IGlu
dCogZXhlY3V0aW9uQ29udGV4dElkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBjb25zdCBi
b29sKiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIFJlZlB0cjxUeXBlQnVp
bGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0
cHV0PGJvb2w+KiB3YXNUaHJvd24pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpP
cHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7CisgICAgdm9pZCBjb21waWxlU2NyaXB0KEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkRlYnVnZ2VyOjpTY3JpcHRJZD4qLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRw
dXQ8U3RyaW5nPiogc3ludGF4RXJyb3JNZXNzYWdlKTsKKyAgICB2b2lkIHJ1blNjcmlwdChFcnJv
clN0cmluZyosIGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpTY3JpcHRJ
ZCYsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdy
b3VwLCBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1
bHQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0T3ZlcmxheU1lc3NhZ2UoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcqKTsKIAotICAgIHZvaWQgc2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChJbnNwZWN0
b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpFbnVtIGJyZWFrUmVhc29uLCBQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSk7CisgICAgdm9pZCBzY2hlZHVsZVBhdXNl
T25OZXh0U3RhdGVtZW50KEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFz
b246OkVudW0gYnJlYWtSZWFzb24sIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q+IGRhdGEpOwogICAgIHZvaWQgY2FuY2VsUGF1c2VPbk5leHRTdGF0ZW1lbnQoKTsKLSAgICB2
b2lkIGJyZWFrUHJvZ3JhbShJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVh
c29uOjpFbnVtIGJyZWFrUmVhc29uLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSk7
CisgICAgdm9pZCBicmVha1Byb2dyYW0oSW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNo
ZXI6OlJlYXNvbjo6RW51bSBicmVha1JlYXNvbiwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdD4gZGF0YSk7CiAgICAgdmlydHVhbCB2b2lkIHNjcmlwdEV4ZWN1dGlvbkJsb2Nr
ZWRCeUNTUChjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQpOwogCiAgICAgY2xhc3MgTGlzdGVu
ZXIgewpAQCAtMTQxLDIxICsxNDksMjEgQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB2b2lk
IGVuYWJsZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKCk7Ci0gICAgdmlydHVhbCB2b2lk
IGRpZFBhdXNlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMs
IGNvbnN0IFNjcmlwdFZhbHVlJiBleGNlcHRpb24pOworICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVz
ZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBjYWxsRnJh
bWVzLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZXhjZXB0aW9uKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ29udGludWUoKTsKICAgICB2b2lkIHJlc2V0KCk7CiAKIHByaXZhdGU6CiAg
ICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9OwogCi0gICAgUGFz
c1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJh
bWU+PiBjdXJyZW50Q2FsbEZyYW1lcygpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFt
ZT4+IGN1cnJlbnRDYWxsRnJhbWVzKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUGFyc2VTb3Vy
Y2UoU291cmNlSUQsIGNvbnN0IFNjcmlwdCYpIE9WRVJSSURFIEZJTkFMOwogICAgIHZpcnR1YWwg
dm9pZCBmYWlsZWRUb1BhcnNlU291cmNlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
IGRhdGEsIGludCBmaXJzdExpbmUsIGludCBlcnJvckxpbmUsIGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlKSBPVkVSUklERSBGSU5BTDsKIAogICAgIHZvaWQgc2V0UGF1c2VPbkV4Y2VwdGlvbnNJ
bXBsKEVycm9yU3RyaW5nKiwgaW50KTsKIAotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRl
YnVnZ2VyOjpMb2NhdGlvbj4gcmVzb2x2ZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBicmVha3Bv
aW50SWRlbnRpZmllciwgU291cmNlSUQsIGNvbnN0IFNjcmlwdEJyZWFrcG9pbnQmKTsKKyAgICBQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gcmVz
b2x2ZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWRlbnRpZmllciwgU291cmNl
SUQsIGNvbnN0IFNjcmlwdEJyZWFrcG9pbnQmKTsKICAgICB2b2lkIGNsZWFyKCk7CiAgICAgYm9v
bCBhc3NlcnRQYXVzZWQoRXJyb3JTdHJpbmcqKTsKICAgICB2b2lkIGNsZWFyQnJlYWtEZXRhaWxz
KCk7CkBAIC0xNjQsMTkgKzE3MiwxOSBAQCBwcml2YXRlOgogCiAgICAgdHlwZWRlZiBIYXNoTWFw
PFNvdXJjZUlELCBTY3JpcHQ+IFNjcmlwdHNNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmlu
ZywgVmVjdG9yPEJyZWFrcG9pbnRJRD4+IEJyZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZl
ckJyZWFrcG9pbnRJRHNNYXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4+IEJyZWFrcG9pbnRJZGVudGlmaWVyVG9CcmVha3BvaW50TWFwOworICAg
IHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4+IEJyZWFrcG9pbnRJZGVudGlmaWVyVG9CcmVha3BvaW50TWFwOwogCiAgICAgSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8SW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRj
aGVyOwogICAgIFJlZlB0cjxJbnNwZWN0b3JEZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVyPiBtX2Jh
Y2tlbmREaXNwYXRjaGVyOwogICAgIEpTQzo6RXhlY1N0YXRlKiBtX3BhdXNlZFNjcmlwdFN0YXRl
OwotICAgIFNjcmlwdFZhbHVlIG1fY3VycmVudENhbGxTdGFjazsKKyAgICBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSBtX2N1cnJlbnRDYWxsU3RhY2s7CiAgICAgU2NyaXB0c01hcCBtX3NjcmlwdHM7
CiAgICAgQnJlYWtwb2ludElkZW50aWZpZXJUb0RlYnVnU2VydmVyQnJlYWtwb2ludElEc01hcCBt
X2JyZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHM7CiAgICAgQnJl
YWtwb2ludElkZW50aWZpZXJUb0JyZWFrcG9pbnRNYXAgbV9qYXZhU2NyaXB0QnJlYWtwb2ludHM7
CiAgICAgQnJlYWtwb2ludElEIG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElEOwogICAg
IEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkVudW0gbV9icmVh
a1JlYXNvbjsKLSAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtX2JyZWFrQXV4RGF0YTsKKyAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1fYnJlYWtBdXhEYXRhOwogICAg
IGJvb2wgbV9lbmFibGVkOwogICAgIGJvb2wgbV9qYXZhU2NyaXB0UGF1c2VTY2hlZHVsZWQ7CiAg
ICAgTGlzdGVuZXIqIG1fbGlzdGVuZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRm9yd2FyZGluZy5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZvcndhcmRpbmcuaAppbmRleCBmNjA2NTk0Li5mNjhmY2RjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRm9yd2FyZGluZy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGb3J3YXJkaW5nLmgKQEAgLTMwLDcgKzMwLDcg
QEAKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCA6IHB1Ymxp
YyBJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCB7IH07Cit0eXBlZGVmIEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsK
IH0KIAogI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckZvcndhcmRpbmdfaCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsLmNwcAppbmRleCA4NzExYThlLi5hYThjYTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCkBAIC00
OCwxNyArNDgsMTkgQEAKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJQYWdlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9u
Q2FsbC5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUgIlNjcmlwdEdsb2Jh
bE9iamVjdC5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgi
CiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRW
YWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAordXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgY2hhciog
aW5zcGVjdG9yQXR0YWNoZWRIZWlnaHRTZXR0aW5nID0gImluc3BlY3RvckF0dGFjaGVkSGVpZ2h0
IjsKQEAgLTM0NCw3ICszNDYsNyBAQCBib29sIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6
OmlzVW5kZXJUZXN0KCkKIAogYm9vbCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpldmFs
dWF0ZUFzQm9vbGVhbihjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24pCiB7Ci0gICAgU2NyaXB0VmFs
dWUgdmFsdWUgPSBtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNj
cmlwdChleHByZXNzaW9uKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB2YWx1ZSA9IG1f
ZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KGV4cHJlc3Np
b24pOwogICAgIHJldHVybiB2YWx1ZS50b1N0cmluZyhtYWluV29ybGRFeGVjU3RhdGUoJm1fZnJv
bnRlbmRQYWdlLT5tYWluRnJhbWUoKSkpID09ICJ0cnVlIjsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAppbmRleCBiZTI0ZTFl
Li4yODA5ZjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckFn
ZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50LmgiCisjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgi
CiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1
ZGUgIlBhZ2UuaCIKQEAgLTUzLDI5ICs1NCwzMyBAQAogI2luY2x1ZGUgIlJlc291cmNlRXJyb3Iu
aCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3Bv
bnNlLmgiCi0jaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCisjaW5jbHVkZSAiU2NyaXB0
R2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTb3Vu
ZC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCisjaW5jbHVkZSA8YmluZGlu
Z3MvU2NyaXB0RnVuY3Rpb25DYWxsLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgog
Cit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNp
ZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKIGNsYXNzIEZyb250ZW5kTWVudVByb3ZpZGVyIDogcHVi
bGljIENvbnRleHRNZW51UHJvdmlkZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEZyb250ZW5kTWVudVByb3ZpZGVyPiBjcmVhdGUoSW5zcGVjdG9yRnJvbnRlbmRIb3N0KiBmcm9u
dGVuZEhvc3QsIFNjcmlwdE9iamVjdCBmcm9udGVuZEFwaU9iamVjdCwgY29uc3QgVmVjdG9yPENv
bnRleHRNZW51SXRlbT4mIGl0ZW1zKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZyb250ZW5kTWVu
dVByb3ZpZGVyPiBjcmVhdGUoSW5zcGVjdG9yRnJvbnRlbmRIb3N0KiBmcm9udGVuZEhvc3QsIERl
cHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBmcm9udGVuZEFwaU9iamVjdCwgY29uc3QgVmVjdG9yPENv
bnRleHRNZW51SXRlbT4mIGl0ZW1zKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBGcm9udGVuZE1lbnVQcm92aWRlcihmcm9udGVuZEhvc3QsIGZyb250ZW5kQXBpT2JqZWN0LCBp
dGVtcykpOwogICAgIH0KICAgICAKICAgICB2b2lkIGRpc2Nvbm5lY3QoKQogICAgIHsKLSAgICAg
ICAgbV9mcm9udGVuZEFwaU9iamVjdCA9IFNjcmlwdE9iamVjdCgpOworICAgICAgICBtX2Zyb250
ZW5kQXBpT2JqZWN0ID0gRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KCk7CiAgICAgICAgIG1fZnJv
bnRlbmRIb3N0ID0gMDsKICAgICB9CiAgICAgCiBwcml2YXRlOgotICAgIEZyb250ZW5kTWVudVBy
b3ZpZGVyKEluc3BlY3RvckZyb250ZW5kSG9zdCogZnJvbnRlbmRIb3N0LCBTY3JpcHRPYmplY3Qg
ZnJvbnRlbmRBcGlPYmplY3QsIGNvbnN0IFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+JiBpdGVtcykK
KyAgICBGcm9udGVuZE1lbnVQcm92aWRlcihJbnNwZWN0b3JGcm9udGVuZEhvc3QqIGZyb250ZW5k
SG9zdCwgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IGZyb250ZW5kQXBpT2JqZWN0LCBjb25zdCBW
ZWN0b3I8Q29udGV4dE1lbnVJdGVtPiYgaXRlbXMpCiAgICAgICAgIDogbV9mcm9udGVuZEhvc3Qo
ZnJvbnRlbmRIb3N0KQogICAgICAgICAsIG1fZnJvbnRlbmRBcGlPYmplY3QoZnJvbnRlbmRBcGlP
YmplY3QpCiAgICAgICAgICwgbV9pdGVtcyhpdGVtcykKQEAgLTk5LDcgKzEwNCw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKERl
ZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwogICAgICAgICAgICAgaW50IGl0ZW1OdW1i
ZXIgPSBpdGVtLT5hY3Rpb24oKSAtIENvbnRleHRNZW51SXRlbUJhc2VDdXN0b21UYWc7CiAKLSAg
ICAgICAgICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2Zyb250ZW5kQXBpT2JqZWN0
LCAiY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQiKTsKKyAgICAgICAgICAgIERlcHJlY2F0ZWQ6OlNj
cmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2Zyb250ZW5kQXBpT2JqZWN0LCAiY29udGV4dE1l
bnVJdGVtU2VsZWN0ZWQiLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVh
ZCk7CiAgICAgICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChpdGVtTnVtYmVyKTsKICAg
ICAgICAgICAgIGZ1bmN0aW9uLmNhbGwoKTsKICAgICAgICAgfQpAQCAtMTA4LDcgKzExMyw3IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51Q2xlYXJlZCgpCiAgICAgewog
ICAgICAgICBpZiAobV9mcm9udGVuZEhvc3QpIHsKLSAgICAgICAgICAgIFNjcmlwdEZ1bmN0aW9u
Q2FsbCBmdW5jdGlvbihtX2Zyb250ZW5kQXBpT2JqZWN0LCAiY29udGV4dE1lbnVDbGVhcmVkIik7
CisgICAgICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9m
cm9udGVuZEFwaU9iamVjdCwgImNvbnRleHRNZW51Q2xlYXJlZCIsIFdlYkNvcmU6OmZ1bmN0aW9u
Q2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICAgICAgICAgIGZ1bmN0aW9uLmNhbGwoKTsK
IAogICAgICAgICAgICAgbV9mcm9udGVuZEhvc3QtPm1fbWVudVByb3ZpZGVyID0gMDsKQEAgLTEx
Nyw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIEluc3BlY3RvckZyb250ZW5kSG9z
dCogbV9mcm9udGVuZEhvc3Q7Ci0gICAgU2NyaXB0T2JqZWN0IG1fZnJvbnRlbmRBcGlPYmplY3Q7
CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IG1fZnJvbnRlbmRBcGlPYmplY3Q7CiAgICAg
VmVjdG9yPENvbnRleHRNZW51SXRlbT4gbV9pdGVtczsKIH07CiAjZW5kaWYKQEAgLTI3Miw3ICsy
NzcsNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6c2hvd0NvbnRleHRNZW51KEV2ZW50
KiBldmVudCwgY29uc3QgVmVjdG9yPENvbnRleHRNZQogCiAgICAgQVNTRVJUKG1fZnJvbnRlbmRQ
YWdlKTsKICAgICBKU0M6OkV4ZWNTdGF0ZSogZnJvbnRlbmRFeGVjU3RhdGUgPSBleGVjU3RhdGVG
cm9tUGFnZShkZWJ1Z2dlcldvcmxkKCksIG1fZnJvbnRlbmRQYWdlKTsKLSAgICBTY3JpcHRPYmpl
Y3QgZnJvbnRlbmRBcGlPYmplY3Q7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IGZyb250
ZW5kQXBpT2JqZWN0OwogICAgIGlmICghU2NyaXB0R2xvYmFsT2JqZWN0OjpnZXQoZnJvbnRlbmRF
eGVjU3RhdGUsICJJbnNwZWN0b3JGcm9udGVuZEFQSSIsIGZyb250ZW5kQXBpT2JqZWN0KSkgewog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5j
cHAKaW5kZXggMDgxNGEwZi4uN2I3ODhhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuY3BwCkBAIC0zOSw2ICszOSw4
IEBACiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIlNjcmlwdFBy
b2ZpbGVyLmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IFVzZXJJbml0aWF0ZWRQcm9maWxlTmFt
ZUhlYXAgPSAib3JnLndlYmtpdC5wcm9maWxlcy51c2VyLWluaXRpYXRlZCI7CkBAIC00OSw3ICs1
MSw3IEBAIFBhc3NPd25QdHI8SW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ+IEluc3BlY3Rvckhl
YXBQcm9maWxlckFnZW50OjpjcmVhdGUoSW5zdHJ1CiB9CiAKIEluc3BlY3RvckhlYXBQcm9maWxl
ckFnZW50OjpJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0
TWFuYWdlcikKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIkhlYXBQcm9m
aWxlciIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFT
Q0lJTGl0ZXJhbCgiSGVhcFByb2ZpbGVyIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBt
X2luamVjdGVkU2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBtX25l
eHRVc2VySW5pdGlhdGVkSGVhcFNuYXBzaG90TnVtYmVyKDEpCiAgICAgLCBtX3Byb2ZpbGVIZWFk
ZXJzUmVxdWVzdGVkKGZhbHNlKQpAQCAtODAsNyArODIsNyBAQCB2b2lkIEluc3BlY3RvckhlYXBQ
cm9maWxlckFnZW50OjpyZXNldEZyb250ZW5kUHJvZmlsZXMoKQogICAgICAgICBtX2Zyb250ZW5k
RGlzcGF0Y2hlci0+cmVzZXRQcm9maWxlcygpOwogfQogCi12b2lkIEluc3BlY3RvckhlYXBQcm9m
aWxlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNr
ZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCog
ZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3Bh
dGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3RvckhlYXBQcm9maWxlckZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsK
ICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9ySGVhcFByb2ZpbGVyQmFja2VuZERp
c3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CkBAIC05OSw5ICsxMDEs
OSBAQCB2b2lkIEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50Ojpjb2xsZWN0R2FyYmFnZShXZWJD
b3JlOjpFcnJvclN0cmluZyopCiAgICAgU2NyaXB0UHJvZmlsZXI6OmNvbGxlY3RHYXJiYWdlKCk7
CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkhlYXBQcm9maWxlcjo6UHJvZmlsZUhlYWRl
cj4gSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OmNyZWF0ZVNuYXBzaG90SGVhZGVyKGNvbnN0
IFNjcmlwdEhlYXBTbmFwc2hvdCYgc25hcHNob3QpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkhlYXBQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4gSW5zcGVjdG9ySGVhcFByb2Zp
bGVyQWdlbnQ6OmNyZWF0ZVNuYXBzaG90SGVhZGVyKGNvbnN0IFNjcmlwdEhlYXBTbmFwc2hvdCYg
c25hcHNob3QpCiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpIZWFwUHJvZmlsZXI6OlByb2Zp
bGVIZWFkZXI+IGhlYWRlciA9IFR5cGVCdWlsZGVyOjpIZWFwUHJvZmlsZXI6OlByb2ZpbGVIZWFk
ZXI6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkhlYXBQcm9m
aWxlcjo6UHJvZmlsZUhlYWRlcj4gaGVhZGVyID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6SGVh
cFByb2ZpbGVyOjpQcm9maWxlSGVhZGVyOjpjcmVhdGUoKQogICAgICAgICAuc2V0VWlkKHNuYXBz
aG90LnVpZCgpKQogICAgICAgICAuc2V0VGl0bGUoc25hcHNob3QudGl0bGUoKSk7CiAgICAgaGVh
ZGVyLT5zZXRNYXhKU09iamVjdElkKHNuYXBzaG90Lm1heFNuYXBzaG90SlNPYmplY3RJZCgpKTsK
QEAgLTExMywxMCArMTE1LDEwIEBAIHZvaWQgSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6Omhh
c0hlYXBQcm9maWxlcihFcnJvclN0cmluZyosIGJvb2wqIHJlc3VsdCkKICAgICAqcmVzdWx0ID0g
U2NyaXB0UHJvZmlsZXI6Omhhc0hlYXBQcm9maWxlcigpOwogfQogCi12b2lkIEluc3BlY3Rvckhl
YXBQcm9maWxlckFnZW50OjpnZXRQcm9maWxlSGVhZGVycyhFcnJvclN0cmluZyosIFJlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkhlYXBQcm9maWxlcjo6UHJvZmlsZUhlYWRl
cj4+JiBoZWFkZXJzKQordm9pZCBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6Z2V0UHJvZmls
ZUhlYWRlcnMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6SGVhcFByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPj4m
IGhlYWRlcnMpCiB7CiAgICAgbV9wcm9maWxlSGVhZGVyc1JlcXVlc3RlZCA9IHRydWU7Ci0gICAg
aGVhZGVycyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6SGVhcFByb2ZpbGVyOjpQ
cm9maWxlSGVhZGVyPjo6Y3JlYXRlKCk7CisgICAgaGVhZGVycyA9IEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkhlYXBQcm9maWxlcjo6UHJvZmls
ZUhlYWRlcj46OmNyZWF0ZSgpOwogCiAgICAgSWRUb0hlYXBTbmFwc2hvdE1hcDo6aXRlcmF0b3Ig
c25hcHNob3RzRW5kID0gbV9zbmFwc2hvdHMuZW5kKCk7CiAgICAgZm9yIChJZFRvSGVhcFNuYXBz
aG90TWFwOjppdGVyYXRvciBpdCA9IG1fc25hcHNob3RzLmJlZ2luKCk7IGl0ICE9IHNuYXBzaG90
c0VuZDsgKytpdCkKQEAgLTE5MCw3ICsxOTIsNyBAQCB2b2lkIEluc3BlY3RvckhlYXBQcm9maWxl
ckFnZW50Ojp0YWtlSGVhcFNuYXBzaG90KEVycm9yU3RyaW5nKiwgY29uc3QgYm9vbCogcmVwbwog
ICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6Z2V0T2JqZWN0QnlI
ZWFwT2JqZWN0SWQoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIGhlYXBTbmFwc2hv
dE9iamVjdElkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8VHlwZUJ1aWxkZXI6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9ySGVhcFByb2Zp
bGVyQWdlbnQ6OmdldE9iamVjdEJ5SGVhcE9iamVjdElkKEVycm9yU3RyaW5nKiBlcnJvciwgY29u
c3QgU3RyaW5nJiBoZWFwU25hcHNob3RPYmplY3RJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91
cCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4m
IHJlc3VsdCkKIHsKICAgICBib29sIG9rOwogICAgIHVuc2lnbmVkIGlkID0gaGVhcFNuYXBzaG90
T2JqZWN0SWQudG9VSW50KCZvayk7CkBAIC0xOTgsNyArMjAwLDcgQEAgdm9pZCBJbnNwZWN0b3JI
ZWFwUHJvZmlsZXJBZ2VudDo6Z2V0T2JqZWN0QnlIZWFwT2JqZWN0SWQoRXJyb3JTdHJpbmcqIGVy
cm9yLCBjb24KICAgICAgICAgKmVycm9yID0gIkludmFsaWQgaGVhcCBzbmFwc2hvdCBvYmplY3Qg
aWQiOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIFNjcmlwdE9iamVjdCBoZWFwT2JqZWN0
ID0gU2NyaXB0UHJvZmlsZXI6Om9iamVjdEJ5SGVhcE9iamVjdElkKGlkKTsKKyAgICBEZXByZWNh
dGVkOjpTY3JpcHRPYmplY3QgaGVhcE9iamVjdCA9IFNjcmlwdFByb2ZpbGVyOjpvYmplY3RCeUhl
YXBPYmplY3RJZChpZCk7CiAgICAgaWYgKGhlYXBPYmplY3QuaGFzTm9WYWx1ZSgpKSB7CiAgICAg
ICAgICplcnJvciA9ICJPYmplY3QgaXMgbm90IGF2YWlsYWJsZSI7CiAgICAgICAgIHJldHVybjsK
QEAgLTIyMCw3ICsyMjIsNyBAQCB2b2lkIEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpnZXRI
ZWFwT2JqZWN0SWQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdAogICAgICAgICAqZXJy
b3JTdHJpbmcgPSAiSW5zcGVjdGVkIGNvbnRleHQgaGFzIGdvbmUiOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIFNjcmlwdFZhbHVlIHZhbHVlID0gaW5qZWN0ZWRTY3JpcHQuZmluZE9iamVj
dEJ5SWQob2JqZWN0SWQpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHZhbHVlID0gaW5q
ZWN0ZWRTY3JpcHQuZmluZE9iamVjdEJ5SWQob2JqZWN0SWQpOwogICAgIGlmICh2YWx1ZS5oYXNO
b1ZhbHVlKCkgfHwgdmFsdWUuaXNVbmRlZmluZWQoKSkgewogICAgICAgICAqZXJyb3JTdHJpbmcg
PSAiT2JqZWN0IHdpdGggZ2l2ZW4gaWQgbm90IGZvdW5kIjsKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdl
bnQuaAppbmRleCBjYzM2ODY4Li42MmMxM2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuaApAQCAtMzMsOCArMzMsOSBA
QAogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRShJTlNQRUNUT1Ip
CiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgorI2lu
Y2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
QEAgLTQ5LDcgKzUwLDcgQEAgY2xhc3MgU2NyaXB0UHJvZmlsZTsKIAogdHlwZWRlZiBTdHJpbmcg
RXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50IDogcHVibGlj
IEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3RvckhlYXBQcm9maWxlckJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudCA6IHB1
YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JIZWFwUHJvZmlsZXJCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3Rv
ckhlYXBQcm9maWxlckFnZW50KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ+IGNyZWF0ZShJ
bnN0cnVtZW50aW5nQWdlbnRzKiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKik7CkBAIC02MSwxNiAr
NjIsMTYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGhhc0hlYXBQcm9maWxlcihFcnJv
clN0cmluZyosIGJvb2wqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9maWxlSGVhZGVycyhF
cnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkhlYXBQ
cm9maWxlcjo6UHJvZmlsZUhlYWRlcj4+Jik7CisgICAgdmlydHVhbCB2b2lkIGdldFByb2ZpbGVI
ZWFkZXJzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkhlYXBQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4+Jik7
CiAgICAgdmlydHVhbCB2b2lkIGdldEhlYXBTbmFwc2hvdChFcnJvclN0cmluZyosIGludCB1aWQp
OwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVQcm9maWxlKEVycm9yU3RyaW5nKiwgaW50IHVpZCk7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCB0YWtlSGVhcFNuYXBz
aG90KEVycm9yU3RyaW5nKiwgY29uc3QgYm9vbCogcmVwb3J0UHJvZ3Jlc3MpOwogCi0gICAgdmly
dHVhbCB2b2lkIGdldE9iamVjdEJ5SGVhcE9iamVjdElkKEVycm9yU3RyaW5nKiwgY29uc3QgU3Ry
aW5nJiBoZWFwU25hcHNob3RPYmplY3RJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgUmVm
UHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpOworICAgIHZp
cnR1YWwgdm9pZCBnZXRPYmplY3RCeUhlYXBPYmplY3RJZChFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYgaGVhcFNuYXBzaG90T2JqZWN0SWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1
bHQpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRIZWFwT2JqZWN0SWQoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIG9iamVjdElkLCBTdHJpbmcqIGhlYXBTbmFwc2hvdE9iamVjdElkKTsKIAogcHJp
dmF0ZToKQEAgLTgwLDcgKzgxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVzZXRGcm9udGVu
ZFByb2ZpbGVzKCk7CiAKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpIZWFwUHJvZmlsZXI6
OlByb2ZpbGVIZWFkZXI+IGNyZWF0ZVNuYXBzaG90SGVhZGVyKGNvbnN0IFNjcmlwdEhlYXBTbmFw
c2hvdCYpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6SGVhcFByb2Zp
bGVyOjpQcm9maWxlSGVhZGVyPiBjcmVhdGVTbmFwc2hvdEhlYWRlcihjb25zdCBTY3JpcHRIZWFw
U25hcHNob3QmKTsKIAogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckhlYXBQcm9maWxlckZyb250
ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAppbmRleCBhMDI1NzEz
Li5mYjQyZjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTYxLDI3ICs2MSwyOCBAQAogI2luY2x1ZGUgIkluamVj
dGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JQYWdlQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNs
dWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIK
LQorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpBcnJheTsKLXVzaW5nIFdl
YkNvcmU6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6OkRhdGFiYXNlV2l0aE9iamVjdFN0b3JlczsK
LXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6OkRhdGFFbnRyeTsKLXVzaW5n
IFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6OktleTsKLXVzaW5nIFdlYkNvcmU6OlR5
cGVCdWlsZGVyOjpJbmRleGVkREI6OktleVBhdGg7Ci11c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRl
cjo6SW5kZXhlZERCOjpLZXlSYW5nZTsKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpJbmRl
eGVkREI6Ok9iamVjdFN0b3JlOwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkluZGV4ZWRE
Qjo6T2JqZWN0U3RvcmVJbmRleDsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5
OwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpEYXRhYmFzZVdpdGhP
YmplY3RTdG9yZXM7Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6OkRh
dGFFbnRyeTsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6S2V5Owor
dXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpLZXlQYXRoOwordXNpbmcg
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpLZXlSYW5nZTsKK3VzaW5nIEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmU7Cit1c2luZyBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlSW5kZXg7CiAKK3R5cGVkZWYg
SW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlIFJlcXVl
c3RDYWxsYmFjazsKIHR5cGVkZWYgV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhlZERCQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyOjpSZXF1ZXN0RGF0YWJhc2VOYW1lc0NhbGxiYWNrIFJlcXVlc3REYXRh
YmFzZU5hbWVzQ2FsbGJhY2s7CiB0eXBlZGVmIFdlYkNvcmU6Okluc3BlY3RvckluZGV4ZWREQkJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UmVxdWVzdERhdGFiYXNlQ2FsbGJhY2sgUmVxdWVzdERh
dGFiYXNlQ2FsbGJhY2s7CiB0eXBlZGVmIFdlYkNvcmU6Okluc3BlY3RvckluZGV4ZWREQkJhY2tl
bmREaXNwYXRjaGVySGFuZGxlcjo6UmVxdWVzdERhdGFDYWxsYmFjayBSZXF1ZXN0RGF0YUNhbGxi
YWNrOwotdHlwZWRlZiBXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJh
Y2tCYXNlIFJlcXVlc3RDYWxsYmFjazsKIHR5cGVkZWYgV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhl
ZERCQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpDbGVhck9iamVjdFN0b3JlQ2FsbGJhY2sgQ2xl
YXJPYmplY3RTdG9yZUNhbGxiYWNrOwogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSB7CkBAIC0xMjMsNyArMTI0LDcgQEAgcHVi
bGljOgogICAgICAgICB9CiAKICAgICAgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGRhdGFiYXNl
TmFtZXNMaXN0ID0gcmVxdWVzdFJlc3VsdC0+ZG9tU3RyaW5nTGlzdCgpOwotICAgICAgICBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IGRhdGFiYXNlTmFtZXMgPSBUeXBlQnVpbGRl
cjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBkYXRhYmFzZU5hbWVzID0gSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgZGF0YWJhc2VOYW1lc0xpc3QtPmxlbmd0aCgpOyArK2kpCiAgICAgICAgICAgICBk
YXRhYmFzZU5hbWVzLT5hZGRJdGVtKGRhdGFiYXNlTmFtZXNMaXN0LT5pdGVtKGkpKTsKICAgICAg
ICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRTdWNjZXNzKGRhdGFiYXNlTmFtZXMucmVsZWFzZSgp
KTsKQEAgLTI1MCw3ICsyNTEsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxLZXlQYXRoPiBrZXlQYXRo
RnJvbUlEQktleVBhdGgoY29uc3QgSURCS2V5UGF0aCYgaWRiS2V5UGF0aCkKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBJREJLZXlQYXRoOjpBcnJheVR5cGU6IHsKICAgICAgICAga2V5UGF0aCA9
IEtleVBhdGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6VHlwZTo6QXJyYXkpOwotICAgICAg
ICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IGFycmF5ID0gVHlwZUJ1aWxkZXI6
OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gYXJyYXkgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpB
cnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0
cmluZ0FycmF5ID0gaWRiS2V5UGF0aC5hcnJheSgpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHN0cmluZ0FycmF5LnNpemUoKTsgKytpKQogICAgICAgICAgICAgYXJyYXktPmFkZEl0
ZW0oc3RyaW5nQXJyYXlbaV0pOwpAQCAtMjg1LDEyICsyODYsMTIgQEAgcHVibGljOgogCiAgICAg
ICAgIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEgZGF0YWJhc2VNZXRhZGF0YSA9IGlkYkRhdGFi
YXNlLT5tZXRhZGF0YSgpOwogCi0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlw
ZUJ1aWxkZXI6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmU+PiBvYmplY3RTdG9yZXMgPSBUeXBlQnVp
bGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmU+OjpjcmVhdGUo
KTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmU+PiBvYmplY3RTdG9yZXMgPSBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpJbmRl
eGVkREI6Ok9iamVjdFN0b3JlPjo6Y3JlYXRlKCk7CiAKICAgICAgICAgZm9yIChJREJEYXRhYmFz
ZU1ldGFkYXRhOjpPYmplY3RTdG9yZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBkYXRhYmFzZU1l
dGFkYXRhLm9iamVjdFN0b3Jlcy5iZWdpbigpOyBpdCAhPSBkYXRhYmFzZU1ldGFkYXRhLm9iamVj
dFN0b3Jlcy5lbmQoKTsgKytpdCkgewogICAgICAgICAgICAgY29uc3QgSURCT2JqZWN0U3RvcmVN
ZXRhZGF0YSYgb2JqZWN0U3RvcmVNZXRhZGF0YSA9IGl0LT52YWx1ZTsKIAotICAgICAgICAgICAg
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpPYmplY3RT
dG9yZUluZGV4Pj4gaW5kZXhlcyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6SW5k
ZXhlZERCOjpPYmplY3RTdG9yZUluZGV4Pjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6SW5k
ZXhlZERCOjpPYmplY3RTdG9yZUluZGV4Pj4gaW5kZXhlcyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmVJ
bmRleD46OmNyZWF0ZSgpOwogCiAgICAgICAgICAgICBmb3IgKElEQk9iamVjdFN0b3JlTWV0YWRh
dGE6OkluZGV4TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG9iamVjdFN0b3JlTWV0YWRhdGEuaW5k
ZXhlcy5iZWdpbigpOyBpdCAhPSBvYmplY3RTdG9yZU1ldGFkYXRhLmluZGV4ZXMuZW5kKCk7ICsr
aXQpIHsKICAgICAgICAgICAgICAgICBjb25zdCBJREJJbmRleE1ldGFkYXRhJiBpbmRleE1ldGFk
YXRhID0gaXQtPnZhbHVlOwpAQCAtNTU3LDcgKzU1OCw3IEBAIHB1YmxpYzoKIH0gLy8gbmFtZXNw
YWNlCiAKIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudChJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbmplY3RlZFNjcmlwdE1h
bmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdl
bnQpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJJbmRleGVkREIiKSwg
aW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVy
YWwoIkluZGV4ZWREQiIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9wYWdlQWdlbnQocGFn
ZUFnZW50KQogewpAQCAtNTY3LDcgKzU2OCw3IEBAIEluc3BlY3RvckluZGV4ZWREQkFnZW50Ojp+
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQoKQogewogfQogCi12b2lkIEluc3BlY3RvckluZGV4ZWRE
QkFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9p
ZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJ
bnNwZWN0b3JJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRj
aGVyLCB0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbmRleGVkREJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluZGV4ZWREQkFnZW50LmgKaW5kZXggYmEzNzU5YS4uYjk1NTIxMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgKQEAgLTMzLDcg
KzMzLDggQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpICYmIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNl
LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIApAQCAtNDQsNyArNDUsNyBAQCBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CiAK
IHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JJbmRleGVkREJB
Z2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JJbmRleGVk
REJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9ySW5kZXhlZERC
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0
cjxJbnNwZWN0b3JJbmRleGVkREJBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHMsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKICAgICB7CkBAIC01Miw3ICs1
Myw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgfkluc3BlY3RvckluZGV4ZWREQkFnZW50KCk7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Oklu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFu
ZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9udC1lbmQu
CkBAIC02MCw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJv
clN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RGF0YWJhc2VOYW1lcyhFcnJvclN0
cmluZyosIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIFBhc3NSZWZQdHI8UmVxdWVzdERh
dGFiYXNlTmFtZXNDYWxsYmFjaz4pOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RGF0YWJhc2Uo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcm
IGRhdGFiYXNlTmFtZSwgUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YWJhc2VDYWxsYmFjaz4pOwotICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0RGF0YShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2Vj
dXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIG9i
amVjdFN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUsIGludCBza2lwQ291bnQsIGlu
dCBwYWdlU2l6ZSwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGtleVJhbmdlLCBQYXNz
UmVmUHRyPFJlcXVlc3REYXRhQ2FsbGJhY2s+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERh
dGEoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJp
bmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIGNvbnN0IFN0
cmluZyYgaW5kZXhOYW1lLCBpbnQgc2tpcENvdW50LCBpbnQgcGFnZVNpemUsIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIGtleVJhbmdlLCBQYXNzUmVmUHRyPFJlcXVl
c3REYXRhQ2FsbGJhY2s+KTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJPYmplY3RTdG9yZShFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgaW5fc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYg
aW5fZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGluX29iamVjdFN0b3JlTmFtZSwgUGFzc1Jl
ZlB0cjxDbGVhck9iamVjdFN0b3JlQ2FsbGJhY2s+KTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50LmNwcAppbmRleCA3ZWNjYjhk
Li5jNGI4Nzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5wdXRBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
cHV0QWdlbnQuY3BwCkBAIC00OSwxMCArNDksMTIgQEAKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRp
bWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAordXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbnNwZWN0b3JJbnB1dEFnZW50
OjpJbnNwZWN0b3JJbnB1dEFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdB
Z2VudHMsIFBhZ2UqIHBhZ2UpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFs
KCJJbnB1dCIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNl
KEFTQ0lJTGl0ZXJhbCgiSW5wdXQiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fcGFn
ZShwYWdlKQogewogfQpAQCAtNjEsNyArNjMsNyBAQCBJbnNwZWN0b3JJbnB1dEFnZW50Ojp+SW5z
cGVjdG9ySW5wdXRBZ2VudCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5wdXRBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9y
SW5wdXRBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmRE
aXNwYXRjaGVyKQogewogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JJbnB1dEJh
Y2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcklucHV0QWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50LmgKaW5kZXggYWNi
YTI5OS4uNGUwNjJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvcklucHV0QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5wdXRBZ2VudC5oCkBAIC0zMyw4ICszMyw4IEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQog
Ci0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCi0KKyNpbmNsdWRlICJJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIK
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDQsNyArNDQsNyBAQCBjbGFz
cyBQYWdlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9y
SW5wdXRBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JJ
bnB1dEJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JJbnB1dEFnZW50
IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3RvcklucHV0QmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JJ
bnB1dEFnZW50KTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JJbnB1
dEFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywg
UGFnZSogcGFnZSkKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogCiAgICAgfkluc3BlY3Rvcklu
cHV0QWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVz
dHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgLy8gTWV0aG9kcyBjYWxs
ZWQgZnJvbSB0aGUgZnJvbnRlbmQgZm9yIHNpbXVsYXRpbmcgaW5wdXQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4
IGM0YzUxY2IuLjExN2RiMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC04Myw2ICs4Myw4IEBACiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAor
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0
aWMgY29uc3QgY2hhciogY29uc3QgcmVxdWVzdEFuaW1hdGlvbkZyYW1lRXZlbnROYW1lID0gInJl
cXVlc3RBbmltYXRpb25GcmFtZSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggYmQ1Yzk1Mi4uMzNiNmJjMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aApAQCAtNDUsNiArNDUsMTAgQEAKICNpbmNsdWRlICJXZWJTb2NrZXRGcmFtZS5oIgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KIAorbmFtZXNwYWNlIERlcHJlY2F0ZWQgeworY2xhc3MgU2NyaXB0
T2JqZWN0OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU1J1bGU7CkBAIC03
Nyw3ICs4MSw2IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTY3JpcHRBcmd1bWVu
dHM7CiBjbGFzcyBTY3JpcHRDYWxsU3RhY2s7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OwotY2xhc3MgU2NyaXB0T2JqZWN0OwogY2xhc3MgU2NyaXB0UHJvZmlsZTsKIGNsYXNzIFNlY3Vy
aXR5T3JpZ2luOwogY2xhc3MgU2hhZG93Um9vdDsKQEAgLTI3Niw5ICsyNzksOSBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lRXJyb3IoRG9jdW1lbnQq
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsK
ICNlbmRpZgogCi0gICAgc3RhdGljIFNjcmlwdE9iamVjdCB3cmFwQ2FudmFzMkRSZW5kZXJpbmdD
b250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKERvY3VtZW50KiwgY29uc3QgU2NyaXB0T2JqZWN0Jik7
CisgICAgc3RhdGljIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCB3cmFwQ2FudmFzMkRSZW5kZXJp
bmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKERvY3VtZW50KiwgY29uc3QgRGVwcmVjYXRlZDo6
U2NyaXB0T2JqZWN0Jik7CiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIHN0YXRpYyBTY3JpcHRPYmpl
Y3Qgd3JhcFdlYkdMUmVuZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlvbihEb2N1bWVudCos
IGNvbnN0IFNjcmlwdE9iamVjdCYpOworICAgIHN0YXRpYyBEZXByZWNhdGVkOjpTY3JpcHRPYmpl
Y3Qgd3JhcFdlYkdMUmVuZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlvbihEb2N1bWVudCos
IGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYpOwogI2VuZGlmCiAKICAgICBzdGF0aWMg
dm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKFBhZ2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCmluZGV4IGQyN2Y5MDkuLmM0
MTViZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXll
clRyZWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckxh
eWVyVHJlZUFnZW50LmNwcApAQCAtNDYsMTAgKzQ2LDEyIEBACiAjaW5jbHVkZSAiUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogCit1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEluc3BlY3RvckxheWVyVHJl
ZUFnZW50OjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzKQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgi
TGF5ZXJUcmVlIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJh
c2UoQVNDSUlMaXRlcmFsKCJMYXllclRyZWUiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKIHsKIH0K
IApAQCAtNTgsNyArNjAsNyBAQCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6fkluc3BlY3Rvckxh
eWVyVHJlZUFnZW50KCkKICAgICByZXNldCgpOwogfQogCi12b2lkIEluc3BlY3RvckxheWVyVHJl
ZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5k
RGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRl
bmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIp
CiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rv
ckxheWVyVHJlZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2Jh
Y2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yTGF5ZXJUcmVlQmFja2VuZERpc3BhdGNoZXI6OmNy
ZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CkBAIC0xMDUsOSArMTA3LDkgQEAgdm9pZCBJ
bnNwZWN0b3JMYXllclRyZWVBZ2VudDo6cHNldWRvRWxlbWVudERlc3Ryb3llZChQc2V1ZG9FbGVt
ZW50KiBwc2V1ZG9FbGVtZW4KICAgICB1bmJpbmRQc2V1ZG9FbGVtZW50KHBzZXVkb0VsZW1lbnQp
OwogfQogCi12b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpsYXllcnNGb3JOb2RlKEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJh
eTxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4+JiBsYXllcnMpCit2b2lkIEluc3BlY3Rv
ckxheWVyVHJlZUFnZW50OjpsYXllcnNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
aW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+PiYgbGF5ZXJzKQogewotICAgIGxheWVy
cyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj46OmNy
ZWF0ZSgpOworICAgIGxheWVycyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+OjpjcmVhdGUoKTsKIAogICAgIE5v
ZGUqIG5vZGUgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckRPTUFnZW50KCktPm5v
ZGVGb3JJZChub2RlSWQpOwogICAgIGlmICghbm9kZSkgewpAQCAtMTI0LDcgKzEyNiw3IEBAIHZv
aWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmxheWVyc0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBpbnQgbm9kZUlkCiAgICAgZ2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJPYmplY3RI
aWVyYXJjaHkoZXJyb3JTdHJpbmcsIHJlbmRlcmVyLCBsYXllcnMpOwogfQogCi12b2lkIEluc3Bl
Y3RvckxheWVyVHJlZUFnZW50OjpnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNo
eShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFJlbmRlck9iamVjdCogcmVuZGVyZXIsIFJlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+PiYgbGF5
ZXJzKQordm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6Z2F0aGVyTGF5ZXJzVXNpbmdSZW5k
ZXJPYmplY3RIaWVyYXJjaHkoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4+JiBsYXllcnMpCiB7CiAgICAgaWYgKHJl
bmRlcmVyLT5oYXNMYXllcigpKSB7CiAgICAgICAgIGdhdGhlckxheWVyc1VzaW5nUmVuZGVyTGF5
ZXJIaWVyYXJjaHkoZXJyb3JTdHJpbmcsIHRvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdChyZW5kZXJl
ciktPmxheWVyKCksIGxheWVycyk7CkBAIC0xMzUsNyArMTM3LDcgQEAgdm9pZCBJbnNwZWN0b3JM
YXllclRyZWVBZ2VudDo6Z2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJPYmplY3RIaWVyYXJjaHkoRXJy
b3JTdHJpbmcKICAgICAgICAgZ2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJPYmplY3RIaWVyYXJjaHko
ZXJyb3JTdHJpbmcsIHJlbmRlcmVyLCBsYXllcnMpOwogfQogCi12b2lkIEluc3BlY3RvckxheWVy
VHJlZUFnZW50OjpnYXRoZXJMYXllcnNVc2luZ1JlbmRlckxheWVySGllcmFyY2h5KEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVyLCBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPj4mIGxheWVycykKK3Zv
aWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmdhdGhlckxheWVyc1VzaW5nUmVuZGVyTGF5ZXJI
aWVyYXJjaHkoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBSZW5kZXJMYXllciogcmVuZGVyTGF5
ZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpMYXllclRyZWU6OkxheWVyPj4mIGxheWVycykKIHsKICAgICBpZiAocmVuZGVyTGF5
ZXItPmlzQ29tcG9zaXRlZCgpKQogICAgICAgICBsYXllcnMtPmFkZEl0ZW0oYnVpbGRPYmplY3RG
b3JMYXllcihlcnJvclN0cmluZywgcmVuZGVyTGF5ZXIpKTsKQEAgLTE0NCw3ICsxNDYsNyBAQCB2
b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpnYXRoZXJMYXllcnNVc2luZ1JlbmRlckxheWVy
SGllcmFyY2h5KEVycm9yU3RyaW5nKgogICAgICAgICBnYXRoZXJMYXllcnNVc2luZ1JlbmRlckxh
eWVySGllcmFyY2h5KGVycm9yU3RyaW5nLCByZW5kZXJMYXllciwgbGF5ZXJzKTsKIH0KIAotUGFz
c1JlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4gSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTGF5ZXIoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBSZW5k
ZXJMYXllciogcmVuZGVyTGF5ZXIpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkxheWVyVHJlZTo6TGF5ZXI+IEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpidWlsZE9iamVjdEZv
ckxheWVyKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVy
KQogewogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSAmcmVuZGVyTGF5ZXItPnJlbmRlcmVy
KCk7CiAgICAgUmVuZGVyTGF5ZXJCYWNraW5nKiBiYWNraW5nID0gcmVuZGVyTGF5ZXItPmJhY2tp
bmcoKTsKQEAgLTE2NCw3ICsxNjYsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpMYXllclRy
ZWU6OkxheWVyPiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6YnVpbGRPYmplY3RGbwogICAgICAg
ICBub2RlID0gcmVuZGVyZXItPnBhcmVudCgpLT5lbGVtZW50KCk7CiAKICAgICAvLyBCYXNpYyBz
ZXQgb2YgcHJvcGVydGllcy4KLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5
ZXI+IGxheWVyT2JqZWN0ID0gVHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI6OmNyZWF0ZSgp
CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+IGxh
eWVyT2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcjo6Y3Jl
YXRlKCkKICAgICAgICAgLnNldExheWVySWQoYmluZChyZW5kZXJMYXllcikpCiAgICAgICAgIC5z
ZXROb2RlSWQoaWRGb3JOb2RlKGVycm9yU3RyaW5nLCBub2RlKSkKICAgICAgICAgLnNldEJvdW5k
cyhidWlsZE9iamVjdEZvckludFJlY3QocmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0
KCkpKQpAQCAtMjE2LDE2ICsyMTgsMTYgQEAgaW50IEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojpp
ZEZvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBOb2RlKiBub2RlKQogICAgIHJldHVy
biBub2RlSWQ7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6SW50UmVj
dD4gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9ySW50UmVjdChjb25zdCBJ
bnRSZWN0JiByZWN0KQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXllclRy
ZWU6OkludFJlY3Q+IEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpidWlsZE9iamVjdEZvckludFJl
Y3QoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OkxheWVy
VHJlZTo6SW50UmVjdDo6Y3JlYXRlKCkKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6TGF5ZXJUcmVlOjpJbnRSZWN0OjpjcmVhdGUoKQogICAgICAgICAuc2V0WChyZWN0LngoKSkK
ICAgICAgICAgLnNldFkocmVjdC55KCkpCiAgICAgICAgIC5zZXRXaWR0aChyZWN0LndpZHRoKCkp
CiAgICAgICAgIC5zZXRIZWlnaHQocmVjdC5oZWlnaHQoKSkucmVsZWFzZSgpOwogfQogCi12b2lk
IEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpyZWFzb25zRm9yQ29tcG9zaXRpbmdMYXllcihFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgbGF5ZXJJZCwgUmVmUHRyPFR5cGVC
dWlsZGVyOjpMYXllclRyZWU6OkNvbXBvc2l0aW5nUmVhc29ucz4mIGNvbXBvc2l0aW5nUmVhc29u
cykKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OnJlYXNvbnNGb3JDb21wb3NpdGluZ0xh
eWVyKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBsYXllcklkLCBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpDb21wb3NpdGluZ1JlYXNvbnM+
JiBjb21wb3NpdGluZ1JlYXNvbnMpCiB7CiAgICAgY29uc3QgUmVuZGVyTGF5ZXIqIHJlbmRlckxh
eWVyID0gbV9pZFRvTGF5ZXIuZ2V0KGxheWVySWQpOwogCkBAIC0yMzUsNyArMjM3LDcgQEAgdm9p
ZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6cmVhc29uc0ZvckNvbXBvc2l0aW5nTGF5ZXIoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW4KICAgICB9CiAKICAgICBDb21wb3NpdGluZ1JlYXNvbnMgcmVh
c29uc0JpdG1hc2sgPSByZW5kZXJMYXllci0+Y29tcG9zaXRvcigpLnJlYXNvbnNGb3JDb21wb3Np
dGluZygqcmVuZGVyTGF5ZXIpOwotICAgIGNvbXBvc2l0aW5nUmVhc29ucyA9IFR5cGVCdWlsZGVy
OjpMYXllclRyZWU6OkNvbXBvc2l0aW5nUmVhc29uczo6Y3JlYXRlKCk7CisgICAgY29tcG9zaXRp
bmdSZWFzb25zID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpDb21wb3NpdGlu
Z1JlYXNvbnM6OmNyZWF0ZSgpOwogCiAgICAgaWYgKHJlYXNvbnNCaXRtYXNrICYgQ29tcG9zaXRp
bmdSZWFzb24zRFRyYW5zZm9ybSkKICAgICAgICAgY29tcG9zaXRpbmdSZWFzb25zLT5zZXRUcmFu
c2Zvcm0zRCh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JMYXllclRyZWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckxheWVyVHJlZUFnZW50LmgKaW5kZXggYWY1NWE5Mi4uMTc0NTYwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKQEAgLTMxLDkg
KzMxLDEwIEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9y
QmFzZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVp
bGRlci5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgorI2luY2x1ZGUgIklu
c3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAt
NDYsNyArNDcsNyBAQCBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogCiB0eXBlZGVmIFN0cmlu
ZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQgOiBwdWJsaWMg
SW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yTGF5ZXJUcmVlQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckxheWVyVHJlZUFnZW50IDogcHVibGljIElu
c3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3RvckxheWVyVHJlZUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzKQogICAgIHsKQEAgLTU0LDcgKzU1LDcgQEAgcHVibGljOgogICAgIH0KICAgICB+SW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9y
OjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogICAgIHZvaWQgcmVz
ZXQoKTsKIApAQCAtNjUsOCArNjYsOCBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGVkIGZyb20gdGhl
IGZyb250LWVuZC4KICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKik7CiAgICAg
dmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKLSAgICB2aXJ0dWFsIHZvaWQgbGF5
ZXJzRm9yTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6
QXJyYXk8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+PiYpOwotICAgIHZpcnR1YWwgdm9p
ZCByZWFzb25zRm9yQ29tcG9zaXRpbmdMYXllcihFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYg
bGF5ZXJJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkNvbXBvc2l0aW5nUmVhc29u
cz4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5ZXJzRm9yTm9kZShFcnJvclN0cmluZyosIGludCBu
b2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPj4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhc29u
c0ZvckNvbXBvc2l0aW5nTGF5ZXIoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGxheWVySWQs
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkNvbXBvc2l0aW5nUmVh
c29ucz4mKTsKIAogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JMYXllclRyZWVBZ2VudChJbnN0cnVt
ZW50aW5nQWdlbnRzKik7CkBAIC03NSwxMSArNzYsMTEgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcg
YmluZChjb25zdCBSZW5kZXJMYXllciopOwogICAgIHZvaWQgdW5iaW5kKGNvbnN0IFJlbmRlckxh
eWVyKik7CiAKLSAgICB2b2lkIGdhdGhlckxheWVyc1VzaW5nUmVuZGVyT2JqZWN0SGllcmFyY2h5
KEVycm9yU3RyaW5nKiwgUmVuZGVyT2JqZWN0KiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxU
eXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4+Jik7Ci0gICAgdm9pZCBnYXRoZXJMYXllcnNV
c2luZ1JlbmRlckxheWVySGllcmFyY2h5KEVycm9yU3RyaW5nKiwgUmVuZGVyTGF5ZXIqLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPj4mKTsK
KyAgICB2b2lkIGdhdGhlckxheWVyc1VzaW5nUmVuZGVyT2JqZWN0SGllcmFyY2h5KEVycm9yU3Ry
aW5nKiwgUmVuZGVyT2JqZWN0KiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+PiYpOworICAgIHZvaWQg
Z2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJMYXllckhpZXJhcmNoeShFcnJvclN0cmluZyosIFJlbmRl
ckxheWVyKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+PiYpOwogCi0gICAgUGFzc1JlZlB0cjxUeXBl
QnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4gYnVpbGRPYmplY3RGb3JMYXllcihFcnJvclN0cmlu
ZyosIFJlbmRlckxheWVyKik7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVl
OjpJbnRSZWN0PiBidWlsZE9iamVjdEZvckludFJlY3QoY29uc3QgSW50UmVjdCYpOworICAgIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4gYnVpbGRP
YmplY3RGb3JMYXllcihFcnJvclN0cmluZyosIFJlbmRlckxheWVyKik7CisgICAgUGFzc1JlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkludFJlY3Q+IGJ1aWxkT2JqZWN0
Rm9ySW50UmVjdChjb25zdCBJbnRSZWN0Jik7CiAKICAgICBpbnQgaWRGb3JOb2RlKEVycm9yU3Ry
aW5nKiwgTm9kZSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yTWVtb3J5QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck1lbW9yeUFnZW50LmNwcAppbmRleCA3NThiN2I0Li4zMmQwMWZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKQEAgLTQxLDEzICs0
MSwxMyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKLSNpbmNsdWRlICJJbnNw
ZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVk
ZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiTm9kZVRyYXZl
cnNhbC5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGVyLmgiCiAjaW5jbHVkZSAiU3R5bGVkRWxl
bWVudC5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRl
IDxydW50aW1lL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtNTgsOCArNTgsMTAgQEAKICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogLy8gVXNlIGEgdHlwZSBhbGlhcyBpbnN0ZWFkIG9mICd1c2lu
ZycgaGVyZSB3aGljaCB3b3VsZCBjYXVzZSBhIGNvbmZsaWN0IG9uIE1hYy4KLXR5cGVkZWYgV2Vi
Q29yZTo6VHlwZUJ1aWxkZXI6Ok1lbW9yeTo6TWVtb3J5QmxvY2sgSW5zcGVjdG9yTWVtb3J5Qmxv
Y2s7Ci10eXBlZGVmIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlC
bG9jaz4gSW5zcGVjdG9yTWVtb3J5QmxvY2tzOwordHlwZWRlZiBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpNZW1vcnk6Ok1lbW9yeUJsb2NrIEluc3BlY3Rvck1lbW9yeUJsb2NrOwordHlwZWRlZiBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gSW5zcGVj
dG9yTWVtb3J5QmxvY2tzOworCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTY3LDcgKzY5LDcgQEAgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6On5J
bnNwZWN0b3JNZW1vcnlBZ2VudCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6
OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3Bl
Y3Rvck1lbW9yeUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFj
a2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvck1l
bW9yeUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwog
fQpAQCAtODUsNyArODcsNyBAQCB2b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50OjpnZXRET01Db3Vu
dGVycyhFcnJvclN0cmluZyosIGludCogZG9jdW1lbnRzLCBpbnQqIG5vZAogfQogCiBJbnNwZWN0
b3JNZW1vcnlBZ2VudDo6SW5zcGVjdG9yTWVtb3J5QWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVy
YWwoIk1lbW9yeSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRC
YXNlKEFTQ0lJTGl0ZXJhbCgiTWVtb3J5IiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKaW5k
ZXggZTE5MTBkZS4uOGYxNTY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvck1lbW9yeUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck1lbW9yeUFnZW50LmgKQEAgLTMzLDggKzMzLDggQEAKIAogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNw
ZWN0b3JGcm9udGVuZC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5o
IgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC00NSwxMyArNDUsMTMgQEAg
Y2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7
CiAKLWNsYXNzIEluc3BlY3Rvck1lbW9yeUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2Vu
dCwgcHVibGljIEluc3BlY3Rvck1lbW9yeUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFz
cyBJbnNwZWN0b3JNZW1vcnlBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1Ymxp
YyBJbnNwZWN0b3JNZW1vcnlCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEluc3BlY3Rvck1lbW9yeUFnZW50KTsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc093blB0cjxJbnNwZWN0b3JNZW1vcnlBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHMpOwogICAgIHZpcnR1YWwgfkluc3BlY3Rvck1lbW9yeUFn
ZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRET01D
b3VudGVycyhFcnJvclN0cmluZyosIGludCogZG9jdW1lbnRzLCBpbnQqIG5vZGVzLCBpbnQqIGpz
RXZlbnRMaXN0ZW5lcnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92
ZXJsYXkuY3BwCmluZGV4IDI4Njg0MWYuLmE4NWQ4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JPdmVybGF5UGFnZS5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5o
IgogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCkBAIC01NSwxMSArNTQsMTQgQEAKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5j
bHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIK
LSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVk
ZSAiU3R5bGVkRWxlbWVudC5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+Cisj
aW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JPdmVybGF5LmgKaW5kZXggZWY5OTIzMC4uYjUyOTIyOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oCkBAIC0zMiwyMCArMzIsMjIgQEAKICNp
bmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIkxheW91
dFJlY3QuaCIKLQogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3Ig
eworY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworY2xhc3MgSW5zcGVjdG9yVmFsdWU7Cit9CisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7
CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7Ci1jbGFzcyBJbnNwZWN0b3JWYWx1ZTsKLWNsYXNzIElu
c3BlY3Rvck9iamVjdDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBOb2RlOwogY2xhc3MgUGFnZTsK
QEAgLTEyNCw3ICsxMjYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZFNldFNlYXJjaGluZ0Zv
ck5vZGUoYm9vbCBlbmFibGVkKTsKIAotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBi
dWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZSgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlKCkg
Y29uc3Q7CiAKICAgICB2b2lkIGZyZWVQYWdlKCk7CiBwcml2YXRlOgpAQCAtMTM3LDcgKzEzOSw3
IEBAIHByaXZhdGU6CiAgICAgUGFnZSogb3ZlcmxheVBhZ2UoKTsKICAgICB2b2lkIHJlc2V0KGNv
bnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgSW50U2l6ZSYgZnJhbWVWaWV3RnVsbFNp
emUpOwogICAgIHZvaWQgZXZhbHVhdGVJbk92ZXJsYXkoY29uc3QgU3RyaW5nJiBtZXRob2QsIGNv
bnN0IFN0cmluZyYgYXJndW1lbnQpOwotICAgIHZvaWQgZXZhbHVhdGVJbk92ZXJsYXkoY29uc3Qg
U3RyaW5nJiBtZXRob2QsIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGFyZ3VtZW50KTsKKyAg
ICB2b2lkIGV2YWx1YXRlSW5PdmVybGF5KGNvbnN0IFN0cmluZyYgbWV0aG9kLCBQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IGFyZ3VtZW50KTsKIAogICAgIFBhZ2UqIG1fcGFn
ZTsKICAgICBJbnNwZWN0b3JDbGllbnQqIG1fY2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCBjMGJlZDllLi5mNGRiZmQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApA
QCAtNjYsNyArNjYsNiBAQAogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yT3Zlcmxh
eS5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRp
bmdBZ2VudHMuaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNo
ZS5oIgpAQCAtNzQsMTIgKzczLDEzIEBACiAjaW5jbHVkZSAiUmVndWxhckV4cHJlc3Npb24uaCIK
ICNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIu
aCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5j
bHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNh
dG9yLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KKyNpbmNsdWRlIDxpbnNw
ZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAj
aW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAt
OTAsNiArOTAsOCBAQAogI2luY2x1ZGUgIkxlZ2FjeVdlYkFyY2hpdmUuaCIKICNlbmRpZgogCit1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRp
YyBib29sIGRlY29kZUJ1ZmZlcihjb25zdCBjaGFyKiBidWZmZXIsIHVuc2lnbmVkIHNpemUsIGNv
bnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgU3RyaW5nKiByZXN1bHQpCkBAIC0yOTcsMjcg
KzI5OSwyNyBAQCBDYWNoZWRSZXNvdXJjZSogSW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNv
dXJjZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQogICAgIHJldHVybiBjYWNoZWRSZXNv
dXJjZTsKIH0KIAotVHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6RW51bSBJbnNwZWN0
b3JQYWdlQWdlbnQ6OnJlc291cmNlVHlwZUpzb24oSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJj
ZVR5cGUgcmVzb3VyY2VUeXBlKQorSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3Vy
Y2VUeXBlOjpFbnVtIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VUeXBlSnNvbihJbnNwZWN0
b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUpCiB7CiAgICAgc3dpdGNoIChy
ZXNvdXJjZVR5cGUpIHsKICAgICBjYXNlIERvY3VtZW50UmVzb3VyY2U6Ci0gICAgICAgIHJldHVy
biBUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpEb2N1bWVudDsKKyAgICAgICAgcmV0
dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6RG9jdW1lbnQ7
CiAgICAgY2FzZSBJbWFnZVJlc291cmNlOgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlBh
Z2U6OlJlc291cmNlVHlwZTo6SW1hZ2U7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkltYWdlOwogICAgIGNhc2UgRm9udFJlc291cmNl
OgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6Rm9udDsK
KyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlw
ZTo6Rm9udDsKICAgICBjYXNlIFN0eWxlc2hlZXRSZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIFR5
cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OlN0eWxlc2hlZXQ7CisgICAgICAgIHJldHVy
biBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OlN0eWxlc2hlZXQ7
CiAgICAgY2FzZSBTY3JpcHRSZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpQ
YWdlOjpSZXNvdXJjZVR5cGU6OlNjcmlwdDsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6U2NyaXB0OwogICAgIGNhc2UgWEhSUmVzb3Vy
Y2U6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpYSFI7
CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5
cGU6OlhIUjsKICAgICBjYXNlIFdlYlNvY2tldFJlc291cmNlOgotICAgICAgICByZXR1cm4gVHlw
ZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6V2ViU29ja2V0OworICAgICAgICByZXR1cm4g
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpXZWJTb2NrZXQ7CiAg
ICAgY2FzZSBPdGhlclJlc291cmNlOgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlBhZ2U6
OlJlc291cmNlVHlwZTo6T3RoZXI7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6Ok90aGVyOwogICAgIH0KLSAgICByZXR1cm4gVHlwZUJ1
aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6T3RoZXI7CisgICAgcmV0dXJuIEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6T3RoZXI7CiB9CiAKIEluc3BlY3RvclBh
Z2VBZ2VudDo6UmVzb3VyY2VUeXBlIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2VU
eXBlKGNvbnN0IENhY2hlZFJlc291cmNlJiBjYWNoZWRSZXNvdXJjZSkKQEAgLTM0NSwxMyArMzQ3
LDEzIEBAIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6Y2FjaGVkUmVzb3VyY2VUeXBlKGNvbnN0IENhCiAgICAgcmV0dXJuIEluc3BlY3RvclBhZ2VB
Z2VudDo6T3RoZXJSZXNvdXJjZTsKIH0KIAotVHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlw
ZTo6RW51bSBJbnNwZWN0b3JQYWdlQWdlbnQ6OmNhY2hlZFJlc291cmNlVHlwZUpzb24oY29uc3Qg
Q2FjaGVkUmVzb3VyY2UmIGNhY2hlZFJlc291cmNlKQorSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
UGFnZTo6UmVzb3VyY2VUeXBlOjpFbnVtIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3Vy
Y2VUeXBlSnNvbihjb25zdCBDYWNoZWRSZXNvdXJjZSYgY2FjaGVkUmVzb3VyY2UpCiB7CiAgICAg
cmV0dXJuIHJlc291cmNlVHlwZUpzb24oY2FjaGVkUmVzb3VyY2VUeXBlKGNhY2hlZFJlc291cmNl
KSk7CiB9CiAKIEluc3BlY3RvclBhZ2VBZ2VudDo6SW5zcGVjdG9yUGFnZUFnZW50KEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIFBhZ2UqIHBhZ2UsIEluc3BlY3RvckFn
ZW50KiBpbnNwZWN0b3JBZ2VudCwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlw
dE1hbmFnZXIsIEluc3BlY3RvckNsaWVudCogY2xpZW50LCBJbnNwZWN0b3JPdmVybGF5KiBvdmVy
bGF5KQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiUGFnZSIpLCBpbnN0
cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgi
UGFnZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9wYWdlKHBhZ2UpCiAgICAgLCBt
X2luc3BlY3RvckFnZW50KGluc3BlY3RvckFnZW50KQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQpAQCAtMzcxLDcgKzM3Myw3IEBAIEluc3BlY3Rv
clBhZ2VBZ2VudDo6SW5zcGVjdG9yUGFnZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMsCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENo
YW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3Zv
aWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JQYWdlRnJvbnRlbmREaXNwYXRj
aGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0
b3JQYWdlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7
CkBAIC00NjAsOSArNDYyLDkgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6Om5hdmlnYXRlKEVy
cm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgZnJhbWUubG9hZGVyKCkuY2hhbmdl
TG9jYXRpb24oZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgZnJhbWUuZG9jdW1l
bnQoKS0+Y29tcGxldGVVUkwodXJsKSwgIiIsIGZhbHNlLCBmYWxzZSk7CiB9CiAKLXN0YXRpYyBQ
YXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQYWdlOjpDb29raWU+IGJ1aWxkT2JqZWN0Rm9yQ29va2ll
KGNvbnN0IENvb2tpZSYgY29va2llKQorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6UGFnZTo6Q29va2llPiBidWlsZE9iamVjdEZvckNvb2tpZShjb25zdCBDb29raWUm
IGNvb2tpZSkKIHsKLSAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlBhZ2U6OkNvb2tpZTo6Y3JlYXRl
KCkKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6Q29va2llOjpjcmVh
dGUoKQogICAgICAgICAuc2V0TmFtZShjb29raWUubmFtZSkKICAgICAgICAgLnNldFZhbHVlKGNv
b2tpZS52YWx1ZSkKICAgICAgICAgLnNldERvbWFpbihjb29raWUuZG9tYWluKQpAQCAtNDc1LDkg
KzQ3Nyw5IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQYWdlOjpDb29raWU+IGJ1
aWxkT2JqZWN0Rm9yQ29va2llKGNvbnN0IENvb2tpZSYKICAgICAgICAgLnJlbGVhc2UoKTsKIH0K
IAotc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdl
OjpDb29raWU+PiBidWlsZEFycmF5Rm9yQ29va2llcyhMaXN0SGFzaFNldDxDb29raWU+JiBjb29r
aWVzTGlzdCkKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkNvb2tpZT4+IGJ1aWxkQXJyYXlGb3JDb29r
aWVzKExpc3RIYXNoU2V0PENvb2tpZT4mIGNvb2tpZXNMaXN0KQogewotICAgIFJlZlB0cjxUeXBl
QnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OkNvb2tpZT4+IGNvb2tpZXMgPSBUeXBl
QnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OkNvb2tpZT46OmNyZWF0ZSgpOworICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpQYWdlOjpDb29raWU+PiBjb29raWVzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6Q29va2llPjo6Y3JlYXRlKCk7CiAKICAg
ICBMaXN0SGFzaFNldDxDb29raWU+OjppdGVyYXRvciBlbmQgPSBjb29raWVzTGlzdC5lbmQoKTsK
ICAgICBMaXN0SGFzaFNldDxDb29raWU+OjppdGVyYXRvciBpdCA9IGNvb2tpZXNMaXN0LmJlZ2lu
KCk7CkBAIC01MjgsNyArNTMwLDcgQEAgc3RhdGljIFZlY3RvcjxVUkw+IGFsbFJlc291cmNlc1VS
THNGb3JGcmFtZShGcmFtZSogZnJhbWUpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpDb29raWU+PiYgY29va2llcykKK3ZvaWQg
SW5zcGVjdG9yUGFnZUFnZW50OjpnZXRDb29raWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkNv
b2tpZT4+JiBjb29raWVzKQogewogICAgIC8vIElmIHdlIGNhbiBnZXQgcmF3IGNvb2tpZXMuCiAg
ICAgTGlzdEhhc2hTZXQ8Q29va2llPiByYXdDb29raWVzTGlzdDsKQEAgLTU2Nyw3ICs1NjksNyBA
QCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0Q29va2llcyhFcnJvclN0cmluZyosIFJlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZQogICAgIGlmIChyYXdDb29raWVzSW1wbGVtZW50ZWQp
CiAgICAgICAgIGNvb2tpZXMgPSBidWlsZEFycmF5Rm9yQ29va2llcyhyYXdDb29raWVzTGlzdCk7
CiAgICAgZWxzZQotICAgICAgICBjb29raWVzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpQYWdlOjpDb29raWU+OjpjcmVhdGUoKTsKKyAgICAgICAgY29va2llcyA9IEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpDb29raWU+OjpjcmVhdGUo
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRlbGV0ZUNvb2tpZShFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSwgY29uc3QgU3RyaW5nJiB1cmwpCkBAIC01Nzcs
NyArNTc5LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRlbGV0ZUNvb2tpZShFcnJvclN0
cmluZyosIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSwgY28KICAgICAgICAgV2ViQ29yZTo6ZGVs
ZXRlQ29va2llKGZyYW1lLT5kb2N1bWVudCgpLCBwYXJzZWRVUkwsIGNvb2tpZU5hbWUpOwogfQog
Ci12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0UmVzb3VyY2VUcmVlKEVycm9yU3RyaW5nKiwg
UmVmUHRyPFR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT4mIG9iamVjdCkKK3Zv
aWQgSW5zcGVjdG9yUGFnZUFnZW50OjpnZXRSZXNvdXJjZVRyZWUoRXJyb3JTdHJpbmcqLCBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+JiBvYmpl
Y3QpCiB7CiAgICAgb2JqZWN0ID0gYnVpbGRPYmplY3RGb3JGcmFtZVRyZWUoJm1fcGFnZS0+bWFp
bkZyYW1lKCkpOwogfQpAQCAtNjA0LDkgKzYwNiw5IEBAIHN0YXRpYyBib29sIHRleHRDb250ZW50
Rm9yQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlLCBTdHJpbmcq
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNo
SW5SZXNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFs
Q2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hNYXRjaD4+JiByZXN1
bHRzKQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3VyY2UoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcmIHF1ZXJ5LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0
IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaE1hdGNoPj4mIHJl
c3VsdHMpCiB7Ci0gICAgcmVzdWx0cyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6
UGFnZTo6U2VhcmNoTWF0Y2g+OjpjcmVhdGUoKTsKKyAgICByZXN1bHRzID0gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0
Y2g+OjpjcmVhdGUoKTsKIAogICAgIGJvb2wgaXNSZWdleCA9IG9wdGlvbmFsSXNSZWdleCA/ICpv
cHRpb25hbElzUmVnZXggOiBmYWxzZTsKICAgICBib29sIGNhc2VTZW5zaXRpdmUgPSBvcHRpb25h
bENhc2VTZW5zaXRpdmUgPyAqb3B0aW9uYWxDYXNlU2Vuc2l0aXZlIDogZmFsc2U7CkBAIC02Mzgs
MTggKzY0MCwxOCBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5SZXNvdXJjZShF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgYwogICAgIHJlc3VsdHMgPSBDb250
ZW50U2VhcmNoVXRpbHM6OnNlYXJjaEluVGV4dEJ5TGluZXMoY29udGVudCwgcXVlcnksIGNhc2VT
ZW5zaXRpdmUsIGlzUmVnZXgpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6
UGFnZTo6U2VhcmNoUmVzdWx0PiBidWlsZE9iamVjdEZvclNlYXJjaFJlc3VsdChjb25zdCBTdHJp
bmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbWF0Y2hlc0NvdW50KQorc3RhdGlj
IFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoUmVzdWx0PiBi
dWlsZE9iamVjdEZvclNlYXJjaFJlc3VsdChjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0
cmluZyYgdXJsLCBpbnQgbWF0Y2hlc0NvdW50KQogewotICAgIHJldHVybiBUeXBlQnVpbGRlcjo6
UGFnZTo6U2VhcmNoUmVzdWx0OjpjcmVhdGUoKQorICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpQYWdlOjpTZWFyY2hSZXN1bHQ6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRVcmwodXJs
KQogICAgICAgICAuc2V0RnJhbWVJZChmcmFtZUlkKQogICAgICAgICAuc2V0TWF0Y2hlc0NvdW50
KG1hdGNoZXNDb3VudCkKICAgICAgICAgLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OnNlYXJjaEluUmVzb3VyY2VzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB0
ZXh0LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wq
IGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVp
bGRlcjo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mIHJlc3VsdHMpCit2b2lkIEluc3BlY3RvclBhZ2VB
Z2VudDo6c2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHRleHQs
IGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogY29u
c3Qgb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mIHJlc3VsdHMpCiB7
Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNo
UmVzdWx0Pj4gc2VhcmNoUmVzdWx0cyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6
UGFnZTo6U2VhcmNoUmVzdWx0Pjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaFJlc3Vs
dD4+IHNlYXJjaFJlc3VsdHMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hSZXN1bHQ+OjpjcmVhdGUoKTsKIAogICAgIGJv
b2wgaXNSZWdleCA9IG9wdGlvbmFsSXNSZWdleCA/ICpvcHRpb25hbElzUmVnZXggOiBmYWxzZTsK
ICAgICBib29sIGNhc2VTZW5zaXRpdmUgPSBvcHRpb25hbENhc2VTZW5zaXRpdmUgPyAqb3B0aW9u
YWxDYXNlU2Vuc2l0aXZlIDogZmFsc2U7CkBAIC0xMDM1LDkgKzEwMzcsOSBAQCB2b2lkIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6c2NyaXB0c0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpCiAgICAgbV9mcm9u
dGVuZERpc3BhdGNoZXItPnNjcmlwdHNFbmFibGVkKGlzRW5hYmxlZCk7CiB9CiAKLVBhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2Jq
ZWN0Rm9yRnJhbWUoRnJhbWUqIGZyYW1lKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpQYWdlOjpGcmFtZT4gSW5zcGVjdG9yUGFnZUFnZW50OjpidWlsZE9iamVjdEZvckZyYW1l
KEZyYW1lKiBmcmFtZSkKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lPiBm
cmFtZU9iamVjdCA9IFR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZTo6Y3JlYXRlKCkKKyAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWU+IGZyYW1lT2JqZWN0ID0gSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWU6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRJ
ZChmcmFtZUlkKGZyYW1lKSkKICAgICAgICAgLnNldExvYWRlcklkKGxvYWRlcklkKGZyYW1lLT5s
b2FkZXIoKS5kb2N1bWVudExvYWRlcigpKSkKICAgICAgICAgLnNldFVybChmcmFtZS0+ZG9jdW1l
bnQoKS0+dXJsKCkuc3RyaW5nKCkpCkBAIC0xMDU1LDExICsxMDU3LDExIEBAIFBhc3NSZWZQdHI8
VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0
Rm9yRnJhbWUoRnJhCiAgICAgcmV0dXJuIGZyYW1lT2JqZWN0OwogfQogCi1QYXNzUmVmUHRyPFR5
cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT4gSW5zcGVjdG9yUGFnZUFnZW50Ojpi
dWlsZE9iamVjdEZvckZyYW1lVHJlZShGcmFtZSogZnJhbWUpCitQYXNzUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiBJbnNwZWN0b3JQYWdlQWdl
bnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKEZyYW1lKiBmcmFtZSkKIHsKLSAgICBSZWZQdHI8
VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lPiBmcmFtZU9iamVjdCA9IGJ1aWxkT2JqZWN0Rm9yRnJh
bWUoZnJhbWUpOwotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBh
Z2U6OkZyYW1lUmVzb3VyY2VUcmVlOjpSZXNvdXJjZXM+PiBzdWJyZXNvdXJjZXMgPSBUeXBlQnVp
bGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlOjpSZXNvdXJj
ZXM+OjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3Vy
Y2VUcmVlPiByZXN1bHQgPSBUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU6OmNy
ZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lPiBm
cmFtZU9iamVjdCA9IGJ1aWxkT2JqZWN0Rm9yRnJhbWUoZnJhbWUpOworICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpG
cmFtZVJlc291cmNlVHJlZTo6UmVzb3VyY2VzPj4gc3VicmVzb3VyY2VzID0gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNv
dXJjZVRyZWU6OlJlc291cmNlcz46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT4gcmVzdWx0ID0gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU6OmNyZWF0ZSgpCiAgICAgICAgICAu
c2V0RnJhbWUoZnJhbWVPYmplY3QpCiAgICAgICAgICAuc2V0UmVzb3VyY2VzKHN1YnJlc291cmNl
cyk7CiAKQEAgLTEwNjcsNyArMTA2OSw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6
OkZyYW1lUmVzb3VyY2VUcmVlPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0CiAgICAg
Zm9yIChWZWN0b3I8Q2FjaGVkUmVzb3VyY2UqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBhbGxSZXNv
dXJjZXMuYmVnaW4oKTsgaXQgIT0gYWxsUmVzb3VyY2VzLmVuZCgpOyArK2l0KSB7CiAgICAgICAg
IENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSA9ICppdDsKIAotICAgICAgICBSZWZQdHI8
VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlOjpSZXNvdXJjZXM+IHJlc291cmNl
T2JqZWN0ID0gVHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlOjpSZXNvdXJjZXM6
OmNyZWF0ZSgpCisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpG
cmFtZVJlc291cmNlVHJlZTo6UmVzb3VyY2VzPiByZXNvdXJjZU9iamVjdCA9IEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlOjpSZXNvdXJjZXM6OmNyZWF0ZSgp
CiAgICAgICAgICAgICAuc2V0VXJsKGNhY2hlZFJlc291cmNlLT51cmwoKSkKICAgICAgICAgICAg
IC5zZXRUeXBlKGNhY2hlZFJlc291cmNlVHlwZUpzb24oKmNhY2hlZFJlc291cmNlKSkKICAgICAg
ICAgICAgIC5zZXRNaW1lVHlwZShjYWNoZWRSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgp
KTsKQEAgLTEwODEsMTAgKzEwODMsMTAgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UGFnZTo6
RnJhbWVSZXNvdXJjZVRyZWU+IEluc3BlY3RvclBhZ2VBZ2VudDo6YnVpbGRPYmplY3QKICAgICAg
ICAgc3VicmVzb3VyY2VzLT5hZGRJdGVtKHJlc291cmNlT2JqZWN0KTsKICAgICB9CiAKLSAgICBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNl
VHJlZT4+IGNoaWxkcmVuQXJyYXk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPj4g
Y2hpbGRyZW5BcnJheTsKICAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IGZyYW1lLT50cmVlKCkuZmly
c3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLm5leHRTaWJsaW5nKCkpIHsK
ICAgICAgICAgaWYgKCFjaGlsZHJlbkFycmF5KSB7Ci0gICAgICAgICAgICBjaGlsZHJlbkFycmF5
ID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJl
ZT46OmNyZWF0ZSgpOworICAgICAgICAgICAgY2hpbGRyZW5BcnJheSA9IEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3Vy
Y2VUcmVlPjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICByZXN1bHQtPnNldENoaWxkRnJhbWVzKGNo
aWxkcmVuQXJyYXkpOwogICAgICAgICB9CiAgICAgICAgIGNoaWxkcmVuQXJyYXktPmFkZEl0ZW0o
YnVpbGRPYmplY3RGb3JGcmFtZVRyZWUoY2hpbGQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCAxYjI2YjZlLi41ZDY1Njk5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCkBAIC0zNSw4ICsz
NSw5IEBACiAKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkRhdGEuaCIKICNpbmNsdWRlICJH
ZW9sb2NhdGlvblBvc2l0aW9uLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisj
aW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yRnJvbnRlbmQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNs
dWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CkBAIC00NCw2ICs0NSwxMSBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIEluc3BlY3RvciB7Citj
bGFzcyBJbnNwZWN0b3JBcnJheTsKK2NsYXNzIEluc3BlY3Rvck9iamVjdDsKK30KKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKQEAgLTU0LDkgKzYwLDcgQEAg
Y2xhc3MgRnJvbnRlbmQ7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbmplY3RlZFNj
cmlwdE1hbmFnZXI7CiBjbGFzcyBJbnNwZWN0b3JBZ2VudDsKLWNsYXNzIEluc3BlY3RvckFycmF5
OwogY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwotY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3Mg
SW5zcGVjdG9yT3ZlcmxheTsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBVUkw7
CkBAIC02Nyw3ICs3MSw3IEBAIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiAKIHR5cGVkZWYg
U3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQgOiBwdWJsaWMg
SW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yUGFnZUJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdl
bnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yUGFnZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yUGFnZUFnZW50KTsKIHB1YmxpYzoKICAg
ICBlbnVtIFJlc291cmNlVHlwZSB7CkBAIC05MCw5ICs5NCw5IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhKEZyYW1lKiwgY29uc3Qg
VVJMJiwgU3RyaW5nKiB0ZXh0RW5jb2RpbmdOYW1lKTsKICAgICBzdGF0aWMgQ2FjaGVkUmVzb3Vy
Y2UqIGNhY2hlZFJlc291cmNlKEZyYW1lKiwgY29uc3QgVVJMJik7Ci0gICAgc3RhdGljIFR5cGVC
dWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkVudW0gcmVzb3VyY2VUeXBlSnNvbihSZXNvdXJj
ZVR5cGUpOworICAgIHN0YXRpYyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJj
ZVR5cGU6OkVudW0gcmVzb3VyY2VUeXBlSnNvbihSZXNvdXJjZVR5cGUpOwogICAgIHN0YXRpYyBS
ZXNvdXJjZVR5cGUgY2FjaGVkUmVzb3VyY2VUeXBlKGNvbnN0IENhY2hlZFJlc291cmNlJik7Ci0g
ICAgc3RhdGljIFR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkVudW0gY2FjaGVkUmVz
b3VyY2VUeXBlSnNvbihjb25zdCBDYWNoZWRSZXNvdXJjZSYpOworICAgIHN0YXRpYyBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkVudW0gY2FjaGVkUmVzb3VyY2VU
eXBlSnNvbihjb25zdCBDYWNoZWRSZXNvdXJjZSYpOwogCiAgICAgLy8gUGFnZSBBUEkgZm9yIElu
c3BlY3RvckZyb250ZW5kCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwpA
QCAtMTAxLDEyICsxMDUsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVTY3Jp
cHRUb0V2YWx1YXRlT25Mb2FkKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVsb2FkKEVycm9yU3RyaW5nKiwgY29uc3QgYm9vbCogb3B0
aW9uYWxJZ25vcmVDYWNoZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFNjcmlwdFRvRXZhbHVhdGVP
bkxvYWQsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxTY3JpcHRQcmVwcm9jZXNzb3IpOwogICAgIHZp
cnR1YWwgdm9pZCBuYXZpZ2F0ZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXJsKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0Q29va2llcyhFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRl
cjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OkNvb2tpZT4+JiBjb29raWVzKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZ2V0Q29va2llcyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpDb29raWU+PiYgY29v
a2llcyk7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgY29va2llTmFtZSwgY29uc3QgU3RyaW5nJiB1cmwpOwotICAgIHZpcnR1YWwgdm9p
ZCBnZXRSZXNvdXJjZVRyZWUoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6
OkZyYW1lUmVzb3VyY2VUcmVlPiYpOworICAgIHZpcnR1YWwgdm9pZCBnZXRSZXNvdXJjZVRyZWUo
RXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVS
ZXNvdXJjZVRyZWU+Jik7CiAgICAgdmlydHVhbCB2b2lkIGdldFJlc291cmNlQ29udGVudChFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIFN0cmlu
ZyogY29udGVudCwgYm9vbCogYmFzZTY0RW5jb2RlZCk7Ci0gICAgdmlydHVhbCB2b2lkIHNlYXJj
aEluUmVzb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBvcHRpb25hbENhc2VT
ZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0Y2g+PiYpOwotICAgIHZpcnR1YWwg
dm9pZCBzZWFyY2hJblJlc291cmNlcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYsIGNvbnN0
IGJvb2wqIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGlzUmVnZXgsIFJlZlB0cjxUeXBlQnVp
bGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaFJlc3VsdD4+Jik7CisgICAgdmly
dHVhbCB2b2lkIHNlYXJjaEluUmVzb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZy
YW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29s
KiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCwgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OlBhZ2U6OlNlYXJjaE1hdGNoPj4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoSW5SZXNvdXJj
ZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBib29sKiBjYXNlU2Vuc2l0aXZl
LCBjb25zdCBib29sKiBpc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mKTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0RG9jdW1lbnRDb250ZW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIGh0bWwpOwogICAgIHZpcnR1YWwgdm9pZCBjYW5PdmVy
cmlkZURldmljZU1ldHJpY3MoRXJyb3JTdHJpbmcqLCBib29sKik7CiAgICAgdmlydHVhbCB2b2lk
IHNldERldmljZU1ldHJpY3NPdmVycmlkZShFcnJvclN0cmluZyosIGludCB3aWR0aCwgaW50IGhl
aWdodCwgZG91YmxlIGZvbnRTY2FsZUZhY3RvciwgYm9vbCBmaXRXaW5kb3cpOwpAQCAtMTYzLDcg
KzE2Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjcmlwdHNFbmFibGVkKGJvb2wgaXNFbmFibGVk
KTsKIAogICAgIC8vIEluc3BlY3RvciBDb250cm9sbGVyIEFQSQotICAgIHZpcnR1YWwgdm9pZCBk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURF
OwogCiAgICAgLy8gQ3Jvc3MtYWdlbnRzIEFQSQpAQCAtMTkwLDggKzE5NCw4IEBAIHByaXZhdGU6
CiAgICAgc3RhdGljIGJvb2wgbWFpblJlc291cmNlQ29udGVudChGcmFtZSosIGJvb2wgd2l0aEJh
c2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOwogICAgIHN0YXRpYyBib29sIGRhdGFDb250ZW50
KGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29k
aW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCk7CiAKLSAgICBQ
YXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZT4gYnVpbGRPYmplY3RGb3JGcmFtZShG
cmFtZSopOwotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VU
cmVlPiBidWlsZE9iamVjdEZvckZyYW1lVHJlZShGcmFtZSopOworICAgIFBhc3NSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWU+IGJ1aWxkT2JqZWN0Rm9yRnJhbWUoRnJh
bWUqKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1l
UmVzb3VyY2VUcmVlPiBidWlsZE9iamVjdEZvckZyYW1lVHJlZShGcmFtZSopOwogICAgIFBhZ2Uq
IG1fcGFnZTsKICAgICBJbnNwZWN0b3JBZ2VudCogbV9pbnNwZWN0b3JBZ2VudDsKICAgICBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwpAQCAtMjE4LDcgKzIy
Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lnbm9yZVNjcmlwdHNFbmFibGVkTm90aWZpY2F0
aW9uOwogICAgIGJvb2wgbV9zaG93UGFpbnRSZWN0czsKICAgICBTdHJpbmcgbV9lbXVsYXRlZE1l
ZGlhOwotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1fc2NyaXB0c1RvRXZhbHVhdGVPbkxv
YWQ7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBtX3NjcmlwdHNUb0V2
YWx1YXRlT25Mb2FkOwogICAgIFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBtX2dlb2xvY2F0
aW9uUG9zaXRpb247CiAgICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IG1fcGxhdGZvcm1H
ZW9sb2NhdGlvblBvc2l0aW9uOwogICAgIFJlZlB0cjxEZXZpY2VPcmllbnRhdGlvbkRhdGE+IG1f
ZGV2aWNlT3JpZW50YXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKaW5kZXggYmFmNTFmNC4uMjdkZDVkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcApA
QCAtNDAsMjAgKzQwLDIyIEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yQ29uc29sZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRl
bmQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50
aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oIgogI2luY2x1ZGUgIlNjcmlwdEhlYXBTbmFwc2hv
dC5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGUu
aCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlci5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdERl
YnVnU2VydmVyLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0T2JqZWN0Lmg+CisjaW5jbHVk
ZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGlt
ZS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdD
b25jYXRlbmF0ZS5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBVc2VySW5pdGlhdGVkUHJvZmls
ZU5hbWUgPSAib3JnLndlYmtpdC5wcm9maWxlcy51c2VyLWluaXRpYXRlZCI7CkBAIC0xMTksNyAr
MTIxLDcgQEAgUGFzc093blB0cjxJbnNwZWN0b3JQcm9maWxlckFnZW50PiBJbnNwZWN0b3JQcm9m
aWxlckFnZW50OjpjcmVhdGUoSW5zdHJ1bWVudGluZ0EKIH0KIAogSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudDo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JDb25zb2xlQWdlbnQqIGNvbnNvbGVBZ2VudCwgSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgOiBJbnNwZWN0b3JC
YXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJQcm9maWxlciIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQor
ICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiUHJvZmlsZXIiKSwgaW5zdHJ1
bWVudGluZ0FnZW50cykKICAgICAsIG1fY29uc29sZUFnZW50KGNvbnNvbGVBZ2VudCkKICAgICAs
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1f
ZW5hYmxlZChmYWxzZSkKQEAgLTE2OCwxOSArMTcwLDE5IEBAIHZvaWQgSW5zcGVjdG9yUHJvZmls
ZXJBZ2VudDo6Y29sbGVjdEdhcmJhZ2UoV2ViQ29yZTo6RXJyb3JTdHJpbmcqKQogICAgIFNjcmlw
dFByb2ZpbGVyOjpjb2xsZWN0R2FyYmFnZSgpOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVy
OjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4gSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Y3JlYXRl
UHJvZmlsZUhlYWRlcihjb25zdCBTY3JpcHRQcm9maWxlJiBwcm9maWxlKQorUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4gSW5zcGVjdG9y
UHJvZmlsZXJBZ2VudDo6Y3JlYXRlUHJvZmlsZUhlYWRlcihjb25zdCBTY3JpcHRQcm9maWxlJiBw
cm9maWxlKQogewotICAgIHJldHVybiBUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFk
ZXI6OmNyZWF0ZSgpCi0gICAgICAgIC5zZXRUeXBlSWQoVHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQ
cm9maWxlSGVhZGVyOjpUeXBlSWQ6OkNQVSkKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI6OmNyZWF0ZSgpCisgICAgICAgIC5zZXRUeXBl
SWQoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI6OlR5cGVJ
ZDo6Q1BVKQogICAgICAgICAuc2V0VWlkKHByb2ZpbGUudWlkKCkpCiAgICAgICAgIC5zZXRUaXRs
ZShwcm9maWxlLnRpdGxlKCkpCiAgICAgICAgIC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8
VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPiBJbnNwZWN0b3JQcm9maWxlckFn
ZW50OjpjcmVhdGVTbmFwc2hvdEhlYWRlcihjb25zdCBTY3JpcHRIZWFwU25hcHNob3QmIHNuYXBz
aG90KQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmls
ZUhlYWRlcj4gSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Y3JlYXRlU25hcHNob3RIZWFkZXIoY29u
c3QgU2NyaXB0SGVhcFNuYXBzaG90JiBzbmFwc2hvdCkKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPiBoZWFkZXIgPSBUeXBlQnVpbGRlcjo6UHJvZmls
ZXI6OlByb2ZpbGVIZWFkZXI6OmNyZWF0ZSgpCi0gICAgICAgIC5zZXRUeXBlSWQoVHlwZUJ1aWxk
ZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyOjpUeXBlSWQ6OkhFQVApCisgICAgUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPiBoZWFkZXIgPSBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcjo6Y3JlYXRlKCkK
KyAgICAgICAgLnNldFR5cGVJZChJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJv
ZmlsZUhlYWRlcjo6VHlwZUlkOjpIRUFQKQogICAgICAgICAuc2V0VWlkKHNuYXBzaG90LnVpZCgp
KQogICAgICAgICAuc2V0VGl0bGUoc25hcHNob3QudGl0bGUoKSk7CiAgICAgaGVhZGVyLT5zZXRN
YXhKU09iamVjdElkKHNuYXBzaG90Lm1heFNuYXBzaG90SlNPYmplY3RJZCgpKTsKQEAgLTI0MCwx
MCArMjQyLDEwIEBAIFN0cmluZyBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRDdXJyZW50VXNl
ckluaXRpYXRlZFByb2ZpbGVOYW1lKGJvb2wgaW5jcmVtZW50CiAgICAgcmV0dXJuIG1ha2VTdHJp
bmcoVXNlckluaXRpYXRlZFByb2ZpbGVOYW1lLCAnLicsIFN0cmluZzo6bnVtYmVyKG1fY3VycmVu
dFVzZXJJbml0aWF0ZWRQcm9maWxlTnVtYmVyKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUHJvZmls
ZXJBZ2VudDo6Z2V0UHJvZmlsZUhlYWRlcnMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4+JiBoZWFkZXJz
KQordm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRQcm9maWxlSGVhZGVycyhFcnJvclN0
cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4+JiBoZWFkZXJzKQogewogICAgIG1f
cHJvZmlsZUhlYWRlcnNSZXF1ZXN0ZWQgPSB0cnVlOwotICAgIGhlYWRlcnMgPSBUeXBlQnVpbGRl
cjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPjo6Y3JlYXRlKCk7
CisgICAgaGVhZGVycyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPjo6Y3JlYXRlKCk7CiAKICAgICBQ
cm9maWxlc01hcDo6aXRlcmF0b3IgcHJvZmlsZXNFbmQgPSBtX3Byb2ZpbGVzLmVuZCgpOwogICAg
IGZvciAoUHJvZmlsZXNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wcm9maWxlcy5iZWdpbigpOyBpdCAh
PSBwcm9maWxlc0VuZDsgKytpdCkKQEAgLTI2OCw3ICsyNzAsNyBAQCBwcml2YXRlOgogCiB9IC8v
IG5hbWVzcGFjZQogCi12b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldENQVVByb2ZpbGUo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgcmF3VWlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6
OlByb2ZpbGVyOjpDUFVQcm9maWxlPiYgcHJvZmlsZU9iamVjdCkKK3ZvaWQgSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudDo6Z2V0Q1BVUHJvZmlsZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBy
YXdVaWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmls
ZT4mIHByb2ZpbGVPYmplY3QpCiB7CiAgICAgdW5zaWduZWQgdWlkID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHJhd1VpZCk7CiAgICAgUHJvZmlsZXNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wcm9maWxl
cy5maW5kKHVpZCk7CkBAIC0yNzYsNyArMjc4LDcgQEAgdm9pZCBJbnNwZWN0b3JQcm9maWxlckFn
ZW50OjpnZXRDUFVQcm9maWxlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IHJhd1VpZCwK
ICAgICAgICAgKmVycm9yU3RyaW5nID0gIlByb2ZpbGUgd2Fzbid0IGZvdW5kIjsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICBwcm9maWxlT2JqZWN0ID0gVHlwZUJ1aWxkZXI6OlByb2ZpbGVy
OjpDUFVQcm9maWxlOjpjcmVhdGUoKTsKKyAgICBwcm9maWxlT2JqZWN0ID0gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGU6OmNyZWF0ZSgpOwogICAgIHByb2ZpbGVP
YmplY3QtPnNldEhlYWQoaXQtPnZhbHVlLT5idWlsZEluc3BlY3Rvck9iamVjdEZvckhlYWQoKSk7
CiAgICAgcHJvZmlsZU9iamVjdC0+c2V0SWRsZVRpbWUoaXQtPnZhbHVlLT5pZGxlVGltZSgpKTsK
IH0KQEAgLTMyNyw3ICszMjksNyBAQCB2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnJlc2V0
RnJvbnRlbmRQcm9maWxlcygpCiAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXNldFBy
b2ZpbGVzKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6ZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVs
LCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIElu
c3BlY3RvclByb2ZpbGVyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERp
c3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclByb2ZpbGVyRnJvbnRlbmREaXNw
YXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNw
ZWN0b3JQcm9maWxlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIs
IHRoaXMpOwpAQCAtNDE0LDcgKzQxNiw3IEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6
dG9nZ2xlUmVjb3JkQnV0dG9uKGJvb2wgaXNQcm9maWxpbmcpCiAgICAgICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyLT5zZXRSZWNvcmRpbmdQcm9maWxlKGlzUHJvZmlsaW5nKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRPYmplY3RCeUhlYXBPYmplY3RJZChFcnJvclN0cmlu
ZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgaGVhcFNuYXBzaG90T2JqZWN0SWQsIGNvbnN0IFN0cmlu
Zyogb2JqZWN0R3JvdXAsIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0
PiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRPYmplY3RCeUhlYXBP
YmplY3RJZChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgaGVhcFNuYXBzaG90T2Jq
ZWN0SWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpCiB7CiAgICAgYm9vbCBvazsK
ICAgICB1bnNpZ25lZCBpZCA9IGhlYXBTbmFwc2hvdE9iamVjdElkLnRvVUludCgmb2spOwpAQCAt
NDIyLDcgKzQyNCw3IEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0T2JqZWN0QnlI
ZWFwT2JqZWN0SWQoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTCiAgICAgICAgICplcnJvciA9
ICJJbnZhbGlkIGhlYXAgc25hcHNob3Qgb2JqZWN0IGlkIjsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBTY3JpcHRPYmplY3QgaGVhcE9iamVjdCA9IFNjcmlwdFByb2ZpbGVyOjpvYmplY3RC
eUhlYXBPYmplY3RJZChpZCk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IGhlYXBPYmpl
Y3QgPSBTY3JpcHRQcm9maWxlcjo6b2JqZWN0QnlIZWFwT2JqZWN0SWQoaWQpOwogICAgIGlmICho
ZWFwT2JqZWN0Lmhhc05vVmFsdWUoKSkgewogICAgICAgICAqZXJyb3IgPSAiT2JqZWN0IGlzIG5v
dCBhdmFpbGFibGUiOwogICAgICAgICByZXR1cm47CkBAIC00NDQsNyArNDQ2LDcgQEAgdm9pZCBJ
bnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRIZWFwT2JqZWN0SWQoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBjb25zdCBTdHIKICAgICAgICAgKmVycm9yU3RyaW5nID0gIkluc3BlY3RlZCBjb250
ZXh0IGhhcyBnb25lIjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBTY3JpcHRWYWx1ZSB2
YWx1ZSA9IGluamVjdGVkU2NyaXB0LmZpbmRPYmplY3RCeUlkKG9iamVjdElkKTsKKyAgICBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSB2YWx1ZSA9IGluamVjdGVkU2NyaXB0LmZpbmRPYmplY3RCeUlk
KG9iamVjdElkKTsKICAgICBpZiAodmFsdWUuaGFzTm9WYWx1ZSgpIHx8IHZhbHVlLmlzVW5kZWZp
bmVkKCkpIHsKICAgICAgICAgKmVycm9yU3RyaW5nID0gIk9iamVjdCB3aXRoIGdpdmVuIGlkIG5v
dCBmb3VuZCI7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oCmluZGV4IDUzNzA5YzUuLjNmNzgzNmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaApA
QCAtMzIsMjAgKzMyLDI0IEBACiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYg
RU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2lu
Y2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5z
cGVjdG9yQXJyYXk7CitjbGFzcyBJbnNwZWN0b3JPYmplY3Q7Cit9CisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotY2xhc3MgSW5zcGVjdG9yQXJy
YXk7CiBjbGFzcyBJbnNwZWN0b3JDb25zb2xlQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0b3JPYmplY3Q7
CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgUGFnZTsKIGNsYXNzIFNjcmlwdEhl
YXBTbmFwc2hvdDsKQEAgLTU0LDcgKzU4LDcgQEAgY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAK
IHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JQcm9maWxlckFn
ZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3RvclByb2ZpbGVy
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvclByb2ZpbGVyQWdlbnQg
OiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yUHJvZmlsZXJCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3Rv
clByb2ZpbGVyQWdlbnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JQcm9maWxlckFnZW50PiBjcmVhdGUoSW5zdHJ1bWVu
dGluZ0FnZW50cyosIEluc3BlY3RvckNvbnNvbGVBZ2VudCosIFBhZ2UqLCBJbmplY3RlZFNjcmlw
dE1hbmFnZXIqKTsKQEAgLTgzLDE4ICs4NywxOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmFibGUo
Ym9vbCBza2lwUmVjb21waWxlKTsKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2VuYWJsZWQ7IH0KICAgICBTdHJpbmcgZ2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFt
ZShib29sIGluY3JlbWVudFByb2ZpbGVOdW1iZXIgPSBmYWxzZSk7Ci0gICAgdmlydHVhbCB2b2lk
IGdldFByb2ZpbGVIZWFkZXJzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJh
eTxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+PiYpOwotICAgIHZpcnR1YWwg
dm9pZCBnZXRDUFVQcm9maWxlKEVycm9yU3RyaW5nKiwgaW50IHVpZCwgUmVmUHRyPFR5cGVCdWls
ZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvZmls
ZUhlYWRlcnMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+PiYpOwor
ICAgIHZpcnR1YWwgdm9pZCBnZXRDUFVQcm9maWxlKEVycm9yU3RyaW5nKiwgaW50IHVpZCwgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlPiYpOwogICAg
IHZpcnR1YWwgdm9pZCBnZXRIZWFwU25hcHNob3QoRXJyb3JTdHJpbmcqLCBpbnQgdWlkKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYg
dHlwZSwgaW50IHVpZCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9p
ZCB0YWtlSGVhcFNuYXBzaG90KEVycm9yU3RyaW5nKiwgY29uc3QgYm9vbCogcmVwb3J0UHJvZ3Jl
c3MpOwogICAgIHZvaWQgdG9nZ2xlUmVjb3JkQnV0dG9uKGJvb2wgaXNQcm9maWxpbmcpOwogCi0g
ICAgdmlydHVhbCB2b2lkIGdldE9iamVjdEJ5SGVhcE9iamVjdElkKEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiBoZWFwU25hcHNob3RPYmplY3RJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91
cCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpOwor
ICAgIHZpcnR1YWwgdm9pZCBnZXRPYmplY3RCeUhlYXBPYmplY3RJZChFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyYgaGVhcFNuYXBzaG90T2JqZWN0SWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3Jv
dXAsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+
JiByZXN1bHQpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRIZWFwT2JqZWN0SWQoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBTdHJpbmcqIGhlYXBTbmFwc2hvdE9iamVjdElkKTsK
IAogcHJvdGVjdGVkOgpAQCAtMTA5LDggKzExMyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNl
dEZyb250ZW5kUHJvZmlsZXMoKTsKICAgICB2b2lkIHJlc3RvcmVFbmFibGVtZW50KCk7CiAKLSAg
ICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4gY3JlYXRl
UHJvZmlsZUhlYWRlcihjb25zdCBTY3JpcHRQcm9maWxlJik7Ci0gICAgUGFzc1JlZlB0cjxUeXBl
QnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+IGNyZWF0ZVNuYXBzaG90SGVhZGVyKGNv
bnN0IFNjcmlwdEhlYXBTbmFwc2hvdCYpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+IGNyZWF0ZVByb2ZpbGVIZWFkZXIoY29u
c3QgU2NyaXB0UHJvZmlsZSYpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+IGNyZWF0ZVNuYXBzaG90SGVhZGVyKGNvbnN0IFNj
cmlwdEhlYXBTbmFwc2hvdCYpOwogCiAgICAgSW5zcGVjdG9yQ29uc29sZUFnZW50KiBtX2NvbnNv
bGVBZ2VudDsKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
QWdlbnQuY3BwCmluZGV4IDM4ZGNkYWEuLjU3NjhiZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTQ4LDcgKzQ4LDYg
QEAKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9u
dGVuZC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgotI2luY2x1ZGUgIkluc3Bl
Y3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgpAQCAtNjcsMTYgKzY2LDE4IEBACiAj
aW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRGcmFtZS5o
IgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0LmgiCi0KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5z
cGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8
d3RmL0hleE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKK3Vz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNr
ZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91
bmlxdWU8SW5zcGVjdG9yTmV0d29ya0Zyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVs
KTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yTmV0d29ya0JhY2tlbmREaXNw
YXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpAQCAtMTAwLDkgKzEwMSw5
IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JIZWFk
ZXJzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlCiAgICAgcmV0dXJuIGhlYWRlcnNPYmplY3Q7CiB9
CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNvdXJjZVRpbWlu
Zz4gYnVpbGRPYmplY3RGb3JUaW1pbmcoY29uc3QgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcs
IERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCitzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNvdXJjZVRpbWluZz4gYnVpbGRPYmplY3RGb3JUaW1pbmco
Y29uc3QgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIp
CiB7Ci0gICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNvdXJjZVRpbWluZzo6Y3Jl
YXRlKCkKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVzb3Vy
Y2VUaW1pbmc6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRSZXF1ZXN0VGltZShsb2FkZXItPnRpbWlu
ZygpLT5tb25vdG9uaWNUaW1lVG9Qc2V1ZG9XYWxsVGltZSh0aW1pbmcuY29udmVydFJlc291cmNl
TG9hZFRpbWVUb01vbm90b25pY1RpbWUoMCkpKQogICAgICAgICAuc2V0UHJveHlTdGFydCh0aW1p
bmcucHJveHlTdGFydCkKICAgICAgICAgLnNldFByb3h5RW5kKHRpbWluZy5wcm94eUVuZCkKQEAg
LTExOCw5ICsxMTksOSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6
UmVzb3VyY2VUaW1pbmc+IGJ1aWxkT2JqZWN0Rm9yVGltaW5nKGNvbgogICAgICAgICAucmVsZWFz
ZSgpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVxdWVz
dD4gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29y
azo6UmVxdWVzdD4gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVx
dWVzdD4gcmVxdWVzdE9iamVjdCA9IFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXF1ZXN0OjpjcmVh
dGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXF1ZXN0
PiByZXF1ZXN0T2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVxdWVz
dDo6Y3JlYXRlKCkKICAgICAgICAgLnNldFVybChyZXF1ZXN0LnVybCgpLnN0cmluZygpKQogICAg
ICAgICAuc2V0TWV0aG9kKHJlcXVlc3QuaHR0cE1ldGhvZCgpKQogICAgICAgICAuc2V0SGVhZGVy
cyhidWlsZE9iamVjdEZvckhlYWRlcnMocmVxdWVzdC5odHRwSGVhZGVyRmllbGRzKCkpKTsKQEAg
LTEyOSw3ICsxMzAsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6
UmVxdWVzdD4gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3QoYwogICAgIHJldHVybiByZXF1
ZXN0T2JqZWN0OwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6
UmVzcG9uc2U+IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKK3N0YXRpYyBQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc3BvbnNlPiBidWlsZE9iamVj
dEZvclJlc291cmNlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7CiAgICAgaWYgKHJlc3BvbnNlLmlzTnVsbCgpKQogICAg
ICAgICByZXR1cm4gMDsKQEAgLTEzNyw3ICsxMzgsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxUeXBl
QnVpbGRlcjo6TmV0d29yazo6UmVzcG9uc2U+IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25z
ZQogICAgIGRvdWJsZSBzdGF0dXMgPSByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpOwogICAgIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhlYWRlcnMgPSBidWlsZE9iamVjdEZvckhlYWRlcnMocmVz
cG9uc2UuaHR0cEhlYWRlckZpZWxkcygpKTsKIAotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TmV0
d29yazo6UmVzcG9uc2U+IHJlc3BvbnNlT2JqZWN0ID0gVHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJl
c3BvbnNlOjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3
b3JrOjpSZXNwb25zZT4gcmVzcG9uc2VPYmplY3QgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpO
ZXR3b3JrOjpSZXNwb25zZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldFVybChyZXNwb25zZS51cmwo
KS5zdHJpbmcoKSkKICAgICAgICAgLnNldFN0YXR1cyhzdGF0dXMpCiAgICAgICAgIC5zZXRTdGF0
dXNUZXh0KHJlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCkpCkBAIC0xNTMsMTQgKzE1NCwxNCBAQCBz
dGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVzcG9uc2U+IGJ1aWxkT2Jq
ZWN0Rm9yUmVzb3VyY2VSZXNwb25zZQogICAgIHJldHVybiByZXNwb25zZU9iamVjdDsKIH0KIAot
c3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkNhY2hlZFJlc291cmNlPiBi
dWlsZE9iamVjdEZvckNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJj
ZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkNhY2hlZFJlc291cmNlPiBidWlsZE9iamVjdEZvckNhY2hl
ZFJlc291cmNlKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSwgRG9jdW1lbnRMb2FkZXIq
IGxvYWRlcikKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkNhY2hlZFJlc291
cmNlPiByZXNvdXJjZU9iamVjdCA9IFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpDYWNoZWRSZXNvdXJj
ZTo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6
Q2FjaGVkUmVzb3VyY2U+IHJlc291cmNlT2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
TmV0d29yazo6Q2FjaGVkUmVzb3VyY2U6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRVcmwoY2FjaGVk
UmVzb3VyY2UtPnVybCgpKQogICAgICAgICAuc2V0VHlwZShJbnNwZWN0b3JQYWdlQWdlbnQ6OmNh
Y2hlZFJlc291cmNlVHlwZUpzb24oKmNhY2hlZFJlc291cmNlKSkKICAgICAgICAgLnNldEJvZHlT
aXplKGNhY2hlZFJlc291cmNlLT5lbmNvZGVkU2l6ZSgpKTsKIAotICAgIFJlZlB0cjxUeXBlQnVp
bGRlcjo6TmV0d29yazo6UmVzcG9uc2U+IHJlc291cmNlUmVzcG9uc2UgPSBidWlsZE9iamVjdEZv
clJlc291cmNlUmVzcG9uc2UoY2FjaGVkUmVzb3VyY2UtPnJlc3BvbnNlKCksIGxvYWRlcik7Cisg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc3BvbnNlPiByZXNv
dXJjZVJlc3BvbnNlID0gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKGNhY2hlZFJlc291
cmNlLT5yZXNwb25zZSgpLCBsb2FkZXIpOwogICAgIGlmIChyZXNvdXJjZVJlc3BvbnNlKQogICAg
ICAgICByZXNvdXJjZU9iamVjdC0+c2V0UmVzcG9uc2UocmVzb3VyY2VSZXNwb25zZSk7CiAKQEAg
LTIxNiw5ICsyMTcsOSBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxTZW5kUmVx
dWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TAogICAgICAgICByZXF1ZXN0
LnNldEhUVFBIZWFkZXJGaWVsZCgiQ2FjaGUtQ29udHJvbCIsICJuby1jYWNoZSIpOwogICAgIH0K
IAotICAgIFR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkVudW0gcmVzb3VyY2VUeXBl
ID0gSW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJjZVR5cGVKc29uKHR5cGUpOworICAgIEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6RW51bSByZXNvdXJjZVR5cGUg
PSBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlVHlwZUpzb24odHlwZSk7CiAKLSAgICBSZWZQ
dHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4gaW5pdGlhdG9yT2JqZWN0ID0gYnVp
bGRJbml0aWF0b3JPYmplY3QobG9hZGVyLT5mcmFtZSgpID8gbG9hZGVyLT5mcmFtZSgpLT5kb2N1
bWVudCgpIDogMCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6
OkluaXRpYXRvcj4gaW5pdGlhdG9yT2JqZWN0ID0gYnVpbGRJbml0aWF0b3JPYmplY3QobG9hZGVy
LT5mcmFtZSgpID8gbG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpIDogMCk7CiAgICAgbV9mcm9u
dGVuZERpc3BhdGNoZXItPnJlcXVlc3RXaWxsQmVTZW50KHJlcXVlc3RJZCwgbV9wYWdlQWdlbnQt
PmZyYW1lSWQobG9hZGVyLT5mcmFtZSgpKSwgbV9wYWdlQWdlbnQtPmxvYWRlcklkKGxvYWRlciks
IGxvYWRlci0+dXJsKCkuc3RyaW5nKCksIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KHJl
cXVlc3QpLCBjdXJyZW50VGltZSgpLCBpbml0aWF0b3JPYmplY3QsIGJ1aWxkT2JqZWN0Rm9yUmVz
b3VyY2VSZXNwb25zZShyZWRpcmVjdFJlc3BvbnNlLCBsb2FkZXIpLCB0eXBlICE9IEluc3BlY3Rv
clBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJjZSA/ICZyZXNvdXJjZVR5cGUgOiAwKTsKIH0KIApAQCAt
MjMwLDcgKzIzMSw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6bWFya1Jlc291cmNl
QXNDYWNoZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogdm9pZCBJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1
bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVz
b3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVyKQogewogICAgIFN0cmluZyByZXF1ZXN0SWQgPSBJ
ZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKTsKLSAgICBSZWZQdHI8VHlw
ZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc3BvbnNlPiByZXNvdXJjZVJlc3BvbnNlID0gYnVpbGRPYmpl
Y3RGb3JSZXNvdXJjZVJlc3BvbnNlKHJlc3BvbnNlLCBsb2FkZXIpOworICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNwb25zZT4gcmVzb3VyY2VSZXNwb25zZSA9
IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShyZXNwb25zZSwgbG9hZGVyKTsKIAogICAg
IGJvb2wgaXNOb3RNb2RpZmllZCA9IHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0Owog
CkBAIC0yNDMsNyArMjQ0LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNl
aXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWUKICAgICBpZiAoY2Fj
aGVkUmVzb3VyY2UpIHsKICAgICAgICAgLy8gVXNlIG1pbWUgdHlwZSBmcm9tIGNhY2hlZCByZXNv
dXJjZSBpbiBjYXNlIHRoZSBvbmUgaW4gcmVzcG9uc2UgaXMgZW1wdHkuCiAgICAgICAgIGlmIChy
ZXNvdXJjZVJlc3BvbnNlICYmIHJlc3BvbnNlLm1pbWVUeXBlKCkuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgcmVzb3VyY2VSZXNwb25zZS0+c2V0U3RyaW5nKFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpS
ZXNwb25zZTo6TWltZVR5cGUsIGNhY2hlZFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCkp
OworICAgICAgICAgICAgcmVzb3VyY2VSZXNwb25zZS0+c2V0U3RyaW5nKEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc3BvbnNlOjpNaW1lVHlwZSwgY2FjaGVkUmVzb3VyY2UtPnJl
c3BvbnNlKCkubWltZVR5cGUoKSk7CiAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+YWRkQ2FjaGVk
UmVzb3VyY2UocmVxdWVzdElkLCBjYWNoZWRSZXNvdXJjZSk7CiAgICAgfQogCkBAIC0zMzUsNyAr
MzM2LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRMb2FkUmVzb3VyY2VGcm9t
TWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqIGxvYWQKICAgICAgICAgbV9yZXNvdXJjZXNEYXRh
LT5yZXVzZVhIUlJlcGxheURhdGEocmVxdWVzdElkLCByYXdSZXF1ZXN0SWQpOwogICAgIH0KIAot
ICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yPiBpbml0aWF0b3JPYmpl
Y3QgPSBidWlsZEluaXRpYXRvck9iamVjdChsb2FkZXItPmZyYW1lKCkgPyBsb2FkZXItPmZyYW1l
KCktPmRvY3VtZW50KCkgOiAwKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
TmV0d29yazo6SW5pdGlhdG9yPiBpbml0aWF0b3JPYmplY3QgPSBidWlsZEluaXRpYXRvck9iamVj
dChsb2FkZXItPmZyYW1lKCkgPyBsb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCkgOiAwKTsKIAog
ICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXF1ZXN0U2VydmVkRnJvbU1lbW9yeUNhY2hlKHJl
cXVlc3RJZCwgZnJhbWVJZCwgbG9hZGVySWQsIGxvYWRlci0+dXJsKCkuc3RyaW5nKCksIGN1cnJl
bnRUaW1lKCksIGluaXRpYXRvck9iamVjdCwgYnVpbGRPYmplY3RGb3JDYWNoZWRSZXNvdXJjZShy
ZXNvdXJjZSwgbG9hZGVyKSk7CiB9CkBAIC00NDAsMTkgKzQ0MSwxOSBAQCB2b2lkIEluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OmRpZFNjaGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9uKERvY3VtZW50KiBk
b2N1bWVudCkKICAgICAgICAgbV9zdHlsZVJlY2FsY3VsYXRpb25Jbml0aWF0b3IgPSBidWlsZElu
aXRpYXRvck9iamVjdChkb2N1bWVudCk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5l
dHdvcms6OkluaXRpYXRvcj4gSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6YnVpbGRJbml0aWF0b3JP
YmplY3QoRG9jdW1lbnQqIGRvY3VtZW50KQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmJ1aWxkSW5p
dGlhdG9yT2JqZWN0KERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBSZWZQdHI8U2NyaXB0Q2Fs
bFN0YWNrPiBzdGFja1RyYWNlID0gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKFNjcmlwdENhbGxTdGFj
azo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSwgdHJ1ZSk7CiAgICAgaWYgKHN0YWNrVHJhY2Ug
JiYgc3RhY2tUcmFjZS0+c2l6ZSgpID4gMCkgewotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6
Ok5ldHdvcms6OkluaXRpYXRvcj4gaW5pdGlhdG9yT2JqZWN0ID0gVHlwZUJ1aWxkZXI6Ok5ldHdv
cms6OkluaXRpYXRvcjo6Y3JlYXRlKCkKLSAgICAgICAgICAgIC5zZXRUeXBlKFR5cGVCdWlsZGVy
OjpOZXR3b3JrOjpJbml0aWF0b3I6OlR5cGU6OlNjcmlwdCk7CisgICAgICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IGluaXRpYXRvck9iamVjdCA9
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcjo6Y3JlYXRlKCkKKyAg
ICAgICAgICAgIC5zZXRUeXBlKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRp
YXRvcjo6VHlwZTo6U2NyaXB0KTsKICAgICAgICAgaW5pdGlhdG9yT2JqZWN0LT5zZXRTdGFja1Ry
YWNlKHN0YWNrVHJhY2UtPmJ1aWxkSW5zcGVjdG9yQXJyYXkoKSk7CiAgICAgICAgIHJldHVybiBp
bml0aWF0b3JPYmplY3Q7CiAgICAgfQogCiAgICAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LT5z
Y3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKSkgewotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6
Ok5ldHdvcms6OkluaXRpYXRvcj4gaW5pdGlhdG9yT2JqZWN0ID0gVHlwZUJ1aWxkZXI6Ok5ldHdv
cms6OkluaXRpYXRvcjo6Y3JlYXRlKCkKLSAgICAgICAgICAgIC5zZXRUeXBlKFR5cGVCdWlsZGVy
OjpOZXR3b3JrOjpJbml0aWF0b3I6OlR5cGU6OlBhcnNlcik7CisgICAgICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IGluaXRpYXRvck9iamVjdCA9
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcjo6Y3JlYXRlKCkKKyAg
ICAgICAgICAgIC5zZXRUeXBlKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRp
YXRvcjo6VHlwZTo6UGFyc2VyKTsKICAgICAgICAgaW5pdGlhdG9yT2JqZWN0LT5zZXRVcmwoZG9j
dW1lbnQtPnVybCgpLnN0cmluZygpKTsKICAgICAgICAgaW5pdGlhdG9yT2JqZWN0LT5zZXRMaW5l
TnVtYmVyKGRvY3VtZW50LT5zY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKS0+bGluZU51bWJlcigp
Lm9uZUJhc2VkSW50KCkpOwogICAgICAgICByZXR1cm4gaW5pdGlhdG9yT2JqZWN0OwpAQCAtNDYx
LDggKzQ2Miw4IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4g
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6YnVpbGRJbml0aWF0CiAgICAgaWYgKG1faXNSZWNhbGN1
bGF0aW5nU3R5bGUgJiYgbV9zdHlsZVJlY2FsY3VsYXRpb25Jbml0aWF0b3IpCiAgICAgICAgIHJl
dHVybiBtX3N0eWxlUmVjYWxjdWxhdGlvbkluaXRpYXRvcjsKIAotICAgIHJldHVybiBUeXBlQnVp
bGRlcjo6TmV0d29yazo6SW5pdGlhdG9yOjpjcmVhdGUoKQotICAgICAgICAuc2V0VHlwZShUeXBl
QnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yOjpUeXBlOjpPdGhlcikKKyAgICByZXR1cm4gSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yOjpjcmVhdGUoKQorICAgICAg
ICAuc2V0VHlwZShJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I6OlR5
cGU6Ok90aGVyKQogICAgICAgICAucmVsZWFzZSgpOwogfQogCkBAIC00NzUsMTQgKzQ3NiwxNCBA
QCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZENyZWF0ZVdlYlNvY2tldCh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
d2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIFJlZlB0cjxUeXBlQnVp
bGRlcjo6TmV0d29yazo6V2ViU29ja2V0UmVxdWVzdD4gcmVxdWVzdE9iamVjdCA9IFR5cGVCdWls
ZGVyOjpOZXR3b3JrOjpXZWJTb2NrZXRSZXF1ZXN0OjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpXZWJTb2NrZXRSZXF1ZXN0PiByZXF1ZXN0T2Jq
ZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6V2ViU29ja2V0UmVxdWVzdDo6
Y3JlYXRlKCkKICAgICAgICAgLnNldEhlYWRlcnMoYnVpbGRPYmplY3RGb3JIZWFkZXJzKHJlcXVl
c3QuaHR0cEhlYWRlckZpZWxkcygpKSk7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPndlYlNv
Y2tldFdpbGxTZW5kSGFuZHNoYWtlUmVxdWVzdChJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJ
ZChpZGVudGlmaWVyKSwgY3VycmVudFRpbWUoKSwgcmVxdWVzdE9iamVjdCk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3Bv
bnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpXZWJTb2NrZXRSZXNw
b25zZT4gcmVzcG9uc2VPYmplY3QgPSBUeXBlQnVpbGRlcjo6TmV0d29yazo6V2ViU29ja2V0UmVz
cG9uc2U6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdv
cms6OldlYlNvY2tldFJlc3BvbnNlPiByZXNwb25zZU9iamVjdCA9IEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6Ok5ldHdvcms6OldlYlNvY2tldFJlc3BvbnNlOjpjcmVhdGUoKQogICAgICAgICAuc2V0
U3RhdHVzKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpCiAgICAgICAgIC5zZXRTdGF0dXNUZXh0
KHJlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCkpCiAgICAgICAgIC5zZXRIZWFkZXJzKGJ1aWxkT2Jq
ZWN0Rm9ySGVhZGVycyhyZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkpKTsKQEAgLTQ5Niw3ICs0
OTcsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZENsb3NlV2ViU29ja2V0KHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllcikKIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojpk
aWRSZWNlaXZlV2ViU29ja2V0RnJhbWUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBX
ZWJTb2NrZXRGcmFtZSYgZnJhbWUpCiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3Jr
OjpXZWJTb2NrZXRGcmFtZT4gZnJhbWVPYmplY3QgPSBUeXBlQnVpbGRlcjo6TmV0d29yazo6V2Vi
U29ja2V0RnJhbWU6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
Ok5ldHdvcms6OldlYlNvY2tldEZyYW1lPiBmcmFtZU9iamVjdCA9IEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6Ok5ldHdvcms6OldlYlNvY2tldEZyYW1lOjpjcmVhdGUoKQogICAgICAgICAuc2V0T3Bj
b2RlKGZyYW1lLm9wQ29kZSkKICAgICAgICAgLnNldE1hc2soZnJhbWUubWFza2VkKQogICAgICAg
ICAuc2V0UGF5bG9hZERhdGEoU3RyaW5nKGZyYW1lLnBheWxvYWQsIGZyYW1lLnBheWxvYWRMZW5n
dGgpKTsKQEAgLTUwNSw3ICs1MDYsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRp
ZFJlY2VpdmVXZWJTb2NrZXRGcmFtZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsCiAKIHZvaWQg
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkU2VuZFdlYlNvY2tldEZyYW1lKHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgV2ViU29ja2V0RnJhbWUmIGZyYW1lKQogewotICAgIFJlZlB0
cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6V2ViU29ja2V0RnJhbWU+IGZyYW1lT2JqZWN0ID0gVHlw
ZUJ1aWxkZXI6Ok5ldHdvcms6OldlYlNvY2tldEZyYW1lOjpjcmVhdGUoKQorICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpXZWJTb2NrZXRGcmFtZT4gZnJhbWVPYmpl
Y3QgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpXZWJTb2NrZXRGcmFtZTo6Y3Jl
YXRlKCkKICAgICAgICAgLnNldE9wY29kZShmcmFtZS5vcENvZGUpCiAgICAgICAgIC5zZXRNYXNr
KGZyYW1lLm1hc2tlZCkKICAgICAgICAgLnNldFBheWxvYWREYXRhKFN0cmluZyhmcmFtZS5wYXls
b2FkLCBmcmFtZS5wYXlsb2FkTGVuZ3RoKSk7CkBAIC02NTAsNyArNjUxLDcgQEAgdm9pZCBJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50OjptYWluRnJhbWVOYXZpZ2F0ZWQoRG9jdW1lbnRMb2FkZXIqIGxv
YWRlcikKIH0KIAogSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6SW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdl
QWdlbnQqIHBhZ2VBZ2VudCwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCi0gICAgOiBJbnNwZWN0
b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJOZXR3b3JrIiksIGluc3RydW1lbnRpbmdBZ2VudHMp
CisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJOZXR3b3JrIiksIGluc3Ry
dW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCiAgICAgLCBtX2Ns
aWVudChjbGllbnQpCiAgICAgLCBtX3Jlc291cmNlc0RhdGEoYWRvcHRQdHIobmV3IE5ldHdvcmtS
ZXNvdXJjZXNEYXRhKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmgKaW5kZXggOGMyN2Y5NC4uOWYyZTcyYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCkBAIC0zMSw5ICsz
MSw5IEBACiAjaWZuZGVmIEluc3BlY3RvclJlc291cmNlQWdlbnRfaAogI2RlZmluZSBJbnNwZWN0
b3JSZXNvdXJjZUFnZW50X2gKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2lu
Y2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckZyb250ZW5kLmgiCi0KKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNDEsOCArNDEsOSBAQAogCiAjaWYgRU5BQkxFKElOU1BF
Q1RPUikKIAotbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBTdHJpbmc7CituYW1lc3BhY2UgSW5zcGVj
dG9yIHsKK2NsYXNzIEluc3BlY3RvckFycmF5OworY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogfQog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Myw5ICs1NCw3IEBAIGNsYXNzIERvY3VtZW50TG9h
ZGVyOwogY2xhc3MgRm9ybURhdGE7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUVFBIZWFkZXJNYXA7
Ci1jbGFzcyBJbnNwZWN0b3JBcnJheTsKIGNsYXNzIEluc3BlY3RvckNsaWVudDsKLWNsYXNzIElu
c3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKIGNsYXNzIEluc3RydW1l
bnRpbmdBZ2VudHM7CiBjbGFzcyBVUkw7CkBAIC03Niw3ICs3NSw3IEBAIHN0cnVjdCBXZWJTb2Nr
ZXRGcmFtZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3Rv
clJlc291cmNlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVj
dG9yTmV0d29ya0JhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvck5l
dHdvcmtCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
T3duUHRyPEluc3BlY3RvclJlc291cmNlQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5z
cGVjdG9yQ2xpZW50KiBjbGllbnQpCiAgICAgewpAQCAtODUsNyArODQsNyBAQCBwdWJsaWM6CiAK
ICAgICB+SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
LCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAK
ICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3Vt
ZW50TG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVk
aXJlY3RSZXNwb25zZSk7CkBAIC0xMTYsNyArMTE1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlk
UmVjYWxjdWxhdGVTdHlsZSgpOwogICAgIHZvaWQgZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRp
b24oRG9jdW1lbnQqKTsKIAotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6Oklu
aXRpYXRvcj4gYnVpbGRJbml0aWF0b3JPYmplY3QoRG9jdW1lbnQqKTsKKyAgICBQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4gYnVpbGRJbml0aWF0
b3JPYmplY3QoRG9jdW1lbnQqKTsKIAogI2lmIEVOQUJMRShXRUJfU09DS0VUUykKICAgICB2b2lk
IGRpZENyZWF0ZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVSTCYg
cmVxdWVzdFVSTCk7CkBAIC0xMzUsNyArMTM0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0
cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VyQWdlbnRPdmVycmlkZShFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RXh0cmFI
VFRQSGVhZGVycyhFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+Jik7
CisgICAgdmlydHVhbCB2b2lkIHNldEV4dHJhSFRUUEhlYWRlcnMoRXJyb3JTdHJpbmcqLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+Jik7CiAgICAgdmlydHVhbCB2b2lk
IGdldFJlc3BvbnNlQm9keShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBT
dHJpbmcqIGNvbnRlbnQsIGJvb2wqIGJhc2U2NEVuY29kZWQpOwogCiAgICAgdmlydHVhbCB2b2lk
IHJlcGxheVhIUihFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKQEAgLTE2
MCwxMiArMTU5LDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2VuYWJsZWQ7CiAgICAgYm9vbCBt
X2NhY2hlRGlzYWJsZWQ7CiAgICAgYm9vbCBtX2xvYWRpbmdYSFJTeW5jaHJvbm91c2x5OwotICAg
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1fZXh0cmFSZXF1ZXN0SGVhZGVyczsKKyAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1fZXh0cmFSZXF1ZXN0SGVhZGVyczsKIAog
ICAgIHR5cGVkZWYgSGFzaE1hcDxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgUmVmUHRyPFhIUlJl
cGxheURhdGE+PiBQZW5kaW5nWEhSUmVwbGF5RGF0YU1hcDsKICAgICBQZW5kaW5nWEhSUmVwbGF5
RGF0YU1hcCBtX3BlbmRpbmdYSFJSZXBsYXlEYXRhOwogICAgIC8vIEZJWE1FOiBJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50IHNob3VsZCBub3cgYmUgYXdhcmUgb2Ygc3R5bGUgcmVjYWxjdWxhdGlvbi4K
LSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4gbV9zdHlsZVJlY2Fs
Y3VsYXRpb25Jbml0aWF0b3I7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5l
dHdvcms6OkluaXRpYXRvcj4gbV9zdHlsZVJlY2FsY3VsYXRpb25Jbml0aWF0b3I7CiAgICAgYm9v
bCBtX2lzUmVjYWxjdWxhdGluZ1N0eWxlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAppbmRleCA4YjM0NjkwLi5hZDhjNDM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFn
ZW50LmNwcApAQCAtMzYsOCArMzYsOCBAQAogCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIK
ICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JW
YWx1ZXMuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2UuaCIKKyNpbmNsdWRlIDxpbnNwZWN0
b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8cGFyc2VyL1BhcnNlckVycm9yLmg+CiAj
aW5jbHVkZSA8cGFyc2VyL1NvdXJjZUNvZGUuaD4KICNpbmNsdWRlIDxydW50aW1lL0NvbXBsZXRp
b24uaD4KQEAgLTUwLDYgKzUwLDggQEAKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAordXNpbmcg
bmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgYm9v
bCBhc0Jvb2woY29uc3QgYm9vbCogY29uc3QgYikKQEAgLTU4LDcgKzYwLDcgQEAgc3RhdGljIGJv
b2wgYXNCb29sKGNvbnN0IGJvb2wqIGNvbnN0IGIpCiB9CiAKIEluc3BlY3RvclJ1bnRpbWVBZ2Vu
dDo6SW5zcGVjdG9yUnVudGltZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQot
ICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiUnVudGltZSIpLCBpbnN0cnVt
ZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiUnVu
dGltZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9lbmFibGVkKGZhbHNlKQogICAg
ICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogI2lmIEVO
QUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQpAQCAtODIsMTUgKzg0LDE1IEBAIHN0YXRpYyBTY3Jp
cHREZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBzZXRQYXVzZU9uRXhjZXB0aW9u
c1N0YXRlKFNjcmlwCiB9CiAjZW5kaWYKIAotc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6
OlJ1bnRpbWU6OkVycm9yUmFuZ2U+IGJ1aWxkRXJyb3JSYW5nZU9iamVjdChjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIHRva2VuTG9jYXRpb24pCitzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpSdW50aW1lOjpFcnJvclJhbmdlPiBidWlsZEVycm9yUmFuZ2VPYmplY3QoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiB0b2tlbkxvY2F0aW9uKQogewotICAgIFJlZlB0cjxUeXBlQnVp
bGRlcjo6UnVudGltZTo6RXJyb3JSYW5nZT4gcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OlJ1bnRpbWU6
OkVycm9yUmFuZ2U6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OlJ1bnRpbWU6OkVycm9yUmFuZ2U+IHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1
bnRpbWU6OkVycm9yUmFuZ2U6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRTdGFydE9mZnNldCh0b2tl
bkxvY2F0aW9uLnN0YXJ0T2Zmc2V0KQogICAgICAgICAuc2V0RW5kT2Zmc2V0KHRva2VuTG9jYXRp
b24uZW5kT2Zmc2V0KTsKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JSdW50aW1lQWdlbnQ6OnBhcnNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBl
eHByZXNzaW9uLCBUeXBlQnVpbGRlcjo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBlOjpFbnVtKiBy
ZXN1bHQsIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8U3RyaW5nPiogbWVzc2FnZSwgUmVmUHRyPFR5
cGVCdWlsZGVyOjpSdW50aW1lOjpFcnJvclJhbmdlPiYgcmFuZ2UpCit2b2lkIEluc3BlY3RvclJ1
bnRpbWVBZ2VudDo6cGFyc2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24s
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZTo6RW51bSog
cmVzdWx0LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8U3RyaW5nPiogbWVzc2Fn
ZSwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkVycm9yUmFuZ2U+JiBy
YW5nZSkKIHsKICAgICBWTSogdm0gPSBKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vblZNKCk7CiAgICAg
SlNMb2NrSG9sZGVyIGxvY2sodm0pOwpAQCAtMTAwLDE2ICsxMDIsMTYgQEAgdm9pZCBJbnNwZWN0
b3JSdW50aW1lQWdlbnQ6OnBhcnNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBleHByZXNz
aW9uLCBUeXBlQnUKIAogICAgIHN3aXRjaCAoZXJyb3IubV9zeW50YXhFcnJvclR5cGUpIHsKICAg
ICBjYXNlIFBhcnNlckVycm9yOjpTeW50YXhFcnJvck5vbmU6Ci0gICAgICAgICpyZXN1bHQgPSBU
eXBlQnVpbGRlcjo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBlOjpOb25lOworICAgICAgICAqcmVz
dWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBlOjpO
b25lOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBhcnNlckVycm9yOjpTeW50YXhFcnJvckly
cmVjb3ZlcmFibGU6Ci0gICAgICAgICpyZXN1bHQgPSBUeXBlQnVpbGRlcjo6UnVudGltZTo6U3lu
dGF4RXJyb3JUeXBlOjpJcnJlY292ZXJhYmxlOworICAgICAgICAqcmVzdWx0ID0gSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBlOjpJcnJlY292ZXJhYmxlOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIFBhcnNlckVycm9yOjpTeW50YXhFcnJvclVudGVybWlu
YXRlZExpdGVyYWw6Ci0gICAgICAgICpyZXN1bHQgPSBUeXBlQnVpbGRlcjo6UnVudGltZTo6U3lu
dGF4RXJyb3JUeXBlOjpVbnRlcm1pbmF0ZWRMaXRlcmFsOworICAgICAgICAqcmVzdWx0ID0gSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBlOjpVbnRlcm1pbmF0
ZWRMaXRlcmFsOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBhcnNlckVycm9yOjpTeW50YXhF
cnJvclJlY292ZXJhYmxlOgotICAgICAgICAqcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OlJ1bnRpbWU6
OlN5bnRheEVycm9yVHlwZTo6UmVjb3ZlcmFibGU7CisgICAgICAgICpyZXN1bHQgPSBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGU6OlJlY292ZXJhYmxlOwog
ICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTExOSw3ICsxMjEsNyBAQCB2b2lkIEluc3BlY3Rv
clJ1bnRpbWVBZ2VudDo6cGFyc2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Np
b24sIFR5cGVCdQogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1
YXRlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBj
b25zdCBTdHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBjb25zdCBpbmNsdWRl
Q29tbWFuZExpbmVBUEksIGNvbnN0IGJvb2wqIGNvbnN0IGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNB
bmRNdXRlQ29uc29sZSwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQsIGNvbnN0IGJvb2wq
IGNvbnN0IHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRy
PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIFR5cGVCdWlsZGVy
OjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKK3ZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50
OjpldmFsdWF0ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZXhwcmVz
c2lvbiwgY29uc3QgU3RyaW5nKiBjb25zdCBvYmplY3RHcm91cCwgY29uc3QgYm9vbCogY29uc3Qg
aW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBjb25zdCBib29sKiBjb25zdCBkb05vdFBhdXNlT25FeGNl
cHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkLCBjb25z
dCBib29sKiBjb25zdCByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcs
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiBy
ZXN1bHQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3du
KQogewogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRG
b3JFdmFsKGVycm9yU3RyaW5nLCBleGVjdXRpb25Db250ZXh0SWQpOwogICAgIGlmIChpbmplY3Rl
ZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCkBAIC0xNDIsNyArMTQ0LDcgQEAgdm9pZCBJbnNwZWN0b3JS
dW50aW1lQWdlbnQ6OmV2YWx1YXRlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3Ry
aW5nJiBleHAKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpjYWxsRnVu
Y3Rpb25PbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQs
IGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5Piog
Y29uc3Qgb3B0aW9uYWxBcmd1bWVudHMsIGNvbnN0IGJvb2wqIGNvbnN0IGRvTm90UGF1c2VPbkV4
Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3QgYm9vbCogY29uc3QgcmV0dXJuQnlWYWx1ZSwg
Y29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6
OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2Fz
VGhyb3duKQordm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmNhbGxGdW5jdGlvbk9uKEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5n
JiBleHByZXNzaW9uLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBjb25zdCBvcHRpb25h
bEFyZ3VtZW50cywgY29uc3QgYm9vbCogY29uc3QgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11
dGVDb25zb2xlLCBjb25zdCBib29sKiBjb25zdCByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBn
ZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpS
ZW1vdGVPYmplY3Q+JiByZXN1bHQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxi
b29sPiogd2FzVGhyb3duKQogewogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0g
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0
SWQpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKQEAgLTE3MSw3ICsx
NzMsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbgogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0
b3JSdW50aW1lQWdlbnQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBib29sKiBjb25zdCBvd25Qcm9wZXJ0aWVzLCBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpQcm9wZXJ0eURl
c2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVy
OjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFByb3BlcnRp
ZXMpCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVydGllcyhFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIGNvbnN0
IG93blByb3BlcnRpZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcmVzdWx0
LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgaW50ZXJuYWxQcm9w
ZXJ0aWVzKQogewogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQpOwogICAg
IGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAppbmRleCA5YjU3ZTJiLi44MmM1MjZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFn
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2Vu
dC5oCkBAIC0zMywyNSArMzMsMjkgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNs
dWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRl
ICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSW5qZWN0ZWRT
Y3JpcHQ7Ci1jbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CituYW1lc3BhY2UgSW5zcGVjdG9y
IHsKIGNsYXNzIEluc3BlY3RvckFycmF5OwogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3Mg
SW5zcGVjdG9yVmFsdWU7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW5qZWN0
ZWRTY3JpcHQ7CitjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBJbnN0cnVtZW50
aW5nQWdlbnRzOwogY2xhc3MgU2NyaXB0RGVidWdTZXJ2ZXI7CiBjbGFzcyBXb3JrZXJHbG9iYWxT
Y29wZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvclJ1
bnRpbWVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JS
dW50aW1lQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvclJ1bnRpbWVB
Z2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JSdW50aW1l
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNw
ZWN0b3JSdW50aW1lQWdlbnQpOwogcHVibGljOgogICAgIHZpcnR1YWwgfkluc3BlY3RvclJ1bnRp
bWVBZ2VudCgpOwpAQCAtNjAsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgLy8gUGFydCBvZiB0aGUg
cHJvdG9jb2wuCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopIHsgbV9lbmFi
bGVkID0gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKikgeyBt
X2VuYWJsZWQgPSBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBwYXJzZShFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgVHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlN5bnRheEVy
cm9yVHlwZTo6RW51bSogcmVzdWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PFN0cmluZz4qIG1l
c3NhZ2UsIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6RXJyb3JSYW5nZT4mKTsKKyAgICB2
aXJ0dWFsIHZvaWQgcGFyc2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24s
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZTo6RW51bSog
cmVzdWx0LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8U3RyaW5nPiogbWVzc2Fn
ZSwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkVycm9yUmFuZ2U+Jik7
CiAgICAgdmlydHVhbCB2b2lkIGV2YWx1YXRlKEVycm9yU3RyaW5nKiwKICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwKICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0
cmluZyogb2JqZWN0R3JvdXAsCkBAIC02OSwxOSArNzMsMTkgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgICAgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQsCiAgICAgICAgICAgICAgICAg
ICBjb25zdCBib29sKiByZXR1cm5CeVZhbHVlLAogICAgICAgICAgICAgICAgICAgY29uc3QgYm9v
bCogZ2VuZXJhdGVQcmV2aWV3LAotICAgICAgICAgICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVy
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsCi0gICAgICAgICAgICAgICAgICBUeXBl
QnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOworICAgICAgICAgICAgICAgICAg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJl
c3VsdCwKKyAgICAgICAgICAgICAgICAgIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1
dDxib29sPiogd2FzVGhyb3duKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FsbEZ1bmN0aW9uT24oRXJy
b3JTdHJpbmcqLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBvYmplY3RJ
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIG9wdGlv
bmFsQXJndW1lbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQXJyYXk+KiBvcHRpb25hbEFyZ3VtZW50cywKICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGJvb2wqIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29s
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wqIHJldHVybkJ5VmFsdWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4mIHJlc3VsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVCdWlsZGVyOjpPcHRP
dXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7CisgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0
PGJvb2w+KiB3YXNUaHJvd24pOwogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlT2JqZWN0KEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCk7Ci0gICAgdmlydHVhbCB2b2lkIGdldFBy
b3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBib29s
KiBvd25Qcm9wZXJ0aWVzLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpS
dW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkFycmF5PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+
JiBpbnRlcm5hbFByb3BlcnRpZXMpOworICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9wZXJ0aWVzKEVy
cm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCogb3duUHJvcGVy
dGllcywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1bHQsIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50
aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFByb3BlcnRpZXMpOwog
ICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlT2JqZWN0R3JvdXAoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIG9iamVjdEdyb3VwKTsKICAgICB2aXJ0dWFsIHZvaWQgcnVuKEVycm9yU3RyaW5nKik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNw
cAppbmRleCA2NzY2MjJiLi5jYWE0NGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC00OSw3ICs0OSw2IEBACiAjaW5jbHVkZSAi
SFRNTFN0eWxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNTU0FnZW50LmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgi
CiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlJlZ3VsYXJFeHByZXNzaW9uLmgiCiAjaW5j
bHVkZSAiU1ZHTmFtZXMuaCIKQEAgLTYwLDEzICs1OSwxMyBAQAogI2luY2x1ZGUgIlN0eWxlU2hl
ZXRDb250ZW50cy5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRMaXN0LmgiCiAjaW5jbHVkZSAiV2Vi
S2l0Q1NTS2V5ZnJhbWVzUnVsZS5oIgotCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZh
bHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CiAKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpBcnJheTsKK3VzaW5nIElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5OwogdXNpbmcgV2ViQ29yZTo6UnVsZVNvdXJjZURh
dGFMaXN0OwogdXNpbmcgV2ViQ29yZTo6Q1NTUnVsZVNvdXJjZURhdGE7CiAKQEAgLTE0NCw2ICsx
NDMsOCBAQCBQYXNzUmVmUHRyPFdlYkNvcmU6OkNTU1J1bGVTb3VyY2VEYXRhPiBQYXJzZWRTdHls
ZVNoZWV0OjpydWxlU291cmNlRGF0YUF0KHVuc2lnbgogICAgIHJldHVybiBtX3NvdXJjZURhdGEt
PmF0KGluZGV4KTsKIH0KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBlbnVtIE1lZGlhTGlzdFNvdXJjZSB7CkBAIC0xNTMsMTQgKzE1NCwxNCBA
QCBlbnVtIE1lZGlhTGlzdFNvdXJjZSB7CiAgICAgTWVkaWFMaXN0U291cmNlSW1wb3J0UnVsZQog
fTsKIAotc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6U291cmNlUmFuZ2U+IGJ1
aWxkU291cmNlUmFuZ2VPYmplY3QoY29uc3QgU291cmNlUmFuZ2UmIHJhbmdlLCBWZWN0b3I8c2l6
ZV90PiogbGluZUVuZGluZ3MpCitzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDU1M6OlNvdXJjZVJhbmdlPiBidWlsZFNvdXJjZVJhbmdlT2JqZWN0KGNvbnN0IFNvdXJj
ZVJhbmdlJiByYW5nZSwgVmVjdG9yPHNpemVfdD4qIGxpbmVFbmRpbmdzKQogewogICAgIGlmICgh
bGluZUVuZGluZ3MpCiAgICAgICAgIHJldHVybiAwOwogICAgIFRleHRQb3NpdGlvbiBzdGFydCA9
IENvbnRlbnRTZWFyY2hVdGlsczo6dGV4dFBvc2l0aW9uRnJvbU9mZnNldChyYW5nZS5zdGFydCwg
KmxpbmVFbmRpbmdzKTsKICAgICBUZXh0UG9zaXRpb24gZW5kID0gQ29udGVudFNlYXJjaFV0aWxz
Ojp0ZXh0UG9zaXRpb25Gcm9tT2Zmc2V0KHJhbmdlLmVuZCwgKmxpbmVFbmRpbmdzKTsKIAotICAg
IFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTb3VyY2VSYW5nZT4gcmVzdWx0ID0gVHlwZUJ1aWxk
ZXI6OkNTUzo6U291cmNlUmFuZ2U6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6U291cmNlUmFuZ2U+IHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6U291cmNlUmFuZ2U6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRTdGFydExpbmUoc3Rh
cnQubV9saW5lLnplcm9CYXNlZEludCgpKQogICAgICAgICAuc2V0U3RhcnRDb2x1bW4oc3RhcnQu
bV9jb2x1bW4uemVyb0Jhc2VkSW50KCkpCiAgICAgICAgIC5zZXRFbmRMaW5lKGVuZC5tX2xpbmUu
emVyb0Jhc2VkSW50KCkpCkBAIC0xNjgsMjYgKzE2OSwyNiBAQCBzdGF0aWMgUGFzc1JlZlB0cjxU
eXBlQnVpbGRlcjo6Q1NTOjpTb3VyY2VSYW5nZT4gYnVpbGRTb3VyY2VSYW5nZU9iamVjdChjb25z
dCBTbwogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0
cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYT4gYnVpbGRNZWRpYU9iamVjdChjb25zdCBNZWRp
YUxpc3QqIG1lZGlhLCBNZWRpYUxpc3RTb3VyY2UgbWVkaWFMaXN0U291cmNlLCBjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTCkKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTTWVkaWE+IGJ1aWxkTWVkaWFPYmplY3QoY29uc3QgTWVkaWFMaXN0KiBtZWRpYSwg
TWVkaWFMaXN0U291cmNlIG1lZGlhTGlzdFNvdXJjZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwp
CiB7CiAgICAgLy8gTWFrZSBjZXJ0YWluIGNvbXBpbGVycyBoYXBweSBieSBpbml0aWFsaXppbmcg
fHNvdXJjZXwgdXAtZnJvbnQuCi0gICAgVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE6OlNvdXJj
ZTo6RW51bSBzb3VyY2UgPSBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYTo6U291cmNlOjpJbmxp
bmVTaGVldDsKKyAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU01lZGlhOjpTb3Vy
Y2U6OkVudW0gc291cmNlID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYTo6
U291cmNlOjpJbmxpbmVTaGVldDsKICAgICBzd2l0Y2ggKG1lZGlhTGlzdFNvdXJjZSkgewogICAg
IGNhc2UgTWVkaWFMaXN0U291cmNlTWVkaWFSdWxlOgotICAgICAgICBzb3VyY2UgPSBUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NNZWRpYTo6U291cmNlOjpNZWRpYVJ1bGU7CisgICAgICAgIHNvdXJjZSA9
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE6OlNvdXJjZTo6TWVkaWFSdWxl
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lZGlhTGlzdFNvdXJjZUltcG9ydFJ1bGU6Ci0g
ICAgICAgIHNvdXJjZSA9IFR5cGVCdWlsZGVyOjpDU1M6OkNTU01lZGlhOjpTb3VyY2U6OkltcG9y
dFJ1bGU7CisgICAgICAgIHNvdXJjZSA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
TWVkaWE6OlNvdXJjZTo6SW1wb3J0UnVsZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRp
YUxpc3RTb3VyY2VMaW5rZWRTaGVldDoKLSAgICAgICAgc291cmNlID0gVHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTTWVkaWE6OlNvdXJjZTo6TGlua2VkU2hlZXQ7CisgICAgICAgIHNvdXJjZSA9IEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE6OlNvdXJjZTo6TGlua2VkU2hlZXQ7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVkaWFMaXN0U291cmNlSW5saW5lU2hlZXQ6Ci0gICAg
ICAgIHNvdXJjZSA9IFR5cGVCdWlsZGVyOjpDU1M6OkNTU01lZGlhOjpTb3VyY2U6OklubGluZVNo
ZWV0OworICAgICAgICBzb3VyY2UgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU01l
ZGlhOjpTb3VyY2U6OklubGluZVNoZWV0OwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE+IG1lZGlhT2JqZWN0ID0gVHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTTWVkaWE6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTTWVkaWE+IG1lZGlhT2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NNZWRpYTo6Y3JlYXRlKCkKICAgICAgICAgLnNldFRleHQobWVkaWEtPm1lZGlh
VGV4dCgpKQogICAgICAgICAuc2V0U291cmNlKHNvdXJjZSk7CiAKQEAgLTIzOCw3ICsyMzksNyBA
QCBzdGF0aWMgUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gYXNDU1NSdWxlTGlzdChDU1NSdWxlKiBy
dWxlKQogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBmaWxsTWVkaWFMaXN0Q2hhaW4o
Q1NTUnVsZSogcnVsZSwgQXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE+KiBtZWRpYUFy
cmF5KQorc3RhdGljIHZvaWQgZmlsbE1lZGlhTGlzdENoYWluKENTU1J1bGUqIHJ1bGUsIEFycmF5
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE+KiBtZWRpYUFycmF5KQogewog
ICAgIE1lZGlhTGlzdCogbWVkaWFMaXN0OwogICAgIENTU1J1bGUqIHBhcmVudFJ1bGUgPSBydWxl
OwpAQCAtMzE2LDExICszMTcsMTEgQEAgSW5zcGVjdG9yU3R5bGU6On5JbnNwZWN0b3JTdHlsZSgp
CiB7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3Rv
clN0eWxlOjpidWlsZE9iamVjdEZvclN0eWxlKCkgY29uc3QKK1Bhc3NSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OmJ1aWxkT2JqZWN0
Rm9yU3R5bGUoKSBjb25zdAogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHls
ZT4gcmVzdWx0ID0gc3R5bGVXaXRoUHJvcGVydGllcygpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiByZXN1bHQgPSBzdHlsZVdpdGhQcm9wZXJ0aWVz
KCk7CiAgICAgaWYgKCFtX3N0eWxlSWQuaXNFbXB0eSgpKQotICAgICAgICByZXN1bHQtPnNldFN0
eWxlSWQobV9zdHlsZUlkLmFzUHJvdG9jb2xWYWx1ZTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHls
ZUlkPigpKTsKKyAgICAgICAgcmVzdWx0LT5zZXRTdHlsZUlkKG1fc3R5bGVJZC5hc1Byb3RvY29s
VmFsdWU8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZUlkPigpKTsKIAogICAg
IHJlc3VsdC0+c2V0V2lkdGgobV9zdHlsZS0+Z2V0UHJvcGVydHlWYWx1ZSgid2lkdGgiKSk7CiAg
ICAgcmVzdWx0LT5zZXRIZWlnaHQobV9zdHlsZS0+Z2V0UHJvcGVydHlWYWx1ZSgiaGVpZ2h0Iikp
OwpAQCAtMzMyLDE1ICszMzMsMTUgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NT
dHlsZT4gSW5zcGVjdG9yU3R5bGU6OmJ1aWxkT2JqZWN0Rm9yU3R5bGUoKSBjb24KICAgICByZXR1
cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4gSW5zcGVjdG9yU3R5
bGU6OmJ1aWxkQXJyYXlGb3JDb21wdXRlZFN0eWxlKCkgY29uc3QKK1Bhc3NSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1ND
b21wdXRlZFN0eWxlUHJvcGVydHk+PiBJbnNwZWN0b3JTdHlsZTo6YnVpbGRBcnJheUZvckNvbXB1
dGVkU3R5bGUoKSBjb25zdAogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4gcmVzdWx0ID0gVHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT46OmNy
ZWF0ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+IHJlc3VsdCA9
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pjo6Y3JlYXRlKCk7CiAgICAgVmVjdG9yPEluc3Bl
Y3RvclN0eWxlUHJvcGVydHk+IHByb3BlcnRpZXM7CiAgICAgcG9wdWxhdGVBbGxQcm9wZXJ0aWVz
KCZwcm9wZXJ0aWVzKTsKIAogICAgIGZvciAoVmVjdG9yPEluc3BlY3RvclN0eWxlUHJvcGVydHk+
OjppdGVyYXRvciBpdCA9IHByb3BlcnRpZXMuYmVnaW4oKSwgaXRFbmQgPSBwcm9wZXJ0aWVzLmVu
ZCgpOyBpdCAhPSBpdEVuZDsgKytpdCkgewogICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eVNvdXJj
ZURhdGEmIHByb3BlcnR5RW50cnkgPSBpdC0+c291cmNlRGF0YTsKLSAgICAgICAgUmVmUHRyPFR5
cGVCdWlsZGVyOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4gZW50cnkgPSBUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk6OmNyZWF0ZSgpCisgICAgICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0
eT4gZW50cnkgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQ
cm9wZXJ0eTo6Y3JlYXRlKCkKICAgICAgICAgICAgIC5zZXROYW1lKHByb3BlcnR5RW50cnkubmFt
ZSkKICAgICAgICAgICAgIC5zZXRWYWx1ZShwcm9wZXJ0eUVudHJ5LnZhbHVlKTsKICAgICAgICAg
cmVzdWx0LT5hZGRJdGVtKGVudHJ5KTsKQEAgLTUxOSwxNCArNTIwLDE0IEBAIGJvb2wgSW5zcGVj
dG9yU3R5bGU6OnBvcHVsYXRlQWxsUHJvcGVydGllcyhWZWN0b3I8SW5zcGVjdG9yU3R5bGVQcm9w
ZXJ0eT4qIHJlc3VsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVzKCkg
Y29uc3QKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4g
SW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjb25zdAogewogICAgIFZlY3Rv
cjxJbnNwZWN0b3JTdHlsZVByb3BlcnR5PiBwcm9wZXJ0aWVzOwogICAgIHBvcHVsYXRlQWxsUHJv
cGVydGllcygmcHJvcGVydGllcyk7CiAKLSAgICBSZWZQdHI8QXJyYXk8VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTUHJvcGVydHk+PiBwcm9wZXJ0aWVzT2JqZWN0ID0gQXJyYXk8VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTUHJvcGVydHk+OjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8QXJyYXk8VHlwZUJ1aWxkZXI6
OkNTUzo6U2hvcnRoYW5kRW50cnk+PiBzaG9ydGhhbmRFbnRyaWVzID0gQXJyYXk8VHlwZUJ1aWxk
ZXI6OkNTUzo6U2hvcnRoYW5kRW50cnk+OjpjcmVhdGUoKTsKLSAgICBIYXNoTWFwPFN0cmluZywg
UmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5Pj4gcHJvcGVydHlOYW1lVG9QcmV2
aW91c0FjdGl2ZVByb3BlcnR5OworICAgIFJlZlB0cjxBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDU1M6OkNTU1Byb3BlcnR5Pj4gcHJvcGVydGllc09iamVjdCA9IEFycmF5PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8
QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTaG9ydGhhbmRFbnRyeT4+IHNob3J0
aGFuZEVudHJpZXMgPSBBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNob3J0aGFu
ZEVudHJ5Pjo6Y3JlYXRlKCk7CisgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5Pj4gcHJvcGVydHlOYW1lVG9QcmV2aW91c0Fj
dGl2ZVByb3BlcnR5OwogICAgIEhhc2hTZXQ8U3RyaW5nPiBmb3VuZFNob3J0aGFuZHM7CiAgICAg
U3RyaW5nIHByZXZpb3VzUHJpb3JpdHk7CiAgICAgU3RyaW5nIHByZXZpb3VzU3RhdHVzOwpAQCAt
NTM4LDkgKzUzOSw5IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IElu
c3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVzKCkgY29uCiAgICAgICAgIGNvbnN0IENT
U1Byb3BlcnR5U291cmNlRGF0YSYgcHJvcGVydHlFbnRyeSA9IGl0LT5zb3VyY2VEYXRhOwogICAg
ICAgICBjb25zdCBTdHJpbmcmIG5hbWUgPSBwcm9wZXJ0eUVudHJ5Lm5hbWU7CiAKLSAgICAgICAg
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlN0YXR1czo6RW51bSBzdGF0dXMgPSBpdC0+
ZGlzYWJsZWQgPyBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eTo6U3RhdHVzOjpEaXNhYmxl
ZCA6IFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpTdGF0dXM6OkFjdGl2ZTsKKyAgICAg
ICAgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eTo6U3RhdHVzOjpFbnVt
IHN0YXR1cyA9IGl0LT5kaXNhYmxlZCA/IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
UHJvcGVydHk6OlN0YXR1czo6RGlzYWJsZWQgOiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
OkNTU1Byb3BlcnR5OjpTdGF0dXM6OkFjdGl2ZTsKIAotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTUHJvcGVydHk+IHByb3BlcnR5ID0gVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJv
cGVydHk6OmNyZWF0ZSgpCisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6OkNTU1Byb3BlcnR5PiBwcm9wZXJ0eSA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTUHJvcGVydHk6OmNyZWF0ZSgpCiAgICAgICAgICAgICAuc2V0TmFtZShuYW1lKQogICAgICAg
ICAgICAgLnNldFZhbHVlKHByb3BlcnR5RW50cnkudmFsdWUpOwogCkBAIC01NzMsMjIgKzU3NCwy
MiBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHls
ZTo6c3R5bGVXaXRoUHJvcGVydGllcygpIGNvbgogICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5
SUQgcHJvcGVydHlJZCA9IGNzc1Byb3BlcnR5SUQobmFtZSk7CiAgICAgICAgICAgICAgICAgLy8g
Q2Fub25pY2FsaXplIHByb3BlcnR5IG5hbWVzIHRvIHRyZWF0IG5vbi1wcmVmaXhlZCBhbmQgdmVu
ZG9yLXByZWZpeGVkIHByb3BlcnR5IG5hbWVzIHRoZSBzYW1lIChvcGFjaXR5IHZzLiAtd2Via2l0
LW9wYWNpdHkpLgogICAgICAgICAgICAgICAgIFN0cmluZyBjYW5vbmljYWxQcm9wZXJ0eU5hbWUg
PSBwcm9wZXJ0eUlkID8gZ2V0UHJvcGVydHlOYW1lU3RyaW5nKHByb3BlcnR5SWQpIDogbmFtZTsK
LSAgICAgICAgICAgICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6
OkNTU1Byb3BlcnR5Pj46Oml0ZXJhdG9yIGFjdGl2ZUl0ID0gcHJvcGVydHlOYW1lVG9QcmV2aW91
c0FjdGl2ZVByb3BlcnR5LmZpbmQoY2Fub25pY2FsUHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAg
ICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTUHJvcGVydHk+Pjo6aXRlcmF0b3IgYWN0aXZlSXQgPSBwcm9wZXJ0eU5hbWVUb1ByZXZpb3Vz
QWN0aXZlUHJvcGVydHkuZmluZChjYW5vbmljYWxQcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAg
ICAgIGlmIChhY3RpdmVJdCAhPSBwcm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHku
ZW5kKCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5RW50cnkucGFyc2VkT2sp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3VjY2Vzc1ByaW9yaXR5ID0gYWN0aXZl
SXQtPnZhbHVlLT5nZXRTdHJpbmcoVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlByaW9y
aXR5LCAmcHJldmlvdXNQcmlvcml0eSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBib29sIHN1
Y2Nlc3NTdGF0dXMgPSBhY3RpdmVJdC0+dmFsdWUtPmdldFN0cmluZyhUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NQcm9wZXJ0eTo6U3RhdHVzLCAmcHJldmlvdXNTdGF0dXMpOworICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBzdWNjZXNzUHJpb3JpdHkgPSBhY3RpdmVJdC0+dmFsdWUtPmdldFN0cmlu
ZyhJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpQcmlvcml0eSwgJnBy
ZXZpb3VzUHJpb3JpdHkpOworICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzdWNjZXNzU3Rh
dHVzID0gYWN0aXZlSXQtPnZhbHVlLT5nZXRTdHJpbmcoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NQcm9wZXJ0eTo6U3RhdHVzLCAmcHJldmlvdXNTdGF0dXMpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHN1Y2Nlc3NTdGF0dXMgJiYgcHJldmlvdXNTdGF0dXMgIT0gImluYWN0
aXZlIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eUVudHJ5Lmlt
cG9ydGFudCB8fCAhc3VjY2Vzc1ByaW9yaXR5KSAvLyBQcmlvcml0eSBub3Qgc2V0ID09ICJub3Qg
aW1wb3J0YW50Ii4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkSW5hY3Rp
dmF0ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc3RhdHVz
ID09IFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpTdGF0dXM6OkFjdGl2ZSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN0YXR1cyA9PSBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpTdGF0dXM6OkFjdGl2ZSkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBJbmFjdGl2YXRlIGEgbm9uLWltcG9ydGFudCBwcm9w
ZXJ0eSBmb2xsb3dpbmcgdGhlIHNhbWUtbmFtZWQgaW1wb3J0YW50IHByb3BlcnR5LgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQ
cm9wZXJ0eTo6U3RhdHVzOjpJbmFjdGl2ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhdHVzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eTo6U3Rh
dHVzOjpJbmFjdGl2ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIHByZXZpb3VzUGFyc2VkT2s7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBib29sIHN1Y2Nlc3MgPSBhY3RpdmVJdC0+dmFsdWUtPmdldEJvb2xlYW4oVHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlBhcnNlZE9rLCAmcHJldmlvdXNQYXJzZWRPayk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIHN1Y2Nlc3MgPSBhY3RpdmVJdC0+dmFsdWUtPmdldEJv
b2xlYW4oSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eTo6UGFyc2VkT2ss
ICZwcmV2aW91c1BhcnNlZE9rKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdWNjZXNz
ICYmICFwcmV2aW91c1BhcnNlZE9rKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3Vs
ZEluYWN0aXZhdGUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC01OTYsNyArNTk3
LDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5
bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjb24KICAgICAgICAgICAgICAgICAgICAgcHJvcGVy
dHlOYW1lVG9QcmV2aW91c0FjdGl2ZVByb3BlcnR5LnNldChjYW5vbmljYWxQcm9wZXJ0eU5hbWUs
IHByb3BlcnR5KTsKIAogICAgICAgICAgICAgICAgIGlmIChzaG91bGRJbmFjdGl2YXRlKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGFjdGl2ZUl0LT52YWx1ZS0+c2V0U3RhdHVzKFR5cGVCdWlsZGVy
OjpDU1M6OkNTU1Byb3BlcnR5OjpTdGF0dXM6OkluYWN0aXZlKTsKKyAgICAgICAgICAgICAgICAg
ICAgYWN0aXZlSXQtPnZhbHVlLT5zZXRTdGF0dXMoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NQcm9wZXJ0eTo6U3RhdHVzOjpJbmFjdGl2ZSk7CiAgICAgICAgICAgICAgICAgICAgIHBy
b3BlcnR5TmFtZVRvUHJldmlvdXNBY3RpdmVQcm9wZXJ0eS5zZXQoY2Fub25pY2FsUHJvcGVydHlO
YW1lLCBwcm9wZXJ0eSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsK
QEAgLTYwNCwxMyArNjA1LDEzIEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5
bGU+IEluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVzKCkgY29uCiAgICAgICAgICAg
ICAgICAgLy8gRGVmYXVsdCAiaW1wbGljaXQiID09IGZhbHNlLgogICAgICAgICAgICAgICAgIGlm
IChpbXBsaWNpdCkKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHktPnNldEltcGxpY2l0KHRy
dWUpOwotICAgICAgICAgICAgICAgIHN0YXR1cyA9IFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3Bl
cnR5OjpTdGF0dXM6OlN0eWxlOworICAgICAgICAgICAgICAgIHN0YXR1cyA9IEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlN0YXR1czo6U3R5bGU7CiAKICAgICAgICAg
ICAgICAgICBTdHJpbmcgc2hvcnRoYW5kID0gbV9zdHlsZS0+Z2V0UHJvcGVydHlTaG9ydGhhbmQo
bmFtZSk7CiAgICAgICAgICAgICAgICAgaWYgKCFzaG9ydGhhbmQuaXNFbXB0eSgpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGlmICghZm91bmRTaG9ydGhhbmRzLmNvbnRhaW5zKHNob3J0aGFuZCkp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kU2hvcnRoYW5kcy5hZGQoc2hvcnRoYW5k
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTaG9y
dGhhbmRFbnRyeT4gZW50cnkgPSBUeXBlQnVpbGRlcjo6Q1NTOjpTaG9ydGhhbmRFbnRyeTo6Y3Jl
YXRlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDU1M6OlNob3J0aGFuZEVudHJ5PiBlbnRyeSA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNTUzo6U2hvcnRoYW5kRW50cnk6OmNyZWF0ZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLnNldE5hbWUoc2hvcnRoYW5kKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRW
YWx1ZShzaG9ydGhhbmRWYWx1ZShzaG9ydGhhbmQpKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IHNob3J0aGFuZEVudHJpZXMtPmFkZEl0ZW0oZW50cnkpOwpAQCAtNjIwLDExICs2MjEsMTEgQEAg
UGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OnN0
eWxlV2l0aFByb3BlcnRpZXMoKSBjb24KICAgICAgICAgfQogCiAgICAgICAgIC8vIERlZmF1bHQg
InN0YXR1cyIgPT0gInN0eWxlIi4KLSAgICAgICAgaWYgKHN0YXR1cyAhPSBUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NQcm9wZXJ0eTo6U3RhdHVzOjpTdHlsZSkKKyAgICAgICAgaWYgKHN0YXR1cyAhPSBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpTdGF0dXM6OlN0eWxlKQog
ICAgICAgICAgICAgcHJvcGVydHktPnNldFN0YXR1cyhzdGF0dXMpOwogICAgIH0KIAotICAgIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTU3R5bGU6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTU3R5bGU+IHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
U3R5bGU6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRDc3NQcm9wZXJ0aWVzKHByb3BlcnRpZXNPYmpl
Y3QpCiAgICAgICAgIC5zZXRTaG9ydGhhbmRFbnRyaWVzKHNob3J0aGFuZEVudHJpZXMpOwogICAg
IHJldHVybiByZXN1bHQucmVsZWFzZSgpOwpAQCAtNzU5LDcgKzc2MCw3IEBAIE5ld0xpbmVBbmRX
aGl0ZXNwYWNlJiBJbnNwZWN0b3JTdHlsZTo6bmV3TGluZUFuZFdoaXRlc3BhY2VEZWxpbWl0ZXJz
KCkgY29uc3QKICAgICByZXR1cm4gbV9mb3JtYXQ7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9y
U3R5bGVTaGVldD4gSW5zcGVjdG9yU3R5bGVTaGVldDo6Y3JlYXRlKEluc3BlY3RvclBhZ2VBZ2Vu
dCogcGFnZUFnZW50LCBjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPENTU1N0eWxlU2hlZXQ+
IHBhZ2VTdHlsZVNoZWV0LCBUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpFbnVt
IG9yaWdpbiwgY29uc3QgU3RyaW5nJiBkb2N1bWVudFVSTCwgTGlzdGVuZXIqIGxpc3RlbmVyKQor
UGFzc1JlZlB0cjxJbnNwZWN0b3JTdHlsZVNoZWV0PiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpjcmVh
dGUoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0IFN0cmluZyYgaWQsIFBhc3NS
ZWZQdHI8Q1NTU3R5bGVTaGVldD4gcGFnZVN0eWxlU2hlZXQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6RW51bSBvcmlnaW4sIGNvbnN0IFN0cmluZyYgZG9j
dW1lbnRVUkwsIExpc3RlbmVyKiBsaXN0ZW5lcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEluc3BlY3RvclN0eWxlU2hlZXQocGFnZUFnZW50LCBpZCwgcGFnZVN0eWxlU2hlZXQsIG9yaWdp
biwgZG9jdW1lbnRVUkwsIGxpc3RlbmVyKSk7CiB9CkBAIC03NzIsNyArNzczLDcgQEAgU3RyaW5n
IEluc3BlY3RvclN0eWxlU2hlZXQ6OnN0eWxlU2hlZXRVUkwoQ1NTU3R5bGVTaGVldCogcGFnZVN0
eWxlU2hlZXQpCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKLUluc3BlY3RvclN0eWxl
U2hlZXQ6Okluc3BlY3RvclN0eWxlU2hlZXQoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQs
IGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4gcGFnZVN0eWxlU2hl
ZXQsIFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OkVudW0gb3JpZ2luLCBjb25z
dCBTdHJpbmcmIGRvY3VtZW50VVJMLCBMaXN0ZW5lciogbGlzdGVuZXIpCitJbnNwZWN0b3JTdHls
ZVNoZWV0OjpJbnNwZWN0b3JTdHlsZVNoZWV0KEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50
LCBjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPENTU1N0eWxlU2hlZXQ+IHBhZ2VTdHlsZVNo
ZWV0LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OkVudW0g
b3JpZ2luLCBjb25zdCBTdHJpbmcmIGRvY3VtZW50VVJMLCBMaXN0ZW5lciogbGlzdGVuZXIpCiAg
ICAgOiBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCiAgICAgLCBtX2lkKGlkKQogICAgICwgbV9wYWdl
U3R5bGVTaGVldChwYWdlU3R5bGVTaGVldCkKQEAgLTk2Myw3ICs5NjQsNyBAQCBDU1NTdHlsZVJ1
bGUqIEluc3BlY3RvclN0eWxlU2hlZXQ6OnJ1bGVGb3JJZChjb25zdCBJbnNwZWN0b3JDU1NJZCYg
aWQpIGNvbnN0CiAKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNo
ZWV0Qm9keT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTdHlsZVNoZWV0KCkK
K1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0Qm9k
eT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTdHlsZVNoZWV0KCkKIHsKICAg
ICBDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0ID0gcGFnZVN0eWxlU2hlZXQoKTsKICAgICBpZiAo
IXN0eWxlU2hlZXQpCkBAIC05NzEsNyArOTcyLDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NTdHlsZVNoZWV0Qm9keT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3QK
IAogICAgIFJlZlB0cjxDU1NSdWxlTGlzdD4gY3NzUnVsZUxpc3QgPSBhc0NTU1J1bGVMaXN0KHN0
eWxlU2hlZXQpOwogCi0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRC
b2R5PiByZXN1bHQgPSBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0Qm9keTo6Y3JlYXRl
KCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0
Qm9keT4gcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0
Qm9keTo6Y3JlYXRlKCkKICAgICAgICAgLnNldFN0eWxlU2hlZXRJZChpZCgpKQogICAgICAgICAu
c2V0UnVsZXMoYnVpbGRBcnJheUZvclJ1bGVMaXN0KGNzc1J1bGVMaXN0LmdldCgpKSk7CiAKQEAg
LTk4Myw3ICs5ODQsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hl
ZXRCb2R5PiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdAogICAgIHJldHVybiByZXN1
bHQucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxl
U2hlZXRIZWFkZXI+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU3R5bGVTaGVl
dEluZm8oKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxl
U2hlZXRIZWFkZXI+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU3R5bGVTaGVl
dEluZm8oKQogewogICAgIENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQgPSBwYWdlU3R5bGVTaGVl
dCgpOwogICAgIGlmICghc3R5bGVTaGVldCkKQEAgLTk5MSw3ICs5OTIsNyBAQCBQYXNzUmVmUHRy
PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+IEluc3BlY3RvclN0eWxlU2hl
ZXQ6OmJ1aWxkT2JqZQogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3R5bGVTaGVldC0+b3du
ZXJEb2N1bWVudCgpOwogICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50ID8gZG9jdW1lbnQtPmZy
YW1lKCkgOiAwOwotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVh
ZGVyPiByZXN1bHQgPSBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyOjpjcmVh
dGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hl
ZXRIZWFkZXI+IHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVT
aGVldEhlYWRlcjo6Y3JlYXRlKCkKICAgICAgICAgLnNldFN0eWxlU2hlZXRJZChpZCgpKQogICAg
ICAgICAuc2V0T3JpZ2luKG1fb3JpZ2luKQogICAgICAgICAuc2V0RGlzYWJsZWQoc3R5bGVTaGVl
dC0+ZGlzYWJsZWQoKSkKQEAgLTEwMDIsMTAgKzEwMDMsMTAgQEAgUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWls
ZE9iamUKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAotc3RhdGljIFBhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IHNlbGVjdG9yc0Zyb21Tb3VyY2UoY29uc3Qg
Q1NTUnVsZVNvdXJjZURhdGEqIHNvdXJjZURhdGEsIGNvbnN0IFN0cmluZyYgc2hlZXRUZXh0KQor
c3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4g
c2VsZWN0b3JzRnJvbVNvdXJjZShjb25zdCBDU1NSdWxlU291cmNlRGF0YSogc291cmNlRGF0YSwg
Y29uc3QgU3RyaW5nJiBzaGVldFRleHQpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChSZWd1
bGFyRXhwcmVzc2lvbiwgY29tbWVudCwgKCIvXFwqW15dKj9cXCovIiwgVGV4dENhc2VTZW5zaXRp
dmUsIE11bHRpbGluZUVuYWJsZWQpKTsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0
cmluZz4+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gcmVzdWx0ID0g
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgY29u
c3QgU2VsZWN0b3JSYW5nZUxpc3QmIHJhbmdlcyA9IHNvdXJjZURhdGEtPnNlbGVjdG9yUmFuZ2Vz
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gcmFuZ2VzLnNpemUoKTsgaSA8IHNpemU7
ICsraSkgewogICAgICAgICBjb25zdCBTb3VyY2VSYW5nZSYgcmFuZ2UgPSByYW5nZXMuYXQoaSk7
CkBAIC0xMDE4LDEyICsxMDE5LDEyIEBAIHN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpB
cnJheTxTdHJpbmc+PiBzZWxlY3RvcnNGcm9tU291cmNlKGNvbnN0IENTU1J1bGVTCiAgICAgcmV0
dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6
U2VsZWN0b3JMaXN0PiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdEZvclNlbGVjdG9y
TGlzdChDU1NTdHlsZVJ1bGUqIHJ1bGUpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6U2VsZWN0b3JMaXN0PiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdEZv
clNlbGVjdG9yTGlzdChDU1NTdHlsZVJ1bGUqIHJ1bGUpCiB7CiAgICAgUmVmUHRyPENTU1J1bGVT
b3VyY2VEYXRhPiBzb3VyY2VEYXRhOwogICAgIGlmIChlbnN1cmVQYXJzZWREYXRhUmVhZHkoKSkK
ICAgICAgICAgc291cmNlRGF0YSA9IHJ1bGVTb3VyY2VEYXRhRm9yKHJ1bGUtPnN0eWxlKCkpOwot
ICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gc2VsZWN0b3JzOworICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBzZWxlY3RvcnM7CiAK
ICAgICAvLyBUaGlzIGludGVudGlvbmFsbHkgZG9lcyBub3QgcmVseSBvbiB0aGUgc291cmNlIGRh
dGEgdG8gYXZvaWQgY2F0Y2hpbmcgdGhlIHRyYWlsaW5nIGNvbW1lbnRzIChiZWZvcmUgdGhlIGRl
Y2xhcmF0aW9uIHN0YXJ0aW5nICd7JykuCiAgICAgU3RyaW5nIHNlbGVjdG9yVGV4dCA9IHJ1bGUt
PnNlbGVjdG9yVGV4dCgpOwpAQCAtMTAzMSwxMiArMTAzMiwxMiBAQCBQYXNzUmVmUHRyPFR5cGVC
dWlsZGVyOjpDU1M6OlNlbGVjdG9yTGlzdD4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmpl
Y3RGb3JTZQogICAgIGlmIChzb3VyY2VEYXRhKQogICAgICAgICBzZWxlY3RvcnMgPSBzZWxlY3Rv
cnNGcm9tU291cmNlKHNvdXJjZURhdGEuZ2V0KCksIG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgp
KTsKICAgICBlbHNlIHsKLSAgICAgICAgc2VsZWN0b3JzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFN0
cmluZz46OmNyZWF0ZSgpOworICAgICAgICBzZWxlY3RvcnMgPSBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICAgICAgY29uc3QgQ1NTU2VsZWN0b3JM
aXN0JiBzZWxlY3Rvckxpc3QgPSBydWxlLT5zdHlsZVJ1bGUoKS0+c2VsZWN0b3JMaXN0KCk7CiAg
ICAgICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gc2VsZWN0b3JMaXN0LmZp
cnN0KCk7IHNlbGVjdG9yOyBzZWxlY3RvciA9IENTU1NlbGVjdG9yTGlzdDo6bmV4dChzZWxlY3Rv
cikpCiAgICAgICAgICAgICBzZWxlY3RvcnMtPmFkZEl0ZW0oc2VsZWN0b3ItPnNlbGVjdG9yVGV4
dCgpKTsKICAgICB9Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yTGlzdD4g
cmVzdWx0ID0gVHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JMaXN0OjpjcmVhdGUoKQorICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yTGlzdD4gcmVzdWx0ID0g
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3Rvckxpc3Q6OmNyZWF0ZSgpCiAgICAg
ICAgIC5zZXRTZWxlY3RvcnMoc2VsZWN0b3JzKQogICAgICAgICAuc2V0VGV4dChzZWxlY3RvclRl
eHQpCiAgICAgICAgIC5yZWxlYXNlKCk7CkBAIC0xMDQ1LDI5ICsxMDQ2LDI5IEBAIFBhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JMaXN0PiBJbnNwZWN0b3JTdHlsZVNoZWV0Ojpi
dWlsZE9iamVjdEZvclNlCiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVp
bGRPYmplY3RGb3JSdWxlKENTU1N0eWxlUnVsZSogcnVsZSkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9i
amVjdEZvclJ1bGUoQ1NTU3R5bGVSdWxlKiBydWxlKQogewogICAgIENTU1N0eWxlU2hlZXQqIHN0
eWxlU2hlZXQgPSBwYWdlU3R5bGVTaGVldCgpOwogICAgIGlmICghc3R5bGVTaGVldCkKICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gcmVz
dWx0ID0gVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZTo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiByZXN1bHQgPSBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRTZWxlY3Rvckxp
c3QoYnVpbGRPYmplY3RGb3JTZWxlY3Rvckxpc3QocnVsZSkpCiAgICAgICAgIC5zZXRTb3VyY2VM
aW5lKHJ1bGUtPnN0eWxlUnVsZSgpLT5zb3VyY2VMaW5lKCkpCiAgICAgICAgIC5zZXRPcmlnaW4o
bV9vcmlnaW4pCiAgICAgICAgIC5zZXRTdHlsZShidWlsZE9iamVjdEZvclN0eWxlKHJ1bGUtPnN0
eWxlKCkpKTsKIAogICAgIC8vICJzb3VyY2VVUkwiIGlzIHByZXNlbnQgb25seSBmb3IgcmVndWxh
ciBydWxlcywgb3RoZXJ3aXNlICJvcmlnaW4iIHNob3VsZCBiZSB1c2VkIGluIHRoZSBmcm9udGVu
ZC4KLSAgICBpZiAobV9vcmlnaW4gPT0gVHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdp
bjo6UmVndWxhcikKKyAgICBpZiAobV9vcmlnaW4gPT0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpSZWd1bGFyKQogICAgICAgICByZXN1bHQtPnNldFNvdXJj
ZVVSTChmaW5hbFVSTCgpKTsKIAogICAgIGlmIChjYW5CaW5kKCkpIHsKICAgICAgICAgSW5zcGVj
dG9yQ1NTSWQgaWQocnVsZUlkKHJ1bGUpKTsKICAgICAgICAgaWYgKCFpZC5pc0VtcHR5KCkpCi0g
ICAgICAgICAgICByZXN1bHQtPnNldFJ1bGVJZChpZC5hc1Byb3RvY29sVmFsdWU8VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTUnVsZUlkPigpKTsKKyAgICAgICAgICAgIHJlc3VsdC0+c2V0UnVsZUlkKGlk
LmFzUHJvdG9jb2xWYWx1ZTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGVJZD4o
KSk7CiAgICAgfQogCi0gICAgUmVmUHRyPEFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU01lZGlh
Pj4gbWVkaWFBcnJheSA9IEFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU01lZGlhPjo6Y3JlYXRl
KCk7CisgICAgUmVmUHRyPEFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVk
aWE+PiBtZWRpYUFycmF5ID0gQXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NN
ZWRpYT46OmNyZWF0ZSgpOwogCiAgICAgZmlsbE1lZGlhTGlzdENoYWluKHJ1bGUsIG1lZGlhQXJy
YXkuZ2V0KCkpOwogICAgIGlmIChtZWRpYUFycmF5LT5sZW5ndGgoKSkKQEAgLTEwNzYsNyArMTA3
Nyw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gSW5zcGVjdG9yU3R5
bGVTaGVldDo6YnVpbGRPYmplY3RGb3JSdWxlKENTCiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNl
KCk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3Rv
clN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5
bGUpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IElu
c3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlv
biogc3R5bGUpCiB7CiAgICAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBzb3VyY2VEYXRhOwog
ICAgIGlmIChlbnN1cmVQYXJzZWREYXRhUmVhZHkoKSkKQEAgLTEwODQsMTMgKzEwODUsMTMgQEAg
UGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGVTaGVl
dDo6YnVpbGRPYmplY3RGb3JTdHlsZSgKIAogICAgIEluc3BlY3RvckNTU0lkIGlkID0gcnVsZU9y
U3R5bGVJZChzdHlsZSk7CiAgICAgaWYgKGlkLmlzRW1wdHkoKSkgewotICAgICAgICBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IGJvZ3VzU3R5bGUgPSBUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NTdHlsZTo6Y3JlYXRlKCkKLSAgICAgICAgICAgIC5zZXRDc3NQcm9wZXJ0aWVzKEFycmF5
PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5Pjo6Y3JlYXRlKCkpCi0gICAgICAgICAgICAu
c2V0U2hvcnRoYW5kRW50cmllcyhBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpTaG9ydGhhbmRFbnRy
eT46OmNyZWF0ZSgpKTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTU3R5bGU+IGJvZ3VzU3R5bGUgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNT
U1N0eWxlOjpjcmVhdGUoKQorICAgICAgICAgICAgLnNldENzc1Byb3BlcnRpZXMoQXJyYXk8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eT46OmNyZWF0ZSgpKQorICAgICAg
ICAgICAgLnNldFNob3J0aGFuZEVudHJpZXMoQXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpTaG9ydGhhbmRFbnRyeT46OmNyZWF0ZSgpKTsKICAgICAgICAgcmV0dXJuIGJvZ3VzU3R5
bGUucmVsZWFzZSgpOwogICAgIH0KICAgICBSZWZQdHI8SW5zcGVjdG9yU3R5bGU+IGluc3BlY3Rv
clN0eWxlID0gaW5zcGVjdG9yU3R5bGVGb3JJZChpZCk7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVy
OjpDU1M6OkNTU1N0eWxlPiByZXN1bHQgPSBpbnNwZWN0b3JTdHlsZS0+YnVpbGRPYmplY3RGb3JT
dHlsZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxl
PiByZXN1bHQgPSBpbnNwZWN0b3JTdHlsZS0+YnVpbGRPYmplY3RGb3JTdHlsZSgpOwogCiAgICAg
Ly8gU3R5bGUgdGV4dCBjYW5ub3QgYmUgcmV0cmlldmVkIHdpdGhvdXQgc3R5bGVzaGVldCwgc28g
c2V0IGNzc1RleHQgaGVyZS4KICAgICBpZiAoc291cmNlRGF0YSkgewpAQCAtMTM3NCw3ICsxMzc1
LDcgQEAgYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0OjpvcmlnaW5hbFN0eWxlU2hlZXRUZXh0KFN0
cmluZyogcmVzdWx0KSBjb25zdAogCiBib29sIEluc3BlY3RvclN0eWxlU2hlZXQ6OnJlc291cmNl
U3R5bGVTaGVldFRleHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0CiB7Ci0gICAgaWYgKG1fb3JpZ2lu
ID09IFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlVzZXIgfHwgbV9vcmlnaW4g
PT0gVHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6VXNlckFnZW50KQorICAgIGlm
IChtX29yaWdpbiA9PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmln
aW46OlVzZXIgfHwgbV9vcmlnaW4gPT0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHls
ZVNoZWV0T3JpZ2luOjpVc2VyQWdlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlm
ICghbV9wYWdlU3R5bGVTaGVldCB8fCAhb3duZXJEb2N1bWVudCgpIHx8ICFvd25lckRvY3VtZW50
KCktPmZyYW1lKCkpCkBAIC0xNDA2LDkgKzE0MDcsOSBAQCBib29sIEluc3BlY3RvclN0eWxlU2hl
ZXQ6OmlubGluZVN0eWxlU2hlZXRUZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdAogICAgIHJldHVy
biB0cnVlOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NSdWxlPj4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRBcnJheUZvclJ1bGVMaXN0
KENTU1J1bGVMaXN0KiBydWxlTGlzdCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPj4gSW5zcGVjdG9y
U3R5bGVTaGVldDo6YnVpbGRBcnJheUZvclJ1bGVMaXN0KENTU1J1bGVMaXN0KiBydWxlTGlzdCkK
IHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1
bGU+PiByZXN1bHQgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVs
ZT46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+PiByZXN1bHQgPSBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+
OjpjcmVhdGUoKTsKICAgICBpZiAoIXJ1bGVMaXN0KQogICAgICAgICByZXR1cm4gcmVzdWx0LnJl
bGVhc2UoKTsKIApAQCAtMTQ0MCwxMiArMTQ0MSwxMiBAQCB2b2lkIEluc3BlY3RvclN0eWxlU2hl
ZXQ6OmNvbGxlY3RGbGF0UnVsZXMoUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gcnVsZUxpc3QsIENT
UwogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5
bGU+IEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6Y3JlYXRlKEluc3BlY3RvclBh
Z2VBZ2VudCogcGFnZUFnZW50LCBjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPEVsZW1lbnQ+
IGVsZW1lbnQsIFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OkVudW0gb3JpZ2lu
LCBMaXN0ZW5lciogbGlzdGVuZXIpCitQYXNzUmVmUHRyPEluc3BlY3RvclN0eWxlU2hlZXRGb3JJ
bmxpbmVTdHlsZT4gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpjcmVhdGUoSW5z
cGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8
RWxlbWVudD4gZWxlbWVudCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0
T3JpZ2luOjpFbnVtIG9yaWdpbiwgTGlzdGVuZXIqIGxpc3RlbmVyKQogewogICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlKHBhZ2VBZ2VudCwg
aWQsIGVsZW1lbnQsIG9yaWdpbiwgbGlzdGVuZXIpKTsKIH0KIAotSW5zcGVjdG9yU3R5bGVTaGVl
dEZvcklubGluZVN0eWxlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUoSW5zcGVj
dG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8RWxl
bWVudD4gZWxlbWVudCwgVHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6RW51bSBv
cmlnaW4sIExpc3RlbmVyKiBsaXN0ZW5lcikKK0luc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVT
dHlsZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlKEluc3BlY3RvclBhZ2VBZ2Vu
dCogcGFnZUFnZW50LCBjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1l
bnQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6RW51bSBv
cmlnaW4sIExpc3RlbmVyKiBsaXN0ZW5lcikKICAgICA6IEluc3BlY3RvclN0eWxlU2hlZXQocGFn
ZUFnZW50LCBpZCwgMCwgb3JpZ2luLCAiIiwgbGlzdGVuZXIpCiAgICAgLCBtX2VsZW1lbnQoZWxl
bWVudCkKICAgICAsIG1fcnVsZVNvdXJjZURhdGEoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCmluZGV4IGY1MDM5YjQuLjJiMzE2YzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaApAQCAtMjks
OSArMjksOCBAQAogI2luY2x1ZGUgIkNTU1N0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJF
eGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yU3R5bGVUZXh0RWRpdG9yLmgiCi0j
aW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1
ZXMuaCIKLQorI2luY2x1ZGUgIkluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUg
PGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAg
LTY0LDEyICs2MywxMiBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIGV4cGxpY2l0IElu
c3BlY3RvckNTU0lkKFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHZhbHVlKQorICAgIGV4cGxpY2l0
IEluc3BlY3RvckNTU0lkKFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gdmFsdWUp
CiAgICAgewogICAgICAgICBpZiAoIXZhbHVlLT5nZXRTdHJpbmcoInN0eWxlU2hlZXRJZCIsICZt
X3N0eWxlU2hlZXRJZCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgICAgICBS
ZWZQdHI8SW5zcGVjdG9yVmFsdWU+IG9yZGluYWxWYWx1ZSA9IHZhbHVlLT5nZXQoIm9yZGluYWwi
KTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IG9yZGluYWxWYWx1
ZSA9IHZhbHVlLT5nZXQoIm9yZGluYWwiKTsKICAgICAgICAgaWYgKCFvcmRpbmFsVmFsdWUgfHwg
IW9yZGluYWxWYWx1ZS0+YXNOdW1iZXIoJm1fb3JkaW5hbCkpCiAgICAgICAgICAgICBtX3N0eWxl
U2hlZXRJZCA9ICIiOwogICAgIH0KQEAgLTg1LDcgKzg0LDcgQEAgcHVibGljOgogICAgIGNvbnN0
IFN0cmluZyYgc3R5bGVTaGVldElkKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZVNoZWV0SWQ7IH0K
ICAgICB1bnNpZ25lZCBvcmRpbmFsKCkgY29uc3QgeyByZXR1cm4gbV9vcmRpbmFsOyB9CiAKLSAg
ICAvLyBJRCB0eXBlIGlzIGVpdGhlciBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZUlkIG9yIFR5
cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGVJZC4KKyAgICAvLyBJRCB0eXBlIGlzIGVpdGhlciBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlSWQgb3IgSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NSdWxlSWQuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSUQ+CiAgICAgUGFz
c1JlZlB0cjxJRD4gYXNQcm90b2NvbFZhbHVlKCkgY29uc3QKICAgICB7CkBAIC0xNDAsOCArMTM5
LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkluc3BlY3RvclN0eWxlKCk7CiAKICAgICBDU1NT
dHlsZURlY2xhcmF0aW9uKiBjc3NTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGUuZ2V0KCk7
IH0KLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBidWlsZE9iamVj
dEZvclN0eWxlKCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4gYnVpbGRBcnJheUZvckNv
bXB1dGVkU3R5bGUoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTU3R5bGU+IGJ1aWxkT2JqZWN0Rm9yU3R5bGUoKSBjb25zdDsKKyAgICBQYXNz
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4gYnVpbGRBcnJheUZvckNvbXB1dGVk
U3R5bGUoKSBjb25zdDsKICAgICBib29sIGhhc0Rpc2FibGVkUHJvcGVydGllcygpIGNvbnN0IHsg
cmV0dXJuICFtX2Rpc2FibGVkUHJvcGVydGllcy5pc0VtcHR5KCk7IH0KICAgICBib29sIHNldFBy
b3BlcnR5VGV4dCh1bnNpZ25lZCBpbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIG92ZXJ3
cml0ZSwgU3RyaW5nKiBvbGRUZXh0LCBFeGNlcHRpb25Db2RlJik7CiAgICAgYm9vbCB0b2dnbGVQ
cm9wZXJ0eSh1bnNpZ25lZCBpbmRleCwgYm9vbCBkaXNhYmxlLCBFeGNlcHRpb25Db2RlJik7CkBA
IC0xNTcsNyArMTU2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGFwcGx5U3R5bGVUZXh0KGNvbnN0
IFN0cmluZyYgdGV4dCkgeyBFeGNlcHRpb25Db2RlIGVjID0gMDsgcmV0dXJuIHNldFRleHQodGV4
dCwgZWMpOyB9CiAKICAgICBib29sIHBvcHVsYXRlQWxsUHJvcGVydGllcyhWZWN0b3I8SW5zcGVj
dG9yU3R5bGVQcm9wZXJ0eT4qIHJlc3VsdCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NTdHlsZT4gc3R5bGVXaXRoUHJvcGVydGllcygpIGNvbnN0OworICAgIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gc3R5bGVXaXRo
UHJvcGVydGllcygpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IGV4
dHJhY3RTb3VyY2VEYXRhKCkgY29uc3Q7CiAgICAgU3RyaW5nIHNob3J0aGFuZFZhbHVlKGNvbnN0
IFN0cmluZyYgc2hvcnRoYW5kUHJvcGVydHkpIGNvbnN0OwogICAgIFN0cmluZyBzaG9ydGhhbmRQ
cmlvcml0eShjb25zdCBTdHJpbmcmIHNob3J0aGFuZFByb3BlcnR5KSBjb25zdDsKQEAgLTE4Miw3
ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxDU1NTdHls
ZURlY2xhcmF0aW9uKiwgUmVmUHRyPEluc3BlY3RvclN0eWxlPj4gSW5zcGVjdG9yU3R5bGVNYXA7
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yU3R5bGVTaGVldD4gY3JlYXRlKEluc3Bl
Y3RvclBhZ2VBZ2VudCosIGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVl
dD4gcGFnZVN0eWxlU2hlZXQsIFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OkVu
dW0sIGNvbnN0IFN0cmluZyYgZG9jdW1lbnRVUkwsIExpc3RlbmVyKik7CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8SW5zcGVjdG9yU3R5bGVTaGVldD4gY3JlYXRlKEluc3BlY3RvclBhZ2VBZ2VudCos
IGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4gcGFnZVN0eWxlU2hl
ZXQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6RW51bSwg
Y29uc3QgU3RyaW5nJiBkb2N1bWVudFVSTCwgTGlzdGVuZXIqKTsKICAgICBzdGF0aWMgU3RyaW5n
IHN0eWxlU2hlZXRVUkwoQ1NTU3R5bGVTaGVldCogcGFnZVN0eWxlU2hlZXQpOwogCiAgICAgdmly
dHVhbCB+SW5zcGVjdG9yU3R5bGVTaGVldCgpOwpAQCAtMTk3LDEwICsxOTYsMTAgQEAgcHVibGlj
OgogICAgIENTU1N0eWxlUnVsZSogYWRkUnVsZShjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBFeGNl
cHRpb25Db2RlJik7CiAgICAgYm9vbCBkZWxldGVSdWxlKGNvbnN0IEluc3BlY3RvckNTU0lkJiwg
RXhjZXB0aW9uQ29kZSYpOwogICAgIENTU1N0eWxlUnVsZSogcnVsZUZvcklkKGNvbnN0IEluc3Bl
Y3RvckNTU0lkJikgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NT
dHlsZVNoZWV0Qm9keT4gYnVpbGRPYmplY3RGb3JTdHlsZVNoZWV0KCk7Ci0gICAgUGFzc1JlZlB0
cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPiBidWlsZE9iamVjdEZvclN0
eWxlU2hlZXRJbmZvKCk7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxl
PiBidWlsZE9iamVjdEZvclJ1bGUoQ1NTU3R5bGVSdWxlKik7Ci0gICAgUGFzc1JlZlB0cjxUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gYnVpbGRPYmplY3RGb3JTdHlsZShDU1NTdHlsZURlY2xh
cmF0aW9uKik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNT
U1N0eWxlU2hlZXRCb2R5PiBidWlsZE9iamVjdEZvclN0eWxlU2hlZXQoKTsKKyAgICBQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4gYnVp
bGRPYmplY3RGb3JTdHlsZVNoZWV0SW5mbygpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiBidWlsZE9iamVjdEZvclJ1bGUoQ1NTU3R5bGVSdWxl
Kik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxl
PiBidWlsZE9iamVjdEZvclN0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qKTsKICAgICBib29sIHNl
dFN0eWxlVGV4dChjb25zdCBJbnNwZWN0b3JDU1NJZCYsIGNvbnN0IFN0cmluZyYgdGV4dCwgU3Ry
aW5nKiBvbGRUZXh0LCBFeGNlcHRpb25Db2RlJik7CiAgICAgYm9vbCBzZXRQcm9wZXJ0eVRleHQo
Y29uc3QgSW5zcGVjdG9yQ1NTSWQmLCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4LCBjb25zdCBTdHJp
bmcmIHRleHQsIGJvb2wgb3ZlcndyaXRlLCBTdHJpbmcqIG9sZFByb3BlcnR5VGV4dCwgRXhjZXB0
aW9uQ29kZSYpOwogICAgIGJvb2wgdG9nZ2xlUHJvcGVydHkoY29uc3QgSW5zcGVjdG9yQ1NTSWQm
LCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4LCBib29sIGRpc2FibGUsIEV4Y2VwdGlvbkNvZGUmKTsK
QEAgLTIxMyw5ICsyMTIsOSBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yQ1NTSWQgc3R5bGVJZChD
U1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkgY29uc3QgeyByZXR1cm4gcnVsZU9yU3R5bGVJZChz
dHlsZSk7IH0KIAogcHJvdGVjdGVkOgotICAgIEluc3BlY3RvclN0eWxlU2hlZXQoSW5zcGVjdG9y
UGFnZUFnZW50KiwgY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBw
YWdlU3R5bGVTaGVldCwgVHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6RW51bSwg
Y29uc3QgU3RyaW5nJiBkb2N1bWVudFVSTCwgTGlzdGVuZXIqKTsKKyAgICBJbnNwZWN0b3JTdHls
ZVNoZWV0KEluc3BlY3RvclBhZ2VBZ2VudCosIGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8
Q1NTU3R5bGVTaGVldD4gcGFnZVN0eWxlU2hlZXQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNT
Uzo6U3R5bGVTaGVldE9yaWdpbjo6RW51bSwgY29uc3QgU3RyaW5nJiBkb2N1bWVudFVSTCwgTGlz
dGVuZXIqKTsKIAotICAgIGJvb2wgY2FuQmluZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luICE9
IFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlVzZXJBZ2VudCAmJiBtX29yaWdp
biAhPSBUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpVc2VyOyB9CisgICAgYm9v
bCBjYW5CaW5kKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW4gIT0gSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpVc2VyQWdlbnQgJiYgbV9vcmlnaW4gIT0gSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpVc2VyOyB9CiAgICAg
SW5zcGVjdG9yQ1NTSWQgcnVsZU9yU3R5bGVJZChDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkg
Y29uc3Q7CiAgICAgdmlydHVhbCBEb2N1bWVudCogb3duZXJEb2N1bWVudCgpIGNvbnN0OwogICAg
IHZpcnR1YWwgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBydWxlU291cmNlRGF0YUZvcihDU1NT
dHlsZURlY2xhcmF0aW9uKiBzdHlsZSkgY29uc3Q7CkBAIC0yNDMsMTMgKzI0MiwxMyBAQCBwcml2
YXRlOgogICAgIGJvb2wgb3JpZ2luYWxTdHlsZVNoZWV0VGV4dChTdHJpbmcqIHJlc3VsdCkgY29u
c3Q7CiAgICAgYm9vbCByZXNvdXJjZVN0eWxlU2hlZXRUZXh0KFN0cmluZyogcmVzdWx0KSBjb25z
dDsKICAgICBib29sIGlubGluZVN0eWxlU2hlZXRUZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdDsK
LSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NS
dWxlPj4gYnVpbGRBcnJheUZvclJ1bGVMaXN0KENTU1J1bGVMaXN0Kik7Ci0gICAgUGFzc1JlZlB0
cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3Rvckxpc3Q+IGJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3JM
aXN0KENTU1N0eWxlUnVsZSopOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPj4gYnVpbGRBcnJh
eUZvclJ1bGVMaXN0KENTU1J1bGVMaXN0Kik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yTGlzdD4gYnVpbGRPYmplY3RGb3JTZWxlY3Rvckxpc3Qo
Q1NTU3R5bGVSdWxlKik7CiAKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50Owog
ICAgIFN0cmluZyBtX2lkOwogICAgIFJlZlB0cjxDU1NTdHlsZVNoZWV0PiBtX3BhZ2VTdHlsZVNo
ZWV0OwotICAgIFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OkVudW0gbV9vcmln
aW47CisgICAgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpF
bnVtIG1fb3JpZ2luOwogICAgIFN0cmluZyBtX2RvY3VtZW50VVJMOwogICAgIGJvb2wgbV9pc1Jl
dmFsaWRhdGluZzsKICAgICBQYXJzZWRTdHlsZVNoZWV0KiBtX3BhcnNlZFN0eWxlU2hlZXQ7CkBA
IC0yNjAsMTQgKzI1OSwxNCBAQCBwcml2YXRlOgogCiBjbGFzcyBJbnNwZWN0b3JTdHlsZVNoZWV0
Rm9ySW5saW5lU3R5bGUgOiBwdWJsaWMgSW5zcGVjdG9yU3R5bGVTaGVldCB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlPiBj
cmVhdGUoSW5zcGVjdG9yUGFnZUFnZW50KiwgY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxF
bGVtZW50PiwgVHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6RW51bSwgTGlzdGVu
ZXIqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5l
U3R5bGU+IGNyZWF0ZShJbnNwZWN0b3JQYWdlQWdlbnQqLCBjb25zdCBTdHJpbmcmIGlkLCBQYXNz
UmVmUHRyPEVsZW1lbnQ+LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRP
cmlnaW46OkVudW0sIExpc3RlbmVyKik7CiAKICAgICB2b2lkIGRpZE1vZGlmeUVsZW1lbnRBdHRy
aWJ1dGUoKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0VGV4dChTdHJpbmcqIHJlc3VsdCkgY29uc3Q7
CiAgICAgdmlydHVhbCBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZUZvcklkKGNvbnN0IEluc3Bl
Y3RvckNTU0lkJiBpZCkgY29uc3QgeyBBU1NFUlRfVU5VU0VEKGlkLCAhaWQub3JkaW5hbCgpKTsg
cmV0dXJuIGlubGluZVN0eWxlKCk7IH0KIAogcHJvdGVjdGVkOgotICAgIEluc3BlY3RvclN0eWxl
U2hlZXRGb3JJbmxpbmVTdHlsZShJbnNwZWN0b3JQYWdlQWdlbnQqLCBjb25zdCBTdHJpbmcmIGlk
LCBQYXNzUmVmUHRyPEVsZW1lbnQ+LCBUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2lu
OjpFbnVtLCBMaXN0ZW5lciopOworICAgIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHls
ZShJbnNwZWN0b3JQYWdlQWdlbnQqLCBjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPEVsZW1l
bnQ+LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OkVudW0s
IExpc3RlbmVyKik7CiAKICAgICB2aXJ0dWFsIERvY3VtZW50KiBvd25lckRvY3VtZW50KCkgY29u
c3Q7CiAgICAgdmlydHVhbCBSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IHJ1bGVTb3VyY2VEYXRh
Rm9yKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKSBjb25zdCB7IEFTU0VSVF9VTlVTRUQoc3R5
bGUsIHN0eWxlID09IGlubGluZVN0eWxlKCkpOyByZXR1cm4gbV9ydWxlU291cmNlRGF0YTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlVGV4dEVk
aXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVUZXh0RWRp
dG9yLmNwcAppbmRleCBiNmVjNGRiLi5mMzA5OWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVUZXh0RWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVUZXh0RWRpdG9yLmNwcApAQCAtMzIsNiArMzIs
OCBAQAogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JT
dHlsZVNoZWV0LmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogSW5zcGVjdG9yU3R5bGVUZXh0RWRpdG9yOjpJbnNwZWN0b3JTdHlsZVRleHRF
ZGl0b3IoVmVjdG9yPEluc3BlY3RvclN0eWxlUHJvcGVydHk+KiBhbGxQcm9wZXJ0aWVzLCBWZWN0
b3I8SW5zcGVjdG9yU3R5bGVQcm9wZXJ0eT4qIGRpc2FibGVkUHJvcGVydGllcywgY29uc3QgU3Ry
aW5nJiBzdHlsZVRleHQsIGNvbnN0IE5ld0xpbmVBbmRXaGl0ZXNwYWNlJiBmb3JtYXQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAK
aW5kZXggNGM4OGIxYi4uMjQ3MmVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApAQCAtNTQsNiArNTQsOCBAQAogI2luY2x1
ZGUgIlRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHZvaWQgVGltZWxpbmVUaW1lQ29udmVydGVyOjpyZXNldCgpCkBAIC02NSw3ICs2Nyw3IEBAIElu
c3BlY3RvclRpbWVsaW5lQWdlbnQ6On5JbnNwZWN0b3JUaW1lbGluZUFnZW50KCkKIHsKIH0KIAot
dm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
KiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yVGltZWxpbmVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5k
Q2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvclRpbWVsaW5lQmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CkBAIC00MjIs
OTkgKzQyNCw5OSBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmFkZFJlY29yZFRvVGlt
ZWxpbmUoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlYwogICAgIGlubmVyQWRkUmVjb3Jk
VG9UaW1lbGluZShyZWNvcmQsIHR5cGUpOwogfQogCi1zdGF0aWMgVHlwZUJ1aWxkZXI6OlRpbWVs
aW5lOjpFdmVudFR5cGU6OkVudW0gdG9Qcm90b2NvbChUaW1lbGluZVJlY29yZFR5cGUgdHlwZSkK
K3N0YXRpYyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpFbnVt
IHRvUHJvdG9jb2woVGltZWxpbmVSZWNvcmRUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBl
KSB7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OkV2ZW50RGlzcGF0Y2g6Ci0gICAgICAg
IHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6RXZlbnREaXNwYXRjaDsK
KyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5
cGU6OkV2ZW50RGlzcGF0Y2g7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OkJlZ2luRnJh
bWU6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6QmVn
aW5GcmFtZTsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5l
OjpFdmVudFR5cGU6OkJlZ2luRnJhbWU7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlNj
aGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9uOgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRp
bWVsaW5lOjpFdmVudFR5cGU6OlNjaGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9uOworICAgICAgICBy
ZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6U2NoZWR1
bGVTdHlsZVJlY2FsY3VsYXRpb247CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlJlY2Fs
Y3VsYXRlU3R5bGVzOgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVu
dFR5cGU6OlJlY2FsY3VsYXRlU3R5bGVzOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6UmVjYWxjdWxhdGVTdHlsZXM7CiAgICAgY2Fz
ZSBUaW1lbGluZVJlY29yZFR5cGU6OkludmFsaWRhdGVMYXlvdXQ6Ci0gICAgICAgIHJldHVybiBU
eXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6SW52YWxpZGF0ZUxheW91dDsKKyAgICAg
ICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6Oklu
dmFsaWRhdGVMYXlvdXQ7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OkxheW91dDoKLSAg
ICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpMYXlvdXQ7Cisg
ICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBl
OjpMYXlvdXQ7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlBhaW50OgotICAgICAgICBy
ZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlBhaW50OworICAgICAgICBy
ZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6UGFpbnQ7
CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlNjcm9sbExheWVyOgotICAgICAgICByZXR1
cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlNjcm9sbExheWVyOworICAgICAg
ICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6U2Ny
b2xsTGF5ZXI7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlJlc2l6ZUltYWdlOgotICAg
ICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlJlc2l6ZUltYWdl
OworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50
VHlwZTo6UmVzaXplSW1hZ2U7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OkNvbXBvc2l0
ZUxheWVyczoKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBl
OjpDb21wb3NpdGVMYXllcnM7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpUaW1lbGluZTo6RXZlbnRUeXBlOjpDb21wb3NpdGVMYXllcnM7CiAKICAgICBjYXNlIFRpbWVs
aW5lUmVjb3JkVHlwZTo6UGFyc2VIVE1MOgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRp
bWVsaW5lOjpFdmVudFR5cGU6OlBhcnNlSFRNTDsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlBhcnNlSFRNTDsKIAogICAgIGNhc2Ug
VGltZWxpbmVSZWNvcmRUeXBlOjpUaW1lckluc3RhbGw6Ci0gICAgICAgIHJldHVybiBUeXBlQnVp
bGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6VGltZXJJbnN0YWxsOworICAgICAgICByZXR1cm4g
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6VGltZXJJbnN0YWxs
OwogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpUaW1lclJlbW92ZToKLSAgICAgICAgcmV0
dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpUaW1lclJlbW92ZTsKKyAgICAg
ICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlRp
bWVyUmVtb3ZlOwogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpUaW1lckZpcmU6Ci0gICAg
ICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6VGltZXJGaXJlOwor
ICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlw
ZTo6VGltZXJGaXJlOwogCiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OkV2YWx1YXRlU2Ny
aXB0OgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OkV2
YWx1YXRlU2NyaXB0OworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGlt
ZWxpbmU6OkV2ZW50VHlwZTo6RXZhbHVhdGVTY3JpcHQ7CiAKICAgICBjYXNlIFRpbWVsaW5lUmVj
b3JkVHlwZTo6TWFya0xvYWQ6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6
OkV2ZW50VHlwZTo6TWFya0xvYWQ7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpNYXJrTG9hZDsKICAgICBjYXNlIFRpbWVsaW5lUmVj
b3JkVHlwZTo6TWFya0RPTUNvbnRlbnQ6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGlt
ZWxpbmU6OkV2ZW50VHlwZTo6TWFya0RPTUNvbnRlbnQ7CisgICAgICAgIHJldHVybiBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpNYXJrRE9NQ29udGVudDsKIAog
ICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpUaW1lU3RhbXA6Ci0gICAgICAgIHJldHVybiBU
eXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6VGltZVN0YW1wOworICAgICAgICByZXR1
cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6VGltZVN0YW1w
OwogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpUaW1lOgotICAgICAgICByZXR1cm4gVHlw
ZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlRpbWU7CisgICAgICAgIHJldHVybiBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpUaW1lOwogICAgIGNhc2Ug
VGltZWxpbmVSZWNvcmRUeXBlOjpUaW1lRW5kOgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6
OlRpbWVsaW5lOjpFdmVudFR5cGU6OlRpbWVFbmQ7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpUaW1lRW5kOwogCiAgICAgY2FzZSBU
aW1lbGluZVJlY29yZFR5cGU6OlNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0OgotICAgICAgICByZXR1
cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlNjaGVkdWxlUmVzb3VyY2VSZXF1
ZXN0OworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2
ZW50VHlwZTo6U2NoZWR1bGVSZXNvdXJjZVJlcXVlc3Q7CiAgICAgY2FzZSBUaW1lbGluZVJlY29y
ZFR5cGU6OlJlc291cmNlU2VuZFJlcXVlc3Q6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6
VGltZWxpbmU6OkV2ZW50VHlwZTo6UmVzb3VyY2VTZW5kUmVxdWVzdDsKKyAgICAgICAgcmV0dXJu
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlJlc291cmNlU2Vu
ZFJlcXVlc3Q7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlJlc291cmNlUmVjZWl2ZVJl
c3BvbnNlOgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6
OlJlc291cmNlUmVjZWl2ZVJlc3BvbnNlOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6UmVzb3VyY2VSZWNlaXZlUmVzcG9uc2U7CiAg
ICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlJlc291cmNlUmVjZWl2ZWREYXRhOgotICAgICAg
ICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlJlc291cmNlUmVjZWl2
ZWREYXRhOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6
OkV2ZW50VHlwZTo6UmVzb3VyY2VSZWNlaXZlZERhdGE7CiAgICAgY2FzZSBUaW1lbGluZVJlY29y
ZFR5cGU6OlJlc291cmNlRmluaXNoOgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVs
aW5lOjpFdmVudFR5cGU6OlJlc291cmNlRmluaXNoOworICAgICAgICByZXR1cm4gSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6UmVzb3VyY2VGaW5pc2g7CiAKICAg
ICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6WEhSUmVhZHlTdGF0ZUNoYW5nZToKLSAgICAgICAg
cmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpYSFJSZWFkeVN0YXRlQ2hh
bmdlOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2
ZW50VHlwZTo6WEhSUmVhZHlTdGF0ZUNoYW5nZTsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlw
ZTo6WEhSTG9hZDoKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRU
eXBlOjpYSFJMb2FkOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGlt
ZWxpbmU6OkV2ZW50VHlwZTo6WEhSTG9hZDsKIAogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBl
OjpGdW5jdGlvbkNhbGw6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2
ZW50VHlwZTo6RnVuY3Rpb25DYWxsOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6RnVuY3Rpb25DYWxsOwogCiAgICAgY2FzZSBUaW1l
bGluZVJlY29yZFR5cGU6OlJlcXVlc3RBbmltYXRpb25GcmFtZToKLSAgICAgICAgcmV0dXJuIFR5
cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpSZXF1ZXN0QW5pbWF0aW9uRnJhbWU7Cisg
ICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBl
OjpSZXF1ZXN0QW5pbWF0aW9uRnJhbWU7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OkNh
bmNlbEFuaW1hdGlvbkZyYW1lOgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5l
OjpFdmVudFR5cGU6OkNhbmNlbEFuaW1hdGlvbkZyYW1lOworICAgICAgICByZXR1cm4gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6Q2FuY2VsQW5pbWF0aW9uRnJh
bWU7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OkZpcmVBbmltYXRpb25GcmFtZToKLSAg
ICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpGaXJlQW5pbWF0
aW9uRnJhbWU7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGlu
ZTo6RXZlbnRUeXBlOjpGaXJlQW5pbWF0aW9uRnJhbWU7CiAKICAgICBjYXNlIFRpbWVsaW5lUmVj
b3JkVHlwZTo6V2ViU29ja2V0Q3JlYXRlOgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRp
bWVsaW5lOjpFdmVudFR5cGU6OldlYlNvY2tldENyZWF0ZTsKKyAgICAgICAgcmV0dXJuIEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OldlYlNvY2tldENyZWF0ZTsK
ICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6V2ViU29ja2V0U2VuZEhhbmRzaGFrZVJlcXVl
c3Q6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6V2Vi
U29ja2V0U2VuZEhhbmRzaGFrZVJlcXVlc3Q7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpXZWJTb2NrZXRTZW5kSGFuZHNoYWtlUmVx
dWVzdDsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6V2ViU29ja2V0UmVjZWl2ZUhhbmRz
aGFrZVJlc3BvbnNlOgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVu
dFR5cGU6OldlYlNvY2tldFJlY2VpdmVIYW5kc2hha2VSZXNwb25zZTsKKyAgICAgICAgcmV0dXJu
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OldlYlNvY2tldFJl
Y2VpdmVIYW5kc2hha2VSZXNwb25zZTsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6V2Vi
U29ja2V0RGVzdHJveToKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZl
bnRUeXBlOjpXZWJTb2NrZXREZXN0cm95OworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6V2ViU29ja2V0RGVzdHJveTsKICAgICB9CiAK
LSAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlRpbWVTdGFtcDsK
KyAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6
VGltZVN0YW1wOwogfQogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmlubmVyQWRkUmVj
b3JkVG9UaW1lbGluZShQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcHJwUmVjb3JkLCBUaW1l
bGluZVJlY29yZFR5cGUgdHlwZSkKIHsKLSAgICBwcnBSZWNvcmQtPnNldFN0cmluZygidHlwZSIs
IFR5cGVCdWlsZGVyOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZSh0b1Byb3RvY29sKHR5cGUpKSk7Cisg
ICAgcHJwUmVjb3JkLT5zZXRTdHJpbmcoInR5cGUiLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpn
ZXRFbnVtQ29uc3RhbnRWYWx1ZSh0b1Byb3RvY29sKHR5cGUpKSk7CiAKLSAgICBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50PiByZWNvcmQgPSBUeXBlQnVpbGRlcjo6
VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ6OnJ1bnRpbWVDYXN0KHBycFJlY29yZCk7CisgICAgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50PiByZWNv
cmQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6VGltZWxpbmVFdmVudDo6cnVu
dGltZUNhc3QocHJwUmVjb3JkKTsKIAogICAgIHNldERPTUNvdW50ZXJzKHJlY29yZC5nZXQoKSk7
CiAKQEAgLTUzMSw3ICs1MzMsNyBAQCBzdGF0aWMgc2l6ZV90IHVzZWRIZWFwU2l6ZSgpCiAgICAg
cmV0dXJuIEpTRE9NV2luZG93Ojpjb21tb25WTSgpLT5oZWFwLnNpemUoKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50OjpzZXRET01Db3VudGVycyhUeXBlQnVpbGRlcjo6VGltZWxp
bmU6OlRpbWVsaW5lRXZlbnQqIHJlY29yZCkKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
c2V0RE9NQ291bnRlcnMoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OlRpbWVsaW5l
RXZlbnQqIHJlY29yZCkKIHsKICAgICByZWNvcmQtPnNldFVzZWRIZWFwU2l6ZSh1c2VkSGVhcFNp
emUoKSk7CiAKQEAgLTU0Myw3ICs1NDUsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OnNldERPTUNvdW50ZXJzKFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6VGltZWxpbmVFdmVudAogICAg
ICAgICAgICAgbm9kZUNvdW50ID0gSW5zcGVjdG9yQ291bnRlcnM6OmNvdW50ZXJWYWx1ZShJbnNw
ZWN0b3JDb3VudGVyczo6Tm9kZUNvdW50ZXIpOwogICAgICAgICB9CiAgICAgICAgIGludCBsaXN0
ZW5lckNvdW50ID0gVGhyZWFkTG9jYWxJbnNwZWN0b3JDb3VudGVyczo6Y3VycmVudCgpLmNvdW50
ZXJWYWx1ZShUaHJlYWRMb2NhbEluc3BlY3RvckNvdW50ZXJzOjpKU0V2ZW50TGlzdGVuZXJDb3Vu
dGVyKTsKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RE9NQ291bnRlcnM+
IGNvdW50ZXJzID0gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpET01Db3VudGVyczo6Y3JlYXRlKCkK
KyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpET01Db3Vu
dGVycz4gY291bnRlcnMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RE9NQ291
bnRlcnM6OmNyZWF0ZSgpCiAgICAgICAgICAgICAuc2V0RG9jdW1lbnRzKGRvY3VtZW50Q291bnQp
CiAgICAgICAgICAgICAuc2V0Tm9kZXMobm9kZUNvdW50KQogICAgICAgICAgICAgLnNldEpzRXZl
bnRMaXN0ZW5lcnMobGlzdGVuZXJDb3VudCk7CkBAIC01ODAsNyArNTgyLDcgQEAgdm9pZCBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoVGltZWxpbmVSZWNv
cmRUeXBlIHR5cGUpCiB9CiAKIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Okluc3BlY3RvclRpbWVs
aW5lQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVj
dG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIEluc3BlY3Rvck1lbW9yeUFnZW50KiBtZW1vcnlBZ2Vu
dCwgSW5zcGVjdG9yVHlwZSB0eXBlLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkKLSAgICA6IElu
c3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIlRpbWVsaW5lIiksIGluc3RydW1lbnRpbmdB
Z2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJUaW1lbGluZSIp
LCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQogICAg
ICwgbV9tZW1vcnlBZ2VudChtZW1vcnlBZ2VudCkKICAgICAsIG1faWQoMSkKQEAgLTYwNCw3ICs2
MDYsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmFwcGVuZFJlY29yZChQYXNzUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSwgVGltZQogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50OjpzZW5kRXZlbnQoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGV2ZW50KQogewogICAg
IC8vIEZJWE1FOiBydW50aW1lQ2FzdCBpcyBhIGhhY2suIFdlIGRvIGl0IGJlY2F1c2Ugd2UgY2Fu
J3QgYnVpbGQgVGltZWxpbmVFdmVudCBkaXJlY3RseSBub3cuCi0gICAgUmVmUHRyPFR5cGVCdWls
ZGVyOjpUaW1lbGluZTo6VGltZWxpbmVFdmVudD4gcmVjb3JkQ2hlY2tlZCA9IFR5cGVCdWlsZGVy
OjpUaW1lbGluZTo6VGltZWxpbmVFdmVudDo6cnVudGltZUNhc3QoZXZlbnQpOworICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6VGltZWxpbmVFdmVudD4gcmVjb3Jk
Q2hlY2tlZCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50
OjpydW50aW1lQ2FzdChldmVudCk7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmV2ZW50UmVj
b3JkZWQocmVjb3JkQ2hlY2tlZC5yZWxlYXNlKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAppbmRleCA0NWRjMmYzLi4wNWI4
ZTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGlu
ZUFnZW50LmgKQEAgLTMzLDEwICszMywxMSBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAot
I2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCi0jaW5jbHVk
ZSAiSW5zcGVjdG9yVmFsdWVzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgi
CiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JW
YWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtMTIxLDcgKzEyMiw3IEBAIHByaXZh
dGU6CiB9OwogCiBjbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ci0gICAgOiBwdWJsaWMgSW5z
cGVjdG9yQmFzZUFnZW50CisgICAgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlCiAgICAgLCBw
dWJsaWMgSW5zcGVjdG9yVGltZWxpbmVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvclRpbWVsaW5lQWdlbnQpOwogcHVibGljOgpAQCAt
MTM0LDcgKzEzNSw3IEBAIHB1YmxpYzoKIAogICAgIH5JbnNwZWN0b3JUaW1lbGluZUFnZW50KCk7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBzdGFydChFcnJvclN0
cmluZyosIGNvbnN0IGludCogbWF4Q2FsbFN0YWNrRGVwdGgsIGNvbnN0IGJvb2wqIGluY2x1ZGVE
b21Db3VudGVycyk7CkBAIC0yMjAsMzMgKzIyMSwzMyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBj
bGFzcyBUaW1lbGluZVJlY29yZFN0YWNrOwogCiAgICAgc3RydWN0IFRpbWVsaW5lUmVjb3JkRW50
cnkgewotICAgICAgICBUaW1lbGluZVJlY29yZEVudHJ5KFBhc3NSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiByZWNvcmQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhLCBQYXNzUmVmUHRy
PEluc3BlY3RvckFycmF5PiBjaGlsZHJlbiwgVGltZWxpbmVSZWNvcmRUeXBlIHR5cGUsIHNpemVf
dCB1c2VkSGVhcFNpemVBdFN0YXJ0KQorICAgICAgICBUaW1lbGluZVJlY29yZEVudHJ5KFBhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHJlY29yZCwgUGFzc1JlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gZGF0YSwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3RvckFycmF5PiBjaGlsZHJlbiwgVGltZWxpbmVSZWNvcmRUeXBlIHR5cGUsIHNpemVfdCB1c2Vk
SGVhcFNpemVBdFN0YXJ0KQogICAgICAgICAgICAgOiByZWNvcmQocmVjb3JkKSwgZGF0YShkYXRh
KSwgY2hpbGRyZW4oY2hpbGRyZW4pLCB0eXBlKHR5cGUpLCB1c2VkSGVhcFNpemVBdFN0YXJ0KHVz
ZWRIZWFwU2l6ZUF0U3RhcnQpCiAgICAgICAgIHsKICAgICAgICAgfQotICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQ7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IGRhdGE7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gY2hpbGRyZW47CisgICAgICAg
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gcmVjb3JkOworICAgICAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGRhdGE7CisgICAgICAgIFJlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3RvckFycmF5PiBjaGlsZHJlbjsKICAgICAgICAgVGltZWxpbmVSZWNvcmRU
eXBlIHR5cGU7CiAgICAgICAgIHNpemVfdCB1c2VkSGVhcFNpemVBdFN0YXJ0OwogICAgIH07CiAK
ICAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0
b3JQYWdlQWdlbnQqLCBJbnNwZWN0b3JNZW1vcnlBZ2VudCosIEluc3BlY3RvclR5cGUsIEluc3Bl
Y3RvckNsaWVudCopOwogCi0gICAgdm9pZCBzZW5kRXZlbnQoUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+KTsKLSAgICB2b2lkIGFwcGVuZFJlY29yZChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gZGF0YSwgVGltZWxpbmVSZWNvcmRUeXBlLCBib29sIGNhcHR1cmVDYWxsU3RhY2ssIEZyYW1l
Kik7Ci0gICAgdm9pZCBwdXNoQ3VycmVudFJlY29yZChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4sIFRpbWVsaW5lUmVjb3JkVHlwZSwgYm9vbCBjYXB0dXJlQ2FsbFN0YWNrLCBGcmFtZSopOwor
ICAgIHZvaWQgc2VuZEV2ZW50KFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
KTsKKyAgICB2b2lkIGFwcGVuZFJlY29yZChQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0PiBkYXRhLCBUaW1lbGluZVJlY29yZFR5cGUsIGJvb2wgY2FwdHVyZUNhbGxTdGFjaywg
RnJhbWUqKTsKKyAgICB2b2lkIHB1c2hDdXJyZW50UmVjb3JkKFBhc3NSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3Q+LCBUaW1lbGluZVJlY29yZFR5cGUsIGJvb2wgY2FwdHVyZUNhbGxT
dGFjaywgRnJhbWUqKTsKIAotICAgIHZvaWQgc2V0RE9NQ291bnRlcnMoVHlwZUJ1aWxkZXI6OlRp
bWVsaW5lOjpUaW1lbGluZUV2ZW50KiByZWNvcmQpOwotICAgIHZvaWQgc2V0RnJhbWVJZGVudGlm
aWVyKEluc3BlY3Rvck9iamVjdCogcmVjb3JkLCBGcmFtZSopOworICAgIHZvaWQgc2V0RE9NQ291
bnRlcnMoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQqIHJl
Y29yZCk7CisgICAgdm9pZCBzZXRGcmFtZUlkZW50aWZpZXIoSW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3QqIHJlY29yZCwgRnJhbWUqKTsKIAogICAgIHZvaWQgZGlkQ29tcGxldGVDdXJyZW50UmVj
b3JkKFRpbWVsaW5lUmVjb3JkVHlwZSk7CiAKLSAgICB2b2lkIHNldEhlYXBTaXplU3RhdGlzdGlj
cyhJbnNwZWN0b3JPYmplY3QqIHJlY29yZCk7CisgICAgdm9pZCBzZXRIZWFwU2l6ZVN0YXRpc3Rp
Y3MoSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIHJlY29yZCk7CiAgICAgdm9pZCBjb21taXRG
cmFtZVJlY29yZCgpOwogCi0gICAgdm9pZCBhZGRSZWNvcmRUb1RpbWVsaW5lKFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiwgVGltZWxpbmVSZWNvcmRUeXBlKTsKLSAgICB2b2lkIGlubmVyQWRk
UmVjb3JkVG9UaW1lbGluZShQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4sIFRpbWVsaW5lUmVj
b3JkVHlwZSk7CisgICAgdm9pZCBhZGRSZWNvcmRUb1RpbWVsaW5lKFBhc3NSZWZQdHI8SW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3Q+LCBUaW1lbGluZVJlY29yZFR5cGUpOworICAgIHZvaWQgaW5u
ZXJBZGRSZWNvcmRUb1RpbWVsaW5lKFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q+LCBUaW1lbGluZVJlY29yZFR5cGUpOwogICAgIHZvaWQgY2xlYXJSZWNvcmRTdGFjaygpOwog
CiAgICAgdm9pZCBsb2NhbFRvUGFnZVF1YWQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgTGF5
b3V0UmVjdCYsIEZsb2F0UXVhZCopOwpAQCAtMjY2LDcgKzI2Nyw3IEBAIHByaXZhdGU6CiAKICAg
ICBpbnQgbV9pZDsKICAgICBpbnQgbV9tYXhDYWxsU3RhY2tEZXB0aDsKLSAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBtX3BlbmRpbmdGcmFtZVJlY29yZDsKKyAgICBSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3Q+IG1fcGVuZGluZ0ZyYW1lUmVjb3JkOwogICAgIEluc3BlY3RvclR5
cGUgbV9pbnNwZWN0b3JUeXBlOwogICAgIEluc3BlY3RvckNsaWVudCogbV9jbGllbnQ7CiAgICAg
V2Vha1B0ckZhY3Rvcnk8SW5zcGVjdG9yVGltZWxpbmVBZ2VudD4gbV93ZWFrRmFjdG9yeTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgKc2lt
aWxhcml0eSBpbmRleCA2OSUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckFnZW50UmVnaXN0cnkuaApyZW5hbWUgdG8gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvcldlYkFnZW50QmFzZS5oCmluZGV4IDRmZDAzNTMuLmRmY2M0YTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNCwyOSArMjQsMjggQEAKICAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotI2lmbmRlZiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5X2gKLSNkZWZpbmUg
SW5zcGVjdG9yQWdlbnRSZWdpc3RyeV9oCisjaWZuZGVmIEluc3BlY3RvcldlYkFnZW50QmFzZV9o
CisjZGVmaW5lIEluc3BlY3RvcldlYkFnZW50QmFzZV9oCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JC
YXNlQWdlbnQuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKyNpbmNsdWRlICJJbnNwZWN0b3JGb3J3YXJkaW5nLmgiCisjaW5jbHVkZSA8aW5z
cGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOworY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIAotY2xhc3MgSW5zcGVjdG9yQWdl
bnRSZWdpc3RyeSB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBhcHBlbmQoUGFzc093blB0cjxJbnNwZWN0
b3JCYXNlQWdlbnQ+KTsKK2NsYXNzIEluc3BlY3RvckFnZW50QmFzZSA6IHB1YmxpYyBJbnNwZWN0
b3I6Okluc3BlY3RvckFnZW50QmFzZSB7Citwcm90ZWN0ZWQ6CisgICAgSW5zcGVjdG9yQWdlbnRC
YXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cykKKyAgICAgICAgOiBJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50QmFzZShuYW1lKQor
ICAgICAgICAsIG1faW5zdHJ1bWVudGluZ0FnZW50cyhpbnN0cnVtZW50aW5nQWdlbnRzKQorICAg
IHsKKyAgICB9CiAKLSAgICB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopOwotICAgIHZv
aWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKTsKLSAgICB2b2lkIGRpc2NhcmRBZ2Vu
dHMoKTsKLQotcHJpdmF0ZToKLSAgICBWZWN0b3I8T3duUHRyPEluc3BlY3RvckJhc2VBZ2VudD4+
IG1fYWdlbnRzOworICAgIEluc3RydW1lbnRpbmdBZ2VudHMqIG1faW5zdHJ1bWVudGluZ0FnZW50
czsKIH07Ci0KKyAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vICFkZWZp
bmVkKEluc3BlY3RvckFnZW50UmVnaXN0cnlfaCkKKyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0
b3JXZWJBZ2VudEJhc2VfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yV29ya2VyQWdlbnQuY3BwCmluZGV4IDMyODAxYzYuLjg4NDU2YzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcApAQCAtMzYsMTMg
KzM2LDE1IEBACiAKICNpbmNsdWRlICJJbnNwZWN0b3JGb3J3YXJkaW5nLmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yRnJvbnRlbmQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNs
dWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAi
V29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JW
YWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6V29ya2VyRnJvbnRlbmRDaGFubmVsIDog
cHVibGljIFdvcmtlckdsb2JhbFNjb3BlUHJveHk6OlBhZ2VJbnNwZWN0b3IgewpAQCAtMTA3LDcg
KzEwOSw3IEBAIFBhc3NPd25QdHI8SW5zcGVjdG9yV29ya2VyQWdlbnQ+IEluc3BlY3Rvcldvcmtl
ckFnZW50OjpjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50CiB9CiAKIEluc3BlY3RvcldvcmtlckFn
ZW50OjpJbnNwZWN0b3JXb3JrZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzKQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiV29ya2Vy
IiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlM
aXRlcmFsKCJXb3JrZXIiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fZW5hYmxlZChm
YWxzZSkKICAgICAsIG1fc2hvdWxkUGF1c2VEZWRpY2F0ZWRXb3JrZXJPblN0YXJ0KGZhbHNlKQog
ewpAQCAtMTE5LDcgKzEyMSw3IEBAIEluc3BlY3RvcldvcmtlckFnZW50Ojp+SW5zcGVjdG9yV29y
a2VyQWdlbnQoKQogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yV29ya2Vy
QWdlbnQoMCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNw
ZWN0b3JXb3JrZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yV29ya2VyRnJvbnRlbmREaXNwYXRjaGVy
Pihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JX
b3JrZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmgKaW5k
ZXggYWI2MjIxYS4uZWE0NzVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvcldvcmtlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvcldvcmtlckFnZW50LmgKQEAgLTMxLDEyICszMSwxNiBAQAogI2lmbmRlZiBJbnNwZWN0
b3JXb3JrZXJBZ2VudF9oCiAjZGVmaW5lIEluc3BlY3RvcldvcmtlckFnZW50X2gKIAotI2luY2x1
ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAotbmFtZXNwYWNlIFdl
YkNvcmUgeworbmFtZXNwYWNlIEluc3BlY3RvciB7CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7Cit9
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluc3BlY3RvcldvcmtlckZyb250ZW5kRGlz
cGF0Y2hlcjsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBVUkw7CkBAIC00NCwx
MiArNDgsMTIgQEAgY2xhc3MgV29ya2VyR2xvYmFsU2NvcGVQcm94eTsKIAogdHlwZWRlZiBTdHJp
bmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvcldvcmtlckFnZW50IDogcHVibGljIElu
c3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3RvcldvcmtlckJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JXb3JrZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JB
Z2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JXb3JrZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIg
ewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvcldvcmtlckFnZW50PiBj
cmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyopOwogICAgIH5JbnNwZWN0b3JXb3JrZXJBZ2VudCgp
OwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
OjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICAvLyBDYWxsZWQgZnJvbSBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24KQEAgLTYzLDcgKzY3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBjYW5JbnNwZWN0V29ya2VycyhFcnJvclN0cmluZyosIGJvb2wqKTsKICAgICB2aXJ0dWFsIHZv
aWQgY29ubmVjdFRvV29ya2VyKEVycm9yU3RyaW5nKiwgaW50IHdvcmtlcklkKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzY29ubmVjdEZyb21Xb3JrZXIoRXJyb3JTdHJpbmcqLCBpbnQgd29ya2VySWQp
OwotICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZVRvV29ya2VyKEVycm9yU3RyaW5nKiwgaW50
IHdvcmtlcklkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgbWVzc2FnZSk7CisgICAg
dmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlVG9Xb3JrZXIoRXJyb3JTdHJpbmcqLCBpbnQgd29ya2Vy
SWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIG1lc3NhZ2UpOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRBdXRvY29ubmVjdFRvV29ya2VycyhFcnJvclN0cmluZyosIGJv
b2wgdmFsdWUpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3RydW1lbnRpbmdBZ2VudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3RydW1lbnRpbmdBZ2VudHMuY3BwCmluZGV4IDhjZmIzMjguLjYyOGYxMjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5jcHAKQEAgLTQwLDYg
KzQwLDggQEAKICNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBJbnN0cnVtZW50aW5nQWdlbnRzOjpJbnN0cnVtZW50aW5nQWdl
bnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuY3BwCmluZGV4IDk2OWQzMGQuLjVjY2E0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtNDYsNiArNDYsOCBAQCBzdGF0
aWMgc2l6ZV90IG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSA9IDEwMCAqIDEwMDAgKiAxMDAw
Owogc3RhdGljIHNpemVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSA9IDEwICog
MTAwMCAqIDEwMDA7CiB9CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFn
ZUNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNvbnNvbGVB
Z2VudC5jcHAKaW5kZXggYmNkODlmMi4uY2VhYmJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmNwcApAQCAtNDAsNyArNDAsOCBAQAogI2luY2x1ZGUg
Ikluc3BlY3RvckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKICNpbmNs
dWRlICJOb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisKK3VzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjYsNyArNjcsNyBAQCB2
b2lkIFBhZ2VDb25zb2xlQWdlbnQ6OmNsZWFyTWVzc2FnZXMoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nKQogY2xhc3MgSW5zcGVjdGFibGVOb2RlIDogcHVibGljIEluamVjdGVkU2NyaXB0SG9zdDo6
SW5zcGVjdGFibGVPYmplY3QgewogcHVibGljOgogICAgIGV4cGxpY2l0IEluc3BlY3RhYmxlTm9k
ZShOb2RlKiBub2RlKSA6IG1fbm9kZShub2RlKSB7IH0KLSAgICB2aXJ0dWFsIFNjcmlwdFZhbHVl
IGdldChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCisgICAgdmlydHVhbCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSBnZXQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlKQogICAgIHsKICAgICAgICAgcmV0dXJu
IEluamVjdGVkU2NyaXB0SG9zdDo6bm9kZUFzU2NyaXB0VmFsdWUoc3RhdGUsIG1fbm9kZSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHAK
aW5kZXggODdmYWJlZS4uMDRkNDc5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
UGFnZURlYnVnZ2VyQWdlbnQuY3BwCkBAIC00MSw2ICs0MSw4IEBACiAjaW5jbHVkZSAiUGFnZUNv
bnNvbGUuaCIKICNpbmNsdWRlICJQYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCIKIAordXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzT3duUHRyPFBh
Z2VEZWJ1Z2dlckFnZW50PiBQYWdlRGVidWdnZXJBZ2VudDo6Y3JlYXRlKEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50
LCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zcGVjdG9y
T3ZlcmxheSogb3ZlcmxheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Q
YWdlRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dl
ckFnZW50LmgKaW5kZXggNTU4NjMxMS4uYTVmODE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNkZWZpbmUgUGFn
ZURlYnVnZ2VyQWdlbnRfaAogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVO
QUJMRShJTlNQRUNUT1IpCisKICNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCiAj
aW5jbHVkZSAiUGFnZVNjcmlwdERlYnVnU2VydmVyLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcAppbmRleCA1N2IzYjMwLi5hMWI2Nzc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwCkBAIC00NSw3
ICs0NSw5IEBACiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNlY3Vy
aXR5T3JpZ2luLmgiCiAKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpFeGVj
dXRpb25Db250ZXh0RGVzY3JpcHRpb247Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpS
dW50aW1lOjpFeGVjdXRpb25Db250ZXh0RGVzY3JpcHRpb247CisKK3VzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjMsNyArNjUsNyBAQCBQYWdl
UnVudGltZUFnZW50Ojp+UGFnZVJ1bnRpbWVBZ2VudCgpCiAgICAgbV9pbnN0cnVtZW50aW5nQWdl
bnRzLT5zZXRQYWdlUnVudGltZUFnZW50KDApOwogfQogCi12b2lkIFBhZ2VSdW50aW1lQWdlbnQ6
OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZy
b250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRj
aGVyKQordm9pZCBQYWdlUnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJv
bnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JSdW50aW1lRnJvbnRl
bmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIg
PSBJbnNwZWN0b3JSdW50aW1lQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1
bnRpbWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQu
aAppbmRleCBlOGIzM2IyLi5jZDA0ZDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Q
YWdlUnVudGltZUFnZW50LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IFBhZ2VSdW50aW1lQWdlbnQoaW5zdHJ1bWVudGluZ0FnZW50cywgaW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLCBwYWdlLCBwYWdlQWdlbnQpKTsKICAgICB9CiAgICAgdmlydHVh
bCB+UGFnZVJ1bnRpbWVBZ2VudCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9y
OjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJv
clN0cmluZyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEFy
Z3VtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNw
cAppbmRleCA4OWI5YTBiLi4zNjU3YTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
U2NyaXB0QXJndW1lbnRzLmNwcApAQCAtMzEsMTYgKzMxLDE2IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiU2NyaXB0QXJndW1lbnRzLmgiCiAKLSNpbmNsdWRlICJTY3JpcHRWYWx1
ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IFNjcmlwdEFyZ3VtZW50czo6Y3Jl
YXRlKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgVmVjdG9yPFNjcmlwdFZhbHVlPiYgYXJn
dW1lbnRzKQorUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IFNjcmlwdEFyZ3VtZW50czo6Y3Jl
YXRlKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgVmVjdG9yPERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlPiYgYXJndW1lbnRzKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2NyaXB0QXJn
dW1lbnRzKHNjcmlwdFN0YXRlLCBhcmd1bWVudHMpKTsKIH0KIAotU2NyaXB0QXJndW1lbnRzOjpT
Y3JpcHRBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBWZWN0b3I8U2NyaXB0
VmFsdWU+JiBhcmd1bWVudHMpCitTY3JpcHRBcmd1bWVudHM6OlNjcmlwdEFyZ3VtZW50cyhKU0M6
OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIFZlY3RvcjxEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZT4m
IGFyZ3VtZW50cykKICAgICA6IG1fZ2xvYmFsT2JqZWN0KHNjcmlwdFN0YXRlLT52bSgpLCBzY3Jp
cHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKQogewogICAgIG1fYXJndW1lbnRzLnN3YXAo
YXJndW1lbnRzKTsKQEAgLTUwLDcgKzUwLDcgQEAgU2NyaXB0QXJndW1lbnRzOjp+U2NyaXB0QXJn
dW1lbnRzKCkKIHsKIH0KIAotY29uc3QgU2NyaXB0VmFsdWUgJlNjcmlwdEFyZ3VtZW50czo6YXJn
dW1lbnRBdChzaXplX3QgaW5kZXgpIGNvbnN0Citjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSAmU2NyaXB0QXJndW1lbnRzOjphcmd1bWVudEF0KHNpemVfdCBpbmRleCkgY29uc3QKIHsKICAg
ICBBU1NFUlQobV9hcmd1bWVudHMuc2l6ZSgpID4gaW5kZXgpOwogICAgIHJldHVybiBtX2FyZ3Vt
ZW50c1tpbmRleF07CkBAIC02OCw3ICs2OCw3IEBAIGJvb2wgU2NyaXB0QXJndW1lbnRzOjpnZXRG
aXJzdEFyZ3VtZW50QXNTdHJpbmcoU3RyaW5nJiByZXN1bHQsIGJvb2wgY2hlY2tGb3JOdWxsCiAg
ICAgaWYgKCFhcmd1bWVudENvdW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGNv
bnN0IFNjcmlwdFZhbHVlJiB2YWx1ZSA9IGFyZ3VtZW50QXQoMCk7CisgICAgY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlID0gYXJndW1lbnRBdCgwKTsKICAgICBpZiAoY2hlY2tG
b3JOdWxsT3JVbmRlZmluZWQgJiYgKHZhbHVlLmlzTnVsbCgpIHx8IHZhbHVlLmlzVW5kZWZpbmVk
KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9T
Y3JpcHRBcmd1bWVudHMuaAppbmRleCAxNzQzOWEwLi40N2E5NjIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oCkBAIC0xLDEwICsxLDEwIEBACiAvKgogICog
Q29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAK
KyAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKICAqIG1ldDoKLSAqIAorICoKICAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CiAgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCiAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCkBAIC0xNCw3ICsxNCw3IEBACiAgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCiAg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQogICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSAqIAorICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKICAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCiAg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKQEAgLTM3LDYgKzM3LDEwIEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgRGVwcmVjYXRl
ZCB7CitjbGFzcyBTY3JpcHRWYWx1ZTsKK30KKwogbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBFeGVj
U3RhdGU7CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsKQEAgLTQ0LDE1ICs0OCwxMyBAQCBjbGFzcyBK
U0dsb2JhbE9iamVjdDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTY3JpcHRWYWx1
ZTsKLQogY2xhc3MgU2NyaXB0QXJndW1lbnRzIDogcHVibGljIFJlZkNvdW50ZWQ8U2NyaXB0QXJn
dW1lbnRzPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRz
PiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqLCBWZWN0b3I8U2NyaXB0VmFsdWU+JiBhcmd1bWVudHMp
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gY3JlYXRlKEpTQzo6RXhl
Y1N0YXRlKiwgVmVjdG9yPERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlPiYgYXJndW1lbnRzKTsKIAog
ICAgIH5TY3JpcHRBcmd1bWVudHMoKTsKIAotICAgIGNvbnN0IFNjcmlwdFZhbHVlJiBhcmd1bWVu
dEF0KHNpemVfdCkgY29uc3Q7CisgICAgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGFy
Z3VtZW50QXQoc2l6ZV90KSBjb25zdDsKICAgICBzaXplX3QgYXJndW1lbnRDb3VudCgpIGNvbnN0
IHsgcmV0dXJuIG1fYXJndW1lbnRzLnNpemUoKTsgfQogCiAgICAgSlNDOjpFeGVjU3RhdGUqIGds
b2JhbFN0YXRlKCkgY29uc3Q7CkBAIC02MSwxMCArNjMsMTAgQEAgcHVibGljOgogICAgIGJvb2wg
aXNFcXVhbChTY3JpcHRBcmd1bWVudHMqKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBTY3JpcHRB
cmd1bWVudHMoSlNDOjpFeGVjU3RhdGUqLCBWZWN0b3I8U2NyaXB0VmFsdWU+JiBhcmd1bWVudHMp
OworICAgIFNjcmlwdEFyZ3VtZW50cyhKU0M6OkV4ZWNTdGF0ZSosIFZlY3RvcjxEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZT4mIGFyZ3VtZW50cyk7CiAKICAgICBKU0M6OlN0cm9uZzxKU0M6OkpTR2xv
YmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKLSAgICBWZWN0b3I8U2NyaXB0VmFsdWU+IG1fYXJn
dW1lbnRzOworICAgIFZlY3RvcjxEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZT4gbV9hcmd1bWVudHM7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9TY3JpcHRDYWxsRnJhbWUuY3BwCmluZGV4IDFhYmJkNzUuLmFiZTllMTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuY3BwCkBAIC0zMiw5ICszMiwxMSBA
QAogI2luY2x1ZGUgIlNjcmlwdENhbGxGcmFtZS5oIgogCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJv
bnRlbmQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKyNpbmNsdWRlIDxpbnNwZWN0
b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCit1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNjcmlwdENhbGxG
cmFtZTo6U2NyaXB0Q2FsbEZyYW1lKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lLCBjb25zdCBT
dHJpbmcmIHNjcmlwdE5hbWUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbikK
QEAgLTU4LDkgKzYwLDkgQEAgYm9vbCBTY3JpcHRDYWxsRnJhbWU6OmlzRXF1YWwoY29uc3QgU2Ny
aXB0Q2FsbEZyYW1lJiBvKSBjb25zdAogfQogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLVBhc3NS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNhbGxGcmFtZT4gU2NyaXB0Q2FsbEZyYW1lOjpi
dWlsZEluc3BlY3Rvck9iamVjdCgpIGNvbnN0CitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNvbnNvbGU6OkNhbGxGcmFtZT4gU2NyaXB0Q2FsbEZyYW1lOjpidWlsZEluc3BlY3Rv
ck9iamVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDYWxs
RnJhbWU6OmNyZWF0ZSgpCisgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNv
bGU6OkNhbGxGcmFtZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldEZ1bmN0aW9uTmFtZShtX2Z1bmN0
aW9uTmFtZSkKICAgICAgICAgLnNldFVybChtX3NjcmlwdE5hbWUpCiAgICAgICAgIC5zZXRMaW5l
TnVtYmVyKG1fbGluZU51bWJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9TY3JpcHRDYWxsRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxs
RnJhbWUuaAppbmRleCA2N2YwZDM2Li5kNmRjZmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1NjcmlwdENhbGxGcmFtZS5oCkBAIC0zMiwxNSArMzIsMTcgQEAKICNkZWZpbmUgU2NyaXB0
Q2FsbEZyYW1lX2gKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0jaW5jbHVkZSAiSW5zcGVjdG9y
VHlwZUJ1aWxkZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCIKICNl
bmRpZgogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotCituYW1lc3BhY2UgSW5zcGVjdG9yIHsK
IGNsYXNzIEluc3BlY3Rvck9iamVjdDsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBTY3JpcHRDYWxsRnJhbWUgIHsKIHB1YmxpYzoKQEAgLTU1LDcgKzU3LDcgQEAgcHVibGljOgog
ICAgIGJvb2wgaXNFcXVhbChjb25zdCBTY3JpcHRDYWxsRnJhbWUmKSBjb25zdDsKIAogI2lmIEVO
QUJMRShJTlNQRUNUT1IpCi0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q2Fs
bEZyYW1lPiBidWlsZEluc3BlY3Rvck9iamVjdCgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q2FsbEZyYW1lPiBidWlsZEluc3BlY3Rvck9i
amVjdCgpIGNvbnN0OwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwCmluZGV4IGU2OTRiZjEuLmM0YWYxYjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwCkBAIC0zMSw4ICszMSwx
MCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgog
Ci0jaW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JW
YWx1ZXMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCIKKyNpbmNsdWRl
IDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNzksOSArODEsOSBAQCBib29sIFNjcmlw
dENhbGxTdGFjazo6aXNFcXVhbChTY3JpcHRDYWxsU3RhY2sqIG8pIGNvbnN0CiB9CiAKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxk
ZXI6OkNvbnNvbGU6OkNhbGxGcmFtZT4+IFNjcmlwdENhbGxTdGFjazo6YnVpbGRJbnNwZWN0b3JB
cnJheSgpIGNvbnN0CitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNhbGxGcmFtZT4+IFNjcmlwdENhbGxTdGFj
azo6YnVpbGRJbnNwZWN0b3JBcnJheSgpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcnJheTxUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q2FsbEZyYW1lPj4gZnJhbWVzID0gVHlwZUJ1
aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDYWxsRnJhbWU+OjpjcmVhdGUoKTsK
KyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q29uc29sZTo6Q2FsbEZyYW1lPj4gZnJhbWVzID0gSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q2FsbEZyYW1lPjo6
Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2ZyYW1lcy5zaXplKCk7IGkr
KykKICAgICAgICAgZnJhbWVzLT5hZGRJdGVtKG1fZnJhbWVzLmF0KGkpLmJ1aWxkSW5zcGVjdG9y
T2JqZWN0KCkpOwogICAgIHJldHVybiBmcmFtZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
U2NyaXB0Q2FsbFN0YWNrLmgKaW5kZXggZTBkN2ZkNS4uMTk3NWRhNWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmgKQEAgLTMyLDcgKzMyLDcgQEAKICNkZWZp
bmUgU2NyaXB0Q2FsbFN0YWNrX2gKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0jaW5jbHVkZSAi
SW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJUeXBlQnVpbGRl
cnMuaCIKICNlbmRpZgogCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbEZyYW1lLmgiCkBAIC00Miw4ICs0
Miw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW5zcGVjdG9yQXJyYXk7Ci0K
IGNsYXNzIFNjcmlwdENhbGxTdGFjayA6IHB1YmxpYyBSZWZDb3VudGVkPFNjcmlwdENhbGxTdGFj
az4gewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4Q2FsbFN0YWNrU2l6ZVRv
Q2FwdHVyZSA9IDIwMDsKQEAgLTU4LDcgKzU2LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNFcXVh
bChTY3JpcHRDYWxsU3RhY2sqKSBjb25zdDsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAg
UGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNhbGxG
cmFtZT4+IGJ1aWxkSW5zcGVjdG9yQXJyYXkoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6
OkNhbGxGcmFtZT4+IGJ1aWxkSW5zcGVjdG9yQXJyYXkoKSBjb25zdDsKICNlbmRpZgogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnTGlz
dGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmgK
aW5kZXggNWJjYTc1MS4uMGViNGZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1NjcmlwdERlYnVnTGlzdGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
U2NyaXB0RGVidWdMaXN0ZW5lci5oCkBAIC0zNyw4ICszNywxMSBAQAogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKK25hbWVzcGFjZSBEZXByZWNhdGVkIHsKIGNsYXNzIFNjcmlwdFZhbHVlOworfQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcmlwdERlYnVnTGlzdGVuZXIgewogcHVi
bGljOgpAQCAtNjgsNyArNzEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUGFy
c2VTb3VyY2UoU291cmNlSUQsIGNvbnN0IFNjcmlwdCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZmFpbGVkVG9QYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBkYXRh
LCBpbnQgZmlyc3RMaW5lLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0
IFNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBjb25zdCBTY3JpcHRWYWx1ZSYgZXhjZXB0aW9uKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlJiBleGNlcHRpb24pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29udGludWUoKSA9
IDA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVS
ZWNvcmRGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29y
ZEZhY3RvcnkuY3BwCmluZGV4IDhiYWFiOWUuLjlmMmY3ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwCkBAIC0zNiwxNSArMzYs
MTcgQEAKIAogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCi0jaW5j
bHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUg
IkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0
b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAordXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljUmVjb3JkKGRv
dWJsZSBzdGFydFRpbWUsIGludCBtYXhDYWxsU3RhY2tEZXB0aCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaAppbmRleCBkYjQ0YjFlLi5lNGJm
OTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRG
YWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFj
dG9yeS5oCkBAIC0zMSw5ICszMSw4IEBACiAjaWZuZGVmIFRpbWVsaW5lUmVjb3JkRmFjdG9yeV9o
CiAjZGVmaW5lIFRpbWVsaW5lUmVjb3JkRmFjdG9yeV9oCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JW
YWx1ZXMuaCIKICNpbmNsdWRlICJVUkwuaCIKLSNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCisjaW5j
bHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQxLDY0ICs0MCw2MiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBFdmVudDsKICAgICBjbGFzcyBGbG9h
dFF1YWQ7Ci0gICAgY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwotICAgIGNsYXNzIEludFJlY3Q7CiAg
ICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogICAgIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAK
ICAgICBjbGFzcyBUaW1lbGluZVJlY29yZEZhY3RvcnkgewogICAgIHB1YmxpYzoKLSAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVHZW5lcmljUmVjb3JkKGRv
dWJsZSBzdGFydFRpbWUsIGludCBtYXhDYWxsU3RhY2tEZXB0aCk7Ci0gICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlQmFja2dyb3VuZFJlY29yZChkb3VibGUg
c3RhcnRUaW1lLCBjb25zdCBTdHJpbmcmIHRocmVhZCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVHZW5lcmljUmVjb3JkKGRvdWJs
ZSBzdGFydFRpbWUsIGludCBtYXhDYWxsU3RhY2tEZXB0aCk7CisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVCYWNrZ3JvdW5kUmVjb3Jk
KGRvdWJsZSBzdGFydFRpbWUsIGNvbnN0IFN0cmluZyYgdGhyZWFkKTsKIAotICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUdDRXZlbnREYXRhKGNvbnN0IHNp
emVfdCB1c2VkSGVhcFNpemVEZWx0YSk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVHQ0V2ZW50RGF0YShjb25zdCBzaXplX3QgdXNl
ZEhlYXBTaXplRGVsdGEpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gY3JlYXRlRnVuY3Rpb25DYWxsRGF0YShjb25zdCBTdHJpbmcmIHNjcmlwdE5hbWUsIGlu
dCBzY3JpcHRMaW5lKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+IGNyZWF0ZUZ1bmN0aW9uQ2FsbERhdGEoY29uc3QgU3RyaW5nJiBzY3JpcHRO
YW1lLCBpbnQgc2NyaXB0TGluZSk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBjcmVhdGVFdmVudERpc3BhdGNoRGF0YShjb25zdCBFdmVudCYpOworICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlRXZl
bnREaXNwYXRjaERhdGEoY29uc3QgRXZlbnQmKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUdlbmVyaWNUaW1lckRhdGEoaW50IHRpbWVySWQpOwor
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3Jl
YXRlR2VuZXJpY1RpbWVyRGF0YShpbnQgdGltZXJJZCk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVUaW1lckluc3RhbGxEYXRhKGludCB0aW1lcklk
LCBpbnQgdGltZW91dCwgYm9vbCBzaW5nbGVTaG90KTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVRpbWVySW5zdGFsbERhdGEoaW50
IHRpbWVySWQsIGludCB0aW1lb3V0LCBib29sIHNpbmdsZVNob3QpOwogCi0gICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlWEhSUmVhZHlTdGF0ZUNoYW5nZURh
dGEoY29uc3QgU3RyaW5nJiB1cmwsIGludCByZWFkeVN0YXRlKTsKKyAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVhIUlJlYWR5U3RhdGVD
aGFuZ2VEYXRhKGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgcmVhZHlTdGF0ZSk7CiAKLSAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVYSFJMb2FkRGF0YShjb25z
dCBTdHJpbmcmIHVybCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiBjcmVhdGVYSFJMb2FkRGF0YShjb25zdCBTdHJpbmcmIHVybCk7CiAKLSAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVFdmFsdWF0ZVNj
cmlwdERhdGEoY29uc3QgU3RyaW5nJiwgZG91YmxlIGxpbmVOdW1iZXIpOworICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlRXZhbHVhdGVT
Y3JpcHREYXRhKGNvbnN0IFN0cmluZyYsIGRvdWJsZSBsaW5lTnVtYmVyKTsKIAotICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVRpbWVTdGFtcERhdGEoY29u
c3QgU3RyaW5nJik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0PiBjcmVhdGVUaW1lU3RhbXBEYXRhKGNvbnN0IFN0cmluZyYpOwogCi0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlUmVzb3VyY2VTZW5kUmVx
dWVzdERhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYp
OworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4g
Y3JlYXRlUmVzb3VyY2VTZW5kUmVxdWVzdERhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gY3JlYXRlU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3REYXRhKGNvbnN0IFN0cmlu
ZyYpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4gY3JlYXRlU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3REYXRhKGNvbnN0IFN0cmluZyYpOwogCi0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlUmVzb3VyY2VS
ZWNlaXZlUmVzcG9uc2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0PiBjcmVhdGVSZXNvdXJjZVJlY2VpdmVSZXNwb25zZURhdGEoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAotICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVJlY2VpdmVSZXNvdXJjZURhdGEoY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQsIGludCBsZW5ndGgpOworICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlUmVjZWl2ZVJlc291cmNlRGF0
YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgaW50IGxlbmd0aCk7CiAKLSAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVSZXNvdXJjZUZpbmlzaERhdGEoY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQsIGJvb2wgZGlkRmFpbCwgZG91YmxlIGZpbmlzaFRpbWUpOwor
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3Jl
YXRlUmVzb3VyY2VGaW5pc2hEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBib29sIGRpZEZh
aWwsIGRvdWJsZSBmaW5pc2hUaW1lKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IGNyZWF0ZUxheW91dERhdGEodW5zaWduZWQgZGlydHlPYmplY3RzLCB1bnNp
Z25lZCB0b3RhbE9iamVjdHMsIGJvb2wgcGFydGlhbExheW91dCk7CisgICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVMYXlvdXREYXRhKHVu
c2lnbmVkIGRpcnR5T2JqZWN0cywgdW5zaWduZWQgdG90YWxPYmplY3RzLCBib29sIHBhcnRpYWxM
YXlvdXQpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3Jl
YXRlRGVjb2RlSW1hZ2VEYXRhKGNvbnN0IFN0cmluZyYgaW1hZ2VUeXBlKTsKKyAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZURlY29kZUlt
YWdlRGF0YShjb25zdCBTdHJpbmcmIGltYWdlVHlwZSk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVSZXNpemVJbWFnZURhdGEoYm9vbCBzaG91bGRD
YWNoZSk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0PiBjcmVhdGVSZXNpemVJbWFnZURhdGEoYm9vbCBzaG91bGRDYWNoZSk7CiAKLSAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVNYXJrRGF0YShib29sIGlz
TWFpbkZyYW1lKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3Q+IGNyZWF0ZU1hcmtEYXRhKGJvb2wgaXNNYWluRnJhbWUpOwogCi0gICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlUGFyc2VIVE1MRGF0YSh1bnNp
Z25lZCBzdGFydExpbmUpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdD4gY3JlYXRlUGFyc2VIVE1MRGF0YSh1bnNpZ25lZCBzdGFydExpbmUpOwog
Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlQW5pbWF0
aW9uRnJhbWVEYXRhKGludCBjYWxsYmFja0lkKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUFuaW1hdGlvbkZyYW1lRGF0YShpbnQg
Y2FsbGJhY2tJZCk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBjcmVhdGVQYWludERhdGEoY29uc3QgRmxvYXRRdWFkJik7CisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVQYWludERhdGEoY29uc3Qg
RmxvYXRRdWFkJik7CiAKLSAgICAgICAgc3RhdGljIHZvaWQgYXBwZW5kTGF5b3V0Um9vdChJbnNw
ZWN0b3JPYmplY3QqIGRhdGEsIGNvbnN0IEZsb2F0UXVhZCYpOworICAgICAgICBzdGF0aWMgdm9p
ZCBhcHBlbmRMYXlvdXRSb290KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBkYXRhLCBjb25z
dCBGbG9hdFF1YWQmKTsKIAogI2lmIEVOQUJMRShXRUJfU09DS0VUUykKLSAgICAgICAgc3RhdGlj
IGlubGluZSBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlV2ViU29ja2V0Q3JlYXRl
RGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHByb3RvY29sKQorICAgICAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVdlYlNvY2tldENyZWF0ZURhdGEodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKICAg
ICAgICAgewotICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSA9IEluc3Bl
Y3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+IGRhdGEgPSBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7
CiAgICAgICAgICAgICBkYXRhLT5zZXROdW1iZXIoImlkZW50aWZpZXIiLCBpZGVudGlmaWVyKTsK
ICAgICAgICAgICAgIGRhdGEtPnNldFN0cmluZygidXJsIiwgdXJsLnN0cmluZygpKTsKICAgICAg
ICAgICAgIGlmICghcHJvdG9jb2wuaXNOdWxsKCkpCkBAIC0xMDYsOSArMTAzLDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICAgICAgcmV0dXJuIGRhdGEucmVsZWFzZSgpOwogICAgICAg
ICB9CiAKLSAgICAgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
Y3JlYXRlR2VuZXJpY1dlYlNvY2tldERhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQorICAg
ICAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
IGNyZWF0ZUdlbmVyaWNXZWJTb2NrZXREYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKICAg
ICAgICAgewotICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSA9IEluc3Bl
Y3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+IGRhdGEgPSBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7
CiAgICAgICAgICAgICBkYXRhLT5zZXROdW1iZXIoImlkZW50aWZpZXIiLCBpZGVudGlmaWVyKTsK
ICAgICAgICAgICAgIHJldHVybiBkYXRhLnJlbGVhc2UoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckNvbnNvbGVBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50LmNwcAppbmRleCAxNWJiN2E4
Li42NjZhOGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyQ29u
c29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyQ29uc29s
ZUFnZW50LmNwcApAQCAtMzQsNiArMzQsOCBAQAogCiAjaW5jbHVkZSAiV29ya2VyQ29uc29sZUFn
ZW50LmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogV29ya2VyQ29uc29sZUFnZW50OjpXb3JrZXJDb25zb2xlQWdlbnQoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmpl
Y3RlZFNjcmlwdE1hbmFnZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
V29ya2VyRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2Vy
RGVidWdnZXJBZ2VudC5jcHAKaW5kZXggNzEzNmU0Ni4uOTdkMDBlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcApAQCAtMzgsNiArMzgs
OCBAQAogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPHd0Zi9NZXNzYWdlUXVl
dWUuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBuYW1lc3BhY2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dv
cmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dv
cmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGVmMjMwMzcuLjdmNWU3MGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKQEAgLTUxLDggKzUxLDExIEBACiAjaW5jbHVkZSAiV29ya2VyUmVwb3J0aW5nUHJv
eHkuaCIKICNpbmNsdWRlICJXb3JrZXJSdW50aW1lQWdlbnQuaCIKICNpbmNsdWRlICJXb3JrZXJU
aHJlYWQuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA1
OGJkYTIwLi5hYTBkOTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29y
a2VySW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9X
b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTMzLDE5ICszMywyMSBAQAogCiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvckFnZW50UmVnaXN0cnkuaCIKLSNp
bmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2Vu
dEJhc2UuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oPgog
I2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNzIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEluamVjdGVkU2NyaXB0TWFuYWdlcjsKLWNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
OwotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogY2xhc3MgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOwogY2xhc3MgSW5zcGVjdG9yUnVudGltZUFnZW50OwogY2xhc3MgSW5zdHJ1bWVu
dGluZ0FnZW50czsKQEAgLTcyLDkgKzc0LDkgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SW5zdHJ1
bWVudGluZ0FnZW50cz4gbV9pbnN0cnVtZW50aW5nQWdlbnRzOwogICAgIE93blB0cjxJbmplY3Rl
ZFNjcmlwdE1hbmFnZXI+IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogICAgIEluc3BlY3RvclJ1
bnRpbWVBZ2VudCogbV9ydW50aW1lQWdlbnQ7Ci0gICAgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeSBt
X2FnZW50czsKKyAgICBJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50UmVnaXN0cnkgbV9hZ2VudHM7
CiAgICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbD4gbV9mcm9udGVuZENoYW5uZWw7
Ci0gICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRj
aGVyOworICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBt
X2JhY2tlbmREaXNwYXRjaGVyOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvV29ya2VyUnVudGltZUFnZW50LmNwcAppbmRleCBiMDdiNjMzLi4xZWY4MzczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNwcApAQCAtNDIs
NiArNDIsOCBAQAogI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKICNpbmNsdWRlICJXb3JrZXJU
aHJlYWQuaCIKIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBXb3JrZXJSdW50aW1lQWdlbnQ6OldvcmtlclJ1bnRpbWVBZ2VudChJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGlu
amVjdGVkU2NyaXB0TWFuYWdlciwgV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3Bl
KQpAQCAtNTcsNyArNTksNyBAQCBXb3JrZXJSdW50aW1lQWdlbnQ6On5Xb3JrZXJSdW50aW1lQWdl
bnQoKQogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0V29ya2VyUnVudGltZUFnZW50KDAp
OwogfQogCi12b2lkIFdvcmtlclJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
KiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgV29ya2VyUnVudGltZUFnZW50OjpkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9i
YWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvclJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3Jl
YXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaAppbmRleCA2N2RlMDhhLi41YjYyOWMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oCkBAIC00OCw3ICs0
OCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+V29ya2VyUnVudGltZUFnZW50KCk7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIC8vIFByb3RvY29sIGNvbW1hbmRzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ29uc29sZS5jcHAKaW5kZXggZGRlNjVlMy4uMzI3ZWE0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnNvbGUuY3BwCkBAIC00Nyw5ICs0Nyw5IEBACiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrRmFj
dG9yeS5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGUuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9m
aWxlci5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2NyaXB0YWJsZURv
Y3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlIDxiaW5kaW5n
cy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IDBiZTlmOTguLmNjNjYz
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAK
QEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJGb3JtRGF0YUxpc3QuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgotI2luY2x1ZGUg
Ikluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlBpbmdMb2Fk
ZXIuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCkBAIC00NiwxMCArNDUs
MTMgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5UG9s
aWN5VmlvbGF0aW9uRXZlbnQuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKKyNpbmNsdWRl
IDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAvLyBOb3JtYWxseSBXZWJLaXQgdXNlcyAic3RhdGljIiBmb3IgaW50ZXJuYWwg
bGlua2FnZSwgYnV0IHVzaW5nICJzdGF0aWMiIGZvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCA0
OWUxODdiLi5iOGQ4Nzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtODYsNyArODYsNiBAQAog
I2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2lu
Y2x1ZGUgIlNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNp
bmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKQEAgLTEwNCw2ICsxMDMsNyBAQAogI2luY2x1ZGUg
Im1hcmt1cC5oIgogI2luY2x1ZGUgIm5wcnVudGltZV9pbXBsLmgiCiAjaW5jbHVkZSAicnVudGlt
ZV9yb290LmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4K
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VDb25zb2xlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGUu
Y3BwCmluZGV4IDRmYWFlNmQuLjliY2MyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZUNvbnNvbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGUu
Y3BwCkBAIC00Miw5ICs0Miw5IEBACiAjaW5jbHVkZSAiU2NyaXB0QXJndW1lbnRzLmgiCiAjaW5j
bHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrRmFjdG9y
eS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2NyaXB0YWJsZURvY3Vt
ZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9T
Y3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZDYwYzg4NS4uZjg0NWNjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC02MSw3ICs2MSw2IEBACiAjaW5jbHVkZSAiUmVuZGVy
Qm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJv
bGxlci5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNh
dG9yLmgiCkBAIC02OSw2ICs2OCw3IEBACiAjaW5jbHVkZSAiY19pbnN0YW5jZS5oIgogI2luY2x1
ZGUgIm5wcnVudGltZV9pbXBsLmgiCiAjaW5jbHVkZSAicnVudGltZV9yb290LmgiCisjaW5jbHVk
ZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUu
aD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBl
Lmg+CkBAIC00NjcsNyArNDY3LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3JtUmVxdWVzdChQ
bHVnaW5SZXF1ZXN0KiByZXF1ZXN0KQogICAgIAogICAgIC8vIEV4ZWN1dGluZyBhIHNjcmlwdCBj
YW4gY2F1c2UgdGhlIHBsdWdpbiB2aWV3IHRvIGJlIGRlc3Ryb3llZCwgc28gd2Uga2VlcCBhIHJl
ZmVyZW5jZSB0byBpdC4KICAgICBSZWZQdHI8UGx1Z2luVmlldz4gcHJvdGVjdG9yKHRoaXMpOwot
ICAgIFNjcmlwdFZhbHVlIHJlc3VsdCA9IG1fcGFyZW50RnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVT
Y3JpcHQoanNTdHJpbmcsIHJlcXVlc3QtPnNob3VsZEFsbG93UG9wdXBzKCkpOworICAgIERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlIHJlc3VsdCA9IG1fcGFyZW50RnJhbWUtPnNjcmlwdCgpLmV4ZWN1
dGVTY3JpcHQoanNTdHJpbmcsIHJlcXVlc3QtPnNob3VsZEFsbG93UG9wdXBzKCkpOwogCiAgICAg
aWYgKHRhcmdldEZyYW1lTmFtZS5pc051bGwoKSkgewogICAgICAgICBTdHJpbmcgcmVzdWx0U3Ry
aW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDgwOWZlOGMuLjAwMDZi
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTYzLDcgKzYzLDYgQEAK
ICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yT3ZlcmxheS5oIgot
I2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2Vu
dHMuaCIKICNpbmNsdWRlICJJbnRlcm5hbFNldHRpbmdzLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5o
IgpAQCAtOTYsNiArOTUsNyBAQAogI2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgiCiAjaW5j
bHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8Ynl0ZWNvZGUvQ29kZUJsb2NrLmg+Cisj
aW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUv
SlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWZmZXIuaD4KQEAgLTE2Nyw2ICsxNjcsOCBAQCB1c2luZyBKU0M6OkpT
VmFsdWU7CiB1c2luZyBKU0M6OlNjcmlwdEV4ZWN1dGFibGU7CiB1c2luZyBKU0M6OlN0YWNrVmlz
aXRvcjsKIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMTI4Miw3ICsxMjg0LDcgQEAgcHJp
dmF0ZToKICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwogfTsKIAotU3RyaW5nIEludGVybmFs
czo6cGFyc2VyTWV0YURhdGEoU2NyaXB0VmFsdWUgdmFsdWUpCitTdHJpbmcgSW50ZXJuYWxzOjpw
YXJzZXJNZXRhRGF0YShEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB2YWx1ZSkKIHsKICAgICBKU0M6
OlZNKiB2bSA9IGNvbnRleHREb2N1bWVudCgpLT52bSgpOwogICAgIEpTQzo6RXhlY1N0YXRlKiBl
eGVjID0gdm0tPnRvcENhbGxGcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4
IDI1YmNhZmUuLjEwOTI1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMzEs
NyArMzEsNyBAQAogI2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCiAjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIK
LSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVl
Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUv
RmxvYXQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTE4MSw3ICsx
ODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbWl0SW5zcGVjdG9yRGlkQmVnaW5GcmFtZSgpOwog
ICAgIHZvaWQgZW1pdEluc3BlY3RvckRpZENhbmNlbEZyYW1lKCk7CiAKLSAgICBTdHJpbmcgcGFy
c2VyTWV0YURhdGEoU2NyaXB0VmFsdWUgPSBTY3JpcHRWYWx1ZSgpKTsKKyAgICBTdHJpbmcgcGFy
c2VyTWV0YURhdGEoRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgPSBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSgpKTsKIAogICAgIGJvb2wgaGFzU3BlbGxpbmdNYXJrZXIoaW50IGZyb20sIGludCBsZW5n
dGgsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBib29sIGhhc0dyYW1tYXJNYXJrZXIoaW50IGZyb20s
IGludCBsZW5ndGgsIEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggZTE3N2E3MC4uMTM4YmZhYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJHbG9iYWxTY29w
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJHbG9iYWxTY29w
ZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogUGFzc1JlZlB0cjxN
ZXNzYWdlRXZlbnQ+IGNyZWF0ZUNvbm5lY3RFdmVudChQYXNzUmVmUHRyPE1lc3NhZ2VQb3J0PiBw
cnBQb3J0KQogewogICAgIFJlZlB0cjxNZXNzYWdlUG9ydD4gcG9ydCA9IHBycFBvcnQ7Ci0gICAg
UmVmUHRyPE1lc3NhZ2VFdmVudD4gZXZlbnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShhZG9wdFB0
cihuZXcgTWVzc2FnZVBvcnRBcnJheSgxLCBwb3J0KSksIFNjcmlwdFZhbHVlKCksIFN0cmluZygp
LCBTdHJpbmcoKSwgcG9ydCk7CisgICAgUmVmUHRyPE1lc3NhZ2VFdmVudD4gZXZlbnQgPSBNZXNz
YWdlRXZlbnQ6OmNyZWF0ZShhZG9wdFB0cihuZXcgTWVzc2FnZVBvcnRBcnJheSgxLCBwb3J0KSks
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCksIFN0cmluZygpLCBTdHJpbmcoKSwgcG9ydCk7CiAg
ICAgZXZlbnQtPmluaXRFdmVudChldmVudE5hbWVzKCkuY29ubmVjdEV2ZW50LCBmYWxzZSwgZmFs
c2UpOwogICAgIHJldHVybiBldmVudC5yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IGVjMmQxOTAuLmZjYmY2NDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0zNyw2ICsz
Nyw3IEBACiAjaW5jbHVkZSAiRXJyb3JFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5j
bHVkZSAiRXZlbnRFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yQ29uc29sZUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCkBAIC00NCw3ICs0NSw2IEBACiAjaW5jbHVkZSAi
U2NoZWR1bGVkQWN0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiV29ya2VyTG9jYXRpb24uaCIKQEAgLTU0LDE0ICs1NCwxMyBAQAogI2lu
Y2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZGFibGVMb2FkZXIu
aCIKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgPGJpbmRp
bmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiAjaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKICNpbmNsdWRl
ICJOb3RpZmljYXRpb25DZW50ZXIuaCIKICNlbmRpZgogCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZS5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENsb3NlV29ya2VyR2xvYmFsU2Nv
cGVUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewpAQCAtMjQxLDcg
KzI0MCw3IEBAIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmltcG9ydFNjcmlwdHMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIHVybHMsIEV4Y2VwdGlvbkNvZGUmCiAKICAgICAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRlZChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHNj
cmlwdExvYWRlci0+aWRlbnRpZmllcigpLCBzY3JpcHRMb2FkZXItPnNjcmlwdCgpKTsKIAotICAg
ICAgICBTY3JpcHRWYWx1ZSBleGNlcHRpb247CisgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlIGV4Y2VwdGlvbjsKICAgICAgICAgbV9zY3JpcHQtPmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNv
ZGUoc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSwgc2NyaXB0TG9hZGVyLT5yZXNwb25zZVVSTCgpKSwg
JmV4Y2VwdGlvbik7CiAgICAgICAgIGlmICghZXhjZXB0aW9uLmhhc05vVmFsdWUoKSkgewogICAg
ICAgICAgICAgbV9zY3JpcHQtPnNldEV4Y2VwdGlvbihleGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCmluZGV4IDUwYmZhMWQuLmZlZjNlNTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNs
dWRlICJEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIkluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRl
ICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAi
VGhyZWFkR2xvYmFsRGF0YS5oIgogI2luY2x1ZGUgIlVSTC5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTFRy
ZWVWaWV3ZXIuY3BwCmluZGV4IDE2MWRkMDEuLmMzOWU3NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxUcmVlVmlld2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
VHJlZVZpZXdlci5jcHAKQEAgLTM4LDEwICszOCwxMCBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUu
aCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRl
ICJYTUxWaWV3ZXJDU1MuaCIKICNpbmNsdWRlICJYTUxWaWV3ZXJKUy5oIgorI2luY2x1ZGUgPGJp
bmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCA3NGE3ZDAw
Li45MGVmZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3Vt
ZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyLmNwcApAQCAtNDYsNyArNDYsNiBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2Uu
aCIKICNpbmNsdWRlICJTY3JpcHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29k
ZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVj
b2Rlci5oIgogI2luY2x1ZGUgIlRyZWVEZXB0aExpbWl0LmgiCiAjaW5jbHVkZSAiWE1MRXJyb3Jz
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyTGlieG1sMi5jcHAKaW5kZXggNDZhOTJkYi4uNTJiOGY5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAt
NTIsNyArNTIsNiBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJT
Y3JpcHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUg
IlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJT
ZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCmluZGV4IGU3MWY0ZmMuLjRlZWZkMzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcApAQCAtMTE4LDcgKzExOCw2IEBA
CiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5o
IgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5o
IgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIK
ICNpbmNsdWRlICJTZWxlY3Rpb25IYW5kbGVyLmgiCkBAIC0xNzIsNiArMTcxLDcgQEAKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NvbnRleHRSZWYuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU1N0cmluZ1JlZi5oPgogI2luY2x1ZGUgPFNoYXJlZFBvaW50ZXIuaD4KKyNpbmNsdWRl
IDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPGNtYXRoPgogI2luY2x1ZGUgPHN5
cy9rZXljb2Rlcy5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdXN0cmluZy5oPiAvLyBwbGF0Zm9ybSBJ
Q1UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4IDA0NDZhYjEuLjI0MGNiNmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTEyLTA1
ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogUHVzaCBNb3JlIEluc3BlY3RvciBSZXF1aXJlZCBDbGFzc2VzIERvd24gaW50byBK
YXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI1MzI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBBcGkvV2ViUGFnZS5jcHA6CisKIDIwMTMtMTItMDMgIEpvc2VwaCBQZWNvcmFybyAg
PHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIFJlbW90
ZSBJbnNwZWN0b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFuYWdlbWVudCBpbnRvIEphdmFTY3Jp
cHRDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggMzFlZTJiNS4uN2RkNWU1NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTEyLTA1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNv
cmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBNb3JlIEluc3Bl
Y3RvciBSZXF1aXJlZCBDbGFzc2VzIERvd24gaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1MzI0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNw
cDoKKwogMjAxMy0xMi0wMyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggUmVtb3RlIEluc3BlY3RvciBkZWJ1Z2dpbmcg
Y29ubmVjdGlvbiBtYW5hZ2VtZW50IGludG8gSmF2YVNjcmlwdENvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmwuY3BwCmluZGV4IDljNjhjOTEuLjFhN2E3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
LmNwcApAQCAtNTksOSArNTksOSBAQAogI2luY2x1ZGUgPFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMu
aD4KICNpbmNsdWRlIDxTY2hlbWVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFNjcmlwdENvbnRyb2xs
ZXIuaD4KLSNpbmNsdWRlIDxTY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPFNldHRpbmdzLmg+CiAj
aW5jbHVkZSA8VGV4dEl0ZXJhdG9yLmg+CisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUu
aD4KICNpbmNsdWRlIDxiaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxoaXN0
b3J5L0hpc3RvcnlJdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19mcmFtZS5jcHAKaW5kZXggZjJhMjBjMy4uYTA1MmFhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19mcmFtZS5jcHAKQEAgLTUzLDcgKzUzLDYgQEAKICNpbmNsdWRlICJQcm9ncmVzc1Ry
YWNrZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJTY3JpcHRD
b250cm9sbGVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKICNpbmNsdWRlICJTdWJzdGl0dXRlRGF0YS5oIgogI2luY2x1ZGUgIldpbmRvd3NL
ZXlib2FyZENvZGVzLmgiCkBAIC02NSw2ICs2NCw3IEBACiAjaW5jbHVkZSA8RWNvcmVfSW5wdXQu
aD4KICNpbmNsdWRlIDxFaW5hLmg+CiAjaW5jbHVkZSA8RXZhcy5oPgorI2luY2x1ZGUgPGJpbmRp
bmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8ZWluYV9zYWZldHlfY2hlY2tzLmg+CiAjaW5j
bHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsv
Q2hhbmdlTG9nCmluZGV4IGNlMjg5YjIuLjI3YTdmZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxMy0xMi0wNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUu
Y29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggTW9yZSBJbnNwZWN0b3IgUmVxdWly
ZWQgQ2xhc3NlcyBEb3duIGludG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTMyNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgor
CiAyMDEzLTEyLTA5ICBKb2FubWFyaWUgRGlnZ3MgIDxqZGlnZ3NAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBBWDogW0FUS10gQ29udmVydCB0aGUgZ2V0X3tzdHJpbmcsdGV4dH1fYXRfb2Zmc2V0IGF0
a3Rlc3QuYyB1bml0IHRlc3RzIHRvIGxheW91dCB0ZXN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4IGY5ZDliMWRkLi42MDIzMjY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC04NSw3ICs4NSw2IEBACiAj
aW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1
cmVzLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNjcmlwdFZh
bHVlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJXZWJLaXRET01Eb2N1bWVu
dFByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXRkb3dubG9hZC5oIgpAQCAtMTE0LDYgKzExMyw3
IEBACiAjaW5jbHVkZSAid2Via2l0d2VicGx1Z2luZGF0YWJhc2Vwcml2YXRlLmgiCiAjaW5jbHVk
ZSAid2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3cHJp
dmF0ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8Z2Rr
L2dka2tleXN5bXMuaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPHd0
Zi9nb2JqZWN0L0dPd25QdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdp
bnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQv
bWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQppbmRleCAx
ZThlOGFkLi42YzE5NjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hv
c3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9t
YWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCkBAIC01Nywx
MSArNTcsMTEgQEAKICNpbXBvcnQgPFdlYkNvcmUvUHJveHlTZXJ2ZXIuaD4KICNpbXBvcnQgPFdl
YkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxl
ci5oPgotI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRWYWx1ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9V
c2VyR2VzdHVyZUluZGljYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9ucHJ1bnRpbWVfaW1wbC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9ydW50aW1lX29iamVjdC5oPgogI2ltcG9ydCA8V2ViS2l0U3lz
dGVtSW50ZXJmYWNlLmg+CisjaW1wb3J0IDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2ltcG9y
dCA8bWFjaC9tYWNoLmg+CiAjaW1wb3J0IDx1dGlsaXR5PgogI2ltcG9ydCA8d3RmL1JlZkNvdW50
ZWRMZWFrQ291bnRlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCmluZGV4IGUyNWViZTkuLmExNGM4ODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQubW0KQEAgLTQzLDEyICs0MywxMiBAQAogI2ltcG9ydCAiV2ViVUlEZWxlZ2F0ZS5oIgog
I2ltcG9ydCAiV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0IDxhbGdvcml0aG0+CisjaW1wb3J0
IDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9JbnNwZWN0b3JDb250
cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL01haW5GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvU2Ny
aXB0VmFsdWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcuaD4KICNpbXBvcnQgPFdl
YktpdC9ET01FeHRlbnNpb25zLmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGU0YjJiZWQuLjZmNTg4NmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtODksNyArODksNiBAQAog
I2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJXaWRnZXQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIu
aD4KLSNpbXBvcnQgPFdlYkNvcmUvU2NyaXB0VmFsdWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2Vj
dXJpdHlPcmlnaW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvU21hcnRSZXBsYWNlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1N0eWxlUHJvcGVydGllcy5oPgpAQCAtMTAwLDYgKzk5LDcgQEAKICNpbXBvcnQg
PFdlYkNvcmUvaHRtbGVkaXRpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvbWFya3VwLmg+CiAjaW1w
b3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KKyNpbXBvcnQgPGJpbmRpbmdzL1NjcmlwdFZh
bHVlLmg+CiAjaW1wb3J0IDxydW50aW1lL0pTTG9jay5oPgogI2ltcG9ydCA8cnVudGltZS9KU09i
amVjdC5oPgogI2ltcG9ydCA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KaW5kZXggZGY3ZDZmNC4uY2QyN2Y1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQpAQCAtMTY5LDcgKzE2OSw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL1J1
bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnku
aD4KICNpbXBvcnQgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9TY3JpcHRWYWx1ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2lt
cG9ydCA8V2ViQ29yZS9TZWN1cml0eVBvbGljeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5n
cy5oPgpAQCAtMTg1LDYgKzE4NCw3IEBACiAjaW1wb3J0IDxXZWJLaXQvRE9NRXh0ZW5zaW9ucy5o
PgogI2ltcG9ydCA8V2ViS2l0L0RPTVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdFN5c3RlbUlu
dGVyZmFjZS5oPgorI2ltcG9ydCA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbXBvcnQgPG1h
Y2gtby9keWxkLmg+CiAjaW1wb3J0IDxvYmpjL29iamMtYXV0by5oPgogI2ltcG9ydCA8b2JqYy9y
dW50aW1lLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggNGI1MmE3NS4uZDAzYTUxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTEyLTA1ICBKb3NlcGggUGVjb3Jhcm8gIDxw
ZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBNb3JlIElu
c3BlY3RvciBSZXF1aXJlZCBDbGFzc2VzIERvd24gaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1MzI0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6
CisgICAgICAgICogV2ViVmlldy5jcHA6CisKIDIwMTMtMTItMDQgIEJyZW50IEZ1bGdoYW0gIDxi
ZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gRXhpdGluZyBmcm9tIE1lZGlhIEZ1
bGwgU2NyZWVuIG1vZGUgdmlhICdlc2NhcGUnIGtleSBkb2VzIG5vdCB3b3JrIHByb3Blcmx5CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggZWE4YmQxOC4uNDlkNjZjYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZy
YW1lLmNwcApAQCAtOTksMTIgKzk5LDEyIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SXRlcmF0
b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NQmluZGluZy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2NyaXB0Q29udHJvbGxlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0VmFsdWUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWUuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU09iamVjdC5oPgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5j
bHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogI2lmIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAK
aW5kZXggZjlmNWQwNi4uMDgzODQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2Vi
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTEzNyw3ICsx
MzcsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcmlw
dENvbnRyb2xsZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TY3JvbGxiYXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGJhclRoZW1l
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgpAQCAtMTQ3LDYgKzE0Niw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TeXN0ZW1JbmZvLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9X
aW5kb3dNZXNzYWdlQnJvYWRjYXN0ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd3NUb3Vj
aC5oPgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KIAogI2lmIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyZmEwOTIzLi5jYjVkNDAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTMtMTItMDUgIEpvc2VwaCBQZWNvcmFy
byAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1v
cmUgSW5zcGVjdG9yIFJlcXVpcmVkIENsYXNzZXMgRG93biBpbnRvIEphdmFTY3JpcHRDb3JlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHA6CisKKzIwMTMtMTItMDUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVjdG9yIFJlcXVpcmVkIENs
YXNzZXMgRG93biBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3Iu
Y3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaDoKKwogMjAx
My0xMi0wOSAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAg
W0VGTF1bV0syXSBMYXlvdXRUZXN0cyBhcmUgYnJva2VuIGFmdGVyIHIxNjAzMDEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBlMDBk
M2EyLi42MTNkNWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCkBAIC02MywxMiArNjMsMTIgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jl
bmRlckVtYmVkZGVkT2JqZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTY2hl
ZHVsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxWaWV3Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VjdXJpdHlQb2xpY3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Vc2VyR2VzdHVyZUluZGljYXRvci5oPgorI2luY2x1ZGUgPGJpbmRpbmdzL1Nj
cmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwpAQCAtMTE3OSw3ICsxMTc5LDcgQEAgdm9pZCBQbHVnaW5WaWV3Ojpw
ZXJmb3JtSmF2YVNjcmlwdFVSTFJlcXVlc3QoVVJMUmVxdWVzdCogcmVxdWVzdCkKICAgICAvLyBF
dmFsdWF0ZSB0aGUgSmF2YVNjcmlwdCBjb2RlLiBOb3RlIHRoYXQgcnVubmluZyBKYXZhU2NyaXB0
IGhlcmUgY291bGQgY2F1c2UgdGhlIHBsdWctaW4gdG8gYmUgZGVzdHJveWVkLCBzbyB3ZQogICAg
IC8vIGdyYWIgcmVmZXJlbmNlcyB0byB0aGUgcGx1Zy1pbiBoZXJlLgogICAgIFJlZlB0cjxQbHVn
aW4+IHBsdWdpbiA9IG1fcGx1Z2luOwotICAgIFNjcmlwdFZhbHVlIHJlc3VsdCA9IGZyYW1lLT5z
Y3JpcHQoKS5leGVjdXRlU2NyaXB0KGpzU3RyaW5nLCByZXF1ZXN0LT5hbGxvd1BvcHVwcygpKTsK
KyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSByZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCkuZXhl
Y3V0ZVNjcmlwdChqc1N0cmluZywgcmVxdWVzdC0+YWxsb3dQb3B1cHMoKSk7CiAKICAgICAvLyBD
aGVjayBpZiBldmFsdWF0aW5nIHRoZSBKYXZhU2NyaXB0IGRlc3Ryb3llZCB0aGUgcGx1Zy1pbi4K
ICAgICBpZiAoIXBsdWdpbi0+Y29udHJvbGxlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAppbmRleCBhODkwZjViLi4xMDViYWIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVj
dG9yLmNwcApAQCAtMzQsMTIgKzM0LDExIEBACiAjaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0lu
c3BlY3RvckNvbnRyb2xsZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZvcndhcmRp
bmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9NYWluRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Nj
cmlwdFZhbHVlLmg+CisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3Iu
aAppbmRleCBlNjRmNmQzLi40MmFlYzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oCkBAIC0zMCwxOCArMzAsMTQgQEAKIAogI2luY2x1
ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL0luc3BlY3RvckZvcndhcmRpbmcuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewot
Y2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogY2xhc3MgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiBjbGFzcyBXZWJQYWdlOwotc3Ry
dWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIFdlYkluc3BlY3RvciA6IHB1
YmxpYyBBUEk6OlR5cGVkT2JqZWN0PEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVJbnNwZWN0b3I+
IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAppbmRleCA1MDU3MTU3Li4yMjllYWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xMjgsNyArMTI4LDYgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjaGVt
ZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2hhZG93Um9vdC5oPgpAQCAtMTM5LDYgKzEzOCw3IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9WaXNpYmxlUG9zaXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Zpc2libGVVbml0cy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvbWFya3VwLmg+CisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0
VmFsdWUuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDxydW50
aW1lL0pTTG9jay5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvT3BlcmF0aW9ucy5oPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218912</attachid>
            <date>2013-12-10 15:16:38 -0800</date>
            <delta_ts>2013-12-10 18:12:10 -0800</delta_ts>
            <desc>[PATCH] For Bots 7</desc>
            <filename>for-bots-7.patch</filename>
            <type>text/plain</type>
            <size>733875</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBiZDk1NGYxLi5iZThiMjdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00LDYgKzQsNyBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vQVBJIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMiCiAg
ICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9hc3NlbWJsZXIiCisgICAgIiR7SkFWQVNDUklQVENP
UkVfRElSfS9iaW5kaW5ncyIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J5dGVjb2RlIgog
ICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnl0ZWNvbXBpbGVyIgogICAgICIke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vZGZnIgpAQCAtNDUsNiArNDYsMTAgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NP
VVJDRVMKICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCiAgICAgYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNwcAogCisgICAgYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25D
YWxsLmNwcAorICAgIGJpbmRpbmdzL1NjcmlwdE9iamVjdC5jcHAKKyAgICBiaW5kaW5ncy9TY3Jp
cHRWYWx1ZS5jcHAKKwogICAgIGJ5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwCiAg
ICAgYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAogICAgIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNC
bG9jay5jcHAKQEAgLTIxNiw2ICsyMjEsMTAgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMK
ICAgICBoZWFwL1dlYWtTZXQuY3BwCiAgICAgaGVhcC9Xcml0ZUJhcnJpZXJTdXBwb3J0LmNwcAog
CisgICAgaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwCisgICAgaW5zcGVjdG9y
L0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcAorICAgIGluc3BlY3Rvci9JbnNwZWN0b3JW
YWx1ZXMuY3BwCisKICAgICBpbnRlcnByZXRlci9BYnN0cmFjdFBDLmNwcAogICAgIGludGVycHJl
dGVyL0NhbGxGcmFtZS5jcHAKICAgICBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTU4
NCw2ICs1OTMsNyBAQCBlbmRmb3JlYWNoICgpCiAKIHNldChKYXZhU2NyaXB0Q29yZV9GT1JXQVJE
SU5HX0hFQURFUlNfRElSRUNUT1JJRVMKICAgICBhc3NlbWJsZXIKKyAgICBiaW5kaW5ncwogICAg
IGJ5dGVjb2RlCiAgICAgY29sbGVjdG9yL2hhbmRsZXMKICAgICBkZWJ1Z2dlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKaW5kZXggYzBlODRjZC4uZWE3OGQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTEwIEBACisyMDEzLTEyLTA1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNv
cmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgUEFSVCA2OiBFeHRyYWN0IEdlbmVyaWMgSW5zcGVj
dG9yVHlwZUJ1aWxkZXIKKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVj
dG9yIFJlcXVpcmVkIENsYXNzZXMgRG93biBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclR5cGVCdWlsZGVyLmg6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6T3B0T3V0cHV0OjpPcHRPdXRwdXQpOgorICAgICAgICAoSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6T3B0T3V0cHV0OjpvcGVyYXRvcj0pOgorICAgICAgICAoSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6T3B0T3V0cHV0Ojppc0Fzc2lnbmVkKToKKyAgICAgICAgKEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6Ok9wdE91dHB1dDo6Z2V0VmFsdWUpOgorICAgICAgICAoSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6RXhhY3RseUludDo6RXhhY3RseUludCk6CisgICAgICAgIChJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpFeGFjdGx5SW50OjpvcGVyYXRvciBpbnQpOgorICAgICAgICAoSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6RXhhY3RseUludDo6Y2FzdF90b19pbnQpOgorICAgICAgICAoSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6aW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OlJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRBbnkpOgorICAgICAgICAoSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZUNhc3RIZWxwZXI6OmFzc2VydEludCk6CisgICAgICAg
IChJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTo6QXJyYXkpOgorICAgICAgICAoSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk6Om9wZW5BY2Nlc3NvcnMpOgorICAgICAgICAoSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk6OmFkZEl0ZW0pOgorICAgICAgICAoSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6QXJyYXk6OmNyZWF0ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTo6cnVudGltZUNhc3QpOgorICAgICAgICAoSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk6OmFzc2VydENvcnJlY3RWYWx1ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpTdHJ1Y3RJdGVtVHJhaXRzOjpwdXNoUmVmUHRyKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlN0cnVjdEl0ZW1UcmFpdHM6OmFzc2VydENvcnJlY3RWYWx1ZSk6CisK
KzIwMTMtMTItMDUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVjdG9yIFJlcXVpcmVkIENsYXNzZXMg
RG93biBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNw
cDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9u
Q2FsbC5jcHAuCisgICAgICAgIChKU0M6OlNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVu
ZEFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6U2NyaXB0RnVuY3Rpb25DYWxsOjpTY3JpcHRGdW5j
dGlvbkNhbGwpOgorICAgICAgICAoSlNDOjpTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwpOgorICAg
ICAgICAqIGJpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmguCisKKzIwMTMtMTItMDUg
IEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVjdG9yIFJlcXVpcmVkIENsYXNzZXMgRG93biBpbnRvIEph
dmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjUzMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAg
ICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnZjeHByb2ovY29weS1maWxlcy5jbWQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9TY3JpcHRPYmplY3Qu
Y3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50
LmNwcC4KKyAgICAgICAgKEpTQzo6U2NyaXB0T2JqZWN0OjpTY3JpcHRPYmplY3QpOgorICAgICAg
ICAqIGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmguCisgICAgICAgIChKU0M6OlNjcmlwdE9iamVjdDo6
U2NyaXB0T2JqZWN0KToKKyAgICAgICAgKEpTQzo6U2NyaXB0T2JqZWN0Ojpqc09iamVjdCk6Cisg
ICAgICAgIChKU0M6OlNjcmlwdE9iamVjdDo6c2NyaXB0U3RhdGUpOgorICAgICAgICAqIGJpbmRp
bmdzL1NjcmlwdFZhbHVlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdFZhbHVlLmNwcC4KKyAgICAgICAgKEpTQzo6U2NyaXB0VmFsdWU6On5TY3JpcHRW
YWx1ZSk6CisgICAgICAgIChKU0M6OlNjcmlwdFZhbHVlOjpnZXRTdHJpbmcpOgorICAgICAgICAo
SlNDOjpTY3JpcHRWYWx1ZTo6dG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpTY3JpcHRWYWx1ZTo6
aXNFcXVhbCk6CisgICAgICAgIChKU0M6OmpzVG9JbnNwZWN0b3JWYWx1ZSk6CisgICAgICAgIChK
U0M6OlNjcmlwdFZhbHVlOjp0b0luc3BlY3RvclZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9T
Y3JpcHRWYWx1ZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0VmFsdWUuaC4KKworMjAxMy0xMi0wNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBw
bGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggTW9yZSBJbnNwZWN0b3IgUmVx
dWlyZWQgQ2xhc3NlcyBEb3duIGludG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTMyNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yQWdlbnRCYXNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JBZ2VudFJlZ2lzdHJ5LmguCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50
QmFzZTo6fkluc3BlY3RvckFnZW50QmFzZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3Rv
ckFnZW50QmFzZTo6ZGlzY2FyZEFnZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9y
QWdlbnRCYXNlOjpJbnNwZWN0b3JBZ2VudEJhc2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9yQWdlbnRSZWdpc3RyeTo6YXBwZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yQWdlbnRSZWdpc3RyeS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwLgorICAgICAgICAoSW5zcGVjdG9yOjpn
ZXRQcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlci5oLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1
ZXMuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZh
bHVlcy5jcHAuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oLgorCiAyMDEz
LTEyLTEwICBCYWxhenMgS2lsdmFkeSAgPGtpbHZhZHliQGhvbWVqaW5uaS5jb20+CiAKICAgICAg
ICAgW01JUFNdIFJlZHVuZGFudCBpbnN0cnVjdGlvbnMgaW4gY29kZSBnZW5lcmF0ZWQgZnJvbSBv
ZmZsaW5lYXNtLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
LmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDA4NWZjYTcu
Ljc1ZGJlZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5h
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTUyLDYgKzUy
LDcgQEAgamF2YXNjcmlwdGNvcmVfY3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9G
b3J3YXJkaW5nSGVhZGVycyBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlciBcCisJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzIFwK
IAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUgXAogCS1JJChzcmNk
aXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIgXAogCS1JJChzcmNkaXIpL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlciBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCmluZGV4IDRmYjNkYWQuLmZiYjAwNGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC05NSw2ICs5NSwxMiBAQCBqYXZhc2NyaXB0
Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0
Y2hCdWZmZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9TSDRBc3NlbWJs
ZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaCBc
CisgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5j
cHAgXAorICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNh
bGwuaCBcCisgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5j
cHAgXAorICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRPYmplY3QuaCBc
CisgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcCBcCisg
ICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmggXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAgXApAQCAt
NjE1LDcgKzYyMSwxNSBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUvdXRmX29sZC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaWN1L3VuaWNvZGUvdXR5cGVzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5p
Y29kZS91dmVyc2lvbi5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckFnZW50QmFzZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckFnZW50UmVnaXN0cnkuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckFnZW50UmVnaXN0cnkuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCBcCisJU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUeXBlQnVpbGRlci5oIFwKKwlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAgXAorCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmggXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9BYnN0cmFjdFBDLmNwcCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Fic3RyYWN0UEMuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENhbGwuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvagppbmRleCA1NDI3MzBmLi5mMDllYzBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTI5NCw2ICsyOTQsOSBAQAogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cYXNzZW1ibGVyXE1hY3JvQXNzZW1ibGVyLmNwcCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXEFQSVxKU0NUZXN0UnVubmVyVXRpbHMuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5jcHAiIC8+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xiaW5kaW5ncy9TY3JpcHRGdW5j
dGlvbkNhbGwuY3BwIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcYmlu
ZGluZ3MvU2NyaXB0T2JqZWN0LmNwcCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJp
bmRpbmdzXGJpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlQcm9maWxlLmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEJ5dGVjb2RlQmFzaWNCbG9jay5jcHAiIC8+CkBA
IC00NTcsNiArNDYwLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcV2Vha0hh
bmRsZU93bmVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcV2Vha1Nl
dC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXFdyaXRlQmFycmllclN1
cHBvcnQuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3Bl
Y3RvckFnZW50UmVnaXN0cnkuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5z
cGVjdG9yXEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCIgLz4KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JWYWx1ZXMuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcQWJzdHJhY3RQQy5jcHAiIC8+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxDYWxsRnJhbWUuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcSW50ZXJwcmV0ZXIuY3BwIiAvPgpAQCAt
NzUwLDYgKzc1Niw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFzc2Vt
YmxlclxSZXBhdGNoQnVmZmVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhc3Nl
bWJsZXJcWDg2QXNzZW1ibGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5k
aW5nc1xiaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGJpbmRpbmdzXGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oIiAvPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcYmluZGluZ3MvU2NyaXB0VmFsdWUuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlvblByb2ZpbGUu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5UHJvZmlsZS5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQnlWYWxJbmZvLmgiIC8+
CkBAIC0xMDAwLDcgKzEwMDksMTIgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBc
V2Vha1NldC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxXZWFrU2V0SW5s
aW5lcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxXcml0ZUJhcnJpZXJT
dXBwb3J0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVj
dG9yQWdlbnRCYXNlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3Jc
SW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aW5zcGVjdG9yXEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiIC8+Cisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yVHlwZUJ1aWxkZXIu
aCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JWYWx1
ZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGludGVycHJldGVyXEFic3RyYWN0
UEMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGludGVycHJldGVyXENhY2hlZENh
bGwuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGludGVycHJldGVyXENhbGxGcmFt
ZS5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0
ZXJzCmluZGV4IGJkZTRiM2QuLjhkODA0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVy
cworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTQsNiArNCw5IEBACiAgICAgPEZpbHRlciBJ
bmNsdWRlPSJhc3NlbWJsZXIiPgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezQyOTc4M2ExLTVk
NmEtNDAxOS1hZDFhLWRkYjJjOThmOWI2Y308L1VuaXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0
ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJiaW5kaW5ncyI+CisgICAgICA8VW5pcXVlSWRlbnRp
Zmllcj57MGJhY2UxMjMtNDU4Mi1lZWJjLTkzMTQtNzgxOWIzNzZjMTk4fTwvVW5pcXVlSWRlbnRp
Zmllcj4KKyAgICA8L0ZpbHRlcj4KICAgICA8RmlsdGVyIEluY2x1ZGU9ImJ5dGVjb2RlIj4KICAg
ICAgIDxVbmlxdWVJZGVudGlmaWVyPns3NjYwODhhMC0xMjE2LTQ4NTQtYWE0My01NjBjNWUyODM2
Njh9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgpAQCAtMTA1LDYgKzEwOCwxNSBA
QAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXE1hY3JvQXNzZW1ibGVyLmNw
cCI+CiAgICAgICA8RmlsdGVyPmFzc2VtYmxlcjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0RnVuY3Rpb25DYWxsLmNw
cCI+CisgICAgICA8RmlsdGVyPmJpbmRpbmdzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRPYmplY3QuY3BwIj4KKyAg
ICAgIDxGaWx0ZXI+YmluZGluZ3M8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdFZhbHVlLmNwcCI+CisgICAgICA8Rmls
dGVyPmJpbmRpbmdzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCI+CiAgICAgICA8
RmlsdGVyPmJ5dGVjb2RlPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0yNzksNiArMjkx
LDE1IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXFdyaXRlQmFycmllclN1cHBv
cnQuY3BwIj4KICAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckFnZW50UmVnaXN0
cnkuY3BwIj4KKyAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CisgICAgPC9DbENvbXBp
bGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIuY3BwIj4KKyAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CisgICAg
PC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVj
dG9yVmFsdWVzLmNwcCI+CisgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgorICAgIDwv
Q2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcQWJzdHJh
Y3RQQy5jcHAiPgogICAgICAgPEZpbHRlcj5pbnRlcnByZXRlcjwvRmlsdGVyPgogICAgIDwvQ2xD
b21waWxlPgpAQCAtMTM4OCw2ICsxNDA5LDE1IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
Llxhc3NlbWJsZXJcWDg2QXNzZW1ibGVyLmgiPgogICAgICAgPEZpbHRlcj5hc3NlbWJsZXI8L0Zp
bHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRp
bmdzXFNjcmlwdEZ1bmN0aW9uQ2FsbC5oIj4KKyAgICAgIDxGaWx0ZXI+YmluZGluZ3M8L0ZpbHRl
cj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdz
XFNjcmlwdE9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+YmluZGluZ3M8L0ZpbHRlcj4KKyAgICA8
L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdFZh
bHVlLmgiPgorICAgICAgPEZpbHRlcj5iaW5kaW5nczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRl
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0aW9uUHJv
ZmlsZS5oIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVk
ZT4KQEAgLTE3MTgsOSArMTc0OCwyNCBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVh
cFxXcml0ZUJhcnJpZXJTdXBwb3J0LmgiPgogICAgICAgPEZpbHRlcj5oZWFwPC9GaWx0ZXI+CiAg
ICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5z
cGVjdG9yQWdlbnRCYXNlLmgiPgorICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KKyAg
ICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNw
ZWN0b3JBZ2VudFJlZ2lzdHJ5LmgiPgorICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4K
KyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIj4KKyAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9G
aWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNw
ZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0
b3I8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGluc3BlY3RvclxJbnNwZWN0b3JUeXBlQnVpbGRlci5oIj4KKyAgICAgIDxGaWx0ZXI+aW5zcGVj
dG9yPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxpbnNwZWN0b3JcSW5zcGVjdG9yVmFsdWVzLmgiPgorICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8
L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGlu
dGVycHJldGVyXEFic3RyYWN0UEMuaCI+CiAgICAgICA8RmlsdGVyPmludGVycHJldGVyPC9GaWx0
ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmN4cHJvai9jb3B5LWZpbGVzLmNtZCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL2NvcHktZmlsZXMuY21kCmluZGV4IGY3ZTQyOTQu
Ljg4MmNlODMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL2NvcHktZmlsZXMuY21kCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL2NvcHktZmlsZXMuY21kCkBAIC0zOSw2ICszOSw3IEBAIGVjaG8g
Q29weWluZyBwcml2YXRlIGhlYWRlcnMuLi4KIG1rZGlyICIlUHJpdmF0ZUhlYWRlcnNEaXJlY3Rv
cnklIiAyPk5VTA0KIGZvciAlJWQgaW4gKA0KICAgICBhc3NlbWJsZXINCisgICAgYmluZGluZ3MN
CiAgICAgYnl0ZWNvZGUNCiAgICAgZGZnDQogICAgIGRpc2Fzc2VtYmxlcg0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggNzdlODBlZi4uMDAwYzVmZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTg5NSw2ICs4OTUsMjAgQEAKIAkJQTE3MTJCNDExMUM3QjIzNTAwN0E1
MzE1IC8qIFJlZ0V4cEtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQTAwOUMwMTgzMUEy
MkQwMENGODcxMSAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjQwOTIzQzE1NkVFRDNCMDA1NjZDQjIgLyogTWFj
cm9Bc3NlbWJsZXJBUk02NC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAvKiBBUk02NEFzc2VtYmxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY0MDkyM0Ix
NTZFRUQzQjAwNTY2Q0IyIC8qIEFSTTY0QXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTU0Q0YyRjUxODRFQUIyNDAwMjM3RjE5IC8q
IFNjcmlwdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1NENGMkYyMTg0RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5jcHAgKi87IH07
CisJCUE1NENGMkY2MTg0RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU0Q0YyRjMxODRFQUIyNDAwMjM3
RjE5IC8qIFNjcmlwdFZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJQTU0Q0YyRjkxODRFQUVEQTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTRDRjJG
NzE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2JqZWN0LmNwcCAqLzsgfTsKKwkJQTU0Q0YyRkEx
ODRFQUVEQTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU0Q0YyRjgxODRFQUVEQTAwMjM3RjE5IC8qIFNjcmlw
dE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUE1NUQ5M0E1MTg1MDEyQTgwMDQwMERFRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1RDkzQTMxODUw
MTJBODAwNDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgKi87IH07CisJCUE1NUQ5M0E2
MTg1MDEyQTgwMDQwMERFRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NUQ5M0E0MTg1MDEyQTgwMDQwMERFRCAv
KiBTY3JpcHRGdW5jdGlvbkNhbGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlBNTVEOTNBQzE4NTE0Rjc5MDA0MDBERUQgLyogSW5zcGVjdG9yVHlw
ZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1NUQ5M0FCMTg1MTRGNzkwMDQwMERFRCAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1OTNDRjdDMTg0
MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTkzQ0Y3QTE4NDAzNjAzMDBC
RkNFMjcgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwICovOyB9OworCQlBNTkzQ0Y3
RDE4NDAzNjAzMDBCRkNFMjcgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OTNDRjdCMTg0MDM2MDMw
MEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1OTNDRjdGMTg0MDM2MkMwMEJGQ0Uy
NyAvKiBJbnNwZWN0b3JBZ2VudEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE1OTNDRjdFMTg0MDM2MkMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2Vu
dEJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlBNTkzQ0Y4MjE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OTNDRjgwMTg0MDM3NzEw
MEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwICovOyB9OworCQlBNTkzQ0Y4MzE4NDAzNzcx
MDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNTkzQ0Y4MTE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9y
VmFsdWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJQTU5M0NGODYxODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5M0NGODQx
ODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwICovOyB9OworCQlB
NTkzQ0Y4NzE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5M0NGODUxODQwMzhD
QTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTk0NTU4RjE4MjQ1RUZEMDBDQzM4NDMg
LyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTk0NTU4RTE4MjQ1RURFMDBDQzM4NDMgLyogUmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZS5jcHAgKi87IH07CiAJCUE1OTQ1NTkyMTgyNDc0NDcwMENDMzg0
MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5NDU1OTAxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xv
YmFsT2JqZWN0RGVidWdnYWJsZS5jcHAgKi87IH07CiAJCUE1OTQ1NTkzMTgyNDc0NDcwMENDMzg0
MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OTQ1NTkxMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2Jh
bE9iamVjdERlYnVnZ2FibGUuaCAqLzsgfTsKQEAgLTIyMjcsNiArMjI0MSwyMCBAQAogCQlBMTcx
MkIzQTExQzdCMjEyMDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVnRXhwQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBMTcxMkIzRTExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwQ2FjaGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBLZXkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU0Q0YyRjIxODRFQUIyNDAwMjM3RjE5IC8qIFNjcmlwdFZh
bHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdFZhbHVl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU0Q0YyRjMxODRFQUIyNDAwMjM3
RjE5IC8qIFNjcmlwdFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNj
cmlwdFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1NENGMkY3MTg0RUFF
REEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2NyaXB0T2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTU0Q0YyRjgxODRFQUVEQTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTU1RDkzQTMxODUwMTJBODAwNDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2Fs
bC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRGdW5jdGlv
bkNhbGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTVEOTNBNDE4NTAxMkE4
MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNjcmlwdEZ1bmN0aW9uQ2FsbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBNTVEOTNBQjE4NTE0Rjc5MDA0MDBERUQgLyogSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaDsg
cGF0aCA9IGluc3BlY3Rvci9JbnNwZWN0b3JUeXBlQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBNTkzQ0Y3QTE4NDAzNjAzMDBCRkNFMjcgLyogSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwOyBwYXRoID0gaW5zcGVjdG9yL0luc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU5M0NG
N0IxODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg7
IHBhdGggPSBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU5M0NGN0UxODQwMzYyQzAwQkZDRTI3IC8qIEluc3BlY3Rv
ckFnZW50QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJbnNwZWN0b3JB
Z2VudEJhc2UuaDsgcGF0aCA9IGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU5M0NGODAxODQwMzc3MTAwQkZDRTI3IC8qIEluc3Bl
Y3RvclZhbHVlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBJbnNw
ZWN0b3JWYWx1ZXMuY3BwOyBwYXRoID0gaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTNDRjgxMTg0MDM3NzEwMEJGQ0UyNyAvKiBJ
bnNwZWN0b3JWYWx1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSW5zcGVj
dG9yVmFsdWVzLmg7IHBhdGggPSBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTNDRjg0MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0
b3JBZ2VudFJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwOyBwYXRoID0gaW5zcGVjdG9yL0luc3BlY3RvckFn
ZW50UmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTkzQ0Y4NTE4
NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Lmg7IHBhdGggPSBpbnNw
ZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBNTk0NTU4RTE4MjQ1RURFMDBDQzM4NDMgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlLmNwcDsgcGF0aCA9IGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1OTQ1NTkwMTgy
NDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU5NDU1OTExODI0NzQ0NzAwQ0MzODQzIC8q
IEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI3MjcsNiArMjc1NSw3IEBACiAJCQkJQTdDMjI1Q0MxMzk5ODFGMTAwRkYxNjYyIC8q
IEtleXdvcmRMb29rdXBHZW5lcmF0b3IucHkgKi8sCiAJCQkJMTQzMkVCRDcwQTM0Q0FENDAwNzE3
QjlGIC8qIEFQSSAqLywKIAkJCQk5Njg4Q0IxMjBFRDEyQjRFMDAxRDY0OUYgLyogYXNzZW1ibGVy
ICovLAorCQkJCUE1NENGMkVBMTg0RUE3MzkwMDIzN0YxOSAvKiBiaW5kaW5ncyAqLywKIAkJCQk5
NjlBMDc4RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8sCiAJCQkJN0UzOUQ4MUQwRUMz
OEVGQTAwM0FGMTFBIC8qIGJ5dGVjb21waWxlciAqLywKIAkJCQkxQzkwNTEzRTBCQTlFODgzMDA4
MUU5RDAgLyogQ29uZmlndXJhdGlvbnMgKi8sCkBAIC00MjAxLDExICs0MjMwLDMyIEBACiAJCQlw
YXRoID0gYnl0ZWNvZGU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlBNTRD
RjJFQTE4NEVBNzM5MDAyMzdGMTkgLyogYmluZGluZ3MgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91
cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUE1NUQ5M0EzMTg1MDEyQTgwMDQwMERFRCAvKiBTY3Jp
cHRGdW5jdGlvbkNhbGwuY3BwICovLAorCQkJCUE1NUQ5M0E0MTg1MDEyQTgwMDQwMERFRCAvKiBT
Y3JpcHRGdW5jdGlvbkNhbGwuaCAqLywKKwkJCQlBNTRDRjJGNzE4NEVBRURBMDAyMzdGMTkgLyog
U2NyaXB0T2JqZWN0LmNwcCAqLywKKwkJCQlBNTRDRjJGODE4NEVBRURBMDAyMzdGMTkgLyogU2Ny
aXB0T2JqZWN0LmggKi8sCisJCQkJQTU0Q0YyRjIxODRFQUIyNDAwMjM3RjE5IC8qIFNjcmlwdFZh
bHVlLmNwcCAqLywKKwkJCQlBNTRDRjJGMzE4NEVBQjI0MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUu
aCAqLywKKwkJCSk7CisJCQlwYXRoID0gYmluZGluZ3M7CisJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOworCQl9OwogCQlBNUJBMTVERjE4MjM0MDkyMDBBODJFNjkgLyogaW5zcGVjdG9yICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQlBNUJBMTVFMDE4MjM0
MDlEMDBBODJFNjkgLyogcmVtb3RlICovLAorCQkJCUE1OTNDRjdFMTg0MDM2MkMwMEJGQ0UyNyAv
KiBJbnNwZWN0b3JBZ2VudEJhc2UuaCAqLywKKwkJCQlBNTkzQ0Y4NDE4NDAzOENBMDBCRkNFMjcg
LyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAgKi8sCisJCQkJQTU5M0NGODUxODQwMzhDQTAw
QkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCAqLywKKwkJCQlBNTkzQ0Y3QTE4NDAz
NjAzMDBCRkNFMjcgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwICovLAorCQkJCUE1
OTNDRjdCMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oICov
LAogCQkJCUE1OTQ1NTk0MTgyNDc5RUIwMENDMzg0MyAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwuaCAqLywKKwkJCQlBNTVEOTNBQjE4NTE0Rjc5MDA0MDBERUQgLyogSW5zcGVjdG9yVHlwZUJ1
aWxkZXIuaCAqLywKKwkJCQlBNTkzQ0Y4MDE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFs
dWVzLmNwcCAqLywKKwkJCQlBNTkzQ0Y4MTE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFs
dWVzLmggKi8sCiAJCQkpOwogCQkJbmFtZSA9IGluc3BlY3RvcjsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC00MzQ2LDYgKzQzOTYsNyBAQAogCQkJCTBGMkI2NkRGMTdCNkI1QUIwMEE3
QUUzRiAvKiBEYXRhVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNEMjAzNEEwRTE3MTM1RTAw
MkM3RTgyIC8qIERhdGVDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzNTlDRjMw
RkREODlBRDAwMjA2MTgwIC8qIERhdGVDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlB
NTkzQ0Y3RjE4NDAzNjJDMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRCYXNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzExNjYwMjBFMTk5N0I0MDA4MDY2REQgLyogRGF0ZUluc3RhbmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxNEExNTYzMjEwOTY2MzY1MDA2RkEyNjAgLyogRGF0ZUluc3RhbmNl
Q2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDIwMzRDMEUxNzEzNUUwMDJDN0U4MiAvKiBE
YXRlUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTQzNzcsNiArNDQyOCw3IEBACiAJCQkJ
MEY4MzY0QjcxNjRCMEMxMTAwNTMzMjlBIC8qIERGR0JyYW5jaERpcmVjdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTFBMDA5QzAxODMxQTIyRDAwQ0Y4NzExIC8qIE1hY3JvQXNzZW1ibGVyQVJN
NjQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUM5REM1MTMyOERGODIwMDJCMkFENyAvKiBERkdC
eXRlQ29kZVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU5M0NGODcxODQwMzhDQTAwQkZD
RTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjU2
QzM2MTYyN0IwQUQwMDdGMjc4MyAvKiBERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVy
YXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5NEIxNEMzQ0QyRjAwN0MzREIxIC8qIERG
R0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NTgxNEVGOTBBMjAwQzcy
NTMyIC8qIERGR0NGQVBoYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTQ0NjQsNiArNDUxNiw3IEBA
CiAJCQkJODZFQzlERDMxMzI4REY4MjAwMkIyQUQ3IC8qIERGR1NwZWN1bGF0aXZlSklULmggaW4g
SGVhZGVycyAqLywKIAkJCQlBN0Q4OUQwMDE3QTBCOENDMDA3NzNBRDggLyogREZHU1NBQ29udmVy
c2lvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjlGQjRGNTE3RkNCOTE3MDBDQjY3Rjgg
LyogREZHU3RhY2tMYXlvdXRQaGFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU5M0NGODMxODQw
Mzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2
Mzk0NzgxNURDRTM0QjAwNkE1OTdDIC8qIERGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQzA5N0EyMTQ2QjI4Q0MwMENGMjQ0MiAvKiBERkdUaHVua3MuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRDhBMzI4MTdENTFGNTcwMENBMkM0MCAvKiBERkdUaWVyVXBD
aGVja0luamVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTQ0OTgsNiArNDU1MSw3IEBA
CiAJCQkJMEZCMTA1ODYxNjc1NDgxMjAwRjhBQjZFIC8qIEV4aXRLaW5kLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjBCODNBQjE0QkNGNUJCMDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzgxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJB
cnJheS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU0Q0YyRjYxODRFQUIyNDAwMjM3RjE5IC8qIFNj
cmlwdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzOTE3QURCNUYzMDA1QUIxNzQg
LyogRmxvYXQ2NEFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI0RTU0MzE3RUE5RjU5MDBB
QkIyMTcgLyogRlBSSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQzk5RDUxODRFRTMxODAw
OUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8s
CkBAIC00ODQ0LDYgKzQ4OTgsNyBAQAogCQkJCTBGMENENEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQ
dXREaXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOUZDOEM1MTRFMUI2MDQw
MEQ1MkFFMCAvKiBQdXRLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDdCODQ2MzBFNkRFNkIx
MDA0Nzc1QTQgLyogUHV0UHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTkzQ0Y3
RDE4NDAzNjAzMDBCRkNFMjcgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRjYwQUMyMTY3NDBGODMwMDAyOTc3OSAvKiBSZWR1Y2VXaGl0ZXNwYWNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1QTBFMTZGNUNEMDBCMzQ0NjAgLyogUmVnRXhw
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTcxMkIzRjExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhw
Q2FjaGUuaCBpbiBIZWFkZXJzICovLApAQCAtNDg4NSw2ICs0OTQwLDcgQEAKIAkJCQkwRkQ4MkU1
NDE0MURBRUVFMDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3QzFFQUYyMTc5ODdBQjYwMDI5OURCMiAvKiBTdGFja1Zpc2l0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0REYwNERBMTZCMzk5NkQwMDE2QTUxMyAvKiBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lz
LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTRDRjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0
T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNENBOTU4QjE2QUI1MERFMDA5MzhBMDYgLyog
U3RhdGljUHJvcGVydHlBbmFseXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTczMEI2MTIxMjUw
MDY4RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxBY3RpdmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzE4QzQ2NjBFMTZGNUNEMDBCMzQ0NjAgLyogU3RyaW5nQ29uc3RydWN0b3IuaCBpbiBIZWFk
ZXJzICovLApAQCAtNDk0Nyw2ICs1MDAzLDcgQEAKIAkJCQkxNEJFN0QzMzE3MTM1Q0Y0MDBEMTgw
N0EgLyogV2Vha0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Q0EzQUU0MTdEQTQxQUUw
MDY1MzhBRiAvKiBXZWFrTWFwQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Q0Ez
QUVDMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QTU1RDkzQUMxODUxNEY3OTAwNDAwREVEIC8qIEluc3BlY3RvclR5cGVCdWlsZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBN0NBM0FFNjE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01hcFByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyMEJFN0IxMEFBNkREQjAwRjQ1NUQyIC8qIFdlYWtS
YW5kb20uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjQyREE3MTNGM0IxRTgwMDdBREQ0QyAvKiBX
ZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTQ5NjAsNiArNTAxNyw3
IEBACiAJCQkJNDUxNTM5QjkxMkRDOTk0NTAwRUY3QUM0IC8qIFlhcnIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGNjY2RUNEMTgzNkIzN0UwMEQwMTdGMSAvKiBERkdSZXN1cnJlY3Rpb25Gb3JWYWxp
ZGF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NzA0Qjg1MTJEQkEzMzcwMEE5RkU3
QiAvKiBZYXJySW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1NUQ5M0E2MTg1MDEy
QTgwMDQwMERFRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2
NzA0Qjg3MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NjcwNEI4ODEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODY3MDRCOEExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVycyAq
LywKQEAgLTU0NjUsNiArNTUyMyw3IEBACiAJCQkJMEZGNDI3NjQxNTkxQTFDQzAwNENCOUZGIC8q
IERGR0Rpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4MUFEMjE1NEZCNEVF
MDA5ODNFNzIgLyogREZHRG9taW5hdG9ycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQzQzgy
NjE0MTE1RDQwMDBGRDgxQ0IgLyogREZHRHJpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1
OTNDRjgyMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEZGMEYxOUUxNkI3MkEwQjAwNURGOTVCIC8qIERGR0VkZ2UuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTc0REVGOTMxODJEOTkxNDAwNTIyQzIyIC8qIE1hcEl0ZXJhdG9yUHJvdG90
eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkMwQUU3MTQ5NkM3QzQwMEQ0RkJERCAvKiBE
RkdFeGl0UHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU1MjAsNiArNTU3OSw3IEBACiAJ
CQkJMEZCRTBGNzYxNkMxREIwRjAwODJDNUU4IC8qIERGR1VuaWZpY2F0aW9uUGhhc2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEYzNEIxNDkxNkQ0MjAxMDAwMUNEQTVBIC8qIERGR1VzZUtpbmQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzQjNBMkIxNTQ3NTAwMDAwM0VEMEZGIC8qIERGR1Zh
bGlkYXRlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1NUQ5M0E1MTg1MDEyQTgwMDQwMERFRCAv
KiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyQkRDNEYxNTIy
OEJGMzAwQ0Q4OTEwIC8qIERGR1ZhbHVlU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
RERCRkI1MTY2NkVFRDgwMEM1NUZFRiAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGMkJEQzUxMTUyMjhGRkQwMENEODkxMCAvKiBERkdWYXJpYWJs
ZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTU0MCw2ICs1NjAwLDcgQEAKIAkJCQkwRjU2
QTFENTE1MDAxQ0Y0MDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBNTk0NTU5MjE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dh
YmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQjEwNTg1MTY3NTQ4MEYwMEY4QUI2RSAvKiBF
eGl0S2luZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNTRDRjJGNTE4NEVBQjI0MDAyMzdGMTkg
LyogU2NyaXB0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMUMxNzA4QjAwNzAw
QkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEx
RTE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRkVBMEEwOTE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ2FwYWJpbGl0aWVz
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTU2OSw2ICs1NjMwLDcgQEAKIAkJCQkwRjlEMzM5QTE4
MDNBREI3MDA3M0MyQkMgLyogRlRMU3RhY2tNYXBzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
RUEwQTE2MTcwNkJCOTAwMEJCNzIyQyAvKiBGVExTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjIzNUJFMTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMVGh1bmtzLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUE1OTNDRjdDMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJFMzE3MTc4RTFDMDA2OTBDN0YgLyog
RlRMVmFsdWVGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5Q0IxMDdFQzM3NjAw
NDI3QTQ4IC8qIEZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZG
MEYxOUYxNkI3MkExNzAwNURGOTVCIC8qIEZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC01NzE5LDYgKzU3ODEsNyBAQAogCQkJCTg2RUJGMkZGMTU2MEYwNkEwMDhF
OTIyMiAvKiBOYW1lQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZFQkYzMDEx
NTYwRjA2QTAwOEU5MjIyIC8qIE5hbWVJbnN0YW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
NkVCRjMwMzE1NjBGMDZBMDA4RTkyMjIgLyogTmFtZVByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlBNTRDRjJGOTE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2JqZWN0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTE0NDY5REUwMTA3RUM3RTcwMDY1MDQ0NiAvKiBOYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NDY5REUxMTA3RUM3RTcwMDY1MDQ0
NiAvKiBOYXRpdmVFcnJvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDhGMjFC
NzEwN0VDNTQ3MDA0MkVDMkMgLyogTm9kZXMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01ODM4LDYg
KzU5MDEsNyBAQAogCQkJCTg2NzA0Qjg0MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySW50ZXJwcmV0
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY3MDRCODYxMkRCQTMzNzAwQTlGRTdCIC8qIFlh
cnJKSVQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY3MDRCODkxMkRCQTMzNzAwQTlGRTdCIC8q
IFlhcnJQYXR0ZXJuLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1OTNDRjg2MTg0MDM4Q0EwMEJG
Q0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2
NzA0QjQyMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2Fs
bC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxs
LmNwcApzaW1pbGFyaXR5IGluZGV4IDc4JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAppbmRleCAyZWEyYjRiLi5mMjY0
N2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlv
bkNhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5j
dGlvbkNhbGwuY3BwCkBAIC0xLDQgKzEsNSBAQAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTMxLDE3
ICszMiwxNSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9u
Q2FsbC5oIgogCi0jaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCisjaW5jbHVkZSAi
SlNMb2NrLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKLQotI2luY2x1ZGUgPHJ1bnRpbWUv
SlNMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEZXByZWNhdGVkIHsK
IAotdm9pZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1bWVudChjb25zdCBT
Y3JpcHRPYmplY3QmIGFyZ3VtZW50KQordm9pZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyOjph
cHBlbmRBcmd1bWVudChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmIGFyZ3VtZW50KQog
ewogICAgIGlmIChhcmd1bWVudC5zY3JpcHRTdGF0ZSgpICE9IG1fZXhlYykgewogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTUwLDcgKzQ5LDcgQEAgdm9pZCBTY3JpcHRDYWxsQXJn
dW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1bWVudChjb25zdCBTY3JpcHRPYmplY3QmIGFyZ3VtZW50
KQogICAgIG1fYXJndW1lbnRzLmFwcGVuZChhcmd1bWVudC5qc09iamVjdCgpKTsKIH0KIAotdm9p
ZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1bWVudChjb25zdCBTY3JpcHRW
YWx1ZSYgYXJndW1lbnQpCit2b2lkIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVuZEFy
Z3VtZW50KGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBhcmd1bWVudCkKIHsKICAgICBt
X2FyZ3VtZW50cy5hcHBlbmQoYXJndW1lbnQuanNWYWx1ZSgpKTsKIH0KQEAgLTU4LDcgKzU3LDcg
QEAgdm9pZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1bWVudChjb25zdCBT
Y3JpcHRWYWx1ZSYgYXJndW1lbnQpCiB2b2lkIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6OmFw
cGVuZEFyZ3VtZW50KGNvbnN0IFN0cmluZyYgYXJndW1lbnQpCiB7CiAgICAgSlNMb2NrSG9sZGVy
IGxvY2sobV9leGVjKTsKLSAgICBtX2FyZ3VtZW50cy5hcHBlbmQoanNTdHJpbmdXaXRoQ2FjaGUo
bV9leGVjLCBhcmd1bWVudCkpOworICAgIG1fYXJndW1lbnRzLmFwcGVuZChqc1N0cmluZyhtX2V4
ZWMsIGFyZ3VtZW50KSk7CiB9CiAKIHZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBw
ZW5kQXJndW1lbnQoY29uc3QgY2hhciogYXJndW1lbnQpCkBAIC02Nyw3ICs2Niw3IEBAIHZvaWQg
U2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQoY29uc3QgY2hhciogYXJn
dW1lbnQpCiAgICAgbV9hcmd1bWVudHMuYXBwZW5kKGpzU3RyaW5nKG1fZXhlYywgU3RyaW5nKGFy
Z3VtZW50KSkpOwogfQogCi12b2lkIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVuZEFy
Z3VtZW50KEpTQzo6SlNWYWx1ZSBhcmd1bWVudCkKK3ZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFu
ZGxlcjo6YXBwZW5kQXJndW1lbnQoSlNWYWx1ZSBhcmd1bWVudCkKIHsKICAgICBtX2FyZ3VtZW50
cy5hcHBlbmQoYXJndW1lbnQpOwogfQpAQCAtMTA3LDE0ICsxMDYsMTUgQEAgdm9pZCBTY3JpcHRD
YWxsQXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1bWVudChib29sIGFyZ3VtZW50KQogICAgIG1f
YXJndW1lbnRzLmFwcGVuZChqc0Jvb2xlYW4oYXJndW1lbnQpKTsKIH0KIAotU2NyaXB0RnVuY3Rp
b25DYWxsOjpTY3JpcHRGdW5jdGlvbkNhbGwoY29uc3QgU2NyaXB0T2JqZWN0JiB0aGlzT2JqZWN0
LCBjb25zdCBTdHJpbmcmIG5hbWUpCitTY3JpcHRGdW5jdGlvbkNhbGw6OlNjcmlwdEZ1bmN0aW9u
Q2FsbChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmIHRoaXNPYmplY3QsIGNvbnN0IFN0
cmluZyYgbmFtZSwgU2NyaXB0RnVuY3Rpb25DYWxsSGFuZGxlciBjYWxsSGFuZGxlcikKICAgICA6
IFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXIodGhpc09iamVjdC5zY3JpcHRTdGF0ZSgpKQorICAg
ICwgbV9jYWxsSGFuZGxlcihjYWxsSGFuZGxlcikKICAgICAsIG1fdGhpc09iamVjdCh0aGlzT2Jq
ZWN0KQogICAgICwgbV9uYW1lKG5hbWUpCiB7CiB9CiAKLVNjcmlwdFZhbHVlIFNjcmlwdEZ1bmN0
aW9uQ2FsbDo6Y2FsbChib29sJiBoYWRFeGNlcHRpb24pCitEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSBTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwoYm9vbCYgaGFkRXhjZXB0aW9uKQogewogICAgIEpT
T2JqZWN0KiB0aGlzT2JqZWN0ID0gbV90aGlzT2JqZWN0LmpzT2JqZWN0KCk7CiAKQEAgLTEyMywz
MiArMTIzLDMyIEBAIFNjcmlwdFZhbHVlIFNjcmlwdEZ1bmN0aW9uQ2FsbDo6Y2FsbChib29sJiBo
YWRFeGNlcHRpb24pCiAgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IHRoaXNPYmplY3QtPmdldChtX2V4
ZWMsIElkZW50aWZpZXIobV9leGVjLCBtX25hbWUpKTsKICAgICBpZiAobV9leGVjLT5oYWRFeGNl
cHRpb24oKSkgewogICAgICAgICBoYWRFeGNlcHRpb24gPSB0cnVlOwotICAgICAgICByZXR1cm4g
U2NyaXB0VmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCk7
CiAgICAgfQogCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUg
PSBnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBD
YWxsVHlwZU5vbmUpCi0gICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOworICAgICAgICByZXR1
cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKTsKIAogICAgIEpTVmFsdWUgcmVzdWx0OwotICAg
IGlmIChpc01haW5UaHJlYWQoKSkKLSAgICAgICAgcmVzdWx0ID0gSlNNYWluVGhyZWFkRXhlY1N0
YXRlOjpjYWxsKG1fZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc09iamVj
dCwgbV9hcmd1bWVudHMpOworICAgIGlmIChtX2NhbGxIYW5kbGVyKQorICAgICAgICByZXN1bHQg
PSBtX2NhbGxIYW5kbGVyKG1fZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhp
c09iamVjdCwgbV9hcmd1bWVudHMpOwogICAgIGVsc2UKICAgICAgICAgcmVzdWx0ID0gSlNDOjpj
YWxsKG1fZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc09iamVjdCwgbV9h
cmd1bWVudHMpOwogCiAgICAgaWYgKG1fZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAg
aGFkRXhjZXB0aW9uID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7CisgICAg
ICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSgpOwogICAgIH0KIAotICAgIHJldHVy
biBTY3JpcHRWYWx1ZShtX2V4ZWMtPnZtKCksIHJlc3VsdCk7CisgICAgcmV0dXJuIERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlKG1fZXhlYy0+dm0oKSwgcmVzdWx0KTsKIH0KIAotU2NyaXB0VmFsdWUg
U2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKCkKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIFNjcmlw
dEZ1bmN0aW9uQ2FsbDo6Y2FsbCgpCiB7CiAgICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsK
ICAgICByZXR1cm4gY2FsbChoYWRFeGNlcHRpb24pOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCit9IC8vIG5hbWVzcGFjZSBEZXByZWNhdGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaApzaW1pbGFyaXR5IGluZGV4IDUwJQpyZW5h
bWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuaApy
ZW5hbWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2Fs
bC5oCmluZGV4IDU2ZmE0N2MuLjA0YjJhZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaApAQCAtMSw0ICsxLDUgQEAKIC8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CkBAIC0zMSw1NyArMzIsNTYgQEAKICNpZm5kZWYgU2NyaXB0RnVuY3Rpb25DYWxs
X2gKICNkZWZpbmUgU2NyaXB0RnVuY3Rpb25DYWxsX2gKIAorI2luY2x1ZGUgIkFyZ0xpc3QuaCIK
ICNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgotCi0j
aW5jbHVkZSA8cnVudGltZS9BcmdMaXN0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewotICAgIGNsYXNzIEpTVmFsdWU7CitjbGFzcyBKU1ZhbHVl
OwogfQogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgU2NyaXB0VmFsdWU7CituYW1l
c3BhY2UgRGVwcmVjYXRlZCB7CiAKLSAgICBjbGFzcyBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVy
IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXIoSlNDOjpF
eGVjU3RhdGUqIHN0YXRlKSA6IG1fZXhlYyhzdGF0ZSkgeyB9CitjbGFzcyBKU19FWFBPUlRfUFJJ
VkFURSBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyIHsKK3B1YmxpYzoKKyAgICBTY3JpcHRDYWxs
QXJndW1lbnRIYW5kbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkgOiBtX2V4ZWMoc3RhdGUpIHsg
fQogCi0gICAgICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoY29uc3QgU2NyaXB0T2JqZWN0Jik7Ci0g
ICAgICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoY29uc3QgU2NyaXB0VmFsdWUmKTsKLSAgICAgICAg
dm9pZCBhcHBlbmRBcmd1bWVudChjb25zdCBjaGFyKik7Ci0gICAgICAgIHZvaWQgYXBwZW5kQXJn
dW1lbnQoY29uc3QgU3RyaW5nJik7Ci0gICAgICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoSlNDOjpK
U1ZhbHVlKTsKLSAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVudChsb25nKTsKLSAgICAgICAgdm9p
ZCBhcHBlbmRBcmd1bWVudChsb25nIGxvbmcpOwotICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50
KHVuc2lnbmVkIGludCk7Ci0gICAgICAgIHZvaWQgYXBwZW5kQXJndW1lbnQodW5zaWduZWQgbG9u
Zyk7Ci0gICAgICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoaW50KTsKLSAgICAgICAgdm9pZCBhcHBl
bmRBcmd1bWVudChib29sKTsKKyAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGNvbnN0IFNjcmlwdE9i
amVjdCYpOworICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoY29uc3QgU2NyaXB0VmFsdWUmKTsKKyAg
ICB2b2lkIGFwcGVuZEFyZ3VtZW50KGNvbnN0IGNoYXIqKTsKKyAgICB2b2lkIGFwcGVuZEFyZ3Vt
ZW50KGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoSlNDOjpKU1ZhbHVl
KTsKKyAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGxvbmcpOworICAgIHZvaWQgYXBwZW5kQXJndW1l
bnQobG9uZyBsb25nKTsKKyAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KHVuc2lnbmVkIGludCk7Cisg
ICAgdm9pZCBhcHBlbmRBcmd1bWVudCh1bnNpZ25lZCBsb25nKTsKKyAgICB2b2lkIGFwcGVuZEFy
Z3VtZW50KGludCk7CisgICAgdm9pZCBhcHBlbmRBcmd1bWVudChib29sKTsKIAotICAgIHByb3Rl
Y3RlZDoKLSAgICAgICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBtX2FyZ3VtZW50czsKLSAg
ICAgICAgSlNDOjpFeGVjU3RhdGUqIG1fZXhlYzsKK3Byb3RlY3RlZDoKKyAgICBKU0M6Ok1hcmtl
ZEFyZ3VtZW50QnVmZmVyIG1fYXJndW1lbnRzOworICAgIEpTQzo6RXhlY1N0YXRlKiBtX2V4ZWM7
CiAKLSAgICBwcml2YXRlOgotICAgICAgICAvLyBNYXJrZWRBcmd1bWVudEJ1ZmZlciBtdXN0IGJl
IHN0YWNrIGFsbG9jYXRlZCwgc28gcHJldmVudCBoZWFwCi0gICAgICAgIC8vIGFsbG9jIG9mIFNj
cmlwdEZ1bmN0aW9uQ2FsbCBhcyB3ZWxsLgotICAgICAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6
ZV90KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oMHhiYWRiZWVmKTsgfQotICAgICAgICB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QpIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigweGJh
ZGJlZWYpOyB9Ci0gICAgfTsKK3ByaXZhdGU6CisgICAgLy8gTWFya2VkQXJndW1lbnRCdWZmZXIg
bXVzdCBiZSBzdGFjayBhbGxvY2F0ZWQsIHNvIHByZXZlbnQgaGVhcAorICAgIC8vIGFsbG9jIG9m
IFNjcmlwdEZ1bmN0aW9uQ2FsbCBhcyB3ZWxsLgorICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXpl
X3QpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
PigweGJhZGJlZWYpOyB9CisgICAgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90KSB7IEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMHhiYWRiZWVm
KTsgfQorfTsKIAotICAgIGNsYXNzIFNjcmlwdEZ1bmN0aW9uQ2FsbCA6IHB1YmxpYyBTY3JpcHRD
YWxsQXJndW1lbnRIYW5kbGVyIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFNjcmlwdEZ1bmN0aW9u
Q2FsbChjb25zdCBTY3JpcHRPYmplY3QmIHRoaXNPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSk7
Ci0gICAgICAgIFNjcmlwdFZhbHVlIGNhbGwoYm9vbCYgaGFkRXhjZXB0aW9uKTsKLSAgICAgICAg
U2NyaXB0VmFsdWUgY2FsbCgpOworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgU2NyaXB0RnVuY3Rp
b25DYWxsIDogcHVibGljIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXIgeworcHVibGljOgorICAg
IHR5cGVkZWYgSlNDOjpKU1ZhbHVlICgqU2NyaXB0RnVuY3Rpb25DYWxsSGFuZGxlcikoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgSlNDOjpDYWxsVHlw
ZSBjYWxsVHlwZSwgY29uc3QgSlNDOjpDYWxsRGF0YSYgY2FsbERhdGEsIEpTQzo6SlNWYWx1ZSB0
aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncyk7CisgICAgU2NyaXB0RnVuY3Rpb25D
YWxsKGNvbnN0IFNjcmlwdE9iamVjdCYgdGhpc09iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBT
Y3JpcHRGdW5jdGlvbkNhbGxIYW5kbGVyIGhhbmRsZXIgPSBudWxscHRyKTsKKyAgICBTY3JpcHRW
YWx1ZSBjYWxsKGJvb2wmIGhhZEV4Y2VwdGlvbik7CisgICAgU2NyaXB0VmFsdWUgY2FsbCgpOwog
Ci0gICAgcHJvdGVjdGVkOgotICAgICAgICBTY3JpcHRPYmplY3QgbV90aGlzT2JqZWN0OwotICAg
ICAgICBTdHJpbmcgbV9uYW1lOwotICAgIH07Citwcm90ZWN0ZWQ6CisgICAgU2NyaXB0RnVuY3Rp
b25DYWxsSGFuZGxlciBtX2NhbGxIYW5kbGVyOworICAgIFNjcmlwdE9iamVjdCBtX3RoaXNPYmpl
Y3Q7CisgICAgU3RyaW5nIG1fbmFtZTsKK307CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30g
Ly8gbmFtZXNwYWNlIERlcHJlY2F0ZWQKIAogI2VuZGlmIC8vIFNjcmlwdEZ1bmN0aW9uQ2FsbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckNvbnNvbGVBZ2VudC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0T2JqZWN0LmNwcApzaW1p
bGFyaXR5IGluZGV4IDcxJQpjb3B5IGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtl
ckNvbnNvbGVBZ2VudC5jcHAKY29weSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mv
U2NyaXB0T2JqZWN0LmNwcAppbmRleCAxNWJiN2E4Li5jY2Y3YWYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0T2JqZWN0LmNwcApAQCAtMSw1ICsxLDYgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI5LDMyICszMCwyMiBAQAog
ICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKIAot
I2lmIEVOQUJMRShJTlNQRUNUT1IpCit1c2luZyBuYW1lc3BhY2UgSlNDOwogCi0jaW5jbHVkZSAi
V29ya2VyQ29uc29sZUFnZW50LmgiCituYW1lc3BhY2UgRGVwcmVjYXRlZCB7CiAKLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotV29ya2VyQ29uc29sZUFnZW50OjpXb3JrZXJDb25zb2xlQWdlbnQoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgOiBJbnNwZWN0b3JDb25zb2xlQWdlbnQo
aW5zdHJ1bWVudGluZ0FnZW50cywgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotewotfQotCi1Xb3Jr
ZXJDb25zb2xlQWdlbnQ6On5Xb3JrZXJDb25zb2xlQWdlbnQoKQorU2NyaXB0T2JqZWN0OjpTY3Jp
cHRPYmplY3QoRXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgSlNPYmplY3QqIG9iamVjdCkKKyAgICA6
IFNjcmlwdFZhbHVlKHNjcmlwdFN0YXRlLT52bSgpLCBvYmplY3QpCisgICAgLCBtX3NjcmlwdFN0
YXRlKHNjcmlwdFN0YXRlKQogewogfQogCi12b2lkIFdvcmtlckNvbnNvbGVBZ2VudDo6YWRkSW5z
cGVjdGVkTm9kZShFcnJvclN0cmluZyogZXJyb3IsIGludCkKK1NjcmlwdE9iamVjdDo6U2NyaXB0
T2JqZWN0KEV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBzY3JpcHRW
YWx1ZSkKKyAgICA6IFNjcmlwdFZhbHVlKHNjcmlwdFN0YXRlLT52bSgpLCBzY3JpcHRWYWx1ZS5q
c1ZhbHVlKCkpCisgICAgLCBtX3NjcmlwdFN0YXRlKHNjcmlwdFN0YXRlKQogewotICAgICplcnJv
ciA9ICJhZGRJbnNwZWN0ZWROb2RlIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHdvcmtlcnMiOwogfQog
Ci1ib29sIFdvcmtlckNvbnNvbGVBZ2VudDo6ZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpCi17Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShJTlNQRUNUT1IpCit9IC8vIG5hbWVzcGFjZSBEZXByZWNhdGVkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFzZUFnZW50LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0T2JqZWN0LmgKc2ltaWxhcml0eSBpbmRleCA2
NCUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhc2VBZ2Vu
dC5oCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0T2JqZWN0
LmgKaW5kZXggOGI5MDkzOC4uOGY3YjBkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckJhc2VBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
aW5kaW5ncy9TY3JpcHRPYmplY3QuaApAQCAtMSw1ICsxLDYgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKQEAgLTI4LDM2ICsyOSwyNyBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaWZuZGVmIEluc3BlY3RvckJhc2VBZ2VudF9oCi0jZGVmaW5lIEluc3BlY3RvckJhc2VB
Z2VudF9oCisjaWZuZGVmIFNjcmlwdE9iamVjdF9oCisjZGVmaW5lIFNjcmlwdE9iamVjdF9oCiAK
LSNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKLSNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIlNjcmlw
dFZhbHVlLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEZXByZWNhdGVkIHsK
IAotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwotY2xhc3MgSW5zdHJ1bWVudGluZ0Fn
ZW50czsKLQotY2xhc3MgSW5zcGVjdG9yQmFzZUFnZW50IHsKK2NsYXNzIFNjcmlwdE9iamVjdCA6
IHB1YmxpYyBTY3JpcHRWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+SW5zcGVjdG9yQmFz
ZUFnZW50KCkgeyB9CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgU2NyaXB0T2JqZWN0KEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU09iamVjdCopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFNjcmlwdE9i
amVjdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFNjcmlwdFZhbHVlJik7CisgICAgU2NyaXB0T2Jq
ZWN0KCkgOiBtX3NjcmlwdFN0YXRlKG51bGxwdHIpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpc2NhcmRBZ2Vu
dCgpIHsgfQorICAgIEpTQzo6SlNPYmplY3QqIGpzT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gYXNP
YmplY3QoanNWYWx1ZSgpKTsgfQorICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2NyaXB0U3RhdGU7IH0KIAogcHJvdGVjdGVkOgotICAgIEluc3BlY3Rv
ckJhc2VBZ2VudChjb25zdCBTdHJpbmcmIG5hbWUsIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMpCi0gICAgICAgIDogbV9pbnN0cnVtZW50aW5nQWdlbnRzKGluc3RydW1l
bnRpbmdBZ2VudHMpCi0gICAgICAgICwgbV9uYW1lKG5hbWUpCi0gICAgewotICAgIH0KLQotICAg
IEluc3RydW1lbnRpbmdBZ2VudHMqIG1faW5zdHJ1bWVudGluZ0FnZW50czsKLSAgICBTdHJpbmcg
bV9uYW1lOworICAgIEpTQzo6RXhlY1N0YXRlKiBtX3NjcmlwdFN0YXRlOwogfTsKIAotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgRGVwcmVjYXRlZAogCi0jZW5kaWYgLy8g
IWRlZmluZWQoSW5zcGVjdG9yQmFzZUFnZW50X2gpCisjZW5kaWYgLy8gU2NyaXB0T2JqZWN0X2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAKc2ltaWxhcml0
eSBpbmRleCA3MiUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
VmFsdWUuY3BwCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0
VmFsdWUuY3BwCmluZGV4IDZkOWZiMWQuLjVjNjBiMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChjKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC03LDEzICs3LDEzIEBACiAgKiBh
cmUgbWV0OgogICoKICAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CiAgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCiAgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRl
ciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgogICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uIAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KICAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQogICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRApAQCAtMzAsMjEgKzMwLDIwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiU2NyaXB0VmFsdWUuaCIKIAorI2luY2x1ZGUgIkFQSUNhc3QuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JWYWx1ZXMuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLQotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNh
c3QuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlUmVmLmg+Ci0KLSNpbmNsdWRl
IDxoZWFwL1N0cm9uZy5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CisjaW5jbHVkZSAi
SlNMb2NrLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7Cit1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOwogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgRGVwcmVjYXRlZCB7CiAKLWJv
b2wgU2NyaXB0VmFsdWU6OmdldFN0cmluZyhKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIFN0
cmluZyYgcmVzdWx0KSBjb25zdAorU2NyaXB0VmFsdWU6On5TY3JpcHRWYWx1ZSgpCit7Cit9CisK
K2Jvb2wgU2NyaXB0VmFsdWU6OmdldFN0cmluZyhFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBTdHJp
bmcmIHJlc3VsdCkgY29uc3QKIHsKICAgICBpZiAoIW1fdmFsdWUpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTU0LDcgKzUzLDcgQEAgYm9vbCBTY3JpcHRWYWx1ZTo6Z2V0U3RyaW5nKEpTQzo6
RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgU3RyaW5nJiByZXN1bHQpIGNvbnN0CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLVN0cmluZyBTY3JpcHRWYWx1ZTo6dG9TdHJpbmcoSlNDOjpFeGVjU3RhdGUq
IHNjcmlwdFN0YXRlKSBjb25zdAorU3RyaW5nIFNjcmlwdFZhbHVlOjp0b1N0cmluZyhFeGVjU3Rh
dGUqIHNjcmlwdFN0YXRlKSBjb25zdAogewogICAgIFN0cmluZyByZXN1bHQgPSBtX3ZhbHVlLmdl
dCgpLnRvU3RyaW5nKHNjcmlwdFN0YXRlKS0+dmFsdWUoc2NyaXB0U3RhdGUpOwogICAgIC8vIEhh
bmRsZSB0aGUgY2FzZSB3aGVyZSBhbiBleGNlcHRpb24gaXMgdGhyb3duIGFzIHBhcnQgb2YgaW52
b2tpbmcgdG9TdHJpbmcgb24gdGhlIG9iamVjdC4KQEAgLTYzLDEyICs2MiwxMSBAQCBTdHJpbmcg
U2NyaXB0VmFsdWU6OnRvU3RyaW5nKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSkgY29uc3QK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1ib29sIFNjcmlwdFZhbHVlOjppc0VxdWFsKEpTQzo6
RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0VmFsdWUmIGFub3RoZXJWYWx1ZSkg
Y29uc3QKK2Jvb2wgU2NyaXB0VmFsdWU6OmlzRXF1YWwoRXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwg
Y29uc3QgU2NyaXB0VmFsdWUmIGFub3RoZXJWYWx1ZSkgY29uc3QKIHsKICAgICBpZiAoaGFzTm9W
YWx1ZSgpKQogICAgICAgICByZXR1cm4gYW5vdGhlclZhbHVlLmhhc05vVmFsdWUoKTsKLQotICAg
IHJldHVybiBKU1ZhbHVlSXNFcXVhbCh0b1JlZihzY3JpcHRTdGF0ZSksIHRvUmVmKHNjcmlwdFN0
YXRlLCBqc1ZhbHVlKCkpLCB0b1JlZihzY3JpcHRTdGF0ZSwgYW5vdGhlclZhbHVlLmpzVmFsdWUo
KSksIDApOworICAgIHJldHVybiBKU1ZhbHVlSXNFcXVhbCh0b1JlZihzY3JpcHRTdGF0ZSksIHRv
UmVmKHNjcmlwdFN0YXRlLCBqc1ZhbHVlKCkpLCB0b1JlZihzY3JpcHRTdGF0ZSwgYW5vdGhlclZh
bHVlLmpzVmFsdWUoKSksIG51bGxwdHIpOwogfQogCiBib29sIFNjcmlwdFZhbHVlOjppc051bGwo
KSBjb25zdApAQCAtOTgsMzMgKzk2LDE3IEBAIGJvb2wgU2NyaXB0VmFsdWU6OmlzRnVuY3Rpb24o
KSBjb25zdAogICAgIHJldHVybiBnZXRDYWxsRGF0YShtX3ZhbHVlLmdldCgpLCBjYWxsRGF0YSkg
IT0gQ2FsbFR5cGVOb25lOwogfQogCi1QYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
U2NyaXB0VmFsdWU6OnNlcmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIFNlcmlh
bGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQotewotICAgIHJldHVybiBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzY3JpcHRTdGF0ZSwganNWYWx1ZSgpLCAwLCAwLCB0aHJv
d0V4Y2VwdGlvbnMpOwotfQotCi1QYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2Ny
aXB0VmFsdWU6OnNlcmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIE1lc3NhZ2VQ
b3J0QXJyYXkqIG1lc3NhZ2VQb3J0cywgQXJyYXlCdWZmZXJBcnJheSogYXJyYXlCdWZmZXJzLCBi
b29sJiBkaWRUaHJvdykKLXsKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJp
YWxpemVkVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzY3JpcHRTdGF0ZSwg
anNWYWx1ZSgpLCBtZXNzYWdlUG9ydHMsIGFycmF5QnVmZmVycyk7Ci0gICAgZGlkVGhyb3cgPSBz
Y3JpcHRTdGF0ZS0+aGFkRXhjZXB0aW9uKCk7Ci0gICAgcmV0dXJuIHNlcmlhbGl6ZWRWYWx1ZS5y
ZWxlYXNlKCk7Ci19Ci0KLVNjcmlwdFZhbHVlIFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShKU0M6
OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUsIFNl
cmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQotewotICAgIHJldHVybiBTY3Jp
cHRWYWx1ZShzY3JpcHRTdGF0ZS0+dm0oKSwgdmFsdWUtPmRlc2VyaWFsaXplKHNjcmlwdFN0YXRl
LCBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAwLCB0aHJvd0V4Y2VwdGlvbnMp
KTsKLX0KLQogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi1zdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3JWYWx1ZT4ganNUb0luc3BlY3RvclZhbHVlKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwg
SlNWYWx1ZSB2YWx1ZSwgaW50IG1heERlcHRoKQorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9y
VmFsdWU+IGpzVG9JbnNwZWN0b3JWYWx1ZShFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBKU1ZhbHVl
IHZhbHVlLCBpbnQgbWF4RGVwdGgpCiB7CiAgICAgaWYgKCF2YWx1ZSkgewogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIAogICAgIGlmICghbWF4RGVwdGgpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIG1heERlcHRoLS07CiAKICAgICBpZiAodmFsdWUu
aXNOdWxsKCkgfHwgdmFsdWUuaXNVbmRlZmluZWQoKSkKQEAgLTEzNyw2ICsxMTksNyBAQCBzdGF0
aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4ganNUb0luc3BlY3RvclZhbHVlKEpTQzo6RXhl
Y1N0YXRlKiBzY3JpcHRTdGF0ZQogICAgICAgICBTdHJpbmcgcyA9IHZhbHVlLmdldFN0cmluZyhz
Y3JpcHRTdGF0ZSk7CiAgICAgICAgIHJldHVybiBJbnNwZWN0b3JTdHJpbmc6OmNyZWF0ZShTdHJp
bmcocy5jaGFyYWN0ZXJzKCksIHMubGVuZ3RoKCkpKTsKICAgICB9CisKICAgICBpZiAodmFsdWUu
aXNPYmplY3QoKSkgewogICAgICAgICBpZiAoaXNKU0FycmF5KHZhbHVlKSkgewogICAgICAgICAg
ICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBpbnNwZWN0b3JBcnJheSA9IEluc3BlY3RvckFycmF5
OjpjcmVhdGUoKTsKQEAgLTE0Niw3ICsxMjksNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3JWYWx1ZT4ganNUb0luc3BlY3RvclZhbHVlKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZQog
ICAgICAgICAgICAgICAgIEpTVmFsdWUgZWxlbWVudCA9IGFycmF5LT5nZXRJbmRleChzY3JpcHRT
dGF0ZSwgaSk7CiAgICAgICAgICAgICAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBlbGVtZW50
VmFsdWUgPSBqc1RvSW5zcGVjdG9yVmFsdWUoc2NyaXB0U3RhdGUsIGVsZW1lbnQsIG1heERlcHRo
KTsKICAgICAgICAgICAgICAgICBpZiAoIWVsZW1lbnRWYWx1ZSkKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAg
ICAgICAgICAgIGluc3BlY3RvckFycmF5LT5wdXNoVmFsdWUoZWxlbWVudFZhbHVlKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBpbnNwZWN0b3JBcnJheTsKQEAgLTE2MCwyMCAr
MTQzLDIxIEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBqc1RvSW5zcGVjdG9y
VmFsdWUoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlCiAgICAgICAgICAgICBKU1ZhbHVlIHBy
b3BlcnR5VmFsdWUgPSBvYmplY3QtPmdldChzY3JpcHRTdGF0ZSwgbmFtZSk7CiAgICAgICAgICAg
ICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGluc3BlY3RvclZhbHVlID0ganNUb0luc3BlY3RvclZh
bHVlKHNjcmlwdFN0YXRlLCBwcm9wZXJ0eVZhbHVlLCBtYXhEZXB0aCk7CiAgICAgICAgICAgICBp
ZiAoIWluc3BlY3RvclZhbHVlKQotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgaW5zcGVjdG9yT2JqZWN0LT5zZXRW
YWx1ZShTdHJpbmcobmFtZS5jaGFyYWN0ZXJzKCksIG5hbWUubGVuZ3RoKCkpLCBpbnNwZWN0b3JW
YWx1ZSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGluc3BlY3Rvck9iamVjdDsKICAgICB9
CisKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gU2NyaXB0VmFsdWU6OnRv
SW5zcGVjdG9yVmFsdWUoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlKSBjb25zdAorUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JWYWx1ZT4gU2NyaXB0VmFsdWU6OnRvSW5zcGVjdG9yVmFsdWUoRXhlY1N0
YXRlKiBzY3JpcHRTdGF0ZSkgY29uc3QKIHsKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBob2xkZXIo
c2NyaXB0U3RhdGUpOworICAgIEpTTG9ja0hvbGRlciBob2xkZXIoc2NyaXB0U3RhdGUpOwogICAg
IHJldHVybiBqc1RvSW5zcGVjdG9yVmFsdWUoc2NyaXB0U3RhdGUsIG1fdmFsdWUuZ2V0KCksIElu
c3BlY3RvclZhbHVlOjptYXhEZXB0aCk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikK
IAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgRGVwcmVjYXRlZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5oCnNpbWlsYXJpdHkgaW5kZXgg
NzYlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmgK
cmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5oCmlu
ZGV4IDAxMjEwZjUuLmQ1ZmFkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Nj
cmlwdFZhbHVlLmgKQEAgLTEsMTAgKzEsMTEgQEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChjKSAyMDA4LCAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKKyAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKICAqIG1ldDoKLSAqIAorICoKICAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCiAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCkBAIC0xNCw3ICsxNSw3IEBACiAgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCiAgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQog
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqIAorICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKICAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCiAgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
QEAgLTMxLDI1ICszMiwyNCBAQAogI2lmbmRlZiBTY3JpcHRWYWx1ZV9oCiAjZGVmaW5lIFNjcmlw
dFZhbHVlX2gKIAotI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgotI2luY2x1ZGUg
IlNjcmlwdFN0YXRlLmgiCi0jaW5jbHVkZSA8aGVhcC9TdHJvbmcuaD4KLSNpbmNsdWRlIDxoZWFw
L1N0cm9uZ0lubGluZXMuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KLSNpbmNs
dWRlIDxydW50aW1lL09wZXJhdGlvbnMuaD4KKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5j
bHVkZSAiT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIlN0cm9uZy5oIgorI2luY2x1ZGUgIlN0cm9u
Z0lubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KK25hbWVzcGFjZSBJbnNw
ZWN0b3IgewogY2xhc3MgSW5zcGVjdG9yVmFsdWU7Ci1jbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFs
dWU7Cit9CiAKLWNsYXNzIFNjcmlwdFZhbHVlIHsKK25hbWVzcGFjZSBEZXByZWNhdGVkIHsKKwor
Y2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgU2NyaXB0VmFsdWUgewogcHVibGljOgogICAgIFNjcmlw
dFZhbHVlKCkgeyB9Ci0gICAgU2NyaXB0VmFsdWUoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSB2
YWx1ZSkgOiBtX3ZhbHVlKHZtLCB2YWx1ZSkge30KLSAgICB2aXJ0dWFsIH5TY3JpcHRWYWx1ZSgp
IHt9CisgICAgU2NyaXB0VmFsdWUoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSB2YWx1ZSkgOiBt
X3ZhbHVlKHZtLCB2YWx1ZSkgeyB9CisgICAgdmlydHVhbCB+U2NyaXB0VmFsdWUoKTsKIAogICAg
IEpTQzo6SlNWYWx1ZSBqc1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS5nZXQoKTsgfQog
ICAgIGJvb2wgZ2V0U3RyaW5nKEpTQzo6RXhlY1N0YXRlKiwgU3RyaW5nJiByZXN1bHQpIGNvbnN0
OwpAQCAtNjUsMTggKzY1LDE0IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBTY3JpcHRWYWx1ZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0gb3RoZXIubV92
YWx1ZTsgfQogCi0gICAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6
ZShKU0M6OkV4ZWNTdGF0ZSosIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7Ci0g
ICAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZShKU0M6OkV4ZWNT
dGF0ZSosIE1lc3NhZ2VQb3J0QXJyYXkqLCBBcnJheUJ1ZmZlckFycmF5KiwgYm9vbCYpOwotICAg
IHN0YXRpYyBTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSosIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSosIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7Ci0KICNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHRvSW5z
cGVjdG9yVmFsdWUoSlNDOjpFeGVjU3RhdGUqKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHRvSW5zcGVjdG9yVmFsdWUoSlNDOjpFeGVjU3RhdGUqKSBj
b25zdDsKICNlbmRpZgogCiBwcml2YXRlOgogICAgIEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4g
bV92YWx1ZTsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIERl
cHJlY2F0ZWQKIAogI2VuZGlmIC8vIFNjcmlwdFZhbHVlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oCnNpbWlsYXJpdHkgaW5kZXgg
NjglCmNvcHkgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdp
c3RyeS5oCmNvcHkgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JB
Z2VudEJhc2UuaAppbmRleCA0ZmQwMzUzLi4yMGFkNzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI0LDI5ICsyNCwzMyBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaWZuZGVmIEluc3BlY3RvckFnZW50UmVnaXN0cnlfaAotI2RlZmluZSBJbnNwZWN0b3JB
Z2VudFJlZ2lzdHJ5X2gKKyNpZm5kZWYgSW5zcGVjdG9yQWdlbnRCYXNlX2gKKyNkZWZpbmUgSW5z
cGVjdG9yQWdlbnRCYXNlX2gKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgotI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKIAogY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CitjbGFz
cyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CiAKLWNsYXNzIEluc3BlY3RvckFnZW50UmVnaXN0
cnkgeworY2xhc3MgSW5zcGVjdG9yQWdlbnRCYXNlIHsKIHB1YmxpYzoKLSAgICB2b2lkIGFwcGVu
ZChQYXNzT3duUHRyPEluc3BlY3RvckJhc2VBZ2VudD4pOworICAgIHZpcnR1YWwgfkluc3BlY3Rv
ckFnZW50QmFzZSgpIHsgfQogCi0gICAgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKTsK
LSAgICB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCk7Ci0gICAgdm9pZCBkaXNj
YXJkQWdlbnRzKCk7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciop
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRpc2NhcmRBZ2VudCgpIHsgfQogCi1wcml2YXRlOgotICAg
IFZlY3RvcjxPd25QdHI8SW5zcGVjdG9yQmFzZUFnZW50Pj4gbV9hZ2VudHM7Citwcm90ZWN0ZWQ6
CisgICAgSW5zcGVjdG9yQWdlbnRCYXNlKGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICAgICAgOiBt
X25hbWUobmFtZSkKKyAgICB7CisgICAgfQorCisgICAgU3RyaW5nIG1fbmFtZTsKIH07CisgICAg
Cit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yQWdlbnRSZWdpc3RyeV9oKQorI2VuZGlmIC8vICFk
ZWZpbmVkKEluc3BlY3RvckFnZW50QmFzZV9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcApzaW1pbGFyaXR5IGluZGV4
IDk0JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRS
ZWdpc3RyeS5jcHAKcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAKaW5kZXggMDk5ZDFhMy4uNDZlOTIwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3Ry
eS5jcHAKQEAgLTI1LDE0ICsyNSwxMyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLQot
I2lmIEVOQUJMRShJTlNQRUNUT1IpCi0KICNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5
LmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi12b2lk
IEluc3BlY3RvckFnZW50UmVnaXN0cnk6OmFwcGVuZChQYXNzT3duUHRyPEluc3BlY3RvckJhc2VB
Z2VudD4gYWdlbnQpCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKwordm9pZCBJbnNwZWN0b3JBZ2Vu
dFJlZ2lzdHJ5OjphcHBlbmQoUGFzc093blB0cjxJbnNwZWN0b3JBZ2VudEJhc2U+IGFnZW50KQog
ewogICAgIG1fYWdlbnRzLmFwcGVuZChhZ2VudCk7CiB9CkBAIC01NSw2ICs1NCw2IEBAIHZvaWQg
SW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6ZGlzY2FyZEFnZW50cygpCiAgICAgICAgIG1fYWdlbnRz
W2ldLT5kaXNjYXJkQWdlbnQoKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBu
YW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5o
CnNpbWlsYXJpdHkgaW5kZXggODclCmNvcHkgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oCmNvcHkgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgKaW5kZXggNGZkMDM1My4uY2I2NTcyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0
cnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50
UmVnaXN0cnkuaApAQCAtMjcsMjYgKzI3LDI3IEBACiAjaWZuZGVmIEluc3BlY3RvckFnZW50UmVn
aXN0cnlfaAogI2RlZmluZSBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5X2gKIAotI2luY2x1ZGUgIklu
c3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckFnZW50QmFzZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi1uYW1l
c3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogY2xhc3MgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI7CitjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CiAKLWNs
YXNzIEluc3BlY3RvckFnZW50UmVnaXN0cnkgeworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5z
cGVjdG9yQWdlbnRSZWdpc3RyeSB7CiBwdWJsaWM6Ci0gICAgdm9pZCBhcHBlbmQoUGFzc093blB0
cjxJbnNwZWN0b3JCYXNlQWdlbnQ+KTsKKyAgICB2b2lkIGFwcGVuZChQYXNzT3duUHRyPEluc3Bl
Y3RvckFnZW50QmFzZT4pOwogCiAgICAgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKTsK
ICAgICB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCk7CiAgICAgdm9pZCBkaXNj
YXJkQWdlbnRzKCk7CiAKIHByaXZhdGU6Ci0gICAgVmVjdG9yPE93blB0cjxJbnNwZWN0b3JCYXNl
QWdlbnQ+PiBtX2FnZW50czsKKyAgICBWZWN0b3I8T3duUHRyPEluc3BlY3RvckFnZW50QmFzZT4+
IG1fYWdlbnRzOwogfTsKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2Ug
SW5zcGVjdG9yCiAKICNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5X2gp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci5jcHAKc2ltaWxhcml0eSBpbmRleCA5NiUKcmVuYW1lIGZyb20gU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcApyZW5h
bWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlci5jcHAKaW5kZXggYmZhNGM0Yi4uYzI2Njg1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNw
cApAQCAtMjksMTIgKzI5LDEyIEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVk
ZSAiSW5zcGVjdG9yRm9yd2FyZGluZy5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNl
IFdlYkNvcmUgeworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjpDYWxsYmFja0Jhc2U6OkNhbGxiYWNrQmFzZShQYXNzUmVmUHRyPEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyPiBiYWNrZW5kRGlzcGF0Y2hlciwgaW50IGlkKQogICAgIDogbV9iYWNr
ZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcikKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lk
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpyZXBvcnRQcm90b2NvbEVycm9yKGNvbnN0IGxv
bmcqIGNvbnN0IGNhbGxJZCwgQwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5WYWx1ZVR5
cGUsIHR5cGVuYW1lIFZhbHVlVHlwZSwgdHlwZW5hbWUgRGVmYXVsdFZhbHVlVHlwZT4KLVJldHVy
blZhbHVlVHlwZSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0UHJvcGVydHlWYWx1ZShJ
bnNwZWN0b3JPYmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZv
dW5kLCBJbnNwZWN0b3JBcnJheSogcHJvdG9jb2xFcnJvcnMsIERlZmF1bHRWYWx1ZVR5cGUgZGVm
YXVsdFZhbHVlLCBib29sICgqYXNNZXRob2QpKEluc3BlY3RvclZhbHVlKiwgVmFsdWVUeXBlKiks
IGNvbnN0IGNoYXIqIHR5cGVOYW1lKQorc3RhdGljIFJldHVyblZhbHVlVHlwZSBnZXRQcm9wZXJ0
eVZhbHVlKEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wq
IHZhbHVlRm91bmQsIEluc3BlY3RvckFycmF5KiBwcm90b2NvbEVycm9ycywgRGVmYXVsdFZhbHVl
VHlwZSBkZWZhdWx0VmFsdWUsIGJvb2wgKCphc01ldGhvZCkoSW5zcGVjdG9yVmFsdWUqLCBWYWx1
ZVR5cGUqKSwgY29uc3QgY2hhciogdHlwZU5hbWUpCiB7CiAgICAgQVNTRVJUKHByb3RvY29sRXJy
b3JzKTsKIApAQCAtMjU5LDYgKzI1OSw2IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRBcnJheShJbnNwZWN0b3JPYmplY3QqCiAgICAg
cmV0dXJuIGdldFByb3BlcnR5VmFsdWU8UGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4sIFJlZlB0
cjxJbnNwZWN0b3JBcnJheT4sIEluc3BlY3RvckFycmF5Kj4ob2JqZWN0LCBuYW1lLCB2YWx1ZUZv
dW5kLCBwcm90b2NvbEVycm9ycywgbnVsbHB0ciwgQXNNZXRob2RCcmlkZ2VzOjphc0FycmF5LCAi
QXJyYXkiKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgSW5z
cGVjdG9yCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgKc2lt
aWxhcml0eSBpbmRleCA4NyUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgKcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaAppbmRleCBhNmU0ZDJmLi4w
YTU1YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgKQEAgLTI3LDEyICsyNywxMiBAQAogI2lmbmRlZiBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcl9oCiAjZGVmaW5lIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyX2gKIAotI2luY2x1ZGUgIkluc3BlY3RvclR5cGVCdWlsZGVyLmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1u
YW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogY2xhc3MgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CkBA
IC00NywxNSArNDcsMTMgQEAgcHJvdGVjdGVkOgogICAgIFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKIH07CiAKLWNsYXNzIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyIDogcHVibGljIFJlZkNvdW50ZWQ8SW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI+IHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyIDogcHVibGljIFJlZkNvdW50ZWQ8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4g
Y3JlYXRlKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCopOwotICAgIHZpcnR1YWwgfkluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKCkgeyB9CiAKLSAgICBjbGFzcyBDYWxsYmFja0Jhc2U6IHB1Ymxp
YyBSZWZDb3VudGVkPENhbGxiYWNrQmFzZT4geworICAgIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRF
IENhbGxiYWNrQmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPENhbGxiYWNrQmFzZT4gewogICAgIHB1
YmxpYzoKICAgICAgICAgQ2FsbGJhY2tCYXNlKFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI+LCBpbnQgaWQpOwotICAgICAgICB2aXJ0dWFsIH5DYWxsYmFja0Jhc2UoKSB7IH0K
IAogICAgICAgICBib29sIGlzQWN0aXZlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2VuZEZhaWx1
cmUoY29uc3QgRXJyb3JTdHJpbmcmKTsKQEAgLTk4LDEzICs5NiwxMCBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCogaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSA6IG1faW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgeyB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBSZXR1cm5WYWx1ZVR5cGUsIHR5cGVuYW1lIFZhbHVlVHlwZSwgdHlwZW5hbWUgRGVmYXVsdFZh
bHVlVHlwZT4KLSAgICBzdGF0aWMgUmV0dXJuVmFsdWVUeXBlIGdldFByb3BlcnR5VmFsdWUoSW5z
cGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3Vu
ZCwgSW5zcGVjdG9yQXJyYXkqIHByb3RvY29sRXJyb3JzLCBEZWZhdWx0VmFsdWVUeXBlIGRlZmF1
bHRWYWx1ZSwgYm9vbCAoKmFzTWV0aG9kKShJbnNwZWN0b3JWYWx1ZSosIFZhbHVlVHlwZSopLCBj
b25zdCBjaGFyKiB0eXBlTmFtZSk7Ci0KICAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG1f
aW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogICAgIEhhc2hNYXA8U3RyaW5nLCBJbnNwZWN0b3JT
dXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcio+IG1fZGlzcGF0Y2hlcnM7CiB9OwogCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8v
ICFkZWZpbmVkKEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyX2gpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclR5cGVCdWlsZGVyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclR5cGVCdWlsZGVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGVhNzZlYwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaApA
QCAtMCwwICsxLDMzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgVGhlIENocm9taXVtIEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgSW5zcGVjdG9yVHlwZUJ1aWxkZXJfaAorI2RlZmluZSBJ
bnNwZWN0b3JUeXBlQnVpbGRlcl9oCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorCisjaW5jbHVk
ZSAiSW5zcGVjdG9yVmFsdWVzLmgiCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworbmFtZXNw
YWNlIFR5cGVCdWlsZGVyIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNzIE9wdE91dHB1
dCB7CitwdWJsaWM6CisgICAgT3B0T3V0cHV0KCkgOiBtX2Fzc2lnbmVkKGZhbHNlKSB7IH0KKwor
ICAgIHZvaWQgb3BlcmF0b3I9KFQgdmFsdWUpCisgICAgeworICAgICAgICBtX3ZhbHVlID0gdmFs
dWU7CisgICAgICAgIG1fYXNzaWduZWQgPSB0cnVlOworICAgIH0KKworICAgIGJvb2wgaXNBc3Np
Z25lZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXNzaWduZWQ7IH0KKworICAgIFQgZ2V0VmFsdWUoKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKGlzQXNzaWduZWQoKSk7CisgICAgICAgIHJldHVybiBtX3Zh
bHVlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBUIG1fdmFsdWU7CisgICAgYm9vbCBtX2Fzc2ln
bmVkOworCisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoT3B0T3V0cHV0KTsKK307CisKKworLy8g
QSBzbWFsbCB0cmFuc2llbnQgd3JhcHBlciBhcm91bmQgaW50IHR5cGUsIHRoYXQgY2FuIGJlIHVz
ZWQgYXMgYSBmdW5jaXRvbiBwYXJhbWV0ZXIgdHlwZQorLy8gY2xldmVybHkgZGlzYWxsb3dpbmcg
QysrIGltcGxpY2l0IGNhc3RzIGZyb20gZmxvYXQgb3IgZG91YmxlLgorY2xhc3MgRXhhY3RseUlu
dCB7CitwdWJsaWM6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBFeGFjdGx5SW50KFQg
dCkgOiBtX3ZhbHVlKGNhc3RfdG9faW50PFQ+KHQpKSB7IH0KKyAgICBFeGFjdGx5SW50KCkgeyB9
CisKKyAgICBvcGVyYXRvciBpbnQoKSB7IHJldHVybiBtX3ZhbHVlOyB9CisKK3ByaXZhdGU6Cisg
ICAgaW50IG1fdmFsdWU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHN0YXRpYyBp
bnQgY2FzdF90b19pbnQoVCkgeyByZXR1cm4gVDo6ZGVmYXVsdF9jYXNlX2Nhc3RfaXNfbm90X3N1
cHBvcnRlZCgpOyB9Cit9OworCit0ZW1wbGF0ZTw+CitpbmxpbmUgaW50IEV4YWN0bHlJbnQ6OmNh
c3RfdG9faW50PGludD4oaW50IGkpIHsgcmV0dXJuIGk7IH0KKwordGVtcGxhdGU8PgoraW5saW5l
IGludCBFeGFjdGx5SW50OjpjYXN0X3RvX2ludDx1bnNpZ25lZCBpbnQ+KHVuc2lnbmVkIGludCBp
KSB7IHJldHVybiBpOyB9CisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECitjbGFzcyBSdW50aW1lQ2Fz
dEhlbHBlciB7CitwdWJsaWM6CisgICAgdGVtcGxhdGU8SW5zcGVjdG9yVmFsdWU6OlR5cGUgVFlQ
RT4KKyAgICBzdGF0aWMgdm9pZCBhc3NlcnRUeXBlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkKKyAg
ICB7CisgICAgICAgIEFTU0VSVCh2YWx1ZS0+dHlwZSgpID09IFRZUEUpOworICAgIH0KKworICAg
IHN0YXRpYyB2b2lkIGFzc2VydEFueShJbnNwZWN0b3JWYWx1ZSopCisgICAgeworICAgIH0KKwor
ICAgIHN0YXRpYyB2b2lkIGFzc2VydEludChJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCisgICAgewor
ICAgICAgICBkb3VibGUgdjsKKyAgICAgICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFzTnVtYmVy
KCZ2KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChjYXN0UmVzLCBjYXN0UmVzKTsKKyAgICAgICAg
QVNTRVJUKHN0YXRpY19jYXN0PGRvdWJsZT4oc3RhdGljX2Nhc3Q8aW50Pih2KSkgPT0gdik7Cisg
ICAgfQorfTsKKyNlbmRpZgorCisKKy8vIFRoaXMgY2xhc3MgcHJvdmlkZXMgIlRyYWl0cyIgdHlw
ZSBmb3IgdGhlIGlucHV0IHR5cGUgVC4gSXQgaXMgcHJvZ3JhbW1lZCB1c2luZyBDKysgdGVtcGxh
dGUgc3BlY2lhbGl6YXRpb24KKy8vIHRlY2huaXF1ZS4gQnkgZGVmYXVsdCBpdCBzaW1wbHkgdGFr
ZXMgIkl0ZW1UcmFpdHMiIHR5cGUgZnJvbSBULCBidXQgaXQgZG9lc24ndCB3b3JrIHdpdGggdGhl
IGJhc2UgdHlwZXMuCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IEFycmF5SXRlbUhlbHBl
ciB7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBUOjpJdGVtVHJhaXRzIFRyYWl0czsKK307CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBBcnJheSA6IHB1YmxpYyBJbnNwZWN0b3JBcnJheUJh
c2UgeworcHJpdmF0ZToKKyAgICBBcnJheSgpIHsgfQorCisgICAgSW5zcGVjdG9yQXJyYXkqIG9w
ZW5BY2Nlc3NvcnMoKQorICAgIHsKKyAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEluc3Bl
Y3RvckFycmF5KSA9PSBzaXplb2YoQXJyYXk8VD4pLCBjYW5ub3RfY2FzdCk7CisgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxJbnNwZWN0b3JBcnJheSo+KHN0YXRpY19jYXN0PEluc3BlY3RvckFy
cmF5QmFzZSo+KHRoaXMpKTsKKyAgICB9CisKK3B1YmxpYzoKKyAgICB2b2lkIGFkZEl0ZW0oUGFz
c1JlZlB0cjxUPiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFycmF5SXRlbUhlbHBlcjxUPjo6VHJh
aXRzOjpwdXNoUmVmUHRyKHRoaXMtPm9wZW5BY2Nlc3NvcnMoKSwgdmFsdWUpOworICAgIH0KKwor
ICAgIHZvaWQgYWRkSXRlbShUIHZhbHVlKQorICAgIHsKKyAgICAgICAgQXJyYXlJdGVtSGVscGVy
PFQ+OjpUcmFpdHM6OnB1c2hSYXcodGhpcy0+b3BlbkFjY2Vzc29ycygpLCB2YWx1ZSk7CisgICAg
fQorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXJyYXk8VD4+IGNyZWF0ZSgpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFycmF5PFQ+KCkpOworICAgIH0KKworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEFycmF5PFQ+PiBydW50aW1lQ2FzdChQYXNzUmVmUHRyPEluc3BlY3RvclZh
bHVlPiB2YWx1ZSkKKyAgICB7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJyYXk7
CisgICAgICAgIGJvb2wgY2FzdFJlcyA9IHZhbHVlLT5hc0FycmF5KCZhcnJheSk7CisgICAgICAg
IEFTU0VSVF9VTlVTRUQoY2FzdFJlcywgY2FzdFJlcyk7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAor
ICAgICAgICBhc3NlcnRDb3JyZWN0VmFsdWUoYXJyYXkuZ2V0KCkpOworI2VuZGlmIC8vICFBU1NF
UlRfRElTQUJMRUQKKyAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEFycmF5PFQ+KSA9PSBz
aXplb2YoSW5zcGVjdG9yQXJyYXkpLCB0eXBlX2Nhc3RfcHJvYmxlbSk7CisgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxBcnJheTxUPio+KHN0YXRpY19jYXN0PEluc3BlY3RvckFycmF5QmFzZSo+
KGFycmF5LmdldCgpKSk7CisgICAgfQorCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIHN0YXRp
YyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCisgICAgewor
ICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFycmF5OworICAgICAgICBib29sIGNhc3RS
ZXMgPSB2YWx1ZS0+YXNBcnJheSgmYXJyYXkpOworICAgICAgICBBU1NFUlRfVU5VU0VEKGNhc3RS
ZXMsIGNhc3RSZXMpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJyYXktPmxl
bmd0aCgpOyBpKyspCisgICAgICAgICAgICBBcnJheUl0ZW1IZWxwZXI8VD46OlRyYWl0czo6dGVt
cGxhdGUgYXNzZXJ0Q29ycmVjdFZhbHVlPFQ+KGFycmF5LT5nZXQoaSkuZ2V0KCkpOworICAgIH0K
KyNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECit9OworCitzdHJ1Y3QgU3RydWN0SXRlbVRyYWl0
cyB7CisgICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0b3JBcnJheSogYXJyYXksIFBh
c3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQorICAgIHsKKyAgICAgICAgYXJyYXktPnB1
c2hWYWx1ZSh2YWx1ZSk7CisgICAgfQorCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CisgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3Bl
Y3RvclZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIFQ6OmFzc2VydENvcnJlY3RWYWx1ZSh2
YWx1ZSk7CisgICAgfQorI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKK307CisKK3RlbXBsYXRl
PD4KK3N0cnVjdCBBcnJheUl0ZW1IZWxwZXI8U3RyaW5nPiB7CisgICAgc3RydWN0IFRyYWl0cyB7
CisgICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSYXcoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBjb25z
dCBTdHJpbmcmIHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBhcnJheS0+cHVzaFN0cmlu
Zyh2YWx1ZSk7CisgICAgICAgIH0KKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KKyAgICAgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVl
KEluc3BlY3RvclZhbHVlKiB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgUnVudGltZUNh
c3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFsdWU6OlR5cGVTdHJpbmc+KHZhbHVlKTsK
KyAgICAgICAgfQorI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKKyAgICB9OworfTsKKwordGVt
cGxhdGU8Pgorc3RydWN0IEFycmF5SXRlbUhlbHBlcjxpbnQ+IHsKKyAgICBzdHJ1Y3QgVHJhaXRz
IHsKKyAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJhdyhJbnNwZWN0b3JBcnJheSogYXJyYXksIGlu
dCB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgYXJyYXktPnB1c2hJbnQodmFsdWUpOwor
ICAgICAgICB9CisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CisgICAgICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JW
YWx1ZSogdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjph
c3NlcnRJbnQodmFsdWUpOworICAgICAgICB9CisjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAor
ICAgIH07Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPGRvdWJsZT4g
eworICAgIHN0cnVjdCBUcmFpdHMgeworICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmF3KEluc3Bl
Y3RvckFycmF5KiBhcnJheSwgZG91YmxlIHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBh
cnJheS0+cHVzaE51bWJlcih2YWx1ZSk7CisgICAgICAgIH0KKworI2lmICFBU1NFUlRfRElTQUJM
RUQKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICAgICAgc3RhdGljIHZvaWQgYXNz
ZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkKKyAgICAgICAgeworICAgICAg
ICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFsdWU6OlR5cGVO
dW1iZXI+KHZhbHVlKTsKKyAgICAgICAgfQorI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKKyAg
ICB9OworfTsKKwordGVtcGxhdGU8Pgorc3RydWN0IEFycmF5SXRlbUhlbHBlcjxib29sPiB7Cisg
ICAgc3RydWN0IFRyYWl0cyB7CisgICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSYXcoSW5zcGVjdG9y
QXJyYXkqIGFycmF5LCBib29sIHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBhcnJheS0+
cHVzaEJvb2xlYW4odmFsdWUpOworICAgICAgICB9CisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgICAgIHN0YXRpYyB2b2lkIGFzc2VydENv
cnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAg
IFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3RvclZhbHVlOjpUeXBlQm9vbGVh
bj4odmFsdWUpOworICAgICAgICB9CisjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAorICAgIH07
Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPEluc3BlY3RvclZhbHVl
PiB7CisgICAgc3RydWN0IFRyYWl0cyB7CisgICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSZWZQdHIo
SW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSkK
KyAgICAgICAgeworICAgICAgICAgICAgYXJyYXktPnB1c2hWYWx1ZSh2YWx1ZSk7CisgICAgICAg
IH0KKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
KyAgICAgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2
YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydEFu
eSh2YWx1ZSk7CisgICAgICAgIH0KKyNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECisgICAgfTsK
K307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBBcnJheUl0ZW1IZWxwZXI8SW5zcGVjdG9yT2JqZWN0
PiB7CisgICAgc3RydWN0IFRyYWl0cyB7CisgICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSZWZQdHIo
SW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSkK
KyAgICAgICAgeworICAgICAgICAgICAgYXJyYXktPnB1c2hWYWx1ZSh2YWx1ZSk7CisgICAgICAg
IH0KKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
KyAgICAgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2
YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5
cGU8SW5zcGVjdG9yVmFsdWU6OlR5cGVPYmplY3Q+KHZhbHVlKTsKKyAgICAgICAgfQorI2VuZGlm
IC8vICFBU1NFUlRfRElTQUJMRUQKKyAgICB9OworfTsKKwordGVtcGxhdGU8Pgorc3RydWN0IEFy
cmF5SXRlbUhlbHBlcjxJbnNwZWN0b3JBcnJheT4geworICAgIHN0cnVjdCBUcmFpdHMgeworICAg
ICAgICBzdGF0aWMgdm9pZCBwdXNoUmVmUHRyKEluc3BlY3RvckFycmF5KiBhcnJheSwgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JBcnJheT4gdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGFycmF5
LT5wdXNoQXJyYXkodmFsdWUpOworICAgICAgICB9CisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgICAgIHN0YXRpYyB2b2lkIGFzc2VydENv
cnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAg
IFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3RvclZhbHVlOjpUeXBlQXJyYXk+
KHZhbHVlKTsKKyAgICAgICAgfQorI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKKyAgICB9Owor
fTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBBcnJheUl0ZW1IZWxwZXI8VHlwZUJ1
aWxkZXI6OkFycmF5PFQ+PiB7CisgICAgc3RydWN0IFRyYWl0cyB7CisgICAgICAgIHN0YXRpYyB2
b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpBcnJheTxUPj4gdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGFycmF5LT5wdXNo
VmFsdWUodmFsdWUpOworICAgICAgICB9CisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFM+CisgICAgICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RW
YWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIFM6OmFz
c2VydENvcnJlY3RWYWx1ZSh2YWx1ZSk7CisgICAgICAgIH0KKyNlbmRpZiAvLyAhQVNTRVJUX0RJ
U0FCTEVECisgICAgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFR5cGVCdWlsZGVyCisKK30gLy8g
bmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKKworI2Vu
ZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvclR5cGVCdWlsZGVyX2gpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcApzaW1pbGFyaXR5IGluZGV4IDk5
JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNw
cApyZW5hbWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1
ZXMuY3BwCmluZGV4IDhmY2UzMmQuLjI0MTlkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1
ZGUgPHd0Zi9kdG9hLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCi1u
YW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogbmFtZXNwYWNlIHsK
IApAQCAtODMzLDQgKzgzMyw0IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFzaWNWYWx1ZT4gSW5z
cGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKGRvdWJsZSB2YWx1ZSkKICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEluc3BlY3RvckJhc2ljVmFsdWUodmFsdWUpKTsKIH0KIAotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCnNpbWlsYXJpdHkgaW5kZXggOTUlCnJlbmFtZSBm
cm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaApyZW5hbWUgdG8g
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaAppbmRleCBj
YmI3ZjcxLi4wMTJhMWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yVmFsdWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JWYWx1ZXMuaApAQCAtMzgsMTIgKzM4LDEyIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogY2xhc3MgSW5zcGVjdG9yQXJyYXk7
CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiAKLWNsYXNzIEluc3BlY3RvclZhbHVlIDogcHVibGlj
IFJlZkNvdW50ZWQ8SW5zcGVjdG9yVmFsdWU+IHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIElu
c3BlY3RvclZhbHVlIDogcHVibGljIFJlZkNvdW50ZWQ8SW5zcGVjdG9yVmFsdWU+IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgY29uc3QgaW50IG1heERlcHRoID0gMTAwMDsKIApAQCAtOTAsNyArOTAs
NyBAQCBwcml2YXRlOgogICAgIFR5cGUgbV90eXBlOwogfTsKIAotY2xhc3MgSW5zcGVjdG9yQmFz
aWNWYWx1ZSA6IHB1YmxpYyBJbnNwZWN0b3JWYWx1ZSB7CitjbGFzcyBKU19FWFBPUlRfUFJJVkFU
RSBJbnNwZWN0b3JCYXNpY1ZhbHVlIDogcHVibGljIEluc3BlY3RvclZhbHVlIHsKIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvckJhc2ljVmFsdWU+IGNyZWF0ZShib29s
KTsKQEAgLTExNyw3ICsxMTcsNyBAQCBwcml2YXRlOgogICAgIH07CiB9OwogCi1jbGFzcyBJbnNw
ZWN0b3JTdHJpbmcgOiBwdWJsaWMgSW5zcGVjdG9yVmFsdWUgeworY2xhc3MgSlNfRVhQT1JUX1BS
SVZBVEUgSW5zcGVjdG9yU3RyaW5nIDogcHVibGljIEluc3BlY3RvclZhbHVlIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JTdHJpbmc+IGNyZWF0ZShjb25zdCBTdHJp
bmcmKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JTdHJpbmc+IGNyZWF0ZShjb25z
dCBjaGFyKik7CkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zdHJp
bmdWYWx1ZTsKIH07CiAKLWNsYXNzIEluc3BlY3Rvck9iamVjdEJhc2UgOiBwdWJsaWMgSW5zcGVj
dG9yVmFsdWUgeworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yT2JqZWN0QmFzZSA6
IHB1YmxpYyBJbnNwZWN0b3JWYWx1ZSB7CiBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxT
dHJpbmcsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4+IERpY3Rpb25hcnk7CiAKQEAgLTE5Miw3ICsx
OTIsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBJbnNwZWN0b3JPYmplY3QgOiBwdWJsaWMgSW5zcGVj
dG9yT2JqZWN0QmFzZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgSlNfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZSgpOwogCiAgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0
QmFzZTo6YXNPYmplY3Q7CiAKQEAgLTIyMCw3ICsyMjAsNyBAQCBwdWJsaWM6CiB9OwogCiAKLWNs
YXNzIEluc3BlY3RvckFycmF5QmFzZSA6IHB1YmxpYyBJbnNwZWN0b3JWYWx1ZSB7CitjbGFzcyBK
U19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JBcnJheUJhc2UgOiBwdWJsaWMgSW5zcGVjdG9yVmFs
dWUgewogcHVibGljOgogICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4+
OjppdGVyYXRvciBpdGVyYXRvcjsKICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8SW5zcGVjdG9y
VmFsdWU+Pjo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CkBAIC0yNjAsNyArMjYwLDcg
QEAgcHJpdmF0ZToKIAogY2xhc3MgSW5zcGVjdG9yQXJyYXkgOiBwdWJsaWMgSW5zcGVjdG9yQXJy
YXlCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4g
Y3JlYXRlKCk7CisgICAgc3RhdGljIEpTX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+IGNyZWF0ZSgpOwogCiAgICAgdXNpbmcgSW5zcGVjdG9yQXJyYXlCYXNlOjphc0Fy
cmF5OwogCkBAIC0zNjMsNiArMzYzLDYgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9yQXJyYXlCYXNl
OjpwdXNoQXJyYXkoUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gdmFsdWUpCiAgICAgbV9kYXRh
LmFwcGVuZCh2YWx1ZSk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNw
YWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yVmFsdWVzX2gpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CmluZGV4IGNhN2M0ODMuLjEwYTFmYjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CkBAIC0xNTc4LDkgKzE1NzgsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRNb2R1bGUuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcAotICAgIGluc3Bl
Y3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCi0gICAgaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKICAgICBp
bnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rv
ckNsaWVudC5jcHAKQEAgLTE2MTEsNyArMTYwOSw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAg
ICBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVj
dG9yU3R5bGVUZXh0RWRpdG9yLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFn
ZW50LmNwcAotICAgIGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCiAgICAgaW5zcGVjdG9y
L0luc3BlY3RvcldvcmtlckFnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdl
bnRzLmNwcAogICAgIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTMwNDks
MTIgKzMwNDYsMTIgQEAgYWRkX2N1c3RvbV9jb21tYW5kKAogCiAjIEFsbCBXZWIgSW5zcGVjdG9y
IGdlbmVyYXRlZCBmaWxlcyBhcmUgY3JlYXRlZCB3aXRoIHRoaXMgb25lIGNhbGwgdG8gQ29kZUdl
bmVyYXRvckluc3BlY3Rvci5wbQogYWRkX2N1c3RvbV9jb21tYW5kKAotICAgIE9VVFBVVCAke0RF
UklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmNw
cCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXJzLmggJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3RvckZyb250ZW5kLmNw
cCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yRnJvbnRlbmQuaCAke0RF
UklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yVHlwZUJ1aWxkZXIuY3BwICR7REVS
SVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3JUeXBlQnVpbGRlci5oCisgICAgT1VU
UFVUICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcnMuY3BwICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcnMuaCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yRnJv
bnRlbmQuY3BwICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3JGcm9udGVu
ZC5oICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3JXZWJUeXBlQnVpbGRl
cnMuY3BwICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3JXZWJUeXBlQnVp
bGRlcnMuaAogICAgIE1BSU5fREVQRU5ERU5DWSAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJ
Un0vSW5zcGVjdG9yLmpzb24KICAgICBERVBFTkRTICR7V0VCQ09SRV9ESVJ9L2luc3BlY3Rvci9D
b2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5ICR7V0VCQ09SRV9ESVJ9L2luc3BlY3Rvci9Db2RlR2Vu
ZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weQogICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJM
RX0gJHtXRUJDT1JFX0RJUn0vaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkgJHtE
RVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3Rvci5qc29uIC0tb3V0cHV0X2hfZGly
ICIke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0iIC0tb3V0cHV0X2NwcF9kaXIgIiR7REVS
SVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfSIgLS1vdXRwdXRfanNfZGlyICIke0RFUklWRURfU09V
UkNFU19XRUJDT1JFX0RJUn0iIC0td3JpdGVfYWx3YXlzCiAgICAgVkVSQkFUSU0pCi1saXN0KEFQ
UEVORCBXZWJDb3JlX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVycy5jcHAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9
L0luc3BlY3RvckZyb250ZW5kLmNwcCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5z
cGVjdG9yVHlwZUJ1aWxkZXIuY3BwKQorbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTICR7REVS
SVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuY3Bw
ICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3JGcm9udGVuZC5jcHAgJHtE
RVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3RvcldlYlR5cGVCdWlsZGVycy5jcHAp
CiAKIAogIyBHZW5lcmF0ZSBJbnNwZWN0b3JPdmVybGF5UGFnZS5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWRh
ZGFkNC4uMTY0ZWExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzMCBAQAorMjAxMy0xMi0wNSAg
Sm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IFB1c2ggTW9yZSBJbnNwZWN0b3IgUmVxdWlyZWQgQ2xhc3NlcyBEb3duIGludG8gSmF2
YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyNTMyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFBhcnQgNDogRXh0cmFjdCBJbnNwZWN0b3JUeXBlQnVpbGRlciBoZWxwZXIgZnVuY3Rpb25z
CisKKyAgICAgICAgICAtIFRoZXJlIGlzIGEgY2h1bmsgb2YgSW5zcGVjdG9yVHlwZUJ1aWxkZXIg
dGhhdCBuZXZlciBjaGFuZ2VzLiBFeHRyYWN0IGl0IGludG8KKyAgICAgICAgICAgIGl0cyBvd24g
ZmlsZSwgSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCBpbiBKU0MvaW5zcGVjdG9yLCBJbnNwZWN0b3Ig
bmFtZXNwYWNlLgorICAgICAgICAgIC0gVGhpcyBtb3ZlcyBUeXBlQnVpbGRlciBmcm9tIG5hbWVz
cGFjZSBXZWJDb3JlIHRvIG5hbWVzcGFjZSBJbnNwZWN0b3IKKyAgICAgICAgICAtIFJlbmFtZSB0
aGUgV2ViQ29yZSBnZW5lcmF0ZWQgSW5zcGVjdG9yVHlwZUJ1aWxkZXIgdG8gSW5zcGVjdG9yV2Vi
VHlwZUJ1aWxkZXJzLAorICAgICAgICAgICAgZXZlbnR1YWxseSB0aGUgQ29kZUdlbmVyYXRvciBz
Y3JpcHQgd2lsbCBkbyB0aGlzIGZvciBtb3JlIHRoZW4gVHlwZUJ1aWxkZXJzCisgICAgICAgICAg
ICBhbmQgdGhlcmUgd2lsbCBiZSAiSlMiIFR5cGVCdWlsZGVycyBhbmQgIldlYiIgVHlwZUJ1aWxk
ZXJzIGZpbGVzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRm9yd2Fy
ZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvclR5cGVCdWlsZGVyLmg6IEFkZGVkLgorICAg
ICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFBy
b2ZpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRJbnNwZWN0b3JPYmplY3RGb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvZmlsZTo6YnVpbGRJbnNwZWN0b3JPYmplY3RGb3JI
ZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2ZpbGU6OmJ1aWxkSW5zcGVjdG9yT2Jq
ZWN0Rm9yQm90dG9tVXBIZWFkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxl
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHk6CisgICAg
ICAgIChDb21tYW5kUmV0dXJuUGFzc01vZGVsLk9wdE91dHB1dC5nZXRfcmV0dXJuX3Zhcl90eXBl
KToKKyAgICAgICAgKENvbW1hbmRSZXR1cm5QYXNzTW9kZWwuT3B0T3V0cHV0LmdldF9vdXRwdXRf
cGFyYW1ldGVyX3R5cGUpOgorICAgICAgICAoVHlwZU1vZGVsLkV4YWN0bHlJbnQuZ2V0X2lucHV0
X3BhcmFtX3R5cGVfdGV4dCk6CisgICAgICAgIChUeXBlTW9kZWwuRXhhY3RseUludC5nZXRfb3B0
X291dHB1dF90eXBlXyk6CisgICAgICAgIChUeXBlQmluZGluZ3MuY3JlYXRlX25hbWVkX3R5cGVf
ZGVjbGFyYXRpb24uSGVscGVyKToKKyAgICAgICAgKFR5cGVCaW5kaW5ncy5jcmVhdGVfdHlwZV9k
ZWNsYXJhdGlvbl8uRW51bUJpbmRpbmcuZ2V0X3NldHRlcl92YWx1ZV9leHByZXNzaW9uX3BhdHRl
cm4pOgorICAgICAgICAoSW5zcGVjdG9yKToKKyAgICAgICAgKEFycmF5QmluZGluZy5nZXRfYXJy
YXlfaXRlbV9jX3R5cGVfdGV4dCk6CisgICAgICAgICogaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJ
bnNwZWN0b3JTdHJpbmdzLnB5OgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRfaCk6CisgICAg
ICAgIChJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnNfaCk6CisgICAgICAgICogaW5zcGVjdG9y
L0NvbnNvbGVNZXNzYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1lc3NhZ2VTb3VyY2VWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjptZXNzYWdlVHlwZVZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6Om1lc3NhZ2VMZXZlbFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGVNZXNzYWdl
OjphZGRUb0Zyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWFyY2hVdGlsczo6YnVpbGRPYmplY3RG
b3JTZWFyY2hNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VhcmNoVXRpbHM6OnNl
YXJjaEluVGV4dEJ5TGluZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9Db250ZW50U2VhcmNoVXRp
bHMuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
amVjdGVkU2NyaXB0OjpjYWxsRnVuY3Rpb25Pbik6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3Rl
ZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3Rl
ZFNjcmlwdDo6d3JhcE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6
d3JhcFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Ojp3cmFwTm9kZSk6
CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNj
cmlwdEJhc2U6Om1ha2VFdmFsQ2FsbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0QmFzZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVs
ZS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6Omluc3BlY3RJbXBsKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQWdl
bnQ6Omluc3BlY3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpnZXRGcmFtZXNX
aXRoTWFuaWZlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudDo6Z2V0QXBwbGljYXRpb25DYWNoZUZvckZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6YnVpbGRPYmplY3RGb3JBcHBsaWNhdGlv
bkNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dDo6YnVpbGRBcnJheUZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpidWlsZE9iamVjdEZvckFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvclByb2ZpbGU6OnRvSW5zcGVjdG9yT2Jq
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5
bGVzRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0SW5s
aW5lU3R5bGVzRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6
Z2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OmdldEFsbFN0eWxlU2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNT
U0FnZW50OjpnZXRTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0Fn
ZW50OjpzZXRTdHlsZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6
OnNldFByb3BlcnR5VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6
dG9nZ2xlUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnNl
dFJ1bGVTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YWRk
UnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3VwcG9ydGVk
Q1NTUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0
TmFtZWRGbG93Q29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2Vu
dDo6c3RvcFNlbGVjdG9yUHJvZmlsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OnN0b3BTZWxlY3RvclByb2ZpbGVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDU1NBZ2VudDo6YXNJbnNwZWN0b3JTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNTU0FnZW50Ojpjb2xsZWN0U3R5bGVTaGVldHMpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnZpYUluc3BlY3RvclN0eWxlU2hlZXQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmRldGVjdE9yaWdpbik6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JSdWxlKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yUnVsZUxpc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxp
c3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9y
QXR0cmlidXRlc1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50Ojpi
dWlsZEFycmF5Rm9yUmVnaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2Vu
dDo6YnVpbGRPYmplY3RGb3JOYW1lZEZsb3cpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5j
cHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRPTUFnZW50OjpnZXREb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01BZ2VudDo6cHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTUFnZW50OjpxdWVyeVNlbGVjdG9yQWxsKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldFNlYXJjaFJlc3VsdHMpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnJlc29sdmVOb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpnZXRBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvck5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmlidXRl
cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckNv
bnRhaW5lckNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojpi
dWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RE9NQWdlbnQ6OmRpZENvbW1pdExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OmRpZEluc2VydERPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OnN0eWxlQXR0cmlidXRlSW52YWxpZGF0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQ6OmRlc2NyaXB0aW9uRm9yRE9NRXZlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50OjpnZXRET01TdG9yYWdlSXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50OjpzdG9yYWdlSWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50OjpkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQ6OmdldERhdGFiYXNlVGFibGVOYW1lcyk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
YXRhYmFzZVJlc291cmNlOjpiaW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpicmVha3BvaW50QWN0aW9uVHlwZUZv
clN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRC
cmVha3BvaW50QnlVcmwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6c2V0QnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpyZXNvbHZlQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpzZWFyY2hJbkNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6c2V0U2NyaXB0U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmdldEZ1bmN0aW9uRGV0YWlscyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNvbXBpbGVTY3JpcHQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cnVuU2NyaXB0KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmN1cnJlbnRDYWxsRnJhbWVzKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhcnNlU291cmNlKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6Y3JlYXRlU25hcHNob3RIZWFkZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OmdldFByb2ZpbGVI
ZWFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckhlYXBQcm9maWxlckFnZW50Ojpn
ZXRPYmplY3RCeUhlYXBPYmplY3RJZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckhl
YXBQcm9maWxlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWRE
QkFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmxheWVyc0Zv
ck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmdhdGhl
ckxheWVyc1VzaW5nUmVuZGVyT2JqZWN0SGllcmFyY2h5KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckxheWVyVHJlZUFnZW50OjpnYXRoZXJMYXllcnNVc2luZ1JlbmRlckxheWVySGllcmFy
Y2h5KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50OjpidWlsZE9i
amVjdEZvckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50
OjpidWlsZE9iamVjdEZvckludFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQ6OnJlYXNvbnNGb3JDb21wb3NpdGluZ0xheWVyKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yTWVtb3J5QWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJj
ZVR5cGVKc29uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVk
UmVzb3VyY2VUeXBlSnNvbik6CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvckNvb2tp
ZSk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZEFycmF5Rm9yQ29va2llcyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpnZXRSZXNvdXJjZVRyZWUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OmJ1aWxkT2JqZWN0Rm9yU2VhcmNoUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5SZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yUGFnZUFnZW50OjpidWlsZE9iamVjdEZvckZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclBhZ2VBZ2VudDo6YnVpbGRPYmplY3RGb3JGcmFtZVRyZWUpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yUHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9m
aWxlckFnZW50OjpjcmVhdGVQcm9maWxlSGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclByb2ZpbGVyQWdlbnQ6OmNyZWF0ZVNuYXBzaG90SGVhZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldFByb2ZpbGVIZWFkZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldENQVVByb2ZpbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0T2JqZWN0QnlIZWFwT2JqZWN0
SWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YnVpbGRPYmplY3RGb3JUaW1pbmcpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmpl
Y3RGb3JSZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JS
ZXNvdXJjZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9yQ2FjaGVk
UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2ls
bFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6
OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6YnVpbGRJbml0aWF0b3JPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbFNlbmRXZWJTb2NrZXRIYW5k
c2hha2VSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6
OmRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlV2ViU29ja2V0RnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkU2VuZFdlYlNvY2tldEZy
YW1lKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YnVpbGRFcnJvclJhbmdlT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clJ1bnRpbWVBZ2VudDo6cGFyc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUnVudGlt
ZUFnZW50OjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSdW50aW1lQWdl
bnQ6OmNhbGxGdW5jdGlvbk9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJ1bnRpbWVB
Z2VudDo6Z2V0UHJvcGVydGllcyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRp
bWVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkU291cmNlUmFuZ2VPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6YnVpbGRNZWRpYU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpmaWxsTWVkaWFMaXN0
Q2hhaW4pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGU6OmJ1aWxkT2JqZWN0Rm9y
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGU6OmJ1aWxkQXJyYXlGb3JD
b21wdXRlZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlOjpzdHlsZVdp
dGhQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpJbnNwZWN0b3JT
dHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxk
T2JqZWN0Rm9yU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNo
ZWV0OjpidWlsZE9iamVjdEZvclN0eWxlU2hlZXRJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
bGVjdG9yc0Zyb21Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVl
dDo6YnVpbGRPYmplY3RGb3JTZWxlY3Rvckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6cmVzb3VyY2VTdHlsZVNoZWV0VGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZEFycmF5Rm9yUnVsZUxpc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxl
OjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JTdHlsZVNoZWV0Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHls
ZVNoZWV0OjpjYW5CaW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Byb3RvY29sKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmlubmVyQWRkUmVjb3JkVG9UaW1lbGluZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzZXRET01Db3VudGVycyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzZW5kRXZlbnQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9TY3Jp
cHRDYWxsRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FsbEZyYW1lOjpidWls
ZEluc3BlY3Rvck9iamVjdCk6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5o
OgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0Q2FsbFN0YWNrOjpidWlsZEluc3BlY3RvckFycmF5KToKKyAgICAgICAgKiBp
bnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg6CisKKzIwMTMtMTItMDUgIEpvc2VwaCBQZWNvcmFy
byAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1v
cmUgSW5zcGVjdG9yIFJlcXVpcmVkIENsYXNzZXMgRG93biBpbnRvIEphdmFTY3JpcHRDb3JlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXJ0IDM6IFB1
c2ggRG93biBTY3JpcHRGdW5jdGlvbkNhbGwKKworICAgICAgICAgIC0gTW92ZSBTY3JpcHRGdW5j
dGlvbkNhbGwgdG8gSmF2YVNjcmlwdENvcmUvYmluZGluZ3MgaW50byBuYW1lc3BhY2UgRGVwcmVj
YXRlZC4KKyAgICAgICAgICAtIEdpdmUgY29uc3RydWN0b3IgYSBmdW5jdGlvbiB0byBhbGwgZm9y
IGEgZGlmZmVyZW50IEpTQzo6Y2FsbCwgYmVjYXVzZQorICAgICAgICAgICAgV2ViQ29yZSBTY3Jp
cHRGdW5jdGlvbkNhbGwncyB1c2UgSlNNYWluVGhyZWFkRXhlY1N0YXRlIHdoZW4gaXNNYWluVGhy
ZWFkLgorICAgICAgICAgIC0gUHJlZmVyIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBl
dmVyeXdoZXJlIGl0IGlzIHVzZWQgaW4gV2ViQ29yZS4KKworICAgICAgICAqIEZvcndhcmRpbmdI
ZWFkZXJzL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oOiBBZGRlZC4KKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFVzZUpTQy5jbWFrZToKKyAgICAgICAgKiBX
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25l
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6SlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjdXJyZW50U3RhdGUpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNj
cmlwdDo6ZXZhbHVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmNhbGxG
dW5jdGlvbk9uKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9u
Q2FsbEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpnZXRGdW5jdGlv
bkRldGFpbHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmdldFByb3BlcnRp
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmdldEludGVybmFsUHJvcGVy
dGllcyk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6bm9kZUZvck9iamVjdElk
KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpyZWxlYXNlT2JqZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Ojp3cmFwQ2FsbEZyYW1lcyk6CisgICAgICAg
IChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6d3JhcE9iamVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbmplY3RlZFNjcmlwdDo6d3JhcFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVk
U2NyaXB0OjpmaW5kT2JqZWN0QnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlw
dDo6aW5zcGVjdE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OnJlbGVh
c2VPYmplY3RHcm91cCk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEJhc2U6OmNhbGxGdW5jdGlvbldp
dGhFdmFsRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEJhc2U6Om1h
a2VDYWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUV2YWxD
YWxsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjpjYWxsV3JhcENvbnRleHRGdW5jdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6bWFya0Zy
YW1lRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjpj
YWxsU3RhcnRDYXB0dXJpbmdGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNj
cmlwdENhbnZhc01vZHVsZTo6Y2FsbFZvaWRGdW5jdGlvbldpdGhUcmFjZUxvZ0lkQXJndW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OnRyYWNlTG9n
KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjpyZXBsYXlU
cmFjZUxvZyk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6
cmVzb3VyY2VJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Q2FudmFzTW9k
dWxlOjpyZXNvdXJjZVN0YXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRN
b2R1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRNb2R1bGU6OmVuc3Vy
ZUluamVjdGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyb250ZW5kTWVudVByb3ZpZGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcm9udGVuZE1lbnVQcm92aWRlcjo6Y29udGV4dE1lbnVDbGVhcmVkKToK
KworMjAxMy0xMi0wNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggTW9yZSBJbnNwZWN0b3IgUmVxdWlyZWQgQ2xhc3Nl
cyBEb3duIGludG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNTMyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFBhcnQgMjogUHVzaCBTY3JpcHQgd3JhcHBlciBjbGFzc2VzIGRv
d24gaW50byBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy4KKworICAgICAgICAgIC0gTW92ZSBTY3Jp
cHRPYmplY3QgYW5kIFNjcmlwdFZhbHVlIGludG8gSmF2YVNjcmlwdENvcmUgYnV0IG5hbWVzcGFj
ZSBEZXByZWNhdGVkCisgICAgICAgICAgLSBBZGQgZm9yd2FyZGluZyBoZWFkZXJzCisgICAgICAg
ICAgLSBVc2UgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IGFuZCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSBldmVyeXdoZXJlLgorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvYmluZGluZ3Mv
U2NyaXB0T2JqZWN0Lmg6IEFkZGVkLgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2JpbmRp
bmdzL1NjcmlwdFZhbHVlLmg6IEFkZGVkLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmNwcDoKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJBbnkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJD
dXJzb3IuY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJJbmRleC5jcHA6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJLZXlSYW5nZS5jcHA6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2Uu
aDoKKyAgICAgICAgKFdlYkNvcmU6OklEQktleVJhbmdlOjpsb3dlckJvdW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQktleVJhbmdlOjp1cHBlckJvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QktleVJhbmdlOjpib3VuZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OnB1dCk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJSZXF1ZXN0Lmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5
UmFuZ2UuY3BwOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdl
Lmg6CisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50
LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1l
bnQuaDoKKyAgICAgICAgKiBVc2VKU0MuY21ha2U6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46
CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBX
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0RpY3Rp
b25hcnkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6OmdldEV2ZW50TGlzdGVuZXIp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZGVzZXJpYWxpemVJREJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpkZXNl
cmlhbGl6ZUlEQlZhbHVlQnVmZmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9JREJCaW5kaW5n
VXRpbGl0aWVzLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJ
bmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxl
ZEFjdGlvbi5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9y
eS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRE
ZWJ1Z1NlcnZlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5j
cHA6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmg6CisgICAgICAg
ICogYmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHAuCisgICAgICAgICogYmluZGlu
Z3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuY3BwLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0R2xv
YmFsT2JqZWN0OjpTY3JpcHRHbG9iYWxPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nj
cmlwdFByb2ZpbGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5o
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmg6CisgICAgICAgICogYmluZGlu
Z3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6c2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBkb20vQ3VzdG9tRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3VzdG9tRXZlbnQ6OmluaXRDdXN0b21FdmVudCk6CisgICAgICAgICogZG9tL0N1c3RvbUV2ZW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FdmVudDo6ZGV0YWlsKToKKyAgICAgICAgKiBk
b20vTWVzc2FnZUV2ZW50LmNwcDoKKyAgICAgICAgKiBkb20vTWVzc2FnZUV2ZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZXNzYWdlRXZlbnQ6OmRhdGFBc1NjcmlwdFZhbHVlKToKKyAgICAgICAgKiBkb20vUG9wU3RhdGVF
dmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UG9wU3RhdGVFdmVudDo6c3RhdGUpOgorICAgICAg
ICAqIGRvbS9TY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHA6CisgICAgICAg
ICogaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0Q2FudmFzTW9kdWxlLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRDYW52YXNNb2R1bGUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHA6CisgICAgICAgICogaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdE1vZHVsZS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNw
cDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JDYW52YXNJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d3JhcENhbnZhczJEUmVuZGVyaW5nQ29udGV4dEZvcklu
c3RydW1lbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndyYXBXZWJHTFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24pOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVy
QWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9QYWdlQ29uc29s
ZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNwcDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmg6CisgICAgICAgICogaW5zcGVjdG9y
L1NjcmlwdERlYnVnTGlzdGVuZXIuaDoKKyAgICAgICAgKiBwYWdlL0NvbnNvbGUuY3BwOgorICAg
ICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZUNvbnNvbGUuY3BwOgor
ICAgICAgICAqIHBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuY3BwOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogd29y
a2Vycy9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwOgor
ICAgICAgICAqIHhtbC9YTUxUcmVlVmlld2VyLmNwcDoKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyTGlieG1sMi5jcHA6CisKKzIwMTMtMTItMDUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJv
QGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVjdG9y
IFJlcXVpcmVkIENsYXNzZXMgRG93biBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXJ0IDE6IFB1c2ggZG93biBjb3Jl
IGluc3BlY3RvciBjbGFzc2VzLgorCisgICAgICAgICAgLSBNb3ZlIEluc3BlY3RBZ2VudEJhc2Us
IEluc3BlY3RvckFnZW50UmVnaXN0cnksIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLCBJbnNw
ZWN0b3JWYWx1ZXMKKyAgICAgICAgICAgIGRvd24gdG8gSmF2YVNjcmlwdENvcmUgYW5kIGludG8g
dGhlIEluc3BlY3RvciBuYW1lc3BhY2UuCisgICAgICAgICAgLSBBZGQgZm9yd2FyZGluZyBoZWFk
ZXJzIGZvciBKYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IgZmlsZXMuCisgICAgICAgICAgLSBVc2Ug
dGhlIEluc3BlY3RvciBuYW1lc3BhY2Ugd2hlcmUgYXBwcm9wcmlhdGUuCisgICAgICAgICAgLSBS
ZW5hbWUgSW5zcGVjdG9yQmFzZUFnZW50IHRvIEluc3BlY3RvckFnZW50QmFzZSBmb3IgY2xhcml0
eS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEZvcndhcmRpbmdIZWFk
ZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaDogQWRkZWQuCisgICAgICAgICogRm9y
d2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaDogQWRkZWQu
CisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmg6IEFkZGVkLgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rv
ci9JbnNwZWN0b3JWYWx1ZXMuaDogQWRkZWQuCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5h
bToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2ouZmlsdGVyczoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUuY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL1NjcmlwdFByb2ZpbGUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRWYWx1
ZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBo
dG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRp
dG9yRGVsZWdhdGUuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVj
dG9yLnB5OgorICAgICAgICAoUmF3VHlwZXMuQmFzZVR5cGUuZ2V0X3Jhd192YWxpZGF0b3JfY2Fs
bF90ZXh0KToKKyAgICAgICAgKFJhd1R5cGVzLk9iamVjdC5nZXRfYXJyYXlfaXRlbV9yYXdfY190
eXBlX3RleHQpOgorICAgICAgICAoUmF3VHlwZXMuQW55LmdldF9hcnJheV9pdGVtX3Jhd19jX3R5
cGVfdGV4dCk6CisgICAgICAgIChSYXdUeXBlcy5BcnJheS5nZXRfYXJyYXlfaXRlbV9yYXdfY190
eXBlX3RleHQpOgorICAgICAgICAoVHlwZU1vZGVsLmluaXRfY2xhc3MpOgorICAgICAgICAoVHlw
ZUJpbmRpbmdzLmNyZWF0ZV90eXBlX2RlY2xhcmF0aW9uXy5FbnVtQmluZGluZy5nZXRfY29kZV9n
ZW5lcmF0b3IuQ29kZUdlbmVyYXRvci5nZW5lcmF0ZV90eXBlX2J1aWxkZXIpOgorICAgICAgICAo
VHlwZUJpbmRpbmdzLmNyZWF0ZV90eXBlX2RlY2xhcmF0aW9uXy5DbGFzc0JpbmRpbmcuZ2V0X2Nv
ZGVfZ2VuZXJhdG9yLkNvZGVHZW5lcmF0b3IuZ2VuZXJhdGVfdHlwZV9idWlsZGVyKToKKyAgICAg
ICAgKEdlbmVyYXRvci5nbyk6CisgICAgICAgIChHZW5lcmF0b3IucHJvY2Vzc19jb21tYW5kKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3RvclN0cmluZ3MucHk6Cisg
ICAgICAgICh2b2lkKToKKyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kX2gpOgorICAgICAgICAo
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzX2gpOgorICAgICAgICAoQXJyYXkpOgorICAgICAg
ICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0Nv
bnNvbGVNZXNzYWdlLmg6CisgICAgICAgICogaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5j
cHA6CisgICAgICAgICogaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5oOgorICAgICAgICAq
IGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0QmFzZS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFz
ZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5jcHA6
CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHA6CisgICAgICAgICog
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oOgorICAgICAgICAqIGluc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1hbmFnZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3Bw
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JBZ2VudDo6SW5zcGVjdG9yQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckFnZW50QmFzZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckFnZW50UmVnaXN0cnkuaC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50QmFz
ZTo6SW5zcGVjdG9yQWdlbnRCYXNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWxs
SW5PbmUuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50OjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFzZUFnZW50Lmg6IFJlbW92ZWQuCisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNTU0FnZW50OjpJbnNwZWN0b3JDU1NBZ2VudCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q2FudmFzQWdlbnQ6Okluc3BlY3RvckNhbnZhc0FnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNhbnZhc0FnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDbGll
bnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6SW5zcGVjdG9yQ29uc29sZUFn
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6ZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29s
ZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01BZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50OjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6SW5zcGVjdG9y
RGF0YWJhc2VBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50
OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JEYXRhYmFzZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFi
YXNlUmVzb3VyY2UuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JG
b3J3YXJkaW5nLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWwuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3Bw
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6SW5zcGVjdG9ySGVh
cFByb2ZpbGVyQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySGVhcFByb2ZpbGVy
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckluZGV4
ZWREQkFnZW50OjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbmRleGVkREJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9ySW5wdXRBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnB1dEFnZW50OjpJbnNwZWN0b3JJbnB1dEFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvcklucHV0QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvcklucHV0QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQ6Okluc3BlY3RvckxheWVyVHJlZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckxheWVyVHJlZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JNZW1vcnlBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUFnZW50OjpJbnNwZWN0b3JNZW1vcnlBZ2VudCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JPdmVybGF5Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6Okluc3BlY3RvclBhZ2VB
Z2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2Vu
dC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6Okluc3BlY3RvclByb2ZpbGVy
QWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6ZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpJ
bnNwZWN0b3JSdW50aW1lQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNTU0lkOjpJbnNwZWN0b3JDU1NJZCk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvclN0eWxlVGV4dEVkaXRvci5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpUaW1lbGluZVJlY29yZEVudHJ5OjpUaW1lbGlu
ZVJlY29yZEVudHJ5KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yV29ya2VyQWdlbnQ6Okluc3BlY3Rvcldv
cmtlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvcldvcmtlckFnZW50OjpkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JX
b3JrZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmNw
cDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAgICAg
ICAqIGluc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
UGFnZURlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9QYWdlRGVidWdnZXJB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZCk6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0
Q2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHA6CisgICAgICAgICogaW5zcGVj
dG9yL1NjcmlwdENhbGxTdGFjay5oOgorICAgICAgICAqIGluc3BlY3Rvci9UaW1lbGluZVJlY29y
ZEZhY3RvcnkuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3Rvcnku
aDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlV2ViU29j
a2V0Q3JlYXRlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVJlY29yZEZhY3Rvcnk6
OmNyZWF0ZUdlbmVyaWNXZWJTb2NrZXREYXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2Vy
Q29uc29sZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2Vu
dC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAg
ICAgICogaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAqIHBhZ2UvQ29u
dGVudFNlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6
CisKIDIwMTMtMTItMTAgIFJvYiBCdWlzICA8cm9iLmJ1aXNAc2Ftc3VuZy5jb20+CiAKICAgICAg
ICAgQ2xlYW4gdXAgU1ZHU2NyaXB0RWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NWQyYTA1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvYmluZGluZ3MvU2NyaXB0RnVu
Y3Rpb25DYWxsLmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX1NjcmlwdEZ1
bmN0aW9uQ2FsbF9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1NjcmlwdEZ1bmN0aW9uQ2FsbF9oCisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0RnVuY3Rpb25DYWxsLmg+CisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2JpbmRpbmdzL1Njcmlw
dE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvYmluZGluZ3MvU2Ny
aXB0T2JqZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM2YjgyNwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2JpbmRp
bmdzL1NjcmlwdE9iamVjdC5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9T
Y3JpcHRPYmplY3RfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9TY3JpcHRPYmplY3RfaAorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdE9iamVjdC5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5oIGIv
U291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvYmluZGluZ3MvU2NyaXB0VmFsdWUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzhhZjUwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvYmluZGluZ3MvU2NyaXB0VmFs
dWUuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfU2NyaXB0VmFsdWVfaAor
I2RlZmluZSBXZWJDb3JlX0ZXRF9TY3JpcHRWYWx1ZV9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvU2NyaXB0VmFsdWUuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxYTM1ZmMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9y
QWdlbnRCYXNlLmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0luc3BlY3Rv
ckFnZW50QmFzZV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX0luc3BlY3RvckFnZW50QmFzZV9oCisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQWdlbnRCYXNlLmg+CisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNw
ZWN0b3JBZ2VudFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9p
bnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmY5ZGI5NWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9G
b3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oCkBAIC0w
LDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5X2gK
KyNkZWZpbmUgV2ViQ29yZV9GV0RfSW5zcGVjdG9yQWdlbnRSZWdpc3RyeV9oCisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oPgorI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2lu
c3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjllNWU4N2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
aApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXJfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cl9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
aD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMv
aW5zcGVjdG9yL0luc3BlY3RvclR5cGVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjllMTEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvclR5cGVCdWlsZGVy
LmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0luc3BlY3RvclR5cGVCdWls
ZGVyX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfSW5zcGVjdG9yVHlwZUJ1aWxkZXJfaAorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclR5cGVCdWlsZGVyLmg+CisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0
b3JWYWx1ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9J
bnNwZWN0b3JWYWx1ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDk4
NWY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMv
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJD
b3JlX0ZXRF9JbnNwZWN0b3JWYWx1ZXNfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9JbnNwZWN0b3JW
YWx1ZXNfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVlcy5oPgorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDIxYTA4ZmMuLjYwN2RiZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCkBAIC0zNjIsOCArMzYyLDggQEAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNw
ZWN0b3IuanNvbjogJChXZWJDb3JlKS9pbnNwZWN0b3IvU2NyaXB0cy9nZW5lcmF0ZS1jb20KICMg
QWxsIFdlYiBJbnNwZWN0b3IgZ2VuZXJhdGVkIGZpbGVzIGFyZSBjcmVhdGVkIHdpdGggdGhpcyBv
bmUgY2FsbCB0byBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5CiBEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5jcHA6IERlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSW5zcGVjdG9yLmpzb24gJChXZWJDb3JlKS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3Bl
Y3Rvci5weSAkKFdlYkNvcmUpL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5n
cy5weQogCSQoQU1fVl9HRU4pJChQWVRIT04pICQoV2ViQ29yZSkvaW5zcGVjdG9yL0NvZGVHZW5l
cmF0b3JJbnNwZWN0b3IucHkgJDwgLS1vdXRwdXRfaF9kaXIgJChHRU5TT1VSQ0VTX1dFQkNPUkUp
IC0tb3V0cHV0X2NwcF9kaXIgJChHRU5TT1VSQ0VTX1dFQkNPUkUpIC0tb3V0cHV0X2pzX2RpciAk
KEdFTlNPVVJDRVNfV0VCQ09SRSkKLURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yVHlw
ZUJ1aWxkZXIuaDogRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JUeXBlQnVpbGRlci5j
cHAKLURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yVHlwZUJ1aWxkZXIuY3BwOiBEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3RvckZyb250ZW5kLmgKK0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmg6IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmNwcAorRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNw
ZWN0b3JXZWJUeXBlQnVpbGRlcnMuY3BwOiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3Rv
ckZyb250ZW5kLmgKIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmQuaDog
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZC5jcHAKIERlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmQuY3BwOiBEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcwogRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNw
ZWN0b3JCYWNrZW5kQ29tbWFuZHMuanM6IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXJzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGM5
YTJkZmEuLmU5NDUyYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjYsOCAr
MjYsOCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSW5zcGVjdG9yRnJvbnRlbmQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3Bl
Y3RvckZyb250ZW5kLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yT3Zlcmxh
eVBhZ2UuaCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JUeXBlQnVpbGRlci5j
cHAgXAotCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCBcCisJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuY3BwIFwKKwlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTQWJzdHJhY3RXb3JrZXIuY3BwIFwKIAlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTQWJzdHJhY3RXb3JrZXIuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmNwcCBcCkBAIC0yNDQ5LDExICsyNDQ5LDkgQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaCBcCi0J
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBcCi0JU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmggXAogCVNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEhlYXBTbmFwc2hvdC5oIFwKLQlTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRPYmplY3QuaCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
R2xvYmFsT2JqZWN0LmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0R2xv
YmFsT2JqZWN0LmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmggXAogCVNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVOb2RlLmggXApAQCAtMjQ2Miw4
ICsyNDYwLDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRTb3VyY2VDb2RlLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdFN0YXRlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUu
aCBcCi0JU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwIFwKLQlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIFwKQEAgLTM3ODQsMTMgKzM3ODAsOCBAQCB3ZWJj
b3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1vZHVsZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaCBcCi0JU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwIFwKLQlTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oIFwK
LQlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3Bw
IFwKLQlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
aCBcCi0JU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhc2VBZ2VudC5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCBcCiAJU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0luc3RydW1lbnRhdGlvbi5oIFwKQEAgLTM4
NTYsOCArMzg0Nyw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclN0eWxlVGV4dEVkaXRvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmggXAotCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JWYWx1ZXMuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yVmFsdWVzLmggXAorCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXZWJBZ2Vu
dEJhc2UuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50Lmgg
XAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJSZXNvdXJjZS5oIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuY3BwCmluZGV4IGNiMWU2
M2UuLjgyN2E0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkFueS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55
LmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IElEQkFu
eTo6aWRiVHJhbnNhY3Rpb24oKQogICAgIHJldHVybiBtX2lkYlRyYW5zYWN0aW9uOwogfQogCi1j
b25zdCBTY3JpcHRWYWx1ZSYgSURCQW55OjpzY3JpcHRWYWx1ZSgpCitjb25zdCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYgSURCQW55OjpzY3JpcHRWYWx1ZSgpCiB7CiAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBTY3JpcHRWYWx1ZVR5cGUpOwogICAgIHJldHVybiBtX3NjcmlwdFZhbHVlOwpAQCAtMTg2
LDcgKzE4Niw3IEBAIElEQkFueTo6SURCQW55KFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IHZh
bHVlKQogewogfQogCi1JREJBbnk6OklEQkFueShjb25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUpCitJ
REJBbnk6OklEQkFueShjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUpCiAgICAg
OiBtX3R5cGUoU2NyaXB0VmFsdWVUeXBlKQogICAgICwgbV9zY3JpcHRWYWx1ZSh2YWx1ZSkKICAg
ICAsIG1faW50ZWdlcigwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQW55LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnku
aAppbmRleCA2ZGU0NWNmLi5kNzI4NDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJBbnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJBbnkuaApAQCAtMjksOCArMjksOCBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQogCiAjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0
VmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtMTAxLDcgKzEwMSw3IEBAIHB1
YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQkluZGV4PiBpZGJJbmRleCgpOwogICAgIFBhc3NSZWZQ
dHI8SURCT2JqZWN0U3RvcmU+IGlkYk9iamVjdFN0b3JlKCk7CiAgICAgUGFzc1JlZlB0cjxJREJU
cmFuc2FjdGlvbj4gaWRiVHJhbnNhY3Rpb24oKTsKLSAgICBjb25zdCBTY3JpcHRWYWx1ZSYgc2Ny
aXB0VmFsdWUoKTsKKyAgICBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgc2NyaXB0VmFs
dWUoKTsKICAgICBpbnQ2NF90IGludGVnZXIoKTsKICAgICBjb25zdCBTdHJpbmcmIHN0cmluZygp
OwogICAgIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgoKSB7IHJldHVybiBtX2lkYktleVBhdGg7
IH07CkBAIC0xMTgsNyArMTE4LDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBJREJBbnkoUGFz
c1JlZlB0cjxJREJUcmFuc2FjdGlvbj4pOwogICAgIGV4cGxpY2l0IElEQkFueShjb25zdCBJREJL
ZXlQYXRoJik7CiAgICAgZXhwbGljaXQgSURCQW55KGNvbnN0IFN0cmluZyYpOwotICAgIGV4cGxp
Y2l0IElEQkFueShjb25zdCBTY3JpcHRWYWx1ZSYpOworICAgIGV4cGxpY2l0IElEQkFueShjb25z
dCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYpOwogICAgIGV4cGxpY2l0IElEQkFueShpbnQ2NF90
KTsKIAogICAgIGNvbnN0IFR5cGUgbV90eXBlOwpAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6
CiAgICAgY29uc3QgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBtX2lkYk9iamVjdFN0b3JlOwogICAg
IGNvbnN0IFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gbV9pZGJUcmFuc2FjdGlvbjsKICAgICBjb25z
dCBJREJLZXlQYXRoIG1faWRiS2V5UGF0aDsKLSAgICBjb25zdCBTY3JpcHRWYWx1ZSBtX3Njcmlw
dFZhbHVlOworICAgIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG1fc2NyaXB0VmFsdWU7
CiAgICAgY29uc3QgU3RyaW5nIG1fc3RyaW5nOwogICAgIGNvbnN0IGludDY0X3QgbV9pbnRlZ2Vy
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1
cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3Bw
CmluZGV4IGVmMDY1NDQuLmI5OWQ4M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQ3Vyc29yLmNwcApAQCAtOTgsMTkgKzk4LDE5IEBAIGNvbnN0IFN0cmluZyYg
SURCQ3Vyc29yOjpkaXJlY3Rpb24oKSBjb25zdAogICAgIHJldHVybiBkaXJlY3Rpb25Ub1N0cmlu
ZyhtX2RpcmVjdGlvbik7CiB9CiAKLWNvbnN0IFNjcmlwdFZhbHVlJiBJREJDdXJzb3I6OmtleSgp
IGNvbnN0Citjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgSURCQ3Vyc29yOjprZXkoKSBj
b25zdAogewogICAgIExPRyhTdG9yYWdlQVBJLCAiSURCQ3Vyc29yOjprZXkiKTsKICAgICByZXR1
cm4gbV9jdXJyZW50S2V5VmFsdWU7CiB9CiAKLWNvbnN0IFNjcmlwdFZhbHVlJiBJREJDdXJzb3I6
OnByaW1hcnlLZXkoKSBjb25zdAorY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIElEQkN1
cnNvcjo6cHJpbWFyeUtleSgpIGNvbnN0CiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJDdXJz
b3I6OnByaW1hcnlLZXkiKTsKICAgICByZXR1cm4gbV9jdXJyZW50UHJpbWFyeUtleVZhbHVlOwog
fQogCi1jb25zdCBTY3JpcHRWYWx1ZSYgSURCQ3Vyc29yOjp2YWx1ZSgpIGNvbnN0Citjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgSURCQ3Vyc29yOjp2YWx1ZSgpIGNvbnN0CiB7CiAgICAg
TE9HKFN0b3JhZ2VBUEksICJJREJDdXJzb3I6OnZhbHVlIik7CiAgICAgcmV0dXJuIG1fY3VycmVu
dFZhbHVlOwpAQCAtMTIxLDcgKzEyMSw3IEBAIElEQkFueSogSURCQ3Vyc29yOjpzb3VyY2UoKSBj
b25zdAogICAgIHJldHVybiBtX3NvdXJjZS5nZXQoKTsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBJREJDdXJzb3I6OnVwZGF0ZShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFNjcmlwdFZhbHVl
JiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkN1
cnNvcjo6dXBkYXRlKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgIklE
QkN1cnNvcjo6dXBkYXRlIik7CiAKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIElEQkN1cnNvcjo6
YWR2YW5jZSh1bnNpZ25lZCBsb25nIGNvdW50LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBBU1NF
UlQoIWVjKTsKIH0KIAotdm9pZCBJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGtleVZhbHVlLCBFeGNl
cHRpb25Db2RlJiBlYykKK3ZvaWQgSURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBr
ZXlWYWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgRE9NUmVxdWVzdFN0YXRlIHJlcXVl
c3RTdGF0ZShjb250ZXh0KTsKICAgICBSZWZQdHI8SURCS2V5PiBrZXkgPSBzY3JpcHRWYWx1ZVRv
SURCS2V5KCZyZXF1ZXN0U3RhdGUsIGtleVZhbHVlKTsKQEAgLTI2Myw3ICsyNjMsNyBAQCB2b2lk
IElEQkN1cnNvcjo6Y2xvc2UoKQogICAgIH0KIH0KIAotdm9pZCBJREJDdXJzb3I6OnNldFZhbHVl
UmVhZHkoRE9NUmVxdWVzdFN0YXRlKiBzdGF0ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFz
c1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIFNjcmlwdFZhbHVlJiB2YWx1ZSkKK3ZvaWQgSURC
Q3Vyc29yOjpzZXRWYWx1ZVJlYWR5KERPTVJlcXVlc3RTdGF0ZSogc3RhdGUsIFBhc3NSZWZQdHI8
SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSYgdmFsdWUpCiB7CiAgICAgbV9jdXJyZW50S2V5ID0ga2V5OwogICAgIG1fY3Vy
cmVudEtleVZhbHVlID0gaWRiS2V5VG9TY3JpcHRWYWx1ZShzdGF0ZSwgbV9jdXJyZW50S2V5KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKaW5kZXggYzZh
NzQ0Zi4uMDRlYjM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
Q3Vyc29yLmgKQEAgLTMxLDggKzMxLDggQEAKICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRl
ICJJREJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIkluZGV4ZWREQi5oIgotI2luY2x1ZGUgIlNj
cmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCisjaW5jbHVkZSA8Ymlu
ZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNjMsMjIg
KzYzLDIyIEBAIHB1YmxpYzoKIAogICAgIC8vIEltcGxlbWVudCB0aGUgSURMCiAgICAgY29uc3Qg
U3RyaW5nJiBkaXJlY3Rpb24oKSBjb25zdDsKLSAgICBjb25zdCBTY3JpcHRWYWx1ZSYga2V5KCkg
Y29uc3Q7Ci0gICAgY29uc3QgU2NyaXB0VmFsdWUmIHByaW1hcnlLZXkoKSBjb25zdDsKLSAgICBj
b25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUoKSBjb25zdDsKKyAgICBjb25zdCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSYga2V5KCkgY29uc3Q7CisgICAgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUmIHByaW1hcnlLZXkoKSBjb25zdDsKKyAgICBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYgdmFsdWUoKSBjb25zdDsKICAgICBJREJBbnkqIHNvdXJjZSgpIGNvbnN0OwogCi0gICAgUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiB1cGRhdGUoSlNDOjpFeGVjU3RhdGUqLCBTY3JpcHRWYWx1ZSYs
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHVwZGF0ZShKU0M6
OkV4ZWNTdGF0ZSosIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZvaWQgYWR2YW5jZSh1bnNpZ25lZCBsb25nLCBFeGNlcHRpb25Db2RlJik7CiAgICAgLy8g
RklYTUU6IFRyeSB0byBtb2RpZnkgdGhlIGNvZGUgZ2VuZXJhdG9yIHNvIHRoaXMgb3ZlcmxvYWQg
aXMgdW5uZWVkZWQuCiAgICAgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBFeGNlcHRpb25Db2RlJiBlYykgeyBjb250aW51ZUZ1bmN0aW9uKHN0YXRpY19jYXN0
PElEQktleSo+KDApLCBlYyk7IH0KLSAgICB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IGRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBFeGNlcHRpb25Db2RlJik7CiAKICAgICB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0
cjxJREJLZXk+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBwb3N0U3VjY2Vzc0hhbmRsZXJD
YWxsYmFjaygpOwogICAgIHZvaWQgY2xvc2UoKTsKLSAgICB2b2lkIHNldFZhbHVlUmVhZHkoRE9N
UmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4gcHJp
bWFyeUtleSwgU2NyaXB0VmFsdWUmKTsKKyAgICB2b2lkIHNldFZhbHVlUmVhZHkoRE9NUmVxdWVz
dFN0YXRlKiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtl
eSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmKTsKICAgICBQYXNzUmVmUHRyPElEQktleT4gaWRi
UHJpbWFyeUtleSgpIHsgcmV0dXJuIG1fY3VycmVudFByaW1hcnlLZXk7IH0KIAogcHJvdGVjdGVk
OgpAQCAtOTcsMTEgKzk3LDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2dvdFZhbHVlOwogICAg
IC8vIFRoZXNlIHZhbHVlcyBhcmUgaGVsZCBiZWNhdXNlIG1fYmFja2VuZCBtYXkgYWR2YW5jZSB3
aGlsZSB0aGV5CiAgICAgLy8gYXJlIHN0aWxsIHZhbGlkIGZvciB0aGUgY3VycmVudCBzdWNjZXNz
IGhhbmRsZXJzLgotICAgIFNjcmlwdFZhbHVlIG1fY3VycmVudEtleVZhbHVlOwotICAgIFNjcmlw
dFZhbHVlIG1fY3VycmVudFByaW1hcnlLZXlWYWx1ZTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSBtX2N1cnJlbnRLZXlWYWx1ZTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBtX2N1
cnJlbnRQcmltYXJ5S2V5VmFsdWU7CiAgICAgUmVmUHRyPElEQktleT4gbV9jdXJyZW50S2V5Owog
ICAgIFJlZlB0cjxJREJLZXk+IG1fY3VycmVudFByaW1hcnlLZXk7Ci0gICAgU2NyaXB0VmFsdWUg
bV9jdXJyZW50VmFsdWU7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgbV9jdXJyZW50VmFs
dWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCmluZGV4IDlmNDA2ZmEuLmQyOGE1N2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCkBA
IC0xNjUsNyArMTY1LDcgQEAgUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJREJGYWN0b3J5
OjpkZWxldGVEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KgogICAgIHJldHVybiByZXF1
ZXN0OwogfQogCi1zaG9ydCBJREJGYWN0b3J5OjpjbXAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGZpcnN0VmFsdWUsIGNvbnN0IFNjcmlwdFZhbHVl
JiBzZWNvbmRWYWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitzaG9ydCBJREJGYWN0b3J5OjpjbXAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUmIGZpcnN0VmFsdWUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBzZWNvbmRW
YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgRE9NUmVxdWVzdFN0YXRlIHJlcXVlc3RT
dGF0ZShjb250ZXh0KTsKICAgICBSZWZQdHI8SURCS2V5PiBmaXJzdCA9IHNjcmlwdFZhbHVlVG9J
REJLZXkoJnJlcXVlc3RTdGF0ZSwgZmlyc3RWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmgKaW5kZXggNzM3NGVjZi4uNzc4ZmQ1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaApAQCAtNjYsNyAr
NjYsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBvcGVuKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIHVuc2lnbmVkIGxvbmcg
bG9uZyB2ZXJzaW9uLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJPcGVuREJS
ZXF1ZXN0PiBkZWxldGVEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBzaG9ydCBjbXAoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBmaXJzdCwgY29uc3QgU2NyaXB0VmFsdWUm
IHNlY29uZCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHNob3J0IGNtcChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGZpcnN0LCBjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYgc2Vjb25kLCBFeGNlcHRpb25Db2RlJik7CiAKIHByaXZhdGU6
CiAgICAgSURCRmFjdG9yeShJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZSopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCmluZGV4IGRmNjM3MzQuLmVk
ZjRiMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQklu
ZGV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5j
cHAKQEAgLTc1LDcgKzc1LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3Bl
bkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXMKICAgICByZXR1cm4g
cmVxdWVzdDsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbkN1cnNv
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5
LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0cmlu
ZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coU3RvcmFnZUFQSSwg
IklEQkluZGV4OjpvcGVuQ3Vyc29yIik7CiAgICAgUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5n
ZSA9IElEQktleVJhbmdlOjpvbmx5KGNvbnRleHQsIGtleSwgZWMpOwpAQCAtMTAwLDcgKzEwMCw3
IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmNvdW50KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQCiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKLVBh
c3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQor
UGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJJbmRleDo6Y291bnQiKTsK
ICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlID0gSURCS2V5UmFuZ2U6Om9ubHkoY29u
dGV4dCwga2V5LCBlYyk7CkBAIC0xMzAsNyArMTMwLDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0
PiBJREJJbmRleDo6b3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LAogICAgIHJldHVybiByZXF1ZXN0OwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQklu
ZGV4OjpvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0
IFNjcmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2Rl
JiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIExPRyhTdG9yYWdlQVBJLCAiSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IiKTsKICAgICBSZWZQ
dHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlID0gSURCS2V5UmFuZ2U6Om9ubHkoY29udGV4dCwga2V5
LCBlYyk7CkBAIC0xMzksNyArMTM5LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRl
eDo6b3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgIHJl
dHVybiBvcGVuS2V5Q3Vyc29yKGNvbnRleHQsIGtleVJhbmdlLnJlbGVhc2UoKSwgZGlyZWN0aW9u
LCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRp
b25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYg
a2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgIklEQkluZGV4
OjpnZXQiKTsKICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlID0gSURCS2V5UmFuZ2U6
Om9ubHkoY29udGV4dCwga2V5LCBlYyk7CkBAIC0xNjksNyArMTY5LDcgQEAgUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBJREJJbmRleDo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBhc3NSZWZQdHIKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBJREJJbmRleDo6Z2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBJREJJbmRleDo6Z2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewogICAgIExPRyhTdG9yYWdlQVBJLCAiSURCSW5kZXg6OmdldEtleSIpOwogICAgIFJlZlB0cjxJ
REJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBJREJLZXlSYW5nZTo6b25seShjb250ZXh0LCBrZXksIGVj
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCmluZGV4IDI2
MTRlMDIuLmY5NTRhZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkluZGV4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
SW5kZXguaApAQCAtNjMsMjMgKzYzLDIzIEBAIHB1YmxpYzoKICAgICAvLyBGSVhNRTogVHJ5IHRv
IG1vZGlmeSB0aGUgY29kZSBnZW5lcmF0b3Igc28gdGhpcyBpcyB1bm5lZWRlZC4KICAgICBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwgc3Rh
dGljX2Nhc3Q8SURCS2V5UmFuZ2UqPigwKSwgZWMpOyB9CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQ
dHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3Bl
bkN1cnNvcihjb250ZXh0LCBrZXlSYW5nZSwgSURCQ3Vyc29yOjpkaXJlY3Rpb25OZXh0KCksIGVj
KTsgfQotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2Rl
JiBlYykgeyByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCBrZXksIElEQkN1cnNvcjo6ZGlyZWN0
aW9uTmV4dCgpLCBlYyk7IH0KKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3Io
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4
dCwga2V5LCBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHQoKSwgZWMpOyB9CiAgICAgUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVm
UHRyPElEQktleVJhbmdlPiwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUm
KTsKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9u
LCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29y
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYg
a2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gY291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
RXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGNvdW50KGNvbnRleHQsIHN0YXRpY19jYXN0PElE
QktleVJhbmdlKj4oMCksIGVjKTsgfQogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY291bnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBFeGNlcHRp
b25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOworICAg
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAg
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3BlbktleUN1cnNvcihj
b250ZXh0LCBzdGF0aWNfY2FzdDxJREJLZXlSYW5nZSo+KDApLCBlYyk7IH0KICAgICBQYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEV4Y2VwdGlvbkNvZGUmIGVj
KSB7IHJldHVybiBvcGVuS2V5Q3Vyc29yKGNvbnRleHQsIGtleVJhbmdlLCBJREJDdXJzb3I6OmRp
cmVjdGlvbk5leHQoKSwgZWMpOyB9Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuS2V5
Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVl
JiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBvcGVuS2V5Q3Vyc29yKGNvbnRleHQs
IGtleSwgSURCQ3Vyc29yOjpkaXJlY3Rpb25OZXh0KCksIGVjKTsgfQorICAgIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykg
eyByZXR1cm4gb3BlbktleUN1cnNvcihjb250ZXh0LCBrZXksIElEQkN1cnNvcjo6ZGlyZWN0aW9u
TmV4dCgpLCBlYyk7IH0KICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3Io
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBjb25zdCBT
dHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU2NyaXB0
VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYg
ZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IGdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIEV4
Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGdldChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZ2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CiAgICAg
UGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBnZXRLZXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBnZXRLZXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFNjcmlwdFZh
bHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGdl
dEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdm9pZCBtYXJrRGVsZXRlZCgpIHsgbV9k
ZWxldGVkID0gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJLZXlSYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJLZXlSYW5nZS5jcHAKaW5kZXggNzI4Zjk1My4uM2Q1NGZjMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmNwcApAQCAtNDksMTMgKzQ5
LDEzIEBAIElEQktleVJhbmdlOjpJREJLZXlSYW5nZShQYXNzUmVmUHRyPElEQktleT4gbG93ZXIs
IFBhc3NSZWZQdHI8SURCS2V5PiB1cHBlciwgTG93CiB7CiB9CiAKLVNjcmlwdFZhbHVlIElEQktl
eVJhbmdlOjpsb3dlclZhbHVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIGNvbnN0
CitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBJREJLZXlSYW5nZTo6bG93ZXJWYWx1ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSBjb25zdAogewogICAgIERPTVJlcXVlc3RTdGF0ZSBy
ZXF1ZXN0U3RhdGUoY29udGV4dCk7CiAgICAgcmV0dXJuIGlkYktleVRvU2NyaXB0VmFsdWUoJnJl
cXVlc3RTdGF0ZSwgbV9sb3dlcik7CiB9CiAKLVNjcmlwdFZhbHVlIElEQktleVJhbmdlOjp1cHBl
clZhbHVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIGNvbnN0CitEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSBJREJLZXlSYW5nZTo6dXBwZXJWYWx1ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KSBjb25zdAogewogICAgIERPTVJlcXVlc3RTdGF0ZSByZXF1ZXN0U3RhdGUo
Y29udGV4dCk7CiAgICAgcmV0dXJuIGlkYktleVRvU2NyaXB0VmFsdWUoJnJlcXVlc3RTdGF0ZSwg
bV91cHBlcik7CkBAIC03Miw3ICs3Miw3IEBAIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IElEQktl
eVJhbmdlOjpvbmx5KFBhc3NSZWZQdHI8SURCS2V5PiBwcnBLZXksIEV4Y2VwdGlvbkNvCiAgICAg
cmV0dXJuIElEQktleVJhbmdlOjpjcmVhdGUoa2V5LCBrZXksIExvd2VyQm91bmRDbG9zZWQsIFVw
cGVyQm91bmRDbG9zZWQpOwogfQogCi1QYXNzUmVmUHRyPElEQktleVJhbmdlPiBJREJLZXlSYW5n
ZTo6b25seShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1
ZSYga2V5VmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4g
SURCS2V5UmFuZ2U6Om9ubHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleVZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBET01SZXF1ZXN0U3RhdGUgcmVxdWVzdFN0YXRlKGNvbnRleHQpOwogICAgIFJlZlB0cjxJ
REJLZXk+IGtleSA9IHNjcmlwdFZhbHVlVG9JREJLZXkoJnJlcXVlc3RTdGF0ZSwga2V5VmFsdWUp
OwpAQCAtODQsNyArODQsNyBAQCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBJREJLZXlSYW5nZTo6
b25seShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdAogICAgIHJldHVybiBJ
REJLZXlSYW5nZTo6Y3JlYXRlKGtleSwga2V5LCBMb3dlckJvdW5kQ2xvc2VkLCBVcHBlckJvdW5k
Q2xvc2VkKTsKIH0KIAotUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6Omxvd2Vy
Qm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUm
IGJvdW5kVmFsdWUsIGJvb2wgb3BlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElE
QktleVJhbmdlPiBJREJLZXlSYW5nZTo6bG93ZXJCb3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgYm91bmRWYWx1ZSwgYm9v
bCBvcGVuLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBET01SZXF1ZXN0U3RhdGUgcmVxdWVz
dFN0YXRlKGNvbnRleHQpOwogICAgIFJlZlB0cjxJREJLZXk+IGJvdW5kID0gc2NyaXB0VmFsdWVU
b0lEQktleSgmcmVxdWVzdFN0YXRlLCBib3VuZFZhbHVlKTsKQEAgLTk2LDcgKzk2LDcgQEAgUGFz
c1JlZlB0cjxJREJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6Omxvd2VyQm91bmQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwKICAgICByZXR1cm4gSURCS2V5UmFuZ2U6OmNyZWF0ZShib3Vu
ZCwgMCwgb3BlbiA/IExvd2VyQm91bmRPcGVuIDogTG93ZXJCb3VuZENsb3NlZCwgVXBwZXJCb3Vu
ZE9wZW4pOwogfQogCi1QYXNzUmVmUHRyPElEQktleVJhbmdlPiBJREJLZXlSYW5nZTo6dXBwZXJC
b3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYg
Ym91bmRWYWx1ZSwgYm9vbCBvcGVuLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURC
S2V5UmFuZ2U+IElEQktleVJhbmdlOjp1cHBlckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBib3VuZFZhbHVlLCBib29s
IG9wZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIERPTVJlcXVlc3RTdGF0ZSByZXF1ZXN0
U3RhdGUoY29udGV4dCk7CiAgICAgUmVmUHRyPElEQktleT4gYm91bmQgPSBzY3JpcHRWYWx1ZVRv
SURCS2V5KCZyZXF1ZXN0U3RhdGUsIGJvdW5kVmFsdWUpOwpAQCAtMTA4LDcgKzEwOCw3IEBAIFBh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+IElEQktleVJhbmdlOjp1cHBlckJvdW5kKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgcmV0dXJuIElEQktleVJhbmdlOjpjcmVhdGUoMCwg
Ym91bmQsIExvd2VyQm91bmRPcGVuLCBvcGVuID8gVXBwZXJCb3VuZE9wZW4gOiBVcHBlckJvdW5k
Q2xvc2VkKTsKIH0KIAotUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6OmJvdW5k
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBsb3dl
clZhbHVlLCBjb25zdCBTY3JpcHRWYWx1ZSYgdXBwZXJWYWx1ZSwgYm9vbCBsb3dlck9wZW4sIGJv
b2wgdXBwZXJPcGVuLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCS2V5UmFuZ2U+
IElEQktleVJhbmdlOjpib3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25z
dCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgbG93ZXJWYWx1ZSwgY29uc3QgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUmIHVwcGVyVmFsdWUsIGJvb2wgbG93ZXJPcGVuLCBib29sIHVwcGVyT3Blbiwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgRE9NUmVxdWVzdFN0YXRlIHJlcXVlc3RTdGF0ZShj
b250ZXh0KTsKICAgICBSZWZQdHI8SURCS2V5PiBsb3dlciA9IHNjcmlwdFZhbHVlVG9JREJLZXko
JnJlcXVlc3RTdGF0ZSwgbG93ZXJWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCS2V5UmFuZ2UuaAppbmRleCA1NDc2OTVhLi5lNTUxY2Y0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmgKQEAgLTU5LDIzICs1
OSwyMyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJREJLZXk+IGxvd2VyKCkgY29uc3QgeyBy
ZXR1cm4gbV9sb3dlcjsgfQogICAgIFBhc3NSZWZQdHI8SURCS2V5PiB1cHBlcigpIGNvbnN0IHsg
cmV0dXJuIG1fdXBwZXI7IH0KIAotICAgIFNjcmlwdFZhbHVlIGxvd2VyVmFsdWUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopIGNvbnN0OwotICAgIFNjcmlwdFZhbHVlIHVwcGVyVmFsdWUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCopIGNvbnN0OworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGxv
d2VyVmFsdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIGNvbnN0OworICAgIERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlIHVwcGVyVmFsdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIGNvbnN0Owog
ICAgIGJvb2wgbG93ZXJPcGVuKCkgY29uc3QgeyByZXR1cm4gbV9sb3dlclR5cGUgPT0gTG93ZXJC
b3VuZE9wZW47IH0KICAgICBib29sIHVwcGVyT3BlbigpIGNvbnN0IHsgcmV0dXJuIG1fdXBwZXJU
eXBlID09IFVwcGVyQm91bmRPcGVuOyB9CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4gb25seShQYXNzUmVmUHRyPElEQktleT4gdmFsdWUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gb25seShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBvbmx5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CiAKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gbG93ZXJCb3VuZChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYgYm91bmQsIEV4Y2VwdGlvbkNv
ZGUmIGVjKSB7IHJldHVybiBsb3dlckJvdW5kKGNvbnRleHQsIGJvdW5kLCBmYWxzZSwgZWMpOyB9
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGxvd2VyQm91bmQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBib3VuZCwgYm9vbCBvcGVuLCBFeGNl
cHRpb25Db2RlJik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGxvd2VyQm91
bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmIGJvdW5kLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gbG93ZXJCb3VuZChj
b250ZXh0LCBib3VuZCwgZmFsc2UsIGVjKTsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiBsb3dlckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYgYm91bmQsIGJvb2wgb3BlbiwgRXhjZXB0aW9uQ29kZSYpOwogCi0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHVwcGVyQm91bmQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGJvdW5kLCBFeGNlcHRpb25D
b2RlJiBlYykgeyByZXR1cm4gdXBwZXJCb3VuZChjb250ZXh0LCBib3VuZCwgZmFsc2UsIGVjKTsg
fQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiB1cHBlckJvdW5kKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYgYm91bmQsIGJvb2wgb3BlbiwgRXhj
ZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiB1cHBlckJv
dW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlJiBib3VuZCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIHVwcGVyQm91bmQo
Y29udGV4dCwgYm91bmQsIGZhbHNlLCBlYyk7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJL
ZXlSYW5nZT4gdXBwZXJCb3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmIGJvdW5kLCBib29sIG9wZW4sIEV4Y2VwdGlvbkNvZGUmKTsKIAot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBib3VuZChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYgbG93ZXIsIGNvbnN0IFNjcmlwdFZh
bHVlJiB1cHBlciwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGJvdW5kKGNvbnRleHQsIGxv
d2VyLCB1cHBlciwgZmFsc2UsIGZhbHNlLCBlYyk7IH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4gYm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U2NyaXB0VmFsdWUmIGxvd2VyLCBjb25zdCBTY3JpcHRWYWx1ZSYgdXBwZXIsIGJvb2wgbG93ZXJP
cGVuLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gYm91bmQoY29udGV4dCwgbG93ZXIsIHVw
cGVyLCBsb3dlck9wZW4sIGZhbHNlLCBlYyk7IH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJL
ZXlSYW5nZT4gYm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFNjcmlwdFZhbHVl
JiBsb3dlciwgY29uc3QgU2NyaXB0VmFsdWUmIHVwcGVyLCBib29sIGxvd2VyT3BlbiwgYm9vbCB1
cHBlck9wZW4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4gYm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmIGxvd2VyLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYg
dXBwZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBib3VuZChjb250ZXh0LCBsb3dlciwg
dXBwZXIsIGZhbHNlLCBmYWxzZSwgZWMpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5
UmFuZ2U+IGJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJiBsb3dlciwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
IHVwcGVyLCBib29sIGxvd2VyT3BlbiwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGJvdW5k
KGNvbnRleHQsIGxvd2VyLCB1cHBlciwgbG93ZXJPcGVuLCBmYWxzZSwgZWMpOyB9CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgbG93ZXIsIGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiB1cHBlciwgYm9vbCBsb3dlck9wZW4sIGJvb2wgdXBwZXJPcGVuLCBFeGNl
cHRpb25Db2RlJik7CiAKICAgICBib29sIGlzT25seUtleSgpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXgg
NjliYWJmMS4uNzg2N2Y1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAtODYsNyArODYsNyBAQCBQYXNzUmVmUHRyPElE
QlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUGFzcwogICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBJREJL
ZXlSYW5nZTo6b25seShjb250ZXh0LCBrZXksIGVjKTsKICAgICBpZiAoZWMpCkBAIC05NCw3ICs5
NCw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmdldChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zCiAgICAgcmV0dXJuIGdldChjb250ZXh0LCBr
ZXlSYW5nZS5yZWxlYXNlKCksIGVjKTsKIH0KIAotc3RhdGljIHZvaWQgZ2VuZXJhdGVJbmRleEtl
eXNGb3JWYWx1ZShET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgY29uc3QgSURCSW5kZXhN
ZXRhZGF0YSYgaW5kZXhNZXRhZGF0YSwgY29uc3QgU2NyaXB0VmFsdWUmIG9iamVjdFZhbHVlLCBJ
REJPYmplY3RTdG9yZTo6SW5kZXhLZXlzKiBpbmRleEtleXMpCitzdGF0aWMgdm9pZCBnZW5lcmF0
ZUluZGV4S2V5c0ZvclZhbHVlKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBjb25zdCBJ
REJJbmRleE1ldGFkYXRhJiBpbmRleE1ldGFkYXRhLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYgb2JqZWN0VmFsdWUsIElEQk9iamVjdFN0b3JlOjpJbmRleEtleXMqIGluZGV4S2V5cykK
IHsKICAgICBBU1NFUlQoaW5kZXhLZXlzKTsKICAgICBSZWZQdHI8SURCS2V5PiBpbmRleEtleSA9
IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgocmVxdWVzdFN0YXRlLCBvYmpl
Y3RWYWx1ZSwgaW5kZXhNZXRhZGF0YS5rZXlQYXRoKTsKQEAgLTExNywzMSArMTE3LDMxIEBAIHN0
YXRpYyB2b2lkIGdlbmVyYXRlSW5kZXhLZXlzRm9yVmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1
ZXN0U3RhdGUsIGNvbnN0IElEQkluCiAgICAgfQogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IElEQk9iamVjdFN0b3JlOjphZGQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBTY3JpcHRWYWx1ZSYg
dmFsdWUsIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6YWRkKEpTQzo6RXhlY1N0YXRlKiBzdGF0
ZSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coU3RvcmFnZUFQSSwg
IklEQk9iamVjdFN0b3JlOjphZGQiKTsKICAgICByZXR1cm4gcHV0KElEQkRhdGFiYXNlQmFja2Vu
ZDo6QWRkT25seSwgSURCQW55OjpjcmVhdGUodGhpcyksIHN0YXRlLCB2YWx1ZSwga2V5LCBlYyk7
CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmFkZChKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIFNjcmlwdFZhbHVlJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQ
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjphZGQoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewogICAgIExPRyhTdG9yYWdlQVBJLCAiSURCT2JqZWN0U3RvcmU6OmFkZCIpOwogICAgIHJl
dHVybiBwdXQoSURCRGF0YWJhc2VCYWNrZW5kOjpBZGRPbmx5LCBJREJBbnk6OmNyZWF0ZSh0aGlz
KSwgc3RhdGUsIHZhbHVlLCBzdGF0aWNfY2FzdDxJREJLZXkqPigwKSwgZWMpOwogfQogCi1QYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoSlNDOjpFeGVjU3RhdGUqIHN0
YXRlLCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlv
bkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBjb25z
dCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAg
ICBMT0coU3RvcmFnZUFQSSwgIklEQk9iamVjdFN0b3JlOjpwdXQiKTsKICAgICByZXR1cm4gcHV0
KElEQkRhdGFiYXNlQmFja2VuZDo6QWRkT3JVcGRhdGUsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBz
dGF0ZSwgdmFsdWUsIGtleSwgZWMpOwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9i
amVjdFN0b3JlOjpwdXQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBTY3JpcHRWYWx1ZSYgdmFsdWUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9y
ZTo6cHV0KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZh
bHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgIklEQk9iamVj
dFN0b3JlOjpwdXQiKTsKICAgICByZXR1cm4gcHV0KElEQkRhdGFiYXNlQmFja2VuZDo6QWRkT3JV
cGRhdGUsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBzdGF0ZSwgdmFsdWUsIHN0YXRpY19jYXN0PElE
QktleSo+KDApLCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3Rv
cmU6OnB1dChJREJEYXRhYmFzZUJhY2tlbmQ6OlB1dE1vZGUgcHV0TW9kZSwgUGFzc1JlZlB0cjxJ
REJBbnk+IHNvdXJjZSwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBTY3JpcHRWYWx1ZSYgdmFsdWUs
IGNvbnN0IFNjcmlwdFZhbHVlJiBrZXlWYWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoSURCRGF0YWJhc2VCYWNrZW5kOjpQ
dXRNb2RlIHB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIEpTQzo6RXhlY1N0YXRl
KiBzdGF0ZSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYga2V5VmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJvbUV4
ZWNTdGF0ZShzdGF0ZSk7CiAgICAgRE9NUmVxdWVzdFN0YXRlIHJlcXVlc3RTdGF0ZShjb250ZXh0
KTsKQEAgLTE0OSw3ICsxNDksNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0
b3JlOjpwdXQoSURCRGF0YWJhc2VCYWNrZW5kOjpQdXRNb2RlIHB1dE1vZGUsCiAgICAgcmV0dXJu
IHB1dChwdXRNb2RlLCBzb3VyY2UsIHN0YXRlLCB2YWx1ZSwga2V5LnJlbGVhc2UoKSwgZWMpOwog
fQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoSURCRGF0YWJh
c2VCYWNrZW5kOjpQdXRNb2RlIHB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgU2NyaXB0VmFsdWUmIHZhbHVlLCBQYXNzUmVmUHRyPElEQktl
eT4gcHJwS2V5LCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURC
T2JqZWN0U3RvcmU6OnB1dChJREJEYXRhYmFzZUJhY2tlbmQ6OlB1dE1vZGUgcHV0TW9kZSwgUGFz
c1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYgdmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBwcnBLZXksIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewogICAgIFJlZlB0cjxJREJLZXk+IGtleSA9IHBycEtleTsKICAgICBpZiAo
bV9kZWxldGVkKSB7CkBAIC0xNjcsNyArMTY3LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJ
REJPYmplY3RTdG9yZTo6cHV0KElEQkRhdGFiYXNlQmFja2VuZDo6UHV0TW9kZSBwdXRNb2RlLAog
CiAgICAgLy8gRklYTUU6IEV4cG9zZSB0aGUgSlMgZW5naW5lIGV4Y2VwdGlvbiBzdGF0ZSB0aHJv
dWdoIFNjcmlwdFN0YXRlLgogICAgIGJvb2wgZGlkVGhyb3cgPSBmYWxzZTsKLSAgICBSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUgPSB2YWx1ZS5zZXJpYWxpemUo
c3RhdGUsIDAsIDAsIGRpZFRocm93KTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBzZXJpYWxpemVkVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnNlcmlhbGl6ZSh2YWx1
ZSwgc3RhdGUsIG51bGxwdHIsIG51bGxwdHIsIGRpZFRocm93KTsKICAgICBpZiAoZGlkVGhyb3cp
IHsKICAgICAgICAgLy8gU2V0dGluZyBhbiBleHBsaWNpdCBFeGNlcHRpb25Db2RlIGhlcmUgd291
bGQgZGVmZXIgaGFuZGxpbmcgdGhlIGFscmVhZHkgdGhyb3duIGV4Y2VwdGlvbi4KICAgICAgICAg
cmV0dXJuIDA7CkBAIC0yNjIsNyArMjYyLDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJP
YmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY28KICAg
ICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
SURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtl
eSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5n
ZSA9IElEQktleVJhbmdlOjpvbmx5KGNvbnRleHQsIGtleSwgZWMpOwogICAgIGlmIChlYykKQEAg
LTMzNiw3ICszMzYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY3Vyc29yLT5jb250aW51ZUZ1
bmN0aW9uKHN0YXRpY19jYXN0PElEQktleSo+KDApLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIAog
ICAgICAgICAgICAgUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSA9IGN1cnNvci0+aWRiUHJpbWFy
eUtleSgpOwotICAgICAgICAgICAgU2NyaXB0VmFsdWUgdmFsdWUgPSBjdXJzb3ItPnZhbHVlKCk7
CisgICAgICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB2YWx1ZSA9IGN1cnNvci0+dmFs
dWUoKTsKIAogICAgICAgICAgICAgSURCT2JqZWN0U3RvcmU6OkluZGV4S2V5cyBpbmRleEtleXM7
CiAgICAgICAgICAgICBnZW5lcmF0ZUluZGV4S2V5c0ZvclZhbHVlKHJlcXVlc3QtPnJlcXVlc3RT
dGF0ZSgpLCBtX2luZGV4TWV0YWRhdGEsIHZhbHVlLCAmaW5kZXhLZXlzKTsKQEAgLTUwMiw3ICs1
MDIsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29y
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleAogICAgIHJldHVybiBvcGVuQ3Vyc29yKGNv
bnRleHQsIGtleVJhbmdlLCBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHQoKSwgZWMpOwogfQogCi1Q
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlv
bkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1
cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICByZXR1cm4gb3BlbkN1
cnNvcihjb250ZXh0LCBrZXksIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCgpLCBlYyk7CiB9CkBA
IC01MzQsNyArNTM0LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6
b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXgKICAgICByZXR1cm4gcmVx
dWVzdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3Rv
cmU6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2Ny
aXB0VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVj
KQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAg
ICAgUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSA9IElEQktleVJhbmdlOjpvbmx5KGNvbnRl
eHQsIGtleSwgZWMpOwogICAgIGlmIChlYykKQEAgLTU1OCw3ICs1NTgsNyBAQCBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQYQogICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIAotUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMp
CitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjb3VudChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdl
ID0gSURCS2V5UmFuZ2U6Om9ubHkoY29udGV4dCwga2V5LCBlYyk7CiAgICAgaWYgKGVjKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKaW5k
ZXggZmZmNWZmOS4uZGE2NWEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCkBAIC02NSwyMSArNjUsMjEgQEAgcHVibGljOgogICAg
IFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV90cmFuc2FjdGlvbjsgfQogICAgIGJvb2wgYXV0b0luY3JlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fbWV0YWRhdGEuYXV0b0luY3JlbWVudDsgfQogCi0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0
PiBhZGQoSlNDOjpFeGVjU3RhdGUqLCBTY3JpcHRWYWx1ZSYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAg
ICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHB1dChKU0M6OkV4ZWNTdGF0ZSosIFNjcmlwdFZhbHVl
JiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gYWRkKEpTQzo6
RXhlY1N0YXRlKiwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBwdXQoSlNDOjpFeGVjU3RhdGUqLCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKTsK
ICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVm
UHRyPElEQktleVJhbmdlPiwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlv
biwgSURCRGF0YWJhc2VCYWNrZW5kOjpUYXNrVHlwZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBh
c3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Y29uc3QgU2NyaXB0VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIGNvbnN0
IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBQYXNzUmVmUHRyPElE
QlJlcXVlc3Q+IGdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU2NyaXB0VmFsdWUm
IGtleSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZ2V0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBnZXQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBFeGNlcHRpb25Db2Rl
Jik7Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBhZGQoSlNDOjpFeGVjU3RhdGUqLCBTY3Jp
cHRWYWx1ZSYsIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQ
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IHB1dChKU0M6OkV4ZWNTdGF0ZSosIFNjcmlwdFZhbHVlJiwg
Y29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gYWRkKEpTQzo6RXhlY1N0YXRlKiwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBwdXQoSlNDOjpFeGVjU3RhdGUqLCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2Vw
dGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGRlbGV0ZUZ1bmN0aW9uKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgRXhjZXB0aW9u
Q29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZGVsZXRlRnVuY3Rpb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRp
b25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjbGVhcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgUGFzc1JlZlB0cjxJREJJbmRleD4g
Y3JlYXRlSW5kZXgoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMs
IEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBjcmVhdGVJbmRleChjb250ZXh0LCBuYW1lLCBJ
REJLZXlQYXRoKGtleVBhdGgpLCBvcHRpb25zLCBlYyk7IH0KQEAgLTkyLDEwICs5MiwxMCBAQCBw
dWJsaWM6CiAKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBjb3VudChjb250
ZXh0LCBzdGF0aWNfY2FzdDxJREJLZXlSYW5nZSo+KDApLCBlYyk7IH0KICAgICBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElE
QktleVJhbmdlPiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNl
cHRpb25Db2RlJik7CiAKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHB1dChJREJEYXRhYmFz
ZUJhY2tlbmQ6OlB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIEpTQzo6RXhlY1N0
YXRlKiwgU2NyaXB0VmFsdWUmLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2Rl
Jik7Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBwdXQoSURCRGF0YWJhc2VCYWNrZW5kOjpQ
dXRNb2RlLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBKU0M6OkV4ZWNTdGF0ZSosIFNjcmlw
dFZhbHVlJiwgUGFzc1JlZlB0cjxJREJLZXk+LCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBwdXQoSURCRGF0YWJhc2VCYWNrZW5kOjpQdXRNb2RlLCBQYXNzUmVm
UHRyPElEQkFueT4gc291cmNlLCBKU0M6OkV4ZWNTdGF0ZSosIERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlJiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYp
OworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gcHV0KElEQkRhdGFiYXNlQmFja2VuZDo6UHV0
TW9kZSwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgSlNDOjpFeGVjU3RhdGUqLCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYsIFBhc3NSZWZQdHI8SURCS2V5PiwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZvaWQgbWFya0RlbGV0ZWQoKSB7IG1fZGVsZXRlZCA9IHRydWU7IH0KICAgICB2b2lkIHRy
YW5zYWN0aW9uRmluaXNoZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCAwMDQ5ZWRhLi5kNTY0NjAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcApAQCAtMjEzLDcgKzIx
Myw3IEBAIFBhc3NSZWZQdHI8SURCQ3Vyc29yPiBJREJSZXF1ZXN0OjpnZXRSZXN1bHRDdXJzb3Io
KQogICAgIHJldHVybiAwOwogfQogCi12b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdEN1cnNvcihQ
YXNzUmVmUHRyPElEQkN1cnNvcj4gY3Vyc29yLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNz
UmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVlKQordm9p
ZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHRDdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3I+IGN1cnNv
ciwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXks
IGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSkKIHsKICAgICBBU1NFUlQobV9y
ZWFkeVN0YXRlID09IFBFTkRJTkcpOwogICAgIG1fY3Vyc29yS2V5ID0ga2V5OwpAQCAtMjgyLDcg
KzI4Miw3IEBAIHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29y
QmFja2VuZD4gYmFja2VuZCwgUGFzc1JlZlB0cjxJREJLCiAgICAgICAgIHJldHVybjsKIAogICAg
IERPTVJlcXVlc3RTdGF0ZTo6U2NvcGUgc2NvcGUobV9yZXF1ZXN0U3RhdGUpOwotICAgIFNjcmlw
dFZhbHVlIHZhbHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihyZXF1ZXN0U3RhdGUoKSwg
YnVmZmVyKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB2YWx1ZSA9IGRlc2VyaWFsaXpl
SURCVmFsdWVCdWZmZXIocmVxdWVzdFN0YXRlKCksIGJ1ZmZlcik7CiAgICAgQVNTRVJUKCFtX3Bl
bmRpbmdDdXJzb3IpOwogICAgIFJlZlB0cjxJREJDdXJzb3I+IGN1cnNvcjsKICAgICBzd2l0Y2gg
KG1fY3Vyc29yVHlwZSkgewpAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgSURCUmVxdWVzdDo6b25T
dWNjZXNzKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZUJ1ZmZlcikKICAgICAgICAgcmV0
dXJuOwogCiAgICAgRE9NUmVxdWVzdFN0YXRlOjpTY29wZSBzY29wZShtX3JlcXVlc3RTdGF0ZSk7
Ci0gICAgU2NyaXB0VmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKHJlcXVl
c3RTdGF0ZSgpLCB2YWx1ZUJ1ZmZlcik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgdmFs
dWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKHJlcXVlc3RTdGF0ZSgpLCB2YWx1ZUJ1ZmZl
cik7CiAgICAgb25TdWNjZXNzSW50ZXJuYWwodmFsdWUpOwogfQogCkBAIC0zNDgsNyArMzQ4LDcg
QEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZh
bHVlQnVmZmVyLCBQYXNzUmVmUHRyPElEQksKICAgICBBU1NFUlQoa2V5UGF0aCA9PSBlZmZlY3Rp
dmVPYmplY3RTdG9yZShtX3NvdXJjZSktPmtleVBhdGgoKSk7CiAjZW5kaWYKICAgICBET01SZXF1
ZXN0U3RhdGU6OlNjb3BlIHNjb3BlKG1fcmVxdWVzdFN0YXRlKTsKLSAgICBTY3JpcHRWYWx1ZSB2
YWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIocmVxdWVzdFN0YXRlKCksIHZhbHVlQnVm
ZmVyKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB2YWx1ZSA9IGRlc2VyaWFsaXplSURC
VmFsdWVCdWZmZXIocmVxdWVzdFN0YXRlKCksIHZhbHVlQnVmZmVyKTsKIAogICAgIFJlZlB0cjxJ
REJLZXk+IHByaW1hcnlLZXkgPSBwcnBQcmltYXJ5S2V5OwogI2lmbmRlZiBOREVCVUcKQEAgLTM4
Myw3ICszODMsNyBAQCB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2Vzc0ludGVybmFsKFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSkKICAgICByZXR1cm4gb25TdWNjZXNzSW50
ZXJuYWwoZGVzZXJpYWxpemVJREJWYWx1ZShyZXF1ZXN0U3RhdGUoKSwgdmFsdWUpKTsKIH0KIAot
dm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3NJbnRlcm5hbChjb25zdCBTY3JpcHRWYWx1ZSYgdmFs
dWUpCit2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2Vzc0ludGVybmFsKGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiB2YWx1ZSkKIHsKICAgICBtX3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlKHZh
bHVlKTsKICAgICBpZiAobV9wZW5kaW5nQ3Vyc29yKSB7CkBAIC00MDAsNyArNDAwLDcgQEAgdm9p
ZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0
cjxJREJLZXk+IHByaW1hcnlLZXkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRE9NUmVxdWVzdFN0
YXRlOjpTY29wZSBzY29wZShtX3JlcXVlc3RTdGF0ZSk7Ci0gICAgU2NyaXB0VmFsdWUgdmFsdWUg
PSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKHJlcXVlc3RTdGF0ZSgpLCBidWZmZXIpOworICAg
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHZhbHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZl
cihyZXF1ZXN0U3RhdGUoKSwgYnVmZmVyKTsKICAgICBBU1NFUlQobV9wZW5kaW5nQ3Vyc29yKTsK
ICAgICBzZXRSZXN1bHRDdXJzb3IobV9wZW5kaW5nQ3Vyc29yLnJlbGVhc2UoKSwga2V5LCBwcmlt
YXJ5S2V5LCB2YWx1ZSk7CiAgICAgZW5xdWV1ZUV2ZW50KGNyZWF0ZVN1Y2Nlc3NFdmVudCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAppbmRleCA0
MzA1ODllLi5hYzc1ZGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCUmVxdWVzdC5oCkBAIC0xMjAsNyArMTIwLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZW5x
dWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW5x
dWV1ZUV2ZW50KCkgY29uc3Q7CiAgICAgdm9pZCBvblN1Y2Nlc3NJbnRlcm5hbChQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwotICAgIHZvaWQgb25TdWNjZXNzSW50ZXJuYWwoY29u
c3QgU2NyaXB0VmFsdWUmKTsKKyAgICB2b2lkIG9uU3VjY2Vzc0ludGVybmFsKGNvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJik7CiAKICAgICBSZWZQdHI8SURCQW55PiBtX3Jlc3VsdDsKICAg
ICB1bnNpZ25lZCBzaG9ydCBtX2Vycm9yQ29kZTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklOQUwgeyBk
ZXJlZigpOyB9CiAKICAgICBQYXNzUmVmUHRyPElEQkN1cnNvcj4gZ2V0UmVzdWx0Q3Vyc29yKCk7
Ci0gICAgdm9pZCBzZXRSZXN1bHRDdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3I+LCBQYXNzUmVm
UHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBjb25zdCBTY3JpcHRW
YWx1ZSYpOworICAgIHZvaWQgc2V0UmVzdWx0Q3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yPiwg
UGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmKTsKIAogICAgIFJlZlB0cjxJREJBbnk+IG1fc291cmNl
OwogICAgIGNvbnN0IElEQkRhdGFiYXNlQmFja2VuZDo6VGFza1R5cGUgbV90YXNrVHlwZTsKQEAg
LTE1NSw3ICsxNTUsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJREJDdXJzb3I+IG1fcGVuZGlu
Z0N1cnNvcjsKICAgICBSZWZQdHI8SURCS2V5PiBtX2N1cnNvcktleTsKICAgICBSZWZQdHI8SURC
S2V5PiBtX2N1cnNvclByaW1hcnlLZXk7Ci0gICAgU2NyaXB0VmFsdWUgbV9jdXJzb3JWYWx1ZTsK
KyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBtX2N1cnNvclZhbHVlOwogICAgIGJvb2wgbV9k
aWRGaXJlVXBncmFkZU5lZWRlZEV2ZW50OwogICAgIGJvb2wgbV9wcmV2ZW50UHJvcGFnYXRpb247
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJp
bGl0eVJhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJp
bGl0eVJhbmdlLmNwcAppbmRleCAwZDNkMjZlLi42YzEyNWE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuY3BwCkBAIC0z
Miw3ICszMiw3IEBACiAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJNZWRp
YVNvdXJjZVN0YXRlcy5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8Ymlu
ZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxpbnRlcnByZXRlci9DYWxsRnJhbWUuaD4K
ICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KIApAQCAtNTAsNyArNTAsNyBAQCBDYXBh
YmlsaXR5UmFuZ2U6OkNhcGFiaWxpdHlSYW5nZShjb25zdCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFi
aWxpdHlSYW5nZSYgcmFuZ2VJbgogewogfQogCi1zdGF0aWMgU2NyaXB0VmFsdWUgc2NyaXB0VmFs
dWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5n
ZTo6VmFsdWVVbmlvbiYgdmFsdWUsIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlOjpU
eXBlIHR5cGUpCitzdGF0aWMgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgc2NyaXB0VmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZTo6VmFs
dWVVbmlvbiYgdmFsdWUsIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlOjpUeXBlIHR5
cGUpCiB7CiAgICAgLy8gTk9URTogdGhlIHNwZWMgc2F5czoKICAgICAvLyAgICAgIC4uLiBhbiBp
bXBsZW1lbnRhdGlvbiBzaG91bGQgbWFrZSBhIHJlYXNvbmFibGUgYXR0ZW1wdCB0byB0cmFuc2xh
dGUgYW5kIHNjYWxlIHRoZSBoYXJkd2FyZSdzIHNldHRpbmcKQEAgLTYzLDI2ICs2MywyNiBAQCBz
dGF0aWMgU2NyaXB0VmFsdWUgc2NyaXB0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBNZWRp
YVN0cmVhbVNvdXJjZUNhcGFiaWxpdAogICAgIAogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNh
c2UgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2U6OkZsb2F0OgotICAgICAgICByZXR1
cm4gU2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwgSlNWYWx1ZSh2YWx1ZS5hc0Zsb2F0KSk7CisgICAg
ICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBKU1ZhbHVlKHZh
bHVlLmFzRmxvYXQpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJj
ZUNhcGFiaWxpdHlSYW5nZTo6VUxvbmc6Ci0gICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZShleGVj
LT52bSgpLCBKU1ZhbHVlKHZhbHVlLmFzVUxvbmcpKTsKKyAgICAgICAgcmV0dXJuIERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIEpTVmFsdWUodmFsdWUuYXNVTG9uZykpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlOjpV
bmRlZmluZWQ6Ci0gICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBqc1VuZGVm
aW5lZCgpKTsKKyAgICAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKGV4ZWMtPnZt
KCksIGpzVW5kZWZpbmVkKCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gU2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwganNVbmRl
ZmluZWQoKSk7CisgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKGV4ZWMtPnZtKCks
IGpzVW5kZWZpbmVkKCkpOwogfQogCi1TY3JpcHRWYWx1ZSBDYXBhYmlsaXR5UmFuZ2U6Om1pbihF
eGVjU3RhdGUqIGV4ZWMpIGNvbnN0CitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBDYXBhYmlsaXR5
UmFuZ2U6Om1pbihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHNjcmlwdFZh
bHVlKGV4ZWMsIG1fcmFuZ2VJbmZvLm1pbigpLCBtX3JhbmdlSW5mby50eXBlKCkpOwogfQogCi1T
Y3JpcHRWYWx1ZSBDYXBhYmlsaXR5UmFuZ2U6Om1heChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CitE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBDYXBhYmlsaXR5UmFuZ2U6Om1heChFeGVjU3RhdGUqIGV4
ZWMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHNjcmlwdFZhbHVlKGV4ZWMsIG1fcmFuZ2VJbmZvLm1h
eCgpLCBtX3JhbmdlSW5mby50eXBlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmgKaW5kZXggMzY4NDA2Ni4uOTA1YWUz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmls
aXR5UmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFi
aWxpdHlSYW5nZS5oCkBAIC0zMCw4ICszMCw4IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
IAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmgiCi0jaW5jbHVkZSAi
U2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKKyNpbmNsdWRlIDxi
aW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPGludGVycHJldGVyL0NhbGxGcmFtZS5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTQzLDggKzQzLDggQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIFJlZlB0cjxDYXBhYmlsaXR5UmFuZ2U+IGNyZWF0ZShjb25zdCBNZWRp
YVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSYpOwogCi0gICAgU2NyaXB0VmFsdWUgbWluKEpT
Qzo6RXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgU2NyaXB0VmFsdWUgbWF4KEpTQzo6RXhlY1N0YXRl
KikgY29uc3Q7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgbWluKEpTQzo6RXhlY1N0YXRl
KikgY29uc3Q7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgbWF4KEpTQzo6RXhlY1N0YXRl
KikgY29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0ZWQoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlSW5m
by5zdXBwb3J0ZWQoKTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5oCmluZGV4IGZkMjk0
ODEuLjJhOTNmYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFUcmFja0NvbnN0cmFpbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmgKQEAgLTMzLDkgKzMzLDExIEBACiAjaW5j
bHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAot
bmFtZXNwYWNlIFdlYkNvcmUgewotCituYW1lc3BhY2UgRGVwcmVjYXRlZCB7CiBjbGFzcyBTY3Jp
cHRWYWx1ZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVRyYWNrQ29u
c3RyYWludCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhVHJhY2tDb25zdHJhaW50PiwgcHVibGlj
IFNjcmlwdFdyYXBwYWJsZSB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHAKaW5kZXggYzBmYzcwMy4uMzUz
ZTMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJ
Y2VDYW5kaWRhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDSWNlQ2FuZGlkYXRlLmNwcApAQCAtMzcsNyArMzcsNiBAQAogCiAjaW5jbHVkZSAiRGljdGlv
bmFyeS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JW
YWx1ZXMuaCIKICNpbmNsdWRlICJSVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lu
cy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwCmluZGV4IDgyYjg2ZTkuLjBj
MjkzNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1Rp
bWVQbHVnaW5SZXBsYWNlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVn
aW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcApAQCAtNDEsNyArNDEsNiBAQAogI2lu
Y2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2Ny
aXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlNj
cmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJVc2VyQWdlbnRTY3JpcHRzLmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaAppbmRleCBk
YWFlN2IxLi41YTE5MDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdp
bnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaApAQCAtMjgsNyArMjgsNyBA
QAogCiAjaW5jbHVkZSAiUGx1Z2luUmVwbGFjZW1lbnQuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0
ZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0
T2JqZWN0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtl
IGIvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCmluZGV4IGE5NzFmYTAuLjYzODQ1OTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Vc2VKU0MuY21ha2UKQEAgLTEyNCwxMiArMTI0LDEwIEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVf
U09VUkNFUwogICAgIGJpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCiAgICAg
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAKLSAgICBiaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCi0g
ICAgYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNwcAorICAgIGJpbmRpbmdzL2pzL1NjcmlwdEds
b2JhbE9iamVjdC5jcHAKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmNwcAogICAgIGJp
bmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmNwcAogICAgIGJpbmRpbmdzL2pzL1NjcmlwdFN0YXRl
LmNwcAotICAgIGJpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcAogICAgIGJpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKICAgICBiaW5kaW5ncy9qcy9XZWJDb3JlVHlwZWRBcnJh
eUNvbnRyb2xsZXIuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggMzEzZGE3YS4uY2E3YmRh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTE0MzAsNyArMTQzMCw2IEBAIF9fWk5LN1dlYkNv
cmUxMVJlbmRlckxheWVyMjRuZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmdFdgogX19aTks3V2ViQ29y
ZTExUmVuZGVyU3R5bGUxMWZvbnRNZXRyaWNzRXYKIF9fWk5LN1dlYkNvcmUxMVJlbmRlclN0eWxl
MjF2aXNpdGVkRGVwZW5kZW50Q29sb3JFaQogX19aTks3V2ViQ29yZTExUmVuZGVyU3R5bGU0Zm9u
dEV2Ci1fX1pOSzdXZWJDb3JlMTFTY3JpcHRWYWx1ZTlnZXRTdHJpbmdFUE4zSlNDOUV4ZWNTdGF0
ZUVSTjNXVEY2U3RyaW5nRQogX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTRlbmNsb3NpbmdM
YXllckV2CiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QxNWxvY2FsVG9BYnNvbHV0ZUVSS05T
XzEwRmxvYXRQb2ludEVqCiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QxNnJlcGFpbnRSZWN0
YW5nbGVFUktOU18xMExheW91dFJlY3RFYgpAQCAtMTUwMiw3ICsxNTAxLDYgQEAgX19aTks3V2Vi
Q29yZTE0RnJhbWVTZWxlY3Rpb24zMWdldENsaXBwZWRWaXNpYmxlVGV4dFJlY3RhbmdsZXNFUk4z
V1RGNlZlY3RvcklOU18KIF9fWk5LN1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uMzZyb290RWRpdGFi
bGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnRFdgogX19aTks3V2ViQ29yZTE0RnJhbWVTZWxlY3Rp
b242Ym91bmRzRWIKIF9fWk5LN1dlYkNvcmUxNEluc2VydGlvblBvaW50OGlzQWN0aXZlRXYKLV9f
Wk5LN1dlYkNvcmUxNEluc3BlY3RvclZhbHVlMTJ0b0pTT05TdHJpbmdFdgogX19aTks3V2ViQ29y
ZTE0UmVuZGVyTGlzdEl0ZW0xMG1hcmtlclRleHRFdgogX19aTks3V2ViQ29yZTE0UmVzb3VyY2VC
dWZmZXI0ZGF0YUV2CiBfX1pOSzdXZWJDb3JlMTRSZXNvdXJjZUJ1ZmZlcjRzaXplRXYKQEAgLTI2
MjUsNyArMjYyMyw3IEBAIF9fWk43V2ViQ29yZTE2SFRNTElucHV0RWxlbWVudDI1c2VsZWN0Q29s
b3JJbkNvbG9yQ2hvb3NlckVSS05TXzVDb2xvckUKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogX19a
TjdXZWJDb3JlMTVJbnNwZWN0b3JDbGllbnQzMWRvRGlzcGF0Y2hNZXNzYWdlT25Gcm9udGVuZFBh
Z2VFUE5TXzRQYWdlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTdJbnNwZWN0b3JDb3Vu
dGVyczEyY291bnRlclZhbHVlRU5TMF8xMUNvdW50ZXJUeXBlRQotX19aTjdXZWJDb3JlMTlJbnNw
ZWN0b3JDb250cm9sbGVyMTVjb25uZWN0RnJvbnRlbmRFUE5TXzI0SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsRQorX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMTVjb25uZWN0RnJvbnRl
bmRFUE45SW5zcGVjdG9yMjRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxFCiBfX1pON1dlYkNvcmUx
OUluc3BlY3RvckNvbnRyb2xsZXIxOGRpc2Nvbm5lY3RGcm9udGVuZEV2CiBfX1pON1dlYkNvcmUx
OUluc3BlY3RvckNvbnRyb2xsZXIxOHNldFByb2ZpbGVyRW5hYmxlZEViCiBfX1pON1dlYkNvcmUx
OUluc3BlY3RvckNvbnRyb2xsZXIyNWV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmRFbFJLTjNXVEY2
U3RyaW5nRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2oKaW5kZXggMjI3NjE5MC4uZTBjYTExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC03NDIsNyArNzQyLDcgQEAKICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0
ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xIVE1MTmFtZXMuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVycy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yRnJvbnRlbmQuY3BwIiAvPgotICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvclR5cGVCdWls
ZGVyLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcSlNBYnN0cmFjdFdvcmtlci5jcHAiPgogICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtMTcyODgsMjEgKzE3Mjg4LDcg
QEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xq
c1xTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIj4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9F
eGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdE9iamVjdC5jcHAiIC8+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRHbG9iYWxPYmplY3QuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0UHJvZmlsZS5jcHAiIC8+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRQcm9maWxlci5j
cHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
QEAgLTE3MzMyLDcgKzE3MzE4LDYgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRWYWx1ZS5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIj4KICAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE3NjQ1LDE0ICsx
NzYzMCw2IEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5z
cGVjdG9yXEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwIj4KLSAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJv
fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dp
bkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVj
dGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVj
dGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICA8L0NsQ29tcGlsZT4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JBbGxJbk9uZS5jcHAi
PgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtMTc2Njks
MTQgKzE3NjQ2LDYgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIj4KLSAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
X1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICA8L0NsQ29t
cGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JDYW52
YXNBZ2VudC5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KQEAgLTE3OTE3LDE0ICsxNzg4Niw2IEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2
NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvclZhbHVlcy5jcHAiPgotICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgIDwv
Q2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3Rv
cldvcmtlckFnZW50LmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgpAQCAtMTgxMTcsNyArMTgwNzgsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9i
aiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXElu
c3BlY3RvckZyb250ZW5kLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlc
RGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yT3ZlcmxheVBhZ2UuaCIgLz4KLSAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JUeXBlQnVpbGRlci5o
IiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9i
aiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXElu
c3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXFdlYkNvcmVc
RGVyaXZlZFNvdXJjZXNcSlNBYnN0cmFjdFdvcmtlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQXR0ci5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQmFyUHJvcC5oIiAvPgpAQCAt
MTg1ODcsMTEgKzE4NTQ4LDIwIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcV2ViQ29yZVxEZXJpdmVk
U291cmNlc1xKU1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGFjY2Vzc2liaWxpdHlcQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNzc1xDU1NJbWFnZVNldFZhbHVlLmgiIC8+Cisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5nc1xTY3Jp
cHRGdW5jdGlvbkNhbGwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRp
bmdIZWFkZXJzXGJpbmRpbmdzXFNjcmlwdE9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3NcU2NyaXB0VmFsdWUuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGhlYXBcQWxsb2NhdGlv
blNwYWNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVy
c1xoZWFwXEhlYXAuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdI
ZWFkZXJzXGhlYXBcU2xvdFZpc2l0b3IuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XEZvcndhcmRpbmdIZWFkZXJzXGhlYXBcU3Ryb25nSW5saW5lcy5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaGVhcFxXZWFrLmgiIC8+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9y
QWdlbnRCYXNlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVh
ZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIiAvPgorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5n
SGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiIC8+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9y
VHlwZUJ1aWxkZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdI
ZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JWYWx1ZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXG1hc21cWDg2QXNzZW1ibGVyLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xwYXJzZXJcU291cmNlQ29k
ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNccGFy
c2VyXFNvdXJjZVByb3ZpZGVyLmgiIC8+CkBAIC0yMDY0MiwxNSArMjA2MTIsMTMgQEAKICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdENhbGxTdGFja0ZhY3Rvcnku
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdENvbnRy
b2xsZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlw
dERlYnVnU2VydmVyLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xq
c1xTY3JpcHRGdW5jdGlvbkNhbGwuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJp
bmRpbmdzXGpzXFNjcmlwdEhlYXBTbmFwc2hvdC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0T2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRHbG9iYWxPYmplY3QuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdFByb2ZpbGUuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdFByb2ZpbGVOb2RlLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRQcm9maWxlci5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0U291cmNlQ29k
ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0U3Rh
dGUuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdFZh
bHVlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRX
cmFwcGFibGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmlu
ZGluZ3NcanNcU291cmNlSUQuaCIgLz4KQEAgLTIwOTYxLDggKzIwOTI5LDYgQEAKICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbmplY3RlZFNjcmlwdE1vZHVsZS5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckFnZW50LmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3Jc
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JCYXNlQWdlbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JDYW52YXNBZ2VudC5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckNhbnZhc0luc3RydW1lbnRhdGlv
bi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckNs
aWVudC5oIiAvPgpAQCAtMjA5OTgsNyArMjA5NjQsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvclN0eWxlU2hlZXQuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JUaW1lbGluZUFnZW50
LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yVmFs
dWVzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9y
V2ViQWdlbnRCYXNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3Jc
SW5zcGVjdG9yV29ya2VyQWdlbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGlu
c3BlY3RvclxJbnNwZWN0b3JXb3JrZXJSZXNvdXJjZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caW5zcGVjdG9yXEluc3RydW1lbnRpbmdBZ2VudHMuaCIgLz4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpp
bmRleCBlZTI1ODBmLi4xYWY1NjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCkBAIC0yNTMsNiArMjUzLDkgQEAK
ICAgICA8RmlsdGVyIEluY2x1ZGU9IkZvcndhcmRpbmdIZWFkZXJzIj4KICAgICAgIDxVbmlxdWVJ
ZGVudGlmaWVyPns5NTIxNmE3MC1hM2IyLTQ1M2MtYTY2Zi1hODFjYzFhYmVmZWV9PC9VbmlxdWVJ
ZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iRm9yd2FyZGlu
Z0hlYWRlcnNcYmluZGluZ3MiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezIxMzQzMTI0LTEy
MzQtNDU0Mi1hOGFhLWViYWM4NzgxMjMxMn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0
ZXI+CiAgICAgPEZpbHRlciBJbmNsdWRlPSJGb3J3YXJkaW5nSGVhZGVyc1x5YXJyIj4KICAgICAg
IDxVbmlxdWVJZGVudGlmaWVyPnszYjliMTgxOS0xYjMxLTQ3NzEtYjEyYS0zMmMyMTBmODQ3NmR9
PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgpAQCAtNDU2OSwxMCArNDU3Miw3IEBA
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHREZWJ1Z1NlcnZl
ci5jcHAiPgogICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xDb21w
aWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0RnVuY3Rp
b25DYWxsLmNwcCI+Ci0gICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+Ci0gICAgPC9D
bENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRP
YmplY3QuY3BwIj4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlw
dEdsb2JhbE9iamVjdC5jcHAiPgogICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgog
ICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNc
U2NyaXB0UHJvZmlsZS5jcHAiPgpAQCAtNDU4NCw5ICs0NTg0LDYgQEAKICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdFN0YXRlLmNwcCI+CiAgICAgICA8RmlsdGVy
PmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRWYWx1ZS5jcHAiPgotICAgICAgPEZpbHRlcj5i
aW5kaW5nc1xqczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cYmluZGluZ3NcanNcU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCI+CiAgICAgICA8
RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC00ODMwLDE4
ICs0ODI3LDEyIEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVj
dG9yQWdlbnQuY3BwIj4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9D
bENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9y
QWdlbnRSZWdpc3RyeS5jcHAiPgotICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KLSAg
ICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNw
ZWN0b3JBbGxJbk9uZS5jcHAiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAg
ICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwIj4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9y
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxp
bnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIj4KLSAgICAgIDxGaWx0ZXI+
aW5zcGVjdG9yPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwIj4KICAgICAgIDxGaWx0
ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC00OTMyLDkgKzQ5MjMs
NiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvclRpbWVs
aW5lQWdlbnQuY3BwIj4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9D
bENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9y
VmFsdWVzLmNwcCI+Ci0gICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgotICAgIDwvQ2xD
b21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3Rvcldv
cmtlckFnZW50LmNwcCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwv
Q2xDb21waWxlPgpAQCAtNTI5Myw3ICs1MjgxLDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JGcm9udGVuZC5jcHAiPgogICAgICAg
PEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvclR5cGVC
dWlsZGVyLmNwcCI+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmNwcCI+CiAgICAgICA8RmlsdGVyPkRlcml2
ZWRTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
V2ViQ29yZVxEZXJpdmVkU291cmNlc1xKU0Fic3RyYWN0V29ya2VyLmNwcCI+CkBAIC0xMTUxNywx
MyArMTE1MDUsMTAgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNj
cmlwdERlYnVnU2VydmVyLmgiPgogICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgog
ICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNc
U2NyaXB0RnVuY3Rpb25DYWxsLmgiPgotICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVy
PgotICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3Nc
anNcU2NyaXB0SGVhcFNuYXBzaG90LmgiPgogICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmls
dGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGlu
Z3NcanNcU2NyaXB0T2JqZWN0LmgiPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGlu
Z3NcanNcU2NyaXB0R2xvYmFsT2JqZWN0LmgiPgogICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmlu
ZGluZ3NcanNcU2NyaXB0UHJvZmlsZS5oIj4KQEAgLTExNTQxLDkgKzExNTI2LDYgQEAKICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdFN0YXRlLmgiPgogICAgICAg
PEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0VmFsdWUuaCI+Ci0gICAgICA8Rmls
dGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRXcmFwcGFibGUuaCI+CiAgICAgICA8Rmls
dGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0xMjIwMSw2ICsx
MjE4MywxNSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cc3ZnXHByb3BlcnRpZXNcU1ZH
VHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZi5oIj4KICAgICAgIDxGaWx0ZXI+cmVuZGVyaW5n
XHN2Z1xwcm9wZXJ0aWVzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNh
bGwuaCI+CisgICAgICA8RmlsdGVyPkZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzPC9GaWx0ZXI+
CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5n
SGVhZGVyc1xiaW5kaW5nc1xTY3JpcHRPYmplY3QuaCI+CisgICAgICA8RmlsdGVyPkZvcndhcmRp
bmdIZWFkZXJzXGJpbmRpbmdzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5nc1xTY3JpcHRWYWx1ZS5o
Ij4KKyAgICAgIDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3M8L0ZpbHRlcj4KKyAg
ICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFk
ZXJzXHJ1bnRpbWVcQXJnTGlzdC5oIj4KICAgICAgIDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRlcnNc
cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMTIyNDYsOSArMTIyMzcsMjQg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGhlYXBcU3Ry
b25nLmgiPgogICAgICAgPEZpbHRlcj5Gb3J3YXJkaW5nSGVhZGVyc1xoZWFwPC9GaWx0ZXI+CiAg
ICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVh
ZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yQWdlbnRCYXNlLmgiPgorICAgICAgPEZpbHRlcj5Gb3J3
YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0
b3JBZ2VudFJlZ2lzdHJ5LmgiPgorICAgICAgPEZpbHRlcj5Gb3J3YXJkaW5nSGVhZGVyc1xpbnNw
ZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ci5oIj4KKyAgICAgIDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yPC9GaWx0ZXI+
CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5n
SGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiPgogICAgICAgPEZp
bHRlcj5Gb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVk
ZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3Rv
clxJbnNwZWN0b3JUeXBlQnVpbGRlci5oIj4KKyAgICAgIDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRl
cnNcaW5zcGVjdG9yPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yVmFsdWVzLmgi
PgorICAgICAgPEZpbHRlcj5Gb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3I8L0ZpbHRlcj4KKyAg
ICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhpc3RvcnlcQmFja0Zv
cndhcmRDbGllbnQuaCI+CiAgICAgICA8RmlsdGVyPmhpc3Rvcnk8L0ZpbHRlcj4KICAgICA8L0Ns
SW5jbHVkZT4KQEAgLTEyNDAyLDEyICsxMjQwOCw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgiPgogICAgICAg
PEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIj4K
LSAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFzZUFnZW50LmgiPgot
ICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JDYW52YXNBZ2VudC5oIj4K
ICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0x
MjUxMyw3ICsxMjUxMyw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3Jc
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIj4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0
ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0
b3JcSW5zcGVjdG9yVmFsdWVzLmgiPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVj
dG9yXEluc3BlY3RvcldlYkFnZW50QmFzZS5oIj4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9G
aWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNw
ZWN0b3JcSW5zcGVjdG9yV29ya2VyQWdlbnQuaCI+CkBAIC0xMzA3OSw3ICsxMzA3OSw3IEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9y
T3ZlcmxheVBhZ2UuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+CiAg
ICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCI+CisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmgiPgog
ICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcSlNBYnN0cmFjdFdvcmtl
ci5oIj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA3ZGNjOTBjLi4xYTIzYWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjI1LDggKzEyMjUsNiBAQAogCQk0
MDlFQkRDNTE2QjdGM0NBMDBDQkEzRkMgLyogSlNDU1NGb250RmFjZUxvYWRFdmVudC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDlFQkRDNDE2QjdG
M0NBMDBDQkEzRkMgLyogSlNDU1NGb250RmFjZUxvYWRFdmVudC5jcHAgKi87IH07CiAJCTQwRUNB
RTdFMTZCOEI2NzIwMEMzNjEwMyAvKiBKU0RPTUVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MEVDQUU3RDE2QjhCNjcyMDBDMzYxMDMgLyogSlNE
T01FcnJvci5oICovOyB9OwogCQk0MEVDQUU4MTE2QjhCNjhBMDBDMzYxMDMgLyogSlNET01FcnJv
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MEVD
QUU4MDE2QjhCNjhBMDBDMzYxMDMgLyogSlNET01FcnJvci5jcHAgKi87IH07Ci0JCTQxMDAyQ0NE
MEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDAyQ0NCMEY2NkVERUYwMDlFNjYwRCAv
KiBTY3JpcHRGdW5jdGlvbkNhbGwuaCAqLzsgfTsKLQkJNDEwMDJDQ0UwRjY2RURFRjAwOUU2NjBE
IC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTAwMkNDQzBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rp
b25DYWxsLmNwcCAqLzsgfTsKIAkJNDEwQjdFNzIxMDQ1RkFCMDAwRDgyMjRGIC8qIEpTTWVzc2Fn
ZUV2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxMEI3RTcxMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5j
cHAgKi87IH07CiAJCTQxMjMwODFCMTM4QzQyOTcwMEJDQ0ZDQSAvKiBXZWJDb3JlLmZyYW1ld29y
ayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjE5
QjFBMDgyNDVFNUEwMDFFOUFCQyAvKiBXZWJDb3JlLmZyYW1ld29yayAqLzsgfTsKIAkJNDEyMzA5
MTMxMzhDNDJGRjAwQkNDRkNBIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdv
cmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY4MjE2Mjk5MDI5RjRGQjUw
MTAwMDEzMSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi87IH07CkBAIC0xMjk1LDggKzEy
OTMsOCBAQAogCQk0MUYwNjE4RjBGNUYwNjk4MDBBMDdFQUMgLyogQ29uc29sZU1lc3NhZ2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGMDYxOEQw
RjVGMDY5ODAwQTA3RUFDIC8qIENvbnNvbGVNZXNzYWdlLmNwcCAqLzsgfTsKIAkJNDFGMDYyMTQw
RjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjA2MjEyMEY1RjE5MjYwMEEw
N0VBQyAvKiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmggKi87IH07CiAJCTQxRjA2MjE1MEY1
RjE5MjYwMEEwN0VBQyAvKiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjA2MjEzMEY1RjE5MjYwMEEw
N0VBQyAvKiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcCAqLzsgfTsKLQkJNDFGMDY2RTQw
RjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGMDY2RTIwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlw
dE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCTQxRjA2NkU1MEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRPYmplY3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGMDY2RTMwRjY0QkNGNjAw
QTA3RUFDIC8qIFNjcmlwdE9iamVjdC5jcHAgKi87IH07CisJCTQxRjA2NkU0MEY2NEJDRjYwMEEw
N0VBQyAvKiBTY3JpcHRHbG9iYWxPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjA2NkUyMEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRHbG9i
YWxPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk0MUYwNjZFNTBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0R2xvYmFsT2JqZWN0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjA2NkUzMEY2
NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRHbG9iYWxPYmplY3QuY3BwICovOyB9OwogCQk0MUYxRDIx
RjBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYxRDIxRDBFRjM1QzJBMDBEQTg3
NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFGMUQyMjAwRUYzNUMyQTAwREE4NzUzIC8qIFNjcmlw
dENhY2hlZEZyYW1lRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUYxRDIxRTBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVE
YXRhLmNwcCAqLzsgfTsKIAkJNDFGNTg0QzcxMDQ2NTJDQjAwOUNBQTY0IC8qIEpTTWVzc2FnZVBv
cnRDdXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxRjU4NEM2MTA0NjUyQ0IwMDlDQUE2NCAvKiBKU01lc3NhZ2VQb3J0Q3VzdG9tLmggKi87IH07
CkBAIC0xNjA5LDggKzE2MDcsNiBAQAogCQk0RjE1MzRFMDExQjUzMzAyMDAyMUZEODYgLyogRWRp
dGluZ0JlaGF2aW9yVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDRGMTUzNERGMTFCNTMzMDIwMDIxRkQ4NiAvKiBFZGl0aW5nQmVoYXZpb3JUeXBl
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRG
MkQyMDU0MTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYyRDIwNTIxMkVBRTdCMzAwNUMyODc0
IC8qIEluc3BlY3RvckFnZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNEYyRDIwNTUxMkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3RvckFnZW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMkQy
MDUzMTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5jcHAgKi87IH07Ci0JCTRGMzI4
OUI1MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYzMjg5QjMxMUE0MkFBQjAwNUFCRTdF
IC8qIEluc3BlY3RvclZhbHVlcy5jcHAgKi87IH07Ci0JCTRGMzI4OUI2MTFBNDJBQUIwMDVBQkU3
RSAvKiBJbnNwZWN0b3JWYWx1ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDRGMzI4OUI0MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0RjRG
NUZGQjExQ0JEMkUxMDBBMTg2QkYgLyogSW5zcGVjdG9yRnJvbnRlbmQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEY0RjVGRkExMUNCRDJEMjAwQTE4
NkJGIC8qIEluc3BlY3RvckZyb250ZW5kLmNwcCAqLzsgfTsKIAkJNEY2RkRENjQxMzQxREVERDAw
MUY4RUUzIC8qIEluc3BlY3RvclBhZ2VBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjZGREQ2MjEzNDFERUREMDAxRjhFRTMgLyogSW5zcGVj
dG9yUGFnZUFnZW50LmNwcCAqLzsgfTsKIAkJNEY2RkRENjUxMzQxREVERDAwMUY4RUUzIC8qIElu
c3BlY3RvclBhZ2VBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNEY2RkRENjMxMzQxREVERDAwMUY4RUUzIC8qIEluc3BlY3RvclBhZ2VBZ2VudC5o
ICovOyB9OwpAQCAtMTg5Nyw5ICsxODkzLDkgQEAKIAkJNTNFRjc2NkMxNjUzMTk5NDAwNENCRTQ5
IC8qIFNldHRpbmdzTWFjcm9zLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0VGNzY2QTE2NTMwQTYxMDA0Q0JFNDkgLyogU2V0
dGluZ3NNYWNyb3MuaCAqLzsgfTsKIAkJNTUwQTBCQzkwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxp
ZmllZE5hbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovOyB9Owog
CQk1NTBBMEJDQTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzgwODVGNjAzOTAwNzM1
M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwotCQk1NzNEMTM0NzE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yVHlw
ZUJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTczRDEzNDUxNENFMzlGRjAwNTdBQkNBIC8qIEluc3BlY3RvclR5cGVCdWlsZGVyLmNwcCAq
LzsgfTsKKwkJNTczRDEzNDcxNENFMzlGRjAwNTdBQkNBIC8qIEluc3BlY3RvcldlYlR5cGVCdWls
ZGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
NzNEMTM0NTE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmNwcCAq
LzsgfTsKIAkJNTc4REEyMEUxNTIwRUI4QzAwNjE0MUMxIC8qIEluc3BlY3RvckZyb250ZW5kLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjRGNUZGQzEx
Q0JEMzAxMDBBMTg2QkYgLyogSW5zcGVjdG9yRnJvbnRlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1NzhEQTIwRjE1MjBFQkEzMDA2MTQxQzEg
LyogSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU3M0QxMzQ2MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JUeXBl
QnVpbGRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTU3OERBMjBGMTUyMEVCQTMwMDYxNDFDMSAvKiBJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3M0QxMzQ2
MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1N0I3OTFBMzE0QzZBNjI5
MDBGMjAyRDEgLyogQ29udGVudERpc3RyaWJ1dG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3Qjc5MTlGMTRDNkE2MjkwMEYyMDJEMSAvKiBDb250
ZW50RGlzdHJpYnV0b3IuY3BwICovOyB9OwogCQk1N0I3OTFBNDE0QzZBNjI5MDBGMjAyRDEgLyog
Q29udGVudERpc3RyaWJ1dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1N0I3OTFBMDE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudERpc3RyaWJ1dG9y
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTdD
RjQ5NzQxNEVFMzZENzAwRUNGRjE0IC8qIEluc2VydGlvblBvaW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3Q0Y0OTcyMTRFRTM2RDcwMEVDRkYx
NCAvKiBJbnNlcnRpb25Qb2ludC5jcHAgKi87IH07CkBAIC0yMjAxLDcgKzIxOTcsNiBAQAogCQk3
QTc0RUNCQjEwMTgzOUE2MDBCRjkzOUUgLyogSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTc0RUNCOTEwMTgz
OUE2MDBCRjkzOUUgLyogSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggKi87IH07CiAJCTdBNzRF
Q0JEMTAxODM5REEwMEJGOTM5RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTc0RUNCQzEw
MTgzOURBMDBCRjkzOUUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwICovOyB9
OwogCQk3QUEzNjVFRTEyRTcyNjU0MDBEQ0EyNDIgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQTM2NUVE
MTJFNzI2NTQwMERDQTI0MiAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwICovOyB9OwotCQk3
QUE1MUI2RTE0ODNCNjE2MDBBRDI3NTIgLyogSW5zcGVjdG9yQmFzZUFnZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUE1MUI2QzE0ODNCNjE2MDBB
RDI3NTIgLyogSW5zcGVjdG9yQmFzZUFnZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0FBNTFERDUxNDg1MDZBOTAwQUQyNzUyIC8qIEluc3Bl
Y3Rvck1lbW9yeUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdBQTUxREQzMTQ4NTA2QTkwMEFEMjc1MiAvKiBJbnNwZWN0b3JNZW1vcnlBZ2Vu
dC5jcHAgKi87IH07CiAJCTdBQTUxREQ2MTQ4NTA2QTkwMEFEMjc1MiAvKiBJbnNwZWN0b3JNZW1v
cnlBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0FBNTFERDQxNDg1MDZBOTAwQUQyNzUyIC8qIEluc3BlY3Rvck1lbW9yeUFnZW50LmggKi87IH07
CiAJCTdBQUJBMjU5MTRCQzYxMzMwMEFBOUExMSAvKiBET01FZGl0b3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FBQkEyNTcxNEJDNjEzMzAwQUE5
QTExIC8qIERPTUVkaXRvci5jcHAgKi87IH07CkBAIC0zMDIxLDggKzMwMTYsNiBAQAogCQk5MzQ0
MkM5RTBEMkIzMzVDMDAzMzhGRjkgLyogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNDQyQzlEMEQyQjMzNUMw
MDMzOEZGOSAvKiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oICovOyB9OwogCQk5MzQ0MkNBMDBE
MkIzMzYwMDAzMzhGRjkgLyogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0NDJDOUYwRDJCMzM2MDAwMzM4
RkY5IC8qIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcCAqLzsgfTsKIAkJOTM0OTA3RTQxMjVC
QkJDODAwN0YyM0EwIC8qIEdyYXBoaWNzQ29udGV4dENHLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzQ5MDdFMzEyNUJCQkM4MDA3RjIzQTAgLyogR3Jh
cGhpY3NDb250ZXh0Q0cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQk5MzRDQzBFMTBFRDM5RDZGMDBBNjU4RjIgLyogU2NyaXB0VmFsdWUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0Q0MwREYwRUQz
OUQ2RjAwQTY1OEYyIC8qIFNjcmlwdFZhbHVlLmNwcCAqLzsgfTsKLQkJOTM0Q0MwRTIwRUQzOUQ2
RjAwQTY1OEYyIC8qIFNjcmlwdFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5MzRDQzBFMDBFRDM5RDZGMDBBNjU4RjIgLyogU2NyaXB0VmFsdWUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzRD
QzEwQTBFREIyMjM5MDBBNjU4RjIgLyogU2NyaXB0U291cmNlQ29kZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0Q0MxMDkwRURCMjIzOTAwQTY1OEYy
IC8qIFNjcmlwdFNvdXJjZUNvZGUuaCAqLzsgfTsKIAkJOTM0RDlCQTUwQjhDMTE2QjAwN0I0MkE5
IC8qIFdlYkNvcmVOU1N0cmluZ0V4dHJhcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzNEQ5QkE0MEI4QzExNkIwMDdCNDJBOSAvKiBXZWJDb3JlTlNT
dHJpbmdFeHRyYXMubW0gKi87IH07CiAJCTkzNEQ5QkE3MEI4QzExNzUwMDdCNDJBOSAvKiBXZWJD
b3JlTlNTdHJpbmdFeHRyYXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzNEQ5QkE2MEI4QzExNzUwMDdCNDJBOSAvKiBXZWJDb3JlTlNTdHJpbmdFeHRy
YXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
MzUyNCwxNSArMzUxNywxMiBAQAogCQlBNTEzQjNEODExNEIxNjZBMDAxQzQyOUIgLyogS2V5RXZl
bnRDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1Qzk3NEQwMTE0ODVGRjEwMDY2RjJBQiAvKiBLZXlFdmVudENvY29hLm1tICovOyB9OwogCQlB
NTRBODJFQzE1MjI4RDJGMDBDNzJCQTYgLyogRE9NTm9kZVByaXZhdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NEE4MkVBMTUyMjhDQTMwMEM3MkJB
NiAvKiBET01Ob2RlUHJpdmF0ZS5oICovOyB9OwogCQlBNTRBODJGMTE1MjI4REY2MDBDNzJCQTYg
LyogRE9NTm9kZVByaXZhdGUuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NEE4MkVBMTUyMjhDQTMwMEM3MkJBNiAvKiBET01O
b2RlUHJpdmF0ZS5oICovOyB9OwotCQlBNTU2QzI4ODE4MzIwNkE4MDA4Q0I3MjAgLyogSW5zcGVj
dG9yQWdlbnRSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTU2QzI4NjE4MzIwNkE4MDA4Q0I3MjAgLyogSW5zcGVjdG9yQWdlbnRSZWdp
c3RyeS5jcHAgKi87IH07Ci0JCUE1NTZDMjg5MTgzMjA2QTgwMDhDQjcyMCAvKiBJbnNwZWN0b3JB
Z2VudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTU2QzI4NzE4MzIwNkE4MDA4Q0I3MjAgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1NzMy
QjBBMTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTczMkIwODEzNkExNjFEMDA1QzhEN0Mg
LyogRGF0ZUNvbXBvbmVudHMuY3BwICovOyB9OwogCQlBNTczMkIwQjEzNkExNjFEMDA1QzhEN0Mg
LyogRGF0ZUNvbXBvbmVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1NzMyQjA5MTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5oICov
OyB9OworCQlBNTkzQ0Y4QjE4NDA1MzUyMDBCRkNFMjcgLyogSW5zcGVjdG9yV2ViQWdlbnRCYXNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTkzQ0Y4
QTE4NDA1MzUyMDBCRkNFMjcgLyogSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTVBMkFGMEIxODI5NzM0MzAw
REUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1QTJBRjA5MTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdn
YWJsZS5jcHAgKi87IH07CiAJCUE1QTJBRjBDMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdn
YWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVB
MkFGMEExODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmggKi87IH07CiAJCUE1QUJC
Nzg3MTNCOTA0QkMwMEYxOTdFMyAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QUJCNzg2MTNCOTA0QkMw
MEYxOTdFMyAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCAqLzsgfTsKLQkJQTVBQzRBRUYx
ODMzNjk3NTAwNzExNEUwIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QUM0QUVEMTgzMzY5NzUw
MDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgKi87IH07Ci0JCUE1QUM0
QUYwMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBQzRBRUUxODMzNjk3
NTAwNzExNEUwIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTVBRkIzNEYxMTUxNTFBNzAwQjA0
NUNCIC8qIFN0ZXBSYW5nZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNUFGQjM0RDExNTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmNwcCAqLzsg
fTsKIAkJQTVBRkIzNTAxMTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBRkIzNEUxMTUxNTFBNzAwQjA0
NUNCIC8qIFN0ZXBSYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUE1QzU2NkFCMTI3QTNBQUQwMEU4QTNGRiAvKiBEaXNrSW1hZ2VDYWNoZUNs
aWVudElPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTVDNTY2QUExMjdBM0FBRDAwRThBM0ZGIC8qIERpc2tJbWFnZUNhY2hlQ2xpZW50SU9TLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc5MTksOCAr
NzkwOSw2IEBACiAJCTQwOUVCREM0MTZCN0YzQ0EwMENCQTNGQyAvKiBKU0NTU0ZvbnRGYWNlTG9h
ZEV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ1NTRm9u
dEZhY2VMb2FkRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MEVDQUU3
RDE2QjhCNjcyMDBDMzYxMDMgLyogSlNET01FcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0RPTUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQw
RUNBRTgwMTZCOEI2OEEwMEMzNjEwMyAvKiBKU0RPTUVycm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk0MTAwMkNDQjBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEZ1bmN0aW9uQ2FsbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTAwMkNDQzBGNjZFREVGMDA5RTY2MEQg
LyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxMEI3RTcxMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lc3NhZ2VFdmVudEN1c3Rv
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjdENTM2MEY4QUFCMUQwMEU0
MjRGNSAvKiBTY3JpcHRTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTY3JpcHRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzhE
MzMzMTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRXZlbnRDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC03OTk1LDggKzc5ODMsOCBAQAogCQk0MUYwNjE4RDBGNUYwNjk4MDBBMDdFQUMgLyogQ29u
c29sZU1lc3NhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29u
c29sZU1lc3NhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUYwNjIxMjBG
NUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRjA2MjEzMEY1RjE5MjYwMEEwN0VBQyAvKiBJbnNw
ZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk0MUYwNjZFMjBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0T2JqZWN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdE9iamVjdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk0MUYwNjZFMzBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0T2Jq
ZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdE9iamVj
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRjA2NkUyMEY2NEJDRjYwMEEw
N0VBQyAvKiBTY3JpcHRHbG9iYWxPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2NyaXB0R2xvYmFsT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQxRjA2NkUzMEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRHbG9iYWxPYmplY3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0R2xvYmFsT2JqZWN0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGMUQyMUQwRUYzNUMyQTAwREE4NzUzIC8q
IFNjcmlwdENhY2hlZEZyYW1lRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTY3JpcHRDYWNoZWRGcmFtZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDFGMUQyMUUwRUYzNUMyQTAwREE4NzUzIC8qIFNjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRDYWNoZWRGcmFtZURhdGEu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUY1ODRDNjEwNDY1MkNCMDA5Q0FB
NjQgLyogSlNNZXNzYWdlUG9ydEN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU01lc3NhZ2VQb3J0Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC04MzU1LDggKzgzNDMsNiBAQAogCQk0RjE1MzRERjExQjUzMzAyMDAyMUZEODYgLyogRWRpdGlu
Z0JlaGF2aW9yVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdGlu
Z0JlaGF2aW9yVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEYyRDIwNTIx
MkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3RvckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEluc3BlY3RvckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTRGMkQyMDUzMTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JBZ2VudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTRGMzI4OUIzMTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNw
ZWN0b3JWYWx1ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5z
cGVjdG9yVmFsdWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNEYzMjg5QjQx
MUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JWYWx1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNEY0RjVGRkExMUNCRDJEMjAwQTE4NkJGIC8qIEluc3BlY3RvckZyb250ZW5kLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckZyb250ZW5kLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEY0RjVGRkMxMUNCRDMwMTAwQTE4NkJG
IC8qIEluc3BlY3RvckZyb250ZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEluc3BlY3RvckZyb250ZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGNkZE
RDYyMTM0MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yUGFnZUFnZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg2NzAsOCArODY1Niw4IEBACiAJCTUzRUY3NjZBMTY1
MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTZXR0aW5nc01hY3Jvcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBRdWFsaWZpZWRO
YW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9
IDA7IH07CiAJCTU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1YWxpZmll
ZE5hbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9
IDA7IH07Ci0JCTU3M0QxMzQ1MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JUeXBl
QnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3M0QxMzQ2MTRDRTM5
RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JUeXBlQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1NzNEMTM0NTE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yV2ViVHlwZUJ1
aWxkZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rv
cldlYlR5cGVCdWlsZGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3M0Qx
MzQ2MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3Qjc5MTlGMTRDNkE2MjkwMEYyMDJEMSAvKiBD
b250ZW50RGlzdHJpYnV0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ29udGVudERpc3RyaWJ1dG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTdCNzkxQTAxNEM2QTYyOTAwRjIwMkQxIC8qIENvbnRlbnREaXN0cmlidXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50RGlzdHJpYnV0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdDRjQ5NzIxNEVFMzZENzAwRUNGRjE0IC8qIEluc2VydGlv
blBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc2VydGlv
blBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkwMDcsNyArODk5Myw2
IEBACiAJCTdBNzRFQ0I5MTAxODM5QTYwMEJGOTM5RSAvKiBJbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBNzRFQ0JDMTAxODM5REEw
MEJGOTM5RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBQTM2NUVEMTJFNzI2NTQwMERDQTI0
MiAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJN0FBNTFCNkMxNDgzQjYxNjAwQUQyNzUyIC8qIEluc3BlY3RvckJhc2VBZ2Vu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JCYXNlQWdlbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FBNTFERDMxNDg1MDZBOTAwQUQyNzUy
IC8qIEluc3BlY3Rvck1lbW9yeUFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEluc3BlY3Rvck1lbW9yeUFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0FBNTFERDQxNDg1MDZBOTAwQUQyNzUyIC8qIEluc3BlY3Rvck1lbW9yeUFnZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3Rvck1lbW9yeUFnZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBQUJBMjU3MTRCQzYxMzMwMEFBOUEx
MSAvKiBET01FZGl0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RE9NRWRpdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk4MTQsOCArOTc5
OSw2IEBACiAJCTkzNDQyQzlEMEQyQjMzNUMwMDMzOEZGOSAvKiBIVE1MVGFibGVSb3dzQ29sbGVj
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MVGFibGVSb3dzQ29s
bGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzQ0MkM5RjBEMkIzMzYw
MDAzMzhGRjkgLyogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5MzQ5MDdFMzEyNUJCQkM4MDA3RjIzQTAgLyogR3JhcGhp
Y3NDb250ZXh0Q0cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3ND
b250ZXh0Q0cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTM0Q0MwREYwRUQzOUQ2
RjAwQTY1OEYyIC8qIFNjcmlwdFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNjcmlwdFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
OTM0Q0MwRTAwRUQzOUQ2RjAwQTY1OEYyIC8qIFNjcmlwdFZhbHVlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkzNENDMTA5MEVEQjIyMzkwMEE2NThGMiAvKiBTY3JpcHRTb3VyY2VDb2RlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdFNvdXJjZUNvZGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM0RDlCQTQwQjhDMTE2QjAwN0I0MkE5IC8qIFdlYkNv
cmVOU1N0cmluZ0V4dHJhcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXZWJDb3JlTlNTdHJpbmdFeHRyYXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzNEQ5QkE2MEI4QzExNzUwMDdCNDJBOSAvKiBXZWJDb3JlTlNTdHJpbmdFeHRyYXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVOU1N0cmluZ0V4dHJhcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAzNTUsMTkgKzEwMzM4LDE2IEBACiAJ
CUE1MTgyMjU0MTdFMkEwRDQwMEE5QkExRCAvKiBJbnNwZWN0b3JPdmVybGF5UGFnZS5jc3MgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LmNzczsg
cGF0aCA9IEluc3BlY3Rvck92ZXJsYXlQYWdlLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTUxODIyNTUxN0UyQTBENDAwQTlCQTFEIC8qIEluc3BlY3Rvck92ZXJsYXlQYWdlLmpz
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5qYXZhc2NyaXB0OyBwYXRoID0gSW5zcGVjdG9yT3ZlcmxheVBhZ2UuanM7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1NEE4MkVBMTUyMjhDQTMwMEM3MkJBNiAvKiBET01Ob2Rl
UHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01Ob2RlUHJpdmF0
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTU2QzI4NjE4MzIwNkE4MDA4Q0I3
MjAgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQTU1NkMyODcxODMyMDZBODAwOENCNzIwIC8qIEluc3BlY3RvckFnZW50
UmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQWdl
bnRSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTczMkIwODEzNkEx
NjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRGF0ZUNvbXBvbmVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNTczMkIwOTEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0ZUNvbXBvbmVudHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU5M0NGNzIxODQwMkNFOTAwQkZDRTI3IC8qIHByb3RvY29s
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZm9sZGVy
OyBwYXRoID0gcHJvdG9jb2w7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1OTNDRjcz
MTg0MDJENEIwMEJGQ0UyNyAvKiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5ICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9u
OyBwYXRoID0gQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTU5M0NGNzQxODQwMkQ0QjAwQkZDRTI3IC8qIENvZGVHZW5lcmF0b3JJbnNwZWN0
b3JTdHJpbmdzLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gQ29kZUdlbmVyYXRvckluc3BlY3RvclN0
cmluZ3MucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1OTNDRjc1MTg0MDJENEIw
MEJGQ0UyNyAvKiBjb21iaW5lLWphdmFzY3JpcHQtcmVzb3VyY2VzLnBsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgcGF0
aCA9ICJjb21iaW5lLWphdmFzY3JpcHQtcmVzb3VyY2VzLnBsIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTU5M0NGOEExODQwNTM1MjAwQkZDRTI3IC8qIEluc3BlY3RvcldlYkFnZW50
QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JXZWJBZ2Vu
dEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVBMkFGMDkxODI5NzM0MzAw
REUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFBhZ2VEZWJ1Z2dhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTVBMkFGMEExODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VEZWJ1Z2dhYmxlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE1QUJCNzg2MTNCOTA0QkMwMEYxOTdFMyAvKiBMaW5lQnJlYWtJdGVy
YXRvclBvb2xJQ1UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGluZUJyZWFr
SXRlcmF0b3JQb29sSUNVLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1QUM0QUVE
MTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1QUM0QUVFMTgzMzY5NzUwMDcx
MTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNUFGQjM0RDExNTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0ZXBSYW5nZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QUZCMzRFMTE1MTUxQTcwMEIwNDVDQiAvKiBT
dGVwUmFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RlcFJhbmdlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QzU2NkFBMTI3QTNBQUQwMEU4QTNGRiAv
KiBEaXNrSW1hZ2VDYWNoZUNsaWVudElPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEaXNrSW1hZ2VDYWNoZUNsaWVudElPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTQ0NjMsOCArMTQ0NDMsOCBAQAogCQkJCTRGNzA3QTk4MTFFRjY3OTQwMEFDREE2OSAv
KiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCAqLywKIAkJCQk0RjRGNUZGQTExQ0JEMkQy
MDBBMTg2QkYgLyogSW5zcGVjdG9yRnJvbnRlbmQuY3BwICovLAogCQkJCTRGNEY1RkZDMTFDQkQz
MDEwMEExODZCRiAvKiBJbnNwZWN0b3JGcm9udGVuZC5oICovLAotCQkJCTU3M0QxMzQ1MTRDRTM5
RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5jcHAgKi8sCi0JCQkJNTczRDEzNDYx
NENFMzlGRjAwNTdBQkNBIC8qIEluc3BlY3RvclR5cGVCdWlsZGVyLmggKi8sCisJCQkJNTczRDEz
NDUxNENFMzlGRjAwNTdBQkNBIC8qIEluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5jcHAgKi8sCisJ
CQkJNTczRDEzNDYxNENFMzlGRjAwNTdBQkNBIC8qIEluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5o
ICovLAogCQkJCTdBMEU3NkQ4MTBCRjA1OTgwMEEwMjc2RSAvKiBKU0luamVjdGVkU2NyaXB0SG9z
dC5jcHAgKi8sCiAJCQkJN0EwRTc2RDkxMEJGMDU5ODAwQTAyNzZFIC8qIEpTSW5qZWN0ZWRTY3Jp
cHRIb3N0LmggKi8sCiAJCQkJN0EwRTc3MUMxMEMwMERCMTAwQTAyNzZFIC8qIEpTSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmNwcCAqLywKQEAgLTE0NTE2LDEzICsxNDQ5Niw4IEBACiAJCQkJN0E1NjNG
OTUxMkRGNUM5MTAwRjQ1MzZEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmpzICovLAogCQkJCTRG
MkQyMDUzMTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5jcHAgKi8sCiAJCQkJNEYy
RDIwNTIxMkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3RvckFnZW50LmggKi8sCi0JCQkJQTU1NkMy
ODYxODMyMDZBODAwOENCNzIwIC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwICovLAotCQkJ
CUE1NTZDMjg3MTgzMjA2QTgwMDhDQjcyMCAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggKi8s
CiAJCQkJQjg4NUU4RDIxMUUwNkREMjAwOUZGQkY0IC8qIEluc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudC5jcHAgKi8sCiAJCQkJQjg4NUU4RDMxMUUwNkREMjAwOUZGQkY0IC8qIEluc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oICovLAotCQkJCUE1QUM0QUVEMTgzMzY5NzUwMDcxMTRF
MCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgKi8sCi0JCQkJQTVBQzRBRUUxODMz
Njk3NTAwNzExNEUwIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggKi8sCi0JCQkJN0FB
NTFCNkMxNDgzQjYxNjAwQUQyNzUyIC8qIEluc3BlY3RvckJhc2VBZ2VudC5oICovLAogCQkJCUFB
RDc2NkU4MTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAgKi8sCiAJ
CQkJQUFENzY2RTkxNTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvckNhbnZhc0FnZW50LmggKi8s
CiAJCQkJQUFENzY2RUExNTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvckNhbnZhc0luc3RydW1l
bnRhdGlvbi5oICovLApAQCAtMTQ1OTIsOCArMTQ1NjcsNyBAQAogCQkJCTgyODg5QjRCMTNDNjIz
OTIwMDlBNjE1NiAvKiBJbnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuaCAqLywKIAkJCQk3NTQxMzNB
OTEwMkUwMEY0MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgKi8sCiAJCQkJ
NzU0MTMzQTcxMDJFMDBFODAwMDc1RDAwIC8qIEluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCAqLywK
LQkJCQk0RjMyODlCMzExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCAqLywK
LQkJCQk0RjMyODlCNDExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmggKi8sCisJ
CQkJQTU5M0NGOEExODQwNTM1MjAwQkZDRTI3IC8qIEluc3BlY3RvcldlYkFnZW50QmFzZS5oICov
LAogCQkJCUYzODEwQzE5MTM2NUE0OTYwMEVENkUzMyAvKiBJbnNwZWN0b3JXb3JrZXJBZ2VudC5j
cHAgKi8sCiAJCQkJRjM4MTBDMUExMzY1QTQ5NjAwRUQ2RTMzIC8qIEluc3BlY3RvcldvcmtlckFn
ZW50LmggKi8sCiAJCQkJRjM3NUNDMDYxMTUwRDMwMDAwOEREQjgxIC8qIEluc3BlY3Rvcldvcmtl
clJlc291cmNlLmggKi8sCkBAIC0xOTY4OSwxMSArMTk2NjMsOSBAQAogCQkJCUE4M0UxQzcyMEU0
OTA0MkIwMDE0MEI5QyAvKiBTY3JpcHRDb250cm9sbGVyTWFjLm1tICovLAogCQkJCTlGNkZDMTk0
MTEyMkU4MkEwMEU4MDE5NiAvKiBTY3JpcHREZWJ1Z1NlcnZlci5jcHAgKi8sCiAJCQkJOUY2RkMx
OTUxMTIyRTgyQTAwRTgwMTk2IC8qIFNjcmlwdERlYnVnU2VydmVyLmggKi8sCi0JCQkJNDEwMDJD
Q0MwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgKi8sCi0JCQkJNDEw
MDJDQ0IwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oICovLAogCQkJCTlG
M0I5NDdEMTIyNDE3NTgwMDUzMDRFNyAvKiBTY3JpcHRIZWFwU25hcHNob3QuaCAqLywKLQkJCQk0
MUYwNjZFMzBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0T2JqZWN0LmNwcCAqLywKLQkJCQk0MUYw
NjZFMjBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0T2JqZWN0LmggKi8sCisJCQkJNDFGMDY2RTMw
RjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdEdsb2JhbE9iamVjdC5jcHAgKi8sCisJCQkJNDFGMDY2
RTIwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdEdsb2JhbE9iamVjdC5oICovLAogCQkJCUYzM0Yw
MjgxMTIwOTQ3RjIwMEU1NzQzQSAvKiBTY3JpcHRQcm9maWxlLmNwcCAqLywKIAkJCQk5RjcyMzA0
QzExMTg0QjQxMDBBRDAxMjYgLyogU2NyaXB0UHJvZmlsZS5oICovLAogCQkJCTlGQTM3RUUzMTE3
MkZDODAwMEM0Q0Q1NSAvKiBTY3JpcHRQcm9maWxlTm9kZS5oICovLApAQCAtMTk3MDIsOCArMTk2
NzQsNiBAQAogCQkJCTkzNENDMTA5MEVEQjIyMzkwMEE2NThGMiAvKiBTY3JpcHRTb3VyY2VDb2Rl
LmggKi8sCiAJCQkJNDEyN0Q1MzYwRjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0YXRlLmNwcCAq
LywKIAkJCQk0MUM3NjBCMDBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCAqLywKLQkJ
CQk5MzRDQzBERjBFRDM5RDZGMDBBNjU4RjIgLyogU2NyaXB0VmFsdWUuY3BwICovLAotCQkJCTkz
NENDMEUwMEVEMzlENkYwMEE2NThGMiAvKiBTY3JpcHRWYWx1ZS5oICovLAogCQkJCTIyOEMyODQ0
MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUuaCAqLywKIAkJCQkxNDAwRDdBNzE3
MTM2RUE3MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oICovLAogCQkJCUE3NUU0
OTc1MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwICovLApAQCAt
MjIxNDYsNyArMjIxMTYsNiBAQAogCQkJCTI5QTgxMjNGMEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nl
c3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgx
MjMxMEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUI1RDMxREZCMTFDRjYxMEIwMDlGMjJCNCAvKiBBY3RpdmVET01DYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJQTU1NkMyODkxODMyMDZBODAwOENCNzIwIC8qIEluc3BlY3Rv
ckFnZW50UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQzRERTY5MEVBNzVDMUUwMDIz
Q0NENiAvKiBBY3RpdmVET01PYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRjdFNDkxMTM3
Q0Q3QzcwMDFEREFFNyAvKiBBZGp1c3RWaWV3U2l6ZU9yTm90LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NEQwQzQwNjExMTVGMUVBMDAxOEFBMzQgLyogQWZmaW5lVHJhbnNmb3JtLmggaW4gSGVhZGVy
cyAqLywKQEAgLTIyNDUwLDcgKzIyNDE5LDYgQEAKIAkJCQlBODBFNkQwMTBBMTk4OUNBMDA3RkI4
QzUgLyogQ1NTSW5oZXJpdGVkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2RDA4MEEx
OTg5Q0EwMDdGQjhDNSAvKiBDU1NJbml0aWFsVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
NzcyRTEzMTMzMTYyMEMwMDFFQzlDRSAvKiBDU1NMaW5lQm94Q29udGFpblZhbHVlLmggaW4gSGVh
ZGVycyAqLywKLQkJCQlBNUFDNEFGMDE4MzM2OTc1MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2RDAzMEExOTg5Q0EwMDdGQjhD
NSAvKiBDU1NNZWRpYVJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUY5OEZGRjQ1MTFBMjY3NjIw
MEY1NDhFOCAvKiBDU1NPTVV0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFNkQwMDBBMTk4
OUNBMDA3RkI4QzUgLyogQ1NTUGFnZVJ1bGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjM0MTMsNyAr
MjMzODEsNiBAQAogCQkJCTRGMkQyMDU0MTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2Vu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjg4NUU4RDUxMUUwNkREMjAwOUZGQkY0IC8qIEluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEY3MDdBOUEx
MUVGNjc5NDAwQUNEQTY5IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJN0FBNTFCNkUxNDgzQjYxNjAwQUQyNzUyIC8qIEluc3BlY3RvckJhc2VBZ2Vu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUFENzY2RUMxNTdFNTAyRjAwRTg1NDIzIC8qIEluc3Bl
Y3RvckNhbnZhc0FnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBQUQ3NjZFRDE1N0U1MDJGMDBF
ODU0MjMgLyogSW5zcGVjdG9yQ2FudmFzSW5zdHJ1bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQzgxQjk1QzBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKQEAgLTIzNDUyLDggKzIzNDE5LDcgQEAKIAkJCQk4MkFCMTc3NDEyNUM4MjY3MDBD
NTA2OUQgLyogSW5zcGVjdG9yU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODI4ODlC
NEQxM0M2MjM5MjAwOUE2MTU2IC8qIEluc3BlY3RvclN0eWxlVGV4dEVkaXRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNzU0MTMzQTgxMDJFMDBFODAwMDc1RDAwIC8qIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTU3OERBMjBGMTUyMEVCQTMwMDYxNDFDMSAvKiBJ
bnNwZWN0b3JUeXBlQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNEYzMjg5QjYxMUE0MkFB
QjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTc4REEy
MEYxNTIwRUJBMzAwNjE0MUMxIC8qIEluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRjM4MTBDMUMxMzY1QTQ5NjAwRUQ2RTMzIC8qIEluc3BlY3RvcldvcmtlckFn
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhFMDkyOTE3RDE0RDFDMDA0MjBBQTEgLyogUlRD
U3RhdHNDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjM3NUNDMDcxMTUwRDMwMDAwOERE
QjgxIC8qIEluc3BlY3RvcldvcmtlclJlc291cmNlLmggaW4gSGVhZGVycyAqLywKQEAgLTI0NTc1
LDkgKzI0NTQxLDggQEAKIAkJCQkwOEE0ODQ3ODBFNTI3MkM1MDBDM0ZFNzYgLyogU2NyaXB0RWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTExQzlEOUIwRUIzNjgxMjAwRTQwOURCIC8qIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERDcwODk3MTgzNTlG
NkYwMDJCM0RDNiAvKiBTYW1wbGVNYXAuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxMDAyQ0NEMEY2
NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTlGM0I5NDdFMTIyNDE3NTgwMDUzMDRFNyAvKiBTY3JpcHRIZWFwU25hcHNob3QuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTQxRjA2NkU0MEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRPYmplY3QuaCBp
biBIZWFkZXJzICovLAorCQkJCTQxRjA2NkU0MEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRHbG9i
YWxPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDM2MTJCMDI2NzYwMEMxQTM1OSAv
KiBTY3JpcHRQcm9jZXNzb3JOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5RjcyMzA0RjExMTg0
QjQxMDBBRDAxMjYgLyogU2NyaXB0UHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUZBMzdF
RTQxMTcyRkM4MDAwQzRDRDU1IC8qIFNjcmlwdFByb2ZpbGVOb2RlLmggaW4gSGVhZGVycyAqLywK
QEAgLTI0NTg1LDcgKzI0NTUwLDYgQEAKIAkJCQk4QTQxM0FFMDEyMDdCQkE1MDA4MjAxNkUgLyog
U2NyaXB0UnVubmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzRDQzEwQTBFREIyMjM5MDBBNjU4
RjIgLyogU2NyaXB0U291cmNlQ29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFDNzYwQjEwRURF
MDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggaW4gSGVhZGVycyAqLywKLQkJCQk5MzRDQzBF
MjBFRDM5RDZGMDBBNjU4RjIgLyogU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTIy
OEMyODQ1MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0MDBEN0E4MTcxMzZFQTcwMDc3Q0UwNSAvKiBTY3JpcHRXcmFwcGFibGVJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzhBRTM0RjEyRUEwOTZBMDBFQjNBRTYgLyogU2Nyb2xs
YWJsZUFyZWEuaCBpbiBIZWFkZXJzICovLApAQCAtMjQ5NzksNiArMjQ5NDMsNyBAQAogCQkJCTA4
OEEwRTBBMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDgxREQ0OUMxM0JBMUE2MDAwREM3NjI3IC8qIFNWR1Byb3BlcnR5SW5mby5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjU3Q0I1MkUxODJBM0VGQzAwNzlBNjQ3IC8qIElubGluZUVsZW1lbnRCb3gu
aCBpbiBIZWFkZXJzICovLAorCQkJCUE1OTNDRjhCMTg0MDUzNTIwMEJGQ0UyNyAvKiBJbnNwZWN0
b3JXZWJBZ2VudEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4OEEwRTBCMTI2RUYxREIwMDk3
OEY3QSAvKiBTVkdQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4OEEwRTBD
MTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eVRyYWl0cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjIyMjdBOUEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNTgzMSw3ICsyNTc5Niw2IEBACiAJCQkJNTlCNTk3NzMxMTA4
NjU2QjAwNzE1OUU4IC8qIEJyaWRnZUpTQy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNTVCM0RB
RjEyNTFGMTJEMDAzRUYyNjkgLyogQnV0dG9uSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFBNTY5Q0Y3MEQ3RTJCODIwMDdDMzk4MyAvKiBjX2NsYXNzLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCUE1QUM0QUVGMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUNGOTBEN0UyQjgyMDA3QzM5ODMgLyog
Y19pbnN0YW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUNGQjBEN0UyQjgyMDA3QzM5
ODMgLyogY19ydW50aW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5Q0ZEMEQ3RTJCODIw
MDdDMzk4MyAvKiBjX3V0aWxpdHkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNjcxMiw4ICsyNjY3
Niw3IEBACiAJCQkJODI4ODlCNEMxM0M2MjM5MjAwOUE2MTU2IC8qIEluc3BlY3RvclN0eWxlVGV4
dEVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzI3N0U0RTE3RDAxOENDMDAxNTUzNEQg
LyogSlNNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTc1NDEzM0FBMTAyRTAwRjQwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCTU3M0QxMzQ3MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0
b3JUeXBlQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0RjMyODlCNTExQTQyQUFCMDA1
QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTU3M0QxMzQ3
MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRjM4MTBDMUIxMzY1QTQ5NjAwRUQ2RTMzIC8qIEluc3BlY3RvcldvcmtlckFn
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUYzNTBCNzM1MTNGMTM3N0QwMDg4MEM0MyAvKiBJ
bnN0cnVtZW50aW5nQWdlbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNzUzNTYwMEIwNTM4
MTQwMDJDRTY0RiAvKiBJbnRQb2ludENHLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjc4MTksMTQg
KzI3NzgyLDEyIEBACiAJCQkJNDk5OEFFRDExM0ZCMjI0RDAwOTBCMUFBIC8qIFNjcmlwdGVkQW5p
bWF0aW9uQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwOEE0ODQ3NzBFNTI3MkM1
MDBDM0ZFNzYgLyogU2NyaXB0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTFDOURC
MDBFQjM2OTk1MDBFNDA5REIgLyogU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQk0MTAwMkNDRTBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxs
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQxRjA2NkU1MEY2NEJDRjYwMEEwN0VBQyAvKiBTY3Jp
cHRPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDFGMDY2RTUwRjY0QkNGNjAwQTA3RUFD
IC8qIFNjcmlwdEdsb2JhbE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjAzNTEy
QjAyNjc2MDBDMUEzNTkgLyogU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlGMzNGMDI4MjEyMDk0N0YyMDBFNTc0M0EgLyogU2NyaXB0UHJvZmlsZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5RjcyMzA1MDExMTg0QjQxMDBBRDAxMjYgLyogU2NyaXB0UHJvZmlsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOEE0MTNBRTExMjA3QkJBNTAwODIwMTZFIC8qIFNjcmlw
dFJ1bm5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTI3RDUzNzBGOEFBQjFEMDBFNDI0RjUg
LyogU2NyaXB0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJOTM0Q0MwRTEwRUQzOUQ2RjAw
QTY1OEYyIC8qIFNjcmlwdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDOEFFMzRFMTJF
QTA5NkEwMEVCM0FFNiAvKiBTY3JvbGxhYmxlQXJlYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlD
QTNCRjY3QzEwRDk5QkFFMDBFNkNFNTMgLyogU2Nyb2xsQW5pbWF0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkM1MTE1NkUxMkIxNzQ5QzAwQzk2NzU0IC8qIFNjcm9sbEFuaW1hdG9yTWFjLm1t
IGluIFNvdXJjZXMgKi8sCkBAIC0yNzkxOCw3ICsyNzg3OSw2IEBACiAJCQkJQUEyQTVBRDUxNkE0
ODYxNDAwOTc1QTI1IC8qIFNwZWVjaFN5bnRoZXNpcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
QTJBNUFEMzE2QTQ4NjBEMDA5NzVBMjUgLyogU3BlZWNoU3ludGhlc2lzRXZlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQUEyQTVBRDExNkE0ODYwNzAwOTc1QTI1IC8qIFNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBNTU2QzI4ODE4MzIwNkE4MDA4Q0I3
MjAgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBQTJB
NUFDRDE2QTQ4NUZBMDA5NzVBMjUgLyogU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTc4RkUxM0IxMjM2NkIxMDAwQUNFOEQwIC8qIFNwZWxsQ2hlY2tlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCOERCREI0RDEzMEIwRjhBMDBGNUNEQjEgLyogU3BlbGxpbmdD
b3JyZWN0aW9uQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0RpY3Rpb25hcnkuaAppbmRleCA5NGRhODc4Li5mZDRiZWU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvRGljdGlvbmFyeS5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiSlNE
aWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiTm90
SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPGJpbmRp
bmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC05
Miw3ICs5Miw3IEBAIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gRGljdGlvbmFyeTo6Z2V0RXZl
bnRMaXN0ZW5lcihjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsCiAgICAgaWYgKCFtX2RpY3Rpb25h
cnkuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFNjcmlwdFZhbHVlIGV2ZW50
TGlzdGVuZXI7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZXZlbnRMaXN0ZW5lcjsKICAg
ICBpZiAoIW1fZGljdGlvbmFyeS50cnlHZXRQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIGV2ZW50TGlz
dGVuZXIpKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoZXZlbnRMaXN0ZW5lci5oYXNOb1Zh
bHVlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5n
VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGls
aXRpZXMuY3BwCmluZGV4IGI4ZjFiYzguLjdhNzdkYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCkBAIC0xNzgsNyArMTc4LDcg
QEAgc3RhdGljIEpTVmFsdWUgZ2V0TnRoVmFsdWVPbktleVBhdGgoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHJvb3RWYWx1ZSwgY29uc3QgVmUKICAgICByZXR1cm4gY3VycmVudFZhbHVlOwogfQog
Ci1zdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFu
ZEtleVBhdGgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0
IFN0cmluZyYga2V5UGF0aCkKK3N0YXRpYyBQYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5
RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQogewogICAgIFZl
Y3RvcjxTdHJpbmc+IGtleVBhdGhFbGVtZW50czsKICAgICBJREJLZXlQYXRoUGFyc2VFcnJvciBl
cnJvcjsKQEAgLTIyOCw3ICsyMjgsNyBAQCBzdGF0aWMgYm9vbCBjYW5JbmplY3ROdGhWYWx1ZU9u
S2V5UGF0aChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgcm9vdFZhbHVlLCBjb25zdAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIGluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShET01SZXF1
ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgU2NyaXB0VmFs
dWUmIHZhbHVlLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQorYm9vbCBpbmplY3RJREJLZXlJ
bnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIFBhc3NSZWZQdHI8
SURCS2V5PiBrZXksIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgSURCS2V5
UGF0aCYga2V5UGF0aCkKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgImluamVjdElEQktleUludG9T
Y3JpcHRWYWx1ZSIpOwogCkBAIC0yNTQsNyArMjU0LDcgQEAgYm9vbCBpbmplY3RJREJLZXlJbnRv
U2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIFBhc3NSZWZQdHI8SURC
S2UKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktl
eUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUs
IGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKK1Bh
c3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKERP
TVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYgdmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCiB7CiAgICAgTE9HKFN0b3JhZ2VB
UEksICJjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoIik7CiAgICAgQVNTRVJU
KCFrZXlQYXRoLmlzTnVsbCgpKTsKQEAgLTI3Nyw3ICsyNzcsNyBAQCBQYXNzUmVmUHRyPElEQktl
eT4gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChET01SZXF1ZXN0U3RhdGUq
IHJlcXVlcwogICAgIHJldHVybiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRo
KGV4ZWMsIHZhbHVlLCBrZXlQYXRoLnN0cmluZygpKTsKIH0KIAotYm9vbCBjYW5JbmplY3RJREJL
ZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIGNvbnN0IFNj
cmlwdFZhbHVlJiBzY3JpcHRWYWx1ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKK2Jvb2wg
Y2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0
YXRlLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgc2NyaXB0VmFsdWUsIGNvbnN0IElE
QktleVBhdGgmIGtleVBhdGgpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJjYW5JbmplY3RJREJL
ZXlJbnRvU2NyaXB0VmFsdWUiKTsKIApAQCAtMjk0LDE2ICsyOTQsMTYgQEAgYm9vbCBjYW5Jbmpl
Y3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIGNv
bnN0IFNjcmlwdFYKICAgICByZXR1cm4gY2FuSW5qZWN0TnRoVmFsdWVPbktleVBhdGgoZXhlYywg
c2NyaXB0VmFsdWUuanNWYWx1ZSgpLCBrZXlQYXRoRWxlbWVudHMsIGtleVBhdGhFbGVtZW50cy5z
aXplKCkgLSAxKTsKIH0KIAotU2NyaXB0VmFsdWUgZGVzZXJpYWxpemVJREJWYWx1ZShET01SZXF1
ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHBycFZhbHVlKQorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZGVzZXJpYWxpemVJREJWYWx1ZShE
T01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IHBycFZhbHVlKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHJlcXVlc3RTdGF0ZS0+
ZXhlYygpOwogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1
ZSA9IHBycFZhbHVlOwogICAgIGlmIChzZXJpYWxpemVkVmFsdWUpCi0gICAgICAgIHJldHVybiBT
Y3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoZXhlYywgc2VyaWFsaXplZFZhbHVlLmdldCgpLCBOb25U
aHJvd2luZyk7Ci0gICAgcmV0dXJuIFNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIGpzTnVsbCgpKTsK
KyAgICAgICAgcmV0dXJuIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoZXhlYywg
c2VyaWFsaXplZFZhbHVlLmdldCgpLCBOb25UaHJvd2luZyk7CisgICAgcmV0dXJuIERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIGpzTnVsbCgpKTsKIH0KIAotU2NyaXB0VmFsdWUg
ZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwg
UGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHBycEJ1ZmZlcikKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlIGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3Rh
dGUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBwcnBCdWZmZXIpCiB7CiAgICAgRXhlY1N0YXRl
KiBleGVjID0gcmVxdWVzdFN0YXRlLT5leGVjKCk7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gcHJwQnVmZmVyOwpAQCAtMzEyLDE4ICszMTIsMTggQEAgU2NyaXB0VmFsdWUgZGVz
ZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgUGFz
c1JlZlB0cjwKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZhbHVlOwogICAgICAgICB2YWx1ZS5h
cHBlbmQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGVGcm9tV2lyZUJ5dGVzKHZhbHVlKTsKLSAgICAgICAgcmV0dXJuIFNjcmlwdFZh
bHVlOjpkZXNlcmlhbGl6ZShleGVjLCBzZXJpYWxpemVkVmFsdWUuZ2V0KCksIE5vblRocm93aW5n
KTsKKyAgICAgICAgcmV0dXJuIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoZXhl
Yywgc2VyaWFsaXplZFZhbHVlLmdldCgpLCBOb25UaHJvd2luZyk7CiAgICAgfQotICAgIHJldHVy
biBTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBqc051bGwoKSk7CisgICAgcmV0dXJuIERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIGpzTnVsbCgpKTsKIH0KIAotU2NyaXB0VmFsdWUg
aWRiS2V5VG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgUGFzc1Jl
ZlB0cjxJREJLZXk+IGtleSkKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGlkYktleVRvU2NyaXB0
VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIFBhc3NSZWZQdHI8SURCS2V5PiBr
ZXkpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gcmVxdWVzdFN0YXRlLT5leGVjKCk7Ci0gICAg
cmV0dXJuIFNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIGlkYktleVRvSlNWYWx1ZShleGVjLCBqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBrZXku
Z2V0KCkpKTsKKyAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwg
aWRiS2V5VG9KU1ZhbHVlKGV4ZWMsIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSksIGtleS5nZXQoKSkpOwogfQogCi1QYXNzUmVmUHRyPElEQktl
eT4gc2NyaXB0VmFsdWVUb0lEQktleShET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgY29u
c3QgU2NyaXB0VmFsdWUmIHNjcmlwdFZhbHVlKQorUGFzc1JlZlB0cjxJREJLZXk+IHNjcmlwdFZh
bHVlVG9JREJLZXkoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIGNvbnN0IERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlJiBzY3JpcHRWYWx1ZSkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBy
ZXF1ZXN0U3RhdGUtPmV4ZWMoKTsKICAgICByZXR1cm4gY3JlYXRlSURCS2V5RnJvbVZhbHVlKGV4
ZWMsIHNjcmlwdFZhbHVlLmpzVmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgKaW5kZXggOTA4YzdmZC4uZjAxMmFlZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaApAQCAt
MjksNyArMjksNyBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAi
RGljdGlvbmFyeS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8YmluZGlu
Z3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC00MSwxMyArNDEsMTMgQEAgY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBJREJL
ZXlQYXRoIGlkYktleVBhdGhGcm9tVmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUp
OwogCi1ib29sIGluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqLCBQ
YXNzUmVmUHRyPElEQktleT4sIFNjcmlwdFZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOwotUGFz
c1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoRE9N
UmVxdWVzdFN0YXRlKiwgY29uc3QgU2NyaXB0VmFsdWUmLCBjb25zdCBJREJLZXlQYXRoJik7Ci1i
b29sIGNhbkluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqLCBjb25z
dCBTY3JpcHRWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsKLVNjcmlwdFZhbHVlIGRlc2VyaWFs
aXplSURCVmFsdWUoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+KTsKLVNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIoRE9NUmVxdWVz
dFN0YXRlKiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KTsKLVNjcmlwdFZhbHVlIGlkYktleVRv
U2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxJREJLZXk+KTsKLVBhc3NS
ZWZQdHI8SURCS2V5PiBzY3JpcHRWYWx1ZVRvSURCS2V5KERPTVJlcXVlc3RTdGF0ZSosIGNvbnN0
IFNjcmlwdFZhbHVlJik7Citib29sIGluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShET01SZXF1
ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPElEQktleT4sIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwg
Y29uc3QgSURCS2V5UGF0aCYpOworUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21T
Y3JpcHRWYWx1ZUFuZEtleVBhdGgoRE9NUmVxdWVzdFN0YXRlKiwgY29uc3QgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUmLCBjb25zdCBJREJLZXlQYXRoJik7Citib29sIGNhbkluamVjdElEQktleUlu
dG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRlc2Vy
aWFsaXplSURCVmFsdWUoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+KTsKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWVC
dWZmZXIoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KTsKK0RlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlIGlkYktleVRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiwg
UGFzc1JlZlB0cjxJREJLZXk+KTsKK1Bhc3NSZWZQdHI8SURCS2V5PiBzY3JpcHRWYWx1ZVRvSURC
S2V5KERPTVJlcXVlc3RTdGF0ZSosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJik7CiAK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0Fs
bEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9u
ZS5jcHAKaW5kZXggNTc3OTg5YS4uYTMwZjc5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCkBAIC0xNDksNyArMTQ5LDYgQEAKICNp
bmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcCIKICNpbmNsdWRlICJTY3JpcHRDb250
cm9sbGVyLmNwcCIKICNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5jcHAiCi0jaW5jbHVkZSAi
U2NyaXB0RnVuY3Rpb25DYWxsLmNwcCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlci5jcHAiCiAj
aW5jbHVkZSAiU2NyaXB0U3RhdGUuY3BwIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25h
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAppbmRl
eCA3ZWRiMWQ1Li40YzI4ODI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGlj
dGlvbmFyeS5jcHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJKU1N0b3JhZ2UuaCIKICNp
bmNsdWRlICJKU1RyYWNrQ3VzdG9tLmgiCiAjaW5jbHVkZSAiSlNWb2lkQ2FsbGJhY2suaCIKLSNp
bmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
IgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNUeXBlZEFycmF5cy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CkBAIC0xNDQsOSArMTQzLDkgQEAgdm9pZCBKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFZlY3RvcjxTdHJpbmc+JgogICAgIH0K
IH0KIAotdm9pZCBKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgdmFsdWUsIFNjcmlwdFZhbHVlJiByZXN1bHQpCit2b2lkIEpTRGljdGlvbmFyeTo6Y29u
dmVydFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmIHJlc3VsdCkKIHsKLSAgICByZXN1bHQgPSBTY3JpcHRWYWx1ZShleGVjLT52bSgp
LCB2YWx1ZSk7CisgICAgcmVzdWx0ID0gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoZXhlYy0+dm0o
KSwgdmFsdWUpOwogfQogCiB2b2lkIEpTRGljdGlvbmFyeTo6Y29udmVydFZhbHVlKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mIHJl
c3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFy
eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmgKaW5kZXggYTI5
MDU2Zi4uM2E4ZTJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
aWN0aW9uYXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5
LmgKQEAgLTM0LDYgKzM0LDEwIEBACiAjaW5jbHVkZSA8cnVudGltZS9VaW50OEFycmF5Lmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAorbmFtZXNwYWNlIERlcHJlY2F0ZWQgeworY2xhc3Mg
U2NyaXB0VmFsdWU7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXJyYXlWYWx1
ZTsKQEAgLTQ2LDcgKzUwLDYgQEAgY2xhc3MgTWVkaWFLZXlFcnJvcjsKIGNsYXNzIE1lZGlhU3Ry
ZWFtOwogY2xhc3MgTWVkaWFTdHJlYW1UcmFjazsKIGNsYXNzIE5vZGU7Ci1jbGFzcyBTY3JpcHRW
YWx1ZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIGNsYXNzIFN0b3JhZ2U7CiBjbGFz
cyBUcmFja0Jhc2U7CkBAIC0xMDgsNyArMTExLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9p
ZCBjb252ZXJ0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGRvdWJsZSYgcmVz
dWx0KTsKICAgICBzdGF0aWMgdm9pZCBjb252ZXJ0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTVmFsdWUsIERpY3Rpb25hcnkmIHJlc3VsdCk7CiAgICAgc3RhdGljIHZvaWQgY29udmVydFZh
bHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBTdHJpbmcmIHJlc3VsdCk7Ci0gICAg
c3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBT
Y3JpcHRWYWx1ZSYgcmVzdWx0KTsKKyAgICBzdGF0aWMgdm9pZCBjb252ZXJ0VmFsdWUoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiByZXN1bHQp
OwogICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNW
YWx1ZSwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCk7CiAgICAgc3RhdGljIHZvaWQgY29udmVydFZh
bHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiYgcmVzdWx0KTsKICAgICBzdGF0aWMgdm9pZCBjb252ZXJ0VmFsdWUoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkpTVmFsdWUsIFJlZlB0cjxET01XaW5kb3c+JiByZXN1bHQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3Vz
dG9tLmNwcAppbmRleCBmZTZjOGJhLi43YWQzNmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcApAQCAtMzEs
MTMgKzMxLDE0IEBACiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JDYW52YXNJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJKU0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUgPGJp
bmRpbmdzL1NjcmlwdE9iamVjdC5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKwogI2lmIEVO
QUJMRShXRUJHTCkKICNpbmNsdWRlICJKU0RpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJKU1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCIK
ICNlbmRpZgotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IApAQCAtODUsOCArODYsOCBAQCBKU1ZhbHVlIEpTSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRl
eHQoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAgICAgSlNWYWx1
ZSBqc1ZhbHVlID0gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoY29udGV4
dCkpOwogICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNhbnZhc0FnZW50RW5hYmxl
ZCgmY2FudmFzLmRvY3VtZW50KCkpKSB7Ci0gICAgICAgIFNjcmlwdE9iamVjdCBjb250ZXh0T2Jq
ZWN0KGV4ZWMsIGpzVmFsdWUuZ2V0T2JqZWN0KCkpOwotICAgICAgICBTY3JpcHRPYmplY3Qgd3Jh
cHBlZDsKKyAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IGNvbnRleHRPYmplY3QoZXhl
YywganNWYWx1ZS5nZXRPYmplY3QoKSk7CisgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVj
dCB3cmFwcGVkOwogICAgICAgICBpZiAoY29udGV4dC0+aXMyZCgpKQogICAgICAgICAgICAgd3Jh
cHBlZCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d3JhcENhbnZhczJEUmVuZGVyaW5nQ29u
dGV4dEZvckluc3RydW1lbnRhdGlvbigmY2FudmFzLmRvY3VtZW50KCksIGNvbnRleHRPYmplY3Qp
OwogI2lmIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAppbmRleCA2OTk5ZmJlLi4wYjQ1
MjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2Ny
aXB0SG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmpl
Y3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCkBAIC00NCwxNSArNDQsMTUgQEAKICNpbmNsdWRlICJJ
bmplY3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1
ZXMuaCIKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJKU0hUTUxBbGxD
b2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSlNIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkpT
Tm9kZS5oIgogI2luY2x1ZGUgIkpTTm9kZUxpc3QuaCIKICNpbmNsdWRlICJKU1N0b3JhZ2UuaCIK
LSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlN0b3JhZ2UuaCIKKyNpbmNsdWRl
IDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JW
YWx1ZXMuaD4KICNpbmNsdWRlIDxwYXJzZXIvU291cmNlQ29kZS5oPgogI2luY2x1ZGUgPHJ1bnRp
bWUvRGF0ZUluc3RhbmNlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgpAQCAtNjksMjAg
KzY5LDIwIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Tm9kZSogSW5qZWN0ZWRTY3JpcHRIb3N0OjpzY3JpcHRWYWx1ZUFzTm9kZShTY3JpcHRWYWx1ZSB2
YWx1ZSkKK05vZGUqIEluamVjdGVkU2NyaXB0SG9zdDo6c2NyaXB0VmFsdWVBc05vZGUoRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpIHx8
IHZhbHVlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gdG9Ob2RlKHZh
bHVlLmpzVmFsdWUoKSk7CiB9CiAKLVNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0SG9zdDo6bm9k
ZUFzU2NyaXB0VmFsdWUoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBOb2RlKiBub2RlKQorRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHRIb3N0Ojpub2RlQXNTY3JpcHRWYWx1ZShK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFzaG91bGRBbGxv
d0FjY2Vzc1RvTm9kZShzdGF0ZSwgbm9kZSkpCi0gICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZShz
dGF0ZS0+dm0oKSwganNOdWxsKCkpOworICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUoc3RhdGUtPnZtKCksIGpzTnVsbCgpKTsKIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKHN0
YXRlKTsKLSAgICByZXR1cm4gU2NyaXB0VmFsdWUoc3RhdGUtPnZtKCksIHRvSlMoc3RhdGUsIGRl
cHJlY2F0ZWRHbG9iYWxPYmplY3RGb3JQcm90b3R5cGUoc3RhdGUpLCBub2RlKSk7CisgICAgcmV0
dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKHN0YXRlLT52bSgpLCB0b0pTKHN0YXRlLCBkZXBy
ZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBlKHN0YXRlKSwgbm9kZSkpOwogfQogCiBKU1Zh
bHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0ZWRPYmplY3QoRXhlY1N0YXRlKiBleGVj
KQpAQCAtOTUsNyArOTUsNyBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0
ZWRPYmplY3QoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
IAogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgIFNjcmlwdFZhbHVlIHNjcmlwdFZh
bHVlID0gb2JqZWN0LT5nZXQoZXhlYyk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgc2Ny
aXB0VmFsdWUgPSBvYmplY3QtPmdldChleGVjKTsKICAgICBpZiAoc2NyaXB0VmFsdWUuaGFzTm9W
YWx1ZSgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIApAQCAtMjQ3LDggKzI0Nyw4
IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OmdldEV2ZW50TGlzdGVuZXJzKEV4ZWNT
dGF0ZSogZXhlYykKIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6Omluc3BlY3QoRXhlY1N0
YXRlKiBleGVjKQogewogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPj0gMikgewotICAg
ICAgICBTY3JpcHRWYWx1ZSBvYmplY3QoZXhlYy0+dm0oKSwgZXhlYy0+dW5jaGVja2VkQXJndW1l
bnQoMCkpOwotICAgICAgICBTY3JpcHRWYWx1ZSBoaW50cyhleGVjLT52bSgpLCBleGVjLT51bmNo
ZWNrZWRBcmd1bWVudCgxKSk7CisgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG9iamVj
dChleGVjLT52bSgpLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgICAgIERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlIGhpbnRzKGV4ZWMtPnZtKCksIGV4ZWMtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDEpKTsKICAgICAgICAgaW1wbCgpLmluc3BlY3RJbXBsKG9iamVjdC50b0luc3BlY3RvclZh
bHVlKGV4ZWMpLCBoaW50cy50b0luc3BlY3RvclZhbHVlKGV4ZWMpKTsKICAgICB9CiAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggMmRiZTJkZS4uYTZkYTY0MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9t
LmgiCiAjaW5jbHVkZSAiSlNJbmplY3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJKU01haW5U
aHJlYWRFeGVjU3RhdGUuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlIDxi
aW5kaW5ncy9TY3JpcHRPYmplY3QuaD4KICNpbmNsdWRlIDxwYXJzZXIvU291cmNlQ29kZS5oPgog
I2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAKQEAgLTQ5LDcgKzQ5LDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TY3JpcHRPYmplY3QgSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJj
ZSwgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBpbnQgaWQpCitEZXByZWNhdGVkOjpTY3Jp
cHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdChjb25z
dCBTdHJpbmcmIHNvdXJjZSwgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBpbnQgaWQpCiB7
CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soc2NyaXB0U3RhdGUpOwogCkBAIC02NiwxMyArNjYsMTMg
QEAgU2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3Jp
cHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEoKICAgICAgICAgZXZhbHVhdGlvblJldHVyblZhbHVl
ID0gSlNDOjpldmFsdWF0ZShzY3JpcHRTdGF0ZSwgc291cmNlQ29kZSwgZ2xvYmFsVGhpc1ZhbHVl
LCAmZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAgICAgfQogICAgIGlmIChldmFsdWF0aW9uRXhjZXB0
aW9uKQotICAgICAgICByZXR1cm4gU2NyaXB0T2JqZWN0KCk7CisgICAgICAgIHJldHVybiBEZXBy
ZWNhdGVkOjpTY3JpcHRPYmplY3QoKTsKIAogICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGV2
YWx1YXRpb25SZXR1cm5WYWx1ZTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlw
ZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uVmFsdWUsIGNhbGxEYXRhKTsKICAgICBp
ZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQotICAgICAgICByZXR1cm4gU2NyaXB0T2JqZWN0
KCk7CisgICAgICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QoKTsKIAogICAgIE1h
cmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgYXJncy5hcHBlbmQodG9KUyhzY3JpcHRTdGF0
ZSwgZ2xvYmFsT2JqZWN0LCBtX2luamVjdGVkU2NyaXB0SG9zdC5nZXQoKSkpOwpAQCAtODEsOCAr
ODEsOCBAQCBTY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3Rl
ZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgSgogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBK
U0M6OmNhbGwoc2NyaXB0U3RhdGUsIGZ1bmN0aW9uVmFsdWUsIGNhbGxUeXBlLCBjYWxsRGF0YSwg
Z2xvYmFsVGhpc1ZhbHVlLCBhcmdzKTsKICAgICBpZiAocmVzdWx0LmlzT2JqZWN0KCkpCi0gICAg
ICAgIHJldHVybiBTY3JpcHRPYmplY3Qoc2NyaXB0U3RhdGUsIHJlc3VsdC5nZXRPYmplY3QoKSk7
Ci0gICAgcmV0dXJuIFNjcmlwdE9iamVjdCgpOworICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6
U2NyaXB0T2JqZWN0KHNjcmlwdFN0YXRlLCByZXN1bHQuZ2V0T2JqZWN0KCkpOworICAgIHJldHVy
biBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QoKTsKIH0KIAogYm9vbCBJbmplY3RlZFNjcmlwdE1h
bmFnZXI6OmNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdyhKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3Rh
dGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRF
eGVjU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhl
Y1N0YXRlLmNwcAppbmRleCA0MjkzYTQ2Li5hNThjOGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAKQEAgLTQ2LDQgKzQ2
LDEyIEBAIHZvaWQgSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpkaWRMZWF2ZVNjcmlwdENvbnRleHQo
KQogICAgIE11dGF0aW9uT2JzZXJ2ZXI6OmRlbGl2ZXJBbGxNdXRhdGlvbnMoKTsKIH0KIAorSlND
OjpKU1ZhbHVlIGZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIEpTQzo6Q2FsbFR5cGUgY2FsbFR5
cGUsIGNvbnN0IEpTQzo6Q2FsbERhdGEmIGNhbGxEYXRhLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVl
LCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MpCit7CisgICAgaWYgKGlzTWFpblRocmVhZCgpKQor
ICAgICAgICByZXR1cm4gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGZ1bmN0aW9u
T2JqZWN0LCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7CisgICAgZWxzZQor
ICAgICAgICByZXR1cm4gSlNDOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsVHlwZSwg
Y2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNT
dGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRl
LmgKaW5kZXggMzNiN2JkOS4uMmZhNjYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgKQEAgLTI4LDkgKzI4LDcgQEAKIAogI2lu
Y2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvQ29tcGxldGlvbi5oPgot
I2lmbmRlZiBOREVCVUcKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2VuZGlmCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDIsNyArNDAsNyBAQCBjbGFzcyBKU01haW5UaHJlYWRF
eGVjU3RhdGUgewogICAgIGZyaWVuZCBjbGFzcyBKU01haW5UaHJlYWROdWxsU3RhdGU7CiBwdWJs
aWM6CiAgICAgc3RhdGljIEpTQzo6RXhlY1N0YXRlKiBjdXJyZW50U3RhdGUoKQotICAgIHsgCisg
ICAgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICByZXR1cm4gc19t
YWluVGhyZWFkU3RhdGU7CiAgICAgfTsKQEAgLTUzLDggKzUxLDYgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gSlNDOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsVHlwZSwgY2FsbERh
dGEsIHRoaXNWYWx1ZSwgYXJncyk7CiAgICAgfTsKIAotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUgaW5zdHJ1bWVudEZ1bmN0aW9uQ2FsbChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgSlNDOjpDYWxsVHlwZSwgY29uc3QgSlNDOjpDYWxsRGF0YSYpOwotCiAgICAgc3Rh
dGljIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlND
OjpTb3VyY2VDb2RlJiBzb3VyY2UsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIEpTQzo6SlNWYWx1
ZSogZXhjZXB0aW9uKQogICAgIHsKICAgICAgICAgSlNNYWluVGhyZWFkRXhlY1N0YXRlIGN1cnJl
bnRTdGF0ZShleGVjKTsKQEAgLTYyLDYgKzU4LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
SlNDOjpldmFsdWF0ZShleGVjLCBzb3VyY2UsIHRoaXNWYWx1ZSwgZXhjZXB0aW9uKTsKICAgICB9
OwogCisgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBpbnN0cnVtZW50
RnVuY3Rpb25DYWxsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBKU0M6OkNhbGxUeXBlLCBjb25z
dCBKU0M6OkNhbGxEYXRhJik7CisKICAgICBleHBsaWNpdCBKU01haW5UaHJlYWRFeGVjU3RhdGUo
SlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIDogbV9wcmV2aW91c1N0YXRlKHNfbWFpblRo
cmVhZFN0YXRlKQogICAgIHsKQEAgLTExMCw2ICsxMDgsOCBAQCBwcml2YXRlOgogICAgIEpTQzo6
RXhlY1N0YXRlKiBtX3ByZXZpb3VzU3RhdGU7CiB9OwogCitKU0M6OkpTVmFsdWUgZnVuY3Rpb25D
YWxsSGFuZGxlckZyb21BbnlUaHJlYWQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1
ZSBmdW5jdGlvbk9iamVjdCwgSlNDOjpDYWxsVHlwZSBjYWxsVHlwZSwgY29uc3QgSlNDOjpDYWxs
RGF0YSYgY2FsbERhdGEsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlz
dCYgYXJncyk7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEpTTWFpblRo
cmVhZEV4ZWNTdGF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01l
c3NhZ2VFdmVudEN1c3RvbS5jcHAKaW5kZXggMGE5YTRjMS4uYzg0Y2EwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcApAQCAt
NTMsNyArNTMsNyBAQCBKU1ZhbHVlIEpTTWVzc2FnZUV2ZW50OjpkYXRhKEV4ZWNTdGF0ZSogZXhl
YykgY29uc3QKICAgICBKU1ZhbHVlIHJlc3VsdDsKICAgICBzd2l0Y2ggKGV2ZW50LmRhdGFUeXBl
KCkpIHsKICAgICBjYXNlIE1lc3NhZ2VFdmVudDo6RGF0YVR5cGVTY3JpcHRWYWx1ZTogewotICAg
ICAgICBTY3JpcHRWYWx1ZSBzY3JpcHRWYWx1ZSA9IGV2ZW50LmRhdGFBc1NjcmlwdFZhbHVlKCk7
CisgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHNjcmlwdFZhbHVlID0gZXZlbnQuZGF0
YUFzU2NyaXB0VmFsdWUoKTsKICAgICAgICAgaWYgKHNjcmlwdFZhbHVlLmhhc05vVmFsdWUoKSkK
ICAgICAgICAgICAgIHJlc3VsdCA9IGpzTnVsbCgpOwogICAgICAgICBlbHNlCkBAIC0xMDUsNyAr
MTA1LDcgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBoYW5kbGVJbml0TWVzc2FnZUV2ZW50KEpTTWVz
c2FnZUV2ZW50KiBqc0V2ZW50LCBKU0M6OkV4ZWNTdGEKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQotICAg
IFNjcmlwdFZhbHVlIGRhdGFBcmcgPSBTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBleGVjLT5hcmd1
bWVudCgzKSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZGF0YUFyZyA9IERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIGV4ZWMtPmFyZ3VtZW50KDMpKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAppbmRleCAw
NmM1MWNhLi45MTczZWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVk
dWxlZEFjdGlvbi5jcHAKQEAgLTM3LDkgKzM3LDkgQEAKICNpbmNsdWRlICJTY3JpcHRDb250cm9s
bGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNj
cmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIldv
cmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisjaW5jbHVkZSA8
YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgogCiB1
c2luZyBuYW1lc3BhY2UgSlNDOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcAppbmRleCA1ZDY2YzRkLi43ZDY5NWE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0
b3J5LmNwcApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgIlNjcmlwdEFyZ3VtZW50cy5oIgog
I2luY2x1ZGUgIlNjcmlwdENhbGxGcmFtZS5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5o
IgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFs
dWUuaD4KICNpbmNsdWRlIDxpbnRlcnByZXRlci9DYWxsRnJhbWUuaD4KICNpbmNsdWRlIDxpbnRl
cnByZXRlci9DYWxsRnJhbWVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvU3RhY2tW
aXNpdG9yLmg+CkBAIC0xOTksMTAgKzE5OSwxMCBAQCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFj
az4gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShKU0M6OkV4ZWNTdGF0ZSogZXhlYwog
CiBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gY3JlYXRlU2NyaXB0QXJndW1lbnRzKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBza2lwQXJndW1lbnRDb3VudCkKIHsKLSAgICBWZWN0
b3I8U2NyaXB0VmFsdWU+IGFyZ3VtZW50czsKKyAgICBWZWN0b3I8RGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWU+IGFyZ3VtZW50czsKICAgICBzaXplX3QgYXJndW1lbnRDb3VudCA9IGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gc2tpcEFyZ3VtZW50Q291bnQ7IGkgPCBh
cmd1bWVudENvdW50OyArK2kpCi0gICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoU2NyaXB0VmFsdWUo
ZXhlYy0+dm0oKSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkpKTsKKyAgICAgICAgYXJndW1l
bnRzLmFwcGVuZChEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBleGVjLT51bmNo
ZWNrZWRBcmd1bWVudChpKSkpOwogICAgIHJldHVybiBTY3JpcHRBcmd1bWVudHM6OmNyZWF0ZShl
eGVjLCBhcmd1bWVudHMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDJjM2VmOTNhZi4uMDA3YjAzMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTQwLDcgKzQw
LDYgQEAKICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNr
LmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKICNpbmNsdWRlICJTdG9yYWdlTmFtZXNwYWNlLmgiCkBAIC00OCw2ICs0Nyw3IEBA
CiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgIm5wcnVudGltZV9p
bXBsLmgiCiAjaW5jbHVkZSAicnVudGltZV9yb290LmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2Ny
aXB0VmFsdWUuaD4KICNpbmNsdWRlIDxkZWJ1Z2dlci9EZWJ1Z2dlci5oPgogI2luY2x1ZGUgPGhl
YXAvU3Ryb25nSW5saW5lcy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGlu
Zy5oPgpAQCAtMTE3LDcgKzExNyw3IEBAIEpTRE9NV2luZG93U2hlbGwqIFNjcmlwdENvbnRyb2xs
ZXI6OmNyZWF0ZVdpbmRvd1NoZWxsKERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiAgICAgcmV0dXJu
IHdpbmRvd1NoZWxsLmdldCgpOwogfQogCi1TY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpl
dmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgRE9NV3Jh
cHBlcldvcmxkJiB3b3JsZCkKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xs
ZXI6OmV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBE
T01XcmFwcGVyV29ybGQmIHdvcmxkKQogewogICAgIGNvbnN0IFNvdXJjZUNvZGUmIGpzU291cmNl
Q29kZSA9IHNvdXJjZUNvZGUuanNTb3VyY2VDb2RlKCk7CiAgICAgU3RyaW5nIHNvdXJjZVVSTCA9
IGpzU291cmNlQ29kZS5wcm92aWRlcigpLT51cmwoKTsKQEAgLTE0OSwxNCArMTQ5LDE0IEBAIFNj
cmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRT
b3VyY2VDb2RlJiBzb3VyY2VDb2RlCiAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pIHsKICAg
ICAgICAgcmVwb3J0RXhjZXB0aW9uKGV4ZWMsIGV2YWx1YXRpb25FeGNlcHRpb24sIHNvdXJjZUNv
ZGUuY2FjaGVkU2NyaXB0KCkpOwogICAgICAgICBtX3NvdXJjZVVSTCA9IHNhdmVkU291cmNlVVJM
OwotICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlKCk7CiAgICAgfQogCiAgICAgbV9zb3VyY2VVUkwgPSBzYXZlZFNvdXJj
ZVVSTDsKLSAgICByZXR1cm4gU2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwgcmV0dXJuVmFsdWUpOwor
ICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShleGVjLT52bSgpLCByZXR1cm5WYWx1
ZSk7CiB9CiAKLVNjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNj
cmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpIAorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgU2Ny
aXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29k
ZSkgCiB7CiAgICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChzb3VyY2VDb2RlLCBtYWluVGhyZWFk
Tm9ybWFsV29ybGQoKSk7CiB9CkBAIC00NTgsMTMgKzQ1OCwxMyBAQCB2b2lkIFNjcmlwdENvbnRy
b2xsZXI6OmNsZWFyU2NyaXB0T2JqZWN0cygpCiAjZW5kaWYKIH0KIAotU2NyaXB0VmFsdWUgU2Ny
aXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKK0RlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERP
TVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNl
ckdlc3R1cmUpCiB7CiAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihm
b3JjZVVzZXJHZXN0dXJlID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6IFBvc3Np
Ymx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKICAgICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNv
ZGUoc2NyaXB0LCBtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpKTsKIAogICAgIGlmICghY2FuRXhl
Y3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpIHx8IGlzUGF1c2VkKCkpCi0gICAgICAg
IHJldHVybiBTY3JpcHRWYWx1ZSgpOworICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUoKTsKIAogICAgIHJldHVybiBldmFsdWF0ZUluV29ybGQoc291cmNlQ29kZSwgd29ybGQp
OwogfQpAQCAtNTAwLDE2ICs1MDAsMTYgQEAgYm9vbCBTY3JpcHRDb250cm9sbGVyOjpjYW5FeGVj
dXRlU2NyaXB0cyhSZWFzb25Gb3JDYWxsaW5nQ2FuRXhlY3V0ZVNjcmlwdHMgcmVhc28KICAgICBy
ZXR1cm4gbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5hbGxvd1NjcmlwdChtX2ZyYW1lLnNldHRp
bmdzKCkuaXNTY3JpcHRFbmFibGVkKCkpOwogfQogCi1TY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9s
bGVyOjpleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdl
c3R1cmUpCitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRl
U2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCiB7CiAg
ICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihmb3JjZVVzZXJHZXN0dXJl
ID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6IFBvc3NpYmx5UHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlKTsKICAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdChTY3JpcHRTb3VyY2VDb2RlKHNj
cmlwdCwgbV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSkpOwogfQogCi1TY3JpcHRWYWx1ZSBTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJj
ZUNvZGUpCitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRl
U2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCiB7CiAgICAgaWYgKCFj
YW5FeGVjdXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkgfHwgaXNQYXVzZWQoKSkKLSAg
ICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7CisgICAgICAgIHJldHVybiBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSgpOwogCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0KG1fZnJhbWUpOyAvLyBTY3Jp
cHQgZXhlY3V0aW9uIGNhbiBkZXN0cm95IHRoZSBmcmFtZSwgYW5kIHRodXMgdGhlIFNjcmlwdENv
bnRyb2xsZXIuCiAKQEAgLTUzMiw3ICs1MzIsNyBAQCBib29sIFNjcmlwdENvbnRyb2xsZXI6OmV4
ZWN1dGVJZkphdmFTY3JpcHRVUkwoY29uc3QgVVJMJiB1cmwsIFNob3VsZFJlcGxhY2VEb2N1bQog
ICAgIGNvbnN0IGludCBqYXZhc2NyaXB0U2NoZW1lTGVuZ3RoID0gc2l6ZW9mKCJqYXZhc2NyaXB0
OiIpIC0gMTsKIAogICAgIFN0cmluZyBkZWNvZGVkVVJMID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVu
Y2VzKHVybC5zdHJpbmcoKSk7Ci0gICAgU2NyaXB0VmFsdWUgcmVzdWx0ID0gZXhlY3V0ZVNjcmlw
dChkZWNvZGVkVVJMLnN1YnN0cmluZyhqYXZhc2NyaXB0U2NoZW1lTGVuZ3RoKSk7CisgICAgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUgcmVzdWx0ID0gZXhlY3V0ZVNjcmlwdChkZWNvZGVkVVJMLnN1
YnN0cmluZyhqYXZhc2NyaXB0U2NoZW1lTGVuZ3RoKSk7CiAKICAgICAvLyBJZiBleGVjdXRpbmcg
c2NyaXB0IGNhdXNlZCB0aGlzIGZyYW1lIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgcGFnZSwgd2UK
ICAgICAvLyBkb24ndCB3YW50IHRvIHRyeSB0byByZXBsYWNlIGl0cyBkb2N1bWVudCEKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAppbmRleCAzNjZiNzI0
Li42N2U5NmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5oCkBAIC0zOCw2ICszOCwxMCBAQCBPQkpDX0NMQVNTIEpTQ29udGV4dDsKIAogc3RydWN0
IE5QT2JqZWN0OwogCituYW1lc3BhY2UgRGVwcmVjYXRlZCB7CitjbGFzcyBTY3JpcHRWYWx1ZTsK
K30KKwogbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xh
c3MgRXhlY1N0YXRlOwpAQCAtNTMsNyArNTcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBIVE1MUGx1Z0luRWxlbWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgU2NyaXB0U291cmNlQ29k
ZTsKLWNsYXNzIFNjcmlwdFZhbHVlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBXaWRn
ZXQ7CiAKQEAgLTk0LDkgKzk3LDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgZ2V0QWxs
V29ybGRzKFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4mKTsKIAotICAgIFNjcmlwdFZhbHVl
IGV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYpOwotICAgIFNjcmlwdFZhbHVl
IGV4ZWN1dGVTY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVy
ZSA9IGZhbHNlKTsKLSAgICBTY3JpcHRWYWx1ZSBleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFw
cGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0g
ZmFsc2UpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGV4ZWN1dGVTY3JpcHQoY29uc3Qg
U2NyaXB0U291cmNlQ29kZSYpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGV4ZWN1dGVT
Y3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNl
KTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBleGVjdXRlU2NyaXB0SW5Xb3JsZChET01X
cmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJl
ID0gZmFsc2UpOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGFyZ3VtZW50IGlzIGEgSmF2YVNj
cmlwdCBVUkwuCiAgICAgYm9vbCBleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYsIFNo
b3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCBzaG91bGRSZXBsYWNlRG9jdW1lbnRJ
ZkphdmFTY3JpcHRVUkwgPSBSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwpOwpAQCAtMTA1
LDggKzEwOCw4IEBAIHB1YmxpYzoKICAgICAvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRvIHRo
aXMgcnVsZTogaXQgaXMgT0sgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20gYW55IHRocmVhZCwg
ZXZlbiByZWVudHJhbnRseS4KICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7
CiAKLSAgICBTY3JpcHRWYWx1ZSBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7Ci0g
ICAgU2NyaXB0VmFsdWUgZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBE
T01XcmFwcGVyV29ybGQmKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBldmFsdWF0ZShj
b25zdCBTY3JpcHRTb3VyY2VDb2RlJik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZXZh
bHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmKTsK
IAogICAgIFdURjo6VGV4dFBvc2l0aW9uIGV2ZW50SGFuZGxlclBvc2l0aW9uKCkgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcApp
bmRleCBhZGI1Nzc4Li4yM2Q0YTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC00MSw4ICs0MSw4IEBACiAjaW5jbHVkZSAiUGFn
ZUNvbnNvbGUuaCIKICNpbmNsdWRlICJTY3JpcHRCcmVha3BvaW50LmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RGVidWdMaXN0ZW5lci5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAi
U291bmQuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPGRl
YnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmg+CiAjaW5jbHVkZSA8cGFyc2VyL1NvdXJjZVByb3Zp
ZGVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KQEAgLTEzMCwxNCArMTMwLDE0IEBA
IGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OmNhblNldFNjcmlwdFNvdXJjZSgpCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1ib29sIFNjcmlwdERlYnVnU2VydmVyOjpzZXRTY3JpcHRTb3VyY2UoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgYm9vbCwgU3RyaW5nKiwgU2NyaXB0VmFsdWUqLCBT
Y3JpcHRPYmplY3QqKQorYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0U291cmNlKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGJvb2wsIFN0cmluZyosIERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlKiwgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KikKIHsKICAgICAvLyBGSVhNRSg0
MDMwMCk6IGltcGxlbWVudCB0aGlzLgogICAgIHJldHVybiBmYWxzZTsKIH0KIAogCi12b2lkIFNj
cmlwdERlYnVnU2VydmVyOjp1cGRhdGVDYWxsU3RhY2soU2NyaXB0VmFsdWUqKQordm9pZCBTY3Jp
cHREZWJ1Z1NlcnZlcjo6dXBkYXRlQ2FsbFN0YWNrKERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKikK
IHsKICAgICAvLyBUaGlzIG1ldGhvZCBpcyB1c2VkIGZvciByZXN0YXJ0IGZyYW1lIGZlYXR1cmUg
dGhhdCBpcyBub3QgaW1wbGVtZW50ZWQgeWV0LgogICAgIC8vIEZJWE1FKDQwMzAwKTogaW1wbGVt
ZW50IHRoaXMuCkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlz
cGF0Y2hEaWRQYXVzZShTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lcikKICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICBqc0NhbGxGcmFtZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgfQotICAg
IGxpc3RlbmVyLT5kaWRQYXVzZShzdGF0ZSwgU2NyaXB0VmFsdWUoc3RhdGUtPnZtKCksIGpzQ2Fs
bEZyYW1lKSwgU2NyaXB0VmFsdWUoKSk7CisgICAgbGlzdGVuZXItPmRpZFBhdXNlKHN0YXRlLCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShzdGF0ZS0+dm0oKSwganNDYWxsRnJhbWUpLCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSgpKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0
Y2hEaWRDb250aW51ZShTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lcikKQEAgLTMxOSw3ICsz
MTksNyBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpjbGVhckNvbXBpbGVkU2NyaXB0cygpCiAg
ICAgLy8gRklYTUUoODk2NTIpOiBpbXBsZW1lbnQgdGhpcy4KIH0KIAotdm9pZCBTY3JpcHREZWJ1
Z1NlcnZlcjo6cnVuU2NyaXB0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiwgU2NyaXB0
VmFsdWUqLCBib29sKiwgU3RyaW5nKikKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJ1blNjcmlw
dChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
KiwgYm9vbCosIFN0cmluZyopCiB7CiAgICAgLy8gRklYTUUoODk2NTIpOiBpbXBsZW1lbnQgdGhp
cy4KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVn
U2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5o
CmluZGV4IDJmZTlhZGEuLmE3MDE4YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlNjcmlw
dERlYnVnTGlzdGVuZXIuaCIKICNpbmNsdWRlICJTb3VyY2VJRC5oIgogI2luY2x1ZGUgIlRpbWVy
LmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0T2JqZWN0Lmg+CiAjaW5jbHVkZSA8ZGVidWdn
ZXIvRGVidWdnZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CkBAIC01MCwxMiArNTEsOSBAQCBjbGFzcyBEZWJ1Z2dlckNhbGxGcmFtZTsKIGNs
YXNzIEpTR2xvYmFsT2JqZWN0OwogY2xhc3MgRXhlY1N0YXRlOwogfQorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFNjcmlwdERlYnVnTGlzdGVuZXI7Ci1jbGFzcyBTY3JpcHRPYmplY3Q7
Ci1jbGFzcyBTY3JpcHRWYWx1ZTsKLQogY2xhc3MgU2NyaXB0RGVidWdTZXJ2ZXIgOiBwdWJsaWMg
SlNDOjpEZWJ1Z2dlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NyaXB0RGVidWdTZXJ2
ZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTY0LDggKzYyLDggQEAg
cHVibGljOgogICAgIHZvaWQgY2xlYXJCcmVha3BvaW50cygpOwogCiAgICAgYm9vbCBjYW5TZXRT
Y3JpcHRTb3VyY2UoKTsKLSAgICBib29sIHNldFNjcmlwdFNvdXJjZShjb25zdCBTdHJpbmcmIHNv
dXJjZUlELCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIGJvb2wgcHJldmlldywgU3RyaW5nKiBl
cnJvciwgU2NyaXB0VmFsdWUqIG5ld0NhbGxGcmFtZXMsIFNjcmlwdE9iamVjdCogcmVzdWx0KTsK
LSAgICB2b2lkIHVwZGF0ZUNhbGxTdGFjayhTY3JpcHRWYWx1ZSogY2FsbEZyYW1lKTsKKyAgICBi
b29sIHNldFNjcmlwdFNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcm
IG5ld0NvbnRlbnQsIGJvb2wgcHJldmlldywgU3RyaW5nKiBlcnJvciwgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUqIG5ld0NhbGxGcmFtZXMsIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCogcmVzdWx0
KTsKKyAgICB2b2lkIHVwZGF0ZUNhbGxTdGFjayhEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSogY2Fs
bEZyYW1lKTsKIAogICAgIGJvb2wgY2F1c2VzUmVjb21waWxhdGlvbigpIHsgcmV0dXJuIHRydWU7
IH0KICAgICBib29sIHN1cHBvcnRzU2VwYXJhdGVTY3JpcHRDb21waWxhdGlvbkFuZEV4ZWN1dGlv
bigpIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC04Miw3ICs4MCw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgY29tcGlsZVNjcmlwdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lv
biwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIFN0cmluZyogc2NyaXB0SUQsIFN0cmluZyogZXhj
ZXB0aW9uTWVzc2FnZSk7CiAgICAgdm9pZCBjbGVhckNvbXBpbGVkU2NyaXB0cygpOwotICAgIHZv
aWQgcnVuU2NyaXB0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgU2Ny
aXB0VmFsdWUqIHJlc3VsdCwgYm9vbCogd2FzVGhyb3duLCBTdHJpbmcqIGV4Y2VwdGlvbk1lc3Nh
Z2UpOworICAgIHZvaWQgcnVuU2NyaXB0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiBz
Y3JpcHRJRCwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUqIHJlc3VsdCwgYm9vbCogd2FzVGhyb3du
LCBTdHJpbmcqIGV4Y2VwdGlvbk1lc3NhZ2UpOwogCiAgICAgY2xhc3MgVGFzayB7CiAgICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdEdsb2JhbE9iamVjdC5jcHAKc2ltaWxhcml0eSBpbmRleCA4NiUKcmVuYW1lIGZyb20gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNwcApyZW5hbWUgdG8gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0LmNwcAppbmRleCAxNDJlNzIz
Li5hOGI1YTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9i
amVjdC5jcHAKQEAgLTI5LDEwICsyOSwxMCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlICJTY3JpcHRHbG9iYWxPYmplY3Qu
aCIKIAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotCisjaW5jbHVkZSA8YmluZGluZ3MvU2Ny
aXB0T2JqZWN0Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KIAogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCkBAIC00MywxOCArNDMsNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVNjcmlwdE9iamVjdDo6U2NyaXB0T2JqZWN0KEpTQzo6RXhlY1N0
YXRlKiBzY3JpcHRTdGF0ZSwgSlNPYmplY3QqIG9iamVjdCkKLSAgICA6IFNjcmlwdFZhbHVlKHNj
cmlwdFN0YXRlLT52bSgpLCBvYmplY3QpCi0gICAgLCBtX3NjcmlwdFN0YXRlKHNjcmlwdFN0YXRl
KQotewotfQotCi1TY3JpcHRPYmplY3Q6OlNjcmlwdE9iamVjdChKU0M6OkV4ZWNTdGF0ZSogc2Ny
aXB0U3RhdGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBzY3JpcHRWYWx1ZSkKLSAgICA6IFNjcmlwdFZh
bHVlKHNjcmlwdFN0YXRlLT52bSgpLCBzY3JpcHRWYWx1ZS5qc1ZhbHVlKCkpCi0gICAgLCBtX3Nj
cmlwdFN0YXRlKHNjcmlwdFN0YXRlKQotewotfQotCiBzdGF0aWMgYm9vbCBoYW5kbGVFeGNlcHRp
b24oSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlKQogewogICAgIGlmICghc2NyaXB0U3RhdGUt
PmhhZEV4Y2VwdGlvbigpKQpAQCAtNjQsNyArNTIsNyBAQCBzdGF0aWMgYm9vbCBoYW5kbGVFeGNl
cHRpb24oSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlKQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OnNldChKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3Rh
dGUsIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFNjcmlwdE9iamVjdCYgdmFsdWUpCitib29sIFNj
cmlwdEdsb2JhbE9iamVjdDo6c2V0KEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3Qg
Y2hhciogbmFtZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiB2YWx1ZSkKIHsKICAg
ICBKU0xvY2tIb2xkZXIgbG9jayhzY3JpcHRTdGF0ZSk7CiAgICAgc2NyaXB0U3RhdGUtPmxleGlj
YWxHbG9iYWxPYmplY3QoKS0+cHV0RGlyZWN0KHNjcmlwdFN0YXRlLT52bSgpLCBJZGVudGlmaWVy
KHNjcmlwdFN0YXRlLCBuYW1lKSwgdmFsdWUuanNPYmplY3QoKSk7CkBAIC04MSw3ICs2OSw3IEBA
IGJvb2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRl
LCBjb25zdCBjaGFyKiBuYW1lLCBJbnNwCiB9CiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikK
IAotYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OmdldChKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3Rh
dGUsIGNvbnN0IGNoYXIqIG5hbWUsIFNjcmlwdE9iamVjdCYgdmFsdWUpCitib29sIFNjcmlwdEds
b2JhbE9iamVjdDo6Z2V0KEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciog
bmFtZSwgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiB2YWx1ZSkKIHsKICAgICBKU0xvY2tIb2xk
ZXIgbG9jayhzY3JpcHRTdGF0ZSk7CiAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gc2NyaXB0U3RhdGUt
PmxleGljYWxHbG9iYWxPYmplY3QoKS0+Z2V0KHNjcmlwdFN0YXRlLCBJZGVudGlmaWVyKHNjcmlw
dFN0YXRlLCBuYW1lKSk7CkBAIC05MSw3ICs3OSw3IEBAIGJvb2wgU2NyaXB0R2xvYmFsT2JqZWN0
OjpnZXQoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBTY3Jp
CiAgICAgaWYgKCFqc1ZhbHVlLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIHZhbHVlID0gU2NyaXB0T2JqZWN0KHNjcmlwdFN0YXRlLCBhc09iamVjdChqc1ZhbHVlKSk7
CisgICAgdmFsdWUgPSBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3Qoc2NyaXB0U3RhdGUsIGFzT2Jq
ZWN0KGpzVmFsdWUpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0LmgKc2ltaWxhcml0eSBpbmRleCA2NCUKY29weSBm
cm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaApjb3B5IHRvIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5oCmluZGV4IGUwZDdm
ZDUuLmJlMWVhNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRD
YWxsU3RhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxP
YmplY3QuaApAQCAtMSwxMCArMSwxMCBAQAogLyoKLSAqIENvcHlyaWdodCAoYykgMjAwOCwgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKICAqIG1ldDoKLSAqIAorICoKICAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCiAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCkBAIC0xNCw3ICsxNCw3IEBACiAgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCiAgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQogICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSAqIAorICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKICAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCiAgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKQEAg
LTI4LDQ1ICsyOCw0MCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFNjcmlwdENh
bGxTdGFja19oCi0jZGVmaW5lIFNjcmlwdENhbGxTdGFja19oCisjaWZuZGVmIFNjcmlwdEdsb2Jh
bE9iamVjdF9oCisjZGVmaW5lIFNjcmlwdEdsb2JhbE9iamVjdF9oCiAKLSNpZiBFTkFCTEUoSU5T
UEVDVE9SKQotI2luY2x1ZGUgIkluc3BlY3RvclR5cGVCdWlsZGVyLmgiCi0jZW5kaWYKK25hbWVz
cGFjZSBEZXByZWNhdGVkIHsKK2NsYXNzIFNjcmlwdE9iamVjdDsKK30KIAotI2luY2x1ZGUgIlNj
cmlwdENhbGxGcmFtZS5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CituYW1lc3BhY2UgSlNDIHsK
K2NsYXNzIEV4ZWNTdGF0ZTsKK30KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbnNw
ZWN0b3JBcnJheTsKK2NsYXNzIEluamVjdGVkU2NyaXB0SG9zdDsKK2NsYXNzIEluc3BlY3RvckZy
b250ZW5kSG9zdDsKK2NsYXNzIE1lZGlhQ29udHJvbHNIb3N0OwogCi1jbGFzcyBTY3JpcHRDYWxs
U3RhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxTY3JpcHRDYWxsU3RhY2s+IHsKK2NsYXNzIFNjcmlw
dEdsb2JhbE9iamVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhDYWxs
U3RhY2tTaXplVG9DYXB0dXJlID0gMjAwOwotICAgIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNj
cmlwdENhbGxTdGFjaz4gY3JlYXRlKFZlY3RvcjxTY3JpcHRDYWxsRnJhbWU+Jik7Ci0KLSAgICB+
U2NyaXB0Q2FsbFN0YWNrKCk7Ci0KLSAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUgJmF0KHNpemVf
dCkgY29uc3Q7Ci0gICAgc2l6ZV90IHNpemUoKSBjb25zdDsKLQotICAgIGJvb2wgaXNFcXVhbChT
Y3JpcHRDYWxsU3RhY2sqKSBjb25zdDsKLQorICAgIHN0YXRpYyBib29sIHNldChKU0M6OkV4ZWNT
dGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYp
OwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJy
YXk8VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNhbGxGcmFtZT4+IGJ1aWxkSW5zcGVjdG9yQXJyYXko
KSBjb25zdDsKKyAgICBzdGF0aWMgYm9vbCBzZXQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBjaGFy
KiBuYW1lLCBJbnNwZWN0b3JGcm9udGVuZEhvc3QqKTsKKyAgICBzdGF0aWMgYm9vbCBzZXQoSlND
OjpFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lLCBJbmplY3RlZFNjcmlwdEhvc3QqKTsKKyNl
bmRpZgorI2lmIEVOQUJMRShNRURJQV9DT05UUk9MU19TQ1JJUFQpCisgICAgc3RhdGljIGJvb2wg
c2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgTWVkaWFDb250cm9sc0hvc3Qq
KTsKICNlbmRpZgogCisgICAgc3RhdGljIGJvb2wgZ2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
Y2hhciogbmFtZSwgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0Jik7CisgICAgc3RhdGljIGJvb2wg
cmVtb3ZlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciogbmFtZSk7CiBwcml2YXRlOgotICAg
IFNjcmlwdENhbGxTdGFjayhWZWN0b3I8U2NyaXB0Q2FsbEZyYW1lPiYpOwotCi0gICAgVmVjdG9y
PFNjcmlwdENhbGxGcmFtZT4gbV9mcmFtZXM7CisgICAgU2NyaXB0R2xvYmFsT2JqZWN0KCkgeyB9
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBTY3JpcHRDYWxsU3Rh
Y2tfaAorI2VuZGlmIC8vIFNjcmlwdEdsb2JhbE9iamVjdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdE9iamVjdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZmJl
NjcxLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVj
dC5oCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgU2NyaXB0T2JqZWN0X2gK
LSNkZWZpbmUgU2NyaXB0T2JqZWN0X2gKLQotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCi0jaW5j
bHVkZSAiU2NyaXB0VmFsdWUuaCIKLQotI2luY2x1ZGUgPGhlYXAvU3Ryb25nLmg+Ci0jaW5jbHVk
ZSA8cnVudGltZS9KU09iamVjdC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBjbGFz
cyBJbnNwZWN0b3JGcm9udGVuZEhvc3Q7Ci0KLSAgICBjbGFzcyBTY3JpcHRPYmplY3QgOiBwdWJs
aWMgU2NyaXB0VmFsdWUgewotICAgIHB1YmxpYzoKLSAgICAgICAgU2NyaXB0T2JqZWN0KEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCopOwotICAgICAgICBTY3JpcHRPYmplY3QoSlNDOjpF
eGVjU3RhdGUqLCBjb25zdCBTY3JpcHRWYWx1ZSYpOwotICAgICAgICBTY3JpcHRPYmplY3QoKSA6
IG1fc2NyaXB0U3RhdGUoMCkgeyB9Ci0gICAgICAgIEpTQzo6SlNPYmplY3QqIGpzT2JqZWN0KCkg
Y29uc3QgeyByZXR1cm4gYXNPYmplY3QoanNWYWx1ZSgpKTsgfQotICAgICAgICBKU0M6OkV4ZWNT
dGF0ZSogc2NyaXB0U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdFN0YXRlOyB9Ci0KLSAg
ICBwcm90ZWN0ZWQ6Ci0gICAgICAgIEpTQzo6RXhlY1N0YXRlKiBtX3NjcmlwdFN0YXRlOwotICAg
IH07Ci0KLSAgICBjbGFzcyBTY3JpcHRHbG9iYWxPYmplY3QgewotICAgIHB1YmxpYzoKLSAgICAg
ICAgc3RhdGljIGJvb2wgc2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgY29u
c3QgU2NyaXB0T2JqZWN0Jik7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICAgICAgc3RhdGlj
IGJvb2wgc2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgSW5zcGVjdG9yRnJv
bnRlbmRIb3N0Kik7Ci0jZW5kaWYKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0KEpTQzo6RXhlY1N0
YXRlKiwgY29uc3QgY2hhciogbmFtZSwgU2NyaXB0T2JqZWN0Jik7Ci0gICAgICAgIHN0YXRpYyBi
b29sIHJlbW92ZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUpOwotICAgIHByaXZh
dGU6Ci0gICAgICAgIFNjcmlwdEdsb2JhbE9iamVjdCgpIHsgfQotICAgIH07Ci0KLX0KLQotI2Vu
ZGlmIC8vIFNjcmlwdE9iamVjdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRQcm9maWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dFByb2ZpbGUuY3BwCmluZGV4IDQ1MDUwYWUuLjIxMjQ0OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUuY3BwCkBAIC0zMCw4ICszMCw4IEBACiAKICNpbmNs
dWRlICJTY3JpcHRQcm9maWxlLmgiCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNp
bmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFs
dWVzLmg+CiAjaW5jbHVkZSA8cHJvZmlsZXIvUHJvZmlsZS5oPgogI2luY2x1ZGUgPHByb2ZpbGVy
L1Byb2ZpbGVOb2RlLmg+CiAKQEAgLTc0LDE2ICs3NCwxNiBAQCBkb3VibGUgU2NyaXB0UHJvZmls
ZTo6aWRsZVRpbWUoKSBjb25zdAogfQogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLXN0YXRpYyBQ
YXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+IGJ1aWxkSW5z
cGVjdG9yT2JqZWN0Rm9yKGNvbnN0IEpTQzo6UHJvZmlsZU5vZGUqIG5vZGUpCitzdGF0aWMgUGFz
c1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+
IGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9yKGNvbnN0IEpTQzo6UHJvZmlsZU5vZGUqIG5vZGUpCiB7
CiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEpTQzo6UHJvZmlsZU5vZGU+PiBQcm9maWxlTm9k
ZXNMaXN0OwogICAgIGNvbnN0IFByb2ZpbGVOb2Rlc0xpc3QmIG5vZGVDaGlsZHJlbiA9IG5vZGUt
PmNoaWxkcmVuKCk7CiAgICAgUHJvZmlsZU5vZGVzTGlzdDo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
bm9kZUNoaWxkcmVuLmVuZCgpOwotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1
aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZT4+IGNoaWxkcmVuID0gVHlwZUJ1aWxkZXI6
OkFycmF5PFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+OjpjcmVhdGUoKTsK
KyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlPj4gY2hpbGRyZW4gPSBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BV
UHJvZmlsZU5vZGU+OjpjcmVhdGUoKTsKICAgICBmb3IgKFByb2ZpbGVOb2Rlc0xpc3Q6OmNvbnN0
X2l0ZXJhdG9yIGl0ZXIgPSBub2RlQ2hpbGRyZW4uYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRl
cikKICAgICAgICAgY2hpbGRyZW4tPmFkZEl0ZW0oYnVpbGRJbnNwZWN0b3JPYmplY3RGb3IoaXRl
ci0+Z2V0KCkpKTsKIAotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2Zp
bGVOb2RlPiByZXN1bHQgPSBUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlOjpj
cmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BV
UHJvZmlsZU5vZGU+IHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpD
UFVQcm9maWxlTm9kZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldEZ1bmN0aW9uTmFtZShub2RlLT5m
dW5jdGlvbk5hbWUoKSkKICAgICAgICAgLnNldFVybChub2RlLT51cmwoKSkKICAgICAgICAgLnNl
dExpbmVOdW1iZXIobm9kZS0+bGluZU51bWJlcigpKQpAQCAtOTYsMTIgKzk2LDEyIEBAIHN0YXRp
YyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+IGJ1aWxk
SW5zcGVjdG9yT2JqZWN0Rm9yCiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLVBh
c3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZT4gU2NyaXB0UHJv
ZmlsZTo6YnVpbGRJbnNwZWN0b3JPYmplY3RGb3JIZWFkKCkgY29uc3QKK1Bhc3NSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlPiBTY3JpcHRQcm9m
aWxlOjpidWlsZEluc3BlY3Rvck9iamVjdEZvckhlYWQoKSBjb25zdAogewogICAgIHJldHVybiBi
dWlsZEluc3BlY3Rvck9iamVjdEZvcihtX3Byb2ZpbGUtPmhlYWQoKSk7CiB9CiAKLVBhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZT4gU2NyaXB0UHJvZmlsZTo6
YnVpbGRJbnNwZWN0b3JPYmplY3RGb3JCb3R0b21VcEhlYWQoKSBjb25zdAorUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+IFNjcmlwdFBy
b2ZpbGU6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9yQm90dG9tVXBIZWFkKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdFByb2ZpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUu
aAppbmRleCA4MDk1ZmU4Li4zYjI0MzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRQcm9maWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0UHJvZmlsZS5oCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRl
ci5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIgogI2VuZGlmCiAKIG5h
bWVzcGFjZSBKU0MgewpAQCAtNDQsOCArNDQsNiBAQCBjbGFzcyBQcm9maWxlOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsKLQogY2xhc3MgU2NyaXB0UHJv
ZmlsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNjcmlwdFByb2ZpbGU+IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTY3JpcHRQcm9maWxlPiBjcmVhdGUoUGFzc1JlZlB0cjxKU0M6OlBy
b2ZpbGU+IHByb2ZpbGUpOwpAQCAtNTcsOCArNTUsOCBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGlk
bGVUaW1lKCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIFBhc3NSZWZQdHI8
VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZT4gYnVpbGRJbnNwZWN0b3JPYmpl
Y3RGb3JIZWFkKCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6
OkNQVVByb2ZpbGVOb2RlPiBidWlsZEluc3BlY3Rvck9iamVjdEZvckJvdHRvbVVwSGVhZCgpIGNv
bnN0OworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQ
VVByb2ZpbGVOb2RlPiBidWlsZEluc3BlY3Rvck9iamVjdEZvckhlYWQoKSBjb25zdDsKKyAgICBQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9k
ZT4gYnVpbGRJbnNwZWN0b3JPYmplY3RGb3JCb3R0b21VcEhlYWQoKSBjb25zdDsKICNlbmRpZgog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
UHJvZmlsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIu
Y3BwCmluZGV4IGZkZTI3ZDAuLmZjOTM5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRQcm9maWxlci5jcHAKQEAgLTM1LDggKzM1LDkgQEAKICNpbmNsdWRlICJKU0RP
TVdpbmRvdy5oIgogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNp
bmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgorI2luY2x1
ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZh
bHVlLmg+CiAjaW5jbHVkZSA8cHJvZmlsZXIvTGVnYWN5UHJvZmlsZXIuaD4KICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogCkBAIC00NywxMiArNDgsMTIgQEAgdm9pZCBTY3JpcHRQcm9maWxlcjo6
Y29sbGVjdEdhcmJhZ2UoKQogICAgIGdjQ29udHJvbGxlcigpLmdhcmJhZ2VDb2xsZWN0U29vbigp
OwogfQogCi1TY3JpcHRPYmplY3QgU2NyaXB0UHJvZmlsZXI6Om9iamVjdEJ5SGVhcE9iamVjdElk
KHVuc2lnbmVkKQorRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IFNjcmlwdFByb2ZpbGVyOjpvYmpl
Y3RCeUhlYXBPYmplY3RJZCh1bnNpZ25lZCkKIHsKLSAgICByZXR1cm4gU2NyaXB0T2JqZWN0KCk7
CisgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCgpOwogfQogCi11bnNpZ25lZCBT
Y3JpcHRQcm9maWxlcjo6Z2V0SGVhcE9iamVjdElkKGNvbnN0IFNjcmlwdFZhbHVlJikKK3Vuc2ln
bmVkIFNjcmlwdFByb2ZpbGVyOjpnZXRIZWFwT2JqZWN0SWQoY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmKQogewogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdFByb2ZpbGVyLmgKaW5kZXggNzI3YzZlZS4uYzJmZGQyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5oCkBAIC0yOCwyMCArMjgsMjQgQEAK
ICNkZWZpbmUgU2NyaXB0UHJvZmlsZXJfaAogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdH
RVIpCisKICNpbmNsdWRlICJTY3JpcHRIZWFwU25hcHNob3QuaCIKICNpbmNsdWRlICJTY3JpcHRQ
cm9maWxlLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKK25hbWVzcGFjZSBEZXByZWNhdGVk
IHsKK2NsYXNzIFNjcmlwdE9iamVjdDsKK2NsYXNzIFNjcmlwdFZhbHVlOworfQorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEV4dGVybmFsQXJyYXlWaXNpdG9yOwogY2xhc3MgRXh0ZXJu
YWxTdHJpbmdWaXNpdG9yOwogY2xhc3MgV3JhcHBlZE5vZGVWaXNpdG9yOwogY2xhc3MgUGFnZTsK
LWNsYXNzIFNjcmlwdE9iamVjdDsKLWNsYXNzIFNjcmlwdFZhbHVlOwogY2xhc3MgV29ya2VyR2xv
YmFsU2NvcGU7CiAKIGNsYXNzIFNjcmlwdFByb2ZpbGVyIHsKQEAgLTU3LDggKzYxLDggQEAgcHVi
bGljOgogICAgIH07CiAKICAgICBzdGF0aWMgdm9pZCBjb2xsZWN0R2FyYmFnZSgpOwotICAgIHN0
YXRpYyBTY3JpcHRPYmplY3Qgb2JqZWN0QnlIZWFwT2JqZWN0SWQodW5zaWduZWQgaWQpOwotICAg
IHN0YXRpYyB1bnNpZ25lZCBnZXRIZWFwT2JqZWN0SWQoY29uc3QgU2NyaXB0VmFsdWUmKTsKKyAg
ICBzdGF0aWMgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IG9iamVjdEJ5SGVhcE9iamVjdElkKHVu
c2lnbmVkIGlkKTsKKyAgICBzdGF0aWMgdW5zaWduZWQgZ2V0SGVhcE9iamVjdElkKGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJik7CiAgICAgc3RhdGljIHZvaWQgc3RhcnQoSlNDOjpFeGVj
U3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKICAgICBzdGF0aWMgdm9pZCBzdGFydEZvclBh
Z2UoUGFnZSosIGNvbnN0IFN0cmluZyYgdGl0bGUpOwogICAgIHN0YXRpYyB2b2lkIHN0YXJ0Rm9y
V29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUqLCBjb25zdCBTdHJpbmcmIHRpdGxl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCmluZGV4IDM0OWQ5NGEu
LjcwZDE0YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0
YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaApAQCAt
MSwxMSArMSwxMSBAQAogLyoKICAqIENvcHlyaWdodCAoYykgMjAwOCwgMjAxMSBHb29nbGUgSW5j
LgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIAorICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQogICogbWV0OgotICogCisgKgogICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKQEAgLTE1LDcgKzE1LDcgQEAKICAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKICAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCiAgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICogCisg
KgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwogICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKICAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgpAQCAtMzQsNyAr
MzQsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEV4ZWNTdGF0ZTsKLWNsYXNzIEpTR2xv
YmFsT2JqZWN0OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA2Zjg2Yzhi
Li4xNGFmNDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTQwLDcgKzQwLDYgQEAKICNpbmNsdWRlICJKU01lc3Nh
Z2VQb3J0LmgiCiAjaW5jbHVkZSAiSlNOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPGxpbWl0cz4K
QEAgLTIwMDIsMTAgKzIwMDEsMTAgQEAgSlNWYWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRl
c2VyaWFsaXplKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2IKIH0KIAogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCi1TY3JpcHRWYWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRl
c2VyaWFsaXplRm9ySW5zcGVjdG9yKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSkKK0RlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemVGb3JJ
bnNwZWN0b3IoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlKQogewogICAgIEpTVmFsdWUgdmFs
dWUgPSBkZXNlcmlhbGl6ZShzY3JpcHRTdGF0ZSwgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxP
YmplY3QoKSwgMCk7Ci0gICAgcmV0dXJuIFNjcmlwdFZhbHVlKHNjcmlwdFN0YXRlLT52bSgpLCB2
YWx1ZSk7CisgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKHNjcmlwdFN0YXRlLT52
bSgpLCB2YWx1ZSk7CiB9CiAjZW5kaWYKIApAQCAtMjA0OSw2ICsyMDQ4LDIzIEBAIFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmJvb2xlYW5W
YWx1ZShib29sIHZhbHVlCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemVkU2NyaXB0
VmFsdWUoYnVmZmVyKSk7CiB9CiAKK1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OnNlcmlhbGl6ZShjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYgdmFsdWUsIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgU2VyaWFsaXphdGlvbkVy
cm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCit7CisgICAgcmV0dXJuIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlKHNjcmlwdFN0YXRlLCB2YWx1ZS5qc1ZhbHVlKCksIG51bGxwdHIsIG51bGxw
dHIsIHRocm93RXhjZXB0aW9ucyk7Cit9CisKK1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnNlcmlhbGl6ZShjb25zdCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSYgdmFsdWUsIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgTWVzc2FnZVBv
cnRBcnJheSogbWVzc2FnZVBvcnRzLCBBcnJheUJ1ZmZlckFycmF5KiBhcnJheUJ1ZmZlcnMsIGJv
b2wmIGRpZFRocm93KQoreworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlh
bGl6ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHNjcmlwdFN0YXRlLCB2
YWx1ZS5qc1ZhbHVlKCksIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJzKTsKKyAgICBkaWRUaHJv
dyA9IHNjcmlwdFN0YXRlLT5oYWRFeGNlcHRpb24oKTsKKyAgICByZXR1cm4gc2VyaWFsaXplZFZh
bHVlLnJlbGVhc2UoKTsKK30KKworRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNl
cHRpb25zKQoreworICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShzY3JpcHRTdGF0
ZS0+dm0oKSwgdmFsdWUtPmRlc2VyaWFsaXplKHNjcmlwdFN0YXRlLCBzY3JpcHRTdGF0ZS0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLCAwLCB0aHJvd0V4Y2VwdGlvbnMpKTsKK30KKwogdm9pZCBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6Om1heWJlVGhyb3dFeGNlcHRpb25JZlNlcmlhbGl6YXRpb25GYWls
ZWQoRXhlY1N0YXRlKiBleGVjLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBjb2RlKQogewogICAg
IGlmIChjb2RlID09IFN1Y2Nlc3NmdWxseUNvbXBsZXRlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggNjlkMjVmNi4uODU5
ODFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNkZWZpbmUgU2VyaWFsaXplZFNjcmlwdFZh
bHVlX2gKIAogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2Ny
aXB0VmFsdWUuaD4KICNpbmNsdWRlIDxoZWFwL1N0cm9uZy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUv
QXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KQEAgLTU3LDcg
KzU4LDYgQEAgZW51bSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSB7CiAgICAgCiBlbnVtIFNlcmlh
bGl6YXRpb25FcnJvck1vZGUgeyBOb25UaHJvd2luZywgVGhyb3dpbmcgfTsKIAotY2xhc3MgU2Ny
aXB0VmFsdWU7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSA6CkBAIC02Nyw4ICs2Nyw3IEBAIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6CiAg
ICAgcHVibGljIFJlZkNvdW50ZWQ8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB7CiAjZW5kaWYKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0
ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgTWVzc2FnZVBvcnRBcnJheSosIEFycmF5
QnVmZmVyQXJyYXkqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkpTVmFsdWUsIE1lc3NhZ2VQb3J0QXJyYXkqLCBBcnJheUJ1ZmZlckFycmF5KiwgU2Vy
aWFsaXphdGlvbkVycm9yTW9kZSA9IFRocm93aW5nKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYsIE1l
c3NhZ2VQb3J0QXJyYXkqLCBBcnJheUJ1ZmZlckFycmF5KiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShK
U0NvbnRleHRSZWYsIEpTVmFsdWVSZWYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CiAKQEAgLTgz
LDYgKzgyLDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHVuZGVmaW5lZFZhbHVlKCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBib29sZWFuVmFsdWUoYm9vbCB2YWx1ZSk7CiAKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZShjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYsIEpTQzo6RXhlY1N0YXRlKiwgU2VyaWFsaXphdGlvbkVycm9yTW9k
ZSA9IFRocm93aW5nKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IHNlcmlhbGl6ZShjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIEpTQzo6RXhlY1N0
YXRlKiwgTWVzc2FnZVBvcnRBcnJheSosIEFycmF5QnVmZmVyQXJyYXkqLCBib29sJik7CisgICAg
c3RhdGljIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRlc2VyaWFsaXplKEpTQzo6RXhlY1N0YXRl
KiwgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSA9IFRocm93
aW5nKTsKKwogICAgIHN0YXRpYyB1aW50MzJfdCB3aXJlRm9ybWF0VmVyc2lvbigpOwogCiAgICAg
U3RyaW5nIHRvU3RyaW5nKCk7CkBAIC05Miw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICBKU1ZhbHVl
UmVmIGRlc2VyaWFsaXplKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKIAog
I2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgU2NyaXB0VmFsdWUgZGVzZXJpYWxpemVGb3JJbnNw
ZWN0b3IoSlNDOjpFeGVjU3RhdGUqKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBkZXNl
cmlhbGl6ZUZvckluc3BlY3RvcihKU0M6OkV4ZWNTdGF0ZSopOwogI2VuZGlmCiAKICAgICBjb25z
dCBWZWN0b3I8dWludDhfdD4mIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5j
cHAKaW5kZXggMjkwYjFmMS4uNWRlNjA0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTMxLDEyICszMSwxMiBA
QAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAi
U2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVk
ZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJPYmplY3RQcm94eS5oIgog
I2luY2x1ZGUgIldvcmtlclNjcmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhy
ZWFkLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxoZWFw
L1N0cm9uZ0lubGluZXMuaD4KICNpbmNsdWRlIDxpbnRlcnByZXRlci9JbnRlcnByZXRlci5oPgog
I2luY2x1ZGUgPHJ1bnRpbWUvQ29tcGxldGlvbi5oPgpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQg
V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYg
c291cmNlQ29kZSkKICAgICBpZiAoaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgU2NyaXB0VmFsdWUgZXhjZXB0aW9uOworICAgIERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlIGV4Y2VwdGlvbjsKICAgICBldmFsdWF0ZShzb3VyY2VDb2RlLCAmZXhjZXB0aW9uKTsK
ICAgICBpZiAoZXhjZXB0aW9uLmpzVmFsdWUoKSkgewogICAgICAgICBKU0xvY2tIb2xkZXIgbG9j
ayh2bSgpKTsKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6
OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCiAgICAgfQogfQog
Ci12b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJj
ZUNvZGUmIHNvdXJjZUNvZGUsIFNjcmlwdFZhbHVlKiBleGNlcHRpb24pCit2b2lkIFdvcmtlclNj
cmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNv
ZGUsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKiBleGNlcHRpb24pCiB7CiAgICAgaWYgKGlzRXhl
Y3V0aW9uRm9yYmlkZGVuKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE0NSwxMyArMTQ1LDEzIEBA
IHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNl
Q29kZSYgc291cmNlQ29kZSwgU2NyaXB0CiAgICAgICAgIGludCBjb2x1bW5OdW1iZXIgPSAwOwog
ICAgICAgICBTdHJpbmcgc291cmNlVVJMID0gc291cmNlQ29kZS51cmwoKS5zdHJpbmcoKTsKICAg
ICAgICAgaWYgKG1fd29ya2VyR2xvYmFsU2NvcGUtPnNhbml0aXplU2NyaXB0RXJyb3IoZXJyb3JN
ZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCwgc291cmNlQ29kZS5j
YWNoZWRTY3JpcHQoKSkpCi0gICAgICAgICAgICAqZXhjZXB0aW9uID0gU2NyaXB0VmFsdWUoKm1f
dm0sIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgZXJy
b3JNZXNzYWdlLmltcGwoKSkpKTsKKyAgICAgICAgICAgICpleGNlcHRpb24gPSBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSgqbV92bSwgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVh
dGVFcnJvcihleGVjLCBlcnJvck1lc3NhZ2UuaW1wbCgpKSkpOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAqZXhjZXB0aW9uID0gU2NyaXB0VmFsdWUoKm1fdm0sIGV2YWx1YXRpb25FeGNlcHRp
b24pOworICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCpt
X3ZtLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICB9CiB9CiAKLXZvaWQgV29ya2VyU2NyaXB0
Q29udHJvbGxlcjo6c2V0RXhjZXB0aW9uKGNvbnN0IFNjcmlwdFZhbHVlJiBleGNlcHRpb24pCit2
b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNldEV4Y2VwdGlvbihjb25zdCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYgZXhjZXB0aW9uKQogewogICAgIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFw
cGVyLT5nbG9iYWxFeGVjKCktPnZtKCkudGhyb3dFeGNlcHRpb24obV93b3JrZXJHbG9iYWxTY29w
ZVdyYXBwZXItPmdsb2JhbEV4ZWMoKSwgZXhjZXB0aW9uLmpzVmFsdWUoKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKaW5k
ZXggOGJiN2Y0OS4uMDI1YzM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaApAQCAtMzMsMTUgKzMzLDE4IEBACiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKK25hbWVzcGFj
ZSBEZXByZWNhdGVkIHsKK2NsYXNzIFNjcmlwdFZhbHVlOworfQorCiBuYW1lc3BhY2UgSlNDIHsK
LSAgICBjbGFzcyBWTTsKK2NsYXNzIFZNOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICBjbGFzcyBKU1dvcmtlckdsb2JhbFNjb3BlOwogICAgIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7
Ci0gICAgY2xhc3MgU2NyaXB0VmFsdWU7CiAgICAgY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAK
ICAgICBjbGFzcyBXb3JrZXJTY3JpcHRDb250cm9sbGVyIHsKQEAgLTU3LDkgKzYwLDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBldmFsdWF0ZShjb25z
dCBTY3JpcHRTb3VyY2VDb2RlJik7Ci0gICAgICAgIHZvaWQgZXZhbHVhdGUoY29uc3QgU2NyaXB0
U291cmNlQ29kZSYsIFNjcmlwdFZhbHVlKiBleGNlcHRpb24pOworICAgICAgICB2b2lkIGV2YWx1
YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSogZXhj
ZXB0aW9uKTsKIAotICAgICAgICB2b2lkIHNldEV4Y2VwdGlvbihjb25zdCBTY3JpcHRWYWx1ZSYp
OworICAgICAgICB2b2lkIHNldEV4Y2VwdGlvbihjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYpOwogCiAgICAgICAgIC8vIEFzeW5jIHJlcXVlc3QgdG8gdGVybWluYXRlIGEgSlMgcnVuIGV4
ZWN1dGlvbi4gRXZlbnR1YWxseSBjYXVzZXMgdGVybWluYXRpb24KICAgICAgICAgLy8gZXhjZXB0
aW9uIHJhaXNlZCBkdXJpbmcgSlMgZXhlY3V0aW9uLCBpZiB0aGUgd29ya2VyIHRocmVhZCBoYXBw
ZW5zIHRvIHJ1biBKUy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KaW5kZXggYWYwNDQyYS4uYTY4ZjdkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTMyMzQs
NyArMzIzNCw3IEBAIG15ICVuYXRpdmVUeXBlID0gKAogICAgICJTZXJpYWxpemVkU2NyaXB0VmFs
dWUiID0+ICJSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiIsCiAgICAgIkRhdGUiID0+ICJk
b3VibGUiLAogICAgICJEaWN0aW9uYXJ5IiA9PiAiRGljdGlvbmFyeSIsCi0gICAgImFueSIgPT4g
IlNjcmlwdFZhbHVlIiwKKyAgICAiYW55IiA9PiAiRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUiLAog
ICAgICJib29sZWFuIiA9PiAiYm9vbCIsCiAgICAgImRvdWJsZSIgPT4gImRvdWJsZSIsCiAgICAg
ImZsb2F0IiA9PiAiZmxvYXQiLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCA5MzFkYjI2Li43NzY0Yzg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcApAQCAtMTY1MSw3ICsxNjUxLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpBbnlBdHRyaWJ1
dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSB2YWwKICAg
ICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0
PEpTVGVzdE9iaio+KHRoaXNPYmplY3QpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7Ci0gICAgU2NyaXB0VmFsdWUgbmF0aXZlVmFsdWUoZXhlYy0+dm0oKSwgdmFsdWUp
OworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG5hdGl2ZVZhbHVlKGV4ZWMtPnZtKCksIHZh
bHVlKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKICAg
ICBpbXBsLnNldEFueUF0dHJpYnV0ZShuYXRpdmVWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUV2
ZW50LmNwcAppbmRleCBiMGZiYTk5Li5kNWVmMGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ3VzdG9tRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVu
dC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgQ3VzdG9tRXZlbnQ6On5DdXN0b21FdmVudCgpCiB7CiB9
CiAKLXZvaWQgQ3VzdG9tRXZlbnQ6OmluaXRDdXN0b21FdmVudChjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IFNjcmlwdFZhbHVl
JiBkZXRhaWwpCit2b2lkIEN1c3RvbUV2ZW50Ojppbml0Q3VzdG9tRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZGV0YWlsKQogewogICAgIEFTU0VSVCghbV9zZXJpYWxpemVk
U2NyaXB0VmFsdWUuZ2V0KCkpOwogICAgIGlmIChkaXNwYXRjaGVkKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0
b21FdmVudC5oCmluZGV4IGJjODkwOTYuLjdmNGMxY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9DdXN0b21FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVu
dC5oCkBAIC0yNywxNSArMjcsMTUgQEAKICNkZWZpbmUgQ3VzdG9tRXZlbnRfaAogCiAjaW5jbHVk
ZSAiRXZlbnQuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEN1c3RvbUV2ZW50SW5pdCA6IHB1YmxpYyBFdmVu
dEluaXQgewogICAgIEN1c3RvbUV2ZW50SW5pdCgpOwogCi0gICAgU2NyaXB0VmFsdWUgZGV0YWls
OworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRldGFpbDsKIH07CiAKIGNsYXNzIEN1c3Rv
bUV2ZW50IDogcHVibGljIEV2ZW50IHsKQEAgLTUyLDE4ICs1MiwxOCBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3VzdG9tRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIpKTsK
ICAgICB9CiAKLSAgICB2b2lkIGluaXRDdXN0b21FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBk
ZXRhaWwpOworICAgIHZvaWQgaW5pdEN1c3RvbUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmIGRldGFpbCk7CiAKICAgICB2aXJ0dWFsIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50
ZXJmYWNlKCkgY29uc3Q7CiAKLSAgICBjb25zdCBTY3JpcHRWYWx1ZSYgZGV0YWlsKCkgY29uc3Qg
eyByZXR1cm4gbV9kZXRhaWw7IH0KKyAgICBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYg
ZGV0YWlsKCkgY29uc3QgeyByZXR1cm4gbV9kZXRhaWw7IH0KICAgICBQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFNjcmlwdFZhbHVlKCkgeyByZXR1cm4gbV9zZXJp
YWxpemVkU2NyaXB0VmFsdWU7IH0KIAogcHJpdmF0ZToKICAgICBDdXN0b21FdmVudCgpOwogICAg
IEN1c3RvbUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgQ3VzdG9tRXZlbnRJ
bml0JiBpbml0aWFsaXplcik7CiAKLSAgICBTY3JpcHRWYWx1ZSBtX2RldGFpbDsKKyAgICBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSBtX2RldGFpbDsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBtX3NlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VFdmVudC5jcHAKaW5kZXggZmQ4Njk3OC4uNDM4OGM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VFdmVudC5jcHAKQEAgLTIxLDE0ICsyMSwxMyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqCiAgKi8K
IAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgogCi0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRTb3VyY2UoRXZl
bnRUYXJnZXQqIHNvdXJjZSkKQEAgLTU2LDcgKzU1LDcgQEAgTWVzc2FnZUV2ZW50OjpNZXNzYWdl
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBNZXNzYWdlRXZlbnRJbml0JiBp
bmkKIHsKIH0KIAotTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoY29uc3QgU2NyaXB0VmFsdWUm
IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBQ
YXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJh
eT4gcG9ydHMpCitNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChjb25zdCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFz
dEV2ZW50SWQsIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHNvdXJjZSwgUGFzc093blB0cjxNZXNz
YWdlUG9ydEFycmF5PiBwb3J0cykKICAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZl
bnQsIGZhbHNlLCBmYWxzZSkKICAgICAsIG1fZGF0YVR5cGUoRGF0YVR5cGVTY3JpcHRWYWx1ZSkK
ICAgICAsIG1fZGF0YUFzU2NyaXB0VmFsdWUoZGF0YSkKQEAgLTEwOCw3ICsxMDcsNyBAQCBNZXNz
YWdlRXZlbnQ6On5NZXNzYWdlRXZlbnQoKQogewogfQogCi12b2lkIE1lc3NhZ2VFdmVudDo6aW5p
dE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9y
aWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIFBhc3NP
d25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMpCit2b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1l
c3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29s
IGNhbmNlbGFibGUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBkYXRhLCBjb25zdCBT
dHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3Vy
Y2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMpCiB7CiAgICAgaWYgKGRpc3Bh
dGNoZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L01lc3NhZ2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCmluZGV4
IGI5N2E3MDMuLjY4NjBkMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdl
RXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKQEAgLTMyLDgg
KzMyLDggQEAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2lu
Y2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRl
ICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1
ZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBFdmVudFRhcmdldDsKIHN0cnVjdCBNZXNzYWdl
RXZlbnRJbml0IDogcHVibGljIEV2ZW50SW5pdCB7CiAgICAgTWVzc2FnZUV2ZW50SW5pdCgpOwog
Ci0gICAgU2NyaXB0VmFsdWUgZGF0YTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBkYXRh
OwogICAgIFN0cmluZyBvcmlnaW47CiAgICAgU3RyaW5nIGxhc3RFdmVudElkOwogICAgIFJlZlB0
cjxFdmVudFRhcmdldD4gc291cmNlOwpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lc3NhZ2VFdmVudCk7CiAgICAgfQotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4gY3JlYXRlKFBhc3NPd25QdHI8TWVzc2FnZVBv
cnRBcnJheT4gcG9ydHMsIGNvbnN0IFNjcmlwdFZhbHVlJiBkYXRhID0gU2NyaXB0VmFsdWUoKSwg
Y29uc3QgU3RyaW5nJiBvcmlnaW4gPSBTdHJpbmcoKSwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJ
ZCA9IFN0cmluZygpLCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBzb3VyY2UgPSAwKQorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4gY3JlYXRlKFBhc3NPd25QdHI8TWVzc2FnZVBv
cnRBcnJheT4gcG9ydHMsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBkYXRhID0gRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUoKSwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSBTdHJpbmcoKSwg
Y29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9IFN0cmluZygpLCBQYXNzUmVmUHRyPEV2ZW50VGFy
Z2V0PiBzb3VyY2UgPSAwKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZXNz
YWdlRXZlbnQoZGF0YSwgb3JpZ2luLCBsYXN0RXZlbnRJZCwgc291cmNlLCBwb3J0cykpOwogICAg
IH0KQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5NZXNzYWdl
RXZlbnQoKTsKIAotICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IFNjcmlwdFZhbHVl
JiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwg
RE9NV2luZG93KiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4pOworICAgIHZv
aWQgaW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnVi
YmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBkYXRh
LCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2lu
ZG93KiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4pOwogICAgIHZvaWQgaW5p
dE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBj
b25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93
KiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4pOwogCiAgICAgY29uc3QgU3Ry
aW5nJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQpAQCAtMTA3LDcgKzEwNyw3
IEBAIHB1YmxpYzoKICAgICAgICAgRGF0YVR5cGVBcnJheUJ1ZmZlcgogICAgIH07CiAgICAgRGF0
YVR5cGUgZGF0YVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGFUeXBlOyB9Ci0gICAgY29uc3Qg
U2NyaXB0VmFsdWUmIGRhdGFBc1NjcmlwdFZhbHVlKCkgY29uc3QgeyBBU1NFUlQobV9kYXRhVHlw
ZSA9PSBEYXRhVHlwZVNjcmlwdFZhbHVlKTsgcmV0dXJuIG1fZGF0YUFzU2NyaXB0VmFsdWU7IH0K
KyAgICBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZGF0YUFzU2NyaXB0VmFsdWUoKSBj
b25zdCB7IEFTU0VSVChtX2RhdGFUeXBlID09IERhdGFUeXBlU2NyaXB0VmFsdWUpOyByZXR1cm4g
bV9kYXRhQXNTY3JpcHRWYWx1ZTsgfQogICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBkYXRhQXNTZXJpYWxpemVkU2NyaXB0VmFsdWUoKSBjb25zdCB7IEFTU0VSVChtX2RhdGFU
eXBlID09IERhdGFUeXBlU2VyaWFsaXplZFNjcmlwdFZhbHVlKTsgcmV0dXJuIG1fZGF0YUFzU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOyB9CiAgICAgU3RyaW5nIGRhdGFBc1N0cmluZygpIGNvbnN0IHsg
QVNTRVJUKG1fZGF0YVR5cGUgPT0gRGF0YVR5cGVTdHJpbmcpOyByZXR1cm4gbV9kYXRhQXNTdHJp
bmc7IH0KICAgICBCbG9iKiBkYXRhQXNCbG9iKCkgY29uc3QgeyBBU1NFUlQobV9kYXRhVHlwZSA9
PSBEYXRhVHlwZUJsb2IpOyByZXR1cm4gbV9kYXRhQXNCbG9iLmdldCgpOyB9CkBAIC0xMTYsNyAr
MTE2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBNZXNzYWdlRXZlbnQoKTsKICAgICBNZXNz
YWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgTWVzc2FnZUV2ZW50SW5pdCYpOwot
ICAgIE1lc3NhZ2VFdmVudChjb25zdCBTY3JpcHRWYWx1ZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBv
cmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+
IHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5Pik7CisgICAgTWVzc2FnZUV2ZW50
KGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdp
biwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gc291
cmNlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+KTsKICAgICBNZXNzYWdlRXZlbnQoUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
LCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBzb3Vy
Y2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4pOwogCiAgICAgZXhwbGljaXQgTWVzc2Fn
ZUV2ZW50KGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pOwpAQCAtMTI0
LDcgKzEyNCw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTWVzc2FnZUV2ZW50KFBhc3NSZWZQ
dHI8QXJyYXlCdWZmZXI+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luKTsKIAogICAgIERhdGFU
eXBlIG1fZGF0YVR5cGU7Ci0gICAgU2NyaXB0VmFsdWUgbV9kYXRhQXNTY3JpcHRWYWx1ZTsKKyAg
ICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBtX2RhdGFBc1NjcmlwdFZhbHVlOwogICAgIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1fZGF0YUFzU2VyaWFsaXplZFNjcmlwdFZhbHVlOwog
ICAgIFN0cmluZyBtX2RhdGFBc1N0cmluZzsKICAgICBSZWZQdHI8QmxvYj4gbV9kYXRhQXNCbG9i
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmgKaW5kZXggMjIxOTNhNC4uNTY4MjM0MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5oCkBAIC0yOCwxNCArMjgsMTQgQEAKICNkZWZpbmUg
UG9wU3RhdGVFdmVudF9oCiAKICNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1ZGUgIlNjcmlwdFZh
bHVlLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdHJ1Y3QgUG9wU3RhdGVFdmVudEluaXQgOiBwdWJsaWMgRXZlbnRJbml0IHsK
ICAgICBQb3BTdGF0ZUV2ZW50SW5pdCgpOwogCi0gICAgU2NyaXB0VmFsdWUgc3RhdGU7CisgICAg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgc3RhdGU7CiB9OwogCiBjbGFzcyBIaXN0b3J5OwpAQCAt
NDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UG9wU3RhdGVFdmVu
dD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFBvcFN0YXRlRXZlbnRJbml0Jik7
CiAKICAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFN0YXRl
KCkgY29uc3QgeyByZXR1cm4gbV9zZXJpYWxpemVkU3RhdGU7IH0KLSAgICBjb25zdCBTY3JpcHRW
YWx1ZSYgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CisgICAgY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQogICAg
IEhpc3RvcnkqIGhpc3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2hpc3RvcnkuZ2V0KCk7IH0KIAog
ICAgIHZpcnR1YWwgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdDsKQEAgLTU5
LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICBQb3BTdGF0ZUV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYsIGNvbnN0IFBvcFN0YXRlRXZlbnRJbml0Jik7CiAgICAgZXhwbGljaXQgUG9wU3RhdGVFdmVu
dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SGlzdG9yeT4p
OwogCi0gICAgU2NyaXB0VmFsdWUgbV9zdGF0ZTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSBtX3N0YXRlOwogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1fc2VyaWFsaXpl
ZFN0YXRlOwogICAgIFJlZlB0cjxIaXN0b3J5PiBtX2hpc3Rvcnk7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEVsZW1lbnQuY3BwCmluZGV4IDE2M2E0MDcuLmQ3YjJiNzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RWxlbWVudC5jcHAKQEAgLTQyLDExICs0MiwxMSBAQAogI2luY2x1ZGUgIlNjcmlw
dENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRSdW5uZXIuaCIKICNpbmNsdWRlICJTY3Jp
cHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTY3Jp
cHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dE5vZGVUcmF2ZXJzYWwuaCIKKyNpbmNs
dWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nSGFzaC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
aW5kZXggYTVhNzliOS4uYjlhNDJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCkBAIC0xMzUsOCArMTM1LDkgQEAKICNpZiBFTkFCTEUoTUVESUFfQ09OVFJPTFNf
U0NSSVBUKQogI2luY2x1ZGUgIkpTTWVkaWFDb250cm9sc0hvc3QuaCIKICNpbmNsdWRlICJNZWRp
YUNvbnRyb2xzSG9zdC5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUgIlNj
cmlwdEdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIlVzZXJBZ2VudFNjcmlwdHMuaCIKKyNpbmNs
dWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3QuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCmluZGV4IGVkNzMw
YjQuLjdmZjRjZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1
ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3Bw
CkBAIC0zNywxNyArMzcsMTUgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJI
VE1MUGFyYW1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgotI2luY2x1
ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAi
VGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKLQotI2lmIEVO
QUJMRShTVkcpCi0jaW5jbHVkZSAiU1ZHTmFtZXMuaCIKLSNlbmRpZgotCiAjaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KIAorI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiU1ZHTmFtZXMuaCIK
KyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFt
ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yRGVs
ZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRl
LmNwcAppbmRleCBhZDMzZTAwLi5kMDYwNjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5jcHAKQEAgLTM1LDEyICszNSwxNCBAQAogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNp
bmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgi
CiAjaW5jbHVkZSAiUGluZ0xvYWRlci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisj
aW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKK3VzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogWFNTQXVkaXRv
ckRlbGVnYXRlOjpYU1NBdWRpdG9yRGVsZWdhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQppbmRl
eCBhOTk1NTMwLi5hMWRiMWI3IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
Q29kZUdlbmVyYXRvckluc3BlY3Rvci5weQorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
Q29kZUdlbmVyYXRvckluc3BlY3Rvci5weQpAQCAtMjYyLDcgKzI2Miw3IEBAIGNsYXNzIFJhd1R5
cGVzKG9iamVjdCk6CiAKICAgICAgICAgQGNsYXNzbWV0aG9kCiAgICAgICAgIGRlZiBnZXRfcmF3
X3ZhbGlkYXRvcl9jYWxsX3RleHQoY2xzKToKLSAgICAgICAgICAgIHJldHVybiAiUnVudGltZUNh
c3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFsdWU6OlR5cGUlcz4iICUgY2xzLmdldF92
YWxpZGF0ZV9tZXRob2RfcGFyYW1zKCkudGVtcGxhdGVfdHlwZQorICAgICAgICAgICAgcmV0dXJu
ICJSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVl
OjpUeXBlJXM+IiAlIGNscy5nZXRfdmFsaWRhdGVfbWV0aG9kX3BhcmFtcygpLnRlbXBsYXRlX3R5
cGUKIAogICAgIGNsYXNzIFN0cmluZyhCYXNlVHlwZSk6CiAgICAgICAgIEBzdGF0aWNtZXRob2QK
QEAgLTQ1MSw3ICs0NTEsNyBAQCBjbGFzcyBSYXdUeXBlcyhvYmplY3QpOgogCiAgICAgICAgIEBz
dGF0aWNtZXRob2QKICAgICAgICAgZGVmIGdldF9hcnJheV9pdGVtX3Jhd19jX3R5cGVfdGV4dCgp
OgotICAgICAgICAgICAgcmV0dXJuICJJbnNwZWN0b3JPYmplY3QiCisgICAgICAgICAgICByZXR1
cm4gIkluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0IgogCiAgICAgICAgIEBzdGF0aWNtZXRob2QK
ICAgICAgICAgZGVmIGdldF9yYXdfdHlwZV9tb2RlbCgpOgpAQCAtNDg2LDcgKzQ4Niw3IEBAIGNs
YXNzIFJhd1R5cGVzKG9iamVjdCk6CiAKICAgICAgICAgQHN0YXRpY21ldGhvZAogICAgICAgICBk
ZWYgZ2V0X2FycmF5X2l0ZW1fcmF3X2NfdHlwZV90ZXh0KCk6Ci0gICAgICAgICAgICByZXR1cm4g
Ikluc3BlY3RvclZhbHVlIgorICAgICAgICAgICAgcmV0dXJuICJJbnNwZWN0b3I6Okluc3BlY3Rv
clZhbHVlIgogCiAgICAgICAgIEBzdGF0aWNtZXRob2QKICAgICAgICAgZGVmIGdldF9yYXdfdHlw
ZV9tb2RlbCgpOgpAQCAtNTI5LDcgKzUyOSw3IEBAIGNsYXNzIFJhd1R5cGVzKG9iamVjdCk6CiAK
ICAgICAgICAgQHN0YXRpY21ldGhvZAogICAgICAgICBkZWYgZ2V0X2FycmF5X2l0ZW1fcmF3X2Nf
dHlwZV90ZXh0KCk6Ci0gICAgICAgICAgICByZXR1cm4gIkluc3BlY3RvckFycmF5IgorICAgICAg
ICAgICAgcmV0dXJuICJJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5IgogCiAgICAgICAgIEBzdGF0
aWNtZXRob2QKICAgICAgICAgZGVmIGdldF9yYXdfdHlwZV9tb2RlbCgpOgpAQCAtNTkwLDcgKzU5
MCw3IEBAIGNsYXNzIENvbW1hbmRSZXR1cm5QYXNzTW9kZWw6CiAgICAgICAgICAgICBzZWxmLnZh
cl90eXBlID0gdmFyX3R5cGUKIAogICAgICAgICBkZWYgZ2V0X3JldHVybl92YXJfdHlwZShzZWxm
KToKLSAgICAgICAgICAgIHJldHVybiAiVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDwlcz4iICUgc2Vs
Zi52YXJfdHlwZQorICAgICAgICAgICAgcmV0dXJuICJJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpP
cHRPdXRwdXQ8JXM+IiAlIHNlbGYudmFyX3R5cGUKIAogICAgICAgICBAc3RhdGljbWV0aG9kCiAg
ICAgICAgIGRlZiBnZXRfb3V0cHV0X2FyZ3VtZW50X3ByZWZpeCgpOgpAQCAtNjAxLDcgKzYwMSw3
IEBAIGNsYXNzIENvbW1hbmRSZXR1cm5QYXNzTW9kZWw6CiAgICAgICAgICAgICByZXR1cm4gIiVz
LmdldFZhbHVlKCkiCiAKICAgICAgICAgZGVmIGdldF9vdXRwdXRfcGFyYW1ldGVyX3R5cGUoc2Vs
Zik6Ci0gICAgICAgICAgICByZXR1cm4gIlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8JXM+KiIgJSBz
ZWxmLnZhcl90eXBlCisgICAgICAgICAgICByZXR1cm4gIkluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
Ok9wdE91dHB1dDwlcz4qIiAlIHNlbGYudmFyX3R5cGUKIAogICAgICAgICBAc3RhdGljbWV0aG9k
CiAgICAgICAgIGRlZiBnZXRfc2V0X3JldHVybl9jb25kaXRpb24oKToKQEAgLTcxMiwxMCArNzEy
LDEwIEBAIGNsYXNzIFR5cGVNb2RlbDoKICAgICAgICAgICAgIFR5cGVNb2RlbC5WYWx1ZVR5cGUu
X19pbml0X18oc2VsZiwgImludCIsIEZhbHNlKQogCiAgICAgICAgIGRlZiBnZXRfaW5wdXRfcGFy
YW1fdHlwZV90ZXh0KHNlbGYpOgotICAgICAgICAgICAgcmV0dXJuICJUeXBlQnVpbGRlcjo6RXhh
Y3RseUludCIKKyAgICAgICAgICAgIHJldHVybiAiSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RXhh
Y3RseUludCIKIAogICAgICAgICBkZWYgZ2V0X29wdF9vdXRwdXRfdHlwZV8oc2VsZik6Ci0gICAg
ICAgICAgICByZXR1cm4gIlR5cGVCdWlsZGVyOjpFeGFjdGx5SW50IgorICAgICAgICAgICAgcmV0
dXJuICJJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpFeGFjdGx5SW50IgogCiAgICAgQGNsYXNzbWV0
aG9kCiAgICAgZGVmIGluaXRfY2xhc3MoY2xzKToKQEAgLTcyNiw5ICs3MjYsOSBAQCBjbGFzcyBU
eXBlTW9kZWw6CiAgICAgICAgICAgICBjbHMuSW50ID0gY2xzLlZhbHVlVHlwZSgiaW50IiwgRmFs
c2UpCiAgICAgICAgIGNscy5OdW1iZXIgPSBjbHMuVmFsdWVUeXBlKCJkb3VibGUiLCBGYWxzZSkK
ICAgICAgICAgY2xzLlN0cmluZyA9IGNscy5WYWx1ZVR5cGUoIlN0cmluZyIsIFRydWUsKQotICAg
ICAgICBjbHMuT2JqZWN0ID0gY2xzLlJlZlB0ckJhc2VkKCJJbnNwZWN0b3JPYmplY3QiKQotICAg
ICAgICBjbHMuQXJyYXkgPSBjbHMuUmVmUHRyQmFzZWQoIkluc3BlY3RvckFycmF5IikKLSAgICAg
ICAgY2xzLkFueSA9IGNscy5SZWZQdHJCYXNlZCgiSW5zcGVjdG9yVmFsdWUiKQorICAgICAgICBj
bHMuT2JqZWN0ID0gY2xzLlJlZlB0ckJhc2VkKCJJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCIp
CisgICAgICAgIGNscy5BcnJheSA9IGNscy5SZWZQdHJCYXNlZCgiSW5zcGVjdG9yOjpJbnNwZWN0
b3JBcnJheSIpCisgICAgICAgIGNscy5BbnkgPSBjbHMuUmVmUHRyQmFzZWQoIkluc3BlY3Rvcjo6
SW5zcGVjdG9yVmFsdWUiKQogCiBUeXBlTW9kZWwuaW5pdF9jbGFzcygpCiAKQEAgLTgzNyw4ICs4
MzcsOCBAQCBjbGFzcyBUeXBlQmluZGluZ3M6CiAKICAgICAgICAgY2xhc3MgSGVscGVyOgogICAg
ICAgICAgICAgaXNfYWRfaG9jID0gRmFsc2UKLSAgICAgICAgICAgIGZ1bGxfbmFtZV9wcmVmaXhf
Zm9yX3VzZSA9ICJUeXBlQnVpbGRlcjo6IiArIGNvbnRleHRfZG9tYWluX25hbWUgKyAiOjoiCi0g
ICAgICAgICAgICBmdWxsX25hbWVfcHJlZml4X2Zvcl9pbXBsID0gIlR5cGVCdWlsZGVyOjoiICsg
Y29udGV4dF9kb21haW5fbmFtZSArICI6OiIKKyAgICAgICAgICAgIGZ1bGxfbmFtZV9wcmVmaXhf
Zm9yX3VzZSA9ICJJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjoiICsgY29udGV4dF9kb21haW5fbmFt
ZSArICI6OiIKKyAgICAgICAgICAgIGZ1bGxfbmFtZV9wcmVmaXhfZm9yX2ltcGwgPSAiSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6IiArIGNvbnRleHRfZG9tYWluX25hbWUgKyAiOjoiCiAKICAgICAg
ICAgICAgIEBzdGF0aWNtZXRob2QKICAgICAgICAgICAgIGRlZiB3cml0ZV9kb2Mod3JpdGVyKToK
QEAgLTkyOCw3ICs5MjgsNyBAQCBjbGFzcyBUeXBlQmluZGluZ3M6CiAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgZW51bV9iaW5kaW5nX2Nscy5uZWVkX2ludGVybmFsX3J1bnRp
bWVfY2FzdF86CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBw
ZW5kKCIjaWYgJXNcbiIgJSBWQUxJREFUT1JfSUZERUZfTkFNRSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgc3RhdGljIHZvaWQgYXNzZXJ0
Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSk7XG4iKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICBzdGF0aWMgdm9pZCBhc3Nl
cnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogdmFsdWUpO1xuIikKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQoIiNlbmRpZiAg
Ly8gJXNcbiIgJSBWQUxJREFUT1JfSUZERUZfTkFNRSkKIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlciA9IGdlbmVyYXRlX2NvbnRleHQudmFsaWRh
dG9yX3dyaXRlcgpAQCAtOTM4LDcgKzkzOCw3IEBAIGNsYXNzIFR5cGVCaW5kaW5nczoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRvbWFpbl9ndWFyZDoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW5fZ3VhcmQuZ2VuZXJhdGVfb3Bl
bih2YWxpZGF0b3Jfd3JpdGVyKQogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoInZvaWQgJXMlczo6YXNzZXJ0Q29ycmVjdFZhbHVl
KEluc3BlY3RvclZhbHVlKiB2YWx1ZSlcbiIgJSAoaGVscGVyLmZ1bGxfbmFtZV9wcmVmaXhfZm9y
X2ltcGwsIGVudW1fbmFtZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoInZvaWQgJXMlczo6YXNzZXJ0Q29ycmVjdFZhbHVlKElu
c3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVlKVxuIiAlIChoZWxwZXIuZnVsbF9uYW1lX3By
ZWZpeF9mb3JfaW1wbCwgZW51bV9uYW1lKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhbGlkYXRvcl93cml0ZXIubmV3bGluZSgie1xuIikKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcl93cml0ZXIubmV3bGluZSgiICAgIFdURjo6U3Ry
aW5nIHM7XG4iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9y
X3dyaXRlci5uZXdsaW5lKCIgICAgYm9vbCBjYXN0X3JlcyA9IHZhbHVlLT5hc1N0cmluZygmcyk7
XG4iKQpAQCAtOTgwLDcgKzk4MCw3IEBAIGNsYXNzIFR5cGVCaW5kaW5nczoKIAogICAgICAgICAg
ICAgICAgICAgICBAc3RhdGljbWV0aG9kCiAgICAgICAgICAgICAgICAgICAgIGRlZiBnZXRfc2V0
dGVyX3ZhbHVlX2V4cHJlc3Npb25fcGF0dGVybigpOgotICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuICJUeXBlQnVpbGRlcjo6Z2V0RW51bUNvbnN0YW50VmFsdWUoJXMpIgorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuICJJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpnZXRFbnVtQ29u
c3RhbnRWYWx1ZSglcykiCiAKICAgICAgICAgICAgICAgICAgICAgQHN0YXRpY21ldGhvZAogICAg
ICAgICAgICAgICAgICAgICBkZWYgcmVkdWNlX3RvX3Jhd190eXBlKCk6CkBAIC0xMTcyLDkgKzEx
NzIsOSBAQCBjbGFzcyBUeXBlQmluZGluZ3M6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdyaXRlci5hcHBlbmQoY2xhc3NfbmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgd3JpdGVyLmFwcGVuZCgiIDogcHVibGljICIpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIGlzX29wZW5fdHlwZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdyaXRlci5hcHBlbmQoIkluc3BlY3Rvck9iamVjdCIpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKCJJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKCJJbnNwZWN0b3JPYmplY3RC
YXNlIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQo
Ikluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0QmFzZSIpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdyaXRlci5hcHBlbmQoIiB7XG4iKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3cml0ZXIubmV3bGluZSgicHVibGljOlxuIikKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYWRfaG9jX3R5cGVfd3JpdGVyID0gd3JpdGVyLmluc2VydF93cml0ZXIoIiAg
ICAiKQpAQCAtMTIzNCw3ICsxMjM0LDcgQEAgY2xhc3MgVHlwZUJpbmRpbmdzOgogCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lX211bHRpbGluZShDb2RlR2Vu
ZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5jbGFzc19iaW5kaW5nX2J1aWxkZXJfcGFydF80KQogCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgdHlwZWRl
ZiBUeXBlQnVpbGRlcjo6U3RydWN0SXRlbVRyYWl0cyBJdGVtVHJhaXRzO1xuIikKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICB0eXBlZGVmIEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OlN0cnVjdEl0ZW1UcmFpdHMgSXRlbVRyYWl0cztcbiIpCiAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHByb3BfZGF0YSBpbiByZXNvbHZlX2Rh
dGEub3B0aW9uYWxfcHJvcGVydGllczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHByb3BfbmFtZSA9IHByb3BfZGF0YS5wWyJuYW1lIl0KQEAgLTEyNTEsMjUgKzEyNTEsMjUg
QEAgY2xhc3MgVHlwZUJpbmRpbmdzOgogCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIHNldHRlcl9uYW1lIGluIElOU1BFQ1RPUl9PQkpFQ1RfU0VUVEVSX05BTUVTOgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIg
ICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6JXM7XG5cbiIgJSBzZXR0ZXJfbmFtZSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAg
IHVzaW5nIEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0QmFzZTo6JXM7XG5cbiIgJSBzZXR0ZXJf
bmFtZSkKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjbGFzc19iaW5kaW5n
X2Nscy5uZWVkX3VzZXJfcnVudGltZV9jYXN0XzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgc3RhdGljIFBhc3NSZWZQdHI8JXM+IHJ1bnRp
bWVDYXN0KFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKVxuIiAlIGNsYXNzX25hbWUp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAg
IHN0YXRpYyBQYXNzUmVmUHRyPCVzPiBydW50aW1lQ2FzdChQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yVmFsdWU+IHZhbHVlKVxuIiAlIGNsYXNzX25hbWUpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgIHtcbiIpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBvYmplY3Q7XG4iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0PiBvYmplY3Q7XG4iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd3JpdGVyLm5ld2xpbmUoIiAgICAgICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFzT2JqZWN0
KCZvYmplY3QpO1xuIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRl
ci5uZXdsaW5lKCIgICAgICAgIEFTU0VSVF9VTlVTRUQoY2FzdFJlcywgY2FzdFJlcyk7XG4iKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVuZCgiI2lmICVz
XG4iICUgVkFMSURBVE9SX0lGREVGX05BTUUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgICAgICBhc3NlcnRDb3JyZWN0VmFsdWUob2JqZWN0
LmdldCgpKTtcbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIu
YXBwZW5kKCIjZW5kaWYgIC8vICVzXG4iICUgVkFMSURBVE9SX0lGREVGX05BTUUpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgICAgICBDT01Q
SUxFX0FTU0VSVChzaXplb2YoJXMpID09IHNpemVvZihJbnNwZWN0b3JPYmplY3RCYXNlKSwgdHlw
ZV9jYXN0X3Byb2JsZW0pO1xuIiAlIGNsYXNzX25hbWUpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
JXMqPihzdGF0aWNfY2FzdDxJbnNwZWN0b3JPYmplY3RCYXNlKj4ob2JqZWN0LmdldCgpKSk7XG4i
ICUgY2xhc3NfbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRl
ci5uZXdsaW5lKCIgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZiglcykgPT0gc2l6ZW9mKElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0QmFzZSksIHR5cGVfY2FzdF9wcm9ibGVtKTtcbiIgJSBj
bGFzc19uYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5l
d2xpbmUoIiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PCVzKj4oc3RhdGljX2Nhc3Q8SW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3RCYXNlKj4ob2JqZWN0LmdldCgpKSk7XG4iICUgY2xhc3NfbmFt
ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIg
ICAgfVxuIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5hcHBl
bmQoIlxuIikKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjbGFzc19iaW5k
aW5nX2Nscy5uZWVkX2ludGVybmFsX3J1bnRpbWVfY2FzdF86CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKCIjaWYgJXNcbiIgJSBWQUxJREFUT1JfSUZE
RUZfTkFNRSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXds
aW5lKCIgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2
YWx1ZSk7XG4iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5l
d2xpbmUoIiAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JWYWx1ZSogdmFsdWUpO1xuIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdyaXRlci5hcHBlbmQoIiNlbmRpZiAgLy8gJXNcbiIgJSBWQUxJREFUT1JfSUZERUZfTkFN
RSkKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VkX2ZpZWxkX3Nl
dCA9IChjb250ZXh0X2RvbWFpbl9uYW1lICsgIi4iICsgY2xhc3NfbmFtZSkgbm90IGluIFRZUEVT
X1dJVEhfT1BFTl9GSUVMRF9MSVNUX1NFVApAQCAtMTI4MSw3ICsxMjgxLDcgQEAgY2xhc3MgVHlw
ZUJpbmRpbmdzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZG9tYWlu
X2d1YXJkOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbl9n
dWFyZC5nZW5lcmF0ZV9vcGVuKHZhbGlkYXRvcl93cml0ZXIpCiAKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcl93cml0ZXIubmV3bGluZSgidm9pZCAlcyVzOjph
c3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKVxuIiAlIChoZWxwZXIuZnVs
bF9uYW1lX3ByZWZpeF9mb3JfaW1wbCwgY2xhc3NfbmFtZSkpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoInZvaWQgJXMlczo6YXNz
ZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVlKVxuIiAlICho
ZWxwZXIuZnVsbF9uYW1lX3ByZWZpeF9mb3JfaW1wbCwgY2xhc3NfbmFtZSkpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoIntcbiIp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5l
d2xpbmUoIiAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3Q7XG4iKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCIgICAg
Ym9vbCBjYXN0UmVzID0gdmFsdWUtPmFzT2JqZWN0KCZvYmplY3QpO1xuIikKQEAgLTE1MTksNyAr
MTUxOSw3IEBAIGNsYXNzIFR5cGVCaW5kaW5nczoKIAogICAgICAgICAgICAgICAgICAgICBAY2xh
c3NtZXRob2QKICAgICAgICAgICAgICAgICAgICAgZGVmIGdldF9hcnJheV9pdGVtX2NfdHlwZV90
ZXh0KGNscyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVwbGFjZV9yaWdodF9z
aGlmdCgiVHlwZUJ1aWxkZXI6OkFycmF5PCVzPiIgJSBjbHMucmVzb2x2ZV9kYXRhXy5pdGVtX3R5
cGVfYmluZGluZy5nZXRfYXJyYXlfaXRlbV9jX3R5cGVfdGV4dCgpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHJlcGxhY2VfcmlnaHRfc2hpZnQoIkluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFycmF5PCVzPiIgJSBjbHMucmVzb2x2ZV9kYXRhXy5pdGVtX3R5cGVfYmluZGluZy5nZXRf
YXJyYXlfaXRlbV9jX3R5cGVfdGV4dCgpKQogCiAgICAgICAgICAgICAgICAgICAgIEBzdGF0aWNt
ZXRob2QKICAgICAgICAgICAgICAgICAgICAgZGVmIGdldF9zZXR0ZXJfdmFsdWVfZXhwcmVzc2lv
bl9wYXR0ZXJuKCk6CkBAIC0xOTAwLDEwICsxOTAwLDEwIEBAIGNsYXNzIEdlbmVyYXRvcjoKICAg
ICAgICAgICAgIGRpc3BhdGNoZXJfbmFtZSA9ICJJbnNwZWN0b3IiICsgQ2FwaXRhbGl6ZXIubG93
ZXJfY2FtZWxfY2FzZV90b191cHBlcihkb21haW5fbmFtZSkgKyAiQmFja2VuZERpc3BhdGNoZXIi
CiAgICAgICAgICAgICBhZ2VudF9pbnRlcmZhY2VfbmFtZSA9IGRpc3BhdGNoZXJfbmFtZSArICJI
YW5kbGVyIgogCi0gICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9kaXNwYXRjaGVyX2ludGVy
ZmFjZV9saXN0LmFwcGVuZCgiY2xhc3MgJXMgRklOQUwgOiBwdWJsaWMgSW5zcGVjdG9yU3VwcGxl
bWVudGFsQmFja2VuZERpc3BhdGNoZXIge1xuIiAlIGRpc3BhdGNoZXJfbmFtZSkKKyAgICAgICAg
ICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3BhdGNoZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCJj
bGFzcyAlcyBGSU5BTCA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvclN1cHBsZW1lbnRhbEJh
Y2tlbmREaXNwYXRjaGVyIHtcbiIgJSBkaXNwYXRjaGVyX25hbWUpCiAgICAgICAgICAgICBHZW5l
cmF0b3IuYmFja2VuZF9kaXNwYXRjaGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgicHVibGljOlxu
IikKLSAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3BhdGNoZXJfaW50ZXJmYWNlX2xp
c3QuYXBwZW5kKCIgICAgc3RhdGljIFBhc3NSZWZQdHI8JXM+IGNyZWF0ZShJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciosICVzKik7XG4iICUgKGRpc3BhdGNoZXJfbmFtZSwgYWdlbnRfaW50ZXJm
YWNlX25hbWUpKQotICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfZGlzcGF0Y2hlcl9pbnRl
cmZhY2VfbGlzdC5hcHBlbmQoIiAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2gobG9uZyBjYWxsSWQs
IGNvbnN0IFN0cmluZyYgbWV0aG9kLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbWVzc2Fn
ZSkgT1ZFUlJJREU7XG4iKQorICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfZGlzcGF0Y2hl
cl9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoIiAgICBzdGF0aWMgUGFzc1JlZlB0cjwlcz4gY3JlYXRl
KEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqLCAlcyopO1xuIiAlIChkaXNw
YXRjaGVyX25hbWUsIGFnZW50X2ludGVyZmFjZV9uYW1lKSkKKyAgICAgICAgICAgIEdlbmVyYXRv
ci5iYWNrZW5kX2Rpc3BhdGNoZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUGFzc1JlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gbWVzc2FnZSkgT1ZFUlJJREU7XG4iKQogICAg
ICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfZGlzcGF0Y2hlcl9pbnRlcmZhY2VfbGlzdC5hcHBl
bmQoInByaXZhdGU6XG4iKQogCiAgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9oYW5kbGVy
X2ludGVyZmFjZV9saXN0LmFwcGVuZCgiY2xhc3MgJXMge1xuIiAlIGFnZW50X2ludGVyZmFjZV9u
YW1lKQpAQCAtMTkyMiw3ICsxOTIyLDcgQEAgY2xhc3MgR2VuZXJhdG9yOgogICAgICAgICAgICAg
R2VuZXJhdG9yLmJhY2tlbmRfaGFuZGxlcl9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoIn07XG5cbiIp
CiAKICAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3BhdGNoZXJfaW50ZXJmYWNlX2xp
c3QuYXBwZW5kKCJwcml2YXRlOlxuIikKLSAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rp
c3BhdGNoZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIgICAgJXMoSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIqLCAlcyopO1xuIiAlIChkaXNwYXRjaGVyX25hbWUsIGFnZW50X2ludGVyZmFjZV9u
YW1lKSkKKyAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3BhdGNoZXJfaW50ZXJmYWNl
X2xpc3QuYXBwZW5kKCIgICAgJXMoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciosICVzKik7XG4iICUgKGRpc3BhdGNoZXJfbmFtZSwgYWdlbnRfaW50ZXJmYWNlX25hbWUpKQog
ICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfZGlzcGF0Y2hlcl9pbnRlcmZhY2VfbGlzdC5h
cHBlbmQoIiAgICAlcyogbV9hZ2VudDtcbiIgJSBhZ2VudF9pbnRlcmZhY2VfbmFtZSkKICAgICAg
ICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3BhdGNoZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5k
KCJ9O1xuXG4iKQogCkBAIC0yMDAzLDcgKzIwMDMsNyBAQCBjbGFzcyBHZW5lcmF0b3I6CiAgICAg
ICAgIEdlbmVyYXRvci5iYWNrZW5kX2hhbmRsZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKGFkX2hv
Y190eXBlX291dHB1dCkKICAgICAgICAgYWRfaG9jX3R5cGVfd3JpdGVyID0gV3JpdGVyKGFkX2hv
Y190eXBlX291dHB1dCwgIiAgICAiKQogCi0gICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3Bh
dGNoZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIgICAgdm9pZCAlcyhsb25nIGNhbGxJZCwgY29u
c3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTtcbiIgJSBqc29uX2NvbW1hbmRfbmFtZSkKKyAg
ICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfZGlzcGF0Y2hlcl9pbnRlcmZhY2VfbGlzdC5hcHBlbmQo
IiAgICB2b2lkICVzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dCYgbWVzc2FnZSk7XG4iICUganNvbl9jb21tYW5kX25hbWUpCiAKICAgICAgICAgR2VuZXJhdG9y
LmJhY2tlbmRfaGFuZGxlcl9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoIiAgICB2aXJ0dWFsIHZvaWQg
JXMoRXJyb3JTdHJpbmcqIiAlIGpzb25fY29tbWFuZF9uYW1lKQogCkBAIC0yMDk4LDkgKzIwOTgs
OSBAQCBjbGFzcyBHZW5lcmF0b3I6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfbWV0aG9kX2ltcGxlbWVudGF0aW9uX2xpc3QsIFRl
bXBsYXRlcy5jYWxsYmFja19tZXRob2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeyJjYWxsYmFja05hbWUiOiBjYWxsYmFja19uYW1lLCAiaGFuZGxlck5hbWUi
OiBhZ2VudF9pbnRlcmZhY2VfbmFtZX0pCiAKLSAgICAgICAgICAgIGNhbGxiYWNrX3dyaXRlci5u
ZXdsaW5lKCJjbGFzcyAiICsgY2FsbGJhY2tfbmFtZSArICIgOiBwdWJsaWMgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZSB7XG4iKQorICAgICAgICAgICAgY2FsbGJhY2tf
d3JpdGVyLm5ld2xpbmUoImNsYXNzICIgKyBjYWxsYmFja19uYW1lICsgIiA6IHB1YmxpYyBJbnNw
ZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2Uge1xuIikKICAg
ICAgICAgICAgIGNhbGxiYWNrX3dyaXRlci5uZXdsaW5lKCJwdWJsaWM6XG4iKQotICAgICAgICAg
ICAgY2FsbGJhY2tfd3JpdGVyLm5ld2xpbmUoIiAgICAiICsgY2FsbGJhY2tfbmFtZSArICIoUGFz
c1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4sIGludCBpZCk7XG4iKQorICAgICAg
ICAgICAgY2FsbGJhY2tfd3JpdGVyLm5ld2xpbmUoIiAgICAiICsgY2FsbGJhY2tfbmFtZSArICIo
UGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiwgaW50IGlk
KTtcbiIpCiAgICAgICAgICAgICBjYWxsYmFja193cml0ZXIubmV3bGluZSgiICAgIHZvaWQgc2Vu
ZFN1Y2Nlc3MoIiArICIsICIuam9pbihkZWNsX3BhcmFtZXRlcl9saXN0KSArICIpO1xuIikKICAg
ICAgICAgICAgIGNhbGxiYWNrX3dyaXRlci5uZXdsaW5lKCJ9O1xuIikKIApAQCAtMjEwOSw3ICsy
MTA5LDcgQEAgY2xhc3MgR2VuZXJhdG9yOgogICAgICAgICAgICAgbWV0aG9kX2Rpc3BhdGNoX2hh
bmRsaW5nLmFwcGVuZCgiICAgIFJlZlB0cjwlczo6JXM+IGNhbGxiYWNrID0gYWRvcHRSZWYobmV3
ICVzOjolcyhtX2JhY2tlbmREaXNwYXRjaGVyLGNhbGxJZCkpO1xuIiAlIChhZ2VudF9pbnRlcmZh
Y2VfbmFtZSwgY2FsbGJhY2tfbmFtZSwgYWdlbnRfaW50ZXJmYWNlX25hbWUsIGNhbGxiYWNrX25h
bWUpKQogICAgICAgICAgICAgbWV0aG9kX2VuZGluZ19oYW5kbGluZy5hcHBlbmQoIiAgICBpZiAo
ZXJyb3IubGVuZ3RoKCkpIHtcbiIpCiAgICAgICAgICAgICBtZXRob2RfZW5kaW5nX2hhbmRsaW5n
LmFwcGVuZCgiICAgICAgICBjYWxsYmFjay0+ZGlzYWJsZSgpO1xuIikKLSAgICAgICAgICAgIG1l
dGhvZF9lbmRpbmdfaGFuZGxpbmcuYXBwZW5kKCIgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXIt
PnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6
OlNlcnZlckVycm9yLCBlcnJvcik7XG4iKQorICAgICAgICAgICAgbWV0aG9kX2VuZGluZ19oYW5k
bGluZy5hcHBlbmQoIiAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xF
cnJvcigmY2FsbElkLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpTZXJ2
ZXJFcnJvciwgZXJyb3IpO1xuIikKICAgICAgICAgICAgIG1ldGhvZF9lbmRpbmdfaGFuZGxpbmcu
YXBwZW5kKCIgICAgICAgIHJldHVybjtcbiIpCiAgICAgICAgICAgICBtZXRob2RfZW5kaW5nX2hh
bmRsaW5nLmFwcGVuZCgiICAgIH0iKQogCkBAIC0yNDEzLDggKzI0MTMsOCBAQCBiYWNrZW5kX2Nw
cF9maWxlID0gU21hcnRPdXRwdXQob3V0cHV0X2NwcF9kaXJuYW1lICsgIi9JbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcgogZnJvbnRlbmRfaF9maWxlID0gU21hcnRPdXRwdXQob3V0cHV0X2hlYWRl
cl9kaXJuYW1lICsgIi9JbnNwZWN0b3JGcm9udGVuZC5oIikKIGZyb250ZW5kX2NwcF9maWxlID0g
U21hcnRPdXRwdXQob3V0cHV0X2NwcF9kaXJuYW1lICsgIi9JbnNwZWN0b3JGcm9udGVuZC5jcHAi
KQogCi10eXBlYnVpbGRlcl9oX2ZpbGUgPSBTbWFydE91dHB1dChvdXRwdXRfaGVhZGVyX2Rpcm5h
bWUgKyAiL0luc3BlY3RvclR5cGVCdWlsZGVyLmgiKQotdHlwZWJ1aWxkZXJfY3BwX2ZpbGUgPSBT
bWFydE91dHB1dChvdXRwdXRfY3BwX2Rpcm5hbWUgKyAiL0luc3BlY3RvclR5cGVCdWlsZGVyLmNw
cCIpCit0eXBlYnVpbGRlcl9oX2ZpbGUgPSBTbWFydE91dHB1dChvdXRwdXRfaGVhZGVyX2Rpcm5h
bWUgKyAiL0luc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIikKK3R5cGVidWlsZGVyX2NwcF9maWxl
ID0gU21hcnRPdXRwdXQob3V0cHV0X2NwcF9kaXJuYW1lICsgIi9JbnNwZWN0b3JXZWJUeXBlQnVp
bGRlcnMuY3BwIikKIAogYmFja2VuZF9qc19maWxlID0gU21hcnRPdXRwdXQob3V0cHV0X2pzX2Rp
cm5hbWUgKyAiL0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcyIpCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weSBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5w
eQppbmRleCA3YTUxOGE4Li4wMWZlNTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3RvclN0cmluZ3MucHkKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5CkBAIC03MCw3ICs3
MCw3IEBAIGJhY2tlbmRfZGlzcGF0Y2hlcl9kaXNwYXRjaF9tZXRob2QgPSAoCiB7CiAgICAgUmVm
PCR7ZGlzcGF0Y2hlck5hbWV9PiBwcm90ZWN0KCp0aGlzKTsKIAotICAgIHR5cGVkZWYgdm9pZCAo
JHtkaXNwYXRjaGVyTmFtZX06OipDYWxsSGFuZGxlcikobG9uZyBjYWxsSWQsIGNvbnN0IEluc3Bl
Y3Rvck9iamVjdCYgbWVzc2FnZSk7CisgICAgdHlwZWRlZiB2b2lkICgke2Rpc3BhdGNoZXJOYW1l
fTo6KkNhbGxIYW5kbGVyKShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3QmIG1lc3NhZ2UpOwogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIENhbGxIYW5kbGVy
PiBEaXNwYXRjaE1hcDsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKERpc3BhdGNoTWFwLCBkaXNw
YXRjaE1hcCwgKCkpOwogICAgIGlmIChkaXNwYXRjaE1hcC5pc0VtcHR5KCkpIHsKQEAgLTExMiw3
ICsxMTIsNyBAQCAkY29kZQogIiIiKQogCiBjYWxsYmFja19tZXRob2QgPSAoCi0iIiIke2hhbmRs
ZXJOYW1lfTo6JHtjYWxsYmFja05hbWV9Ojoke2NhbGxiYWNrTmFtZX0oUGFzc1JlZlB0cjxJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gYmFja2VuZERpc3BhdGNoZXIsIGludCBpZCkgOiBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlKGJhY2tlbmREaXNwYXRjaGVyLCBp
ZCkgeyB9CisiIiIke2hhbmRsZXJOYW1lfTo6JHtjYWxsYmFja05hbWV9Ojoke2NhbGxiYWNrTmFt
ZX0oUGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gYmFja2VuZERpc3BhdGNo
ZXIsIGludCBpZCkgOiBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxs
YmFja0Jhc2UoYmFja2VuZERpc3BhdGNoZXIsIGlkKSB7IH0KIAogdm9pZCAke2hhbmRsZXJOYW1l
fTo6JHtjYWxsYmFja05hbWV9OjpzZW5kU3VjY2Vzcygke3BhcmFtZXRlcnN9KQogewpAQCAtMTI1
LDE1ICsxMjUsMTQgQEAgZnJvbnRlbmRfaCA9ICgKICIiIiNpZm5kZWYgSW5zcGVjdG9yRnJvbnRl
bmRfaAogI2RlZmluZSBJbnNwZWN0b3JGcm9udGVuZF9oCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JU
eXBlQnVpbGRlci5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgorI2luY2x1ZGUgIklu
c3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZvcndhcmRpbmcu
aCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7Ci0KICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogCiAkZG9tYWluQ2xhc3NMaXN0CkBAIC0xNDksMTYgKzE0OCwxMyBA
QCBiYWNrZW5kX2ggPSAoCiAiIiIjaWZuZGVmIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyc19o
CiAjZGVmaW5lIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyc19oCiAKLSNpbmNsdWRlICJJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIgotI2luY2x1ZGUgIkluc3BlY3RvclR5cGVCdWlsZGVy
LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmgiCisjaW5jbHVkZSA8aW5z
cGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBJbnNwZWN0b3JPYmplY3Q7Ci1jbGFzcyBJbnNwZWN0b3JBcnJheTsK
LQogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKICRoYW5kbGVySW50ZXJmYWNlcwpAQCAt
MTc4LDExICsxNzQsMTMgQEAgYmFja2VuZF9jcHAgPSAoCiAjaW5jbHVkZSAiSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXJzLmgiCiAKICNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudC5oIgotI2luY2x1
ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZvcndhcmRpbmcuaCIK
KyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCit1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICRtZXRob2RzCkBA
IC0yMDAsMTAgKzE5OCwxMSBAQCBmcm9udGVuZF9jcHAgPSAoCiAKICNpbmNsdWRlICJJbnNwZWN0
b3JGcm9udGVuZC5oIgogCi0jaW5jbHVkZSAiSW5zcGVjdG9yRm9yd2FyZGluZy5oIgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAk
bWV0aG9kcwpAQCAtMjE1LDI5MSArMjE0LDIwIEBAICRtZXRob2RzCiAKIHR5cGVidWlsZGVyX2gg
PSAoCiAiIiIKLSNpZm5kZWYgSW5zcGVjdG9yVHlwZUJ1aWxkZXJfaAotI2RlZmluZSBJbnNwZWN0
b3JUeXBlQnVpbGRlcl9oCisvLyBGSVhNRTogVFlQRS4KKyNpZm5kZWYgSW5zcGVjdG9yV2ViVHlw
ZUJ1aWxkZXJzX2gKKyNkZWZpbmUgSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzX2gKIAogI2lmIEVO
QUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKyNpbmNsdWRl
IDxpbnNwZWN0b3IvSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0
aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKK25hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBuYW1lc3BhY2UgVHlwZUJ1aWxkZXIgewogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgT3B0T3V0cHV0IHsKLXB1YmxpYzoKLSAgICBPcHRP
dXRwdXQoKSA6IG1fYXNzaWduZWQoZmFsc2UpIHsgfQotCi0gICAgdm9pZCBvcGVyYXRvcj0oVCB2
YWx1ZSkKLSAgICB7Ci0gICAgICAgIG1fdmFsdWUgPSB2YWx1ZTsKLSAgICAgICAgbV9hc3NpZ25l
ZCA9IHRydWU7Ci0gICAgfQotCi0gICAgYm9vbCBpc0Fzc2lnbmVkKCkgeyByZXR1cm4gbV9hc3Np
Z25lZDsgfQotCi0gICAgVCBnZXRWYWx1ZSgpCi0gICAgewotICAgICAgICBBU1NFUlQoaXNBc3Np
Z25lZCgpKTsKLSAgICAgICAgcmV0dXJuIG1fdmFsdWU7Ci0gICAgfQotCi1wcml2YXRlOgotICAg
IFQgbV92YWx1ZTsKLSAgICBib29sIG1fYXNzaWduZWQ7Ci0KLSAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShPcHRPdXRwdXQpOwotfTsKLQotCi0vLyBBIHNtYWxsIHRyYW5zaWVudCB3cmFwcGVyIGFy
b3VuZCBpbnQgdHlwZSwgdGhhdCBjYW4gYmUgdXNlZCBhcyBhIGZ1bmNpdG9uIHBhcmFtZXRlciB0
eXBlCi0vLyBjbGV2ZXJseSBkaXNhbGxvd2luZyBDKysgaW1wbGljaXQgY2FzdHMgZnJvbSBmbG9h
dCBvciBkb3VibGUuCi1jbGFzcyBFeGFjdGx5SW50IHsKLXB1YmxpYzoKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgotICAgIEV4YWN0bHlJbnQoVCB0KSA6IG1fdmFsdWUoY2FzdF90b19pbnQ8VD4o
dCkpIHt9Ci0KLSAgICBFeGFjdGx5SW50KCkge30KLQotICAgIG9wZXJhdG9yIGludCgpIHsgcmV0
dXJuIG1fdmFsdWU7IH0KLXByaXZhdGU6Ci0gICAgaW50IG1fdmFsdWU7Ci0KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBpbnQgY2FzdF90b19pbnQoVCkgeyByZXR1cm4gVDo6
ZGVmYXVsdF9jYXNlX2Nhc3RfaXNfbm90X3N1cHBvcnRlZCgpOyB9Ci19OwotCi10ZW1wbGF0ZTw+
Ci1pbmxpbmUgaW50IEV4YWN0bHlJbnQ6OmNhc3RfdG9faW50PGludD4oaW50IGkpIHsgcmV0dXJu
IGk7IH0KLQotdGVtcGxhdGU8PgotaW5saW5lIGludCBFeGFjdGx5SW50OjpjYXN0X3RvX2ludDx1
bnNpZ25lZCBpbnQ+KHVuc2lnbmVkIGludCBpKSB7IHJldHVybiBpOyB9Ci0KLWNsYXNzIFJ1bnRp
bWVDYXN0SGVscGVyIHsKLXB1YmxpYzoKLSNpZiAkdmFsaWRhdG9ySWZkZWZOYW1lCi0gICAgdGVt
cGxhdGU8SW5zcGVjdG9yVmFsdWU6OlR5cGUgVFlQRT4KLSAgICBzdGF0aWMgdm9pZCBhc3NlcnRU
eXBlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh2YWx1ZS0+
dHlwZSgpID09IFRZUEUpOwotICAgIH0KLSAgICBzdGF0aWMgdm9pZCBhc3NlcnRBbnkoSW5zcGVj
dG9yVmFsdWUqKTsKLSAgICBzdGF0aWMgdm9pZCBhc3NlcnRJbnQoSW5zcGVjdG9yVmFsdWUqIHZh
bHVlKTsKLSNlbmRpZgotfTsKLQotCi0vLyBUaGlzIGNsYXNzIHByb3ZpZGVzICJUcmFpdHMiIHR5
cGUgZm9yIHRoZSBpbnB1dCB0eXBlIFQuIEl0IGlzIHByb2dyYW1tZWQgdXNpbmcgQysrIHRlbXBs
YXRlIHNwZWNpYWxpemF0aW9uCi0vLyB0ZWNobmlxdWUuIEJ5IGRlZmF1bHQgaXQgc2ltcGx5IHRh
a2VzICJJdGVtVHJhaXRzIiB0eXBlIGZyb20gVCwgYnV0IGl0IGRvZXNuJ3Qgd29yayB3aXRoIHRo
ZSBiYXNlIHR5cGVzLgotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBBcnJheUl0ZW1IZWxw
ZXIgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6SXRlbVRyYWl0cyBUcmFpdHM7Ci19OwotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgQXJyYXkgOiBwdWJsaWMgSW5zcGVjdG9yQXJyYXlC
YXNlIHsKLXByaXZhdGU6Ci0gICAgQXJyYXkoKSB7IH0KLQotICAgIEluc3BlY3RvckFycmF5KiBv
cGVuQWNjZXNzb3JzKCkgewotICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoSW5zcGVjdG9y
QXJyYXkpID09IHNpemVvZihBcnJheTxUPiksIGNhbm5vdF9jYXN0KTsKLSAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEluc3BlY3RvckFycmF5Kj4oc3RhdGljX2Nhc3Q8SW5zcGVjdG9yQXJyYXlC
YXNlKj4odGhpcykpOwotICAgIH0KLQotcHVibGljOgotICAgIHZvaWQgYWRkSXRlbShQYXNzUmVm
UHRyPFQ+IHZhbHVlKQotICAgIHsKLSAgICAgICAgQXJyYXlJdGVtSGVscGVyPFQ+OjpUcmFpdHM6
OnB1c2hSZWZQdHIodGhpcy0+b3BlbkFjY2Vzc29ycygpLCB2YWx1ZSk7Ci0gICAgfQotCi0gICAg
dm9pZCBhZGRJdGVtKFQgdmFsdWUpCi0gICAgewotICAgICAgICBBcnJheUl0ZW1IZWxwZXI8VD46
OlRyYWl0czo6cHVzaFJhdyh0aGlzLT5vcGVuQWNjZXNzb3JzKCksIHZhbHVlKTsKLSAgICB9Ci0K
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBcnJheTxUPj4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQXJyYXk8VD4oKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIFBh
c3NSZWZQdHI8QXJyYXk8VD4+IHJ1bnRpbWVDYXN0KFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+
IHZhbHVlKQotICAgIHsKLSAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcnJheTsKLSAg
ICAgICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFzQXJyYXkoJmFycmF5KTsKLSAgICAgICAgQVNT
RVJUX1VOVVNFRChjYXN0UmVzLCBjYXN0UmVzKTsKLSNpZiAkdmFsaWRhdG9ySWZkZWZOYW1lCi0g
ICAgICAgIGFzc2VydENvcnJlY3RWYWx1ZShhcnJheS5nZXQoKSk7Ci0jZW5kaWYgIC8vICR2YWxp
ZGF0b3JJZmRlZk5hbWUKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEFycmF5PFQ+KSA9
PSBzaXplb2YoSW5zcGVjdG9yQXJyYXkpLCB0eXBlX2Nhc3RfcHJvYmxlbSk7Ci0gICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxBcnJheTxUPio+KHN0YXRpY19jYXN0PEluc3BlY3RvckFycmF5QmFz
ZSo+KGFycmF5LmdldCgpKSk7Ci0gICAgfQotCi0jaWYgJHZhbGlkYXRvcklmZGVmTmFtZQotICAg
IHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCi0g
ICAgewotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFycmF5OwotICAgICAgICBib29s
IGNhc3RSZXMgPSB2YWx1ZS0+YXNBcnJheSgmYXJyYXkpOwotICAgICAgICBBU1NFUlRfVU5VU0VE
KGNhc3RSZXMsIGNhc3RSZXMpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJy
YXktPmxlbmd0aCgpOyBpKyspCi0gICAgICAgICAgICBBcnJheUl0ZW1IZWxwZXI8VD46OlRyYWl0
czo6dGVtcGxhdGUgYXNzZXJ0Q29ycmVjdFZhbHVlPFQ+KGFycmF5LT5nZXQoaSkuZ2V0KCkpOwot
ICAgIH0KLQotI2VuZGlmIC8vICR2YWxpZGF0b3JJZmRlZk5hbWUKLX07Ci0KLXN0cnVjdCBTdHJ1
Y3RJdGVtVHJhaXRzIHsKLSAgICBzdGF0aWMgdm9pZCBwdXNoUmVmUHRyKEluc3BlY3RvckFycmF5
KiBhcnJheSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpCi0gICAgewotICAgICAg
ICBhcnJheS0+cHVzaFZhbHVlKHZhbHVlKTsKLSAgICB9Ci0KLSNpZiAkdmFsaWRhdG9ySWZkZWZO
YW1lCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3Jy
ZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKSB7Ci0gICAgICAgIFQ6OmFzc2VydENvcnJl
Y3RWYWx1ZSh2YWx1ZSk7Ci0gICAgfQotI2VuZGlmICAvLyAkdmFsaWRhdG9ySWZkZWZOYW1lCi19
OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPFN0cmluZz4gewotICAgIHN0
cnVjdCBUcmFpdHMgewotICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmF3KEluc3BlY3RvckFycmF5
KiBhcnJheSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgYXJy
YXktPnB1c2hTdHJpbmcodmFsdWUpOwotICAgICAgICB9Ci0KLSNpZiAkdmFsaWRhdG9ySWZkZWZO
YW1lCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyB2b2lkIGFz
c2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpIHsKLSAgICAgICAgICAgIFJ1
bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3RvclZhbHVlOjpUeXBlU3RyaW5nPih2
YWx1ZSk7Ci0gICAgICAgIH0KLSNlbmRpZiAgLy8gJHZhbGlkYXRvcklmZGVmTmFtZQotICAgIH07
Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPGludD4gewotICAgIHN0
cnVjdCBUcmFpdHMgewotICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmF3KEluc3BlY3RvckFycmF5
KiBhcnJheSwgaW50IHZhbHVlKQotICAgICAgICB7Ci0gICAgICAgICAgICBhcnJheS0+cHVzaElu
dCh2YWx1ZSk7Ci0gICAgICAgIH0KLQotI2lmICR2YWxpZGF0b3JJZmRlZk5hbWUKLSAgICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZh
bHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkgewotICAgICAgICAgICAgUnVudGltZUNhc3RIZWxw
ZXI6OmFzc2VydEludCh2YWx1ZSk7Ci0gICAgICAgIH0KLSNlbmRpZiAgLy8gJHZhbGlkYXRvcklm
ZGVmTmFtZQotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgQXJyYXlJdGVtSGVscGVy
PGRvdWJsZT4gewotICAgIHN0cnVjdCBUcmFpdHMgewotICAgICAgICBzdGF0aWMgdm9pZCBwdXNo
UmF3KEluc3BlY3RvckFycmF5KiBhcnJheSwgZG91YmxlIHZhbHVlKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBhcnJheS0+cHVzaE51bWJlcih2YWx1ZSk7Ci0gICAgICAgIH0KLQotI2lmICR2YWxp
ZGF0b3JJZmRlZk5hbWUKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3Rh
dGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkgewotICAg
ICAgICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFsdWU6OlR5
cGVOdW1iZXI+KHZhbHVlKTsKLSAgICAgICAgfQotI2VuZGlmICAvLyAkdmFsaWRhdG9ySWZkZWZO
YW1lCi0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBBcnJheUl0ZW1IZWxwZXI8Ym9v
bD4gewotICAgIHN0cnVjdCBUcmFpdHMgewotICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmF3KElu
c3BlY3RvckFycmF5KiBhcnJheSwgYm9vbCB2YWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAg
YXJyYXktPnB1c2hCb29sZWFuKHZhbHVlKTsKLSAgICAgICAgfQotCi0jaWYgJHZhbGlkYXRvcklm
ZGVmTmFtZQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgdm9p
ZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKSB7Ci0gICAgICAgICAg
ICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZUJvb2xl
YW4+KHZhbHVlKTsKLSAgICAgICAgfQotI2VuZGlmICAvLyAkdmFsaWRhdG9ySWZkZWZOYW1lCi0g
ICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBBcnJheUl0ZW1IZWxwZXI8SW5zcGVjdG9y
VmFsdWU+IHsKLSAgICBzdHJ1Y3QgVHJhaXRzIHsKLSAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJl
ZlB0cihJbnNwZWN0b3JBcnJheSogYXJyYXksIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZh
bHVlKQotICAgICAgICB7Ci0gICAgICAgICAgICBhcnJheS0+cHVzaFZhbHVlKHZhbHVlKTsKLSAg
ICAgICAgfQotCi0jaWYgJHZhbGlkYXRvcklmZGVmTmFtZQotICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgotICAgICAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9y
VmFsdWUqIHZhbHVlKSB7Ci0gICAgICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0QW55
KHZhbHVlKTsKLSAgICAgICAgfQotI2VuZGlmICAvLyAkdmFsaWRhdG9ySWZkZWZOYW1lCi0gICAg
fTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBBcnJheUl0ZW1IZWxwZXI8SW5zcGVjdG9yT2Jq
ZWN0PiB7Ci0gICAgc3RydWN0IFRyYWl0cyB7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSZWZQ
dHIoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1
ZSkKLSAgICAgICAgewotICAgICAgICAgICAgYXJyYXktPnB1c2hWYWx1ZSh2YWx1ZSk7Ci0gICAg
ICAgIH0KLQotI2lmICR2YWxpZGF0b3JJZmRlZk5hbWUKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KLSAgICAgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZh
bHVlKiB2YWx1ZSkgewotICAgICAgICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8
SW5zcGVjdG9yVmFsdWU6OlR5cGVPYmplY3Q+KHZhbHVlKTsKLSAgICAgICAgfQotI2VuZGlmICAv
LyAkdmFsaWRhdG9ySWZkZWZOYW1lCi0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBB
cnJheUl0ZW1IZWxwZXI8SW5zcGVjdG9yQXJyYXk+IHsKLSAgICBzdHJ1Y3QgVHJhaXRzIHsKLSAg
ICAgICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0b3JBcnJheSogYXJyYXksIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHZhbHVlKQotICAgICAgICB7Ci0gICAgICAgICAgICBhcnJh
eS0+cHVzaEFycmF5KHZhbHVlKTsKLSAgICAgICAgfQotCi0jaWYgJHZhbGlkYXRvcklmZGVmTmFt
ZQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgdm9pZCBhc3Nl
cnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKSB7Ci0gICAgICAgICAgICBSdW50
aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZUFycmF5Pih2YWx1
ZSk7Ci0gICAgICAgIH0KLSNlbmRpZiAgLy8gJHZhbGlkYXRvcklmZGVmTmFtZQotICAgIH07Ci19
OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IEFycmF5SXRlbUhlbHBlcjxUeXBlQnVp
bGRlcjo6QXJyYXk8VD4+IHsKLSAgICBzdHJ1Y3QgVHJhaXRzIHsKLSAgICAgICAgc3RhdGljIHZv
aWQgcHVzaFJlZlB0cihJbnNwZWN0b3JBcnJheSogYXJyYXksIFBhc3NSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PFQ+PiB2YWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgYXJyYXktPnB1c2hW
YWx1ZSh2YWx1ZSk7Ci0gICAgICAgIH0KLQotI2lmICR2YWxpZGF0b3JJZmRlZk5hbWUKLSAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgUz4KLSAgICAgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVj
dFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkgewotICAgICAgICAgICAgUzo6YXNzZXJ0Q29y
cmVjdFZhbHVlKHZhbHVlKTsKLSAgICAgICAgfQotI2VuZGlmICAvLyAkdmFsaWRhdG9ySWZkZWZO
YW1lCi0gICAgfTsKLX07Ci0KICR7Zm9yd2FyZHN9CiAKIFN0cmluZyBnZXRFbnVtQ29uc3RhbnRW
YWx1ZShpbnQgY29kZSk7CkBAIC01MDcsMTIgKzIzNSwxMSBAQCBTdHJpbmcgZ2V0RW51bUNvbnN0
YW50VmFsdWUoaW50IGNvZGUpOwogJHt0eXBlQnVpbGRlcnN9CiB9IC8vIG5hbWVzcGFjZSBUeXBl
QnVpbGRlcgogCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIEluc3Bl
Y3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKIAotI2VuZGlmIC8vICFkZWZpbmVk
KEluc3BlY3RvclR5cGVCdWlsZGVyX2gpCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yV2Vi
VHlwZUJ1aWxkZXJzX2gpCiAKICIiIikKIApAQCAtNTIyLDEwICsyNDksMTIgQEAgdHlwZWJ1aWxk
ZXJfY3BwID0gKAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAK
LSNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgorI2luY2x1ZGUgIkluc3BlY3Rvcldl
YlR5cGVCdWlsZGVycy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotbmFtZXNw
YWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKworbmFtZXNwYWNlIElu
c3BlY3RvciB7CiAKIG5hbWVzcGFjZSBUeXBlQnVpbGRlciB7CiAKQEAgLTU0MiwyNSArMjcxLDEx
IEBAICRpbXBsQ29kZQogCiAjaWYgJHZhbGlkYXRvcklmZGVmTmFtZQogCi12b2lkIFR5cGVCdWls
ZGVyOjpSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0QW55KEluc3BlY3RvclZhbHVlKikKLXsKLSAg
ICAvLyBOby1vcC4KLX0KLQotCi12b2lkIFR5cGVCdWlsZGVyOjpSdW50aW1lQ2FzdEhlbHBlcjo6
YXNzZXJ0SW50KEluc3BlY3RvclZhbHVlKiB2YWx1ZSkKLXsKLSAgICBkb3VibGUgdjsKLSAgICBi
b29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNOdW1iZXIoJnYpOwotICAgIEFTU0VSVF9VTlVTRUQoY2Fz
dFJlcywgY2FzdFJlcyk7Ci0gICAgQVNTRVJUKHN0YXRpY19jYXN0PGRvdWJsZT4oc3RhdGljX2Nh
c3Q8aW50Pih2KSkgPT0gdik7Ci19Ci0KICR2YWxpZGF0b3JDb2RlCiAKICNlbmRpZiAvLyAkdmFs
aWRhdG9ySWZkZWZOYW1lCiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNl
IEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKICIiIikKQEAgLTU4NCwx
NCArMjk5LDE0IEBAIGNsYXNzX2JpbmRpbmdfYnVpbGRlcl9wYXJ0XzEgPSAoCiAgICAgdGVtcGxh
dGU8aW50IFNUQVRFPgogICAgIGNsYXNzIEJ1aWxkZXIgewogICAgIHByaXZhdGU6Ci0gICAgICAg
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0OworICAgICAgICBSZWZQdHI8SW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0OwogCiAgICAgICAgIHRlbXBsYXRlPGludCBT
VEVQPiBCdWlsZGVyPFNUQVRFIHwgU1RFUD4mIGNhc3RTdGF0ZSgpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxCdWlsZGVyPFNUQVRFIHwgU1RFUD4qPih0
aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEJ1aWxkZXIoUGFzc1JlZlB0cjwvKiVzKi9JbnNw
ZWN0b3JPYmplY3Q+IHB0cikKKyAgICAgICAgQnVpbGRlcihQYXNzUmVmUHRyPC8qJXMqL0luc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBwdHIpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJ
TEVfQVNTRVJUKFNUQVRFID09IE5vRmllbGRzU2V0LCBidWlsZGVyX2NyZWF0ZWRfaW5fbm9uX2lu
aXRfc3RhdGUpOwogICAgICAgICAgICAgbV9yZXN1bHQgPSBwdHI7CkBAIC02MTMsNyArMzI4LDcg
QEAgY2xhc3NfYmluZGluZ19idWlsZGVyX3BhcnRfMyA9ICgiIiIKICAgICAgICAgb3BlcmF0b3Ig
UmVmUHRyPCVzPiYgKCkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoU1RB
VEUgPT0gQWxsRmllbGRzU2V0LCByZXN1bHRfaXNfbm90X3JlYWR5KTsKLSAgICAgICAgICAgIENP
TVBJTEVfQVNTRVJUKHNpemVvZiglcykgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVjdCksIGNhbm5v
dF9jYXN0KTsKKyAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZiglcykgPT0gc2l6ZW9m
KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOwogICAgICAgICAgICAg
cmV0dXJuICpyZWludGVycHJldF9jYXN0PFJlZlB0cjwlcz4qPigmbV9yZXN1bHQpOwogICAgICAg
ICB9CiAKQEAgLTYyOCw2ICszNDMsNiBAQCBjbGFzc19iaW5kaW5nX2J1aWxkZXJfcGFydF8zID0g
KCIiIgogY2xhc3NfYmluZGluZ19idWlsZGVyX3BhcnRfNCA9ICgKICIiIiAgICBzdGF0aWMgQnVp
bGRlcjxOb0ZpZWxkc1NldD4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBCdWlsZGVy
PE5vRmllbGRzU2V0PihJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKKyAgICAgICAgcmV0dXJu
IEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUo
KSk7CiAgICAgfQogIiIiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0Nv
bnNvbGVNZXNzYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2Fn
ZS5jcHAKaW5kZXggMGM5NzBiOC4uNmZiODVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvQ29uc29sZU1lc3NhZ2UuY3BwCkBAIC0zOCwxNCArMzgsMTYgQEAKICNpbmNsdWRlICJJZGVu
dGlmaWVyc0ZhY3RvcnkuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUg
IkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgog
I2luY2x1ZGUgIlNjcmlwdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxGcmFtZS5o
IgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFj
a0ZhY3RvcnkuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdz
L1NjcmlwdFZhbHVlLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ29uc29sZU1lc3NhZ2U6OkNvbnNvbGVNZXNzYWdl
KGJvb2wgY2FuR2VuZXJhdGVDYWxsU3RhY2ssIE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdl
VHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5z
aWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKQEAgLTEzOSw1NyArMTQxLDU3IEBAIHZvaWQg
Q29uc29sZU1lc3NhZ2U6OmF1dG9nZW5lcmF0ZU1ldGFkYXRhKGJvb2wgY2FuR2VuZXJhdGVDYWxs
U3RhY2ssIEpTQzo6RXhlY1N0CiB9CiAKIC8vIEtlZXAgaW4gc3luYyB3aXRoIGluc3BlY3Rvci9m
cm9udC1lbmQvQ29uc29sZVZpZXcuanMKLXN0YXRpYyBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29u
c29sZU1lc3NhZ2U6OlNvdXJjZTo6RW51bSBtZXNzYWdlU291cmNlVmFsdWUoTWVzc2FnZVNvdXJj
ZSBzb3VyY2UpCitzdGF0aWMgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29s
ZU1lc3NhZ2U6OlNvdXJjZTo6RW51bSBtZXNzYWdlU291cmNlVmFsdWUoTWVzc2FnZVNvdXJjZSBz
b3VyY2UpCiB7CiAgICAgc3dpdGNoIChzb3VyY2UpIHsKLSAgICBjYXNlIFhNTE1lc3NhZ2VTb3Vy
Y2U6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6
WE1MOwotICAgIGNhc2UgSlNNZXNzYWdlU291cmNlOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNv
bGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6OkphdmFzY3JpcHQ7Ci0gICAgY2FzZSBOZXR3b3Jr
TWVzc2FnZVNvdXJjZTogcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2Fn
ZTo6U291cmNlOjpOZXR3b3JrOwotICAgIGNhc2UgQ29uc29sZUFQSU1lc3NhZ2VTb3VyY2U6IHJl
dHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6Q29uc29s
ZUFQSTsKLSAgICBjYXNlIFN0b3JhZ2VNZXNzYWdlU291cmNlOiByZXR1cm4gVHlwZUJ1aWxkZXI6
OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6OlN0b3JhZ2U7Ci0gICAgY2FzZSBBcHBD
YWNoZU1lc3NhZ2VTb3VyY2U6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1l
c3NhZ2U6OlNvdXJjZTo6QXBwY2FjaGU7Ci0gICAgY2FzZSBSZW5kZXJpbmdNZXNzYWdlU291cmNl
OiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6OlJl
bmRlcmluZzsKLSAgICBjYXNlIENTU01lc3NhZ2VTb3VyY2U6IHJldHVybiBUeXBlQnVpbGRlcjo6
Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6Q1NTOwotICAgIGNhc2UgU2VjdXJpdHlN
ZXNzYWdlU291cmNlOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdl
OjpTb3VyY2U6OlNlY3VyaXR5OwotICAgIGNhc2UgT3RoZXJNZXNzYWdlU291cmNlOiByZXR1cm4g
VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6Ok90aGVyOworICAg
IGNhc2UgWE1MTWVzc2FnZVNvdXJjZTogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNv
bnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6OlhNTDsKKyAgICBjYXNlIEpTTWVzc2FnZVNv
dXJjZTogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNz
YWdlOjpTb3VyY2U6OkphdmFzY3JpcHQ7CisgICAgY2FzZSBOZXR3b3JrTWVzc2FnZVNvdXJjZTog
cmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpT
b3VyY2U6Ok5ldHdvcms7CisgICAgY2FzZSBDb25zb2xlQVBJTWVzc2FnZVNvdXJjZTogcmV0dXJu
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6
OkNvbnNvbGVBUEk7CisgICAgY2FzZSBTdG9yYWdlTWVzc2FnZVNvdXJjZTogcmV0dXJuIEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6OlN0b3Jh
Z2U7CisgICAgY2FzZSBBcHBDYWNoZU1lc3NhZ2VTb3VyY2U6IHJldHVybiBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpBcHBjYWNoZTsKKyAg
ICBjYXNlIFJlbmRlcmluZ01lc3NhZ2VTb3VyY2U6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpSZW5kZXJpbmc7CisgICAgY2Fz
ZSBDU1NNZXNzYWdlU291cmNlOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29s
ZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6Q1NTOworICAgIGNhc2UgU2VjdXJpdHlNZXNzYWdl
U291cmNlOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1l
c3NhZ2U6OlNvdXJjZTo6U2VjdXJpdHk7CisgICAgY2FzZSBPdGhlck1lc3NhZ2VTb3VyY2U6IHJl
dHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291
cmNlOjpPdGhlcjsKICAgICB9Ci0gICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25z
b2xlTWVzc2FnZTo6U291cmNlOjpPdGhlcjsKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6T3RoZXI7CiB9CiAKLXN0YXRp
YyBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkVudW0gbWVzc2Fn
ZVR5cGVWYWx1ZShNZXNzYWdlVHlwZSB0eXBlKQorc3RhdGljIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpFbnVtIG1lc3NhZ2VUeXBlVmFsdWUo
TWVzc2FnZVR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIExvZ01l
c3NhZ2VUeXBlOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpU
eXBlOjpMb2c7Ci0gICAgY2FzZSBDbGVhck1lc3NhZ2VUeXBlOiByZXR1cm4gVHlwZUJ1aWxkZXI6
OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpDbGVhcjsKLSAgICBjYXNlIERpck1lc3Nh
Z2VUeXBlOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBl
OjpEaXI7Ci0gICAgY2FzZSBEaXJYTUxNZXNzYWdlVHlwZTogcmV0dXJuIFR5cGVCdWlsZGVyOjpD
b25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6RGlyWE1MOwotICAgIGNhc2UgVGFibGVNZXNz
YWdlVHlwZTogcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlw
ZTo6VGFibGU7Ci0gICAgY2FzZSBUcmFjZU1lc3NhZ2VUeXBlOiByZXR1cm4gVHlwZUJ1aWxkZXI6
OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpUcmFjZTsKLSAgICBjYXNlIFN0YXJ0R3Jv
dXBNZXNzYWdlVHlwZTogcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2Fn
ZTo6VHlwZTo6U3RhcnRHcm91cDsKLSAgICBjYXNlIFN0YXJ0R3JvdXBDb2xsYXBzZWRNZXNzYWdl
VHlwZTogcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6
U3RhcnRHcm91cENvbGxhcHNlZDsKLSAgICBjYXNlIEVuZEdyb3VwTWVzc2FnZVR5cGU6IHJldHVy
biBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkVuZEdyb3VwOwot
ICAgIGNhc2UgQXNzZXJ0TWVzc2FnZVR5cGU6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6
Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkFzc2VydDsKLSAgICBjYXNlIFRpbWluZ01lc3NhZ2VUeXBl
OiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpUaW1p
bmc7Ci0gICAgY2FzZSBQcm9maWxlTWVzc2FnZVR5cGU6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29u
c29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlByb2ZpbGU7Ci0gICAgY2FzZSBQcm9maWxlRW5k
TWVzc2FnZVR5cGU6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6
OlR5cGU6OlByb2ZpbGVFbmQ7CisgICAgY2FzZSBMb2dNZXNzYWdlVHlwZTogcmV0dXJuIEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpMb2c7Cisg
ICAgY2FzZSBDbGVhck1lc3NhZ2VUeXBlOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkNsZWFyOworICAgIGNhc2UgRGlyTWVzc2Fn
ZVR5cGU6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVz
c2FnZTo6VHlwZTo6RGlyOworICAgIGNhc2UgRGlyWE1MTWVzc2FnZVR5cGU6IHJldHVybiBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6RGlyWE1M
OworICAgIGNhc2UgVGFibGVNZXNzYWdlVHlwZTogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpUYWJsZTsKKyAgICBjYXNlIFRyYWNl
TWVzc2FnZVR5cGU6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25z
b2xlTWVzc2FnZTo6VHlwZTo6VHJhY2U7CisgICAgY2FzZSBTdGFydEdyb3VwTWVzc2FnZVR5cGU6
IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6
VHlwZTo6U3RhcnRHcm91cDsKKyAgICBjYXNlIFN0YXJ0R3JvdXBDb2xsYXBzZWRNZXNzYWdlVHlw
ZTogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdl
OjpUeXBlOjpTdGFydEdyb3VwQ29sbGFwc2VkOworICAgIGNhc2UgRW5kR3JvdXBNZXNzYWdlVHlw
ZTogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdl
OjpUeXBlOjpFbmRHcm91cDsKKyAgICBjYXNlIEFzc2VydE1lc3NhZ2VUeXBlOiByZXR1cm4gSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkFzc2Vy
dDsKKyAgICBjYXNlIFRpbWluZ01lc3NhZ2VUeXBlOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlRpbWluZzsKKyAgICBjYXNlIFBy
b2ZpbGVNZXNzYWdlVHlwZTogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6
OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpQcm9maWxlOworICAgIGNhc2UgUHJvZmlsZUVuZE1lc3Nh
Z2VUeXBlOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1l
c3NhZ2U6OlR5cGU6OlByb2ZpbGVFbmQ7CiAgICAgfQotICAgIHJldHVybiBUeXBlQnVpbGRlcjo6
Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkxvZzsKKyAgICByZXR1cm4gSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkxvZzsKIH0KIAot
c3RhdGljIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6OkVudW0g
bWVzc2FnZUxldmVsVmFsdWUoTWVzc2FnZUxldmVsIGxldmVsKQorc3RhdGljIEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbDo6RW51bSBtZXNzYWdl
TGV2ZWxWYWx1ZShNZXNzYWdlTGV2ZWwgbGV2ZWwpCiB7CiAgICAgc3dpdGNoIChsZXZlbCkgewot
ICAgIGNhc2UgRGVidWdNZXNzYWdlTGV2ZWw6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6
Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpEZWJ1ZzsKLSAgICBjYXNlIExvZ01lc3NhZ2VMZXZlbDog
cmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6OkxvZzsK
LSAgICBjYXNlIFdhcm5pbmdNZXNzYWdlTGV2ZWw6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29s
ZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpXYXJuaW5nOwotICAgIGNhc2UgRXJyb3JNZXNzYWdl
TGV2ZWw6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVs
OjpFcnJvcjsKKyAgICBjYXNlIERlYnVnTWVzc2FnZUxldmVsOiByZXR1cm4gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpEZWJ1ZzsKKyAgICBj
YXNlIExvZ01lc3NhZ2VMZXZlbDogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNv
bGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbDo6TG9nOworICAgIGNhc2UgV2FybmluZ01lc3NhZ2VM
ZXZlbDogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNz
YWdlOjpMZXZlbDo6V2FybmluZzsKKyAgICBjYXNlIEVycm9yTWVzc2FnZUxldmVsOiByZXR1cm4g
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpF
cnJvcjsKICAgICB9Ci0gICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVz
c2FnZTo6TGV2ZWw6OkxvZzsKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29u
c29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpMb2c7CiB9CiAKIHZvaWQgQ29uc29sZU1lc3Nh
Z2U6OmFkZFRvRnJvbnRlbmQoSW5zcGVjdG9yQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciogY29u
c29sZUZyb250ZW5kRGlzcGF0Y2hlciwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNj
cmlwdE1hbmFnZXIsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3KQogewotICAgIFJlZlB0cjxUeXBlQnVp
bGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U+IGpzb25PYmogPSBUeXBlQnVpbGRlcjo6Q29u
c29sZTo6Q29uc29sZU1lc3NhZ2U6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlPiBqc29uT2JqID0gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OmNyZWF0ZSgpCiAgICAgICAgIC5z
ZXRTb3VyY2UobWVzc2FnZVNvdXJjZVZhbHVlKG1fc291cmNlKSkKICAgICAgICAgLnNldExldmVs
KG1lc3NhZ2VMZXZlbFZhbHVlKG1fbGV2ZWwpKQogICAgICAgICAuc2V0VGV4dChtX21lc3NhZ2Up
OwpAQCAtMjA0LDExICsyMDYsMTEgQEAgdm9pZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVu
ZChJbnNwZWN0b3JDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyKiBjb25zb2xlRnIKICAgICBpZiAo
bV9hcmd1bWVudHMgJiYgbV9hcmd1bWVudHMtPmFyZ3VtZW50Q291bnQoKSkgewogICAgICAgICBJ
bmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0TWFuYWdlci0+aW5q
ZWN0ZWRTY3JpcHRGb3IobV9hcmd1bWVudHMtPmdsb2JhbFN0YXRlKCkpOwogICAgICAgICBpZiAo
IWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewotICAgICAgICAgICAgUmVmUHRyPFR5cGVC
dWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pj4ganNvbkFy
Z3MgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVj
dD46OmNyZWF0ZSgpOworICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4+IGpz
b25BcmdzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBpZiAo
bV90eXBlID09IFRhYmxlTWVzc2FnZVR5cGUgJiYgZ2VuZXJhdGVQcmV2aWV3ICYmIG1fYXJndW1l
bnRzLT5hcmd1bWVudENvdW50KCkpIHsKLSAgICAgICAgICAgICAgICBTY3JpcHRWYWx1ZSB0YWJs
ZSA9IG1fYXJndW1lbnRzLT5hcmd1bWVudEF0KDApOwotICAgICAgICAgICAgICAgIFNjcmlwdFZh
bHVlIGNvbHVtbnMgPSBtX2FyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgpID4gMSA/IG1fYXJndW1l
bnRzLT5hcmd1bWVudEF0KDEpIDogU2NyaXB0VmFsdWUoKTsKLSAgICAgICAgICAgICAgICBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gaW5zcGVjdG9yVmFsdWUgPSBp
bmplY3RlZFNjcmlwdC53cmFwVGFibGUodGFibGUsIGNvbHVtbnMpOworICAgICAgICAgICAgICAg
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHRhYmxlID0gbV9hcmd1bWVudHMtPmFyZ3VtZW50QXQo
MCk7CisgICAgICAgICAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgY29sdW1ucyA9IG1f
YXJndW1lbnRzLT5hcmd1bWVudENvdW50KCkgPiAxID8gbV9hcmd1bWVudHMtPmFyZ3VtZW50QXQo
MSkgOiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSgpOworICAgICAgICAgICAgICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IGluc3BlY3RvclZh
bHVlID0gaW5qZWN0ZWRTY3JpcHQud3JhcFRhYmxlKHRhYmxlLCBjb2x1bW5zKTsKICAgICAgICAg
ICAgICAgICBpZiAoIWluc3BlY3RvclZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yMTYsNyAr
MjE4LDcgQEAgdm9pZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVuZChJbnNwZWN0b3JDb25z
b2xlRnJvbnRlbmREaXNwYXRjaGVyKiBjb25zb2xlRnIKICAgICAgICAgICAgICAgICBqc29uQXJn
cy0+YWRkSXRlbShpbnNwZWN0b3JWYWx1ZSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2FyZ3VtZW50cy0+YXJndW1lbnRD
b3VudCgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+IGluc3BlY3RvclZhbHVlID0gaW5qZWN0ZWRTY3JpcHQud3Jh
cE9iamVjdChtX2FyZ3VtZW50cy0+YXJndW1lbnRBdChpKSwgImNvbnNvbGUiLCBnZW5lcmF0ZVBy
ZXZpZXcpOworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBpbnNwZWN0b3JWYWx1ZSA9IGluamVjdGVkU2NyaXB0
LndyYXBPYmplY3QobV9hcmd1bWVudHMtPmFyZ3VtZW50QXQoaSksICJjb25zb2xlIiwgZ2VuZXJh
dGVQcmV2aWV3KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFpbnNwZWN0b3JWYWx1ZSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvQ29uc29sZU1lc3NhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVz
c2FnZS5oCmluZGV4IDA3Zjg4YjYuLjdmZDE2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db25zb2xlTWVzc2FnZS5oCkBAIC0zOCwxNSArMzgsMTcgQEAKICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAorbmFtZXNwYWNlIEluc3BlY3RvciB7
CitjbGFzcyBJbnNwZWN0b3JPYmplY3Q7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgRE9NV2luZG93OwogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotY2xhc3MgSW5zcGVj
dG9yT2JqZWN0OwogY2xhc3MgU2NyaXB0QXJndW1lbnRzOwogY2xhc3MgU2NyaXB0Q2FsbEZyYW1l
OwogY2xhc3MgU2NyaXB0Q2FsbFN0YWNrOwotY2xhc3MgU2NyaXB0VmFsdWU7CiAKIGNsYXNzIENv
bnNvbGVNZXNzYWdlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb25zb2xlTWVzc2FnZSk7
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
Q29udGVudFNlYXJjaFV0aWxzLmNwcAppbmRleCAwM2E4MDVmLi5lYTFhMGU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmNwcApAQCAtMzEsMTQg
KzMxLDE0IEBACiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAogI2luY2x1ZGUgIkNvbnRlbnRTZWFy
Y2hVdGlscy5oIgotCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiUmVn
dWxhckV4cHJlc3Npb24uaCIKLQorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMu
aD4KICNpbmNsdWRlIDx3dGYvQnVtcFBvaW50ZXJBbGxvY2F0b3IuaD4KICNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8eWFyci9ZYXJyLmg+CiAKK3VzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBDb250ZW50U2Vh
cmNoVXRpbHMgewogCkBAIC0xMjAsOSArMTIwLDkgQEAgUGFzc093blB0cjxWZWN0b3I8c2l6ZV90
Pj4gbGluZUVuZGluZ3MoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHJldHVybiByZXN1bHQucmVs
ZWFzZSgpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNo
TWF0Y2g+IGJ1aWxkT2JqZWN0Rm9yU2VhcmNoTWF0Y2goaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0
cmluZyYgbGluZUNvbnRlbnQpCitzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpQYWdlOjpTZWFyY2hNYXRjaD4gYnVpbGRPYmplY3RGb3JTZWFyY2hNYXRjaChpbnQgbGlu
ZU51bWJlciwgY29uc3QgU3RyaW5nJiBsaW5lQ29udGVudCkKIHsKLSAgICByZXR1cm4gVHlwZUJ1
aWxkZXI6OlBhZ2U6OlNlYXJjaE1hdGNoOjpjcmVhdGUoKQorICAgIHJldHVybiBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hNYXRjaDo6Y3JlYXRlKCkKICAgICAgICAgLnNldExp
bmVOdW1iZXIobGluZU51bWJlcikKICAgICAgICAgLnNldExpbmVDb250ZW50KGxpbmVDb250ZW50
KQogICAgICAgICAucmVsZWFzZSgpOwpAQCAtMTUzLDkgKzE1Myw5IEBAIGludCBjb3VudFJlZ3Vs
YXJFeHByZXNzaW9uTWF0Y2hlcyhjb25zdCBSZWd1bGFyRXhwcmVzc2lvbiYgcmVnZXgsIGNvbnN0
IFN0cmluZyYKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0Y2g+PiBzZWFyY2hJblRleHRCeUxp
bmVzKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCBj
YXNlU2Vuc2l0aXZlLCBjb25zdCBib29sIGlzUmVnZXgpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaE1h
dGNoPj4gc2VhcmNoSW5UZXh0QnlMaW5lcyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmlu
ZyYgcXVlcnksIGNvbnN0IGJvb2wgY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCBpc1JlZ2V4KQog
ewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJj
aE1hdGNoPj4gcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpT
ZWFyY2hNYXRjaD46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hNYXRjaD4+IHJlc3Vs
dCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OlBhZ2U6OlNlYXJjaE1hdGNoPjo6Y3JlYXRlKCk7CiAKICAgICBSZWd1bGFyRXhwcmVzc2lvbiBy
ZWdleCA9IENvbnRlbnRTZWFyY2hVdGlsczo6Y3JlYXRlU2VhcmNoUmVnZXgocXVlcnksIGNhc2VT
ZW5zaXRpdmUsIGlzUmVnZXgpOwogICAgIFZlY3RvcjxwYWlyPGludCwgU3RyaW5nPj4gbWF0Y2hl
cyA9IGdldFJlZ3VsYXJFeHByZXNzaW9uTWF0Y2hlc0J5TGluZXMocmVnZXgsIHRleHQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5oCmluZGV4IDYwYWQ2
NzguLjMxMWI2MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db250ZW50
U2VhcmNoVXRpbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJj
aFV0aWxzLmgKQEAgLTMxLDIxICszMSwyMCBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAot
I2luY2x1ZGUgIkluc3BlY3RvclR5cGVCdWlsZGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2Vi
VHlwZUJ1aWxkZXJzLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1RleHRQb3NpdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEluc3BlY3RvckFycmF5OwogY2xhc3MgUmVndWxh
ckV4cHJlc3Npb247CiAKIG5hbWVzcGFjZSBDb250ZW50U2VhcmNoVXRpbHMgewogCiBSZWd1bGFy
RXhwcmVzc2lvbiBjcmVhdGVTZWFyY2hSZWdleChjb25zdCBTdHJpbmcmIHF1ZXJ5LCBib29sIGNh
c2VTZW5zaXRpdmUsIGJvb2wgaXNSZWdleCk7CiBpbnQgY291bnRSZWd1bGFyRXhwcmVzc2lvbk1h
dGNoZXMoY29uc3QgUmVndWxhckV4cHJlc3Npb24mLCBjb25zdCBTdHJpbmcmKTsKLVBhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hNYXRjaD4+IHNl
YXJjaEluVGV4dEJ5TGluZXMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIHF1ZXJ5
LCBjb25zdCBib29sIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wgaXNSZWdleCk7CitQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OlBhZ2U6OlNlYXJjaE1hdGNoPj4gc2VhcmNoSW5UZXh0QnlMaW5lcyhjb25zdCBTdHJpbmcmIHRl
eHQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wgY2FzZVNlbnNpdGl2ZSwgY29uc3Qg
Ym9vbCBpc1JlZ2V4KTsKIFRleHRQb3NpdGlvbiB0ZXh0UG9zaXRpb25Gcm9tT2Zmc2V0KHNpemVf
dCBvZmZzZXQsIGNvbnN0IFZlY3RvcjxzaXplX3Q+JiBsaW5lRW5kaW5ncyk7CiBQYXNzT3duUHRy
PFZlY3RvcjxzaXplX3Q+PiBsaW5lRW5kaW5ncyhjb25zdCBTdHJpbmcmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKaW5kZXggNzdmNzgwYy4uOTliYTlk
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCkBAIC0z
NiwxOCArMzYsMjEgQEAKIAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgogI2luY2x1
ZGUgIkluamVjdGVkU2NyaXB0TW9kdWxlLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgi
CisjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgot
I2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5oIgotI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oPgorI2lu
Y2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNw
ZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotdXNpbmcg
V2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkFycmF5OwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6
OkRlYnVnZ2VyOjpDYWxsRnJhbWU7Ci11c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6UnVudGlt
ZTo6UHJvcGVydHlEZXNjcmlwdG9yOwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OlJ1bnRp
bWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yOwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxk
ZXI6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM7Ci11c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRl
cjo6UnVudGltZTo6UmVtb3RlT2JqZWN0OwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
QXJyYXk7Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1l
OwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWls
czsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3Jp
cHRvcjsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkludGVybmFsUHJv
cGVydHlEZXNjcmlwdG9yOwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6
UmVtb3RlT2JqZWN0OworCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTU2LDE0ICs1OSwxNCBAQCBJbmplY3RlZFNjcmlwdDo6SW5qZWN0ZWRT
Y3JpcHQoKQogewogfQogCi1JbmplY3RlZFNjcmlwdDo6SW5qZWN0ZWRTY3JpcHQoU2NyaXB0T2Jq
ZWN0IGluamVjdGVkU2NyaXB0T2JqZWN0LCBJbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrIGFjY2Vz
c0NoZWNrKQorSW5qZWN0ZWRTY3JpcHQ6OkluamVjdGVkU2NyaXB0KERlcHJlY2F0ZWQ6OlNjcmlw
dE9iamVjdCBpbmplY3RlZFNjcmlwdE9iamVjdCwgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayBh
Y2Nlc3NDaGVjaykKICAgICA6IEluamVjdGVkU2NyaXB0QmFzZSgiSW5qZWN0ZWRTY3JpcHQiLCBp
bmplY3RlZFNjcmlwdE9iamVjdCwgYWNjZXNzQ2hlY2spCiB7CiB9CiAKLXZvaWQgSW5qZWN0ZWRT
Y3JpcHQ6OmV2YWx1YXRlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBl
eHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5k
TGluZUFQSSwgYm9vbCByZXR1cm5CeVZhbHVlLCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRy
PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsIFR5cGVCdWlsZGVy
OjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1
YXRlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBj
b25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgYm9v
bCByZXR1cm5CeVZhbHVlLCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwgSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCiB7Ci0gICAgU2NyaXB0RnVu
Y3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJldmFsdWF0ZSIpOwor
ICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlw
dE9iamVjdCgpLCAiZXZhbHVhdGUiLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFu
eVRocmVhZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZXhwcmVzc2lvbik7CiAgICAg
ZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0R3JvdXApOwogICAgIGZ1bmN0aW9uLmFwcGVu
ZEFyZ3VtZW50KGluY2x1ZGVDb21tYW5kTGluZUFQSSk7CkBAIC03Miw5ICs3NSw5IEBAIHZvaWQg
SW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiBleHByZXNzaW9uCiAgICAgbWFrZUV2YWxDYWxsKGVycm9yU3RyaW5nLCBmdW5jdGlv
biwgcmVzdWx0LCB3YXNUaHJvd24pOwogfQogCi12b2lkIEluamVjdGVkU2NyaXB0OjpjYWxsRnVu
Y3Rpb25PbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQs
IGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBhcmd1bWVudHMsIGJvb2wg
cmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxUeXBlQnVpbGRlcjo6
UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJv
b2w+KiB3YXNUaHJvd24pCit2b2lkIEluamVjdGVkU2NyaXB0OjpjYWxsRnVuY3Rpb25PbihFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmlu
ZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBhcmd1bWVudHMsIGJvb2wgcmV0dXJuQnlWYWx1
ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9w
dE91dHB1dDxib29sPiogd2FzVGhyb3duKQogewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5j
dGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiY2FsbEZ1bmN0aW9uT24iKTsKKyAgICBEZXBy
ZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3Qo
KSwgImNhbGxGdW5jdGlvbk9uIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlU
aHJlYWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKICAgICBmdW5j
dGlvbi5hcHBlbmRBcmd1bWVudChleHByZXNzaW9uKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1
bWVudChhcmd1bWVudHMpOwpAQCAtODMsOSArODYsOSBAQCB2b2lkIEluamVjdGVkU2NyaXB0Ojpj
YWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2Jq
ZQogICAgIG1ha2VFdmFsQ2FsbChlcnJvclN0cmluZywgZnVuY3Rpb24sIHJlc3VsdCwgd2FzVGhy
b3duKTsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBjb25z
dCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0
cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBib29sIHJldHVy
bkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8UmVtb3RlT2JqZWN0PiogcmVz
dWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCit2b2lkIEluamVj
dGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
Y29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNvbnN0IFN0cmluZyYg
Y2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmpl
Y3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGJvb2wgcmV0dXJuQnlWYWx1ZSwg
Ym9vbCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxSZW1vdGVPYmplY3Q+KiByZXN1bHQsIEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQogewotICAgIFNj
cmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZXZhbHVh
dGVPbkNhbGxGcmFtZSIpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5j
dGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZXZhbHVhdGVPbkNhbGxGcmFtZSIsIFdlYkNv
cmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBl
bmRBcmd1bWVudChjYWxsRnJhbWVzKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYWxs
RnJhbWVJZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZXhwcmVzc2lvbik7CkBAIC05
OCw3ICsxMDEsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU2NyaXB0VgogCiB2b2lkIEluamVjdGVkU2Ny
aXB0OjpnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxGdW5jdGlvbkRldGFpbHM+KiByZXN1bHQpCiB7Ci0g
ICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJn
ZXRGdW5jdGlvbkRldGFpbHMiKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwg
ZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImdldEZ1bmN0aW9uRGV0YWlscyIsIFdl
YkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudChmdW5jdGlvbklkKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJl
c3VsdFZhbHVlOwogICAgIG1ha2VDYWxsKGZ1bmN0aW9uLCAmcmVzdWx0VmFsdWUpOwpAQCAtMTEy
LDcgKzExNSw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEZ1bmN0aW9uRGV0YWlscyhFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYKIAogdm9pZCBJbmplY3RlZFNjcmlw
dDo6Z2V0UHJvcGVydGllcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYg
b2JqZWN0SWQsIGJvb2wgb3duUHJvcGVydGllcywgUmVmUHRyPEFycmF5PFByb3BlcnR5RGVzY3Jp
cHRvcj4+KiBwcm9wZXJ0aWVzKQogewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihp
bmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZ2V0UHJvcGVydGllcyIpOworICAgIERlcHJlY2F0ZWQ6
OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZ2V0
UHJvcGVydGllcyIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsK
ICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RJZCk7CiAgICAgZnVuY3Rpb24uYXBw
ZW5kQXJndW1lbnQob3duUHJvcGVydGllcyk7CiAKQEAgLTEyNyw3ICsxMzAsNyBAQCB2b2lkIElu
amVjdGVkU2NyaXB0OjpnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJiBvYmplYwogCiB2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRJbnRlcm5hbFByb3Bl
cnRpZXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBS
ZWZQdHI8QXJyYXk8SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiogcHJvcGVydGllcykKIHsK
LSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwg
ImdldEludGVybmFsUHJvcGVydGllcyIpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9u
Q2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZ2V0SW50ZXJuYWxQcm9wZXJ0
aWVzIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAgIGZ1
bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKIAogICAgIFJlZlB0cjxJbnNwZWN0b3JW
YWx1ZT4gcmVzdWx0OwpAQCAtMTQ2LDExICsxNDksMTEgQEAgTm9kZSogSW5qZWN0ZWRTY3JpcHQ6
Om5vZGVGb3JPYmplY3RJZChjb25zdCBTdHJpbmcmIG9iamVjdElkKQogICAgIGlmIChoYXNOb1Zh
bHVlKCkgfHwgIWNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdygpKQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgp
LCAibm9kZUZvck9iamVjdElkIik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxs
IGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJub2RlRm9yT2JqZWN0SWQiLCBXZWJD
b3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAgZnVuY3Rpb24uYXBw
ZW5kQXJndW1lbnQob2JqZWN0SWQpOwogCiAgICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsK
LSAgICBTY3JpcHRWYWx1ZSByZXN1bHRWYWx1ZSA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxl
ZChmdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBy
ZXN1bHRWYWx1ZSA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbiwgaGFkRXhj
ZXB0aW9uKTsKICAgICBBU1NFUlQoIWhhZEV4Y2VwdGlvbik7CiAKICAgICByZXR1cm4gSW5qZWN0
ZWRTY3JpcHRIb3N0OjpzY3JpcHRWYWx1ZUFzTm9kZShyZXN1bHRWYWx1ZSk7CkBAIC0xNTgsMjAg
KzE2MSwyMCBAQCBOb2RlKiBJbmplY3RlZFNjcmlwdDo6bm9kZUZvck9iamVjdElkKGNvbnN0IFN0
cmluZyYgb2JqZWN0SWQpCiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OnJlbGVhc2VPYmplY3QoY29u
c3QgU3RyaW5nJiBvYmplY3RJZCkKIHsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24o
aW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgInJlbGVhc2VPYmplY3QiKTsKKyAgICBEZXByZWNhdGVk
OjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgInJl
bGVhc2VPYmplY3QiLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7
CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQpOwogICAgIFJlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4gcmVzdWx0OwogICAgIG1ha2VDYWxsKGZ1bmN0aW9uLCAmcmVzdWx0KTsKIH0K
IAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotUGFzc1JlZlB0cjxBcnJheTxDYWxs
RnJhbWU+PiBJbmplY3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMoY29uc3QgU2NyaXB0VmFsdWUm
IGNhbGxGcmFtZXMpCitQYXNzUmVmUHRyPEFycmF5PENhbGxGcmFtZT4+IEluamVjdGVkU2NyaXB0
Ojp3cmFwQ2FsbEZyYW1lcyhjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgY2FsbEZyYW1l
cykKIHsKICAgICBBU1NFUlQoIWhhc05vVmFsdWUoKSk7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxs
IGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJ3cmFwQ2FsbEZyYW1lcyIpOworICAg
IERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9i
amVjdCgpLCAid3JhcENhbGxGcmFtZXMiLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJv
bUFueVRocmVhZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY2FsbEZyYW1lcyk7CiAg
ICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKLSAgICBTY3JpcHRWYWx1ZSBjYWxsRnJhbWVz
VmFsdWUgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlv
bik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgY2FsbEZyYW1lc1ZhbHVlID0gY2FsbEZ1
bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwogICAgIEFTU0VS
VCghaGFkRXhjZXB0aW9uKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdCA9IGNh
bGxGcmFtZXNWYWx1ZS50b0luc3BlY3RvclZhbHVlKHNjcmlwdFN0YXRlKCkpOwogICAgIGlmIChy
ZXN1bHQtPnR5cGUoKSA9PSBJbnNwZWN0b3JWYWx1ZTo6VHlwZUFycmF5KQpAQCAtMTgwLDI2ICsx
ODMsMjYgQEAgUGFzc1JlZlB0cjxBcnJheTxDYWxsRnJhbWU+PiBJbmplY3RlZFNjcmlwdDo6d3Jh
cENhbGxGcmFtZXMoY29uc3QgU2NyaXB0VmFsdWUmIGMKIH0KICNlbmRpZgogCi1QYXNzUmVmUHRy
PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFw
T2JqZWN0KGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUs
IGJvb2wgZ2VuZXJhdGVQcmV2aWV3KSBjb25zdAorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwT2JqZWN0
KGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBncm91
cE5hbWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3KSBjb25zdAogewogICAgIEFTU0VSVCghaGFzTm9W
YWx1ZSgpKTsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgd3JhcEZ1bmN0aW9uKGluamVjdGVkU2Ny
aXB0T2JqZWN0KCksICJ3cmFwT2JqZWN0Iik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rp
b25DYWxsIHdyYXBGdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAid3JhcE9iamVjdCIp
OwogICAgIHdyYXBGdW5jdGlvbi5hcHBlbmRBcmd1bWVudCh2YWx1ZSk7CiAgICAgd3JhcEZ1bmN0
aW9uLmFwcGVuZEFyZ3VtZW50KGdyb3VwTmFtZSk7CiAgICAgd3JhcEZ1bmN0aW9uLmFwcGVuZEFy
Z3VtZW50KGNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdygpKTsKICAgICB3cmFwRnVuY3Rpb24uYXBw
ZW5kQXJndW1lbnQoZ2VuZXJhdGVQcmV2aWV3KTsKICAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZh
bHNlOwotICAgIFNjcmlwdFZhbHVlIHIgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQod3Jh
cEZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHIg
PSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQod3JhcEZ1bmN0aW9uLCBoYWRFeGNlcHRpb24p
OwogICAgIGlmIChoYWRFeGNlcHRpb24pCiAgICAgICAgIHJldHVybiAwOwogICAgIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IHJhd1Jlc3VsdCA9IHIudG9JbnNwZWN0b3JWYWx1ZShzY3JpcHRTdGF0
ZSgpKS0+YXNPYmplY3QoKTsKLSAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdDo6cnVudGltZUNhc3QocmF3UmVzdWx0KTsKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0OjpydW50aW1lQ2FzdChyYXdSZXN1bHQp
OwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IElu
amVjdGVkU2NyaXB0Ojp3cmFwVGFibGUoY29uc3QgU2NyaXB0VmFsdWUmIHRhYmxlLCBjb25zdCBT
Y3JpcHRWYWx1ZSYgY29sdW1ucykgY29uc3QKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcFRhYmxlKGNv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB0YWJsZSwgY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmIGNvbHVtbnMpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwot
ICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCB3cmFwRnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3Qo
KSwgIndyYXBUYWJsZSIpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCB3cmFw
RnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgIndyYXBUYWJsZSIpOwogICAgIHdyYXBG
dW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coKSk7CiAgICAg
d3JhcEZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHRhYmxlKTsKICAgICBpZiAoY29sdW1ucy5oYXNO
b1ZhbHVlKCkpCkBAIC0yMDcsMjYgKzIxMCwyNiBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwVGFibGUoY29uc3QgUwog
ICAgIGVsc2UKICAgICAgICAgd3JhcEZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNvbHVtbnMpOwog
ICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgU2NyaXB0VmFsdWUgciA9IGNhbGxG
dW5jdGlvbldpdGhFdmFsRW5hYmxlZCh3cmFwRnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CisgICAg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgciA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZCh3
cmFwRnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CiAgICAgaWYgKGhhZEV4Y2VwdGlvbikKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmF3UmVzdWx0ID0gci50
b0luc3BlY3RvclZhbHVlKHNjcmlwdFN0YXRlKCkpLT5hc09iamVjdCgpOwotICAgIHJldHVybiBU
eXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0OjpydW50aW1lQ2FzdChyYXdSZXN1bHQp
OworICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmpl
Y3Q6OnJ1bnRpbWVDYXN0KHJhd1Jlc3VsdCk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBOb2RlKE5vZGUqIG5v
ZGUsIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwTm9kZShO
b2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSkKIHsKICAgICByZXR1cm4gd3JhcE9i
amVjdChub2RlQXNTY3JpcHRWYWx1ZShub2RlKSwgZ3JvdXBOYW1lKTsKIH0KIAotU2NyaXB0VmFs
dWUgSW5qZWN0ZWRTY3JpcHQ6OmZpbmRPYmplY3RCeUlkKGNvbnN0IFN0cmluZyYgb2JqZWN0SWQp
IGNvbnN0CitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdDo6ZmluZE9iamVj
dEJ5SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJZCkgY29uc3QKIHsKICAgICBBU1NFUlQoIWhhc05v
VmFsdWUoKSk7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0
T2JqZWN0KCksICJmaW5kT2JqZWN0QnlJZCIpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0
aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZmluZE9iamVjdEJ5SWQi
LCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAgZnVuY3Rp
b24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQpOwogCiAgICAgYm9vbCBoYWRFeGNlcHRpb24gPSBm
YWxzZTsKLSAgICBTY3JpcHRWYWx1ZSByZXN1bHRWYWx1ZSA9IGNhbGxGdW5jdGlvbldpdGhFdmFs
RW5hYmxlZChmdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSByZXN1bHRWYWx1ZSA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbiwg
aGFkRXhjZXB0aW9uKTsKICAgICBBU1NFUlQoIWhhZEV4Y2VwdGlvbik7CiAgICAgcmV0dXJuIHJl
c3VsdFZhbHVlOwogfQpAQCAtMjM0LDcgKzIzNyw3IEBAIFNjcmlwdFZhbHVlIEluamVjdGVkU2Ny
aXB0OjpmaW5kT2JqZWN0QnlJZChjb25zdCBTdHJpbmcmIG9iamVjdElkKSBjb25zdAogdm9pZCBJ
bmplY3RlZFNjcmlwdDo6aW5zcGVjdE5vZGUoTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQoIWhh
c05vVmFsdWUoKSk7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2Ny
aXB0T2JqZWN0KCksICJpbnNwZWN0Tm9kZSIpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0
aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiaW5zcGVjdE5vZGUiLCBX
ZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAgZnVuY3Rpb24u
YXBwZW5kQXJndW1lbnQobm9kZUFzU2NyaXB0VmFsdWUobm9kZSkpOwogICAgIFJlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4gcmVzdWx0OwogICAgIG1ha2VDYWxsKGZ1bmN0aW9uLCAmcmVzdWx0KTsKQEAg
LTI0MywxNCArMjQ2LDE0IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6Omluc3BlY3ROb2RlKE5vZGUq
IG5vZGUpCiB2b2lkIEluamVjdGVkU2NyaXB0OjpyZWxlYXNlT2JqZWN0R3JvdXAoY29uc3QgU3Ry
aW5nJiBvYmplY3RHcm91cCkKIHsKICAgICBBU1NFUlQoIWhhc05vVmFsdWUoKSk7Ci0gICAgU2Ny
aXB0RnVuY3Rpb25DYWxsIHJlbGVhc2VGdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAi
cmVsZWFzZU9iamVjdEdyb3VwIik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxs
IHJlbGVhc2VGdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAicmVsZWFzZU9iamVjdEdy
b3VwIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAgIHJl
bGVhc2VGdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RHcm91cCk7CiAgICAgYm9vbCBoYWRF
eGNlcHRpb24gPSBmYWxzZTsKICAgICBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQocmVsZWFz
ZUZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwogICAgIEFTU0VSVCghaGFkRXhjZXB0aW9uKTsKIH0K
IAotU2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHQ6Om5vZGVBc1NjcmlwdFZhbHVlKE5vZGUqIG5v
ZGUpCitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdDo6bm9kZUFzU2NyaXB0
VmFsdWUoTm9kZSogbm9kZSkKIHsKICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0Ojpub2Rl
QXNTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZSgpLCBub2RlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0LmgKaW5kZXggOWI2YWQyZi4uZmQ5YjllNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKQEAgLTMzLDE5ICszMywyMSBAQAog
CiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRCYXNlLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKKyNpbmNsdWRl
ICJJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCIKICNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMu
aCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCituYW1lc3BhY2UgRGVwcmVjYXRlZCB7CitjbGFz
cyBTY3JpcHRPYmplY3Q7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5qZWN0
ZWRTY3JpcHRNb2R1bGU7CiBjbGFzcyBOb2RlOwotY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVl
OwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIApAQCAtNjAsNDAgKzYyLDQwIEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICAgIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLAogICAgICAgICAg
ICAgICAgICAgYm9vbCByZXR1cm5CeVZhbHVlLAogICAgICAgICAgICAgICAgICAgYm9vbCBnZW5l
cmF0ZVByZXZpZXcsCi0gICAgICAgICAgICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRp
bWU6OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwKLSAgICAgICAgICAgICAgICAgIFR5cGVCdWlsZGVy
OjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7CisgICAgICAgICAgICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LAor
ICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+
KiB3YXNUaHJvd24pOwogICAgIHZvaWQgY2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcqLAogICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFN0cmluZyYgYXJndW1lbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCByZXR1cm5CeVZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBnZW5lcmF0
ZVByZXZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFR5
cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7CisgICAgICAgICAgICAgICAg
ICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0PiogcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOwogICAgIHZvaWQgZXZhbHVhdGVPbkNh
bGxGcmFtZShFcnJvclN0cmluZyosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCByZXR1cm5CeVZhbHVlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGdlbmVyYXRlUHJldmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4q
IHdhc1Rocm93bik7Ci0gICAgdm9pZCBnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkZ1
bmN0aW9uRGV0YWlscz4qIHJlc3VsdCk7Ci0gICAgdm9pZCBnZXRQcm9wZXJ0aWVzKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgYm9vbCBvd25Qcm9wZXJ0aWVzLCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0
b3I+PiogcmVzdWx0KTsKLSAgICB2b2lkIGdldEludGVybmFsUHJvcGVydGllcyhFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlw
ZUJ1aWxkZXI6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4qIHJlc3VsdCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhy
b3duKTsKKyAgICB2b2lkIGdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2Vy
OjpGdW5jdGlvbkRldGFpbHM+KiByZXN1bHQpOworICAgIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGJvb2wgb3duUHJvcGVydGllcywgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+KiByZXN1bHQpOworICAgIHZvaWQgZ2V0SW50
ZXJuYWxQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4qIHJlc3VsdCk7CiAgICAgTm9k
ZSogbm9kZUZvck9iamVjdElkKGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpOwogICAgIHZvaWQgcmVs
ZWFzZU9iamVjdChjb25zdCBTdHJpbmcmIG9iamVjdElkKTsKIAogI2lmIEVOQUJMRShKQVZBU0NS
SVBUX0RFQlVHR0VSKQotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4gd3JhcENhbGxGcmFtZXMoY29uc3QgU2NyaXB0VmFs
dWUmKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiB3cmFwQ2FsbEZyYW1lcyhj
b25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYpOwogI2VuZGlmCiAKLSAgICBQYXNzUmVmUHRy
PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHdyYXBPYmplY3QoY29uc3QgU2Ny
aXB0VmFsdWUmLCBjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcg
PSBmYWxzZSkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVt
b3RlT2JqZWN0PiB3cmFwVGFibGUoY29uc3QgU2NyaXB0VmFsdWUmIHRhYmxlLCBjb25zdCBTY3Jp
cHRWYWx1ZSYgY29sdW1ucykgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0PiB3cmFwTm9kZShOb2RlKiwgY29uc3QgU3RyaW5nJiBncm91cE5h
bWUpOwotICAgIFNjcmlwdFZhbHVlIGZpbmRPYmplY3RCeUlkKGNvbnN0IFN0cmluZyYgb2JqZWN0
SWQpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0PiB3cmFwT2JqZWN0KGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
JiwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3ID0gZmFsc2Up
IGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6
UmVtb3RlT2JqZWN0PiB3cmFwVGFibGUoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHRh
YmxlLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgY29sdW1ucykgY29uc3Q7CisgICAg
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+
IHdyYXBOb2RlKE5vZGUqLCBjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSk7CisgICAgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUgZmluZE9iamVjdEJ5SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJZCkgY29u
c3Q7CiAKICAgICB2b2lkIGluc3BlY3ROb2RlKE5vZGUqKTsKICAgICB2b2lkIHJlbGVhc2VPYmpl
Y3RHcm91cChjb25zdCBTdHJpbmcmKTsKQEAgLTEwMSw5ICsxMDMsOSBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIGZyaWVuZCBjbGFzcyBJbmplY3RlZFNjcmlwdE1vZHVsZTsKICAgICBmcmllbmQg
SW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcihK
U0M6OkV4ZWNTdGF0ZSopOwotICAgIEluamVjdGVkU2NyaXB0KFNjcmlwdE9iamVjdCwgSW5zcGVj
dGVkU3RhdGVBY2Nlc3NDaGVjayk7CisgICAgSW5qZWN0ZWRTY3JpcHQoRGVwcmVjYXRlZDo6U2Ny
aXB0T2JqZWN0LCBJbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKTsKIAotICAgIFNjcmlwdFZhbHVl
IG5vZGVBc1NjcmlwdFZhbHVlKE5vZGUqKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBu
b2RlQXNTY3JpcHRWYWx1ZShOb2RlKik7CiB9OwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAKaW5kZXggZDlmYmE0MC4uNjNmMjkx
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5j
cHAKQEAgLTM1LDEyICszNSwxNCBAQAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0QmFzZS5oIgog
CiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiSW5zcGVj
dG9yVmFsdWVzLmgiCi0jaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCisjaW5jbHVkZSA8
YmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3Bl
Y3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdDsKKwordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC01MCwxNCArNTIsMTQgQEAgSW5qZWN0ZWRTY3JpcHRCYXNl
OjpJbmplY3RlZFNjcmlwdEJhc2UoY29uc3QgU3RyaW5nJiBuYW1lKQogewogfQogCi1JbmplY3Rl
ZFNjcmlwdEJhc2U6OkluamVjdGVkU2NyaXB0QmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIFNjcmlw
dE9iamVjdCBpbmplY3RlZFNjcmlwdE9iamVjdCwgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayBh
Y2Nlc3NDaGVjaykKK0luamVjdGVkU2NyaXB0QmFzZTo6SW5qZWN0ZWRTY3JpcHRCYXNlKGNvbnN0
IFN0cmluZyYgbmFtZSwgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IGluamVjdGVkU2NyaXB0T2Jq
ZWN0LCBJbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrIGFjY2Vzc0NoZWNrKQogICAgIDogbV9uYW1l
KG5hbWUpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0T2JqZWN0KGluamVjdGVkU2NyaXB0T2JqZWN0
KQogICAgICwgbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKGFjY2Vzc0NoZWNrKQogewogfQog
Ci12b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6aW5pdGlhbGl6ZShTY3JpcHRPYmplY3QgaW5qZWN0
ZWRTY3JpcHRPYmplY3QsIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sgYWNjZXNzQ2hlY2spCit2
b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6aW5pdGlhbGl6ZShEZXByZWNhdGVkOjpTY3JpcHRPYmpl
Y3QgaW5qZWN0ZWRTY3JpcHRPYmplY3QsIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sgYWNjZXNz
Q2hlY2spCiB7CiAgICAgbV9pbmplY3RlZFNjcmlwdE9iamVjdCA9IGluamVjdGVkU2NyaXB0T2Jq
ZWN0OwogICAgIG1faW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayA9IGFjY2Vzc0NoZWNrOwpAQCAt
NjgsMTIgKzcwLDEyIEBAIGJvb2wgSW5qZWN0ZWRTY3JpcHRCYXNlOjpjYW5BY2Nlc3NJbnNwZWN0
ZWRXaW5kb3coKSBjb25zdAogICAgIHJldHVybiBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2so
bV9pbmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpKTsKIH0KIAotY29uc3QgU2NyaXB0
T2JqZWN0JiBJbmplY3RlZFNjcmlwdEJhc2U6OmluamVjdGVkU2NyaXB0T2JqZWN0KCkgY29uc3QK
K2NvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgSW5qZWN0ZWRTY3JpcHRCYXNlOjppbmpl
Y3RlZFNjcmlwdE9iamVjdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRP
YmplY3Q7CiB9CiAKLVNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0QmFzZTo6Y2FsbEZ1bmN0aW9u
V2l0aEV2YWxFbmFibGVkKFNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24sIGJvb2wmIGhhZEV4
Y2VwdGlvbikgY29uc3QKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0QmFz
ZTo6Y2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9u
Q2FsbCYgZnVuY3Rpb24sIGJvb2wmIGhhZEV4Y2VwdGlvbikgY29uc3QKIHsKICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gc2NyaXB0RXhlY3V0aW9u
Q29udGV4dEZyb21FeGVjU3RhdGUobV9pbmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgp
KTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsQ2FsbEZ1bmN0aW9uKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
IG5hbWUoKSwgMSk7CkBAIC04Nyw3ICs4OSw3IEBAIFNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0
QmFzZTo6Y2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKFNjcmlwdEZ1bmN0aW9uQ2FsbCYKICAg
ICAgICAgICAgIHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnNldEV2YWxFbmFi
bGVkKHRydWUpOwogICAgIH0KIAotICAgIFNjcmlwdFZhbHVlIHJlc3VsdFZhbHVlID0gZnVuY3Rp
b24uY2FsbChoYWRFeGNlcHRpb24pOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHJlc3Vs
dFZhbHVlID0gZnVuY3Rpb24uY2FsbChoYWRFeGNlcHRpb24pOwogCiAgICAgaWYgKGV2YWxJc0Rp
c2FibGVkKQogICAgICAgICBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5zZXRF
dmFsRW5hYmxlZChmYWxzZSk7CkBAIC05Niw3ICs5OCw3IEBAIFNjcmlwdFZhbHVlIEluamVjdGVk
U2NyaXB0QmFzZTo6Y2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKFNjcmlwdEZ1bmN0aW9uQ2Fs
bCYKICAgICByZXR1cm4gcmVzdWx0VmFsdWU7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHRCYXNl
OjptYWtlQ2FsbChTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uLCBSZWZQdHI8SW5zcGVjdG9y
VmFsdWU+KiByZXN1bHQpCit2b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUNhbGwoRGVwcmVj
YXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwgUmVmUHRyPEluc3BlY3RvclZhbHVl
PiogcmVzdWx0KQogewogICAgIGlmIChoYXNOb1ZhbHVlKCkgfHwgIWNhbkFjY2Vzc0luc3BlY3Rl
ZFdpbmRvdygpKSB7CiAgICAgICAgICpyZXN1bHQgPSBJbnNwZWN0b3JWYWx1ZTo6bnVsbCgpOwpA
QCAtMTA0LDcgKzEwNiw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtlQ2FsbChTY3Jp
cHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uLCBSZWZQdHI8SW5zcGVjdG9yCiAgICAgfQogCiAgICAg
Ym9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKLSAgICBTY3JpcHRWYWx1ZSByZXN1bHRWYWx1ZSA9
IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKKyAg
ICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSByZXN1bHRWYWx1ZSA9IGNhbGxGdW5jdGlvbldpdGhF
dmFsRW5hYmxlZChmdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKIAogICAgIEFTU0VSVCghaGFkRXhj
ZXB0aW9uKTsKICAgICBpZiAoIWhhZEV4Y2VwdGlvbikgewpAQCAtMTE1LDcgKzExNyw3IEBAIHZv
aWQgSW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtlQ2FsbChTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0
aW9uLCBSZWZQdHI8SW5zcGVjdG9yCiAgICAgICAgICpyZXN1bHQgPSBJbnNwZWN0b3JTdHJpbmc6
OmNyZWF0ZSgiRXhjZXB0aW9uIHdoaWxlIG1ha2luZyBhIGNhbGwuIik7CiB9CiAKLXZvaWQgSW5q
ZWN0ZWRTY3JpcHRCYXNlOjptYWtlRXZhbENhbGwoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBT
Y3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6
OlJlbW90ZU9iamVjdD4qIG9iamVjdFJlc3VsdCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29s
Piogd2FzVGhyb3duKQordm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6Om1ha2VFdmFsQ2FsbChFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVu
Y3Rpb24sIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmpl
Y3Q+KiBvYmplY3RSZXN1bHQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29s
Piogd2FzVGhyb3duKQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0OwogICAg
IG1ha2VDYWxsKGZ1bmN0aW9uLCAmcmVzdWx0KTsKQEAgLTEzOSw3ICsxNDEsNyBAQCB2b2lkIElu
amVjdGVkU2NyaXB0QmFzZTo6bWFrZUV2YWxDYWxsKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
U2NyaXB0RnVuY3Rpb25DYQogICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6
IHJlc3VsdCBpcyBub3QgYSBwYWlyIG9mIHZhbHVlIGFuZCB3YXNUaHJvd24gZmxhZyI7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgKm9iamVjdFJlc3VsdCA9IFR5cGVCdWlsZGVyOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q6OnJ1bnRpbWVDYXN0KHJlc3VsdE9iaik7CisgICAgKm9iamVjdFJl
c3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDo6cnVu
dGltZUNhc3QocmVzdWx0T2JqKTsKICAgICAqd2FzVGhyb3duID0gd2FzVGhyb3duVmFsOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmgKaW5kZXgg
Nzk2ZjZjMC4uNzVmNTI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdEJhc2UuaApAQCAtMzEsMTUgKzMxLDIwIEBACiAjaWZuZGVmIEluamVjdGVkU2NyaXB0
QmFzZV9oCiAjZGVmaW5lIEluamVjdGVkU2NyaXB0QmFzZV9oCiAKLSNpbmNsdWRlICJJbnNwZWN0
b3JUeXBlQnVpbGRlci5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUgIklu
c3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVj
dC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEluc3BlY3RvclZhbHVlOworbmFtZXNwYWNl
IERlcHJlY2F0ZWQgewogY2xhc3MgU2NyaXB0RnVuY3Rpb25DYWxsOworfQorCituYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKK2NsYXNzIEluc3BlY3RvclZhbHVlOworfQorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCkBAIC01NiwxOCArNjEsMTggQEAg
cHVibGljOgogcHJvdGVjdGVkOgogICAgIHR5cGVkZWYgYm9vbCAoKkluc3BlY3RlZFN0YXRlQWNj
ZXNzQ2hlY2spKEpTQzo6RXhlY1N0YXRlKik7CiAgICAgSW5qZWN0ZWRTY3JpcHRCYXNlKGNvbnN0
IFN0cmluZyYgbmFtZSk7Ci0gICAgSW5qZWN0ZWRTY3JpcHRCYXNlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgU2NyaXB0T2JqZWN0LCBJbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKTsKKyAgICBJbmplY3Rl
ZFNjcmlwdEJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3Qs
IEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOwogCi0gICAgdm9pZCBpbml0aWFsaXplKFNjcmlw
dE9iamVjdCwgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayk7CisgICAgdm9pZCBpbml0aWFsaXpl
KERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCwgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayk7CiAg
ICAgYm9vbCBjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coKSBjb25zdDsKLSAgICBjb25zdCBTY3Jp
cHRPYmplY3QmIGluamVjdGVkU2NyaXB0T2JqZWN0KCkgY29uc3Q7Ci0gICAgU2NyaXB0VmFsdWUg
Y2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKFNjcmlwdEZ1bmN0aW9uQ2FsbCYsIGJvb2wmIGhh
ZEV4Y2VwdGlvbikgY29uc3Q7Ci0gICAgdm9pZCBtYWtlQ2FsbChTY3JpcHRGdW5jdGlvbkNhbGwm
LCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwotICAgIHZvaWQgbWFrZUV2YWxDYWxs
KEVycm9yU3RyaW5nKiwgU2NyaXB0RnVuY3Rpb25DYWxsJiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9v
bD4qIHdhc1Rocm93bik7CisgICAgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiBpbmpl
Y3RlZFNjcmlwdE9iamVjdCgpIGNvbnN0OworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGNh
bGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwm
LCBib29sJiBoYWRFeGNlcHRpb24pIGNvbnN0OworICAgIHZvaWQgbWFrZUNhbGwoRGVwcmVjYXRl
ZDo6U2NyaXB0RnVuY3Rpb25DYWxsJiwgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+
KiByZXN1bHQpOworICAgIHZvaWQgbWFrZUV2YWxDYWxsKEVycm9yU3RyaW5nKiwgRGVwcmVjYXRl
ZDo6U2NyaXB0RnVuY3Rpb25DYWxsJiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0
T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOwogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX25hbWU7
Ci0gICAgU2NyaXB0T2JqZWN0IG1faW5qZWN0ZWRTY3JpcHRPYmplY3Q7CisgICAgRGVwcmVjYXRl
ZDo6U2NyaXB0T2JqZWN0IG1faW5qZWN0ZWRTY3JpcHRPYmplY3Q7CiAgICAgSW5zcGVjdGVkU3Rh
dGVBY2Nlc3NDaGVjayBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2s7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxl
LmNwcAppbmRleCBmYWQ3OThiLi41OGJlNzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5jcHAKQEAgLTM3LDE1ICsz
NywxOSBAQAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRT
Y3JpcHRDYW52YXNNb2R1bGVTb3VyY2UuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFn
ZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwuaCIKLSNpbmNsdWRlICJTY3JpcHRP
YmplY3QuaCIKKyNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKKyNpbmNsdWRlIDxi
aW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaD4KKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRP
YmplY3QuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAKLXVzaW5n
IFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpBcnJheTsKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVy
OjpDYW52YXM6OlJlc291cmNlSWQ7Ci11c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6Q2FudmFz
OjpSZXNvdXJjZUluZm87Ci11c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNv
dXJjZVN0YXRlOwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2c7
Ci11c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFjZUxvZ0lkOwordXNpbmcg
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk7Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDYW52YXM6OlJlc291cmNlSWQ7Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
YW52YXM6OlJlc291cmNlSW5mbzsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZh
czo6UmVzb3VyY2VTdGF0ZTsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6
VHJhY2VMb2c7Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9n
SWQ7CisKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNjYsMzQgKzcwLDM0IEBAIFN0cmluZyBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6
c291cmNlKCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlX2pzKSwgc2l6ZW9mKEluamVj
dGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlX2pzKSk7CiB9CiAKLVNjcmlwdE9iamVjdCBJbmpl
Y3RlZFNjcmlwdENhbnZhc01vZHVsZTo6d3JhcENhbnZhczJEQ29udGV4dChjb25zdCBTY3JpcHRP
YmplY3QmIGNvbnRleHQpCitEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRD
YW52YXNNb2R1bGU6OndyYXBDYW52YXMyRENvbnRleHQoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0
T2JqZWN0JiBjb250ZXh0KQogewogICAgIHJldHVybiBjYWxsV3JhcENvbnRleHRGdW5jdGlvbigi
d3JhcENhbnZhczJEQ29udGV4dCIsIGNvbnRleHQpOwogfQogCiAjaWYgRU5BQkxFKFdFQkdMKQot
U2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjp3cmFwV2ViR0xDb250ZXh0
KGNvbnN0IFNjcmlwdE9iamVjdCYgZ2xDb250ZXh0KQorRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0
IEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjp3cmFwV2ViR0xDb250ZXh0KGNvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdE9iamVjdCYgZ2xDb250ZXh0KQogewogICAgIHJldHVybiBjYWxsV3JhcENv
bnRleHRGdW5jdGlvbigid3JhcFdlYkdMQ29udGV4dCIsIGdsQ29udGV4dCk7CiB9CiAjZW5kaWYg
Ly8gRU5BQkxFKFdFQkdMKQogCi1TY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1
bGU6OmNhbGxXcmFwQ29udGV4dEZ1bmN0aW9uKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lLCBj
b25zdCBTY3JpcHRPYmplY3QmIGNvbnRleHQpCitEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgSW5q
ZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OmNhbGxXcmFwQ29udGV4dEZ1bmN0aW9uKGNvbnN0IFN0
cmluZyYgZnVuY3Rpb25OYW1lLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmIGNvbnRl
eHQpCiB7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2Jq
ZWN0KCksIGZ1bmN0aW9uTmFtZSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxs
IGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksIGZ1bmN0aW9uTmFtZSwgV2ViQ29yZTo6
ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFy
Z3VtZW50KGNvbnRleHQpOwogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgU2Ny
aXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rp
b24sIGhhZEV4Y2VwdGlvbik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgcmVzdWx0VmFs
dWUgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7
CiAgICAgaWYgKGhhZEV4Y2VwdGlvbiB8fCByZXN1bHRWYWx1ZS5oYXNOb1ZhbHVlKCkgfHwgIXJl
c3VsdFZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIHJldHVybiBTY3JpcHRPYmplY3QoKTsKKyAgICAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6
OlNjcmlwdE9iamVjdCgpOwogICAgIH0KLSAgICByZXR1cm4gU2NyaXB0T2JqZWN0KGNvbnRleHQu
c2NyaXB0U3RhdGUoKSwgcmVzdWx0VmFsdWUpOworICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3Jp
cHRPYmplY3QoY29udGV4dC5zY3JpcHRTdGF0ZSgpLCByZXN1bHRWYWx1ZSk7CiB9CiAKIHZvaWQg
SW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6Om1hcmtGcmFtZUVuZCgpCiB7Ci0gICAgU2NyaXB0
RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJtYXJrRnJhbWVF
bmQiKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0
ZWRTY3JpcHRPYmplY3QoKSwgIm1hcmtGcmFtZUVuZCIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhh
bmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdFZh
bHVlOwogICAgIG1ha2VDYWxsKGZ1bmN0aW9uLCAmcmVzdWx0VmFsdWUpOwogICAgIEFTU0VSVChy
ZXN1bHRWYWx1ZSk7CkBAIC0xMTEsNyArMTE1LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdENhbnZh
c01vZHVsZTo6c3RhcnRDYXB0dXJpbmcoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBUcmFjZUwK
IAogdm9pZCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6Y2FsbFN0YXJ0Q2FwdHVyaW5nRnVu
Y3Rpb24oY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgVHJhY2VMb2dJZCogdHJhY2VMb2dJZCkKIHsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVu
Y3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgZnVuY3Rpb25OYW1lKTsKKyAgICBEZXByZWNh
dGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwg
ZnVuY3Rpb25OYW1lLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7
CiAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHRWYWx1ZTsKICAgICBtYWtlQ2FsbChm
dW5jdGlvbiwgJnJlc3VsdFZhbHVlKTsKICAgICBpZiAoIXJlc3VsdFZhbHVlIHx8IHJlc3VsdFZh
bHVlLT50eXBlKCkgIT0gSW5zcGVjdG9yVmFsdWU6OlR5cGVTdHJpbmcgfHwgIXJlc3VsdFZhbHVl
LT5hc1N0cmluZyh0cmFjZUxvZ0lkKSkKQEAgLTEzMCw3ICsxMzQsNyBAQCB2b2lkIEluamVjdGVk
U2NyaXB0Q2FudmFzTW9kdWxlOjpkcm9wVHJhY2VMb2coRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBjb25zdCBUcgogCiB2b2lkIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjpjYWxsVm9pZEZ1
bmN0aW9uV2l0aFRyYWNlTG9nSWRBcmd1bWVudChjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwg
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBUcmFjZUxvZ0lkJiB0cmFjZUxvZ0lkKQog
ewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgp
LCBmdW5jdGlvbk5hbWUpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5j
dGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCBmdW5jdGlvbk5hbWUsIFdlYkNvcmU6OmZ1bmN0
aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVu
dCh0cmFjZUxvZ0lkKTsKICAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwogICAgIGNhbGxG
dW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKQEAgLTE0MSw3
ICsxNDUsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjpjYWxsVm9pZEZ1bmN0
aW9uV2l0aFRyYWNlTG9nSWRBcmd1bWVudChjb25zdCBTdAogCiB2b2lkIEluamVjdGVkU2NyaXB0
Q2FudmFzTW9kdWxlOjp0cmFjZUxvZyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFRy
YWNlTG9nSWQmIHRyYWNlTG9nSWQsIGNvbnN0IGludCogc3RhcnRPZmZzZXQsIGNvbnN0IGludCog
bWF4TGVuZ3RoLCBSZWZQdHI8VHJhY2VMb2c+KiB0cmFjZUxvZykKIHsKLSAgICBTY3JpcHRGdW5j
dGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgInRyYWNlTG9nIik7Cisg
ICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0
T2JqZWN0KCksICJ0cmFjZUxvZyIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55
VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudCh0cmFjZUxvZ0lkKTsKICAgICBp
ZiAoc3RhcnRPZmZzZXQpCiAgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KCpzdGFydE9m
ZnNldCk7CkBAIC0xNTksNyArMTYzLDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVs
ZTo6dHJhY2VMb2coRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBUcmFjZUwKIAogdm9p
ZCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6cmVwbGF5VHJhY2VMb2coRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBjb25zdCBUcmFjZUxvZ0lkJiB0cmFjZUxvZ0lkLCBpbnQgc3RlcE5vLCBS
ZWZQdHI8UmVzb3VyY2VTdGF0ZT4qIHJlc3VsdCkKIHsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwg
ZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgInJlcGxheVRyYWNlTG9nIik7CisgICAg
RGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2Jq
ZWN0KCksICJyZXBsYXlUcmFjZUxvZyIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9t
QW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudCh0cmFjZUxvZ0lkKTsKICAg
ICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChzdGVwTm8pOwogICAgIFJlZlB0cjxJbnNwZWN0b3JW
YWx1ZT4gcmVzdWx0VmFsdWU7CkBAIC0xNzQsNyArMTc4LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlw
dENhbnZhc01vZHVsZTo6cmVwbGF5VHJhY2VMb2coRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBj
b25zdAogCiB2b2lkIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjpyZXNvdXJjZUluZm8oRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZXNvdXJjZUlkJiByZXNvdXJjZUlkLCBSZWZQ
dHI8UmVzb3VyY2VJbmZvPiogcmVzdWx0KQogewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5j
dGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAicmVzb3VyY2VJbmZvIik7CisgICAgRGVwcmVj
YXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCks
ICJyZXNvdXJjZUluZm8iLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVh
ZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQocmVzb3VyY2VJZCk7CiAgICAgUmVmUHRy
PEluc3BlY3RvclZhbHVlPiByZXN1bHRWYWx1ZTsKICAgICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJl
c3VsdFZhbHVlKTsKQEAgLTE4OCw3ICsxOTIsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0Q2FudmFz
TW9kdWxlOjpyZXNvdXJjZUluZm8oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZQog
CiB2b2lkIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjpyZXNvdXJjZVN0YXRlKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgY29uc3QgVHJhY2VMb2dJZCYgdHJhY2VMb2dJZCwgY29uc3QgUmVz
b3VyY2VJZCYgcmVzb3VyY2VJZCwgUmVmUHRyPFJlc291cmNlU3RhdGU+KiByZXN1bHQpCiB7Ci0g
ICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJy
ZXNvdXJjZVN0YXRlIik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0
aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJyZXNvdXJjZVN0YXRlIiwgV2ViQ29yZTo6ZnVu
Y3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3Vt
ZW50KHRyYWNlTG9nSWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHJlc291cmNlSWQp
OwogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0VmFsdWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5oCmluZGV4
IGYzMzExMmMuLmFjZWNlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5oCkBAIC0zNSwxMCArMzUsMTMgQEAKICNpbmNs
dWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCitu
YW1lc3BhY2UgRGVwcmVjYXRlZCB7CitjbGFzcyBTY3JpcHRPYmplY3Q7Cit9CisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotY2xhc3MgU2NyaXB0
T2JqZWN0OwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIApAQCAtNTAsMjMgKzUzLDIzIEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZSBtb2R1bGVGb3JT
dGF0ZShJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBKU0M6OkV4ZWNTdGF0ZSopOwogCi0gICAgU2Ny
aXB0T2JqZWN0IHdyYXBDYW52YXMyRENvbnRleHQoY29uc3QgU2NyaXB0T2JqZWN0Jik7CisgICAg
RGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IHdyYXBDYW52YXMyRENvbnRleHQoY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0T2JqZWN0Jik7CiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIFNjcmlwdE9iamVj
dCB3cmFwV2ViR0xDb250ZXh0KGNvbnN0IFNjcmlwdE9iamVjdCYpOworICAgIERlcHJlY2F0ZWQ6
OlNjcmlwdE9iamVjdCB3cmFwV2ViR0xDb250ZXh0KGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9i
amVjdCYpOwogI2VuZGlmCiAgICAgdm9pZCBtYXJrRnJhbWVFbmQoKTsKIAotICAgIHZvaWQgY2Fw
dHVyZUZyYW1lKEVycm9yU3RyaW5nKiwgVHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCop
OwotICAgIHZvaWQgc3RhcnRDYXB0dXJpbmcoRXJyb3JTdHJpbmcqLCBUeXBlQnVpbGRlcjo6Q2Fu
dmFzOjpUcmFjZUxvZ0lkKik7Ci0gICAgdm9pZCBzdG9wQ2FwdHVyaW5nKEVycm9yU3RyaW5nKiwg
Y29uc3QgVHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCYpOwotICAgIHZvaWQgZHJvcFRy
YWNlTG9nKEVycm9yU3RyaW5nKiwgY29uc3QgVHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJ
ZCYpOwotICAgIHZvaWQgdHJhY2VMb2coRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBpbnQqLCBjb25zdCBpbnQqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2c+
Kik7Ci0gICAgdm9pZCByZXBsYXlUcmFjZUxvZyhFcnJvclN0cmluZyosIGNvbnN0IFR5cGVCdWls
ZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQmLCBpbnQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q2FudmFz
OjpSZXNvdXJjZVN0YXRlPiopOwotICAgIHZvaWQgcmVzb3VyY2VJbmZvKEVycm9yU3RyaW5nKiwg
Y29uc3QgVHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VJZCYsIFJlZlB0cjxUeXBlQnVpbGRl
cjo6Q2FudmFzOjpSZXNvdXJjZUluZm8+Kik7Ci0gICAgdm9pZCByZXNvdXJjZVN0YXRlKEVycm9y
U3RyaW5nKiwgY29uc3QgVHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCYsIGNvbnN0IFR5
cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlSWQmLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNhbnZh
czo6UmVzb3VyY2VTdGF0ZT4qKTsKKyAgICB2b2lkIGNhcHR1cmVGcmFtZShFcnJvclN0cmluZyos
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCopOworICAgIHZvaWQg
c3RhcnRDYXB0dXJpbmcoRXJyb3JTdHJpbmcqLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52
YXM6OlRyYWNlTG9nSWQqKTsKKyAgICB2b2lkIHN0b3BDYXB0dXJpbmcoRXJyb3JTdHJpbmcqLCBj
b25zdCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQmKTsKKyAgICB2
b2lkIGRyb3BUcmFjZUxvZyhFcnJvclN0cmluZyosIGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNhbnZhczo6VHJhY2VMb2dJZCYpOworICAgIHZvaWQgdHJhY2VMb2coRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBpbnQqLCBjb25zdCBpbnQqLCBSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFjZUxvZz4qKTsKKyAgICB2b2lkIHJlcGxheVRyYWNl
TG9nKEVycm9yU3RyaW5nKiwgY29uc3QgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpU
cmFjZUxvZ0lkJiwgaW50LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpS
ZXNvdXJjZVN0YXRlPiopOworICAgIHZvaWQgcmVzb3VyY2VJbmZvKEVycm9yU3RyaW5nKiwgY29u
c3QgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJjZUlkJiwgUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VJbmZvPiopOworICAgIHZvaWQg
cmVzb3VyY2VTdGF0ZShFcnJvclN0cmluZyosIGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNhbnZhczo6VHJhY2VMb2dJZCYsIGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZh
czo6UmVzb3VyY2VJZCYsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlJl
c291cmNlU3RhdGU+Kik7CiAKIHByaXZhdGU6Ci0gICAgU2NyaXB0T2JqZWN0IGNhbGxXcmFwQ29u
dGV4dEZ1bmN0aW9uKGNvbnN0IFN0cmluZyYsIGNvbnN0IFNjcmlwdE9iamVjdCYpOworICAgIERl
cHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBjYWxsV3JhcENvbnRleHRGdW5jdGlvbihjb25zdCBTdHJp
bmcmLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmKTsKICAgICB2b2lkIGNhbGxTdGFy
dENhcHR1cmluZ0Z1bmN0aW9uKGNvbnN0IFN0cmluZyYsIEVycm9yU3RyaW5nKiwgU3RyaW5nKik7
CiAgICAgdm9pZCBjYWxsVm9pZEZ1bmN0aW9uV2l0aFRyYWNlTG9nSWRBcmd1bWVudChjb25zdCBT
dHJpbmcmLCBFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYpOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAKaW5kZXggZWY1MzNhYS4uNTQ2
NzU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9z
dC5jcHAKQEAgLTQ3LDE5ICs0NywyMCBAQAogI2luY2x1ZGUgIkluc3BlY3RvckRhdGFiYXNlQWdl
bnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yRnJvbnRlbmQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRl
ICJQYXN0ZWJvYXJkLmgiCiAjaW5jbHVkZSAiU3RvcmFnZS5oIgotCi0jaWYgRU5BQkxFKFNRTF9E
QVRBQkFTRSkKLSNpbmNsdWRlICJEYXRhYmFzZS5oIgotI2VuZGlmCi0KICNpbmNsdWRlICJtYXJr
dXAuaCIKLQorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CisjaW5jbHVkZSA8aW5z
cGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorI2lu
Y2x1ZGUgIkRhdGFiYXNlLmgiCisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRyPEluamVjdGVkU2NyaXB0SG9zdD4g
SW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKQpAQCAtOTcsNyArOTgsNyBAQCB2b2lkIEluamVj
dGVkU2NyaXB0SG9zdDo6ZGlzY29ubmVjdCgpCiB2b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6aW5z
cGVjdEltcGwoUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gb2JqZWN0LCBQYXNzUmVmUHRyPElu
c3BlY3RvclZhbHVlPiBoaW50cykKIHsKICAgICBpZiAobV9pbnNwZWN0b3JBZ2VudCkgewotICAg
ICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gcmVtb3RlT2Jq
ZWN0ID0gVHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDo6cnVudGltZUNhc3Qob2Jq
ZWN0KTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJl
bW90ZU9iamVjdD4gcmVtb3RlT2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0OjpydW50aW1lQ2FzdChvYmplY3QpOwogICAgICAgICBtX2luc3BlY3Rv
ckFnZW50LT5pbnNwZWN0KHJlbW90ZU9iamVjdCwgaGludHMtPmFzT2JqZWN0KCkpOwogICAgIH0K
IH0KQEAgLTEyMSw5ICsxMjIsOSBAQCB2b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6Y29weVRleHQo
Y29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0
ZSgpLT53cml0ZVBsYWluVGV4dCh0ZXh0LCBQYXN0ZWJvYXJkOjpDYW5ub3RTbWFydFJlcGxhY2Up
OwogfQogCi1TY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdEhvc3Q6Okluc3BlY3RhYmxlT2JqZWN0
OjpnZXQoSlNDOjpFeGVjU3RhdGUqKQorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgSW5qZWN0ZWRT
Y3JpcHRIb3N0OjpJbnNwZWN0YWJsZU9iamVjdDo6Z2V0KEpTQzo6RXhlY1N0YXRlKikKIHsKLSAg
ICByZXR1cm4gU2NyaXB0VmFsdWUoKTsKKyAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUoKTsKIH07CiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjphZGRJbnNwZWN0ZWRPYmplY3Qo
UGFzc093blB0cjxJbmplY3RlZFNjcmlwdEhvc3Q6Okluc3BlY3RhYmxlT2JqZWN0PiBvYmplY3Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgKaW5kZXgg
NGE4NDE4Mi4uOGM0NGQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0SG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdEhvc3QuaApAQCAtMzYsNiArMzYsMTUgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAorbmFtZXNwYWNlIERlcHJlY2F0ZWQgewor
Y2xhc3MgU2NyaXB0VmFsdWU7Cit9CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5z
cGVjdG9yT2JqZWN0OworY2xhc3MgSW5zcGVjdG9yVmFsdWU7Cit9CisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgRGF0YWJhc2U7CkBAIC00NiwxMiArNTUsOCBAQCBjbGFzcyBJbnNwZWN0
b3JET01BZ2VudDsKIGNsYXNzIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDsKIGNsYXNzIEluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OwotY2xhc3Mg
SW5zcGVjdG9yT2JqZWN0OwotY2xhc3MgSW5zcGVjdG9yVmFsdWU7CiBjbGFzcyBOb2RlOwogY2xh
c3MgU2NyaXB0RGVidWdTZXJ2ZXI7Ci1jbGFzcyBTY3JpcHRPYmplY3Q7Ci1jbGFzcyBTY3JpcHRW
YWx1ZTsKIGNsYXNzIFN0b3JhZ2U7CiAKIHN0cnVjdCBFdmVudExpc3RlbmVySW5mbzsKQEAgLTg1
LDIyICs5MCwyMiBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKLSAgICBzdGF0aWMgTm9kZSog
c2NyaXB0VmFsdWVBc05vZGUoU2NyaXB0VmFsdWUpOwotICAgIHN0YXRpYyBTY3JpcHRWYWx1ZSBu
b2RlQXNTY3JpcHRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIE5vZGUqKTsKKyAgICBzdGF0aWMgTm9k
ZSogc2NyaXB0VmFsdWVBc05vZGUoRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUpOworICAgIHN0YXRp
YyBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBub2RlQXNTY3JpcHRWYWx1ZShKU0M6OkV4ZWNTdGF0
ZSosIE5vZGUqKTsKIAogICAgIHZvaWQgZGlzY29ubmVjdCgpOwogCiAgICAgY2xhc3MgSW5zcGVj
dGFibGVPYmplY3QgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJs
aWM6Ci0gICAgICAgIHZpcnR1YWwgU2NyaXB0VmFsdWUgZ2V0KEpTQzo6RXhlY1N0YXRlKik7Cisg
ICAgICAgIHZpcnR1YWwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZ2V0KEpTQzo6RXhlY1N0YXRl
Kik7CiAgICAgICAgIHZpcnR1YWwgfkluc3BlY3RhYmxlT2JqZWN0KCkgeyB9CiAgICAgfTsKICAg
ICB2b2lkIGFkZEluc3BlY3RlZE9iamVjdChQYXNzT3duUHRyPEluc3BlY3RhYmxlT2JqZWN0Pik7
CiAgICAgdm9pZCBjbGVhckluc3BlY3RlZE9iamVjdHMoKTsKICAgICBJbnNwZWN0YWJsZU9iamVj
dCogaW5zcGVjdGVkT2JqZWN0KHVuc2lnbmVkIGludCBudW0pOwogCi0gICAgdm9pZCBpbnNwZWN0
SW1wbChQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBvYmplY3RUb0luc3BlY3QsIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yVmFsdWU+IGhpbnRzKTsKKyAgICB2b2lkIGluc3BlY3RJbXBsKFBhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gb2JqZWN0VG9JbnNwZWN0LCBQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IGhpbnRzKTsKICAgICB2b2lkIGdldEV2ZW50TGlz
dGVuZXJzSW1wbChOb2RlKiwgVmVjdG9yPEV2ZW50TGlzdGVuZXJJbmZvPiYgbGlzdGVuZXJzQXJy
YXkpOwogCiAgICAgdm9pZCBjbGVhckNvbnNvbGVNZXNzYWdlcygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAppbmRleCA3YWEzZDQz
Li4xMjc2YzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmNwcApAQCAtMzcsMTAgKzM3LDEyIEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRT
Y3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJJbmpl
Y3RlZFNjcmlwdFNvdXJjZS5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgotI2luY2x1
ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgor
I2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFBhc3NPd25QdHI8SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPiBJbmplY3RlZFNjcmlw
dE1hbmFnZXI6OmNyZWF0ZUZvclBhZ2UoKQpAQCAtMTczLDcgKzE3NSw3IEBAIEluamVjdGVkU2Ny
aXB0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3IoSlNDOjpFeGVjU3Rh
dGUqIGluc3BlY3RlCiAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwogCiAgICAgaW50
IGlkID0gaW5qZWN0ZWRTY3JpcHRJZEZvcihpbnNwZWN0ZWRFeGVjU3RhdGUpOwotICAgIFNjcmlw
dE9iamVjdCBpbmplY3RlZFNjcmlwdE9iamVjdCA9IGNyZWF0ZUluamVjdGVkU2NyaXB0KGluamVj
dGVkU2NyaXB0U291cmNlKCksIGluc3BlY3RlZEV4ZWNTdGF0ZSwgaWQpOworICAgIERlcHJlY2F0
ZWQ6OlNjcmlwdE9iamVjdCBpbmplY3RlZFNjcmlwdE9iamVjdCA9IGNyZWF0ZUluamVjdGVkU2Ny
aXB0KGluamVjdGVkU2NyaXB0U291cmNlKCksIGluc3BlY3RlZEV4ZWNTdGF0ZSwgaWQpOwogICAg
IEluamVjdGVkU2NyaXB0IHJlc3VsdChpbmplY3RlZFNjcmlwdE9iamVjdCwgbV9pbnNwZWN0ZWRT
dGF0ZUFjY2Vzc0NoZWNrKTsKICAgICBtX2lkVG9JbmplY3RlZFNjcmlwdC5zZXQoaWQsIHJlc3Vs
dCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdE1hbmFnZXIuaAppbmRleCA2ODFlNDA4Li43YjQ4ZDM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oCkBAIC0zNSwx
MyArMzUsMTkgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgRGVwcmVjYXRlZCB7CitjbGFzcyBTY3JpcHRPYmpl
Y3Q7Cit9CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yT2JqZWN0Owor
fQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERPTVdpbmRvdzsKIGNsYXNzIEluamVj
dGVkU2NyaXB0OwogY2xhc3MgSW5qZWN0ZWRTY3JpcHRIb3N0OwotY2xhc3MgSW5zcGVjdG9yT2Jq
ZWN0OwotY2xhc3MgU2NyaXB0T2JqZWN0OwogCiBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXIg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluamVjdGVkU2NyaXB0TWFuYWdlcik7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNjksNyArNzUsNyBAQCBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IEluamVjdGVkU2NyaXB0TWFuYWdlcihJbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKTsKIAog
ICAgIFN0cmluZyBpbmplY3RlZFNjcmlwdFNvdXJjZSgpOwotICAgIFNjcmlwdE9iamVjdCBjcmVh
dGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgSlNDOjpFeGVjU3RhdGUqLCBp
bnQgaWQpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBjcmVhdGVJbmplY3RlZFNjcmlw
dChjb25zdCBTdHJpbmcmIHNvdXJjZSwgSlNDOjpFeGVjU3RhdGUqLCBpbnQgaWQpOwogCiAgICAg
c3RhdGljIGJvb2wgY2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KEpTQzo6RXhlY1N0YXRlKik7CiAg
ICAgc3RhdGljIGJvb2wgY2FuQWNjZXNzSW5zcGVjdGVkV29ya2VyR2xvYmFsU2NvcGUoSlNDOjpF
eGVjU3RhdGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdE1vZHVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRNb2R1bGUuY3BwCmluZGV4IGRiMjA3NzkuLjkyNjhlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcApAQCAtMzYsOCArMzYsMTEg
QEAKIAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCi0jaW5jbHVkZSAi
U2NyaXB0T2JqZWN0LmgiCisjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCisjaW5j
bHVkZSA8YmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmg+CisjaW5jbHVkZSA8YmluZGluZ3Mv
U2NyaXB0T2JqZWN0Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNTQsMTMgKzU3LDEzIEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRNb2R1
bGU6OmVuc3VyZUluamVjdGVkKEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRN
CiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1FOiBNYWtlIHRoZSBJbmplY3RlZFNjcmlw
dCBhIG1vZHVsZSBpdHNlbGYuCi0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVj
dGVkU2NyaXB0LmluamVjdGVkU2NyaXB0T2JqZWN0KCksICJtb2R1bGUiKTsKKyAgICBEZXByZWNh
dGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHQuaW5qZWN0ZWRT
Y3JpcHRPYmplY3QoKSwgIm1vZHVsZSIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9t
QW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChuYW1lKCkpOwogICAgIGJv
b2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgU2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBp
bmplY3RlZFNjcmlwdC5jYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4
Y2VwdGlvbik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBpbmpl
Y3RlZFNjcmlwdC5jYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2Vw
dGlvbik7CiAgICAgQVNTRVJUKCFoYWRFeGNlcHRpb24pOwogICAgIGlmIChoYWRFeGNlcHRpb24g
fHwgcmVzdWx0VmFsdWUuaGFzTm9WYWx1ZSgpIHx8ICFyZXN1bHRWYWx1ZS5pc09iamVjdCgpKSB7
Ci0gICAgICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdC5pbmpl
Y3RlZFNjcmlwdE9iamVjdCgpLCAiaW5qZWN0TW9kdWxlIik7CisgICAgICAgIERlcHJlY2F0ZWQ6
OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdC5pbmplY3RlZFNjcmlw
dE9iamVjdCgpLCAiaW5qZWN0TW9kdWxlIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZy
b21BbnlUaHJlYWQpOwogICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChuYW1lKCkpOwog
ICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChzb3VyY2UoKSk7CiAgICAgICAgIHJlc3Vs
dFZhbHVlID0gaW5qZWN0ZWRTY3JpcHQuY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0
aW9uLCBoYWRFeGNlcHRpb24pOwpAQCAtNzAsNyArNzMsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0
TW9kdWxlOjplbnN1cmVJbmplY3RlZChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2Ny
aXB0TQogICAgICAgICB9CiAgICAgfQogCi0gICAgU2NyaXB0T2JqZWN0IG1vZHVsZU9iamVjdChz
Y3JpcHRTdGF0ZSwgcmVzdWx0VmFsdWUpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBt
b2R1bGVPYmplY3Qoc2NyaXB0U3RhdGUsIHJlc3VsdFZhbHVlKTsKICAgICBpbml0aWFsaXplKG1v
ZHVsZU9iamVjdCwgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0No
ZWNrKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNw
cAppbmRleCBlYTdiNDIwLi4xOTRiNzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBZ2VudC5jcHAKQEAgLTQyLDIzICs0MiwyNCBAQAogI2luY2x1ZGUgIkluc3BlY3Rv
ckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUg
Ikluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5o
IgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJNYWluRnJhbWUu
aCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5j
bHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5o
IgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5o
PgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAordXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbnNwZWN0b3JBZ2VudDo6SW5z
cGVjdG9yQWdlbnQoUGFnZSogcGFnZSwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNj
cmlwdE1hbmFnZXIsIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCi0g
ICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJJbnNwZWN0b3IiKSwgaW5zdHJ1
bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIklu
c3BlY3RvciIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKHBh
Z2UpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIp
CiAgICAgLCBtX2VuYWJsZWQoZmFsc2UpCkBAIC05Myw3ICs5NCw3IEBAIHZvaWQgSW5zcGVjdG9y
QWdlbnQ6OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSogZnJhbWUsIERPTVdyYXBw
ZXJXb3JsZCYKICAgICBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChzY3JpcHRTb3VyY2Uu
dG9TdHJpbmcoKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0
b3JBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9ySW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVyPihmcm9u
dGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKQEAg
LTE1MCw3ICsxNTEsNyBAQCB2b2lkIEluc3BlY3RvckFnZW50OjpzZXRJbmplY3RlZFNjcmlwdEZv
ck9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaQogICAgIG1faW5qZWN0ZWRT
Y3JpcHRGb3JPcmlnaW4uc2V0KG9yaWdpbiwgc291cmNlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JB
Z2VudDo6aW5zcGVjdChQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmpl
Y3Q+IG9iamVjdFRvSW5zcGVjdCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhpbnRzKQor
dm9pZCBJbnNwZWN0b3JBZ2VudDo6aW5zcGVjdChQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gb2JqZWN0VG9JbnNwZWN0LCBQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gaGludHMpCiB7CiAgICAgaWYgKG1fZW5hYmxlZCAmJiBtX2Zyb250
ZW5kRGlzcGF0Y2hlcikgewogICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+aW5zcGVjdChv
YmplY3RUb0luc3BlY3QsIGhpbnRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckFnZW50LmgKaW5kZXggZmI0YmQyNS4uMWNlYTdjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckFnZW50LmgKQEAgLTMwLDExICszMCwxNyBAQAogI2lmbmRlZiBJbnNwZWN0
b3JBZ2VudF9oCiAjZGVmaW5lIEluc3BlY3RvckFnZW50X2gKIAotI2luY2x1ZGUgIkluc3BlY3Rv
ckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgor
I2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAorbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFz
cyBJbnNwZWN0b3JPYmplY3Q7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9N
V3JhcHBlcldvcmxkOwpAQCAtNDIsMTMgKzQ4LDEyIEBAIGNsYXNzIERvY3VtZW50TG9hZGVyOwog
Y2xhc3MgRnJhbWU7CiBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBJbnNwZWN0
b3JJbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXI7Ci1jbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBj
bGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgUGFnZTsKIAogdHlwZWRlZiBTdHJpbmcg
RXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckFnZW50IDogcHVibGljIEluc3BlY3RvckJh
c2VBZ2VudCwgcHVibGljIEluc3BlY3Rvckluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVySGFuZGxl
ciB7CitjbGFzcyBJbnNwZWN0b3JBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1
YmxpYyBJbnNwZWN0b3JJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckFnZW50KTsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc093blB0cjxJbnNwZWN0b3JBZ2VudD4gY3JlYXRlKFBhZ2UqIHBhZ2UsIEluamVjdGVkU2Ny
aXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzKQpAQCAtNjQsNyArNjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBl
bmFibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5k
QmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgdm9pZCBkaWRDbGVhcldpbmRvd09iamVjdEluV29y
bGQoRnJhbWUqLCBET01XcmFwcGVyV29ybGQmKTsKQEAgLTc5LDcgKzg0LDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBzZXRJbmplY3RlZFNjcmlwdEZvck9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdp
biwgY29uc3QgU3RyaW5nJiBzb3VyY2UpOwogCi0gICAgdm9pZCBpbnNwZWN0KFBhc3NSZWZQdHI8
VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gb2JqZWN0VG9JbnNwZWN0LCBQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gaGludHMpOworICAgIHZvaWQgaW5zcGVjdChQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gb2JqZWN0
VG9JbnNwZWN0LCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBoaW50cyk7
CiAKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yQWdlbnQoUGFnZSosIEluamVjdGVkU2NyaXB0TWFu
YWdlciosIEluc3RydW1lbnRpbmdBZ2VudHMqKTsKQEAgLTkwLDcgKzk1LDcgQEAgcHJpdmF0ZToK
ICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogCiAg
ICAgVmVjdG9yPHBhaXI8bG9uZywgU3RyaW5nPj4gbV9wZW5kaW5nRXZhbHVhdGVUZXN0Q29tbWFu
ZHM7Ci0gICAgcGFpcjxSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4s
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+PiBtX3BlbmRpbmdJbnNwZWN0RGF0YTsKKyAgICBwYWly
PFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+PiBtX3BlbmRpbmdJbnNwZWN0RGF0YTsK
ICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX2luamVjdGVkU2NyaXB0Rm9yT3JpZ2luOwog
CiAgICAgYm9vbCBtX2VuYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckFsbEluT25lLmNwcAppbmRleCAyNjNiZGQ5Li41MzAwZDk1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHAKQEAgLTM3LDkgKzM3LDcgQEAK
ICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIgogI2luY2x1ZGUgIkluamVjdGVk
U2NyaXB0TW9kdWxlLmNwcCIKICNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudC5jcHAiCi0jaW5jbHVk
ZSAiSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50LmNwcCIKLSNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ci5jcHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckNhbnZhc0FnZW50LmNwcCIKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQuY3BwIgpAQCAt
NzAsNyArNjgsNiBAQAogI2luY2x1ZGUgIkluc3BlY3RvclN0eWxlU2hlZXQuY3BwIgogI2luY2x1
ZGUgIkluc3BlY3RvclN0eWxlVGV4dEVkaXRvci5jcHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudC5jcHAiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmNwcCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50
cy5jcHAiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50LmNwcAppbmRleCAwNGNjNTNhLi42ZDdkODA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcApA
QCAtMzYsMjEgKzM2LDIzIEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnQuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgot
I2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2Vu
dHMuaCIKICNpbmNsdWRlICJOZXR3b3JrU3RhdGVOb3RpZmllci5oIgogI2luY2x1ZGUgIlBhZ2Uu
aCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0lu
c3BlY3RvclZhbHVlcy5oPgorCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6SW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdB
Z2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KQotICAgIDogSW5zcGVjdG9yQmFz
ZUFnZW50KEFTQ0lJTGl0ZXJhbCgiQXBwbGljYXRpb25DYWNoZSIpLCBpbnN0cnVtZW50aW5nQWdl
bnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiQXBwbGljYXRpb25D
YWNoZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50
KQogewogfQogCi12b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6ZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFu
bmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lk
IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWws
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tl
bmREaXNwYXRjaGVyID0gSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUJhY2tlbmREaXNwYXRjaGVy
OjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpAQCAtOTIsOSArOTQsOSBAQCB2b2lk
IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6bmV0d29ya1N0YXRlQ2hhbmdlZCgpCiAg
ICAgbV9mcm9udGVuZERpc3BhdGNoZXItPm5ldHdvcmtTdGF0ZVVwZGF0ZWQoaXNOb3dPbmxpbmUp
OwogfQogCi12b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0RnJhbWVzV2l0
aE1hbmlmZXN0cyhFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1
aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkZyYW1lV2l0aE1hbmlmZXN0Pj4mIHJlc3VsdCkKK3Zv
aWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpnZXRGcmFtZXNXaXRoTWFuaWZlc3Rz
KEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkZyYW1lV2l0aE1hbmlmZXN0Pj4m
IHJlc3VsdCkKIHsKLSAgICByZXN1bHQgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6
OkFwcGxpY2F0aW9uQ2FjaGU6OkZyYW1lV2l0aE1hbmlmZXN0Pjo6Y3JlYXRlKCk7CisgICAgcmVz
dWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+OjpjcmVhdGUoKTsKIAogICAg
IEZyYW1lKiBtYWluRnJhbWUgPSBtX3BhZ2VBZ2VudC0+bWFpbkZyYW1lKCk7CiAgICAgZm9yIChG
cmFtZSogZnJhbWUgPSBtYWluRnJhbWU7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJh
dmVyc2VOZXh0KG1haW5GcmFtZSkpIHsKQEAgLTEwNiw3ICsxMDgsNyBAQCB2b2lkIEluc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0RnJhbWVzV2l0aE1hbmlmZXN0cyhFcnJvclN0cmlu
ZyosIFJlZlB0cgogICAgICAgICBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Q2FjaGVJbmZvIGluZm8g
PSBob3N0LT5hcHBsaWNhdGlvbkNhY2hlSW5mbygpOwogICAgICAgICBTdHJpbmcgbWFuaWZlc3RV
UkwgPSBpbmZvLm1fbWFuaWZlc3Quc3RyaW5nKCk7CiAgICAgICAgIGlmICghbWFuaWZlc3RVUkwu
aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9u
Q2FjaGU6OkZyYW1lV2l0aE1hbmlmZXN0PiB2YWx1ZSA9IFR5cGVCdWlsZGVyOjpBcHBsaWNhdGlv
bkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVzdDo6Y3JlYXRlKCkKKyAgICAgICAgICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVz
dD4gdmFsdWUgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFt
ZVdpdGhNYW5pZmVzdDo6Y3JlYXRlKCkKICAgICAgICAgICAgICAgICAuc2V0RnJhbWVJZChtX3Bh
Z2VBZ2VudC0+ZnJhbWVJZChmcmFtZSkpCiAgICAgICAgICAgICAgICAgLnNldE1hbmlmZXN0VVJM
KG1hbmlmZXN0VVJMKQogICAgICAgICAgICAgICAgIC5zZXRTdGF0dXMoc3RhdGljX2Nhc3Q8aW50
Pihob3N0LT5zdGF0dXMoKSkpOwpAQCAtMTM0LDcgKzEzNiw3IEBAIHZvaWQgSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50OjpnZXRNYW5pZmVzdEZvckZyYW1lKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluCiAgICAgKm1hbmlmZXN0VVJMID0gaW5mby5tX21hbmlmZXN0LnN0cmluZygpOwogfQog
Ci12b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0QXBwbGljYXRpb25DYWNo
ZUZvckZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZUlk
LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU+
JiBhcHBsaWNhdGlvbkNhY2hlKQordm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6
OmdldEFwcGxpY2F0aW9uQ2FjaGVGb3JGcmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNv
bnN0IFN0cmluZyYgZnJhbWVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxp
Y2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU+JiBhcHBsaWNhdGlvbkNhY2hlKQogewogICAg
IERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGFzc2VydEZyYW1lV2l0aERvY3VtZW50
TG9hZGVyKGVycm9yU3RyaW5nLCBmcmFtZUlkKTsKICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQpA
QCAtMTQ5LDkgKzE1MSw5IEBAIHZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Ojpn
ZXRBcHBsaWNhdGlvbkNhY2hlRm9yRnJhbWUoRXJyb3JTdHJpbmcqIGVyCiAgICAgYXBwbGljYXRp
b25DYWNoZSA9IGJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZShyZXNvdXJjZXMsIGluZm8p
OwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNh
dGlvbkNhY2hlPiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9y
QXBwbGljYXRpb25DYWNoZShjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZv
TGlzdCYgYXBwbGljYXRpb25DYWNoZVJlc291cmNlcywgY29uc3QgQXBwbGljYXRpb25DYWNoZUhv
c3Q6OkNhY2hlSW5mbyYgYXBwbGljYXRpb25DYWNoZUluZm8pCitQYXNzUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU+IEluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6YnVpbGRPYmplY3RGb3JBcHBsaWNhdGlvbkNhY2hl
KGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm9MaXN0JiBhcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VzLCBjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Q2FjaGVJbmZvJiBh
cHBsaWNhdGlvbkNhY2hlSW5mbykKIHsKLSAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OkFwcGxpY2F0
aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU6OmNyZWF0ZSgpCisgICAgcmV0dXJuIEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU6OmNyZWF0
ZSgpCiAgICAgICAgIC5zZXRNYW5pZmVzdFVSTChhcHBsaWNhdGlvbkNhY2hlSW5mby5tX21hbmlm
ZXN0LnN0cmluZygpKQogICAgICAgICAuc2V0U2l6ZShhcHBsaWNhdGlvbkNhY2hlSW5mby5tX3Np
emUpCiAgICAgICAgIC5zZXRDcmVhdGlvblRpbWUoYXBwbGljYXRpb25DYWNoZUluZm8ubV9jcmVh
dGlvblRpbWUpCkBAIC0xNjAsOSArMTYyLDkgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXBw
bGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZT4gSW5zcGVjdG9yQXBwbGljYXRpb24KICAg
ICAgICAgLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlw
ZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4+IElu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6YnVpbGRBcnJheUZvckFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZXMoY29uc3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mb0xpc3Qm
IGFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4+IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6
YnVpbGRBcnJheUZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMoY29uc3QgQXBwbGljYXRpb25D
YWNoZUhvc3Q6OlJlc291cmNlSW5mb0xpc3QmIGFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMpCiB7
Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25D
YWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlPj4gcmVzb3VyY2VzID0gVHlwZUJ1aWxkZXI6
OkFycmF5PFR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25D
YWNoZVJlc291cmNlPj4gcmVzb3VyY2VzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNo
ZVJlc291cmNlPjo6Y3JlYXRlKCk7CiAKICAgICBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3Vy
Y2VJbmZvTGlzdDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gYXBwbGljYXRpb25DYWNoZVJlc291cmNl
cy5lbmQoKTsKICAgICBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvTGlzdDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBhcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzLmJlZ2luKCk7CkBAIC0x
NzIsNyArMTc0LDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6
OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXMKICAgICByZXR1cm4gcmVzb3Vy
Y2VzOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2U+IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6YnVp
bGRPYmplY3RGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoY29uc3QgQXBwbGljYXRpb25DYWNo
ZUhvc3Q6OlJlc291cmNlSW5mbyYgcmVzb3VyY2VJbmZvKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+
IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6YnVpbGRPYmplY3RGb3JBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UoY29uc3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mbyYg
cmVzb3VyY2VJbmZvKQogewogICAgIFN0cmluZyB0eXBlczsKICAgICBpZiAocmVzb3VyY2VJbmZv
Lm1faXNNYXN0ZXIpCkBAIC0xOTAsNyArMTkyLDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6
QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBJbnNwZWN0b3JBcHAK
ICAgICBpZiAocmVzb3VyY2VJbmZvLm1faXNFeHBsaWNpdCkKICAgICAgICAgdHlwZXMuYXBwZW5k
KCJFeHBsaWNpdCAiKTsKIAotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNo
ZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiB2YWx1ZSA9IFR5cGVCdWlsZGVyOjpBcHBsaWNh
dGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZSgpCisgICAgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZT4gdmFsdWUgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNh
Y2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRVcmwo
cmVzb3VyY2VJbmZvLm1fcmVzb3VyY2Uuc3RyaW5nKCkpCiAgICAgICAgIC5zZXRTaXplKHN0YXRp
Y19jYXN0PGludD4ocmVzb3VyY2VJbmZvLm1fc2l6ZSkpCiAgICAgICAgIC5zZXRUeXBlKHR5cGVz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQuaAppbmRleCBlYjA2YzhmLi44MjExYTM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudC5oCkBAIC0yOCwyNyArMjgsMzAgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCiAjaW5j
bHVkZSAiQXBwbGljYXRpb25DYWNoZUhvc3QuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdl
bnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JGcm9udGVuZC5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5o
IgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworY2xh
c3MgSW5zcGVjdG9yVmFsdWU7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRnJh
bWU7Ci1jbGFzcyBJbnNwZWN0b3JBcnJheTsKIGNsYXNzIEluc3BlY3RvckFnZW50OwogY2xhc3Mg
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUZyb250ZW5kRGlzcGF0Y2hlcjsKLWNsYXNzIEluc3Bl
Y3Rvck9iamVjdDsKIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKLWNsYXNzIEluc3BlY3RvclZh
bHVlOwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBSZXNv
dXJjZVJlc3BvbnNlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwg
cHVibGljIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIg
eworY2xhc3MgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50IDogcHVibGljIEluc3BlY3Rv
ckFnZW50QmFzZSwgcHVibGljIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0
YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudD4gY3JlYXRlKElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2Vu
dCogcGFnZUFnZW50KQpAQCAtNTcsMjUgKzYwLDIyIEBAIHB1YmxpYzoKICAgICB9CiAgICAgfklu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCgpIHsgfQogCi0gICAgLy8gSW5zcGVjdG9yQmFz
ZUFnZW50Ci0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJv
bnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKLSAgICAvLyBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24gQVBJCiAgICAgdm9pZCB1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzKEZyYW1lKik7
CiAgICAgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKCk7CiAKLSAgICAvLyBBcHBsaWNhdGlvbkNh
Y2hlIEFQSSBmb3IgSW5zcGVjdG9yRnJvbnRlbmQKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVy
cm9yU3RyaW5nKik7Ci0gICAgdmlydHVhbCB2b2lkIGdldEZyYW1lc1dpdGhNYW5pZmVzdHMoRXJy
b3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpBcHBsaWNh
dGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVzdD4+JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9p
ZCBnZXRGcmFtZXNXaXRoTWFuaWZlc3RzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2Fj
aGU6OkZyYW1lV2l0aE1hbmlmZXN0Pj4mIHJlc3VsdCk7CiAgICAgdmlydHVhbCB2b2lkIGdldE1h
bmlmZXN0Rm9yRnJhbWUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIFN0cmlu
ZyogbWFuaWZlc3RVUkwpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRBcHBsaWNhdGlvbkNhY2hlRm9y
RnJhbWUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIFJlZlB0cjxUeXBlQnVp
bGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZT4mKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZ2V0QXBwbGljYXRpb25DYWNoZUZvckZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3Ry
aW5nJiBmcmFtZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25D
YWNoZTo6QXBwbGljYXRpb25DYWNoZT4mKTsKIAogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclBhZ2VBZ2Vu
dCopOwotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxp
Y2F0aW9uQ2FjaGU+IGJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZShjb25zdCBBcHBsaWNh
dGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvTGlzdCYsIGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjpDYWNoZUluZm8mKTsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBl
QnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlPj4gYnVp
bGRBcnJheUZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMoY29uc3QgQXBwbGljYXRpb25DYWNo
ZUhvc3Q6OlJlc291cmNlSW5mb0xpc3QmKTsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpB
cHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IGJ1aWxkT2JqZWN0Rm9y
QXBwbGljYXRpb25DYWNoZVJlc291cmNlKGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNv
dXJjZUluZm8mKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxp
Y2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU+IGJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25D
YWNoZShjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvTGlzdCYsIGNvbnN0
IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpDYWNoZUluZm8mKTsKKyAgICBQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0
aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4+IGJ1aWxkQXJyYXlGb3JBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VzKGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUlu
Zm9MaXN0Jik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBsaWNh
dGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IGJ1aWxkT2JqZWN0Rm9yQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUlu
Zm8mKTsKIAogICAgIERvY3VtZW50TG9hZGVyKiBhc3NlcnRGcmFtZVdpdGhEb2N1bWVudExvYWRl
cihFcnJvclN0cmluZyosIFN0cmluZyBmcmFtZUlkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggYmIxN2M2NS4uODNjNDIzNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC00
Myw4ICs0Myw3IEBACiAjaW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVudC5oIgogI2luY2x1ZGUgIklu
c3BlY3RvckRPTUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySGlzdG9yeS5oIgotI2luY2x1
ZGUgIkluc3BlY3RvclR5cGVCdWlsZGVyLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgi
CisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1
bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIk5hbWVkRmxvd0NvbGxlY3Rpb24uaCIKICNpbmNs
dWRlICJOb2RlLmgiCkBAIC01Nyw3ICs1Niw3IEBACiAjaW5jbHVkZSAiU3R5bGVSdWxlLmgiCiAj
aW5jbHVkZSAiU3R5bGVTaGVldExpc3QuaCIKICNpbmNsdWRlICJXZWJLaXROYW1lZEZsb3cuaCIK
LQorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYv
Q3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KQEAgLTY1LDYgKzY0LDggQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAordXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIEZvcmNlUHNldWRvQ2xh
c3NGbGFncyB7CkBAIC0xMTcsNyArMTE4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRTZWxl
Y3Rvcihjb25zdCBDU1NTdHlsZVJ1bGUqKTsKICAgICB2b2lkIGNvbW1pdFNlbGVjdG9yKGJvb2wp
OwogICAgIHZvaWQgY29tbWl0U2VsZWN0b3JUaW1lKCk7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+IHRvSW5zcGVjdG9yT2JqZWN0KCkgY29uc3Q7Cisg
ICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmls
ZT4gdG9JbnNwZWN0b3JPYmplY3QoKSBjb25zdDsKIAogcHJpdmF0ZToKIApAQCAtMjA1LDExICsy
MDYsMTEgQEAgaW5saW5lIHZvaWQgU2VsZWN0b3JQcm9maWxlOjpjb21taXRTZWxlY3RvclRpbWUo
KQogICAgIGl0LT52YWx1ZS50b3RhbFRpbWUgKz0gcHJvY2Vzc2luZ1RpbWVNUzsKIH0KIAotUGFz
c1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+IFNlbGVjdG9yUHJvZmls
ZTo6dG9JbnNwZWN0b3JPYmplY3QoKSBjb25zdAorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZT4gU2VsZWN0b3JQcm9maWxlOjp0b0luc3BlY3Rv
ck9iamVjdCgpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVp
bGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGVFbnRyeT4+IHNlbGVjdG9yUHJvZmlsZURhdGEgPSBU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlRW50cnk+
OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGVFbnRyeT4+IHNlbGVjdG9y
UHJvZmlsZURhdGEgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZUVudHJ5Pjo6Y3JlYXRlKCk7CiAgICAgZm9y
IChSdWxlTWF0Y2hpbmdTdGF0c01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3J1bGVNYXRjaGlu
Z1N0YXRzLmJlZ2luKCk7IGl0ICE9IG1fcnVsZU1hdGNoaW5nU3RhdHMuZW5kKCk7ICsraXQpIHsK
LSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZUVudHJ5PiBl
bnRyeSA9IFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZUVudHJ5OjpjcmVhdGUoKQor
ICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2Zp
bGVFbnRyeT4gZW50cnkgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJv
ZmlsZUVudHJ5OjpjcmVhdGUoKQogICAgICAgICAgICAgLnNldFNlbGVjdG9yKGl0LT52YWx1ZS5z
ZWxlY3RvcikKICAgICAgICAgICAgIC5zZXRVcmwoaXQtPnZhbHVlLnVybCkKICAgICAgICAgICAg
IC5zZXRMaW5lTnVtYmVyKGl0LT52YWx1ZS5saW5lTnVtYmVyKQpAQCAtMjE5LDcgKzIyMCw3IEBA
IFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlPiBTZWxlY3RvclBy
b2ZpbGU6OnRvSW5zcGVjdG9yT2JqZWN0CiAgICAgICAgIHNlbGVjdG9yUHJvZmlsZURhdGEtPmFk
ZEl0ZW0oZW50cnkucmVsZWFzZSgpKTsKICAgICB9CiAKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkNTUzo6U2VsZWN0b3JQcm9maWxlPiByZXN1bHQgPSBUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3Rv
clByb2ZpbGU6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNT
Uzo6U2VsZWN0b3JQcm9maWxlPiByZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
OlNlbGVjdG9yUHJvZmlsZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldFRvdGFsVGltZSh0b3RhbE1h
dGNoaW5nVGltZU1zKCkpCiAgICAgICAgIC5zZXREYXRhKHNlbGVjdG9yUHJvZmlsZURhdGEpOwog
ICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwpAQCAtNjE2LDcgKzYxNyw3IEBAIENTU1N0eWxl
UnVsZSogSW5zcGVjdG9yQ1NTQWdlbnQ6OmFzQ1NTU3R5bGVSdWxlKENTU1J1bGUqIHJ1bGUpCiB9
CiAKIEluc3BlY3RvckNTU0FnZW50OjpJbnNwZWN0b3JDU1NBZ2VudChJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQpCi0g
ICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJDU1MiKSwgaW5zdHJ1bWVudGlu
Z0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkNTUyIpLCBp
bnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9kb21BZ2VudChkb21BZ2VudCkKICAgICAsIG1f
bGFzdFN0eWxlU2hlZXRJZCgxKQogewpAQCAtNjI5LDcgKzYzMCw3IEBAIEluc3BlY3RvckNTU0Fn
ZW50Ojp+SW5zcGVjdG9yQ1NTQWdlbnQoKQogICAgIHJlc2V0KCk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJh
Y2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVu
ZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikK
IHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
Q1NTRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERp
c3BhdGNoZXIgPSBJbnNwZWN0b3JDU1NCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmRE
aXNwYXRjaGVyLCB0aGlzKTsKQEAgLTgxMCw3ICs4MTEsNyBAQCBib29sIEluc3BlY3RvckNTU0Fn
ZW50Ojpmb3JjZVBzZXVkb1N0YXRlKEVsZW1lbnQqIGVsZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1
ZG9UeQogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxl
c0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBib29s
KiBpbmNsdWRlUHNldWRvLCBjb25zdCBib29sKiBpbmNsdWRlSW5oZXJpdGVkLCBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRjaD4+JiBtYXRjaGVkQ1NT
UnVsZXMsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6UHNldWRv
SWRNYXRjaGVzPj4mIHBzZXVkb0lkTWF0Y2hlcywgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxU
eXBlQnVpbGRlcjo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5Pj4mIGluaGVyaXRlZEVudHJpZXMp
Cit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0
cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IGJvb2wqIGluY2x1ZGVQc2V1ZG8s
IGNvbnN0IGJvb2wqIGluY2x1ZGVJbmhlcml0ZWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRjaD4+JiBtYXRj
aGVkQ1NTUnVsZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz4+JiBwc2V1ZG9JZE1hdGNoZXMs
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+PiYgaW5oZXJpdGVkRW50cmllcykKIHsKICAg
ICBFbGVtZW50KiBlbGVtZW50ID0gZWxlbWVudEZvcklkKGVycm9yU3RyaW5nLCBub2RlSWQpOwog
ICAgIGlmICghZWxlbWVudCkKQEAgLTgyMywxMSArODI0LDExIEBAIHZvaWQgSW5zcGVjdG9yQ1NT
QWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
aW50IG5vCiAKICAgICAvLyBQc2V1ZG8gZWxlbWVudHMuCiAgICAgaWYgKCFpbmNsdWRlUHNldWRv
IHx8ICppbmNsdWRlUHNldWRvKSB7Ci0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8
VHlwZUJ1aWxkZXI6OkNTUzo6UHNldWRvSWRNYXRjaGVzPj4gcHNldWRvRWxlbWVudHMgPSBUeXBl
QnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6UHNldWRvSWRNYXRjaGVzPjo6Y3JlYXRl
KCk7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz4+IHBzZXVkb0VsZW1lbnRzID0g
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpQc2V1ZG9JZE1hdGNoZXM+OjpjcmVhdGUoKTsKICAgICAgICAgZm9yIChQc2V1ZG9JZCBwc2V1
ZG9JZCA9IEZJUlNUX1BVQkxJQ19QU0VVRE9JRDsgcHNldWRvSWQgPCBBRlRFUl9MQVNUX0lOVEVS
TkFMX1BTRVVET0lEOyBwc2V1ZG9JZCA9IHN0YXRpY19jYXN0PFBzZXVkb0lkPihwc2V1ZG9JZCAr
IDEpKSB7CiAgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiBtYXRjaGVk
UnVsZXMgPSBzdHlsZVJlc29sdmVyLnBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KGVsZW1lbnQs
IHBzZXVkb0lkLCBTdHlsZVJlc29sdmVyOjpBbGxDU1NSdWxlcyk7CiAgICAgICAgICAgICBpZiAo
IW1hdGNoZWRSdWxlcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkNTUzo6UHNldWRvSWRNYXRjaGVzPiBtYXRjaGVzID0gVHlwZUJ1aWxkZXI6OkNTUzo6
UHNldWRvSWRNYXRjaGVzOjpjcmVhdGUoKQorICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz4gbWF0Y2hlcyA9IEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNTUzo6UHNldWRvSWRNYXRjaGVzOjpjcmVhdGUoKQogICAgICAgICAg
ICAgICAgICAgICAuc2V0UHNldWRvSWQoc3RhdGljX2Nhc3Q8aW50Pihwc2V1ZG9JZCkpCiAgICAg
ICAgICAgICAgICAgICAgIC5zZXRNYXRjaGVzKGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3Qo
bWF0Y2hlZFJ1bGVzLCBzdHlsZVJlc29sdmVyLCBlbGVtZW50KSk7CiAgICAgICAgICAgICAgICAg
cHNldWRvRWxlbWVudHMtPmFkZEl0ZW0obWF0Y2hlcy5yZWxlYXNlKCkpOwpAQCAtODM5LDEyICs4
NDAsMTIgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm8KIAogICAgIC8vIEluaGVyaXRlZCBzdHls
ZXMuCiAgICAgaWYgKCFpbmNsdWRlSW5oZXJpdGVkIHx8ICppbmNsdWRlSW5oZXJpdGVkKSB7Ci0g
ICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6SW5oZXJp
dGVkU3R5bGVFbnRyeT4+IGVudHJpZXMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6
OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT46OmNyZWF0ZSgpOworICAgICAgICBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpJ
bmhlcml0ZWRTdHlsZUVudHJ5Pj4gZW50cmllcyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFy
cmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT46OmNy
ZWF0ZSgpOwogICAgICAgICBFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVudC0+cGFyZW50
RWxlbWVudCgpOwogICAgICAgICB3aGlsZSAocGFyZW50RWxlbWVudCkgewogICAgICAgICAgICAg
U3R5bGVSZXNvbHZlciYgcGFyZW50U3R5bGVSZXNvbHZlciA9IHBhcmVudEVsZW1lbnQtPmRvY3Vt
ZW50KCkuZW5zdXJlU3R5bGVSZXNvbHZlcigpOwogICAgICAgICAgICAgVmVjdG9yPFJlZlB0cjxT
dHlsZVJ1bGVCYXNlPj4gcGFyZW50TWF0Y2hlZFJ1bGVzID0gcGFyZW50U3R5bGVSZXNvbHZlci5z
dHlsZVJ1bGVzRm9yRWxlbWVudChwYXJlbnRFbGVtZW50LCBTdHlsZVJlc29sdmVyOjpBbGxDU1NS
dWxlcyk7Ci0gICAgICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6SW5oZXJpdGVkU3R5
bGVFbnRyeT4gZW50cnkgPSBUeXBlQnVpbGRlcjo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5Ojpj
cmVhdGUoKQorICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6
SW5oZXJpdGVkU3R5bGVFbnRyeT4gZW50cnkgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
OkluaGVyaXRlZFN0eWxlRW50cnk6OmNyZWF0ZSgpCiAgICAgICAgICAgICAgICAgLnNldE1hdGNo
ZWRDU1NSdWxlcyhidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KHBhcmVudE1hdGNoZWRSdWxl
cywgc3R5bGVSZXNvbHZlciwgcGFyZW50RWxlbWVudCkpOwogICAgICAgICAgICAgaWYgKHBhcmVu
dEVsZW1lbnQtPnN0eWxlKCkgJiYgcGFyZW50RWxlbWVudC0+c3R5bGUoKS0+bGVuZ3RoKCkpIHsK
ICAgICAgICAgICAgICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUqIHN0eWxl
U2hlZXQgPSBhc0luc3BlY3RvclN0eWxlU2hlZXQocGFyZW50RWxlbWVudCk7CkBAIC04NjAsNyAr
ODYxLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm8KICAgICB9CiB9CiAKLXZvaWQgSW5zcGVj
dG9yQ1NTQWdlbnQ6OmdldElubGluZVN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiBpbmxp
bmVTdHlsZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgYXR0cmlidXRlc1N0
eWxlKQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0SW5saW5lU3R5bGVzRm9yTm9kZShFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgaW5saW5lU3R5bGUsIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgYXR0cmlidXRlc1N0eWxlKQogewogICAgIEVsZW1l
bnQqIGVsZW1lbnQgPSBlbGVtZW50Rm9ySWQoZXJyb3JTdHJpbmcsIG5vZGVJZCk7CiAgICAgaWYg
KCFlbGVtZW50KQpAQCAtODcxLDExICs4NzIsMTEgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6
Z2V0SW5saW5lU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2QK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaW5saW5lU3R5bGUgPSBzdHlsZVNoZWV0LT5idWlsZE9i
amVjdEZvclN0eWxlKGVsZW1lbnQtPnN0eWxlKCkpOwotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NTdHlsZT4gYXR0cmlidXRlcyA9IGJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRlc1N0eWxl
KGVsZW1lbnQpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0
eWxlPiBhdHRyaWJ1dGVzID0gYnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5bGUoZWxlbWVudCk7
CiAgICAgYXR0cmlidXRlc1N0eWxlID0gYXR0cmlidXRlcyA/IGF0dHJpYnV0ZXMucmVsZWFzZSgp
IDogMDsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0Q29tcHV0ZWRTdHlsZUZvck5v
ZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+JiBz
dHlsZSkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTQ29tcHV0ZWRT
dHlsZVByb3BlcnR5Pj4mIHN0eWxlKQogewogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBlbGVtZW50
Rm9ySWQoZXJyb3JTdHJpbmcsIG5vZGVJZCk7CiAgICAgaWYgKCFlbGVtZW50KQpAQCAtODg2LDkg
Kzg4Nyw5IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldENvbXB1dGVkU3R5bGVGb3JOb2Rl
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vCiAgICAgc3R5bGUgPSBpbnNwZWN0b3JT
dHlsZS0+YnVpbGRBcnJheUZvckNvbXB1dGVkU3R5bGUoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JD
U1NBZ2VudDo6Z2V0QWxsU3R5bGVTaGVldHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+PiYgc3R5bGVJ
bmZvcykKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldEFsbFN0eWxlU2hlZXRzKEVycm9yU3Ry
aW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4+JiBzdHlsZUluZm9zKQogewotICAg
IHN0eWxlSW5mb3MgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5
bGVTaGVldEhlYWRlcj46OmNyZWF0ZSgpOworICAgIHN0eWxlSW5mb3MgPSBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hl
ZXRIZWFkZXI+OjpjcmVhdGUoKTsKICAgICBWZWN0b3I8RG9jdW1lbnQqPiBkb2N1bWVudHMgPSBt
X2RvbUFnZW50LT5kb2N1bWVudHMoKTsKICAgICBmb3IgKFZlY3RvcjxEb2N1bWVudCo+OjppdGVy
YXRvciBpdCA9IGRvY3VtZW50cy5iZWdpbigpOyBpdCAhPSBkb2N1bWVudHMuZW5kKCk7ICsraXQp
IHsKICAgICAgICAgU3R5bGVTaGVldExpc3QqIGxpc3QgPSAoKml0KS0+c3R5bGVTaGVldHMoKTsK
QEAgLTkwMCw3ICs5MDEsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRBbGxTdHlsZVNo
ZWV0cyhFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYQogICAgIH0KIH0KIAot
dm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3R5bGVTaGVldChFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTU3R5bGVTaGVldEJvZHk+JiBzdHlsZVNoZWV0T2JqZWN0KQordm9pZCBJbnNwZWN0b3JD
U1NBZ2VudDo6Z2V0U3R5bGVTaGVldChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZyYgc3R5bGVTaGVldElkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NTdHlsZVNoZWV0Qm9keT4mIHN0eWxlU2hlZXRPYmplY3QpCiB7CiAgICAgSW5zcGVjdG9yU3R5
bGVTaGVldCogaW5zcGVjdG9yU3R5bGVTaGVldCA9IGFzc2VydFN0eWxlU2hlZXRGb3JJZChlcnJv
clN0cmluZywgc3R5bGVTaGVldElkKTsKICAgICBpZiAoIWluc3BlY3RvclN0eWxlU2hlZXQpCkBA
IC05MjksNyArOTMwLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVTaGVldFRl
eHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcKICAgICAqZXJyb3JTdHJp
bmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhlYyk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlVGV4dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBmdWxsU3R5bGVJZCwgY29uc3QgU3RyaW5nJiB0
ZXh0LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpCit2b2lkIElu
c3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVRleHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgZnVsbFN0eWxlSWQsIGNvbnN0IFN0cmluZyYg
dGV4dCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiByZXN1
bHQpCiB7CiAgICAgSW5zcGVjdG9yQ1NTSWQgY29tcG91bmRJZChmdWxsU3R5bGVJZCk7CiAgICAg
QVNTRVJUKCFjb21wb3VuZElkLmlzRW1wdHkoKSk7CkBAIC05NDUsNyArOTQ2LDcgQEAgdm9pZCBJ
bnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVUZXh0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
Y29uc3QgUmVmUHRyPEluc3AKICAgICAqZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6
dG9FcnJvclN0cmluZyhlYyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFByb3Bl
cnR5VGV4dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+JiBmdWxsU3R5bGVJZCwgaW50IHByb3BlcnR5SW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4
dCwgYm9vbCBvdmVyd3JpdGUsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4mIHJl
c3VsdCkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFByb3BlcnR5VGV4dChFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBmdWxsU3R5bGVJ
ZCwgaW50IHByb3BlcnR5SW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBvdmVyd3JpdGUs
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KQog
ewogICAgIEluc3BlY3RvckNTU0lkIGNvbXBvdW5kSWQoZnVsbFN0eWxlSWQpOwogICAgIEFTU0VS
VCghY29tcG91bmRJZC5pc0VtcHR5KCkpOwpAQCAtOTYxLDcgKzk2Miw3IEBAIHZvaWQgSW5zcGVj
dG9yQ1NTQWdlbnQ6OnNldFByb3BlcnR5VGV4dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNv
bnN0IFJlZlB0cjxJCiAgICAgKmVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJy
b3JTdHJpbmcoZWMpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50Ojp0b2dnbGVQcm9wZXJ0
eShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
JiBmdWxsU3R5bGVJZCwgaW50IHByb3BlcnR5SW5kZXgsIGJvb2wgZGlzYWJsZSwgUmVmUHRyPFR5
cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JDU1NBZ2Vu
dDo6dG9nZ2xlUHJvcGVydHkoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiYgZnVsbFN0eWxlSWQsIGludCBwcm9wZXJ0eUluZGV4LCBib29sIGRp
c2FibGUsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgcmVz
dWx0KQogewogICAgIEluc3BlY3RvckNTU0lkIGNvbXBvdW5kSWQoZnVsbFN0eWxlSWQpOwogICAg
IEFTU0VSVCghY29tcG91bmRJZC5pc0VtcHR5KCkpOwpAQCAtOTc3LDcgKzk3OCw3IEBAIHZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OnRvZ2dsZVByb3BlcnR5KEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgY29uc3QgUmVmUHRyPEluCiAgICAgKmVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6
OnRvRXJyb3JTdHJpbmcoZWMpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRSdWxl
U2VsZWN0b3IoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiYgZnVsbFJ1bGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPFR5cGVC
dWlsZGVyOjpDU1M6OkNTU1J1bGU+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvckNTU0FnZW50Ojpz
ZXRSdWxlU2VsZWN0b3IoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiYgZnVsbFJ1bGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCkKIHsKICAgICBJ
bnNwZWN0b3JDU1NJZCBjb21wb3VuZElkKGZ1bGxSdWxlSWQpOwogICAgIEFTU0VSVCghY29tcG91
bmRJZC5pc0VtcHR5KCkpOwpAQCAtOTk0LDcgKzk5NSw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdl
bnQ6OnNldFJ1bGVTZWxlY3RvcihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0
cjxJCiAgICAgKmVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmco
ZWMpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjphZGRSdWxlKEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgY29uc3QgaW50IGNvbnRleHROb2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0
b3IsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KQordm9pZCBJbnNw
ZWN0b3JDU1NBZ2VudDo6YWRkUnVsZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IGlu
dCBjb250ZXh0Tm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KQogewogICAgIE5vZGUqIG5vZGUg
PSBtX2RvbUFnZW50LT5hc3NlcnROb2RlKGVycm9yU3RyaW5nLCBjb250ZXh0Tm9kZUlkKTsKICAg
ICBpZiAoIW5vZGUpCkBAIC0xMDIwLDEyICsxMDIxLDEyIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdl
bnQ6OmFkZFJ1bGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBpbnQgY29udGV4dE5v
ZGVJCiAgICAgcmVzdWx0ID0gaW5zcGVjdG9yU3R5bGVTaGVldC0+YnVpbGRPYmplY3RGb3JSdWxl
KHJ1bGUpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRTdXBwb3J0ZWRDU1NQcm9w
ZXJ0aWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+PiYgY3NzUHJvcGVydGllcykKK3ZvaWQgSW5zcGVjdG9y
Q1NTQWdlbnQ6OmdldFN1cHBvcnRlZENTU1Byb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NQcm9wZXJ0eUluZm8+PiYgY3NzUHJvcGVydGllcykKIHsKLSAgICBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5SW5mbz4+IHByb3BlcnRp
ZXMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHlJbmZv
Pjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHlJbmZvPj4gcHJvcGVydGllcyA9
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTUHJvcGVydHlJbmZvPjo6Y3JlYXRlKCk7CiAgICAgZm9yIChpbnQgaSA9IGZpcnN0Q1NT
UHJvcGVydHk7IGkgPD0gbGFzdENTU1Byb3BlcnR5OyArK2kpIHsKICAgICAgICAgQ1NTUHJvcGVy
dHlJRCBpZCA9IGNvbnZlcnRUb0NTU1Byb3BlcnR5SUQoaSk7Ci0gICAgICAgIFJlZlB0cjxUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+IHByb3BlcnR5ID0gVHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTUHJvcGVydHlJbmZvOjpjcmVhdGUoKQorICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+IHByb3BlcnR5ID0gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eUluZm86OmNyZWF0ZSgpCiAgICAgICAgICAgICAu
c2V0TmFtZShnZXRQcm9wZXJ0eU5hbWVTdHJpbmcoaWQpKTsKIAogICAgICAgICBjb25zdCBTdHls
ZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQgPSBzaG9ydGhhbmRGb3JQcm9wZXJ0eShpZCk7
CkBAIC0xMDMzLDcgKzEwMzQsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRTdXBwb3J0
ZWRDU1NQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZAogICAgICAgICAg
ICAgcHJvcGVydGllcy0+YWRkSXRlbShwcm9wZXJ0eS5yZWxlYXNlKCkpOwogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxT
dHJpbmc+PiBsb25naGFuZHMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7
CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBs
b25naGFuZHMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUo
KTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHNob3J0aGFuZC5sZW5ndGgoKTsg
KytqKSB7CiAgICAgICAgICAgICBDU1NQcm9wZXJ0eUlEIGxvbmdoYW5kSUQgPSBzaG9ydGhhbmQu
cHJvcGVydGllcygpW2pdOwogICAgICAgICAgICAgbG9uZ2hhbmRzLT5hZGRJdGVtKGdldFByb3Bl
cnR5TmFtZVN0cmluZyhsb25naGFuZElEKSk7CkBAIC0xMDY0LDcgKzEwNjUsNyBAQCB2b2lkIElu
c3BlY3RvckNTU0FnZW50Ojpmb3JjZVBzZXVkb1N0YXRlKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgaW50IG5vZGVJZCwgYwogICAgIGVsZW1lbnQtPmRvY3VtZW50KCkuc3R5bGVSZXNvbHZlckNo
YW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdl
bnQ6OmdldE5hbWVkRmxvd0NvbGxlY3Rpb24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQg
ZG9jdW1lbnROb2RlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNT
Uzo6TmFtZWRGbG93Pj4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE5hbWVk
Rmxvd0NvbGxlY3Rpb24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgZG9jdW1lbnROb2Rl
SWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4+JiByZXN1bHQpCiB7CiAgICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gbV9kb21BZ2VudC0+YXNzZXJ0RG9jdW1lbnQoZXJyb3JTdHJpbmcsIGRvY3VtZW50Tm9k
ZUlkKTsKICAgICBpZiAoIWRvY3VtZW50KQpAQCAtMTA3Myw3ICsxMDc0LDcgQEAgdm9pZCBJbnNw
ZWN0b3JDU1NBZ2VudDo6Z2V0TmFtZWRGbG93Q29sbGVjdGlvbihFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGludCBkb2MKICAgICBtX25hbWVkRmxvd0NvbGxlY3Rpb25zUmVxdWVzdGVkLmFkZChk
b2N1bWVudE5vZGVJZCk7CiAKICAgICBWZWN0b3I8UmVmUHRyPFdlYktpdE5hbWVkRmxvdz4+IG5h
bWVkRmxvd3NWZWN0b3IgPSBkb2N1bWVudC0+bmFtZWRGbG93cygpLT5uYW1lZEZsb3dzKCk7Ci0g
ICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+
PiBuYW1lZEZsb3dzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVk
Rmxvdz46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJh
eTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4+IG5hbWVkRmxvd3MgPSBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
Ok5hbWVkRmxvdz46OmNyZWF0ZSgpOwogCiAgICAgZm9yIChWZWN0b3I8UmVmUHRyPFdlYktpdE5h
bWVkRmxvdz4+OjppdGVyYXRvciBpdCA9IG5hbWVkRmxvd3NWZWN0b3IuYmVnaW4oKTsgaXQgIT0g
bmFtZWRGbG93c1ZlY3Rvci5lbmQoKTsgKytpdCkKICAgICAgICAgbmFtZWRGbG93cy0+YWRkSXRl
bShidWlsZE9iamVjdEZvck5hbWVkRmxvdyhlcnJvclN0cmluZywgaXQtPmdldCgpLCBkb2N1bWVu
dE5vZGVJZCkpOwpAQCAtMTA4NiwxNiArMTA4NywxNiBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50
OjpzdGFydFNlbGVjdG9yUHJvZmlsZXIoRXJyb3JTdHJpbmcqKQogICAgIG1fY3VycmVudFNlbGVj
dG9yUHJvZmlsZSA9IGFkb3B0UHRyKG5ldyBTZWxlY3RvclByb2ZpbGUoKSk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OnN0b3BTZWxlY3RvclByb2ZpbGVyKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZT4mIHJlc3Vs
dCkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnN0b3BTZWxlY3RvclByb2ZpbGVyKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2Vs
ZWN0b3JQcm9maWxlPiYgcmVzdWx0KQogewogICAgIHJlc3VsdCA9IHN0b3BTZWxlY3RvclByb2Zp
bGVySW1wbChlcnJvclN0cmluZywgdHJ1ZSk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6
OkNTUzo6U2VsZWN0b3JQcm9maWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6c3RvcFNlbGVjdG9yUHJv
ZmlsZXJJbXBsKEVycm9yU3RyaW5nKiwgYm9vbCBuZWVkUHJvZmlsZSkKK1Bhc3NSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+IEluc3BlY3RvckNTU0Fn
ZW50OjpzdG9wU2VsZWN0b3JQcm9maWxlckltcGwoRXJyb3JTdHJpbmcqLCBib29sIG5lZWRQcm9m
aWxlKQogewogICAgIGlmICghbV9jdXJyZW50U2VsZWN0b3JQcm9maWxlKQogICAgICAgICByZXR1
cm4gMDsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlPiByZXN1
bHQ7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9m
aWxlPiByZXN1bHQ7CiAgICAgaWYgKG1fZnJvbnRlbmREaXNwYXRjaGVyICYmIG5lZWRQcm9maWxl
KQogICAgICAgICByZXN1bHQgPSBtX2N1cnJlbnRTZWxlY3RvclByb2ZpbGUtPnRvSW5zcGVjdG9y
T2JqZWN0KCk7CiAgICAgbV9jdXJyZW50U2VsZWN0b3JQcm9maWxlLmNsZWFyKCk7CkBAIC0xMTM2
LDcgKzExMzcsNyBAQCBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUqIEluc3BlY3Rv
ckNTU0FnZW50Ojphc0luc3BlY3RvclN0eWxlU2hlZXQoRWxlbQogICAgICAgICAgICAgcmV0dXJu
IDA7CiAKICAgICAgICAgU3RyaW5nIG5ld1N0eWxlU2hlZXRJZCA9IFN0cmluZzo6bnVtYmVyKG1f
bGFzdFN0eWxlU2hlZXRJZCsrKTsKLSAgICAgICAgUmVmUHRyPEluc3BlY3RvclN0eWxlU2hlZXRG
b3JJbmxpbmVTdHlsZT4gaW5zcGVjdG9yU3R5bGVTaGVldCA9IEluc3BlY3RvclN0eWxlU2hlZXRG
b3JJbmxpbmVTdHlsZTo6Y3JlYXRlKG1fZG9tQWdlbnQtPnBhZ2VBZ2VudCgpLCBuZXdTdHlsZVNo
ZWV0SWQsIGVsZW1lbnQsIFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlJlZ3Vs
YXIsIHRoaXMpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0
eWxlPiBpbnNwZWN0b3JTdHlsZVNoZWV0ID0gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0
eWxlOjpjcmVhdGUobV9kb21BZ2VudC0+cGFnZUFnZW50KCksIG5ld1N0eWxlU2hlZXRJZCwgZWxl
bWVudCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpSZWd1
bGFyLCB0aGlzKTsKICAgICAgICAgbV9pZFRvSW5zcGVjdG9yU3R5bGVTaGVldC5zZXQobmV3U3R5
bGVTaGVldElkLCBpbnNwZWN0b3JTdHlsZVNoZWV0KTsKICAgICAgICAgbV9ub2RlVG9JbnNwZWN0
b3JTdHlsZVNoZWV0LnNldChlbGVtZW50LCBpbnNwZWN0b3JTdHlsZVNoZWV0KTsKICAgICAgICAg
cmV0dXJuIGluc3BlY3RvclN0eWxlU2hlZXQuZ2V0KCk7CkBAIC0xMTY4LDcgKzExNjksNyBAQCBp
bnQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRvY3VtZW50Tm9kZVdpdGhSZXF1ZXN0ZWRGbG93c0lkKERv
Y3VtZW50KiBkb2N1bWVudCkKICAgICByZXR1cm4gZG9jdW1lbnROb2RlSWQ7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OmNvbGxlY3RTdHlsZVNoZWV0cyhDU1NTdHlsZVNoZWV0KiBzdHls
ZVNoZWV0LCBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVl
dEhlYWRlcj4qIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmNvbGxlY3RTdHlsZVNo
ZWV0cyhDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpB
cnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+KiBy
ZXN1bHQpCiB7CiAgICAgSW5zcGVjdG9yU3R5bGVTaGVldCogaW5zcGVjdG9yU3R5bGVTaGVldCA9
IGJpbmRTdHlsZVNoZWV0KHN0YXRpY19jYXN0PENTU1N0eWxlU2hlZXQqPihzdHlsZVNoZWV0KSk7
CiAgICAgcmVzdWx0LT5hZGRJdGVtKGluc3BlY3RvclN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9y
U3R5bGVTaGVldEluZm8oKSk7CkBAIC0xMjQxLDcgKzEyNDIsNyBAQCBJbnNwZWN0b3JTdHlsZVNo
ZWV0KiBJbnNwZWN0b3JDU1NBZ2VudDo6dmlhSW5zcGVjdG9yU3R5bGVTaGVldChEb2N1bWVudCog
ZG9jdW1lbgogICAgICAgICByZXR1cm4gMDsKIAogICAgIFN0cmluZyBpZCA9IFN0cmluZzo6bnVt
YmVyKG1fbGFzdFN0eWxlU2hlZXRJZCsrKTsKLSAgICBpbnNwZWN0b3JTdHlsZVNoZWV0ID0gSW5z
cGVjdG9yU3R5bGVTaGVldDo6Y3JlYXRlKG1fZG9tQWdlbnQtPnBhZ2VBZ2VudCgpLCBpZCwgY3Nz
U3R5bGVTaGVldCwgVHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6SW5zcGVjdG9y
LCBJbnNwZWN0b3JET01BZ2VudDo6ZG9jdW1lbnRVUkxTdHJpbmcoZG9jdW1lbnQpLCB0aGlzKTsK
KyAgICBpbnNwZWN0b3JTdHlsZVNoZWV0ID0gSW5zcGVjdG9yU3R5bGVTaGVldDo6Y3JlYXRlKG1f
ZG9tQWdlbnQtPnBhZ2VBZ2VudCgpLCBpZCwgY3NzU3R5bGVTaGVldCwgSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpJbnNwZWN0b3IsIEluc3BlY3RvckRPTUFn
ZW50Ojpkb2N1bWVudFVSTFN0cmluZyhkb2N1bWVudCksIHRoaXMpOwogICAgIG1faWRUb0luc3Bl
Y3RvclN0eWxlU2hlZXQuc2V0KGlkLCBpbnNwZWN0b3JTdHlsZVNoZWV0KTsKICAgICBtX2Nzc1N0
eWxlU2hlZXRUb0luc3BlY3RvclN0eWxlU2hlZXQuc2V0KGNzc1N0eWxlU2hlZXQsIGluc3BlY3Rv
clN0eWxlU2hlZXQpOwogICAgIG1fZG9jdW1lbnRUb0luc3BlY3RvclN0eWxlU2hlZXQuc2V0KGRv
Y3VtZW50LCBpbnNwZWN0b3JTdHlsZVNoZWV0KTsKQEAgLTEyNTgsMjIgKzEyNTksMjIgQEAgSW5z
cGVjdG9yU3R5bGVTaGVldCogSW5zcGVjdG9yQ1NTQWdlbnQ6OmFzc2VydFN0eWxlU2hlZXRGb3JJ
ZChFcnJvclN0cmluZyogZXJyb3IKICAgICByZXR1cm4gaXQtPnZhbHVlLmdldCgpOwogfQogCi1U
eXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpFbnVtIEluc3BlY3RvckNTU0FnZW50
OjpkZXRlY3RPcmlnaW4oQ1NTU3R5bGVTaGVldCogcGFnZVN0eWxlU2hlZXQsIERvY3VtZW50KiBv
d25lckRvY3VtZW50KQorSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3Jp
Z2luOjpFbnVtIEluc3BlY3RvckNTU0FnZW50OjpkZXRlY3RPcmlnaW4oQ1NTU3R5bGVTaGVldCog
cGFnZVN0eWxlU2hlZXQsIERvY3VtZW50KiBvd25lckRvY3VtZW50KQogewotICAgIFR5cGVCdWls
ZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OkVudW0gb3JpZ2luID0gVHlwZUJ1aWxkZXI6OkNT
Uzo6U3R5bGVTaGVldE9yaWdpbjo6UmVndWxhcjsKKyAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OkVudW0gb3JpZ2luID0gSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpSZWd1bGFyOwogICAgIGlmIChwYWdlU3R5bGVT
aGVldCAmJiAhcGFnZVN0eWxlU2hlZXQtPm93bmVyTm9kZSgpICYmIHBhZ2VTdHlsZVNoZWV0LT5o
cmVmKCkuaXNFbXB0eSgpKQotICAgICAgICBvcmlnaW4gPSBUeXBlQnVpbGRlcjo6Q1NTOjpTdHls
ZVNoZWV0T3JpZ2luOjpVc2VyQWdlbnQ7CisgICAgICAgIG9yaWdpbiA9IEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6VXNlckFnZW50OwogICAgIGVsc2UgaWYg
KHBhZ2VTdHlsZVNoZWV0ICYmIHBhZ2VTdHlsZVNoZWV0LT5vd25lck5vZGUoKSAmJiBwYWdlU3R5
bGVTaGVldC0+b3duZXJOb2RlKCktPm5vZGVOYW1lKCkgPT0gIiNkb2N1bWVudCIpCi0gICAgICAg
IG9yaWdpbiA9IFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlVzZXI7CisgICAg
ICAgIG9yaWdpbiA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdp
bjo6VXNlcjsKICAgICBlbHNlIHsKICAgICAgICAgSW5zcGVjdG9yU3R5bGVTaGVldCogdmlhSW5z
cGVjdG9yU3R5bGVTaGVldEZvck93bmVyID0gdmlhSW5zcGVjdG9yU3R5bGVTaGVldChvd25lckRv
Y3VtZW50LCBmYWxzZSk7CiAgICAgICAgIGlmICh2aWFJbnNwZWN0b3JTdHlsZVNoZWV0Rm9yT3du
ZXIgJiYgcGFnZVN0eWxlU2hlZXQgPT0gdmlhSW5zcGVjdG9yU3R5bGVTaGVldEZvck93bmVyLT5w
YWdlU3R5bGVTaGVldCgpKQotICAgICAgICAgICAgb3JpZ2luID0gVHlwZUJ1aWxkZXI6OkNTUzo6
U3R5bGVTaGVldE9yaWdpbjo6SW5zcGVjdG9yOworICAgICAgICAgICAgb3JpZ2luID0gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpJbnNwZWN0b3I7CiAgICAg
fQogICAgIHJldHVybiBvcmlnaW47CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTUnVsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZShTdHlsZVJ1bGUq
IHN0eWxlUnVsZSwgU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKK1Bhc3NSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVp
bGRPYmplY3RGb3JSdWxlKFN0eWxlUnVsZSogc3R5bGVSdWxlLCBTdHlsZVJlc29sdmVyJiBzdHls
ZVJlc29sdmVyKQogewogICAgIGlmICghc3R5bGVSdWxlKQogICAgICAgICByZXR1cm4gMDsKQEAg
LTEyODcsNyArMTI4OCw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4g
SW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZShTdHlsCiAgICAgcmV0dXJuIGlu
c3BlY3RvclN0eWxlU2hlZXQgPyBpbnNwZWN0b3JTdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclJ1
bGUoY3Nzb21XcmFwcGVyKSA6IDA7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTUnVsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZShDU1NTdHlsZVJ1
bGUqIHJ1bGUpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVs
ZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZShDU1NTdHlsZVJ1bGUqIHJ1
bGUpCiB7CiAgICAgaWYgKCFydWxlKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEyOTcsMTUgKzEy
OTgsMTUgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiBJbnNwZWN0b3JD
U1NBZ2VudDo6YnVpbGRPYmplY3RGb3JSdWxlKENTU1MKICAgICByZXR1cm4gaW5zcGVjdG9yU3R5
bGVTaGVldCA/IGluc3BlY3RvclN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9yUnVsZShydWxlKSA6
IDA7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6
OkNTU1J1bGU+PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvclJ1bGVMaXN0KENTU1J1
bGVMaXN0KiBydWxlTGlzdCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPj4gSW5zcGVjdG9yQ1NTQWdl
bnQ6OmJ1aWxkQXJyYXlGb3JSdWxlTGlzdChDU1NSdWxlTGlzdCogcnVsZUxpc3QpCiB7Ci0gICAg
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPj4gcmVz
dWx0ID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+OjpjcmVh
dGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPj4gcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPjo6Y3JlYXRl
KCk7CiAgICAgaWYgKCFydWxlTGlzdCkKICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7
CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBzaXplID0gcnVsZUxpc3QtPmxlbmd0aCgpOyBp
IDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIENTU1N0eWxlUnVsZSogcnVsZSA9IGFzQ1NTU3R5bGVS
dWxlKHJ1bGVMaXN0LT5pdGVtKGkpKTsKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6
OkNTU1J1bGU+IHJ1bGVPYmplY3QgPSBidWlsZE9iamVjdEZvclJ1bGUocnVsZSk7CisgICAgICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+IHJ1bGVPYmplY3Qg
PSBidWlsZE9iamVjdEZvclJ1bGUocnVsZSk7CiAgICAgICAgIGlmICghcnVsZU9iamVjdCkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICByZXN1bHQtPmFkZEl0ZW0ocnVsZU9iamVjdCk7
CkBAIC0xMzEzLDE4ICsxMzE0LDE4IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5
cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpCiAgICAgcmV0
dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5
PFR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRjaD4+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZEFy
cmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+
JiBtYXRjaGVkUnVsZXMsIFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIEVsZW1lbnQqIGVs
ZW1lbnQpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNTUzo6UnVsZU1hdGNoPj4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxk
QXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNl
Pj4mIG1hdGNoZWRSdWxlcywgU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgRWxlbWVudCog
ZWxlbWVudCkKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpD
U1M6OlJ1bGVNYXRjaD4+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6
Q1NTOjpSdWxlTWF0Y2g+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g+PiByZXN1
bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDU1M6OlJ1bGVNYXRjaD46OmNyZWF0ZSgpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1hdGNoZWRSdWxlcy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoIW1hdGNoZWRSdWxl
c1tpXS0+aXNTdHlsZVJ1bGUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBTdHls
ZVJ1bGUqIG1hdGNoZWRTdHlsZVJ1bGUgPSBzdGF0aWNfY2FzdDxTdHlsZVJ1bGUqPihtYXRjaGVk
UnVsZXNbaV0uZ2V0KCkpOwotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVs
ZT4gcnVsZU9iamVjdCA9IGJ1aWxkT2JqZWN0Rm9yUnVsZShtYXRjaGVkU3R5bGVSdWxlLCBzdHls
ZVJlc29sdmVyKTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTUnVsZT4gcnVsZU9iamVjdCA9IGJ1aWxkT2JqZWN0Rm9yUnVsZShtYXRjaGVkU3R5bGVSdWxl
LCBzdHlsZVJlc29sdmVyKTsKICAgICAgICAgaWYgKCFydWxlT2JqZWN0KQogICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4gbWF0Y2hp
bmdTZWxlY3RvcnMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CisgICAgICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+PiBtYXRjaGluZ1NlbGVj
dG9ycyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PGludD46OmNyZWF0ZSgpOwogICAg
ICAgICBjb25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCA9IG1hdGNoZWRTdHlsZVJ1
bGUtPnNlbGVjdG9yTGlzdCgpOwogICAgICAgICBsb25nIGluZGV4ID0gMDsKICAgICAgICAgZm9y
IChjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IgPSBzZWxlY3Rvckxpc3QuZmlyc3QoKTsgc2Vs
ZWN0b3I7IHNlbGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHNlbGVjdG9yKSkgewpAQCAt
MTMzMyw3ICsxMzM0LDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxk
ZXI6OkNTUzo6UnVsZU1hdGNoPj4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmIKICAgICAgICAgICAgICAg
ICBtYXRjaGluZ1NlbGVjdG9ycy0+YWRkSXRlbShpbmRleCk7CiAgICAgICAgICAgICArK2luZGV4
OwogICAgICAgICB9Ci0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g+
IG1hdGNoID0gVHlwZUJ1aWxkZXI6OkNTUzo6UnVsZU1hdGNoOjpjcmVhdGUoKQorICAgICAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g+IG1hdGNoID0gSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g6OmNyZWF0ZSgpCiAgICAgICAgICAg
ICAuc2V0UnVsZShydWxlT2JqZWN0KQogICAgICAgICAgICAgLnNldE1hdGNoaW5nU2VsZWN0b3Jz
KG1hdGNoaW5nU2VsZWN0b3JzKTsKICAgICAgICAgcmVzdWx0LT5hZGRJdGVtKG1hdGNoKTsKQEAg
LTEzNDIsNyArMTM0Myw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpDU1M6OlJ1bGVNYXRjaD4+IEluc3BlY3RvckNTU0FnZW50OjpiCiAgICAgcmV0dXJuIHJl
c3VsdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5
bGU+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNTdHlsZShFbGVt
ZW50KiBlbGVtZW50KQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNT
U1N0eWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5bGUo
RWxlbWVudCogZWxlbWVudCkKIHsKICAgICBpZiAoIWVsZW1lbnQtPmlzU3R5bGVkRWxlbWVudCgp
KQogICAgICAgICByZXR1cm4gMDsKQEAgLTEzNTksMjIgKzEzNjAsMjIgQEAgUGFzc1JlZlB0cjxU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0
Rm9yQXR0cmlidXQKICAgICByZXR1cm4gaW5zcGVjdG9yU3R5bGUtPmJ1aWxkT2JqZWN0Rm9yU3R5
bGUoKTsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNT
Uzo6UmVnaW9uPj4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JSZWdpb25zKEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgUGFzc1JlZlB0cjxOb2RlTGlzdD4gcmVnaW9uTGlzdCwgaW50
IGRvY3VtZW50Tm9kZUlkKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJh
eTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbj4+IEluc3BlY3RvckNTU0FnZW50
OjpidWlsZEFycmF5Rm9yUmVnaW9ucyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFBhc3NSZWZQ
dHI8Tm9kZUxpc3Q+IHJlZ2lvbkxpc3QsIGludCBkb2N1bWVudE5vZGVJZCkKIHsKLSAgICBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbj4+IHJlZ2lvbnMg
PSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uPjo6Y3JlYXRlKCk7
CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6UmVnaW9uPj4gcmVnaW9ucyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uPjo6Y3JlYXRlKCk7CiAK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaW9uTGlzdC0+bGVuZ3RoKCk7ICsraSkg
ewotICAgICAgICBUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb246OlJlZ2lvbk92ZXJzZXQ6OkVudW0g
cmVnaW9uT3ZlcnNldDsKKyAgICAgICAgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSZWdp
b246OlJlZ2lvbk92ZXJzZXQ6OkVudW0gcmVnaW9uT3ZlcnNldDsKIAogICAgICAgICBzd2l0Y2gg
KHRvRWxlbWVudChyZWdpb25MaXN0LT5pdGVtKGkpKS0+cmVuZGVyUmVnaW9uKCktPnJlZ2lvbk92
ZXJzZXRTdGF0ZSgpKSB7CiAgICAgICAgIGNhc2UgUmVnaW9uRml0OgotICAgICAgICAgICAgcmVn
aW9uT3ZlcnNldCA9IFR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbjo6UmVnaW9uT3ZlcnNldDo6Rml0
OworICAgICAgICAgICAgcmVnaW9uT3ZlcnNldCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNT
Uzo6UmVnaW9uOjpSZWdpb25PdmVyc2V0OjpGaXQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBSZWdpb25FbXB0eToKLSAgICAgICAgICAgIHJlZ2lvbk92ZXJzZXQgPSBUeXBlQnVp
bGRlcjo6Q1NTOjpSZWdpb246OlJlZ2lvbk92ZXJzZXQ6OkVtcHR5OworICAgICAgICAgICAgcmVn
aW9uT3ZlcnNldCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uOjpSZWdpb25P
dmVyc2V0OjpFbXB0eTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFJlZ2lvbk92
ZXJzZXQ6Ci0gICAgICAgICAgICByZWdpb25PdmVyc2V0ID0gVHlwZUJ1aWxkZXI6OkNTUzo6UmVn
aW9uOjpSZWdpb25PdmVyc2V0OjpPdmVyc2V0OworICAgICAgICAgICAgcmVnaW9uT3ZlcnNldCA9
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uOjpSZWdpb25PdmVyc2V0OjpPdmVy
c2V0OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUmVnaW9uVW5kZWZpbmVkOgog
ICAgICAgICAgICAgY29udGludWU7CkBAIC0xMzgzLDcgKzEzODQsNyBAQCBQYXNzUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb24+PiBJbnNwZWN0b3JDU1NB
Z2VudDo6YnVpbAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uPiByZWdpb24gPSBUeXBlQnVpbGRlcjo6Q1NT
OjpSZWdpb246OmNyZWF0ZSgpCisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDU1M6OlJlZ2lvbj4gcmVnaW9uID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSZWdp
b246OmNyZWF0ZSgpCiAgICAgICAgICAgICAuc2V0UmVnaW9uT3ZlcnNldChyZWdpb25PdmVyc2V0
KQogICAgICAgICAgICAgLy8gZG9jdW1lbnROb2RlSWQgd2FzIHByZXZpb3VzbHkgYXNzZXJ0ZWQK
ICAgICAgICAgICAgIC5zZXROb2RlSWQobV9kb21BZ2VudC0+cHVzaE5vZGVUb0Zyb250ZW5kKGVy
cm9yU3RyaW5nLCBkb2N1bWVudE5vZGVJZCwgcmVnaW9uTGlzdC0+aXRlbShpKSkpOwpAQCAtMTM5
NCwxNyArMTM5NSwxNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRl
cjo6Q1NTOjpSZWdpb24+PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbAogICAgIHJldHVybiByZWdp
b25zLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZs
b3c+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvck5hbWVkRmxvdyhFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIFdlYktpdE5hbWVkRmxvdyogd2Via2l0TmFtZWRGbG93LCBpbnQgZG9j
dW1lbnROb2RlSWQpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6TmFt
ZWRGbG93PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JOYW1lZEZsb3coRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBXZWJLaXROYW1lZEZsb3cqIHdlYmtpdE5hbWVkRmxvdywgaW50
IGRvY3VtZW50Tm9kZUlkKQogewogICAgIFJlZlB0cjxOb2RlTGlzdD4gY29udGVudExpc3QgPSB3
ZWJraXROYW1lZEZsb3ctPmdldENvbnRlbnQoKTsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PGludD4+IGNvbnRlbnQgPSBUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7Cisg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PGludD4+IGNvbnRlbnQgPSBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKIAogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBjb250ZW50TGlzdC0+bGVuZ3RoKCk7ICsraSkgewogICAgICAg
ICAvLyBkb2N1bWVudE5vZGVJZCB3YXMgcHJldmlvdXNseSBhc3NlcnRlZAogICAgICAgICBjb250
ZW50LT5hZGRJdGVtKG1fZG9tQWdlbnQtPnB1c2hOb2RlVG9Gcm9udGVuZChlcnJvclN0cmluZywg
ZG9jdW1lbnROb2RlSWQsIGNvbnRlbnRMaXN0LT5pdGVtKGkpKSk7CiAgICAgfQogCi0gICAgUmVm
UHRyPFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4gbmFtZWRGbG93ID0gVHlwZUJ1aWxkZXI6
OkNTUzo6TmFtZWRGbG93OjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDU1M6Ok5hbWVkRmxvdz4gbmFtZWRGbG93ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpOYW1lZEZsb3c6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXREb2N1bWVudE5vZGVJZChkb2N1
bWVudE5vZGVJZCkKICAgICAgICAgLnNldE5hbWUod2Via2l0TmFtZWRGbG93LT5uYW1lKCkuc3Ry
aW5nKCkpCiAgICAgICAgIC5zZXRPdmVyc2V0KHdlYmtpdE5hbWVkRmxvdy0+b3ZlcnNldCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAppbmRleCA5ZDNi
NDBkLi5hMTZmZWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ1NTQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NT
QWdlbnQuaApAQCAtMjcsMTIgKzI3LDEyIEBACiAKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgog
I2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgotI2luY2x1ZGUgIkluc3BlY3RvckJh
c2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yU3R5bGVTaGVl
dC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgorI2luY2x1ZGUgIkluc3BlY3Rvcldl
YkFnZW50QmFzZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5Q29udGV4dC5oIgotCisjaW5jbHVkZSA8
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAt
NjQsNyArNjQsNyBAQCBjbGFzcyBDaGFuZ2VSZWdpb25PdmVyc2V0VGFzazsKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQogCiBjbGFzcyBJbnNwZWN0b3JDU1NBZ2VudAotICAgIDogcHVibGljIEluc3Bl
Y3RvckJhc2VBZ2VudAorICAgIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZQogICAgICwgcHVi
bGljIEluc3BlY3RvckRPTUFnZW50OjpET01MaXN0ZW5lcgogICAgICwgcHVibGljIEluc3BlY3Rv
ckNTU0JhY2tlbmREaXNwYXRjaGVySGFuZGxlcgogICAgICwgcHVibGljIEluc3BlY3RvclN0eWxl
U2hlZXQ6Okxpc3RlbmVyIHsKQEAgLTk2LDcgKzk2LDcgQEAgcHVibGljOgogICAgIH5JbnNwZWN0
b3JDU1NBZ2VudCgpOwogCiAgICAgYm9vbCBmb3JjZVBzZXVkb1N0YXRlKEVsZW1lbnQqLCBDU1NT
ZWxlY3Rvcjo6UHNldWRvVHlwZSk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6
Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIGRpc2NhcmRBZ2VudCgpOwogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcq
KTsKQEAgLTExMiwyNiArMTEyLDI2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlZ2lzdGVyTmFt
ZWRGbG93Q29udGVudEVsZW1lbnQoRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cqLCBOb2RlKiBj
b250ZW50RWxlbWVudCwgTm9kZSogbmV4dENvbnRlbnRFbGVtZW50ID0gbnVsbHB0cik7CiAgICAg
dm9pZCBkaWRVbnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoRG9jdW1lbnQqLCBXZWJL
aXROYW1lZEZsb3cqLCBOb2RlKiBjb250ZW50RWxlbWVudCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9w
ZXJ0eT4+Jik7Ci0gICAgdmlydHVhbCB2b2lkIGdldElubGluZVN0eWxlc0Zvck5vZGUoRXJyb3JT
dHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiBp
bmxpbmVTdHlsZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgYXR0cmlidXRl
cyk7Ci0gICAgdmlydHVhbCB2b2lkIGdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5n
KiwgaW50IG5vZGVJZCwgY29uc3QgYm9vbCogaW5jbHVkZVBzZXVkbywgY29uc3QgYm9vbCogaW5j
bHVkZUluaGVyaXRlZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NT
OjpSdWxlTWF0Y2g+PiYgbWF0Y2hlZENTU1J1bGVzLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5
PFR5cGVCdWlsZGVyOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz4+JiBwc2V1ZG9JZE1hdGNoZXMsIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6SW5oZXJpdGVkU3R5bGVF
bnRyeT4+JiBpbmhlcml0ZWRFbnRyaWVzKTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QWxsU3R5bGVT
aGVldHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVy
OjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+PiYgc3R5bGVTaGVldEluZm9zKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0U3R5bGVTaGVldChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc3R5bGVT
aGVldElkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEJvZHk+JiByZXN1
bHQpOworICAgIHZpcnR1YWwgdm9pZCBnZXRDb21wdXRlZFN0eWxlRm9yTm9kZShFcnJvclN0cmlu
ZyosIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+Jik7Cisg
ICAgdmlydHVhbCB2b2lkIGdldElubGluZVN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQg
bm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4mIGlu
bGluZVN0eWxlLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4m
IGF0dHJpYnV0ZXMpOworICAgIHZpcnR1YWwgdm9pZCBnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShF
cnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IGJvb2wqIGluY2x1ZGVQc2V1ZG8sIGNvbnN0
IGJvb2wqIGluY2x1ZGVJbmhlcml0ZWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpB
cnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRjaD4+JiBtYXRjaGVkQ1NT
UnVsZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz4+JiBwc2V1ZG9JZE1hdGNoZXMsIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6OkluaGVyaXRlZFN0eWxlRW50cnk+PiYgaW5oZXJpdGVkRW50cmllcyk7CisgICAgdmlydHVh
bCB2b2lkIGdldEFsbFN0eWxlU2hlZXRzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVT
aGVldEhlYWRlcj4+JiBzdHlsZVNoZWV0SW5mb3MpOworICAgIHZpcnR1YWwgdm9pZCBnZXRTdHls
ZVNoZWV0KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5PiYgcmVzdWx0KTsK
ICAgICB2aXJ0dWFsIHZvaWQgZ2V0U3R5bGVTaGVldFRleHQoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIHN0eWxlU2hlZXRJZCwgU3RyaW5nKiByZXN1bHQpOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElk
LCBjb25zdCBTdHJpbmcmIHRleHQpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTdHlsZVRleHQoRXJy
b3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgc3R5bGVJZCwgY29uc3Qg
U3RyaW5nJiB0ZXh0LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQp
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9wZXJ0eVRleHQoRXJyb3JTdHJpbmcqLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgc3R5bGVJZCwgaW50IHByb3BlcnR5SW5kZXgsIGNvbnN0
IFN0cmluZyYgdGV4dCwgYm9vbCBvdmVyd3JpdGUsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NTdHlsZT4mIHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2b2lkIHRvZ2dsZVByb3BlcnR5KEVycm9y
U3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHN0eWxlSWQsIGludCBwcm9w
ZXJ0eUluZGV4LCBib29sIGRpc2FibGUsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHls
ZT4mIHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldFJ1bGVTZWxlY3RvcihFcnJvclN0cmlu
ZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBydWxlSWQsIGNvbnN0IFN0cmluZyYg
c2VsZWN0b3IsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KTsKLSAg
ICB2aXJ0dWFsIHZvaWQgYWRkUnVsZShFcnJvclN0cmluZyosIGludCBjb250ZXh0Tm9kZUlkLCBj
b25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4m
IHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2b2lkIGdldFN1cHBvcnRlZENTU1Byb3BlcnRpZXMoRXJy
b3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNT
U1Byb3BlcnR5SW5mbz4+JiByZXN1bHQpOwotICAgIHZpcnR1YWwgdm9pZCBmb3JjZVBzZXVkb1N0
YXRlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5
PiYgZm9yY2VkUHNldWRvQ2xhc3Nlcyk7Ci0gICAgdmlydHVhbCB2b2lkIGdldE5hbWVkRmxvd0Nv
bGxlY3Rpb24oRXJyb3JTdHJpbmcqLCBpbnQgZG9jdW1lbnROb2RlSWQsIFJlZlB0cjxUeXBlQnVp
bGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93Pj4mIHJlc3VsdCk7CisgICAg
dmlydHVhbCB2b2lkIHNldFN0eWxlVGV4dChFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIHN0eWxlSWQsIGNvbnN0IFN0cmluZyYgdGV4dCwgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpOworICAg
IHZpcnR1YWwgdm9pZCBzZXRQcm9wZXJ0eVRleHQoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBzdHlsZUlkLCBpbnQgcHJvcGVydHlJbmRleCwg
Y29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIG92ZXJ3cml0ZSwgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCB0b2dn
bGVQcm9wZXJ0eShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4mIHN0eWxlSWQsIGludCBwcm9wZXJ0eUluZGV4LCBib29sIGRpc2FibGUsIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgcnVsZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9y
LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KTsK
KyAgICB2aXJ0dWFsIHZvaWQgYWRkUnVsZShFcnJvclN0cmluZyosIGludCBjb250ZXh0Tm9kZUlk
LCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0U3VwcG9ydGVkQ1NT
UHJvcGVydGllcyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpB
cnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5SW5mbz4+JiByZXN1
bHQpOworICAgIHZpcnR1YWwgdm9pZCBmb3JjZVBzZXVkb1N0YXRlKEVycm9yU3RyaW5nKiwgaW50
IG5vZGVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiBmb3JjZWRQ
c2V1ZG9DbGFzc2VzKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0TmFtZWRGbG93Q29sbGVjdGlvbihF
cnJvclN0cmluZyosIGludCBkb2N1bWVudE5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93Pj4mIHJl
c3VsdCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRTZWxlY3RvclByb2ZpbGVyKEVycm9yU3Ry
aW5nKik7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3BTZWxlY3RvclByb2ZpbGVyKEVycm9yU3RyaW5n
KiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZT4mKTsKKyAgICB2aXJ0
dWFsIHZvaWQgc3RvcFNlbGVjdG9yUHJvZmlsZXIoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+Jik7CiAKLSAgICBQYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZT4gc3RvcFNlbGVjdG9yUHJvZmls
ZXJJbXBsKEVycm9yU3RyaW5nKiwgYm9vbCBuZWVkUHJvZmlsZSk7CisgICAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZT4gc3RvcFNlbGVjdG9y
UHJvZmlsZXJJbXBsKEVycm9yU3RyaW5nKiwgYm9vbCBuZWVkUHJvZmlsZSk7CiAgICAgdm9pZCB3
aWxsTWF0Y2hSdWxlKFN0eWxlUnVsZSosIEluc3BlY3RvckNTU09NV3JhcHBlcnMmLCBEb2N1bWVu
dFN0eWxlU2hlZXRDb2xsZWN0aW9uJik7CiAgICAgdm9pZCBkaWRNYXRjaFJ1bGUoYm9vbCk7CiAg
ICAgdm9pZCB3aWxsUHJvY2Vzc1J1bGUoU3R5bGVSdWxlKiwgU3R5bGVSZXNvbHZlciYpOwpAQCAt
MTU4LDIwICsxNTgsMjAgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5s
aW5lU3R5bGUqIGFzSW5zcGVjdG9yU3R5bGVTaGVldChFbGVtZW50KiBlbGVtZW50KTsKICAgICBF
bGVtZW50KiBlbGVtZW50Rm9ySWQoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkKTsKICAgICBpbnQg
ZG9jdW1lbnROb2RlV2l0aFJlcXVlc3RlZEZsb3dzSWQoRG9jdW1lbnQqKTsKLSAgICB2b2lkIGNv
bGxlY3RTdHlsZVNoZWV0cyhDU1NTdHlsZVNoZWV0KiwgVHlwZUJ1aWxkZXI6OkFycmF5PFdlYkNv
cmU6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+Kik7CisgICAgdm9pZCBj
b2xsZWN0U3R5bGVTaGVldHMoQ1NTU3R5bGVTaGVldCosIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4q
KTsKIAogICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIGJpbmRTdHlsZVNoZWV0KENTU1N0eWxlU2hl
ZXQqKTsKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiB2aWFJbnNwZWN0b3JTdHlsZVNoZWV0KERv
Y3VtZW50KiwgYm9vbCBjcmVhdGVJZkFic2VudCk7CiAgICAgSW5zcGVjdG9yU3R5bGVTaGVldCog
YXNzZXJ0U3R5bGVTaGVldEZvcklkKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJik7Ci0gICAg
VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6RW51bSBkZXRlY3RPcmlnaW4oQ1NT
U3R5bGVTaGVldCogcGFnZVN0eWxlU2hlZXQsIERvY3VtZW50KiBvd25lckRvY3VtZW50KTsKKyAg
ICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OkVudW0gZGV0
ZWN0T3JpZ2luKENTU1N0eWxlU2hlZXQqIHBhZ2VTdHlsZVNoZWV0LCBEb2N1bWVudCogb3duZXJE
b2N1bWVudCk7CiAKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+IGJ1
aWxkT2JqZWN0Rm9yUnVsZShTdHlsZVJ1bGUqLCBTdHlsZVJlc29sdmVyJik7Ci0gICAgUGFzc1Jl
ZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiBidWlsZE9iamVjdEZvclJ1bGUoQ1NTU3R5
bGVSdWxlKik7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTUnVsZT4+IGJ1aWxkQXJyYXlGb3JSdWxlTGlzdChDU1NSdWxlTGlzdCopOwotICAg
IFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRj
aD4+IGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHls
ZVJ1bGVCYXNlPj4mLCBTdHlsZVJlc29sdmVyJiwgRWxlbWVudCopOwotICAgIFBhc3NSZWZQdHI8
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IGJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRlc1N0eWxl
KEVsZW1lbnQqKTsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRl
cjo6Q1NTOjpSZWdpb24+PiBidWlsZEFycmF5Rm9yUmVnaW9ucyhFcnJvclN0cmluZyosIFBhc3NS
ZWZQdHI8Tm9kZUxpc3Q+LCBpbnQgZG9jdW1lbnROb2RlSWQpOwotICAgIFBhc3NSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93PiBidWlsZE9iamVjdEZvck5hbWVkRmxvdyhFcnJvclN0
cmluZyosIFdlYktpdE5hbWVkRmxvdyosIGludCBkb2N1bWVudE5vZGVJZCk7CisgICAgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9y
UnVsZShTdHlsZVJ1bGUqLCBTdHlsZVJlc29sdmVyJik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9yUnVsZShDU1NTdHls
ZVJ1bGUqKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4+IGJ1aWxkQXJyYXlGb3JSdWxlTGlz
dChDU1NSdWxlTGlzdCopOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g+PiBidWlsZEFycmF5
Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+Jiwg
U3R5bGVSZXNvbHZlciYsIEVsZW1lbnQqKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IGJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRlc1N0eWxlKEVs
ZW1lbnQqKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uPj4gYnVpbGRBcnJheUZvclJlZ2lvbnMo
RXJyb3JTdHJpbmcqLCBQYXNzUmVmUHRyPE5vZGVMaXN0PiwgaW50IGRvY3VtZW50Tm9kZUlkKTsK
KyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93PiBi
dWlsZE9iamVjdEZvck5hbWVkRmxvdyhFcnJvclN0cmluZyosIFdlYktpdE5hbWVkRmxvdyosIGlu
dCBkb2N1bWVudE5vZGVJZCk7CiAKICAgICAvLyBJbnNwZWN0b3JET01BZ2VudDo6RE9NTGlzdGVu
ZXIgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlRG9jdW1lbnQoRG9j
dW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
YW52YXNBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFz
QWdlbnQuY3BwCmluZGV4IGY5ZjcyZjIuLjk0MzA5OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcApAQCAtNDcsMjIgKzQ3LDI0IEBA
CiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRl
ICJQYWdlLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJv
ZmlsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1Nj
cmlwdE9iamVjdC5oPgogCi11c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6QXJyYXk7Ci11c2lu
ZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJjZUlkOwotdXNpbmcgV2ViQ29y
ZTo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VJbmZvOwotdXNpbmcgV2ViQ29yZTo6VHlw
ZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VTdGF0ZTsKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWls
ZGVyOjpDYW52YXM6OlRyYWNlTG9nOwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkNhbnZh
czo6VHJhY2VMb2dJZDsKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpGcmFt
ZUlkOwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk7Cit1c2luZyBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlSWQ7Cit1c2luZyBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlSW5mbzsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VTdGF0ZTsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNhbnZhczo6VHJhY2VMb2c7Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52
YXM6OlRyYWNlTG9nSWQ7Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpG
cmFtZUlkOworCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIEluc3BlY3RvckNhbnZhc0FnZW50OjpJbnNwZWN0b3JDYW52YXNBZ2VudChJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBh
Z2VBZ2VudCwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0g
ICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJDYW52YXMiKSwgaW5zdHJ1bWVu
dGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkNhbnZh
cyIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQog
ICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAg
ICwgbV9lbmFibGVkKGZhbHNlKQpAQCAtNzMsNyArNzUsNyBAQCBJbnNwZWN0b3JDYW52YXNBZ2Vu
dDo6fkluc3BlY3RvckNhbnZhc0FnZW50KCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JDYW52YXNB
Z2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERp
c3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hh
bm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewog
ICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JDYW52
YXNGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlz
cGF0Y2hlciA9IEluc3BlY3RvckNhbnZhc0JhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2Vu
ZERpc3BhdGNoZXIsIHRoaXMpOwpAQCAtMTc4LDI3ICsxODAsMjcgQEAgdm9pZCBJbnNwZWN0b3JD
YW52YXNBZ2VudDo6Z2V0UmVzb3VyY2VTdGF0ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNv
bnN0IFRyYWMKICAgICAgICAgbW9kdWxlLnJlc291cmNlU3RhdGUoZXJyb3JTdHJpbmcsIHRyYWNl
TG9nSWQsIHJlc291cmNlSWQsICZyZXN1bHQpOwogfQogCi1TY3JpcHRPYmplY3QgSW5zcGVjdG9y
Q2FudmFzQWdlbnQ6OndyYXBDYW52YXMyRFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRp
b24oY29uc3QgU2NyaXB0T2JqZWN0JiBjb250ZXh0KQorRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0
IEluc3BlY3RvckNhbnZhc0FnZW50Ojp3cmFwQ2FudmFzMkRSZW5kZXJpbmdDb250ZXh0Rm9ySW5z
dHJ1bWVudGF0aW9uKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgY29udGV4dCkKIHsK
ICAgICBFcnJvclN0cmluZyBlcnJvcjsKICAgICBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZSBt
b2R1bGUgPSBpbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZSgmZXJyb3IsIGNvbnRleHQpOwogICAg
IGlmIChtb2R1bGUuaGFzTm9WYWx1ZSgpKQotICAgICAgICByZXR1cm4gU2NyaXB0T2JqZWN0KCk7
CisgICAgICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QoKTsKICAgICByZXR1cm4g
bm90aWZ5UmVuZGVyaW5nQ29udGV4dFdhc1dyYXBwZWQobW9kdWxlLndyYXBDYW52YXMyRENvbnRl
eHQoY29udGV4dCkpOwogfQogCiAjaWYgRU5BQkxFKFdFQkdMKQotU2NyaXB0T2JqZWN0IEluc3Bl
Y3RvckNhbnZhc0FnZW50Ojp3cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0
aW9uKGNvbnN0IFNjcmlwdE9iamVjdCYgZ2xDb250ZXh0KQorRGVwcmVjYXRlZDo6U2NyaXB0T2Jq
ZWN0IEluc3BlY3RvckNhbnZhc0FnZW50Ojp3cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5z
dHJ1bWVudGF0aW9uKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgZ2xDb250ZXh0KQog
ewogICAgIEVycm9yU3RyaW5nIGVycm9yOwogICAgIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxl
IG1vZHVsZSA9IGluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlKCZlcnJvciwgZ2xDb250ZXh0KTsK
ICAgICBpZiAobW9kdWxlLmhhc05vVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIFNjcmlwdE9iamVj
dCgpOworICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KCk7CiAgICAgcmV0
dXJuIG5vdGlmeVJlbmRlcmluZ0NvbnRleHRXYXNXcmFwcGVkKG1vZHVsZS53cmFwV2ViR0xDb250
ZXh0KGdsQ29udGV4dCkpOwogfQogI2VuZGlmCiAKLVNjcmlwdE9iamVjdCBJbnNwZWN0b3JDYW52
YXNBZ2VudDo6bm90aWZ5UmVuZGVyaW5nQ29udGV4dFdhc1dyYXBwZWQoY29uc3QgU2NyaXB0T2Jq
ZWN0JiB3cmFwcGVkQ29udGV4dCkKK0RlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBJbnNwZWN0b3JD
YW52YXNBZ2VudDo6bm90aWZ5UmVuZGVyaW5nQ29udGV4dFdhc1dyYXBwZWQoY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0T2JqZWN0JiB3cmFwcGVkQ29udGV4dCkKIHsKICAgICBBU1NFUlQobV9mcm9u
dGVuZERpc3BhdGNoZXIpOwogICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9IHdyYXBw
ZWRDb250ZXh0LnNjcmlwdFN0YXRlKCk7CkBAIC0yMjQsMTMgKzIyNiwxMyBAQCBJbmplY3RlZFNj
cmlwdENhbnZhc01vZHVsZSBJbnNwZWN0b3JDYW52YXNBZ2VudDo6aW5qZWN0ZWRTY3JpcHRDYW52
YXNNb2R1bGUoRXJybwogICAgIHJldHVybiBtb2R1bGU7CiB9CiAKLUluamVjdGVkU2NyaXB0Q2Fu
dmFzTW9kdWxlIEluc3BlY3RvckNhbnZhc0FnZW50OjppbmplY3RlZFNjcmlwdENhbnZhc01vZHVs
ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFNjcmlwdE9iamVjdCYgc2NyaXB0T2Jq
ZWN0KQorSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6Omlu
amVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiBzY3JpcHRPYmplY3QpCiB7CiAgICAgaWYgKCFjaGVj
a0lzRW5hYmxlZChlcnJvclN0cmluZykpCiAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdENh
bnZhc01vZHVsZSgpOwogICAgIGlmIChzY3JpcHRPYmplY3QuaGFzTm9WYWx1ZSgpKSB7CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW50ZXJu
YWwgZXJyb3I6IG9yaWdpbmFsIFNjcmlwdE9iamVjdCBoYXMgbm8gdmFsdWUiOworICAgICAgICAq
ZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IG9yaWdpbmFsIERlcHJlY2F0ZWQ6OlNjcmlw
dE9iamVjdCBoYXMgbm8gdmFsdWUiOwogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHRDYW52
YXNNb2R1bGUoKTsKICAgICB9CiAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxl
KGVycm9yU3RyaW5nLCBzY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCmluZGV4IDQ5ZDAzZTguLjI3
ZDNlZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52
YXNBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNB
Z2VudC5oCkBAIC0zMywxNSArMzMsMjAgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNp
bmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgotI2luY2x1ZGUg
Ikluc3BlY3RvclR5cGVCdWlsZGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNl
LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIERlcHJlY2F0ZWQgeworY2xhc3MgU2NyaXB0T2Jq
ZWN0OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lOwpAQCAtNDksMTEg
KzU0LDEwIEBAIGNsYXNzIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOwogY2xhc3MgSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50OwogY2xhc3MgSW5zdHJ1
bWVudGluZ0FnZW50czsKLWNsYXNzIFNjcmlwdE9iamVjdDsKIAogdHlwZWRlZiBTdHJpbmcgRXJy
b3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckNhbnZhc0FnZW50IDogcHVibGljIEluc3BlY3Rv
ckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3RvckNhbnZhc0JhY2tlbmREaXNwYXRjaGVySGFuZGxl
ciB7CitjbGFzcyBJbnNwZWN0b3JDYW52YXNBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJh
c2UsIHB1YmxpYyBJbnNwZWN0b3JDYW52YXNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckNhbnZhc0FnZW50PiBjcmVhdGUo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFn
ZW50KiBwYWdlQWdlbnQsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKQogICAgIHsKQEAgLTYxLDcgKzY1LDcgQEAgcHVibGljOgogICAgIH0KICAgICB+SW5zcGVj
dG9yQ2FudmFzQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3
aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgdm9pZCBmcmFt
ZU5hdmlnYXRlZChGcmFtZSopOwpAQCAtNjksMzQgKzczLDM0IEBAIHB1YmxpYzoKICAgICB2b2lk
IGRpZEJlZ2luRnJhbWUoKTsKIAogICAgIC8vIENhbGxlZCBmcm9tIEluc3BlY3RvckNhbnZhc0lu
c3RydW1lbnRhdGlvbi4KLSAgICBTY3JpcHRPYmplY3Qgd3JhcENhbnZhczJEUmVuZGVyaW5nQ29u
dGV4dEZvckluc3RydW1lbnRhdGlvbihjb25zdCBTY3JpcHRPYmplY3QmKTsKKyAgICBEZXByZWNh
dGVkOjpTY3JpcHRPYmplY3Qgd3JhcENhbnZhczJEUmVuZGVyaW5nQ29udGV4dEZvckluc3RydW1l
bnRhdGlvbihjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmKTsKICNpZiBFTkFCTEUoV0VC
R0wpCi0gICAgU2NyaXB0T2JqZWN0IHdyYXBXZWJHTFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVt
ZW50YXRpb24oY29uc3QgU2NyaXB0T2JqZWN0Jik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0T2Jq
ZWN0IHdyYXBXZWJHTFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24oY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0T2JqZWN0Jik7CiAjZW5kaWYKIAogICAgIC8vIENhbGxlZCBmcm9tIHRo
ZSBmcm9udC1lbmQuCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7Ci0gICAgdmlydHVhbCB2b2lkIGRy
b3BUcmFjZUxvZyhFcnJvclN0cmluZyosIGNvbnN0IFR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNl
TG9nSWQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJvcFRyYWNlTG9nKEVycm9yU3RyaW5nKiwgY29u
c3QgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFjZUxvZ0lkJik7CiAgICAgdmly
dHVhbCB2b2lkIGhhc1VuaW5zdHJ1bWVudGVkQ2FudmFzZXMoRXJyb3JTdHJpbmcqLCBib29sKik7
Ci0gICAgdmlydHVhbCB2b2lkIGNhcHR1cmVGcmFtZShFcnJvclN0cmluZyosIGNvbnN0IFR5cGVC
dWlsZGVyOjpOZXR3b3JrOjpGcmFtZUlkKiwgVHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJ
ZCopOwotICAgIHZpcnR1YWwgdm9pZCBzdGFydENhcHR1cmluZyhFcnJvclN0cmluZyosIGNvbnN0
IFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpGcmFtZUlkKiwgVHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJh
Y2VMb2dJZCopOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wQ2FwdHVyaW5nKEVycm9yU3RyaW5nKiwg
Y29uc3QgVHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCYpOwotICAgIHZpcnR1YWwgdm9p
ZCBnZXRUcmFjZUxvZyhFcnJvclN0cmluZyosIGNvbnN0IFR5cGVCdWlsZGVyOjpDYW52YXM6OlRy
YWNlTG9nSWQmLCBjb25zdCBpbnQqLCBjb25zdCBpbnQqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNh
bnZhczo6VHJhY2VMb2c+Jik7Ci0gICAgdmlydHVhbCB2b2lkIHJlcGxheVRyYWNlTG9nKEVycm9y
U3RyaW5nKiwgY29uc3QgVHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCYsIGludCwgUmVm
UHRyPFR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlU3RhdGU+Jik7Ci0gICAgdmlydHVhbCB2
b2lkIGdldFJlc291cmNlSW5mbyhFcnJvclN0cmluZyosIGNvbnN0IFR5cGVCdWlsZGVyOjpDYW52
YXM6OlJlc291cmNlSWQmLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VJbmZv
PiYpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRSZXNvdXJjZVN0YXRlKEVycm9yU3RyaW5nKiwgY29u
c3QgVHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCYsIGNvbnN0IFR5cGVCdWlsZGVyOjpD
YW52YXM6OlJlc291cmNlSWQmLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VT
dGF0ZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FwdHVyZUZyYW1lKEVycm9yU3RyaW5nKiwgY29u
c3QgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6RnJhbWVJZCosIEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCopOworICAgIHZpcnR1YWwgdm9pZCBzdGFy
dENhcHR1cmluZyhFcnJvclN0cmluZyosIGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5l
dHdvcms6OkZyYW1lSWQqLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9n
SWQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcENhcHR1cmluZyhFcnJvclN0cmluZyosIGNvbnN0
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCYpOworICAgIHZpcnR1
YWwgdm9pZCBnZXRUcmFjZUxvZyhFcnJvclN0cmluZyosIGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCYsIGNvbnN0IGludCosIGNvbnN0IGludCosIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nPiYpOworICAgIHZpcnR1
YWwgdm9pZCByZXBsYXlUcmFjZUxvZyhFcnJvclN0cmluZyosIGNvbnN0IEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCYsIGludCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VTdGF0ZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0
UmVzb3VyY2VJbmZvKEVycm9yU3RyaW5nKiwgY29uc3QgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q2FudmFzOjpSZXNvdXJjZUlkJiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZh
czo6UmVzb3VyY2VJbmZvPiYpOworICAgIHZpcnR1YWwgdm9pZCBnZXRSZXNvdXJjZVN0YXRlKEVy
cm9yU3RyaW5nKiwgY29uc3QgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFjZUxv
Z0lkJiwgY29uc3QgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJjZUlkJiwg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VTdGF0ZT4mKTsK
IAogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JDYW52YXNBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRz
KiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKik7CiAKICAgICBJ
bmplY3RlZFNjcmlwdENhbnZhc01vZHVsZSBpbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZShFcnJv
clN0cmluZyosIEpTQzo6RXhlY1N0YXRlKik7Ci0gICAgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1
bGUgaW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTY3JpcHRP
YmplY3QmKTsKKyAgICBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZSBpbmplY3RlZFNjcmlwdENh
bnZhc01vZHVsZShFcnJvclN0cmluZyosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYp
OwogICAgIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlIGluamVjdGVkU2NyaXB0Q2FudmFzTW9k
dWxlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJik7CiAKICAgICB2b2lkIGZpbmRGcmFtZXNX
aXRoVW5pbnN0cnVtZW50ZWRDYW52YXNlcygpOwogICAgIGJvb2wgY2hlY2tJc0VuYWJsZWQoRXJy
b3JTdHJpbmcqKSBjb25zdDsKLSAgICBTY3JpcHRPYmplY3Qgbm90aWZ5UmVuZGVyaW5nQ29udGV4
dFdhc1dyYXBwZWQoY29uc3QgU2NyaXB0T2JqZWN0Jik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0
T2JqZWN0IG5vdGlmeVJlbmRlcmluZ0NvbnRleHRXYXNXcmFwcGVkKGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdE9iamVjdCYpOwogCiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsK
ICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0luc3RydW1l
bnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0luc3Ry
dW1lbnRhdGlvbi5oCmluZGV4IGQzZmRhNjAuLjAxNTBjOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNJbnN0cnVtZW50YXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzSW5zdHJ1bWVudGF0aW9uLmgK
QEAgLTM0LDExICszNCwxMSBAQAogI2luY2x1ZGUgIkluc3BlY3RvckNhbnZhc0FnZW50LmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVu
dGluZ0FnZW50cy5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUgPGJpbmRp
bmdzL1NjcmlwdE9iamVjdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNjcmlwdE9iamVj
dCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndyYXBDYW52YXMyRFJlbmRlcmluZ0NvbnRleHRG
b3JJbnN0cnVtZW50YXRpb24oRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTY3JpcHRPYmplY3Qm
IGNvbnRleHQpCitEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3cmFwQ2FudmFzMkRSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKERvY3Vt
ZW50KiBkb2N1bWVudCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiBjb250ZXh0KQog
ewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1l
bnQpKSB7CkBAIC00OSwxMSArNDksMTEgQEAgU2NyaXB0T2JqZWN0IEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d3JhcENhbnZhczJEUmVuZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnQKICAgICBV
TlVTRURfUEFSQU0oZG9jdW1lbnQpOwogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKICNlbmRp
ZgotICAgIHJldHVybiBTY3JpcHRPYmplY3QoKTsKKyAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2Ny
aXB0T2JqZWN0KCk7CiB9CiAKICNpZiBFTkFCTEUoV0VCR0wpCi1TY3JpcHRPYmplY3QgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVu
dGF0aW9uKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU2NyaXB0T2JqZWN0JiBnbENvbnRleHQp
CitEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3cmFw
V2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKERvY3VtZW50KiBkb2N1bWVu
dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiBnbENvbnRleHQpCiB7CiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChkb2N1bWVudCkpIHsKQEAg
LTY0LDcgKzY0LDcgQEAgU2NyaXB0T2JqZWN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d3Jh
cFdlYkdMUmVuZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnRhdGkKICAgICBVTlVTRURfUEFSQU0o
ZG9jdW1lbnQpOwogICAgIFVOVVNFRF9QQVJBTShnbENvbnRleHQpOwogI2VuZGlmCi0gICAgcmV0
dXJuIFNjcmlwdE9iamVjdCgpOworICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3Qo
KTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNsaWVudC5jcHAKaW5kZXggYzY3MjE0Mi4uYzMzZTZhYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5jcHAKQEAgLTM4LDcgKzM4LDkg
QEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2lu
Y2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNsaWVudC5oCmluZGV4IDQ0ZTdlYTE2YS4uZGYzODlkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaApAQCAtMjcsNiArMjcsNyBAQAogI2lmbmRl
ZiBJbnNwZWN0b3JDbGllbnRfaAogI2RlZmluZSBJbnNwZWN0b3JDbGllbnRfaAogCisjaW5jbHVk
ZSAiSW5zcGVjdG9yRm9yd2FyZGluZy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtMzQsNyAr
MzUsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVy
OwotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBQ
YWdlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
c29sZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xl
QWdlbnQuY3BwCmluZGV4IGRhYTljNWIuLmRlMTZmNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCkBAIC00MywxNCArNDMsMTYg
QEAKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3Rh
Y2tGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNj
cmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGVyLmgiCisjaW5jbHVkZSA8Ymlu
ZGluZ3MvU2NyaXB0T2JqZWN0Lmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5j
bHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhpbXVtQ29uc29sZU1lc3NhZ2VzID0gMTAwMDsK
QEAgLTU5LDcgKzYxLDcgQEAgc3RhdGljIGNvbnN0IGludCBleHBpcmVDb25zb2xlTWVzc2FnZXNT
dGVwID0gMTAwOwogaW50IEluc3BlY3RvckNvbnNvbGVBZ2VudDo6c19lbmFibGVkQWdlbnRDb3Vu
dCA9IDA7CiAKIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6SW5zcGVjdG9yQ29uc29sZUFnZW50KElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluamVjdGVkU2NyaXB0TWFu
YWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFT
Q0lJTGl0ZXJhbCgiQ29uc29sZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVj
dG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiQ29uc29sZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRz
KQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQog
ICAgICwgbV9wcmV2aW91c01lc3NhZ2UoMCkKICAgICAsIG1fZXhwaXJlZENvbnNvbGVNZXNzYWdl
Q291bnQoMCkKQEAgLTEyMiw3ICsxMjQsNyBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6
cmVzZXQoKQogICAgIG1fY291bnRzLmNsZWFyKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29uc29s
ZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5k
RGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5k
Q2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQog
ewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JD
b25zb2xlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2Vu
ZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JDb25zb2xlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShi
YWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CkBAIC0zMjAsNyArMzIyLDcgQEAgdm9pZCBJbnNwZWN0
b3JDb25zb2xlQWdlbnQ6OmFkZENvbnNvbGVNZXNzYWdlKFBhc3NPd25QdHI8Q29uc29sZU1lc3Nh
Z2U+IGNvbnNvbGUKIGNsYXNzIEluc3BlY3RhYmxlSGVhcE9iamVjdCA6IHB1YmxpYyBJbmplY3Rl
ZFNjcmlwdEhvc3Q6Okluc3BlY3RhYmxlT2JqZWN0IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBJ
bnNwZWN0YWJsZUhlYXBPYmplY3QoaW50IGhlYXBPYmplY3RJZCkgOiBtX2hlYXBPYmplY3RJZCho
ZWFwT2JqZWN0SWQpIHsgfQotICAgIHZpcnR1YWwgU2NyaXB0VmFsdWUgZ2V0KEpTQzo6RXhlY1N0
YXRlKikKKyAgICB2aXJ0dWFsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGdldChKU0M6OkV4ZWNT
dGF0ZSopCiAgICAgewogICAgICAgICByZXR1cm4gU2NyaXB0UHJvZmlsZXI6Om9iamVjdEJ5SGVh
cE9iamVjdElkKG1faGVhcE9iamVjdElkKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKaW5kZXggYzBmMGFkYy4uOTk0NTVjYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQu
aApAQCAtMjksOCArMjksOSBAQAogCiAjaW5jbHVkZSAiQ29uc29sZUFQSVR5cGVzLmgiCiAjaW5j
bHVkZSAiQ29uc29sZVR5cGVzLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisj
aW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yRnJvbnRlbmQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNs
dWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KQEAgLTUyLDcgKzUzLDcgQEAgY2xhc3MgU2NyaXB0UHJvZmlsZTsKIAog
dHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckNvbnNvbGVBZ2Vu
dCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JDb25zb2xlQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckNvbnNvbGVBZ2VudCA6IHB1
YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JDb25zb2xlQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JDb25z
b2xlQWdlbnQpOwogcHVibGljOgogICAgIEluc3BlY3RvckNvbnNvbGVBZ2VudChJbnN0cnVtZW50
aW5nQWdlbnRzKiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKik7CkBAIC02NCw3ICs2NSw3IEBAIHB1
YmxpYzoKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KICAg
ICB2b2lkIHJlc2V0KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIHZvaWQgYWRkTWVz
c2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIEpTQzo6RXhlY1N0YXRlKiwgUGFzc1JlZlB0cjxTY3JpcHRB
cmd1bWVudHM+LCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyID0gMCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggZTIz
ZmUwNy4uNDM3NzU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcApAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgIkluc3BlY3RvckFn
ZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9y
QmFzZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ1NTQWdlbnQuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JDYW52YXNBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgpAQCAt
NzEsOCArNzAsMTAgQEAKICNpbmNsdWRlICJQYWdlRGVidWdnZXJBZ2VudC5oIgogI2luY2x1ZGUg
IlBhZ2VSdW50aW1lQWdlbnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiU2NyaXB0
T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaD4KKwordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCBhNmUyZDdkLi5mNmU2ZDg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTMzLDEzICszMywx
OCBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvckFnZW50
UmVnaXN0cnkuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlIDxp
bnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CitjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CitjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWw7CitjbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKK30KKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CkBAIC00OCwxNSArNTMsMTIgQEAgY2xh
c3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3Mg
SW5zcGVjdG9yQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ7Ci1j
bGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKIGNsYXNzIEluc3BlY3RvckNsaWVudDsK
IGNsYXNzIEluc3BlY3RvckRPTUFnZW50OwogY2xhc3MgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dDsKIGNsYXNzIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWw7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENsaWVudDsKIGNsYXNzIEluc3BlY3Rv
ck1lbW9yeUFnZW50OwotY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3MgSW5zcGVjdG9yT3Zl
cmxheTsKIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKIGNsYXNzIEluc3BlY3RvclByb2ZpbGVy
QWdlbnQ7CkBAIC05NSw3ICs5Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0xvY2FsRnJvbnRl
bmQoKSBjb25zdDsKICAgICBib29sIGhhc1JlbW90ZUZyb250ZW5kKCkgY29uc3Q7CiAKLSAgICB2
b2lkIGNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKTsKKyAgICB2b2lk
IGNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCopOwog
ICAgIHZvaWQgZGlzY29ubmVjdEZyb250ZW5kKCk7CiAgICAgdm9pZCBzZXRQcm9jZXNzSWQobG9u
Zyk7CiAKQEAgLTExMSw3ICsxMTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEluZGljYXRp
bmcoYm9vbCk7CiAKLSAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RG
b3JIaWdobGlnaHRlZE5vZGUoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZSgpIGNvbnN0OwogCiAg
ICAgYm9vbCBpc1VuZGVyVGVzdCgpOwogICAgIHZvaWQgZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVu
ZChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQpOwpAQCAtMTU0LDEyICsxNTYsMTIg
QEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JQcm9maWxlckFnZW50KiBtX3Byb2ZpbGVyQWdlbnQ7
CiAjZW5kaWYKIAotICAgIFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9pbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcj4gbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBPd25Q
dHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7Ci0g
ICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsK
KyAgICBJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWw7CiAgICAgUGFnZSogbV9wYWdlOwogICAgIEluc3BlY3RvckNsaWVudCogbV9p
bnNwZWN0b3JDbGllbnQ7Ci0gICAgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeSBtX2FnZW50czsKKyAg
ICBJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50UmVnaXN0cnkgbV9hZ2VudHM7CiAgICAgYm9vbCBt
X2lzVW5kZXJUZXN0OwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCAzNzAzNDM4Li5l
MWQyNzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5jcHAKQEAgLTEwMSw2ICsxMDEsOCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OwpAQCAtMjEwLDcgKzIxMiw3IEBAIFN0cmluZyBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0
cmluZyhjb25zdCBFeGNlcHRpb25Db2RlJiBlYykKIH0KIAogSW5zcGVjdG9yRE9NQWdlbnQ6Oklu
c3BlY3RvckRPTUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMs
IEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGlu
amVjdGVkU2NyaXB0TWFuYWdlciwgSW5zcGVjdG9yT3ZlcmxheSogb3ZlcmxheSwgSW5zcGVjdG9y
Q2xpZW50KiBjbGllbnQpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJE
T00iKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJ
SUxpdGVyYWwoIkRPTSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9wYWdlQWdlbnQo
cGFnZUFnZW50KQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKQogICAgICwgbV9vdmVybGF5KG92ZXJsYXkpCkBAIC0yMzAsNyArMjMyLDcgQEAgSW5z
cGVjdG9yRE9NQWdlbnQ6On5JbnNwZWN0b3JET01BZ2VudCgpCiAgICAgQVNTRVJUKCFtX3NlYXJj
aGluZ0Zvck5vZGUpOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWws
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Oklu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNo
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRPTUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJv
bnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yRE9NQmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CkBAIC00MjAs
NyArNDIyLDcgQEAgRWxlbWVudCogSW5zcGVjdG9yRE9NQWdlbnQ6OmFzc2VydEVkaXRhYmxlRWxl
bWVudChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludAogICAgIHJldHVybiBlbGVtZW50Owog
fQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXREb2N1bWVudChFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIFJlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiYgcm9vdCkKK3ZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OmdldERvY3VtZW50KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4mIHJvb3QpCiB7CiAgICAgbV9k
b2N1bWVudFJlcXVlc3RlZCA9IHRydWU7CiAKQEAgLTQ2MCw3ICs0NjIsNyBAQCB2b2lkIEluc3Bl
Y3RvckRPTUFnZW50OjpwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQoaW50IG5vZGVJZCwgaW50IGRl
cHRoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpB
cnJheTxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPj4gY2hpbGRyZW4gPSBidWlsZEFycmF5Rm9yQ29u
dGFpbmVyQ2hpbGRyZW4obm9kZSwgZGVwdGgsIG5vZGVNYXApOworICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+
PiBjaGlsZHJlbiA9IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihub2RlLCBkZXB0aCwg
bm9kZU1hcCk7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnNldENoaWxkTm9kZXMobm9kZUlk
LCBjaGlsZHJlbi5yZWxlYXNlKCkpOwogfQogCkBAIC01MzgsNyArNTQwLDcgQEAgdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6cXVlcnlTZWxlY3RvcihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGlu
dCBub2RlSWQsIGNvbnMKICAgICAgICAgKmVsZW1lbnRJZCA9IHB1c2hOb2RlUGF0aFRvRnJvbnRl
bmQoZWxlbWVudC5nZXQoKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnF1ZXJ5U2Vs
ZWN0b3JBbGwoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJp
bmcmIHNlbGVjdG9ycywgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+PiYgcmVzdWx0KQor
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cXVlcnlTZWxlY3RvckFsbChFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4mIHJlc3VsdCkKIHsKICAgICBOb2RlKiBu
b2RlID0gYXNzZXJ0Tm9kZShlcnJvclN0cmluZywgbm9kZUlkKTsKICAgICBpZiAoIW5vZGUpCkBA
IC01NTUsNyArNTU3LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cXVlcnlTZWxlY3RvckFs
bChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGMKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+OjpjcmVhdGUo
KTsKKyAgICByZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+OjpjcmVh
dGUoKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBub2Rlcy0+bGVuZ3RoKCk7ICsr
aSkKICAgICAgICAgcmVzdWx0LT5hZGRJdGVtKHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQobm9kZXMt
Pml0ZW0oaSkpKTsKQEAgLTU4Niw3ICs1ODgsNyBAQCBpbnQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1
c2hOb2RlUGF0aFRvRnJvbnRlbmQoTm9kZSogbm9kZVRvUHVzaCkKICAgICAgICAgICAgIE93blB0
cjxOb2RlVG9JZE1hcD4gbmV3TWFwID0gYWRvcHRQdHIobmV3IE5vZGVUb0lkTWFwKTsKICAgICAg
ICAgICAgIGRhbmdsaW5nTWFwID0gbmV3TWFwLmdldCgpOwogICAgICAgICAgICAgbV9kYW5nbGlu
Z05vZGVUb0lkTWFwcy5hcHBlbmQobmV3TWFwLnJlbGVhc2UoKSk7Ci0gICAgICAgICAgICBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpET006Ok5vZGU+PiBjaGlsZHJlbiA9
IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPjo6Y3JlYXRlKCk7Cisg
ICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPj4gY2hpbGRyZW4gPSBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+OjpjcmVhdGUoKTsK
ICAgICAgICAgICAgIGNoaWxkcmVuLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTm9kZShub2RlLCAw
LCBkYW5nbGluZ01hcCkpOwogICAgICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnNldENo
aWxkTm9kZXMoMCwgY2hpbGRyZW4pOwogICAgICAgICAgICAgYnJlYWs7CkBAIC04MTMsOSArODE1
LDkgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0Tm9kZVZhbHVlKEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QKICAgICBtX2RvbUVkaXRvci0+cmVwbGFjZVdo
b2xlVGV4dCh0b1RleHQobm9kZSksIHZhbHVlLCBlcnJvclN0cmluZyk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRPTTo6RXZlbnRMaXN0ZW5lcj4+JiBsaXN0
ZW5lcnNBcnJheSkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlzdGVuZXJzRm9y
Tm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyog
b2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI+PiYgbGlzdGVuZXJzQXJyYXkpCiB7
Ci0gICAgbGlzdGVuZXJzQXJyYXkgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRP
TTo6RXZlbnRMaXN0ZW5lcj46OmNyZWF0ZSgpOworICAgIGxpc3RlbmVyc0FycmF5ID0gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpFdmVu
dExpc3RlbmVyPjo6Y3JlYXRlKCk7CiAgICAgTm9kZSogbm9kZSA9IGFzc2VydE5vZGUoZXJyb3JT
dHJpbmcsIG5vZGVJZCk7CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm47CkBAIC05MjEs
NyArOTIzLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cGVyZm9ybVNlYXJjaChFcnJvclN0
cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgd2gKICAgICAqcmVzdWx0Q291bnQgPSBy
ZXN1bHRzVmVjdG9yLnNpemUoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0U2Vh
cmNoUmVzdWx0cyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc2VhcmNo
SWQsIGludCBmcm9tSW5kZXgsIGludCB0b0luZGV4LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5
PGludD4+JiBub2RlSWRzKQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0U2VhcmNoUmVzdWx0
cyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc2VhcmNoSWQsIGludCBm
cm9tSW5kZXgsIGludCB0b0luZGV4LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8aW50Pj4mIG5vZGVJZHMpCiB7CiAgICAgU2VhcmNoUmVzdWx0czo6aXRlcmF0b3IgaXQgPSBt
X3NlYXJjaFJlc3VsdHMuZmluZChzZWFyY2hJZCk7CiAgICAgaWYgKGl0ID09IG1fc2VhcmNoUmVz
dWx0cy5lbmQoKSkgewpAQCAtOTM1LDcgKzkzNyw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OmdldFNlYXJjaFJlc3VsdHMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBub2RlSWRzID0gVHlwZUJ1aWxkZXI6OkFy
cmF5PGludD46OmNyZWF0ZSgpOworICAgIG5vZGVJZHMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKICAgICBmb3IgKGludCBpID0gZnJvbUluZGV4OyBpIDwg
dG9JbmRleDsgKytpKQogICAgICAgICBub2RlSWRzLT5hZGRJdGVtKHB1c2hOb2RlUGF0aFRvRnJv
bnRlbmQoKGl0LT52YWx1ZSlbaV0uZ2V0KCkpKTsKIH0KQEAgLTEyMTIsNyArMTIxNCw3IEBAIHZv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldEZpbGVJbnB1dEZpbGVzKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgaW50IG5vZGVJZCwKICAgICBlbGVtZW50LT5zZXRGaWxlcyhmaWxlTGlzdCk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlc29sdmVOb2RlKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nKiBjb25zdCBvYmplY3RHcm91cCwgUmVm
UHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpCit2b2lkIElu
c3BlY3RvckRPTUFnZW50OjpyZXNvbHZlTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGlu
dCBub2RlSWQsIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpCiB7CiAgICAg
U3RyaW5nIG9iamVjdEdyb3VwTmFtZSA9IG9iamVjdEdyb3VwID8gKm9iamVjdEdyb3VwIDogIiI7
CiAgICAgTm9kZSogbm9kZSA9IG5vZGVGb3JJZChub2RlSWQpOwpAQCAtMTIyMCw3ICsxMjIyLDcg
QEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cmVzb2x2ZU5vZGUoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdAogICAgICAgICAqZXJyb3JTdHJpbmcgPSAiTm8gbm9k
ZSB3aXRoIGdpdmVuIGlkIGZvdW5kIjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gb2JqZWN0ID0gcmVzb2x2ZU5v
ZGUobm9kZSwgb2JqZWN0R3JvdXBOYW1lKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBvYmplY3QgPSByZXNvbHZlTm9kZShub2RlLCBv
YmplY3RHcm91cE5hbWUpOwogICAgIGlmICghb2JqZWN0KSB7CiAgICAgICAgICplcnJvclN0cmlu
ZyA9ICJOb2RlIHdpdGggZ2l2ZW4gaWQgZG9lcyBub3QgYmVsb25nIHRvIHRoZSBkb2N1bWVudCI7
CiAgICAgICAgIHJldHVybjsKQEAgLTEyMjgsNyArMTIzMCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6OnJlc29sdmVOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwg
Y29uc3QKICAgICByZXN1bHQgPSBvYmplY3Q7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OmdldEF0dHJpYnV0ZXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvckRP
TUFnZW50OjpnZXRBdHRyaWJ1dGVzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJ
ZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+JiByZXN1bHQp
CiB7CiAgICAgRWxlbWVudCogZWxlbWVudCA9IGFzc2VydEVsZW1lbnQoZXJyb3JTdHJpbmcsIG5v
ZGVJZCk7CiAgICAgaWYgKCFlbGVtZW50KQpAQCAtMTI2MCw3ICsxMjYyLDcgQEAgc3RhdGljIFN0
cmluZyBkb2N1bWVudEJhc2VVUkxTdHJpbmcoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIHJldHVy
biBkb2N1bWVudC0+Y29tcGxldGVVUkwoIiIpLnN0cmluZygpOwogfQogCi1QYXNzUmVmUHRyPFR5
cGVCdWlsZGVyOjpET006Ok5vZGU+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvck5v
ZGUoTm9kZSogbm9kZSwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApCitQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4gSW5zcGVjdG9yRE9NQWdlbnQ6
OmJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiBub2RlLCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFwKiBu
b2Rlc01hcCkKIHsKICAgICBpbnQgaWQgPSBiaW5kKG5vZGUsIG5vZGVzTWFwKTsKICAgICBTdHJp
bmcgbm9kZU5hbWU7CkBAIC0xMjg5LDcgKzEyOTEsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVy
OjpET006Ok5vZGU+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvck5vZGUoTm9kZSog
bgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6
Tm9kZT4gdmFsdWUgPSBUeXBlQnVpbGRlcjo6RE9NOjpOb2RlOjpjcmVhdGUoKQorICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+IHZhbHVlID0gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6RE9NOjpOb2RlOjpjcmVhdGUoKQogICAgICAgICAuc2V0Tm9kZUlkKGlkKQog
ICAgICAgICAuc2V0Tm9kZVR5cGUoc3RhdGljX2Nhc3Q8aW50Pihub2RlLT5ub2RlVHlwZSgpKSkK
ICAgICAgICAgLnNldE5vZGVOYW1lKG5vZGVOYW1lKQpAQCAtMTI5OSw3ICsxMzAxLDcgQEAgUGFz
c1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRP
YmplY3RGb3JOb2RlKE5vZGUqIG4KICAgICBpZiAobm9kZS0+aXNDb250YWluZXJOb2RlKCkpIHsK
ICAgICAgICAgaW50IG5vZGVDb3VudCA9IGlubmVyQ2hpbGROb2RlQ291bnQobm9kZSk7CiAgICAg
ICAgIHZhbHVlLT5zZXRDaGlsZE5vZGVDb3VudChub2RlQ291bnQpOwotICAgICAgICBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpET006Ok5vZGU+PiBjaGlsZHJlbiA9IGJ1
aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihub2RlLCBkZXB0aCwgbm9kZXNNYXApOworICAg
ICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6RE9NOjpOb2RlPj4gY2hpbGRyZW4gPSBidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hp
bGRyZW4obm9kZSwgZGVwdGgsIG5vZGVzTWFwKTsKICAgICAgICAgaWYgKGNoaWxkcmVuLT5sZW5n
dGgoKSA+IDApCiAgICAgICAgICAgICB2YWx1ZS0+c2V0Q2hpbGRyZW4oY2hpbGRyZW4ucmVsZWFz
ZSgpKTsKICAgICB9CkBAIC0xMzE4LDcgKzEzMjAsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVy
OjpET006Ok5vZGU+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvck5vZGUoTm9kZSog
bgogICAgICAgICB9CiAKICAgICAgICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSBlbGVtZW50LT5z
aGFkb3dSb290KCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlw
ZUJ1aWxkZXI6OkRPTTo6Tm9kZT4+IHNoYWRvd1Jvb3RzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5
cGVCdWlsZGVyOjpET006Ok5vZGU+OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5v
ZGU+PiBzaGFkb3dSb290cyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT46OmNyZWF0ZSgpOwogICAgICAgICAgICAgc2hhZG93
Um9vdHMtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JOb2RlKHJvb3QsIDAsIG5vZGVzTWFwKSk7CiAg
ICAgICAgICAgICB2YWx1ZS0+c2V0U2hhZG93Um9vdHMoc2hhZG93Um9vdHMpOwogICAgICAgICB9
CkBAIC0xMzQ2LDkgKzEzNDgsOSBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpET006Ok5vZGU+
IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvck5vZGUoTm9kZSogbgogICAgIHJldHVy
biB2YWx1ZS5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0
cmluZz4+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yRWxlbWVudEF0dHJpYnV0ZXMo
RWxlbWVudCogZWxlbWVudCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8U3RyaW5nPj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmli
dXRlcyhFbGVtZW50KiBlbGVtZW50KQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8
U3RyaW5nPj4gYXR0cmlidXRlc1ZhbHVlID0gVHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz46OmNy
ZWF0ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+
PiBhdHRyaWJ1dGVzVmFsdWUgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+
OjpjcmVhdGUoKTsKICAgICAvLyBHbyB0aHJvdWdoIGFsbCBhdHRyaWJ1dGVzIGFuZCBzZXJpYWxp
emUgdGhlbS4KICAgICBpZiAoIWVsZW1lbnQtPmhhc0F0dHJpYnV0ZXMoKSkKICAgICAgICAgcmV0
dXJuIGF0dHJpYnV0ZXNWYWx1ZS5yZWxlYXNlKCk7CkBAIC0xMzYyLDkgKzEzNjQsOSBAQCBQYXNz
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBJbnNwZWN0b3JET01BZ2VudDo6YnVp
bGRBcnJheUZvckVsZW1lbnRBdAogICAgIHJldHVybiBhdHRyaWJ1dGVzVmFsdWUucmVsZWFzZSgp
OwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RE9NOjpO
b2RlPj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihO
b2RlKiBjb250YWluZXIsIGludCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKQorUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpET006Ok5vZGU+PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckNvbnRhaW5lckNo
aWxkcmVuKE5vZGUqIGNvbnRhaW5lciwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCogbm9kZXNNYXAp
CiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RE9NOjpOb2Rl
Pj4gY2hpbGRyZW4gPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT46
OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+PiBjaGlsZHJlbiA9IEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT46OmNyZWF0
ZSgpOwogICAgIGlmIChkZXB0aCA9PSAwKSB7CiAgICAgICAgIC8vIFNwZWNpYWwtY2FzZSB0aGUg
b25seSB0ZXh0IGNoaWxkIC0gcHJldGVuZCB0aGF0IGNvbnRhaW5lcidzIGNoaWxkcmVuIGhhdmUg
YmVlbiByZXF1ZXN0ZWQuCiAgICAgICAgIE5vZGUqIGZpcnN0Q2hpbGQgPSBjb250YWluZXItPmZp
cnN0Q2hpbGQoKTsKQEAgLTEzODYsNyArMTM4OCw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6
OkFycmF5PFR5cGVCdWlsZGVyOjpET006Ok5vZGU+PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRB
CiAgICAgcmV0dXJuIGNoaWxkcmVuLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6RE9NOjpFdmVudExpc3RlbmVyPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RG
b3JFdmVudExpc3RlbmVyKGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiByZWdpc3RlcmVk
RXZlbnRMaXN0ZW5lciwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIE5vZGUqIG5vZGUs
IGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXBJZCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6RE9NOjpFdmVudExpc3RlbmVyPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmpl
Y3RGb3JFdmVudExpc3RlbmVyKGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiByZWdpc3Rl
cmVkRXZlbnRMaXN0ZW5lciwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIE5vZGUqIG5v
ZGUsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXBJZCkKIHsKICAgICBSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4gZXZlbnRMaXN0ZW5lciA9IHJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmxpc3RlbmVyOwog
CkBAIC0xNDE0LDcgKzE0MTYsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpET006OkV2ZW50
TGlzdGVuZXI+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvckV2ZQogICAgICAgICB9
CiAgICAgfQogCi0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI+IHZh
bHVlID0gVHlwZUJ1aWxkZXI6OkRPTTo6RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKCkKKyAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpFdmVudExpc3RlbmVyPiB2YWx1ZSA9IElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKCkKICAgICAg
ICAgLnNldFR5cGUoZXZlbnRUeXBlKQogICAgICAgICAuc2V0VXNlQ2FwdHVyZShyZWdpc3RlcmVk
RXZlbnRMaXN0ZW5lci51c2VDYXB0dXJlKQogICAgICAgICAuc2V0SXNBdHRyaWJ1dGUoZXZlbnRM
aXN0ZW5lci0+aXNBdHRyaWJ1dGUoKSkKQEAgLTE0MjMsMTAgKzE0MjUsMTAgQEAgUGFzc1JlZlB0
cjxUeXBlQnVpbGRlcjo6RE9NOjpFdmVudExpc3RlbmVyPiBJbnNwZWN0b3JET01BZ2VudDo6YnVp
bGRPYmplY3RGb3JFdmUKICAgICBpZiAob2JqZWN0R3JvdXBJZCAmJiBoYW5kbGVyICYmIHN0YXRl
KSB7CiAgICAgICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yKHN0YXRlKTsKICAgICAgICAgaWYgKCFpbmpl
Y3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCi0gICAgICAgICAgICB2YWx1ZS0+c2V0SGFuZGxlcihp
bmplY3RlZFNjcmlwdC53cmFwT2JqZWN0KFNjcmlwdFZhbHVlKHN0YXRlLT52bSgpLCBoYW5kbGVy
KSwgKm9iamVjdEdyb3VwSWQpKTsKKyAgICAgICAgICAgIHZhbHVlLT5zZXRIYW5kbGVyKGluamVj
dGVkU2NyaXB0LndyYXBPYmplY3QoRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoc3RhdGUtPnZtKCks
IGhhbmRsZXIpLCAqb2JqZWN0R3JvdXBJZCkpOwogICAgIH0KICAgICBpZiAoIXNjcmlwdElELmlz
TnVsbCgpKSB7Ci0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9u
PiBsb2NhdGlvbiA9IFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb246OmNyZWF0ZSgpCisg
ICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+
IGxvY2F0aW9uID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uOjpj
cmVhdGUoKQogICAgICAgICAgICAgLnNldFNjcmlwdElkKHNjcmlwdElEKQogICAgICAgICAgICAg
LnNldExpbmVOdW1iZXIobGluZU51bWJlcik7CiAgICAgICAgIHZhbHVlLT5zZXRMb2NhdGlvbihs
b2NhdGlvbi5yZWxlYXNlKCkpOwpAQCAtMTUwOSw3ICsxNTExLDcgQEAgdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6ZGlkQ29tbWl0TG9hZChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXItPmNoaWxkTm9kZVJlbW92ZWQocGFyZW50SWQsIGZyYW1lT3duZXJJZCk7CiAg
ICAgdW5iaW5kKGZyYW1lT3duZXIsICZtX2RvY3VtZW50Tm9kZVRvSWRNYXApOwogCi0gICAgUmVm
UHRyPFR5cGVCdWlsZGVyOjpET006Ok5vZGU+IHZhbHVlID0gYnVpbGRPYmplY3RGb3JOb2RlKGZy
YW1lT3duZXIsIDAsICZtX2RvY3VtZW50Tm9kZVRvSWRNYXApOworICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+IHZhbHVlID0gYnVpbGRPYmplY3RGb3JOb2RlKGZy
YW1lT3duZXIsIDAsICZtX2RvY3VtZW50Tm9kZVRvSWRNYXApOwogICAgIE5vZGUqIHByZXZpb3Vz
U2libGluZyA9IGlubmVyUHJldmlvdXNTaWJsaW5nKGZyYW1lT3duZXIpOwogICAgIGludCBwcmV2
SWQgPSBwcmV2aW91c1NpYmxpbmcgPyBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KHByZXZpb3Vz
U2libGluZykgOiAwOwogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5jaGlsZE5vZGVJbnNlcnRl
ZChwYXJlbnRJZCwgcHJldklkLCB2YWx1ZS5yZWxlYXNlKCkpOwpAQCAtMTUzOSw3ICsxNTQxLDcg
QEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkSW5zZXJ0RE9NTm9kZShOb2RlKiBub2RlKQog
ICAgICAgICAvLyBDaGlsZHJlbiBoYXZlIGJlZW4gcmVxdWVzdGVkIC0+IHJldHVybiB2YWx1ZSBv
ZiBhIG5ldyBjaGlsZC4KICAgICAgICAgTm9kZSogcHJldlNpYmxpbmcgPSBpbm5lclByZXZpb3Vz
U2libGluZyhub2RlKTsKICAgICAgICAgaW50IHByZXZJZCA9IHByZXZTaWJsaW5nID8gbV9kb2N1
bWVudE5vZGVUb0lkTWFwLmdldChwcmV2U2libGluZykgOiAwOwotICAgICAgICBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkRPTTo6Tm9kZT4gdmFsdWUgPSBidWlsZE9iamVjdEZvck5vZGUobm9kZSwgMCwg
Jm1fZG9jdW1lbnROb2RlVG9JZE1hcCk7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpET006Ok5vZGU+IHZhbHVlID0gYnVpbGRPYmplY3RGb3JOb2RlKG5vZGUsIDAsICZt
X2RvY3VtZW50Tm9kZVRvSWRNYXApOwogICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+Y2hp
bGROb2RlSW5zZXJ0ZWQocGFyZW50SWQsIHByZXZJZCwgdmFsdWUucmVsZWFzZSgpKTsKICAgICB9
CiB9CkBAIC0xNjA0LDcgKzE2MDYsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRSZW1v
dmVET01BdHRyKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbgogCiB2b2lk
IEluc3BlY3RvckRPTUFnZW50OjpzdHlsZUF0dHJpYnV0ZUludmFsaWRhdGVkKGNvbnN0IFZlY3Rv
cjxFbGVtZW50Kj4mIGVsZW1lbnRzKQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8
aW50Pj4gbm9kZUlkcyA9IFR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKKyAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4gbm9kZUlkcyA9IEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PGludD46OmNyZWF0ZSgpOwogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDAsIHNpemUgPSBlbGVtZW50cy5zaXplKCk7IGkgPCBzaXplOyArK2kpIHsKICAgICAg
ICAgRWxlbWVudCogZWxlbWVudCA9IGVsZW1lbnRzLmF0KGkpOwogICAgICAgICBpbnQgaWQgPSBi
b3VuZE5vZGVJZChlbGVtZW50KTsKQEAgLTE3MjksNyArMTczMSw3IEBAIHZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6OnB1c2hOb2RlQnlCYWNrZW5kSWRUb0Zyb250ZW5kKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJl
bW90ZU9iamVjdD4gSW5zcGVjdG9yRE9NQWdlbnQ6OnJlc29sdmVOb2RlKE5vZGUqIG5vZGUsIGNv
bnN0IFN0cmluZyYgb2JqZWN0R3JvdXApCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5zcGVjdG9yRE9NQWdlbnQ6OnJlc29sdmVOb2Rl
KE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApCiB7CiAgICAgRnJhbWUqIGZy
YW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IGE1ZDYwYmMuLmYw
MWY5YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5o
CkBAIC0zMywxMyArMzMsMTMgQEAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUg
IkluamVjdGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCi0j
aW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JPdmVybGF5LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCisjaW5j
bHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIK
ICNpbmNsdWRlICJUaW1lci5oIgotCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVl
cy5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTQ5LDcgKzQ5LDEyIEBACiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCituYW1lc3Bh
Y2UgRGVwcmVjYXRlZCB7CitjbGFzcyBTY3JpcHRWYWx1ZTsKK30KKwogbmFtZXNwYWNlIFdlYkNv
cmUgeworCiBjbGFzcyBDb250YWluZXJOb2RlOwogY2xhc3MgQ2hhcmFjdGVyRGF0YTsKIGNsYXNz
IERPTUVkaXRvcjsKQEAgLTY2LDcgKzcxLDYgQEAgY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsK
IGNsYXNzIE5hbWVOb2RlTWFwOwogY2xhc3MgTm9kZTsKIGNsYXNzIFJldmFsaWRhdGVTdHlsZUF0
dHJpYnV0ZVRhc2s7Ci1jbGFzcyBTY3JpcHRWYWx1ZTsKIGNsYXNzIFNoYWRvd1Jvb3Q7CiAKIHN0
cnVjdCBIaWdobGlnaHRDb25maWc7CkBAIC04OSw3ICs5Myw3IEBAIHN0cnVjdCBFdmVudExpc3Rl
bmVySW5mbyB7CiAgICAgY29uc3QgRXZlbnRMaXN0ZW5lclZlY3RvciBldmVudExpc3RlbmVyVmVj
dG9yOwogfTsKIAotY2xhc3MgSW5zcGVjdG9yRE9NQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFz
ZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yRE9NQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2Ns
YXNzIEluc3BlY3RvckRPTUFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGlj
IEluc3BlY3RvckRPTUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoSW5zcGVjdG9yRE9NQWdlbnQpOwogcHVibGljOgogICAgIHN0cnVjdCBET01MaXN0
ZW5lciB7CkBAIC0xMTAsNyArMTE0LDcgQEAgcHVibGljOgogCiAgICAgfkluc3BlY3RvckRPTUFn
ZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIFZlY3RvcjxEb2N1bWVudCo+IGRv
Y3VtZW50cygpOwpAQCAtMTE4LDggKzEyMiw4IEBAIHB1YmxpYzoKIAogICAgIC8vIE1ldGhvZHMg
Y2FsbGVkIGZyb20gdGhlIGZyb250ZW5kIGZvciBET00gbm9kZXMgaW5zcGVjdGlvbi4KICAgICB2
aXJ0dWFsIHZvaWQgcXVlcnlTZWxlY3RvcihFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0
IFN0cmluZyYgc2VsZWN0b3JzLCBpbnQqIGVsZW1lbnRJZCk7Ci0gICAgdmlydHVhbCB2b2lkIHF1
ZXJ5U2VsZWN0b3JBbGwoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHNl
bGVjdG9ycywgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+PiYgcmVzdWx0KTsKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0RG9jdW1lbnQoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkRPTTo6Tm9kZT4mIHJvb3QpOworICAgIHZpcnR1YWwgdm9pZCBxdWVyeVNlbGVjdG9yQWxsKEVy
cm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+PiYgcmVzdWx0KTsKKyAgICB2aXJ0dWFs
IHZvaWQgZ2V0RG9jdW1lbnQoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6RE9NOjpOb2RlPiYgcm9vdCk7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGlsZE5v
ZGVzKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgaW50KiBkZXB0aCk7CiAgICAgdmly
dHVhbCB2b2lkIHNldEF0dHJpYnV0ZVZhbHVlKEVycm9yU3RyaW5nKiwgaW50IGVsZW1lbnRJZCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0QXR0cmlidXRlc0FzVGV4dChFcnJvclN0cmluZyosIGludCBlbGVtZW50SWQsIGNvbnN0
IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nKiBuYW1lKTsKQEAgLTEyOSwyOSArMTMzLDI5IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0T3V0ZXJIVE1MKEVycm9yU3RyaW5nKiwgaW50
IG5vZGVJZCwgV1RGOjpTdHJpbmcqIG91dGVySFRNTCk7CiAgICAgdmlydHVhbCB2b2lkIHNldE91
dGVySFRNTChFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgb3V0ZXJIVE1M
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9kZVZhbHVlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJ
ZCwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0gICAgdmlydHVhbCB2b2lkIGdldEV2ZW50TGlzdGVu
ZXJzRm9yTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFdURjo6U3RyaW5nKiBv
YmplY3RHcm91cCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RE9NOjpF
dmVudExpc3RlbmVyPj4mIGxpc3RlbmVyc0FycmF5KTsKLSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9y
bVNlYXJjaChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgd2hpdGVzcGFjZVRyaW1tZWRRdWVy
eSwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5Piogbm9kZUlkcywgU3RyaW5nKiBzZWFyY2hJ
ZCwgaW50KiByZXN1bHRDb3VudCk7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNlYXJjaFJlc3VsdHMo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNlYXJjaElkLCBpbnQgZnJvbUluZGV4LCBpbnQg
dG9JbmRleCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+PiYpOworICAgIHZpcnR1YWwg
dm9pZCBnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBj
b25zdCBXVEY6OlN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI+PiYg
bGlzdGVuZXJzQXJyYXkpOworICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtU2VhcmNoKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiB3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5LCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4qIG5vZGVJZHMsIFN0cmluZyogc2VhcmNoSWQsIGlu
dCogcmVzdWx0Q291bnQpOworICAgIHZpcnR1YWwgdm9pZCBnZXRTZWFyY2hSZXN1bHRzKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCwgaW50IGZyb21JbmRleCwgaW50IHRvSW5k
ZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+PiYpOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNjYXJkU2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgc2VhcmNoSWQpOwotICAgIHZpcnR1YWwgdm9pZCByZXNvbHZlTm9kZShFcnJvclN0cmluZyos
IGludCBub2RlSWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxUeXBlQnVpbGRl
cjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0KTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
QXR0cmlidXRlcyhFcnJvclN0cmluZyosIGludCBub2RlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6
QXJyYXk8U3RyaW5nPj4mIHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldEluc3BlY3RNb2Rl
RW5hYmxlZChFcnJvclN0cmluZyosIGJvb2wgZW5hYmxlZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4qIGhpZ2hsaWdodENvbmZpZyk7CisgICAgdmlydHVhbCB2b2lkIHJlc29sdmVOb2Rl
KEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3Vs
dCk7CisgICAgdmlydHVhbCB2b2lkIGdldEF0dHJpYnV0ZXMoRXJyb3JTdHJpbmcqLCBpbnQgbm9k
ZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4mIHJlc3Vs
dCk7CisgICAgdmlydHVhbCB2b2lkIHNldEluc3BlY3RNb2RlRW5hYmxlZChFcnJvclN0cmluZyos
IGJvb2wgZW5hYmxlZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piog
aGlnaGxpZ2h0Q29uZmlnKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdE5vZGUoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBpbnQqIG5vZGVJZCk7CiAgICAgdmlydHVhbCB2
b2lkIHB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYg
cGF0aCwgaW50KiBub2RlSWQpOwogICAgIHZpcnR1YWwgdm9pZCBwdXNoTm9kZUJ5QmFja2VuZElk
VG9Gcm9udGVuZChFcnJvclN0cmluZyosIEJhY2tlbmROb2RlSWQsIGludCogbm9kZUlkKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVsZWFzZUJhY2tlbmROb2RlSWRzKEVycm9yU3RyaW5nKiwgY29uc3Qg
U3RyaW5nJiBub2RlR3JvdXApOwogICAgIHZpcnR1YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KEVycm9y
U3RyaW5nKik7Ci0gICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodFJlY3QoRXJyb3JTdHJpbmcqLCBp
bnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4qIGNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0bGluZUNv
bG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0ZXMpOwotICAgIHZpcnR1YWwgdm9pZCBo
aWdobGlnaHRRdWFkKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiYg
cXVhZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGNvbG9yLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0Piogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRp
bmF0ZXMpOwotICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHROb2RlKEVycm9yU3RyaW5nKiwgY29u
c3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGhpZ2hsaWdodENvbmZpZywgY29uc3QgaW50KiBu
b2RlSWQsIGNvbnN0IFN0cmluZyogb2JqZWN0SWQpOwotICAgIHZpcnR1YWwgdm9pZCBoaWdobGln
aHRGcmFtZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4qIGNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piog
b3V0bGluZUNvbG9yKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0UmVjdChFcnJvclN0cmlu
ZyosIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0Piogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRp
bmF0ZXMpOworICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHRRdWFkKEVycm9yU3RyaW5nKiwgY29u
c3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiBxdWFkLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0Piogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29v
cmRpbmF0ZXMpOworICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHROb2RlKEVycm9yU3RyaW5nKiwg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgaGlnaGxpZ2h0Q29uZmln
LCBjb25zdCBpbnQqIG5vZGVJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RJZCk7CisgICAgdmlydHVh
bCB2b2lkIGhpZ2hsaWdodEZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlk
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3Qg
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piogb3V0bGluZUNvbG9yKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBtb3ZlVG8oRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBpbnQgdGFyZ2V0
Tm9kZUlkLCBjb25zdCBpbnQqIGFuY2hvck5vZGVJZCwgaW50KiBuZXdOb2RlSWQpOwogICAgIHZp
cnR1YWwgdm9pZCB1bmRvKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIHJlZG8oRXJy
b3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgbWFya1VuZG9hYmxlU3RhdGUoRXJyb3JTdHJp
bmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgZm9jdXMoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkKTsK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0RmlsZUlucHV0RmlsZXMoRXJyb3JTdHJpbmcqLCBpbnQgbm9k
ZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBmaWxlcyk7CisgICAgdmlydHVhbCB2
b2lkIHNldEZpbGVJbnB1dEZpbGVzKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiBmaWxlcyk7CiAKICAgICB2b2lkIGdldEV2
ZW50TGlzdGVuZXJzKE5vZGUqLCBWZWN0b3I8RXZlbnRMaXN0ZW5lckluZm8+JiBsaXN0ZW5lcnNB
cnJheSwgYm9vbCBpbmNsdWRlQW5jZXN0b3JzKTsKIApAQCAtMTgyLDcgKzE4Niw3IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBTdHJpbmcgZG9jdW1lbnRVUkxTdHJpbmcoRG9jdW1lbnQqKTsKIAot
ICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gcmVzb2x2
ZU5vZGUoTm9kZSosIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApOworICAgIFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiByZXNvbHZlTm9k
ZShOb2RlKiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCk7CiAgICAgYm9vbCBoYW5kbGVNb3Vz
ZVByZXNzKCk7CiAgICAgYm9vbCBoYW5kbGVUb3VjaEV2ZW50KE5vZGUqKTsKICAgICB2b2lkIG1v
dXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RSZXN1bHQmLCB1bnNpZ25lZCBtb2Rp
ZmllckZsYWdzKTsKQEAgLTIxMCw4ICsyMTQsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIElu
c3BlY3RvckRPTUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdlQWdlbnQq
LCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnNwZWN0b3JPdmVybGF5KiwgSW5zcGVjdG9yQ2xp
ZW50Kik7CiAKLSAgICB2b2lkIHNldFNlYXJjaGluZ0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBib29s
IGVuYWJsZWQsIEluc3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0Q29uZmlnKTsKLSAgICBQYXNzT3du
UHRyPEhpZ2hsaWdodENvbmZpZz4gaGlnaGxpZ2h0Q29uZmlnRnJvbUluc3BlY3Rvck9iamVjdChF
cnJvclN0cmluZyosIEluc3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsK
KyAgICB2b2lkIHNldFNlYXJjaGluZ0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBib29sIGVuYWJsZWQs
IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBoaWdobGlnaHRDb25maWcpOworICAgIFBhc3NP
d25QdHI8SGlnaGxpZ2h0Q29uZmlnPiBoaWdobGlnaHRDb25maWdGcm9tSW5zcGVjdG9yT2JqZWN0
KEVycm9yU3RyaW5nKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdodEluc3Bl
Y3Rvck9iamVjdCk7CiAKICAgICAvLyBOb2RlLXJlbGF0ZWQgbWV0aG9kcy4KICAgICB0eXBlZGVm
IEhhc2hNYXA8UmVmUHRyPE5vZGU+LCBpbnQ+IE5vZGVUb0lkTWFwOwpAQCAtMjI2LDE4ICsyMzAs
MTggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaGFzQnJlYWtwb2ludChOb2RlKiwgaW50IHR5cGUp
OwogICAgIHZvaWQgdXBkYXRlU3VidHJlZUJyZWFrcG9pbnRzKE5vZGUqIHJvb3QsIHVpbnQzMl90
IHJvb3RNYXNrLCBib29sIHZhbHVlKTsKLSAgICB2b2lkIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQo
Tm9kZSogdGFyZ2V0LCBpbnQgYnJlYWtwb2ludFR5cGUsIGJvb2wgaW5zZXJ0aW9uLCBQYXNzUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gZGVzY3JpcHRpb24pOworICAgIHZvaWQgZGVzY3JpcHRpb25G
b3JET01FdmVudChOb2RlKiB0YXJnZXQsIGludCBicmVha3BvaW50VHlwZSwgYm9vbCBpbnNlcnRp
b24sIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGRlc2NyaXB0aW9uKTsK
IAotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4gYnVpbGRPYmplY3RGb3JO
b2RlKE5vZGUqLCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFwKik7Ci0gICAgUGFzc1JlZlB0cjxUeXBl
QnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gYnVpbGRBcnJheUZvckVsZW1lbnRBdHRyaWJ1dGVzKEVs
ZW1lbnQqKTsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6
RE9NOjpOb2RlPj4gYnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKE5vZGUqIGNvbnRhaW5l
ciwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApOwotICAgIFBhc3NSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gYnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVy
KGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIE5vZGUqLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwSWQpOworICAgIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiBidWlsZE9iamVjdEZvck5vZGUo
Tm9kZSosIGludCBkZXB0aCwgTm9kZVRvSWRNYXAqKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IGJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmli
dXRlcyhFbGVtZW50Kik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpB
cnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+PiBidWlsZEFycmF5Rm9yQ29u
dGFpbmVyQ2hpbGRyZW4oTm9kZSogY29udGFpbmVyLCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFwKiBu
b2Rlc01hcCk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006OkV2
ZW50TGlzdGVuZXI+IGJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihjb25zdCBSZWdpc3RlcmVk
RXZlbnRMaXN0ZW5lciYsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBOb2RlKiwgY29u
c3QgU3RyaW5nKiBvYmplY3RHcm91cElkKTsKIAogICAgIE5vZGUqIG5vZGVGb3JQYXRoKGNvbnN0
IFN0cmluZyYgcGF0aCk7CiAKICAgICB2b2lkIGRpc2NhcmRCaW5kaW5ncygpOwogCi0gICAgdm9p
ZCBpbm5lckhpZ2hsaWdodFF1YWQoUGFzc093blB0cjxGbG9hdFF1YWQ+LCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBv
dXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcyk7CisgICAgdm9pZCBp
bm5lckhpZ2hsaWdodFF1YWQoUGFzc093blB0cjxGbG9hdFF1YWQ+LCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0Piogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRp
bmF0ZXMpOwogCiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAgICBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCmlu
ZGV4IDg5ZmY2ZTkuLjE0MzE3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTQwLDggKzQwLDggQEAKICNp
bmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJv
bnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRl
ICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCisj
aW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgewpAQCAtNjEsNiArNjEsOCBAQCBjb25zdCBpbnQg
ZG9tQnJlYWtwb2ludERlcml2ZWRUeXBlU2hpZnQgPSAxNjsKIAogfQogCit1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NPd25QdHI8SW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudD4gSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6Y3JlYXRlKElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvckRPTUFnZW50
KiBkb21BZ2VudCwgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCwgSW5zcGVj
dG9yQWdlbnQqIGluc3BlY3RvckFnZW50KQpAQCAtNjksNyArNzEsNyBAQCBQYXNzT3duUHRyPElu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ+IEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmNyZWF0
ZShJbnN0cnVtZQogfQogCiBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JET01E
ZWJ1Z2dlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIElu
c3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCwgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdn
ZXJBZ2VudCwgSW5zcGVjdG9yQWdlbnQqKQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJ
TGl0ZXJhbCgiRE9NRGVidWdnZXIiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3Bl
Y3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkRPTURlYnVnZ2VyIiksIGluc3RydW1lbnRpbmdB
Z2VudHMpCiAgICAgLCBtX2RvbUFnZW50KGRvbUFnZW50KQogICAgICwgbV9kZWJ1Z2dlckFnZW50
KGRlYnVnZ2VyQWdlbnQpCiAgICAgLCBtX3BhdXNlSW5OZXh0RXZlbnRMaXN0ZW5lcihmYWxzZSkK
QEAgLTExMSw3ICsxMTMsNyBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpc2Fi
bGUoKQogICAgIGNsZWFyKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
IGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0
b3JET01EZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIs
IHRoaXMpOwogfQpAQCAtMzE0LDcgKzMxNiw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudDo6ZGVzY3JpcHRpb25Gb3JET01FdmVudChOb2RlKiB0YXJnZXQsIGludCBicmVha3BvCiAg
ICAgaWYgKCgxIDw8IGJyZWFrcG9pbnRUeXBlKSAmIGluaGVyaXRhYmxlRE9NQnJlYWtwb2ludFR5
cGVzTWFzaykgewogICAgICAgICAvLyBGb3IgaW5oZXJpdGFibGUgYnJlYWtwb2ludCB0eXBlcywg
dGFyZ2V0IG5vZGUgaXNuJ3QgYWx3YXlzIHRoZSBzYW1lIGFzIHRoZSBub2RlIHRoYXQgb3ducyBh
IGJyZWFrcG9pbnQuCiAgICAgICAgIC8vIFRhcmdldCBub2RlIG1heSBiZSB1bmtub3duIHRvIGZy
b250ZW5kLCBzbyB3ZSBuZWVkIHRvIHB1c2ggaXQgZmlyc3QuCi0gICAgICAgIFJlZlB0cjxUeXBl
QnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiB0YXJnZXROb2RlT2JqZWN0ID0gbV9kb21B
Z2VudC0+cmVzb2x2ZU5vZGUodGFyZ2V0LCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpiYWNrdHJh
Y2VPYmplY3RHcm91cCk7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+IHRhcmdldE5vZGVPYmplY3QgPSBtX2RvbUFnZW50LT5yZXNv
bHZlTm9kZSh0YXJnZXQsIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJhY2t0cmFjZU9iamVjdEdy
b3VwKTsKICAgICAgICAgZGVzY3JpcHRpb24tPnNldFZhbHVlKCJ0YXJnZXROb2RlIiwgdGFyZ2V0
Tm9kZU9iamVjdCk7CiAKICAgICAgICAgLy8gRmluZCBicmVha3BvaW50IG93bmVyIG5vZGUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQuaAppbmRleCA5NmY4OGE5Li5hM2RhYWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKQEAgLTMzLDI2ICszMywzMCBA
QAogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRShJTlNQRUNUT1Ip
CiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmgi
CisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBJbnNw
ZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBJbnNwZWN0b3JBZ2VudDsKIGNsYXNzIEluc3BlY3Rv
ckRPTUFnZW50OwogY2xhc3MgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDsKLWNsYXNzIEluc3BlY3Rv
ck9iamVjdDsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBOb2RlOwogCiB0eXBl
ZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpMaXN0ZW5lciwgcHVibGljIEluc3BlY3RvckRPTURlYnVnZ2VyQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5z
cGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6TGlzdGVuZXIs
IHB1YmxpYyBJbnNwZWN0b3JET01EZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCk7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudD4gY3Jl
YXRlKEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JET01BZ2VudCosIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQqLCBJbnNwZWN0b3JBZ2VudCopOwpAQCAtNzksNyArODMsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCB3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJsKTsKICAg
ICB2b2lkIHBhdXNlT25OYXRpdmVFdmVudElmTmVlZGVkKGJvb2wgaXNET01FdmVudCwgY29uc3Qg
U3RyaW5nJiBldmVudE5hbWUsIGJvb2wgc3luY2hyb25vdXMpOwogCi0gICAgdmlydHVhbCB2b2lk
IGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIGRpc2NhcmRBZ2VudCgpOwogCkBAIC05Myw3ICs5Nyw3IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKCk7CiAgICAgdm9pZCBkaXNhYmxl
KCk7CiAKLSAgICB2b2lkIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQoTm9kZSogdGFyZ2V0LCBpbnQg
YnJlYWtwb2ludFR5cGUsIGJvb2wgaW5zZXJ0aW9uLCBJbnNwZWN0b3JPYmplY3QqIGRlc2NyaXB0
aW9uKTsKKyAgICB2b2lkIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQoTm9kZSogdGFyZ2V0LCBpbnQg
YnJlYWtwb2ludFR5cGUsIGJvb2wgaW5zZXJ0aW9uLCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dCogZGVzY3JpcHRpb24pOwogICAgIHZvaWQgdXBkYXRlU3VidHJlZUJyZWFrcG9pbnRzKE5vZGUq
LCB1aW50MzJfdCByb290TWFzaywgYm9vbCBzZXQpOwogICAgIGJvb2wgaGFzQnJlYWtwb2ludChO
b2RlKiwgaW50IHR5cGUpOwogICAgIHZvaWQgZGlzY2FyZEJpbmRpbmdzKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCmlu
ZGV4IDY0NmRlMjMuLjljNTliMWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcApAQCAtNDEsNyArNDEsNiBAQAogI2lu
Y2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNp
bmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlBhZ2VHcm91cC5oIgpAQCAtNTAsMTMgKzQ5LDE1IEBACiAjaW5jbHVkZSAiU3RvcmFnZUFy
ZWEuaCIKICNpbmNsdWRlICJTdG9yYWdlTmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiVm9pZENhbGxi
YWNrLmgiCi0KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6SW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3Bl
Y3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJ
TGl0ZXJhbCgiRE9NU3RvcmFnZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVj
dG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiRE9NU3RvcmFnZSIpLCBpbnN0cnVtZW50aW5nQWdl
bnRzKQogICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQogICAgICwgbV9lbmFibGVkKGZhbHNl
KQogewpAQCAtNjksNyArNzAsNyBAQCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6On5JbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQoKQogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cyA9IDA7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JET01TdG9yYWdlRnJvbnRlbmREaXNwYXRjaGVyPihm
cm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JET01T
dG9yYWdlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7
CkBAIC05Myw3ICs5NCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaXNhYmxl
KEVycm9yU3RyaW5nKikKICAgICBtX2VuYWJsZWQgPSBmYWxzZTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQ6OmdldERPTVN0b3JhZ2VJdGVtcyhFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBzdG9yYWdlSWQsIFJlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+PiYgaXRlbXMpCit2
b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6Z2V0RE9NU3RvcmFnZUl0ZW1zKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHN0b3JhZ2VJ
ZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkFycmF5PFN0cmluZz4+PiYgaXRlbXMpCiB7CiAgICAgRnJhbWUqIGZyYW1lOwogICAg
IFJlZlB0cjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEgPSBmaW5kU3RvcmFnZUFyZWEoZXJyb3JT
dHJpbmcsIHN0b3JhZ2VJZCwgZnJhbWUpOwpAQCAtMTAzLDEzICsxMDQsMTMgQEAgdm9pZCBJbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQ6OmdldERPTVN0b3JhZ2VJdGVtcyhFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGNvbnMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxUeXBl
QnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+PiBzdG9yYWdlSXRlbXMg
PSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+OjpjcmVhdGUo
KTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4+IHN0b3JhZ2VJdGVtcyA9IEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+Ojpj
cmVhdGUoKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdG9yYWdlQXJlYS0+bGVu
Z3RoKCk7ICsraSkgewogICAgICAgICBTdHJpbmcga2V5ID0gc3RvcmFnZUFyZWEtPmtleShpKTsK
ICAgICAgICAgU3RyaW5nIHZhbHVlID0gc3RvcmFnZUFyZWEtPml0ZW0oa2V5KTsKIAotICAgICAg
ICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IGVudHJ5ID0gVHlwZUJ1aWxkZXI6
OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gZW50cnkgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpB
cnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICAgICAgZW50cnktPmFkZEl0ZW0oa2V5KTsKICAg
ICAgICAgZW50cnktPmFkZEl0ZW0odmFsdWUpOwogICAgICAgICBzdG9yYWdlSXRlbXMtPmFkZEl0
ZW0oZW50cnkucmVsZWFzZSgpKTsKQEAgLTE1Nyw5ICsxNTgsOSBAQCBTdHJpbmcgSW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50OjpzdG9yYWdlSWQoU3RvcmFnZSogc3RvcmFnZSkKICAgICByZXR1cm4g
c3RvcmFnZUlkKHNlY3VyaXR5T3JpZ2luLmdldCgpLCBpc0xvY2FsU3RvcmFnZSktPnRvSlNPTlN0
cmluZygpOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpET01TdG9yYWdlOjpTdG9yYWdl
SWQ+IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6c3RvcmFnZUlkKFNlY3VyaXR5T3JpZ2luKiBz
ZWN1cml0eU9yaWdpbiwgYm9vbCBpc0xvY2FsU3RvcmFnZSkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkPiBJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQ6OnN0b3JhZ2VJZChTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGJvb2wgaXNM
b2NhbFN0b3JhZ2UpCiB7Ci0gICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpET01TdG9yYWdlOjpTdG9y
YWdlSWQ6OmNyZWF0ZSgpCisgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTVN0
b3JhZ2U6OlN0b3JhZ2VJZDo6Y3JlYXRlKCkKICAgICAgICAgLnNldFNlY3VyaXR5T3JpZ2luKHNl
Y3VyaXR5T3JpZ2luLT50b1Jhd1N0cmluZygpKQogICAgICAgICAuc2V0SXNMb2NhbFN0b3JhZ2Uo
aXNMb2NhbFN0b3JhZ2UpLnJlbGVhc2UoKTsKIH0KQEAgLTE2OSw3ICsxNzAsNyBAQCB2b2lkIElu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQoY29uc3Qg
U3RyaW5nJiBrZXksIGNvbgogICAgIGlmICghbV9mcm9udGVuZERpc3BhdGNoZXIgfHwgIW1fZW5h
YmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpET01TdG9y
YWdlOjpTdG9yYWdlSWQ+IGlkID0gc3RvcmFnZUlkKHNlY3VyaXR5T3JpZ2luLCBzdG9yYWdlVHlw
ZSA9PSBMb2NhbFN0b3JhZ2UpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpE
T01TdG9yYWdlOjpTdG9yYWdlSWQ+IGlkID0gc3RvcmFnZUlkKHNlY3VyaXR5T3JpZ2luLCBzdG9y
YWdlVHlwZSA9PSBMb2NhbFN0b3JhZ2UpOwogCiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAg
ICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmRvbVN0b3JhZ2VJdGVtc0NsZWFyZWQoaWQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5o
CmluZGV4IDJjZDE3YjMuLjk3NDQxYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKQEAgLTI5LDI3ICsyOSwzMCBAQAogI2lm
bmRlZiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnRfaAogI2RlZmluZSBJbnNwZWN0b3JET01TdG9y
YWdlQWdlbnRfaAogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdl
bnRCYXNlLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWEuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yQXJyYXk7
Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRnJhbWU7Ci1jbGFzcyBJbnNwZWN0
b3JBcnJheTsKIGNsYXNzIEluc3BlY3RvckRPTVN0b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI7CiBj
bGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xh
c3MgUGFnZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU3RvcmFnZTsKLWNsYXNzIFN0
b3JhZ2VBcmVhOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIElu
c3BlY3RvckRPTVN0b3JhZ2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIElu
c3BlY3RvckRPTVN0b3JhZ2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogcHVibGljOgogICAg
IHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudD4gY3JlYXRlKEluc3Ry
dW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCog
cGFnZUFnZW50KQogICAgIHsKQEAgLTU3LDE5ICs2MCwxOSBAQCBwdWJsaWM6CiAgICAgfQogICAg
IH5JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwg
SW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAg
ICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZyb250LWVuZC4KICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxl
KEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0RE9NU3RvcmFnZUl0ZW1zKEVycm9yU3RyaW5nKiwgY29uc3Qg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHN0b3JhZ2VJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpB
cnJheTxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4+JiBpdGVtcyk7Ci0gICAgdmlydHVhbCB2
b2lkIHNldERPTVN0b3JhZ2VJdGVtKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4mIHN0b3JhZ2VJZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFs
dWUpOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVET01TdG9yYWdlSXRlbShFcnJvclN0cmluZyos
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYg
a2V5KTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0RE9NU3RvcmFnZUl0ZW1zKEVycm9yU3RyaW5nKiwg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgc3RvcmFnZUlkLCBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
QXJyYXk8U3RyaW5nPj4+JiBpdGVtcyk7CisgICAgdmlydHVhbCB2b2lkIHNldERPTVN0b3JhZ2VJ
dGVtKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiYgc3RvcmFnZUlkLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Cisg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZURPTVN0b3JhZ2VJdGVtKEVycm9yU3RyaW5nKiwgY29uc3Qg
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgc3RvcmFnZUlkLCBjb25zdCBTdHJp
bmcmIGtleSk7CiAKICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgaW5qZWN0ZWQgc2NyaXB0LgogICAg
IFN0cmluZyBzdG9yYWdlSWQoU3RvcmFnZSopOwotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6
OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZD4gc3RvcmFnZUlkKFNlY3VyaXR5T3JpZ2luKiwgYm9vbCBp
c0xvY2FsU3RvcmFnZSk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpE
T01TdG9yYWdlOjpTdG9yYWdlSWQ+IHN0b3JhZ2VJZChTZWN1cml0eU9yaWdpbiosIGJvb2wgaXNM
b2NhbFN0b3JhZ2UpOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uCiAgICAgdm9pZCBkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudChjb25zdCBTdHJpbmcmIGtl
eSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgU3RvcmFn
ZVR5cGUsIFNlY3VyaXR5T3JpZ2luKiwgUGFnZSopOwpAQCAtNzgsNyArODEsNyBAQCBwcml2YXRl
OgogCiAgICAgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJ
bnNwZWN0b3JQYWdlQWdlbnQqKTsKIAotICAgIFBhc3NSZWZQdHI8U3RvcmFnZUFyZWE+IGZpbmRT
dG9yYWdlQXJlYShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+Jiwg
RnJhbWUqJik7CisgICAgUGFzc1JlZlB0cjxTdG9yYWdlQXJlYT4gZmluZFN0b3JhZ2VBcmVhKEVy
cm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYsIEZy
YW1lKiYpOwogCiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRE9NU3RvcmFnZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9u
dGVuZERpc3BhdGNoZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRGF0YWJhc2VBZ2VudC5jcHAKaW5kZXggYzU4MDBlYS4uOWI4NTVjYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcApAQCAt
MzcsOCArMzcsNiBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JG
cm9udGVuZC5oIgotCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5z
dHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIlNRTEVycm9yLmgiCiAjaW5jbHVkZSAiU1FM
UmVzdWx0U2V0LmgiCkBAIC01MCwxOCArNDgsMjAgQEAKICNpbmNsdWRlICJTUUxUcmFuc2FjdGlv
bkVycm9yQ2FsbGJhY2suaCIKICNpbmNsdWRlICJTUUxWYWx1ZS5oIgogI2luY2x1ZGUgIlZvaWRD
YWxsYmFjay5oIgotCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogdHlwZWRlZiBXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFz
ZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTENhbGxiYWNrIEV4ZWN1dGVTUUxD
YWxsYmFjazsKIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBuYW1lc3BhY2UgewogCiB2b2lkIHJlcG9ydFRyYW5zYWN0aW9uRmFpbGVkKEV4ZWN1
dGVTUUxDYWxsYmFjayogcmVxdWVzdENhbGxiYWNrLCBTUUxFcnJvciogZXJyb3IpCiB7Ci0gICAg
UmVmUHRyPFR5cGVCdWlsZGVyOjpEYXRhYmFzZTo6RXJyb3I+IGVycm9yT2JqZWN0ID0gVHlwZUJ1
aWxkZXI6OkRhdGFiYXNlOjpFcnJvcjo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6RGF0YWJhc2U6OkVycm9yPiBlcnJvck9iamVjdCA9IEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkRhdGFiYXNlOjpFcnJvcjo6Y3JlYXRlKCkKICAgICAgICAgLnNldE1lc3NhZ2Uo
ZXJyb3ItPm1lc3NhZ2UoKSkKICAgICAgICAgLnNldENvZGUoZXJyb3ItPmNvZGUoKSk7CiAgICAg
cmVxdWVzdENhbGxiYWNrLT5zZW5kU3VjY2VzcygwLCAwLCBlcnJvck9iamVjdC5yZWxlYXNlKCkp
OwpAQCAtODAsMTIgKzgwLDEyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIFNRTFJlc3VsdFNl
dFJvd0xpc3QqIHJvd0xpc3QgPSByZXN1bHRTZXQtPnJvd3MoKTsKIAotICAgICAgICBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IGNvbHVtbk5hbWVzID0gVHlwZUJ1aWxkZXI6OkFy
cmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8U3RyaW5nPj4gY29sdW1uTmFtZXMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGNvbHVtbnMgPSByb3dMaXN0LT5jb2x1bW5OYW1lcygpOwogICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGNvbHVtbnMuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBjb2x1bW5OYW1lcy0+
YWRkSXRlbShjb2x1bW5zW2ldKTsKIAotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5
PEluc3BlY3RvclZhbHVlPj4gdmFsdWVzID0gVHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3RvclZh
bHVlPjo6Y3JlYXRlKCk7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpB
cnJheTxJbnNwZWN0b3JWYWx1ZT4+IHZhbHVlcyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFy
cmF5PEluc3BlY3RvclZhbHVlPjo6Y3JlYXRlKCk7CiAgICAgICAgIGNvbnN0IFZlY3RvcjxTUUxW
YWx1ZT4mIGRhdGEgPSByb3dMaXN0LT52YWx1ZXMoKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBkYXRhLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBjb25zdCBTUUxWYWx1ZSYg
dmFsdWUgPSByb3dMaXN0LT52YWx1ZXMoKVtpXTsKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIElu
c3BlY3RvckRhdGFiYXNlQWdlbnQ6OmNsZWFyUmVzb3VyY2VzKCkKIH0KIAogSW5zcGVjdG9yRGF0
YWJhc2VBZ2VudDo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzKQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJh
bCgiRGF0YWJhc2UiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50
QmFzZShBU0NJSUxpdGVyYWwoIkRhdGFiYXNlIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAg
LCBtX2VuYWJsZWQoZmFsc2UpCiB7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNw
ZWN0b3JEYXRhYmFzZUFnZW50KHRoaXMpOwpAQCAtMjIyLDcgKzIyMiw3IEBAIEluc3BlY3RvckRh
dGFiYXNlQWdlbnQ6On5JbnNwZWN0b3JEYXRhYmFzZUFnZW50KCkKICAgICBtX2luc3RydW1lbnRp
bmdBZ2VudHMtPnNldEluc3BlY3RvckRhdGFiYXNlQWdlbnQoMCk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yRGF0YWJhc2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERp
c3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3RvckRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwog
ICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRj
aGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpAQCAtMjU0LDE0ICsyNTQsMTQg
QEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKICAg
ICBtX2VuYWJsZWQgPSBmYWxzZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50Ojpn
ZXREYXRhYmFzZVRhYmxlTmFtZXMoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIGRh
dGFiYXNlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4mIG5hbWVzKQordm9p
ZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpnZXREYXRhYmFzZVRhYmxlTmFtZXMoRXJyb3JTdHJp
bmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiYgbmFtZXMpCiB7CiAgICAgaWYgKCFtX2VuYWJsZWQp
IHsKICAgICAgICAgKmVycm9yID0gIkRhdGFiYXNlIGFnZW50IGlzIG5vdCBlbmFibGVkIjsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG5hbWVzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFN0
cmluZz46OmNyZWF0ZSgpOworICAgIG5hbWVzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAKICAgICBEYXRhYmFzZSogZGF0YWJhc2UgPSBkYXRhYmFz
ZUZvcklkKGRhdGFiYXNlSWQpOwogICAgIGlmIChkYXRhYmFzZSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgKaW5kZXggYTMyZjA2NC4u
NTM5YTNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRh
dGFiYXNlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0
YWJhc2VBZ2VudC5oCkBAIC0zMSwyMiArMzEsMjYgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1Ip
ICYmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQu
aCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JGcm9udGVuZC5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIEluc3BlY3RvciB7Citj
bGFzcyBJbnNwZWN0b3JBcnJheTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBE
YXRhYmFzZTsKLWNsYXNzIEluc3BlY3RvckFycmF5OwogY2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VS
ZXNvdXJjZTsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiAKIHR5cGVkZWYgU3RyaW5nIEVy
cm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JEYXRhYmFzZUFnZW50IDogcHVibGljIEluc3Bl
Y3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckRhdGFiYXNlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9y
QWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckRhdGFiYXNlQWdl
bnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAg
IHsKQEAgLTU0LDcgKzU4LDcgQEAgcHVibGljOgogICAgIH0KICAgICB+SW5zcGVjdG9yRGF0YWJh
c2VBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciop
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0
cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICB2b2lkIGNsZWFyUmVzb3Vy
Y2VzKCk7CkBAIC02Miw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICAvLyBDYWxsZWQgZnJvbSB0aGUg
ZnJvbnQtZW5kLgogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwotICAgIHZpcnR1YWwgdm9pZCBnZXRE
YXRhYmFzZVRhYmxlTmFtZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWQs
IFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4mIG5hbWVzKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZ2V0RGF0YWJhc2VUYWJsZU5hbWVzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBk
YXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4m
IG5hbWVzKTsKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVNRTChFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgUGFzc1JlZlB0cjxFeGVj
dXRlU1FMQ2FsbGJhY2s+KTsKIAogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBpbmplY3RlZCBzY3Jp
cHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJh
c2VSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJh
c2VSZXNvdXJjZS5jcHAKaW5kZXggOWQ0YjczZi4uMjVhMzE0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcApAQCAt
MzYsNyArMzYsOSBAQAogCiAjaW5jbHVkZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JGcm9udGVuZC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgorI2luY2x1ZGUgPGlu
c3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KKwordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01OCw3ICs2MCw3IEBAIEluc3BlY3RvckRhdGFi
YXNlUmVzb3VyY2U6Okluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UoUGFzc1JlZlB0cjxEYXRhYmFz
ZT4gZGF0YWJhCiAKIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZTo6YmluZChJbnNwZWN0
b3JEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlciogZGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXIp
CiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpEYXRhYmFzZTo6RGF0YWJhc2U+IGpzb25PYmpl
Y3QgPSBUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkRhdGFiYXNlOjpjcmVhdGUoKQorICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEYXRhYmFzZTo6RGF0YWJhc2U+IGpzb25PYmplY3Qg
PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEYXRhYmFzZTo6RGF0YWJhc2U6OmNyZWF0ZSgpCiAg
ICAgICAgIC5zZXRJZChtX2lkKQogICAgICAgICAuc2V0RG9tYWluKG1fZG9tYWluKQogICAgICAg
ICAuc2V0TmFtZShtX25hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggYWMyYjcwZS4uODVkZTI0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApA
QCAtMzgsMjQgKzM4LDI3IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdl
bnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50
aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiUmVndWxhckV4cHJlc3Npb24uaCIKICNpbmNsdWRlICJT
Y3JpcHREZWJ1Z1NlcnZlci5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUg
PGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVl
Lmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCi11c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6QXJyYXk7
Ci11c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlsczsK
LXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6U2NyaXB0SWQ7Ci11c2luZyBX
ZWJDb3JlOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0OwordXNpbmcgSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk7Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpE
ZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzOwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
RGVidWdnZXI6OlNjcmlwdElkOwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0OworCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNvbnN0IGNoYXIqIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJhY2t0
cmFjZU9iamVjdEdyb3VwID0gImJhY2t0cmFjZSI7CiAKIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cywgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0g
ICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJEZWJ1Z2dlciIpLCBpbnN0cnVt
ZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiRGVi
dWdnZXIiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1fcGF1c2VkU2NyaXB0U3RhdGUoMCkK
ICAgICAsIG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElEKG5vQnJlYWtwb2ludElEKQpA
QCAtMTM2LDcgKzEzOSw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlzYWJsZShF
cnJvclN0cmluZyopCiAgICAgZGlzYWJsZSgpOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmRE
aXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5k
Q2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQog
ewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JE
ZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tl
bmREaXNwYXRjaGVyID0gSW5zcGVjdG9yRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRl
KGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKQEAgLTIwMCwxNSArMjAzLDE1IEBAIHN0YXRpYyBi
b29sIG1hdGNoZXMoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0dGVybiwgYm9v
bCBpc1JlZ2V4KQogCiBzdGF0aWMgYm9vbCBicmVha3BvaW50QWN0aW9uVHlwZUZvclN0cmluZyhj
b25zdCBTdHJpbmcmIHR5cGVTdHJpbmcsIFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlKiBvdXRw
dXQpCiB7Ci0gICAgaWYgKHR5cGVTdHJpbmcgPT0gVHlwZUJ1aWxkZXI6OmdldEVudW1Db25zdGFu
dFZhbHVlKFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6VHlwZTo6TG9n
KSkgeworICAgIGlmICh0eXBlU3RyaW5nID09IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OmdldEVu
dW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3Bv
aW50QWN0aW9uOjpUeXBlOjpMb2cpKSB7CiAgICAgICAgICpvdXRwdXQgPSBTY3JpcHRCcmVha3Bv
aW50QWN0aW9uVHlwZUxvZzsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIGlmICh0
eXBlU3RyaW5nID09IFR5cGVCdWlsZGVyOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShUeXBlQnVpbGRl
cjo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU6OkV2YWx1YXRlKSkgeworICAgIGlm
ICh0eXBlU3RyaW5nID09IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OmdldEVudW1Db25zdGFudFZh
bHVlKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjpU
eXBlOjpFdmFsdWF0ZSkpIHsKICAgICAgICAgKm91dHB1dCA9IFNjcmlwdEJyZWFrcG9pbnRBY3Rp
b25UeXBlRXZhbHVhdGU7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBpZiAodHlw
ZVN0cmluZyA9PSBUeXBlQnVpbGRlcjo6Z2V0RW51bUNvbnN0YW50VmFsdWUoVHlwZUJ1aWxkZXI6
OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlOjpTb3VuZCkpIHsKKyAgICBpZiAodHlw
ZVN0cmluZyA9PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6VHlwZTo6
U291bmQpKSB7CiAgICAgICAgICpvdXRwdXQgPSBTY3JpcHRCcmVha3BvaW50QWN0aW9uVHlwZVNv
dW5kOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yNTUsOSArMjU4LDkgQEAgc3Rh
dGljIGJvb2wgYnJlYWtwb2ludEFjdGlvbnNGcm9tUHJvdG9jb2woRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBSZWZQdHI8SW5zcGUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbFVSTCwgY29u
c3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbFVSTFJlZ2V4LCBjb25zdCBpbnQqIGNvbnN0IG9wdGlv
bmFsQ29sdW1uTnVtYmVyLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3B0aW9ucywg
VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9pbnRJZGVudGlm
aWVyLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9j
YXRpb24+PiYgbG9jYXRpb25zKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVh
a3BvaW50QnlVcmwoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbGluZU51bWJlciwgY29u
c3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbFVSTCwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25h
bFVSTFJlZ2V4LCBjb25zdCBpbnQqIGNvbnN0IG9wdGlvbmFsQ29sdW1uTnVtYmVyLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3B0aW9ucywgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
RGVidWdnZXI6OkJyZWFrcG9pbnRJZCogb3V0QnJlYWtwb2ludElkZW50aWZpZXIsIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1
Z2dlcjo6TG9jYXRpb24+PiYgbG9jYXRpb25zKQogewotICAgIGxvY2F0aW9ucyA9IEFycmF5PFR5
cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+OjpjcmVhdGUoKTsKKyAgICBsb2NhdGlvbnMg
PSBBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+OjpjcmVh
dGUoKTsKICAgICBpZiAoIW9wdGlvbmFsVVJMID09ICFvcHRpb25hbFVSTFJlZ2V4KSB7CiAgICAg
ICAgICplcnJvclN0cmluZyA9ICJFaXRoZXIgdXJsIG9yIHVybFJlZ2V4IG11c3QgYmUgc3BlY2lm
aWVkLiI7CiAgICAgICAgIHJldHVybjsKQEAgLTI5NCw3ICsyOTcsNyBAQCB2b2lkIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIGludCBsaQogICAgICAgICBpZiAoIW1hdGNoZXMoc2NyaXB0VVJMLCB1cmwsIGlzUmVnZXgp
KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpE
ZWJ1Z2dlcjo6TG9jYXRpb24+IGxvY2F0aW9uID0gcmVzb2x2ZUJyZWFrcG9pbnQoYnJlYWtwb2lu
dElkZW50aWZpZXIsIGl0LT5rZXksIGJyZWFrcG9pbnQpOworICAgICAgICBSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiBsb2NhdGlvbiA9IHJlc29sdmVC
cmVha3BvaW50KGJyZWFrcG9pbnRJZGVudGlmaWVyLCBpdC0+a2V5LCBicmVha3BvaW50KTsKICAg
ICAgICAgaWYgKGxvY2F0aW9uKQogICAgICAgICAgICAgbG9jYXRpb25zLT5hZGRJdGVtKGxvY2F0
aW9uKTsKICAgICB9CkBAIC0zMTYsNyArMzE5LDcgQEAgc3RhdGljIGJvb2wgcGFyc2VMb2NhdGlv
bihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIEluc3BlY3Rvck9iamVjdCogbG9jYXRpb24sIFMK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRC
cmVha3BvaW50KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4mIGxvY2F0aW9uLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3B0aW9u
cywgVHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9pbnRJZGVu
dGlmaWVyLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4mIGFjdHVhbExv
Y2F0aW9uKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50KEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGxvY2F0
aW9uLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3B0aW9ucywgSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCogb3V0QnJlYWtwb2ludElkZW50aWZp
ZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+JiBh
Y3R1YWxMb2NhdGlvbikKIHsKICAgICBTb3VyY2VJRCBzb3VyY2VJRDsKICAgICB1bnNpZ25lZCBs
aW5lTnVtYmVyOwpAQCAtMzgzLDcgKzM4Niw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6Y29udGludWVUb0xvY2F0aW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QKICAg
ICByZXN1bWUoZXJyb3JTdHJpbmcpOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1
Z2dlcjo6TG9jYXRpb24+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlc29sdmVCcmVha3BvaW50
KGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkZW50aWZpZXIsIFNvdXJjZUlEIHNvdXJjZUlELCBj
b25zdCBTY3JpcHRCcmVha3BvaW50JiBicmVha3BvaW50KQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OnJlc29sdmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkZW50aWZpZXIsIFNv
dXJjZUlEIHNvdXJjZUlELCBjb25zdCBTY3JpcHRCcmVha3BvaW50JiBicmVha3BvaW50KQogewog
ICAgIFNjcmlwdHNNYXA6Oml0ZXJhdG9yIHNjcmlwdEl0ZXJhdG9yID0gbV9zY3JpcHRzLmZpbmQo
c291cmNlSUQpOwogICAgIGlmIChzY3JpcHRJdGVyYXRvciA9PSBtX3NjcmlwdHMuZW5kKCkpCkBA
IC00MDMsMTQgKzQwNiwxNCBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9j
YXRpb24+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlc29sdmVCcmVhawogICAgICAgICBkZWJ1
Z1NlcnZlckJyZWFrcG9pbnRJRHNJdGVyYXRvciA9IG1fYnJlYWtwb2ludElkZW50aWZpZXJUb0Rl
YnVnU2VydmVyQnJlYWtwb2ludElEcy5zZXQoYnJlYWtwb2ludElkZW50aWZpZXIsIFZlY3RvcjxC
cmVha3BvaW50SUQ+KCkpLml0ZXJhdG9yOwogICAgIGRlYnVnU2VydmVyQnJlYWtwb2ludElEc0l0
ZXJhdG9yLT52YWx1ZS5hcHBlbmQoZGVidWdTZXJ2ZXJCcmVha3BvaW50SUQpOwogCi0gICAgUmVm
UHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IGxvY2F0aW9uID0gVHlwZUJ1aWxk
ZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbjo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiBsb2NhdGlvbiA9IEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbjo6Y3JlYXRlKCkKICAgICAgICAgLnNldFNjcmlw
dElkKFN0cmluZzo6bnVtYmVyKHNvdXJjZUlEKSkKICAgICAgICAgLnNldExpbmVOdW1iZXIoYWN0
dWFsTGluZU51bWJlcik7CiAgICAgbG9jYXRpb24tPnNldENvbHVtbk51bWJlcihhY3R1YWxDb2x1
bW5OdW1iZXIpOwogICAgIHJldHVybiBsb2NhdGlvbjsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBzY3JpcHRUb0luc3BlY3Rvck9iamVjdChTY3JpcHRPYmplY3Qgc2Ny
aXB0T2JqZWN0KQorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBzY3JpcHRUb0lu
c3BlY3Rvck9iamVjdChEZXByZWNhdGVkOjpTY3JpcHRPYmplY3Qgc2NyaXB0T2JqZWN0KQogewog
ICAgIGlmIChzY3JpcHRPYmplY3QuaGFzTm9WYWx1ZSgpKQogICAgICAgICByZXR1cm4gMDsKQEAg
LTQyMCw3ICs0MjMsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHNjcmlw
dFRvSW5zcGVjdG9yT2JqZWN0KFNjcmlwdE9iamVjdCBzY3JpcHRPYgogICAgIHJldHVybiB2YWx1
ZS0+YXNPYmplY3QoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZWFyY2hJ
bkNvbnRlbnQoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmlwdElEU3RyLCBj
b25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRp
dmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEFycmF5PFdlYkNv
cmU6OlR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hNYXRjaD4+JiByZXN1bHRzKQordm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpzZWFyY2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcqIGVycm9yLCBj
b25zdCBTdHJpbmcmIHNjcmlwdElEU3RyLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29s
KiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFs
SXNSZWdleCwgUmVmUHRyPEFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJj
aE1hdGNoPj4mIHJlc3VsdHMpCiB7CiAgICAgYm9vbCBpc1JlZ2V4ID0gb3B0aW9uYWxJc1JlZ2V4
ID8gKm9wdGlvbmFsSXNSZWdleCA6IGZhbHNlOwogICAgIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IG9w
dGlvbmFsQ2FzZVNlbnNpdGl2ZSA/ICpvcHRpb25hbENhc2VTZW5zaXRpdmUgOiBmYWxzZTsKQEAg
LTQzMywxMCArNDM2LDEwIEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2VhcmNoSW5D
b250ZW50KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBzCiAgICAgICAgICplcnJv
ciA9ICJObyBzY3JpcHQgZm9yIGlkOiAiICsgc2NyaXB0SURTdHI7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6c2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5nKiBlcnJvciwgY29u
c3QgU3RyaW5nJiBzY3JpcHRJRCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBjb25zdCBib29s
KiBjb25zdCBwcmV2aWV3LCBSZWZQdHI8QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxs
RnJhbWU+PiYgbmV3Q2FsbEZyYW1lcywgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHJlc3VsdCkK
K3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5n
KiBlcnJvciwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50
LCBjb25zdCBib29sKiBjb25zdCBwcmV2aWV3LCBSZWZQdHI8QXJyYXk8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZT4+JiBuZXdDYWxsRnJhbWVzLCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiYgcmVzdWx0KQogewogICAgIGJvb2wgcHJldmlld09ubHkgPSBwcmV2aWV3
ICYmICpwcmV2aWV3OwotICAgIFNjcmlwdE9iamVjdCByZXN1bHRPYmplY3Q7CisgICAgRGVwcmVj
YXRlZDo6U2NyaXB0T2JqZWN0IHJlc3VsdE9iamVjdDsKICAgICBpZiAoIXNjcmlwdERlYnVnU2Vy
dmVyKCkuc2V0U2NyaXB0U291cmNlKHNjcmlwdElELCBuZXdDb250ZW50LCBwcmV2aWV3T25seSwg
ZXJyb3IsICZtX2N1cnJlbnRDYWxsU3RhY2ssICZyZXN1bHRPYmplY3QpKQogICAgICAgICByZXR1
cm47CiAgICAgbmV3Q2FsbEZyYW1lcyA9IGN1cnJlbnRDYWxsRnJhbWVzKCk7CkBAIC00NTUsNyAr
NDU4LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRTY3JpcHRTb3VyY2UoRXJy
b3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHMKICAgICAgICAgKmVycm9yID0gIk5vIHNj
cmlwdCBmb3IgaWQ6ICIgKyBzY3JpcHRJRFN0cjsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25z
dCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkZ1bmN0
aW9uRGV0YWlscz4mIGRldGFpbHMpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmdldEZ1
bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnVu
Y3Rpb25JZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpGdW5jdGlv
bkRldGFpbHM+JiBkZXRhaWxzKQogewogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0
ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQoZnVu
Y3Rpb25JZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewpAQCAtNTQ3
LDcgKzU1MCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0UGF1c2VPbkV4Y2Vw
dGlvbnNJbXBsKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywKICAgICAgICAgKmVycm9yU3RyaW5n
ID0gIkludGVybmFsIGVycm9yLiBDb3VsZCBub3QgY2hhbmdlIHBhdXNlIG9uIGV4Y2VwdGlvbnMg
c3RhdGUiOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmV2YWx1YXRlT25DYWxs
RnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlk
LCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3Jv
dXAsIGNvbnN0IGJvb2wqIGNvbnN0IGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY29uc3QgYm9vbCog
Y29uc3QgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBib29sKiBj
b25zdCByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxU
eXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBUeXBlQnVpbGRlcjo6
T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OmV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyog
Y29uc3Qgb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGNvbnN0IGluY2x1ZGVDb21tYW5kTGluZUFQ
SSwgY29uc3QgYm9vbCogY29uc3QgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xl
LCBjb25zdCBib29sKiBjb25zdCByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVBy
ZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmpl
Y3Q+JiByZXN1bHQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2Fz
VGhyb3duKQogewogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQoY2FsbEZyYW1lSWQpOwog
ICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKQEAgLTU3MSw3ICs1NzQsNyBA
QCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdAogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50Ojpjb21waWxlU2NyaXB0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgVHlwZUJ1aWxkZXI6
Ok9wdE91dHB1dDxTY3JpcHRJZD4qIHNjcmlwdElELCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PFN0
cmluZz4qIHN5bnRheEVycm9yTWVzc2FnZSkKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
Y29tcGlsZVNjcmlwdChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZXhw
cmVzc2lvbiwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
Ok9wdE91dHB1dDxTY3JpcHRJZD4qIHNjcmlwdElELCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpP
cHRPdXRwdXQ8U3RyaW5nPiogc3ludGF4RXJyb3JNZXNzYWdlKQogewogICAgIEluamVjdGVkU2Ny
aXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKGVycm9yU3RyaW5nLCAw
KTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CkBAIC01OTAsNyArNTkz
LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpjb21waWxlU2NyaXB0KEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW4KICAgICAqc2NyaXB0SUQgPSBzY3JpcHRJRFZh
bHVlOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJ1blNjcmlwdChFcnJvclN0
cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFNjcmlwdElkJiBzY3JpcHRJRCwgY29uc3QgaW50KiBl
eGVjdXRpb25Db250ZXh0SWQsIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIGNvbnN0
IGJvb2wqIGNvbnN0IGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgUmVmUHRy
PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIFR5cGVCdWlsZGVy
OjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6cnVuU2NyaXB0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU2NyaXB0SWQmIHNj
cmlwdElELCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCwgY29uc3QgU3RyaW5nKiBjb25z
dCBvYmplY3RHcm91cCwgY29uc3QgYm9vbCogY29uc3QgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0Fu
ZE11dGVDb25zb2xlLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVt
b3RlT2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9v
bD4qIHdhc1Rocm93bikKIHsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGlu
amVjdGVkU2NyaXB0Rm9yRXZhbChlcnJvclN0cmluZywgZXhlY3V0aW9uQ29udGV4dElkKTsKICAg
ICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CkBAIC02MDUsNyArNjA4LDcgQEAg
dm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpydW5TY3JpcHQoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBjb25zdCBTY3JpcHRJZCYKICAgICAgICAgbXV0ZUNvbnNvbGUoKTsKICAgICB9CiAK
LSAgICBTY3JpcHRWYWx1ZSB2YWx1ZTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB2YWx1
ZTsKICAgICBib29sIHdhc1Rocm93blZhbHVlOwogICAgIFN0cmluZyBleGNlcHRpb25NZXNzYWdl
OwogICAgIHNjcmlwdERlYnVnU2VydmVyKCkucnVuU2NyaXB0KGluamVjdGVkU2NyaXB0LnNjcmlw
dFN0YXRlKCksIHNjcmlwdElELCAmdmFsdWUsICZ3YXNUaHJvd25WYWx1ZSwgJmV4Y2VwdGlvbk1l
c3NhZ2UpOwpAQCAtNjM4LDE0ICs2NDEsMTQgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpzY3JpcHRFeGVjdXRpb25CbG9ja2VkQnlDU1AoY29uc3QgU3RyaW5nJiBkaXJlY3RpdmUKICAg
ICB9CiB9CiAKLVBhc3NSZWZQdHI8QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJh
bWU+PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjdXJyZW50Q2FsbEZyYW1lcygpCitQYXNzUmVm
UHRyPEFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjdXJyZW50Q2FsbEZyYW1lcygpCiB7CiAgICAgaWYgKCFt
X3BhdXNlZFNjcmlwdFN0YXRlKQotICAgICAgICByZXR1cm4gQXJyYXk8VHlwZUJ1aWxkZXI6OkRl
YnVnZ2VyOjpDYWxsRnJhbWU+OjpjcmVhdGUoKTsKKyAgICAgICAgcmV0dXJuIEFycmF5PEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+OjpjcmVhdGUoKTsKICAgICBJ
bmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5p
bmplY3RlZFNjcmlwdEZvcihtX3BhdXNlZFNjcmlwdFN0YXRlKTsKICAgICBpZiAoaW5qZWN0ZWRT
Y3JpcHQuaGFzTm9WYWx1ZSgpKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICByZXR1cm4gQXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+OjpjcmVh
dGUoKTsKKyAgICAgICAgcmV0dXJuIEFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVn
Z2VyOjpDYWxsRnJhbWU+OjpjcmVhdGUoKTsKICAgICB9CiAgICAgcmV0dXJuIGluamVjdGVkU2Ny
aXB0LndyYXBDYWxsRnJhbWVzKG1fY3VycmVudENhbGxTdGFjayk7CiB9CkBAIC03MTUsNyArNzE4
LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXJzZVNvdXJjZShTb3VyY2VJ
RCBzb3VyY2VJRCwgY29uc3QgU2NyaXB0JiBpblMKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+
IGxvY2F0aW9uID0gcmVzb2x2ZUJyZWFrcG9pbnQoaXQtPmtleSwgc291cmNlSUQsIGJyZWFrcG9p
bnQpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6Okxv
Y2F0aW9uPiBsb2NhdGlvbiA9IHJlc29sdmVCcmVha3BvaW50KGl0LT5rZXksIHNvdXJjZUlELCBi
cmVha3BvaW50KTsKICAgICAgICAgaWYgKGxvY2F0aW9uKQogICAgICAgICAgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXItPmJyZWFrcG9pbnRSZXNvbHZlZChpdC0+a2V5LCBsb2NhdGlvbik7CiAgICAg
fQpAQCAtNzI2LDcgKzcyOSw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZmFpbGVk
VG9QYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nCiAgICAgbV9mcm9u
dGVuZERpc3BhdGNoZXItPnNjcmlwdEZhaWxlZFRvUGFyc2UodXJsLCBkYXRhLCBmaXJzdExpbmUs
IGVycm9yTGluZSwgZXJyb3JNZXNzYWdlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpkaWRQYXVzZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IFNjcmlwdFZh
bHVlJiBjYWxsRnJhbWVzLCBjb25zdCBTY3JpcHRWYWx1ZSYgZXhjZXB0aW9uKQordm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUs
IGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYgZXhjZXB0aW9uKQogewogICAgIEFTU0VSVChzY3JpcHRTdGF0ZSAm
JiAhbV9wYXVzZWRTY3JpcHRTdGF0ZSk7CiAgICAgbV9wYXVzZWRTY3JpcHRTdGF0ZSA9IHNjcmlw
dFN0YXRlOwpAQCAtNzU1LDcgKzc1OCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
ZGlkUGF1c2UoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcHRWCiB2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENvbnRpbnVlKCkKIHsKICAgICBtX3BhdXNlZFNj
cmlwdFN0YXRlID0gMDsKLSAgICBtX2N1cnJlbnRDYWxsU3RhY2sgPSBTY3JpcHRWYWx1ZSgpOwor
ICAgIG1fY3VycmVudENhbGxTdGFjayA9IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCk7CiAgICAg
Y2xlYXJCcmVha0RldGFpbHMoKTsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVzdW1lZCgp
OwogfQpAQCAtNzcwLDcgKzc3Myw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJl
YWtQcm9ncmFtKEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSCiB2b2lkIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFyKCkKIHsKICAgICBtX3BhdXNlZFNjcmlwdFN0YXRl
ID0gMDsKLSAgICBtX2N1cnJlbnRDYWxsU3RhY2sgPSBTY3JpcHRWYWx1ZSgpOworICAgIG1fY3Vy
cmVudENhbGxTdGFjayA9IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCk7CiAgICAgbV9zY3JpcHRz
LmNsZWFyKCk7CiAgICAgbV9icmVha3BvaW50SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3Bv
aW50SURzLmNsZWFyKCk7CiAgICAgbV9jb250aW51ZVRvTG9jYXRpb25CcmVha3BvaW50SUQgPSBu
b0JyZWFrcG9pbnRJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5oCmluZGV4IDRiZTYwMDAuLjk1ZWRhMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtMzEsMTIgKzMx
LDE0IEBACiAjZGVmaW5lIEluc3BlY3RvckRlYnVnZ2VyQWdlbnRfaAogCiAjaWYgRU5BQkxFKEpB
VkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRShJTlNQRUNUT1IpCisKICNpbmNsdWRlICJCcmVh
a3BvaW50SUQuaCIKICNpbmNsdWRlICJDb25zb2xlQVBJVHlwZXMuaCIKICNpbmNsdWRlICJDb25z
b2xlVHlwZXMuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgotI2luY2x1ZGUgIkluc3Bl
Y3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5o
IgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2Vi
QWdlbnRCYXNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0QnJlYWtwb2ludC5oIgogI2luY2x1ZGUgIlNj
cmlwdERlYnVnTGlzdGVuZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgpAQCAtNDgsMTkg
KzUwLDI1IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIERlcHJlY2F0ZWQg
eworY2xhc3MgU2NyaXB0VmFsdWU7Cit9CiAKLWNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsK
K25hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBjbGFzcyBJbnNw
ZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKK30KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBJbnN0cnVtZW50aW5n
QWdlbnRzOwogY2xhc3MgU2NyaXB0RGVidWdTZXJ2ZXI7Ci1jbGFzcyBTY3JpcHRWYWx1ZTsKIAog
dHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgU2NyaXB0RGVidWdMaXN0ZW5l
ciwgcHVibGljIEluc3BlY3RvckRlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2Ns
YXNzIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBw
dWJsaWMgU2NyaXB0RGVidWdMaXN0ZW5lciwgcHVibGljIEluc3BlY3RvckRlYnVnZ2VyQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIGNvbnN0IGNoYXIqIGJhY2t0cmFjZU9iamVjdEdyb3VwOwpAQCAtNzEsNyArNzksNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNhblNldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyos
IGJvb2wqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3VwcG9ydHNTZXBhcmF0ZVNjcmlwdENvbXBpbGF0
aW9uQW5kRXhlY3V0aW9uKEVycm9yU3RyaW5nKiwgYm9vbCopOwogCi0gICAgdmlydHVhbCB2b2lk
IGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJ
REU7CiAKICAgICBib29sIGlzUGF1c2VkKCk7CkBAIC04MywxNSArOTEsMTUgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lk
IHNldEJyZWFrcG9pbnRzQWN0aXZlKEVycm9yU3RyaW5nKiwgYm9vbCBhY3RpdmUpOwogCi0gICAg
dmlydHVhbCB2b2lkIHNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyosIGludCBsaW5lTnVt
YmVyLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJMLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJM
UmVnZXgsIGNvbnN0IGludCogb3B0aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0IFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+KiBvcHRpb25zLCBUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRJ
ZCosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2Nh
dGlvbj4+JiBsb2NhdGlvbnMpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRCcmVha3BvaW50KEVycm9y
U3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGxvY2F0aW9uLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3B0aW9ucywgVHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpC
cmVha3BvaW50SWQqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4mIGFj
dHVhbExvY2F0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QnJlYWtwb2ludEJ5VXJsKEVycm9y
U3RyaW5nKiwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxVUkwsIGNvbnN0
IFN0cmluZyogb3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBvcHRpb25hbENvbHVtbk51bWJl
ciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piogb3B0aW9ucywgSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dl
cjo6TG9jYXRpb24+PiYgbG9jYXRpb25zKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QnJlYWtwb2lu
dChFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4m
IGxvY2F0aW9uLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBvcHRp
b25zLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiwgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4mIGFjdHVhbExv
Y2F0aW9uKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQnJlYWtwb2ludChFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkZW50aWZpZXIpOwotICAgIHZpcnR1YWwgdm9pZCBj
b250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiYgbG9jYXRpb24pOworICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZVRvTG9jYXRpb24oRXJy
b3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBsb2Nh
dGlvbik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCog
b3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIFJlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaE1hdGNoPj4mKTsK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3Ry
aW5nJiBzY3JpcHRJRCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBjb25zdCBib29sKiBwcmV2
aWV3LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2Fs
bEZyYW1lPj4mIG5ld0NhbGxGcmFtZXMsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiByZXN1bHQp
OworICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIHNjcmlwdElELCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBvcHRpb25h
bENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlNl
YXJjaE1hdGNoPj4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2NyaXB0U291cmNlKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBj
b25zdCBib29sKiBwcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZT4+JiBuZXdDYWxsRnJh
bWVzLCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiByZXN1bHQpOwogICAgIHZp
cnR1YWwgdm9pZCBnZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNj
cmlwdElELCBTdHJpbmcqIHNjcmlwdFNvdXJjZSk7Ci0gICAgdmlydHVhbCB2b2lkIGdldEZ1bmN0
aW9uRGV0YWlscyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRy
PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiYpOworICAgIHZpcnR1YWwg
dm9pZCBnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZ1bmN0
aW9uSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6RnVuY3Rpb25E
ZXRhaWxzPiYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXVzZShFcnJvclN0cmluZyopOwogICAgIHZp
cnR1YWwgdm9pZCByZXN1bWUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RlcE92
ZXIoRXJyb3JTdHJpbmcqKTsKQEAgLTEwNiwxNSArMTE0LDE1IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCogZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0Fu
ZE11dGVDb25zb2xlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sKiBy
ZXR1cm5CeVZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sKiBn
ZW5lcmF0ZVByZXZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxUeXBl
QnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOwot
ICAgIHZvaWQgY29tcGlsZVNjcmlwdChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZXhwcmVz
c2lvbiwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8VHlw
ZUJ1aWxkZXI6OkRlYnVnZ2VyOjpTY3JpcHRJZD4qLCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PFN0
cmluZz4qIHN5bnRheEVycm9yTWVzc2FnZSk7Ci0gICAgdm9pZCBydW5TY3JpcHQoRXJyb3JTdHJp
bmcqLCBjb25zdCBUeXBlQnVpbGRlcjo6RGVidWdnZXI6OlNjcmlwdElkJiwgY29uc3QgaW50KiBl
eGVjdXRpb25Db250ZXh0SWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wq
IGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8
Ym9vbD4qIHdhc1Rocm93bik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91
dHB1dDxib29sPiogd2FzVGhyb3duKTsKKyAgICB2b2lkIGNvbXBpbGVTY3JpcHQoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
RGVidWdnZXI6OlNjcmlwdElkPiosIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxT
dHJpbmc+KiBzeW50YXhFcnJvck1lc3NhZ2UpOworICAgIHZvaWQgcnVuU2NyaXB0KEVycm9yU3Ry
aW5nKiwgY29uc3QgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OlNjcmlwdElkJiwg
Y29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAs
IGNvbnN0IGJvb2wqIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwg
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRPdmVybGF5TWVzc2FnZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyopOwogCi0gICAgdm9pZCBzY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KEluc3BlY3RvckRl
YnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkVudW0gYnJlYWtSZWFzb24sIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhKTsKKyAgICB2b2lkIHNjaGVkdWxlUGF1c2VPbk5l
eHRTdGF0ZW1lbnQoSW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6
RW51bSBicmVha1JlYXNvbiwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4g
ZGF0YSk7CiAgICAgdm9pZCBjYW5jZWxQYXVzZU9uTmV4dFN0YXRlbWVudCgpOwotICAgIHZvaWQg
YnJlYWtQcm9ncmFtKEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246
OkVudW0gYnJlYWtSZWFzb24sIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhKTsKKyAg
ICB2b2lkIGJyZWFrUHJvZ3JhbShJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6
UmVhc29uOjpFbnVtIGJyZWFrUmVhc29uLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0PiBkYXRhKTsKICAgICB2aXJ0dWFsIHZvaWQgc2NyaXB0RXhlY3V0aW9uQmxvY2tlZEJ5
Q1NQKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCk7CiAKICAgICBjbGFzcyBMaXN0ZW5lciB7
CkBAIC0xNDEsMjEgKzE0OSwyMSBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgZW5h
YmxlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
UGF1c2UoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywgY29u
c3QgU2NyaXB0VmFsdWUmIGV4Y2VwdGlvbik7CisgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKEpT
Qzo6RXhlY1N0YXRlKiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMs
IGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBleGNlcHRpb24pOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRDb250aW51ZSgpOwogICAgIHZvaWQgcmVzZXQoKTsKIAogcHJpdmF0ZToKICAgICBi
b29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH07CiAKLSAgICBQYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZT4+
IGN1cnJlbnRDYWxsRnJhbWVzKCk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4g
Y3VycmVudENhbGxGcmFtZXMoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRQYXJzZVNvdXJjZShT
b3VyY2VJRCwgY29uc3QgU2NyaXB0JikgT1ZFUlJJREUgRklOQUw7CiAgICAgdmlydHVhbCB2b2lk
IGZhaWxlZFRvUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZGF0
YSwgaW50IGZpcnN0TGluZSwgaW50IGVycm9yTGluZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UpIE9WRVJSSURFIEZJTkFMOwogCiAgICAgdm9pZCBzZXRQYXVzZU9uRXhjZXB0aW9uc0ltcGwo
RXJyb3JTdHJpbmcqLCBpbnQpOwogCi0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdn
ZXI6OkxvY2F0aW9uPiByZXNvbHZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJ
ZGVudGlmaWVyLCBTb3VyY2VJRCwgY29uc3QgU2NyaXB0QnJlYWtwb2ludCYpOworICAgIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiByZXNvbHZl
QnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZGVudGlmaWVyLCBTb3VyY2VJRCwg
Y29uc3QgU2NyaXB0QnJlYWtwb2ludCYpOwogICAgIHZvaWQgY2xlYXIoKTsKICAgICBib29sIGFz
c2VydFBhdXNlZChFcnJvclN0cmluZyopOwogICAgIHZvaWQgY2xlYXJCcmVha0RldGFpbHMoKTsK
QEAgLTE2NCwxOSArMTcyLDE5IEBAIHByaXZhdGU6CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U291
cmNlSUQsIFNjcmlwdD4gU2NyaXB0c01hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBW
ZWN0b3I8QnJlYWtwb2ludElEPj4gQnJlYWtwb2ludElkZW50aWZpZXJUb0RlYnVnU2VydmVyQnJl
YWtwb2ludElEc01hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0Pj4gQnJlYWtwb2ludElkZW50aWZpZXJUb0JyZWFrcG9pbnRNYXA7CisgICAgdHlw
ZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Pj4g
QnJlYWtwb2ludElkZW50aWZpZXJUb0JyZWFrcG9pbnRNYXA7CiAKICAgICBJbmplY3RlZFNjcmlw
dE1hbmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
bnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7
CiAgICAgUmVmUHRyPEluc3BlY3RvckRlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2Vu
ZERpc3BhdGNoZXI7CiAgICAgSlNDOjpFeGVjU3RhdGUqIG1fcGF1c2VkU2NyaXB0U3RhdGU7Ci0g
ICAgU2NyaXB0VmFsdWUgbV9jdXJyZW50Q2FsbFN0YWNrOworICAgIERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlIG1fY3VycmVudENhbGxTdGFjazsKICAgICBTY3JpcHRzTWFwIG1fc2NyaXB0czsKICAg
ICBCcmVha3BvaW50SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SURzTWFwIG1fYnJl
YWtwb2ludElkZW50aWZpZXJUb0RlYnVnU2VydmVyQnJlYWtwb2ludElEczsKICAgICBCcmVha3Bv
aW50SWRlbnRpZmllclRvQnJlYWtwb2ludE1hcCBtX2phdmFTY3JpcHRCcmVha3BvaW50czsKICAg
ICBCcmVha3BvaW50SUQgbV9jb250aW51ZVRvTG9jYXRpb25CcmVha3BvaW50SUQ7CiAgICAgSW5z
cGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RW51bSBtX2JyZWFrUmVh
c29uOwotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1fYnJlYWtBdXhEYXRhOworICAgIFJl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gbV9icmVha0F1eERhdGE7CiAgICAgYm9v
bCBtX2VuYWJsZWQ7CiAgICAgYm9vbCBtX2phdmFTY3JpcHRQYXVzZVNjaGVkdWxlZDsKICAgICBM
aXN0ZW5lciogbV9saXN0ZW5lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGb3J3YXJkaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRm9yd2FyZGluZy5oCmluZGV4IGY2MDY1OTQuLmY2OGZjZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGb3J3YXJkaW5nLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZvcndhcmRpbmcuaApAQCAtMzAsNyArMzAsNyBAQAog
I2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIDogcHVibGljIElu
c3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIHsgfTsKK3R5cGVkZWYgSW5zcGVjdG9y
OjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogfQog
CiAjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yRm9yd2FyZGluZ19oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwu
Y3BwCmluZGV4IDg3MTFhOGUuLmFhOGNhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKQEAgLTQ4LDE3
ICs0OCwxOSBAQAogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNp
bmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxs
LmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisjaW5jbHVkZSAiU2NyaXB0R2xvYmFsT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgog
I2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNp
bmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVl
Lmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5z
cGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBpbnNw
ZWN0b3JBdHRhY2hlZEhlaWdodFNldHRpbmcgPSAiaW5zcGVjdG9yQXR0YWNoZWRIZWlnaHQiOwpA
QCAtMzQ0LDcgKzM0Niw3IEBAIGJvb2wgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6aXNV
bmRlclRlc3QoKQogCiBib29sIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmV2YWx1YXRl
QXNCb29sZWFuKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbikKIHsKLSAgICBTY3JpcHRWYWx1ZSB2
YWx1ZSA9IG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0
KGV4cHJlc3Npb24pOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHZhbHVlID0gbV9mcm9u
dGVuZFBhZ2UtPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoZXhwcmVzc2lvbik7
CiAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKG1haW5Xb3JsZEV4ZWNTdGF0ZSgmbV9mcm9udGVu
ZFBhZ2UtPm1haW5GcmFtZSgpKSkgPT0gInRydWUiOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCmluZGV4IGJlMjRlMWUuLjI4
MDlmNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnQu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQuaCIKKyNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKICNp
bmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgpAQCAtNTMsMjkgKzU0LDMzIEBACiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgog
I2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2Uu
aCIKLSNpbmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwuaCIKKyNpbmNsdWRlICJTY3JpcHRHbG9i
YWxPYmplY3QuaCIKKyNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNvdW5kLmgi
CiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9T
Y3JpcHRGdW5jdGlvbkNhbGwuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKK3Vz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVO
QUJMRShDT05URVhUX01FTlVTKQogY2xhc3MgRnJvbnRlbmRNZW51UHJvdmlkZXIgOiBwdWJsaWMg
Q29udGV4dE1lbnVQcm92aWRlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RnJv
bnRlbmRNZW51UHJvdmlkZXI+IGNyZWF0ZShJbnNwZWN0b3JGcm9udGVuZEhvc3QqIGZyb250ZW5k
SG9zdCwgU2NyaXB0T2JqZWN0IGZyb250ZW5kQXBpT2JqZWN0LCBjb25zdCBWZWN0b3I8Q29udGV4
dE1lbnVJdGVtPiYgaXRlbXMpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RnJvbnRlbmRNZW51UHJv
dmlkZXI+IGNyZWF0ZShJbnNwZWN0b3JGcm9udGVuZEhvc3QqIGZyb250ZW5kSG9zdCwgRGVwcmVj
YXRlZDo6U2NyaXB0T2JqZWN0IGZyb250ZW5kQXBpT2JqZWN0LCBjb25zdCBWZWN0b3I8Q29udGV4
dE1lbnVJdGVtPiYgaXRlbXMpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZy
b250ZW5kTWVudVByb3ZpZGVyKGZyb250ZW5kSG9zdCwgZnJvbnRlbmRBcGlPYmplY3QsIGl0ZW1z
KSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgZGlzY29ubmVjdCgpCiAgICAgewotICAgICAgICBt
X2Zyb250ZW5kQXBpT2JqZWN0ID0gU2NyaXB0T2JqZWN0KCk7CisgICAgICAgIG1fZnJvbnRlbmRB
cGlPYmplY3QgPSBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QoKTsKICAgICAgICAgbV9mcm9udGVu
ZEhvc3QgPSAwOwogICAgIH0KICAgICAKIHByaXZhdGU6Ci0gICAgRnJvbnRlbmRNZW51UHJvdmlk
ZXIoSW5zcGVjdG9yRnJvbnRlbmRIb3N0KiBmcm9udGVuZEhvc3QsIFNjcmlwdE9iamVjdCBmcm9u
dGVuZEFwaU9iamVjdCwgY29uc3QgVmVjdG9yPENvbnRleHRNZW51SXRlbT4mIGl0ZW1zKQorICAg
IEZyb250ZW5kTWVudVByb3ZpZGVyKEluc3BlY3RvckZyb250ZW5kSG9zdCogZnJvbnRlbmRIb3N0
LCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgZnJvbnRlbmRBcGlPYmplY3QsIGNvbnN0IFZlY3Rv
cjxDb250ZXh0TWVudUl0ZW0+JiBpdGVtcykKICAgICAgICAgOiBtX2Zyb250ZW5kSG9zdChmcm9u
dGVuZEhvc3QpCiAgICAgICAgICwgbV9mcm9udGVuZEFwaU9iamVjdChmcm9udGVuZEFwaU9iamVj
dCkKICAgICAgICAgLCBtX2l0ZW1zKGl0ZW1zKQpAQCAtOTksNyArMTA0LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoRGVmaW5p
dGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAgICAgICAgICAgICBpbnQgaXRlbU51bWJlciA9
IGl0ZW0tPmFjdGlvbigpIC0gQ29udGV4dE1lbnVJdGVtQmFzZUN1c3RvbVRhZzsKIAotICAgICAg
ICAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1fZnJvbnRlbmRBcGlPYmplY3QsICJj
b250ZXh0TWVudUl0ZW1TZWxlY3RlZCIpOworICAgICAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0
RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1fZnJvbnRlbmRBcGlPYmplY3QsICJjb250ZXh0TWVudUl0
ZW1TZWxlY3RlZCIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsK
ICAgICAgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGl0ZW1OdW1iZXIpOwogICAgICAg
ICAgICAgZnVuY3Rpb24uY2FsbCgpOwogICAgICAgICB9CkBAIC0xMDgsNyArMTEzLDcgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dE1lbnVDbGVhcmVkKCkKICAgICB7CiAgICAg
ICAgIGlmIChtX2Zyb250ZW5kSG9zdCkgewotICAgICAgICAgICAgU2NyaXB0RnVuY3Rpb25DYWxs
IGZ1bmN0aW9uKG1fZnJvbnRlbmRBcGlPYmplY3QsICJjb250ZXh0TWVudUNsZWFyZWQiKTsKKyAg
ICAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2Zyb250
ZW5kQXBpT2JqZWN0LCAiY29udGV4dE1lbnVDbGVhcmVkIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxs
SGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAgICAgICAgICAgZnVuY3Rpb24uY2FsbCgpOwogCiAg
ICAgICAgICAgICBtX2Zyb250ZW5kSG9zdC0+bV9tZW51UHJvdmlkZXIgPSAwOwpAQCAtMTE3LDcg
KzEyMiw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0KiBt
X2Zyb250ZW5kSG9zdDsKLSAgICBTY3JpcHRPYmplY3QgbV9mcm9udGVuZEFwaU9iamVjdDsKKyAg
ICBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgbV9mcm9udGVuZEFwaU9iamVjdDsKICAgICBWZWN0
b3I8Q29udGV4dE1lbnVJdGVtPiBtX2l0ZW1zOwogfTsKICNlbmRpZgpAQCAtMjcyLDcgKzI3Nyw3
IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpzaG93Q29udGV4dE1lbnUoRXZlbnQqIGV2
ZW50LCBjb25zdCBWZWN0b3I8Q29udGV4dE1lCiAKICAgICBBU1NFUlQobV9mcm9udGVuZFBhZ2Up
OwogICAgIEpTQzo6RXhlY1N0YXRlKiBmcm9udGVuZEV4ZWNTdGF0ZSA9IGV4ZWNTdGF0ZUZyb21Q
YWdlKGRlYnVnZ2VyV29ybGQoKSwgbV9mcm9udGVuZFBhZ2UpOwotICAgIFNjcmlwdE9iamVjdCBm
cm9udGVuZEFwaU9iamVjdDsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgZnJvbnRlbmRB
cGlPYmplY3Q7CiAgICAgaWYgKCFTY3JpcHRHbG9iYWxPYmplY3Q6OmdldChmcm9udGVuZEV4ZWNT
dGF0ZSwgIkluc3BlY3RvckZyb250ZW5kQVBJIiwgZnJvbnRlbmRBcGlPYmplY3QpKSB7CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNwcApp
bmRleCAwODE0YTBmLi43Yjc4OGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5jcHAKQEAgLTM5LDYgKzM5LDggQEAK
ICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmls
ZXIuaCIKIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgVXNlckluaXRpYXRlZFByb2ZpbGVOYW1lSGVh
cCA9ICJvcmcud2Via2l0LnByb2ZpbGVzLnVzZXItaW5pdGlhdGVkIjsKQEAgLTQ5LDcgKzUxLDcg
QEAgUGFzc093blB0cjxJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudD4gSW5zcGVjdG9ySGVhcFBy
b2ZpbGVyQWdlbnQ6OmNyZWF0ZShJbnN0cnUKIH0KIAogSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdl
bnQ6Okluc3BlY3RvckhlYXBQcm9maWxlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiSGVhcFByb2ZpbGVy
IiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlM
aXRlcmFsKCJIZWFwUHJvZmlsZXIiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1fbmV4dFVz
ZXJJbml0aWF0ZWRIZWFwU25hcHNob3ROdW1iZXIoMSkKICAgICAsIG1fcHJvZmlsZUhlYWRlcnNS
ZXF1ZXN0ZWQoZmFsc2UpCkBAIC04MCw3ICs4Miw3IEBAIHZvaWQgSW5zcGVjdG9ySGVhcFByb2Zp
bGVyQWdlbnQ6OnJlc2V0RnJvbnRlbmRQcm9maWxlcygpCiAgICAgICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyLT5yZXNldFByb2ZpbGVzKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySGVhcFByb2ZpbGVy
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmRE
aXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6ZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9u
dGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hl
cikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9ySGVhcFByb2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAg
IG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JIZWFwUHJvZmlsZXJCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKQEAgLTk5LDkgKzEwMSw5IEBA
IHZvaWQgSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OmNvbGxlY3RHYXJiYWdlKFdlYkNvcmU6
OkVycm9yU3RyaW5nKikKICAgICBTY3JpcHRQcm9maWxlcjo6Y29sbGVjdEdhcmJhZ2UoKTsKIH0K
IAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6SGVhcFByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPiBJ
bnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6Y3JlYXRlU25hcHNob3RIZWFkZXIoY29uc3QgU2Ny
aXB0SGVhcFNuYXBzaG90JiBzbmFwc2hvdCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6SGVhcFByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPiBJbnNwZWN0b3JIZWFwUHJvZmlsZXJB
Z2VudDo6Y3JlYXRlU25hcHNob3RIZWFkZXIoY29uc3QgU2NyaXB0SGVhcFNuYXBzaG90JiBzbmFw
c2hvdCkKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkhlYXBQcm9maWxlcjo6UHJvZmlsZUhl
YWRlcj4gaGVhZGVyID0gVHlwZUJ1aWxkZXI6OkhlYXBQcm9maWxlcjo6UHJvZmlsZUhlYWRlcjo6
Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6SGVhcFByb2ZpbGVy
OjpQcm9maWxlSGVhZGVyPiBoZWFkZXIgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpIZWFwUHJv
ZmlsZXI6OlByb2ZpbGVIZWFkZXI6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRVaWQoc25hcHNob3Qu
dWlkKCkpCiAgICAgICAgIC5zZXRUaXRsZShzbmFwc2hvdC50aXRsZSgpKTsKICAgICBoZWFkZXIt
PnNldE1heEpTT2JqZWN0SWQoc25hcHNob3QubWF4U25hcHNob3RKU09iamVjdElkKCkpOwpAQCAt
MTEzLDEwICsxMTUsMTAgQEAgdm9pZCBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6aGFzSGVh
cFByb2ZpbGVyKEVycm9yU3RyaW5nKiwgYm9vbCogcmVzdWx0KQogICAgICpyZXN1bHQgPSBTY3Jp
cHRQcm9maWxlcjo6aGFzSGVhcFByb2ZpbGVyKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySGVhcFBy
b2ZpbGVyQWdlbnQ6OmdldFByb2ZpbGVIZWFkZXJzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVC
dWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6SGVhcFByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPj4m
IGhlYWRlcnMpCit2b2lkIEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpnZXRQcm9maWxlSGVh
ZGVycyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpIZWFwUHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+PiYgaGVh
ZGVycykKIHsKICAgICBtX3Byb2ZpbGVIZWFkZXJzUmVxdWVzdGVkID0gdHJ1ZTsKLSAgICBoZWFk
ZXJzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpIZWFwUHJvZmlsZXI6OlByb2Zp
bGVIZWFkZXI+OjpjcmVhdGUoKTsKKyAgICBoZWFkZXJzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6SGVhcFByb2ZpbGVyOjpQcm9maWxlSGVh
ZGVyPjo6Y3JlYXRlKCk7CiAKICAgICBJZFRvSGVhcFNuYXBzaG90TWFwOjppdGVyYXRvciBzbmFw
c2hvdHNFbmQgPSBtX3NuYXBzaG90cy5lbmQoKTsKICAgICBmb3IgKElkVG9IZWFwU25hcHNob3RN
YXA6Oml0ZXJhdG9yIGl0ID0gbV9zbmFwc2hvdHMuYmVnaW4oKTsgaXQgIT0gc25hcHNob3RzRW5k
OyArK2l0KQpAQCAtMTkwLDcgKzE5Miw3IEBAIHZvaWQgSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdl
bnQ6OnRha2VIZWFwU25hcHNob3QoRXJyb3JTdHJpbmcqLCBjb25zdCBib29sKiByZXBvCiAgICAg
fQogfQogCi12b2lkIEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpnZXRPYmplY3RCeUhlYXBP
YmplY3RJZChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgaGVhcFNuYXBzaG90T2Jq
ZWN0SWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JIZWFwUHJvZmlsZXJB
Z2VudDo6Z2V0T2JqZWN0QnlIZWFwT2JqZWN0SWQoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBT
dHJpbmcmIGhlYXBTbmFwc2hvdE9iamVjdElkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVz
dWx0KQogewogICAgIGJvb2wgb2s7CiAgICAgdW5zaWduZWQgaWQgPSBoZWFwU25hcHNob3RPYmpl
Y3RJZC50b1VJbnQoJm9rKTsKQEAgLTE5OCw3ICsyMDAsNyBAQCB2b2lkIEluc3BlY3RvckhlYXBQ
cm9maWxlckFnZW50OjpnZXRPYmplY3RCeUhlYXBPYmplY3RJZChFcnJvclN0cmluZyogZXJyb3Is
IGNvbgogICAgICAgICAqZXJyb3IgPSAiSW52YWxpZCBoZWFwIHNuYXBzaG90IG9iamVjdCBpZCI7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgU2NyaXB0T2JqZWN0IGhlYXBPYmplY3QgPSBT
Y3JpcHRQcm9maWxlcjo6b2JqZWN0QnlIZWFwT2JqZWN0SWQoaWQpOworICAgIERlcHJlY2F0ZWQ6
OlNjcmlwdE9iamVjdCBoZWFwT2JqZWN0ID0gU2NyaXB0UHJvZmlsZXI6Om9iamVjdEJ5SGVhcE9i
amVjdElkKGlkKTsKICAgICBpZiAoaGVhcE9iamVjdC5oYXNOb1ZhbHVlKCkpIHsKICAgICAgICAg
KmVycm9yID0gIk9iamVjdCBpcyBub3QgYXZhaWxhYmxlIjsKICAgICAgICAgcmV0dXJuOwpAQCAt
MjIwLDcgKzIyMiw3IEBAIHZvaWQgSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OmdldEhlYXBP
YmplY3RJZChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0CiAgICAgICAgICplcnJvclN0
cmluZyA9ICJJbnNwZWN0ZWQgY29udGV4dCBoYXMgZ29uZSI7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgU2NyaXB0VmFsdWUgdmFsdWUgPSBpbmplY3RlZFNjcmlwdC5maW5kT2JqZWN0QnlJ
ZChvYmplY3RJZCk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgdmFsdWUgPSBpbmplY3Rl
ZFNjcmlwdC5maW5kT2JqZWN0QnlJZChvYmplY3RJZCk7CiAgICAgaWYgKHZhbHVlLmhhc05vVmFs
dWUoKSB8fCB2YWx1ZS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgICplcnJvclN0cmluZyA9ICJP
YmplY3Qgd2l0aCBnaXZlbiBpZCBub3QgZm91bmQiOwogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5o
CmluZGV4IGNjMzY4NjguLjYyYzEzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5oCkBAIC0zMyw4ICszMyw5IEBACiAK
ICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFKElOU1BFQ1RPUikKIAot
I2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVk
ZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAt
NDksNyArNTAsNyBAQCBjbGFzcyBTY3JpcHRQcm9maWxlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJv
clN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQgOiBwdWJsaWMgSW5z
cGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9ySGVhcFByb2ZpbGVyQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50IDogcHVibGlj
IEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3RvckhlYXBQcm9maWxlckJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9ySGVh
cFByb2ZpbGVyQWdlbnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudD4gY3JlYXRlKEluc3Ry
dW1lbnRpbmdBZ2VudHMqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKQEAgLTYxLDE2ICs2Miwx
NiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgaGFzSGVhcFByb2ZpbGVyKEVycm9yU3Ry
aW5nKiwgYm9vbCopOwogCi0gICAgdmlydHVhbCB2b2lkIGdldFByb2ZpbGVIZWFkZXJzKEVycm9y
U3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6SGVhcFByb2Zp
bGVyOjpQcm9maWxlSGVhZGVyPj4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvZmlsZUhlYWRl
cnMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6SGVhcFByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPj4mKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0SGVhcFNuYXBzaG90KEVycm9yU3RyaW5nKiwgaW50IHVpZCk7CiAg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZVByb2ZpbGUoRXJyb3JTdHJpbmcqLCBpbnQgdWlkKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5k
QmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIHRha2VIZWFwU25hcHNob3Qo
RXJyb3JTdHJpbmcqLCBjb25zdCBib29sKiByZXBvcnRQcm9ncmVzcyk7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0T2JqZWN0QnlIZWFwT2JqZWN0SWQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcm
IGhlYXBTbmFwc2hvdE9iamVjdElkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCk7CisgICAgdmlydHVh
bCB2b2lkIGdldE9iamVjdEJ5SGVhcE9iamVjdElkKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiBoZWFwU25hcHNob3RPYmplY3RJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCk7
CiAgICAgdmlydHVhbCB2b2lkIGdldEhlYXBPYmplY3RJZChFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYgb2JqZWN0SWQsIFN0cmluZyogaGVhcFNuYXBzaG90T2JqZWN0SWQpOwogCiBwcml2YXRl
OgpAQCAtODAsNyArODEsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXNldEZyb250ZW5kUHJv
ZmlsZXMoKTsKIAotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkhlYXBQcm9maWxlcjo6UHJv
ZmlsZUhlYWRlcj4gY3JlYXRlU25hcHNob3RIZWFkZXIoY29uc3QgU2NyaXB0SGVhcFNuYXBzaG90
Jik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpIZWFwUHJvZmlsZXI6
OlByb2ZpbGVIZWFkZXI+IGNyZWF0ZVNuYXBzaG90SGVhZGVyKGNvbnN0IFNjcmlwdEhlYXBTbmFw
c2hvdCYpOwogCiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVjdGVkU2NyaXB0TWFu
YWdlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9ySGVhcFByb2ZpbGVyRnJvbnRlbmRE
aXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IGEwMjU3MTMuLmZi
NDJmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRl
eGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
ZGV4ZWREQkFnZW50LmNwcApAQCAtNjEsMjcgKzYxLDI4IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRT
Y3JpcHQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvclBhZ2VBZ2VudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUg
Ikluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotCisj
aW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkFycmF5OwotdXNpbmcgV2ViQ29y
ZTo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6RGF0YWJhc2VXaXRoT2JqZWN0U3RvcmVzOwotdXNp
bmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6RGF0YUVudHJ5OwotdXNpbmcgV2Vi
Q29yZTo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6S2V5OwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1
aWxkZXI6OkluZGV4ZWREQjo6S2V5UGF0aDsKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpJ
bmRleGVkREI6OktleVJhbmdlOwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkluZGV4ZWRE
Qjo6T2JqZWN0U3RvcmU7Ci11c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpP
YmplY3RTdG9yZUluZGV4OwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk7Cit1
c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6OkRhdGFiYXNlV2l0aE9iamVj
dFN0b3JlczsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6RGF0YUVu
dHJ5OwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpLZXk7Cit1c2lu
ZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6OktleVBhdGg7Cit1c2luZyBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6OktleVJhbmdlOwordXNpbmcgSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpPYmplY3RTdG9yZTsKK3VzaW5nIEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmVJbmRleDsKIAordHlwZWRlZiBJbnNw
ZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UgUmVxdWVzdENh
bGxiYWNrOwogdHlwZWRlZiBXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXI6OlJlcXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJhY2sgUmVxdWVzdERhdGFiYXNl
TmFtZXNDYWxsYmFjazsKIHR5cGVkZWYgV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhlZERCQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyOjpSZXF1ZXN0RGF0YWJhc2VDYWxsYmFjayBSZXF1ZXN0RGF0YWJh
c2VDYWxsYmFjazsKIHR5cGVkZWYgV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhlZERCQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyOjpSZXF1ZXN0RGF0YUNhbGxiYWNrIFJlcXVlc3REYXRhQ2FsbGJhY2s7
Ci10eXBlZGVmIFdlYkNvcmU6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jh
c2UgUmVxdWVzdENhbGxiYWNrOwogdHlwZWRlZiBXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkNsZWFyT2JqZWN0U3RvcmVDYWxsYmFjayBDbGVhck9i
amVjdFN0b3JlQ2FsbGJhY2s7CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIHsKQEAgLTEyMyw3ICsxMjQsNyBAQCBwdWJsaWM6
CiAgICAgICAgIH0KIAogICAgICAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gZGF0YWJhc2VOYW1l
c0xpc3QgPSByZXF1ZXN0UmVzdWx0LT5kb21TdHJpbmdMaXN0KCk7Ci0gICAgICAgIFJlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gZGF0YWJhc2VOYW1lcyA9IFR5cGVCdWlsZGVyOjpB
cnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkFycmF5PFN0cmluZz4+IGRhdGFiYXNlTmFtZXMgPSBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBkYXRhYmFzZU5hbWVzTGlzdC0+bGVuZ3RoKCk7ICsraSkKICAgICAgICAgICAgIGRhdGFi
YXNlTmFtZXMtPmFkZEl0ZW0oZGF0YWJhc2VOYW1lc0xpc3QtPml0ZW0oaSkpOwogICAgICAgICBt
X3JlcXVlc3RDYWxsYmFjay0+c2VuZFN1Y2Nlc3MoZGF0YWJhc2VOYW1lcy5yZWxlYXNlKCkpOwpA
QCAtMjUwLDcgKzI1MSw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEtleVBhdGg+IGtleVBhdGhGcm9t
SURCS2V5UGF0aChjb25zdCBJREJLZXlQYXRoJiBpZGJLZXlQYXRoKQogICAgICAgICBicmVhazsK
ICAgICBjYXNlIElEQktleVBhdGg6OkFycmF5VHlwZTogewogICAgICAgICBrZXlQYXRoID0gS2V5
UGF0aDo6Y3JlYXRlKCkuc2V0VHlwZShLZXlQYXRoOjpUeXBlOjpBcnJheSk7Ci0gICAgICAgIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gYXJyYXkgPSBUeXBlQnVpbGRlcjo6QXJy
YXk8U3RyaW5nPjo6Y3JlYXRlKCk7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTxTdHJpbmc+PiBhcnJheSA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5
PFN0cmluZz46OmNyZWF0ZSgpOwogICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RyaW5n
QXJyYXkgPSBpZGJLZXlQYXRoLmFycmF5KCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc3RyaW5nQXJyYXkuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBhcnJheS0+YWRkSXRlbShz
dHJpbmdBcnJheVtpXSk7CkBAIC0yODUsMTIgKzI4NiwxMiBAQCBwdWJsaWM6CiAKICAgICAgICAg
Y29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSBkYXRhYmFzZU1ldGFkYXRhID0gaWRiRGF0YWJhc2Ut
Pm1ldGFkYXRhKCk7CiAKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVp
bGRlcjo6SW5kZXhlZERCOjpPYmplY3RTdG9yZT4+IG9iamVjdFN0b3JlcyA9IFR5cGVCdWlsZGVy
OjpBcnJheTxUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpPYmplY3RTdG9yZT46OmNyZWF0ZSgpOwor
ICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6SW5kZXhlZERCOjpPYmplY3RTdG9yZT4+IG9iamVjdFN0b3JlcyA9IEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkluZGV4ZWRE
Qjo6T2JqZWN0U3RvcmU+OjpjcmVhdGUoKTsKIAogICAgICAgICBmb3IgKElEQkRhdGFiYXNlTWV0
YWRhdGE6Ok9iamVjdFN0b3JlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGRhdGFiYXNlTWV0YWRh
dGEub2JqZWN0U3RvcmVzLmJlZ2luKCk7IGl0ICE9IGRhdGFiYXNlTWV0YWRhdGEub2JqZWN0U3Rv
cmVzLmVuZCgpOyArK2l0KSB7CiAgICAgICAgICAgICBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFk
YXRhJiBvYmplY3RTdG9yZU1ldGFkYXRhID0gaXQtPnZhbHVlOwogCi0gICAgICAgICAgICBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpJbmRleGVkREI6Ok9iamVjdFN0b3Jl
SW5kZXg+PiBpbmRleGVzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpJbmRleGVk
REI6Ok9iamVjdFN0b3JlSW5kZXg+OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpJbmRleGVk
REI6Ok9iamVjdFN0b3JlSW5kZXg+PiBpbmRleGVzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpPYmplY3RTdG9yZUluZGV4
Pjo6Y3JlYXRlKCk7CiAKICAgICAgICAgICAgIGZvciAoSURCT2JqZWN0U3RvcmVNZXRhZGF0YTo6
SW5kZXhNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gb2JqZWN0U3RvcmVNZXRhZGF0YS5pbmRleGVz
LmJlZ2luKCk7IGl0ICE9IG9iamVjdFN0b3JlTWV0YWRhdGEuaW5kZXhlcy5lbmQoKTsgKytpdCkg
ewogICAgICAgICAgICAgICAgIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEg
PSBpdC0+dmFsdWU7CkBAIC01NTcsNyArNTU4LDcgQEAgcHVibGljOgogfSAvLyBuYW1lc3BhY2UK
IAogSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6Okluc3BlY3RvckluZGV4ZWREQkFnZW50KEluc3Ry
dW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluamVjdGVkU2NyaXB0TWFuYWdl
ciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkK
LSAgICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIkluZGV4ZWREQiIpLCBpbnN0
cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgi
SW5kZXhlZERCIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0
TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdl
bnQpCiB7CkBAIC01NjcsNyArNTY4LDcgQEAgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6On5JbnNw
ZWN0b3JJbmRleGVkREJBZ2VudCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
LCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIElu
c3BlY3RvckluZGV4ZWREQkFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3Bl
Y3RvckluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIs
IHRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluZGV4ZWREQkFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQuaAppbmRleCBiYTM3NTlhLi5iOTU1MjEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaApAQCAtMzMsNyArMzMs
OCBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIK
ICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCkBAIC00NCw3ICs0NSw3IEBAIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKIAogdHlw
ZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckluZGV4ZWREQkFnZW50
IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3RvckluZGV4ZWREQkJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JJbmRleGVkREJBZ2VudCA6
IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JJbmRleGVkREJCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPElu
c3BlY3RvckluZGV4ZWREQkFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cywgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFn
ZXIsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KQogICAgIHsKQEAgLTUyLDcgKzUzLDcg
QEAgcHVibGljOgogICAgIH0KICAgICB+SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQoKTsKIAotICAg
IHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZCgpIE9WRVJSSURFOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZyb250LWVuZC4KQEAg
LTYwLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3Ry
aW5nKik7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3REYXRhYmFzZU5hbWVzKEVycm9yU3RyaW5n
KiwgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YWJh
c2VOYW1lc0NhbGxiYWNrPik7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3REYXRhYmFzZShFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0
YWJhc2VOYW1lLCBQYXNzUmVmUHRyPFJlcXVlc3REYXRhYmFzZUNhbGxiYWNrPik7Ci0gICAgdmly
dHVhbCB2b2lkIHJlcXVlc3REYXRhKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWN1cml0
eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgb2JqZWN0
U3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgaW50IHNraXBDb3VudCwgaW50IHBh
Z2VTaXplLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Pioga2V5UmFuZ2UsIFBhc3NSZWZQ
dHI8UmVxdWVzdERhdGFDYWxsYmFjaz4pOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RGF0YShF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYg
ZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgY29uc3QgU3RyaW5n
JiBpbmRleE5hbWUsIGludCBza2lwQ291bnQsIGludCBwYWdlU2l6ZSwgY29uc3QgUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Pioga2V5UmFuZ2UsIFBhc3NSZWZQdHI8UmVxdWVzdERh
dGFDYWxsYmFjaz4pOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhck9iamVjdFN0b3JlKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBpbl9zZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBpbl9k
YXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5fb2JqZWN0U3RvcmVOYW1lLCBQYXNzUmVmUHRy
PENsZWFyT2JqZWN0U3RvcmVDYWxsYmFjaz4pOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcklucHV0QWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcklucHV0QWdlbnQuY3BwCmluZGV4IDdlY2NiOGQuLmM0
Yjg3ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnB1
dEFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5wdXRB
Z2VudC5jcHAKQEAgLTQ5LDEwICs0OSwxMiBAQAogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5z
cGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEluc3BlY3RvcklucHV0QWdlbnQ6Oklu
c3BlY3RvcklucHV0QWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
cywgUGFnZSogcGFnZSkKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIklu
cHV0IiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVND
SUlMaXRlcmFsKCJJbnB1dCIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9wYWdlKHBh
Z2UpCiB7CiB9CkBAIC02MSw3ICs2Myw3IEBAIEluc3BlY3RvcklucHV0QWdlbnQ6On5JbnNwZWN0
b3JJbnB1dEFnZW50KCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnB1dEFnZW50OjpkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JJbnB1
dEFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3Bh
dGNoZXIpCiB7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvcklucHV0QmFja2Vu
ZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5wdXRBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcklucHV0QWdlbnQuaAppbmRleCBhY2JhMjk5
Li40ZTA2MmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5wdXRBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnB1
dEFnZW50LmgKQEAgLTMzLDggKzMzLDggQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNp
bmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKLQorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFBh
Z2U7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JJbnB1
dEFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3RvcklucHV0
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvcklucHV0QWdlbnQgOiBw
dWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9ySW5wdXRCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvcklucHV0
QWdlbnQpOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvcklucHV0QWdl
bnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBQYWdl
KiBwYWdlKQpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAKICAgICB+SW5zcGVjdG9ySW5wdXRB
Z2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95
RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICAvLyBNZXRob2RzIGNhbGxlZCBm
cm9tIHRoZSBmcm9udGVuZCBmb3Igc2ltdWxhdGluZyBpbnB1dC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggYzRj
NTFjYi4uMTE3ZGIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTgzLDYgKzgzLDggQEAKICNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCit1c2lu
ZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBj
b25zdCBjaGFyKiBjb25zdCByZXF1ZXN0QW5pbWF0aW9uRnJhbWVFdmVudE5hbWUgPSAicmVxdWVz
dEFuaW1hdGlvbkZyYW1lIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCBiZDVjOTUyLi4zM2I2YmMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBA
IC00NSw2ICs0NSwxMCBAQAogI2luY2x1ZGUgIldlYlNvY2tldEZyYW1lLmgiCiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogCituYW1lc3BhY2UgRGVwcmVjYXRlZCB7CitjbGFzcyBTY3JpcHRPYmpl
Y3Q7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTUnVsZTsKQEAgLTc3LDcg
KzgxLDYgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNjcmlwdEFyZ3VtZW50czsK
IGNsYXNzIFNjcmlwdENhbGxTdGFjazsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1j
bGFzcyBTY3JpcHRPYmplY3Q7CiBjbGFzcyBTY3JpcHRQcm9maWxlOwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiBjbGFzcyBTaGFkb3dSb290OwpAQCAtMjc2LDkgKzI3OSw5IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlV2ViU29ja2V0RnJhbWVFcnJvcihEb2N1bWVudCosIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwogI2Vu
ZGlmCiAKLSAgICBzdGF0aWMgU2NyaXB0T2JqZWN0IHdyYXBDYW52YXMyRFJlbmRlcmluZ0NvbnRl
eHRGb3JJbnN0cnVtZW50YXRpb24oRG9jdW1lbnQqLCBjb25zdCBTY3JpcHRPYmplY3QmKTsKKyAg
ICBzdGF0aWMgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IHdyYXBDYW52YXMyRFJlbmRlcmluZ0Nv
bnRleHRGb3JJbnN0cnVtZW50YXRpb24oRG9jdW1lbnQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRPYmplY3QmKTsKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgc3RhdGljIFNjcmlwdE9iamVjdCB3
cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKERvY3VtZW50KiwgY29u
c3QgU2NyaXB0T2JqZWN0Jik7CisgICAgc3RhdGljIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCB3
cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKERvY3VtZW50KiwgY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0Jik7CiAjZW5kaWYKIAogICAgIHN0YXRpYyB2b2lk
IG5ldHdvcmtTdGF0ZUNoYW5nZWQoUGFnZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKaW5kZXggZDI3ZjkwOS4uYzQxNWJm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJl
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQuY3BwCkBAIC00NiwxMCArNDYsMTIgQEAKICNpbmNsdWRlICJSZW5kZXJMYXllckNv
bXBvc2l0b3IuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQ6Okluc3BlY3RvckxheWVyVHJlZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJMYXll
clRyZWUiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShB
U0NJSUxpdGVyYWwoIkxheWVyVHJlZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogewogfQogCkBA
IC01OCw3ICs2MCw3IEBAIEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojp+SW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQoKQogICAgIHJlc2V0KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
IGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNw
YXRjaGVyKQordm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENo
YW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsK
ICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yTGF5
ZXJUcmVlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2Vu
ZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JMYXllclRyZWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRl
KGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKQEAgLTEwNSw5ICsxMDcsOSBAQCB2b2lkIEluc3Bl
Y3RvckxheWVyVHJlZUFnZW50Ojpwc2V1ZG9FbGVtZW50RGVzdHJveWVkKFBzZXVkb0VsZW1lbnQq
IHBzZXVkb0VsZW1lbgogICAgIHVuYmluZFBzZXVkb0VsZW1lbnQocHNldWRvRWxlbWVudCk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmxheWVyc0Zvck5vZGUoRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5
cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPj4mIGxheWVycykKK3ZvaWQgSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQ6OmxheWVyc0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQg
bm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4+JiBsYXllcnMpCiB7Ci0gICAgbGF5ZXJzID0g
VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPjo6Y3JlYXRl
KCk7CisgICAgbGF5ZXJzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj46OmNyZWF0ZSgpOwogCiAgICAgTm9kZSog
bm9kZSA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRE9NQWdlbnQoKS0+bm9kZUZv
cklkKG5vZGVJZCk7CiAgICAgaWYgKCFub2RlKSB7CkBAIC0xMjQsNyArMTI2LDcgQEAgdm9pZCBJ
bnNwZWN0b3JMYXllclRyZWVBZ2VudDo6bGF5ZXJzRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGludCBub2RlSWQKICAgICBnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJh
cmNoeShlcnJvclN0cmluZywgcmVuZGVyZXIsIGxheWVycyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQ6OmdhdGhlckxheWVyc1VzaW5nUmVuZGVyT2JqZWN0SGllcmFyY2h5KEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4+JiBsYXllcnMp
Cit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9i
amVjdEhpZXJhcmNoeShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFJlbmRlck9iamVjdCogcmVu
ZGVyZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPj4mIGxheWVycykKIHsKICAgICBpZiAocmVuZGVy
ZXItPmhhc0xheWVyKCkpIHsKICAgICAgICAgZ2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJMYXllckhp
ZXJhcmNoeShlcnJvclN0cmluZywgdG9SZW5kZXJMYXllck1vZGVsT2JqZWN0KHJlbmRlcmVyKS0+
bGF5ZXIoKSwgbGF5ZXJzKTsKQEAgLTEzNSw3ICsxMzcsNyBAQCB2b2lkIEluc3BlY3RvckxheWVy
VHJlZUFnZW50OjpnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNoeShFcnJvclN0
cmluZwogICAgICAgICBnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNoeShlcnJv
clN0cmluZywgcmVuZGVyZXIsIGxheWVycyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQ6OmdhdGhlckxheWVyc1VzaW5nUmVuZGVyTGF5ZXJIaWVyYXJjaHkoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIsIFJlZlB0cjxUeXBlQnVpbGRl
cjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+PiYgbGF5ZXJzKQordm9pZCBJ
bnNwZWN0b3JMYXllclRyZWVBZ2VudDo6Z2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJMYXllckhpZXJh
cmNoeShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFJlbmRlckxheWVyKiByZW5kZXJMYXllciwg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkxheWVyVHJlZTo6TGF5ZXI+PiYgbGF5ZXJzKQogewogICAgIGlmIChyZW5kZXJMYXllci0+
aXNDb21wb3NpdGVkKCkpCiAgICAgICAgIGxheWVycy0+YWRkSXRlbShidWlsZE9iamVjdEZvckxh
eWVyKGVycm9yU3RyaW5nLCByZW5kZXJMYXllcikpOwpAQCAtMTQ0LDcgKzE0Niw3IEBAIHZvaWQg
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmdhdGhlckxheWVyc1VzaW5nUmVuZGVyTGF5ZXJIaWVy
YXJjaHkoRXJyb3JTdHJpbmcqCiAgICAgICAgIGdhdGhlckxheWVyc1VzaW5nUmVuZGVyTGF5ZXJI
aWVyYXJjaHkoZXJyb3JTdHJpbmcsIHJlbmRlckxheWVyLCBsYXllcnMpOwogfQogCi1QYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPiBJbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dDo6YnVpbGRPYmplY3RGb3JMYXllcihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFJlbmRlckxh
eWVyKiByZW5kZXJMYXllcikKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TGF5
ZXJUcmVlOjpMYXllcj4gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTGF5
ZXIoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIpCiB7
CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9ICZyZW5kZXJMYXllci0+cmVuZGVyZXIoKTsK
ICAgICBSZW5kZXJMYXllckJhY2tpbmcqIGJhY2tpbmcgPSByZW5kZXJMYXllci0+YmFja2luZygp
OwpAQCAtMTY0LDcgKzE2Niw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6
TGF5ZXI+IEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpidWlsZE9iamVjdEZvCiAgICAgICAgIG5v
ZGUgPSByZW5kZXJlci0+cGFyZW50KCktPmVsZW1lbnQoKTsKIAogICAgIC8vIEJhc2ljIHNldCBv
ZiBwcm9wZXJ0aWVzLgotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4g
bGF5ZXJPYmplY3QgPSBUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcjo6Y3JlYXRlKCkKKyAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4gbGF5ZXJP
YmplY3QgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyOjpjcmVhdGUo
KQogICAgICAgICAuc2V0TGF5ZXJJZChiaW5kKHJlbmRlckxheWVyKSkKICAgICAgICAgLnNldE5v
ZGVJZChpZEZvck5vZGUoZXJyb3JTdHJpbmcsIG5vZGUpKQogICAgICAgICAuc2V0Qm91bmRzKGJ1
aWxkT2JqZWN0Rm9ySW50UmVjdChyZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSkp
CkBAIC0yMTYsMTYgKzIxOCwxNiBAQCBpbnQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmlkRm9y
Tm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIG5v
ZGVJZDsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpJbnRSZWN0PiBJ
bnNwZWN0b3JMYXllclRyZWVBZ2VudDo6YnVpbGRPYmplY3RGb3JJbnRSZWN0KGNvbnN0IEludFJl
Y3QmIHJlY3QpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6
SW50UmVjdD4gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9ySW50UmVjdChj
b25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIHJldHVybiBUeXBlQnVpbGRlcjo6TGF5ZXJUcmVl
OjpJbnRSZWN0OjpjcmVhdGUoKQorICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpM
YXllclRyZWU6OkludFJlY3Q6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRYKHJlY3QueCgpKQogICAg
ICAgICAuc2V0WShyZWN0LnkoKSkKICAgICAgICAgLnNldFdpZHRoKHJlY3Qud2lkdGgoKSkKICAg
ICAgICAgLnNldEhlaWdodChyZWN0LmhlaWdodCgpKS5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OnJlYXNvbnNGb3JDb21wb3NpdGluZ0xheWVyKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBsYXllcklkLCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkxheWVyVHJlZTo6Q29tcG9zaXRpbmdSZWFzb25zPiYgY29tcG9zaXRpbmdSZWFzb25zKQor
dm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6cmVhc29uc0ZvckNvbXBvc2l0aW5nTGF5ZXIo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGxheWVySWQsIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkNvbXBvc2l0aW5nUmVhc29ucz4mIGNv
bXBvc2l0aW5nUmVhc29ucykKIHsKICAgICBjb25zdCBSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIg
PSBtX2lkVG9MYXllci5nZXQobGF5ZXJJZCk7CiAKQEAgLTIzNSw3ICsyMzcsNyBAQCB2b2lkIElu
c3BlY3RvckxheWVyVHJlZUFnZW50OjpyZWFzb25zRm9yQ29tcG9zaXRpbmdMYXllcihFcnJvclN0
cmluZyogZXJyb3JTdHJpbgogICAgIH0KIAogICAgIENvbXBvc2l0aW5nUmVhc29ucyByZWFzb25z
Qml0bWFzayA9IHJlbmRlckxheWVyLT5jb21wb3NpdG9yKCkucmVhc29uc0ZvckNvbXBvc2l0aW5n
KCpyZW5kZXJMYXllcik7Ci0gICAgY29tcG9zaXRpbmdSZWFzb25zID0gVHlwZUJ1aWxkZXI6Okxh
eWVyVHJlZTo6Q29tcG9zaXRpbmdSZWFzb25zOjpjcmVhdGUoKTsKKyAgICBjb21wb3NpdGluZ1Jl
YXNvbnMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkNvbXBvc2l0aW5nUmVh
c29uczo6Y3JlYXRlKCk7CiAKICAgICBpZiAocmVhc29uc0JpdG1hc2sgJiBDb21wb3NpdGluZ1Jl
YXNvbjNEVHJhbnNmb3JtKQogICAgICAgICBjb21wb3NpdGluZ1JlYXNvbnMtPnNldFRyYW5zZm9y
bTNEKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckxheWVyVHJlZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQuaAppbmRleCBhZjU1YTkyLi4xNzQ1NjBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaApAQCAtMzEsOSArMzEs
MTAgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNl
QWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclR5cGVCdWlsZGVy
LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCisjaW5jbHVkZSAiSW5zcGVj
dG9yV2ViVHlwZUJ1aWxkZXJzLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC00Niw3
ICs0Nyw3IEBAIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiAKIHR5cGVkZWYgU3RyaW5nIEVy
cm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JMYXllclRyZWVBZ2VudCA6IHB1YmxpYyBJbnNw
ZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JMYXllclRyZWVCYWNrZW5kRGlzcGF0Y2hl
ckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQgOiBwdWJsaWMgSW5zcGVj
dG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yTGF5ZXJUcmVlQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JMYXllclRy
ZWVBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMp
CiAgICAgewpAQCAtNTQsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIH5JbnNwZWN0b3JM
YXllclRyZWVBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Oklu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdp
bGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAgICAgdm9pZCByZXNldCgp
OwogCkBAIC02NSw4ICs2Niw4IEBAIHB1YmxpYzoKICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgZnJv
bnQtZW5kLgogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwotICAgIHZpcnR1YWwgdm9pZCBsYXllcnNG
b3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJh
eTxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4+Jik7Ci0gICAgdmlydHVhbCB2b2lkIHJl
YXNvbnNGb3JDb21wb3NpdGluZ0xheWVyKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBsYXll
cklkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6Q29tcG9zaXRpbmdSZWFzb25zPiYp
OworICAgIHZpcnR1YWwgdm9pZCBsYXllcnNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJ
ZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+PiYpOworICAgIHZpcnR1YWwgdm9pZCByZWFzb25zRm9y
Q29tcG9zaXRpbmdMYXllcihFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgbGF5ZXJJZCwgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6Q29tcG9zaXRpbmdSZWFzb25z
PiYpOwogCiBwcml2YXRlOgogICAgIEluc3BlY3RvckxheWVyVHJlZUFnZW50KEluc3RydW1lbnRp
bmdBZ2VudHMqKTsKQEAgLTc1LDExICs3NiwxMSBAQCBwcml2YXRlOgogICAgIFN0cmluZyBiaW5k
KGNvbnN0IFJlbmRlckxheWVyKik7CiAgICAgdm9pZCB1bmJpbmQoY29uc3QgUmVuZGVyTGF5ZXIq
KTsKIAotICAgIHZvaWQgZ2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJPYmplY3RIaWVyYXJjaHkoRXJy
b3JTdHJpbmcqLCBSZW5kZXJPYmplY3QqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVC
dWlsZGVyOjpMYXllclRyZWU6OkxheWVyPj4mKTsKLSAgICB2b2lkIGdhdGhlckxheWVyc1VzaW5n
UmVuZGVyTGF5ZXJIaWVyYXJjaHkoRXJyb3JTdHJpbmcqLCBSZW5kZXJMYXllciosIFJlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+PiYpOworICAg
IHZvaWQgZ2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJPYmplY3RIaWVyYXJjaHkoRXJyb3JTdHJpbmcq
LCBSZW5kZXJPYmplY3QqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4+Jik7CisgICAgdm9pZCBnYXRo
ZXJMYXllcnNVc2luZ1JlbmRlckxheWVySGllcmFyY2h5KEVycm9yU3RyaW5nKiwgUmVuZGVyTGF5
ZXIqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4+Jik7CiAKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpMYXllclRyZWU6OkxheWVyPiBidWlsZE9iamVjdEZvckxheWVyKEVycm9yU3RyaW5nKiwg
UmVuZGVyTGF5ZXIqKTsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpMYXllclRyZWU6Oklu
dFJlY3Q+IGJ1aWxkT2JqZWN0Rm9ySW50UmVjdChjb25zdCBJbnRSZWN0Jik7CisgICAgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPiBidWlsZE9iamVj
dEZvckxheWVyKEVycm9yU3RyaW5nKiwgUmVuZGVyTGF5ZXIqKTsKKyAgICBQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6SW50UmVjdD4gYnVpbGRPYmplY3RGb3JJ
bnRSZWN0KGNvbnN0IEludFJlY3QmKTsKIAogICAgIGludCBpZEZvck5vZGUoRXJyb3JTdHJpbmcq
LCBOb2RlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JNZW1vcnlBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVt
b3J5QWdlbnQuY3BwCmluZGV4IDc1OGI3YjQuLjMyZDAxZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcApAQCAtNDEsMTMgKzQxLDEz
IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgotI2luY2x1ZGUgIkluc3BlY3Rv
clZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJN
ZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJOb2RlVHJhdmVyc2Fs
LmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZXIuaCIKICNpbmNsdWRlICJTdHlsZWRFbGVtZW50
LmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHJ1
bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CkBAIC01OCw4ICs1OCwxMCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiAvLyBVc2UgYSB0eXBlIGFsaWFzIGluc3RlYWQgb2YgJ3VzaW5nJyBo
ZXJlIHdoaWNoIHdvdWxkIGNhdXNlIGEgY29uZmxpY3Qgb24gTWFjLgotdHlwZWRlZiBXZWJDb3Jl
OjpUeXBlQnVpbGRlcjo6TWVtb3J5OjpNZW1vcnlCbG9jayBJbnNwZWN0b3JNZW1vcnlCbG9jazsK
LXR5cGVkZWYgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2Nr
PiBJbnNwZWN0b3JNZW1vcnlCbG9ja3M7Cit0eXBlZGVmIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
Ok1lbW9yeTo6TWVtb3J5QmxvY2sgSW5zcGVjdG9yTWVtb3J5QmxvY2s7Cit0eXBlZGVmIEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiBJbnNwZWN0b3JN
ZW1vcnlCbG9ja3M7CisKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNjcsNyArNjksNyBAQCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6fkluc3Bl
Y3Rvck1lbW9yeUFnZW50KCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9y
TWVtb3J5QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5k
RGlzcGF0Y2hlcikKIHsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yTWVtb3J5
QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CkBA
IC04NSw3ICs4Nyw3IEBAIHZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldERPTUNvdW50ZXJz
KEVycm9yU3RyaW5nKiwgaW50KiBkb2N1bWVudHMsIGludCogbm9kCiB9CiAKIEluc3BlY3Rvck1l
bW9yeUFnZW50OjpJbnNwZWN0b3JNZW1vcnlBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzKQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgi
TWVtb3J5IiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2Uo
QVNDSUlMaXRlcmFsKCJNZW1vcnkiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKIHsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaAppbmRleCBl
MTkxMGRlLi44ZjE1NjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yTWVtb3J5QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yTWVtb3J5QWdlbnQuaApAQCAtMzMsOCArMzMsOCBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgotI2luY2x1ZGUgIkluc3BlY3Rv
ckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCisj
aW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTQ1LDEzICs0NSwxMyBAQCBjbGFz
cyBJbnN0cnVtZW50aW5nQWdlbnRzOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAot
Y2xhc3MgSW5zcGVjdG9yTWVtb3J5QWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBw
dWJsaWMgSW5zcGVjdG9yTWVtb3J5QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIElu
c3BlY3Rvck1lbW9yeUFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIElu
c3BlY3Rvck1lbW9yeUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoSW5zcGVjdG9yTWVtb3J5QWdlbnQpOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
T3duUHRyPEluc3BlY3Rvck1lbW9yeUFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50cyk7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yTWVtb3J5QWdlbnQo
KTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250
ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGdldERPTUNvdW50
ZXJzKEVycm9yU3RyaW5nKiwgaW50KiBkb2N1bWVudHMsIGludCogbm9kZXMsIGludCoganNFdmVu
dExpc3RlbmVycyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zlcmxh
eS5jcHAKaW5kZXggMjg2ODQxZi4uYTg1ZDhjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcApAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgogI2luY2x1ZGUg
Ikluc3BlY3Rvck92ZXJsYXlQYWdlLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAj
aW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlBhZ2Uu
aCIKQEAgLTU1LDExICs1NCwxNCBAQAogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRl
ICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2lu
Y2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJT
dHlsZWRFbGVtZW50LmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KKyNpbmNs
dWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIG5hbWVzcGFjZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvck92ZXJsYXkuaAppbmRleCBlZjk5MjMwLi5iNTI5MjI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmgKQEAgLTMyLDIwICszMiwyMiBAQAogI2luY2x1
ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVj
dC5oIgotCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIEluc3BlY3RvciB7Citj
bGFzcyBJbnNwZWN0b3JPYmplY3Q7CitjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKK30KKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNs
YXNzIEluc3BlY3RvckNsaWVudDsKLWNsYXNzIEluc3BlY3RvclZhbHVlOwotY2xhc3MgSW5zcGVj
dG9yT2JqZWN0OwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBQYWdlOwpAQCAt
MTI0LDcgKzEyNiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkU2V0U2VhcmNoaW5nRm9yTm9k
ZShib29sIGVuYWJsZWQpOwogCi0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxk
T2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGUoKSBjb25z
dDsKIAogICAgIHZvaWQgZnJlZVBhZ2UoKTsKIHByaXZhdGU6CkBAIC0xMzcsNyArMTM5LDcgQEAg
cHJpdmF0ZToKICAgICBQYWdlKiBvdmVybGF5UGFnZSgpOwogICAgIHZvaWQgcmVzZXQoY29uc3Qg
SW50U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBJbnRTaXplJiBmcmFtZVZpZXdGdWxsU2l6ZSk7
CiAgICAgdm9pZCBldmFsdWF0ZUluT3ZlcmxheShjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3Qg
U3RyaW5nJiBhcmd1bWVudCk7Ci0gICAgdm9pZCBldmFsdWF0ZUluT3ZlcmxheShjb25zdCBTdHJp
bmcmIG1ldGhvZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gYXJndW1lbnQpOworICAgIHZv
aWQgZXZhbHVhdGVJbk92ZXJsYXkoY29uc3QgU3RyaW5nJiBtZXRob2QsIFBhc3NSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gYXJndW1lbnQpOwogCiAgICAgUGFnZSogbV9wYWdlOwog
ICAgIEluc3BlY3RvckNsaWVudCogbV9jbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGMwYmVkOWUuLmY0ZGJmZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC02
Niw3ICs2Niw2IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5Lmgi
Ci0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0Fn
ZW50cy5oIgogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgi
CkBAIC03NCwxMiArNzMsMTMgQEAKICNpbmNsdWRlICJSZWd1bGFyRXhwcmVzc2lvbi5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgot
I2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRl
ICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3Iu
aCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgorI2luY2x1ZGUgPGluc3BlY3Rv
ci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNs
dWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC05MCw2
ICs5MCw4IEBACiAjaW5jbHVkZSAiTGVnYWN5V2ViQXJjaGl2ZS5oIgogI2VuZGlmCiAKK3VzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGJv
b2wgZGVjb2RlQnVmZmVyKGNvbnN0IGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgc2l6ZSwgY29uc3Qg
U3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBTdHJpbmcqIHJlc3VsdCkKQEAgLTI5NywyNyArMjk5
LDI3IEBAIENhY2hlZFJlc291cmNlKiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmNhY2hlZFJlc291cmNl
KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0dXJuIGNhY2hlZFJlc291cmNl
OwogfQogCi1UeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpFbnVtIEluc3BlY3RvclBh
Z2VBZ2VudDo6cmVzb3VyY2VUeXBlSnNvbihJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlw
ZSByZXNvdXJjZVR5cGUpCitJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5
cGU6OkVudW0gSW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJjZVR5cGVKc29uKEluc3BlY3RvclBh
Z2VBZ2VudDo6UmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSkKIHsKICAgICBzd2l0Y2ggKHJlc291
cmNlVHlwZSkgewogICAgIGNhc2UgRG9jdW1lbnRSZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIFR5
cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkRvY3VtZW50OworICAgICAgICByZXR1cm4g
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpEb2N1bWVudDsKICAg
ICBjYXNlIEltYWdlUmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6UGFnZTo6
UmVzb3VyY2VUeXBlOjpJbWFnZTsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6SW1hZ2U7CiAgICAgY2FzZSBGb250UmVzb3VyY2U6Ci0g
ICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpGb250OworICAg
ICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpG
b250OwogICAgIGNhc2UgU3R5bGVzaGVldFJlc291cmNlOgotICAgICAgICByZXR1cm4gVHlwZUJ1
aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6U3R5bGVzaGVldDsKKyAgICAgICAgcmV0dXJuIElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6U3R5bGVzaGVldDsKICAg
ICBjYXNlIFNjcmlwdFJlc291cmNlOgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlBhZ2U6
OlJlc291cmNlVHlwZTo6U2NyaXB0OworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpTY3JpcHQ7CiAgICAgY2FzZSBYSFJSZXNvdXJjZToK
LSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OlhIUjsKKyAg
ICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6
WEhSOwogICAgIGNhc2UgV2ViU29ja2V0UmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBUeXBlQnVp
bGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpXZWJTb2NrZXQ7CisgICAgICAgIHJldHVybiBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OldlYlNvY2tldDsKICAgICBj
YXNlIE90aGVyUmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6UGFnZTo6UmVz
b3VyY2VUeXBlOjpPdGhlcjsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OlBhZ2U6OlJlc291cmNlVHlwZTo6T3RoZXI7CiAgICAgfQotICAgIHJldHVybiBUeXBlQnVpbGRl
cjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpPdGhlcjsKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpPdGhlcjsKIH0KIAogSW5zcGVjdG9yUGFnZUFn
ZW50OjpSZXNvdXJjZVR5cGUgSW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZVR5cGUo
Y29uc3QgQ2FjaGVkUmVzb3VyY2UmIGNhY2hlZFJlc291cmNlKQpAQCAtMzQ1LDEzICszNDcsMTMg
QEAgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgSW5zcGVjdG9yUGFnZUFnZW50Ojpj
YWNoZWRSZXNvdXJjZVR5cGUoY29uc3QgQ2EKICAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50
OjpPdGhlclJlc291cmNlOwogfQogCi1UeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpF
bnVtIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2VUeXBlSnNvbihjb25zdCBDYWNo
ZWRSZXNvdXJjZSYgY2FjaGVkUmVzb3VyY2UpCitJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdl
OjpSZXNvdXJjZVR5cGU6OkVudW0gSW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZVR5
cGVKc29uKGNvbnN0IENhY2hlZFJlc291cmNlJiBjYWNoZWRSZXNvdXJjZSkKIHsKICAgICByZXR1
cm4gcmVzb3VyY2VUeXBlSnNvbihjYWNoZWRSZXNvdXJjZVR5cGUoY2FjaGVkUmVzb3VyY2UpKTsK
IH0KIAogSW5zcGVjdG9yUGFnZUFnZW50OjpJbnNwZWN0b3JQYWdlQWdlbnQoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgUGFnZSogcGFnZSwgSW5zcGVjdG9yQWdlbnQq
IGluc3BlY3RvckFnZW50LCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFu
YWdlciwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQsIEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXkp
Ci0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJQYWdlIiksIGluc3RydW1l
bnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJQYWdl
IiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX3BhZ2UocGFnZSkKICAgICAsIG1faW5z
cGVjdG9yQWdlbnQoaW5zcGVjdG9yQWdlbnQpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdl
cihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCkBAIC0zNzEsNyArMzczLDcgQEAgSW5zcGVjdG9yUGFn
ZUFnZW50OjpJbnNwZWN0b3JQYWdlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cywKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5l
bCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3Bh
dGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclBhZ2VGcm9udGVuZERpc3BhdGNoZXI+
KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvclBh
Z2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKQEAg
LTQ2MCw5ICs0NjIsOSBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6bmF2aWdhdGUoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIHVybCkKICAgICBmcmFtZS5sb2FkZXIoKS5jaGFuZ2VMb2Nh
dGlvbihmcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBmcmFtZS5kb2N1bWVudCgp
LT5jb21wbGV0ZVVSTCh1cmwpLCAiIiwgZmFsc2UsIGZhbHNlKTsKIH0KIAotc3RhdGljIFBhc3NS
ZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OkNvb2tpZT4gYnVpbGRPYmplY3RGb3JDb29raWUoY29u
c3QgQ29va2llJiBjb29raWUpCitzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpQYWdlOjpDb29raWU+IGJ1aWxkT2JqZWN0Rm9yQ29va2llKGNvbnN0IENvb2tpZSYgY29v
a2llKQogewotICAgIHJldHVybiBUeXBlQnVpbGRlcjo6UGFnZTo6Q29va2llOjpjcmVhdGUoKQor
ICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpDb29raWU6OmNyZWF0ZSgp
CiAgICAgICAgIC5zZXROYW1lKGNvb2tpZS5uYW1lKQogICAgICAgICAuc2V0VmFsdWUoY29va2ll
LnZhbHVlKQogICAgICAgICAuc2V0RG9tYWluKGNvb2tpZS5kb21haW4pCkBAIC00NzUsOSArNDc3
LDkgQEAgc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OkNvb2tpZT4gYnVpbGRP
YmplY3RGb3JDb29raWUoY29uc3QgQ29va2llJgogICAgICAgICAucmVsZWFzZSgpOwogfQogCi1z
dGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OkNv
b2tpZT4+IGJ1aWxkQXJyYXlGb3JDb29raWVzKExpc3RIYXNoU2V0PENvb2tpZT4mIGNvb2tpZXNM
aXN0KQorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6Q29va2llPj4gYnVpbGRBcnJheUZvckNvb2tpZXMo
TGlzdEhhc2hTZXQ8Q29va2llPiYgY29va2llc0xpc3QpCiB7Ci0gICAgUmVmUHRyPFR5cGVCdWls
ZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6Q29va2llPj4gY29va2llcyA9IFR5cGVCdWls
ZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6Q29va2llPjo6Y3JlYXRlKCk7CisgICAgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OlBhZ2U6OkNvb2tpZT4+IGNvb2tpZXMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpDb29raWU+OjpjcmVhdGUoKTsKIAogICAgIExp
c3RIYXNoU2V0PENvb2tpZT46Oml0ZXJhdG9yIGVuZCA9IGNvb2tpZXNMaXN0LmVuZCgpOwogICAg
IExpc3RIYXNoU2V0PENvb2tpZT46Oml0ZXJhdG9yIGl0ID0gY29va2llc0xpc3QuYmVnaW4oKTsK
QEAgLTUyOCw3ICs1MzAsNyBAQCBzdGF0aWMgVmVjdG9yPFVSTD4gYWxsUmVzb3VyY2VzVVJMc0Zv
ckZyYW1lKEZyYW1lKiBmcmFtZSkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6Z2V0Q29va2llcyhFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRl
cjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OkNvb2tpZT4+JiBjb29raWVzKQordm9pZCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6Q29va2ll
Pj4mIGNvb2tpZXMpCiB7CiAgICAgLy8gSWYgd2UgY2FuIGdldCByYXcgY29va2llcy4KICAgICBM
aXN0SGFzaFNldDxDb29raWU+IHJhd0Nvb2tpZXNMaXN0OwpAQCAtNTY3LDcgKzU2OSw3IEBAIHZv
aWQgSW5zcGVjdG9yUGFnZUFnZW50OjpnZXRDb29raWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxUeXBlCiAgICAgaWYgKHJhd0Nvb2tpZXNJbXBsZW1lbnRlZCkKICAg
ICAgICAgY29va2llcyA9IGJ1aWxkQXJyYXlGb3JDb29raWVzKHJhd0Nvb2tpZXNMaXN0KTsKICAg
ICBlbHNlCi0gICAgICAgIGNvb2tpZXMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6
OlBhZ2U6OkNvb2tpZT46OmNyZWF0ZSgpOworICAgICAgICBjb29raWVzID0gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OkNvb2tpZT46OmNyZWF0ZSgpOwog
fQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGVsZXRlQ29va2llKEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiBjb29raWVOYW1lLCBjb25zdCBTdHJpbmcmIHVybCkKQEAgLTU3Nyw3ICs1
NzksNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGVsZXRlQ29va2llKEVycm9yU3RyaW5n
KiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lLCBjbwogICAgICAgICBXZWJDb3JlOjpkZWxldGVD
b29raWUoZnJhbWUtPmRvY3VtZW50KCksIHBhcnNlZFVSTCwgY29va2llTmFtZSk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yUGFnZUFnZW50OjpnZXRSZXNvdXJjZVRyZWUoRXJyb3JTdHJpbmcqLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiYgb2JqZWN0KQordm9pZCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmdldFJlc291cmNlVHJlZShFcnJvclN0cmluZyosIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT4mIG9iamVjdCkK
IHsKICAgICBvYmplY3QgPSBidWlsZE9iamVjdEZvckZyYW1lVHJlZSgmbV9wYWdlLT5tYWluRnJh
bWUoKSk7CiB9CkBAIC02MDQsOSArNjA2LDkgQEAgc3RhdGljIGJvb2wgdGV4dENvbnRlbnRGb3JD
YWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UsIFN0cmluZyoKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJl
c291cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNl
U2Vuc2l0aXZlLCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxUeXBl
QnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaE1hdGNoPj4mIHJlc3VsdHMp
Cit2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5SZXNvdXJjZShFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYg
cXVlcnksIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9v
bCogY29uc3Qgb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0Y2g+PiYgcmVzdWx0
cykKIHsKLSAgICByZXN1bHRzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdl
OjpTZWFyY2hNYXRjaD46OmNyZWF0ZSgpOworICAgIHJlc3VsdHMgPSBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hNYXRjaD46
OmNyZWF0ZSgpOwogCiAgICAgYm9vbCBpc1JlZ2V4ID0gb3B0aW9uYWxJc1JlZ2V4ID8gKm9wdGlv
bmFsSXNSZWdleCA6IGZhbHNlOwogICAgIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IG9wdGlvbmFsQ2Fz
ZVNlbnNpdGl2ZSA/ICpvcHRpb25hbENhc2VTZW5zaXRpdmUgOiBmYWxzZTsKQEAgLTYzOCwxOCAr
NjQwLDE4IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjCiAgICAgcmVzdWx0cyA9IENvbnRlbnRT
ZWFyY2hVdGlsczo6c2VhcmNoSW5UZXh0QnlMaW5lcyhjb250ZW50LCBxdWVyeSwgY2FzZVNlbnNp
dGl2ZSwgaXNSZWdleCk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQYWdl
OjpTZWFyY2hSZXN1bHQ+IGJ1aWxkT2JqZWN0Rm9yU2VhcmNoUmVzdWx0KGNvbnN0IFN0cmluZyYg
ZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBtYXRjaGVzQ291bnQpCitzdGF0aWMgUGFz
c1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hSZXN1bHQ+IGJ1aWxk
T2JqZWN0Rm9yU2VhcmNoUmVzdWx0KGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5n
JiB1cmwsIGludCBtYXRjaGVzQ291bnQpCiB7Ci0gICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpQYWdl
OjpTZWFyY2hSZXN1bHQ6OmNyZWF0ZSgpCisgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OlBhZ2U6OlNlYXJjaFJlc3VsdDo6Y3JlYXRlKCkKICAgICAgICAgLnNldFVybCh1cmwpCiAg
ICAgICAgIC5zZXRGcmFtZUlkKGZyYW1lSWQpCiAgICAgICAgIC5zZXRNYXRjaGVzQ291bnQobWF0
Y2hlc0NvdW50KQogICAgICAgICAucmVsZWFzZSgpOwogfQogCi12b2lkIEluc3BlY3RvclBhZ2VB
Z2VudDo6c2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHRleHQs
IGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogY29u
c3Qgb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVy
OjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiYgcmVzdWx0cykKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50
OjpzZWFyY2hJblJlc291cmNlcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdGV4dCwgY29u
c3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBjb25zdCBv
cHRpb25hbElzUmVnZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiYgcmVzdWx0cykKIHsKLSAg
ICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hSZXN1
bHQ+PiBzZWFyY2hSZXN1bHRzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdl
OjpTZWFyY2hSZXN1bHQ+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4g
c2VhcmNoUmVzdWx0cyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaFJlc3VsdD46OmNyZWF0ZSgpOwogCiAgICAgYm9vbCBp
c1JlZ2V4ID0gb3B0aW9uYWxJc1JlZ2V4ID8gKm9wdGlvbmFsSXNSZWdleCA6IGZhbHNlOwogICAg
IGJvb2wgY2FzZVNlbnNpdGl2ZSA9IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSA/ICpvcHRpb25hbENh
c2VTZW5zaXRpdmUgOiBmYWxzZTsKQEAgLTEwMzUsOSArMTAzNyw5IEBAIHZvaWQgSW5zcGVjdG9y
UGFnZUFnZW50OjpzY3JpcHRzRW5hYmxlZChib29sIGlzRW5hYmxlZCkKICAgICBtX2Zyb250ZW5k
RGlzcGF0Y2hlci0+c2NyaXB0c0VuYWJsZWQoaXNFbmFibGVkKTsKIH0KIAotUGFzc1JlZlB0cjxU
eXBlQnVpbGRlcjo6UGFnZTo6RnJhbWU+IEluc3BlY3RvclBhZ2VBZ2VudDo6YnVpbGRPYmplY3RG
b3JGcmFtZShGcmFtZSogZnJhbWUpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OlBhZ2U6OkZyYW1lPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWUoRnJh
bWUqIGZyYW1lKQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWU+IGZyYW1l
T2JqZWN0ID0gVHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lOjpjcmVhdGUoKQorICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZT4gZnJhbWVPYmplY3QgPSBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldElkKGZy
YW1lSWQoZnJhbWUpKQogICAgICAgICAuc2V0TG9hZGVySWQobG9hZGVySWQoZnJhbWUtPmxvYWRl
cigpLmRvY3VtZW50TG9hZGVyKCkpKQogICAgICAgICAuc2V0VXJsKGZyYW1lLT5kb2N1bWVudCgp
LT51cmwoKS5zdHJpbmcoKSkKQEAgLTEwNTUsMTEgKzEwNTcsMTEgQEAgUGFzc1JlZlB0cjxUeXBl
QnVpbGRlcjo6UGFnZTo6RnJhbWU+IEluc3BlY3RvclBhZ2VBZ2VudDo6YnVpbGRPYmplY3RGb3JG
cmFtZShGcmEKICAgICByZXR1cm4gZnJhbWVPYmplY3Q7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1
aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxk
T2JqZWN0Rm9yRnJhbWVUcmVlKEZyYW1lKiBmcmFtZSkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+IEluc3BlY3RvclBhZ2VBZ2VudDo6
YnVpbGRPYmplY3RGb3JGcmFtZVRyZWUoRnJhbWUqIGZyYW1lKQogewotICAgIFJlZlB0cjxUeXBl
QnVpbGRlcjo6UGFnZTo6RnJhbWU+IGZyYW1lT2JqZWN0ID0gYnVpbGRPYmplY3RGb3JGcmFtZShm
cmFtZSk7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6
RnJhbWVSZXNvdXJjZVRyZWU6OlJlc291cmNlcz4+IHN1YnJlc291cmNlcyA9IFR5cGVCdWlsZGVy
OjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU6OlJlc291cmNlcz46
OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRy
ZWU+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZTo6Y3JlYXRl
KCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWU+IGZyYW1l
T2JqZWN0ID0gYnVpbGRPYmplY3RGb3JGcmFtZShmcmFtZSk7CisgICAgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1l
UmVzb3VyY2VUcmVlOjpSZXNvdXJjZXM+PiBzdWJyZXNvdXJjZXMgPSBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNl
VHJlZTo6UmVzb3VyY2VzPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiByZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZTo6Y3JlYXRlKCkKICAgICAgICAgIC5zZXRG
cmFtZShmcmFtZU9iamVjdCkKICAgICAgICAgIC5zZXRSZXNvdXJjZXMoc3VicmVzb3VyY2VzKTsK
IApAQCAtMTA2Nyw3ICsxMDY5LDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UGFnZTo6RnJh
bWVSZXNvdXJjZVRyZWU+IEluc3BlY3RvclBhZ2VBZ2VudDo6YnVpbGRPYmplY3QKICAgICBmb3Ig
KFZlY3RvcjxDYWNoZWRSZXNvdXJjZSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGFsbFJlc291cmNl
cy5iZWdpbigpOyBpdCAhPSBhbGxSZXNvdXJjZXMuZW5kKCk7ICsraXQpIHsKICAgICAgICAgQ2Fj
aGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlID0gKml0OwogCi0gICAgICAgIFJlZlB0cjxUeXBl
QnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU6OlJlc291cmNlcz4gcmVzb3VyY2VPYmpl
Y3QgPSBUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU6OlJlc291cmNlczo6Y3Jl
YXRlKCkKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1l
UmVzb3VyY2VUcmVlOjpSZXNvdXJjZXM+IHJlc291cmNlT2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU6OlJlc291cmNlczo6Y3JlYXRlKCkKICAg
ICAgICAgICAgIC5zZXRVcmwoY2FjaGVkUmVzb3VyY2UtPnVybCgpKQogICAgICAgICAgICAgLnNl
dFR5cGUoY2FjaGVkUmVzb3VyY2VUeXBlSnNvbigqY2FjaGVkUmVzb3VyY2UpKQogICAgICAgICAg
ICAgLnNldE1pbWVUeXBlKGNhY2hlZFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCkpOwpA
QCAtMTA4MSwxMCArMTA4MywxMCBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQYWdlOjpGcmFt
ZVJlc291cmNlVHJlZT4gSW5zcGVjdG9yUGFnZUFnZW50OjpidWlsZE9iamVjdAogICAgICAgICBz
dWJyZXNvdXJjZXMtPmFkZEl0ZW0ocmVzb3VyY2VPYmplY3QpOwogICAgIH0KIAotICAgIFJlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVl
Pj4gY2hpbGRyZW5BcnJheTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+PiBjaGls
ZHJlbkFycmF5OwogICAgIGZvciAoRnJhbWUqIGNoaWxkID0gZnJhbWUtPnRyZWUoKS5maXJzdENo
aWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCkubmV4dFNpYmxpbmcoKSkgewogICAg
ICAgICBpZiAoIWNoaWxkcmVuQXJyYXkpIHsKLSAgICAgICAgICAgIGNoaWxkcmVuQXJyYXkgPSBU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPjo6
Y3JlYXRlKCk7CisgICAgICAgICAgICBjaGlsZHJlbkFycmF5ID0gSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRy
ZWU+OjpjcmVhdGUoKTsKICAgICAgICAgICAgIHJlc3VsdC0+c2V0Q2hpbGRGcmFtZXMoY2hpbGRy
ZW5BcnJheSk7CiAgICAgICAgIH0KICAgICAgICAgY2hpbGRyZW5BcnJheS0+YWRkSXRlbShidWls
ZE9iamVjdEZvckZyYW1lVHJlZShjaGlsZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4IDFiMjZiNmUuLjVkNjU2OTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTM1LDggKzM1LDkg
QEAKIAogI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uRGF0YS5oIgogI2luY2x1ZGUgIkdlb2xv
Y2F0aW9uUG9zaXRpb24uaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNs
dWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JG
cm9udGVuZC5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUg
IkludFNpemUuaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KQEAgLTQ0LDYgKzQ1LDExIEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNz
IEluc3BlY3RvckFycmF5OworY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworfQorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFJlc291cmNlOwpAQCAtNTQsOSArNjAsNyBAQCBjbGFz
cyBGcm9udGVuZDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEluamVjdGVkU2NyaXB0
TWFuYWdlcjsKIGNsYXNzIEluc3BlY3RvckFnZW50OwotY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBj
bGFzcyBJbnNwZWN0b3JDbGllbnQ7Ci1jbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnNw
ZWN0b3JPdmVybGF5OwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFVSTDsKQEAg
LTY3LDcgKzcxLDcgQEAgY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIAogdHlwZWRlZiBTdHJp
bmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudCA6IHB1YmxpYyBJbnNw
ZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyIHsKK2NsYXNzIEluc3BlY3RvclBhZ2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJh
c2UsIHB1YmxpYyBJbnNwZWN0b3JQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JQYWdlQWdlbnQpOwogcHVibGljOgogICAgIGVu
dW0gUmVzb3VyY2VUeXBlIHsKQEAgLTkwLDkgKzk0LDkgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEoRnJhbWUqLCBjb25zdCBVUkwm
LCBTdHJpbmcqIHRleHRFbmNvZGluZ05hbWUpOwogICAgIHN0YXRpYyBDYWNoZWRSZXNvdXJjZSog
Y2FjaGVkUmVzb3VyY2UoRnJhbWUqLCBjb25zdCBVUkwmKTsKLSAgICBzdGF0aWMgVHlwZUJ1aWxk
ZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6RW51bSByZXNvdXJjZVR5cGVKc29uKFJlc291cmNlVHlw
ZSk7CisgICAgc3RhdGljIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlw
ZTo6RW51bSByZXNvdXJjZVR5cGVKc29uKFJlc291cmNlVHlwZSk7CiAgICAgc3RhdGljIFJlc291
cmNlVHlwZSBjYWNoZWRSZXNvdXJjZVR5cGUoY29uc3QgQ2FjaGVkUmVzb3VyY2UmKTsKLSAgICBz
dGF0aWMgVHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6RW51bSBjYWNoZWRSZXNvdXJj
ZVR5cGVKc29uKGNvbnN0IENhY2hlZFJlc291cmNlJik7CisgICAgc3RhdGljIEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6RW51bSBjYWNoZWRSZXNvdXJjZVR5cGVK
c29uKGNvbnN0IENhY2hlZFJlc291cmNlJik7CiAKICAgICAvLyBQYWdlIEFQSSBmb3IgSW5zcGVj
dG9yRnJvbnRlbmQKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKik7CkBAIC0x
MDEsMTIgKzEwNSwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVNjcmlwdFRv
RXZhbHVhdGVPbkxvYWQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpOwog
ICAgIHZpcnR1YWwgdm9pZCByZWxvYWQoRXJyb3JTdHJpbmcqLCBjb25zdCBib29sKiBvcHRpb25h
bElnbm9yZUNhY2hlLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsU2NyaXB0VG9FdmFsdWF0ZU9uTG9h
ZCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFNjcmlwdFByZXByb2Nlc3Nvcik7CiAgICAgdmlydHVh
bCB2b2lkIG5hdmlnYXRlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1cmwpOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRDb29raWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpB
cnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6Q29va2llPj4mIGNvb2tpZXMpOworICAgIHZpcnR1YWwg
dm9pZCBnZXRDb29raWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkNvb2tpZT4+JiBjb29raWVz
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKEVycm9yU3RyaW5nKiwgY29uc3QgU3Ry
aW5nJiBjb29raWVOYW1lLCBjb25zdCBTdHJpbmcmIHVybCk7Ci0gICAgdmlydHVhbCB2b2lkIGdl
dFJlc291cmNlVHJlZShFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6UGFnZTo6RnJh
bWVSZXNvdXJjZVRyZWU+Jik7CisgICAgdmlydHVhbCB2b2lkIGdldFJlc291cmNlVHJlZShFcnJv
clN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291
cmNlVHJlZT4mKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVzb3VyY2VDb250ZW50KEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgU3RyaW5nKiBj
b250ZW50LCBib29sKiBiYXNlNjRFbmNvZGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoSW5S
ZXNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNp
dGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hNYXRjaD4+Jik7Ci0gICAgdmlydHVhbCB2b2lk
IHNlYXJjaEluUmVzb3VyY2VzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiwgY29uc3QgYm9v
bCogY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogaXNSZWdleCwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2VhcmNoSW5SZXNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJ
ZCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIG9w
dGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFn
ZTo6U2VhcmNoTWF0Y2g+PiYpOworICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hJblJlc291cmNlcyhF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYsIGNvbnN0IGJvb2wqIGNhc2VTZW5zaXRpdmUsIGNv
bnN0IGJvb2wqIGlzUmVnZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiYpOwogICAgIHZpcnR1
YWwgdm9pZCBzZXREb2N1bWVudENvbnRlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZy
YW1lSWQsIGNvbnN0IFN0cmluZyYgaHRtbCk7CiAgICAgdmlydHVhbCB2b2lkIGNhbk92ZXJyaWRl
RGV2aWNlTWV0cmljcyhFcnJvclN0cmluZyosIGJvb2wqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
RGV2aWNlTWV0cmljc092ZXJyaWRlKEVycm9yU3RyaW5nKiwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0
LCBkb3VibGUgZm9udFNjYWxlRmFjdG9yLCBib29sIGZpdFdpbmRvdyk7CkBAIC0xNjMsNyArMTY3
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2NyaXB0c0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpOwog
CiAgICAgLy8gSW5zcGVjdG9yIENvbnRyb2xsZXIgQVBJCi0gICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
LCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAK
ICAgICAvLyBDcm9zcy1hZ2VudHMgQVBJCkBAIC0xOTAsOCArMTk0LDggQEAgcHJpdmF0ZToKICAg
ICBzdGF0aWMgYm9vbCBtYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiwgYm9vbCB3aXRoQmFzZTY0
RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCk7CiAgICAgc3RhdGljIGJvb2wgZGF0YUNvbnRlbnQoY29u
c3QgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdO
YW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KTsKIAotICAgIFBhc3NS
ZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lPiBidWlsZE9iamVjdEZvckZyYW1lKEZyYW1l
Kik7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+
IGJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKEZyYW1lKik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZT4gYnVpbGRPYmplY3RGb3JGcmFtZShGcmFtZSop
OworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNv
dXJjZVRyZWU+IGJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKEZyYW1lKik7CiAgICAgUGFnZSogbV9w
YWdlOwogICAgIEluc3BlY3RvckFnZW50KiBtX2luc3BlY3RvckFnZW50OwogICAgIEluamVjdGVk
U2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CkBAIC0yMTgsNyArMjIyLDcg
QEAgcHJpdmF0ZToKICAgICBib29sIG1faWdub3JlU2NyaXB0c0VuYWJsZWROb3RpZmljYXRpb247
CiAgICAgYm9vbCBtX3Nob3dQYWludFJlY3RzOwogICAgIFN0cmluZyBtX2VtdWxhdGVkTWVkaWE7
Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbV9zY3JpcHRzVG9FdmFsdWF0ZU9uTG9hZDsK
KyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1fc2NyaXB0c1RvRXZhbHVh
dGVPbkxvYWQ7CiAgICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IG1fZ2VvbG9jYXRpb25Q
b3NpdGlvbjsKICAgICBSZWZQdHI8R2VvbG9jYXRpb25Qb3NpdGlvbj4gbV9wbGF0Zm9ybUdlb2xv
Y2F0aW9uUG9zaXRpb247CiAgICAgUmVmUHRyPERldmljZU9yaWVudGF0aW9uRGF0YT4gbV9kZXZp
Y2VPcmllbnRhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQcm9maWxlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JQcm9maWxlckFnZW50LmNwcAppbmRleCBiYWY1MWY0Li4yN2RkNWQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCkBAIC00
MCwyMCArNDAsMjIgQEAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JDb25zb2xlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5o
IgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdB
Z2VudHMuaCIKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAi
UGFnZVNjcmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0SGVhcFNuYXBzaG90Lmgi
Ci0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZS5oIgog
I2luY2x1ZGUgIlNjcmlwdFByb2ZpbGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0RGVidWdT
ZXJ2ZXIuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3QuaD4KKyNpbmNsdWRlIDxp
bnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+
CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNh
dGVuYXRlLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IFVzZXJJbml0aWF0ZWRQcm9maWxlTmFt
ZSA9ICJvcmcud2Via2l0LnByb2ZpbGVzLnVzZXItaW5pdGlhdGVkIjsKQEAgLTExOSw3ICsxMjEs
NyBAQCBQYXNzT3duUHRyPEluc3BlY3RvclByb2ZpbGVyQWdlbnQ+IEluc3BlY3RvclByb2ZpbGVy
QWdlbnQ6OmNyZWF0ZShJbnN0cnVtZW50aW5nQQogfQogCiBJbnNwZWN0b3JQcm9maWxlckFnZW50
OjpJbnNwZWN0b3JQcm9maWxlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMsIEluc3BlY3RvckNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50LCBJbmplY3RlZFNj
cmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKLSAgICA6IEluc3BlY3RvckJhc2VB
Z2VudChBU0NJSUxpdGVyYWwoIlByb2ZpbGVyIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAg
OiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJQcm9maWxlciIpLCBpbnN0cnVtZW50
aW5nQWdlbnRzKQogICAgICwgbV9jb25zb2xlQWdlbnQoY29uc29sZUFnZW50KQogICAgICwgbV9p
bmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9lbmFi
bGVkKGZhbHNlKQpAQCAtMTY4LDE5ICsxNzAsMTkgQEAgdm9pZCBJbnNwZWN0b3JQcm9maWxlckFn
ZW50Ojpjb2xsZWN0R2FyYmFnZShXZWJDb3JlOjpFcnJvclN0cmluZyopCiAgICAgU2NyaXB0UHJv
ZmlsZXI6OmNvbGxlY3RHYXJiYWdlKCk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlBy
b2ZpbGVyOjpQcm9maWxlSGVhZGVyPiBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpjcmVhdGVQcm9m
aWxlSGVhZGVyKGNvbnN0IFNjcmlwdFByb2ZpbGUmIHByb2ZpbGUpCitQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPiBJbnNwZWN0b3JQcm9m
aWxlckFnZW50OjpjcmVhdGVQcm9maWxlSGVhZGVyKGNvbnN0IFNjcmlwdFByb2ZpbGUmIHByb2Zp
bGUpCiB7Ci0gICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcjo6
Y3JlYXRlKCkKLSAgICAgICAgLnNldFR5cGVJZChUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2Zp
bGVIZWFkZXI6OlR5cGVJZDo6Q1BVKQorICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcjo6Y3JlYXRlKCkKKyAgICAgICAgLnNldFR5cGVJZChJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcjo6VHlwZUlkOjpD
UFUpCiAgICAgICAgIC5zZXRVaWQocHJvZmlsZS51aWQoKSkKICAgICAgICAgLnNldFRpdGxlKHBy
b2ZpbGUudGl0bGUoKSkKICAgICAgICAgLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxUeXBl
QnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+IEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6
OmNyZWF0ZVNuYXBzaG90SGVhZGVyKGNvbnN0IFNjcmlwdEhlYXBTbmFwc2hvdCYgc25hcHNob3Qp
CitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVh
ZGVyPiBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpjcmVhdGVTbmFwc2hvdEhlYWRlcihjb25zdCBT
Y3JpcHRIZWFwU25hcHNob3QmIHNuYXBzaG90KQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6
UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+IGhlYWRlciA9IFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6
UHJvZmlsZUhlYWRlcjo6Y3JlYXRlKCkKLSAgICAgICAgLnNldFR5cGVJZChUeXBlQnVpbGRlcjo6
UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI6OlR5cGVJZDo6SEVBUCkKKyAgICBSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+IGhlYWRlciA9IEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyOjpjcmVhdGUoKQorICAg
ICAgICAuc2V0VHlwZUlkKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxl
SGVhZGVyOjpUeXBlSWQ6OkhFQVApCiAgICAgICAgIC5zZXRVaWQoc25hcHNob3QudWlkKCkpCiAg
ICAgICAgIC5zZXRUaXRsZShzbmFwc2hvdC50aXRsZSgpKTsKICAgICBoZWFkZXItPnNldE1heEpT
T2JqZWN0SWQoc25hcHNob3QubWF4U25hcHNob3RKU09iamVjdElkKCkpOwpAQCAtMjQwLDEwICsy
NDIsMTAgQEAgU3RyaW5nIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldEN1cnJlbnRVc2VySW5p
dGlhdGVkUHJvZmlsZU5hbWUoYm9vbCBpbmNyZW1lbnQKICAgICByZXR1cm4gbWFrZVN0cmluZyhV
c2VySW5pdGlhdGVkUHJvZmlsZU5hbWUsICcuJywgU3RyaW5nOjpudW1iZXIobV9jdXJyZW50VXNl
ckluaXRpYXRlZFByb2ZpbGVOdW1iZXIpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JQcm9maWxlckFn
ZW50OjpnZXRQcm9maWxlSGVhZGVycyhFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6
QXJyYXk8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPj4mIGhlYWRlcnMpCit2
b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldFByb2ZpbGVIZWFkZXJzKEVycm9yU3RyaW5n
KiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPj4mIGhlYWRlcnMpCiB7CiAgICAgbV9wcm9m
aWxlSGVhZGVyc1JlcXVlc3RlZCA9IHRydWU7Ci0gICAgaGVhZGVycyA9IFR5cGVCdWlsZGVyOjpB
cnJheTxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+OjpjcmVhdGUoKTsKKyAg
ICBoZWFkZXJzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+OjpjcmVhdGUoKTsKIAogICAgIFByb2Zp
bGVzTWFwOjppdGVyYXRvciBwcm9maWxlc0VuZCA9IG1fcHJvZmlsZXMuZW5kKCk7CiAgICAgZm9y
IChQcm9maWxlc01hcDo6aXRlcmF0b3IgaXQgPSBtX3Byb2ZpbGVzLmJlZ2luKCk7IGl0ICE9IHBy
b2ZpbGVzRW5kOyArK2l0KQpAQCAtMjY4LDcgKzI3MCw3IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFt
ZXNwYWNlCiAKLXZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0Q1BVUHJvZmlsZShFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGludCByYXdVaWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6UHJv
ZmlsZXI6OkNQVVByb2ZpbGU+JiBwcm9maWxlT2JqZWN0KQordm9pZCBJbnNwZWN0b3JQcm9maWxl
ckFnZW50OjpnZXRDUFVQcm9maWxlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IHJhd1Vp
ZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlPiYg
cHJvZmlsZU9iamVjdCkKIHsKICAgICB1bnNpZ25lZCB1aWQgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4ocmF3VWlkKTsKICAgICBQcm9maWxlc01hcDo6aXRlcmF0b3IgaXQgPSBtX3Byb2ZpbGVzLmZp
bmQodWlkKTsKQEAgLTI3Niw3ICsyNzgsNyBAQCB2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6
OmdldENQVVByb2ZpbGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgcmF3VWlkLAogICAg
ICAgICAqZXJyb3JTdHJpbmcgPSAiUHJvZmlsZSB3YXNuJ3QgZm91bmQiOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIHByb2ZpbGVPYmplY3QgPSBUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQ
VVByb2ZpbGU6OmNyZWF0ZSgpOworICAgIHByb2ZpbGVPYmplY3QgPSBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZTo6Y3JlYXRlKCk7CiAgICAgcHJvZmlsZU9iamVj
dC0+c2V0SGVhZChpdC0+dmFsdWUtPmJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9ySGVhZCgpKTsKICAg
ICBwcm9maWxlT2JqZWN0LT5zZXRJZGxlVGltZShpdC0+dmFsdWUtPmlkbGVUaW1lKCkpOwogfQpA
QCAtMzI3LDcgKzMyOSw3IEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6cmVzZXRGcm9u
dGVuZFByb2ZpbGVzKCkKICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlc2V0UHJvZmls
ZXMoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVj
dG9yUHJvZmlsZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yUHJvZmlsZXJGcm9udGVuZERpc3BhdGNo
ZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rv
clByb2ZpbGVyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhp
cyk7CkBAIC00MTQsNyArNDE2LDcgQEAgdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50Ojp0b2dn
bGVSZWNvcmRCdXR0b24oYm9vbCBpc1Byb2ZpbGluZykKICAgICAgICAgbV9mcm9udGVuZERpc3Bh
dGNoZXItPnNldFJlY29yZGluZ1Byb2ZpbGUoaXNQcm9maWxpbmcpOwogfQogCi12b2lkIEluc3Bl
Y3RvclByb2ZpbGVyQWdlbnQ6OmdldE9iamVjdEJ5SGVhcE9iamVjdElkKEVycm9yU3RyaW5nKiBl
cnJvciwgY29uc3QgU3RyaW5nJiBoZWFwU25hcHNob3RPYmplY3RJZCwgY29uc3QgU3RyaW5nKiBv
YmplY3RHcm91cCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiBy
ZXN1bHQpCit2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldE9iamVjdEJ5SGVhcE9iamVj
dElkKEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBoZWFwU25hcHNob3RPYmplY3RJ
ZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCkKIHsKICAgICBib29sIG9rOwogICAg
IHVuc2lnbmVkIGlkID0gaGVhcFNuYXBzaG90T2JqZWN0SWQudG9VSW50KCZvayk7CkBAIC00MjIs
NyArNDI0LDcgQEAgdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRPYmplY3RCeUhlYXBP
YmplY3RJZChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFMKICAgICAgICAgKmVycm9yID0gIklu
dmFsaWQgaGVhcCBzbmFwc2hvdCBvYmplY3QgaWQiOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIFNjcmlwdE9iamVjdCBoZWFwT2JqZWN0ID0gU2NyaXB0UHJvZmlsZXI6Om9iamVjdEJ5SGVh
cE9iamVjdElkKGlkKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgaGVhcE9iamVjdCA9
IFNjcmlwdFByb2ZpbGVyOjpvYmplY3RCeUhlYXBPYmplY3RJZChpZCk7CiAgICAgaWYgKGhlYXBP
YmplY3QuaGFzTm9WYWx1ZSgpKSB7CiAgICAgICAgICplcnJvciA9ICJPYmplY3QgaXMgbm90IGF2
YWlsYWJsZSI7CiAgICAgICAgIHJldHVybjsKQEAgLTQ0NCw3ICs0NDYsNyBAQCB2b2lkIEluc3Bl
Y3RvclByb2ZpbGVyQWdlbnQ6OmdldEhlYXBPYmplY3RJZChFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIGNvbnN0IFN0cgogICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW5zcGVjdGVkIGNvbnRleHQg
aGFzIGdvbmUiOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIFNjcmlwdFZhbHVlIHZhbHVl
ID0gaW5qZWN0ZWRTY3JpcHQuZmluZE9iamVjdEJ5SWQob2JqZWN0SWQpOworICAgIERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlIHZhbHVlID0gaW5qZWN0ZWRTY3JpcHQuZmluZE9iamVjdEJ5SWQob2Jq
ZWN0SWQpOwogICAgIGlmICh2YWx1ZS5oYXNOb1ZhbHVlKCkgfHwgdmFsdWUuaXNVbmRlZmluZWQo
KSkgewogICAgICAgICAqZXJyb3JTdHJpbmcgPSAiT2JqZWN0IHdpdGggZ2l2ZW4gaWQgbm90IGZv
dW5kIjsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JQcm9maWxlckFnZW50LmgKaW5kZXggNTM3MDljNS4uM2Y3ODM2ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oCkBAIC0z
MiwyMCArMzIsMjQgQEAKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFC
TEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVk
ZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJv
bnRlbmQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFzcyBJbnNwZWN0
b3JBcnJheTsKK2NsYXNzIEluc3BlY3Rvck9iamVjdDsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7Ci1jbGFzcyBJbnNwZWN0b3JBcnJheTsK
IGNsYXNzIEluc3BlY3RvckNvbnNvbGVBZ2VudDsKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNs
YXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBQYWdlOwogY2xhc3MgU2NyaXB0SGVhcFNu
YXBzaG90OwpAQCAtNTQsNyArNTgsNyBAQCBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIAogdHlw
ZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvclByb2ZpbGVyQWdlbnQg
OiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yUHJvZmlsZXJCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudCA6IHB1
YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JQcm9maWxlckJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzT3duUHRyPEluc3BlY3RvclByb2ZpbGVyQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5n
QWdlbnRzKiwgSW5zcGVjdG9yQ29uc29sZUFnZW50KiwgUGFnZSosIEluamVjdGVkU2NyaXB0TWFu
YWdlciopOwpAQCAtODMsMTggKzg3LDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuYWJsZShib29s
IHNraXBSZWNvbXBpbGUpOwogICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5h
YmxlZDsgfQogICAgIFN0cmluZyBnZXRDdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOYW1lKGJv
b2wgaW5jcmVtZW50UHJvZmlsZU51bWJlciA9IGZhbHNlKTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
UHJvZmlsZUhlYWRlcnMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5
cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4+Jik7Ci0gICAgdmlydHVhbCB2b2lk
IGdldENQVVByb2ZpbGUoRXJyb3JTdHJpbmcqLCBpbnQgdWlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6
OlByb2ZpbGVyOjpDUFVQcm9maWxlPiYpOworICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9maWxlSGVh
ZGVycyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4+Jik7CisgICAg
dmlydHVhbCB2b2lkIGdldENQVVByb2ZpbGUoRXJyb3JTdHJpbmcqLCBpbnQgdWlkLCBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGU+Jik7CiAgICAgdmly
dHVhbCB2b2lkIGdldEhlYXBTbmFwc2hvdChFcnJvclN0cmluZyosIGludCB1aWQpOwogICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVQcm9maWxlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB0eXBl
LCBpbnQgdWlkKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVz
dHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIHRh
a2VIZWFwU25hcHNob3QoRXJyb3JTdHJpbmcqLCBjb25zdCBib29sKiByZXBvcnRQcm9ncmVzcyk7
CiAgICAgdm9pZCB0b2dnbGVSZWNvcmRCdXR0b24oYm9vbCBpc1Byb2ZpbGluZyk7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0T2JqZWN0QnlIZWFwT2JqZWN0SWQoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIGhlYXBTbmFwc2hvdE9iamVjdElkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCk7CisgICAg
dmlydHVhbCB2b2lkIGdldE9iamVjdEJ5SGVhcE9iamVjdElkKEVycm9yU3RyaW5nKiwgY29uc3Qg
U3RyaW5nJiBoZWFwU25hcHNob3RPYmplY3RJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJl
c3VsdCk7CiAgICAgdmlydHVhbCB2b2lkIGdldEhlYXBPYmplY3RJZChFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyYgb2JqZWN0SWQsIFN0cmluZyogaGVhcFNuYXBzaG90T2JqZWN0SWQpOwogCiBw
cm90ZWN0ZWQ6CkBAIC0xMDksOCArMTEzLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc2V0RnJv
bnRlbmRQcm9maWxlcygpOwogICAgIHZvaWQgcmVzdG9yZUVuYWJsZW1lbnQoKTsKIAotICAgIFBh
c3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPiBjcmVhdGVQcm9m
aWxlSGVhZGVyKGNvbnN0IFNjcmlwdFByb2ZpbGUmKTsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4gY3JlYXRlU25hcHNob3RIZWFkZXIoY29uc3Qg
U2NyaXB0SGVhcFNuYXBzaG90Jik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4gY3JlYXRlUHJvZmlsZUhlYWRlcihjb25zdCBT
Y3JpcHRQcm9maWxlJik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQ
cm9maWxlcjo6UHJvZmlsZUhlYWRlcj4gY3JlYXRlU25hcHNob3RIZWFkZXIoY29uc3QgU2NyaXB0
SGVhcFNuYXBzaG90Jik7CiAKICAgICBJbnNwZWN0b3JDb25zb2xlQWdlbnQqIG1fY29uc29sZUFn
ZW50OwogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dC5jcHAKaW5kZXggZTEyYjBhMC4uNDRmNDljNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcApAQCAtNDgsNyArNDgsNiBAQAog
I2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5k
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9y
VmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCkBAIC02NywxNiArNjYsMTggQEAKICNpbmNs
dWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIldlYlNvY2tldEZyYW1lLmgiCiAj
aW5jbHVkZSAiWE1MSHR0cFJlcXVlc3QuaCIKLQorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0
b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYv
SGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAordXNpbmcg
bmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmRE
aXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3JOZXR3b3JrRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwog
ICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JOZXR3b3JrQmFja2VuZERpc3BhdGNo
ZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CkBAIC0xMDAsOSArMTAxLDkgQEAg
c3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvckhlYWRlcnMo
Y29uc3QgSFRUUEhlYWRlck1hcCYgaGUKICAgICByZXR1cm4gaGVhZGVyc09iamVjdDsKIH0KIAot
c3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc291cmNlVGltaW5nPiBi
dWlsZE9iamVjdEZvclRpbWluZyhjb25zdCBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWluZywgRG9j
dW1lbnRMb2FkZXIqIGxvYWRlcikKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6Ok5ldHdvcms6OlJlc291cmNlVGltaW5nPiBidWlsZE9iamVjdEZvclRpbWluZyhjb25z
dCBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWluZywgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsK
LSAgICByZXR1cm4gVHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc291cmNlVGltaW5nOjpjcmVhdGUo
KQorICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNvdXJjZVRp
bWluZzo6Y3JlYXRlKCkKICAgICAgICAgLnNldFJlcXVlc3RUaW1lKGxvYWRlci0+dGltaW5nKCkt
Pm1vbm90b25pY1RpbWVUb1BzZXVkb1dhbGxUaW1lKHRpbWluZy5jb252ZXJ0UmVzb3VyY2VMb2Fk
VGltZVRvTW9ub3RvbmljVGltZSgwKSkpCiAgICAgICAgIC5zZXRQcm94eVN0YXJ0KHRpbWluZy5w
cm94eVN0YXJ0KQogICAgICAgICAuc2V0UHJveHlFbmQodGltaW5nLnByb3h5RW5kKQpAQCAtMTE4
LDkgKzExOSw5IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNv
dXJjZVRpbWluZz4gYnVpbGRPYmplY3RGb3JUaW1pbmcoY29uCiAgICAgICAgIC5yZWxlYXNlKCk7
CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXF1ZXN0PiBi
dWlsZE9iamVjdEZvclJlc291cmNlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpCitzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpS
ZXF1ZXN0PiBidWlsZE9iamVjdEZvclJlc291cmNlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXF1ZXN0
PiByZXF1ZXN0T2JqZWN0ID0gVHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlcXVlc3Q6OmNyZWF0ZSgp
CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlcXVlc3Q+IHJl
cXVlc3RPYmplY3QgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXF1ZXN0Ojpj
cmVhdGUoKQogICAgICAgICAuc2V0VXJsKHJlcXVlc3QudXJsKCkuc3RyaW5nKCkpCiAgICAgICAg
IC5zZXRNZXRob2QocmVxdWVzdC5odHRwTWV0aG9kKCkpCiAgICAgICAgIC5zZXRIZWFkZXJzKGJ1
aWxkT2JqZWN0Rm9ySGVhZGVycyhyZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKSkpOwpAQCAtMTI5
LDcgKzEzMCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXF1
ZXN0PiBidWlsZE9iamVjdEZvclJlc291cmNlUmVxdWVzdChjCiAgICAgcmV0dXJuIHJlcXVlc3RP
YmplY3Q7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNw
b25zZT4gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBEb2N1bWVudExvYWRlciogbG9hZGVyKQorc3RhdGljIFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVzcG9uc2U+IGJ1aWxkT2JqZWN0Rm9y
UmVzb3VyY2VSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgRG9jdW1l
bnRMb2FkZXIqIGxvYWRlcikKIHsKICAgICBpZiAocmVzcG9uc2UuaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybiAwOwpAQCAtMTM3LDcgKzEzOCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpOZXR3b3JrOjpSZXNwb25zZT4gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlCiAg
ICAgZG91YmxlIHN0YXR1cyA9IHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCk7CiAgICAgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gaGVhZGVycyA9IGJ1aWxkT2JqZWN0Rm9ySGVhZGVycyhyZXNwb25z
ZS5odHRwSGVhZGVyRmllbGRzKCkpOwogCi0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3Jr
OjpSZXNwb25zZT4gcmVzcG9uc2VPYmplY3QgPSBUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVzcG9u
c2U6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6
OlJlc3BvbnNlPiByZXNwb25zZU9iamVjdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdv
cms6OlJlc3BvbnNlOjpjcmVhdGUoKQogICAgICAgICAuc2V0VXJsKHJlc3BvbnNlLnVybCgpLnN0
cmluZygpKQogICAgICAgICAuc2V0U3RhdHVzKHN0YXR1cykKICAgICAgICAgLnNldFN0YXR1c1Rl
eHQocmVzcG9uc2UuaHR0cFN0YXR1c1RleHQoKSkKQEAgLTE1MywxNCArMTU0LDE0IEBAIHN0YXRp
YyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNwb25zZT4gYnVpbGRPYmplY3RG
b3JSZXNvdXJjZVJlc3BvbnNlCiAgICAgcmV0dXJuIHJlc3BvbnNlT2JqZWN0OwogfQogCi1zdGF0
aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6Q2FjaGVkUmVzb3VyY2U+IGJ1aWxk
T2JqZWN0Rm9yQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlLCBE
b2N1bWVudExvYWRlciogbG9hZGVyKQorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6TmV0d29yazo6Q2FjaGVkUmVzb3VyY2U+IGJ1aWxkT2JqZWN0Rm9yQ2FjaGVkUmVz
b3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlLCBEb2N1bWVudExvYWRlciogbG9h
ZGVyKQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6Q2FjaGVkUmVzb3VyY2U+
IHJlc291cmNlT2JqZWN0ID0gVHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkNhY2hlZFJlc291cmNlOjpj
cmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpDYWNo
ZWRSZXNvdXJjZT4gcmVzb3VyY2VPYmplY3QgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3
b3JrOjpDYWNoZWRSZXNvdXJjZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldFVybChjYWNoZWRSZXNv
dXJjZS0+dXJsKCkpCiAgICAgICAgIC5zZXRUeXBlKEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVk
UmVzb3VyY2VUeXBlSnNvbigqY2FjaGVkUmVzb3VyY2UpKQogICAgICAgICAuc2V0Qm9keVNpemUo
Y2FjaGVkUmVzb3VyY2UtPmVuY29kZWRTaXplKCkpOwogCi0gICAgUmVmUHRyPFR5cGVCdWlsZGVy
OjpOZXR3b3JrOjpSZXNwb25zZT4gcmVzb3VyY2VSZXNwb25zZSA9IGJ1aWxkT2JqZWN0Rm9yUmVz
b3VyY2VSZXNwb25zZShjYWNoZWRSZXNvdXJjZS0+cmVzcG9uc2UoKSwgbG9hZGVyKTsKKyAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVzcG9uc2U+IHJlc291cmNl
UmVzcG9uc2UgPSBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UoY2FjaGVkUmVzb3VyY2Ut
PnJlc3BvbnNlKCksIGxvYWRlcik7CiAgICAgaWYgKHJlc291cmNlUmVzcG9uc2UpCiAgICAgICAg
IHJlc291cmNlT2JqZWN0LT5zZXRSZXNwb25zZShyZXNvdXJjZVJlc3BvbnNlKTsKIApAQCAtMjE2
LDkgKzIxNyw5IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMCiAgICAgICAgIHJlcXVlc3Quc2V0
SFRUUEhlYWRlckZpZWxkKCJDYWNoZS1Db250cm9sIiwgIm5vLWNhY2hlIik7CiAgICAgfQogCi0g
ICAgVHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6RW51bSByZXNvdXJjZVR5cGUgPSBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlVHlwZUpzb24odHlwZSk7CisgICAgSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpFbnVtIHJlc291cmNlVHlwZSA9IElu
c3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VUeXBlSnNvbih0eXBlKTsKIAotICAgIFJlZlB0cjxU
eXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yPiBpbml0aWF0b3JPYmplY3QgPSBidWlsZElu
aXRpYXRvck9iamVjdChsb2FkZXItPmZyYW1lKCkgPyBsb2FkZXItPmZyYW1lKCktPmRvY3VtZW50
KCkgOiAwKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5p
dGlhdG9yPiBpbml0aWF0b3JPYmplY3QgPSBidWlsZEluaXRpYXRvck9iamVjdChsb2FkZXItPmZy
YW1lKCkgPyBsb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCkgOiAwKTsKICAgICBtX2Zyb250ZW5k
RGlzcGF0Y2hlci0+cmVxdWVzdFdpbGxCZVNlbnQocmVxdWVzdElkLCBtX3BhZ2VBZ2VudC0+ZnJh
bWVJZChsb2FkZXItPmZyYW1lKCkpLCBtX3BhZ2VBZ2VudC0+bG9hZGVySWQobG9hZGVyKSwgbG9h
ZGVyLT51cmwoKS5zdHJpbmcoKSwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3QocmVxdWVz
dCksIGN1cnJlbnRUaW1lKCksIGluaXRpYXRvck9iamVjdCwgYnVpbGRPYmplY3RGb3JSZXNvdXJj
ZVJlc3BvbnNlKHJlZGlyZWN0UmVzcG9uc2UsIGxvYWRlciksIHR5cGUgIT0gSW5zcGVjdG9yUGFn
ZUFnZW50OjpPdGhlclJlc291cmNlID8gJnJlc291cmNlVHlwZSA6IDApOwogfQogCkBAIC0yMzAs
NyArMjMxLDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjptYXJrUmVzb3VyY2VBc0Nh
Y2hlZCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdl
bnQ6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50
TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJj
ZUxvYWRlciogcmVzb3VyY2VMb2FkZXIpCiB7CiAgICAgU3RyaW5nIHJlcXVlc3RJZCA9IElkZW50
aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpOwotICAgIFJlZlB0cjxUeXBlQnVp
bGRlcjo6TmV0d29yazo6UmVzcG9uc2U+IHJlc291cmNlUmVzcG9uc2UgPSBidWlsZE9iamVjdEZv
clJlc291cmNlUmVzcG9uc2UocmVzcG9uc2UsIGxvYWRlcik7CisgICAgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc3BvbnNlPiByZXNvdXJjZVJlc3BvbnNlID0gYnVp
bGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKHJlc3BvbnNlLCBsb2FkZXIpOwogCiAgICAgYm9v
bCBpc05vdE1vZGlmaWVkID0gcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7CiAKQEAg
LTI0Myw3ICsyNDQsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVS
ZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZQogICAgIGlmIChjYWNoZWRS
ZXNvdXJjZSkgewogICAgICAgICAvLyBVc2UgbWltZSB0eXBlIGZyb20gY2FjaGVkIHJlc291cmNl
IGluIGNhc2UgdGhlIG9uZSBpbiByZXNwb25zZSBpcyBlbXB0eS4KICAgICAgICAgaWYgKHJlc291
cmNlUmVzcG9uc2UgJiYgcmVzcG9uc2UubWltZVR5cGUoKS5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICByZXNvdXJjZVJlc3BvbnNlLT5zZXRTdHJpbmcoVHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc3Bv
bnNlOjpNaW1lVHlwZSwgY2FjaGVkUmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSk7Cisg
ICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlLT5zZXRTdHJpbmcoSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6TmV0d29yazo6UmVzcG9uc2U6Ok1pbWVUeXBlLCBjYWNoZWRSZXNvdXJjZS0+cmVzcG9u
c2UoKS5taW1lVHlwZSgpKTsKICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5hZGRDYWNoZWRSZXNv
dXJjZShyZXF1ZXN0SWQsIGNhY2hlZFJlc291cmNlKTsKICAgICB9CiAKQEAgLTMzNSw3ICszMzYs
NyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZExvYWRSZXNvdXJjZUZyb21NZW1v
cnlDYWNoZShEb2N1bWVudExvYWRlciogbG9hZAogICAgICAgICBtX3Jlc291cmNlc0RhdGEtPnJl
dXNlWEhSUmVwbGF5RGF0YShyZXF1ZXN0SWQsIHJhd1JlcXVlc3RJZCk7CiAgICAgfQogCi0gICAg
UmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IGluaXRpYXRvck9iamVjdCA9
IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KGxvYWRlci0+ZnJhbWUoKSA/IGxvYWRlci0+ZnJhbWUoKS0+
ZG9jdW1lbnQoKSA6IDApOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3
b3JrOjpJbml0aWF0b3I+IGluaXRpYXRvck9iamVjdCA9IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KGxv
YWRlci0+ZnJhbWUoKSA/IGxvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSA6IDApOwogCiAgICAg
bV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RTZXJ2ZWRGcm9tTWVtb3J5Q2FjaGUocmVxdWVz
dElkLCBmcmFtZUlkLCBsb2FkZXJJZCwgbG9hZGVyLT51cmwoKS5zdHJpbmcoKSwgY3VycmVudFRp
bWUoKSwgaW5pdGlhdG9yT2JqZWN0LCBidWlsZE9iamVjdEZvckNhY2hlZFJlc291cmNlKHJlc291
cmNlLCBsb2FkZXIpKTsKIH0KQEAgLTQ0MCwxOSArNDQxLDE5IEBAIHZvaWQgSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6ZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24oRG9jdW1lbnQqIGRvY3Vt
ZW50KQogICAgICAgICBtX3N0eWxlUmVjYWxjdWxhdGlvbkluaXRpYXRvciA9IGJ1aWxkSW5pdGlh
dG9yT2JqZWN0KGRvY3VtZW50KTsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29y
azo6SW5pdGlhdG9yPiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpidWlsZEluaXRpYXRvck9iamVj
dChEb2N1bWVudCogZG9jdW1lbnQpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
Ok5ldHdvcms6OkluaXRpYXRvcj4gSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6YnVpbGRJbml0aWF0
b3JPYmplY3QoRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIFJlZlB0cjxTY3JpcHRDYWxsU3Rh
Y2s+IHN0YWNrVHJhY2UgPSBjcmVhdGVTY3JpcHRDYWxsU3RhY2soU2NyaXB0Q2FsbFN0YWNrOjpt
YXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlLCB0cnVlKTsKICAgICBpZiAoc3RhY2tUcmFjZSAmJiBz
dGFja1RyYWNlLT5zaXplKCkgPiAwKSB7Ci0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TmV0
d29yazo6SW5pdGlhdG9yPiBpbml0aWF0b3JPYmplY3QgPSBUeXBlQnVpbGRlcjo6TmV0d29yazo6
SW5pdGlhdG9yOjpjcmVhdGUoKQotICAgICAgICAgICAgLnNldFR5cGUoVHlwZUJ1aWxkZXI6Ok5l
dHdvcms6OkluaXRpYXRvcjo6VHlwZTo6U2NyaXB0KTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4gaW5pdGlhdG9yT2JqZWN0ID0gSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yOjpjcmVhdGUoKQorICAgICAg
ICAgICAgLnNldFR5cGUoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9y
OjpUeXBlOjpTY3JpcHQpOwogICAgICAgICBpbml0aWF0b3JPYmplY3QtPnNldFN0YWNrVHJhY2Uo
c3RhY2tUcmFjZS0+YnVpbGRJbnNwZWN0b3JBcnJheSgpKTsKICAgICAgICAgcmV0dXJuIGluaXRp
YXRvck9iamVjdDsKICAgICB9CiAKICAgICBpZiAoZG9jdW1lbnQgJiYgZG9jdW1lbnQtPnNjcmlw
dGFibGVEb2N1bWVudFBhcnNlcigpKSB7Ci0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TmV0
d29yazo6SW5pdGlhdG9yPiBpbml0aWF0b3JPYmplY3QgPSBUeXBlQnVpbGRlcjo6TmV0d29yazo6
SW5pdGlhdG9yOjpjcmVhdGUoKQotICAgICAgICAgICAgLnNldFR5cGUoVHlwZUJ1aWxkZXI6Ok5l
dHdvcms6OkluaXRpYXRvcjo6VHlwZTo6UGFyc2VyKTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4gaW5pdGlhdG9yT2JqZWN0ID0gSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yOjpjcmVhdGUoKQorICAgICAg
ICAgICAgLnNldFR5cGUoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9y
OjpUeXBlOjpQYXJzZXIpOwogICAgICAgICBpbml0aWF0b3JPYmplY3QtPnNldFVybChkb2N1bWVu
dC0+dXJsKCkuc3RyaW5nKCkpOwogICAgICAgICBpbml0aWF0b3JPYmplY3QtPnNldExpbmVOdW1i
ZXIoZG9jdW1lbnQtPnNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpLT50ZXh0UG9zaXRpb24oKS5t
X2xpbmUub25lQmFzZWRJbnQoKSk7CiAgICAgICAgIHJldHVybiBpbml0aWF0b3JPYmplY3Q7CkBA
IC00NjEsOCArNDYyLDggQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlh
dG9yPiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpidWlsZEluaXRpYXQKICAgICBpZiAobV9pc1Jl
Y2FsY3VsYXRpbmdTdHlsZSAmJiBtX3N0eWxlUmVjYWxjdWxhdGlvbkluaXRpYXRvcikKICAgICAg
ICAgcmV0dXJuIG1fc3R5bGVSZWNhbGN1bGF0aW9uSW5pdGlhdG9yOwogCi0gICAgcmV0dXJuIFR5
cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I6OmNyZWF0ZSgpCi0gICAgICAgIC5zZXRUeXBl
KFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I6OlR5cGU6Ok90aGVyKQorICAgIHJldHVy
biBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I6OmNyZWF0ZSgpCisg
ICAgICAgIC5zZXRUeXBlKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRv
cjo6VHlwZTo6T3RoZXIpCiAgICAgICAgIC5yZWxlYXNlKCk7CiB9CiAKQEAgLTQ3NSwxNCArNDc2
LDE0IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkQ3JlYXRlV2ViU29ja2V0KHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QKIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50Ojp3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgUmVmUHRyPFR5
cGVCdWlsZGVyOjpOZXR3b3JrOjpXZWJTb2NrZXRSZXF1ZXN0PiByZXF1ZXN0T2JqZWN0ID0gVHlw
ZUJ1aWxkZXI6Ok5ldHdvcms6OldlYlNvY2tldFJlcXVlc3Q6OmNyZWF0ZSgpCisgICAgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OldlYlNvY2tldFJlcXVlc3Q+IHJlcXVl
c3RPYmplY3QgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpXZWJTb2NrZXRSZXF1
ZXN0OjpjcmVhdGUoKQogICAgICAgICAuc2V0SGVhZGVycyhidWlsZE9iamVjdEZvckhlYWRlcnMo
cmVxdWVzdC5odHRwSGVhZGVyRmllbGRzKCkpKTsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+
d2ViU29ja2V0V2lsbFNlbmRIYW5kc2hha2VSZXF1ZXN0KElkZW50aWZpZXJzRmFjdG9yeTo6cmVx
dWVzdElkKGlkZW50aWZpZXIpLCBjdXJyZW50VGltZSgpLCByZXF1ZXN0T2JqZWN0KTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtl
UmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OldlYlNvY2tl
dFJlc3BvbnNlPiByZXNwb25zZU9iamVjdCA9IFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpXZWJTb2Nr
ZXRSZXNwb25zZTo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
TmV0d29yazo6V2ViU29ja2V0UmVzcG9uc2U+IHJlc3BvbnNlT2JqZWN0ID0gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6TmV0d29yazo6V2ViU29ja2V0UmVzcG9uc2U6OmNyZWF0ZSgpCiAgICAgICAg
IC5zZXRTdGF0dXMocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkKICAgICAgICAgLnNldFN0YXR1
c1RleHQocmVzcG9uc2UuaHR0cFN0YXR1c1RleHQoKSkKICAgICAgICAgLnNldEhlYWRlcnMoYnVp
bGRPYmplY3RGb3JIZWFkZXJzKHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKSkpOwpAQCAtNDk2
LDcgKzQ5Nyw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkQ2xvc2VXZWJTb2Nr
ZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdl
bnQ6OmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFdlYlNvY2tldEZyYW1lJiBmcmFtZSkKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5l
dHdvcms6OldlYlNvY2tldEZyYW1lPiBmcmFtZU9iamVjdCA9IFR5cGVCdWlsZGVyOjpOZXR3b3Jr
OjpXZWJTb2NrZXRGcmFtZTo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6TmV0d29yazo6V2ViU29ja2V0RnJhbWU+IGZyYW1lT2JqZWN0ID0gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6TmV0d29yazo6V2ViU29ja2V0RnJhbWU6OmNyZWF0ZSgpCiAgICAgICAgIC5z
ZXRPcGNvZGUoZnJhbWUub3BDb2RlKQogICAgICAgICAuc2V0TWFzayhmcmFtZS5tYXNrZWQpCiAg
ICAgICAgIC5zZXRQYXlsb2FkRGF0YShTdHJpbmcoZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5bG9h
ZExlbmd0aCkpOwpAQCAtNTA1LDcgKzUwNiw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwKIAog
dm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRTZW5kV2ViU29ja2V0RnJhbWUodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJTb2NrZXRGcmFtZSYgZnJhbWUpCiB7Ci0gICAg
UmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpXZWJTb2NrZXRGcmFtZT4gZnJhbWVPYmplY3Qg
PSBUeXBlQnVpbGRlcjo6TmV0d29yazo6V2ViU29ja2V0RnJhbWU6OmNyZWF0ZSgpCisgICAgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OldlYlNvY2tldEZyYW1lPiBmcmFt
ZU9iamVjdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OldlYlNvY2tldEZyYW1l
OjpjcmVhdGUoKQogICAgICAgICAuc2V0T3Bjb2RlKGZyYW1lLm9wQ29kZSkKICAgICAgICAgLnNl
dE1hc2soZnJhbWUubWFza2VkKQogICAgICAgICAuc2V0UGF5bG9hZERhdGEoU3RyaW5nKGZyYW1l
LnBheWxvYWQsIGZyYW1lLnBheWxvYWRMZW5ndGgpKTsKQEAgLTY1MCw3ICs2NTEsNyBAQCB2b2lk
IEluc3BlY3RvclJlc291cmNlQWdlbnQ6Om1haW5GcmFtZU5hdmlnYXRlZChEb2N1bWVudExvYWRl
ciogbG9hZGVyKQogfQogCiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3Rv
clBhZ2VBZ2VudCogcGFnZUFnZW50LCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkKLSAgICA6IElu
c3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIk5ldHdvcmsiKSwgaW5zdHJ1bWVudGluZ0Fn
ZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIk5ldHdvcmsiKSwg
aW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkKICAgICAs
IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fcmVzb3VyY2VzRGF0YShhZG9wdFB0cihuZXcgTmV0
d29ya1Jlc291cmNlc0RhdGEoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlQWdlbnQuaAppbmRleCA4YzI3Zjk0Li45ZjJlNzJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKQEAgLTMx
LDkgKzMxLDkgQEAKICNpZm5kZWYgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudF9oCiAjZGVmaW5lIElu
c3BlY3RvclJlc291cmNlQWdlbnRfaAogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50Lmgi
CisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yRnJvbnRlbmQuaCIKLQorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgog
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC00MSw4ICs0MSw5IEBACiAKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQogCi1uYW1lc3BhY2UgV1RGIHsKLWNsYXNzIFN0cmluZzsKK25hbWVzcGFjZSBJ
bnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yQXJyYXk7CitjbGFzcyBJbnNwZWN0b3JPYmplY3Q7
CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUzLDkgKzU0LDcgQEAgY2xhc3MgRG9jdW1l
bnRMb2FkZXI7CiBjbGFzcyBGb3JtRGF0YTsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSFRUUEhlYWRl
ck1hcDsKLWNsYXNzIEluc3BlY3RvckFycmF5OwogY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwotY2xh
c3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50OwogY2xhc3MgSW5z
dHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFVSTDsKQEAgLTc2LDcgKzc1LDcgQEAgc3RydWN0IFdl
YlNvY2tldEZyYW1lOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJ
bnNwZWN0b3JOZXR3b3JrQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3Rv
clJlc291cmNlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVj
dG9yTmV0d29ya0JhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NPd25QdHI8SW5zcGVjdG9yUmVzb3VyY2VBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50
LCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkKICAgICB7CkBAIC04NSw3ICs4NCw3IEBAIHB1Ymxp
YzoKIAogICAgIH5JbnNwZWN0b3JSZXNvdXJjZUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklE
RTsKIAogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
RG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZWRpcmVjdFJlc3BvbnNlKTsKQEAgLTExNiw3ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkaWRSZWNhbGN1bGF0ZVN0eWxlKCk7CiAgICAgdm9pZCBkaWRTY2hlZHVsZVN0eWxlUmVjYWxj
dWxhdGlvbihEb2N1bWVudCopOwogCi0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29y
azo6SW5pdGlhdG9yPiBidWlsZEluaXRpYXRvck9iamVjdChEb2N1bWVudCopOworICAgIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yPiBidWlsZElu
aXRpYXRvck9iamVjdChEb2N1bWVudCopOwogCiAjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQogICAg
IHZvaWQgZGlkQ3JlYXRlV2ViU29ja2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
VVJMJiByZXF1ZXN0VVJMKTsKQEAgLTEzNSw3ICsxMzQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVy
cm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIHNldFVzZXJBZ2VudE92ZXJyaWRlKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRF
eHRyYUhUVFBIZWFkZXJzKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RXh0cmFIVFRQSGVhZGVycyhFcnJvclN0cmluZyos
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mKTsKICAgICB2aXJ0dWFs
IHZvaWQgZ2V0UmVzcG9uc2VCb2R5KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0
SWQsIFN0cmluZyogY29udGVudCwgYm9vbCogYmFzZTY0RW5jb2RlZCk7CiAKICAgICB2aXJ0dWFs
IHZvaWQgcmVwbGF5WEhSKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwpA
QCAtMTYwLDEyICsxNTksMTIgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZW5hYmxlZDsKICAgICBi
b29sIG1fY2FjaGVEaXNhYmxlZDsKICAgICBib29sIG1fbG9hZGluZ1hIUlN5bmNocm9ub3VzbHk7
Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbV9leHRyYVJlcXVlc3RIZWFkZXJzOworICAg
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gbV9leHRyYVJlcXVlc3RIZWFkZXJz
OwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFRocmVhZGFibGVMb2FkZXJDbGllbnQqLCBSZWZQdHI8
WEhSUmVwbGF5RGF0YT4+IFBlbmRpbmdYSFJSZXBsYXlEYXRhTWFwOwogICAgIFBlbmRpbmdYSFJS
ZXBsYXlEYXRhTWFwIG1fcGVuZGluZ1hIUlJlcGxheURhdGE7CiAgICAgLy8gRklYTUU6IEluc3Bl
Y3RvclJlc291cmNlQWdlbnQgc2hvdWxkIG5vdyBiZSBhd2FyZSBvZiBzdHlsZSByZWNhbGN1bGF0
aW9uLgotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yPiBtX3N0eWxl
UmVjYWxjdWxhdGlvbkluaXRpYXRvcjsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6TmV0d29yazo6SW5pdGlhdG9yPiBtX3N0eWxlUmVjYWxjdWxhdGlvbkluaXRpYXRvcjsKICAg
ICBib29sIG1faXNSZWNhbGN1bGF0aW5nU3R5bGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCmluZGV4IDhiMzQ2OTAuLmFk
OGM0MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuY3BwCkBAIC0zNiw4ICszNiw4IEBACiAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlw
dC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgotI2luY2x1ZGUgIkluc3Bl
Y3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgorI2luY2x1ZGUgPGlu
c3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDxwYXJzZXIvUGFyc2VyRXJyb3Iu
aD4KICNpbmNsdWRlIDxwYXJzZXIvU291cmNlQ29kZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvQ29t
cGxldGlvbi5oPgpAQCAtNTAsNiArNTAsOCBAQAogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCit1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRp
YyBib29sIGFzQm9vbChjb25zdCBib29sKiBjb25zdCBiKQpAQCAtNTgsNyArNjAsNyBAQCBzdGF0
aWMgYm9vbCBhc0Jvb2woY29uc3QgYm9vbCogY29uc3QgYikKIH0KIAogSW5zcGVjdG9yUnVudGlt
ZUFnZW50OjpJbnNwZWN0b3JSdW50aW1lQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cywgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFn
ZXIpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJSdW50aW1lIiksIGlu
c3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFs
KCJSdW50aW1lIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX2VuYWJsZWQoZmFsc2Up
CiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAj
aWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCkBAIC04MiwxNSArODQsMTUgQEAgc3RhdGlj
IFNjcmlwdERlYnVnU2VydmVyOjpQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHNldFBhdXNlT25FeGNl
cHRpb25zU3RhdGUoU2NyaXAKIH0KICNlbmRpZgogCi1zdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6UnVudGltZTo6RXJyb3JSYW5nZT4gYnVpbGRFcnJvclJhbmdlT2JqZWN0KGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgdG9rZW5Mb2NhdGlvbikKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkVycm9yUmFuZ2U+IGJ1aWxkRXJyb3JSYW5nZU9iamVj
dChjb25zdCBKU1Rva2VuTG9jYXRpb24mIHRva2VuTG9jYXRpb24pCiB7Ci0gICAgUmVmUHRyPFR5
cGVCdWlsZGVyOjpSdW50aW1lOjpFcnJvclJhbmdlPiByZXN1bHQgPSBUeXBlQnVpbGRlcjo6UnVu
dGltZTo6RXJyb3JSYW5nZTo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6UnVudGltZTo6RXJyb3JSYW5nZT4gcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6UnVudGltZTo6RXJyb3JSYW5nZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldFN0YXJ0T2Zmc2V0
KHRva2VuTG9jYXRpb24uc3RhcnRPZmZzZXQpCiAgICAgICAgIC5zZXRFbmRPZmZzZXQodG9rZW5M
b2NhdGlvbi5lbmRPZmZzZXQpOwogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCi12
b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6cGFyc2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIGV4cHJlc3Npb24sIFR5cGVCdWlsZGVyOjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGU6OkVu
dW0qIHJlc3VsdCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxTdHJpbmc+KiBtZXNzYWdlLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkVycm9yUmFuZ2U+JiByYW5nZSkKK3ZvaWQgSW5zcGVj
dG9yUnVudGltZUFnZW50OjpwYXJzZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZXhwcmVz
c2lvbiwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBlOjpF
bnVtKiByZXN1bHQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxTdHJpbmc+KiBt
ZXNzYWdlLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6RXJyb3JSYW5n
ZT4mIHJhbmdlKQogewogICAgIFZNKiB2bSA9IEpTRE9NV2luZG93QmFzZTo6Y29tbW9uVk0oKTsK
ICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CkBAIC0xMDAsMTYgKzEwMiwxNiBAQCB2b2lkIElu
c3BlY3RvclJ1bnRpbWVBZ2VudDo6cGFyc2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGV4
cHJlc3Npb24sIFR5cGVCdQogCiAgICAgc3dpdGNoIChlcnJvci5tX3N5bnRheEVycm9yVHlwZSkg
ewogICAgIGNhc2UgUGFyc2VyRXJyb3I6OlN5bnRheEVycm9yTm9uZToKLSAgICAgICAgKnJlc3Vs
dCA9IFR5cGVCdWlsZGVyOjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGU6Ok5vbmU7CisgICAgICAg
ICpyZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpTeW50YXhFcnJvclR5
cGU6Ok5vbmU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUGFyc2VyRXJyb3I6OlN5bnRheEVy
cm9ySXJyZWNvdmVyYWJsZToKLSAgICAgICAgKnJlc3VsdCA9IFR5cGVCdWlsZGVyOjpSdW50aW1l
OjpTeW50YXhFcnJvclR5cGU6OklycmVjb3ZlcmFibGU7CisgICAgICAgICpyZXN1bHQgPSBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGU6OklycmVjb3ZlcmFi
bGU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUGFyc2VyRXJyb3I6OlN5bnRheEVycm9yVW50
ZXJtaW5hdGVkTGl0ZXJhbDoKLSAgICAgICAgKnJlc3VsdCA9IFR5cGVCdWlsZGVyOjpSdW50aW1l
OjpTeW50YXhFcnJvclR5cGU6OlVudGVybWluYXRlZExpdGVyYWw7CisgICAgICAgICpyZXN1bHQg
PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGU6OlVudGVy
bWluYXRlZExpdGVyYWw7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUGFyc2VyRXJyb3I6OlN5
bnRheEVycm9yUmVjb3ZlcmFibGU6Ci0gICAgICAgICpyZXN1bHQgPSBUeXBlQnVpbGRlcjo6UnVu
dGltZTo6U3ludGF4RXJyb3JUeXBlOjpSZWNvdmVyYWJsZTsKKyAgICAgICAgKnJlc3VsdCA9IElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZTo6UmVjb3ZlcmFi
bGU7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMTE5LDcgKzEyMSw3IEBAIHZvaWQgSW5z
cGVjdG9yUnVudGltZUFnZW50OjpwYXJzZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZXhw
cmVzc2lvbiwgVHlwZUJ1CiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6
ZXZhbHVhdGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Np
b24sIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGNvbnN0IGlu
Y2x1ZGVDb21tYW5kTGluZUFQSSwgY29uc3QgYm9vbCogY29uc3QgZG9Ob3RQYXVzZU9uRXhjZXB0
aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCwgY29uc3Qg
Ym9vbCogY29uc3QgcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgVHlwZUJ1
aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQordm9pZCBJbnNwZWN0b3JSdW50aW1l
QWdlbnQ6OmV2YWx1YXRlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBl
eHByZXNzaW9uLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBj
b25zdCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGNvbnN0IGJvb2wqIGNvbnN0IGRvTm90UGF1c2VP
bkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQs
IGNvbnN0IGJvb2wqIGNvbnN0IHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJl
dmlldywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVj
dD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNU
aHJvd24pCiB7CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNj
cmlwdEZvckV2YWwoZXJyb3JTdHJpbmcsIGV4ZWN1dGlvbkNvbnRleHRJZCk7CiAgICAgaWYgKGlu
amVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKQEAgLTE0Miw3ICsxNDQsNyBAQCB2b2lkIEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudDo6ZXZhbHVhdGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25z
dCBTdHJpbmcmIGV4cAogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmNh
bGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmpl
Y3RJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJy
YXk+KiBjb25zdCBvcHRpb25hbEFyZ3VtZW50cywgY29uc3QgYm9vbCogY29uc3QgZG9Ob3RQYXVz
ZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBib29sKiBjb25zdCByZXR1cm5CeVZh
bHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+
KiB3YXNUaHJvd24pCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Y2FsbEZ1bmN0aW9uT24o
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBT
dHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIGNvbnN0IG9w
dGlvbmFsQXJndW1lbnRzLCBjb25zdCBib29sKiBjb25zdCBkb05vdFBhdXNlT25FeGNlcHRpb25z
QW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGJvb2wqIGNvbnN0IHJldHVybkJ5VmFsdWUsIGNvbnN0IGJv
b2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRp
bWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0
cHV0PGJvb2w+KiB3YXNUaHJvd24pCiB7CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3Jp
cHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChv
YmplY3RJZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewpAQCAtMTcx
LDcgKzE3Myw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpjYWxsRnVuY3Rpb25PbihF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluCiAgICAgfQogfQogCi12b2lkIElu
c3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVydGllcyhFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIGNvbnN0IG93blByb3BlcnRp
ZXMsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlByb3Bl
cnR5RGVzY3JpcHRvcj4+JiByZXN1bHQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1
aWxkZXI6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4mIGludGVybmFsUHJv
cGVydGllcykKK3ZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRQcm9wZXJ0aWVzKEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCog
Y29uc3Qgb3duUHJvcGVydGllcywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiBy
ZXN1bHQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5h
bFByb3BlcnRpZXMpCiB7CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChvYmplY3RJZCk7
CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCmluZGV4IGNmNDRlNTguLjhi
NDQ0ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGlt
ZUFnZW50LmgKQEAgLTMzLDI1ICszMywyOSBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAot
I2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBJbmpl
Y3RlZFNjcmlwdDsKLWNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKK25hbWVzcGFjZSBJbnNw
ZWN0b3IgewogY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBj
bGFzcyBJbnNwZWN0b3JWYWx1ZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJ
bmplY3RlZFNjcmlwdDsKK2NsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKIGNsYXNzIEluc3Ry
dW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBTY3JpcHREZWJ1Z1NlcnZlcjsKIGNsYXNzIFdvcmtlckds
b2JhbFNjb3BlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVj
dG9yUnVudGltZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3Bl
Y3RvclJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yUnVu
dGltZUFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3RvclJ1
bnRpbWVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEluc3BlY3RvclJ1bnRpbWVBZ2VudCk7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5zcGVjdG9y
UnVudGltZUFnZW50KCk7CkBAIC01OSw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICAvLyBQYXJ0IG9m
IHRoZSBwcm90b2NvbC4KICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKikgeyBt
X2VuYWJsZWQgPSB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcq
KSB7IG1fZW5hYmxlZCA9IGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBUeXBlQnVpbGRlcjo6UnVudGltZTo6U3lu
dGF4RXJyb3JUeXBlOjpFbnVtKiByZXN1bHQsIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8U3RyaW5n
PiogbWVzc2FnZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpFcnJvclJhbmdlPiYpOwor
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZXhwcmVz
c2lvbiwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBlOjpF
bnVtKiByZXN1bHQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxTdHJpbmc+KiBt
ZXNzYWdlLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6RXJyb3JSYW5n
ZT4mKTsKICAgICB2aXJ0dWFsIHZvaWQgZXZhbHVhdGUoRXJyb3JTdHJpbmcqLAogICAgICAgICAg
ICAgICAgICAgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLAogICAgICAgICAgICAgICAgICAgY29u
c3QgU3RyaW5nKiBvYmplY3RHcm91cCwKQEAgLTY4LDE5ICs3MiwxOSBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgICBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCwKICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGJvb2wqIHJldHVybkJ5VmFsdWUsCiAgICAgICAgICAgICAgICAgICBjb25z
dCBib29sKiBnZW5lcmF0ZVByZXZpZXcsCi0gICAgICAgICAgICAgICAgICBSZWZQdHI8VHlwZUJ1
aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwKLSAgICAgICAgICAgICAgICAg
IFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7CisgICAgICAgICAgICAg
ICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0
PiYgcmVzdWx0LAorICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0
T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOwogICAgIHZpcnR1YWwgdm9pZCBjYWxsRnVuY3Rpb25P
bihFcnJvclN0cmluZyosCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIG9i
amVjdElkLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBleHByZXNzaW9u
LAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5Piog
b3B0aW9uYWxBcmd1bWVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4qIG9wdGlvbmFsQXJndW1lbnRzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgYm9vbCogZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVD
b25zb2xlLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCogcmV0dXJuQnlWYWx1
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywK
LSAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVt
b3RlT2JqZWN0PiYgcmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgVHlwZUJ1aWxkZXI6
Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1
bHQsCisgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRP
dXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VPYmplY3Qo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkKTsKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0UHJvcGVydGllcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0
IGJvb2wqIG93blByb3BlcnRpZXMsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxk
ZXI6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1bHQsIFJlZlB0cjxUeXBlQnVp
bGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlw
dG9yPj4mIGludGVybmFsUHJvcGVydGllcyk7CisgICAgdmlydHVhbCB2b2lkIGdldFByb3BlcnRp
ZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBib29sKiBvd25Q
cm9wZXJ0aWVzLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4mIHJlc3VsdCwgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4mIGludGVybmFsUHJvcGVydGll
cyk7CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VPYmplY3RHcm91cChFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyYgb2JqZWN0R3JvdXApOwogICAgIHZpcnR1YWwgdm9pZCBydW4oRXJyb3JTdHJp
bmcqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0
eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hl
ZXQuY3BwCmluZGV4IDY3NjYyMmIuLmNhYTQ0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAgLTQ5LDcgKzQ5LDYgQEAKICNpbmNs
dWRlICJIVE1MU3R5bGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ1NTQWdlbnQuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1
ZXMuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiUmVndWxhckV4cHJlc3Npb24uaCIK
ICNpbmNsdWRlICJTVkdOYW1lcy5oIgpAQCAtNjAsMTMgKzU5LDEzIEBACiAjaW5jbHVkZSAiU3R5
bGVTaGVldENvbnRlbnRzLmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldExpc3QuaCIKICNpbmNsdWRl
ICJXZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmgiCi0KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVj
dG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KIAotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkFycmF5OwordXNp
bmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk7CiB1c2luZyBXZWJDb3JlOjpSdWxlU291
cmNlRGF0YUxpc3Q7CiB1c2luZyBXZWJDb3JlOjpDU1NSdWxlU291cmNlRGF0YTsKIApAQCAtMTQ0
LDYgKzE0Myw4IEBAIFBhc3NSZWZQdHI8V2ViQ29yZTo6Q1NTUnVsZVNvdXJjZURhdGE+IFBhcnNl
ZFN0eWxlU2hlZXQ6OnJ1bGVTb3VyY2VEYXRhQXQodW5zaWduCiAgICAgcmV0dXJuIG1fc291cmNl
RGF0YS0+YXQoaW5kZXgpOwogfQogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gTWVkaWFMaXN0U291cmNlIHsKQEAgLTE1MywxNCArMTU0
LDE0IEBAIGVudW0gTWVkaWFMaXN0U291cmNlIHsKICAgICBNZWRpYUxpc3RTb3VyY2VJbXBvcnRS
dWxlCiB9OwogCi1zdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTb3VyY2VSYW5n
ZT4gYnVpbGRTb3VyY2VSYW5nZU9iamVjdChjb25zdCBTb3VyY2VSYW5nZSYgcmFuZ2UsIFZlY3Rv
cjxzaXplX3Q+KiBsaW5lRW5kaW5ncykKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6U291cmNlUmFuZ2U+IGJ1aWxkU291cmNlUmFuZ2VPYmplY3QoY29uc3Qg
U291cmNlUmFuZ2UmIHJhbmdlLCBWZWN0b3I8c2l6ZV90PiogbGluZUVuZGluZ3MpCiB7CiAgICAg
aWYgKCFsaW5lRW5kaW5ncykKICAgICAgICAgcmV0dXJuIDA7CiAgICAgVGV4dFBvc2l0aW9uIHN0
YXJ0ID0gQ29udGVudFNlYXJjaFV0aWxzOjp0ZXh0UG9zaXRpb25Gcm9tT2Zmc2V0KHJhbmdlLnN0
YXJ0LCAqbGluZUVuZGluZ3MpOwogICAgIFRleHRQb3NpdGlvbiBlbmQgPSBDb250ZW50U2VhcmNo
VXRpbHM6OnRleHRQb3NpdGlvbkZyb21PZmZzZXQocmFuZ2UuZW5kLCAqbGluZUVuZGluZ3MpOwog
Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OlNvdXJjZVJhbmdlPiByZXN1bHQgPSBUeXBl
QnVpbGRlcjo6Q1NTOjpTb3VyY2VSYW5nZTo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpTb3VyY2VSYW5nZT4gcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q1NTOjpTb3VyY2VSYW5nZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldFN0YXJ0TGlu
ZShzdGFydC5tX2xpbmUuemVyb0Jhc2VkSW50KCkpCiAgICAgICAgIC5zZXRTdGFydENvbHVtbihz
dGFydC5tX2NvbHVtbi56ZXJvQmFzZWRJbnQoKSkKICAgICAgICAgLnNldEVuZExpbmUoZW5kLm1f
bGluZS56ZXJvQmFzZWRJbnQoKSkKQEAgLTE2OCwyNiArMTY5LDI2IEBAIHN0YXRpYyBQYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpDU1M6OlNvdXJjZVJhbmdlPiBidWlsZFNvdXJjZVJhbmdlT2JqZWN0
KGNvbnN0IFNvCiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyBQYXNz
UmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU01lZGlhPiBidWlsZE1lZGlhT2JqZWN0KGNvbnN0
IE1lZGlhTGlzdCogbWVkaWEsIE1lZGlhTGlzdFNvdXJjZSBtZWRpYUxpc3RTb3VyY2UsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMKQorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NNZWRpYT4gYnVpbGRNZWRpYU9iamVjdChjb25zdCBNZWRpYUxpc3QqIG1l
ZGlhLCBNZWRpYUxpc3RTb3VyY2UgbWVkaWFMaXN0U291cmNlLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTCkKIHsKICAgICAvLyBNYWtlIGNlcnRhaW4gY29tcGlsZXJzIGhhcHB5IGJ5IGluaXRpYWxp
emluZyB8c291cmNlfCB1cC1mcm9udC4KLSAgICBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYTo6
U291cmNlOjpFbnVtIHNvdXJjZSA9IFR5cGVCdWlsZGVyOjpDU1M6OkNTU01lZGlhOjpTb3VyY2U6
OklubGluZVNoZWV0OworICAgIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE6
OlNvdXJjZTo6RW51bSBzb3VyY2UgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU01l
ZGlhOjpTb3VyY2U6OklubGluZVNoZWV0OwogICAgIHN3aXRjaCAobWVkaWFMaXN0U291cmNlKSB7
CiAgICAgY2FzZSBNZWRpYUxpc3RTb3VyY2VNZWRpYVJ1bGU6Ci0gICAgICAgIHNvdXJjZSA9IFR5
cGVCdWlsZGVyOjpDU1M6OkNTU01lZGlhOjpTb3VyY2U6Ok1lZGlhUnVsZTsKKyAgICAgICAgc291
cmNlID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYTo6U291cmNlOjpNZWRp
YVJ1bGU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVkaWFMaXN0U291cmNlSW1wb3J0UnVs
ZToKLSAgICAgICAgc291cmNlID0gVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE6OlNvdXJjZTo6
SW1wb3J0UnVsZTsKKyAgICAgICAgc291cmNlID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NNZWRpYTo6U291cmNlOjpJbXBvcnRSdWxlOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IE1lZGlhTGlzdFNvdXJjZUxpbmtlZFNoZWV0OgotICAgICAgICBzb3VyY2UgPSBUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NNZWRpYTo6U291cmNlOjpMaW5rZWRTaGVldDsKKyAgICAgICAgc291cmNlID0g
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYTo6U291cmNlOjpMaW5rZWRTaGVl
dDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYUxpc3RTb3VyY2VJbmxpbmVTaGVldDoK
LSAgICAgICAgc291cmNlID0gVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE6OlNvdXJjZTo6SW5s
aW5lU2hlZXQ7CisgICAgICAgIHNvdXJjZSA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTTWVkaWE6OlNvdXJjZTo6SW5saW5lU2hlZXQ7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAot
ICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYT4gbWVkaWFPYmplY3QgPSBUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NNZWRpYTo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYT4gbWVkaWFPYmplY3QgPSBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6OkNTU01lZGlhOjpjcmVhdGUoKQogICAgICAgICAuc2V0VGV4dChtZWRpYS0+
bWVkaWFUZXh0KCkpCiAgICAgICAgIC5zZXRTb3VyY2Uoc291cmNlKTsKIApAQCAtMjM4LDcgKzIz
OSw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBhc0NTU1J1bGVMaXN0KENTU1J1
bGUqIHJ1bGUpCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIGZpbGxNZWRpYUxpc3RD
aGFpbihDU1NSdWxlKiBydWxlLCBBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYT4qIG1l
ZGlhQXJyYXkpCitzdGF0aWMgdm9pZCBmaWxsTWVkaWFMaXN0Q2hhaW4oQ1NTUnVsZSogcnVsZSwg
QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYT4qIG1lZGlhQXJyYXkp
CiB7CiAgICAgTWVkaWFMaXN0KiBtZWRpYUxpc3Q7CiAgICAgQ1NTUnVsZSogcGFyZW50UnVsZSA9
IHJ1bGU7CkBAIC0zMTYsMTEgKzMxNywxMSBAQCBJbnNwZWN0b3JTdHlsZTo6fkluc3BlY3RvclN0
eWxlKCkKIHsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5z
cGVjdG9yU3R5bGU6OmJ1aWxkT2JqZWN0Rm9yU3R5bGUoKSBjb25zdAorUGFzc1JlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6YnVpbGRP
YmplY3RGb3JTdHlsZSgpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNT
U1N0eWxlPiByZXN1bHQgPSBzdHlsZVdpdGhQcm9wZXJ0aWVzKCk7CisgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IHJlc3VsdCA9IHN0eWxlV2l0aFByb3Bl
cnRpZXMoKTsKICAgICBpZiAoIW1fc3R5bGVJZC5pc0VtcHR5KCkpCi0gICAgICAgIHJlc3VsdC0+
c2V0U3R5bGVJZChtX3N0eWxlSWQuYXNQcm90b2NvbFZhbHVlPFR5cGVCdWlsZGVyOjpDU1M6OkNT
U1N0eWxlSWQ+KCkpOworICAgICAgICByZXN1bHQtPnNldFN0eWxlSWQobV9zdHlsZUlkLmFzUHJv
dG9jb2xWYWx1ZTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlSWQ+KCkpOwog
CiAgICAgcmVzdWx0LT5zZXRXaWR0aChtX3N0eWxlLT5nZXRQcm9wZXJ0eVZhbHVlKCJ3aWR0aCIp
KTsKICAgICByZXN1bHQtPnNldEhlaWdodChtX3N0eWxlLT5nZXRQcm9wZXJ0eVZhbHVlKCJoZWln
aHQiKSk7CkBAIC0zMzIsMTUgKzMzMywxNSBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6
OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6YnVpbGRPYmplY3RGb3JTdHlsZSgpIGNvbgogICAg
IHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpB
cnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+PiBJbnNwZWN0
b3JTdHlsZTo6YnVpbGRBcnJheUZvckNvbXB1dGVkU3R5bGUoKSBjb25zdAorUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+IEluc3BlY3RvclN0eWxlOjpidWlsZEFycmF5Rm9y
Q29tcHV0ZWRTdHlsZSgpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+PiByZXN1bHQgPSBUeXBl
QnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5
Pjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4gcmVz
dWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+OjpjcmVhdGUoKTsKICAgICBWZWN0b3I8
SW5zcGVjdG9yU3R5bGVQcm9wZXJ0eT4gcHJvcGVydGllczsKICAgICBwb3B1bGF0ZUFsbFByb3Bl
cnRpZXMoJnByb3BlcnRpZXMpOwogCiAgICAgZm9yIChWZWN0b3I8SW5zcGVjdG9yU3R5bGVQcm9w
ZXJ0eT46Oml0ZXJhdG9yIGl0ID0gcHJvcGVydGllcy5iZWdpbigpLCBpdEVuZCA9IHByb3BlcnRp
ZXMuZW5kKCk7IGl0ICE9IGl0RW5kOyArK2l0KSB7CiAgICAgICAgIGNvbnN0IENTU1Byb3BlcnR5
U291cmNlRGF0YSYgcHJvcGVydHlFbnRyeSA9IGl0LT5zb3VyY2VEYXRhOwotICAgICAgICBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5PiBlbnRyeSA9IFR5
cGVCdWlsZGVyOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eTo6Y3JlYXRlKCkKKyAgICAg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVBy
b3BlcnR5PiBlbnRyeSA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTQ29tcHV0ZWRT
dHlsZVByb3BlcnR5OjpjcmVhdGUoKQogICAgICAgICAgICAgLnNldE5hbWUocHJvcGVydHlFbnRy
eS5uYW1lKQogICAgICAgICAgICAgLnNldFZhbHVlKHByb3BlcnR5RW50cnkudmFsdWUpOwogICAg
ICAgICByZXN1bHQtPmFkZEl0ZW0oZW50cnkpOwpAQCAtNTE5LDE0ICs1MjAsMTQgQEAgYm9vbCBJ
bnNwZWN0b3JTdHlsZTo6cG9wdWxhdGVBbGxQcm9wZXJ0aWVzKFZlY3RvcjxJbnNwZWN0b3JTdHls
ZVByb3BlcnR5PiogcmVzdWwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRp
ZXMoKSBjb25zdAorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0
eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcygpIGNvbnN0CiB7CiAgICAg
VmVjdG9yPEluc3BlY3RvclN0eWxlUHJvcGVydHk+IHByb3BlcnRpZXM7CiAgICAgcG9wdWxhdGVB
bGxQcm9wZXJ0aWVzKCZwcm9wZXJ0aWVzKTsKIAotICAgIFJlZlB0cjxBcnJheTxUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NQcm9wZXJ0eT4+IHByb3BlcnRpZXNPYmplY3QgPSBBcnJheTxUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NQcm9wZXJ0eT46OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxBcnJheTxUeXBlQnVp
bGRlcjo6Q1NTOjpTaG9ydGhhbmRFbnRyeT4+IHNob3J0aGFuZEVudHJpZXMgPSBBcnJheTxUeXBl
QnVpbGRlcjo6Q1NTOjpTaG9ydGhhbmRFbnRyeT46OmNyZWF0ZSgpOwotICAgIEhhc2hNYXA8U3Ry
aW5nLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk+PiBwcm9wZXJ0eU5hbWVU
b1ByZXZpb3VzQWN0aXZlUHJvcGVydHk7CisgICAgUmVmUHRyPEFycmF5PEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk+PiBwcm9wZXJ0aWVzT2JqZWN0ID0gQXJyYXk8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eT46OmNyZWF0ZSgpOworICAgIFJl
ZlB0cjxBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNob3J0aGFuZEVudHJ5Pj4g
c2hvcnRoYW5kRW50cmllcyA9IEFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2hv
cnRoYW5kRW50cnk+OjpjcmVhdGUoKTsKKyAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk+PiBwcm9wZXJ0eU5hbWVUb1ByZXZp
b3VzQWN0aXZlUHJvcGVydHk7CiAgICAgSGFzaFNldDxTdHJpbmc+IGZvdW5kU2hvcnRoYW5kczsK
ICAgICBTdHJpbmcgcHJldmlvdXNQcmlvcml0eTsKICAgICBTdHJpbmcgcHJldmlvdXNTdGF0dXM7
CkBAIC01MzgsOSArNTM5LDkgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHls
ZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjb24KICAgICAgICAgY29u
c3QgQ1NTUHJvcGVydHlTb3VyY2VEYXRhJiBwcm9wZXJ0eUVudHJ5ID0gaXQtPnNvdXJjZURhdGE7
CiAgICAgICAgIGNvbnN0IFN0cmluZyYgbmFtZSA9IHByb3BlcnR5RW50cnkubmFtZTsKIAotICAg
ICAgICBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eTo6U3RhdHVzOjpFbnVtIHN0YXR1cyA9
IGl0LT5kaXNhYmxlZCA/IFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpTdGF0dXM6OkRp
c2FibGVkIDogVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlN0YXR1czo6QWN0aXZlOwor
ICAgICAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpTdGF0dXM6
OkVudW0gc3RhdHVzID0gaXQtPmRpc2FibGVkID8gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NQcm9wZXJ0eTo6U3RhdHVzOjpEaXNhYmxlZCA6IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTUHJvcGVydHk6OlN0YXR1czo6QWN0aXZlOwogCi0gICAgICAgIFJlZlB0cjxUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eT4gcHJvcGVydHkgPSBUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NQcm9wZXJ0eTo6Y3JlYXRlKCkKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTUHJvcGVydHk+IHByb3BlcnR5ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NQcm9wZXJ0eTo6Y3JlYXRlKCkKICAgICAgICAgICAgIC5zZXROYW1lKG5hbWUpCiAg
ICAgICAgICAgICAuc2V0VmFsdWUocHJvcGVydHlFbnRyeS52YWx1ZSk7CiAKQEAgLTU3MywyMiAr
NTc0LDIyIEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3Rv
clN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVzKCkgY29uCiAgICAgICAgICAgICAgICAgQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eUlkID0gY3NzUHJvcGVydHlJRChuYW1lKTsKICAgICAgICAgICAgICAg
ICAvLyBDYW5vbmljYWxpemUgcHJvcGVydHkgbmFtZXMgdG8gdHJlYXQgbm9uLXByZWZpeGVkIGFu
ZCB2ZW5kb3ItcHJlZml4ZWQgcHJvcGVydHkgbmFtZXMgdGhlIHNhbWUgKG9wYWNpdHkgdnMuIC13
ZWJraXQtb3BhY2l0eSkuCiAgICAgICAgICAgICAgICAgU3RyaW5nIGNhbm9uaWNhbFByb3BlcnR5
TmFtZSA9IHByb3BlcnR5SWQgPyBnZXRQcm9wZXJ0eU5hbWVTdHJpbmcocHJvcGVydHlJZCkgOiBu
YW1lOwotICAgICAgICAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTUHJvcGVydHk+Pjo6aXRlcmF0b3IgYWN0aXZlSXQgPSBwcm9wZXJ0eU5hbWVUb1By
ZXZpb3VzQWN0aXZlUHJvcGVydHkuZmluZChjYW5vbmljYWxQcm9wZXJ0eU5hbWUpOworICAgICAg
ICAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NQcm9wZXJ0eT4+OjppdGVyYXRvciBhY3RpdmVJdCA9IHByb3BlcnR5TmFtZVRvUHJl
dmlvdXNBY3RpdmVQcm9wZXJ0eS5maW5kKGNhbm9uaWNhbFByb3BlcnR5TmFtZSk7CiAgICAgICAg
ICAgICAgICAgaWYgKGFjdGl2ZUl0ICE9IHByb3BlcnR5TmFtZVRvUHJldmlvdXNBY3RpdmVQcm9w
ZXJ0eS5lbmQoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVydHlFbnRyeS5wYXJz
ZWRPaykgewotICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzdWNjZXNzUHJpb3JpdHkgPSBh
Y3RpdmVJdC0+dmFsdWUtPmdldFN0cmluZyhUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eTo6
UHJpb3JpdHksICZwcmV2aW91c1ByaW9yaXR5KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgc3VjY2Vzc1N0YXR1cyA9IGFjdGl2ZUl0LT52YWx1ZS0+Z2V0U3RyaW5nKFR5cGVCdWlsZGVy
OjpDU1M6OkNTU1Byb3BlcnR5OjpTdGF0dXMsICZwcmV2aW91c1N0YXR1cyk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIHN1Y2Nlc3NQcmlvcml0eSA9IGFjdGl2ZUl0LT52YWx1ZS0+Z2V0
U3RyaW5nKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlByaW9yaXR5
LCAmcHJldmlvdXNQcmlvcml0eSk7CisgICAgICAgICAgICAgICAgICAgICAgICBib29sIHN1Y2Nl
c3NTdGF0dXMgPSBhY3RpdmVJdC0+dmFsdWUtPmdldFN0cmluZyhJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpTdGF0dXMsICZwcmV2aW91c1N0YXR1cyk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoc3VjY2Vzc1N0YXR1cyAmJiBwcmV2aW91c1N0YXR1cyAhPSAi
aW5hY3RpdmUiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5RW50
cnkuaW1wb3J0YW50IHx8ICFzdWNjZXNzUHJpb3JpdHkpIC8vIFByaW9yaXR5IG5vdCBzZXQgPT0g
Im5vdCBpbXBvcnRhbnQiLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRJ
bmFjdGl2YXRlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChz
dGF0dXMgPT0gVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlN0YXR1czo6QWN0aXZlKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc3RhdHVzID09IEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlN0YXR1czo6QWN0aXZlKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluYWN0aXZhdGUgYSBub24taW1wb3J0YW50
IHByb3BlcnR5IGZvbGxvd2luZyB0aGUgc2FtZS1uYW1lZCBpbXBvcnRhbnQgcHJvcGVydHkuCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IFR5cGVCdWlsZGVyOjpDU1M6
OkNTU1Byb3BlcnR5OjpTdGF0dXM6OkluYWN0aXZlOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGF0dXMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5
OjpTdGF0dXM6OkluYWN0aXZlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgcHJldmlvdXNQYXJzZWRPazsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgc3VjY2VzcyA9IGFjdGl2ZUl0LT52YWx1ZS0+Z2V0Qm9vbGVhbihUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eTo6UGFyc2VkT2ssICZwcmV2aW91c1BhcnNlZE9rKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9IGFjdGl2ZUl0LT52YWx1ZS0+
Z2V0Qm9vbGVhbihJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpQYXJz
ZWRPaywgJnByZXZpb3VzUGFyc2VkT2spOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1
Y2Nlc3MgJiYgIXByZXZpb3VzUGFyc2VkT2spCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2hvdWxkSW5hY3RpdmF0ZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTU5Niw3
ICs1OTcsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0
b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcygpIGNvbgogICAgICAgICAgICAgICAgICAgICBw
cm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHkuc2V0KGNhbm9uaWNhbFByb3BlcnR5
TmFtZSwgcHJvcGVydHkpOwogCiAgICAgICAgICAgICAgICAgaWYgKHNob3VsZEluYWN0aXZhdGUp
IHsKLSAgICAgICAgICAgICAgICAgICAgYWN0aXZlSXQtPnZhbHVlLT5zZXRTdGF0dXMoVHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlN0YXR1czo6SW5hY3RpdmUpOworICAgICAgICAgICAg
ICAgICAgICBhY3RpdmVJdC0+dmFsdWUtPnNldFN0YXR1cyhJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDU1M6OkNTU1Byb3BlcnR5OjpTdGF0dXM6OkluYWN0aXZlKTsKICAgICAgICAgICAgICAgICAg
ICAgcHJvcGVydHlOYW1lVG9QcmV2aW91c0FjdGl2ZVByb3BlcnR5LnNldChjYW5vbmljYWxQcm9w
ZXJ0eU5hbWUsIHByb3BlcnR5KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVs
c2UgewpAQCAtNjA0LDEzICs2MDUsMTMgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjb24KICAgICAg
ICAgICAgICAgICAvLyBEZWZhdWx0ICJpbXBsaWNpdCIgPT0gZmFsc2UuCiAgICAgICAgICAgICAg
ICAgaWYgKGltcGxpY2l0KQogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eS0+c2V0SW1wbGlj
aXQodHJ1ZSk7Ci0gICAgICAgICAgICAgICAgc3RhdHVzID0gVHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
UHJvcGVydHk6OlN0YXR1czo6U3R5bGU7CisgICAgICAgICAgICAgICAgc3RhdHVzID0gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eTo6U3RhdHVzOjpTdHlsZTsKIAogICAg
ICAgICAgICAgICAgIFN0cmluZyBzaG9ydGhhbmQgPSBtX3N0eWxlLT5nZXRQcm9wZXJ0eVNob3J0
aGFuZChuYW1lKTsKICAgICAgICAgICAgICAgICBpZiAoIXNob3J0aGFuZC5pc0VtcHR5KCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFmb3VuZFNob3J0aGFuZHMuY29udGFpbnMoc2hvcnRo
YW5kKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRTaG9ydGhhbmRzLmFkZChzaG9y
dGhhbmQpOwotICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6
OlNob3J0aGFuZEVudHJ5PiBlbnRyeSA9IFR5cGVCdWlsZGVyOjpDU1M6OlNob3J0aGFuZEVudHJ5
OjpjcmVhdGUoKQorICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6U2hvcnRoYW5kRW50cnk+IGVudHJ5ID0gSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpTaG9ydGhhbmRFbnRyeTo6Y3JlYXRlKCkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAuc2V0TmFtZShzaG9ydGhhbmQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LnNldFZhbHVlKHNob3J0aGFuZFZhbHVlKHNob3J0aGFuZCkpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgc2hvcnRoYW5kRW50cmllcy0+YWRkSXRlbShlbnRyeSk7CkBAIC02MjAsMTEgKzYyMSwx
MSBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHls
ZTo6c3R5bGVXaXRoUHJvcGVydGllcygpIGNvbgogICAgICAgICB9CiAKICAgICAgICAgLy8gRGVm
YXVsdCAic3RhdHVzIiA9PSAic3R5bGUiLgotICAgICAgICBpZiAoc3RhdHVzICE9IFR5cGVCdWls
ZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpTdGF0dXM6OlN0eWxlKQorICAgICAgICBpZiAoc3RhdHVz
ICE9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlN0YXR1czo6U3R5
bGUpCiAgICAgICAgICAgICBwcm9wZXJ0eS0+c2V0U3RhdHVzKHN0YXR1cyk7CiAgICAgfQogCi0g
ICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiByZXN1bHQgPSBUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NTdHlsZTo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NTdHlsZT4gcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NTdHlsZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldENzc1Byb3BlcnRpZXMocHJvcGVydGll
c09iamVjdCkKICAgICAgICAgLnNldFNob3J0aGFuZEVudHJpZXMoc2hvcnRoYW5kRW50cmllcyk7
CiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CkBAIC03NTksNyArNzYwLDcgQEAgTmV3TGlu
ZUFuZFdoaXRlc3BhY2UmIEluc3BlY3RvclN0eWxlOjpuZXdMaW5lQW5kV2hpdGVzcGFjZURlbGlt
aXRlcnMoKSBjb25zdAogICAgIHJldHVybiBtX2Zvcm1hdDsKIH0KIAotUGFzc1JlZlB0cjxJbnNw
ZWN0b3JTdHlsZVNoZWV0PiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpjcmVhdGUoSW5zcGVjdG9yUGFn
ZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8Q1NTU3R5bGVT
aGVldD4gcGFnZVN0eWxlU2hlZXQsIFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46
OkVudW0gb3JpZ2luLCBjb25zdCBTdHJpbmcmIGRvY3VtZW50VVJMLCBMaXN0ZW5lciogbGlzdGVu
ZXIpCitQYXNzUmVmUHRyPEluc3BlY3RvclN0eWxlU2hlZXQ+IEluc3BlY3RvclN0eWxlU2hlZXQ6
OmNyZWF0ZShJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgY29uc3QgU3RyaW5nJiBpZCwg
UGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBwYWdlU3R5bGVTaGVldCwgSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpFbnVtIG9yaWdpbiwgY29uc3QgU3RyaW5n
JiBkb2N1bWVudFVSTCwgTGlzdGVuZXIqIGxpc3RlbmVyKQogewogICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSW5zcGVjdG9yU3R5bGVTaGVldChwYWdlQWdlbnQsIGlkLCBwYWdlU3R5bGVTaGVldCwg
b3JpZ2luLCBkb2N1bWVudFVSTCwgbGlzdGVuZXIpKTsKIH0KQEAgLTc3Miw3ICs3NzMsNyBAQCBT
dHJpbmcgSW5zcGVjdG9yU3R5bGVTaGVldDo6c3R5bGVTaGVldFVSTChDU1NTdHlsZVNoZWV0KiBw
YWdlU3R5bGVTaGVldCkKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAotSW5zcGVjdG9y
U3R5bGVTaGVldDo6SW5zcGVjdG9yU3R5bGVTaGVldChJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VB
Z2VudCwgY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBwYWdlU3R5
bGVTaGVldCwgVHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6RW51bSBvcmlnaW4s
IGNvbnN0IFN0cmluZyYgZG9jdW1lbnRVUkwsIExpc3RlbmVyKiBsaXN0ZW5lcikKK0luc3BlY3Rv
clN0eWxlU2hlZXQ6Okluc3BlY3RvclN0eWxlU2hlZXQoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdl
QWdlbnQsIGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4gcGFnZVN0
eWxlU2hlZXQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6
RW51bSBvcmlnaW4sIGNvbnN0IFN0cmluZyYgZG9jdW1lbnRVUkwsIExpc3RlbmVyKiBsaXN0ZW5l
cikKICAgICA6IG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkKICAgICAsIG1faWQoaWQpCiAgICAgLCBt
X3BhZ2VTdHlsZVNoZWV0KHBhZ2VTdHlsZVNoZWV0KQpAQCAtOTYzLDcgKzk2NCw3IEBAIENTU1N0
eWxlUnVsZSogSW5zcGVjdG9yU3R5bGVTaGVldDo6cnVsZUZvcklkKGNvbnN0IEluc3BlY3RvckNT
U0lkJiBpZCkgY29uc3QKIAogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0
eWxlU2hlZXRCb2R5PiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdEZvclN0eWxlU2hl
ZXQoKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hl
ZXRCb2R5PiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdEZvclN0eWxlU2hlZXQoKQog
ewogICAgIENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQgPSBwYWdlU3R5bGVTaGVldCgpOwogICAg
IGlmICghc3R5bGVTaGVldCkKQEAgLTk3MSw3ICs5NzIsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5PiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9i
amVjdAogCiAgICAgUmVmUHRyPENTU1J1bGVMaXN0PiBjc3NSdWxlTGlzdCA9IGFzQ1NTUnVsZUxp
c3Qoc3R5bGVTaGVldCk7CiAKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVT
aGVldEJvZHk+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5Ojpj
cmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxl
U2hlZXRCb2R5PiByZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxl
U2hlZXRCb2R5OjpjcmVhdGUoKQogICAgICAgICAuc2V0U3R5bGVTaGVldElkKGlkKCkpCiAgICAg
ICAgIC5zZXRSdWxlcyhidWlsZEFycmF5Rm9yUnVsZUxpc3QoY3NzUnVsZUxpc3QuZ2V0KCkpKTsK
IApAQCAtOTgzLDcgKzk4NCw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5
bGVTaGVldEJvZHk+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0CiAgICAgcmV0dXJu
IHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
U3R5bGVTaGVldEhlYWRlcj4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTdHls
ZVNoZWV0SW5mbygpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
U3R5bGVTaGVldEhlYWRlcj4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTdHls
ZVNoZWV0SW5mbygpCiB7CiAgICAgQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCA9IHBhZ2VTdHls
ZVNoZWV0KCk7CiAgICAgaWYgKCFzdHlsZVNoZWV0KQpAQCAtOTkxLDcgKzk5Miw3IEBAIFBhc3NS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4gSW5zcGVjdG9yU3R5
bGVTaGVldDo6YnVpbGRPYmplCiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdHlsZVNoZWV0
LT5vd25lckRvY3VtZW50KCk7CiAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQgPyBkb2N1bWVu
dC0+ZnJhbWUoKSA6IDA7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hl
ZXRIZWFkZXI+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI6
OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5
bGVTaGVldEhlYWRlcj4gcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NT
dHlsZVNoZWV0SGVhZGVyOjpjcmVhdGUoKQogICAgICAgICAuc2V0U3R5bGVTaGVldElkKGlkKCkp
CiAgICAgICAgIC5zZXRPcmlnaW4obV9vcmlnaW4pCiAgICAgICAgIC5zZXREaXNhYmxlZChzdHls
ZVNoZWV0LT5kaXNhYmxlZCgpKQpAQCAtMTAwMiwxMCArMTAwMywxMCBAQCBQYXNzUmVmUHRyPFR5
cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+IEluc3BlY3RvclN0eWxlU2hlZXQ6
OmJ1aWxkT2JqZQogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCi1zdGF0aWMgUGFz
c1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gc2VsZWN0b3JzRnJvbVNvdXJjZShj
b25zdCBDU1NSdWxlU291cmNlRGF0YSogc291cmNlRGF0YSwgY29uc3QgU3RyaW5nJiBzaGVldFRl
eHQpCitzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJp
bmc+PiBzZWxlY3RvcnNGcm9tU291cmNlKGNvbnN0IENTU1J1bGVTb3VyY2VEYXRhKiBzb3VyY2VE
YXRhLCBjb25zdCBTdHJpbmcmIHNoZWV0VGV4dCkKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFJlZ3VsYXJFeHByZXNzaW9uLCBjb21tZW50LCAoIi9cXCpbXl0qP1xcKi8iLCBUZXh0Q2FzZVNl
bnNpdGl2ZSwgTXVsdGlsaW5lRW5hYmxlZCkpOwotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJy
YXk8U3RyaW5nPj4gcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgp
OworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiByZXN1
bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAg
ICBjb25zdCBTZWxlY3RvclJhbmdlTGlzdCYgcmFuZ2VzID0gc291cmNlRGF0YS0+c2VsZWN0b3JS
YW5nZXM7CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSByYW5nZXMuc2l6ZSgpOyBpIDwg
c2l6ZTsgKytpKSB7CiAgICAgICAgIGNvbnN0IFNvdXJjZVJhbmdlJiByYW5nZSA9IHJhbmdlcy5h
dChpKTsKQEAgLTEwMTgsMTIgKzEwMTksMTIgQEAgc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PFN0cmluZz4+IHNlbGVjdG9yc0Zyb21Tb3VyY2UoY29uc3QgQ1NTUnVsZVMKICAg
ICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6
Q1NTOjpTZWxlY3Rvckxpc3Q+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU2Vs
ZWN0b3JMaXN0KENTU1N0eWxlUnVsZSogcnVsZSkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q1NTOjpTZWxlY3Rvckxpc3Q+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2Jq
ZWN0Rm9yU2VsZWN0b3JMaXN0KENTU1N0eWxlUnVsZSogcnVsZSkKIHsKICAgICBSZWZQdHI8Q1NT
UnVsZVNvdXJjZURhdGE+IHNvdXJjZURhdGE7CiAgICAgaWYgKGVuc3VyZVBhcnNlZERhdGFSZWFk
eSgpKQogICAgICAgICBzb3VyY2VEYXRhID0gcnVsZVNvdXJjZURhdGFGb3IocnVsZS0+c3R5bGUo
KSk7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBzZWxlY3RvcnM7Cisg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IHNlbGVjdG9y
czsKIAogICAgIC8vIFRoaXMgaW50ZW50aW9uYWxseSBkb2VzIG5vdCByZWx5IG9uIHRoZSBzb3Vy
Y2UgZGF0YSB0byBhdm9pZCBjYXRjaGluZyB0aGUgdHJhaWxpbmcgY29tbWVudHMgKGJlZm9yZSB0
aGUgZGVjbGFyYXRpb24gc3RhcnRpbmcgJ3snKS4KICAgICBTdHJpbmcgc2VsZWN0b3JUZXh0ID0g
cnVsZS0+c2VsZWN0b3JUZXh0KCk7CkBAIC0xMDMxLDEyICsxMDMyLDEyIEBAIFBhc3NSZWZQdHI8
VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JMaXN0PiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWls
ZE9iamVjdEZvclNlCiAgICAgaWYgKHNvdXJjZURhdGEpCiAgICAgICAgIHNlbGVjdG9ycyA9IHNl
bGVjdG9yc0Zyb21Tb3VyY2Uoc291cmNlRGF0YS5nZXQoKSwgbV9wYXJzZWRTdHlsZVNoZWV0LT50
ZXh0KCkpOwogICAgIGVsc2UgewotICAgICAgICBzZWxlY3RvcnMgPSBUeXBlQnVpbGRlcjo6QXJy
YXk8U3RyaW5nPjo6Y3JlYXRlKCk7CisgICAgICAgIHNlbGVjdG9ycyA9IEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwogICAgICAgICBjb25zdCBDU1NTZWxl
Y3Rvckxpc3QmIHNlbGVjdG9yTGlzdCA9IHJ1bGUtPnN0eWxlUnVsZSgpLT5zZWxlY3Rvckxpc3Qo
KTsKICAgICAgICAgZm9yIChjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IgPSBzZWxlY3Rvckxp
c3QuZmlyc3QoKTsgc2VsZWN0b3I7IHNlbGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHNl
bGVjdG9yKSkKICAgICAgICAgICAgIHNlbGVjdG9ycy0+YWRkSXRlbShzZWxlY3Rvci0+c2VsZWN0
b3JUZXh0KCkpOwogICAgIH0KLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JM
aXN0PiByZXN1bHQgPSBUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3Rvckxpc3Q6OmNyZWF0ZSgpCisg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JMaXN0PiByZXN1
bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yTGlzdDo6Y3JlYXRlKCkK
ICAgICAgICAgLnNldFNlbGVjdG9ycyhzZWxlY3RvcnMpCiAgICAgICAgIC5zZXRUZXh0KHNlbGVj
dG9yVGV4dCkKICAgICAgICAgLnJlbGVhc2UoKTsKQEAgLTEwNDUsMjkgKzEwNDYsMjkgQEAgUGFz
c1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3Rvckxpc3Q+IEluc3BlY3RvclN0eWxlU2hl
ZXQ6OmJ1aWxkT2JqZWN0Rm9yU2UKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAot
UGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiBJbnNwZWN0b3JTdHlsZVNoZWV0
OjpidWlsZE9iamVjdEZvclJ1bGUoQ1NTU3R5bGVSdWxlKiBydWxlKQorUGFzc1JlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1
aWxkT2JqZWN0Rm9yUnVsZShDU1NTdHlsZVJ1bGUqIHJ1bGUpCiB7CiAgICAgQ1NTU3R5bGVTaGVl
dCogc3R5bGVTaGVldCA9IHBhZ2VTdHlsZVNoZWV0KCk7CiAgICAgaWYgKCFzdHlsZVNoZWV0KQog
ICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxl
PiByZXN1bHQgPSBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlOjpjcmVhdGUoKQorICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+IHJlc3VsdCA9IEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldFNlbGVj
dG9yTGlzdChidWlsZE9iamVjdEZvclNlbGVjdG9yTGlzdChydWxlKSkKICAgICAgICAgLnNldFNv
dXJjZUxpbmUocnVsZS0+c3R5bGVSdWxlKCktPnNvdXJjZUxpbmUoKSkKICAgICAgICAgLnNldE9y
aWdpbihtX29yaWdpbikKICAgICAgICAgLnNldFN0eWxlKGJ1aWxkT2JqZWN0Rm9yU3R5bGUocnVs
ZS0+c3R5bGUoKSkpOwogCiAgICAgLy8gInNvdXJjZVVSTCIgaXMgcHJlc2VudCBvbmx5IGZvciBy
ZWd1bGFyIHJ1bGVzLCBvdGhlcndpc2UgIm9yaWdpbiIgc2hvdWxkIGJlIHVzZWQgaW4gdGhlIGZy
b250ZW5kLgotICAgIGlmIChtX29yaWdpbiA9PSBUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0
T3JpZ2luOjpSZWd1bGFyKQorICAgIGlmIChtX29yaWdpbiA9PSBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlJlZ3VsYXIpCiAgICAgICAgIHJlc3VsdC0+c2V0
U291cmNlVVJMKGZpbmFsVVJMKCkpOwogCiAgICAgaWYgKGNhbkJpbmQoKSkgewogICAgICAgICBJ
bnNwZWN0b3JDU1NJZCBpZChydWxlSWQocnVsZSkpOwogICAgICAgICBpZiAoIWlkLmlzRW1wdHko
KSkKLSAgICAgICAgICAgIHJlc3VsdC0+c2V0UnVsZUlkKGlkLmFzUHJvdG9jb2xWYWx1ZTxUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NSdWxlSWQ+KCkpOworICAgICAgICAgICAgcmVzdWx0LT5zZXRSdWxl
SWQoaWQuYXNQcm90b2NvbFZhbHVlPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVs
ZUlkPigpKTsKICAgICB9CiAKLSAgICBSZWZQdHI8QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
TWVkaWE+PiBtZWRpYUFycmF5ID0gQXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE+Ojpj
cmVhdGUoKTsKKyAgICBSZWZQdHI8QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NNZWRpYT4+IG1lZGlhQXJyYXkgPSBBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
OkNTU01lZGlhPjo6Y3JlYXRlKCk7CiAKICAgICBmaWxsTWVkaWFMaXN0Q2hhaW4ocnVsZSwgbWVk
aWFBcnJheS5nZXQoKSk7CiAgICAgaWYgKG1lZGlhQXJyYXktPmxlbmd0aCgpKQpAQCAtMTA3Niw3
ICsxMDc3LDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiBJbnNwZWN0
b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdEZvclJ1bGUoQ1MKICAgICByZXR1cm4gcmVzdWx0LnJl
bGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5z
cGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9u
KiBzdHlsZSkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHls
ZT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTdHlsZShDU1NTdHlsZURlY2xh
cmF0aW9uKiBzdHlsZSkKIHsKICAgICBSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IHNvdXJjZURh
dGE7CiAgICAgaWYgKGVuc3VyZVBhcnNlZERhdGFSZWFkeSgpKQpAQCAtMTA4NCwxMyArMTA4NSwx
MyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHls
ZVNoZWV0OjpidWlsZE9iamVjdEZvclN0eWxlKAogCiAgICAgSW5zcGVjdG9yQ1NTSWQgaWQgPSBy
dWxlT3JTdHlsZUlkKHN0eWxlKTsKICAgICBpZiAoaWQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gYm9ndXNTdHlsZSA9IFR5cGVCdWlsZGVy
OjpDU1M6OkNTU1N0eWxlOjpjcmVhdGUoKQotICAgICAgICAgICAgLnNldENzc1Byb3BlcnRpZXMo
QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk+OjpjcmVhdGUoKSkKLSAgICAgICAg
ICAgIC5zZXRTaG9ydGhhbmRFbnRyaWVzKEFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlNob3J0aGFu
ZEVudHJ5Pjo6Y3JlYXRlKCkpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NTdHlsZT4gYm9ndXNTdHlsZSA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTU3R5bGU6OmNyZWF0ZSgpCisgICAgICAgICAgICAuc2V0Q3NzUHJvcGVydGllcyhBcnJh
eTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5Pjo6Y3JlYXRlKCkpCisg
ICAgICAgICAgICAuc2V0U2hvcnRoYW5kRW50cmllcyhBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDU1M6OlNob3J0aGFuZEVudHJ5Pjo6Y3JlYXRlKCkpOwogICAgICAgICByZXR1cm4gYm9n
dXNTdHlsZS5yZWxlYXNlKCk7CiAgICAgfQogICAgIFJlZlB0cjxJbnNwZWN0b3JTdHlsZT4gaW5z
cGVjdG9yU3R5bGUgPSBpbnNwZWN0b3JTdHlsZUZvcklkKGlkKTsKLSAgICBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IHJlc3VsdCA9IGluc3BlY3RvclN0eWxlLT5idWlsZE9iamVj
dEZvclN0eWxlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
U3R5bGU+IHJlc3VsdCA9IGluc3BlY3RvclN0eWxlLT5idWlsZE9iamVjdEZvclN0eWxlKCk7CiAK
ICAgICAvLyBTdHlsZSB0ZXh0IGNhbm5vdCBiZSByZXRyaWV2ZWQgd2l0aG91dCBzdHlsZXNoZWV0
LCBzbyBzZXQgY3NzVGV4dCBoZXJlLgogICAgIGlmIChzb3VyY2VEYXRhKSB7CkBAIC0xMzc0LDcg
KzEzNzUsNyBAQCBib29sIEluc3BlY3RvclN0eWxlU2hlZXQ6Om9yaWdpbmFsU3R5bGVTaGVldFRl
eHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0CiAKIGJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6cmVz
b3VyY2VTdHlsZVNoZWV0VGV4dChTdHJpbmcqIHJlc3VsdCkgY29uc3QKIHsKLSAgICBpZiAobV9v
cmlnaW4gPT0gVHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6VXNlciB8fCBtX29y
aWdpbiA9PSBUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpVc2VyQWdlbnQpCisg
ICAgaWYgKG1fb3JpZ2luID09IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVl
dE9yaWdpbjo6VXNlciB8fCBtX29yaWdpbiA9PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
OlN0eWxlU2hlZXRPcmlnaW46OlVzZXJBZ2VudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgaWYgKCFtX3BhZ2VTdHlsZVNoZWV0IHx8ICFvd25lckRvY3VtZW50KCkgfHwgIW93bmVyRG9j
dW1lbnQoKS0+ZnJhbWUoKSkKQEAgLTE0MDYsOSArMTQwNyw5IEBAIGJvb2wgSW5zcGVjdG9yU3R5
bGVTaGVldDo6aW5saW5lU3R5bGVTaGVldFRleHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpDU1M6OkNTU1J1bGU+PiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZEFycmF5Rm9yUnVs
ZUxpc3QoQ1NTUnVsZUxpc3QqIHJ1bGVMaXN0KQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+PiBJbnNw
ZWN0b3JTdHlsZVNoZWV0OjpidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3QqIHJ1bGVM
aXN0KQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTUnVsZT4+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NSdWxlPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFy
cmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4+IHJlc3VsdCA9IEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
UnVsZT46OmNyZWF0ZSgpOwogICAgIGlmICghcnVsZUxpc3QpCiAgICAgICAgIHJldHVybiByZXN1
bHQucmVsZWFzZSgpOwogCkBAIC0xNDQwLDEyICsxNDQxLDEyIEBAIHZvaWQgSW5zcGVjdG9yU3R5
bGVTaGVldDo6Y29sbGVjdEZsYXRSdWxlcyhQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBydWxlTGlz
dCwgQ1NTCiAgICAgfQogfQogCi1QYXNzUmVmUHRyPEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxp
bmVTdHlsZT4gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpjcmVhdGUoSW5zcGVj
dG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8RWxl
bWVudD4gZWxlbWVudCwgVHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6RW51bSBv
cmlnaW4sIExpc3RlbmVyKiBsaXN0ZW5lcikKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yU3R5bGVTaGVl
dEZvcklubGluZVN0eWxlPiBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmNyZWF0
ZShJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgY29uc3QgU3RyaW5nJiBpZCwgUGFzc1Jl
ZlB0cjxFbGVtZW50PiBlbGVtZW50LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0eWxl
U2hlZXRPcmlnaW46OkVudW0gb3JpZ2luLCBMaXN0ZW5lciogbGlzdGVuZXIpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUocGFnZUFn
ZW50LCBpZCwgZWxlbWVudCwgb3JpZ2luLCBsaXN0ZW5lcikpOwogfQogCi1JbnNwZWN0b3JTdHls
ZVNoZWV0Rm9ySW5saW5lU3R5bGU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZShJ
bnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0
cjxFbGVtZW50PiBlbGVtZW50LCBUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpF
bnVtIG9yaWdpbiwgTGlzdGVuZXIqIGxpc3RlbmVyKQorSW5zcGVjdG9yU3R5bGVTaGVldEZvcklu
bGluZVN0eWxlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUoSW5zcGVjdG9yUGFn
ZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8RWxlbWVudD4g
ZWxlbWVudCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpF
bnVtIG9yaWdpbiwgTGlzdGVuZXIqIGxpc3RlbmVyKQogICAgIDogSW5zcGVjdG9yU3R5bGVTaGVl
dChwYWdlQWdlbnQsIGlkLCAwLCBvcmlnaW4sICIiLCBsaXN0ZW5lcikKICAgICAsIG1fZWxlbWVu
dChlbGVtZW50KQogICAgICwgbV9ydWxlU291cmNlRGF0YSgwKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgKaW5kZXggZjUwMzliNC4uMmIzMTZjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCkBA
IC0yOSw5ICsyOSw4IEBACiAjaW5jbHVkZSAiQ1NTU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JTdHlsZVRleHRFZGl0b3Iu
aCIKLSNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgotI2luY2x1ZGUgIkluc3BlY3Rv
clZhbHVlcy5oIgotCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmgiCisjaW5j
bHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgpAQCAtNjQsMTIgKzYzLDEyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgZXhwbGlj
aXQgSW5zcGVjdG9yQ1NTSWQoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gdmFsdWUpCisgICAgZXhw
bGljaXQgSW5zcGVjdG9yQ1NTSWQoUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiB2
YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICghdmFsdWUtPmdldFN0cmluZygic3R5bGVTaGVldElk
IiwgJm1fc3R5bGVTaGVldElkKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAg
ICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gb3JkaW5hbFZhbHVlID0gdmFsdWUtPmdldCgib3Jk
aW5hbCIpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gb3JkaW5h
bFZhbHVlID0gdmFsdWUtPmdldCgib3JkaW5hbCIpOwogICAgICAgICBpZiAoIW9yZGluYWxWYWx1
ZSB8fCAhb3JkaW5hbFZhbHVlLT5hc051bWJlcigmbV9vcmRpbmFsKSkKICAgICAgICAgICAgIG1f
c3R5bGVTaGVldElkID0gIiI7CiAgICAgfQpAQCAtODUsNyArODQsNyBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlU2hlZXRJ
ZDsgfQogICAgIHVuc2lnbmVkIG9yZGluYWwoKSBjb25zdCB7IHJldHVybiBtX29yZGluYWw7IH0K
IAotICAgIC8vIElEIHR5cGUgaXMgZWl0aGVyIFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlSWQg
b3IgVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZUlkLgorICAgIC8vIElEIHR5cGUgaXMgZWl0aGVy
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVJZCBvciBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGVJZC4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJRD4KICAg
ICBQYXNzUmVmUHRyPElEPiBhc1Byb3RvY29sVmFsdWUoKSBjb25zdAogICAgIHsKQEAgLTE0MCw4
ICsxMzksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yU3R5bGUoKTsKIAogICAg
IENTU1N0eWxlRGVjbGFyYXRpb24qIGNzc1N0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZS5n
ZXQoKTsgfQotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IGJ1aWxk
T2JqZWN0Rm9yU3R5bGUoKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJh
eTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+PiBidWlsZEFycmF5
Rm9yQ29tcHV0ZWRTdHlsZSgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gYnVpbGRPYmplY3RGb3JTdHlsZSgpIGNvbnN0OworICAg
IFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+PiBidWlsZEFycmF5Rm9yQ29t
cHV0ZWRTdHlsZSgpIGNvbnN0OwogICAgIGJvb2wgaGFzRGlzYWJsZWRQcm9wZXJ0aWVzKCkgY29u
c3QgeyByZXR1cm4gIW1fZGlzYWJsZWRQcm9wZXJ0aWVzLmlzRW1wdHkoKTsgfQogICAgIGJvb2wg
c2V0UHJvcGVydHlUZXh0KHVuc2lnbmVkIGluZGV4LCBjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wg
b3ZlcndyaXRlLCBTdHJpbmcqIG9sZFRleHQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBib29sIHRv
Z2dsZVByb3BlcnR5KHVuc2lnbmVkIGluZGV4LCBib29sIGRpc2FibGUsIEV4Y2VwdGlvbkNvZGUm
KTsKQEAgLTE1Nyw3ICsxNTYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgYXBwbHlTdHlsZVRleHQo
Y29uc3QgU3RyaW5nJiB0ZXh0KSB7IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOyByZXR1cm4gc2V0VGV4
dCh0ZXh0LCBlYyk7IH0KIAogICAgIGJvb2wgcG9wdWxhdGVBbGxQcm9wZXJ0aWVzKFZlY3RvcjxJ
bnNwZWN0b3JTdHlsZVByb3BlcnR5PiogcmVzdWx0KSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPFR5
cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBzdHlsZVdpdGhQcm9wZXJ0aWVzKCkgY29uc3Q7Cisg
ICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBzdHls
ZVdpdGhQcm9wZXJ0aWVzKCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxDU1NSdWxlU291cmNlRGF0
YT4gZXh0cmFjdFNvdXJjZURhdGEoKSBjb25zdDsKICAgICBTdHJpbmcgc2hvcnRoYW5kVmFsdWUo
Y29uc3QgU3RyaW5nJiBzaG9ydGhhbmRQcm9wZXJ0eSkgY29uc3Q7CiAgICAgU3RyaW5nIHNob3J0
aGFuZFByaW9yaXR5KGNvbnN0IFN0cmluZyYgc2hvcnRoYW5kUHJvcGVydHkpIGNvbnN0OwpAQCAt
MTgyLDcgKzE4MSw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPENT
U1N0eWxlRGVjbGFyYXRpb24qLCBSZWZQdHI8SW5zcGVjdG9yU3R5bGU+PiBJbnNwZWN0b3JTdHls
ZU1hcDsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JTdHlsZVNoZWV0PiBjcmVhdGUo
SW5zcGVjdG9yUGFnZUFnZW50KiwgY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxDU1NTdHls
ZVNoZWV0PiBwYWdlU3R5bGVTaGVldCwgVHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdp
bjo6RW51bSwgY29uc3QgU3RyaW5nJiBkb2N1bWVudFVSTCwgTGlzdGVuZXIqKTsKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JTdHlsZVNoZWV0PiBjcmVhdGUoSW5zcGVjdG9yUGFnZUFn
ZW50KiwgY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBwYWdlU3R5
bGVTaGVldCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpF
bnVtLCBjb25zdCBTdHJpbmcmIGRvY3VtZW50VVJMLCBMaXN0ZW5lciopOwogICAgIHN0YXRpYyBT
dHJpbmcgc3R5bGVTaGVldFVSTChDU1NTdHlsZVNoZWV0KiBwYWdlU3R5bGVTaGVldCk7CiAKICAg
ICB2aXJ0dWFsIH5JbnNwZWN0b3JTdHlsZVNoZWV0KCk7CkBAIC0xOTcsMTAgKzE5NiwxMCBAQCBw
dWJsaWM6CiAgICAgQ1NTU3R5bGVSdWxlKiBhZGRSdWxlKGNvbnN0IFN0cmluZyYgc2VsZWN0b3Is
IEV4Y2VwdGlvbkNvZGUmKTsKICAgICBib29sIGRlbGV0ZVJ1bGUoY29uc3QgSW5zcGVjdG9yQ1NT
SWQmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgQ1NTU3R5bGVSdWxlKiBydWxlRm9ySWQoY29uc3Qg
SW5zcGVjdG9yQ1NTSWQmKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6
OkNTU1N0eWxlU2hlZXRCb2R5PiBidWlsZE9iamVjdEZvclN0eWxlU2hlZXQoKTsKLSAgICBQYXNz
UmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+IGJ1aWxkT2JqZWN0
Rm9yU3R5bGVTaGVldEluZm8oKTsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNT
U1J1bGU+IGJ1aWxkT2JqZWN0Rm9yUnVsZShDU1NTdHlsZVJ1bGUqKTsKLSAgICBQYXNzUmVmUHRy
PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBidWlsZE9iamVjdEZvclN0eWxlKENTU1N0eWxl
RGVjbGFyYXRpb24qKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTU3R5bGVTaGVldEJvZHk+IGJ1aWxkT2JqZWN0Rm9yU3R5bGVTaGVldCgpOworICAgIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVy
PiBidWlsZE9iamVjdEZvclN0eWxlU2hlZXRJbmZvKCk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9yUnVsZShDU1NTdHls
ZVJ1bGUqKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
U3R5bGU+IGJ1aWxkT2JqZWN0Rm9yU3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiopOwogICAgIGJv
b2wgc2V0U3R5bGVUZXh0KGNvbnN0IEluc3BlY3RvckNTU0lkJiwgY29uc3QgU3RyaW5nJiB0ZXh0
LCBTdHJpbmcqIG9sZFRleHQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBib29sIHNldFByb3BlcnR5
VGV4dChjb25zdCBJbnNwZWN0b3JDU1NJZCYsIHVuc2lnbmVkIHByb3BlcnR5SW5kZXgsIGNvbnN0
IFN0cmluZyYgdGV4dCwgYm9vbCBvdmVyd3JpdGUsIFN0cmluZyogb2xkUHJvcGVydHlUZXh0LCBF
eGNlcHRpb25Db2RlJik7CiAgICAgYm9vbCB0b2dnbGVQcm9wZXJ0eShjb25zdCBJbnNwZWN0b3JD
U1NJZCYsIHVuc2lnbmVkIHByb3BlcnR5SW5kZXgsIGJvb2wgZGlzYWJsZSwgRXhjZXB0aW9uQ29k
ZSYpOwpAQCAtMjEzLDkgKzIxMiw5IEBAIHB1YmxpYzoKICAgICBJbnNwZWN0b3JDU1NJZCBzdHls
ZUlkKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKSBjb25zdCB7IHJldHVybiBydWxlT3JTdHls
ZUlkKHN0eWxlKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgSW5zcGVjdG9yU3R5bGVTaGVldChJbnNw
ZWN0b3JQYWdlQWdlbnQqLCBjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPENTU1N0eWxlU2hl
ZXQ+IHBhZ2VTdHlsZVNoZWV0LCBUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpF
bnVtLCBjb25zdCBTdHJpbmcmIGRvY3VtZW50VVJMLCBMaXN0ZW5lciopOworICAgIEluc3BlY3Rv
clN0eWxlU2hlZXQoSW5zcGVjdG9yUGFnZUFnZW50KiwgY29uc3QgU3RyaW5nJiBpZCwgUGFzc1Jl
ZlB0cjxDU1NTdHlsZVNoZWV0PiBwYWdlU3R5bGVTaGVldCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpFbnVtLCBjb25zdCBTdHJpbmcmIGRvY3VtZW50VVJM
LCBMaXN0ZW5lciopOwogCi0gICAgYm9vbCBjYW5CaW5kKCkgY29uc3QgeyByZXR1cm4gbV9vcmln
aW4gIT0gVHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6VXNlckFnZW50ICYmIG1f
b3JpZ2luICE9IFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlVzZXI7IH0KKyAg
ICBib29sIGNhbkJpbmQoKSBjb25zdCB7IHJldHVybiBtX29yaWdpbiAhPSBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlVzZXJBZ2VudCAmJiBtX29yaWdpbiAh
PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlVzZXI7IH0K
ICAgICBJbnNwZWN0b3JDU1NJZCBydWxlT3JTdHlsZUlkKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0
eWxlKSBjb25zdDsKICAgICB2aXJ0dWFsIERvY3VtZW50KiBvd25lckRvY3VtZW50KCkgY29uc3Q7
CiAgICAgdmlydHVhbCBSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IHJ1bGVTb3VyY2VEYXRhRm9y
KENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKSBjb25zdDsKQEAgLTI0MywxMyArMjQyLDEzIEBA
IHByaXZhdGU6CiAgICAgYm9vbCBvcmlnaW5hbFN0eWxlU2hlZXRUZXh0KFN0cmluZyogcmVzdWx0
KSBjb25zdDsKICAgICBib29sIHJlc291cmNlU3R5bGVTaGVldFRleHQoU3RyaW5nKiByZXN1bHQp
IGNvbnN0OwogICAgIGJvb2wgaW5saW5lU3R5bGVTaGVldFRleHQoU3RyaW5nKiByZXN1bHQpIGNv
bnN0OwotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6
OkNTU1J1bGU+PiBidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3QqKTsKLSAgICBQYXNz
UmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yTGlzdD4gYnVpbGRPYmplY3RGb3JTZWxl
Y3Rvckxpc3QoQ1NTU3R5bGVSdWxlKik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+PiBidWls
ZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3QqKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JMaXN0PiBidWlsZE9iamVjdEZvclNlbGVjdG9y
TGlzdChDU1NTdHlsZVJ1bGUqKTsKIAogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdl
bnQ7CiAgICAgU3RyaW5nIG1faWQ7CiAgICAgUmVmUHRyPENTU1N0eWxlU2hlZXQ+IG1fcGFnZVN0
eWxlU2hlZXQ7Ci0gICAgVHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6RW51bSBt
X29yaWdpbjsKKyAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmln
aW46OkVudW0gbV9vcmlnaW47CiAgICAgU3RyaW5nIG1fZG9jdW1lbnRVUkw7CiAgICAgYm9vbCBt
X2lzUmV2YWxpZGF0aW5nOwogICAgIFBhcnNlZFN0eWxlU2hlZXQqIG1fcGFyc2VkU3R5bGVTaGVl
dDsKQEAgLTI2MCwxNCArMjU5LDE0IEBAIHByaXZhdGU6CiAKIGNsYXNzIEluc3BlY3RvclN0eWxl
U2hlZXRGb3JJbmxpbmVTdHlsZSA6IHB1YmxpYyBJbnNwZWN0b3JTdHlsZVNoZWV0IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5
bGU+IGNyZWF0ZShJbnNwZWN0b3JQYWdlQWdlbnQqLCBjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVm
UHRyPEVsZW1lbnQ+LCBUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpFbnVtLCBM
aXN0ZW5lciopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvclN0eWxlU2hlZXRGb3JJ
bmxpbmVTdHlsZT4gY3JlYXRlKEluc3BlY3RvclBhZ2VBZ2VudCosIGNvbnN0IFN0cmluZyYgaWQs
IFBhc3NSZWZQdHI8RWxlbWVudD4sIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVT
aGVldE9yaWdpbjo6RW51bSwgTGlzdGVuZXIqKTsKIAogICAgIHZvaWQgZGlkTW9kaWZ5RWxlbWVu
dEF0dHJpYnV0ZSgpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRUZXh0KFN0cmluZyogcmVzdWx0KSBj
b25zdDsKICAgICB2aXJ0dWFsIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlRm9ySWQoY29uc3Qg
SW5zcGVjdG9yQ1NTSWQmIGlkKSBjb25zdCB7IEFTU0VSVF9VTlVTRUQoaWQsICFpZC5vcmRpbmFs
KCkpOyByZXR1cm4gaW5saW5lU3R5bGUoKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgSW5zcGVjdG9y
U3R5bGVTaGVldEZvcklubGluZVN0eWxlKEluc3BlY3RvclBhZ2VBZ2VudCosIGNvbnN0IFN0cmlu
ZyYgaWQsIFBhc3NSZWZQdHI8RWxlbWVudD4sIFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRP
cmlnaW46OkVudW0sIExpc3RlbmVyKik7CisgICAgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGlu
ZVN0eWxlKEluc3BlY3RvclBhZ2VBZ2VudCosIGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8
RWxlbWVudD4sIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6
RW51bSwgTGlzdGVuZXIqKTsKIAogICAgIHZpcnR1YWwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQo
KSBjb25zdDsKICAgICB2aXJ0dWFsIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gcnVsZVNvdXJj
ZURhdGFGb3IoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpIGNvbnN0IHsgQVNTRVJUX1VOVVNF
RChzdHlsZSwgc3R5bGUgPT0gaW5saW5lU3R5bGUoKSk7IHJldHVybiBtX3J1bGVTb3VyY2VEYXRh
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVU
ZXh0RWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVRl
eHRFZGl0b3IuY3BwCmluZGV4IGI2ZWM0ZGIuLmYzMDk5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuY3BwCkBAIC0zMiw2
ICszMiw4IEBACiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvclN0eWxlU2hlZXQuaCIKIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBJbnNwZWN0b3JTdHlsZVRleHRFZGl0b3I6Okluc3BlY3RvclN0eWxl
VGV4dEVkaXRvcihWZWN0b3I8SW5zcGVjdG9yU3R5bGVQcm9wZXJ0eT4qIGFsbFByb3BlcnRpZXMs
IFZlY3RvcjxJbnNwZWN0b3JTdHlsZVByb3BlcnR5PiogZGlzYWJsZWRQcm9wZXJ0aWVzLCBjb25z
dCBTdHJpbmcmIHN0eWxlVGV4dCwgY29uc3QgTmV3TGluZUFuZFdoaXRlc3BhY2UmIGZvcm1hdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50
LmNwcAppbmRleCA0Yzg4YjFiLi4yNDcyZWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCkBAIC01NCw2ICs1NCw4IEBACiAj
aW5jbHVkZSAiVGltZWxpbmVSZWNvcmRGYWN0b3J5LmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdm9pZCBUaW1lbGluZVRpbWVDb252ZXJ0ZXI6OnJlc2V0KCkKQEAgLTY1LDcgKzY3LDcg
QEAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6fkluc3BlY3RvclRpbWVsaW5lQWdlbnQoKQogewog
fQogCi12b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JUaW1l
bGluZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JUaW1lbGluZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJv
bnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yVGltZWxp
bmVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKQEAg
LTQyMiw5OSArNDI0LDk5IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6YWRkUmVjb3Jk
VG9UaW1lbGluZShQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVjCiAgICAgaW5uZXJBZGRS
ZWNvcmRUb1RpbWVsaW5lKHJlY29yZCwgdHlwZSk7CiB9CiAKLXN0YXRpYyBUeXBlQnVpbGRlcjo6
VGltZWxpbmU6OkV2ZW50VHlwZTo6RW51bSB0b1Byb3RvY29sKFRpbWVsaW5lUmVjb3JkVHlwZSB0
eXBlKQorc3RhdGljIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6
OkVudW0gdG9Qcm90b2NvbChUaW1lbGluZVJlY29yZFR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2gg
KHR5cGUpIHsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6RXZlbnREaXNwYXRjaDoKLSAg
ICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpFdmVudERpc3Bh
dGNoOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2
ZW50VHlwZTo6RXZlbnREaXNwYXRjaDsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6QmVn
aW5GcmFtZToKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBl
OjpCZWdpbkZyYW1lOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGlt
ZWxpbmU6OkV2ZW50VHlwZTo6QmVnaW5GcmFtZTsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlw
ZTo6U2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb246Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRl
cjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6U2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb247CisgICAg
ICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpT
Y2hlZHVsZVN0eWxlUmVjYWxjdWxhdGlvbjsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6
UmVjYWxjdWxhdGVTdHlsZXM6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6
OkV2ZW50VHlwZTo6UmVjYWxjdWxhdGVTdHlsZXM7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpSZWNhbGN1bGF0ZVN0eWxlczsKICAg
ICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6SW52YWxpZGF0ZUxheW91dDoKLSAgICAgICAgcmV0
dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpJbnZhbGlkYXRlTGF5b3V0Owor
ICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlw
ZTo6SW52YWxpZGF0ZUxheW91dDsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6TGF5b3V0
OgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OkxheW91
dDsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVu
dFR5cGU6OkxheW91dDsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6UGFpbnQ6Ci0gICAg
ICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6UGFpbnQ7CisgICAg
ICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpQ
YWludDsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6U2Nyb2xsTGF5ZXI6Ci0gICAgICAg
IHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6U2Nyb2xsTGF5ZXI7Cisg
ICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBl
OjpTY3JvbGxMYXllcjsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6UmVzaXplSW1hZ2U6
Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6UmVzaXpl
SW1hZ2U7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6
RXZlbnRUeXBlOjpSZXNpemVJbWFnZTsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6Q29t
cG9zaXRlTGF5ZXJzOgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVu
dFR5cGU6OkNvbXBvc2l0ZUxheWVyczsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OkNvbXBvc2l0ZUxheWVyczsKIAogICAgIGNhc2Ug
VGltZWxpbmVSZWNvcmRUeXBlOjpQYXJzZUhUTUw6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRl
cjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6UGFyc2VIVE1MOworICAgICAgICByZXR1cm4gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6UGFyc2VIVE1MOwogCiAgICAg
Y2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlRpbWVySW5zdGFsbDoKLSAgICAgICAgcmV0dXJuIFR5
cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpUaW1lckluc3RhbGw7CisgICAgICAgIHJl
dHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpUaW1lcklu
c3RhbGw7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlRpbWVyUmVtb3ZlOgotICAgICAg
ICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlRpbWVyUmVtb3ZlOwor
ICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlw
ZTo6VGltZXJSZW1vdmU7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlRpbWVyRmlyZToK
LSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpUaW1lckZp
cmU7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZl
bnRUeXBlOjpUaW1lckZpcmU7CiAKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6RXZhbHVh
dGVTY3JpcHQ6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlw
ZTo6RXZhbHVhdGVTY3JpcHQ7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpUaW1lbGluZTo6RXZlbnRUeXBlOjpFdmFsdWF0ZVNjcmlwdDsKIAogICAgIGNhc2UgVGltZWxp
bmVSZWNvcmRUeXBlOjpNYXJrTG9hZDoKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1l
bGluZTo6RXZlbnRUeXBlOjpNYXJrTG9hZDsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6Ok1hcmtMb2FkOwogICAgIGNhc2UgVGltZWxp
bmVSZWNvcmRUeXBlOjpNYXJrRE9NQ29udGVudDoKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVy
OjpUaW1lbGluZTo6RXZlbnRUeXBlOjpNYXJrRE9NQ29udGVudDsKKyAgICAgICAgcmV0dXJuIElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6Ok1hcmtET01Db250ZW50
OwogCiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlRpbWVTdGFtcDoKLSAgICAgICAgcmV0
dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpUaW1lU3RhbXA7CisgICAgICAg
IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpUaW1l
U3RhbXA7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlRpbWU6Ci0gICAgICAgIHJldHVy
biBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6VGltZTsKKyAgICAgICAgcmV0dXJu
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlRpbWU7CiAgICAg
Y2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlRpbWVFbmQ6Ci0gICAgICAgIHJldHVybiBUeXBlQnVp
bGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6VGltZUVuZDsKKyAgICAgICAgcmV0dXJuIEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlRpbWVFbmQ7CiAKICAgICBj
YXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6U2NoZWR1bGVSZXNvdXJjZVJlcXVlc3Q6Ci0gICAgICAg
IHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6U2NoZWR1bGVSZXNvdXJj
ZVJlcXVlc3Q7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGlu
ZTo6RXZlbnRUeXBlOjpTY2hlZHVsZVJlc291cmNlUmVxdWVzdDsKICAgICBjYXNlIFRpbWVsaW5l
UmVjb3JkVHlwZTo6UmVzb3VyY2VTZW5kUmVxdWVzdDoKLSAgICAgICAgcmV0dXJuIFR5cGVCdWls
ZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpSZXNvdXJjZVNlbmRSZXF1ZXN0OworICAgICAgICBy
ZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6UmVzb3Vy
Y2VTZW5kUmVxdWVzdDsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6UmVzb3VyY2VSZWNl
aXZlUmVzcG9uc2U6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50
VHlwZTo6UmVzb3VyY2VSZWNlaXZlUmVzcG9uc2U7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpSZXNvdXJjZVJlY2VpdmVSZXNwb25z
ZTsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6UmVzb3VyY2VSZWNlaXZlZERhdGE6Ci0g
ICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6UmVzb3VyY2VS
ZWNlaXZlZERhdGE7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1l
bGluZTo6RXZlbnRUeXBlOjpSZXNvdXJjZVJlY2VpdmVkRGF0YTsKICAgICBjYXNlIFRpbWVsaW5l
UmVjb3JkVHlwZTo6UmVzb3VyY2VGaW5pc2g6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6
VGltZWxpbmU6OkV2ZW50VHlwZTo6UmVzb3VyY2VGaW5pc2g7CisgICAgICAgIHJldHVybiBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpSZXNvdXJjZUZpbmlzaDsK
IAogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpYSFJSZWFkeVN0YXRlQ2hhbmdlOgotICAg
ICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlhIUlJlYWR5U3Rh
dGVDaGFuZ2U7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGlu
ZTo6RXZlbnRUeXBlOjpYSFJSZWFkeVN0YXRlQ2hhbmdlOwogICAgIGNhc2UgVGltZWxpbmVSZWNv
cmRUeXBlOjpYSFJMb2FkOgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpF
dmVudFR5cGU6OlhIUkxvYWQ7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpUaW1lbGluZTo6RXZlbnRUeXBlOjpYSFJMb2FkOwogCiAgICAgY2FzZSBUaW1lbGluZVJlY29y
ZFR5cGU6OkZ1bmN0aW9uQ2FsbDoKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGlu
ZTo6RXZlbnRUeXBlOjpGdW5jdGlvbkNhbGw7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpGdW5jdGlvbkNhbGw7CiAKICAgICBjYXNl
IFRpbWVsaW5lUmVjb3JkVHlwZTo6UmVxdWVzdEFuaW1hdGlvbkZyYW1lOgotICAgICAgICByZXR1
cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlJlcXVlc3RBbmltYXRpb25GcmFt
ZTsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVu
dFR5cGU6OlJlcXVlc3RBbmltYXRpb25GcmFtZTsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlw
ZTo6Q2FuY2VsQW5pbWF0aW9uRnJhbWU6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGlt
ZWxpbmU6OkV2ZW50VHlwZTo6Q2FuY2VsQW5pbWF0aW9uRnJhbWU7CisgICAgICAgIHJldHVybiBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpDYW5jZWxBbmltYXRp
b25GcmFtZTsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6RmlyZUFuaW1hdGlvbkZyYW1l
OgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OkZpcmVB
bmltYXRpb25GcmFtZTsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRp
bWVsaW5lOjpFdmVudFR5cGU6OkZpcmVBbmltYXRpb25GcmFtZTsKIAogICAgIGNhc2UgVGltZWxp
bmVSZWNvcmRUeXBlOjpXZWJTb2NrZXRDcmVhdGU6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRl
cjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6V2ViU29ja2V0Q3JlYXRlOworICAgICAgICByZXR1cm4g
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6V2ViU29ja2V0Q3Jl
YXRlOwogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpXZWJTb2NrZXRTZW5kSGFuZHNoYWtl
UmVxdWVzdDoKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBl
OjpXZWJTb2NrZXRTZW5kSGFuZHNoYWtlUmVxdWVzdDsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OldlYlNvY2tldFNlbmRIYW5kc2hh
a2VSZXF1ZXN0OwogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpXZWJTb2NrZXRSZWNlaXZl
SGFuZHNoYWtlUmVzcG9uc2U6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6
OkV2ZW50VHlwZTo6V2ViU29ja2V0UmVjZWl2ZUhhbmRzaGFrZVJlc3BvbnNlOworICAgICAgICBy
ZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6V2ViU29j
a2V0UmVjZWl2ZUhhbmRzaGFrZVJlc3BvbnNlOwogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBl
OjpXZWJTb2NrZXREZXN0cm95OgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5l
OjpFdmVudFR5cGU6OldlYlNvY2tldERlc3Ryb3k7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpXZWJTb2NrZXREZXN0cm95OwogICAg
IH0KIAotICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6VGltZVN0
YW1wOworICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRU
eXBlOjpUaW1lU3RhbXA7CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW5uZXJB
ZGRSZWNvcmRUb1RpbWVsaW5lKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBwcnBSZWNvcmQs
IFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBlKQogewotICAgIHBycFJlY29yZC0+c2V0U3RyaW5nKCJ0
eXBlIiwgVHlwZUJ1aWxkZXI6OmdldEVudW1Db25zdGFudFZhbHVlKHRvUHJvdG9jb2wodHlwZSkp
KTsKKyAgICBwcnBSZWNvcmQtPnNldFN0cmluZygidHlwZSIsIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OmdldEVudW1Db25zdGFudFZhbHVlKHRvUHJvdG9jb2wodHlwZSkpKTsKIAotICAgIFJlZlB0
cjxUeXBlQnVpbGRlcjo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ+IHJlY29yZCA9IFR5cGVCdWls
ZGVyOjpUaW1lbGluZTo6VGltZWxpbmVFdmVudDo6cnVudGltZUNhc3QocHJwUmVjb3JkKTsKKyAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ+
IHJlY29yZCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50
OjpydW50aW1lQ2FzdChwcnBSZWNvcmQpOwogCiAgICAgc2V0RE9NQ291bnRlcnMocmVjb3JkLmdl
dCgpKTsKIApAQCAtNTMxLDcgKzUzMyw3IEBAIHN0YXRpYyBzaXplX3QgdXNlZEhlYXBTaXplKCkK
ICAgICByZXR1cm4gSlNET01XaW5kb3c6OmNvbW1vblZNKCktPmhlYXAuc2l6ZSgpOwogfQogCi12
b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnNldERPTUNvdW50ZXJzKFR5cGVCdWlsZGVyOjpU
aW1lbGluZTo6VGltZWxpbmVFdmVudCogcmVjb3JkKQordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50OjpzZXRET01Db3VudGVycyhJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6VGlt
ZWxpbmVFdmVudCogcmVjb3JkKQogewogICAgIHJlY29yZC0+c2V0VXNlZEhlYXBTaXplKHVzZWRI
ZWFwU2l6ZSgpKTsKIApAQCAtNTQzLDcgKzU0NSw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6c2V0RE9NQ291bnRlcnMoVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50
CiAgICAgICAgICAgICBub2RlQ291bnQgPSBJbnNwZWN0b3JDb3VudGVyczo6Y291bnRlclZhbHVl
KEluc3BlY3RvckNvdW50ZXJzOjpOb2RlQ291bnRlcik7CiAgICAgICAgIH0KICAgICAgICAgaW50
IGxpc3RlbmVyQ291bnQgPSBUaHJlYWRMb2NhbEluc3BlY3RvckNvdW50ZXJzOjpjdXJyZW50KCku
Y291bnRlclZhbHVlKFRocmVhZExvY2FsSW5zcGVjdG9yQ291bnRlcnM6OkpTRXZlbnRMaXN0ZW5l
ckNvdW50ZXIpOwotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpET01Db3Vu
dGVycz4gY291bnRlcnMgPSBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkRPTUNvdW50ZXJzOjpjcmVh
dGUoKQorICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkRP
TUNvdW50ZXJzPiBjb3VudGVycyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpE
T01Db3VudGVyczo6Y3JlYXRlKCkKICAgICAgICAgICAgIC5zZXREb2N1bWVudHMoZG9jdW1lbnRD
b3VudCkKICAgICAgICAgICAgIC5zZXROb2Rlcyhub2RlQ291bnQpCiAgICAgICAgICAgICAuc2V0
SnNFdmVudExpc3RlbmVycyhsaXN0ZW5lckNvdW50KTsKQEAgLTU4MCw3ICs1ODIsNyBAQCB2b2lk
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZENvbXBsZXRlQ3VycmVudFJlY29yZChUaW1lbGlu
ZVJlY29yZFR5cGUgdHlwZSkKIH0KIAogSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6SW5zcGVjdG9y
VGltZWxpbmVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJ
bnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5zcGVjdG9yTWVtb3J5QWdlbnQqIG1lbW9y
eUFnZW50LCBJbnNwZWN0b3JUeXBlIHR5cGUsIEluc3BlY3RvckNsaWVudCogY2xpZW50KQotICAg
IDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiVGltZWxpbmUiKSwgaW5zdHJ1bWVu
dGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIlRpbWVs
aW5lIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQp
CiAgICAgLCBtX21lbW9yeUFnZW50KG1lbW9yeUFnZW50KQogICAgICwgbV9pZCgxKQpAQCAtNjA0
LDcgKzYwNiw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6YXBwZW5kUmVjb3JkKFBh
c3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhLCBUaW1lCiB2b2lkIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OnNlbmRFdmVudChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZXZlbnQpCiB7
CiAgICAgLy8gRklYTUU6IHJ1bnRpbWVDYXN0IGlzIGEgaGFjay4gV2UgZG8gaXQgYmVjYXVzZSB3
ZSBjYW4ndCBidWlsZCBUaW1lbGluZUV2ZW50IGRpcmVjdGx5IG5vdy4KLSAgICBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50PiByZWNvcmRDaGVja2VkID0gVHlwZUJ1
aWxkZXI6OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50OjpydW50aW1lQ2FzdChldmVudCk7CisgICAg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50PiBy
ZWNvcmRDaGVja2VkID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OlRpbWVsaW5l
RXZlbnQ6OnJ1bnRpbWVDYXN0KGV2ZW50KTsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZXZl
bnRSZWNvcmRlZChyZWNvcmRDaGVja2VkLnJlbGVhc2UoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCmluZGV4IDQ1ZGMyZjMu
LjA1YjhlMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JU
aW1lbGluZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRp
bWVsaW5lQWdlbnQuaApAQCAtMzMsMTAgKzMzLDExIEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKLSNp
bmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJh
c2UuaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3Bl
Y3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC0xMjEsNyArMTIyLDcgQEAg
cHJpdmF0ZToKIH07CiAKIGNsYXNzIEluc3BlY3RvclRpbWVsaW5lQWdlbnQKLSAgICA6IHB1Ymxp
YyBJbnNwZWN0b3JCYXNlQWdlbnQKKyAgICA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UKICAg
ICAsIHB1YmxpYyBJbnNwZWN0b3JUaW1lbGluZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCk7CiBwdWJsaWM6
CkBAIC0xMzQsNyArMTM1LDcgQEAgcHVibGljOgogCiAgICAgfkluc3BlY3RvclRpbWVsaW5lQWdl
bnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KEVy
cm9yU3RyaW5nKiwgY29uc3QgaW50KiBtYXhDYWxsU3RhY2tEZXB0aCwgY29uc3QgYm9vbCogaW5j
bHVkZURvbUNvdW50ZXJzKTsKQEAgLTIyMCwzMyArMjIxLDMzIEBAIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIFRpbWVsaW5lUmVjb3JkU3RhY2s7CiAKICAgICBzdHJ1Y3QgVGltZWxpbmVSZWNv
cmRFbnRyeSB7Ci0gICAgICAgIFRpbWVsaW5lUmVjb3JkRW50cnkoUGFzc1JlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IHJlY29yZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEsIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGNoaWxkcmVuLCBUaW1lbGluZVJlY29yZFR5cGUgdHlwZSwg
c2l6ZV90IHVzZWRIZWFwU2l6ZUF0U3RhcnQpCisgICAgICAgIFRpbWVsaW5lUmVjb3JkRW50cnko
UGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gcmVjb3JkLCBQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBkYXRhLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yQXJyYXk+IGNoaWxkcmVuLCBUaW1lbGluZVJlY29yZFR5cGUgdHlwZSwgc2l6ZV90
IHVzZWRIZWFwU2l6ZUF0U3RhcnQpCiAgICAgICAgICAgICA6IHJlY29yZChyZWNvcmQpLCBkYXRh
KGRhdGEpLCBjaGlsZHJlbihjaGlsZHJlbiksIHR5cGUodHlwZSksIHVzZWRIZWFwU2l6ZUF0U3Rh
cnQodXNlZEhlYXBTaXplQXRTdGFydCkKICAgICAgICAgewogICAgICAgICB9Ci0gICAgICAgIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlY29yZDsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gZGF0YTsKLSAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBjaGlsZHJlbjsKKyAg
ICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQ7CisgICAgICAg
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gZGF0YTsKKyAgICAgICAgUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+IGNoaWxkcmVuOwogICAgICAgICBUaW1lbGluZVJl
Y29yZFR5cGUgdHlwZTsKICAgICAgICAgc2l6ZV90IHVzZWRIZWFwU2l6ZUF0U3RhcnQ7CiAgICAg
fTsKIAogICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIElu
c3BlY3RvclBhZ2VBZ2VudCosIEluc3BlY3Rvck1lbW9yeUFnZW50KiwgSW5zcGVjdG9yVHlwZSwg
SW5zcGVjdG9yQ2xpZW50Kik7CiAKLSAgICB2b2lkIHNlbmRFdmVudChQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4pOwotICAgIHZvaWQgYXBwZW5kUmVjb3JkKFBhc3NSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBkYXRhLCBUaW1lbGluZVJlY29yZFR5cGUsIGJvb2wgY2FwdHVyZUNhbGxTdGFjaywg
RnJhbWUqKTsKLSAgICB2b2lkIHB1c2hDdXJyZW50UmVjb3JkKFBhc3NSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiwgVGltZWxpbmVSZWNvcmRUeXBlLCBib29sIGNhcHR1cmVDYWxsU3RhY2ssIEZyYW1l
Kik7CisgICAgdm9pZCBzZW5kRXZlbnQoUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdD4pOworICAgIHZvaWQgYXBwZW5kUmVjb3JkKFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+IGRhdGEsIFRpbWVsaW5lUmVjb3JkVHlwZSwgYm9vbCBjYXB0dXJlQ2FsbFN0
YWNrLCBGcmFtZSopOworICAgIHZvaWQgcHVzaEN1cnJlbnRSZWNvcmQoUGFzc1JlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdD4sIFRpbWVsaW5lUmVjb3JkVHlwZSwgYm9vbCBjYXB0dXJl
Q2FsbFN0YWNrLCBGcmFtZSopOwogCi0gICAgdm9pZCBzZXRET01Db3VudGVycyhUeXBlQnVpbGRl
cjo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQqIHJlY29yZCk7Ci0gICAgdm9pZCBzZXRGcmFtZUlk
ZW50aWZpZXIoSW5zcGVjdG9yT2JqZWN0KiByZWNvcmQsIEZyYW1lKik7CisgICAgdm9pZCBzZXRE
T01Db3VudGVycyhJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6VGltZWxpbmVFdmVu
dCogcmVjb3JkKTsKKyAgICB2b2lkIHNldEZyYW1lSWRlbnRpZmllcihJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdCogcmVjb3JkLCBGcmFtZSopOwogCiAgICAgdm9pZCBkaWRDb21wbGV0ZUN1cnJl
bnRSZWNvcmQoVGltZWxpbmVSZWNvcmRUeXBlKTsKIAotICAgIHZvaWQgc2V0SGVhcFNpemVTdGF0
aXN0aWNzKEluc3BlY3Rvck9iamVjdCogcmVjb3JkKTsKKyAgICB2b2lkIHNldEhlYXBTaXplU3Rh
dGlzdGljcyhJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogcmVjb3JkKTsKICAgICB2b2lkIGNv
bW1pdEZyYW1lUmVjb3JkKCk7CiAKLSAgICB2b2lkIGFkZFJlY29yZFRvVGltZWxpbmUoUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+LCBUaW1lbGluZVJlY29yZFR5cGUpOwotICAgIHZvaWQgaW5u
ZXJBZGRSZWNvcmRUb1RpbWVsaW5lKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiwgVGltZWxp
bmVSZWNvcmRUeXBlKTsKKyAgICB2b2lkIGFkZFJlY29yZFRvVGltZWxpbmUoUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4sIFRpbWVsaW5lUmVjb3JkVHlwZSk7CisgICAgdm9p
ZCBpbm5lckFkZFJlY29yZFRvVGltZWxpbmUoUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4sIFRpbWVsaW5lUmVjb3JkVHlwZSk7CiAgICAgdm9pZCBjbGVhclJlY29yZFN0YWNr
KCk7CiAKICAgICB2b2lkIGxvY2FsVG9QYWdlUXVhZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25z
dCBMYXlvdXRSZWN0JiwgRmxvYXRRdWFkKik7CkBAIC0yNjYsNyArMjY3LDcgQEAgcHJpdmF0ZToK
IAogICAgIGludCBtX2lkOwogICAgIGludCBtX21heENhbGxTdGFja0RlcHRoOwotICAgIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IG1fcGVuZGluZ0ZyYW1lUmVjb3JkOworICAgIFJlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gbV9wZW5kaW5nRnJhbWVSZWNvcmQ7CiAgICAgSW5zcGVj
dG9yVHlwZSBtX2luc3BlY3RvclR5cGU7CiAgICAgSW5zcGVjdG9yQ2xpZW50KiBtX2NsaWVudDsK
ICAgICBXZWFrUHRyRmFjdG9yeTxJbnNwZWN0b3JUaW1lbGluZUFnZW50PiBtX3dlYWtGYWN0b3J5
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVn
aXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXZWJBZ2VudEJhc2Uu
aApzaW1pbGFyaXR5IGluZGV4IDY5JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgKaW5kZXggNGZkMDM1My4uZGZjYzRhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI0LDI5ICsyNCwyOCBAQAogICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEluc3BlY3RvckFnZW50UmVnaXN0cnlfaAotI2Rl
ZmluZSBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5X2gKKyNpZm5kZWYgSW5zcGVjdG9yV2ViQWdlbnRC
YXNlX2gKKyNkZWZpbmUgSW5zcGVjdG9yV2ViQWdlbnRCYXNlX2gKIAotI2luY2x1ZGUgIkluc3Bl
Y3RvckJhc2VBZ2VudC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgIkluc3BlY3RvckZvcndhcmRpbmcuaCIKKyNpbmNsdWRl
IDxpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI7CitjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogCi1jbGFzcyBJbnNwZWN0
b3JBZ2VudFJlZ2lzdHJ5IHsKLXB1YmxpYzoKLSAgICB2b2lkIGFwcGVuZChQYXNzT3duUHRyPElu
c3BlY3RvckJhc2VBZ2VudD4pOworY2xhc3MgSW5zcGVjdG9yQWdlbnRCYXNlIDogcHVibGljIElu
c3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnRCYXNlIHsKK3Byb3RlY3RlZDoKKyAgICBJbnNwZWN0b3JB
Z2VudEJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzKQorICAgICAgICA6IEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnRCYXNlKG5h
bWUpCisgICAgICAgICwgbV9pbnN0cnVtZW50aW5nQWdlbnRzKGluc3RydW1lbnRpbmdBZ2VudHMp
CisgICAgeworICAgIH0KIAotICAgIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKik7Ci0g
ICAgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpOwotICAgIHZvaWQgZGlzY2Fy
ZEFnZW50cygpOwotCi1wcml2YXRlOgotICAgIFZlY3RvcjxPd25QdHI8SW5zcGVjdG9yQmFzZUFn
ZW50Pj4gbV9hZ2VudHM7CisgICAgSW5zdHJ1bWVudGluZ0FnZW50cyogbV9pbnN0cnVtZW50aW5n
QWdlbnRzOwogfTsKLQorICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8g
IWRlZmluZWQoSW5zcGVjdG9yQWdlbnRSZWdpc3RyeV9oKQorI2VuZGlmIC8vICFkZWZpbmVkKElu
c3BlY3RvcldlYkFnZW50QmFzZV9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKaW5kZXggMzI4MDFjNi4uODg0NTZjNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCkBAIC0z
NiwxMyArMzYsMTUgQEAKIAogI2luY2x1ZGUgIkluc3BlY3RvckZvcndhcmRpbmcuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgog
I2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlICJXb3JrZXJHbG9iYWxTY29wZVByb3h5LmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3Bl
Y3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEluc3BlY3RvcldvcmtlckFnZW50OjpXb3JrZXJGcm9udGVuZENoYW5u
ZWwgOiBwdWJsaWMgV29ya2VyR2xvYmFsU2NvcGVQcm94eTo6UGFnZUluc3BlY3RvciB7CkBAIC0x
MDcsNyArMTA5LDcgQEAgUGFzc093blB0cjxJbnNwZWN0b3JXb3JrZXJBZ2VudD4gSW5zcGVjdG9y
V29ya2VyQWdlbnQ6OmNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnQKIH0KIAogSW5zcGVjdG9yV29y
a2VyQWdlbnQ6Okluc3BlY3RvcldvcmtlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJX
b3JrZXIiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShB
U0NJSUxpdGVyYWwoIldvcmtlciIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9lbmFi
bGVkKGZhbHNlKQogICAgICwgbV9zaG91bGRQYXVzZURlZGljYXRlZFdvcmtlck9uU3RhcnQoZmFs
c2UpCiB7CkBAIC0xMTksNyArMTIxLDcgQEAgSW5zcGVjdG9yV29ya2VyQWdlbnQ6On5JbnNwZWN0
b3JXb3JrZXJBZ2VudCgpCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JX
b3JrZXJBZ2VudCgwKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6ZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFu
bmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lk
IEluc3BlY3RvcldvcmtlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JXb3JrZXJGcm9udGVuZERpc3Bh
dGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3Bl
Y3RvcldvcmtlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRo
aXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcldvcmtl
ckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQu
aAppbmRleCBhYjYyMjFhLi5lYTQ3NWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaApAQCAtMzEsMTIgKzMxLDE2IEBACiAjaWZuZGVmIElu
c3BlY3RvcldvcmtlckFnZW50X2gKICNkZWZpbmUgSW5zcGVjdG9yV29ya2VyQWdlbnRfaAogCi0j
aW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIGNsYXNzIEluc3BlY3Rvck9iamVj
dDsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW5zcGVjdG9yV29ya2VyRnJvbnRl
bmREaXNwYXRjaGVyOwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFVSTDsKQEAg
LTQ0LDEyICs0OCwxMiBAQCBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZVByb3h5OwogCiB0eXBlZGVm
IFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yV29ya2VyQWdlbnQgOiBwdWJs
aWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yV29ya2VyQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvcldvcmtlckFnZW50IDogcHVibGljIEluc3Bl
Y3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3RvcldvcmtlckJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yV29ya2VyQWdl
bnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKik7CiAgICAgfkluc3BlY3RvcldvcmtlckFn
ZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIC8vIENhbGxlZCBmcm9tIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbgpAQCAtNjMsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGNhbkluc3BlY3RXb3JrZXJzKEVycm9yU3RyaW5nKiwgYm9vbCopOwogICAgIHZpcnR1
YWwgdm9pZCBjb25uZWN0VG9Xb3JrZXIoRXJyb3JTdHJpbmcqLCBpbnQgd29ya2VySWQpOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0RnJvbVdvcmtlcihFcnJvclN0cmluZyosIGludCB3b3Jr
ZXJJZCk7Ci0gICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlVG9Xb3JrZXIoRXJyb3JTdHJpbmcq
LCBpbnQgd29ya2VySWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBtZXNzYWdlKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb1dvcmtlcihFcnJvclN0cmluZyosIGludCB3
b3JrZXJJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgbWVzc2Fn
ZSk7CiAgICAgdmlydHVhbCB2b2lkIHNldEF1dG9jb25uZWN0VG9Xb3JrZXJzKEVycm9yU3RyaW5n
KiwgYm9vbCB2YWx1ZSk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5jcHAKaW5kZXggOGNmYjMyOC4uNjI4ZjEyOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmNwcApAQCAt
NDAsNiArNDAsOCBAQAogI2luY2x1ZGUgIldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEluc3RydW1lbnRpbmdBZ2VudHM6Okluc3RydW1lbnRp
bmdBZ2VudHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5jcHAKaW5kZXggOTY5ZDMwZC4uNWNjYTQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC00Niw2ICs0Niw4IEBA
IHN0YXRpYyBzaXplX3QgbWF4aW11bVJlc291cmNlc0NvbnRlbnRTaXplID0gMTAwICogMTAwMCAq
IDEwMDA7CiBzdGF0aWMgc2l6ZV90IG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplID0g
MTAgKiAxMDAwICogMTAwMDsKIH0KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9QYWdlQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29u
c29sZUFnZW50LmNwcAppbmRleCBiY2Q4OWYyLi5jZWFiYmQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwCkBAIC00MCw3ICs0MCw4IEBACiAjaW5j
bHVkZSAiSW5zcGVjdG9yQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgog
I2luY2x1ZGUgIk5vZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKwordXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02Niw3ICs2Nyw3
IEBAIHZvaWQgUGFnZUNvbnNvbGVBZ2VudDo6Y2xlYXJNZXNzYWdlcyhFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcpCiBjbGFzcyBJbnNwZWN0YWJsZU5vZGUgOiBwdWJsaWMgSW5qZWN0ZWRTY3JpcHRI
b3N0OjpJbnNwZWN0YWJsZU9iamVjdCB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgSW5zcGVjdGFi
bGVOb2RlKE5vZGUqIG5vZGUpIDogbV9ub2RlKG5vZGUpIHsgfQotICAgIHZpcnR1YWwgU2NyaXB0
VmFsdWUgZ2V0KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKKyAgICB2aXJ0dWFsIERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlIGdldChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCiAgICAgewogICAgICAgICBy
ZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0Ojpub2RlQXNTY3JpcHRWYWx1ZShzdGF0ZSwgbV9ub2Rl
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVn
Z2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50
LmNwcAppbmRleCA4N2ZhYmVlLi4wNGQ0NzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHAKQEAgLTQxLDYgKzQxLDggQEAKICNpbmNsdWRlICJQ
YWdlQ29uc29sZS5oIgogI2luY2x1ZGUgIlBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oIgogCit1c2lu
ZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NPd25Q
dHI8UGFnZURlYnVnZ2VyQWdlbnQ+IFBhZ2VEZWJ1Z2dlckFnZW50OjpjcmVhdGUoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdl
QWdlbnQsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnNw
ZWN0b3JPdmVybGF5KiBvdmVybGF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURl
YnVnZ2VyQWdlbnQuaAppbmRleCA1NTg2MzExLi5hNWY4MTg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuaApAQCAtMzIsNiArMzIsNyBAQAogI2RlZmlu
ZSBQYWdlRGVidWdnZXJBZ2VudF9oCiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikg
JiYgRU5BQkxFKElOU1BFQ1RPUikKKwogI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQu
aCIKICNpbmNsdWRlICJQYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCIKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwCmluZGV4IDU3YjNiMzAuLmExYjY3Nzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKQEAg
LTQ1LDcgKzQ1LDkgQEAKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW4uaCIKIAotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6
OkV4ZWN1dGlvbkNvbnRleHREZXNjcmlwdGlvbjsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHREZXNjcmlwdGlvbjsKKwordXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02Myw3ICs2NSw3IEBA
IFBhZ2VSdW50aW1lQWdlbnQ6On5QYWdlUnVudGltZUFnZW50KCkKICAgICBtX2luc3RydW1lbnRp
bmdBZ2VudHMtPnNldFBhZ2VSdW50aW1lQWdlbnQoMCk7CiB9CiAKLXZvaWQgUGFnZVJ1bnRpbWVB
Z2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERp
c3BhdGNoZXIpCit2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVs
LCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAg
bV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclJ1bnRpbWVG
cm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0
Y2hlciA9IEluc3BlY3RvclJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmRE
aXNwYXRjaGVyLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Q
YWdlUnVudGltZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVB
Z2VudC5oCmluZGV4IGU4YjMzYjIuLmNkMDRkOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1BhZ2VSdW50aW1lQWdlbnQuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgUGFnZVJ1bnRpbWVBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRz
LCBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIHBhZ2UsIHBhZ2VBZ2VudCkpOwogICAgIH0KICAgICB2
aXJ0dWFsIH5QYWdlUnVudGltZUFnZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNw
ZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxl
KEVycm9yU3RyaW5nKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2Ny
aXB0QXJndW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVu
dHMuY3BwCmluZGV4IDg5YjlhMGIuLjM2NTdhOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwCkBAIC0zMSwxNiArMzEsMTYgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIKIAotI2luY2x1ZGUgIlNjcmlw
dFZhbHVlLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gU2NyaXB0QXJndW1lbnRz
OjpjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBWZWN0b3I8U2NyaXB0VmFsdWU+
JiBhcmd1bWVudHMpCitQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gU2NyaXB0QXJndW1lbnRz
OjpjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBWZWN0b3I8RGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWU+JiBhcmd1bWVudHMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTY3Jp
cHRBcmd1bWVudHMoc2NyaXB0U3RhdGUsIGFyZ3VtZW50cykpOwogfQogCi1TY3JpcHRBcmd1bWVu
dHM6OlNjcmlwdEFyZ3VtZW50cyhKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIFZlY3RvcjxT
Y3JpcHRWYWx1ZT4mIGFyZ3VtZW50cykKK1NjcmlwdEFyZ3VtZW50czo6U2NyaXB0QXJndW1lbnRz
KEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgVmVjdG9yPERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlPiYgYXJndW1lbnRzKQogICAgIDogbV9nbG9iYWxPYmplY3Qoc2NyaXB0U3RhdGUtPnZtKCks
IHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpCiB7CiAgICAgbV9hcmd1bWVudHMu
c3dhcChhcmd1bWVudHMpOwpAQCAtNTAsNyArNTAsNyBAQCBTY3JpcHRBcmd1bWVudHM6On5TY3Jp
cHRBcmd1bWVudHMoKQogewogfQogCi1jb25zdCBTY3JpcHRWYWx1ZSAmU2NyaXB0QXJndW1lbnRz
Ojphcmd1bWVudEF0KHNpemVfdCBpbmRleCkgY29uc3QKK2NvbnN0IERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlICZTY3JpcHRBcmd1bWVudHM6OmFyZ3VtZW50QXQoc2l6ZV90IGluZGV4KSBjb25zdAog
ewogICAgIEFTU0VSVChtX2FyZ3VtZW50cy5zaXplKCkgPiBpbmRleCk7CiAgICAgcmV0dXJuIG1f
YXJndW1lbnRzW2luZGV4XTsKQEAgLTY4LDcgKzY4LDcgQEAgYm9vbCBTY3JpcHRBcmd1bWVudHM6
OmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhTdHJpbmcmIHJlc3VsdCwgYm9vbCBjaGVja0Zvck51
bGwKICAgICBpZiAoIWFyZ3VtZW50Q291bnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVlID0gYXJndW1lbnRBdCgwKTsKKyAgICBjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUgPSBhcmd1bWVudEF0KDApOwogICAgIGlmIChj
aGVja0Zvck51bGxPclVuZGVmaW5lZCAmJiAodmFsdWUuaXNOdWxsKCkgfHwgdmFsdWUuaXNVbmRl
ZmluZWQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1NjcmlwdEFyZ3VtZW50cy5oCmluZGV4IDE3NDM5YTAuLjQ3YTk2MjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmgKQEAgLTEsMTAgKzEsMTAgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIAorICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQogICogbWV0OgotICogCisg
KgogICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKICAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKQEAgLTE0LDcgKzE0LDcgQEAKICAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKICAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCiAgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICogCisgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwogICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKICAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgpAQCAtMzcsNiArMzcsMTAgQEAKICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBEZXBy
ZWNhdGVkIHsKK2NsYXNzIFNjcmlwdFZhbHVlOworfQorCiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNz
IEV4ZWNTdGF0ZTsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwpAQCAtNDQsMTUgKzQ4LDEzIEBAIGNs
YXNzIEpTR2xvYmFsT2JqZWN0OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNjcmlw
dFZhbHVlOwotCiBjbGFzcyBTY3JpcHRBcmd1bWVudHMgOiBwdWJsaWMgUmVmQ291bnRlZDxTY3Jp
cHRBcmd1bWVudHM+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTY3JpcHRBcmd1
bWVudHM+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSosIFZlY3RvcjxTY3JpcHRWYWx1ZT4mIGFyZ3Vt
ZW50cyk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBjcmVhdGUoSlND
OjpFeGVjU3RhdGUqLCBWZWN0b3I8RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWU+JiBhcmd1bWVudHMp
OwogCiAgICAgflNjcmlwdEFyZ3VtZW50cygpOwogCi0gICAgY29uc3QgU2NyaXB0VmFsdWUmIGFy
Z3VtZW50QXQoc2l6ZV90KSBjb25zdDsKKyAgICBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYgYXJndW1lbnRBdChzaXplX3QpIGNvbnN0OwogICAgIHNpemVfdCBhcmd1bWVudENvdW50KCkg
Y29uc3QgeyByZXR1cm4gbV9hcmd1bWVudHMuc2l6ZSgpOyB9CiAKICAgICBKU0M6OkV4ZWNTdGF0
ZSogZ2xvYmFsU3RhdGUoKSBjb25zdDsKQEAgLTYxLDEwICs2MywxMCBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc0VxdWFsKFNjcmlwdEFyZ3VtZW50cyopIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFNj
cmlwdEFyZ3VtZW50cyhKU0M6OkV4ZWNTdGF0ZSosIFZlY3RvcjxTY3JpcHRWYWx1ZT4mIGFyZ3Vt
ZW50cyk7CisgICAgU2NyaXB0QXJndW1lbnRzKEpTQzo6RXhlY1N0YXRlKiwgVmVjdG9yPERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlPiYgYXJndW1lbnRzKTsKIAogICAgIEpTQzo6U3Ryb25nPEpTQzo6
SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OwotICAgIFZlY3RvcjxTY3JpcHRWYWx1ZT4g
bV9hcmd1bWVudHM7CisgICAgVmVjdG9yPERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlPiBtX2FyZ3Vt
ZW50czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHAKaW5kZXggMWFiYmQ3NS4uYWJlOWUxMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHAKQEAgLTMyLDkgKzMy
LDExIEBACiAjaW5jbHVkZSAiU2NyaXB0Q2FsbEZyYW1lLmgiCiAKICNpbmNsdWRlICJJbnNwZWN0
b3JGcm9udGVuZC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgorI2luY2x1ZGUgPGlu
c3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKK3Vz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2NyaXB0
Q2FsbEZyYW1lOjpTY3JpcHRDYWxsRnJhbWUoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNv
bnN0IFN0cmluZyYgc2NyaXB0TmFtZSwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29s
dW1uKQpAQCAtNTgsOSArNjAsOSBAQCBib29sIFNjcmlwdENhbGxGcmFtZTo6aXNFcXVhbChjb25z
dCBTY3JpcHRDYWxsRnJhbWUmIG8pIGNvbnN0CiB9CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQot
UGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q2FsbEZyYW1lPiBTY3JpcHRDYWxsRnJh
bWU6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0KCkgY29uc3QKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q29uc29sZTo6Q2FsbEZyYW1lPiBTY3JpcHRDYWxsRnJhbWU6OmJ1aWxkSW5z
cGVjdG9yT2JqZWN0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6
OkNhbGxGcmFtZTo6Y3JlYXRlKCkKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q29uc29sZTo6Q2FsbEZyYW1lOjpjcmVhdGUoKQogICAgICAgICAuc2V0RnVuY3Rpb25OYW1lKG1f
ZnVuY3Rpb25OYW1lKQogICAgICAgICAuc2V0VXJsKG1fc2NyaXB0TmFtZSkKICAgICAgICAgLnNl
dExpbmVOdW1iZXIobV9saW5lTnVtYmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1NjcmlwdENhbGxGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Njcmlw
dENhbGxGcmFtZS5oCmluZGV4IDY3ZjBkMzYuLmQ2ZGNmYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmgKQEAgLTMyLDE1ICszMiwxNyBAQAogI2RlZmluZSBT
Y3JpcHRDYWxsRnJhbWVfaAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSNpbmNsdWRlICJJbnNw
ZWN0b3JUeXBlQnVpbGRlci5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5o
IgogI2VuZGlmCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KK25hbWVzcGFjZSBJbnNwZWN0
b3IgewogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFNjcmlwdENhbGxGcmFtZSAgewogcHVibGljOgpAQCAtNTUsNyArNTcsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc0VxdWFsKGNvbnN0IFNjcmlwdENhbGxGcmFtZSYpIGNvbnN0OwogCiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDb25zb2xl
OjpDYWxsRnJhbWU+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDYWxsRnJhbWU+IGJ1aWxkSW5zcGVj
dG9yT2JqZWN0KCkgY29uc3Q7CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHAKaW5kZXggZTY5NGJmMS4uYzRhZjFiNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHAKQEAgLTMxLDgg
KzMxLDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNr
LmgiCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgotI2luY2x1ZGUgIkluc3Bl
Y3RvclZhbHVlcy5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIgorI2lu
Y2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KKwordXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03OSw5ICs4MSw5IEBAIGJvb2wg
U2NyaXB0Q2FsbFN0YWNrOjppc0VxdWFsKFNjcmlwdENhbGxTdGFjayogbykgY29uc3QKIH0KIAog
I2lmIEVOQUJMRShJTlNQRUNUT1IpCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBl
QnVpbGRlcjo6Q29uc29sZTo6Q2FsbEZyYW1lPj4gU2NyaXB0Q2FsbFN0YWNrOjpidWlsZEluc3Bl
Y3RvckFycmF5KCkgY29uc3QKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q2FsbEZyYW1lPj4gU2NyaXB0Q2Fs
bFN0YWNrOjpidWlsZEluc3BlY3RvckFycmF5KCkgY29uc3QKIHsKLSAgICBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDYWxsRnJhbWU+PiBmcmFtZXMgPSBU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNhbGxGcmFtZT46OmNyZWF0
ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDYWxsRnJhbWU+PiBmcmFtZXMgPSBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDYWxsRnJh
bWU+OjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnJhbWVzLnNpemUo
KTsgaSsrKQogICAgICAgICBmcmFtZXMtPmFkZEl0ZW0obV9mcmFtZXMuYXQoaSkuYnVpbGRJbnNw
ZWN0b3JPYmplY3QoKSk7CiAgICAgcmV0dXJuIGZyYW1lczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9TY3JpcHRDYWxsU3RhY2suaAppbmRleCBlMGQ3ZmQ1Li4xOTc1ZGE1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaApAQCAtMzIsNyArMzIsNyBAQAog
I2RlZmluZSBTY3JpcHRDYWxsU3RhY2tfaAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSNpbmNs
dWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYlR5cGVC
dWlsZGVycy5oIgogI2VuZGlmCiAKICNpbmNsdWRlICJTY3JpcHRDYWxsRnJhbWUuaCIKQEAgLTQy
LDggKzQyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbnNwZWN0b3JBcnJh
eTsKLQogY2xhc3MgU2NyaXB0Q2FsbFN0YWNrIDogcHVibGljIFJlZkNvdW50ZWQ8U2NyaXB0Q2Fs
bFN0YWNrPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhDYWxsU3RhY2tT
aXplVG9DYXB0dXJlID0gMjAwOwpAQCAtNTgsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c0VxdWFsKFNjcmlwdENhbGxTdGFjayopIGNvbnN0OwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
LSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q29uc29sZTo6
Q2FsbEZyYW1lPj4gYnVpbGRJbnNwZWN0b3JBcnJheSgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29u
c29sZTo6Q2FsbEZyYW1lPj4gYnVpbGRJbnNwZWN0b3JBcnJheSgpIGNvbnN0OwogI2VuZGlmCiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0RGVi
dWdMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnTGlzdGVu
ZXIuaAppbmRleCA1YmNhNzUxLi4wZWI0ZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvU2NyaXB0RGVidWdMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmgKQEAgLTM3LDggKzM3LDExIEBACiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNw
YWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIERlcHJlY2F0ZWQgewogY2xhc3MgU2NyaXB0VmFsdWU7
Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2NyaXB0RGVidWdMaXN0ZW5lciB7
CiBwdWJsaWM6CkBAIC02OCw3ICs3MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBk
aWRQYXJzZVNvdXJjZShTb3VyY2VJRCwgY29uc3QgU2NyaXB0JikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBmYWlsZWRUb1BhcnNlU291cmNlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
IGRhdGEsIGludCBmaXJzdExpbmUsIGludCBlcnJvckxpbmUsIGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKEpTQzo6RXhlY1N0YXRlKiwg
Y29uc3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNvbnN0IFNjcmlwdFZhbHVlJiBleGNlcHRp
b24pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2UoSlNDOjpFeGVjU3RhdGUqLCBjb25z
dCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywgY29uc3QgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUmIGV4Y2VwdGlvbikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb250aW51
ZSgpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1l
bGluZVJlY29yZEZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5l
UmVjb3JkRmFjdG9yeS5jcHAKaW5kZXggOGJhYWI5ZS4uOWYyZjdmYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAKQEAgLTM2LDE1
ICszNiwxNyBAQAogCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIK
LSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5j
bHVkZSAiTGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1
ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNp
bmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0lu
c3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCit1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNSZWNv
cmQoZG91YmxlIHN0YXJ0VGltZSwgaW50IG1heENhbGxTdGFja0RlcHRoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5oCmluZGV4IGRiNDRiMWUu
LmU0YmY5MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJl
Y29yZEZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNv
cmRGYWN0b3J5LmgKQEAgLTMxLDkgKzMxLDggQEAKICNpZm5kZWYgVGltZWxpbmVSZWNvcmRGYWN0
b3J5X2gKICNkZWZpbmUgVGltZWxpbmVSZWNvcmRGYWN0b3J5X2gKIAotI2luY2x1ZGUgIkluc3Bl
Y3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgIkxheW91dFJlY3QuaCIK
KyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDEsNjQgKzQw
LDYyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEV2ZW50OwogICAgIGNsYXNz
IEZsb2F0UXVhZDsKLSAgICBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7Ci0gICAgY2xhc3MgSW50UmVj
dDsKICAgICBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZTsKIAogICAgIGNsYXNzIFRpbWVsaW5lUmVjb3JkRmFjdG9yeSB7CiAgICAgcHVibGljOgotICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUdlbmVyaWNSZWNv
cmQoZG91YmxlIHN0YXJ0VGltZSwgaW50IG1heENhbGxTdGFja0RlcHRoKTsKLSAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVCYWNrZ3JvdW5kUmVjb3JkKGRv
dWJsZSBzdGFydFRpbWUsIGNvbnN0IFN0cmluZyYgdGhyZWFkKTsKKyAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUdlbmVyaWNSZWNvcmQo
ZG91YmxlIHN0YXJ0VGltZSwgaW50IG1heENhbGxTdGFja0RlcHRoKTsKKyAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUJhY2tncm91bmRS
ZWNvcmQoZG91YmxlIHN0YXJ0VGltZSwgY29uc3QgU3RyaW5nJiB0aHJlYWQpOwogCi0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlR0NFdmVudERhdGEoY29u
c3Qgc2l6ZV90IHVzZWRIZWFwU2l6ZURlbHRhKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUdDRXZlbnREYXRhKGNvbnN0IHNpemVf
dCB1c2VkSGVhcFNpemVEZWx0YSk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBjcmVhdGVGdW5jdGlvbkNhbGxEYXRhKGNvbnN0IFN0cmluZyYgc2NyaXB0TmFt
ZSwgaW50IHNjcmlwdExpbmUpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlRnVuY3Rpb25DYWxsRGF0YShjb25zdCBTdHJpbmcmIHNj
cmlwdE5hbWUsIGludCBzY3JpcHRMaW5lKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUV2ZW50RGlzcGF0Y2hEYXRhKGNvbnN0IEV2ZW50Jik7Cisg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVh
dGVFdmVudERpc3BhdGNoRGF0YShjb25zdCBFdmVudCYpOwogCi0gICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlR2VuZXJpY1RpbWVyRGF0YShpbnQgdGltZXJJ
ZCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiBjcmVhdGVHZW5lcmljVGltZXJEYXRhKGludCB0aW1lcklkKTsKIAotICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVRpbWVySW5zdGFsbERhdGEoaW50IHRp
bWVySWQsIGludCB0aW1lb3V0LCBib29sIHNpbmdsZVNob3QpOworICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlVGltZXJJbnN0YWxsRGF0
YShpbnQgdGltZXJJZCwgaW50IHRpbWVvdXQsIGJvb2wgc2luZ2xlU2hvdCk7CiAKLSAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVYSFJSZWFkeVN0YXRlQ2hh
bmdlRGF0YShjb25zdCBTdHJpbmcmIHVybCwgaW50IHJlYWR5U3RhdGUpOworICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlWEhSUmVhZHlT
dGF0ZUNoYW5nZURhdGEoY29uc3QgU3RyaW5nJiB1cmwsIGludCByZWFkeVN0YXRlKTsKIAotICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVhIUkxvYWREYXRh
KGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVhIUkxvYWREYXRhKGNvbnN0IFN0cmluZyYgdXJsKTsK
IAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUV2YWx1
YXRlU2NyaXB0RGF0YShjb25zdCBTdHJpbmcmLCBkb3VibGUgbGluZU51bWJlcik7CisgICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVFdmFs
dWF0ZVNjcmlwdERhdGEoY29uc3QgU3RyaW5nJiwgZG91YmxlIGxpbmVOdW1iZXIpOwogCi0gICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlVGltZVN0YW1wRGF0
YShjb25zdCBTdHJpbmcmKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVRpbWVTdGFtcERhdGEoY29uc3QgU3RyaW5nJik7CiAKLSAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVSZXNvdXJjZVNl
bmRSZXF1ZXN0RGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0Jik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0PiBjcmVhdGVSZXNvdXJjZVNlbmRSZXF1ZXN0RGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVTY2hlZHVsZVJlc291cmNlUmVxdWVzdERhdGEoY29uc3Qg
U3RyaW5nJik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0PiBjcmVhdGVTY2hlZHVsZVJlc291cmNlUmVxdWVzdERhdGEoY29uc3QgU3RyaW5nJik7
CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVSZXNv
dXJjZVJlY2VpdmVSZXNwb25zZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVJlc291cmNlUmVjZWl2ZVJlc3BvbnNlRGF0YShjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogCi0gICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlUmVjZWl2ZVJlc291cmNlRGF0
YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgaW50IGxlbmd0aCk7CisgICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVSZWNlaXZlUmVzb3Vy
Y2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBpbnQgbGVuZ3RoKTsKIAotICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVJlc291cmNlRmluaXNoRGF0
YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgYm9vbCBkaWRGYWlsLCBkb3VibGUgZmluaXNoVGlt
ZSk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiBjcmVhdGVSZXNvdXJjZUZpbmlzaERhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGJvb2wg
ZGlkRmFpbCwgZG91YmxlIGZpbmlzaFRpbWUpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gY3JlYXRlTGF5b3V0RGF0YSh1bnNpZ25lZCBkaXJ0eU9iamVjdHMs
IHVuc2lnbmVkIHRvdGFsT2JqZWN0cywgYm9vbCBwYXJ0aWFsTGF5b3V0KTsKKyAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUxheW91dERh
dGEodW5zaWduZWQgZGlydHlPYmplY3RzLCB1bnNpZ25lZCB0b3RhbE9iamVjdHMsIGJvb2wgcGFy
dGlhbExheW91dCk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBjcmVhdGVEZWNvZGVJbWFnZURhdGEoY29uc3QgU3RyaW5nJiBpbWFnZVR5cGUpOworICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlRGVj
b2RlSW1hZ2VEYXRhKGNvbnN0IFN0cmluZyYgaW1hZ2VUeXBlKTsKIAotICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVJlc2l6ZUltYWdlRGF0YShib29sIHNo
b3VsZENhY2hlKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3Q+IGNyZWF0ZVJlc2l6ZUltYWdlRGF0YShib29sIHNob3VsZENhY2hlKTsKIAotICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZU1hcmtEYXRhKGJv
b2wgaXNNYWluRnJhbWUpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdD4gY3JlYXRlTWFya0RhdGEoYm9vbCBpc01haW5GcmFtZSk7CiAKLSAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVQYXJzZUhUTUxEYXRh
KHVuc2lnbmVkIHN0YXJ0TGluZSk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVQYXJzZUhUTUxEYXRhKHVuc2lnbmVkIHN0YXJ0TGlu
ZSk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVB
bmltYXRpb25GcmFtZURhdGEoaW50IGNhbGxiYWNrSWQpOworICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlQW5pbWF0aW9uRnJhbWVEYXRh
KGludCBjYWxsYmFja0lkKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IGNyZWF0ZVBhaW50RGF0YShjb25zdCBGbG9hdFF1YWQmKTsKKyAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVBhaW50RGF0YShj
b25zdCBGbG9hdFF1YWQmKTsKIAotICAgICAgICBzdGF0aWMgdm9pZCBhcHBlbmRMYXlvdXRSb290
KEluc3BlY3Rvck9iamVjdCogZGF0YSwgY29uc3QgRmxvYXRRdWFkJik7CisgICAgICAgIHN0YXRp
YyB2b2lkIGFwcGVuZExheW91dFJvb3QoSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIGRhdGEs
IGNvbnN0IEZsb2F0UXVhZCYpOwogCiAjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQotICAgICAgICBz
dGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVXZWJTb2NrZXRD
cmVhdGVEYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgcHJvdG9jb2wpCisgICAgICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlV2ViU29ja2V0Q3JlYXRlRGF0YSh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29s
KQogICAgICAgICB7Ci0gICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhID0g
SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdD4gZGF0YSA9IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVh
dGUoKTsKICAgICAgICAgICAgIGRhdGEtPnNldE51bWJlcigiaWRlbnRpZmllciIsIGlkZW50aWZp
ZXIpOwogICAgICAgICAgICAgZGF0YS0+c2V0U3RyaW5nKCJ1cmwiLCB1cmwuc3RyaW5nKCkpOwog
ICAgICAgICAgICAgaWYgKCFwcm90b2NvbC5pc051bGwoKSkKQEAgLTEwNiw5ICsxMDMsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICByZXR1cm4gZGF0YS5yZWxlYXNlKCk7CiAg
ICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBjcmVhdGVHZW5lcmljV2ViU29ja2V0RGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIp
CisgICAgICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdD4gY3JlYXRlR2VuZXJpY1dlYlNvY2tldERhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
KQogICAgICAgICB7Ci0gICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhID0g
SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdD4gZGF0YSA9IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVh
dGUoKTsKICAgICAgICAgICAgIGRhdGEtPnNldE51bWJlcigiaWRlbnRpZmllciIsIGlkZW50aWZp
ZXIpOwogICAgICAgICAgICAgcmV0dXJuIGRhdGEucmVsZWFzZSgpOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQuY3BwCmluZGV4IDE1
YmI3YTguLjY2NmE4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3Jr
ZXJDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJD
b25zb2xlQWdlbnQuY3BwCkBAIC0zNCw2ICszNCw4IEBACiAKICNpbmNsdWRlICJXb3JrZXJDb25z
b2xlQWdlbnQuaCIKIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBXb3JrZXJDb25zb2xlQWdlbnQ6OldvcmtlckNvbnNvbGVBZ2VudChJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIq
IGluamVjdGVkU2NyaXB0TWFuYWdlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9X
b3JrZXJEZWJ1Z2dlckFnZW50LmNwcAppbmRleCA3MTM2ZTQ2Li45N2QwMGUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0zOCw2
ICszOCw4IEBACiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8d3RmL01lc3Nh
Z2VRdWV1ZS5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIG5hbWVzcGFjZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggZWYyMzAzNy4uN2Y1ZTcwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JD
b250cm9sbGVyLmNwcApAQCAtNTEsOCArNTEsMTEgQEAKICNpbmNsdWRlICJXb3JrZXJSZXBvcnRp
bmdQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlclJ1bnRpbWVBZ2VudC5oIgogI2luY2x1ZGUgIldv
cmtlclRocmVhZC5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oCmlu
ZGV4IDU4YmRhMjAuLmFhMGQ5MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtMzMsMTkgKzMzLDIxIEBACiAKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5o
IgotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3Rvcldl
YkFnZW50QmFzZS5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5
Lmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3Mg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI7Ci1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CiBjbGFzcyBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb247CiBjbGFzcyBJbnNwZWN0b3JSdW50aW1lQWdlbnQ7CiBjbGFzcyBJbnN0
cnVtZW50aW5nQWdlbnRzOwpAQCAtNzIsOSArNzQsOSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJ
bnN0cnVtZW50aW5nQWdlbnRzPiBtX2luc3RydW1lbnRpbmdBZ2VudHM7CiAgICAgT3duUHRyPElu
amVjdGVkU2NyaXB0TWFuYWdlcj4gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgSW5zcGVj
dG9yUnVudGltZUFnZW50KiBtX3J1bnRpbWVBZ2VudDsKLSAgICBJbnNwZWN0b3JBZ2VudFJlZ2lz
dHJ5IG1fYWdlbnRzOworICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnRSZWdpc3RyeSBtX2Fn
ZW50czsKICAgICBPd25QdHI8SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsPiBtX2Zyb250ZW5kQ2hh
bm5lbDsKLSAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERp
c3BhdGNoZXI7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCmluZGV4IGIwN2I2MzMuLjFlZjgzNzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCkBA
IC00Miw2ICs0Miw4IEBACiAjaW5jbHVkZSAiV29ya2VyUnVuTG9vcC5oIgogI2luY2x1ZGUgIldv
cmtlclRocmVhZC5oIgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFdvcmtlclJ1bnRpbWVBZ2VudDo6V29ya2VyUnVudGltZUFnZW50KEluc3Ry
dW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluamVjdGVkU2NyaXB0TWFuYWdl
ciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFs
U2NvcGUpCkBAIC01Nyw3ICs1OSw3IEBAIFdvcmtlclJ1bnRpbWVBZ2VudDo6fldvcmtlclJ1bnRp
bWVBZ2VudCgpCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRXb3JrZXJSdW50aW1lQWdl
bnQoMCk7CiB9CiAKLXZvaWQgV29ya2VyUnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBXb3JrZXJSdW50aW1lQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAg
ICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yUnVudGltZUJhY2tlbmREaXNwYXRjaGVy
OjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oCmluZGV4IDY3ZGUwOGEuLjViNjI5YzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmgKQEAgLTQ4
LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5Xb3JrZXJSdW50aW1lQWdl
bnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgLy8gUHJvdG9jb2wgY29tbWFuZHMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9Db25zb2xlLmNwcAppbmRleCBhOTcyMmUxLi4yMzJjZjQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ29uc29sZS5jcHAKQEAgLTQ3LDkgKzQ3LDkgQEAKICNpbmNsdWRlICJTY3JpcHRDYWxsU3Rh
Y2tGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZS5oIgogI2luY2x1ZGUgIlNjcmlw
dFByb2ZpbGVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTY3JpcHRh
YmxlRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgPGJp
bmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKaW5kZXggMGJlOWY5OC4u
Y2M2NjM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQ
b2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5
LmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIkZvcm1EYXRhTGlzdC5oIgogI2luY2x1
ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCi0jaW5j
bHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUGlu
Z0xvYWRlci5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKQEAgLTQ2LDEw
ICs0NSwxMyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VjdXJp
dHlQb2xpY3lWaW9sYXRpb25FdmVudC5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgorI2lu
Y2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIC8vIE5vcm1hbGx5IFdlYktpdCB1c2VzICJzdGF0aWMiIGZvciBpbnRl
cm5hbCBsaW5rYWdlLCBidXQgdXNpbmcgInN0YXRpYyIgZm9yCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmlu
ZGV4IDQ5ZTE4N2IuLmI4ZDg3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC04Niw3ICs4Niw2
IEBACiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgi
CiAjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5o
IgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgpAQCAtMTA0LDYgKzEwMyw3IEBACiAjaW5j
bHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSAibnBydW50aW1lX2ltcGwuaCIKICNpbmNsdWRlICJy
dW50aW1lX3Jvb3QuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRl
ci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29u
c29sZS5jcHAKaW5kZXggMGJiNzA1Mi4uODFmMWNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlQ29uc29sZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29u
c29sZS5jcHAKQEAgLTQyLDkgKzQyLDkgQEAKICNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIK
ICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2tG
YWN0b3J5LmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTY3JpcHRhYmxl
RG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgPGJpbmRp
bmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBkNjBjODg1Li5mODQ1Y2MwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTYxLDcgKzYxLDYgQEAKICNpbmNsdWRlICJS
ZW5kZXJCb3guaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJTY3JpcHRD
b250cm9sbGVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJ
bmRpY2F0b3IuaCIKQEAgLTY5LDYgKzY4LDcgQEAKICNpbmNsdWRlICJjX2luc3RhbmNlLmgiCiAj
aW5jbHVkZSAibnBydW50aW1lX2ltcGwuaCIKICNpbmNsdWRlICJydW50aW1lX3Jvb3QuaCIKKyNp
bmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNW
YWx1ZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0FTQ0lJ
Q1R5cGUuaD4KQEAgLTQ2Nyw3ICs0NjcsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1SZXF1
ZXN0KFBsdWdpblJlcXVlc3QqIHJlcXVlc3QpCiAgICAgCiAgICAgLy8gRXhlY3V0aW5nIGEgc2Ny
aXB0IGNhbiBjYXVzZSB0aGUgcGx1Z2luIHZpZXcgdG8gYmUgZGVzdHJveWVkLCBzbyB3ZSBrZWVw
IGEgcmVmZXJlbmNlIHRvIGl0LgogICAgIFJlZlB0cjxQbHVnaW5WaWV3PiBwcm90ZWN0b3IodGhp
cyk7Ci0gICAgU2NyaXB0VmFsdWUgcmVzdWx0ID0gbV9wYXJlbnRGcmFtZS0+c2NyaXB0KCkuZXhl
Y3V0ZVNjcmlwdChqc1N0cmluZywgcmVxdWVzdC0+c2hvdWxkQWxsb3dQb3B1cHMoKSk7CisgICAg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgcmVzdWx0ID0gbV9wYXJlbnRGcmFtZS0+c2NyaXB0KCku
ZXhlY3V0ZVNjcmlwdChqc1N0cmluZywgcmVxdWVzdC0+c2hvdWxkQWxsb3dQb3B1cHMoKSk7CiAK
ICAgICBpZiAodGFyZ2V0RnJhbWVOYW1lLmlzTnVsbCgpKSB7CiAgICAgICAgIFN0cmluZyByZXN1
bHRTdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggODA5ZmU4Yy4u
MDAwNmJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNjMsNyArNjMs
NiBAQAogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5
LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGlu
Z0FnZW50cy5oIgogI2luY2x1ZGUgIkludGVybmFsU2V0dGluZ3MuaCIKICNpbmNsdWRlICJJbnRS
ZWN0LmgiCkBAIC05Niw2ICs5NSw3IEBACiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIK
ICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDxieXRlY29kZS9Db2RlQmxvY2su
aD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8cnVu
dGltZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oPgpAQCAtMTY3LDYgKzE2Nyw4IEBAIHVzaW5nIEpT
Qzo6SlNWYWx1ZTsKIHVzaW5nIEpTQzo6U2NyaXB0RXhlY3V0YWJsZTsKIHVzaW5nIEpTQzo6U3Rh
Y2tWaXNpdG9yOwogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC0xMjgyLDcgKzEyODQsNyBA
QCBwcml2YXRlOgogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CiB9OwogCi1TdHJpbmcgSW50
ZXJuYWxzOjpwYXJzZXJNZXRhRGF0YShTY3JpcHRWYWx1ZSB2YWx1ZSkKK1N0cmluZyBJbnRlcm5h
bHM6OnBhcnNlck1ldGFEYXRhKERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHZhbHVlKQogewogICAg
IEpTQzo6Vk0qIHZtID0gY29udGV4dERvY3VtZW50KCktPnZtKCk7CiAgICAgSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMgPSB2bS0+dG9wQ2FsbEZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgK
aW5kZXggMjViY2FmZS4uMTA5MjVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBA
IC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIK
ICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJOb2RlTGlz
dC5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0
VmFsdWUuaD4KICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8cnVu
dGltZS9GbG9hdDMyQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtMTgx
LDcgKzE4MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVtaXRJbnNwZWN0b3JEaWRCZWdpbkZyYW1l
KCk7CiAgICAgdm9pZCBlbWl0SW5zcGVjdG9yRGlkQ2FuY2VsRnJhbWUoKTsKIAotICAgIFN0cmlu
ZyBwYXJzZXJNZXRhRGF0YShTY3JpcHRWYWx1ZSA9IFNjcmlwdFZhbHVlKCkpOworICAgIFN0cmlu
ZyBwYXJzZXJNZXRhRGF0YShEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSA9IERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlKCkpOwogCiAgICAgYm9vbCBoYXNTcGVsbGluZ01hcmtlcihpbnQgZnJvbSwgaW50
IGxlbmd0aCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIGJvb2wgaGFzR3JhbW1hck1hcmtlcihpbnQg
ZnJvbSwgaW50IGxlbmd0aCwgRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCBlMTc3YTcwLi4xMzhi
ZmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckdsb2Jh
bFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckdsb2Jh
bFNjb3BlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBQYXNzUmVm
UHRyPE1lc3NhZ2VFdmVudD4gY3JlYXRlQ29ubmVjdEV2ZW50KFBhc3NSZWZQdHI8TWVzc2FnZVBv
cnQ+IHBycFBvcnQpCiB7CiAgICAgUmVmUHRyPE1lc3NhZ2VQb3J0PiBwb3J0ID0gcHJwUG9ydDsK
LSAgICBSZWZQdHI8TWVzc2FnZUV2ZW50PiBldmVudCA9IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKGFk
b3B0UHRyKG5ldyBNZXNzYWdlUG9ydEFycmF5KDEsIHBvcnQpKSwgU2NyaXB0VmFsdWUoKSwgU3Ry
aW5nKCksIFN0cmluZygpLCBwb3J0KTsKKyAgICBSZWZQdHI8TWVzc2FnZUV2ZW50PiBldmVudCA9
IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKGFkb3B0UHRyKG5ldyBNZXNzYWdlUG9ydEFycmF5KDEsIHBv
cnQpKSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKSwgU3RyaW5nKCksIFN0cmluZygpLCBwb3J0
KTsKICAgICBldmVudC0+aW5pdEV2ZW50KGV2ZW50TmFtZXMoKS5jb25uZWN0RXZlbnQsIGZhbHNl
LCBmYWxzZSk7CiAgICAgcmV0dXJuIGV2ZW50LnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggZWMyZDE5MC4uZmNiZjY0NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTM3
LDYgKzM3LDcgQEAKICNpbmNsdWRlICJFcnJvckV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIK
ICNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JDb25zb2xlSW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKQEAgLTQ0LDcgKzQ1LDYgQEAKICNpbmNs
dWRlICJTY2hlZHVsZWRBY3Rpb24uaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNp
bmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIldvcmtlckluc3BlY3RvckNvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJXb3JrZXJMb2NhdGlvbi5oIgpAQCAtNTQsMTQgKzU0LDEzIEBA
CiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkYWJsZUxv
YWRlci5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uLmgiCisjaW5jbHVkZSA8
YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKICNpZiBF
TkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogI2lu
Y2x1ZGUgIk5vdGlmaWNhdGlvbkNlbnRlci5oIgogI2VuZGlmCiAKLSNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2xvc2VXb3JrZXJHbG9i
YWxTY29wZVRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CkBAIC0y
NDEsNyArMjQwLDcgQEAgdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6aW1wb3J0U2NyaXB0cyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgdXJscywgRXhjZXB0aW9uQ29kZSYKIAogICAgICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgc2NyaXB0TG9hZGVyLT5pZGVudGlmaWVyKCksIHNjcmlwdExvYWRlci0+c2NyaXB0KCkpOwog
Ci0gICAgICAgIFNjcmlwdFZhbHVlIGV4Y2VwdGlvbjsKKyAgICAgICAgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUgZXhjZXB0aW9uOwogICAgICAgICBtX3NjcmlwdC0+ZXZhbHVhdGUoU2NyaXB0U291
cmNlQ29kZShzY3JpcHRMb2FkZXItPnNjcmlwdCgpLCBzY3JpcHRMb2FkZXItPnJlc3BvbnNlVVJM
KCkpLCAmZXhjZXB0aW9uKTsKICAgICAgICAgaWYgKCFleGNlcHRpb24uaGFzTm9WYWx1ZSgpKSB7
CiAgICAgICAgICAgICBtX3NjcmlwdC0+c2V0RXhjZXB0aW9uKGV4Y2VwdGlvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXggNTBiZmExZC4uZmVmM2U1NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApAQCAtMzEsNyArMzEsNiBAQAog
I2luY2x1ZGUgIkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2lu
Y2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNs
dWRlICJUaHJlYWRHbG9iYWxEYXRhLmgiCiAjaW5jbHVkZSAiVVJMLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MVHJlZVZpZXdlci5jcHAKaW5kZXggMTYxZGQwMS4uYzM5ZTc1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxUcmVlVmlld2VyLmNwcApAQCAtMzgsMTAgKzM4LDEwIEBACiAjaW5jbHVkZSAiRnJhbWUu
aCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNl
Q29kZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2lu
Y2x1ZGUgIlhNTFZpZXdlckNTUy5oIgogI2luY2x1ZGUgIlhNTFZpZXdlckpTLmgiCisjaW5jbHVk
ZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDc0
YTdkMDAuLjkwZWZkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9j
dW1lbnRQYXJzZXIuY3BwCkBAIC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNw
b25zZS5oIgogI2luY2x1ZGUgIlNjcmlwdEVsZW1lbnQuaCIKICNpbmNsdWRlICJTY3JpcHRTb3Vy
Y2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJUZXh0UmVzb3Vy
Y2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiVHJlZURlcHRoTGltaXQuaCIKICNpbmNsdWRlICJYTUxF
cnJvcnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCBjMjhlNzdlLi45NWQ3N2I5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3Bw
CkBAIC01Miw3ICs1Miw2IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1
ZGUgIlNjcmlwdEVsZW1lbnQuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5j
bHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3Iv
V2ViS2l0RXhwb3J0cy5kZWYuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktp
dEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgppbmRleCA2ODVmNWYxLi41NmQ4
NWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9y
dEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgpAQCAt
MjIwLDcgKzIyMCw2IEBAIEVYUE9SVFMKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoPz8xSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3JlQEBVQUVAWFosID8/MUluc3BlY3RvckZy
b250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUVBQUBYWikKICAgICAgICAgc3ltYm9sV2l0aFBv
aW50ZXIoP2NoYW5nZUF0dGFjaGVkV2luZG93SGVpZ2h0QEluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWxAV2ViQ29yZUBAVUFFWElAWiwgP2NoYW5nZUF0dGFjaGVkV2luZG93SGVpZ2h0QEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUVBQVhJQFopCiAgICAgICAgIHN5bWJv
bFdpdGhQb2ludGVyKD9jaGFuZ2VBdHRhY2hlZFdpbmRvd1dpZHRoQEluc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWxAV2ViQ29yZUBAVUFFWElAWiwgP2NoYW5nZUF0dGFjaGVkV2luZG93V2lkdGhA
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3JlQEBVRUFBWElAWikKLSAgICAgICAg
c3ltYm9sV2l0aFBvaW50ZXIoP2Nvbm5lY3RGcm9udGVuZEBJbnNwZWN0b3JDb250cm9sbGVyQFdl
YkNvcmVAQFFBRVhQQVZJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxAMkBAWiwgP2Nvbm5lY3RGcm9u
dGVuZEBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFFQUFYUEVBVkluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbEAyQEBaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/ZG9EaXNwYXRjaE1l
c3NhZ2VPbkZyb250ZW5kUGFnZUBJbnNwZWN0b3JDbGllbnRAV2ViQ29yZUBAU0FfTlBBVlBhZ2VA
MkBBQlZTdHJpbmdAV1RGQEBAWiwgP2RvRGlzcGF0Y2hNZXNzYWdlT25Gcm9udGVuZFBhZ2VASW5z
cGVjdG9yQ2xpZW50QFdlYkNvcmVAQFNBX05QRUFWUGFnZUAyQEFFQlZTdHJpbmdAV1RGQEBAWikK
ICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2Zyb250ZW5kTG9hZGVkQEluc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUFFWFhaLCA/ZnJvbnRlbmRMb2FkZWRASW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3JlQEBVRUFBWFhaKQogICAgICAgICBzeW1ib2xXaXRo
UG9pbnRlcig/Z2V0UHJvcGVydHlAU2V0dGluZ3NASW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bEBXZWJDb3JlQEBVQUU/QVZTdHJpbmdAV1RGQEBBQlY0NUBAWiwgP2dldFByb3BlcnR5QFNldHRp
bmdzQEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUVBQT9BVlN0cmluZ0BX
VEZAQEFFQlY0NUBAWikKQEAgLTQ0OSw4ICs0NDgsNiBAQCBFWFBPUlRTCiAgICAgICAgIHN5bWJv
bFdpdGhQb2ludGVyKD9uZWFyZXN0QFRpbWVSYW5nZXNAV2ViQ29yZUBAUUJFTk5AWiwgP25lYXJl
c3RAVGltZVJhbmdlc0BXZWJDb3JlQEBRRUJBTk5AWikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50
ZXIoP2FkZEBUaW1lUmFuZ2VzQFdlYkNvcmVAQFFBRVhOTkBaLCA/YWRkQFRpbWVSYW5nZXNAV2Vi
Q29yZUBAUUVBQVhOTkBaKQogI2VuZGlmCi0gICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD90b0pT
T05TdHJpbmdASW5zcGVjdG9yVmFsdWVAV2ViQ29yZUBAUUJFP0FWU3RyaW5nQFdURkBAWFosID90
b0pTT05TdHJpbmdASW5zcGVjdG9yVmFsdWVAV2ViQ29yZUBAUUVCQT9BVlN0cmluZ0BXVEZAQFha
KQotICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/YnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5v
ZGVASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQkU/QVY/JFBhc3NSZWZQdHJAVkluc3Bl
Y3Rvck9iamVjdEBXZWJDb3JlQEBAV1RGQEBYWiwgP2J1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWRO
b2RlQEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUVCQT9BVj8kUGFzc1JlZlB0ckBWSW5z
cGVjdG9yT2JqZWN0QFdlYkNvcmVAQEBXVEZAQFhaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRl
cig/c3RhbmRhcmRGb250RmFtaWx5QFNldHRpbmdzQFdlYkNvcmVAQFFCRUFCVkF0b21pY1N0cmlu
Z0BXVEZAQFc0VVNjcmlwdENvZGVAQEBaLCA/c3RhbmRhcmRGb250RmFtaWx5QFNldHRpbmdzQFdl
YkNvcmVAQFFFQkFBRUJWQXRvbWljU3RyaW5nQFdURkBAVzRVU2NyaXB0Q29kZUBAQFopCiAgICAg
ICAgIHN5bWJvbFdpdGhQb2ludGVyKD9zZXJpZkZvbnRGYW1pbHlAU2V0dGluZ3NAV2ViQ29yZUBA
UUJFQUJWQXRvbWljU3RyaW5nQFdURkBAVzRVU2NyaXB0Q29kZUBAQFosID9zZXJpZkZvbnRGYW1p
bHlAU2V0dGluZ3NAV2ViQ29yZUBAUUVCQUFFQlZBdG9taWNTdHJpbmdAV1RGQEBXNFVTY3JpcHRD
b2RlQEBAWikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP3NhbnNTZXJpZkZvbnRGYW1pbHlA
U2V0dGluZ3NAV2ViQ29yZUBAUUJFQUJWQXRvbWljU3RyaW5nQFdURkBAVzRVU2NyaXB0Q29kZUBA
QFosID9zYW5zU2VyaWZGb250RmFtaWx5QFNldHRpbmdzQFdlYkNvcmVAQFFFQkFBRUJWQXRvbWlj
U3RyaW5nQFdURkBAVzRVU2NyaXB0Q29kZUBAQFopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0Fw
aS9XZWJQYWdlLmNwcAppbmRleCBlNzFmNGZjLi40ZWVmZDMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKQEAgLTExOCw3ICsxMTgsNiBAQAogI2luY2x1ZGUgIlJl
bmRlcldpZGdldC5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJT
Y3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJT
Y3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiU2Vs
ZWN0aW9uSGFuZGxlci5oIgpAQCAtMTcyLDYgKzE3MSw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNDb250ZXh0UmVmLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdS
ZWYuaD4KICNpbmNsdWRlIDxTaGFyZWRQb2ludGVyLmg+CisjaW5jbHVkZSA8YmluZGluZ3MvU2Ny
aXB0VmFsdWUuaD4KICNpbmNsdWRlIDxjbWF0aD4KICNpbmNsdWRlIDxzeXMva2V5Y29kZXMuaD4K
ICNpbmNsdWRlIDx1bmljb2RlL3VzdHJpbmcuaD4gLy8gcGxhdGZvcm0gSUNVCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L0NoYW5nZUxvZwppbmRleCAwNDQ2YWIxLi4yNDBjYjZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0xMi0wNSAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2gg
TW9yZSBJbnNwZWN0b3IgUmVxdWlyZWQgQ2xhc3NlcyBEb3duIGludG8gSmF2YVNjcmlwdENvcmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTMyNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQXBpL1dl
YlBhZ2UuY3BwOgorCiAyMDEzLTEyLTAzICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBSZW1vdGUgSW5zcGVjdG9yIGRl
YnVnZ2luZyBjb25uZWN0aW9uIG1hbmFnZW1lbnQgaW50byBKYXZhU2NyaXB0Q29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nCmluZGV4IDMxZWUyYjUuLjdkZDVlNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAxMy0xMi0wNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggTW9yZSBJbnNwZWN0b3IgUmVxdWlyZWQg
Q2xhc3NlcyBEb3duIGludG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTMyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6CisKIDIwMTMtMTIt
MDMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBQdXNoIFJlbW90ZSBJbnNwZWN0b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFu
YWdlbWVudCBpbnRvIEphdmFTY3JpcHRDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwIGIvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAppbmRl
eCA5YzY4YzkxLi4xYTdhNzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKQEAgLTU5LDkg
KzU5LDkgQEAKICNpbmNsdWRlIDxSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8
U2NoZW1lUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxTY3JpcHRDb250cm9sbGVyLmg+Ci0jaW5jbHVk
ZSA8U2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxTZXR0aW5ncy5oPgogI2luY2x1ZGUgPFRleHRJ
dGVyYXRvci5oPgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8
YmluZGluZ3MvanMvR0NDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8aGlzdG9yeS9IaXN0b3J5SXRl
bS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX2ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUu
Y3BwCmluZGV4IGYyYTIwYzMuLmEwNTJhYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUu
Y3BwCkBAIC01Myw3ICs1Myw2IEBACiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgot
I2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5j
bHVkZSAiU3Vic3RpdHV0ZURhdGEuaCIKICNpbmNsdWRlICJXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5o
IgpAQCAtNjUsNiArNjQsNyBAQAogI2luY2x1ZGUgPEVjb3JlX0lucHV0Lmg+CiAjaW5jbHVkZSA8
RWluYS5oPgogI2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1
ZS5oPgogI2luY2x1ZGUgPGVpbmFfc2FmZXR5X2NoZWNrcy5oPgogI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRl
eCBjYmRmZTI4Li4xYzQ5YTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MTMtMTItMDUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVjdG9yIFJlcXVpcmVkIENsYXNzZXMgRG93
biBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKwogMjAxMy0xMi0xMCAg
Sm9hbm1hcmllIERpZ2dzICA8amRpZ2dzQGlnYWxpYS5jb20+CiAKICAgICAgICAgQVg6IFtBVEtd
IENvbnZlcnQgdGhlIGdldF90ZXh0IGF0a3Rlc3QuYyB1bml0IHRlc3RzIHRvIGxheW91dCB0ZXN0
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4IGY5ZDli
MWRkLi42MDIzMjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcu
Y3BwCkBAIC04NSw3ICs4NSw2IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNs
dWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxl
ci5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNp
bmNsdWRlICJXZWJLaXRET01Eb2N1bWVudFByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXRkb3du
bG9hZC5oIgpAQCAtMTE0LDYgKzExMyw3IEBACiAjaW5jbHVkZSAid2Via2l0d2VicGx1Z2luZGF0
YWJhc2Vwcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaCIKICNp
bmNsdWRlICJ3ZWJraXR3ZWJ2aWV3cHJpdmF0ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1Njcmlw
dFZhbHVlLmg+CiAjaW5jbHVkZSA8Z2RrL2dka2tleXN5bXMuaD4KICNpbmNsdWRlIDxnbGliL2dp
MThuLWxpYi5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eS5tbQppbmRleCAxZThlOGFkLi42YzE5NjMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHku
bW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5Lm1tCkBAIC01NywxMSArNTcsMTEgQEAKICNpbXBvcnQgPFdlYkNvcmUvUHJv
eHlTZXJ2ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbXBvcnQg
PFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRWYWx1
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Vc2VyR2VzdHVyZUluZGljYXRvci5oPgogI2ltcG9ydCA8
V2ViQ29yZS9ucHJ1bnRpbWVfaW1wbC5oPgogI2ltcG9ydCA8V2ViQ29yZS9ydW50aW1lX29iamVj
dC5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CisjaW1wb3J0IDxiaW5kaW5n
cy9TY3JpcHRWYWx1ZS5oPgogI2ltcG9ydCA8bWFjaC9tYWNoLmg+CiAjaW1wb3J0IDx1dGlsaXR5
PgogI2ltcG9ydCA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCmluZGV4
IGUyNWViZTkuLmExNGM4ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KQEAgLTQzLDEyICs0MywxMiBAQAogI2lt
cG9ydCAiV2ViVUlEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiV2ViVmlld0ludGVybmFsLmgiCiAjaW1w
b3J0IDxhbGdvcml0aG0+CisjaW1wb3J0IDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9JbnNwZWN0b3JDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0luc3Bl
Y3RvckZyb250ZW5kQ2xpZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL01haW5GcmFtZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIu
aD4KLSNpbXBvcnQgPFdlYkNvcmUvU2NyaXB0VmFsdWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvU29m
dExpbmtpbmcuaD4KICNpbXBvcnQgPFdlYktpdC9ET01FeHRlbnNpb25zLmg+CiAjaW1wb3J0IDxX
ZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
CmluZGV4IGU0YjJiZWQuLjZmNTg4NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFt
ZS5tbQpAQCAtODksNyArODksNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJXaWRnZXQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvU2NyaXB0VmFsdWUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbXBvcnQgPFdlYkNvcmUv
U21hcnRSZXBsYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlUHJvcGVydGllcy5oPgpAQCAt
MTAwLDYgKzk5LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvaHRtbGVkaXRpbmcuaD4KICNpbXBvcnQg
PFdlYkNvcmUvbWFya3VwLmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KKyNp
bXBvcnQgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW1wb3J0IDxydW50aW1lL0pTTG9jay5o
PgogI2ltcG9ydCA8cnVudGltZS9KU09iamVjdC5oPgogI2ltcG9ydCA8cnVudGltZS9KU0NKU1Zh
bHVlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggZGY3ZDZmNC4uY2Qy
N2Y1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTY5LDcgKzE2OSw2
IEBACiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KICNpbXBvcnQg
PFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2NyaXB0Q29udHJv
bGxlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRWYWx1ZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9TZWN1cml0eU9yaWdpbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eVBvbGljeS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgpAQCAtMTg1LDYgKzE4NCw3IEBACiAjaW1wb3J0
IDxXZWJLaXQvRE9NRXh0ZW5zaW9ucy5oPgogI2ltcG9ydCA8V2ViS2l0L0RPTVByaXZhdGUuaD4K
ICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgorI2ltcG9ydCA8YmluZGluZ3MvU2Ny
aXB0VmFsdWUuaD4KICNpbXBvcnQgPG1hY2gtby9keWxkLmg+CiAjaW1wb3J0IDxvYmpjL29iamMt
YXV0by5oPgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggNGI1
MmE3NS4uZDAzYTUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTEy
LTA1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2Vi
IEluc3BlY3RvcjogUHVzaCBNb3JlIEluc3BlY3RvciBSZXF1aXJlZCBDbGFzc2VzIERvd24gaW50
byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTI1MzI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgICogV2ViVmlldy5jcHA6CisKIDIwMTMt
MTItMDQgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dp
bl0gRXhpdGluZyBmcm9tIE1lZGlhIEZ1bGwgU2NyZWVuIG1vZGUgdmlhICdlc2NhcGUnIGtleSBk
b2VzIG5vdCB3b3JrIHByb3Blcmx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJG
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggZWE4YmQxOC4u
NDlkNjZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcApAQCAtOTksMTIgKzk5LDEyIEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9UZXh0SXRlcmF0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NQmlu
ZGluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2lu
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2su
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdC5oPgorI2luY2x1ZGUgPGJpbmRp
bmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogI2lmIFVT
RShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwIGIvU291cmNl
L1dlYktpdC93aW4vV2ViVmlldy5jcHAKaW5kZXggZjlmNWQwNi4uMDgzODQ3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4v
V2ViVmlldy5jcHAKQEAgLTEzNyw3ICsxMzcsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxiYXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Njcm9sbGJhclRoZW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9y
aWdpbi5oPgpAQCAtMTQ3LDYgKzE0Niw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TeXN0ZW1JbmZv
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dNZXNzYWdlQnJvYWRjYXN0ZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1dpbmRvd3NUb3VjaC5oPgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZh
bHVlLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogI2lmIFVTRShDRykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCA3OTEyN2VlLi5kODE3MGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIw
MTMtMTItMDUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVjdG9yIFJlcXVpcmVkIENsYXNzZXMgRG93
biBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisKKzIwMTMtMTItMDUgIEpvc2VwaCBQZWNvcmFy
byAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1v
cmUgSW5zcGVjdG9yIFJlcXVpcmVkIENsYXNzZXMgRG93biBpbnRvIEphdmFTY3JpcHRDb3JlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJJbnNwZWN0b3IuaDoKKwogMjAxMy0xMi0xMCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBXZWJOdW1iZXIuaCB0byBBUElOdW1iZXIu
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
CmluZGV4IGUwMGQzYTIuLjYxM2Q1ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTYzLDEyICs2MywxMiBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvUmVuZGVyRW1iZWRkZWRPYmplY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlTG9hZFNjaGVkdWxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nj
cm9sbFZpZXcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZWN1cml0eVBvbGljeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3Mu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg+CisjaW5jbHVkZSA8
YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CkBAIC0xMTc5LDcgKzExNzksNyBAQCB2b2lkIFBs
dWdpblZpZXc6OnBlcmZvcm1KYXZhU2NyaXB0VVJMUmVxdWVzdChVUkxSZXF1ZXN0KiByZXF1ZXN0
KQogICAgIC8vIEV2YWx1YXRlIHRoZSBKYXZhU2NyaXB0IGNvZGUuIE5vdGUgdGhhdCBydW5uaW5n
IEphdmFTY3JpcHQgaGVyZSBjb3VsZCBjYXVzZSB0aGUgcGx1Zy1pbiB0byBiZSBkZXN0cm95ZWQs
IHNvIHdlCiAgICAgLy8gZ3JhYiByZWZlcmVuY2VzIHRvIHRoZSBwbHVnLWluIGhlcmUuCiAgICAg
UmVmUHRyPFBsdWdpbj4gcGx1Z2luID0gbV9wbHVnaW47Ci0gICAgU2NyaXB0VmFsdWUgcmVzdWx0
ID0gZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoanNTdHJpbmcsIHJlcXVlc3QtPmFsbG93
UG9wdXBzKCkpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHJlc3VsdCA9IGZyYW1lLT5z
Y3JpcHQoKS5leGVjdXRlU2NyaXB0KGpzU3RyaW5nLCByZXF1ZXN0LT5hbGxvd1BvcHVwcygpKTsK
IAogICAgIC8vIENoZWNrIGlmIGV2YWx1YXRpbmcgdGhlIEphdmFTY3JpcHQgZGVzdHJveWVkIHRo
ZSBwbHVnLWluLgogICAgIGlmICghcGx1Z2luLT5jb250cm9sbGVyKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCmluZGV4IGE4OTBm
NWIuLjEwNWJhYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJJbnNwZWN0b3IuY3BwCkBAIC0zNCwxMiArMzQsMTEgQEAKICNpbmNsdWRlICJXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvSW5zcGVjdG9yQ29udHJvbGxlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVj
dG9yRm9yd2FyZGluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01haW5GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvU2NyaXB0VmFsdWUuaD4KKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3Rvci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
Ykluc3BlY3Rvci5oCmluZGV4IDJmOTcxZDQuLjVjNjIxNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKQEAgLTMwLDE4ICszMCwxNCBA
QAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRm9yd2FyZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7Ci19Ci0KIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDsKIGNsYXNzIFdl
YlBhZ2U7Ci1zdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgV2ViSW5z
cGVjdG9yIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxl
SW5zcGVjdG9yPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKaW5kZXggZTM3ZjIzNS4uN2E2ZGUwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTI3LDcgKzEyNyw2IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TY2hlbWVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxl
ci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NoYWRvd1Jvb3QuaD4KQEAgLTEzOCw2ICsxMzcsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvVmlzaWJsZVBvc2l0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WaXNp
YmxlVW5pdHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL21hcmt1cC5oPgorI2luY2x1ZGUgPGJpbmRp
bmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAjaW5j
bHVkZSA8cnVudGltZS9KU0xvY2suaD4KICNpbmNsdWRlIDxydW50aW1lL09wZXJhdGlvbnMuaD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218929</attachid>
            <date>2013-12-10 18:12:10 -0800</date>
            <delta_ts>2013-12-11 14:03:11 -0800</delta_ts>
            <desc>[PATCH] For Bots 8</desc>
            <filename>for-bots-8.patch</filename>
            <type>text/plain</type>
            <size>733969</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBiZDk1NGYxLi5iZThiMjdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00LDYgKzQsNyBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vQVBJIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMiCiAg
ICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9hc3NlbWJsZXIiCisgICAgIiR7SkFWQVNDUklQVENP
UkVfRElSfS9iaW5kaW5ncyIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J5dGVjb2RlIgog
ICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnl0ZWNvbXBpbGVyIgogICAgICIke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vZGZnIgpAQCAtNDUsNiArNDYsMTAgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NP
VVJDRVMKICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCiAgICAgYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNwcAogCisgICAgYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25D
YWxsLmNwcAorICAgIGJpbmRpbmdzL1NjcmlwdE9iamVjdC5jcHAKKyAgICBiaW5kaW5ncy9TY3Jp
cHRWYWx1ZS5jcHAKKwogICAgIGJ5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwCiAg
ICAgYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAogICAgIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNC
bG9jay5jcHAKQEAgLTIxNiw2ICsyMjEsMTAgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMK
ICAgICBoZWFwL1dlYWtTZXQuY3BwCiAgICAgaGVhcC9Xcml0ZUJhcnJpZXJTdXBwb3J0LmNwcAog
CisgICAgaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwCisgICAgaW5zcGVjdG9y
L0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcAorICAgIGluc3BlY3Rvci9JbnNwZWN0b3JW
YWx1ZXMuY3BwCisKICAgICBpbnRlcnByZXRlci9BYnN0cmFjdFBDLmNwcAogICAgIGludGVycHJl
dGVyL0NhbGxGcmFtZS5jcHAKICAgICBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTU4
NCw2ICs1OTMsNyBAQCBlbmRmb3JlYWNoICgpCiAKIHNldChKYXZhU2NyaXB0Q29yZV9GT1JXQVJE
SU5HX0hFQURFUlNfRElSRUNUT1JJRVMKICAgICBhc3NlbWJsZXIKKyAgICBiaW5kaW5ncwogICAg
IGJ5dGVjb2RlCiAgICAgY29sbGVjdG9yL2hhbmRsZXMKICAgICBkZWJ1Z2dlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKaW5kZXggMDM3YzQwNi4uOTVkNDI5MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTEwIEBACisyMDEzLTEyLTA1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNv
cmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgUEFSVCA2OiBFeHRyYWN0IEdlbmVyaWMgSW5zcGVj
dG9yVHlwZUJ1aWxkZXIKKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVj
dG9yIFJlcXVpcmVkIENsYXNzZXMgRG93biBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclR5cGVCdWlsZGVyLmg6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6T3B0T3V0cHV0OjpPcHRPdXRwdXQpOgorICAgICAgICAoSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6T3B0T3V0cHV0OjpvcGVyYXRvcj0pOgorICAgICAgICAoSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6T3B0T3V0cHV0Ojppc0Fzc2lnbmVkKToKKyAgICAgICAgKEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6Ok9wdE91dHB1dDo6Z2V0VmFsdWUpOgorICAgICAgICAoSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6RXhhY3RseUludDo6RXhhY3RseUludCk6CisgICAgICAgIChJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpFeGFjdGx5SW50OjpvcGVyYXRvciBpbnQpOgorICAgICAgICAoSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6RXhhY3RseUludDo6Y2FzdF90b19pbnQpOgorICAgICAgICAoSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6aW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OlJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRBbnkpOgorICAgICAgICAoSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZUNhc3RIZWxwZXI6OmFzc2VydEludCk6CisgICAgICAg
IChJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTo6QXJyYXkpOgorICAgICAgICAoSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk6Om9wZW5BY2Nlc3NvcnMpOgorICAgICAgICAoSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk6OmFkZEl0ZW0pOgorICAgICAgICAoSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6QXJyYXk6OmNyZWF0ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTo6cnVudGltZUNhc3QpOgorICAgICAgICAoSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk6OmFzc2VydENvcnJlY3RWYWx1ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpTdHJ1Y3RJdGVtVHJhaXRzOjpwdXNoUmVmUHRyKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlN0cnVjdEl0ZW1UcmFpdHM6OmFzc2VydENvcnJlY3RWYWx1ZSk6CisK
KzIwMTMtMTItMDUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVjdG9yIFJlcXVpcmVkIENsYXNzZXMg
RG93biBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNw
cDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9u
Q2FsbC5jcHAuCisgICAgICAgIChKU0M6OlNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVu
ZEFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6U2NyaXB0RnVuY3Rpb25DYWxsOjpTY3JpcHRGdW5j
dGlvbkNhbGwpOgorICAgICAgICAoSlNDOjpTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwpOgorICAg
ICAgICAqIGJpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmguCisKKzIwMTMtMTItMDUg
IEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVjdG9yIFJlcXVpcmVkIENsYXNzZXMgRG93biBpbnRvIEph
dmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjUzMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAg
ICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnZjeHByb2ovY29weS1maWxlcy5jbWQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9TY3JpcHRPYmplY3Qu
Y3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50
LmNwcC4KKyAgICAgICAgKEpTQzo6U2NyaXB0T2JqZWN0OjpTY3JpcHRPYmplY3QpOgorICAgICAg
ICAqIGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmguCisgICAgICAgIChKU0M6OlNjcmlwdE9iamVjdDo6
U2NyaXB0T2JqZWN0KToKKyAgICAgICAgKEpTQzo6U2NyaXB0T2JqZWN0Ojpqc09iamVjdCk6Cisg
ICAgICAgIChKU0M6OlNjcmlwdE9iamVjdDo6c2NyaXB0U3RhdGUpOgorICAgICAgICAqIGJpbmRp
bmdzL1NjcmlwdFZhbHVlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdFZhbHVlLmNwcC4KKyAgICAgICAgKEpTQzo6U2NyaXB0VmFsdWU6On5TY3JpcHRW
YWx1ZSk6CisgICAgICAgIChKU0M6OlNjcmlwdFZhbHVlOjpnZXRTdHJpbmcpOgorICAgICAgICAo
SlNDOjpTY3JpcHRWYWx1ZTo6dG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpTY3JpcHRWYWx1ZTo6
aXNFcXVhbCk6CisgICAgICAgIChKU0M6OmpzVG9JbnNwZWN0b3JWYWx1ZSk6CisgICAgICAgIChK
U0M6OlNjcmlwdFZhbHVlOjp0b0luc3BlY3RvclZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9T
Y3JpcHRWYWx1ZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0VmFsdWUuaC4KKworMjAxMy0xMi0wNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBw
bGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggTW9yZSBJbnNwZWN0b3IgUmVx
dWlyZWQgQ2xhc3NlcyBEb3duIGludG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTMyNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yQWdlbnRCYXNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JBZ2VudFJlZ2lzdHJ5LmguCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50
QmFzZTo6fkluc3BlY3RvckFnZW50QmFzZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3Rv
ckFnZW50QmFzZTo6ZGlzY2FyZEFnZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9y
QWdlbnRCYXNlOjpJbnNwZWN0b3JBZ2VudEJhc2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9yQWdlbnRSZWdpc3RyeTo6YXBwZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yQWdlbnRSZWdpc3RyeS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwLgorICAgICAgICAoSW5zcGVjdG9yOjpn
ZXRQcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlci5oLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1
ZXMuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZh
bHVlcy5jcHAuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oLgorCiAyMDEz
LTEyLTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgU2ltcGxp
ZnkgQ1NFJ3MgdHJlYXRtZW50IG9mIE5vZGVSZWxldmFudFRvT1NSCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
R05VbWFrZWZpbGUuYW0KaW5kZXggMDg1ZmNhNy4uNzVkYmVlNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5hbQpAQCAtNTIsNiArNTIsNyBAQCBqYXZhc2NyaXB0Y29yZV9jcHBmbGFn
cyArPSBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSSBcCiAJLUkkKHNy
Y2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL0ZvcndhcmRpbmdIZWFkZXJzIFwKIAktSSQoc3Jj
ZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyIFwKKwktSSQoc3JjZGlyKS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZSBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggNGZiM2Rh
ZC4uZmJiMDA0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
QEAgLTk1LDYgKzk1LDEyIEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL1NINEFzc2VtYmxlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBcCisgICAgU291cmNlL0phdmFTY3JpcHRD
b3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYmluZGluZ3MvU2NyaXB0T2JqZWN0LmNwcCBcCisgICAgU291cmNlL0phdmFTY3JpcHRD
b3JlL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5oIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmlu
ZGluZ3MvU2NyaXB0VmFsdWUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Fy
cmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQXJyYXlQcm9maWxlLmNwcCBcCkBAIC02MTUsNyArNjIxLDE1IEBAIGphdmFzY3JpcHRj
b3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5pY29kZS91dGZf
b2xkLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5pY29kZS91dHlwZXMuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2ljdS91bmljb2RlL3V2ZXJzaW9uLmggXAorCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmggXAorCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAgXAorCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIFwK
KwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclR5cGVCdWlsZGVyLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yVmFsdWVzLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JWYWx1ZXMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0Fic3RyYWN0UEMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQWJz
dHJhY3RQQy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2Fs
bC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDU0MjczMGYu
LmYwOWVjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtMjk0
LDYgKzI5NCw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcTWFjcm9B
c3NlbWJsZXIuY3BwIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEpTQ1Rlc3RS
dW5uZXJVdGlscy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXE1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNwcCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGJpbmRpbmdzXGJpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAiIC8+CisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xiaW5kaW5ncy9TY3JpcHRPYmplY3QuY3BwIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcYmluZGluZ3MvU2NyaXB0VmFsdWUu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0
aW9uUHJvZmlsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxB
cnJheVByb2ZpbGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVc
Qnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCIgLz4KQEAgLTQ1Nyw2ICs0NjAsOSBAQAogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5caGVhcFxXZWFrSGFuZGxlT3duZXIuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5caGVhcFxXZWFrU2V0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGhlYXBcV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAiIC8+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAiIC8+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3Bl
Y3RvclZhbHVlcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRl
clxBYnN0cmFjdFBDLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGludGVycHJl
dGVyXENhbGxGcmFtZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnRlcnBy
ZXRlclxJbnRlcnByZXRlci5jcHAiIC8+CkBAIC03NTAsNiArNzU2LDkgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxNYWNyb0Fzc2VtYmxlclg4Nl82NC5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXFJlcGF0Y2hCdWZmZXIuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxYODZBc3NlbWJsZXIuaCIgLz4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGJpbmRpbmdzL1NjcmlwdEZ1bmN0aW9u
Q2FsbC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcYmluZGluZ3Mv
U2NyaXB0T2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xi
aW5kaW5ncy9TY3JpcHRWYWx1ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0
ZWNvZGVcQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cYnl0ZWNvZGVcQXJyYXlQcm9maWxlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxieXRlY29kZVxCeVZhbEluZm8uaCIgLz4KQEAgLTEwMDAsNyArMTAwOSwxMiBAQAogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxXZWFrU2V0LmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxoZWFwXFdlYWtTZXRJbmxpbmVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxoZWFwXFdyaXRlQmFycmllclN1cHBvcnQuaCIgLz4KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JBZ2VudEJhc2UuaCIgLz4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgiIC8+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGlu
c3BlY3RvclxJbnNwZWN0b3JUeXBlQnVpbGRlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvclZhbHVlcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caW50ZXJwcmV0ZXJcQWJzdHJhY3RQQy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caW50ZXJwcmV0ZXJcQ2FjaGVkQ2FsbC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caW50ZXJwcmV0ZXJcQ2FsbEZyYW1lLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYmRlNGIzZC4uOGQ4MDRkMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwpA
QCAtNCw2ICs0LDkgQEAKICAgICA8RmlsdGVyIEluY2x1ZGU9ImFzc2VtYmxlciI+CiAgICAgICA8
VW5pcXVlSWRlbnRpZmllcj57NDI5NzgzYTEtNWQ2YS00MDE5LWFkMWEtZGRiMmM5OGY5YjZjfTwv
VW5pcXVlSWRlbnRpZmllcj4KICAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9ImJp
bmRpbmdzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnswYmFjZTEyMy00NTgyLWVlYmMtOTMx
NC03ODE5YjM3NmMxOTh9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgogICAgIDxG
aWx0ZXIgSW5jbHVkZT0iYnl0ZWNvZGUiPgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezc2NjA4
OGEwLTEyMTYtNDg1NC1hYTQzLTU2MGM1ZTI4MzY2OH08L1VuaXF1ZUlkZW50aWZpZXI+CiAgICAg
PC9GaWx0ZXI+CkBAIC0xMDUsNiArMTA4LDE1IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
Llxhc3NlbWJsZXJcTWFjcm9Bc3NlbWJsZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVy
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxi
aW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIj4KKyAgICAgIDxGaWx0ZXI+YmluZGluZ3M8
L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJp
bmRpbmdzXFNjcmlwdE9iamVjdC5jcHAiPgorICAgICAgPEZpbHRlcj5iaW5kaW5nczwvRmlsdGVy
PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3Nc
U2NyaXB0VmFsdWUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+YmluZGluZ3M8L0ZpbHRlcj4KKyAgICA8
L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxs
b2NhdGlvblByb2ZpbGUuY3BwIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAg
ICA8L0NsQ29tcGlsZT4KQEAgLTI3OSw2ICsyOTEsMTUgQEAKICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGhlYXBcV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAiPgogICAgICAgPEZpbHRlcj5oZWFw
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxp
bnNwZWN0b3JcSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAiPgorICAgICAgPEZpbHRlcj5pbnNw
ZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAiPgorICAgICAgPEZp
bHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JWYWx1ZXMuY3BwIj4KKyAgICAgIDxGaWx0
ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxpbnRlcnByZXRlclxBYnN0cmFjdFBDLmNwcCI+CiAgICAgICA8RmlsdGVyPmlu
dGVycHJldGVyPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0xMzg4LDYgKzE0MDksMTUg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxYODZBc3NlbWJsZXIuaCI+
CiAgICAgICA8RmlsdGVyPmFzc2VtYmxlcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0RnVuY3Rpb25DYWxsLmgiPgor
ICAgICAgPEZpbHRlcj5iaW5kaW5nczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0T2JqZWN0LmgiPgorICAgICAgPEZp
bHRlcj5iaW5kaW5nczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0VmFsdWUuaCI+CisgICAgICA8RmlsdGVyPmJpbmRp
bmdzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxieXRlY29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmgiPgogICAgICAgPEZpbHRlcj5ieXRl
Y29kZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMTcxOCw5ICsxNzQ4LDI0IEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXFdyaXRlQmFycmllclN1cHBvcnQuaCI+CiAg
ICAgICA8RmlsdGVyPmhlYXA8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JBZ2VudEJhc2UuaCI+CisgICAgICA8
RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCI+CisgICAg
ICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgi
PgorICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwuaCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRl
PgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvclR5cGVCdWls
ZGVyLmgiPgorICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVk
ZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JWYWx1ZXMu
aCI+CisgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcQWJzdHJhY3RQQy5oIj4KICAg
ICAgIDxGaWx0ZXI+aW50ZXJwcmV0ZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL2NvcHkt
ZmlsZXMuY21kIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
Y29weS1maWxlcy5jbWQKaW5kZXggZjdlNDI5NC4uODgyY2U4MyAxMDA3NTUKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovY29weS1maWxlcy5jbWQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovY29weS1maWxl
cy5jbWQKQEAgLTM5LDYgKzM5LDcgQEAgZWNobyBDb3B5aW5nIHByaXZhdGUgaGVhZGVycy4uLgog
bWtkaXIgIiVQcml2YXRlSGVhZGVyc0RpcmVjdG9yeSUiIDI+TlVMDQogZm9yICUlZCBpbiAoDQog
ICAgIGFzc2VtYmxlcg0KKyAgICBiaW5kaW5ncw0KICAgICBieXRlY29kZQ0KICAgICBkZmcNCiAg
ICAgZGlzYXNzZW1ibGVyDQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3N2U4MGVm
Li4wMDBjNWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODk1LDYgKzg5NSwy
MCBAQAogCQlBMTcxMkI0MTExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTcxMkI0MDExQzdCMjM1MDA3
QTUzMTUgLyogUmVnRXhwS2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQTFBMDA5QzAxODMxQTIyRDAwQ0Y4NzExIC8qIE1hY3JvQXNzZW1ibGVy
QVJNNjQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
NDA5MjNDMTU2RUVEM0IwMDU2NkNCMiAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTFBMDA5QzExODMxQTI2
RTAwQ0Y4NzExIC8qIEFSTTY0QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NjQwOTIzQjE1NkVFRDNCMDA1NjZDQjIgLyogQVJNNjRBc3Nl
bWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlBNTRDRjJGNTE4NEVBQjI0MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU0Q0YyRjIxODRFQUIyNDAwMjM3
RjE5IC8qIFNjcmlwdFZhbHVlLmNwcCAqLzsgfTsKKwkJQTU0Q0YyRjYxODRFQUIyNDAwMjM3RjE5
IC8qIFNjcmlwdFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNTRDRjJGMzE4NEVBQjI0MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNTRDRjJGOTE4NEVB
RURBMDAyMzdGMTkgLyogU2NyaXB0T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NENGMkY3MTg0RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRP
YmplY3QuY3BwICovOyB9OworCQlBNTRDRjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2Jq
ZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTRD
RjJGODE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTU1RDkzQTUxODUwMTJBODAwNDAwREVE
IC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNTVEOTNBMzE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rp
b25DYWxsLmNwcCAqLzsgfTsKKwkJQTU1RDkzQTYxODUwMTJBODAwNDAwREVEIC8qIFNjcmlwdEZ1
bmN0aW9uQ2FsbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTU1RDkzQTQxODUwMTJBODAwNDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1NUQ5M0FDMTg1
MTRGNzkwMDQwMERFRCAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1RDkzQUIxODUxNEY3OTAwNDAwREVEIC8q
IEluc3BlY3RvclR5cGVCdWlsZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJQTU5M0NGN0MxODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1OTNDRjdBMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlci5jcHAgKi87IH07CisJCUE1OTNDRjdEMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTU5M0NGN0IxODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJQTU5M0NGN0YxODQwMzYyQzAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50QmFzZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5M0NGN0UxODQw
MzYyQzAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1OTNDRjgyMTg0MDM3NzEwMEJGQ0UyNyAv
KiBJbnNwZWN0b3JWYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTU5M0NGODAxODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5j
cHAgKi87IH07CisJCUE1OTNDRjgzMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OTNDRjgx
MTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNTkzQ0Y4NjE4NDAzOENBMDBCRkNFMjcg
LyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNTkzQ0Y4NDE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9y
QWdlbnRSZWdpc3RyeS5jcHAgKi87IH07CisJCUE1OTNDRjg3MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJ
bnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNTkzQ0Y4NTE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRS
ZWdpc3RyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUE1OTQ1NThGMTgyNDVFRkQwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OTQ1
NThFMTgyNDVFREUwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCAqLzsg
fTsKIAkJQTU5NDU1OTIxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJs
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTk0
NTU5MDE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcCAqLzsg
fTsKIAkJQTU5NDU1OTMxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJs
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5NDU1
OTExODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oICovOyB9OwpA
QCAtMjIyNyw2ICsyMjQxLDIwIEBACiAJCUExNzEyQjNBMTFDN0IyMTIwMDdBNTMxNSAvKiBSZWdF
eHBDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBD
YWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNzEyQjNFMTFDN0IyMjgw
MDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZWdFeHBDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTcxMkI0MDEx
QzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlZ0V4cEtleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTRDRjJG
MjE4NEVBQjI0MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBNTRDRjJGMzE4NEVBQjI0MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTU0Q0YyRjcxODRFQUVEQTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRPYmplY3QuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTRDRjJGODE4NEVBRURBMDAyMzdGMTkg
LyogU2NyaXB0T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlw
dE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTVEOTNBMzE4NTAxMkE4
MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE1NUQ5M0E0MTg1MDEyQTgwMDQwMERFRCAvKiBTY3JpcHRGdW5jdGlvbkNh
bGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0RnVuY3Rpb25DYWxs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1NUQ5M0FCMTg1MTRGNzkwMDQwMERF
RCAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBJbnNwZWN0b3JUeXBlQnVpbGRlci5oOyBwYXRoID0gaW5zcGVjdG9yL0luc3BlY3RvclR5
cGVCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTNDRjdBMTg0MDM2
MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHA7
IHBhdGggPSBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBNTkzQ0Y3QjE4NDAzNjAzMDBCRkNFMjcgLyogSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaDsgcGF0aCA9IGluc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTkzQ0Y3
RTE4NDAzNjJDMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRCYXNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEluc3BlY3RvckFnZW50QmFzZS5oOyBwYXRoID0gaW5zcGVjdG9y
L0luc3BlY3RvckFnZW50QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTkz
Q0Y4MDE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEluc3BlY3RvclZhbHVlcy5jcHA7IHBhdGggPSBpbnNw
ZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTU5M0NGODExODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBJbnNwZWN0b3JWYWx1ZXMuaDsgcGF0aCA9IGluc3BlY3Rv
ci9JbnNwZWN0b3JWYWx1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU5M0NG
ODQxODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHA7
IHBhdGggPSBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE1OTNDRjg1MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JB
Z2VudFJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEluc3BlY3Rv
ckFnZW50UmVnaXN0cnkuaDsgcGF0aCA9IGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1OTQ1NThFMTgyNDVFREUwMENDMzg0
MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwOyBwYXRoID0gaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTU5NDU1OTAxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2Jq
ZWN0RGVidWdnYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNTk0NTU5MTE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0RGVidWdnYWJs
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjcyNyw2ICsyNzU1LDcgQEAKIAkJ
CQlBN0MyMjVDQzEzOTk4MUYxMDBGRjE2NjIgLyogS2V5d29yZExvb2t1cEdlbmVyYXRvci5weSAq
LywKIAkJCQkxNDMyRUJENzBBMzRDQUQ0MDA3MTdCOUYgLyogQVBJICovLAogCQkJCTk2ODhDQjEy
MEVEMTJCNEUwMDFENjQ5RiAvKiBhc3NlbWJsZXIgKi8sCisJCQkJQTU0Q0YyRUExODRFQTczOTAw
MjM3RjE5IC8qIGJpbmRpbmdzICovLAogCQkJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBi
eXRlY29kZSAqLywKIAkJCQk3RTM5RDgxRDBFQzM4RUZBMDAzQUYxMUEgLyogYnl0ZWNvbXBpbGVy
ICovLAogCQkJCTFDOTA1MTNFMEJBOUU4ODMwMDgxRTlEMCAvKiBDb25maWd1cmF0aW9ucyAqLywK
QEAgLTQyMDEsMTEgKzQyMzAsMzIgQEAKIAkJCXBhdGggPSBieXRlY29kZTsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUE1NENGMkVBMTg0RUE3MzkwMDIzN0YxOSAvKiBiaW5k
aW5ncyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQTU1
RDkzQTMxODUwMTJBODAwNDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgKi8sCisJCQkJ
QTU1RDkzQTQxODUwMTJBODAwNDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oICovLAorCQkJ
CUE1NENGMkY3MTg0RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuY3BwICovLAorCQkJCUE1
NENGMkY4MTg0RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuaCAqLywKKwkJCQlBNTRDRjJG
MjE4NEVBQjI0MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuY3BwICovLAorCQkJCUE1NENGMkYzMTg0
RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5oICovLAorCQkJKTsKKwkJCXBhdGggPSBiaW5k
aW5nczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUE1QkExNURGMTgyMzQw
OTIwMEE4MkU2OSAvKiBpbnNwZWN0b3IgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAogCQkJCUE1QkExNUUwMTgyMzQwOUQwMEE4MkU2OSAvKiByZW1vdGUgKi8sCisJ
CQkJQTU5M0NGN0UxODQwMzYyQzAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50QmFzZS5oICovLAor
CQkJCUE1OTNDRjg0MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNw
cCAqLywKKwkJCQlBNTkzQ0Y4NTE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdp
c3RyeS5oICovLAorCQkJCUE1OTNDRjdBMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5jcHAgKi8sCisJCQkJQTU5M0NGN0IxODQwMzYwMzAwQkZDRTI3IC8qIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggKi8sCiAJCQkJQTU5NDU1OTQxODI0NzlFQjAwQ0Mz
ODQzIC8qIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oICovLAorCQkJCUE1NUQ5M0FCMTg1MTRG
NzkwMDQwMERFRCAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5oICovLAorCQkJCUE1OTNDRjgwMTg0
MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwICovLAorCQkJCUE1OTNDRjgxMTg0
MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuaCAqLywKIAkJCSk7CiAJCQluYW1lID0g
aW5zcGVjdG9yOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTQzNDYsNiArNDM5Niw3
IEBACiAJCQkJMEYyQjY2REYxN0I2QjVBQjAwQTdBRTNGIC8qIERhdGFWaWV3LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQ0QyMDM0QTBFMTcxMzVFMDAyQzdFODIgLyogRGF0ZUNvbnN0cnVjdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MTM1OUNGMzBGREQ4OUFEMDAyMDYxODAgLyogRGF0ZUNvbnZl
cnNpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUE1OTNDRjdGMTg0MDM2MkMwMEJGQ0UyNyAvKiBJ
bnNwZWN0b3JBZ2VudEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTE2NjAyMEUxOTk3QjQw
MDgwNjZERCAvKiBEYXRlSW5zdGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QTE1NjMyMTA5
NjYzNjUwMDZGQTI2MCAvKiBEYXRlSW5zdGFuY2VDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNEMjAzNEMwRTE3MTM1RTAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICov
LApAQCAtNDM3Nyw2ICs0NDI4LDcgQEAKIAkJCQkwRjgzNjRCNzE2NEIwQzExMDA1MzMyOUEgLyog
REZHQnJhbmNoRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUEwMDlDMDE4MzFBMjJE
MDBDRjg3MTEgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZF
QzlEQzUxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0J5dGVDb2RlUGFyc2VyLmggaW4gSGVhZGVycyAq
LywKKwkJCQlBNTkzQ0Y4NzE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3Ry
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNTZDMzYxNjI3QjBBRDAwN0YyNzgzIC8qIERGR0Nh
bGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjdCMjk0QjE0QzNDRDJGMDA3QzNEQjEgLyogREZHQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkZGQzk1ODE0RUY5MEEyMDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCBpbiBIZWFk
ZXJzICovLApAQCAtNDQ2NCw2ICs0NTE2LDcgQEAKIAkJCQk4NkVDOUREMzEzMjhERjgyMDAyQjJB
RDcgLyogREZHU3BlY3VsYXRpdmVKSVQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5RDAwMTdB
MEI4Q0MwMDc3M0FEOCAvKiBERkdTU0FDb252ZXJzaW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGOUZCNEY1MTdGQ0I5MTcwMENCNjdGOCAvKiBERkdTdGFja0xheW91dFBoYXNlLmggaW4g
SGVhZGVycyAqLywKKwkJCQlBNTkzQ0Y4MzE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFs
dWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYzOTQ3ODE1RENFMzRCMDA2QTU5N0MgLyogREZH
U3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3QTIxNDZC
MjhDQzAwQ0YyNDQyIC8qIERGR1RodW5rcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEzMjgx
N0Q1MUY1NzAwQ0EyQzQwIC8qIERGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuaCBpbiBIZWFk
ZXJzICovLApAQCAtNDQ5OCw2ICs0NTUxLDcgQEAKIAkJCQkwRkIxMDU4NjE2NzU0ODEyMDBGOEFC
NkUgLyogRXhpdEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0FCMTRCQ0Y1QkIwMDg4
NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYz
ODE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQlB
NTRDRjJGNjE4NEVBQjI0MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE3QThBRjM5MTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDY0QXJyYXkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMjRFNTQzMTdFQTlGNTkwMEFCQjIxNyAvKiBGUFJJbmZvLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkZDOTlENTE4NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKQEAgLTQ4NDQsNiArNDg5OCw3IEBACiAJCQkJ
MEYwQ0Q0QzIxNUYxQTYwNzAwMzJGMUMwIC8qIFB1dERpcmVjdEluZGV4TW9kZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY5RkM4QzUxNEUxQjYwNDAwRDUyQUUwIC8qIFB1dEtpbmQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0N0I4NDYzMEU2REU2QjEwMDQ3NzVBNCAvKiBQdXRQcm9wZXJ0eVNsb3Qu
aCBpbiBIZWFkZXJzICovLAorCQkJCUE1OTNDRjdEMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNjBBQzIxNjc0MEY4
MzAwMDI5Nzc5IC8qIFJlZHVjZVdoaXRlc3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThD
NDVBMEUxNkY1Q0QwMEIzNDQ2MCAvKiBSZWdFeHAuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNzEy
QjNGMTFDN0IyMjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oIGluIEhlYWRlcnMgKi8sCkBAIC00
ODg1LDYgKzQ5NDAsNyBAQAogCQkJCTBGRDgyRTU0MTQxREFFRUUwMDE3OUM5NCAvKiBTcGVjdWxh
dGVkVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdDMUVBRjIxNzk4N0FCNjAwMjk5REIyIC8q
IFN0YWNrVmlzaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRERjA0REExNkIzOTk2RDAwMTZB
NTEzIC8qIFN0YXRpY1Byb3BlcnR5QW5hbHlzaXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1NENG
MkZBMTg0RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTE0Q0E5NThCMTZBQjUwREUwMDkzOEEwNiAvKiBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNzMwQjYxMjEyNTAwNjhGMDA5RDI1QjEgLyogU3RyaWN0RXZhbEFj
dGl2YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDY2MEUxNkY1Q0QwMEIzNDQ2MCAv
KiBTdHJpbmdDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCkBAIC00OTQ3LDYgKzUwMDMsNyBA
QAogCQkJCTE0QkU3RDMzMTcxMzVDRjQwMEQxODA3QSAvKiBXZWFrSW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTdDQTNBRTQxN0RBNDFBRTAwNjUzOEFGIC8qIFdlYWtNYXBDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdDQTNBRUMxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtN
YXBEYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTVEOTNBQzE4NTE0Rjc5MDA0MDBERUQgLyog
SW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Q0EzQUU2MTdEQTQx
QUUwMDY1MzhBRiAvKiBXZWFrTWFwUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDIw
QkU3QjEwQUE2RERCMDBGNDU1RDIgLyogV2Vha1JhbmRvbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyNDJEQTcxM0YzQjFFODAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCBpbiBI
ZWFkZXJzICovLApAQCAtNDk2MCw2ICs1MDE3LDcgQEAKIAkJCQk0NTE1MzlCOTEyREM5OTQ1MDBF
RjdBQzQgLyogWWFyci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2NjZFQ0QxODM2QjM3RTAwRDAx
N0YxIC8qIERGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODY3MDRCODUxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJJbnRlcnByZXRlci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQTU1RDkzQTYxODUwMTJBODAwNDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9u
Q2FsbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY3MDRCODcxMkRCQTMzNzAwQTlGRTdCIC8qIFlh
cnJKSVQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NzA0Qjg4MTJEQkEzMzcwMEE5RkU3QiAvKiBZ
YXJyUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI4QTEyREJBMzM3MDBBOUZFN0Ig
LyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovLApAQCAtNTQ2NSw2ICs1NTIzLDcgQEAKIAkJ
CQkwRkY0Mjc2NDE1OTFBMUNDMDA0Q0I5RkYgLyogREZHRGlzYXNzZW1ibGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRDgxQUQyMTU0RkI0RUUwMDk4M0U3MiAvKiBERkdEb21pbmF0b3JzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDNDODI2MTQxMTVENDAwMEZEODFDQiAvKiBERkdEcml2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTU5M0NGODIxODQwMzc3MTAwQkZDRTI3IC8qIElu
c3BlY3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkYwRjE5RTE2QjcyQTBCMDA1
REY5NUIgLyogREZHRWRnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzRERUY5MzE4MkQ5OTE0
MDA1MjJDMjIgLyogTWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEZCQzBBRTcxNDk2QzdDNDAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxlLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtNTUyMCw2ICs1NTc5LDcgQEAKIAkJCQkwRkJFMEY3NjE2QzFEQjBGMDA4MkM1RTgg
LyogREZHVW5pZmljYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjM0QjE0OTE2
RDQyMDEwMDAxQ0RBNUEgLyogREZHVXNlS2luZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjNC
M0EyQjE1NDc1MDAwMDAzRUQwRkYgLyogREZHVmFsaWRhdGUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQTU1RDkzQTUxODUwMTJBODAwNDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjJCREM0RjE1MjI4QkYzMDBDRDg5MTAgLyogREZHVmFsdWVTb3Vy
Y2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEREJGQjUxNjY2RUVEODAwQzU1RkVGIC8qIERG
R1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyQkRDNTEx
NTIyOEZGRDAwQ0Q4OTEwIC8qIERGR1ZhcmlhYmxlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC01NTQwLDYgKzU2MDAsNyBAQAogCQkJCTBGNTZBMUQ1MTUwMDFDRjQwMDI5OTJCMSAvKiBFeGVj
dXRpb25Db3VudGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1OTQ1NTkyMTgyNDc0NDcwMEND
Mzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEZCMTA1ODUxNjc1NDgwRjAwRjhBQjZFIC8qIEV4aXRLaW5kLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUE1NENGMkY1MTg0RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkVBMEExQzE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEwQTFFMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEwQTA5MTcwNTEz
REIwMEJCNzIyQyAvKiBGVExDYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01NTY5
LDYgKzU2MzAsNyBAQAogCQkJCTBGOUQzMzlBMTgwM0FEQjcwMDczQzJCQyAvKiBGVExTdGFja01h
cHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMTYxNzA2QkI5MDAwQkI3MjJDIC8qIEZU
TFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkUxMTcxNzhFMUMwMDY5MEM3RiAv
KiBGVExUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTU5M0NGN0MxODQwMzYwMzAwQkZD
RTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMjM1QkUzMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExWYWx1ZUZvcm1hdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxNDdGMzlDQjEwN0VDMzc2MDA0MjdBNDggLyogRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkYwRjE5RjE2QjcyQTE3MDA1REY5NUIgLyogRnVu
Y3Rpb25FeGVjdXRhYmxlRHVtcC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU3MTksNiArNTc4MSw3
IEBACiAJCQkJODZFQkYyRkYxNTYwRjA2QTAwOEU5MjIyIC8qIE5hbWVDb25zdHJ1Y3Rvci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk4NkVCRjMwMTE1NjBGMDZBMDA4RTkyMjIgLyogTmFtZUluc3Rh
bmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUJGMzAzMTU2MEYwNkEwMDhFOTIyMiAvKiBO
YW1lUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1NENGMkY5MTg0RUFFREEwMDIz
N0YxOSAvKiBTY3JpcHRPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0NjlERTAxMDdF
QzdFNzAwNjUwNDQ2IC8qIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTQ0NjlERTExMDdFQzdFNzAwNjUwNDQ2IC8qIE5hdGl2ZUVycm9yUHJvdG90eXBlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTE0OEYyMUI3MTA3RUM1NDcwMDQyRUMyQyAvKiBOb2Rlcy5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTU4MzgsNiArNTkwMSw3IEBACiAJCQkJODY3MDRCODQxMkRC
QTMzNzAwQTlGRTdCIC8qIFlhcnJJbnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
NjcwNEI4NjEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk4NjcwNEI4OTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQTU5M0NGODYxODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0
cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY3MDRCNDIxMkRCOEE4MTAwQTlGRTdCIC8qIFlh
cnJTeW50YXhDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCnNpbWlsYXJpdHkgaW5kZXggNzglCnJl
bmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5j
cHAKcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlv
bkNhbGwuY3BwCmluZGV4IDJlYTJiNGIuLmYyNjQ3ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKQEAgLTEsNCArMSw1IEBA
CiAvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzEsMTcgKzMyLDE1IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCiAKLSNpbmNsdWRlICJKU01haW5U
aHJlYWRFeGVjU3RhdGUuaCIKKyNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJTY3JpcHRW
YWx1ZS5oIgotCi0jaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotbmFtZXNwYWNlIFdlYkNv
cmUgeworbmFtZXNwYWNlIERlcHJlY2F0ZWQgewogCi12b2lkIFNjcmlwdENhbGxBcmd1bWVudEhh
bmRsZXI6OmFwcGVuZEFyZ3VtZW50KGNvbnN0IFNjcmlwdE9iamVjdCYgYXJndW1lbnQpCit2b2lk
IFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KGNvbnN0IERlcHJlY2F0
ZWQ6OlNjcmlwdE9iamVjdCYgYXJndW1lbnQpCiB7CiAgICAgaWYgKGFyZ3VtZW50LnNjcmlwdFN0
YXRlKCkgIT0gbV9leGVjKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTAs
NyArNDksNyBAQCB2b2lkIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50
KGNvbnN0IFNjcmlwdE9iamVjdCYgYXJndW1lbnQpCiAgICAgbV9hcmd1bWVudHMuYXBwZW5kKGFy
Z3VtZW50LmpzT2JqZWN0KCkpOwogfQogCi12b2lkIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6
OmFwcGVuZEFyZ3VtZW50KGNvbnN0IFNjcmlwdFZhbHVlJiBhcmd1bWVudCkKK3ZvaWQgU2NyaXB0
Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQoY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmIGFyZ3VtZW50KQogewogICAgIG1fYXJndW1lbnRzLmFwcGVuZChhcmd1bWVudC5q
c1ZhbHVlKCkpOwogfQpAQCAtNTgsNyArNTcsNyBAQCB2b2lkIFNjcmlwdENhbGxBcmd1bWVudEhh
bmRsZXI6OmFwcGVuZEFyZ3VtZW50KGNvbnN0IFNjcmlwdFZhbHVlJiBhcmd1bWVudCkKIHZvaWQg
U2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQoY29uc3QgU3RyaW5nJiBh
cmd1bWVudCkKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhtX2V4ZWMpOwotICAgIG1fYXJndW1l
bnRzLmFwcGVuZChqc1N0cmluZ1dpdGhDYWNoZShtX2V4ZWMsIGFyZ3VtZW50KSk7CisgICAgbV9h
cmd1bWVudHMuYXBwZW5kKGpzU3RyaW5nKG1fZXhlYywgYXJndW1lbnQpKTsKIH0KIAogdm9pZCBT
Y3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1bWVudChjb25zdCBjaGFyKiBhcmd1
bWVudCkKQEAgLTY3LDcgKzY2LDcgQEAgdm9pZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyOjph
cHBlbmRBcmd1bWVudChjb25zdCBjaGFyKiBhcmd1bWVudCkKICAgICBtX2FyZ3VtZW50cy5hcHBl
bmQoanNTdHJpbmcobV9leGVjLCBTdHJpbmcoYXJndW1lbnQpKSk7CiB9CiAKLXZvaWQgU2NyaXB0
Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQoSlNDOjpKU1ZhbHVlIGFyZ3VtZW50
KQordm9pZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1bWVudChKU1ZhbHVl
IGFyZ3VtZW50KQogewogICAgIG1fYXJndW1lbnRzLmFwcGVuZChhcmd1bWVudCk7CiB9CkBAIC0x
MDcsMTQgKzEwNiwxNSBAQCB2b2lkIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVuZEFy
Z3VtZW50KGJvb2wgYXJndW1lbnQpCiAgICAgbV9hcmd1bWVudHMuYXBwZW5kKGpzQm9vbGVhbihh
cmd1bWVudCkpOwogfQogCi1TY3JpcHRGdW5jdGlvbkNhbGw6OlNjcmlwdEZ1bmN0aW9uQ2FsbChj
b25zdCBTY3JpcHRPYmplY3QmIHRoaXNPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSkKK1Njcmlw
dEZ1bmN0aW9uQ2FsbDo6U2NyaXB0RnVuY3Rpb25DYWxsKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlw
dE9iamVjdCYgdGhpc09iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBTY3JpcHRGdW5jdGlvbkNh
bGxIYW5kbGVyIGNhbGxIYW5kbGVyKQogICAgIDogU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcih0
aGlzT2JqZWN0LnNjcmlwdFN0YXRlKCkpCisgICAgLCBtX2NhbGxIYW5kbGVyKGNhbGxIYW5kbGVy
KQogICAgICwgbV90aGlzT2JqZWN0KHRoaXNPYmplY3QpCiAgICAgLCBtX25hbWUobmFtZSkKIHsK
IH0KIAotU2NyaXB0VmFsdWUgU2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKGJvb2wmIGhhZEV4Y2Vw
dGlvbikKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIFNjcmlwdEZ1bmN0aW9uQ2FsbDo6Y2FsbChi
b29sJiBoYWRFeGNlcHRpb24pCiB7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBtX3RoaXNP
YmplY3QuanNPYmplY3QoKTsKIApAQCAtMTIzLDMyICsxMjMsMzIgQEAgU2NyaXB0VmFsdWUgU2Ny
aXB0RnVuY3Rpb25DYWxsOjpjYWxsKGJvb2wmIGhhZEV4Y2VwdGlvbikKICAgICBKU1ZhbHVlIGZ1
bmN0aW9uID0gdGhpc09iamVjdC0+Z2V0KG1fZXhlYywgSWRlbnRpZmllcihtX2V4ZWMsIG1fbmFt
ZSkpOwogICAgIGlmIChtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAgICAgICAgIGhhZEV4Y2Vw
dGlvbiA9IHRydWU7Ci0gICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOworICAgICAgICByZXR1
cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKTsKICAgICB9CiAKICAgICBDYWxsRGF0YSBjYWxs
RGF0YTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxs
RGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKLSAgICAgICAgcmV0dXJu
IFNjcmlwdFZhbHVlKCk7CisgICAgICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSgp
OwogCiAgICAgSlNWYWx1ZSByZXN1bHQ7Ci0gICAgaWYgKGlzTWFpblRocmVhZCgpKQotICAgICAg
ICByZXN1bHQgPSBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwobV9leGVjLCBmdW5jdGlvbiwg
Y2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzT2JqZWN0LCBtX2FyZ3VtZW50cyk7CisgICAgaWYgKG1f
Y2FsbEhhbmRsZXIpCisgICAgICAgIHJlc3VsdCA9IG1fY2FsbEhhbmRsZXIobV9leGVjLCBmdW5j
dGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzT2JqZWN0LCBtX2FyZ3VtZW50cyk7CiAgICAg
ZWxzZQogICAgICAgICByZXN1bHQgPSBKU0M6OmNhbGwobV9leGVjLCBmdW5jdGlvbiwgY2FsbFR5
cGUsIGNhbGxEYXRhLCB0aGlzT2JqZWN0LCBtX2FyZ3VtZW50cyk7CiAKICAgICBpZiAobV9leGVj
LT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICBoYWRFeGNlcHRpb24gPSB0cnVlOwotICAgICAg
ICByZXR1cm4gU2NyaXB0VmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlKCk7CiAgICAgfQogCi0gICAgcmV0dXJuIFNjcmlwdFZhbHVlKG1fZXhlYy0+dm0oKSwg
cmVzdWx0KTsKKyAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUobV9leGVjLT52bSgp
LCByZXN1bHQpOwogfQogCi1TY3JpcHRWYWx1ZSBTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwoKQor
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgU2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKCkKIHsKICAg
ICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwogICAgIHJldHVybiBjYWxsKGhhZEV4Y2VwdGlv
bik7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIERlcHJlY2F0
ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9u
Q2FsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2Fs
bC5oCnNpbWlsYXJpdHkgaW5kZXggNTAlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmgKaW5kZXggNTZmYTQ3Yy4uMDRiMmFmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxs
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2Fs
bC5oCkBAIC0xLDQgKzEsNSBAQAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTMxLDU3ICszMiw1NiBA
QAogI2lmbmRlZiBTY3JpcHRGdW5jdGlvbkNhbGxfaAogI2RlZmluZSBTY3JpcHRGdW5jdGlvbkNh
bGxfaAogCisjaW5jbHVkZSAiQXJnTGlzdC5oIgogI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgot
I2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCi0KLSNpbmNsdWRlIDxydW50aW1lL0FyZ0xpc3QuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci0gICAg
Y2xhc3MgSlNWYWx1ZTsKK2NsYXNzIEpTVmFsdWU7CiB9CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LSAgICBjbGFzcyBTY3JpcHRWYWx1ZTsKK25hbWVzcGFjZSBEZXByZWNhdGVkIHsKIAotICAgIGNs
YXNzIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXIgewotICAgIHB1YmxpYzoKLSAgICAgICAgU2Ny
aXB0Q2FsbEFyZ3VtZW50SGFuZGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpIDogbV9leGVjKHN0
YXRlKSB7IH0KK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFNjcmlwdENhbGxBcmd1bWVudEhhbmRs
ZXIgeworcHVibGljOgorICAgIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXIoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlKSA6IG1fZXhlYyhzdGF0ZSkgeyB9CiAKLSAgICAgICAgdm9pZCBhcHBlbmRBcmd1
bWVudChjb25zdCBTY3JpcHRPYmplY3QmKTsKLSAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVudChj
b25zdCBTY3JpcHRWYWx1ZSYpOwotICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGNvbnN0IGNo
YXIqKTsKLSAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVudChjb25zdCBTdHJpbmcmKTsKLSAgICAg
ICAgdm9pZCBhcHBlbmRBcmd1bWVudChKU0M6OkpTVmFsdWUpOwotICAgICAgICB2b2lkIGFwcGVu
ZEFyZ3VtZW50KGxvbmcpOwotICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGxvbmcgbG9uZyk7
Ci0gICAgICAgIHZvaWQgYXBwZW5kQXJndW1lbnQodW5zaWduZWQgaW50KTsKLSAgICAgICAgdm9p
ZCBhcHBlbmRBcmd1bWVudCh1bnNpZ25lZCBsb25nKTsKLSAgICAgICAgdm9pZCBhcHBlbmRBcmd1
bWVudChpbnQpOwotICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGJvb2wpOworICAgIHZvaWQg
YXBwZW5kQXJndW1lbnQoY29uc3QgU2NyaXB0T2JqZWN0Jik7CisgICAgdm9pZCBhcHBlbmRBcmd1
bWVudChjb25zdCBTY3JpcHRWYWx1ZSYpOworICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoY29uc3Qg
Y2hhciopOworICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoY29uc3QgU3RyaW5nJik7CisgICAgdm9p
ZCBhcHBlbmRBcmd1bWVudChKU0M6OkpTVmFsdWUpOworICAgIHZvaWQgYXBwZW5kQXJndW1lbnQo
bG9uZyk7CisgICAgdm9pZCBhcHBlbmRBcmd1bWVudChsb25nIGxvbmcpOworICAgIHZvaWQgYXBw
ZW5kQXJndW1lbnQodW5zaWduZWQgaW50KTsKKyAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KHVuc2ln
bmVkIGxvbmcpOworICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoaW50KTsKKyAgICB2b2lkIGFwcGVu
ZEFyZ3VtZW50KGJvb2wpOwogCi0gICAgcHJvdGVjdGVkOgotICAgICAgICBKU0M6Ok1hcmtlZEFy
Z3VtZW50QnVmZmVyIG1fYXJndW1lbnRzOwotICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogbV9leGVj
OworcHJvdGVjdGVkOgorICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgbV9hcmd1bWVudHM7
CisgICAgSlNDOjpFeGVjU3RhdGUqIG1fZXhlYzsKIAotICAgIHByaXZhdGU6Ci0gICAgICAgIC8v
IE1hcmtlZEFyZ3VtZW50QnVmZmVyIG11c3QgYmUgc3RhY2sgYWxsb2NhdGVkLCBzbyBwcmV2ZW50
IGhlYXAKLSAgICAgICAgLy8gYWxsb2Mgb2YgU2NyaXB0RnVuY3Rpb25DYWxsIGFzIHdlbGwuCi0g
ICAgICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigweGJhZGJlZWYpOyB9Ci0gICAgICAgIHZv
aWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDB4YmFkYmVlZik7IH0KLSAgICB9OworcHJpdmF0ZToK
KyAgICAvLyBNYXJrZWRBcmd1bWVudEJ1ZmZlciBtdXN0IGJlIHN0YWNrIGFsbG9jYXRlZCwgc28g
cHJldmVudCBoZWFwCisgICAgLy8gYWxsb2Mgb2YgU2NyaXB0RnVuY3Rpb25DYWxsIGFzIHdlbGwu
CisgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDB4YmFkYmVlZik7IH0KKyAgICB2b2lkKiBv
cGVyYXRvciBuZXdbXShzaXplX3QpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqPigweGJhZGJlZWYpOyB9Cit9OwogCi0gICAgY2xhc3MgU2NyaXB0
RnVuY3Rpb25DYWxsIDogcHVibGljIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXIgewotICAgIHB1
YmxpYzoKLSAgICAgICAgU2NyaXB0RnVuY3Rpb25DYWxsKGNvbnN0IFNjcmlwdE9iamVjdCYgdGhp
c09iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICAgICAgU2NyaXB0VmFsdWUgY2FsbChi
b29sJiBoYWRFeGNlcHRpb24pOwotICAgICAgICBTY3JpcHRWYWx1ZSBjYWxsKCk7CitjbGFzcyBK
U19FWFBPUlRfUFJJVkFURSBTY3JpcHRGdW5jdGlvbkNhbGwgOiBwdWJsaWMgU2NyaXB0Q2FsbEFy
Z3VtZW50SGFuZGxlciB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0M6OkpTVmFsdWUgKCpTY3Jp
cHRGdW5jdGlvbkNhbGxIYW5kbGVyKShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVl
IGZ1bmN0aW9uT2JqZWN0LCBKU0M6OkNhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBKU0M6OkNhbGxE
YXRhJiBjYWxsRGF0YSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0
JiBhcmdzKTsKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwoY29uc3QgU2NyaXB0T2JqZWN0JiB0aGlz
T2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIFNjcmlwdEZ1bmN0aW9uQ2FsbEhhbmRsZXIgaGFu
ZGxlciA9IG51bGxwdHIpOworICAgIFNjcmlwdFZhbHVlIGNhbGwoYm9vbCYgaGFkRXhjZXB0aW9u
KTsKKyAgICBTY3JpcHRWYWx1ZSBjYWxsKCk7CiAKLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIFNj
cmlwdE9iamVjdCBtX3RoaXNPYmplY3Q7Ci0gICAgICAgIFN0cmluZyBtX25hbWU7Ci0gICAgfTsK
K3Byb3RlY3RlZDoKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGxIYW5kbGVyIG1fY2FsbEhhbmRsZXI7
CisgICAgU2NyaXB0T2JqZWN0IG1fdGhpc09iamVjdDsKKyAgICBTdHJpbmcgbV9uYW1lOworfTsK
IAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgRGVwcmVjYXRlZAogCiAj
ZW5kaWYgLy8gU2NyaXB0RnVuY3Rpb25DYWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
aW5kaW5ncy9TY3JpcHRPYmplY3QuY3BwCnNpbWlsYXJpdHkgaW5kZXggNzElCmNvcHkgZnJvbSBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50LmNwcApjb3B5IHRvIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRPYmplY3QuY3BwCmluZGV4IDE1YmI3
YTguLmNjZjdhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJD
b25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3Jp
cHRPYmplY3QuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQpAQCAtMjksMzIgKzMwLDIyIEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKK3VzaW5n
IG5hbWVzcGFjZSBKU0M7CiAKLSNpbmNsdWRlICJXb3JrZXJDb25zb2xlQWdlbnQuaCIKK25hbWVz
cGFjZSBEZXByZWNhdGVkIHsKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1Xb3JrZXJDb25zb2xl
QWdlbnQ6OldvcmtlckNvbnNvbGVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikK
LSAgICA6IEluc3BlY3RvckNvbnNvbGVBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBpbmplY3Rl
ZFNjcmlwdE1hbmFnZXIpCi17Ci19Ci0KLVdvcmtlckNvbnNvbGVBZ2VudDo6fldvcmtlckNvbnNv
bGVBZ2VudCgpCitTY3JpcHRPYmplY3Q6OlNjcmlwdE9iamVjdChFeGVjU3RhdGUqIHNjcmlwdFN0
YXRlLCBKU09iamVjdCogb2JqZWN0KQorICAgIDogU2NyaXB0VmFsdWUoc2NyaXB0U3RhdGUtPnZt
KCksIG9iamVjdCkKKyAgICAsIG1fc2NyaXB0U3RhdGUoc2NyaXB0U3RhdGUpCiB7CiB9CiAKLXZv
aWQgV29ya2VyQ29uc29sZUFnZW50OjphZGRJbnNwZWN0ZWROb2RlKEVycm9yU3RyaW5nKiBlcnJv
ciwgaW50KQorU2NyaXB0T2JqZWN0OjpTY3JpcHRPYmplY3QoRXhlY1N0YXRlKiBzY3JpcHRTdGF0
ZSwgY29uc3QgU2NyaXB0VmFsdWUmIHNjcmlwdFZhbHVlKQorICAgIDogU2NyaXB0VmFsdWUoc2Ny
aXB0U3RhdGUtPnZtKCksIHNjcmlwdFZhbHVlLmpzVmFsdWUoKSkKKyAgICAsIG1fc2NyaXB0U3Rh
dGUoc2NyaXB0U3RhdGUpCiB7Ci0gICAgKmVycm9yID0gImFkZEluc3BlY3RlZE5vZGUgaXMgbm90
IHN1cHBvcnRlZCBmb3Igd29ya2VycyI7CiB9CiAKLWJvb2wgV29ya2VyQ29uc29sZUFnZW50Ojpk
ZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKK30gLy8gbmFt
ZXNwYWNlIERlcHJlY2F0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JCYXNlQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3Jp
cHRPYmplY3QuaApzaW1pbGFyaXR5IGluZGV4IDY0JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFzZUFnZW50LmgKcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRPYmplY3QuaAppbmRleCA4YjkwOTM4Li44ZjdiMGRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFzZUFnZW50LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5oCkBAIC0x
LDUgKzEsNiBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjgsMzYg
KzI5LDI3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgSW5zcGVjdG9yQmFzZUFn
ZW50X2gKLSNkZWZpbmUgSW5zcGVjdG9yQmFzZUFnZW50X2gKKyNpZm5kZWYgU2NyaXB0T2JqZWN0
X2gKKyNkZWZpbmUgU2NyaXB0T2JqZWN0X2gKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVycy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKIAotbmFtZXNwYWNlIFdlYkNv
cmUgeworbmFtZXNwYWNlIERlcHJlY2F0ZWQgewogCi1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWw7Ci1jbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwotCi1jbGFzcyBJbnNwZWN0b3JCYXNl
QWdlbnQgeworY2xhc3MgU2NyaXB0T2JqZWN0IDogcHVibGljIFNjcmlwdFZhbHVlIHsKIHB1Ymxp
YzoKLSAgICB2aXJ0dWFsIH5JbnNwZWN0b3JCYXNlQWdlbnQoKSB7IH0KKyAgICBKU19FWFBPUlRf
UFJJVkFURSBTY3JpcHRPYmplY3QoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0Kik7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgU2NyaXB0T2JqZWN0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
U2NyaXB0VmFsdWUmKTsKKyAgICBTY3JpcHRPYmplY3QoKSA6IG1fc2NyaXB0U3RhdGUobnVsbHB0
cikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlzY2FyZEFnZW50KCkgeyB9CisgICAgSlNDOjpKU09iamVjdCog
anNPYmplY3QoKSBjb25zdCB7IHJldHVybiBhc09iamVjdChqc1ZhbHVlKCkpOyB9CisgICAgSlND
OjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRTdGF0ZTsg
fQogCiBwcm90ZWN0ZWQ6Ci0gICAgSW5zcGVjdG9yQmFzZUFnZW50KGNvbnN0IFN0cmluZyYgbmFt
ZSwgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICAgICAgOiBt
X2luc3RydW1lbnRpbmdBZ2VudHMoaW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICAgICAgLCBtX25h
bWUobmFtZSkKLSAgICB7Ci0gICAgfQotCi0gICAgSW5zdHJ1bWVudGluZ0FnZW50cyogbV9pbnN0
cnVtZW50aW5nQWdlbnRzOwotICAgIFN0cmluZyBtX25hbWU7CisgICAgSlNDOjpFeGVjU3RhdGUq
IG1fc2NyaXB0U3RhdGU7CiB9OwogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVz
cGFjZSBEZXByZWNhdGVkCiAKLSNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JCYXNlQWdlbnRf
aCkKKyNlbmRpZiAvLyBTY3JpcHRPYmplY3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRp
bmdzL1NjcmlwdFZhbHVlLmNwcApzaW1pbGFyaXR5IGluZGV4IDcyJQpyZW5hbWUgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAKcmVuYW1lIHRvIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAKaW5kZXggNmQ5ZmIxZC4uNWM2
MGIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAw
NywgMjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKGMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKQEAgLTcsMTMgKzcsMTMgQEAKICAqIGFyZSBtZXQ6CiAgKgogICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLiAKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICAqIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCiAgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgogICoK
ICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCiAgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECkBAIC0zMCwyMSArMzAsMjAg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogCisjaW5j
bHVkZSAiQVBJQ2FzdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgotI2luY2x1ZGUg
IkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgotCi0j
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTVmFsdWVSZWYuaD4KLQotI2luY2x1ZGUgPGhlYXAvU3Ryb25nLmg+Ci0jaW5jbHVkZSA8
cnVudGltZS9KU0xvY2suaD4KKyNpbmNsdWRlICJKU0xvY2suaCIKIAogdXNpbmcgbmFtZXNwYWNl
IEpTQzsKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsK
K25hbWVzcGFjZSBEZXByZWNhdGVkIHsKIAotYm9vbCBTY3JpcHRWYWx1ZTo6Z2V0U3RyaW5nKEpT
Qzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgU3RyaW5nJiByZXN1bHQpIGNvbnN0CitTY3JpcHRW
YWx1ZTo6flNjcmlwdFZhbHVlKCkKK3sKK30KKworYm9vbCBTY3JpcHRWYWx1ZTo6Z2V0U3RyaW5n
KEV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIFN0cmluZyYgcmVzdWx0KSBjb25zdAogewogICAgIGlm
ICghbV92YWx1ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTQsNyArNTMsNyBAQCBib29s
IFNjcmlwdFZhbHVlOjpnZXRTdHJpbmcoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBTdHJp
bmcmIHJlc3VsdCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotU3RyaW5nIFNjcmlwdFZh
bHVlOjp0b1N0cmluZyhKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUpIGNvbnN0CitTdHJpbmcg
U2NyaXB0VmFsdWU6OnRvU3RyaW5nKEV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUpIGNvbnN0CiB7CiAg
ICAgU3RyaW5nIHJlc3VsdCA9IG1fdmFsdWUuZ2V0KCkudG9TdHJpbmcoc2NyaXB0U3RhdGUpLT52
YWx1ZShzY3JpcHRTdGF0ZSk7CiAgICAgLy8gSGFuZGxlIHRoZSBjYXNlIHdoZXJlIGFuIGV4Y2Vw
dGlvbiBpcyB0aHJvd24gYXMgcGFydCBvZiBpbnZva2luZyB0b1N0cmluZyBvbiB0aGUgb2JqZWN0
LgpAQCAtNjMsMTIgKzYyLDExIEBAIFN0cmluZyBTY3JpcHRWYWx1ZTo6dG9TdHJpbmcoSlNDOjpF
eGVjU3RhdGUqIHNjcmlwdFN0YXRlKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWJv
b2wgU2NyaXB0VmFsdWU6OmlzRXF1YWwoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25z
dCBTY3JpcHRWYWx1ZSYgYW5vdGhlclZhbHVlKSBjb25zdAorYm9vbCBTY3JpcHRWYWx1ZTo6aXNF
cXVhbChFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcHRWYWx1ZSYgYW5vdGhlclZh
bHVlKSBjb25zdAogewogICAgIGlmIChoYXNOb1ZhbHVlKCkpCiAgICAgICAgIHJldHVybiBhbm90
aGVyVmFsdWUuaGFzTm9WYWx1ZSgpOwotCi0gICAgcmV0dXJuIEpTVmFsdWVJc0VxdWFsKHRvUmVm
KHNjcmlwdFN0YXRlKSwgdG9SZWYoc2NyaXB0U3RhdGUsIGpzVmFsdWUoKSksIHRvUmVmKHNjcmlw
dFN0YXRlLCBhbm90aGVyVmFsdWUuanNWYWx1ZSgpKSwgMCk7CisgICAgcmV0dXJuIEpTVmFsdWVJ
c0VxdWFsKHRvUmVmKHNjcmlwdFN0YXRlKSwgdG9SZWYoc2NyaXB0U3RhdGUsIGpzVmFsdWUoKSks
IHRvUmVmKHNjcmlwdFN0YXRlLCBhbm90aGVyVmFsdWUuanNWYWx1ZSgpKSwgbnVsbHB0cik7CiB9
CiAKIGJvb2wgU2NyaXB0VmFsdWU6OmlzTnVsbCgpIGNvbnN0CkBAIC05OCwzMyArOTYsMTcgQEAg
Ym9vbCBTY3JpcHRWYWx1ZTo6aXNGdW5jdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIGdldENhbGxE
YXRhKG1fdmFsdWUuZ2V0KCksIGNhbGxEYXRhKSAhPSBDYWxsVHlwZU5vbmU7CiB9CiAKLVBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTY3JpcHRWYWx1ZTo6c2VyaWFsaXplKEpTQzo6
RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2Vw
dGlvbnMpCi17Ci0gICAgcmV0dXJuIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHNjcmlw
dFN0YXRlLCBqc1ZhbHVlKCksIDAsIDAsIHRocm93RXhjZXB0aW9ucyk7Ci19Ci0KLVBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTY3JpcHRWYWx1ZTo6c2VyaWFsaXplKEpTQzo6RXhl
Y1N0YXRlKiBzY3JpcHRTdGF0ZSwgTWVzc2FnZVBvcnRBcnJheSogbWVzc2FnZVBvcnRzLCBBcnJh
eUJ1ZmZlckFycmF5KiBhcnJheUJ1ZmZlcnMsIGJvb2wmIGRpZFRocm93KQotewotICAgIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKHNjcmlwdFN0YXRlLCBqc1ZhbHVlKCksIG1lc3NhZ2VQb3J0cywgYXJy
YXlCdWZmZXJzKTsKLSAgICBkaWRUaHJvdyA9IHNjcmlwdFN0YXRlLT5oYWRFeGNlcHRpb24oKTsK
LSAgICByZXR1cm4gc2VyaWFsaXplZFZhbHVlLnJlbGVhc2UoKTsKLX0KLQotU2NyaXB0VmFsdWUg
U2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlKiB2YWx1ZSwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4
Y2VwdGlvbnMpCi17Ci0gICAgcmV0dXJuIFNjcmlwdFZhbHVlKHNjcmlwdFN0YXRlLT52bSgpLCB2
YWx1ZS0+ZGVzZXJpYWxpemUoc2NyaXB0U3RhdGUsIHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCksIDAsIHRocm93RXhjZXB0aW9ucykpOwotfQotCiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKLXN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBqc1RvSW5zcGVjdG9yVmFsdWUo
SlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBKU1ZhbHVlIHZhbHVlLCBpbnQgbWF4RGVwdGgp
CitzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4ganNUb0luc3BlY3RvclZhbHVlKEV4
ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIEpTVmFsdWUgdmFsdWUsIGludCBtYXhEZXB0aCkKIHsKICAg
ICBpZiAoIXZhbHVlKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKCFtYXhE
ZXB0aCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAg
bWF4RGVwdGgtLTsKIAogICAgIGlmICh2YWx1ZS5pc051bGwoKSB8fCB2YWx1ZS5pc1VuZGVmaW5l
ZCgpKQpAQCAtMTM3LDYgKzExOSw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVl
PiBqc1RvSW5zcGVjdG9yVmFsdWUoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlCiAgICAgICAg
IFN0cmluZyBzID0gdmFsdWUuZ2V0U3RyaW5nKHNjcmlwdFN0YXRlKTsKICAgICAgICAgcmV0dXJu
IEluc3BlY3RvclN0cmluZzo6Y3JlYXRlKFN0cmluZyhzLmNoYXJhY3RlcnMoKSwgcy5sZW5ndGgo
KSkpOwogICAgIH0KKwogICAgIGlmICh2YWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgIGlmIChp
c0pTQXJyYXkodmFsdWUpKSB7CiAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGlu
c3BlY3RvckFycmF5ID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOwpAQCAtMTQ2LDcgKzEyOSw3
IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBqc1RvSW5zcGVjdG9yVmFsdWUo
SlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlCiAgICAgICAgICAgICAgICAgSlNWYWx1ZSBlbGVt
ZW50ID0gYXJyYXktPmdldEluZGV4KHNjcmlwdFN0YXRlLCBpKTsKICAgICAgICAgICAgICAgICBS
ZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGVsZW1lbnRWYWx1ZSA9IGpzVG9JbnNwZWN0b3JWYWx1ZShz
Y3JpcHRTdGF0ZSwgZWxlbWVudCwgbWF4RGVwdGgpOwogICAgICAgICAgICAgICAgIGlmICghZWxl
bWVudFZhbHVlKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICAgICAgaW5zcGVjdG9yQXJyYXktPnB1
c2hWYWx1ZShlbGVtZW50VmFsdWUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJu
IGluc3BlY3RvckFycmF5OwpAQCAtMTYwLDIwICsxNDMsMjEgQEAgc3RhdGljIFBhc3NSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+IGpzVG9JbnNwZWN0b3JWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0
U3RhdGUKICAgICAgICAgICAgIEpTVmFsdWUgcHJvcGVydHlWYWx1ZSA9IG9iamVjdC0+Z2V0KHNj
cmlwdFN0YXRlLCBuYW1lKTsKICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gaW5z
cGVjdG9yVmFsdWUgPSBqc1RvSW5zcGVjdG9yVmFsdWUoc2NyaXB0U3RhdGUsIHByb3BlcnR5VmFs
dWUsIG1heERlcHRoKTsKICAgICAgICAgICAgIGlmICghaW5zcGVjdG9yVmFsdWUpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
ICAgICAgICBpbnNwZWN0b3JPYmplY3QtPnNldFZhbHVlKFN0cmluZyhuYW1lLmNoYXJhY3RlcnMo
KSwgbmFtZS5sZW5ndGgoKSksIGluc3BlY3RvclZhbHVlKTsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gaW5zcGVjdG9yT2JqZWN0OwogICAgIH0KKwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPElu
c3BlY3RvclZhbHVlPiBTY3JpcHRWYWx1ZTo6dG9JbnNwZWN0b3JWYWx1ZShKU0M6OkV4ZWNTdGF0
ZSogc2NyaXB0U3RhdGUpIGNvbnN0CitQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBTY3JpcHRW
YWx1ZTo6dG9JbnNwZWN0b3JWYWx1ZShFeGVjU3RhdGUqIHNjcmlwdFN0YXRlKSBjb25zdAogewot
ICAgIEpTQzo6SlNMb2NrSG9sZGVyIGhvbGRlcihzY3JpcHRTdGF0ZSk7CisgICAgSlNMb2NrSG9s
ZGVyIGhvbGRlcihzY3JpcHRTdGF0ZSk7CiAgICAgcmV0dXJuIGpzVG9JbnNwZWN0b3JWYWx1ZShz
Y3JpcHRTdGF0ZSwgbV92YWx1ZS5nZXQoKSwgSW5zcGVjdG9yVmFsdWU6Om1heERlcHRoKTsKIH0K
ICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9
IC8vIG5hbWVzcGFjZSBEZXByZWNhdGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Nj
cmlwdFZhbHVlLmgKc2ltaWxhcml0eSBpbmRleCA3NiUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaApyZW5hbWUgdG8gU291cmNlL0phdmFTY3JpcHRD
b3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmgKaW5kZXggMDEyMTBmNS4uZDVmYWRlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuaApAQCAtMSwxMCArMSwxMSBA
QAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqIAorICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQogICogbWV0
OgotICogCisgKgogICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKQEAgLTE0LDcgKzE1
LDcgQEAKICAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKICAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCiAgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICogCisgKgogICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwog
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKICAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgpAQCAtMzEsMjUgKzMyLDI0IEBACiAjaWZuZGVm
IFNjcmlwdFZhbHVlX2gKICNkZWZpbmUgU2NyaXB0VmFsdWVfaAogCi0jaW5jbHVkZSAiU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmgiCi0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKLSNpbmNsdWRlIDxo
ZWFwL1N0cm9uZy5oPgotI2luY2x1ZGUgPGhlYXAvU3Ryb25nSW5saW5lcy5oPgotI2luY2x1ZGUg
PHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvT3BlcmF0aW9ucy5oPgor
I2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJPcGVyYXRpb25zLmgiCisjaW5jbHVk
ZSAiU3Ryb25nLmgiCisjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQorbmFtZXNwYWNlIEluc3BlY3RvciB7CiBjbGFzcyBJbnNwZWN0b3JWYWx1
ZTsKLWNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKK30KIAotY2xhc3MgU2NyaXB0VmFsdWUg
eworbmFtZXNwYWNlIERlcHJlY2F0ZWQgeworCitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBTY3Jp
cHRWYWx1ZSB7CiBwdWJsaWM6CiAgICAgU2NyaXB0VmFsdWUoKSB7IH0KLSAgICBTY3JpcHRWYWx1
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKSA6IG1fdmFsdWUodm0sIHZhbHVlKSB7
fQotICAgIHZpcnR1YWwgflNjcmlwdFZhbHVlKCkge30KKyAgICBTY3JpcHRWYWx1ZShKU0M6OlZN
JiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKSA6IG1fdmFsdWUodm0sIHZhbHVlKSB7IH0KKyAgICB2
aXJ0dWFsIH5TY3JpcHRWYWx1ZSgpOwogCiAgICAgSlNDOjpKU1ZhbHVlIGpzVmFsdWUoKSBjb25z
dCB7IHJldHVybiBtX3ZhbHVlLmdldCgpOyB9CiAgICAgYm9vbCBnZXRTdHJpbmcoSlNDOjpFeGVj
U3RhdGUqLCBTdHJpbmcmIHJlc3VsdCkgY29uc3Q7CkBAIC02NSwxOCArNjUsMTQgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdFZhbHVlJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gbV92YWx1ZSA9PSBvdGhlci5tX3ZhbHVlOyB9CiAKLSAgICBQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplKEpTQzo6RXhlY1N0YXRlKiwgU2VyaWFsaXph
dGlvbkVycm9yTW9kZSA9IFRocm93aW5nKTsKLSAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gc2VyaWFsaXplKEpTQzo6RXhlY1N0YXRlKiwgTWVzc2FnZVBvcnRBcnJheSosIEFy
cmF5QnVmZmVyQXJyYXkqLCBib29sJik7Ci0gICAgc3RhdGljIFNjcmlwdFZhbHVlIGRlc2VyaWFs
aXplKEpTQzo6RXhlY1N0YXRlKiwgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgU2VyaWFsaXphdGlv
bkVycm9yTW9kZSA9IFRocm93aW5nKTsKLQogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgUGFz
c1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdG9JbnNwZWN0b3JWYWx1ZShKU0M6OkV4ZWNTdGF0ZSop
IGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gdG9JbnNw
ZWN0b3JWYWx1ZShKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0OwogI2VuZGlmCiAKIHByaXZhdGU6CiAg
ICAgSlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPiBtX3ZhbHVlOwogfTsKIAotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgRGVwcmVjYXRlZAogCiAjZW5kaWYgLy8gU2NyaXB0
VmFsdWVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFn
ZW50UmVnaXN0cnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QWdlbnRCYXNlLmgKc2ltaWxhcml0eSBpbmRleCA2OCUKY29weSBmcm9tIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgKY29weSB0byBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oCmluZGV4IDRmZDAzNTMuLjIw
YWQ3MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2Vu
dFJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JBZ2VudEJhc2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjQsMjkg
KzI0LDMzIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgSW5zcGVjdG9yQWdlbnRS
ZWdpc3RyeV9oCi0jZGVmaW5lIEluc3BlY3RvckFnZW50UmVnaXN0cnlfaAorI2lmbmRlZiBJbnNw
ZWN0b3JBZ2VudEJhc2VfaAorI2RlZmluZSBJbnNwZWN0b3JBZ2VudEJhc2VfaAogCi0jaW5jbHVk
ZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
LW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBjbGFzcyBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKK2NsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsK
IAotY2xhc3MgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeSB7CitjbGFzcyBJbnNwZWN0b3JBZ2VudEJh
c2UgewogcHVibGljOgotICAgIHZvaWQgYXBwZW5kKFBhc3NPd25QdHI8SW5zcGVjdG9yQmFzZUFn
ZW50Pik7CisgICAgdmlydHVhbCB+SW5zcGVjdG9yQWdlbnRCYXNlKCkgeyB9CiAKLSAgICB2b2lk
IGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopOwotICAgIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQoKTsKLSAgICB2b2lkIGRpc2NhcmRBZ2VudHMoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCos
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB3aWxs
RGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzY2Fy
ZEFnZW50KCkgeyB9CiAKLXByaXZhdGU6Ci0gICAgVmVjdG9yPE93blB0cjxJbnNwZWN0b3JCYXNl
QWdlbnQ+PiBtX2FnZW50czsKK3Byb3RlY3RlZDoKKyAgICBJbnNwZWN0b3JBZ2VudEJhc2UoY29u
c3QgU3RyaW5nJiBuYW1lKQorICAgICAgICA6IG1fbmFtZShuYW1lKQorICAgIHsKKyAgICB9CisK
KyAgICBTdHJpbmcgbV9uYW1lOwogfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIEluc3BlY3Rvcgog
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JB
Z2VudFJlZ2lzdHJ5X2gpCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yQWdlbnRCYXNlX2gp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdp
c3RyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50
UmVnaXN0cnkuY3BwCnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcApyZW5hbWUgdG8gU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcAppbmRl
eCAwOTlkMWEzLi40NmU5MjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcApAQCAtMjUsMTQgKzI1LDEzIEBACiAg
Ki8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLQogI2lu
Y2x1ZGUgIkluc3BlY3RvckFnZW50UmVnaXN0cnkuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUgewor
I2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLXZvaWQgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6YXBw
ZW5kKFBhc3NPd25QdHI8SW5zcGVjdG9yQmFzZUFnZW50PiBhZ2VudCkKK25hbWVzcGFjZSBJbnNw
ZWN0b3IgeworCit2b2lkIEluc3BlY3RvckFnZW50UmVnaXN0cnk6OmFwcGVuZChQYXNzT3duUHRy
PEluc3BlY3RvckFnZW50QmFzZT4gYWdlbnQpCiB7CiAgICAgbV9hZ2VudHMuYXBwZW5kKGFnZW50
KTsKIH0KQEAgLTU1LDYgKzU0LDYgQEAgdm9pZCBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5OjpkaXNj
YXJkQWdlbnRzKCkKICAgICAgICAgbV9hZ2VudHNbaV0tPmRpc2NhcmRBZ2VudCgpOwogfQogCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlm
IC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgKc2ltaWxhcml0eSBpbmRleCA4NyUKY29weSBm
cm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgKY29w
eSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0
cnkuaAppbmRleCA0ZmQwMzUzLi5jYjY1NzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oCkBAIC0yNywyNiArMjcsMjcg
QEAKICNpZm5kZWYgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeV9oCiAjZGVmaW5lIEluc3BlY3RvckFn
ZW50UmVnaXN0cnlfaAogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVk
ZSAiSW5zcGVjdG9yQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJ
bnNwZWN0b3IgewogCiBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKK2NsYXNzIElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKIAotY2xhc3MgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeSB7
CitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5IHsKIHB1Ymxp
YzoKLSAgICB2b2lkIGFwcGVuZChQYXNzT3duUHRyPEluc3BlY3RvckJhc2VBZ2VudD4pOworICAg
IHZvaWQgYXBwZW5kKFBhc3NPd25QdHI8SW5zcGVjdG9yQWdlbnRCYXNlPik7CiAKICAgICB2b2lk
IGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopOwogICAgIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQoKTsKICAgICB2b2lkIGRpc2NhcmRBZ2VudHMoKTsKIAogcHJpdmF0ZToKLSAg
ICBWZWN0b3I8T3duUHRyPEluc3BlY3RvckJhc2VBZ2VudD4+IG1fYWdlbnRzOworICAgIFZlY3Rv
cjxPd25QdHI8SW5zcGVjdG9yQWdlbnRCYXNlPj4gbV9hZ2VudHM7CiB9OwogCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vICFkZWZp
bmVkKEluc3BlY3RvckFnZW50UmVnaXN0cnlfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcApzaW1pbGFy
aXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcAppbmRleCBiZmE0YzRiLi5j
MjY2ODUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCkBAIC0yOSwxMiArMjksMTIgQEAKIAogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JGb3J3YXJkaW5nLmgiCisj
aW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
VmFsdWVzLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSW5zcGVj
dG9yIHsKIAogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6Q2FsbGJh
Y2tCYXNlKFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IGJhY2tlbmREaXNw
YXRjaGVyLCBpbnQgaWQpCiAgICAgOiBtX2JhY2tlbmREaXNwYXRjaGVyKGJhY2tlbmREaXNwYXRj
aGVyKQpAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6
OnJlcG9ydFByb3RvY29sRXJyb3IoY29uc3QgbG9uZyogY29uc3QgY2FsbElkLCBDCiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFJldHVyblZhbHVlVHlwZSwgdHlwZW5hbWUgVmFsdWVUeXBlLCB0eXBl
bmFtZSBEZWZhdWx0VmFsdWVUeXBlPgotUmV0dXJuVmFsdWVUeXBlIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyOjpnZXRQcm9wZXJ0eVZhbHVlKEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25z
dCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3RvckFycmF5KiBwcm90b2Nv
bEVycm9ycywgRGVmYXVsdFZhbHVlVHlwZSBkZWZhdWx0VmFsdWUsIGJvb2wgKCphc01ldGhvZCko
SW5zcGVjdG9yVmFsdWUqLCBWYWx1ZVR5cGUqKSwgY29uc3QgY2hhciogdHlwZU5hbWUpCitzdGF0
aWMgUmV0dXJuVmFsdWVUeXBlIGdldFByb3BlcnR5VmFsdWUoSW5zcGVjdG9yT2JqZWN0KiBvYmpl
Y3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yQXJyYXkq
IHByb3RvY29sRXJyb3JzLCBEZWZhdWx0VmFsdWVUeXBlIGRlZmF1bHRWYWx1ZSwgYm9vbCAoKmFz
TWV0aG9kKShJbnNwZWN0b3JWYWx1ZSosIFZhbHVlVHlwZSopLCBjb25zdCBjaGFyKiB0eXBlTmFt
ZSkKIHsKICAgICBBU1NFUlQocHJvdG9jb2xFcnJvcnMpOwogCkBAIC0yNTksNiArMjU5LDYgQEAg
UGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6Omdl
dEFycmF5KEluc3BlY3Rvck9iamVjdCoKICAgICByZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZTxQYXNz
UmVmUHRyPEluc3BlY3RvckFycmF5PiwgUmVmUHRyPEluc3BlY3RvckFycmF5PiwgSW5zcGVjdG9y
QXJyYXkqPihvYmplY3QsIG5hbWUsIHZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLCBudWxscHRy
LCBBc01ldGhvZEJyaWRnZXM6OmFzQXJyYXksICJBcnJheSIpOwogfQogCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vIEVOQUJMRShJ
TlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaApzaW1pbGFyaXR5IGluZGV4IDg3JQpyZW5hbWUgZnJv
bSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaApy
ZW5hbWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlci5oCmluZGV4IGE2ZTRkMmYuLjBhNTVhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaApA
QCAtMjcsMTIgKzI3LDEyIEBACiAjaWZuZGVmIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyX2gK
ICNkZWZpbmUgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJfaAogCi0jaW5jbHVkZSAiSW5zcGVj
dG9yVHlwZUJ1aWxkZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFj
ZSBJbnNwZWN0b3IgewogCiBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKIGNsYXNz
IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKQEAgLTQ3LDE1ICs0NywxMyBAQCBwcm90ZWN0ZWQ6
CiAgICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRj
aGVyOwogfTsKIAotY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgOiBwdWJsaWMgUmVm
Q291bnRlZDxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4geworY2xhc3MgSlNfRVhQT1JUX1BS
SVZBVEUgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBjcmVhdGUoSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKik7Ci0gICAgdmlydHVhbCB+SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIoKSB7IH0KIAot
ICAgIGNsYXNzIENhbGxiYWNrQmFzZTogcHVibGljIFJlZkNvdW50ZWQ8Q2FsbGJhY2tCYXNlPiB7
CisgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgQ2FsbGJhY2tCYXNlIDogcHVibGljIFJlZkNv
dW50ZWQ8Q2FsbGJhY2tCYXNlPiB7CiAgICAgcHVibGljOgogICAgICAgICBDYWxsYmFja0Jhc2Uo
UGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4sIGludCBpZCk7Ci0gICAgICAg
IHZpcnR1YWwgfkNhbGxiYWNrQmFzZSgpIHsgfQogCiAgICAgICAgIGJvb2wgaXNBY3RpdmUoKSBj
b25zdDsKICAgICAgICAgdm9pZCBzZW5kRmFpbHVyZShjb25zdCBFcnJvclN0cmluZyYpOwpAQCAt
OTgsMTMgKzk2LDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBpbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwpIDogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KSB7IH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJldHVyblZhbHVlVHlwZSwgdHlwZW5hbWUg
VmFsdWVUeXBlLCB0eXBlbmFtZSBEZWZhdWx0VmFsdWVUeXBlPgotICAgIHN0YXRpYyBSZXR1cm5W
YWx1ZVR5cGUgZ2V0UHJvcGVydHlWYWx1ZShJbnNwZWN0b3JPYmplY3QqIG9iamVjdCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0b3JBcnJheSogcHJvdG9jb2xF
cnJvcnMsIERlZmF1bHRWYWx1ZVR5cGUgZGVmYXVsdFZhbHVlLCBib29sICgqYXNNZXRob2QpKElu
c3BlY3RvclZhbHVlKiwgVmFsdWVUeXBlKiksIGNvbnN0IGNoYXIqIHR5cGVOYW1lKTsKLQogICAg
IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CiAg
ICAgSGFzaE1hcDxTdHJpbmcsIEluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVy
Kj4gbV9kaXNwYXRjaGVyczsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFt
ZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXJfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yVHlwZUJ1aWxkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li44ZWE3NmVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JUeXBlQnVpbGRlci5oCkBAIC0wLDAgKzEsMzM3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMSBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnNw
ZWN0b3JUeXBlQnVpbGRlcl9oCisjZGVmaW5lIEluc3BlY3RvclR5cGVCdWlsZGVyX2gKKworI2lm
IEVOQUJMRShJTlNQRUNUT1IpCisKKyNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKyNpbmNs
dWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25h
bWVzcGFjZSBJbnNwZWN0b3IgeworCituYW1lc3BhY2UgVHlwZUJ1aWxkZXIgeworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorY2xhc3MgT3B0T3V0cHV0IHsKK3B1YmxpYzoKKyAgICBPcHRPdXRwdXQo
KSA6IG1fYXNzaWduZWQoZmFsc2UpIHsgfQorCisgICAgdm9pZCBvcGVyYXRvcj0oVCB2YWx1ZSkK
KyAgICB7CisgICAgICAgIG1fdmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgbV9hc3NpZ25lZCA9IHRy
dWU7CisgICAgfQorCisgICAgYm9vbCBpc0Fzc2lnbmVkKCkgY29uc3QgeyByZXR1cm4gbV9hc3Np
Z25lZDsgfQorCisgICAgVCBnZXRWYWx1ZSgpCisgICAgeworICAgICAgICBBU1NFUlQoaXNBc3Np
Z25lZCgpKTsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWU7CisgICAgfQorCitwcml2YXRlOgorICAg
IFQgbV92YWx1ZTsKKyAgICBib29sIG1fYXNzaWduZWQ7CisKKyAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShPcHRPdXRwdXQpOworfTsKKworCisvLyBBIHNtYWxsIHRyYW5zaWVudCB3cmFwcGVyIGFy
b3VuZCBpbnQgdHlwZSwgdGhhdCBjYW4gYmUgdXNlZCBhcyBhIGZ1bmNpdG9uIHBhcmFtZXRlciB0
eXBlCisvLyBjbGV2ZXJseSBkaXNhbGxvd2luZyBDKysgaW1wbGljaXQgY2FzdHMgZnJvbSBmbG9h
dCBvciBkb3VibGUuCitjbGFzcyBFeGFjdGx5SW50IHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgorICAgIEV4YWN0bHlJbnQoVCB0KSA6IG1fdmFsdWUoY2FzdF90b19pbnQ8VD4o
dCkpIHsgfQorICAgIEV4YWN0bHlJbnQoKSB7IH0KKworICAgIG9wZXJhdG9yIGludCgpIHsgcmV0
dXJuIG1fdmFsdWU7IH0KKworcHJpdmF0ZToKKyAgICBpbnQgbV92YWx1ZTsKKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CisgICAgc3RhdGljIGludCBjYXN0X3RvX2ludChUKSB7IHJldHVybiBU
OjpkZWZhdWx0X2Nhc2VfY2FzdF9pc19ub3Rfc3VwcG9ydGVkKCk7IH0KK307CisKK3RlbXBsYXRl
PD4KK2lubGluZSBpbnQgRXhhY3RseUludDo6Y2FzdF90b19pbnQ8aW50PihpbnQgaSkgeyByZXR1
cm4gaTsgfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgaW50IEV4YWN0bHlJbnQ6OmNhc3RfdG9faW50
PHVuc2lnbmVkIGludD4odW5zaWduZWQgaW50IGkpIHsgcmV0dXJuIGk7IH0KKworI2lmICFBU1NF
UlRfRElTQUJMRUQKK2NsYXNzIFJ1bnRpbWVDYXN0SGVscGVyIHsKK3B1YmxpYzoKKyAgICB0ZW1w
bGF0ZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZSBUWVBFPgorICAgIHN0YXRpYyB2b2lkIGFzc2VydFR5
cGUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHZhbHVlLT50
eXBlKCkgPT0gVFlQRSk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgYXNzZXJ0QW55KEluc3Bl
Y3RvclZhbHVlKikKKyAgICB7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgYXNzZXJ0SW50KElu
c3BlY3RvclZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIGRvdWJsZSB2OworICAgICAgICBi
b29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNOdW1iZXIoJnYpOworICAgICAgICBBU1NFUlRfVU5VU0VE
KGNhc3RSZXMsIGNhc3RSZXMpOworICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8ZG91YmxlPihz
dGF0aWNfY2FzdDxpbnQ+KHYpKSA9PSB2KTsKKyAgICB9Cit9OworI2VuZGlmCisKKworLy8gVGhp
cyBjbGFzcyBwcm92aWRlcyAiVHJhaXRzIiB0eXBlIGZvciB0aGUgaW5wdXQgdHlwZSBULiBJdCBp
cyBwcm9ncmFtbWVkIHVzaW5nIEMrKyB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbgorLy8gdGVjaG5p
cXVlLiBCeSBkZWZhdWx0IGl0IHNpbXBseSB0YWtlcyAiSXRlbVRyYWl0cyIgdHlwZSBmcm9tIFQs
IGJ1dCBpdCBkb2Vzbid0IHdvcmsgd2l0aCB0aGUgYmFzZSB0eXBlcy4KK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+CitzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyIHsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6
Okl0ZW1UcmFpdHMgVHJhaXRzOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNzIEFy
cmF5IDogcHVibGljIEluc3BlY3RvckFycmF5QmFzZSB7Citwcml2YXRlOgorICAgIEFycmF5KCkg
eyB9CisKKyAgICBJbnNwZWN0b3JBcnJheSogb3BlbkFjY2Vzc29ycygpCisgICAgeworICAgICAg
ICBDT01QSUxFX0FTU0VSVChzaXplb2YoSW5zcGVjdG9yQXJyYXkpID09IHNpemVvZihBcnJheTxU
PiksIGNhbm5vdF9jYXN0KTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3BlY3RvckFy
cmF5Kj4oc3RhdGljX2Nhc3Q8SW5zcGVjdG9yQXJyYXlCYXNlKj4odGhpcykpOworICAgIH0KKwor
cHVibGljOgorICAgIHZvaWQgYWRkSXRlbShQYXNzUmVmUHRyPFQ+IHZhbHVlKQorICAgIHsKKyAg
ICAgICAgQXJyYXlJdGVtSGVscGVyPFQ+OjpUcmFpdHM6OnB1c2hSZWZQdHIodGhpcy0+b3BlbkFj
Y2Vzc29ycygpLCB2YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBhZGRJdGVtKFQgdmFsdWUpCisg
ICAgeworICAgICAgICBBcnJheUl0ZW1IZWxwZXI8VD46OlRyYWl0czo6cHVzaFJhdyh0aGlzLT5v
cGVuQWNjZXNzb3JzKCksIHZhbHVlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxB
cnJheTxUPj4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXJy
YXk8VD4oKSk7CisgICAgfQorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXJyYXk8VD4+IHJ1bnRp
bWVDYXN0KFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQorICAgIHsKKyAgICAgICAg
UmVmUHRyPEluc3BlY3RvckFycmF5PiBhcnJheTsKKyAgICAgICAgYm9vbCBjYXN0UmVzID0gdmFs
dWUtPmFzQXJyYXkoJmFycmF5KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChjYXN0UmVzLCBjYXN0
UmVzKTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIGFzc2VydENvcnJlY3RWYWx1ZShh
cnJheS5nZXQoKSk7CisjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICBDT01QSUxF
X0FTU0VSVChzaXplb2YoQXJyYXk8VD4pID09IHNpemVvZihJbnNwZWN0b3JBcnJheSksIHR5cGVf
Y2FzdF9wcm9ibGVtKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFycmF5PFQ+Kj4oc3Rh
dGljX2Nhc3Q8SW5zcGVjdG9yQXJyYXlCYXNlKj4oYXJyYXkuZ2V0KCkpKTsKKyAgICB9CisKKyNp
ZiAhQVNTRVJUX0RJU0FCTEVECisgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKElu
c3BlY3RvclZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJh
eT4gYXJyYXk7CisgICAgICAgIGJvb2wgY2FzdFJlcyA9IHZhbHVlLT5hc0FycmF5KCZhcnJheSk7
CisgICAgICAgIEFTU0VSVF9VTlVTRUQoY2FzdFJlcywgY2FzdFJlcyk7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBhcnJheS0+bGVuZ3RoKCk7IGkrKykKKyAgICAgICAgICAgIEFy
cmF5SXRlbUhlbHBlcjxUPjo6VHJhaXRzOjp0ZW1wbGF0ZSBhc3NlcnRDb3JyZWN0VmFsdWU8VD4o
YXJyYXktPmdldChpKS5nZXQoKSk7CisgICAgfQorI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQK
K307CisKK3N0cnVjdCBTdHJ1Y3RJdGVtVHJhaXRzIHsKKyAgICBzdGF0aWMgdm9pZCBwdXNoUmVm
UHRyKEluc3BlY3RvckFycmF5KiBhcnJheSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFs
dWUpCisgICAgeworICAgICAgICBhcnJheS0+cHVzaFZhbHVlKHZhbHVlKTsKKyAgICB9CisKKyNp
ZiAhQVNTRVJUX0RJU0FCTEVECisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBzdGF0aWMg
dm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQorICAgIHsKKyAg
ICAgICAgVDo6YXNzZXJ0Q29ycmVjdFZhbHVlKHZhbHVlKTsKKyAgICB9CisjZW5kaWYgLy8gIUFT
U0VSVF9ESVNBQkxFRAorfTsKKwordGVtcGxhdGU8Pgorc3RydWN0IEFycmF5SXRlbUhlbHBlcjxT
dHJpbmc+IHsKKyAgICBzdHJ1Y3QgVHJhaXRzIHsKKyAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJh
dyhJbnNwZWN0b3JBcnJheSogYXJyYXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGFycmF5LT5wdXNoU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgfQorCisjaWYg
IUFTU0VSVF9ESVNBQkxFRAorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgICAgICBz
dGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQorICAg
ICAgICB7CisgICAgICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0
b3JWYWx1ZTo6VHlwZVN0cmluZz4odmFsdWUpOworICAgICAgICB9CisjZW5kaWYgLy8gIUFTU0VS
VF9ESVNBQkxFRAorICAgIH07Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgQXJyYXlJdGVtSGVs
cGVyPGludD4geworICAgIHN0cnVjdCBUcmFpdHMgeworICAgICAgICBzdGF0aWMgdm9pZCBwdXNo
UmF3KEluc3BlY3RvckFycmF5KiBhcnJheSwgaW50IHZhbHVlKQorICAgICAgICB7CisgICAgICAg
ICAgICBhcnJheS0+cHVzaEludCh2YWx1ZSk7CisgICAgICAgIH0KKworI2lmICFBU1NFUlRfRElT
QUJMRUQKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICAgICAgc3RhdGljIHZvaWQg
YXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydEludCh2YWx1ZSk7CisgICAgICAgIH0K
KyNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECisgICAgfTsKK307CisKK3RlbXBsYXRlPD4KK3N0
cnVjdCBBcnJheUl0ZW1IZWxwZXI8ZG91YmxlPiB7CisgICAgc3RydWN0IFRyYWl0cyB7CisgICAg
ICAgIHN0YXRpYyB2b2lkIHB1c2hSYXcoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBkb3VibGUgdmFs
dWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGFycmF5LT5wdXNoTnVtYmVyKHZhbHVlKTsKKyAg
ICAgICAgfQorCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgorICAgICAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFs
dWUqIHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNz
ZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZU51bWJlcj4odmFsdWUpOworICAgICAgICB9Cisj
ZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAorICAgIH07Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1
Y3QgQXJyYXlJdGVtSGVscGVyPGJvb2w+IHsKKyAgICBzdHJ1Y3QgVHJhaXRzIHsKKyAgICAgICAg
c3RhdGljIHZvaWQgcHVzaFJhdyhJbnNwZWN0b3JBcnJheSogYXJyYXksIGJvb2wgdmFsdWUpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGFycmF5LT5wdXNoQm9vbGVhbih2YWx1ZSk7CisgICAgICAg
IH0KKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
KyAgICAgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2
YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5
cGU8SW5zcGVjdG9yVmFsdWU6OlR5cGVCb29sZWFuPih2YWx1ZSk7CisgICAgICAgIH0KKyNlbmRp
ZiAvLyAhQVNTRVJUX0RJU0FCTEVECisgICAgfTsKK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBB
cnJheUl0ZW1IZWxwZXI8SW5zcGVjdG9yVmFsdWU+IHsKKyAgICBzdHJ1Y3QgVHJhaXRzIHsKKyAg
ICAgICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0b3JBcnJheSogYXJyYXksIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBhcnJh
eS0+cHVzaFZhbHVlKHZhbHVlKTsKKyAgICAgICAgfQorCisjaWYgIUFTU0VSVF9ESVNBQkxFRAor
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgICAgICBzdGF0aWMgdm9pZCBhc3NlcnRD
b3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAg
ICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0QW55KHZhbHVlKTsKKyAgICAgICAgfQorI2VuZGlm
IC8vICFBU1NFUlRfRElTQUJMRUQKKyAgICB9OworfTsKKwordGVtcGxhdGU8Pgorc3RydWN0IEFy
cmF5SXRlbUhlbHBlcjxJbnNwZWN0b3JPYmplY3Q+IHsKKyAgICBzdHJ1Y3QgVHJhaXRzIHsKKyAg
ICAgICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0b3JBcnJheSogYXJyYXksIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBhcnJh
eS0+cHVzaFZhbHVlKHZhbHVlKTsKKyAgICAgICAgfQorCisjaWYgIUFTU0VSVF9ESVNBQkxFRAor
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgICAgICBzdGF0aWMgdm9pZCBhc3NlcnRD
b3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAg
ICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZU9iamVj
dD4odmFsdWUpOworICAgICAgICB9CisjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAorICAgIH07
Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPEluc3BlY3RvckFycmF5
PiB7CisgICAgc3RydWN0IFRyYWl0cyB7CisgICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSZWZQdHIo
SW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiB2YWx1ZSkK
KyAgICAgICAgeworICAgICAgICAgICAgYXJyYXktPnB1c2hBcnJheSh2YWx1ZSk7CisgICAgICAg
IH0KKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
KyAgICAgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2
YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5
cGU8SW5zcGVjdG9yVmFsdWU6OlR5cGVBcnJheT4odmFsdWUpOworICAgICAgICB9CisjZW5kaWYg
Ly8gIUFTU0VSVF9ESVNBQkxFRAorICAgIH07Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
c3RydWN0IEFycmF5SXRlbUhlbHBlcjxUeXBlQnVpbGRlcjo6QXJyYXk8VD4+IHsKKyAgICBzdHJ1
Y3QgVHJhaXRzIHsKKyAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0b3JBcnJh
eSogYXJyYXksIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFQ+PiB2YWx1ZSkKKyAgICAg
ICAgeworICAgICAgICAgICAgYXJyYXktPnB1c2hWYWx1ZSh2YWx1ZSk7CisgICAgICAgIH0KKwor
I2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUz4KKyAgICAg
ICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkK
KyAgICAgICAgeworICAgICAgICAgICAgUzo6YXNzZXJ0Q29ycmVjdFZhbHVlKHZhbHVlKTsKKyAg
ICAgICAgfQorI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKKyAgICB9OworfTsKKworfSAvLyBu
YW1lc3BhY2UgVHlwZUJ1aWxkZXIKKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRp
ZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQorCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yVHlw
ZUJ1aWxkZXJfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JWYWx1ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JW
YWx1ZXMuY3BwCnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKaW5kZXggOGZjZTMyZC4uMjQxOWRl
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMu
Y3BwCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL2R0b2EuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFj
ZSBJbnNwZWN0b3IgewogCiBuYW1lc3BhY2UgewogCkBAIC04MzMsNCArODMzLDQgQEAgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JCYXNpY1ZhbHVlPiBJbnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUoZG91
YmxlIHZhbHVlKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5zcGVjdG9yQmFzaWNWYWx1ZSh2
YWx1ZSkpOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJbnNw
ZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgK
c2ltaWxhcml0eSBpbmRleCA5NSUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclZhbHVlcy5oCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclZhbHVlcy5oCmluZGV4IGNiYjdmNzEuLjAxMmExYTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCkBAIC0zOCwxMiArMzgs
MTIgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJbnNwZWN0
b3IgewogCiBjbGFzcyBJbnNwZWN0b3JBcnJheTsKIGNsYXNzIEluc3BlY3Rvck9iamVjdDsKIAot
Y2xhc3MgSW5zcGVjdG9yVmFsdWUgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnNwZWN0b3JWYWx1ZT4g
eworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yVmFsdWUgOiBwdWJsaWMgUmVmQ291
bnRlZDxJbnNwZWN0b3JWYWx1ZT4gewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4
RGVwdGggPSAxMDAwOwogCkBAIC05MCw3ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgVHlwZSBtX3R5
cGU7CiB9OwogCi1jbGFzcyBJbnNwZWN0b3JCYXNpY1ZhbHVlIDogcHVibGljIEluc3BlY3RvclZh
bHVlIHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvckJhc2ljVmFsdWUgOiBwdWJs
aWMgSW5zcGVjdG9yVmFsdWUgewogcHVibGljOgogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5z
cGVjdG9yQmFzaWNWYWx1ZT4gY3JlYXRlKGJvb2wpOwpAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZh
dGU6CiAgICAgfTsKIH07CiAKLWNsYXNzIEluc3BlY3RvclN0cmluZyA6IHB1YmxpYyBJbnNwZWN0
b3JWYWx1ZSB7CitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JTdHJpbmcgOiBwdWJs
aWMgSW5zcGVjdG9yVmFsdWUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3Bl
Y3RvclN0cmluZz4gY3JlYXRlKGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEluc3BlY3RvclN0cmluZz4gY3JlYXRlKGNvbnN0IGNoYXIqKTsKQEAgLTEzMyw3ICsxMzMsNyBA
QCBwcml2YXRlOgogICAgIFN0cmluZyBtX3N0cmluZ1ZhbHVlOwogfTsKIAotY2xhc3MgSW5zcGVj
dG9yT2JqZWN0QmFzZSA6IHB1YmxpYyBJbnNwZWN0b3JWYWx1ZSB7CitjbGFzcyBKU19FWFBPUlRf
UFJJVkFURSBJbnNwZWN0b3JPYmplY3RCYXNlIDogcHVibGljIEluc3BlY3RvclZhbHVlIHsKIHBy
aXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEluc3BlY3RvclZhbHVl
Pj4gRGljdGlvbmFyeTsKIApAQCAtMTkyLDcgKzE5Miw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIElu
c3BlY3Rvck9iamVjdCA6IHB1YmxpYyBJbnNwZWN0b3JPYmplY3RCYXNlIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZSgpOworICAgIHN0YXRp
YyBKU19FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlKCk7
CiAKICAgICB1c2luZyBJbnNwZWN0b3JPYmplY3RCYXNlOjphc09iamVjdDsKIApAQCAtMjIwLDcg
KzIyMCw3IEBAIHB1YmxpYzoKIH07CiAKIAotY2xhc3MgSW5zcGVjdG9yQXJyYXlCYXNlIDogcHVi
bGljIEluc3BlY3RvclZhbHVlIHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvckFy
cmF5QmFzZSA6IHB1YmxpYyBJbnNwZWN0b3JWYWx1ZSB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBW
ZWN0b3I8UmVmUHRyPEluc3BlY3RvclZhbHVlPj46Oml0ZXJhdG9yIGl0ZXJhdG9yOwogICAgIHR5
cGVkZWYgVmVjdG9yPFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4+Ojpjb25zdF9pdGVyYXRvciBjb25z
dF9pdGVyYXRvcjsKQEAgLTI2MCw3ICsyNjAsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBJbnNwZWN0
b3JBcnJheSA6IHB1YmxpYyBJbnNwZWN0b3JBcnJheUJhc2UgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgSlNfRVhQ
T1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gY3JlYXRlKCk7CiAKICAgICB1
c2luZyBJbnNwZWN0b3JBcnJheUJhc2U6OmFzQXJyYXk7CiAKQEAgLTM2Myw2ICszNjMsNiBAQCBp
bmxpbmUgdm9pZCBJbnNwZWN0b3JBcnJheUJhc2U6OnB1c2hBcnJheShQYXNzUmVmUHRyPEluc3Bl
Y3RvckFycmF5PiB2YWx1ZSkKICAgICBtX2RhdGEuYXBwZW5kKHZhbHVlKTsKIH0KIAotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyAh
ZGVmaW5lZChJbnNwZWN0b3JWYWx1ZXNfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggY2E3YzQ4
My4uMTBhMWZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE1NzgsOSArMTU3OCw3IEBAIHNl
dChXZWJDb3JlX1NPVVJDRVMKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNw
cAogICAgIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAKICAgICBpbnNwZWN0b3Iv
SW5zcGVjdG9yQWdlbnQuY3BwCi0gICAgaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnku
Y3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKLSAg
ICBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCiAgICAgaW5zcGVjdG9y
L0luc3BlY3RvckNTU0FnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2Vu
dC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtMTYxMSw3ICsxNjA5
LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuY3BwCiAgICAg
aW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCi0gICAgaW5zcGVjdG9yL0luc3Bl
Y3RvclZhbHVlcy5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCiAg
ICAgaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuY3BwCiAgICAgaW5zcGVjdG9yL05ldHdv
cmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtMzA0OSwxMiArMzA0NiwxMiBAQCBhZGRfY3VzdG9tX2Nv
bW1hbmQoCiAKICMgQWxsIFdlYiBJbnNwZWN0b3IgZ2VuZXJhdGVkIGZpbGVzIGFyZSBjcmVhdGVk
IHdpdGggdGhpcyBvbmUgY2FsbCB0byBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtCiBhZGRfY3Vz
dG9tX2NvbW1hbmQoCi0gICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9J
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVf
RElSfS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCAke0RFUklWRURfU09VUkNFU19XRUJD
T1JFX0RJUn0vSW5zcGVjdG9yRnJvbnRlbmQuY3BwICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVf
RElSfS9JbnNwZWN0b3JGcm9udGVuZC5oICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9J
bnNwZWN0b3JUeXBlQnVpbGRlci5jcHAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0lu
c3BlY3RvclR5cGVCdWlsZGVyLmgKKyAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09S
RV9ESVJ9L0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5jcHAgJHtERVJJVkVEX1NPVVJDRVNf
V0VCQ09SRV9ESVJ9L0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oICR7REVSSVZFRF9TT1VS
Q0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3JGcm9udGVuZC5jcHAgJHtERVJJVkVEX1NPVVJDRVNf
V0VCQ09SRV9ESVJ9L0luc3BlY3RvckZyb250ZW5kLmggJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09S
RV9ESVJ9L0luc3BlY3RvcldlYlR5cGVCdWlsZGVycy5jcHAgJHtERVJJVkVEX1NPVVJDRVNfV0VC
Q09SRV9ESVJ9L0luc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oCiAgICAgTUFJTl9ERVBFTkRFTkNZ
ICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3IuanNvbgogICAgIERFUEVO
RFMgJHtXRUJDT1JFX0RJUn0vaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkgJHtX
RUJDT1JFX0RJUn0vaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5CiAg
ICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke1dFQkNPUkVfRElSfS9pbnNwZWN0b3Iv
Q29kZUdlbmVyYXRvckluc3BlY3Rvci5weSAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0v
SW5zcGVjdG9yLmpzb24gLS1vdXRwdXRfaF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVf
RElSfSIgLS1vdXRwdXRfY3BwX2RpciAiJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9IiAt
LW91dHB1dF9qc19kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfSIgLS13cml0ZV9h
bHdheXMKICAgICBWRVJCQVRJTSkKLWxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUyAke0RFUklW
RURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmNwcCAk
e0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yRnJvbnRlbmQuY3BwICR7REVS
SVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3JUeXBlQnVpbGRlci5jcHApCitsaXN0
KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0lu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5jcHAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9E
SVJ9L0luc3BlY3RvckZyb250ZW5kLmNwcCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0v
SW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmNwcCkKIAogCiAjIEdlbmVyYXRlIEluc3BlY3Rvck92
ZXJsYXlQYWdlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkYjI0YWQwLi5kY2MwNjhmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjMwIEBACisyMDEzLTEyLTA1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0Bh
cHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBNb3JlIEluc3BlY3RvciBS
ZXF1aXJlZCBDbGFzc2VzIERvd24gaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1MzI0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFydCA0OiBFeHRyYWN0IEluc3BlY3Rv
clR5cGVCdWlsZGVyIGhlbHBlciBmdW5jdGlvbnMKKworICAgICAgICAgIC0gVGhlcmUgaXMgYSBj
aHVuayBvZiBJbnNwZWN0b3JUeXBlQnVpbGRlciB0aGF0IG5ldmVyIGNoYW5nZXMuIEV4dHJhY3Qg
aXQgaW50bworICAgICAgICAgICAgaXRzIG93biBmaWxlLCBJbnNwZWN0b3JUeXBlQnVpbGRlci5o
IGluIEpTQy9pbnNwZWN0b3IsIEluc3BlY3RvciBuYW1lc3BhY2UuCisgICAgICAgICAgLSBUaGlz
IG1vdmVzIFR5cGVCdWlsZGVyIGZyb20gbmFtZXNwYWNlIFdlYkNvcmUgdG8gbmFtZXNwYWNlIElu
c3BlY3RvcgorICAgICAgICAgIC0gUmVuYW1lIHRoZSBXZWJDb3JlIGdlbmVyYXRlZCBJbnNwZWN0
b3JUeXBlQnVpbGRlciB0byBJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMsCisgICAgICAgICAgICBl
dmVudHVhbGx5IHRoZSBDb2RlR2VuZXJhdG9yIHNjcmlwdCB3aWxsIGRvIHRoaXMgZm9yIG1vcmUg
dGhlbiBUeXBlQnVpbGRlcnMKKyAgICAgICAgICAgIGFuZCB0aGVyZSB3aWxsIGJlICJKUyIgVHlw
ZUJ1aWxkZXJzIGFuZCAiV2ViIiBUeXBlQnVpbGRlcnMgZmlsZXMuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVj
dG9yVHlwZUJ1aWxkZXIuaDogQWRkZWQuCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAg
ICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ou
ZmlsdGVyczoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpidWlsZEluc3BlY3Rvck9iamVjdEZvcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQcm9m
aWxlOjpidWlsZEluc3BlY3Rvck9iamVjdEZvckhlYWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0UHJvZmlsZTo6YnVpbGRJbnNwZWN0b3JPYmplY3RGb3JCb3R0b21VcEhlYWQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29k
ZUdlbmVyYXRvckluc3BlY3Rvci5weToKKyAgICAgICAgKENvbW1hbmRSZXR1cm5QYXNzTW9kZWwu
T3B0T3V0cHV0LmdldF9yZXR1cm5fdmFyX3R5cGUpOgorICAgICAgICAoQ29tbWFuZFJldHVyblBh
c3NNb2RlbC5PcHRPdXRwdXQuZ2V0X291dHB1dF9wYXJhbWV0ZXJfdHlwZSk6CisgICAgICAgIChU
eXBlTW9kZWwuRXhhY3RseUludC5nZXRfaW5wdXRfcGFyYW1fdHlwZV90ZXh0KToKKyAgICAgICAg
KFR5cGVNb2RlbC5FeGFjdGx5SW50LmdldF9vcHRfb3V0cHV0X3R5cGVfKToKKyAgICAgICAgKFR5
cGVCaW5kaW5ncy5jcmVhdGVfbmFtZWRfdHlwZV9kZWNsYXJhdGlvbi5IZWxwZXIpOgorICAgICAg
ICAoVHlwZUJpbmRpbmdzLmNyZWF0ZV90eXBlX2RlY2xhcmF0aW9uXy5FbnVtQmluZGluZy5nZXRf
c2V0dGVyX3ZhbHVlX2V4cHJlc3Npb25fcGF0dGVybik6CisgICAgICAgIChJbnNwZWN0b3IpOgor
ICAgICAgICAoQXJyYXlCaW5kaW5nLmdldF9hcnJheV9pdGVtX2NfdHlwZV90ZXh0KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3RvclN0cmluZ3MucHk6CisgICAgICAg
IChJbnNwZWN0b3JGcm9udGVuZF9oKToKKyAgICAgICAgKEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyc19oKToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6bWVzc2FnZVNvdXJjZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Om1lc3Nh
Z2VUeXBlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6bWVzc2FnZUxldmVsVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQpOgorICAgICAgICAq
IGluc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudFNlYXJjaFV0aWxzOjpidWlsZE9iamVjdEZvclNlYXJjaE1hdGNoKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRTZWFyY2hVdGlsczo6c2VhcmNoSW5UZXh0QnlMaW5lcyk6CisgICAgICAg
ICogaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5oOgorICAgICAgICAqIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6ZXZh
bHVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmNhbGxGdW5jdGlvbk9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Ojp3cmFwT2JqZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Ojp3cmFwVGFibGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBOb2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUV2YWxDYWxsKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDo6
aW5zcGVjdEltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBZ2VudDo6aW5zcGVjdCk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQ6OmdldEZyYW1lc1dpdGhNYW5pZmVzdHMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpnZXRBcHBsaWNhdGlvbkNhY2hl
Rm9yRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50OjpidWlsZE9iamVjdEZvckFwcGxpY2F0aW9uQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpidWlsZEFycmF5Rm9yQXBwbGljYXRpb25D
YWNoZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNl
bGVjdG9yUHJvZmlsZTo6dG9JbnNwZWN0b3JPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRJbmxpbmVTdHlsZXNGb3JOb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRDb21wdXRlZFN0eWxlRm9yTm9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0QWxsU3R5bGVTaGVldHMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN0eWxlU2hlZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlVGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UHJvcGVydHlUZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50Ojp0b2dnbGVQcm9wZXJ0eSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UnVsZVNlbGVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjphZGRSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNTU0FnZW50OjpnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXROYW1lZEZsb3dDb2xsZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzdG9wU2VsZWN0b3JQcm9maWxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6c3RvcFNlbGVjdG9yUHJvZmlsZXJJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50Ojphc0luc3BlY3RvclN0
eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmNvbGxlY3RT
dHlsZVNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6dmlhSW5z
cGVjdG9yU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6
ZGV0ZWN0T3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpidWls
ZE9iamVjdEZvclJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1
aWxkQXJyYXlGb3JSdWxlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2Vu
dDo6YnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JSZWdpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvck5hbWVkRmxvdyk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQ2FudmFzQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldERvY3VtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwdXNoQ2hpbGROb2Rlc1Rv
RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnF1ZXJ5U2Vs
ZWN0b3JBbGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2Rl
UGF0aFRvRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Omdl
dEV2ZW50TGlzdGVuZXJzRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01B
Z2VudDo6Z2V0U2VhcmNoUmVzdWx0cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01B
Z2VudDo6cmVzb2x2ZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6
OmdldEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1
aWxkT2JqZWN0Rm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6
YnVpbGRBcnJheUZvckVsZW1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4pOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkQ29tbWl0TG9hZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkSW5zZXJ0RE9NTm9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6c3R5bGVBdHRyaWJ1dGVJbnZhbGlk
YXRlZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGVzY3JpcHRpb25Gb3JET01FdmVudCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmdldERPTVN0b3JhZ2VJdGVt
cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OnN0b3JhZ2VJ
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZERpc3Bh
dGNoRE9NU3RvcmFnZUV2ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6Z2V0RGF0YWJh
c2VUYWJsZU5hbWVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U6OmJpbmQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmJyZWFrcG9pbnRBY3Rpb25UeXBlRm9yU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRCeVVybCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlc29sdmVCcmVha3BvaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNlYXJjaEluQ29udGVudCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRTY3JpcHRTb3Vy
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Z2V0RnVuY3Rp
b25EZXRhaWxzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmV2
YWx1YXRlT25DYWxsRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6Y29tcGlsZVNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpydW5TY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6Y3VycmVudENhbGxGcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6ZGlkUGFyc2VTb3VyY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9m
aWxlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckhlYXBQcm9maWxlckFn
ZW50OjpjcmVhdGVTbmFwc2hvdEhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JI
ZWFwUHJvZmlsZXJBZ2VudDo6Z2V0UHJvZmlsZUhlYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OmdldE9iamVjdEJ5SGVhcE9iamVjdElkKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JMYXllclRyZWVBZ2VudDo6bGF5ZXJzRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JMYXllclRyZWVBZ2VudDo6Z2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJPYmplY3RIaWVy
YXJjaHkpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmdhdGhl
ckxheWVyc1VzaW5nUmVuZGVyTGF5ZXJIaWVyYXJjaHkpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9ySW50UmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6cmVhc29uc0ZvckNvbXBv
c2l0aW5nTGF5ZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHA6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlVHlwZUpzb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZVR5cGVKc29uKToKKyAgICAgICAg
KFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9yQ29va2llKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxk
QXJyYXlGb3JDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6
Z2V0Q29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldFJl
c291cmNlVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJj
aEluUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JTZWFyY2hSZXN1
bHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291
cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0
Rm9yRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpidWlsZE9i
amVjdEZvckZyYW1lVHJlZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2Vu
dC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmNyZWF0ZVByb2ZpbGVIZWFk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Y3JlYXRlU25h
cHNob3RIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6
Z2V0UHJvZmlsZUhlYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJB
Z2VudDo6Z2V0Q1BVUHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxl
ckFnZW50OjpnZXRPYmplY3RCeUhlYXBPYmplY3RJZCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvclByb2ZpbGVyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvclRpbWluZyk6
CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvclJlc291cmNlUmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UpOgorICAgICAgICAo
V2ViQ29yZTo6YnVpbGRPYmplY3RGb3JDYWNoZWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZExvYWRSZXNvdXJjZUZyb21N
ZW1vcnlDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojpi
dWlsZEluaXRpYXRvck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50Ojp3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFr
ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRp
ZFJlY2VpdmVXZWJTb2NrZXRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpkaWRTZW5kV2ViU29ja2V0RnJhbWUpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJ1
bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZEVycm9yUmFuZ2VPYmplY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpwYXJzZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Y2FsbEZ1bmN0aW9uT24pOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRQcm9wZXJ0aWVzKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRTb3Vy
Y2VSYW5nZU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZE1lZGlhT2JqZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OmZpbGxNZWRpYUxpc3RDaGFpbik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JTdHlsZTo6YnVpbGRPYmplY3RGb3JTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JTdHlsZTo6YnVpbGRBcnJheUZvckNvbXB1dGVkU3R5bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclN0eWxlU2hlZXQ6Okluc3BlY3RvclN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTdHlsZVNoZWV0KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU3R5bGVTaGVl
dEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6c2VsZWN0b3JzRnJvbVNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdEZvclNlbGVjdG9yTGlz
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdEZv
clJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmpl
Y3RGb3JTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpyZXNv
dXJjZVN0eWxlU2hlZXRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hl
ZXQ6OmJ1aWxkQXJyYXlGb3JSdWxlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JT
dHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxp
bmVTdHlsZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmNhbkJpbmQpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnRvUHJvdG9jb2wpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
aW5uZXJBZGRSZWNvcmRUb1RpbWVsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OnNldERPTUNvdW50ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6OnNlbmRFdmVudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
clRpbWVsaW5lQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5j
cHA6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRDYWxsRnJhbWU6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmg6CisgICAgICAgICogaW5zcGVjdG9yL1Njcmlw
dENhbGxTdGFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsU3RhY2s6OmJ1aWxk
SW5zcGVjdG9yQXJyYXkpOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaDoK
KworMjAxMy0xMi0wNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggTW9yZSBJbnNwZWN0b3IgUmVxdWlyZWQgQ2xhc3Nl
cyBEb3duIGludG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNTMyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFBhcnQgMzogUHVzaCBEb3duIFNjcmlwdEZ1bmN0aW9uQ2FsbAor
CisgICAgICAgICAgLSBNb3ZlIFNjcmlwdEZ1bmN0aW9uQ2FsbCB0byBKYXZhU2NyaXB0Q29yZS9i
aW5kaW5ncyBpbnRvIG5hbWVzcGFjZSBEZXByZWNhdGVkLgorICAgICAgICAgIC0gR2l2ZSBjb25z
dHJ1Y3RvciBhIGZ1bmN0aW9uIHRvIGFsbCBmb3IgYSBkaWZmZXJlbnQgSlNDOjpjYWxsLCBiZWNh
dXNlCisgICAgICAgICAgICBXZWJDb3JlIFNjcmlwdEZ1bmN0aW9uQ2FsbCdzIHVzZSBKU01haW5U
aHJlYWRFeGVjU3RhdGUgd2hlbiBpc01haW5UaHJlYWQuCisgICAgICAgICAgLSBQcmVmZXIgRGVw
cmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGV2ZXJ5d2hlcmUgaXQgaXMgdXNlZCBpbiBXZWJD
b3JlLgorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvYmluZGluZ3MvU2NyaXB0RnVuY3Rp
b25DYWxsLmg6IEFkZGVkLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAg
ICogVXNlSlNDLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmdW5jdGlvbkNh
bGxIYW5kbGVyRnJvbUFueVRocmVhZCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNYWluVGhy
ZWFkRXhlY1N0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpKU01haW5UaHJlYWRFeGVjU3RhdGU6
OmN1cnJlbnRTdGF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpldmFsdWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6Y2FsbEZ1bmN0aW9uT24pOgorICAgICAgICAoV2ViQ29y
ZTo6SW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT25DYWxsRnJhbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5qZWN0ZWRTY3JpcHQ6OmdldEZ1bmN0aW9uRGV0YWlscyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbmplY3RlZFNjcmlwdDo6Z2V0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpJbmpl
Y3RlZFNjcmlwdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
amVjdGVkU2NyaXB0Ojpub2RlRm9yT2JqZWN0SWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0
ZWRTY3JpcHQ6OnJlbGVhc2VPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3Jp
cHQ6OndyYXBDYWxsRnJhbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Ojp3
cmFwT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Ojp3cmFwVGFibGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmZpbmRPYmplY3RCeUlkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjppbnNwZWN0Tm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6cmVsZWFzZU9iamVjdEdyb3VwKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluamVj
dGVkU2NyaXB0QmFzZTo6Y2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUNhbGwpOgorICAgICAgICAoV2ViQ29yZTo6
SW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtlRXZhbENhbGwpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdEJhc2UuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRD
YW52YXNNb2R1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRDYW52YXNN
b2R1bGU6OmNhbGxXcmFwQ29udGV4dEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVj
dGVkU2NyaXB0Q2FudmFzTW9kdWxlOjptYXJrRnJhbWVFbmQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OmNhbGxTdGFydENhcHR1cmluZ0Z1bmN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjpjYWxsVm9pZEZ1
bmN0aW9uV2l0aFRyYWNlTG9nSWRBcmd1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3Rl
ZFNjcmlwdENhbnZhc01vZHVsZTo6dHJhY2VMb2cpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0
ZWRTY3JpcHRDYW52YXNNb2R1bGU6OnJlcGxheVRyYWNlTG9nKToKKyAgICAgICAgKFdlYkNvcmU6
OkluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjpyZXNvdXJjZUluZm8pOgorICAgICAgICAoV2Vi
Q29yZTo6SW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OnJlc291cmNlU3RhdGUpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbmplY3RlZFNjcmlwdE1vZHVsZTo6ZW5zdXJlSW5qZWN0ZWQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kQ2xpZW50TG9jYWwuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJvbnRlbmRNZW51UHJvdmlkZXI6OmNv
bnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyb250ZW5kTWVudVBy
b3ZpZGVyOjpjb250ZXh0TWVudUNsZWFyZWQpOgorCisyMDEzLTEyLTA1ICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBN
b3JlIEluc3BlY3RvciBSZXF1aXJlZCBDbGFzc2VzIERvd24gaW50byBKYXZhU2NyaXB0Q29yZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1MzI0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFydCAyOiBQ
dXNoIFNjcmlwdCB3cmFwcGVyIGNsYXNzZXMgZG93biBpbnRvIEphdmFTY3JpcHRDb3JlL2JpbmRp
bmdzLgorCisgICAgICAgICAgLSBNb3ZlIFNjcmlwdE9iamVjdCBhbmQgU2NyaXB0VmFsdWUgaW50
byBKYXZhU2NyaXB0Q29yZSBidXQgbmFtZXNwYWNlIERlcHJlY2F0ZWQKKyAgICAgICAgICAtIEFk
ZCBmb3J3YXJkaW5nIGhlYWRlcnMKKyAgICAgICAgICAtIFVzZSBEZXByZWNhdGVkOjpTY3JpcHRP
YmplY3QgYW5kIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGV2ZXJ5d2hlcmUuCisKKyAgICAgICAg
KiBGb3J3YXJkaW5nSGVhZGVycy9iaW5kaW5ncy9TY3JpcHRPYmplY3QuaDogQWRkZWQuCisgICAg
ICAgICogRm9yd2FyZGluZ0hlYWRlcnMvYmluZGluZ3MvU2NyaXB0VmFsdWUuaDogQWRkZWQuCisg
ICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJBbnkuY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5oOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHA6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCQ3Vyc29yLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
RmFjdG9yeS5jcHA6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcDoKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6Om9w
ZW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6Om9wZW5LZXlDdXJzb3IpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmNwcDoKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5oOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5
UmFuZ2U6Omxvd2VyQm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UmFuZ2U6OnVwcGVy
Qm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UmFuZ2U6OmJvdW5kKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3Bw
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaDoKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5jcHA6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3BsdWdp
bnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwOgorICAgICAgICAqIE1vZHVsZXMvcGx1
Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oOgorICAgICAgICAqIFVzZUpTQy5jbWFr
ZToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2ouZmlsdGVyczoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogYmluZGluZ3MvanMvRGljdGlvbmFyeS5oOgorICAgICAgICAoV2ViQ29yZTo6
RGljdGlvbmFyeTo6Z2V0RXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogYmluZGluZ3MvanMvSURC
QmluZGluZ1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZXNlcmlhbGl6ZUlEQlZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGljdGlv
bmFyeS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20u
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNw
cDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHA6Cisg
ICAgICAgICogYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmg6CisgICAgICAgICogYmlu
ZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9T
Y3JpcHRGdW5jdGlvbkNhbGwuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxP
YmplY3QuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
T2JqZWN0LmNwcC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuaDog
Q29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5jcHAu
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRHbG9iYWxPYmplY3Q6OlNjcmlwdEdsb2JhbE9iamVj
dCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2Ny
aXB0U3RhdGUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpzZXJpYWxpemUp
OgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAg
ICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgICogYmlu
ZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAqIGRvbS9DdXN0b21F
dmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FdmVudDo6aW5pdEN1c3RvbUV2ZW50
KToKKyAgICAgICAgKiBkb20vQ3VzdG9tRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3Rv
bUV2ZW50OjpkZXRhaWwpOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuY3BwOgorICAgICAg
ICAqIGRvbS9NZXNzYWdlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6ZGF0YUFzU2NyaXB0VmFs
dWUpOgorICAgICAgICAqIGRvbS9Qb3BTdGF0ZUV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpQ
b3BTdGF0ZUV2ZW50OjpzdGF0ZSk6CisgICAgICAgICogZG9tL1NjcmlwdEVsZW1lbnQuY3BwOgor
ICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9y
L0NvbnNvbGVNZXNzYWdlLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2Uu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNj
cmlwdEJhc2UuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuY3BwOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5oOgorICAgICAgICAq
IGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdEhvc3QuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JDYW52YXNBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZh
c0FnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0luc3RydW1lbnRh
dGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3cmFw
Q2FudmFzMkRSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d3JhcFdlYkdMUmVuZGVyaW5nQ29udGV4
dEZvckluc3RydW1lbnRhdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNsaWVu
dC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHA6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JPdmVybGF5LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHA6Cisg
ICAgICAgICogaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAqIGluc3Bl
Y3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRBcmd1
bWVudHMuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0RGVidWdMaXN0ZW5lci5oOgorICAg
ICAgICAqIHBhZ2UvQ29uc29sZS5jcHA6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAg
ICAgICogcGFnZS9QYWdlQ29uc29sZS5jcHA6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5WaWV3
LmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB3b3JrZXJzL1NoYXJlZFdvcmtlckdsb2JhbFNjb3Bl
LmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlclRocmVhZC5jcHA6CisgICAgICAgICogeG1sL1hNTFRyZWVWaWV3ZXIu
Y3BwOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAg
ICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKworMjAxMy0xMi0w
NSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IFB1c2ggTW9yZSBJbnNwZWN0b3IgUmVxdWlyZWQgQ2xhc3NlcyBEb3duIGludG8g
SmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyNTMyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFBhcnQgMTogUHVzaCBkb3duIGNvcmUgaW5zcGVjdG9yIGNsYXNzZXMuCisKKyAgICAg
ICAgICAtIE1vdmUgSW5zcGVjdEFnZW50QmFzZSwgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeSwgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIsIEluc3BlY3RvclZhbHVlcworICAgICAgICAgICAgZG93
biB0byBKYXZhU2NyaXB0Q29yZSBhbmQgaW50byB0aGUgSW5zcGVjdG9yIG5hbWVzcGFjZS4KKyAg
ICAgICAgICAtIEFkZCBmb3J3YXJkaW5nIGhlYWRlcnMgZm9yIEphdmFTY3JpcHRDb3JlL2luc3Bl
Y3RvciBmaWxlcy4KKyAgICAgICAgICAtIFVzZSB0aGUgSW5zcGVjdG9yIG5hbWVzcGFjZSB3aGVy
ZSBhcHByb3ByaWF0ZS4KKyAgICAgICAgICAtIFJlbmFtZSBJbnNwZWN0b3JCYXNlQWdlbnQgdG8g
SW5zcGVjdG9yQWdlbnRCYXNlIGZvciBjbGFyaXR5LgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50
QmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5z
cGVjdG9yQWdlbnRSZWdpc3RyeS5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVy
cy9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaDogQWRkZWQuCisgICAgICAg
ICogRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oOiBBZGRlZC4K
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUuZXhwLmlu
OgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAgICAgICog
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0lu
amVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0
UHJvZmlsZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5oOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRWYWx1ZS5oOgorICAgICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwOgor
ICAgICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5jcHA6CisgICAgICAgICog
aW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHk6CisgICAgICAgIChSYXdUeXBlcy5C
YXNlVHlwZS5nZXRfcmF3X3ZhbGlkYXRvcl9jYWxsX3RleHQpOgorICAgICAgICAoUmF3VHlwZXMu
T2JqZWN0LmdldF9hcnJheV9pdGVtX3Jhd19jX3R5cGVfdGV4dCk6CisgICAgICAgIChSYXdUeXBl
cy5BbnkuZ2V0X2FycmF5X2l0ZW1fcmF3X2NfdHlwZV90ZXh0KToKKyAgICAgICAgKFJhd1R5cGVz
LkFycmF5LmdldF9hcnJheV9pdGVtX3Jhd19jX3R5cGVfdGV4dCk6CisgICAgICAgIChUeXBlTW9k
ZWwuaW5pdF9jbGFzcyk6CisgICAgICAgIChUeXBlQmluZGluZ3MuY3JlYXRlX3R5cGVfZGVjbGFy
YXRpb25fLkVudW1CaW5kaW5nLmdldF9jb2RlX2dlbmVyYXRvci5Db2RlR2VuZXJhdG9yLmdlbmVy
YXRlX3R5cGVfYnVpbGRlcik6CisgICAgICAgIChUeXBlQmluZGluZ3MuY3JlYXRlX3R5cGVfZGVj
bGFyYXRpb25fLkNsYXNzQmluZGluZy5nZXRfY29kZV9nZW5lcmF0b3IuQ29kZUdlbmVyYXRvci5n
ZW5lcmF0ZV90eXBlX2J1aWxkZXIpOgorICAgICAgICAoR2VuZXJhdG9yLmdvKToKKyAgICAgICAg
KEdlbmVyYXRvci5wcm9jZXNzX2NvbW1hbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9Db2RlR2Vu
ZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weToKKyAgICAgICAgKHZvaWQpOgorICAgICAgICAoSW5z
cGVjdG9yRnJvbnRlbmRfaCk6CisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnNf
aCk6CisgICAgICAgIChBcnJheSk6CisgICAgICAgICogaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdl
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29u
dGVudFNlYXJjaFV0aWxzLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNw
cDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHA6CisgICAg
ICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50OjpJbnNwZWN0
b3JBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBZ2VudDo6ZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmg6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oLgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQWdlbnRCYXNlOjpJbnNwZWN0b3JBZ2VudEJhc2UpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHA6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JCYXNlQWdlbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6Okluc3Bl
Y3RvckNTU0FnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JD
U1NBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6SW5zcGVjdG9yQ2FudmFz
QWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZh
c0FnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5jcHA6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
c29sZUFnZW50OjpJbnNwZWN0b3JDb25zb2xlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ29uc29sZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50OjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JEYXRhYmFzZUFnZW50OjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHA6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZvcndhcmRpbmcuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckhlYXBQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckhl
YXBQcm9maWxlckFnZW50OjpJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6Okluc3BlY3RvckluZGV4ZWRE
QkFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckluZGV4ZWREQkFnZW50OjpkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJ
bmRleGVkREJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvcklucHV0QWdlbnQ6Okluc3BlY3Rvcklu
cHV0QWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5wdXRBZ2VudDo6ZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5w
dXRBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
Y3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6SW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckxheWVyVHJlZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUFnZW50OjpkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5
QWdlbnQ6Okluc3BlY3Rvck1lbW9yeUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yTWVtb3J5QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5j
cHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclBhZ2VBZ2VudDo6SW5zcGVjdG9yUGFnZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclBhZ2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudDo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JQcm9maWxlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6Okluc3BlY3RvclJlc291cmNlQWdl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6Okluc3BlY3RvclJ1bnRpbWVBZ2VudCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yU3R5bGVTaGVldC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTSWQ6Okluc3Bl
Y3RvckNTU0lkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVUZXh0RWRpdG9y
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
SW5zcGVjdG9yVGltZWxpbmVBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRp
bWVsaW5lQWdlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OlRpbWVsaW5lUmVjb3JkRW50cnk6OlRpbWVsaW5lUmVjb3JkRW50cnkpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JXb3JrZXJBZ2VudDo6SW5zcGVjdG9yV29ya2VyQWdlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3
b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdl
bnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHA6CisgICAg
ICAgICogaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L1BhZ2VSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1bnRpbWVBZ2Vu
dDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFn
ZVJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3Bw
OgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuY3BwOgorICAgICAgICAqIGlu
c3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0Q2Fs
bFN0YWNrLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg6CisgICAg
ICAgICogaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHA6CisgICAgICAgICogaW5z
cGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5oOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxp
bmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVXZWJTb2NrZXRDcmVhdGVEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OlRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1dlYlNvY2tldERhdGEp
OgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAq
IGluc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtl
ckluc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VyUnVudGlt
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bnRpbWVBZ2VudDo6ZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VyUnVudGlt
ZUFnZW50Lmg6CisgICAgICAgICogcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOgorICAg
ICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKwogMjAxMy0xMi0xMCAgQmV0aCBEYWtpbiAg
PGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgSG9yaXpvbnRhbCBydWJiZXItYmFuZGluZyB3
aXRob3V0IGEgaG9yaXpvbnRhbCBzY3JvbGxiYXIgaXMgZGlzdHJhY3RpbmcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9u
Q2FsbC5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvYmluZGluZ3MvU2NyaXB0
RnVuY3Rpb25DYWxsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODVkMmEw
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2Jp
bmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJD
b3JlX0ZXRF9TY3JpcHRGdW5jdGlvbkNhbGxfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9TY3JpcHRG
dW5jdGlvbkNhbGxfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdEZ1bmN0aW9uQ2Fs
bC5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9iaW5kaW5ncy9TY3JpcHRPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFk
ZXJzL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjczNmI4MjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9iaW5kaW5ncy9TY3JpcHRPYmplY3QuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5k
ZWYgV2ViQ29yZV9GV0RfU2NyaXB0T2JqZWN0X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfU2NyaXB0
T2JqZWN0X2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRPYmplY3QuaD4KKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvYmluZGluZ3Mv
U2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2JpbmRpbmdz
L1NjcmlwdFZhbHVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc4YWY1
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2Jp
bmRpbmdzL1NjcmlwdFZhbHVlLmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldE
X1NjcmlwdFZhbHVlX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfU2NyaXB0VmFsdWVfaAorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdFZhbHVlLmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJh
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0
b3JBZ2VudEJhc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMWEzNWZj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5z
cGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJD
b3JlX0ZXRF9JbnNwZWN0b3JBZ2VudEJhc2VfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9JbnNwZWN0
b3JBZ2VudEJhc2VfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckFnZW50QmFz
ZS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOWRiOTVjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50
UmVnaXN0cnkuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfSW5zcGVjdG9y
QWdlbnRSZWdpc3RyeV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX0luc3BlY3RvckFnZW50UmVnaXN0
cnlfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaD4K
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5z
cGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3
YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTVlODdkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0lu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXJfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JUeXBlQnVpbGRlci5oIGIvU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvclR5cGVCdWlsZGVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY5ZTExMwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNw
ZWN0b3JUeXBlQnVpbGRlci5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9J
bnNwZWN0b3JUeXBlQnVpbGRlcl9oCisjZGVmaW5lIFdlYkNvcmVfRldEX0luc3BlY3RvclR5cGVC
dWlsZGVyX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JUeXBlQnVpbGRlci5o
PgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9p
bnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVh
ZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYmQ5ODVmNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaApAQCAtMCwwICsxLDQg
QEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfSW5zcGVjdG9yVmFsdWVzX2gKKyNkZWZpbmUgV2ViQ29y
ZV9GV0RfSW5zcGVjdG9yVmFsdWVzX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0
b3JWYWx1ZXMuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCAyMWEwOGZjLi42MDdk
YmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMzYyLDggKzM2Miw4IEBAIERlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSW5zcGVjdG9yLmpzb246ICQoV2ViQ29yZSkvaW5zcGVjdG9yL1NjcmlwdHMv
Z2VuZXJhdGUtY29tCiAjIEFsbCBXZWIgSW5zcGVjdG9yIGdlbmVyYXRlZCBmaWxlcyBhcmUgY3Jl
YXRlZCB3aXRoIHRoaXMgb25lIGNhbGwgdG8gQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQogRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwOiBEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3Rvci5qc29uICQoV2ViQ29yZSkvaW5zcGVjdG9yL0Nv
ZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkgJChXZWJDb3JlKS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRv
ckluc3BlY3RvclN0cmluZ3MucHkKIAkkKEFNX1ZfR0VOKSQoUFlUSE9OKSAkKFdlYkNvcmUpL2lu
c3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5ICQ8IC0tb3V0cHV0X2hfZGlyICQoR0VO
U09VUkNFU19XRUJDT1JFKSAtLW91dHB1dF9jcHBfZGlyICQoR0VOU09VUkNFU19XRUJDT1JFKSAt
LW91dHB1dF9qc19kaXIgJChHRU5TT1VSQ0VTX1dFQkNPUkUpCi1EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0luc3BlY3RvclR5cGVCdWlsZGVyLmg6IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVj
dG9yVHlwZUJ1aWxkZXIuY3BwCi1EZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3RvclR5cGVC
dWlsZGVyLmNwcDogRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZC5oCitE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oOiBEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0luc3BlY3RvcldlYlR5cGVCdWlsZGVycy5jcHAKK0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmNwcDogRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZC5oCiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3Bl
Y3RvckZyb250ZW5kLmg6IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmQu
Y3BwCiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3RvckZyb250ZW5kLmNwcDogRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMKIERlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzOiBEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQppbmRleCBjOWEyZGZhLi5lOTQ1MmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KQEAgLTI2LDggKzI2LDggQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3RvckZyb250ZW5kLmNwcCBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0luc3BlY3Rvck92ZXJsYXlQYWdlLmggXAotCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVj
dG9yVHlwZUJ1aWxkZXIuY3BwIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3RvclR5
cGVCdWlsZGVyLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yV2ViVHlwZUJ1
aWxkZXJzLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JXZWJUeXBlQnVp
bGRlcnMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Fic3RyYWN0V29ya2VyLmNwcCBc
CiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Fic3RyYWN0V29ya2VyLmggXAogCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5jcHAgXApAQCAtMjQ0OSwxMSAr
MjQ0OSw5IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q29udHJvbGxlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHREZWJ1Z1NlcnZlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERl
YnVnU2VydmVyLmggXAotCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9u
Q2FsbC5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2Fs
bC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRIZWFwU25hcHNob3QuaCBc
Ci0JU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNwcCBcCi0JU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmggXAorCVNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRQcm9maWxlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
UHJvZmlsZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlTm9k
ZS5oIFwKQEAgLTI0NjIsOCArMjQ2MCw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdFN0YXRlLmggXAotCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZh
bHVlLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaCBcCiAJ
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlLmggXAogCVNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFdyYXBwYWJsZUlubGluZXMuaCBcCiAJU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBcCkBAIC0zNzg0LDEz
ICszNzgwLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckFnZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFn
ZW50LmggXAotCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5
LmNwcCBcCi0JU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnku
aCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQuaCBcCi0JU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmggXAotCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JC
YXNlQWdlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0Fn
ZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50
LmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNJbnN0cnVtZW50
YXRpb24uaCBcCkBAIC0zODU2LDggKzM4NDcsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuaCBcCiAJU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIFwKLQlTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcCBcCi0JU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yV2ViQWdlbnRCYXNlLmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JXb3JrZXJBZ2VudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JXb3JrZXJBZ2VudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29y
a2VyUmVzb3VyY2UuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJBbnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55
LmNwcAppbmRleCBjYjFlNjNlLi44MjdhNGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkFueS5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBQYXNzUmVmUHRyPElEQlRy
YW5zYWN0aW9uPiBJREJBbnk6OmlkYlRyYW5zYWN0aW9uKCkKICAgICByZXR1cm4gbV9pZGJUcmFu
c2FjdGlvbjsKIH0KIAotY29uc3QgU2NyaXB0VmFsdWUmIElEQkFueTo6c2NyaXB0VmFsdWUoKQor
Y29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIElEQkFueTo6c2NyaXB0VmFsdWUoKQogewog
ICAgIEFTU0VSVChtX3R5cGUgPT0gU2NyaXB0VmFsdWVUeXBlKTsKICAgICByZXR1cm4gbV9zY3Jp
cHRWYWx1ZTsKQEAgLTE4Niw3ICsxODYsNyBAQCBJREJBbnk6OklEQkFueShQYXNzUmVmUHRyPElE
Qk9iamVjdFN0b3JlPiB2YWx1ZSkKIHsKIH0KIAotSURCQW55OjpJREJBbnkoY29uc3QgU2NyaXB0
VmFsdWUmIHZhbHVlKQorSURCQW55OjpJREJBbnkoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUmIHZhbHVlKQogICAgIDogbV90eXBlKFNjcmlwdFZhbHVlVHlwZSkKICAgICAsIG1fc2NyaXB0
VmFsdWUodmFsdWUpCiAgICAgLCBtX2ludGVnZXIoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQW55LmgKaW5kZXggNmRlNDVjZi4uZDcyODQ1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmgKQEAgLTI5LDggKzI5LDggQEAKICNpZiBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIklEQktleVBhdGguaCIKLSNpbmNsdWRl
ICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgorI2luY2x1ZGUg
PGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTEw
MSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJREJJbmRleD4gaWRiSW5kZXgo
KTsKICAgICBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBpZGJPYmplY3RTdG9yZSgpOwogICAg
IFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IGlkYlRyYW5zYWN0aW9uKCk7Ci0gICAgY29uc3Qg
U2NyaXB0VmFsdWUmIHNjcmlwdFZhbHVlKCk7CisgICAgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUmIHNjcmlwdFZhbHVlKCk7CiAgICAgaW50NjRfdCBpbnRlZ2VyKCk7CiAgICAgY29uc3Qg
U3RyaW5nJiBzdHJpbmcoKTsKICAgICBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKCkgeyByZXR1
cm4gbV9pZGJLZXlQYXRoOyB9OwpAQCAtMTE4LDcgKzExOCw3IEBAIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgSURCQW55KFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+KTsKICAgICBleHBsaWNpdCBJ
REJBbnkoY29uc3QgSURCS2V5UGF0aCYpOwogICAgIGV4cGxpY2l0IElEQkFueShjb25zdCBTdHJp
bmcmKTsKLSAgICBleHBsaWNpdCBJREJBbnkoY29uc3QgU2NyaXB0VmFsdWUmKTsKKyAgICBleHBs
aWNpdCBJREJBbnkoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmKTsKICAgICBleHBsaWNp
dCBJREJBbnkoaW50NjRfdCk7CiAKICAgICBjb25zdCBUeXBlIG1fdHlwZTsKQEAgLTEzMyw3ICsx
MzMsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFJlZlB0cjxJREJPYmplY3RTdG9yZT4gbV9pZGJP
YmplY3RTdG9yZTsKICAgICBjb25zdCBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IG1faWRiVHJhbnNh
Y3Rpb247CiAgICAgY29uc3QgSURCS2V5UGF0aCBtX2lkYktleVBhdGg7Ci0gICAgY29uc3QgU2Ny
aXB0VmFsdWUgbV9zY3JpcHRWYWx1ZTsKKyAgICBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSBtX3NjcmlwdFZhbHVlOwogICAgIGNvbnN0IFN0cmluZyBtX3N0cmluZzsKICAgICBjb25zdCBp
bnQ2NF90IG1faW50ZWdlcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yLmNwcAppbmRleCBlZjA2NTQ0Li5iOTlkODNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKQEAgLTk4LDE5ICs5OCwxOSBA
QCBjb25zdCBTdHJpbmcmIElEQkN1cnNvcjo6ZGlyZWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4g
ZGlyZWN0aW9uVG9TdHJpbmcobV9kaXJlY3Rpb24pOwogfQogCi1jb25zdCBTY3JpcHRWYWx1ZSYg
SURCQ3Vyc29yOjprZXkoKSBjb25zdAorY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIElE
QkN1cnNvcjo6a2V5KCkgY29uc3QKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgIklEQkN1cnNvcjo6
a2V5Iik7CiAgICAgcmV0dXJuIG1fY3VycmVudEtleVZhbHVlOwogfQogCi1jb25zdCBTY3JpcHRW
YWx1ZSYgSURCQ3Vyc29yOjpwcmltYXJ5S2V5KCkgY29uc3QKK2NvbnN0IERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlJiBJREJDdXJzb3I6OnByaW1hcnlLZXkoKSBjb25zdAogewogICAgIExPRyhTdG9y
YWdlQVBJLCAiSURCQ3Vyc29yOjpwcmltYXJ5S2V5Iik7CiAgICAgcmV0dXJuIG1fY3VycmVudFBy
aW1hcnlLZXlWYWx1ZTsKIH0KIAotY29uc3QgU2NyaXB0VmFsdWUmIElEQkN1cnNvcjo6dmFsdWUo
KSBjb25zdAorY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIElEQkN1cnNvcjo6dmFsdWUo
KSBjb25zdAogewogICAgIExPRyhTdG9yYWdlQVBJLCAiSURCQ3Vyc29yOjp2YWx1ZSIpOwogICAg
IHJldHVybiBtX2N1cnJlbnRWYWx1ZTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBJREJBbnkqIElEQkN1
cnNvcjo6c291cmNlKCkgY29uc3QKICAgICByZXR1cm4gbV9zb3VyY2UuZ2V0KCk7CiB9CiAKLVBh
c3NSZWZQdHI8SURCUmVxdWVzdD4gSURCQ3Vyc29yOjp1cGRhdGUoSlNDOjpFeGVjU3RhdGUqIHN0
YXRlLCBTY3JpcHRWYWx1ZSYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBJREJDdXJzb3I6OnVwZGF0ZShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgTE9H
KFN0b3JhZ2VBUEksICJJREJDdXJzb3I6OnVwZGF0ZSIpOwogCkBAIC0xNzcsNyArMTc3LDcgQEAg
dm9pZCBJREJDdXJzb3I6OmFkdmFuY2UodW5zaWduZWQgbG9uZyBjb3VudCwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiAgICAgQVNTRVJUKCFlYyk7CiB9CiAKLXZvaWQgSURCQ3Vyc29yOjpjb250aW51ZUZ1
bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVl
JiBrZXlWYWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIElEQkN1cnNvcjo6Y29udGludWVG
dW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYga2V5VmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIERPTVJl
cXVlc3RTdGF0ZSByZXF1ZXN0U3RhdGUoY29udGV4dCk7CiAgICAgUmVmUHRyPElEQktleT4ga2V5
ID0gc2NyaXB0VmFsdWVUb0lEQktleSgmcmVxdWVzdFN0YXRlLCBrZXlWYWx1ZSk7CkBAIC0yNjMs
NyArMjYzLDcgQEAgdm9pZCBJREJDdXJzb3I6OmNsb3NlKCkKICAgICB9CiB9CiAKLXZvaWQgSURC
Q3Vyc29yOjpzZXRWYWx1ZVJlYWR5KERPTVJlcXVlc3RTdGF0ZSogc3RhdGUsIFBhc3NSZWZQdHI8
SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBTY3JpcHRWYWx1ZSYg
dmFsdWUpCit2b2lkIElEQkN1cnNvcjo6c2V0VmFsdWVSZWFkeShET01SZXF1ZXN0U3RhdGUqIHN0
YXRlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtl
eSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlKQogewogICAgIG1fY3VycmVudEtleSA9
IGtleTsKICAgICBtX2N1cnJlbnRLZXlWYWx1ZSA9IGlkYktleVRvU2NyaXB0VmFsdWUoc3RhdGUs
IG1fY3VycmVudEtleSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJDdXJzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1
cnNvci5oCmluZGV4IGM2YTc0NGYuLjA0ZWIzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCkBAIC0zMSw4ICszMSw4IEBACiAjaW5jbHVkZSAiSURC
S2V5LmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJJbmRleGVkREIu
aCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5o
IgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KQEAgLTYzLDIyICs2MywyMiBAQCBwdWJsaWM6CiAKICAgICAvLyBJbXBsZW1lbnQgdGhl
IElETAogICAgIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uKCkgY29uc3Q7Ci0gICAgY29uc3QgU2Ny
aXB0VmFsdWUmIGtleSgpIGNvbnN0OwotICAgIGNvbnN0IFNjcmlwdFZhbHVlJiBwcmltYXJ5S2V5
KCkgY29uc3Q7Ci0gICAgY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVlKCkgY29uc3Q7CisgICAgY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSgpIGNvbnN0OworICAgIGNvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJiBwcmltYXJ5S2V5KCkgY29uc3Q7CisgICAgY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlKCkgY29uc3Q7CiAgICAgSURCQW55KiBzb3VyY2UoKSBj
b25zdDsKIAotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gdXBkYXRlKEpTQzo6RXhlY1N0YXRl
KiwgU2NyaXB0VmFsdWUmLCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiB1cGRhdGUoSlNDOjpFeGVjU3RhdGUqLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIEV4
Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGFkdmFuY2UodW5zaWduZWQgbG9uZywgRXhjZXB0aW9u
Q29kZSYpOwogICAgIC8vIEZJWE1FOiBUcnkgdG8gbW9kaWZ5IHRoZSBjb2RlIGdlbmVyYXRvciBz
byB0aGlzIG92ZXJsb2FkIGlzIHVubmVlZGVkLgogICAgIHZvaWQgY29udGludWVGdW5jdGlvbihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgY29udGludWVGdW5j
dGlvbihzdGF0aWNfY2FzdDxJREJLZXkqPigwKSwgZWMpOyB9Ci0gICAgdm9pZCBjb250aW51ZUZ1
bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBF
eGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25D
b2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBkZWxldGVGdW5jdGlvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdm9pZCBjb250aW51ZUZ1
bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgcG9z
dFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKTsKICAgICB2b2lkIGNsb3NlKCk7Ci0gICAgdm9pZCBz
ZXRWYWx1ZVJlYWR5KERPTVJlcXVlc3RTdGF0ZSosIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1Jl
ZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIFNjcmlwdFZhbHVlJik7CisgICAgdm9pZCBzZXRWYWx1
ZVJlYWR5KERPTVJlcXVlc3RTdGF0ZSosIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJ
REJLZXk+IHByaW1hcnlLZXksIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJik7CiAgICAgUGFzc1Jl
ZlB0cjxJREJLZXk+IGlkYlByaW1hcnlLZXkoKSB7IHJldHVybiBtX2N1cnJlbnRQcmltYXJ5S2V5
OyB9CiAKIHByb3RlY3RlZDoKQEAgLTk3LDExICs5NywxMSBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9nb3RWYWx1ZTsKICAgICAvLyBUaGVzZSB2YWx1ZXMgYXJlIGhlbGQgYmVjYXVzZSBtX2JhY2tl
bmQgbWF5IGFkdmFuY2Ugd2hpbGUgdGhleQogICAgIC8vIGFyZSBzdGlsbCB2YWxpZCBmb3IgdGhl
IGN1cnJlbnQgc3VjY2VzcyBoYW5kbGVycy4KLSAgICBTY3JpcHRWYWx1ZSBtX2N1cnJlbnRLZXlW
YWx1ZTsKLSAgICBTY3JpcHRWYWx1ZSBtX2N1cnJlbnRQcmltYXJ5S2V5VmFsdWU7CisgICAgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUgbV9jdXJyZW50S2V5VmFsdWU7CisgICAgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUgbV9jdXJyZW50UHJpbWFyeUtleVZhbHVlOwogICAgIFJlZlB0cjxJREJLZXk+
IG1fY3VycmVudEtleTsKICAgICBSZWZQdHI8SURCS2V5PiBtX2N1cnJlbnRQcmltYXJ5S2V5Owot
ICAgIFNjcmlwdFZhbHVlIG1fY3VycmVudFZhbHVlOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlIG1fY3VycmVudFZhbHVlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAppbmRleCA5ZjQw
NmZhLi5kMjhhNTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJGYWN0b3J5LmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIFBhc3NSZWZQdHI8SURCT3BlbkRCUmVx
dWVzdD4gSURCRmFjdG9yeTo6ZGVsZXRlRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCoK
ICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAotc2hvcnQgSURCRmFjdG9yeTo6Y21wKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBmaXJzdFZhbHVlLCBj
b25zdCBTY3JpcHRWYWx1ZSYgc2Vjb25kVmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorc2hvcnQg
SURCRmFjdG9yeTo6Y21wKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBmaXJzdFZhbHVlLCBjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYgc2Vjb25kVmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIERPTVJlcXVl
c3RTdGF0ZSByZXF1ZXN0U3RhdGUoY29udGV4dCk7CiAgICAgUmVmUHRyPElEQktleT4gZmlyc3Qg
PSBzY3JpcHRWYWx1ZVRvSURCS2V5KCZyZXF1ZXN0U3RhdGUsIGZpcnN0VmFsdWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oCmluZGV4IDczNzRlY2Yu
Ljc3OGZkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0
b3J5LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8SURCT3BlbkRC
UmVxdWVzdD4gb3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1l
LCB1bnNpZ25lZCBsb25nIGxvbmcgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NS
ZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gZGVsZXRlRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgc2hvcnQg
Y21wKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYgZmlyc3QsIGNv
bnN0IFNjcmlwdFZhbHVlJiBzZWNvbmQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzaG9ydCBjbXAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBm
aXJzdCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHNlY29uZCwgRXhjZXB0aW9uQ29k
ZSYpOwogCiBwcml2YXRlOgogICAgIElEQkZhY3RvcnkoSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZh
Y2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQklu
ZGV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcApp
bmRleCBkZjYzNzM0Li5lZGY0YjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJJbmRleC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCSW5kZXguY3BwCkBAIC03NSw3ICs3NSw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVz
dD4gSURCSW5kZXg6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
UGFzCiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURC
SW5kZXg6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U2NyaXB0VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUm
IGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbkN1cnNvcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYg
a2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
TE9HKFN0b3JhZ2VBUEksICJJREJJbmRleDo6b3BlbkN1cnNvciIpOwogICAgIFJlZlB0cjxJREJL
ZXlSYW5nZT4ga2V5UmFuZ2UgPSBJREJLZXlSYW5nZTo6b25seShjb250ZXh0LCBrZXksIGVjKTsK
QEAgLTEwMCw3ICsxMDAsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4Ojpjb3Vu
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUAogICAgIHJldHVybiBy
ZXF1ZXN0OwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4Ojpjb3VudChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNl
cHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmNvdW50KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIExPRyhTdG9yYWdlQVBJLCAiSURC
SW5kZXg6OmNvdW50Iik7CiAgICAgUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSA9IElEQktl
eVJhbmdlOjpvbmx5KGNvbnRleHQsIGtleSwgZWMpOwpAQCAtMTMwLDcgKzEzMCw3IEBAIFBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAotUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlv
biwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4Ojpv
cGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgIklEQkluZGV4OjpvcGVuS2V5Q3Vy
c29yIik7CiAgICAgUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSA9IElEQktleVJhbmdlOjpv
bmx5KGNvbnRleHQsIGtleSwgZWMpOwpAQCAtMTM5LDcgKzEzOSw3IEBAIFBhc3NSZWZQdHI8SURC
UmVxdWVzdD4gSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwKICAgICByZXR1cm4gb3BlbktleUN1cnNvcihjb250ZXh0LCBrZXlSYW5nZS5yZWxl
YXNlKCksIGRpcmVjdGlvbiwgZWMpOwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQklu
ZGV4OjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFs
dWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQklu
ZGV4OjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgTE9HKFN0b3Jh
Z2VBUEksICJJREJJbmRleDo6Z2V0Iik7CiAgICAgUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5n
ZSA9IElEQktleVJhbmdlOjpvbmx5KGNvbnRleHQsIGtleSwgZWMpOwpAQCAtMTY5LDcgKzE2OSw3
IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyCiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKLVBh
c3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldEtleShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykK
K1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldEtleShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgIklEQkluZGV4OjpnZXRLZXki
KTsKICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlID0gSURCS2V5UmFuZ2U6Om9ubHko
Y29udGV4dCwga2V5LCBlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJJbmRleC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
SW5kZXguaAppbmRleCAyNjE0ZTAyLi5mOTU0YWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkluZGV4LmgKQEAgLTYzLDIzICs2MywyMyBAQCBwdWJsaWM6CiAgICAg
Ly8gRklYTUU6IFRyeSB0byBtb2RpZnkgdGhlIGNvZGUgZ2VuZXJhdG9yIHNvIHRoaXMgaXMgdW5u
ZWVkZWQuCiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBvcGVuQ3Vy
c29yKGNvbnRleHQsIHN0YXRpY19jYXN0PElEQktleVJhbmdlKj4oMCksIGVjKTsgfQogICAgIFBh
c3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwga2V5UmFuZ2UsIElEQkN1cnNvcjo6ZGly
ZWN0aW9uTmV4dCgpLCBlYyk7IH0KLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJz
b3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGtl
eSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwga2V5LCBJ
REJDdXJzb3I6OmRpcmVjdGlvbk5leHQoKSwgZWMpOyB9CisgICAgUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBv
cGVuQ3Vyc29yKGNvbnRleHQsIGtleSwgSURCQ3Vyc29yOjpkaXJlY3Rpb25OZXh0KCksIGVjKTsg
fQogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9u
LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29y
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBjb25zdCBT
dHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNv
ZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBjb3VudChjb250ZXh0
LCBzdGF0aWNfY2FzdDxJREJLZXlSYW5nZSo+KDApLCBlYyk7IH0KICAgICBQYXNzUmVmUHRyPElE
QlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY291
bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRp
b25Db2RlJik7CiAKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJu
IG9wZW5LZXlDdXJzb3IoY29udGV4dCwgc3RhdGljX2Nhc3Q8SURCS2V5UmFuZ2UqPigwKSwgZWMp
OyB9CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBF
eGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3BlbktleUN1cnNvcihjb250ZXh0LCBrZXlSYW5n
ZSwgSURCQ3Vyc29yOjpkaXJlY3Rpb25OZXh0KCksIGVjKTsgfQotICAgIFBhc3NSZWZQdHI8SURC
UmVxdWVzdD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBj
b25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3Blbktl
eUN1cnNvcihjb250ZXh0LCBrZXksIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCgpLCBlYyk7IH0K
KyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhj
ZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5LZXlDdXJzb3IoY29udGV4dCwga2V5LCBJREJD
dXJzb3I6OmRpcmVjdGlvbk5leHQoKSwgZWMpOyB9CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0
PiBvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQ
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNl
cHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5
LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8
SURCS2V5UmFuZ2U+LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0
PiBnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGdldChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0
aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZ2V0S2V5KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgRXhjZXB0aW9uQ29kZSYpOwot
ICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZ2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBnZXRLZXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZvaWQgbWFy
a0RlbGV0ZWQoKSB7IG1fZGVsZXRlZCA9IHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuY3BwCmluZGV4IDcyOGY5NTMuLjNkNTRmYzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5j
cHAKQEAgLTQ5LDEzICs0OSwxMyBAQCBJREJLZXlSYW5nZTo6SURCS2V5UmFuZ2UoUGFzc1JlZlB0
cjxJREJLZXk+IGxvd2VyLCBQYXNzUmVmUHRyPElEQktleT4gdXBwZXIsIExvdwogewogfQogCi1T
Y3JpcHRWYWx1ZSBJREJLZXlSYW5nZTo6bG93ZXJWYWx1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KSBjb25zdAorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgSURCS2V5UmFuZ2U6Omxv
d2VyVmFsdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkgY29uc3QKIHsKICAgICBE
T01SZXF1ZXN0U3RhdGUgcmVxdWVzdFN0YXRlKGNvbnRleHQpOwogICAgIHJldHVybiBpZGJLZXlU
b1NjcmlwdFZhbHVlKCZyZXF1ZXN0U3RhdGUsIG1fbG93ZXIpOwogfQogCi1TY3JpcHRWYWx1ZSBJ
REJLZXlSYW5nZTo6dXBwZXJWYWx1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSBj
b25zdAorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgSURCS2V5UmFuZ2U6OnVwcGVyVmFsdWUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkgY29uc3QKIHsKICAgICBET01SZXF1ZXN0U3Rh
dGUgcmVxdWVzdFN0YXRlKGNvbnRleHQpOwogICAgIHJldHVybiBpZGJLZXlUb1NjcmlwdFZhbHVl
KCZyZXF1ZXN0U3RhdGUsIG1fdXBwZXIpOwpAQCAtNzIsNyArNzIsNyBAQCBQYXNzUmVmUHRyPElE
QktleVJhbmdlPiBJREJLZXlSYW5nZTo6b25seShQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBF
eGNlcHRpb25DbwogICAgIHJldHVybiBJREJLZXlSYW5nZTo6Y3JlYXRlKGtleSwga2V5LCBMb3dl
ckJvdW5kQ2xvc2VkLCBVcHBlckJvdW5kQ2xvc2VkKTsKIH0KIAotUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4gSURCS2V5UmFuZ2U6Om9ubHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Y29uc3QgU2NyaXB0VmFsdWUmIGtleVZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQ
dHI8SURCS2V5UmFuZ2U+IElEQktleVJhbmdlOjpvbmx5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXlWYWx1ZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CiAgICAgRE9NUmVxdWVzdFN0YXRlIHJlcXVlc3RTdGF0ZShjb250ZXh0
KTsKICAgICBSZWZQdHI8SURCS2V5PiBrZXkgPSBzY3JpcHRWYWx1ZVRvSURCS2V5KCZyZXF1ZXN0
U3RhdGUsIGtleVZhbHVlKTsKQEAgLTg0LDcgKzg0LDcgQEAgUGFzc1JlZlB0cjxJREJLZXlSYW5n
ZT4gSURCS2V5UmFuZ2U6Om9ubHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QKICAgICByZXR1cm4gSURCS2V5UmFuZ2U6OmNyZWF0ZShrZXksIGtleSwgTG93ZXJCb3VuZENs
b3NlZCwgVXBwZXJCb3VuZENsb3NlZCk7CiB9CiAKLVBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IElE
QktleVJhbmdlOjpsb3dlckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFNjcmlwdFZhbHVlJiBib3VuZFZhbHVlLCBib29sIG9wZW4sIEV4Y2VwdGlvbkNvZGUmIGVj
KQorUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6Omxvd2VyQm91bmQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
IGJvdW5kVmFsdWUsIGJvb2wgb3BlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgRE9NUmVx
dWVzdFN0YXRlIHJlcXVlc3RTdGF0ZShjb250ZXh0KTsKICAgICBSZWZQdHI8SURCS2V5PiBib3Vu
ZCA9IHNjcmlwdFZhbHVlVG9JREJLZXkoJnJlcXVlc3RTdGF0ZSwgYm91bmRWYWx1ZSk7CkBAIC05
Niw3ICs5Niw3IEBAIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IElEQktleVJhbmdlOjpsb3dlckJv
dW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgcmV0dXJuIElEQktleVJh
bmdlOjpjcmVhdGUoYm91bmQsIDAsIG9wZW4gPyBMb3dlckJvdW5kT3BlbiA6IExvd2VyQm91bmRD
bG9zZWQsIFVwcGVyQm91bmRPcGVuKTsKIH0KIAotUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gSURC
S2V5UmFuZ2U6OnVwcGVyQm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgU2NyaXB0VmFsdWUmIGJvdW5kVmFsdWUsIGJvb2wgb3BlbiwgRXhjZXB0aW9uQ29kZSYgZWMp
CitQYXNzUmVmUHRyPElEQktleVJhbmdlPiBJREJLZXlSYW5nZTo6dXBwZXJCb3VuZChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYg
Ym91bmRWYWx1ZSwgYm9vbCBvcGVuLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBET01SZXF1
ZXN0U3RhdGUgcmVxdWVzdFN0YXRlKGNvbnRleHQpOwogICAgIFJlZlB0cjxJREJLZXk+IGJvdW5k
ID0gc2NyaXB0VmFsdWVUb0lEQktleSgmcmVxdWVzdFN0YXRlLCBib3VuZFZhbHVlKTsKQEAgLTEw
OCw3ICsxMDgsNyBAQCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBJREJLZXlSYW5nZTo6dXBwZXJC
b3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgIHJldHVybiBJREJLZXlS
YW5nZTo6Y3JlYXRlKDAsIGJvdW5kLCBMb3dlckJvdW5kT3Blbiwgb3BlbiA/IFVwcGVyQm91bmRP
cGVuIDogVXBwZXJCb3VuZENsb3NlZCk7CiB9CiAKLVBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IElE
QktleVJhbmdlOjpib3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
Y3JpcHRWYWx1ZSYgbG93ZXJWYWx1ZSwgY29uc3QgU2NyaXB0VmFsdWUmIHVwcGVyVmFsdWUsIGJv
b2wgbG93ZXJPcGVuLCBib29sIHVwcGVyT3BlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVm
UHRyPElEQktleVJhbmdlPiBJREJLZXlSYW5nZTo6Ym91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGxvd2VyVmFsdWUsIGNv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB1cHBlclZhbHVlLCBib29sIGxvd2VyT3Blbiwg
Ym9vbCB1cHBlck9wZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIERPTVJlcXVlc3RTdGF0
ZSByZXF1ZXN0U3RhdGUoY29udGV4dCk7CiAgICAgUmVmUHRyPElEQktleT4gbG93ZXIgPSBzY3Jp
cHRWYWx1ZVRvSURCS2V5KCZyZXF1ZXN0U3RhdGUsIGxvd2VyVmFsdWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmgKaW5kZXggNTQ3Njk1YS4uZTU1
MWNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5
UmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5n
ZS5oCkBAIC01OSwyMyArNTksMjMgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8SURCS2V5PiBs
b3dlcigpIGNvbnN0IHsgcmV0dXJuIG1fbG93ZXI7IH0KICAgICBQYXNzUmVmUHRyPElEQktleT4g
dXBwZXIoKSBjb25zdCB7IHJldHVybiBtX3VwcGVyOyB9CiAKLSAgICBTY3JpcHRWYWx1ZSBsb3dl
clZhbHVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBjb25zdDsKLSAgICBTY3JpcHRWYWx1ZSB1
cHBlclZhbHVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBjb25zdDsKKyAgICBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSBsb3dlclZhbHVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBjb25zdDsK
KyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB1cHBlclZhbHVlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKSBjb25zdDsKICAgICBib29sIGxvd2VyT3BlbigpIGNvbnN0IHsgcmV0dXJuIG1fbG93
ZXJUeXBlID09IExvd2VyQm91bmRPcGVuOyB9CiAgICAgYm9vbCB1cHBlck9wZW4oKSBjb25zdCB7
IHJldHVybiBtX3VwcGVyVHlwZSA9PSBVcHBlckJvdW5kT3BlbjsgfQogCiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+IG9ubHkoUGFzc1JlZlB0cjxJREJLZXk+IHZhbHVlLCBFeGNl
cHRpb25Db2RlJik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IG9ubHkoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gb25seShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0
aW9uQ29kZSYpOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGxvd2VyQm91
bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGJv
dW5kLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gbG93ZXJCb3VuZChjb250ZXh0LCBib3Vu
ZCwgZmFsc2UsIGVjKTsgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBsb3dl
ckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYgYm91bmQs
IGJvb2wgb3BlbiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiBsb3dlckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBib3VuZCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0
dXJuIGxvd2VyQm91bmQoY29udGV4dCwgYm91bmQsIGZhbHNlLCBlYyk7IH0KKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gbG93ZXJCb3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGJvdW5kLCBib29sIG9wZW4sIEV4Y2Vw
dGlvbkNvZGUmKTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiB1cHBlckJv
dW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBi
b3VuZCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIHVwcGVyQm91bmQoY29udGV4dCwgYm91
bmQsIGZhbHNlLCBlYyk7IH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gdXBw
ZXJCb3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU2NyaXB0VmFsdWUmIGJvdW5k
LCBib29sIG9wZW4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJL
ZXlSYW5nZT4gdXBwZXJCb3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25z
dCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgYm91bmQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJl
dHVybiB1cHBlckJvdW5kKGNvbnRleHQsIGJvdW5kLCBmYWxzZSwgZWMpOyB9CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHVwcGVyQm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBib3VuZCwgYm9vbCBvcGVuLCBFeGNl
cHRpb25Db2RlJik7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gYm91bmQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGxvd2Vy
LCBjb25zdCBTY3JpcHRWYWx1ZSYgdXBwZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBi
b3VuZChjb250ZXh0LCBsb3dlciwgdXBwZXIsIGZhbHNlLCBmYWxzZSwgZWMpOyB9Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBsb3dlciwgY29uc3QgU2NyaXB0VmFsdWUmIHVw
cGVyLCBib29sIGxvd2VyT3BlbiwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGJvdW5kKGNv
bnRleHQsIGxvd2VyLCB1cHBlciwgbG93ZXJPcGVuLCBmYWxzZSwgZWMpOyB9Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBTY3JpcHRWYWx1ZSYgbG93ZXIsIGNvbnN0IFNjcmlwdFZhbHVlJiB1cHBlciwgYm9vbCBs
b3dlck9wZW4sIGJvb2wgdXBwZXJPcGVuLCBFeGNlcHRpb25Db2RlJik7CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+IGJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBsb3dlciwgY29uc3QgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUmIHVwcGVyLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gYm91bmQo
Y29udGV4dCwgbG93ZXIsIHVwcGVyLCBmYWxzZSwgZmFsc2UsIGVjKTsgfQorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPElEQktleVJhbmdlPiBib3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgbG93ZXIsIGNvbnN0IERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlJiB1cHBlciwgYm9vbCBsb3dlck9wZW4sIEV4Y2VwdGlvbkNvZGUmIGVj
KSB7IHJldHVybiBib3VuZChjb250ZXh0LCBsb3dlciwgdXBwZXIsIGxvd2VyT3BlbiwgZmFsc2Us
IGVjKTsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBib3VuZChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGxvd2VyLCBj
b25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdXBwZXIsIGJvb2wgbG93ZXJPcGVuLCBib29s
IHVwcGVyT3BlbiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgYm9vbCBpc09ubHlLZXkoKSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuY3BwCmluZGV4IDY5YmFiZjEuLjc4NjdmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTg2LDcgKzg2LDcg
QEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Z2V0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3MKICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7
CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmdldChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRp
b25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmdldChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+
IGtleVJhbmdlID0gSURCS2V5UmFuZ2U6Om9ubHkoY29udGV4dCwga2V5LCBlYyk7CiAgICAgaWYg
KGVjKQpAQCAtOTQsNyArOTQsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0
b3JlOjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29ucwogICAgIHJldHVy
biBnZXQoY29udGV4dCwga2V5UmFuZ2UucmVsZWFzZSgpLCBlYyk7CiB9CiAKLXN0YXRpYyB2b2lk
IGdlbmVyYXRlSW5kZXhLZXlzRm9yVmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUs
IGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEsIGNvbnN0IFNjcmlwdFZhbHVl
JiBvYmplY3RWYWx1ZSwgSURCT2JqZWN0U3RvcmU6OkluZGV4S2V5cyogaW5kZXhLZXlzKQorc3Rh
dGljIHZvaWQgZ2VuZXJhdGVJbmRleEtleXNGb3JWYWx1ZShET01SZXF1ZXN0U3RhdGUqIHJlcXVl
c3RTdGF0ZSwgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYgaW5kZXhNZXRhZGF0YSwgY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmIG9iamVjdFZhbHVlLCBJREJPYmplY3RTdG9yZTo6SW5kZXhL
ZXlzKiBpbmRleEtleXMpCiB7CiAgICAgQVNTRVJUKGluZGV4S2V5cyk7CiAgICAgUmVmUHRyPElE
QktleT4gaW5kZXhLZXkgPSBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKHJl
cXVlc3RTdGF0ZSwgb2JqZWN0VmFsdWUsIGluZGV4TWV0YWRhdGEua2V5UGF0aCk7CkBAIC0xMTcs
MzEgKzExNywzMSBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZUluZGV4S2V5c0ZvclZhbHVlKERPTVJl
cXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBjb25zdCBJREJJbgogICAgIH0KIH0KIAotUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6YWRkKEpTQzo6RXhlY1N0YXRlKiBzdGF0
ZSwgU2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25D
b2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmFkZChKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
TE9HKFN0b3JhZ2VBUEksICJJREJPYmplY3RTdG9yZTo6YWRkIik7CiAgICAgcmV0dXJuIHB1dChJ
REJEYXRhYmFzZUJhY2tlbmQ6OkFkZE9ubHksIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBzdGF0ZSwg
dmFsdWUsIGtleSwgZWMpOwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0
b3JlOjphZGQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBTY3JpcHRWYWx1ZSYgdmFsdWUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6YWRk
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgIklEQk9iamVjdFN0b3Jl
OjphZGQiKTsKICAgICByZXR1cm4gcHV0KElEQkRhdGFiYXNlQmFja2VuZDo6QWRkT25seSwgSURC
QW55OjpjcmVhdGUodGhpcyksIHN0YXRlLCB2YWx1ZSwgc3RhdGljX2Nhc3Q8SURCS2V5Kj4oMCks
IGVjKTsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgU2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTY3JpcHRWYWx1
ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2Jq
ZWN0U3RvcmU6OnB1dChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlJiB2YWx1ZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJPYmplY3RTdG9yZTo6cHV0Iik7
CiAgICAgcmV0dXJuIHB1dChJREJEYXRhYmFzZUJhY2tlbmQ6OkFkZE9yVXBkYXRlLCBJREJBbnk6
OmNyZWF0ZSh0aGlzKSwgc3RhdGUsIHZhbHVlLCBrZXksIGVjKTsKIH0KIAotUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgU2Ny
aXB0VmFsdWUmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVz
dD4gSURCT2JqZWN0U3RvcmU6OnB1dChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgTE9HKFN0b3Jh
Z2VBUEksICJJREJPYmplY3RTdG9yZTo6cHV0Iik7CiAgICAgcmV0dXJuIHB1dChJREJEYXRhYmFz
ZUJhY2tlbmQ6OkFkZE9yVXBkYXRlLCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgc3RhdGUsIHZhbHVl
LCBzdGF0aWNfY2FzdDxJREJLZXkqPigwKSwgZWMpOwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoSURCRGF0YWJhc2VCYWNrZW5kOjpQdXRNb2RlIHB1dE1v
ZGUsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgU2Ny
aXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5VmFsdWUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KElEQkRh
dGFiYXNlQmFja2VuZDo6UHV0TW9kZSBwdXRNb2RlLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNl
LCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwg
Y29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleVZhbHVlLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0
aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoc3RhdGUpOwogICAgIERPTVJlcXVlc3RTdGF0ZSByZXF1
ZXN0U3RhdGUoY29udGV4dCk7CkBAIC0xNDksNyArMTQ5LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KElEQkRhdGFiYXNlQmFja2VuZDo6UHV0TW9kZSBwdXRN
b2RlLAogICAgIHJldHVybiBwdXQocHV0TW9kZSwgc291cmNlLCBzdGF0ZSwgdmFsdWUsIGtleS5y
ZWxlYXNlKCksIGVjKTsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9y
ZTo6cHV0KElEQkRhdGFiYXNlQmFja2VuZDo6UHV0TW9kZSBwdXRNb2RlLCBQYXNzUmVmUHRyPElE
QkFueT4gc291cmNlLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFNjcmlwdFZhbHVlJiB2YWx1ZSwg
UGFzc1JlZlB0cjxJREJLZXk+IHBycEtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoSURCRGF0YWJhc2VCYWNrZW5kOjpQdXRN
b2RlIHB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIEpTQzo6RXhlY1N0YXRlKiBz
dGF0ZSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4g
cHJwS2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8SURCS2V5PiBrZXkgPSBw
cnBLZXk7CiAgICAgaWYgKG1fZGVsZXRlZCkgewpAQCAtMTY3LDcgKzE2Nyw3IEBAIFBhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChJREJEYXRhYmFzZUJhY2tlbmQ6OlB1
dE1vZGUgcHV0TW9kZSwKIAogICAgIC8vIEZJWE1FOiBFeHBvc2UgdGhlIEpTIGVuZ2luZSBleGNl
cHRpb24gc3RhdGUgdGhyb3VnaCBTY3JpcHRTdGF0ZS4KICAgICBib29sIGRpZFRocm93ID0gZmFs
c2U7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0g
dmFsdWUuc2VyaWFsaXplKHN0YXRlLCAwLCAwLCBkaWRUaHJvdyk7CisgICAgUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpzZXJpYWxpemUodmFsdWUsIHN0YXRlLCBudWxscHRyLCBudWxscHRyLCBkaWRUaHJvdyk7CiAg
ICAgaWYgKGRpZFRocm93KSB7CiAgICAgICAgIC8vIFNldHRpbmcgYW4gZXhwbGljaXQgRXhjZXB0
aW9uQ29kZSBoZXJlIHdvdWxkIGRlZmVyIGhhbmRsaW5nIHRoZSBhbHJlYWR5IHRocm93biBleGNl
cHRpb24uCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjYyLDcgKzI2Miw3IEBAIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvCiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwogfQogCi1QYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25D
b2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1
bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFJlZlB0cjxJREJL
ZXlSYW5nZT4ga2V5UmFuZ2UgPSBJREJLZXlSYW5nZTo6b25seShjb250ZXh0LCBrZXksIGVjKTsK
ICAgICBpZiAoZWMpCkBAIC0zMzYsNyArMzM2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGN1
cnNvci0+Y29udGludWVGdW5jdGlvbihzdGF0aWNfY2FzdDxJREJLZXkqPigwKSwgQVNTRVJUX05P
X0VYQ0VQVElPTik7CiAKICAgICAgICAgICAgIFJlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkgPSBj
dXJzb3ItPmlkYlByaW1hcnlLZXkoKTsKLSAgICAgICAgICAgIFNjcmlwdFZhbHVlIHZhbHVlID0g
Y3Vyc29yLT52YWx1ZSgpOworICAgICAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgdmFs
dWUgPSBjdXJzb3ItPnZhbHVlKCk7CiAKICAgICAgICAgICAgIElEQk9iamVjdFN0b3JlOjpJbmRl
eEtleXMgaW5kZXhLZXlzOwogICAgICAgICAgICAgZ2VuZXJhdGVJbmRleEtleXNGb3JWYWx1ZShy
ZXF1ZXN0LT5yZXF1ZXN0U3RhdGUoKSwgbV9pbmRleE1ldGFkYXRhLCB2YWx1ZSwgJmluZGV4S2V5
cyk7CkBAIC01MDIsNyArNTAyLDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RT
dG9yZTo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXgKICAgICByZXR1
cm4gb3BlbkN1cnNvcihjb250ZXh0LCBrZXlSYW5nZSwgSURCQ3Vyc29yOjpkaXJlY3Rpb25OZXh0
KCksIGVjKTsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6b3Bl
bkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1
ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2Jq
ZWN0U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAg
ICAgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwga2V5LCBJREJDdXJzb3I6OmRpcmVjdGlvbk5l
eHQoKSwgZWMpOwogfQpAQCAtNTM0LDcgKzUzNCw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
SURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
CiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBF
eGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6
Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewogICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBJREJLZXlS
YW5nZTo6b25seShjb250ZXh0LCBrZXksIGVjKTsKICAgICBpZiAoZWMpCkBAIC01NTgsNyArNTU4
LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Y291bnQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGEKICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNl
KCk7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmNvdW50KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4
Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6
Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPElEQktl
eVJhbmdlPiBrZXlSYW5nZSA9IElEQktleVJhbmdlOjpvbmx5KGNvbnRleHQsIGtleSwgZWMpOwog
ICAgIGlmIChlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZS5oCmluZGV4IGZmZjVmZjkuLmRhNjVhMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaApAQCAtNjUsMjEgKzY1LDIx
IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNhY3Rpb247IH0KICAgICBib29sIGF1dG9JbmNyZW1lbnQo
KSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhLmF1dG9JbmNyZW1lbnQ7IH0KIAotICAgIFBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gYWRkKEpTQzo6RXhlY1N0YXRlKiwgU2NyaXB0VmFsdWUmLCBFeGNl
cHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBwdXQoSlNDOjpFeGVjU3Rh
dGUqLCBTY3JpcHRWYWx1ZSYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IGFkZChKU0M6OkV4ZWNTdGF0ZSosIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgRXhj
ZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gcHV0KEpTQzo6RXhlY1N0
YXRlKiwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgRXhjZXB0aW9u
Q29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYp
OwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9u
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29y
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgY29uc3Qg
U3RyaW5nJiBkaXJlY3Rpb24sIElEQkRhdGFiYXNlQmFja2VuZDo6VGFza1R5cGUsIEV4Y2VwdGlv
bkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGly
ZWN0aW9uLCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVu
Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYpOwogCi0g
ICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElE
QlJlcXVlc3Q+IGdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gZ2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleVJhbmdl
PiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gYWRkKEpTQzo6
RXhlY1N0YXRlKiwgU2NyaXB0VmFsdWUmLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRp
b25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBwdXQoSlNDOjpFeGVjU3RhdGUq
LCBTY3JpcHRWYWx1ZSYsIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGFkZChKU0M6OkV4ZWNTdGF0ZSosIERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlJiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhj
ZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gcHV0KEpTQzo6RXhlY1N0
YXRlKiwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBk
ZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGRlbGV0
ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5
LCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBkZWxldGVGdW5j
dGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY2xl
YXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIFBhc3NS
ZWZQdHI8SURCSW5kZXg+IGNyZWF0ZUluZGV4KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBjb25zdCBEaWN0
aW9uYXJ5JiBvcHRpb25zLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gY3JlYXRlSW5kZXgo
Y29udGV4dCwgbmFtZSwgSURCS2V5UGF0aChrZXlQYXRoKSwgb3B0aW9ucywgZWMpOyB9CkBAIC05
MiwxMCArOTIsMTAgQEAgcHVibGljOgogCiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjb3Vu
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykgeyBy
ZXR1cm4gY291bnQoY29udGV4dCwgc3RhdGljX2Nhc3Q8SURCS2V5UmFuZ2UqPigwKSwgZWMpOyB9
CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTY3Jp
cHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0
PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0
PiBwdXQoSURCRGF0YWJhc2VCYWNrZW5kOjpQdXRNb2RlLCBQYXNzUmVmUHRyPElEQkFueT4gc291
cmNlLCBKU0M6OkV4ZWNTdGF0ZSosIFNjcmlwdFZhbHVlJiwgY29uc3QgU2NyaXB0VmFsdWUmIGtl
eSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gcHV0KElEQkRh
dGFiYXNlQmFja2VuZDo6UHV0TW9kZSwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgSlNDOjpF
eGVjU3RhdGUqLCBTY3JpcHRWYWx1ZSYsIFBhc3NSZWZQdHI8SURCS2V5PiwgRXhjZXB0aW9uQ29k
ZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gcHV0KElEQkRhdGFiYXNlQmFja2VuZDo6
UHV0TW9kZSwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgSlNDOjpFeGVjU3RhdGUqLCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXks
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHB1dChJREJEYXRh
YmFzZUJhY2tlbmQ6OlB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIEpTQzo6RXhl
Y1N0YXRlKiwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBQYXNzUmVmUHRyPElEQktleT4sIEV4
Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIG1hcmtEZWxldGVkKCkgeyBtX2RlbGV0ZWQgPSB0cnVl
OyB9CiAgICAgdm9pZCB0cmFuc2FjdGlvbkZpbmlzaGVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKaW5kZXggMDA0OWVkYS4uZDU2NDYw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5j
cHAKQEAgLTIxMyw3ICsyMTMsNyBAQCBQYXNzUmVmUHRyPElEQkN1cnNvcj4gSURCUmVxdWVzdDo6
Z2V0UmVzdWx0Q3Vyc29yKCkKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBJREJSZXF1ZXN0Ojpz
ZXRSZXN1bHRDdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3I+IGN1cnNvciwgUGFzc1JlZlB0cjxJ
REJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIGNvbnN0IFNjcmlwdFZh
bHVlJiB2YWx1ZSkKK3ZvaWQgSURCUmVxdWVzdDo6c2V0UmVzdWx0Q3Vyc29yKFBhc3NSZWZQdHI8
SURCQ3Vyc29yPiBjdXJzb3IsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURC
S2V5PiBwcmltYXJ5S2V5LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUpCiB7
CiAgICAgQVNTRVJUKG1fcmVhZHlTdGF0ZSA9PSBQRU5ESU5HKTsKICAgICBtX2N1cnNvcktleSA9
IGtleTsKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNz
UmVmUHRyPElEQkN1cnNvckJhY2tlbmQ+IGJhY2tlbmQsIFBhc3NSZWZQdHI8SURCSwogICAgICAg
ICByZXR1cm47CiAKICAgICBET01SZXF1ZXN0U3RhdGU6OlNjb3BlIHNjb3BlKG1fcmVxdWVzdFN0
YXRlKTsKLSAgICBTY3JpcHRWYWx1ZSB2YWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIo
cmVxdWVzdFN0YXRlKCksIGJ1ZmZlcik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgdmFs
dWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKHJlcXVlc3RTdGF0ZSgpLCBidWZmZXIpOwog
ICAgIEFTU0VSVCghbV9wZW5kaW5nQ3Vyc29yKTsKICAgICBSZWZQdHI8SURCQ3Vyc29yPiBjdXJz
b3I7CiAgICAgc3dpdGNoIChtX2N1cnNvclR5cGUpIHsKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lk
IElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWVCdWZm
ZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIERPTVJlcXVlc3RTdGF0ZTo6U2NvcGUgc2NvcGUo
bV9yZXF1ZXN0U3RhdGUpOwotICAgIFNjcmlwdFZhbHVlIHZhbHVlID0gZGVzZXJpYWxpemVJREJW
YWx1ZUJ1ZmZlcihyZXF1ZXN0U3RhdGUoKSwgdmFsdWVCdWZmZXIpOworICAgIERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlIHZhbHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihyZXF1ZXN0U3Rh
dGUoKSwgdmFsdWVCdWZmZXIpOwogICAgIG9uU3VjY2Vzc0ludGVybmFsKHZhbHVlKTsKIH0KIApA
QCAtMzQ4LDcgKzM0OCw3IEBAIHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPiB2YWx1ZUJ1ZmZlciwgUGFzc1JlZlB0cjxJREJLCiAgICAgQVNTRVJUKGtl
eVBhdGggPT0gZWZmZWN0aXZlT2JqZWN0U3RvcmUobV9zb3VyY2UpLT5rZXlQYXRoKCkpOwogI2Vu
ZGlmCiAgICAgRE9NUmVxdWVzdFN0YXRlOjpTY29wZSBzY29wZShtX3JlcXVlc3RTdGF0ZSk7Ci0g
ICAgU2NyaXB0VmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKHJlcXVlc3RT
dGF0ZSgpLCB2YWx1ZUJ1ZmZlcik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgdmFsdWUg
PSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKHJlcXVlc3RTdGF0ZSgpLCB2YWx1ZUJ1ZmZlcik7
CiAKICAgICBSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5ID0gcHJwUHJpbWFyeUtleTsKICNpZm5k
ZWYgTkRFQlVHCkBAIC0zODMsNyArMzgzLDcgQEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3NJ
bnRlcm5hbChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUpCiAgICAgcmV0
dXJuIG9uU3VjY2Vzc0ludGVybmFsKGRlc2VyaWFsaXplSURCVmFsdWUocmVxdWVzdFN0YXRlKCks
IHZhbHVlKSk7CiB9CiAKLXZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzSW50ZXJuYWwoY29uc3Qg
U2NyaXB0VmFsdWUmIHZhbHVlKQordm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3NJbnRlcm5hbChj
b25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUpCiB7CiAgICAgbV9yZXN1bHQgPSBJ
REJBbnk6OmNyZWF0ZSh2YWx1ZSk7CiAgICAgaWYgKG1fcGVuZGluZ0N1cnNvcikgewpAQCAtNDAw
LDcgKzQwMCw3IEBAIHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5
PiBrZXksIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5CiAgICAgICAgIHJldHVybjsKIAog
ICAgIERPTVJlcXVlc3RTdGF0ZTo6U2NvcGUgc2NvcGUobV9yZXF1ZXN0U3RhdGUpOwotICAgIFNj
cmlwdFZhbHVlIHZhbHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihyZXF1ZXN0U3RhdGUo
KSwgYnVmZmVyKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB2YWx1ZSA9IGRlc2VyaWFs
aXplSURCVmFsdWVCdWZmZXIocmVxdWVzdFN0YXRlKCksIGJ1ZmZlcik7CiAgICAgQVNTRVJUKG1f
cGVuZGluZ0N1cnNvcik7CiAgICAgc2V0UmVzdWx0Q3Vyc29yKG1fcGVuZGluZ0N1cnNvci5yZWxl
YXNlKCksIGtleSwgcHJpbWFyeUtleSwgdmFsdWUpOwogICAgIGVucXVldWVFdmVudChjcmVhdGVT
dWNjZXNzRXZlbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJS
ZXF1ZXN0LmgKaW5kZXggNDMwNTg5ZS4uYWM3NWRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaApAQCAtMTIwLDcgKzEyMCw3IEBAIHByb3RlY3Rl
ZDoKICAgICB2b2lkIGVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CiAgICAgdmlydHVh
bCBib29sIHNob3VsZEVucXVldWVFdmVudCgpIGNvbnN0OwogICAgIHZvaWQgb25TdWNjZXNzSW50
ZXJuYWwoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKLSAgICB2b2lkIG9uU3Vj
Y2Vzc0ludGVybmFsKGNvbnN0IFNjcmlwdFZhbHVlJik7CisgICAgdm9pZCBvblN1Y2Nlc3NJbnRl
cm5hbChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYpOwogCiAgICAgUmVmUHRyPElEQkFu
eT4gbV9yZXN1bHQ7CiAgICAgdW5zaWduZWQgc2hvcnQgbV9lcnJvckNvZGU7CkBAIC0xNDAsNyAr
MTQwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9W
RVJSSURFIEZJTkFMIHsgZGVyZWYoKTsgfQogCiAgICAgUGFzc1JlZlB0cjxJREJDdXJzb3I+IGdl
dFJlc3VsdEN1cnNvcigpOwotICAgIHZvaWQgc2V0UmVzdWx0Q3Vyc29yKFBhc3NSZWZQdHI8SURC
Q3Vyc29yPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtl
eSwgY29uc3QgU2NyaXB0VmFsdWUmKTsKKyAgICB2b2lkIHNldFJlc3VsdEN1cnNvcihQYXNzUmVm
UHRyPElEQkN1cnNvcj4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+IHBy
aW1hcnlLZXksIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJik7CiAKICAgICBSZWZQdHI8
SURCQW55PiBtX3NvdXJjZTsKICAgICBjb25zdCBJREJEYXRhYmFzZUJhY2tlbmQ6OlRhc2tUeXBl
IG1fdGFza1R5cGU7CkBAIC0xNTUsNyArMTU1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SURC
Q3Vyc29yPiBtX3BlbmRpbmdDdXJzb3I7CiAgICAgUmVmUHRyPElEQktleT4gbV9jdXJzb3JLZXk7
CiAgICAgUmVmUHRyPElEQktleT4gbV9jdXJzb3JQcmltYXJ5S2V5OwotICAgIFNjcmlwdFZhbHVl
IG1fY3Vyc29yVmFsdWU7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgbV9jdXJzb3JWYWx1
ZTsKICAgICBib29sIG1fZGlkRmlyZVVwZ3JhZGVOZWVkZWRFdmVudDsKICAgICBib29sIG1fcHJl
dmVudFByb3BhZ2F0aW9uOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5jcHAKaW5kZXggMGQzZDI2ZS4uNmMxMjVhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFu
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0
eVJhbmdlLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgi
CiAjaW5jbHVkZSAiTWVkaWFTb3VyY2VTdGF0ZXMuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5o
IgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8aW50ZXJwcmV0
ZXIvQ2FsbEZyYW1lLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAKQEAgLTUw
LDcgKzUwLDcgQEAgQ2FwYWJpbGl0eVJhbmdlOjpDYXBhYmlsaXR5UmFuZ2UoY29uc3QgTWVkaWFT
dHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UmIHJhbmdlSW4KIHsKIH0KIAotc3RhdGljIFNjcmlw
dFZhbHVlIHNjcmlwdFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTWVkaWFTdHJlYW1Tb3Vy
Y2VDYXBhYmlsaXR5UmFuZ2U6OlZhbHVlVW5pb24mIHZhbHVlLCBNZWRpYVN0cmVhbVNvdXJjZUNh
cGFiaWxpdHlSYW5nZTo6VHlwZSB0eXBlKQorc3RhdGljIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
IHNjcmlwdFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VDYXBh
YmlsaXR5UmFuZ2U6OlZhbHVlVW5pb24mIHZhbHVlLCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxp
dHlSYW5nZTo6VHlwZSB0eXBlKQogewogICAgIC8vIE5PVEU6IHRoZSBzcGVjIHNheXM6CiAgICAg
Ly8gICAgICAuLi4gYW4gaW1wbGVtZW50YXRpb24gc2hvdWxkIG1ha2UgYSByZWFzb25hYmxlIGF0
dGVtcHQgdG8gdHJhbnNsYXRlIGFuZCBzY2FsZSB0aGUgaGFyZHdhcmUncyBzZXR0aW5nCkBAIC02
MywyNiArNjMsMjYgQEAgc3RhdGljIFNjcmlwdFZhbHVlIHNjcmlwdFZhbHVlKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXQKICAgICAKICAgICBzd2l0Y2gg
KHR5cGUpIHsKICAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlOjpGbG9h
dDoKLSAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIEpTVmFsdWUodmFsdWUu
YXNGbG9hdCkpOworICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoZXhlYy0+
dm0oKSwgSlNWYWx1ZSh2YWx1ZS5hc0Zsb2F0KSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2U6OlVMb25nOgotICAgICAgICByZXR1cm4g
U2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwgSlNWYWx1ZSh2YWx1ZS5hc1VMb25nKSk7CisgICAgICAg
IHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBKU1ZhbHVlKHZhbHVl
LmFzVUxvbmcpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZUNh
cGFiaWxpdHlSYW5nZTo6VW5kZWZpbmVkOgotICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoZXhl
Yy0+dm0oKSwganNVbmRlZmluZWQoKSk7CisgICAgICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZShleGVjLT52bSgpLCBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFNjcmlwdFZhbHVlKGV4
ZWMtPnZtKCksIGpzVW5kZWZpbmVkKCkpOworICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZShleGVjLT52bSgpLCBqc1VuZGVmaW5lZCgpKTsKIH0KIAotU2NyaXB0VmFsdWUgQ2FwYWJp
bGl0eVJhbmdlOjptaW4oRXhlY1N0YXRlKiBleGVjKSBjb25zdAorRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUgQ2FwYWJpbGl0eVJhbmdlOjptaW4oRXhlY1N0YXRlKiBleGVjKSBjb25zdAogewogICAg
IHJldHVybiBzY3JpcHRWYWx1ZShleGVjLCBtX3JhbmdlSW5mby5taW4oKSwgbV9yYW5nZUluZm8u
dHlwZSgpKTsKIH0KIAotU2NyaXB0VmFsdWUgQ2FwYWJpbGl0eVJhbmdlOjptYXgoRXhlY1N0YXRl
KiBleGVjKSBjb25zdAorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgQ2FwYWJpbGl0eVJhbmdlOjpt
YXgoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogewogICAgIHJldHVybiBzY3JpcHRWYWx1ZShleGVj
LCBtX3JhbmdlSW5mby5tYXgoKSwgbV9yYW5nZUluZm8udHlwZSgpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5oCmluZGV4
IDM2ODQwNjYuLjkwNWFlM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaApAQCAtMzAsOCArMzAsOCBAQAogI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCiAKICNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGll
cy5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxl
LmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxpbnRlcnBy
ZXRlci9DYWxsRnJhbWUuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC00Myw4
ICs0Myw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZWZQdHI8Q2FwYWJpbGl0eVJhbmdlPiBj
cmVhdGUoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UmKTsKIAotICAgIFNj
cmlwdFZhbHVlIG1pbihKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0OwotICAgIFNjcmlwdFZhbHVlIG1h
eChKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0OworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG1p
bihKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0OworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG1h
eChKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0OwogICAgIGJvb2wgc3VwcG9ydGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9yYW5nZUluZm8uc3VwcG9ydGVkKCk7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFp
bnQuaAppbmRleCBmZDI5NDgxLi4yYTkzZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5oCkBAIC0zMyw5
ICszMywxMSBAQAogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQorbmFtZXNwYWNlIERlcHJlY2F0
ZWQgewogY2xhc3MgU2NyaXB0VmFsdWU7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgTWVkaWFUcmFja0NvbnN0cmFpbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVRyYWNrQ29u
c3RyYWludD4sIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUgewogcHVibGljOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuY3BwCmlu
ZGV4IGMwZmM3MDMuLjM1M2UzMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHAKQEAgLTM3LDcgKzM3LDYgQEAKIAog
I2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5j
bHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiUlRDSWNlQ2FuZGlkYXRlRGVzY3Jp
cHRvci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcApp
bmRleCA4MmI4NmU5Li4wYzI5MzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAKQEAgLTQx
LDcgKzQxLDYgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5o
IgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3Qu
aCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiVXNlckFnZW50U2Ny
aXB0cy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxh
Y2VtZW50LmgKaW5kZXggZGFhZTdiMS4uNWExOTA3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmgK
QEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIlBsdWdpblJlcGxhY2VtZW50LmgiCiAjaW5j
bHVkZSAiU2NyaXB0U3RhdGUuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUg
PGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1VzZUpTQy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQppbmRleCBhOTcx
ZmEwLi42Mzg0NTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKKysr
IGIvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCkBAIC0xMjQsMTIgKzEyNCwxMCBAQCBsaXN0
KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tG
YWN0b3J5LmNwcAogICAgIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCiAgICAgYmlu
ZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCi0gICAgYmluZGluZ3MvanMvU2NyaXB0RnVu
Y3Rpb25DYWxsLmNwcAotICAgIGJpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHAKKyAgICBiaW5k
aW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuY3BwCiAgICAgYmluZGluZ3MvanMvU2NyaXB0UHJv
ZmlsZS5jcHAKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5jcHAKICAgICBiaW5kaW5n
cy9qcy9TY3JpcHRTdGF0ZS5jcHAKLSAgICBiaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAKICAg
ICBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCiAgICAgYmluZGluZ3MvanMv
V2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4
IDMxM2RhN2EuLmNhN2JkYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xNDMwLDcgKzE0MzAs
NiBAQCBfX1pOSzdXZWJDb3JlMTFSZW5kZXJMYXllcjI0bmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5n
RXYKIF9fWk5LN1dlYkNvcmUxMVJlbmRlclN0eWxlMTFmb250TWV0cmljc0V2CiBfX1pOSzdXZWJD
b3JlMTFSZW5kZXJTdHlsZTIxdmlzaXRlZERlcGVuZGVudENvbG9yRWkKIF9fWk5LN1dlYkNvcmUx
MVJlbmRlclN0eWxlNGZvbnRFdgotX19aTks3V2ViQ29yZTExU2NyaXB0VmFsdWU5Z2V0U3RyaW5n
RVBOM0pTQzlFeGVjU3RhdGVFUk4zV1RGNlN0cmluZ0UKIF9fWk5LN1dlYkNvcmUxMlJlbmRlck9i
amVjdDE0ZW5jbG9zaW5nTGF5ZXJFdgogX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTVsb2Nh
bFRvQWJzb2x1dGVFUktOU18xMEZsb2F0UG9pbnRFagogX19aTks3V2ViQ29yZTEyUmVuZGVyT2Jq
ZWN0MTZyZXBhaW50UmVjdGFuZ2xlRVJLTlNfMTBMYXlvdXRSZWN0RWIKQEAgLTE1MDIsNyArMTUw
MSw2IEBAIF9fWk5LN1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uMzFnZXRDbGlwcGVkVmlzaWJsZVRl
eHRSZWN0YW5nbGVzRVJOM1dURjZWZWN0b3JJTlNfCiBfX1pOSzdXZWJDb3JlMTRGcmFtZVNlbGVj
dGlvbjM2cm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50RXYKIF9fWk5LN1dlYkNv
cmUxNEZyYW1lU2VsZWN0aW9uNmJvdW5kc0ViCiBfX1pOSzdXZWJDb3JlMTRJbnNlcnRpb25Qb2lu
dDhpc0FjdGl2ZUV2Ci1fX1pOSzdXZWJDb3JlMTRJbnNwZWN0b3JWYWx1ZTEydG9KU09OU3RyaW5n
RXYKIF9fWk5LN1dlYkNvcmUxNFJlbmRlckxpc3RJdGVtMTBtYXJrZXJUZXh0RXYKIF9fWk5LN1dl
YkNvcmUxNFJlc291cmNlQnVmZmVyNGRhdGFFdgogX19aTks3V2ViQ29yZTE0UmVzb3VyY2VCdWZm
ZXI0c2l6ZUV2CkBAIC0yNjI1LDcgKzI2MjMsNyBAQCBfX1pON1dlYkNvcmUxNkhUTUxJbnB1dEVs
ZW1lbnQyNXNlbGVjdENvbG9ySW5Db2xvckNob29zZXJFUktOU181Q29sb3JFCiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKIF9fWk43V2ViQ29yZTE1SW5zcGVjdG9yQ2xpZW50MzFkb0Rpc3BhdGNoTWVz
c2FnZU9uRnJvbnRlbmRQYWdlRVBOU180UGFnZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29y
ZTE3SW5zcGVjdG9yQ291bnRlcnMxMmNvdW50ZXJWYWx1ZUVOUzBfMTFDb3VudGVyVHlwZUUKLV9f
Wk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE1Y29ubmVjdEZyb250ZW5kRVBOU18yNElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbEUKK19fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxl
cjE1Y29ubmVjdEZyb250ZW5kRVBOOUluc3BlY3RvcjI0SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
RQogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMThkaXNjb25uZWN0RnJvbnRlbmRF
dgogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMThzZXRQcm9maWxlckVuYWJsZWRF
YgogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMjVldmFsdWF0ZUZvclRlc3RJbkZy
b250ZW5kRWxSS04zV1RGNlN0cmluZ0UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHBy
b2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IDIyNzYxOTAuLmUwY2ExMTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtNzQyLDcgKzc0Miw3
IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2Jq
JChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSFRN
TE5hbWVzLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVk
U291cmNlc1xJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckZyb250ZW5kLmNw
cCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJ
bnNwZWN0b3JUeXBlQnVpbGRlci5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVxXZWJDb3JlXERlcml2ZWRTb3VyY2VzXEpTQWJzdHJhY3RXb3JrZXIu
Y3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE3
Mjg4LDIxICsxNzI4OCw3IEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCI+Ci0gICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWly
b3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2lu
Q2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1
ZmZpeHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdT
dWZmaXh8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2
NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWly
b3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9X
aW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1
Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1
Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgPC9DbENvbXBpbGU+Ci0g
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRPYmplY3QuY3BwIiAv
PgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0R2xvYmFsT2Jq
ZWN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlw
dFByb2ZpbGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNc
U2NyaXB0UHJvZmlsZXIuY3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CkBAIC0xNzMzMiw3ICsxNzMxOCw2IEBACiAgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9k
dWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9k
dWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgot
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0VmFsdWUuY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CkBAIC0xNzY0NSwxNCArMTc2MzAsNiBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMici
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcCI+Ci0gICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAg
PC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVj
dG9yQWxsSW5PbmUuY3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KQEAgLTE3NjY5LDE0ICsxNzY0Niw2IEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2
NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNw
cCI+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0
b3JcSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzIn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC0xNzkxNywxNCArMTc4ODYsNiBAQAogICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29t
cGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JWYWx1
ZXMuY3BwIj4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGlu
c3BlY3RvclxJbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxX
aW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE4MTE3LDcgKzE4MDc4LDcgQEAKICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3Jt
QXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xJbnNwZWN0b3JGcm9udGVuZC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3Rvck92ZXJsYXlQYWdlLmgiIC8+
Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQ
bGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVj
dG9yVHlwZUJ1aWxkZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0
ZWN0dXJlKVxXZWJDb3JlXERlcml2ZWRTb3VyY2VzXEpTQWJzdHJhY3RXb3JrZXIuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0F0dHIuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmok
KFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0Jh
clByb3AuaCIgLz4KQEAgLTE4NTg3LDExICsxODU0OCwyMCBAQAogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhY2Nlc3NpYmlsaXR5XEFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjc3NcQ1NTSW1hZ2VT
ZXRWYWx1ZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRl
cnNcYmluZGluZ3NcU2NyaXB0RnVuY3Rpb25DYWxsLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5nc1xTY3JpcHRPYmplY3QuaCIgLz4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzXFNjcmlw
dFZhbHVlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVy
c1xoZWFwXEFsbG9jYXRpb25TcGFjZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
Rm9yd2FyZGluZ0hlYWRlcnNcaGVhcFxIZWFwLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xoZWFwXFNsb3RWaXNpdG9yLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xoZWFwXFN0cm9uZ0lubGluZXMuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGhlYXBcV2Vh
ay5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5z
cGVjdG9yXEluc3BlY3RvckFnZW50QmFzZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCIg
Lz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3Rv
clxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5z
cGVjdG9yXEluc3BlY3RvclR5cGVCdWlsZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yVmFsdWVzLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xtYXNtXFg4NkFzc2Vt
Ymxlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNc
cGFyc2VyXFNvdXJjZUNvZGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndh
cmRpbmdIZWFkZXJzXHBhcnNlclxTb3VyY2VQcm92aWRlci5oIiAvPgpAQCAtMjA2NDIsMTUgKzIw
NjEyLDEzIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRD
YWxsU3RhY2tGYWN0b3J5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5n
c1xqc1xTY3JpcHRDb250cm9sbGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxi
aW5kaW5nc1xqc1xTY3JpcHREZWJ1Z1NlcnZlci5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0RnVuY3Rpb25DYWxsLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRIZWFwU25hcHNob3QuaCIgLz4KLSAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdE9iamVjdC5oIiAvPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0R2xvYmFsT2JqZWN0Lmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRQcm9maWxl
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRQcm9m
aWxlTm9kZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2Ny
aXB0UHJvZmlsZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpz
XFNjcmlwdFNvdXJjZUNvZGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRp
bmdzXGpzXFNjcmlwdFN0YXRlLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5k
aW5nc1xqc1xTY3JpcHRWYWx1ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmlu
ZGluZ3NcanNcU2NyaXB0V3JhcHBhYmxlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxiaW5kaW5nc1xqc1xTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNvdXJjZUlELmgiIC8+CkBAIC0yMDk2MSw4ICsyMDky
OSw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5qZWN0ZWRTY3Jp
cHRNb2R1bGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNw
ZWN0b3JBZ2VudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXElu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgiIC8+Ci0gICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFzZUFnZW50LmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQ2FudmFzQWdlbnQu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JDYW52
YXNJbnN0cnVtZW50YXRpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3Bl
Y3RvclxJbnNwZWN0b3JDbGllbnQuaCIgLz4KQEAgLTIwOTk4LDcgKzIwOTY0LDcgQEAKICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JTdHlsZVNoZWV0LmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yU3R5bGVUZXh0
RWRpdG9yLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVj
dG9yVGltZWxpbmVBZ2VudC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVj
dG9yXEluc3BlY3RvclZhbHVlcy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5z
cGVjdG9yXEluc3BlY3RvcldlYkFnZW50QmFzZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvcldvcmtlckFnZW50LmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnN0cnVtZW50aW5nQWdlbnRzLmgi
IC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qLmZpbHRlcnMKaW5kZXggZWUyNTgwZi4uMWFmNTYzYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAt
MjUzLDYgKzI1Myw5IEBACiAgICAgPEZpbHRlciBJbmNsdWRlPSJGb3J3YXJkaW5nSGVhZGVycyI+
CiAgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTUyMTZhNzAtYTNiMi00NTNjLWE2NmYtYTgxY2Mx
YWJlZmVlfTwvVW5pcXVlSWRlbnRpZmllcj4KICAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIElu
Y2x1ZGU9IkZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlm
aWVyPnsyMTM0MzEyNC0xMjM0LTQ1NDItYThhYS1lYmFjODc4MTIzMTJ9PC9VbmlxdWVJZGVudGlm
aWVyPgorICAgIDwvRmlsdGVyPgogICAgIDxGaWx0ZXIgSW5jbHVkZT0iRm9yd2FyZGluZ0hlYWRl
cnNceWFyciI+CiAgICAgICA8VW5pcXVlSWRlbnRpZmllcj57M2I5YjE4MTktMWIzMS00NzcxLWIx
MmEtMzJjMjEwZjg0NzZkfTwvVW5pcXVlSWRlbnRpZmllcj4KICAgICA8L0ZpbHRlcj4KQEAgLTQ1
NjksMTAgKzQ1NzIsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNc
U2NyaXB0RGVidWdTZXJ2ZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRl
cj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdz
XGpzXFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAiPgotICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwv
RmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmlu
ZGluZ3NcanNcU2NyaXB0T2JqZWN0LmNwcCI+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxi
aW5kaW5nc1xqc1xTY3JpcHRHbG9iYWxPYmplY3QuY3BwIj4KICAgICAgIDxGaWx0ZXI+YmluZGlu
Z3NcanM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdFByb2ZpbGUuY3BwIj4KQEAgLTQ1ODQsOSArNDU4NCw2IEBA
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRTdGF0ZS5jcHAi
PgogICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgot
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0VmFsdWUuY3BwIj4K
LSAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAiPgogICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xDb21w
aWxlPgpAQCAtNDgzMCwxOCArNDgyNywxMiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
aW5zcGVjdG9yXEluc3BlY3RvckFnZW50LmNwcCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3Rvcjwv
RmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5z
cGVjdG9yXEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwIj4KLSAgICAgIDxGaWx0ZXI+aW5zcGVj
dG9yPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxpbnNwZWN0b3JcSW5zcGVjdG9yQWxsSW5PbmUuY3BwIj4KICAgICAgIDxGaWx0ZXI+aW5zcGVj
dG9yPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxpbnNwZWN0b3JcSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCI+CiAgICAgICA8
RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCI+
Ci0gICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckNhbnZhc0FnZW50LmNw
cCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpA
QCAtNDkzMiw5ICs0OTIzLDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3Rv
clxJbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3Rvcjwv
RmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5z
cGVjdG9yXEluc3BlY3RvclZhbHVlcy5jcHAiPgotICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0Zp
bHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3Bl
Y3RvclxJbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8
L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTUyOTMsNyArNTI4MSw3IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yRnJvbnRl
bmQuY3BwIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xJbnNwZWN0b3JUeXBlQnVpbGRlci5jcHAiPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5jcHAiPgogICAg
ICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZv
cm1BcmNoaXRlY3R1cmUpXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcSlNBYnN0cmFjdFdvcmtlci5j
cHAiPgpAQCAtMTE1MTcsMTMgKzExNTA1LDEwIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxiaW5kaW5nc1xqc1xTY3JpcHREZWJ1Z1NlcnZlci5oIj4KICAgICAgIDxGaWx0ZXI+YmluZGlu
Z3NcanM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdEZ1bmN0aW9uQ2FsbC5oIj4KLSAgICAgIDxGaWx0ZXI+Ymlu
ZGluZ3NcanM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdEhlYXBTbmFwc2hvdC5oIj4KICAgICAgIDxGaWx0ZXI+
YmluZGluZ3NcanM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdE9iamVjdC5oIj4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdEdsb2JhbE9iamVjdC5oIj4KICAgICAgIDxGaWx0
ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdFByb2ZpbGUuaCI+CkBAIC0xMTU0MSw5ICsx
MTUyNiw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRT
dGF0ZS5oIj4KICAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4KICAgICA8L0NsSW5j
bHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdFZhbHVl
LmgiPgotICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRl
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0V3JhcHBhYmxl
LmgiPgogICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRl
PgpAQCAtMTIyMDEsNiArMTIxODMsMTUgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHN2
Z1xwcm9wZXJ0aWVzXFNWR1RyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaCI+CiAgICAgICA8
RmlsdGVyPnJlbmRlcmluZ1xzdmdccHJvcGVydGllczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRl
PgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3Nc
U2NyaXB0RnVuY3Rpb25DYWxsLmgiPgorICAgICAgPEZpbHRlcj5Gb3J3YXJkaW5nSGVhZGVyc1xi
aW5kaW5nczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3NcU2NyaXB0T2JqZWN0LmgiPgorICAgICAg
PEZpbHRlcj5Gb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5nczwvRmlsdGVyPgorICAgIDwvQ2xJbmNs
dWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcYmluZGlu
Z3NcU2NyaXB0VmFsdWUuaCI+CisgICAgICA8RmlsdGVyPkZvcndhcmRpbmdIZWFkZXJzXGJpbmRp
bmdzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lXEFyZ0xpc3QuaCI+CiAgICAgICA8RmlsdGVyPkZv
cndhcmRpbmdIZWFkZXJzXHJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTEy
MjQ2LDkgKzEyMjM3LDI0IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5n
SGVhZGVyc1xoZWFwXFN0cm9uZy5oIj4KICAgICAgIDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRlcnNc
aGVhcDwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvckFnZW50QmFzZS5oIj4KKyAg
ICAgIDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yPC9GaWx0ZXI+CisgICAgPC9D
bEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xp
bnNwZWN0b3JcSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIj4KKyAgICAgIDxGaWx0ZXI+Rm9yd2Fy
ZGluZ0hlYWRlcnNcaW5zcGVjdG9yPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIuaCI+CisgICAgICA8RmlsdGVyPkZvcndhcmRpbmdIZWFkZXJzXGlu
c3BlY3RvcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bC5oIj4KICAgICAgIDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yPC9GaWx0ZXI+
CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5n
SGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCI+CisgICAgICA8RmlsdGVy
PkZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXElu
c3BlY3RvclZhbHVlcy5oIj4KKyAgICAgIDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVj
dG9yPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxoaXN0b3J5XEJhY2tGb3J3YXJkQ2xpZW50LmgiPgogICAgICAgPEZpbHRlcj5oaXN0b3J5PC9G
aWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0xMjQwMiwxMiArMTI0MDgsNiBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudC5oIj4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1
ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIuaCI+Ci0gICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgotICAgIDwv
Q2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3Rv
ckJhc2VBZ2VudC5oIj4KLSAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+Ci0gICAgPC9D
bEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9y
Q2FudmFzQWdlbnQuaCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwv
Q2xJbmNsdWRlPgpAQCAtMTI1MTMsNyArMTI1MTMsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCI+CiAgICAgICA8RmlsdGVy
Pmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvclZhbHVlcy5oIj4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCI+CiAgICAgICA8Rmls
dGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvcldvcmtlckFnZW50LmgiPgpAQCAtMTMwNzks
NyArMTMwNzksNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVp
bGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRT
b3VyY2VzXEluc3BlY3Rvck92ZXJsYXlQYWdlLmgiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkU291
cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvclR5cGVCdWlsZGVyLmgiPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvcldlYlR5
cGVCdWlsZGVycy5oIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KICAg
ICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVxXZWJDb3JlXERlcml2ZWRTb3VyY2Vz
XEpTQWJzdHJhY3RXb3JrZXIuaCI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggN2RjYzkwYy4uMWEyM2FjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIyNSw4
ICsxMjI1LDYgQEAKIAkJNDA5RUJEQzUxNkI3RjNDQTAwQ0JBM0ZDIC8qIEpTQ1NTRm9udEZhY2VM
b2FkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDA5RUJEQzQxNkI3RjNDQTAwQ0JBM0ZDIC8qIEpTQ1NTRm9udEZhY2VMb2FkRXZlbnQuY3Bw
ICovOyB9OwogCQk0MEVDQUU3RTE2QjhCNjcyMDBDMzYxMDMgLyogSlNET01FcnJvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDBFQ0FFN0QxNkI4QjY3
MjAwQzM2MTAzIC8qIEpTRE9NRXJyb3IuaCAqLzsgfTsKIAkJNDBFQ0FFODExNkI4QjY4QTAwQzM2
MTAzIC8qIEpTRE9NRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDBFQ0FFODAxNkI4QjY4QTAwQzM2MTAzIC8qIEpTRE9NRXJyb3IuY3BwICov
OyB9OwotCQk0MTAwMkNDRDBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTAwMkNDQjBG
NjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggKi87IH07Ci0JCTQxMDAyQ0NF
MEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwMDJDQ0MwRjY2RURFRjAwOUU2NjBE
IC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgKi87IH07CiAJCTQxMEI3RTcyMTA0NUZBQjAwMEQ4
MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTBCN0U3MTEwNDVGQUIwMDBEODIyNEYgLyogSlNNZXNz
YWdlRXZlbnRDdXN0b20uY3BwICovOyB9OwogCQk0MTIzMDgxQjEzOEM0Mjk3MDBCQ0NGQ0EgLyog
V2ViQ29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0YxOUIxQTA4MjQ1RTVBMDAxRTlBQkMgLyogV2ViQ29yZS5mcmFtZXdvcmsg
Ki87IH07CiAJCTQxMjMwOTEzMTM4QzQyRkYwMEJDQ0ZDQSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFt
ZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
ODIxNjI5OTAyOUY0RkI1MDEwMDAxMzEgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9
OwpAQCAtMTI5NSw4ICsxMjkzLDggQEAKIAkJNDFGMDYxOEYwRjVGMDY5ODAwQTA3RUFDIC8qIENv
bnNvbGVNZXNzYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxRjA2MThEMEY1RjA2OTgwMEEwN0VBQyAvKiBDb25zb2xlTWVzc2FnZS5jcHAgKi87
IH07CiAJCTQxRjA2MjE0MEY1RjE5MjYwMEEwN0VBQyAvKiBJbnNwZWN0b3JEYXRhYmFzZVJlc291
cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYw
NjIxMjBGNUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oICovOyB9
OwogCQk0MUYwNjIxNTBGNUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJj
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYw
NjIxMzBGNUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgKi87
IH07Ci0JCTQxRjA2NkU0MEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRPYmplY3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjA2NkUyMEY2NEJDRjYw
MEEwN0VBQyAvKiBTY3JpcHRPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQk0MUYwNjZFNTBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0T2Jq
ZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
RjA2NkUzMEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRPYmplY3QuY3BwICovOyB9OworCQk0MUYw
NjZFNDBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0R2xvYmFsT2JqZWN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjZFMjBGNjRCQ0Y2MDBBMDdF
QUMgLyogU2NyaXB0R2xvYmFsT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDFGMDY2RTUwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdEds
b2JhbE9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MUYwNjZFMzBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0R2xvYmFsT2JqZWN0LmNwcCAq
LzsgfTsKIAkJNDFGMUQyMUYwRUYzNUMyQTAwREE4NzUzIC8qIFNjcmlwdENhY2hlZEZyYW1lRGF0
YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGMUQy
MUQwRUYzNUMyQTAwREE4NzUzIC8qIFNjcmlwdENhY2hlZEZyYW1lRGF0YS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxRjFEMjIwMEVGMzVDMkEw
MERBODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGMUQyMUUwRUYzNUMyQTAwREE4NzUzIC8qIFNj
cmlwdENhY2hlZEZyYW1lRGF0YS5jcHAgKi87IH07CiAJCTQxRjU4NEM3MTA0NjUyQ0IwMDlDQUE2
NCAvKiBKU01lc3NhZ2VQb3J0Q3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MUY1ODRDNjEwNDY1MkNCMDA5Q0FBNjQgLyogSlNNZXNzYWdlUG9y
dEN1c3RvbS5oICovOyB9OwpAQCAtMTYwOSw4ICsxNjA3LDYgQEAKIAkJNEYxNTM0RTAxMUI1MzMw
MjAwMjFGRDg2IC8qIEVkaXRpbmdCZWhhdmlvclR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjE1MzRERjExQjUzMzAyMDAyMUZEODYgLyogRWRp
dGluZ0JlaGF2aW9yVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0RjJEMjA1NDEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMkQyMDUy
MTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRGMkQyMDU1MTJFQUU3QjMwMDVDMjg3NCAv
KiBJbnNwZWN0b3JBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0RjJEMjA1MzEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQuY3Bw
ICovOyB9OwotCQk0RjMyODlCNTExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMzI4OUIz
MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwICovOyB9OwotCQk0RjMyODlC
NjExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjMyODlCNDExQTQyQUFCMDA1QUJFN0UgLyog
SW5zcGVjdG9yVmFsdWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNEY0RjVGRkIxMUNCRDJFMTAwQTE4NkJGIC8qIEluc3BlY3RvckZyb250ZW5k
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNEY1
RkZBMTFDQkQyRDIwMEExODZCRiAvKiBJbnNwZWN0b3JGcm9udGVuZC5jcHAgKi87IH07CiAJCTRG
NkZERDY0MTM0MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEY2RkRENjIxMzQxREVERDAw
MUY4RUUzIC8qIEluc3BlY3RvclBhZ2VBZ2VudC5jcHAgKi87IH07CiAJCTRGNkZERDY1MTM0MURF
REQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNkZERDYzMTM0MURFREQwMDFGOEVFMyAvKiBJbnNw
ZWN0b3JQYWdlQWdlbnQuaCAqLzsgfTsKQEAgLTE4OTcsOSArMTg5Myw5IEBACiAJCTUzRUY3NjZD
MTY1MzE5OTQwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oIGluIENvcHkgR2VuZXJhdGVkIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNFRjc2NkExNjUzMEE2
MTAwNENCRTQ5IC8qIFNldHRpbmdzTWFjcm9zLmggKi87IH07CiAJCTU1MEEwQkM5MDg1RjYwMzkw
MDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM3MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWRO
YW1lLmNwcCAqLzsgfTsKIAkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5h
bWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEw
QkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTczRDEzNDcxNENFMzlGRjAwNTdBQkNB
IC8qIEluc3BlY3RvclR5cGVCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3M0QxMzQ1MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JU
eXBlQnVpbGRlci5jcHAgKi87IH07CisJCTU3M0QxMzQ3MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNw
ZWN0b3JXZWJUeXBlQnVpbGRlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTczRDEzNDUxNENFMzlGRjAwNTdBQkNBIC8qIEluc3BlY3RvcldlYlR5
cGVCdWlsZGVycy5jcHAgKi87IH07CiAJCTU3OERBMjBFMTUyMEVCOEMwMDYxNDFDMSAvKiBJbnNw
ZWN0b3JGcm9udGVuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNEY0RjVGRkMxMUNCRDMwMTAwQTE4NkJGIC8qIEluc3BlY3RvckZyb250ZW5kLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTc4REEyMEYx
NTIwRUJBMzAwNjE0MUMxIC8qIEluc3BlY3RvclR5cGVCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzNEMTM0NjE0Q0UzOUZGMDA1N0FCQ0Eg
LyogSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk1NzhEQTIwRjE1MjBFQkEzMDA2MTQxQzEgLyogSW5zcGVjdG9y
V2ViVHlwZUJ1aWxkZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NzNEMTM0NjE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yV2ViVHlwZUJ1aWxk
ZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NTdCNzkxQTMxNEM2QTYyOTAwRjIwMkQxIC8qIENvbnRlbnREaXN0cmlidXRvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I3OTE5RjE0QzZBNjI5
MDBGMjAyRDEgLyogQ29udGVudERpc3RyaWJ1dG9yLmNwcCAqLzsgfTsKIAkJNTdCNzkxQTQxNEM2
QTYyOTAwRjIwMkQxIC8qIENvbnRlbnREaXN0cmlidXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCNzkxQTAxNEM2QTYyOTAwRjIwMkQxIC8qIENv
bnRlbnREaXN0cmlidXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTU3Q0Y0OTc0MTRFRTM2RDcwMEVDRkYxNCAvKiBJbnNlcnRpb25Qb2ludC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0NGNDk3
MjE0RUUzNkQ3MDBFQ0ZGMTQgLyogSW5zZXJ0aW9uUG9pbnQuY3BwICovOyB9OwpAQCAtMjIwMSw3
ICsyMTk3LDYgQEAKIAkJN0E3NEVDQkIxMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0E3NEVDQjkxMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5o
ICovOyB9OwogCQk3QTc0RUNCRDEwMTgzOURBMDBCRjkzOUUgLyogSlNJbnNwZWN0b3JGcm9udGVu
ZEhvc3RDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0E3NEVDQkMxMDE4MzlEQTAwQkY5MzlFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0
Q3VzdG9tLmNwcCAqLzsgfTsKIAkJN0FBMzY1RUUxMkU3MjY1NDAwRENBMjQyIC8qIEluc3BlY3Rv
clJ1bnRpbWVBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QUEzNjVFRDEyRTcyNjU0MDBEQ0EyNDIgLyogSW5zcGVjdG9yUnVudGltZUFnZW50
LmNwcCAqLzsgfTsKLQkJN0FBNTFCNkUxNDgzQjYxNjAwQUQyNzUyIC8qIEluc3BlY3RvckJhc2VB
Z2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FB
NTFCNkMxNDgzQjYxNjAwQUQyNzUyIC8qIEluc3BlY3RvckJhc2VBZ2VudC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdBQTUxREQ1MTQ4NTA2QTkw
MEFEMjc1MiAvKiBJbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUE1MUREMzE0ODUwNkE5MDBBRDI3NTIgLyogSW5z
cGVjdG9yTWVtb3J5QWdlbnQuY3BwICovOyB9OwogCQk3QUE1MURENjE0ODUwNkE5MDBBRDI3NTIg
LyogSW5zcGVjdG9yTWVtb3J5QWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdBQTUxREQ0MTQ4NTA2QTkwMEFEMjc1MiAvKiBJbnNwZWN0b3JNZW1v
cnlBZ2VudC5oICovOyB9OwogCQk3QUFCQTI1OTE0QkM2MTMzMDBBQTlBMTEgLyogRE9NRWRpdG9y
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQUJB
MjU3MTRCQzYxMzMwMEFBOUExMSAvKiBET01FZGl0b3IuY3BwICovOyB9OwpAQCAtMzAyMSw4ICsz
MDE2LDYgQEAKIAkJOTM0NDJDOUUwRDJCMzM1QzAwMzM4RkY5IC8qIEhUTUxUYWJsZVJvd3NDb2xs
ZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MzQ0MkM5RDBEMkIzMzVDMDAzMzhGRjkgLyogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uaCAqLzsg
fTsKIAkJOTM0NDJDQTAwRDJCMzM2MDAwMzM4RkY5IC8qIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9u
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNDQy
QzlGMEQyQjMzNjAwMDMzOEZGOSAvKiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAgKi87IH07
CiAJCTkzNDkwN0U0MTI1QkJCQzgwMDdGMjNBMCAvKiBHcmFwaGljc0NvbnRleHRDRy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0OTA3RTMxMjVCQkJD
ODAwN0YyM0EwIC8qIEdyYXBoaWNzQ29udGV4dENHLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTM0Q0MwRTEwRUQzOUQ2RjAwQTY1OEYyIC8qIFNj
cmlwdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzNENDMERGMEVEMzlENkYwMEE2NThGMiAvKiBTY3JpcHRWYWx1ZS5jcHAgKi87IH07Ci0J
CTkzNENDMEUyMEVEMzlENkYwMEE2NThGMiAvKiBTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0Q0MwRTAwRUQzOUQ2RjAwQTY1OEYy
IC8qIFNjcmlwdFZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJOTM0Q0MxMEEwRURCMjIzOTAwQTY1OEYyIC8qIFNjcmlwdFNvdXJjZUNvZGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNENDMTA5
MEVEQjIyMzkwMEE2NThGMiAvKiBTY3JpcHRTb3VyY2VDb2RlLmggKi87IH07CiAJCTkzNEQ5QkE1
MEI4QzExNkIwMDdCNDJBOSAvKiBXZWJDb3JlTlNTdHJpbmdFeHRyYXMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzREOUJBNDBCOEMxMTZCMDA3QjQy
QTkgLyogV2ViQ29yZU5TU3RyaW5nRXh0cmFzLm1tICovOyB9OwogCQk5MzREOUJBNzBCOEMxMTc1
MDA3QjQyQTkgLyogV2ViQ29yZU5TU3RyaW5nRXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzREOUJBNjBCOEMxMTc1MDA3QjQyQTkgLyogV2Vi
Q29yZU5TU3RyaW5nRXh0cmFzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTM1MjQsMTUgKzM1MTcsMTIgQEAKIAkJQTUxM0IzRDgxMTRCMTY2QTAw
MUM0MjlCIC8qIEtleUV2ZW50Q29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNUM5NzREMDExNDg1RkYxMDA2NkYyQUIgLyogS2V5RXZlbnRDb2Nv
YS5tbSAqLzsgfTsKIAkJQTU0QTgyRUMxNTIyOEQyRjAwQzcyQkE2IC8qIERPTU5vZGVQcml2YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTRBODJF
QTE1MjI4Q0EzMDBDNzJCQTYgLyogRE9NTm9kZVByaXZhdGUuaCAqLzsgfTsKIAkJQTU0QTgyRjEx
NTIyOERGNjAwQzcyQkE2IC8qIERPTU5vZGVQcml2YXRlLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTRBODJFQTE1MjI4Q0Ez
MDBDNzJCQTYgLyogRE9NTm9kZVByaXZhdGUuaCAqLzsgfTsKLQkJQTU1NkMyODgxODMyMDZBODAw
OENCNzIwIC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1NkMyODYxODMyMDZBODAwOENCNzIwIC8qIElu
c3BlY3RvckFnZW50UmVnaXN0cnkuY3BwICovOyB9OwotCQlBNTU2QzI4OTE4MzIwNkE4MDA4Q0I3
MjAgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1NkMyODcxODMyMDZBODAwOENCNzIwIC8qIEluc3BlY3Rv
ckFnZW50UmVnaXN0cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlBNTczMkIwQTEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3MzJCMDgx
MzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmNwcCAqLzsgfTsKIAkJQTU3MzJCMEIx
MzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTczMkIwOTEzNkExNjFEMDA1QzhEN0MgLyogRGF0
ZUNvbXBvbmVudHMuaCAqLzsgfTsKKwkJQTU5M0NGOEIxODQwNTM1MjAwQkZDRTI3IC8qIEluc3Bl
Y3RvcldlYkFnZW50QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTU5M0NGOEExODQwNTM1MjAwQkZDRTI3IC8qIEluc3BlY3RvcldlYkFnZW50QmFz
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1
QTJBRjBCMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUEyQUYwOTE4Mjk3MzQzMDBERTE3
MjkgLyogUGFnZURlYnVnZ2FibGUuY3BwICovOyB9OwogCQlBNUEyQUYwQzE4Mjk3MzQzMDBERTE3
MjkgLyogUGFnZURlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1QTJBRjBBMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5o
ICovOyB9OwogCQlBNUFCQjc4NzEzQjkwNEJDMDBGMTk3RTMgLyogTGluZUJyZWFrSXRlcmF0b3JQ
b29sSUNVLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NUFCQjc4NjEzQjkwNEJDMDBGMTk3RTMgLyogTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmggKi87
IH07Ci0JCUE1QUM0QUVGMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NUFDNEFFRDE4MzM2OTc1MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3Bw
ICovOyB9OwotCQlBNUFDNEFGMDE4MzM2OTc1MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1QUM0QUVFMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1QUZC
MzRGMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBRkIzNEQxMTUxNTFBNzAwQjA0NUNCIC8qIFN0
ZXBSYW5nZS5jcHAgKi87IH07CiAJCUE1QUZCMzUwMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFu
Z2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QUZC
MzRFMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNUM1NjZBQjEyN0EzQUFEMDBFOEEzRkYgLyog
RGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE1QzU2NkFBMTI3QTNBQUQwMEU4QTNGRiAvKiBEaXNrSW1hZ2VDYWNo
ZUNsaWVudElPUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC03OTE5LDggKzc5MDksNiBAQAogCQk0MDlFQkRDNDE2QjdGM0NBMDBDQkEzRkMgLyog
SlNDU1NGb250RmFjZUxvYWRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0NTU0ZvbnRGYWNlTG9hZEV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDBFQ0FFN0QxNkI4QjY3MjAwQzM2MTAzIC8qIEpTRE9NRXJyb3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01FcnJvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MEVDQUU4MDE2QjhCNjhBMDBDMzYxMDMgLyogSlNET01FcnJvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTUVycm9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDEwMDJDQ0IwRjY2RURFRjAwOUU2NjBEIC8qIFNj
cmlwdEZ1bmN0aW9uQ2FsbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3Jp
cHRGdW5jdGlvbkNhbGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDEwMDJDQ0Mw
RjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTBCN0U3MTEwNDVGQUIwMDBEODIyNEYgLyogSlNNZXNzYWdl
RXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNN
ZXNzYWdlRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTI3
RDUzNjBGOEFBQjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTM4RDMzMzEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50Q29udGV4dC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNzk5NSw4ICs3OTgzLDggQEAKIAkJNDFGMDYxOEQwRjVGMDY5
ODAwQTA3RUFDIC8qIENvbnNvbGVNZXNzYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENvbnNvbGVNZXNzYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDFGMDYyMTIwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3Vy
Y2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRGF0YWJhc2VS
ZXNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUYwNjIxMzBGNUYxOTI2
MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDFGMDY2RTIwRjY0QkNGNjAwQTA3RUFDIC8qIFNj
cmlwdE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRPYmpl
Y3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDFGMDY2RTMwRjY0QkNGNjAwQTA3
RUFDIC8qIFNjcmlwdE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTY3JpcHRPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUYw
NjZFMjBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0R2xvYmFsT2JqZWN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEdsb2JhbE9iamVjdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0MUYwNjZFMzBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0R2xvYmFs
T2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEds
b2JhbE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRjFEMjFEMEVG
MzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxRjFEMjFFMEVGMzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRG
cmFtZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0
Q2FjaGVkRnJhbWVEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGNTg0
QzYxMDQ2NTJDQjAwOUNBQTY0IC8qIEpTTWVzc2FnZVBvcnRDdXN0b20uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZXNzYWdlUG9ydEN1c3RvbS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtODM1NSw4ICs4MzQzLDYgQEAKIAkJNEYxNTM0REYxMUI1MzMwMjAw
MjFGRDg2IC8qIEVkaXRpbmdCZWhhdmlvclR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEVkaXRpbmdCZWhhdmlvclR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTRGMkQyMDUyMTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JBZ2VudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0RjJEMjA1MzEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9y
QWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9y
QWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0RjMyODlCMzExQTQyQUFC
MDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEluc3BlY3RvclZhbHVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTRGMzI4OUI0MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yVmFsdWVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGNEY1RkZBMTFDQkQyRDIwMEExODZCRiAvKiBJbnNwZWN0
b3JGcm9udGVuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNw
ZWN0b3JGcm9udGVuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGNEY1RkZD
MTFDQkQzMDEwMEExODZCRiAvKiBJbnNwZWN0b3JGcm9udGVuZC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JGcm9udGVuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0RjZGREQ2MjEzNDFERUREMDAxRjhFRTMgLyogSW5zcGVjdG9yUGFnZUFnZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvclBhZ2VB
Z2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NjcwLDggKzg2NTYsOCBA
QAogCQk1M0VGNzY2QTE2NTMwQTYxMDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2V0dGluZ3NNYWNyb3MuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5h
bWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBp
bmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUXVhbGlmaWVkTmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRo
ID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVh
bGlmaWVkTmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBRdWFsaWZpZWROYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRo
ID0gODsgdXNlc1RhYnMgPSAwOyB9OwotCQk1NzNEMTM0NTE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5z
cGVjdG9yVHlwZUJ1aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW5zcGVjdG9yVHlwZUJ1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk1NzNEMTM0NjE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTczRDEzNDUxNENFMzlGRjAwNTdBQkNBIC8qIElu
c3BlY3RvcldlYlR5cGVCdWlsZGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1NzNEMTM0NjE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yV2ViVHlwZUJ1
aWxkZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvcldlYlR5
cGVCdWlsZGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0I3OTE5RjE0QzZB
NjI5MDBGMjAyRDEgLyogQ29udGVudERpc3RyaWJ1dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnREaXN0cmlidXRvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU3Qjc5MUEwMTRDNkE2MjkwMEYyMDJEMSAvKiBDb250ZW50RGlzdHJp
YnV0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGVudERpc3RyaWJ1
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3Q0Y0OTcyMTRFRTM2RDcwMEVD
RkYxNCAvKiBJbnNlcnRpb25Qb2ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbnNlcnRpb25Qb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC05MDA3LDcgKzg5OTMsNiBAQAogCQk3QTc0RUNCOTEwMTgzOUE2MDBCRjkzOUUgLyogSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QTc0RUNCQzEwMTgzOURBMDBCRjkzOUUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbnNwZWN0b3JGcm9u
dGVuZEhvc3RDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUEzNjVF
RDEyRTcyNjU0MDBEQ0EyNDIgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdBQTUxQjZDMTQ4M0I2MTYwMEFEMjc1MiAvKiBJ
bnNwZWN0b3JCYXNlQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5z
cGVjdG9yQmFzZUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBQTUxREQz
MTQ4NTA2QTkwMEFEMjc1MiAvKiBJbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBQTUxREQ0MTQ4NTA2QTkwMEFEMjc1MiAvKiBJbnNw
ZWN0b3JNZW1vcnlBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNw
ZWN0b3JNZW1vcnlBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUFCQTI1
NzE0QkM2MTMzMDBBQTlBMTEgLyogRE9NRWRpdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IERPTUVkaXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC05ODE0LDggKzk3OTksNiBAQAogCQk5MzQ0MkM5RDBEMkIzMzVDMDAzMzhGRjkgLyogSFRN
TFRhYmxlUm93c0NvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTM0NDJDOUYwRDJCMzM2MDAwMzM4RkY5IC8qIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxUYWJsZVJvd3NDb2xsZWN0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM0OTA3RTMxMjVCQkJDODAw
N0YyM0EwIC8qIEdyYXBoaWNzQ29udGV4dENHLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEdyYXBoaWNzQ29udGV4dENHLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTkzNENDMERGMEVEMzlENkYwMEE2NThGMiAvKiBTY3JpcHRWYWx1ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTkzNENDMEUwMEVEMzlENkYwMEE2NThGMiAvKiBTY3JpcHRWYWx1ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRWYWx1ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5MzRDQzEwOTBFREIyMjM5MDBBNjU4RjIgLyogU2NyaXB0
U291cmNlQ29kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRTb3Vy
Y2VDb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNEQ5QkE0MEI4QzExNkIw
MDdCNDJBOSAvKiBXZWJDb3JlTlNTdHJpbmdFeHRyYXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ29yZU5TU3RyaW5nRXh0cmFzLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5MzREOUJBNjBCOEMxMTc1MDA3QjQyQTkgLyogV2ViQ29yZU5T
U3RyaW5nRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3Jl
TlNTdHJpbmdFeHRyYXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMzU1LDE5
ICsxMDMzOCwxNiBAQAogCQlBNTE4MjI1NDE3RTJBMEQ0MDBBOUJBMUQgLyogSW5zcGVjdG9yT3Zl
cmxheVBhZ2UuY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5jc3M7IHBhdGggPSBJbnNwZWN0b3JPdmVybGF5UGFnZS5jc3M7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MTgyMjU1MTdFMkEwRDQwMEE5QkExRCAvKiBJbnNwZWN0
b3JPdmVybGF5UGFnZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEluc3BlY3Rvck92ZXJsYXlQ
YWdlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTRBODJFQTE1MjI4Q0EzMDBD
NzJCQTYgLyogRE9NTm9kZVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRE9NTm9kZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU1NkMy
ODYxODMyMDZBODAwOENCNzIwIC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1NTZDMjg3MTgzMjA2QTgwMDhDQjcyMCAv
KiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEluc3BlY3RvckFnZW50UmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTU3MzJCMDgxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGVDb21wb25lbnRzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3MzJCMDkxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVD
b21wb25lbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGVDb21wb25l
bnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1OTNDRjcyMTg0MDJDRTkwMEJG
Q0UyNyAvKiBwcm90b2NvbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9IHByb3RvY29sOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNTkzQ0Y3MzE4NDAyRDRCMDBCRkNFMjcgLyogQ29kZUdlbmVyYXRvckluc3BlY3Rv
ci5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IENvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHk7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1OTNDRjc0MTg0MDJENEIwMEJGQ0UyNyAvKiBDb2Rl
R2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IENvZGVHZW5l
cmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NTkzQ0Y3NTE4NDAyRDRCMDBCRkNFMjcgLyogY29tYmluZS1qYXZhc2NyaXB0LXJlc291cmNlcy5w
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
c2NyaXB0LnBlcmw7IHBhdGggPSAiY29tYmluZS1qYXZhc2NyaXB0LXJlc291cmNlcy5wbCI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTNDRjhBMTg0MDUzNTIwMEJGQ0UyNyAvKiBJ
bnNwZWN0b3JXZWJBZ2VudEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5zcGVjdG9yV2ViQWdlbnRCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1
QTJBRjA5MTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlRGVidWdnYWJsZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE1QTJBRjBBMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdn
YWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlRGVidWdnYWJsZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUFCQjc4NjEzQjkwNEJDMDBGMTk3RTMg
LyogTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlBNUFDNEFFRDE4MzM2OTc1MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNUFD
NEFFRTE4MzM2OTc1MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVBRkIzNEQxMTUxNTFBNzAwQjA0NUNC
IC8qIFN0ZXBSYW5nZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
dGVwUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUFGQjM0RTExNTE1
MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN0ZXBSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUM1NjZBQTEy
N0EzQUFEMDBFOEEzRkYgLyogRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NDYzLDggKzE0NDQzLDggQEAKIAkJCQk0RjcwN0E5ODEx
RUY2Nzk0MDBBQ0RBNjkgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmggKi8sCiAJCQkJ
NEY0RjVGRkExMUNCRDJEMjAwQTE4NkJGIC8qIEluc3BlY3RvckZyb250ZW5kLmNwcCAqLywKIAkJ
CQk0RjRGNUZGQzExQ0JEMzAxMDBBMTg2QkYgLyogSW5zcGVjdG9yRnJvbnRlbmQuaCAqLywKLQkJ
CQk1NzNEMTM0NTE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yVHlwZUJ1aWxkZXIuY3BwICov
LAotCQkJCTU3M0QxMzQ2MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5o
ICovLAorCQkJCTU3M0QxMzQ1MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JXZWJUeXBlQnVp
bGRlcnMuY3BwICovLAorCQkJCTU3M0QxMzQ2MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JX
ZWJUeXBlQnVpbGRlcnMuaCAqLywKIAkJCQk3QTBFNzZEODEwQkYwNTk4MDBBMDI3NkUgLyogSlNJ
bmplY3RlZFNjcmlwdEhvc3QuY3BwICovLAogCQkJCTdBMEU3NkQ5MTBCRjA1OTgwMEEwMjc2RSAv
KiBKU0luamVjdGVkU2NyaXB0SG9zdC5oICovLAogCQkJCTdBMEU3NzFDMTBDMDBEQjEwMEEwMjc2
RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgKi8sCkBAIC0xNDUxNiwxMyArMTQ0OTYs
OCBAQAogCQkJCTdBNTYzRjk1MTJERjVDOTEwMEY0NTM2RCAvKiBJbmplY3RlZFNjcmlwdFNvdXJj
ZS5qcyAqLywKIAkJCQk0RjJEMjA1MzEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQu
Y3BwICovLAogCQkJCTRGMkQyMDUyMTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5o
ICovLAotCQkJCUE1NTZDMjg2MTgzMjA2QTgwMDhDQjcyMCAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lz
dHJ5LmNwcCAqLywKLQkJCQlBNTU2QzI4NzE4MzIwNkE4MDA4Q0I3MjAgLyogSW5zcGVjdG9yQWdl
bnRSZWdpc3RyeS5oICovLAogCQkJCUI4ODVFOEQyMTFFMDZERDIwMDlGRkJGNCAvKiBJbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwICovLAogCQkJCUI4ODVFOEQzMTFFMDZERDIwMDlG
RkJGNCAvKiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCAqLywKLQkJCQlBNUFDNEFF
RDE4MzM2OTc1MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwICovLAot
CQkJCUE1QUM0QUVFMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ci5oICovLAotCQkJCTdBQTUxQjZDMTQ4M0I2MTYwMEFEMjc1MiAvKiBJbnNwZWN0b3JCYXNlQWdl
bnQuaCAqLywKIAkJCQlBQUQ3NjZFODE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVjdG9yQ2FudmFz
QWdlbnQuY3BwICovLAogCQkJCUFBRDc2NkU5MTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JD
YW52YXNBZ2VudC5oICovLAogCQkJCUFBRDc2NkVBMTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0
b3JDYW52YXNJbnN0cnVtZW50YXRpb24uaCAqLywKQEAgLTE0NTkyLDggKzE0NTY3LDcgQEAKIAkJ
CQk4Mjg4OUI0QjEzQzYyMzkyMDA5QTYxNTYgLyogSW5zcGVjdG9yU3R5bGVUZXh0RWRpdG9yLmgg
Ki8sCiAJCQkJNzU0MTMzQTkxMDJFMDBGNDAwMDc1RDAwIC8qIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQuY3BwICovLAogCQkJCTc1NDEzM0E3MTAyRTAwRTgwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1l
bGluZUFnZW50LmggKi8sCi0JCQkJNEYzMjg5QjMxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3Rv
clZhbHVlcy5jcHAgKi8sCi0JCQkJNEYzMjg5QjQxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3Rv
clZhbHVlcy5oICovLAorCQkJCUE1OTNDRjhBMTg0MDUzNTIwMEJGQ0UyNyAvKiBJbnNwZWN0b3JX
ZWJBZ2VudEJhc2UuaCAqLywKIAkJCQlGMzgxMEMxOTEzNjVBNDk2MDBFRDZFMzMgLyogSW5zcGVj
dG9yV29ya2VyQWdlbnQuY3BwICovLAogCQkJCUYzODEwQzFBMTM2NUE0OTYwMEVENkUzMyAvKiBJ
bnNwZWN0b3JXb3JrZXJBZ2VudC5oICovLAogCQkJCUYzNzVDQzA2MTE1MEQzMDAwMDhEREI4MSAv
KiBJbnNwZWN0b3JXb3JrZXJSZXNvdXJjZS5oICovLApAQCAtMTk2ODksMTEgKzE5NjYzLDkgQEAK
IAkJCQlBODNFMUM3MjBFNDkwNDJCMDAxNDBCOUMgLyogU2NyaXB0Q29udHJvbGxlck1hYy5tbSAq
LywKIAkJCQk5RjZGQzE5NDExMjJFODJBMDBFODAxOTYgLyogU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
ICovLAogCQkJCTlGNkZDMTk1MTEyMkU4MkEwMEU4MDE5NiAvKiBTY3JpcHREZWJ1Z1NlcnZlci5o
ICovLAotCQkJCTQxMDAyQ0NDMEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwu
Y3BwICovLAotCQkJCTQxMDAyQ0NCMEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNh
bGwuaCAqLywKIAkJCQk5RjNCOTQ3RDEyMjQxNzU4MDA1MzA0RTcgLyogU2NyaXB0SGVhcFNuYXBz
aG90LmggKi8sCi0JCQkJNDFGMDY2RTMwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdE9iamVjdC5j
cHAgKi8sCi0JCQkJNDFGMDY2RTIwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdE9iamVjdC5oICov
LAorCQkJCTQxRjA2NkUzMEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRHbG9iYWxPYmplY3QuY3Bw
ICovLAorCQkJCTQxRjA2NkUyMEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRHbG9iYWxPYmplY3Qu
aCAqLywKIAkJCQlGMzNGMDI4MTEyMDk0N0YyMDBFNTc0M0EgLyogU2NyaXB0UHJvZmlsZS5jcHAg
Ki8sCiAJCQkJOUY3MjMwNEMxMTE4NEI0MTAwQUQwMTI2IC8qIFNjcmlwdFByb2ZpbGUuaCAqLywK
IAkJCQk5RkEzN0VFMzExNzJGQzgwMDBDNENENTUgLyogU2NyaXB0UHJvZmlsZU5vZGUuaCAqLywK
QEAgLTE5NzAyLDggKzE5Njc0LDYgQEAKIAkJCQk5MzRDQzEwOTBFREIyMjM5MDBBNjU4RjIgLyog
U2NyaXB0U291cmNlQ29kZS5oICovLAogCQkJCTQxMjdENTM2MEY4QUFCMUQwMEU0MjRGNSAvKiBT
Y3JpcHRTdGF0ZS5jcHAgKi8sCiAJCQkJNDFDNzYwQjAwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlw
dFN0YXRlLmggKi8sCi0JCQkJOTM0Q0MwREYwRUQzOUQ2RjAwQTY1OEYyIC8qIFNjcmlwdFZhbHVl
LmNwcCAqLywKLQkJCQk5MzRDQzBFMDBFRDM5RDZGMDBBNjU4RjIgLyogU2NyaXB0VmFsdWUuaCAq
LywKIAkJCQkyMjhDMjg0NDEwRDgyNTAwMDA5RDBEMEUgLyogU2NyaXB0V3JhcHBhYmxlLmggKi8s
CiAJCQkJMTQwMEQ3QTcxNzEzNkVBNzAwNzdDRTA1IC8qIFNjcmlwdFdyYXBwYWJsZUlubGluZXMu
aCAqLywKIAkJCQlBNzVFNDk3NTEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcCAqLywKQEAgLTIyMTQ2LDcgKzIyMTE2LDYgQEAKIAkJCQkyOUE4MTIzRjBGQkI5QzFE
MDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyOUE4MTIzMTBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eVRhYmxl
Um93LmggaW4gSGVhZGVycyAqLywKIAkJCQlCNUQzMURGQjExQ0Y2MTBCMDA5RjIyQjQgLyogQWN0
aXZlRE9NQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAotCQkJCUE1NTZDMjg5MTgzMjA2QTgwMDhD
QjcyMCAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUM0
REU2OTBFQTc1QzFFMDAyM0NDRDYgLyogQWN0aXZlRE9NT2JqZWN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0Y3RTQ5MTEzN0NEN0M3MDAxRERBRTcgLyogQWRqdXN0Vmlld1NpemVPck5vdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODREMEM0MDYxMTE1RjFFQTAwMThBQTM0IC8qIEFmZmluZVRyYW5z
Zm9ybS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjQ1MCw3ICsyMjQxOSw2IEBACiAJCQkJQTgwRTZE
MDEwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU0luaGVyaXRlZFZhbHVlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBODBFNkQwODBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTSW5pdGlhbFZhbHVlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzc3MkUxMzEzMzE2MjBDMDAxRUM5Q0UgLyogQ1NTTGluZUJveENvbnRh
aW5WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTVBQzRBRjAxODMzNjk3NTAwNzExNEUwIC8q
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFNkQw
MzBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTTWVkaWFSdWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
OThGRkY0NTExQTI2NzYyMDBGNTQ4RTggLyogQ1NTT01VdGlscy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTgwRTZEMDAwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1BhZ2VSdWxlLmggaW4gSGVhZGVycyAq
LywKQEAgLTIzNDEzLDcgKzIzMzgxLDYgQEAKIAkJCQk0RjJEMjA1NDEyRUFFN0IzMDA1QzI4NzQg
LyogSW5zcGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUI4ODVFOEQ1MTFFMDZERDIw
MDlGRkJGNCAvKiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTRGNzA3QTlBMTFFRjY3OTQwMEFDREE2OSAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcnMuaCBpbiBIZWFkZXJzICovLAotCQkJCTdBQTUxQjZFMTQ4M0I2MTYwMEFEMjc1MiAvKiBJ
bnNwZWN0b3JCYXNlQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUFBRDc2NkVDMTU3RTUwMkYw
MEU4NTQyMyAvKiBJbnNwZWN0b3JDYW52YXNBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUFE
NzY2RUQxNTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvckNhbnZhc0luc3RydW1lbnRhdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4MUI5NUMwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3Rv
ckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzQ1Miw4ICsyMzQxOSw3IEBACiAJCQkJODJB
QjE3NzQxMjVDODI2NzAwQzUwNjlEIC8qIEluc3BlY3RvclN0eWxlU2hlZXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTgyODg5QjREMTNDNjIzOTIwMDlBNjE1NiAvKiBJbnNwZWN0b3JTdHlsZVRleHRF
ZGl0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTc1NDEzM0E4MTAyRTAwRTgwMDA3NUQwMCAvKiBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk1NzhEQTIwRjE1MjBF
QkEzMDA2MTQxQzEgLyogSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTRGMzI4OUI2MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTU3OERBMjBGMTUyMEVCQTMwMDYxNDFDMSAvKiBJbnNwZWN0b3JXZWJUeXBlQnVp
bGRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUYzODEwQzFDMTM2NUE0OTYwMEVENkUzMyAvKiBJ
bnNwZWN0b3JXb3JrZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc4RTA5MjkxN0QxNEQx
QzAwNDIwQUExIC8qIFJUQ1N0YXRzQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUYzNzVD
QzA3MTE1MEQzMDAwMDhEREI4MSAvKiBJbnNwZWN0b3JXb3JrZXJSZXNvdXJjZS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yNDU3NSw5ICsyNDU0MSw4IEBACiAJCQkJMDhBNDg0NzgwRTUyNzJDNTAwQzNG
RTc2IC8qIFNjcmlwdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMUM5RDlCMEVCMzY4
MTIwMEU0MDlEQiAvKiBTY3JpcHRFeGVjdXRpb25Db250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDREQ3MDg5NzE4MzU5RjZGMDAyQjNEQzYgLyogU2FtcGxlTWFwLmggaW4gSGVhZGVycyAqLywK
LQkJCQk0MTAwMkNDRDBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5RjNCOTQ3RTEyMjQxNzU4MDA1MzA0RTcgLyogU2NyaXB0SGVhcFNu
YXBzaG90LmggaW4gSGVhZGVycyAqLywKLQkJCQk0MUYwNjZFNDBGNjRCQ0Y2MDBBMDdFQUMgLyog
U2NyaXB0T2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUYwNjZFNDBGNjRCQ0Y2MDBBMDdF
QUMgLyogU2NyaXB0R2xvYmFsT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAzNjEy
QjAyNjc2MDBDMUEzNTkgLyogU2NyaXB0UHJvY2Vzc29yTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOUY3MjMwNEYxMTE4NEI0MTAwQUQwMTI2IC8qIFNjcmlwdFByb2ZpbGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTlGQTM3RUU0MTE3MkZDODAwMEM0Q0Q1NSAvKiBTY3JpcHRQcm9maWxlTm9kZS5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNDU4NSw3ICsyNDU1MCw2IEBACiAJCQkJOEE0MTNBRTAxMjA3
QkJBNTAwODIwMTZFIC8qIFNjcmlwdFJ1bm5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM0Q0Mx
MEEwRURCMjIzOTAwQTY1OEYyIC8qIFNjcmlwdFNvdXJjZUNvZGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxQzc2MEIxMEVERTAzRDMwMEMxNjU1RiAvKiBTY3JpcHRTdGF0ZS5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJOTM0Q0MwRTIwRUQzOUQ2RjAwQTY1OEYyIC8qIFNjcmlwdFZhbHVlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyMjhDMjg0NTEwRDgyNTAwMDA5RDBEMEUgLyogU2NyaXB0V3JhcHBhYmxl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDAwRDdBODE3MTM2RUE3MDA3N0NFMDUgLyogU2NyaXB0
V3JhcHBhYmxlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4QUUzNEYxMkVBMDk2QTAw
RUIzQUU2IC8qIFNjcm9sbGFibGVBcmVhLmggaW4gSGVhZGVycyAqLywKQEAgLTI0OTc5LDYgKzI0
OTQzLDcgQEAKIAkJCQkwODhBMEUwQTEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHkuaCBp
biBIZWFkZXJzICovLAogCQkJCTA4MURENDlDMTNCQTFBNjAwMERDNzYyNyAvKiBTVkdQcm9wZXJ0
eUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUI1N0NCNTJFMTgyQTNFRkMwMDc5QTY0NyAvKiBJ
bmxpbmVFbGVtZW50Qm94LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTkzQ0Y4QjE4NDA1MzUyMDBC
RkNFMjcgLyogSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODhB
MEUwQjEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwODhBMEUwQzEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlUcmFpdHMuaCBp
biBIZWFkZXJzICovLAogCQkJCUIyMjI3QTlBMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdSYWRpYWxH
cmFkaWVudEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjU4MzEsNyArMjU3OTYsNiBAQAog
CQkJCTU5QjU5NzczMTEwODY1NkIwMDcxNTlFOCAvKiBCcmlkZ2VKU0MuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRjU1QjNEQUYxMjUxRjEyRDAwM0VGMjY5IC8qIEJ1dHRvbklucHV0VHlwZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUNGNzBEN0UyQjgyMDA3QzM5ODMgLyogY19jbGFzcy5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQlBNUFDNEFFRjE4MzM2OTc1MDA3MTE0RTAgLyogSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlDRjkwRDdF
MkI4MjAwN0MzOTgzIC8qIGNfaW5zdGFuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlD
RkIwRDdFMkI4MjAwN0MzOTgzIC8qIGNfcnVudGltZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
QTU2OUNGRDBEN0UyQjgyMDA3QzM5ODMgLyogY191dGlsaXR5LmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMjY3MTIsOCArMjY2NzYsNyBAQAogCQkJCTgyODg5QjRDMTNDNjIzOTIwMDlBNjE1NiAvKiBJ
bnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcyNzdFNEUx
N0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3NTQxMzNBQTEwMkUwMEY0MDAwNzVEMDAgLyogSW5zcGVjdG9y
VGltZWxpbmVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1NzNEMTM0NzE0Q0UzOUZGMDA1
N0FCQ0EgLyogSW5zcGVjdG9yVHlwZUJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNEYz
Mjg5QjUxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk1NzNEMTM0NzE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yV2ViVHlwZUJ1aWxk
ZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUYzODEwQzFCMTM2NUE0OTYwMEVENkUzMyAvKiBJ
bnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGMzUwQjczNTEzRjEz
NzdEMDA4ODBDNDMgLyogSW5zdHJ1bWVudGluZ0FnZW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCMjc1MzU2MDBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTI3ODE5LDE0ICsyNzc4MiwxMiBAQAogCQkJCTQ5OThBRUQxMTNGQjIyNEQwMDkwQjFB
QSAvKiBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MDhBNDg0NzcwRTUyNzJDNTAwQzNGRTc2IC8qIFNjcmlwdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTExQzlEQjAwRUIzNjk5NTAwRTQwOURCIC8qIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDEwMDJDQ0UwRjY2RURFRjAwOUU2NjBEIC8qIFNj
cmlwdEZ1bmN0aW9uQ2FsbC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0MUYwNjZFNTBGNjRCQ0Y2
MDBBMDdFQUMgLyogU2NyaXB0T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxRjA2NkU1
MEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRHbG9iYWxPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRkQzMTYwMzUxMkIwMjY3NjAwQzFBMzU5IC8qIFNjcmlwdFByb2Nlc3Nvck5vZGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRjMzRjAyODIxMjA5NDdGMjAwRTU3NDNBIC8qIFNjcmlwdFBy
b2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOUY3MjMwNTAxMTE4NEI0MTAwQUQwMTI2IC8q
IFNjcmlwdFByb2ZpbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCThBNDEzQUUxMTIwN0JCQTUw
MDgyMDE2RSAvKiBTY3JpcHRSdW5uZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEyN0Q1Mzcw
RjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTkz
NENDMEUxMEVEMzlENkYwMEE2NThGMiAvKiBTY3JpcHRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCQzhBRTM0RTEyRUEwOTZBMDBFQjNBRTYgLyogU2Nyb2xsYWJsZUFyZWEuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQ0EzQkY2N0MxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9y
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNTExNTZFMTJCMTc0OUMwMEM5Njc1NCAvKiBTY3Jv
bGxBbmltYXRvck1hYy5tbSBpbiBTb3VyY2VzICovLApAQCAtMjc5MTgsNyArMjc4NzksNiBAQAog
CQkJCUFBMkE1QUQ1MTZBNDg2MTQwMDk3NUEyNSAvKiBTcGVlY2hTeW50aGVzaXMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQUEyQTVBRDMxNkE0ODYwRDAwOTc1QTI1IC8qIFNwZWVjaFN5bnRoZXNp
c0V2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFBMkE1QUQxMTZBNDg2MDcwMDk3NUEyNSAv
KiBTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTU1NkMy
ODgxODMyMDZBODAwOENCNzIwIC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQUEyQTVBQ0QxNkE0ODVGQTAwOTc1QTI1IC8qIFNwZWVjaFN5bnRoZXNpc1Zv
aWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3OEZFMTNCMTIzNjZCMTAwMEFDRThEMCAvKiBT
cGVsbENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjhEQkRCNEQxMzBCMEY4QTAwRjVD
REIxIC8qIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmgKaW5kZXggOTRkYTg3OC4uZmQ0YmVlNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaApAQCAtMzAsNyArMzAsNyBA
QAogI2luY2x1ZGUgIkpTRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5o
IgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIK
KyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgpAQCAtOTIsNyArOTIsNyBAQCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IERp
Y3Rpb25hcnk6OmdldEV2ZW50TGlzdGVuZXIoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLAogICAg
IGlmICghbV9kaWN0aW9uYXJ5LmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBT
Y3JpcHRWYWx1ZSBldmVudExpc3RlbmVyOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGV2
ZW50TGlzdGVuZXI7CiAgICAgaWYgKCFtX2RpY3Rpb25hcnkudHJ5R2V0UHJvcGVydHkocHJvcGVy
dHlOYW1lLCBldmVudExpc3RlbmVyKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKGV2ZW50
TGlzdGVuZXIuaGFzTm9WYWx1ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAppbmRleCBiOGYxYmM4Li43YTc3ZGI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApA
QCAtMTc4LDcgKzE3OCw3IEBAIHN0YXRpYyBKU1ZhbHVlIGdldE50aFZhbHVlT25LZXlQYXRoKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSByb290VmFsdWUsIGNvbnN0IFZlCiAgICAgcmV0dXJuIGN1
cnJlbnRWYWx1ZTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlG
cm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU2NyaXB0VmFs
dWUmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCitzdGF0aWMgUGFzc1JlZlB0cjxJREJL
ZXk+IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5
UGF0aCkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiBrZXlQYXRoRWxlbWVudHM7CiAgICAgSURCS2V5
UGF0aFBhcnNlRXJyb3IgZXJyb3I7CkBAIC0yMjgsNyArMjI4LDcgQEAgc3RhdGljIGJvb2wgY2Fu
SW5qZWN0TnRoVmFsdWVPbktleVBhdGgoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHJvb3RWYWx1
ZSwgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBpbmplY3RJREJLZXlJbnRvU2Ny
aXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIFBhc3NSZWZQdHI8SURCS2V5
PiBrZXksIFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKK2Jv
b2wgaW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0
YXRlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFs
dWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJp
bmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUiKTsKIApAQCAtMjU0LDcgKzI1NCw3IEBAIGJvb2wg
aW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRl
LCBQYXNzUmVmUHRyPElEQktlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8SURC
S2V5PiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKERPTVJlcXVlc3RTdGF0
ZSogcmVxdWVzdFN0YXRlLCBjb25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IElEQktleVBh
dGgmIGtleVBhdGgpCitQYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZh
bHVlQW5kS2V5UGF0aChET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQogewog
ICAgIExPRyhTdG9yYWdlQVBJLCAiY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0
aCIpOwogICAgIEFTU0VSVCgha2V5UGF0aC5pc051bGwoKSk7CkBAIC0yNzcsNyArMjc3LDcgQEAg
UGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgo
RE9NUmVxdWVzdFN0YXRlKiByZXF1ZXMKICAgICByZXR1cm4gY3JlYXRlSURCS2V5RnJvbVNjcmlw
dFZhbHVlQW5kS2V5UGF0aChleGVjLCB2YWx1ZSwga2V5UGF0aC5zdHJpbmcoKSk7CiB9CiAKLWJv
b2wgY2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVz
dFN0YXRlLCBjb25zdCBTY3JpcHRWYWx1ZSYgc2NyaXB0VmFsdWUsIGNvbnN0IElEQktleVBhdGgm
IGtleVBhdGgpCitib29sIGNhbkluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0
U3RhdGUqIHJlcXVlc3RTdGF0ZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHNjcmlw
dFZhbHVlLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQogewogICAgIExPRyhTdG9yYWdlQVBJ
LCAiY2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlIik7CiAKQEAgLTI5NCwxNiArMjk0LDE2
IEBAIGJvb2wgY2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSog
cmVxdWVzdFN0YXRlLCBjb25zdCBTY3JpcHRWCiAgICAgcmV0dXJuIGNhbkluamVjdE50aFZhbHVl
T25LZXlQYXRoKGV4ZWMsIHNjcmlwdFZhbHVlLmpzVmFsdWUoKSwga2V5UGF0aEVsZW1lbnRzLCBr
ZXlQYXRoRWxlbWVudHMuc2l6ZSgpIC0gMSk7CiB9CiAKLVNjcmlwdFZhbHVlIGRlc2VyaWFsaXpl
SURCVmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBwcnBWYWx1ZSkKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRlc2Vy
aWFsaXplSURCVmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBwcnBWYWx1ZSkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMg
PSByZXF1ZXN0U3RhdGUtPmV4ZWMoKTsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBzZXJpYWxpemVkVmFsdWUgPSBwcnBWYWx1ZTsKICAgICBpZiAoc2VyaWFsaXplZFZhbHVlKQot
ICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKGV4ZWMsIHNlcmlhbGl6ZWRW
YWx1ZS5nZXQoKSwgTm9uVGhyb3dpbmcpOwotICAgIHJldHVybiBTY3JpcHRWYWx1ZShleGVjLT52
bSgpLCBqc051bGwoKSk7CisgICAgICAgIHJldHVybiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRl
c2VyaWFsaXplKGV4ZWMsIHNlcmlhbGl6ZWRWYWx1ZS5nZXQoKSwgTm9uVGhyb3dpbmcpOworICAg
IHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBqc051bGwoKSk7CiB9
CiAKLVNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIoRE9NUmVxdWVzdFN0YXRl
KiByZXF1ZXN0U3RhdGUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBwcnBCdWZmZXIpCitEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKERPTVJlcXVlc3RT
dGF0ZSogcmVxdWVzdFN0YXRlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcHJwQnVmZmVyKQog
ewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHJlcXVlc3RTdGF0ZS0+ZXhlYygpOwogICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBycEJ1ZmZlcjsKQEAgLTMxMiwxOCArMzEyLDE4IEBA
IFNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIoRE9NUmVxdWVzdFN0YXRlKiBy
ZXF1ZXN0U3RhdGUsIFBhc3NSZWZQdHI8CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZTsK
ICAgICAgICAgdmFsdWUuYXBwZW5kKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAg
ICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmVCeXRlcyh2YWx1ZSk7Ci0gICAgICAg
IHJldHVybiBTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoZXhlYywgc2VyaWFsaXplZFZhbHVlLmdl
dCgpLCBOb25UaHJvd2luZyk7CisgICAgICAgIHJldHVybiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmRlc2VyaWFsaXplKGV4ZWMsIHNlcmlhbGl6ZWRWYWx1ZS5nZXQoKSwgTm9uVGhyb3dpbmcpOwog
ICAgIH0KLSAgICByZXR1cm4gU2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwganNOdWxsKCkpOworICAg
IHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBqc051bGwoKSk7CiB9
CiAKLVNjcmlwdFZhbHVlIGlkYktleVRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1
ZXN0U3RhdGUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXkpCitEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSBpZGJLZXlUb1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBQYXNz
UmVmUHRyPElEQktleT4ga2V5KQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHJlcXVlc3RTdGF0
ZS0+ZXhlYygpOwotICAgIHJldHVybiBTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBpZGJLZXlUb0pT
VmFsdWUoZXhlYywganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpKSwga2V5LmdldCgpKSk7CisgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlKGV4ZWMtPnZtKCksIGlkYktleVRvSlNWYWx1ZShleGVjLCBqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBrZXkuZ2V0KCkpKTsKIH0KIAot
UGFzc1JlZlB0cjxJREJLZXk+IHNjcmlwdFZhbHVlVG9JREJLZXkoRE9NUmVxdWVzdFN0YXRlKiBy
ZXF1ZXN0U3RhdGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBzY3JpcHRWYWx1ZSkKK1Bhc3NSZWZQdHI8
SURCS2V5PiBzY3JpcHRWYWx1ZVRvSURCS2V5KERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRl
LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgc2NyaXB0VmFsdWUpCiB7CiAgICAgRXhl
Y1N0YXRlKiBleGVjID0gcmVxdWVzdFN0YXRlLT5leGVjKCk7CiAgICAgcmV0dXJuIGNyZWF0ZUlE
QktleUZyb21WYWx1ZShleGVjLCBzY3JpcHRWYWx1ZS5qc1ZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oCmluZGV4IDkwOGM3ZmQu
LmYwMTJhZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRp
bmdVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5n
VXRpbGl0aWVzLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKIAogI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgor
I2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDEsMTMgKzQxLDEzIEBAIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIAogSURCS2V5UGF0aCBpZGJLZXlQYXRoRnJvbVZhbHVlKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpKU1ZhbHVlKTsKIAotYm9vbCBpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoRE9N
UmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxJREJLZXk+LCBTY3JpcHRWYWx1ZSYsIGNvbnN0IElE
QktleVBhdGgmKTsKLVBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFs
dWVBbmRLZXlQYXRoKERPTVJlcXVlc3RTdGF0ZSosIGNvbnN0IFNjcmlwdFZhbHVlJiwgY29uc3Qg
SURCS2V5UGF0aCYpOwotYm9vbCBjYW5JbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVx
dWVzdFN0YXRlKiwgY29uc3QgU2NyaXB0VmFsdWUmLCBjb25zdCBJREJLZXlQYXRoJik7Ci1TY3Jp
cHRWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVlKERPTVJlcXVlc3RTdGF0ZSosIFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7Ci1TY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVl
QnVmZmVyKERPTVJlcXVlc3RTdGF0ZSosIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPik7Ci1TY3Jp
cHRWYWx1ZSBpZGJLZXlUb1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSosIFBhc3NSZWZQdHI8
SURCS2V5Pik7Ci1QYXNzUmVmUHRyPElEQktleT4gc2NyaXB0VmFsdWVUb0lEQktleShET01SZXF1
ZXN0U3RhdGUqLCBjb25zdCBTY3JpcHRWYWx1ZSYpOworYm9vbCBpbmplY3RJREJLZXlJbnRvU2Ny
aXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxJREJLZXk+LCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsKK1Bhc3NSZWZQdHI8SURCS2V5PiBj
cmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKERPTVJlcXVlc3RTdGF0ZSosIGNv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOworYm9vbCBj
YW5JbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiwgY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBjb25zdCBJREJLZXlQYXRoJik7CitEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVlKERPTVJlcXVlc3RTdGF0ZSosIFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBkZXNl
cmlhbGl6ZUlEQlZhbHVlQnVmZmVyKERPTVJlcXVlc3RTdGF0ZSosIFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPik7CitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBpZGJLZXlUb1NjcmlwdFZhbHVlKERP
TVJlcXVlc3RTdGF0ZSosIFBhc3NSZWZQdHI8SURCS2V5Pik7CitQYXNzUmVmUHRyPElEQktleT4g
c2NyaXB0VmFsdWVUb0lEQktleShET01SZXF1ZXN0U3RhdGUqLCBjb25zdCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0JpbmRpbmdzQWxsSW5PbmUuY3BwCmluZGV4IDU3Nzk4OWEuLmEzMGY3OWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcApAQCAtMTQ5
LDcgKzE0OSw2IEBACiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAiCiAjaW5j
bHVkZSAiU2NyaXB0Q29udHJvbGxlci5jcHAiCiAjaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIu
Y3BwIgotI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAiCiAjaW5jbHVkZSAiU2NyaXB0
UHJvZmlsZXIuY3BwIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmNwcCIKICNpbmNsdWRlICJTZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNEaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGlj
dGlvbmFyeS5jcHAKaW5kZXggN2VkYjFkNS4uNGMyODgyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAi
SlNTdG9yYWdlLmgiCiAjaW5jbHVkZSAiSlNUcmFja0N1c3RvbS5oIgogI2luY2x1ZGUgIkpTVm9p
ZENhbGxiYWNrLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXJpYWxp
emVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlIDxydW50aW1lL0pTVHlwZWRBcnJheXMuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMTQ0LDkgKzE0Myw5IEBAIHZvaWQgSlNEaWN0aW9u
YXJ5Ojpjb252ZXJ0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBWZWN0b3I8
U3RyaW5nPiYKICAgICB9CiB9CiAKLXZvaWQgSlNEaWN0aW9uYXJ5Ojpjb252ZXJ0VmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBTY3JpcHRWYWx1ZSYgcmVzdWx0KQordm9pZCBK
U0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUs
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiByZXN1bHQpCiB7Ci0gICAgcmVzdWx0ID0gU2NyaXB0
VmFsdWUoZXhlYy0+dm0oKSwgdmFsdWUpOworICAgIHJlc3VsdCA9IERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlKGV4ZWMtPnZtKCksIHZhbHVlKTsKIH0KIAogdm9pZCBKU0RpY3Rpb25hcnk6OmNvbnZl
cnRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFJlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+JiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RpY3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlv
bmFyeS5oCmluZGV4IGEyOTA1NmYuLjNhOGUyY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRGljdGlvbmFyeS5oCkBAIC0zNCw2ICszNCwxMCBAQAogI2luY2x1ZGUgPHJ1bnRpbWUv
VWludDhBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKK25hbWVzcGFjZSBEZXBy
ZWNhdGVkIHsKK2NsYXNzIFNjcmlwdFZhbHVlOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEFycmF5VmFsdWU7CkBAIC00Niw3ICs1MCw2IEBAIGNsYXNzIE1lZGlhS2V5RXJyb3I7
CiBjbGFzcyBNZWRpYVN0cmVhbTsKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2s7CiBjbGFzcyBOb2Rl
OwotY2xhc3MgU2NyaXB0VmFsdWU7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiBjbGFz
cyBTdG9yYWdlOwogY2xhc3MgVHJhY2tCYXNlOwpAQCAtMTA4LDcgKzExMSw3IEBAIHByaXZhdGU6
CiAgICAgc3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1Zh
bHVlLCBkb3VibGUmIHJlc3VsdCk7CiAgICAgc3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBEaWN0aW9uYXJ5JiByZXN1bHQpOwogICAgIHN0YXRp
YyB2b2lkIGNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgU3RyaW5n
JiByZXN1bHQpOwotICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6SlNWYWx1ZSwgU2NyaXB0VmFsdWUmIHJlc3VsdCk7CisgICAgc3RhdGljIHZvaWQgY29u
dmVydFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYgcmVzdWx0KTsKICAgICBzdGF0aWMgdm9pZCBjb252ZXJ0VmFsdWUoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkpTVmFsdWUsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpOwogICAgIHN0YXRp
YyB2b2lkIGNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mIHJlc3VsdCk7CiAgICAgc3RhdGljIHZvaWQgY29udmVy
dFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBSZWZQdHI8RE9NV2luZG93PiYg
cmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENh
bnZhc0VsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
Q2FudmFzRWxlbWVudEN1c3RvbS5jcHAKaW5kZXggZmU2YzhiYS4uN2FkMzZmOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1
c3RvbS5jcHAKQEAgLTMxLDEzICszMSwxNCBAQAogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2FudmFzSW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3Qu
aCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3QuaD4KKyNpbmNsdWRlIDx3dGYvR2V0
UHRyLmg+CisKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiSlNEaWN0aW9uYXJ5LmgiCiAj
aW5jbHVkZSAiSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJXZWJHTENvbnRl
eHRBdHRyaWJ1dGVzLmgiCiAjZW5kaWYKLSNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CiAKQEAgLTg1LDggKzg2LDggQEAgSlNWYWx1ZSBKU0hUTUxDYW52YXNF
bGVtZW50OjpnZXRDb250ZXh0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIGpzTnVs
bCgpOwogICAgIEpTVmFsdWUganNWYWx1ZSA9IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIFdU
Rjo6Z2V0UHRyKGNvbnRleHQpKTsKICAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpj
YW52YXNBZ2VudEVuYWJsZWQoJmNhbnZhcy5kb2N1bWVudCgpKSkgewotICAgICAgICBTY3JpcHRP
YmplY3QgY29udGV4dE9iamVjdChleGVjLCBqc1ZhbHVlLmdldE9iamVjdCgpKTsKLSAgICAgICAg
U2NyaXB0T2JqZWN0IHdyYXBwZWQ7CisgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBj
b250ZXh0T2JqZWN0KGV4ZWMsIGpzVmFsdWUuZ2V0T2JqZWN0KCkpOworICAgICAgICBEZXByZWNh
dGVkOjpTY3JpcHRPYmplY3Qgd3JhcHBlZDsKICAgICAgICAgaWYgKGNvbnRleHQtPmlzMmQoKSkK
ICAgICAgICAgICAgIHdyYXBwZWQgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndyYXBDYW52
YXMyRFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24oJmNhbnZhcy5kb2N1bWVudCgp
LCBjb250ZXh0T2JqZWN0KTsKICNpZiBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKaW5k
ZXggNjk5OWZiZS4uMGI0NTIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcApAQCAtNDQsMTUgKzQ0LDE1
IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
RE9NQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCi0jaW5jbHVk
ZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCiAjaW5j
bHVkZSAiSlNIVE1MQWxsQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkpTSFRNTENvbGxlY3Rpb24u
aCIKICNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRlICJKU05vZGVMaXN0LmgiCiAjaW5jbHVk
ZSAiSlNTdG9yYWdlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTdG9y
YWdlLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KKyNpbmNsdWRlIDxpbnNw
ZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8cGFyc2VyL1NvdXJjZUNvZGUuaD4K
ICNpbmNsdWRlIDxydW50aW1lL0RhdGVJbnN0YW5jZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJy
b3IuaD4KQEAgLTY5LDIwICs2OSwyMCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLU5vZGUqIEluamVjdGVkU2NyaXB0SG9zdDo6c2NyaXB0VmFsdWVBc05v
ZGUoU2NyaXB0VmFsdWUgdmFsdWUpCitOb2RlKiBJbmplY3RlZFNjcmlwdEhvc3Q6OnNjcmlwdFZh
bHVlQXNOb2RlKERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHZhbHVlKQogewogICAgIGlmICghdmFs
dWUuaXNPYmplY3QoKSB8fCB2YWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
cmV0dXJuIHRvTm9kZSh2YWx1ZS5qc1ZhbHVlKCkpOwogfQogCi1TY3JpcHRWYWx1ZSBJbmplY3Rl
ZFNjcmlwdEhvc3Q6Om5vZGVBc1NjcmlwdFZhbHVlKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgTm9k
ZSogbm9kZSkKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0SG9zdDo6bm9k
ZUFzU2NyaXB0VmFsdWUoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBOb2RlKiBub2RlKQogewogICAg
IGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb05vZGUoc3RhdGUsIG5vZGUpKQotICAgICAgICByZXR1
cm4gU2NyaXB0VmFsdWUoc3RhdGUtPnZtKCksIGpzTnVsbCgpKTsKKyAgICAgICAgcmV0dXJuIERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKHN0YXRlLT52bSgpLCBqc051bGwoKSk7CiAKICAgICBKU0xv
Y2tIb2xkZXIgbG9jayhzdGF0ZSk7Ci0gICAgcmV0dXJuIFNjcmlwdFZhbHVlKHN0YXRlLT52bSgp
LCB0b0pTKHN0YXRlLCBkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBlKHN0YXRlKSwg
bm9kZSkpOworICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShzdGF0ZS0+dm0oKSwg
dG9KUyhzdGF0ZSwgZGVwcmVjYXRlZEdsb2JhbE9iamVjdEZvclByb3RvdHlwZShzdGF0ZSksIG5v
ZGUpKTsKIH0KIAogSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdGVkT2JqZWN0
KEV4ZWNTdGF0ZSogZXhlYykKQEAgLTk1LDcgKzk1LDcgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2Ny
aXB0SG9zdDo6aW5zcGVjdGVkT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CiAKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICBTY3Jp
cHRWYWx1ZSBzY3JpcHRWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMpOworICAgIERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlIHNjcmlwdFZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYyk7CiAgICAgaWYgKHNj
cmlwdFZhbHVlLmhhc05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAK
QEAgLTI0Nyw4ICsyNDcsOCBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXRFdmVu
dExpc3RlbmVycyhFeGVjU3RhdGUqIGV4ZWMpCiBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0
OjppbnNwZWN0KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3Vu
dCgpID49IDIpIHsKLSAgICAgICAgU2NyaXB0VmFsdWUgb2JqZWN0KGV4ZWMtPnZtKCksIGV4ZWMt
PnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKLSAgICAgICAgU2NyaXB0VmFsdWUgaGludHMoZXhlYy0+
dm0oKSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSkpOworICAgICAgICBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSBvYmplY3QoZXhlYy0+dm0oKSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkp
OworICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBoaW50cyhleGVjLT52bSgpLCBleGVj
LT51bmNoZWNrZWRBcmd1bWVudCgxKSk7CiAgICAgICAgIGltcGwoKS5pbnNwZWN0SW1wbChvYmpl
Y3QudG9JbnNwZWN0b3JWYWx1ZShleGVjKSwgaGludHMudG9JbnNwZWN0b3JWYWx1ZShleGVjKSk7
CiAgICAgfQogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCmluZGV4IDJkYmUy
ZGUuLmE2ZGE2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRlICJK
U0RPTVdpbmRvd0N1c3RvbS5oIgogI2luY2x1ZGUgIkpTSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAj
aW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0
LmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0T2JqZWN0Lmg+CiAjaW5jbHVkZSA8cGFyc2Vy
L1NvdXJjZUNvZGUuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgogCkBAIC00OSw3ICs0
OSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2Ny
aXB0T2JqZWN0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29u
c3QgU3RyaW5nJiBzb3VyY2UsIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgaW50IGlkKQor
RGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5q
ZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRT
dGF0ZSwgaW50IGlkKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKHNjcmlwdFN0YXRlKTsKIApA
QCAtNjYsMTMgKzY2LDEzIEBAIFNjcmlwdE9iamVjdCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNy
ZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBKCiAgICAgICAgIGV2YWx1
YXRpb25SZXR1cm5WYWx1ZSA9IEpTQzo6ZXZhbHVhdGUoc2NyaXB0U3RhdGUsIHNvdXJjZUNvZGUs
IGdsb2JhbFRoaXNWYWx1ZSwgJmV2YWx1YXRpb25FeGNlcHRpb24pOwogICAgIH0KICAgICBpZiAo
ZXZhbHVhdGlvbkV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIFNjcmlwdE9iamVjdCgpOworICAg
ICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KCk7CiAKICAgICBKU1ZhbHVlIGZ1
bmN0aW9uVmFsdWUgPSBldmFsdWF0aW9uUmV0dXJuVmFsdWU7CiAgICAgQ2FsbERhdGEgY2FsbERh
dGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvblZhbHVlLCBj
YWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKLSAgICAgICAgcmV0
dXJuIFNjcmlwdE9iamVjdCgpOworICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0T2Jq
ZWN0KCk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIGFyZ3MuYXBwZW5k
KHRvSlMoc2NyaXB0U3RhdGUsIGdsb2JhbE9iamVjdCwgbV9pbmplY3RlZFNjcmlwdEhvc3QuZ2V0
KCkpKTsKQEAgLTgxLDggKzgxLDggQEAgU2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0TWFuYWdl
cjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEoKIAogICAgIEpT
VmFsdWUgcmVzdWx0ID0gSlNDOjpjYWxsKHNjcmlwdFN0YXRlLCBmdW5jdGlvblZhbHVlLCBjYWxs
VHlwZSwgY2FsbERhdGEsIGdsb2JhbFRoaXNWYWx1ZSwgYXJncyk7CiAgICAgaWYgKHJlc3VsdC5p
c09iamVjdCgpKQotICAgICAgICByZXR1cm4gU2NyaXB0T2JqZWN0KHNjcmlwdFN0YXRlLCByZXN1
bHQuZ2V0T2JqZWN0KCkpOwotICAgIHJldHVybiBTY3JpcHRPYmplY3QoKTsKKyAgICAgICAgcmV0
dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdChzY3JpcHRTdGF0ZSwgcmVzdWx0LmdldE9iamVj
dCgpKTsKKyAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KCk7CiB9CiAKIGJvb2wg
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coSlNDOjpFeGVj
U3RhdGUqIHNjcmlwdFN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAKaW5kZXggNDI5M2E0Ni4uYTU4YzhmNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUu
Y3BwCkBAIC00Niw0ICs0NiwxMiBAQCB2b2lkIEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6ZGlkTGVh
dmVTY3JpcHRDb250ZXh0KCkKICAgICBNdXRhdGlvbk9ic2VydmVyOjpkZWxpdmVyQWxsTXV0YXRp
b25zKCk7CiB9CiAKK0pTQzo6SlNWYWx1ZSBmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVh
ZChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBKU0M6
OkNhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0YSwgSlNDOjpK
U1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzKQoreworICAgIGlmIChp
c01haW5UaHJlYWQoKSkKKyAgICAgICAgcmV0dXJuIEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y2Fs
bChleGVjLCBmdW5jdGlvbk9iamVjdCwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFy
Z3MpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIEpTQzo6Y2FsbChleGVjLCBmdW5jdGlvbk9i
amVjdCwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U01haW5UaHJlYWRFeGVjU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFp
blRocmVhZEV4ZWNTdGF0ZS5oCmluZGV4IDMzYjdiZDkuLjJmYTY2MjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oCkBAIC0yOCw5
ICsyOCw3IEBACiAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlIDxydW50aW1l
L0NvbXBsZXRpb24uaD4KLSNpZm5kZWYgTkRFQlVHCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KLSNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQyLDcgKzQwLDcgQEAgY2xh
c3MgSlNNYWluVGhyZWFkRXhlY1N0YXRlIHsKICAgICBmcmllbmQgY2xhc3MgSlNNYWluVGhyZWFk
TnVsbFN0YXRlOwogcHVibGljOgogICAgIHN0YXRpYyBKU0M6OkV4ZWNTdGF0ZSogY3VycmVudFN0
YXRlKCkKLSAgICB7IAorICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICAgICAgcmV0dXJuIHNfbWFpblRocmVhZFN0YXRlOwogICAgIH07CkBAIC01Myw4ICs1MSw2IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEpTQzo6Y2FsbChleGVjLCBmdW5jdGlvbk9iamVjdCwg
Y2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MpOwogICAgIH07CiAKLSAgICBzdGF0
aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGluc3RydW1lbnRGdW5jdGlvbkNhbGwo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEpTQzo6Q2FsbFR5cGUsIGNvbnN0IEpTQzo6Q2FsbERh
dGEmKTsKLQogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZXZhbHVhdGUoSlNDOjpFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IEpTQzo6U291cmNlQ29kZSYgc291cmNlLCBKU0M6OkpTVmFsdWUgdGhpc1Zh
bHVlLCBKU0M6OkpTVmFsdWUqIGV4Y2VwdGlvbikKICAgICB7CiAgICAgICAgIEpTTWFpblRocmVh
ZEV4ZWNTdGF0ZSBjdXJyZW50U3RhdGUoZXhlYyk7CkBAIC02Miw2ICs1OCw4IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIEpTQzo6ZXZhbHVhdGUoZXhlYywgc291cmNlLCB0aGlzVmFsdWUsIGV4
Y2VwdGlvbik7CiAgICAgfTsKIAorICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUgaW5zdHJ1bWVudEZ1bmN0aW9uQ2FsbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSlND
OjpDYWxsVHlwZSwgY29uc3QgSlNDOjpDYWxsRGF0YSYpOworCiAgICAgZXhwbGljaXQgSlNNYWlu
VGhyZWFkRXhlY1N0YXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjKQogICAgICAgICA6IG1fcHJldmlv
dXNTdGF0ZShzX21haW5UaHJlYWRTdGF0ZSkKICAgICB7CkBAIC0xMTAsNiArMTA4LDggQEAgcHJp
dmF0ZToKICAgICBKU0M6OkV4ZWNTdGF0ZSogbV9wcmV2aW91c1N0YXRlOwogfTsKIAorSlNDOjpK
U1ZhbHVlIGZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKEpTQzo6RXhlY1N0YXRlKiBl
eGVjLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUs
IGNvbnN0IEpTQzo6Q2FsbERhdGEmIGNhbGxEYXRhLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBj
b25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MpOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBKU01haW5UaHJlYWRFeGVjU3RhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwCmluZGV4IDBhOWE0YzEuLmM4NGNh
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVu
dEN1c3RvbS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgSlNWYWx1ZSBKU01lc3NhZ2VFdmVudDo6ZGF0
YShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICAgSlNWYWx1ZSByZXN1bHQ7CiAgICAgc3dpdGNo
IChldmVudC5kYXRhVHlwZSgpKSB7CiAgICAgY2FzZSBNZXNzYWdlRXZlbnQ6OkRhdGFUeXBlU2Ny
aXB0VmFsdWU6IHsKLSAgICAgICAgU2NyaXB0VmFsdWUgc2NyaXB0VmFsdWUgPSBldmVudC5kYXRh
QXNTY3JpcHRWYWx1ZSgpOworICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBzY3JpcHRW
YWx1ZSA9IGV2ZW50LmRhdGFBc1NjcmlwdFZhbHVlKCk7CiAgICAgICAgIGlmIChzY3JpcHRWYWx1
ZS5oYXNOb1ZhbHVlKCkpCiAgICAgICAgICAgICByZXN1bHQgPSBqc051bGwoKTsKICAgICAgICAg
ZWxzZQpAQCAtMTA1LDcgKzEwNSw3IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUgaGFuZGxlSW5pdE1l
c3NhZ2VFdmVudChKU01lc3NhZ2VFdmVudCoganNFdmVudCwgSlNDOjpFeGVjU3RhCiAgICAgICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogICAgIH0KLSAgICBTY3JpcHRWYWx1ZSBkYXRhQXJnID0gU2NyaXB0VmFsdWUoZXhlYy0+
dm0oKSwgZXhlYy0+YXJndW1lbnQoMykpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRh
dGFBcmcgPSBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBleGVjLT5hcmd1bWVu
dCgzKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2No
ZWR1bGVkQWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFj
dGlvbi5jcHAKaW5kZXggMDZjNTFjYS4uOTE3M2VkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCkBAIC0zNyw5ICszNyw5IEBACiAjaW5jbHVk
ZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUu
aCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlclRocmVh
ZC5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8cnVudGlt
ZS9KU0xvY2suaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKaW5kZXggNWQ2NmM0
ZC4uN2Q2OTVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q2FsbFN0YWNrRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlICJTY3Jp
cHRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJT
Y3JpcHRDYWxsU3RhY2suaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPGJp
bmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg+
CiAjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lSW5saW5lcy5oPgogI2luY2x1ZGUgPGlu
dGVycHJldGVyL1N0YWNrVmlzaXRvci5oPgpAQCAtMTk5LDEwICsxOTksMTAgQEAgUGFzc1JlZlB0
cjxTY3JpcHRDYWxsU3RhY2s+IGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMKIAogUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGNyZWF0ZVNjcmlw
dEFyZ3VtZW50cyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgc2tpcEFyZ3VtZW50Q291
bnQpCiB7Ci0gICAgVmVjdG9yPFNjcmlwdFZhbHVlPiBhcmd1bWVudHM7CisgICAgVmVjdG9yPERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlPiBhcmd1bWVudHM7CiAgICAgc2l6ZV90IGFyZ3VtZW50Q291
bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IHNraXBBcmd1
bWVudENvdW50OyBpIDwgYXJndW1lbnRDb3VudDsgKytpKQotICAgICAgICBhcmd1bWVudHMuYXBw
ZW5kKFNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKSk7
CisgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoZXhlYy0+
dm0oKSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkpKTsKICAgICByZXR1cm4gU2NyaXB0QXJn
dW1lbnRzOjpjcmVhdGUoZXhlYywgYXJndW1lbnRzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCAyYzNlZjkzYWYuLjAwN2Iw
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
Y3BwCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgogI2luY2x1ZGUg
IlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNs
dWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5o
IgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZS5oIgpA
QCAtNDgsNiArNDcsNyBAQAogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNs
dWRlICJucHJ1bnRpbWVfaW1wbC5oIgogI2luY2x1ZGUgInJ1bnRpbWVfcm9vdC5oIgorI2luY2x1
ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8ZGVidWdnZXIvRGVidWdnZXIu
aD4KICNpbmNsdWRlIDxoZWFwL1N0cm9uZ0lubGluZXMuaD4KICNpbmNsdWRlIDxydW50aW1lL0lu
aXRpYWxpemVUaHJlYWRpbmcuaD4KQEAgLTExNyw3ICsxMTcsNyBAQCBKU0RPTVdpbmRvd1NoZWxs
KiBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVXaW5kb3dTaGVsbChET01XcmFwcGVyV29ybGQmIHdv
cmxkKQogICAgIHJldHVybiB3aW5kb3dTaGVsbC5nZXQoKTsKIH0KIAotU2NyaXB0VmFsdWUgU2Ny
aXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNv
dXJjZUNvZGUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCitEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYgc291cmNlQ29kZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKICAgICBjb25zdCBTb3Vy
Y2VDb2RlJiBqc1NvdXJjZUNvZGUgPSBzb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpOwogICAgIFN0
cmluZyBzb3VyY2VVUkwgPSBqc1NvdXJjZUNvZGUucHJvdmlkZXIoKS0+dXJsKCk7CkBAIC0xNDks
MTQgKzE0OSwxNCBAQCBTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29y
bGQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZQogICAgIGlmIChldmFsdWF0aW9u
RXhjZXB0aW9uKSB7CiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihleGVjLCBldmFsdWF0aW9uRXhj
ZXB0aW9uLCBzb3VyY2VDb2RlLmNhY2hlZFNjcmlwdCgpKTsKICAgICAgICAgbV9zb3VyY2VVUkwg
PSBzYXZlZFNvdXJjZVVSTDsKLSAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7CisgICAgICAg
IHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSgpOwogICAgIH0KIAogICAgIG1fc291cmNl
VVJMID0gc2F2ZWRTb3VyY2VVUkw7Ci0gICAgcmV0dXJuIFNjcmlwdFZhbHVlKGV4ZWMtPnZtKCks
IHJldHVyblZhbHVlKTsKKyAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoZXhlYy0+
dm0oKSwgcmV0dXJuVmFsdWUpOwogfQogCi1TY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpl
dmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKSAKK0RlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJj
ZUNvZGUmIHNvdXJjZUNvZGUpIAogewogICAgIHJldHVybiBldmFsdWF0ZUluV29ybGQoc291cmNl
Q29kZSwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwogfQpAQCAtNDU4LDEzICs0NTgsMTMgQEAg
dm9pZCBTY3JpcHRDb250cm9sbGVyOjpjbGVhclNjcmlwdE9iamVjdHMoKQogI2VuZGlmCiB9CiAK
LVNjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdy
YXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdl
c3R1cmUpCitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRl
U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlw
dCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQogewogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdl
c3R1cmVJbmRpY2F0b3IoZm9yY2VVc2VyR2VzdHVyZSA/IERlZmluaXRlbHlQcm9jZXNzaW5nVXNl
ckdlc3R1cmUgOiBQb3NzaWJseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAgICAgU2NyaXB0U291
cmNlQ29kZSBzb3VyY2VDb2RlKHNjcmlwdCwgbV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSk7CiAK
ICAgICBpZiAoIWNhbkV4ZWN1dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBpc1Bh
dXNlZCgpKQotICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCk7CiAKICAgICByZXR1cm4gZXZhbHVhdGVJbldvcmxkKHNv
dXJjZUNvZGUsIHdvcmxkKTsKIH0KQEAgLTUwMCwxNiArNTAwLDE2IEBAIGJvb2wgU2NyaXB0Q29u
dHJvbGxlcjo6Y2FuRXhlY3V0ZVNjcmlwdHMoUmVhc29uRm9yQ2FsbGluZ0NhbkV4ZWN1dGVTY3Jp
cHRzIHJlYXNvCiAgICAgcmV0dXJuIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuYWxsb3dTY3Jp
cHQobV9mcmFtZS5zZXR0aW5ncygpLmlzU2NyaXB0RW5hYmxlZCgpKTsKIH0KIAotU2NyaXB0VmFs
dWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCwg
Ym9vbCBmb3JjZVVzZXJHZXN0dXJlKQorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgU2NyaXB0Q29u
dHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVz
ZXJHZXN0dXJlKQogewogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3Io
Zm9yY2VVc2VyR2VzdHVyZSA/IERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUgOiBQb3Nz
aWJseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAgICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHQoU2Ny
aXB0U291cmNlQ29kZShzY3JpcHQsIG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpKTsKIH0KIAot
U2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRT
b3VyY2VDb2RlJiBzb3VyY2VDb2RlKQorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgU2NyaXB0Q29u
dHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2Rl
KQogewogICAgIGlmICghY2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpIHx8
IGlzUGF1c2VkKCkpCi0gICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOworICAgICAgICByZXR1
cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKTsKIAogICAgIFJlZjxGcmFtZT4gcHJvdGVjdCht
X2ZyYW1lKTsgLy8gU2NyaXB0IGV4ZWN1dGlvbiBjYW4gZGVzdHJveSB0aGUgZnJhbWUsIGFuZCB0
aHVzIHRoZSBTY3JpcHRDb250cm9sbGVyLgogCkBAIC01MzIsNyArNTMyLDcgQEAgYm9vbCBTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYgdXJsLCBTaG91
bGRSZXBsYWNlRG9jdW0KICAgICBjb25zdCBpbnQgamF2YXNjcmlwdFNjaGVtZUxlbmd0aCA9IHNp
emVvZigiamF2YXNjcmlwdDoiKSAtIDE7CiAKICAgICBTdHJpbmcgZGVjb2RlZFVSTCA9IGRlY29k
ZVVSTEVzY2FwZVNlcXVlbmNlcyh1cmwuc3RyaW5nKCkpOwotICAgIFNjcmlwdFZhbHVlIHJlc3Vs
dCA9IGV4ZWN1dGVTY3JpcHQoZGVjb2RlZFVSTC5zdWJzdHJpbmcoamF2YXNjcmlwdFNjaGVtZUxl
bmd0aCkpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHJlc3VsdCA9IGV4ZWN1dGVTY3Jp
cHQoZGVjb2RlZFVSTC5zdWJzdHJpbmcoamF2YXNjcmlwdFNjaGVtZUxlbmd0aCkpOwogCiAgICAg
Ly8gSWYgZXhlY3V0aW5nIHNjcmlwdCBjYXVzZWQgdGhpcyBmcmFtZSB0byBiZSByZW1vdmVkIGZy
b20gdGhlIHBhZ2UsIHdlCiAgICAgLy8gZG9uJ3Qgd2FudCB0byB0cnkgdG8gcmVwbGFjZSBpdHMg
ZG9jdW1lbnQhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmgKaW5kZXggMzY2YjcyNC4uNjdlOTZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuaApAQCAtMzgsNiArMzgsMTAgQEAgT0JKQ19DTEFTUyBKU0Nv
bnRleHQ7CiAKIHN0cnVjdCBOUE9iamVjdDsKIAorbmFtZXNwYWNlIERlcHJlY2F0ZWQgeworY2xh
c3MgU2NyaXB0VmFsdWU7Cit9CisKIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFs
T2JqZWN0OwogICAgIGNsYXNzIEV4ZWNTdGF0ZTsKQEAgLTUzLDcgKzU3LDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgSFRNTFBsdWdJbkVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNz
IFNjcmlwdFNvdXJjZUNvZGU7Ci1jbGFzcyBTY3JpcHRWYWx1ZTsKIGNsYXNzIFNlY3VyaXR5T3Jp
Z2luOwogY2xhc3MgV2lkZ2V0OwogCkBAIC05NCw5ICs5Nyw5IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyB2b2lkIGdldEFsbFdvcmxkcyhWZWN0b3I8UmVmPERPTVdyYXBwZXJXb3JsZD4+Jik7CiAK
LSAgICBTY3JpcHRWYWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsK
LSAgICBTY3JpcHRWYWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29s
IGZvcmNlVXNlckdlc3R1cmUgPSBmYWxzZSk7Ci0gICAgU2NyaXB0VmFsdWUgZXhlY3V0ZVNjcmlw
dEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9y
Y2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBleGVj
dXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKKyAgICBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNl
ckdlc3R1cmUgPSBmYWxzZSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZXhlY3V0ZVNj
cmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wg
Zm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhcmd1
bWVudCBpcyBhIEphdmFTY3JpcHQgVVJMLgogICAgIGJvb2wgZXhlY3V0ZUlmSmF2YVNjcmlwdFVS
TChjb25zdCBVUkwmLCBTaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgc2hvdWxk
UmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMID0gUmVwbGFjZURvY3VtZW50SWZKYXZhU2Ny
aXB0VVJMKTsKQEAgLTEwNSw4ICsxMDgsOCBAQCBwdWJsaWM6CiAgICAgLy8gRGFyd2luIGlzIGFu
IGV4Y2VwdGlvbiB0byB0aGlzIHJ1bGU6IGl0IGlzIE9LIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBm
cm9tIGFueSB0aHJlYWQsIGV2ZW4gcmVlbnRyYW50bHkuCiAgICAgc3RhdGljIHZvaWQgaW5pdGlh
bGl6ZVRocmVhZGluZygpOwogCi0gICAgU2NyaXB0VmFsdWUgZXZhbHVhdGUoY29uc3QgU2NyaXB0
U291cmNlQ29kZSYpOwotICAgIFNjcmlwdFZhbHVlIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3Jp
cHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkJik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUgZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYpOworICAgIERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9N
V3JhcHBlcldvcmxkJik7CiAKICAgICBXVEY6OlRleHRQb3NpdGlvbiBldmVudEhhbmRsZXJQb3Np
dGlvbigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAKaW5kZXggYWRiNTc3OC4uMjNkNGE2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtNDEsOCArNDEsOCBA
QAogI2luY2x1ZGUgIlBhZ2VDb25zb2xlLmgiCiAjaW5jbHVkZSAiU2NyaXB0QnJlYWtwb2ludC5o
IgogI2luY2x1ZGUgIlNjcmlwdERlYnVnTGlzdGVuZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1
ZS5oIgogI2luY2x1ZGUgIlNvdW5kLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUu
aD4KICNpbmNsdWRlIDxkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oPgogI2luY2x1ZGUgPHBh
cnNlci9Tb3VyY2VQcm92aWRlci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CkBAIC0x
MzAsMTQgKzEzMCwxNCBAQCBib29sIFNjcmlwdERlYnVnU2VydmVyOjpjYW5TZXRTY3JpcHRTb3Vy
Y2UoKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0
U2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGJvb2wsIFN0cmluZyos
IFNjcmlwdFZhbHVlKiwgU2NyaXB0T2JqZWN0KikKK2Jvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OnNl
dFNjcmlwdFNvdXJjZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sLCBTdHJpbmcq
LCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSosIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCopCiB7
CiAgICAgLy8gRklYTUUoNDAzMDApOiBpbXBsZW1lbnQgdGhpcy4KICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKIAotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6dXBkYXRlQ2FsbFN0YWNrKFNjcmlwdFZh
bHVlKikKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnVwZGF0ZUNhbGxTdGFjayhEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSopCiB7CiAgICAgLy8gVGhpcyBtZXRob2QgaXMgdXNlZCBmb3IgcmVzdGFy
dCBmcmFtZSBmZWF0dXJlIHRoYXQgaXMgbm90IGltcGxlbWVudGVkIHlldC4KICAgICAvLyBGSVhN
RSg0MDMwMCk6IGltcGxlbWVudCB0aGlzLgpAQCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQgU2NyaXB0
RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRGlkUGF1c2UoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVu
ZXIpCiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAganNDYWxsRnJhbWUgPSBqc1VuZGVmaW5l
ZCgpOwogICAgIH0KLSAgICBsaXN0ZW5lci0+ZGlkUGF1c2Uoc3RhdGUsIFNjcmlwdFZhbHVlKHN0
YXRlLT52bSgpLCBqc0NhbGxGcmFtZSksIFNjcmlwdFZhbHVlKCkpOworICAgIGxpc3RlbmVyLT5k
aWRQYXVzZShzdGF0ZSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoc3RhdGUtPnZtKCksIGpzQ2Fs
bEZyYW1lKSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKSk7CiB9CiAKIHZvaWQgU2NyaXB0RGVi
dWdTZXJ2ZXI6OmRpc3BhdGNoRGlkQ29udGludWUoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVu
ZXIpCkBAIC0zMTksNyArMzE5LDcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y2xlYXJDb21w
aWxlZFNjcmlwdHMoKQogICAgIC8vIEZJWE1FKDg5NjUyKTogaW1wbGVtZW50IHRoaXMuCiB9CiAK
LXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJ1blNjcmlwdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0
IFN0cmluZyYsIFNjcmlwdFZhbHVlKiwgYm9vbCosIFN0cmluZyopCit2b2lkIFNjcmlwdERlYnVn
U2VydmVyOjpydW5TY3JpcHQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmLCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSosIGJvb2wqLCBTdHJpbmcqKQogewogICAgIC8vIEZJWE1FKDg5NjUy
KTogaW1wbGVtZW50IHRoaXMuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0RGVidWdTZXJ2ZXIuaAppbmRleCAyZmU5YWRhLi5hNzAxOGM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgKQEAgLTM3LDYgKzM3LDcgQEAK
ICNpbmNsdWRlICJTY3JpcHREZWJ1Z0xpc3RlbmVyLmgiCiAjaW5jbHVkZSAiU291cmNlSUQuaCIK
ICNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgog
I2luY2x1ZGUgPGRlYnVnZ2VyL0RlYnVnZ2VyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtNTAsMTIgKzUxLDkgQEAgY2xhc3MgRGVidWdn
ZXJDYWxsRnJhbWU7CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsKIGNsYXNzIEV4ZWNTdGF0ZTsKIH0K
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTY3JpcHREZWJ1Z0xpc3RlbmVyOwotY2xh
c3MgU2NyaXB0T2JqZWN0OwotY2xhc3MgU2NyaXB0VmFsdWU7Ci0KIGNsYXNzIFNjcmlwdERlYnVn
U2VydmVyIDogcHVibGljIEpTQzo6RGVidWdnZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFNjcmlwdERlYnVnU2VydmVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBA
IC02NCw4ICs2Miw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyQnJlYWtwb2ludHMoKTsKIAog
ICAgIGJvb2wgY2FuU2V0U2NyaXB0U291cmNlKCk7Ci0gICAgYm9vbCBzZXRTY3JpcHRTb3VyY2Uo
Y29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBib29sIHBy
ZXZpZXcsIFN0cmluZyogZXJyb3IsIFNjcmlwdFZhbHVlKiBuZXdDYWxsRnJhbWVzLCBTY3JpcHRP
YmplY3QqIHJlc3VsdCk7Ci0gICAgdm9pZCB1cGRhdGVDYWxsU3RhY2soU2NyaXB0VmFsdWUqIGNh
bGxGcmFtZSk7CisgICAgYm9vbCBzZXRTY3JpcHRTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2VJ
RCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBib29sIHByZXZpZXcsIFN0cmluZyogZXJyb3Is
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKiBuZXdDYWxsRnJhbWVzLCBEZXByZWNhdGVkOjpTY3Jp
cHRPYmplY3QqIHJlc3VsdCk7CisgICAgdm9pZCB1cGRhdGVDYWxsU3RhY2soRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUqIGNhbGxGcmFtZSk7CiAKICAgICBib29sIGNhdXNlc1JlY29tcGlsYXRpb24o
KSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBzdXBwb3J0c1NlcGFyYXRlU2NyaXB0Q29tcGls
YXRpb25BbmRFeGVjdXRpb24oKSB7IHJldHVybiBmYWxzZTsgfQpAQCAtODIsNyArODAsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGNvbXBpbGVTY3JpcHQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBT
dHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBTdHJpbmcqIHNjcmlw
dElELCBTdHJpbmcqIGV4Y2VwdGlvbk1lc3NhZ2UpOwogICAgIHZvaWQgY2xlYXJDb21waWxlZFNj
cmlwdHMoKTsKLSAgICB2b2lkIHJ1blNjcmlwdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0SUQsIFNjcmlwdFZhbHVlKiByZXN1bHQsIGJvb2wqIHdhc1Rocm93biwgU3RyaW5n
KiBleGNlcHRpb25NZXNzYWdlKTsKKyAgICB2b2lkIHJ1blNjcmlwdChKU0M6OkV4ZWNTdGF0ZSos
IGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKiByZXN1bHQs
IGJvb2wqIHdhc1Rocm93biwgU3RyaW5nKiBleGNlcHRpb25NZXNzYWdlKTsKIAogICAgIGNsYXNz
IFRhc2sgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuY3BwCnNpbWlsYXJpdHkgaW5kZXggODYl
CnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHAK
cmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5j
cHAKaW5kZXggMTQyZTcyMy4uYThiNWE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRHbG9iYWxPYmplY3QuY3BwCkBAIC0yOSwxMCArMjksMTAgQEAKICAqLwogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisjaW5jbHVkZSAiU2Ny
aXB0R2xvYmFsT2JqZWN0LmgiCiAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLQorI2luY2x1
ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+
CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpAQCAtNDMsMTggKzQzLDYgQEAgdXNpbmcgbmFtZXNw
YWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TY3JpcHRPYmplY3Q6OlNjcmlwdE9i
amVjdChKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIEpTT2JqZWN0KiBvYmplY3QpCi0gICAg
OiBTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZS0+dm0oKSwgb2JqZWN0KQotICAgICwgbV9zY3JpcHRT
dGF0ZShzY3JpcHRTdGF0ZSkKLXsKLX0KLQotU2NyaXB0T2JqZWN0OjpTY3JpcHRPYmplY3QoSlND
OjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcHRWYWx1ZSYgc2NyaXB0VmFsdWUp
Ci0gICAgOiBTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZS0+dm0oKSwgc2NyaXB0VmFsdWUuanNWYWx1
ZSgpKQotICAgICwgbV9zY3JpcHRTdGF0ZShzY3JpcHRTdGF0ZSkKLXsKLX0KLQogc3RhdGljIGJv
b2wgaGFuZGxlRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSkKIHsKICAgICBp
ZiAoIXNjcmlwdFN0YXRlLT5oYWRFeGNlcHRpb24oKSkKQEAgLTY0LDcgKzUyLDcgQEAgc3RhdGlj
IGJvb2wgaGFuZGxlRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSkKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQoSlNDOjpFeGVj
U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBTY3JpcHRPYmplY3Qm
IHZhbHVlKQorYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OnNldChKU0M6OkV4ZWNTdGF0ZSogc2Ny
aXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVj
dCYgdmFsdWUpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soc2NyaXB0U3RhdGUpOwogICAgIHNj
cmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnB1dERpcmVjdChzY3JpcHRTdGF0ZS0+
dm0oKSwgSWRlbnRpZmllcihzY3JpcHRTdGF0ZSwgbmFtZSksIHZhbHVlLmpzT2JqZWN0KCkpOwpA
QCAtODEsNyArNjksNyBAQCBib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KEpTQzo6RXhlY1N0
YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgSW5zcAogfQogI2VuZGlmIC8vIEVO
QUJMRShJTlNQRUNUT1IpCiAKLWJvb2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpnZXQoSlNDOjpFeGVj
U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBTY3JpcHRPYmplY3QmIHZhbHVl
KQorYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OmdldChKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3Rh
dGUsIGNvbnN0IGNoYXIqIG5hbWUsIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgdmFsdWUpCiB7
CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soc2NyaXB0U3RhdGUpOwogICAgIEpTVmFsdWUganNWYWx1
ZSA9IHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdldChzY3JpcHRTdGF0ZSwg
SWRlbnRpZmllcihzY3JpcHRTdGF0ZSwgbmFtZSkpOwpAQCAtOTEsNyArNzksNyBAQCBib29sIFNj
cmlwdEdsb2JhbE9iamVjdDo6Z2V0KEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3Qg
Y2hhciogbmFtZSwgU2NyaQogICAgIGlmICghanNWYWx1ZS5pc09iamVjdCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICB2YWx1ZSA9IFNjcmlwdE9iamVjdChzY3JpcHRTdGF0ZSwgYXNP
YmplY3QoanNWYWx1ZSkpOworICAgIHZhbHVlID0gRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KHNj
cmlwdFN0YXRlLCBhc09iamVjdChqc1ZhbHVlKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5oCnNpbWlsYXJpdHkg
aW5kZXggNjQlCmNvcHkgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0
YWNrLmgKY29weSB0byBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmpl
Y3QuaAppbmRleCBlMGQ3ZmQ1Li5iZTFlYTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0R2xvYmFsT2JqZWN0LmgKQEAgLTEsMTAgKzEsMTAgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKGMpIDIwMDgsIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIAor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCiAgKiBtZXQ6Ci0gKiAKKyAqCiAgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAogICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgogICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpAQCAtMTQsNyArMTQsNyBAQAogICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwogICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KICAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKiAKKyAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiAgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAogICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCkBAIC0yOCw0NSArMjgsNDAgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
I2lmbmRlZiBTY3JpcHRDYWxsU3RhY2tfaAotI2RlZmluZSBTY3JpcHRDYWxsU3RhY2tfaAorI2lm
bmRlZiBTY3JpcHRHbG9iYWxPYmplY3RfaAorI2RlZmluZSBTY3JpcHRHbG9iYWxPYmplY3RfaAog
Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5o
IgotI2VuZGlmCituYW1lc3BhY2UgRGVwcmVjYXRlZCB7CitjbGFzcyBTY3JpcHRPYmplY3Q7Cit9
CiAKLSNpbmNsdWRlICJTY3JpcHRDYWxsRnJhbWUuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
bmFtZXNwYWNlIEpTQyB7CitjbGFzcyBFeGVjU3RhdGU7Cit9CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgSW5zcGVjdG9yQXJyYXk7CitjbGFzcyBJbmplY3RlZFNjcmlwdEhvc3Q7Citj
bGFzcyBJbnNwZWN0b3JGcm9udGVuZEhvc3Q7CitjbGFzcyBNZWRpYUNvbnRyb2xzSG9zdDsKIAot
Y2xhc3MgU2NyaXB0Q2FsbFN0YWNrIDogcHVibGljIFJlZkNvdW50ZWQ8U2NyaXB0Q2FsbFN0YWNr
PiB7CitjbGFzcyBTY3JpcHRHbG9iYWxPYmplY3QgewogcHVibGljOgotICAgIHN0YXRpYyBjb25z
dCBzaXplX3QgbWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSA9IDIwMDsKLSAgICAKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNyZWF0ZShWZWN0b3I8U2NyaXB0Q2FsbEZy
YW1lPiYpOwotCi0gICAgflNjcmlwdENhbGxTdGFjaygpOwotCi0gICAgY29uc3QgU2NyaXB0Q2Fs
bEZyYW1lICZhdChzaXplX3QpIGNvbnN0OwotICAgIHNpemVfdCBzaXplKCkgY29uc3Q7Ci0KLSAg
ICBib29sIGlzRXF1YWwoU2NyaXB0Q2FsbFN0YWNrKikgY29uc3Q7Ci0KKyAgICBzdGF0aWMgYm9v
bCBzZXQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBEZXByZWNhdGVk
OjpTY3JpcHRPYmplY3QmKTsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIFBhc3NSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDYWxsRnJhbWU+PiBidWls
ZEluc3BlY3RvckFycmF5KCkgY29uc3Q7CisgICAgc3RhdGljIGJvb2wgc2V0KEpTQzo6RXhlY1N0
YXRlKiwgY29uc3QgY2hhciogbmFtZSwgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Kik7CisgICAgc3Rh
dGljIGJvb2wgc2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgSW5qZWN0ZWRT
Y3JpcHRIb3N0Kik7CisjZW5kaWYKKyNpZiBFTkFCTEUoTUVESUFfQ09OVFJPTFNfU0NSSVBUKQor
ICAgIHN0YXRpYyBib29sIHNldChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIE1l
ZGlhQ29udHJvbHNIb3N0Kik7CiAjZW5kaWYKIAorICAgIHN0YXRpYyBib29sIGdldChKU0M6OkV4
ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYpOwor
ICAgIHN0YXRpYyBib29sIHJlbW92ZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUp
OwogcHJpdmF0ZToKLSAgICBTY3JpcHRDYWxsU3RhY2soVmVjdG9yPFNjcmlwdENhbGxGcmFtZT4m
KTsKLQotICAgIFZlY3RvcjxTY3JpcHRDYWxsRnJhbWU+IG1fZnJhbWVzOworICAgIFNjcmlwdEds
b2JhbE9iamVjdCgpIHsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYg
Ly8gU2NyaXB0Q2FsbFN0YWNrX2gKKyNlbmRpZiAvLyBTY3JpcHRHbG9iYWxPYmplY3RfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggM2ZiZTY3MS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRPYmplY3QuaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlz
dHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVm
IFNjcmlwdE9iamVjdF9oCi0jZGVmaW5lIFNjcmlwdE9iamVjdF9oCi0KLSNpbmNsdWRlICJTY3Jp
cHRTdGF0ZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCi0KLSNpbmNsdWRlIDxoZWFwL1N0
cm9uZy5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3QuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi0gICAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OwotCi0gICAgY2xhc3MgU2Ny
aXB0T2JqZWN0IDogcHVibGljIFNjcmlwdFZhbHVlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFNj
cmlwdE9iamVjdChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqKTsKLSAgICAgICAgU2Ny
aXB0T2JqZWN0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU2NyaXB0VmFsdWUmKTsKLSAgICAgICAg
U2NyaXB0T2JqZWN0KCkgOiBtX3NjcmlwdFN0YXRlKDApIHsgfQotICAgICAgICBKU0M6OkpTT2Jq
ZWN0KiBqc09iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGFzT2JqZWN0KGpzVmFsdWUoKSk7IH0KLSAg
ICAgICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zY3Jp
cHRTdGF0ZTsgfQotCi0gICAgcHJvdGVjdGVkOgotICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogbV9z
Y3JpcHRTdGF0ZTsKLSAgICB9OwotCi0gICAgY2xhc3MgU2NyaXB0R2xvYmFsT2JqZWN0IHsKLSAg
ICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBib29sIHNldChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0
IGNoYXIqIG5hbWUsIGNvbnN0IFNjcmlwdE9iamVjdCYpOwotI2lmIEVOQUJMRShJTlNQRUNUT1Ip
Ci0gICAgICAgIHN0YXRpYyBib29sIHNldChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5h
bWUsIEluc3BlY3RvckZyb250ZW5kSG9zdCopOwotI2VuZGlmCi0gICAgICAgIHN0YXRpYyBib29s
IGdldChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIFNjcmlwdE9iamVjdCYpOwot
ICAgICAgICBzdGF0aWMgYm9vbCByZW1vdmUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiBu
YW1lKTsKLSAgICBwcml2YXRlOgotICAgICAgICBTY3JpcHRHbG9iYWxPYmplY3QoKSB7IH0KLSAg
ICB9OwotCi19Ci0KLSNlbmRpZiAvLyBTY3JpcHRPYmplY3RfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmNwcAppbmRleCA0NTA1MGFlLi4yMTI0NDkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmNwcApAQCAtMzAsOCAr
MzAsOCBAQAogCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZS5oIgogCi0jaW5jbHVkZSAiSW5zcGVj
dG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSA8aW5zcGVj
dG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHByb2ZpbGVyL1Byb2ZpbGUuaD4KICNp
bmNsdWRlIDxwcm9maWxlci9Qcm9maWxlTm9kZS5oPgogCkBAIC03NCwxNiArNzQsMTYgQEAgZG91
YmxlIFNjcmlwdFByb2ZpbGU6OmlkbGVUaW1lKCkgY29uc3QKIH0KIAogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCi1zdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2Zp
bGVOb2RlPiBidWlsZEluc3BlY3Rvck9iamVjdEZvcihjb25zdCBKU0M6OlByb2ZpbGVOb2RlKiBu
b2RlKQorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UHJvZmlsZXI6
OkNQVVByb2ZpbGVOb2RlPiBidWlsZEluc3BlY3Rvck9iamVjdEZvcihjb25zdCBKU0M6OlByb2Zp
bGVOb2RlKiBub2RlKQogewogICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxKU0M6OlByb2ZpbGVO
b2RlPj4gUHJvZmlsZU5vZGVzTGlzdDsKICAgICBjb25zdCBQcm9maWxlTm9kZXNMaXN0JiBub2Rl
Q2hpbGRyZW4gPSBub2RlLT5jaGlsZHJlbigpOwogICAgIFByb2ZpbGVOb2Rlc0xpc3Q6OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IG5vZGVDaGlsZHJlbi5lbmQoKTsKLSAgICBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+PiBjaGlsZHJl
biA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGVO
b2RlPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZT4+IGNoaWxk
cmVuID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlPjo6Y3JlYXRlKCk7CiAgICAgZm9yIChQcm9maWxl
Tm9kZXNMaXN0Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gbm9kZUNoaWxkcmVuLmJlZ2luKCk7IGl0
ZXIgIT0gZW5kOyArK2l0ZXIpCiAgICAgICAgIGNoaWxkcmVuLT5hZGRJdGVtKGJ1aWxkSW5zcGVj
dG9yT2JqZWN0Rm9yKGl0ZXItPmdldCgpKSk7CiAKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlBy
b2ZpbGVyOjpDUFVQcm9maWxlTm9kZT4gcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpD
UFVQcm9maWxlTm9kZTo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlPiByZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRGdW5j
dGlvbk5hbWUobm9kZS0+ZnVuY3Rpb25OYW1lKCkpCiAgICAgICAgIC5zZXRVcmwobm9kZS0+dXJs
KCkpCiAgICAgICAgIC5zZXRMaW5lTnVtYmVyKG5vZGUtPmxpbmVOdW1iZXIoKSkKQEAgLTk2LDEy
ICs5NiwxMiBAQCBzdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVBy
b2ZpbGVOb2RlPiBidWlsZEluc3BlY3Rvck9iamVjdEZvcgogICAgIHJldHVybiByZXN1bHQucmVs
ZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmls
ZU5vZGU+IFNjcmlwdFByb2ZpbGU6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9ySGVhZCgpIGNvbnN0
CitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxl
Tm9kZT4gU2NyaXB0UHJvZmlsZTo6YnVpbGRJbnNwZWN0b3JPYmplY3RGb3JIZWFkKCkgY29uc3QK
IHsKICAgICByZXR1cm4gYnVpbGRJbnNwZWN0b3JPYmplY3RGb3IobV9wcm9maWxlLT5oZWFkKCkp
OwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+
IFNjcmlwdFByb2ZpbGU6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9yQm90dG9tVXBIZWFkKCkgY29u
c3QKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2Zp
bGVOb2RlPiBTY3JpcHRQcm9maWxlOjpidWlsZEluc3BlY3Rvck9iamVjdEZvckJvdHRvbVVwSGVh
ZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRQcm9maWxlLmgKaW5kZXggODA5NWZlOC4uM2IyNDM1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUuaApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0jaW5jbHVkZSAiSW5z
cGVjdG9yVHlwZUJ1aWxkZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMu
aCIKICNlbmRpZgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQ0LDggKzQ0LDYgQEAgY2xhc3MgUHJv
ZmlsZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbnNwZWN0b3JPYmplY3Q7Ci0K
IGNsYXNzIFNjcmlwdFByb2ZpbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxTY3JpcHRQcm9maWxlPiB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2NyaXB0UHJvZmlsZT4gY3JlYXRlKFBh
c3NSZWZQdHI8SlNDOjpQcm9maWxlPiBwcm9maWxlKTsKQEAgLTU3LDggKzU1LDggQEAgcHVibGlj
OgogICAgIGRvdWJsZSBpZGxlVGltZSgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
LSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+IGJ1
aWxkSW5zcGVjdG9yT2JqZWN0Rm9ySGVhZCgpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8VHlwZUJ1
aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZT4gYnVpbGRJbnNwZWN0b3JPYmplY3RGb3JC
b3R0b21VcEhlYWQoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZT4gYnVpbGRJbnNwZWN0b3JPYmplY3RGb3JIZWFk
KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9maWxl
cjo6Q1BVUHJvZmlsZU5vZGU+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9yQm90dG9tVXBIZWFkKCkg
Y29uc3Q7CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdFByb2ZpbGVyLmNwcAppbmRleCBmZGUyN2QwLi5mYzkzOThjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuY3BwCkBAIC0zNSw4ICszNSw5IEBA
CiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNs
dWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0
U3RhdGUuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3QuaD4KKyNpbmNsdWRlIDxi
aW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHByb2ZpbGVyL0xlZ2FjeVByb2ZpbGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIApAQCAtNDcsMTIgKzQ4LDEyIEBAIHZvaWQg
U2NyaXB0UHJvZmlsZXI6OmNvbGxlY3RHYXJiYWdlKCkKICAgICBnY0NvbnRyb2xsZXIoKS5nYXJi
YWdlQ29sbGVjdFNvb24oKTsKIH0KIAotU2NyaXB0T2JqZWN0IFNjcmlwdFByb2ZpbGVyOjpvYmpl
Y3RCeUhlYXBPYmplY3RJZCh1bnNpZ25lZCkKK0RlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBTY3Jp
cHRQcm9maWxlcjo6b2JqZWN0QnlIZWFwT2JqZWN0SWQodW5zaWduZWQpCiB7Ci0gICAgcmV0dXJu
IFNjcmlwdE9iamVjdCgpOworICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QoKTsK
IH0KIAotdW5zaWduZWQgU2NyaXB0UHJvZmlsZXI6OmdldEhlYXBPYmplY3RJZChjb25zdCBTY3Jp
cHRWYWx1ZSYpCit1bnNpZ25lZCBTY3JpcHRQcm9maWxlcjo6Z2V0SGVhcE9iamVjdElkKGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJikKIHsKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5oCmluZGV4IDcyN2M2ZWUuLmMyZmRk
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuaApAQCAt
MjgsMjAgKzI4LDI0IEBACiAjZGVmaW5lIFNjcmlwdFByb2ZpbGVyX2gKIAogI2lmIEVOQUJMRShK
QVZBU0NSSVBUX0RFQlVHR0VSKQorCiAjaW5jbHVkZSAiU2NyaXB0SGVhcFNuYXBzaG90LmgiCiAj
aW5jbHVkZSAiU2NyaXB0UHJvZmlsZS5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCituYW1l
c3BhY2UgRGVwcmVjYXRlZCB7CitjbGFzcyBTY3JpcHRPYmplY3Q7CitjbGFzcyBTY3JpcHRWYWx1
ZTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFeHRlcm5hbEFycmF5VmlzaXRv
cjsKIGNsYXNzIEV4dGVybmFsU3RyaW5nVmlzaXRvcjsKIGNsYXNzIFdyYXBwZWROb2RlVmlzaXRv
cjsKIGNsYXNzIFBhZ2U7Ci1jbGFzcyBTY3JpcHRPYmplY3Q7Ci1jbGFzcyBTY3JpcHRWYWx1ZTsK
IGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwogCiBjbGFzcyBTY3JpcHRQcm9maWxlciB7CkBAIC01
Nyw4ICs2MSw4IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgc3RhdGljIHZvaWQgY29sbGVjdEdh
cmJhZ2UoKTsKLSAgICBzdGF0aWMgU2NyaXB0T2JqZWN0IG9iamVjdEJ5SGVhcE9iamVjdElkKHVu
c2lnbmVkIGlkKTsKLSAgICBzdGF0aWMgdW5zaWduZWQgZ2V0SGVhcE9iamVjdElkKGNvbnN0IFNj
cmlwdFZhbHVlJik7CisgICAgc3RhdGljIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBvYmplY3RC
eUhlYXBPYmplY3RJZCh1bnNpZ25lZCBpZCk7CisgICAgc3RhdGljIHVuc2lnbmVkIGdldEhlYXBP
YmplY3RJZChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYpOwogICAgIHN0YXRpYyB2b2lk
IHN0YXJ0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAgICAgc3RhdGlj
IHZvaWQgc3RhcnRGb3JQYWdlKFBhZ2UqLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKICAgICBzdGF0
aWMgdm9pZCBzdGFydEZvcldvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlKiwgY29u
c3QgU3RyaW5nJiB0aXRsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUu
aAppbmRleCAzNDlkOTRhLi43MGQxNGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdFN0YXRlLmgKQEAgLTEsMTEgKzEsMTEgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDgs
IDIwMTEgR29vZ2xlIEluYy4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKKyAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKICAqIG1ldDoKLSAqIAorICoKICAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CiAgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCiAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCkBAIC0xNSw3ICsxNSw3IEBACiAgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCiAgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQogICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqIAorICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKICAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCiAgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKQEAgLTM0LDcgKzM0LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBFeGVjU3Rh
dGU7Ci1jbGFzcyBKU0dsb2JhbE9iamVjdDsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKaW5kZXggNmY4NmM4Yi4uMTRhZjQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC00MCw3ICs0MCw2IEBACiAj
aW5jbHVkZSAiSlNNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIkpTTmF2aWdhdG9yLmgiCiAjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNp
bmNsdWRlIDxsaW1pdHM+CkBAIC0yMDAyLDEwICsyMDAxLDEwIEBAIEpTVmFsdWUgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iCiB9CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotU2NyaXB0VmFsdWUgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZUZvckluc3BlY3RvcihKU0M6OkV4ZWNTdGF0ZSogc2Ny
aXB0U3RhdGUpCitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmRlc2VyaWFsaXplRm9ySW5zcGVjdG9yKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSkKIHsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gZGVzZXJpYWxpemUoc2NyaXB0U3RhdGUsIHNjcmlwdFN0YXRl
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIDApOwotICAgIHJldHVybiBTY3JpcHRWYWx1ZShzY3Jp
cHRTdGF0ZS0+dm0oKSwgdmFsdWUpOworICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZShzY3JpcHRTdGF0ZS0+dm0oKSwgdmFsdWUpOwogfQogI2VuZGlmCiAKQEAgLTIwNDksNiArMjA0
OCwyMyBAQCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpib29sZWFuVmFsdWUoYm9vbCB2YWx1ZQogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U2VyaWFsaXplZFNjcmlwdFZhbHVlKGJ1ZmZlcikpOwogfQogCitQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpzZXJpYWxpemUoY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUs
IFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQoreworICAgIHJldHVybiBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzY3JpcHRTdGF0ZSwgdmFsdWUuanNWYWx1ZSgp
LCBudWxscHRyLCBudWxscHRyLCB0aHJvd0V4Y2VwdGlvbnMpOworfQorCitQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpzZXJpYWxpemUoY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0
U3RhdGUsIE1lc3NhZ2VQb3J0QXJyYXkqIG1lc3NhZ2VQb3J0cywgQXJyYXlCdWZmZXJBcnJheSog
YXJyYXlCdWZmZXJzLCBib29sJiBkaWRUaHJvdykKK3sKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZShzY3JpcHRTdGF0ZSwgdmFsdWUuanNWYWx1ZSgpLCBtZXNzYWdlUG9ydHMsIGFycmF5QnVmZmVy
cyk7CisgICAgZGlkVGhyb3cgPSBzY3JpcHRTdGF0ZS0+aGFkRXhjZXB0aW9uKCk7CisgICAgcmV0
dXJuIHNlcmlhbGl6ZWRWYWx1ZS5yZWxlYXNlKCk7Cit9CisKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoSlNDOjpFeGVjU3RhdGUqIHNj
cmlwdFN0YXRlLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlLCBTZXJpYWxpemF0aW9uRXJy
b3JNb2RlIHRocm93RXhjZXB0aW9ucykKK3sKKyAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUoc2NyaXB0U3RhdGUtPnZtKCksIHZhbHVlLT5kZXNlcmlhbGl6ZShzY3JpcHRTdGF0ZSwg
c2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgMCwgdGhyb3dFeGNlcHRpb25zKSk7
Cit9CisKIHZvaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjptYXliZVRocm93RXhjZXB0aW9uSWZT
ZXJpYWxpemF0aW9uRmFpbGVkKEV4ZWNTdGF0ZSogZXhlYywgU2VyaWFsaXphdGlvblJldHVybkNv
ZGUgY29kZSkKIHsKICAgICBpZiAoY29kZSA9PSBTdWNjZXNzZnVsbHlDb21wbGV0ZWQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmlu
ZGV4IDY5ZDI1ZjYuLjg1OTgxYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjZGVmaW5lIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZV9oCiAKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgorI2luY2x1
ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8aGVhcC9TdHJvbmcuaD4KICNp
bmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0NKU1Zh
bHVlLmg+CkBAIC01Nyw3ICs1OCw2IEBAIGVudW0gU2VyaWFsaXphdGlvblJldHVybkNvZGUgewog
ICAgIAogZW51bSBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHsgTm9uVGhyb3dpbmcsIFRocm93aW5n
IH07CiAKLWNsYXNzIFNjcmlwdFZhbHVlOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBT
ZXJpYWxpemVkU2NyaXB0VmFsdWUgOgpAQCAtNjcsOCArNjcsNyBAQCBjbGFzcyBTZXJpYWxpemVk
U2NyaXB0VmFsdWUgOgogICAgIHB1YmxpYyBSZWZDb3VudGVkPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gewogI2VuZGlmCiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIE1lc3NhZ2VQ
b3J0QXJyYXkqLCBBcnJheUJ1ZmZlckFycmF5KiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dp
bmcpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRl
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBNZXNzYWdlUG9ydEFycmF5KiwgQXJyYXlC
dWZmZXJBcnJheSosIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDb250ZXh0UmVm
LCBKU1ZhbHVlUmVmLCBNZXNzYWdlUG9ydEFycmF5KiwgQXJyYXlCdWZmZXJBcnJheSosIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBjcmVhdGUoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmLCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24pOwogCkBAIC04Myw2ICs4MiwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB1bmRlZmluZWRWYWx1ZSgpOwogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gYm9vbGVhblZhbHVlKGJvb2wgdmFsdWUp
OwogCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxp
emUoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBKU0M6OkV4ZWNTdGF0ZSosIFNlcmlh
bGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemUoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUmLCBKU0M6OkV4ZWNTdGF0ZSosIE1lc3NhZ2VQb3J0QXJyYXkqLCBBcnJheUJ1ZmZlckFycmF5
KiwgYm9vbCYpOworICAgIHN0YXRpYyBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6
ZShKU0M6OkV4ZWNTdGF0ZSosIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIFNlcmlhbGl6YXRpb25F
cnJvck1vZGUgPSBUaHJvd2luZyk7CisKICAgICBzdGF0aWMgdWludDMyX3Qgd2lyZUZvcm1hdFZl
cnNpb24oKTsKIAogICAgIFN0cmluZyB0b1N0cmluZygpOwpAQCAtOTIsNyArOTUsNyBAQCBwdWJs
aWM6CiAgICAgSlNWYWx1ZVJlZiBkZXNlcmlhbGl6ZShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbik7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIFNjcmlwdFZhbHVlIGRl
c2VyaWFsaXplRm9ySW5zcGVjdG9yKEpTQzo6RXhlY1N0YXRlKik7CisgICAgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUgZGVzZXJpYWxpemVGb3JJbnNwZWN0b3IoSlNDOjpFeGVjU3RhdGUqKTsKICNl
bmRpZgogCiAgICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJT
Y3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNj
cmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDI5MGIxZjEuLjVkZTYwNGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCkBA
IC0zMSwxMiArMzEsMTIgQEAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJK
U0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29k
ZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50
RGF0YS5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2Vy
T2JqZWN0UHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5oIgogI2lu
Y2x1ZGUgIldvcmtlclRocmVhZC5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+
CiAjaW5jbHVkZSA8aGVhcC9TdHJvbmdJbmxpbmVzLmg+CiAjaW5jbHVkZSA8aW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0NvbXBsZXRpb24uaD4KQEAgLTExMyw3
ICsxMTMsNyBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNj
cmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCiAgICAgaWYgKGlzRXhlY3V0aW9uRm9yYmlkZGVu
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNjcmlwdFZhbHVlIGV4Y2VwdGlvbjsKKyAgICBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBleGNlcHRpb247CiAgICAgZXZhbHVhdGUoc291cmNlQ29k
ZSwgJmV4Y2VwdGlvbik7CiAgICAgaWYgKGV4Y2VwdGlvbi5qc1ZhbHVlKCkpIHsKICAgICAgICAg
SlNMb2NrSG9sZGVyIGxvY2sodm0oKSk7CkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBXb3JrZXJT
Y3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VD
b2RlKQogICAgIH0KIH0KIAotdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShj
b25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBTY3JpcHRWYWx1ZSogZXhjZXB0aW9u
KQordm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3Vy
Y2VDb2RlJiBzb3VyY2VDb2RlLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSogZXhjZXB0aW9uKQog
ewogICAgIGlmIChpc0V4ZWN1dGlvbkZvcmJpZGRlbigpKQogICAgICAgICByZXR1cm47CkBAIC0x
NDUsMTMgKzE0NSwxMyBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNv
bnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIFNjcmlwdAogICAgICAgICBpbnQgY29s
dW1uTnVtYmVyID0gMDsKICAgICAgICAgU3RyaW5nIHNvdXJjZVVSTCA9IHNvdXJjZUNvZGUudXJs
KCkuc3RyaW5nKCk7CiAgICAgICAgIGlmIChtX3dvcmtlckdsb2JhbFNjb3BlLT5zYW5pdGl6ZVNj
cmlwdEVycm9yKGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VV
UkwsIHNvdXJjZUNvZGUuY2FjaGVkU2NyaXB0KCkpKQotICAgICAgICAgICAgKmV4Y2VwdGlvbiA9
IFNjcmlwdFZhbHVlKCptX3ZtLCBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0
ZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZS5pbXBsKCkpKSk7CisgICAgICAgICAgICAqZXhjZXB0
aW9uID0gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKm1fdm0sIGV4ZWMtPnZtKCkudGhyb3dFeGNl
cHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgZXJyb3JNZXNzYWdlLmltcGwoKSkpKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IFNjcmlwdFZhbHVlKCptX3ZtLCBl
dmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICAgICAgICAgICpleGNlcHRpb24gPSBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSgqbV92bSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAgICAgfQogfQogCi12
b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNldEV4Y2VwdGlvbihjb25zdCBTY3JpcHRWYWx1
ZSYgZXhjZXB0aW9uKQordm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpzZXRFeGNlcHRpb24o
Y29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGV4Y2VwdGlvbikKIHsKICAgICBtX3dvcmtl
ckdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsRXhlYygpLT52bSgpLnRocm93RXhjZXB0aW9uKG1f
d29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxFeGVjKCksIGV4Y2VwdGlvbi5qc1ZhbHVl
KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2Ny
aXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0
Q29udHJvbGxlci5oCmluZGV4IDhiYjdmNDkuLjAyNWMzN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKQEAgLTMzLDE1ICsz
MywxOCBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGlu
Zy5oPgogCituYW1lc3BhY2UgRGVwcmVjYXRlZCB7CitjbGFzcyBTY3JpcHRWYWx1ZTsKK30KKwog
bmFtZXNwYWNlIEpTQyB7Ci0gICAgY2xhc3MgVk07CitjbGFzcyBWTTsKIH0KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgY2xhc3MgSlNXb3JrZXJHbG9iYWxTY29wZTsKICAgICBjbGFzcyBT
Y3JpcHRTb3VyY2VDb2RlOwotICAgIGNsYXNzIFNjcmlwdFZhbHVlOwogICAgIGNsYXNzIFdvcmtl
ckdsb2JhbFNjb3BlOwogCiAgICAgY2xhc3MgV29ya2VyU2NyaXB0Q29udHJvbGxlciB7CkBAIC01
Nyw5ICs2MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgfQogCiAgICAgICAgIHZv
aWQgZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYpOwotICAgICAgICB2b2lkIGV2YWx1
YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBTY3JpcHRWYWx1ZSogZXhjZXB0aW9uKTsKKyAg
ICAgICAgdm9pZCBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUqIGV4Y2VwdGlvbik7CiAKLSAgICAgICAgdm9pZCBzZXRFeGNlcHRpb24oY29u
c3QgU2NyaXB0VmFsdWUmKTsKKyAgICAgICAgdm9pZCBzZXRFeGNlcHRpb24oY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmKTsKIAogICAgICAgICAvLyBBc3luYyByZXF1ZXN0IHRvIHRlcm1p
bmF0ZSBhIEpTIHJ1biBleGVjdXRpb24uIEV2ZW50dWFsbHkgY2F1c2VzIHRlcm1pbmF0aW9uCiAg
ICAgICAgIC8vIGV4Y2VwdGlvbiByYWlzZWQgZHVyaW5nIEpTIGV4ZWN1dGlvbiwgaWYgdGhlIHdv
cmtlciB0aHJlYWQgaGFwcGVucyB0byBydW4gSlMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGFmMDQ0MmEuLmE2OGY3ZGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCkBAIC0zMjM0LDcgKzMyMzQsNyBAQCBteSAlbmF0aXZlVHlwZSA9ICgKICAgICAiU2Vy
aWFsaXplZFNjcmlwdFZhbHVlIiA9PiAiUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4iLAog
ICAgICJEYXRlIiA9PiAiZG91YmxlIiwKICAgICAiRGljdGlvbmFyeSIgPT4gIkRpY3Rpb25hcnki
LAotICAgICJhbnkiID0+ICJTY3JpcHRWYWx1ZSIsCisgICAgImFueSIgPT4gIkRlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlIiwKICAgICAiYm9vbGVhbiIgPT4gImJvb2wiLAogICAgICJkb3VibGUiID0+
ICJkb3VibGUiLAogICAgICJmbG9hdCIgPT4gImZsb2F0IiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggOTMxZGIy
Ni4uNzc2NGM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTE2NTEsNyArMTY1MSw3IEBAIHZvaWQgc2V0SlNU
ZXN0T2JqQW55QXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsCiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPih0aGlzT2JqZWN0KTsKICAgICBUZXN0T2JqJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwotICAgIFNjcmlwdFZhbHVlIG5hdGl2ZVZhbHVlKGV4
ZWMtPnZtKCksIHZhbHVlKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBuYXRpdmVWYWx1
ZShleGVjLT52bSgpLCB2YWx1ZSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm47CiAgICAgaW1wbC5zZXRBbnlBdHRyaWJ1dGUobmF0aXZlVmFsdWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9DdXN0b21FdmVudC5jcHAKaW5kZXggYjBmYmE5OS4uZDVlZjBiZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ3VzdG9tRXZlbnQuY3BwCkBAIC00OCw3ICs0OCw3IEBAIEN1c3RvbUV2ZW50Ojp+Q3Vz
dG9tRXZlbnQoKQogewogfQogCi12b2lkIEN1c3RvbUV2ZW50Ojppbml0Q3VzdG9tRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBj
b25zdCBTY3JpcHRWYWx1ZSYgZGV0YWlsKQordm9pZCBDdXN0b21FdmVudDo6aW5pdEN1c3RvbUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2Vs
YWJsZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGRldGFpbCkKIHsKICAgICBBU1NF
UlQoIW1fc2VyaWFsaXplZFNjcmlwdFZhbHVlLmdldCgpKTsKICAgICBpZiAoZGlzcGF0Y2hlZCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuaAppbmRleCBiYzg5MDk2Li43ZjRjMWNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ3VzdG9tRXZlbnQuaApAQCAtMjcsMTUgKzI3LDE1IEBACiAjZGVmaW5lIEN1c3RvbUV2
ZW50X2gKIAogI2luY2x1ZGUgIkV2ZW50LmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNp
bmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3Jp
cHRWYWx1ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBDdXN0b21FdmVudElu
aXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKICAgICBDdXN0b21FdmVudEluaXQoKTsKIAotICAgIFNj
cmlwdFZhbHVlIGRldGFpbDsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBkZXRhaWw7CiB9
OwogCiBjbGFzcyBDdXN0b21FdmVudCA6IHB1YmxpYyBFdmVudCB7CkBAIC01MiwxOCArNTIsMTgg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEN1c3RvbUV2ZW50KHR5cGUs
IGluaXRpYWxpemVyKSk7CiAgICAgfQogCi0gICAgdm9pZCBpbml0Q3VzdG9tRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25z
dCBTY3JpcHRWYWx1ZSYgZGV0YWlsKTsKKyAgICB2b2lkIGluaXRDdXN0b21FdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBkZXRhaWwpOwogCiAgICAgdmlydHVhbCBFdmVudElu
dGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0OwogCi0gICAgY29uc3QgU2NyaXB0VmFsdWUm
IGRldGFpbCgpIGNvbnN0IHsgcmV0dXJuIG1fZGV0YWlsOyB9CisgICAgY29uc3QgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUmIGRldGFpbCgpIGNvbnN0IHsgcmV0dXJuIG1fZGV0YWlsOyB9CiAgICAg
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgp
IHsgcmV0dXJuIG1fc2VyaWFsaXplZFNjcmlwdFZhbHVlOyB9CiAKIHByaXZhdGU6CiAgICAgQ3Vz
dG9tRXZlbnQoKTsKICAgICBDdXN0b21FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNv
bnN0IEN1c3RvbUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpOwogCi0gICAgU2NyaXB0VmFsdWUgbV9k
ZXRhaWw7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgbV9kZXRhaWw7CiAgICAgUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9zZXJpYWxpemVkU2NyaXB0VmFsdWU7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCmluZGV4IGZkODY5NzguLjQzODhjOWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCkBAIC0yMSwxNCArMjEsMTMgQEAKICAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKgogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNZXNzYWdl
RXZlbnQuaCIKIAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBp
c1ZhbGlkU291cmNlKEV2ZW50VGFyZ2V0KiBzb3VyY2UpCkBAIC01Niw3ICs1NSw3IEBAIE1lc3Nh
Z2VFdmVudDo6TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVz
c2FnZUV2ZW50SW5pdCYgaW5pCiB7CiB9CiAKLU1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KGNv
bnN0IFNjcmlwdFZhbHVlJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5n
JiBsYXN0RXZlbnRJZCwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gc291cmNlLCBQYXNzT3duUHRy
PE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzKQorTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBj
b25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBzb3VyY2Us
IFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMpCiAgICAgOiBFdmVudChldmVudE5h
bWVzKCkubWVzc2FnZUV2ZW50LCBmYWxzZSwgZmFsc2UpCiAgICAgLCBtX2RhdGFUeXBlKERhdGFU
eXBlU2NyaXB0VmFsdWUpCiAgICAgLCBtX2RhdGFBc1NjcmlwdFZhbHVlKGRhdGEpCkBAIC0xMDgs
NyArMTA3LDcgQEAgTWVzc2FnZUV2ZW50Ojp+TWVzc2FnZUV2ZW50KCkKIHsKIH0KIAotdm9pZCBN
ZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBTY3JpcHRWYWx1ZSYgZGF0YSwg
Y29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIERPTVdpbmRv
dyogc291cmNlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzKQordm9pZCBNZXNz
YWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQs
IERPTVdpbmRvdyogc291cmNlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzKQog
ewogICAgIGlmIChkaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNz
YWdlRXZlbnQuaAppbmRleCBiOTdhNzAzLi42ODYwZDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTWVzc2FnZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VF
dmVudC5oCkBAIC0zMiw4ICszMiw4IEBACiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVk
ZSAiRXZlbnQuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgotI2luY2x1ZGUgIlNjcmlwdFZh
bHVlLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8Ymlu
ZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgRXZlbnRUYXJnZXQ7
CiBzdHJ1Y3QgTWVzc2FnZUV2ZW50SW5pdCA6IHB1YmxpYyBFdmVudEluaXQgewogICAgIE1lc3Nh
Z2VFdmVudEluaXQoKTsKIAotICAgIFNjcmlwdFZhbHVlIGRhdGE7CisgICAgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUgZGF0YTsKICAgICBTdHJpbmcgb3JpZ2luOwogICAgIFN0cmluZyBsYXN0RXZl
bnRJZDsKICAgICBSZWZQdHI8RXZlbnRUYXJnZXQ+IHNvdXJjZTsKQEAgLTU2LDcgKzU2LDcgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZXNzYWdlRXZlbnQp
OwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShQYXNz
T3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzLCBjb25zdCBTY3JpcHRWYWx1ZSYgZGF0YSA9
IFNjcmlwdFZhbHVlKCksIGNvbnN0IFN0cmluZyYgb3JpZ2luID0gU3RyaW5nKCksIGNvbnN0IFN0
cmluZyYgbGFzdEV2ZW50SWQgPSBTdHJpbmcoKSwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gc291
cmNlID0gMCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShQYXNz
T3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYgZGF0YSA9IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCksIGNvbnN0IFN0cmluZyYgb3Jp
Z2luID0gU3RyaW5nKCksIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQgPSBTdHJpbmcoKSwgUGFz
c1JlZlB0cjxFdmVudFRhcmdldD4gc291cmNlID0gMCkKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgTWVzc2FnZUV2ZW50KGRhdGEsIG9yaWdpbiwgbGFzdEV2ZW50SWQsIHNvdXJj
ZSwgcG9ydHMpKTsKICAgICB9CkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAg
dmlydHVhbCB+TWVzc2FnZUV2ZW50KCk7CiAKLSAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBj
b25zdCBTY3JpcHRWYWx1ZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgbGFzdEV2ZW50SWQsIERPTVdpbmRvdyogc291cmNlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0
QXJyYXk+KTsKKyAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFz
dEV2ZW50SWQsIERPTVdpbmRvdyogc291cmNlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+
KTsKICAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2
ZW50SWQsIERPTVdpbmRvdyogc291cmNlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+KTsK
IAogICAgIGNvbnN0IFN0cmluZyYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0K
QEAgLTEwNyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgICAgIERhdGFUeXBlQXJyYXlCdWZmZXIK
ICAgICB9OwogICAgIERhdGFUeXBlIGRhdGFUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhVHlw
ZTsgfQotICAgIGNvbnN0IFNjcmlwdFZhbHVlJiBkYXRhQXNTY3JpcHRWYWx1ZSgpIGNvbnN0IHsg
QVNTRVJUKG1fZGF0YVR5cGUgPT0gRGF0YVR5cGVTY3JpcHRWYWx1ZSk7IHJldHVybiBtX2RhdGFB
c1NjcmlwdFZhbHVlOyB9CisgICAgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGRhdGFB
c1NjcmlwdFZhbHVlKCkgY29uc3QgeyBBU1NFUlQobV9kYXRhVHlwZSA9PSBEYXRhVHlwZVNjcmlw
dFZhbHVlKTsgcmV0dXJuIG1fZGF0YUFzU2NyaXB0VmFsdWU7IH0KICAgICBQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YUFzU2VyaWFsaXplZFNjcmlwdFZhbHVlKCkgY29uc3Qg
eyBBU1NFUlQobV9kYXRhVHlwZSA9PSBEYXRhVHlwZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7IHJl
dHVybiBtX2RhdGFBc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsgfQogICAgIFN0cmluZyBkYXRhQXNT
dHJpbmcoKSBjb25zdCB7IEFTU0VSVChtX2RhdGFUeXBlID09IERhdGFUeXBlU3RyaW5nKTsgcmV0
dXJuIG1fZGF0YUFzU3RyaW5nOyB9CiAgICAgQmxvYiogZGF0YUFzQmxvYigpIGNvbnN0IHsgQVNT
RVJUKG1fZGF0YVR5cGUgPT0gRGF0YVR5cGVCbG9iKTsgcmV0dXJuIG1fZGF0YUFzQmxvYi5nZXQo
KTsgfQpAQCAtMTE2LDcgKzExNiw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgTWVzc2FnZUV2
ZW50KCk7CiAgICAgTWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IE1lc3Nh
Z2VFdmVudEluaXQmKTsKLSAgICBNZXNzYWdlRXZlbnQoY29uc3QgU2NyaXB0VmFsdWUmIGRhdGEs
IGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBQYXNzUmVm
UHRyPEV2ZW50VGFyZ2V0PiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4pOwor
ICAgIE1lc3NhZ2VFdmVudChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZGF0YSwgY29u
c3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIFBhc3NSZWZQdHI8
RXZlbnRUYXJnZXQ+IHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5Pik7CiAgICAg
TWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25z
dCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgUGFzc1JlZlB0cjxF
dmVudFRhcmdldD4gc291cmNlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+KTsKIAogICAg
IGV4cGxpY2l0IE1lc3NhZ2VFdmVudChjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYg
b3JpZ2luKTsKQEAgLTEyNCw3ICsxMjQsNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IE1lc3Nh
Z2VFdmVudChQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdp
bik7CiAKICAgICBEYXRhVHlwZSBtX2RhdGFUeXBlOwotICAgIFNjcmlwdFZhbHVlIG1fZGF0YUFz
U2NyaXB0VmFsdWU7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgbV9kYXRhQXNTY3JpcHRW
YWx1ZTsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX2RhdGFBc1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTsKICAgICBTdHJpbmcgbV9kYXRhQXNTdHJpbmc7CiAgICAgUmVmUHRyPEJs
b2I+IG1fZGF0YUFzQmxvYjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0
ZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5oCmluZGV4IDIyMTkz
YTQuLjU2ODIzNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaApAQCAtMjgsMTQgKzI4
LDE0IEBACiAjZGVmaW5lIFBvcFN0YXRlRXZlbnRfaAogCiAjaW5jbHVkZSAiRXZlbnQuaCIKLSNp
bmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFBvcFN0YXRlRXZlbnRJbml0IDogcHVi
bGljIEV2ZW50SW5pdCB7CiAgICAgUG9wU3RhdGVFdmVudEluaXQoKTsKIAotICAgIFNjcmlwdFZh
bHVlIHN0YXRlOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHN0YXRlOwogfTsKIAogY2xh
c3MgSGlzdG9yeTsKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFBvcFN0YXRlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBQb3BT
dGF0ZUV2ZW50SW5pdCYpOwogCiAgICAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHNlcmlhbGl6ZWRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VyaWFsaXplZFN0YXRlOyB9Ci0g
ICAgY29uc3QgU2NyaXB0VmFsdWUmIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQor
ICAgIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhdGU7IH0KICAgICBIaXN0b3J5KiBoaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9oaXN0
b3J5LmdldCgpOyB9CiAKICAgICB2aXJ0dWFsIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNl
KCkgY29uc3Q7CkBAIC01OSw3ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgUG9wU3RhdGVFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBQb3BTdGF0ZUV2ZW50SW5pdCYpOwogICAgIGV4cGxp
Y2l0IFBvcFN0YXRlRXZlbnQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNz
UmVmUHRyPEhpc3Rvcnk+KTsKIAotICAgIFNjcmlwdFZhbHVlIG1fc3RhdGU7CisgICAgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUgbV9zdGF0ZTsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBtX3NlcmlhbGl6ZWRTdGF0ZTsKICAgICBSZWZQdHI8SGlzdG9yeT4gbV9oaXN0b3J5Owog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAppbmRleCAxNjNhNDA3Li5kN2IyYjc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCkBAIC00MiwxMSArNDIsMTEgQEAK
ICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0UnVubmVyLmgi
CiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHROb2RlVHJh
dmVyc2FsLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCmluZGV4IGE1YTc5YjkuLmI5YTQyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTM1LDggKzEzNSw5IEBACiAjaWYgRU5BQkxF
KE1FRElBX0NPTlRST0xTX1NDUklQVCkKICNpbmNsdWRlICJKU01lZGlhQ29udHJvbHNIb3N0Lmgi
CiAjaW5jbHVkZSAiTWVkaWFDb250cm9sc0hvc3QuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3Qu
aCIKKyNpbmNsdWRlICJTY3JpcHRHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJVc2VyQWdlbnRT
Y3JpcHRzLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0T2JqZWN0Lmg+CiAjZW5kaWYKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvWFNTQXVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9y
LmNwcAppbmRleCBlZDczMGI0Li43ZmY0Y2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9YU1NBdWRpdG9yLmNwcApAQCAtMzcsMTcgKzM3LDE1IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCiAjaW5jbHVkZSAiSFRNTFBhcmFtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJ
ZGlvbXMuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJTZXR0aW5n
cy5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJYTGlua05h
bWVzLmgiCi0KLSNpZiBFTkFCTEUoU1ZHKQotI2luY2x1ZGUgIlNWR05hbWVzLmgiCi0jZW5kaWYK
LQogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1
ZGUgIlNWR05hbWVzLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hT
U0F1ZGl0b3JEZWxlZ2F0ZS5jcHAKaW5kZXggYWQzM2UwMC4uZDA2MDY5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuY3BwCkBAIC0zNSwx
MiArMzUsMTQgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgotI2luY2x1ZGUgIklu
c3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIlBpbmdMb2FkZXIuaCIKICNpbmNsdWRlICJTZWN1
cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIFhTU0F1ZGl0b3JEZWxlZ2F0ZTo6WFNTQXVkaXRvckRlbGVnYXRlKERvY3VtZW50JiBk
b2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJh
dG9ySW5zcGVjdG9yLnB5IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJ
bnNwZWN0b3IucHkKaW5kZXggYTk5NTUzMC4uYTFkYjFiNyAxMDA3NTUKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKQEAgLTI2Miw3ICsyNjIs
NyBAQCBjbGFzcyBSYXdUeXBlcyhvYmplY3QpOgogCiAgICAgICAgIEBjbGFzc21ldGhvZAogICAg
ICAgICBkZWYgZ2V0X3Jhd192YWxpZGF0b3JfY2FsbF90ZXh0KGNscyk6Ci0gICAgICAgICAgICBy
ZXR1cm4gIlJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3RvclZhbHVlOjpUeXBl
JXM+IiAlIGNscy5nZXRfdmFsaWRhdGVfbWV0aG9kX3BhcmFtcygpLnRlbXBsYXRlX3R5cGUKKyAg
ICAgICAgICAgIHJldHVybiAiUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9y
OjpJbnNwZWN0b3JWYWx1ZTo6VHlwZSVzPiIgJSBjbHMuZ2V0X3ZhbGlkYXRlX21ldGhvZF9wYXJh
bXMoKS50ZW1wbGF0ZV90eXBlCiAKICAgICBjbGFzcyBTdHJpbmcoQmFzZVR5cGUpOgogICAgICAg
ICBAc3RhdGljbWV0aG9kCkBAIC00NTEsNyArNDUxLDcgQEAgY2xhc3MgUmF3VHlwZXMob2JqZWN0
KToKIAogICAgICAgICBAc3RhdGljbWV0aG9kCiAgICAgICAgIGRlZiBnZXRfYXJyYXlfaXRlbV9y
YXdfY190eXBlX3RleHQoKToKLSAgICAgICAgICAgIHJldHVybiAiSW5zcGVjdG9yT2JqZWN0Igor
ICAgICAgICAgICAgcmV0dXJuICJJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCIKIAogICAgICAg
ICBAc3RhdGljbWV0aG9kCiAgICAgICAgIGRlZiBnZXRfcmF3X3R5cGVfbW9kZWwoKToKQEAgLTQ4
Niw3ICs0ODYsNyBAQCBjbGFzcyBSYXdUeXBlcyhvYmplY3QpOgogCiAgICAgICAgIEBzdGF0aWNt
ZXRob2QKICAgICAgICAgZGVmIGdldF9hcnJheV9pdGVtX3Jhd19jX3R5cGVfdGV4dCgpOgotICAg
ICAgICAgICAgcmV0dXJuICJJbnNwZWN0b3JWYWx1ZSIKKyAgICAgICAgICAgIHJldHVybiAiSW5z
cGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSIKIAogICAgICAgICBAc3RhdGljbWV0aG9kCiAgICAgICAg
IGRlZiBnZXRfcmF3X3R5cGVfbW9kZWwoKToKQEAgLTUyOSw3ICs1MjksNyBAQCBjbGFzcyBSYXdU
eXBlcyhvYmplY3QpOgogCiAgICAgICAgIEBzdGF0aWNtZXRob2QKICAgICAgICAgZGVmIGdldF9h
cnJheV9pdGVtX3Jhd19jX3R5cGVfdGV4dCgpOgotICAgICAgICAgICAgcmV0dXJuICJJbnNwZWN0
b3JBcnJheSIKKyAgICAgICAgICAgIHJldHVybiAiSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSIK
IAogICAgICAgICBAc3RhdGljbWV0aG9kCiAgICAgICAgIGRlZiBnZXRfcmF3X3R5cGVfbW9kZWwo
KToKQEAgLTU5MCw3ICs1OTAsNyBAQCBjbGFzcyBDb21tYW5kUmV0dXJuUGFzc01vZGVsOgogICAg
ICAgICAgICAgc2VsZi52YXJfdHlwZSA9IHZhcl90eXBlCiAKICAgICAgICAgZGVmIGdldF9yZXR1
cm5fdmFyX3R5cGUoc2VsZik6Ci0gICAgICAgICAgICByZXR1cm4gIlR5cGVCdWlsZGVyOjpPcHRP
dXRwdXQ8JXM+IiAlIHNlbGYudmFyX3R5cGUKKyAgICAgICAgICAgIHJldHVybiAiSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PCVzPiIgJSBzZWxmLnZhcl90eXBlCiAKICAgICAgICAg
QHN0YXRpY21ldGhvZAogICAgICAgICBkZWYgZ2V0X291dHB1dF9hcmd1bWVudF9wcmVmaXgoKToK
QEAgLTYwMSw3ICs2MDEsNyBAQCBjbGFzcyBDb21tYW5kUmV0dXJuUGFzc01vZGVsOgogICAgICAg
ICAgICAgcmV0dXJuICIlcy5nZXRWYWx1ZSgpIgogCiAgICAgICAgIGRlZiBnZXRfb3V0cHV0X3Bh
cmFtZXRlcl90eXBlKHNlbGYpOgotICAgICAgICAgICAgcmV0dXJuICJUeXBlQnVpbGRlcjo6T3B0
T3V0cHV0PCVzPioiICUgc2VsZi52YXJfdHlwZQorICAgICAgICAgICAgcmV0dXJuICJJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8JXM+KiIgJSBzZWxmLnZhcl90eXBlCiAKICAgICAg
ICAgQHN0YXRpY21ldGhvZAogICAgICAgICBkZWYgZ2V0X3NldF9yZXR1cm5fY29uZGl0aW9uKCk6
CkBAIC03MTIsMTAgKzcxMiwxMCBAQCBjbGFzcyBUeXBlTW9kZWw6CiAgICAgICAgICAgICBUeXBl
TW9kZWwuVmFsdWVUeXBlLl9faW5pdF9fKHNlbGYsICJpbnQiLCBGYWxzZSkKIAogICAgICAgICBk
ZWYgZ2V0X2lucHV0X3BhcmFtX3R5cGVfdGV4dChzZWxmKToKLSAgICAgICAgICAgIHJldHVybiAi
VHlwZUJ1aWxkZXI6OkV4YWN0bHlJbnQiCisgICAgICAgICAgICByZXR1cm4gIkluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkV4YWN0bHlJbnQiCiAKICAgICAgICAgZGVmIGdldF9vcHRfb3V0cHV0X3R5
cGVfKHNlbGYpOgotICAgICAgICAgICAgcmV0dXJuICJUeXBlQnVpbGRlcjo6RXhhY3RseUludCIK
KyAgICAgICAgICAgIHJldHVybiAiSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RXhhY3RseUludCIK
IAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBpbml0X2NsYXNzKGNscyk6CkBAIC03MjYsOSAr
NzI2LDkgQEAgY2xhc3MgVHlwZU1vZGVsOgogICAgICAgICAgICAgY2xzLkludCA9IGNscy5WYWx1
ZVR5cGUoImludCIsIEZhbHNlKQogICAgICAgICBjbHMuTnVtYmVyID0gY2xzLlZhbHVlVHlwZSgi
ZG91YmxlIiwgRmFsc2UpCiAgICAgICAgIGNscy5TdHJpbmcgPSBjbHMuVmFsdWVUeXBlKCJTdHJp
bmciLCBUcnVlLCkKLSAgICAgICAgY2xzLk9iamVjdCA9IGNscy5SZWZQdHJCYXNlZCgiSW5zcGVj
dG9yT2JqZWN0IikKLSAgICAgICAgY2xzLkFycmF5ID0gY2xzLlJlZlB0ckJhc2VkKCJJbnNwZWN0
b3JBcnJheSIpCi0gICAgICAgIGNscy5BbnkgPSBjbHMuUmVmUHRyQmFzZWQoIkluc3BlY3RvclZh
bHVlIikKKyAgICAgICAgY2xzLk9iamVjdCA9IGNscy5SZWZQdHJCYXNlZCgiSW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3QiKQorICAgICAgICBjbHMuQXJyYXkgPSBjbHMuUmVmUHRyQmFzZWQoIklu
c3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkiKQorICAgICAgICBjbHMuQW55ID0gY2xzLlJlZlB0ckJh
c2VkKCJJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlIikKIAogVHlwZU1vZGVsLmluaXRfY2xhc3Mo
KQogCkBAIC04MzcsOCArODM3LDggQEAgY2xhc3MgVHlwZUJpbmRpbmdzOgogCiAgICAgICAgIGNs
YXNzIEhlbHBlcjoKICAgICAgICAgICAgIGlzX2FkX2hvYyA9IEZhbHNlCi0gICAgICAgICAgICBm
dWxsX25hbWVfcHJlZml4X2Zvcl91c2UgPSAiVHlwZUJ1aWxkZXI6OiIgKyBjb250ZXh0X2RvbWFp
bl9uYW1lICsgIjo6IgotICAgICAgICAgICAgZnVsbF9uYW1lX3ByZWZpeF9mb3JfaW1wbCA9ICJU
eXBlQnVpbGRlcjo6IiArIGNvbnRleHRfZG9tYWluX25hbWUgKyAiOjoiCisgICAgICAgICAgICBm
dWxsX25hbWVfcHJlZml4X2Zvcl91c2UgPSAiSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6IiArIGNv
bnRleHRfZG9tYWluX25hbWUgKyAiOjoiCisgICAgICAgICAgICBmdWxsX25hbWVfcHJlZml4X2Zv
cl9pbXBsID0gIkluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OiIgKyBjb250ZXh0X2RvbWFpbl9uYW1l
ICsgIjo6IgogCiAgICAgICAgICAgICBAc3RhdGljbWV0aG9kCiAgICAgICAgICAgICBkZWYgd3Jp
dGVfZG9jKHdyaXRlcik6CkBAIC05MjgsNyArOTI4LDcgQEAgY2xhc3MgVHlwZUJpbmRpbmdzOgog
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGVudW1fYmluZGluZ19jbHMubmVl
ZF9pbnRlcm5hbF9ydW50aW1lX2Nhc3RfOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgd3JpdGVyLmFwcGVuZCgiI2lmICVzXG4iICUgVkFMSURBVE9SX0lGREVGX05BTUUpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgIHN0
YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpO1xuIikK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAg
c3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUq
IHZhbHVlKTtcbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIu
YXBwZW5kKCIjZW5kaWYgIC8vICVzXG4iICUgVkFMSURBVE9SX0lGREVGX05BTUUpCiAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcl93cml0ZXIgPSBnZW5lcmF0
ZV9jb250ZXh0LnZhbGlkYXRvcl93cml0ZXIKQEAgLTkzOCw3ICs5MzgsNyBAQCBjbGFzcyBUeXBl
QmluZGluZ3M6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkb21haW5f
Z3VhcmQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluX2d1
YXJkLmdlbmVyYXRlX29wZW4odmFsaWRhdG9yX3dyaXRlcikKIAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCJ2b2lkICVzJXM6OmFz
c2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpXG4iICUgKGhlbHBlci5mdWxs
X25hbWVfcHJlZml4X2Zvcl9pbXBsLCBlbnVtX25hbWUpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCJ2b2lkICVzJXM6OmFzc2Vy
dENvcnJlY3RWYWx1ZShJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiB2YWx1ZSlcbiIgJSAoaGVs
cGVyLmZ1bGxfbmFtZV9wcmVmaXhfZm9yX2ltcGwsIGVudW1fbmFtZSkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoIntcbiIpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xp
bmUoIiAgICBXVEY6OlN0cmluZyBzO1xuIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhbGlkYXRvcl93cml0ZXIubmV3bGluZSgiICAgIGJvb2wgY2FzdF9yZXMgPSB2YWx1
ZS0+YXNTdHJpbmcoJnMpO1xuIikKQEAgLTk4MCw3ICs5ODAsNyBAQCBjbGFzcyBUeXBlQmluZGlu
Z3M6CiAKICAgICAgICAgICAgICAgICAgICAgQHN0YXRpY21ldGhvZAogICAgICAgICAgICAgICAg
ICAgICBkZWYgZ2V0X3NldHRlcl92YWx1ZV9leHByZXNzaW9uX3BhdHRlcm4oKToKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAiVHlwZUJ1aWxkZXI6OmdldEVudW1Db25zdGFudFZhbHVl
KCVzKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Z2V0RW51bUNvbnN0YW50VmFsdWUoJXMpIgogCiAgICAgICAgICAgICAgICAgICAgIEBz
dGF0aWNtZXRob2QKICAgICAgICAgICAgICAgICAgICAgZGVmIHJlZHVjZV90b19yYXdfdHlwZSgp
OgpAQCAtMTE3Miw5ICsxMTcyLDkgQEAgY2xhc3MgVHlwZUJpbmRpbmdzOgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKGNsYXNzX25hbWUpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQoIiA6IHB1YmxpYyAiKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpc19vcGVuX3R5cGU6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKCJJbnNwZWN0b3JPYmplY3QiKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVuZCgiSW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3QiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVuZCgi
SW5zcGVjdG9yT2JqZWN0QmFzZSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3cml0ZXIuYXBwZW5kKCJJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdEJhc2UiKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKCIge1xuIikKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoInB1YmxpYzpcbiIpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkX2hvY190eXBlX3dyaXRlciA9IHdyaXRlci5p
bnNlcnRfd3JpdGVyKCIgICAgIikKQEAgLTEyMzQsNyArMTIzNCw3IEBAIGNsYXNzIFR5cGVCaW5k
aW5nczoKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZV9t
dWx0aWxpbmUoQ29kZUdlbmVyYXRvckluc3BlY3RvclN0cmluZ3MuY2xhc3NfYmluZGluZ19idWls
ZGVyX3BhcnRfNCkKIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3
bGluZSgiICAgIHR5cGVkZWYgVHlwZUJ1aWxkZXI6OlN0cnVjdEl0ZW1UcmFpdHMgSXRlbVRyYWl0
cztcbiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIg
ICAgdHlwZWRlZiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpTdHJ1Y3RJdGVtVHJhaXRzIEl0ZW1U
cmFpdHM7XG4iKQogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwcm9wX2Rh
dGEgaW4gcmVzb2x2ZV9kYXRhLm9wdGlvbmFsX3Byb3BlcnRpZXM6CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwcm9wX25hbWUgPSBwcm9wX2RhdGEucFsibmFtZSJdCkBAIC0x
MjUxLDI1ICsxMjUxLDI1IEBAIGNsYXNzIFR5cGVCaW5kaW5nczoKIAogCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiBzZXR0ZXJfbmFtZSBpbiBJTlNQRUNUT1JfT0JKRUNU
X1NFVFRFUl9OQU1FUzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
cml0ZXIubmV3bGluZSgiICAgIHVzaW5nIEluc3BlY3Rvck9iamVjdEJhc2U6OiVzO1xuXG4iICUg
c2V0dGVyX25hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3Jp
dGVyLm5ld2xpbmUoIiAgICB1c2luZyBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdEJhc2U6OiVz
O1xuXG4iICUgc2V0dGVyX25hbWUpCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgY2xhc3NfYmluZGluZ19jbHMubmVlZF91c2VyX3J1bnRpbWVfY2FzdF86Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgIHN0YXRpYyBQYXNz
UmVmUHRyPCVzPiBydW50aW1lQ2FzdChQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSlc
biIgJSBjbGFzc19uYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3Jp
dGVyLm5ld2xpbmUoIiAgICBzdGF0aWMgUGFzc1JlZlB0cjwlcz4gcnVudGltZUNhc3QoUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiB2YWx1ZSlcbiIgJSBjbGFzc19uYW1lKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICB7
XG4iKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUo
IiAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0O1xuIikKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgICAgIFJlZlB0cjxJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gb2JqZWN0O1xuIikKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgICAgIGJvb2wgY2FzdFJlcyA9
IHZhbHVlLT5hc09iamVjdCgmb2JqZWN0KTtcbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgICAgICBBU1NFUlRfVU5VU0VEKGNhc3RSZXMs
IGNhc3RSZXMpO1xuIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRl
ci5hcHBlbmQoIiNpZiAlc1xuIiAlIFZBTElEQVRPUl9JRkRFRl9OQU1FKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICAgICAgYXNzZXJ0Q29y
cmVjdFZhbHVlKG9iamVjdC5nZXQoKSk7XG4iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd3JpdGVyLmFwcGVuZCgiI2VuZGlmICAvLyAlc1xuIiAlIFZBTElEQVRPUl9JRkRF
Rl9OQU1FKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xp
bmUoIiAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKCVzKSA9PSBzaXplb2YoSW5zcGVjdG9y
T2JqZWN0QmFzZSksIHR5cGVfY2FzdF9wcm9ibGVtKTtcbiIgJSBjbGFzc19uYW1lKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PCVzKj4oc3RhdGljX2Nhc3Q8SW5zcGVjdG9yT2JqZWN0QmFzZSo+KG9i
amVjdC5nZXQoKSkpO1xuIiAlIGNsYXNzX25hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2Yo
JXMpID09IHNpemVvZihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdEJhc2UpLCB0eXBlX2Nhc3Rf
cHJvYmxlbSk7XG4iICUgY2xhc3NfbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDwlcyo+KHN0
YXRpY19jYXN0PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0QmFzZSo+KG9iamVjdC5nZXQoKSkp
O1xuIiAlIGNsYXNzX25hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
cml0ZXIubmV3bGluZSgiICAgIH1cbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB3cml0ZXIuYXBwZW5kKCJcbiIpCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgY2xhc3NfYmluZGluZ19jbHMubmVlZF9pbnRlcm5hbF9ydW50aW1lX2Nhc3RfOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVuZCgiI2lmICVzXG4i
ICUgVkFMSURBVE9SX0lGREVGX05BTUUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB3cml0ZXIubmV3bGluZSgiICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJ
bnNwZWN0b3JWYWx1ZSogdmFsdWUpO1xuIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVl
KEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVlKTtcbiIpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKCIjZW5kaWYgIC8vICVzXG4iICUgVkFM
SURBVE9SX0lGREVGX05BTUUpCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNsb3NlZF9maWVsZF9zZXQgPSAoY29udGV4dF9kb21haW5fbmFtZSArICIuIiArIGNsYXNzX25h
bWUpIG5vdCBpbiBUWVBFU19XSVRIX09QRU5fRklFTERfTElTVF9TRVQKQEAgLTEyODEsNyArMTI4
MSw3IEBAIGNsYXNzIFR5cGVCaW5kaW5nczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIGRvbWFpbl9ndWFyZDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkb21haW5fZ3VhcmQuZ2VuZXJhdGVfb3Blbih2YWxpZGF0b3Jfd3JpdGVyKQogCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xp
bmUoInZvaWQgJXMlczo6YXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSlc
biIgJSAoaGVscGVyLmZ1bGxfbmFtZV9wcmVmaXhfZm9yX2ltcGwsIGNsYXNzX25hbWUpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5l
KCJ2b2lkICVzJXM6OmFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVl
KiB2YWx1ZSlcbiIgJSAoaGVscGVyLmZ1bGxfbmFtZV9wcmVmaXhfZm9yX2ltcGwsIGNsYXNzX25h
bWUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRl
ci5uZXdsaW5lKCJ7XG4iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFs
aWRhdG9yX3dyaXRlci5uZXdsaW5lKCIgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0
O1xuIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcl93cml0
ZXIubmV3bGluZSgiICAgIGJvb2wgY2FzdFJlcyA9IHZhbHVlLT5hc09iamVjdCgmb2JqZWN0KTtc
biIpCkBAIC0xNTE5LDcgKzE1MTksNyBAQCBjbGFzcyBUeXBlQmluZGluZ3M6CiAKICAgICAgICAg
ICAgICAgICAgICAgQGNsYXNzbWV0aG9kCiAgICAgICAgICAgICAgICAgICAgIGRlZiBnZXRfYXJy
YXlfaXRlbV9jX3R5cGVfdGV4dChjbHMpOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHJlcGxhY2VfcmlnaHRfc2hpZnQoIlR5cGVCdWlsZGVyOjpBcnJheTwlcz4iICUgY2xzLnJlc29s
dmVfZGF0YV8uaXRlbV90eXBlX2JpbmRpbmcuZ2V0X2FycmF5X2l0ZW1fY190eXBlX3RleHQoKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXBsYWNlX3JpZ2h0X3NoaWZ0KCJJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTwlcz4iICUgY2xzLnJlc29sdmVfZGF0YV8uaXRlbV90
eXBlX2JpbmRpbmcuZ2V0X2FycmF5X2l0ZW1fY190eXBlX3RleHQoKSkKIAogICAgICAgICAgICAg
ICAgICAgICBAc3RhdGljbWV0aG9kCiAgICAgICAgICAgICAgICAgICAgIGRlZiBnZXRfc2V0dGVy
X3ZhbHVlX2V4cHJlc3Npb25fcGF0dGVybigpOgpAQCAtMTkwMCwxMCArMTkwMCwxMCBAQCBjbGFz
cyBHZW5lcmF0b3I6CiAgICAgICAgICAgICBkaXNwYXRjaGVyX25hbWUgPSAiSW5zcGVjdG9yIiAr
IENhcGl0YWxpemVyLmxvd2VyX2NhbWVsX2Nhc2VfdG9fdXBwZXIoZG9tYWluX25hbWUpICsgIkJh
Y2tlbmREaXNwYXRjaGVyIgogICAgICAgICAgICAgYWdlbnRfaW50ZXJmYWNlX25hbWUgPSBkaXNw
YXRjaGVyX25hbWUgKyAiSGFuZGxlciIKIAotICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRf
ZGlzcGF0Y2hlcl9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoImNsYXNzICVzIEZJTkFMIDogcHVibGlj
IEluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyIHtcbiIgJSBkaXNwYXRjaGVy
X25hbWUpCisgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9kaXNwYXRjaGVyX2ludGVyZmFj
ZV9saXN0LmFwcGVuZCgiY2xhc3MgJXMgRklOQUwgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0
b3JTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciB7XG4iICUgZGlzcGF0Y2hlcl9uYW1lKQog
ICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfZGlzcGF0Y2hlcl9pbnRlcmZhY2VfbGlzdC5h
cHBlbmQoInB1YmxpYzpcbiIpCi0gICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9kaXNwYXRj
aGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgiICAgIHN0YXRpYyBQYXNzUmVmUHRyPCVzPiBjcmVh
dGUoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqLCAlcyopO1xuIiAlIChkaXNwYXRjaGVyX25h
bWUsIGFnZW50X2ludGVyZmFjZV9uYW1lKSkKLSAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5k
X2Rpc3BhdGNoZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUGFzc1JlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IG1lc3NhZ2UpIE9WRVJSSURFO1xuIikKKyAgICAgICAgICAgIEdlbmVyYXRvci5i
YWNrZW5kX2Rpc3BhdGNoZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIgICAgc3RhdGljIFBhc3NS
ZWZQdHI8JXM+IGNyZWF0ZShJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiwg
JXMqKTtcbiIgJSAoZGlzcGF0Y2hlcl9uYW1lLCBhZ2VudF9pbnRlcmZhY2VfbmFtZSkpCisgICAg
ICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9kaXNwYXRjaGVyX2ludGVyZmFjZV9saXN0LmFwcGVu
ZCgiICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBt
ZXRob2QsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1lc3NhZ2UpIE9W
RVJSSURFO1xuIikKICAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3BhdGNoZXJfaW50
ZXJmYWNlX2xpc3QuYXBwZW5kKCJwcml2YXRlOlxuIikKIAogICAgICAgICAgICAgR2VuZXJhdG9y
LmJhY2tlbmRfaGFuZGxlcl9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoImNsYXNzICVzIHtcbiIgJSBh
Z2VudF9pbnRlcmZhY2VfbmFtZSkKQEAgLTE5MjIsNyArMTkyMiw3IEBAIGNsYXNzIEdlbmVyYXRv
cjoKICAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2hhbmRsZXJfaW50ZXJmYWNlX2xpc3Qu
YXBwZW5kKCJ9O1xuXG4iKQogCiAgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9kaXNwYXRj
aGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgicHJpdmF0ZTpcbiIpCi0gICAgICAgICAgICBHZW5l
cmF0b3IuYmFja2VuZF9kaXNwYXRjaGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgiICAgICVzKElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiwgJXMqKTtcbiIgJSAoZGlzcGF0Y2hlcl9uYW1lLCBh
Z2VudF9pbnRlcmZhY2VfbmFtZSkpCisgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9kaXNw
YXRjaGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgiICAgICVzKEluc3BlY3Rvcjo6SW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqLCAlcyopO1xuIiAlIChkaXNwYXRjaGVyX25hbWUsIGFnZW50X2lu
dGVyZmFjZV9uYW1lKSkKICAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3BhdGNoZXJf
aW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIgICAgJXMqIG1fYWdlbnQ7XG4iICUgYWdlbnRfaW50ZXJm
YWNlX25hbWUpCiAgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9kaXNwYXRjaGVyX2ludGVy
ZmFjZV9saXN0LmFwcGVuZCgifTtcblxuIikKIApAQCAtMjAwMyw3ICsyMDAzLDcgQEAgY2xhc3Mg
R2VuZXJhdG9yOgogICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9oYW5kbGVyX2ludGVyZmFjZV9s
aXN0LmFwcGVuZChhZF9ob2NfdHlwZV9vdXRwdXQpCiAgICAgICAgIGFkX2hvY190eXBlX3dyaXRl
ciA9IFdyaXRlcihhZF9ob2NfdHlwZV9vdXRwdXQsICIgICAgIikKIAotICAgICAgICBHZW5lcmF0
b3IuYmFja2VuZF9kaXNwYXRjaGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgiICAgIHZvaWQgJXMo
bG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7XG4iICUganNvbl9j
b21tYW5kX25hbWUpCisgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3BhdGNoZXJfaW50ZXJm
YWNlX2xpc3QuYXBwZW5kKCIgICAgdm9pZCAlcyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpO1xuIiAlIGpzb25fY29tbWFuZF9uYW1lKQogCiAg
ICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2hhbmRsZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIg
ICAgdmlydHVhbCB2b2lkICVzKEVycm9yU3RyaW5nKiIgJSBqc29uX2NvbW1hbmRfbmFtZSkKIApA
QCAtMjA5OCw5ICsyMDk4LDkgQEAgY2xhc3MgR2VuZXJhdG9yOgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX21ldGhvZF9pbXBsZW1l
bnRhdGlvbl9saXN0LCBUZW1wbGF0ZXMuY2FsbGJhY2tfbWV0aG9kLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsiY2FsbGJhY2tOYW1lIjogY2FsbGJhY2tfbmFt
ZSwgImhhbmRsZXJOYW1lIjogYWdlbnRfaW50ZXJmYWNlX25hbWV9KQogCi0gICAgICAgICAgICBj
YWxsYmFja193cml0ZXIubmV3bGluZSgiY2xhc3MgIiArIGNhbGxiYWNrX25hbWUgKyAiIDogcHVi
bGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2Uge1xuIikKKyAgICAg
ICAgICAgIGNhbGxiYWNrX3dyaXRlci5uZXdsaW5lKCJjbGFzcyAiICsgY2FsbGJhY2tfbmFtZSAr
ICIgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJh
Y2tCYXNlIHtcbiIpCiAgICAgICAgICAgICBjYWxsYmFja193cml0ZXIubmV3bGluZSgicHVibGlj
OlxuIikKLSAgICAgICAgICAgIGNhbGxiYWNrX3dyaXRlci5uZXdsaW5lKCIgICAgIiArIGNhbGxi
YWNrX25hbWUgKyAiKFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+LCBpbnQg
aWQpO1xuIikKKyAgICAgICAgICAgIGNhbGxiYWNrX3dyaXRlci5uZXdsaW5lKCIgICAgIiArIGNh
bGxiYWNrX25hbWUgKyAiKFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcj4sIGludCBpZCk7XG4iKQogICAgICAgICAgICAgY2FsbGJhY2tfd3JpdGVyLm5ld2xp
bmUoIiAgICB2b2lkIHNlbmRTdWNjZXNzKCIgKyAiLCAiLmpvaW4oZGVjbF9wYXJhbWV0ZXJfbGlz
dCkgKyAiKTtcbiIpCiAgICAgICAgICAgICBjYWxsYmFja193cml0ZXIubmV3bGluZSgifTtcbiIp
CiAKQEAgLTIxMDksNyArMjEwOSw3IEBAIGNsYXNzIEdlbmVyYXRvcjoKICAgICAgICAgICAgIG1l
dGhvZF9kaXNwYXRjaF9oYW5kbGluZy5hcHBlbmQoIiAgICBSZWZQdHI8JXM6OiVzPiBjYWxsYmFj
ayA9IGFkb3B0UmVmKG5ldyAlczo6JXMobV9iYWNrZW5kRGlzcGF0Y2hlcixjYWxsSWQpKTtcbiIg
JSAoYWdlbnRfaW50ZXJmYWNlX25hbWUsIGNhbGxiYWNrX25hbWUsIGFnZW50X2ludGVyZmFjZV9u
YW1lLCBjYWxsYmFja19uYW1lKSkKICAgICAgICAgICAgIG1ldGhvZF9lbmRpbmdfaGFuZGxpbmcu
YXBwZW5kKCIgICAgaWYgKGVycm9yLmxlbmd0aCgpKSB7XG4iKQogICAgICAgICAgICAgbWV0aG9k
X2VuZGluZ19oYW5kbGluZy5hcHBlbmQoIiAgICAgICAgY2FsbGJhY2stPmRpc2FibGUoKTtcbiIp
Ci0gICAgICAgICAgICBtZXRob2RfZW5kaW5nX2hhbmRsaW5nLmFwcGVuZCgiICAgICAgICBtX2Jh
Y2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOjpTZXJ2ZXJFcnJvciwgZXJyb3IpO1xuIikKKyAgICAgICAgICAgIG1l
dGhvZF9lbmRpbmdfaGFuZGxpbmcuYXBwZW5kKCIgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXIt
PnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6U2VydmVyRXJyb3IsIGVycm9yKTtcbiIpCiAgICAgICAgICAgICBtZXRob2Rf
ZW5kaW5nX2hhbmRsaW5nLmFwcGVuZCgiICAgICAgICByZXR1cm47XG4iKQogICAgICAgICAgICAg
bWV0aG9kX2VuZGluZ19oYW5kbGluZy5hcHBlbmQoIiAgICB9IikKIApAQCAtMjQxMyw4ICsyNDEz
LDggQEAgYmFja2VuZF9jcHBfZmlsZSA9IFNtYXJ0T3V0cHV0KG91dHB1dF9jcHBfZGlybmFtZSAr
ICIvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIKIGZyb250ZW5kX2hfZmlsZSA9IFNtYXJ0T3V0
cHV0KG91dHB1dF9oZWFkZXJfZGlybmFtZSArICIvSW5zcGVjdG9yRnJvbnRlbmQuaCIpCiBmcm9u
dGVuZF9jcHBfZmlsZSA9IFNtYXJ0T3V0cHV0KG91dHB1dF9jcHBfZGlybmFtZSArICIvSW5zcGVj
dG9yRnJvbnRlbmQuY3BwIikKIAotdHlwZWJ1aWxkZXJfaF9maWxlID0gU21hcnRPdXRwdXQob3V0
cHV0X2hlYWRlcl9kaXJuYW1lICsgIi9JbnNwZWN0b3JUeXBlQnVpbGRlci5oIikKLXR5cGVidWls
ZGVyX2NwcF9maWxlID0gU21hcnRPdXRwdXQob3V0cHV0X2NwcF9kaXJuYW1lICsgIi9JbnNwZWN0
b3JUeXBlQnVpbGRlci5jcHAiKQordHlwZWJ1aWxkZXJfaF9maWxlID0gU21hcnRPdXRwdXQob3V0
cHV0X2hlYWRlcl9kaXJuYW1lICsgIi9JbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCIpCit0eXBl
YnVpbGRlcl9jcHBfZmlsZSA9IFNtYXJ0T3V0cHV0KG91dHB1dF9jcHBfZGlybmFtZSArICIvSW5z
cGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmNwcCIpCiAKIGJhY2tlbmRfanNfZmlsZSA9IFNtYXJ0T3V0
cHV0KG91dHB1dF9qc19kaXJuYW1lICsgIi9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMiKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3Bl
Y3RvclN0cmluZ3MucHkgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvcklu
c3BlY3RvclN0cmluZ3MucHkKaW5kZXggN2E1MThhOC4uMDFmZTUxMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5n
cy5weQpAQCAtNzAsNyArNzAsNyBAQCBiYWNrZW5kX2Rpc3BhdGNoZXJfZGlzcGF0Y2hfbWV0aG9k
ID0gKAogewogICAgIFJlZjwke2Rpc3BhdGNoZXJOYW1lfT4gcHJvdGVjdCgqdGhpcyk7CiAKLSAg
ICB0eXBlZGVmIHZvaWQgKCR7ZGlzcGF0Y2hlck5hbWV9OjoqQ2FsbEhhbmRsZXIpKGxvbmcgY2Fs
bElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOworICAgIHR5cGVkZWYgdm9pZCAo
JHtkaXNwYXRjaGVyTmFtZX06OipDYWxsSGFuZGxlcikobG9uZyBjYWxsSWQsIGNvbnN0IEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKICAgICB0eXBlZGVmIEhhc2hNYXA8U3Ry
aW5nLCBDYWxsSGFuZGxlcj4gRGlzcGF0Y2hNYXA7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChE
aXNwYXRjaE1hcCwgZGlzcGF0Y2hNYXAsICgpKTsKICAgICBpZiAoZGlzcGF0Y2hNYXAuaXNFbXB0
eSgpKSB7CkBAIC0xMTIsNyArMTEyLDcgQEAgJGNvZGUKICIiIikKIAogY2FsbGJhY2tfbWV0aG9k
ID0gKAotIiIiJHtoYW5kbGVyTmFtZX06OiR7Y2FsbGJhY2tOYW1lfTo6JHtjYWxsYmFja05hbWV9
KFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IGJhY2tlbmREaXNwYXRjaGVy
LCBpbnQgaWQpIDogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZShiYWNr
ZW5kRGlzcGF0Y2hlciwgaWQpIHsgfQorIiIiJHtoYW5kbGVyTmFtZX06OiR7Y2FsbGJhY2tOYW1l
fTo6JHtjYWxsYmFja05hbWV9KFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+
IGJhY2tlbmREaXNwYXRjaGVyLCBpbnQgaWQpIDogSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlKGJhY2tlbmREaXNwYXRjaGVyLCBpZCkgeyB9CiAKIHZv
aWQgJHtoYW5kbGVyTmFtZX06OiR7Y2FsbGJhY2tOYW1lfTo6c2VuZFN1Y2Nlc3MoJHtwYXJhbWV0
ZXJzfSkKIHsKQEAgLTEyNSwxNSArMTI1LDE0IEBAIGZyb250ZW5kX2ggPSAoCiAiIiIjaWZuZGVm
IEluc3BlY3RvckZyb250ZW5kX2gKICNkZWZpbmUgSW5zcGVjdG9yRnJvbnRlbmRfaAogCi0jaW5j
bHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMu
aCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JGb3J3YXJkaW5nLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsOwotCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAogJGRvbWFpbkNsYXNzTGlzdApAQCAt
MTQ5LDE2ICsxNDgsMTMgQEAgYmFja2VuZF9oID0gKAogIiIiI2lmbmRlZiBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcnNfaAogI2RlZmluZSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnNfaAog
Ci0jaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCIKLSNpbmNsdWRlICJJbnNw
ZWN0b3JUeXBlQnVpbGRlci5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5o
IgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwotY2xhc3Mg
SW5zcGVjdG9yQXJyYXk7Ci0KIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCiAkaGFuZGxl
ckludGVyZmFjZXMKQEAgLTE3OCwxMSArMTc0LDEzIEBAIGJhY2tlbmRfY3BwID0gKAogI2luY2x1
ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogCiAjaW5jbHVkZSAiSW5zcGVjdG9y
QWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JGb3J3YXJkaW5nLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAkbWV0aG9kcwpAQCAtMjAwLDEwICsxOTgsMTEgQEAgZnJvbnRlbmRfY3BwID0gKAogCiAj
aW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKIAotI2luY2x1ZGUgIkluc3BlY3RvckZvcndh
cmRpbmcuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogJG1ldGhvZHMKQEAgLTIxNSwyOTEgKzIxNCwyMCBAQCAkbWV0aG9kcwog
CiB0eXBlYnVpbGRlcl9oID0gKAogIiIiCi0jaWZuZGVmIEluc3BlY3RvclR5cGVCdWlsZGVyX2gK
LSNkZWZpbmUgSW5zcGVjdG9yVHlwZUJ1aWxkZXJfaAorLy8gRklYTUU6IFRZUEUuCisjaWZuZGVm
IEluc3BlY3RvcldlYlR5cGVCdWlsZGVyc19oCisjZGVmaW5lIEluc3BlY3RvcldlYlR5cGVCdWls
ZGVyc19oCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFs
dWVzLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclR5cGVCdWlsZGVyLmg+CiAjaW5j
bHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCi1u
YW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogbmFtZXNwYWNlIFR5
cGVCdWlsZGVyIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIE9wdE91dHB1dCB7Ci1w
dWJsaWM6Ci0gICAgT3B0T3V0cHV0KCkgOiBtX2Fzc2lnbmVkKGZhbHNlKSB7IH0KLQotICAgIHZv
aWQgb3BlcmF0b3I9KFQgdmFsdWUpCi0gICAgewotICAgICAgICBtX3ZhbHVlID0gdmFsdWU7Ci0g
ICAgICAgIG1fYXNzaWduZWQgPSB0cnVlOwotICAgIH0KLQotICAgIGJvb2wgaXNBc3NpZ25lZCgp
IHsgcmV0dXJuIG1fYXNzaWduZWQ7IH0KLQotICAgIFQgZ2V0VmFsdWUoKQotICAgIHsKLSAgICAg
ICAgQVNTRVJUKGlzQXNzaWduZWQoKSk7Ci0gICAgICAgIHJldHVybiBtX3ZhbHVlOwotICAgIH0K
LQotcHJpdmF0ZToKLSAgICBUIG1fdmFsdWU7Ci0gICAgYm9vbCBtX2Fzc2lnbmVkOwotCi0gICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoT3B0T3V0cHV0KTsKLX07Ci0KLQotLy8gQSBzbWFsbCB0cmFu
c2llbnQgd3JhcHBlciBhcm91bmQgaW50IHR5cGUsIHRoYXQgY2FuIGJlIHVzZWQgYXMgYSBmdW5j
aXRvbiBwYXJhbWV0ZXIgdHlwZQotLy8gY2xldmVybHkgZGlzYWxsb3dpbmcgQysrIGltcGxpY2l0
IGNhc3RzIGZyb20gZmxvYXQgb3IgZG91YmxlLgotY2xhc3MgRXhhY3RseUludCB7Ci1wdWJsaWM6
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBFeGFjdGx5SW50KFQgdCkgOiBtX3ZhbHVl
KGNhc3RfdG9faW50PFQ+KHQpKSB7fQotCi0gICAgRXhhY3RseUludCgpIHt9Ci0KLSAgICBvcGVy
YXRvciBpbnQoKSB7IHJldHVybiBtX3ZhbHVlOyB9Ci1wcml2YXRlOgotICAgIGludCBtX3ZhbHVl
OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgaW50IGNhc3RfdG9faW50
KFQpIHsgcmV0dXJuIFQ6OmRlZmF1bHRfY2FzZV9jYXN0X2lzX25vdF9zdXBwb3J0ZWQoKTsgfQot
fTsKLQotdGVtcGxhdGU8PgotaW5saW5lIGludCBFeGFjdGx5SW50OjpjYXN0X3RvX2ludDxpbnQ+
KGludCBpKSB7IHJldHVybiBpOyB9Ci0KLXRlbXBsYXRlPD4KLWlubGluZSBpbnQgRXhhY3RseUlu
dDo6Y2FzdF90b19pbnQ8dW5zaWduZWQgaW50Pih1bnNpZ25lZCBpbnQgaSkgeyByZXR1cm4gaTsg
fQotCi1jbGFzcyBSdW50aW1lQ2FzdEhlbHBlciB7Ci1wdWJsaWM6Ci0jaWYgJHZhbGlkYXRvcklm
ZGVmTmFtZQotICAgIHRlbXBsYXRlPEluc3BlY3RvclZhbHVlOjpUeXBlIFRZUEU+Ci0gICAgc3Rh
dGljIHZvaWQgYXNzZXJ0VHlwZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCi0gICAgewotICAgICAg
ICBBU1NFUlQodmFsdWUtPnR5cGUoKSA9PSBUWVBFKTsKLSAgICB9Ci0gICAgc3RhdGljIHZvaWQg
YXNzZXJ0QW55KEluc3BlY3RvclZhbHVlKik7Ci0gICAgc3RhdGljIHZvaWQgYXNzZXJ0SW50KElu
c3BlY3RvclZhbHVlKiB2YWx1ZSk7Ci0jZW5kaWYKLX07Ci0KLQotLy8gVGhpcyBjbGFzcyBwcm92
aWRlcyAiVHJhaXRzIiB0eXBlIGZvciB0aGUgaW5wdXQgdHlwZSBULiBJdCBpcyBwcm9ncmFtbWVk
IHVzaW5nIEMrKyB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbgotLy8gdGVjaG5pcXVlLiBCeSBkZWZh
dWx0IGl0IHNpbXBseSB0YWtlcyAiSXRlbVRyYWl0cyIgdHlwZSBmcm9tIFQsIGJ1dCBpdCBkb2Vz
bid0IHdvcmsgd2l0aCB0aGUgYmFzZSB0eXBlcy4KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1
Y3QgQXJyYXlJdGVtSGVscGVyIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6Okl0ZW1UcmFpdHMg
VHJhaXRzOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIEFycmF5IDogcHVibGlj
IEluc3BlY3RvckFycmF5QmFzZSB7Ci1wcml2YXRlOgotICAgIEFycmF5KCkgeyB9Ci0KLSAgICBJ
bnNwZWN0b3JBcnJheSogb3BlbkFjY2Vzc29ycygpIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQo
c2l6ZW9mKEluc3BlY3RvckFycmF5KSA9PSBzaXplb2YoQXJyYXk8VD4pLCBjYW5ub3RfY2FzdCk7
Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbnNwZWN0b3JBcnJheSo+KHN0YXRpY19jYXN0
PEluc3BlY3RvckFycmF5QmFzZSo+KHRoaXMpKTsKLSAgICB9Ci0KLXB1YmxpYzoKLSAgICB2b2lk
IGFkZEl0ZW0oUGFzc1JlZlB0cjxUPiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIEFycmF5SXRlbUhl
bHBlcjxUPjo6VHJhaXRzOjpwdXNoUmVmUHRyKHRoaXMtPm9wZW5BY2Nlc3NvcnMoKSwgdmFsdWUp
OwotICAgIH0KLQotICAgIHZvaWQgYWRkSXRlbShUIHZhbHVlKQotICAgIHsKLSAgICAgICAgQXJy
YXlJdGVtSGVscGVyPFQ+OjpUcmFpdHM6OnB1c2hSYXcodGhpcy0+b3BlbkFjY2Vzc29ycygpLCB2
YWx1ZSk7Ci0gICAgfQotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8QXJyYXk8VD4+IGNyZWF0ZSgp
Ci0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFycmF5PFQ+KCkpOwotICAgIH0K
LQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFycmF5PFQ+PiBydW50aW1lQ2FzdChQYXNzUmVmUHRy
PEluc3BlY3RvclZhbHVlPiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JB
cnJheT4gYXJyYXk7Ci0gICAgICAgIGJvb2wgY2FzdFJlcyA9IHZhbHVlLT5hc0FycmF5KCZhcnJh
eSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoY2FzdFJlcywgY2FzdFJlcyk7Ci0jaWYgJHZhbGlk
YXRvcklmZGVmTmFtZQotICAgICAgICBhc3NlcnRDb3JyZWN0VmFsdWUoYXJyYXkuZ2V0KCkpOwot
I2VuZGlmICAvLyAkdmFsaWRhdG9ySWZkZWZOYW1lCi0gICAgICAgIENPTVBJTEVfQVNTRVJUKHNp
emVvZihBcnJheTxUPikgPT0gc2l6ZW9mKEluc3BlY3RvckFycmF5KSwgdHlwZV9jYXN0X3Byb2Js
ZW0pOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk8VD4qPihzdGF0aWNfY2FzdDxJ
bnNwZWN0b3JBcnJheUJhc2UqPihhcnJheS5nZXQoKSkpOwotICAgIH0KLQotI2lmICR2YWxpZGF0
b3JJZmRlZk5hbWUKLSAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9y
VmFsdWUqIHZhbHVlKQotICAgIHsKLSAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcnJh
eTsKLSAgICAgICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFzQXJyYXkoJmFycmF5KTsKLSAgICAg
ICAgQVNTRVJUX1VOVVNFRChjYXN0UmVzLCBjYXN0UmVzKTsKLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGFycmF5LT5sZW5ndGgoKTsgaSsrKQotICAgICAgICAgICAgQXJyYXlJdGVt
SGVscGVyPFQ+OjpUcmFpdHM6OnRlbXBsYXRlIGFzc2VydENvcnJlY3RWYWx1ZTxUPihhcnJheS0+
Z2V0KGkpLmdldCgpKTsKLSAgICB9Ci0KLSNlbmRpZiAvLyAkdmFsaWRhdG9ySWZkZWZOYW1lCi19
OwotCi1zdHJ1Y3QgU3RydWN0SXRlbVRyYWl0cyB7Ci0gICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0
cihJbnNwZWN0b3JBcnJheSogYXJyYXksIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVl
KQotICAgIHsKLSAgICAgICAgYXJyYXktPnB1c2hWYWx1ZSh2YWx1ZSk7Ci0gICAgfQotCi0jaWYg
JHZhbGlkYXRvcklmZGVmTmFtZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGlj
IHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkgewotICAgICAg
ICBUOjphc3NlcnRDb3JyZWN0VmFsdWUodmFsdWUpOwotICAgIH0KLSNlbmRpZiAgLy8gJHZhbGlk
YXRvcklmZGVmTmFtZQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IEFycmF5SXRlbUhlbHBlcjxT
dHJpbmc+IHsKLSAgICBzdHJ1Y3QgVHJhaXRzIHsKLSAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJh
dyhJbnNwZWN0b3JBcnJheSogYXJyYXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGFycmF5LT5wdXNoU3RyaW5nKHZhbHVlKTsKLSAgICAgICAgfQotCi0jaWYg
JHZhbGlkYXRvcklmZGVmTmFtZQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAg
ICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKSB7
Ci0gICAgICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1
ZTo6VHlwZVN0cmluZz4odmFsdWUpOwotICAgICAgICB9Ci0jZW5kaWYgIC8vICR2YWxpZGF0b3JJ
ZmRlZk5hbWUKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IEFycmF5SXRlbUhlbHBl
cjxpbnQ+IHsKLSAgICBzdHJ1Y3QgVHJhaXRzIHsKLSAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJh
dyhJbnNwZWN0b3JBcnJheSogYXJyYXksIGludCB2YWx1ZSkKLSAgICAgICAgewotICAgICAgICAg
ICAgYXJyYXktPnB1c2hJbnQodmFsdWUpOwotICAgICAgICB9Ci0KLSNpZiAkdmFsaWRhdG9ySWZk
ZWZOYW1lCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyB2b2lk
IGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpIHsKLSAgICAgICAgICAg
IFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRJbnQodmFsdWUpOwotICAgICAgICB9Ci0jZW5kaWYg
IC8vICR2YWxpZGF0b3JJZmRlZk5hbWUKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0
IEFycmF5SXRlbUhlbHBlcjxkb3VibGU+IHsKLSAgICBzdHJ1Y3QgVHJhaXRzIHsKLSAgICAgICAg
c3RhdGljIHZvaWQgcHVzaFJhdyhJbnNwZWN0b3JBcnJheSogYXJyYXksIGRvdWJsZSB2YWx1ZSkK
LSAgICAgICAgewotICAgICAgICAgICAgYXJyYXktPnB1c2hOdW1iZXIodmFsdWUpOwotICAgICAg
ICB9Ci0KLSNpZiAkdmFsaWRhdG9ySWZkZWZOYW1lCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+Ci0gICAgICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1
ZSogdmFsdWUpIHsKLSAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBlPElu
c3BlY3RvclZhbHVlOjpUeXBlTnVtYmVyPih2YWx1ZSk7Ci0gICAgICAgIH0KLSNlbmRpZiAgLy8g
JHZhbGlkYXRvcklmZGVmTmFtZQotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgQXJy
YXlJdGVtSGVscGVyPGJvb2w+IHsKLSAgICBzdHJ1Y3QgVHJhaXRzIHsKLSAgICAgICAgc3RhdGlj
IHZvaWQgcHVzaFJhdyhJbnNwZWN0b3JBcnJheSogYXJyYXksIGJvb2wgdmFsdWUpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGFycmF5LT5wdXNoQm9vbGVhbih2YWx1ZSk7Ci0gICAgICAgIH0KLQot
I2lmICR2YWxpZGF0b3JJZmRlZk5hbWUKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAg
ICAgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1
ZSkgewotICAgICAgICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9y
VmFsdWU6OlR5cGVCb29sZWFuPih2YWx1ZSk7Ci0gICAgICAgIH0KLSNlbmRpZiAgLy8gJHZhbGlk
YXRvcklmZGVmTmFtZQotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgQXJyYXlJdGVt
SGVscGVyPEluc3BlY3RvclZhbHVlPiB7Ci0gICAgc3RydWN0IFRyYWl0cyB7Ci0gICAgICAgIHN0
YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRyPElu
c3BlY3RvclZhbHVlPiB2YWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgYXJyYXktPnB1c2hW
YWx1ZSh2YWx1ZSk7Ci0gICAgICAgIH0KLQotI2lmICR2YWxpZGF0b3JJZmRlZk5hbWUKLSAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVj
dFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkgewotICAgICAgICAgICAgUnVudGltZUNhc3RI
ZWxwZXI6OmFzc2VydEFueSh2YWx1ZSk7Ci0gICAgICAgIH0KLSNlbmRpZiAgLy8gJHZhbGlkYXRv
cklmZGVmTmFtZQotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgQXJyYXlJdGVtSGVs
cGVyPEluc3BlY3Rvck9iamVjdD4gewotICAgIHN0cnVjdCBUcmFpdHMgewotICAgICAgICBzdGF0
aWMgdm9pZCBwdXNoUmVmUHRyKEluc3BlY3RvckFycmF5KiBhcnJheSwgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4gdmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGFycmF5LT5wdXNoVmFs
dWUodmFsdWUpOwotICAgICAgICB9Ci0KLSNpZiAkdmFsaWRhdG9ySWZkZWZOYW1lCi0gICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RW
YWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpIHsKLSAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVs
cGVyOjphc3NlcnRUeXBlPEluc3BlY3RvclZhbHVlOjpUeXBlT2JqZWN0Pih2YWx1ZSk7Ci0gICAg
ICAgIH0KLSNlbmRpZiAgLy8gJHZhbGlkYXRvcklmZGVmTmFtZQotICAgIH07Ci19OwotCi10ZW1w
bGF0ZTw+Ci1zdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPEluc3BlY3RvckFycmF5PiB7Ci0gICAgc3Ry
dWN0IFRyYWl0cyB7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yQXJy
YXkqIGFycmF5LCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiB2YWx1ZSkKLSAgICAgICAgewot
ICAgICAgICAgICAgYXJyYXktPnB1c2hBcnJheSh2YWx1ZSk7Ci0gICAgICAgIH0KLQotI2lmICR2
YWxpZGF0b3JJZmRlZk5hbWUKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAg
c3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkgewot
ICAgICAgICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFsdWU6
OlR5cGVBcnJheT4odmFsdWUpOwotICAgICAgICB9Ci0jZW5kaWYgIC8vICR2YWxpZGF0b3JJZmRl
Zk5hbWUKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBBcnJheUl0
ZW1IZWxwZXI8VHlwZUJ1aWxkZXI6OkFycmF5PFQ+PiB7Ci0gICAgc3RydWN0IFRyYWl0cyB7Ci0g
ICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQYXNz
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUPj4gdmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGFycmF5LT5wdXNoVmFsdWUodmFsdWUpOwotICAgICAgICB9Ci0KLSNpZiAkdmFsaWRhdG9y
SWZkZWZOYW1lCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFM+Ci0gICAgICAgIHN0YXRpYyB2
b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpIHsKLSAgICAgICAg
ICAgIFM6OmFzc2VydENvcnJlY3RWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIH0KLSNlbmRpZiAgLy8g
JHZhbGlkYXRvcklmZGVmTmFtZQotICAgIH07Ci19OwotCiAke2ZvcndhcmRzfQogCiBTdHJpbmcg
Z2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpOwpAQCAtNTA3LDEyICsyMzUsMTEgQEAgU3Ry
aW5nIGdldEVudW1Db25zdGFudFZhbHVlKGludCBjb2RlKTsKICR7dHlwZUJ1aWxkZXJzfQogfSAv
LyBuYW1lc3BhY2UgVHlwZUJ1aWxkZXIKIAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8v
IG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNl
bmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JUeXBlQnVpbGRlcl9oKQorI2VuZGlmIC8vICFkZWZp
bmVkKEluc3BlY3RvcldlYlR5cGVCdWlsZGVyc19oKQogCiAiIiIpCiAKQEAgLTUyMiwxMCArMjQ5
LDEyIEBAIHR5cGVidWlsZGVyX2NwcCA9ICgKICNpbmNsdWRlICJjb25maWcuaCIKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKKyNpbmNs
dWRlICJJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBuYW1lc3BhY2UgVHlwZUJ1aWxkZXIgewogCkBA
IC01NDIsMjUgKzI3MSwxMSBAQCAkaW1wbENvZGUKIAogI2lmICR2YWxpZGF0b3JJZmRlZk5hbWUK
IAotdm9pZCBUeXBlQnVpbGRlcjo6UnVudGltZUNhc3RIZWxwZXI6OmFzc2VydEFueShJbnNwZWN0
b3JWYWx1ZSopCi17Ci0gICAgLy8gTm8tb3AuCi19Ci0KLQotdm9pZCBUeXBlQnVpbGRlcjo6UnVu
dGltZUNhc3RIZWxwZXI6OmFzc2VydEludChJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCi17Ci0gICAg
ZG91YmxlIHY7Ci0gICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFzTnVtYmVyKCZ2KTsKLSAgICBB
U1NFUlRfVU5VU0VEKGNhc3RSZXMsIGNhc3RSZXMpOwotICAgIEFTU0VSVChzdGF0aWNfY2FzdDxk
b3VibGU+KHN0YXRpY19jYXN0PGludD4odikpID09IHYpOwotfQotCiAkdmFsaWRhdG9yQ29kZQog
CiAjZW5kaWYgLy8gJHZhbGlkYXRvcklmZGVmTmFtZQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Cit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1Ip
CiAiIiIpCkBAIC01ODQsMTQgKzI5OSwxNCBAQCBjbGFzc19iaW5kaW5nX2J1aWxkZXJfcGFydF8x
ID0gKAogICAgIHRlbXBsYXRlPGludCBTVEFURT4KICAgICBjbGFzcyBCdWlsZGVyIHsKICAgICBw
cml2YXRlOgotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKKyAgICAg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKIAogICAgICAg
ICB0ZW1wbGF0ZTxpbnQgU1RFUD4gQnVpbGRlcjxTVEFURSB8IFNURVA+JiBjYXN0U3RhdGUoKQog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8QnVpbGRlcjxT
VEFURSB8IFNURVA+Kj4odGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBCdWlsZGVyKFBhc3NS
ZWZQdHI8LyolcyovSW5zcGVjdG9yT2JqZWN0PiBwdHIpCisgICAgICAgIEJ1aWxkZXIoUGFzc1Jl
ZlB0cjwvKiVzKi9JbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gcHRyKQogICAgICAgICB7CiAg
ICAgICAgICAgICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBOb0ZpZWxkc1NldCwgYnVpbGRlcl9j
cmVhdGVkX2luX25vbl9pbml0X3N0YXRlKTsKICAgICAgICAgICAgIG1fcmVzdWx0ID0gcHRyOwpA
QCAtNjEzLDcgKzMyOCw3IEBAIGNsYXNzX2JpbmRpbmdfYnVpbGRlcl9wYXJ0XzMgPSAoIiIiCiAg
ICAgICAgIG9wZXJhdG9yIFJlZlB0cjwlcz4mICgpCiAgICAgICAgIHsKICAgICAgICAgICAgIENP
TVBJTEVfQVNTRVJUKFNUQVRFID09IEFsbEZpZWxkc1NldCwgcmVzdWx0X2lzX25vdF9yZWFkeSk7
Ci0gICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoJXMpID09IHNpemVvZihJbnNwZWN0
b3JPYmplY3QpLCBjYW5ub3RfY2FzdCk7CisgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXpl
b2YoJXMpID09IHNpemVvZihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0
KTsKICAgICAgICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxSZWZQdHI8JXM+Kj4oJm1f
cmVzdWx0KTsKICAgICAgICAgfQogCkBAIC02MjgsNiArMzQzLDYgQEAgY2xhc3NfYmluZGluZ19i
dWlsZGVyX3BhcnRfMyA9ICgiIiIKIGNsYXNzX2JpbmRpbmdfYnVpbGRlcl9wYXJ0XzQgPSAoCiAi
IiIgICAgc3RhdGljIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+IGNyZWF0ZSgpCiAgICAgewotICAgICAg
ICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7
CisgICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdDo6Y3JlYXRlKCkpOwogICAgIH0KICIiIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvQ29uc29sZU1lc3NhZ2UuY3BwCmluZGV4IDBjOTcwYjguLjZmYjg1ZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcApAQCAtMzgsMTQgKzM4LDE2IEBA
CiAjaW5jbHVkZSAiSWRlbnRpZmllcnNGYWN0b3J5LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3Jp
cHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKLSNpbmNsdWRlICJJbnNw
ZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJT
Y3JpcHRDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRl
ICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNp
bmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNw
ZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCit1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENvbnNvbGVNZXNzYWdl
OjpDb25zb2xlTWVzc2FnZShib29sIGNhbkdlbmVyYXRlQ2FsbFN0YWNrLCBNZXNzYWdlU291cmNl
IHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCkBAIC0xMzksNTcg
KzE0MSw1NyBAQCB2b2lkIENvbnNvbGVNZXNzYWdlOjphdXRvZ2VuZXJhdGVNZXRhZGF0YShib29s
IGNhbkdlbmVyYXRlQ2FsbFN0YWNrLCBKU0M6OkV4ZWNTdAogfQogCiAvLyBLZWVwIGluIHN5bmMg
d2l0aCBpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCi1zdGF0aWMgVHlwZUJ1aWxk
ZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6OkVudW0gbWVzc2FnZVNvdXJjZVZh
bHVlKE1lc3NhZ2VTb3VyY2Ugc291cmNlKQorc3RhdGljIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6OkVudW0gbWVzc2FnZVNvdXJjZVZhbHVl
KE1lc3NhZ2VTb3VyY2Ugc291cmNlKQogewogICAgIHN3aXRjaCAoc291cmNlKSB7Ci0gICAgY2Fz
ZSBYTUxNZXNzYWdlU291cmNlOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVN
ZXNzYWdlOjpTb3VyY2U6OlhNTDsKLSAgICBjYXNlIEpTTWVzc2FnZVNvdXJjZTogcmV0dXJuIFR5
cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpKYXZhc2NyaXB0Owot
ICAgIGNhc2UgTmV0d29ya01lc3NhZ2VTb3VyY2U6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29s
ZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6TmV0d29yazsKLSAgICBjYXNlIENvbnNvbGVBUElN
ZXNzYWdlU291cmNlOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdl
OjpTb3VyY2U6OkNvbnNvbGVBUEk7Ci0gICAgY2FzZSBTdG9yYWdlTWVzc2FnZVNvdXJjZTogcmV0
dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpTdG9yYWdl
OwotICAgIGNhc2UgQXBwQ2FjaGVNZXNzYWdlU291cmNlOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNv
bnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6OkFwcGNhY2hlOwotICAgIGNhc2UgUmVuZGVy
aW5nTWVzc2FnZVNvdXJjZTogcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVz
c2FnZTo6U291cmNlOjpSZW5kZXJpbmc7Ci0gICAgY2FzZSBDU1NNZXNzYWdlU291cmNlOiByZXR1
cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6OkNTUzsKLSAg
ICBjYXNlIFNlY3VyaXR5TWVzc2FnZVNvdXJjZTogcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xl
OjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpTZWN1cml0eTsKLSAgICBjYXNlIE90aGVyTWVzc2Fn
ZVNvdXJjZTogcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291
cmNlOjpPdGhlcjsKKyAgICBjYXNlIFhNTE1lc3NhZ2VTb3VyY2U6IHJldHVybiBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpYTUw7CisgICAg
Y2FzZSBKU01lc3NhZ2VTb3VyY2U6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25z
b2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpKYXZhc2NyaXB0OworICAgIGNhc2UgTmV0d29y
a01lc3NhZ2VTb3VyY2U6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpD
b25zb2xlTWVzc2FnZTo6U291cmNlOjpOZXR3b3JrOworICAgIGNhc2UgQ29uc29sZUFQSU1lc3Nh
Z2VTb3VyY2U6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xl
TWVzc2FnZTo6U291cmNlOjpDb25zb2xlQVBJOworICAgIGNhc2UgU3RvcmFnZU1lc3NhZ2VTb3Vy
Y2U6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2Fn
ZTo6U291cmNlOjpTdG9yYWdlOworICAgIGNhc2UgQXBwQ2FjaGVNZXNzYWdlU291cmNlOiByZXR1
cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJj
ZTo6QXBwY2FjaGU7CisgICAgY2FzZSBSZW5kZXJpbmdNZXNzYWdlU291cmNlOiByZXR1cm4gSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6UmVu
ZGVyaW5nOworICAgIGNhc2UgQ1NTTWVzc2FnZVNvdXJjZTogcmV0dXJuIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6OkNTUzsKKyAgICBjYXNl
IFNlY3VyaXR5TWVzc2FnZVNvdXJjZTogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNv
bnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6OlNlY3VyaXR5OworICAgIGNhc2UgT3RoZXJN
ZXNzYWdlU291cmNlOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29u
c29sZU1lc3NhZ2U6OlNvdXJjZTo6T3RoZXI7CiAgICAgfQotICAgIHJldHVybiBUeXBlQnVpbGRl
cjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6T3RoZXI7CisgICAgcmV0dXJuIElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6Ok90
aGVyOwogfQogCi1zdGF0aWMgVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpU
eXBlOjpFbnVtIG1lc3NhZ2VUeXBlVmFsdWUoTWVzc2FnZVR5cGUgdHlwZSkKK3N0YXRpYyBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6RW51bSBt
ZXNzYWdlVHlwZVZhbHVlKE1lc3NhZ2VUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7
Ci0gICAgY2FzZSBMb2dNZXNzYWdlVHlwZTogcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpD
b25zb2xlTWVzc2FnZTo6VHlwZTo6TG9nOwotICAgIGNhc2UgQ2xlYXJNZXNzYWdlVHlwZTogcmV0
dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6Q2xlYXI7Ci0g
ICAgY2FzZSBEaXJNZXNzYWdlVHlwZTogcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25z
b2xlTWVzc2FnZTo6VHlwZTo6RGlyOwotICAgIGNhc2UgRGlyWE1MTWVzc2FnZVR5cGU6IHJldHVy
biBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkRpclhNTDsKLSAg
ICBjYXNlIFRhYmxlTWVzc2FnZVR5cGU6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29u
c29sZU1lc3NhZ2U6OlR5cGU6OlRhYmxlOwotICAgIGNhc2UgVHJhY2VNZXNzYWdlVHlwZTogcmV0
dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6VHJhY2U7Ci0g
ICAgY2FzZSBTdGFydEdyb3VwTWVzc2FnZVR5cGU6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29s
ZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlN0YXJ0R3JvdXA7Ci0gICAgY2FzZSBTdGFydEdyb3Vw
Q29sbGFwc2VkTWVzc2FnZVR5cGU6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29s
ZU1lc3NhZ2U6OlR5cGU6OlN0YXJ0R3JvdXBDb2xsYXBzZWQ7Ci0gICAgY2FzZSBFbmRHcm91cE1l
c3NhZ2VUeXBlOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpU
eXBlOjpFbmRHcm91cDsKLSAgICBjYXNlIEFzc2VydE1lc3NhZ2VUeXBlOiByZXR1cm4gVHlwZUJ1
aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpBc3NlcnQ7Ci0gICAgY2FzZSBU
aW1pbmdNZXNzYWdlVHlwZTogcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVz
c2FnZTo6VHlwZTo6VGltaW5nOwotICAgIGNhc2UgUHJvZmlsZU1lc3NhZ2VUeXBlOiByZXR1cm4g
VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpQcm9maWxlOwotICAg
IGNhc2UgUHJvZmlsZUVuZE1lc3NhZ2VUeXBlOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6
OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpQcm9maWxlRW5kOworICAgIGNhc2UgTG9nTWVzc2FnZVR5
cGU6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2Fn
ZTo6VHlwZTo6TG9nOworICAgIGNhc2UgQ2xlYXJNZXNzYWdlVHlwZTogcmV0dXJuIEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpDbGVhcjsKKyAg
ICBjYXNlIERpck1lc3NhZ2VUeXBlOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29u
c29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkRpcjsKKyAgICBjYXNlIERpclhNTE1lc3NhZ2VU
eXBlOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3Nh
Z2U6OlR5cGU6OkRpclhNTDsKKyAgICBjYXNlIFRhYmxlTWVzc2FnZVR5cGU6IHJldHVybiBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6VGFibGU7
CisgICAgY2FzZSBUcmFjZU1lc3NhZ2VUeXBlOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlRyYWNlOworICAgIGNhc2UgU3RhcnRH
cm91cE1lc3NhZ2VUeXBlOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6
Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlN0YXJ0R3JvdXA7CisgICAgY2FzZSBTdGFydEdyb3VwQ29s
bGFwc2VkTWVzc2FnZVR5cGU6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xl
OjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6U3RhcnRHcm91cENvbGxhcHNlZDsKKyAgICBjYXNlIEVu
ZEdyb3VwTWVzc2FnZVR5cGU6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xl
OjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6RW5kR3JvdXA7CisgICAgY2FzZSBBc3NlcnRNZXNzYWdl
VHlwZTogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNz
YWdlOjpUeXBlOjpBc3NlcnQ7CisgICAgY2FzZSBUaW1pbmdNZXNzYWdlVHlwZTogcmV0dXJuIElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpUaW1p
bmc7CisgICAgY2FzZSBQcm9maWxlTWVzc2FnZVR5cGU6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6UHJvZmlsZTsKKyAgICBjYXNl
IFByb2ZpbGVFbmRNZXNzYWdlVHlwZTogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNv
bnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpQcm9maWxlRW5kOwogICAgIH0KLSAgICByZXR1
cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpMb2c7CisgICAg
cmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpU
eXBlOjpMb2c7CiB9CiAKLXN0YXRpYyBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3Nh
Z2U6OkxldmVsOjpFbnVtIG1lc3NhZ2VMZXZlbFZhbHVlKE1lc3NhZ2VMZXZlbCBsZXZlbCkKK3N0
YXRpYyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2
ZWw6OkVudW0gbWVzc2FnZUxldmVsVmFsdWUoTWVzc2FnZUxldmVsIGxldmVsKQogewogICAgIHN3
aXRjaCAobGV2ZWwpIHsKLSAgICBjYXNlIERlYnVnTWVzc2FnZUxldmVsOiByZXR1cm4gVHlwZUJ1
aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbDo6RGVidWc7Ci0gICAgY2FzZSBM
b2dNZXNzYWdlTGV2ZWw6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3Nh
Z2U6OkxldmVsOjpMb2c7Ci0gICAgY2FzZSBXYXJuaW5nTWVzc2FnZUxldmVsOiByZXR1cm4gVHlw
ZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbDo6V2FybmluZzsKLSAgICBj
YXNlIEVycm9yTWVzc2FnZUxldmVsOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNv
bGVNZXNzYWdlOjpMZXZlbDo6RXJyb3I7CisgICAgY2FzZSBEZWJ1Z01lc3NhZ2VMZXZlbDogcmV0
dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZl
bDo6RGVidWc7CisgICAgY2FzZSBMb2dNZXNzYWdlTGV2ZWw6IHJldHVybiBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6OkxvZzsKKyAgICBjYXNl
IFdhcm5pbmdNZXNzYWdlTGV2ZWw6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25z
b2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6Oldhcm5pbmc7CisgICAgY2FzZSBFcnJvck1lc3Nh
Z2VMZXZlbDogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVN
ZXNzYWdlOjpMZXZlbDo6RXJyb3I7CiAgICAgfQotICAgIHJldHVybiBUeXBlQnVpbGRlcjo6Q29u
c29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpMb2c7CisgICAgcmV0dXJuIEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbDo6TG9nOwogfQogCiB2
b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKEluc3BlY3RvckNvbnNvbGVGcm9udGVu
ZERpc3BhdGNoZXIqIGNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIsIEluamVjdGVkU2NyaXB0TWFu
YWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBib29sIGdlbmVyYXRlUHJldmlldykKIHsKLSAg
ICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlPiBqc29uT2JqID0g
VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpjcmVhdGUoKQorICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZT4ganNvbk9i
aiA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpjcmVh
dGUoKQogICAgICAgICAuc2V0U291cmNlKG1lc3NhZ2VTb3VyY2VWYWx1ZShtX3NvdXJjZSkpCiAg
ICAgICAgIC5zZXRMZXZlbChtZXNzYWdlTGV2ZWxWYWx1ZShtX2xldmVsKSkKICAgICAgICAgLnNl
dFRleHQobV9tZXNzYWdlKTsKQEAgLTIwNCwxMSArMjA2LDExIEBAIHZvaWQgQ29uc29sZU1lc3Nh
Z2U6OmFkZFRvRnJvbnRlbmQoSW5zcGVjdG9yQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciogY29u
c29sZUZyCiAgICAgaWYgKG1fYXJndW1lbnRzICYmIG1fYXJndW1lbnRzLT5hcmd1bWVudENvdW50
KCkpIHsKICAgICAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNj
cmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yKG1fYXJndW1lbnRzLT5nbG9iYWxTdGF0ZSgp
KTsKICAgICAgICAgaWYgKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKLSAgICAgICAg
ICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdD4+IGpzb25BcmdzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q+OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpS
ZW1vdGVPYmplY3Q+PiBqc29uQXJncyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD46OmNyZWF0ZSgpOwog
ICAgICAgICAgICAgaWYgKG1fdHlwZSA9PSBUYWJsZU1lc3NhZ2VUeXBlICYmIGdlbmVyYXRlUHJl
dmlldyAmJiBtX2FyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgpKSB7Ci0gICAgICAgICAgICAgICAg
U2NyaXB0VmFsdWUgdGFibGUgPSBtX2FyZ3VtZW50cy0+YXJndW1lbnRBdCgwKTsKLSAgICAgICAg
ICAgICAgICBTY3JpcHRWYWx1ZSBjb2x1bW5zID0gbV9hcmd1bWVudHMtPmFyZ3VtZW50Q291bnQo
KSA+IDEgPyBtX2FyZ3VtZW50cy0+YXJndW1lbnRBdCgxKSA6IFNjcmlwdFZhbHVlKCk7Ci0gICAg
ICAgICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IGlu
c3BlY3RvclZhbHVlID0gaW5qZWN0ZWRTY3JpcHQud3JhcFRhYmxlKHRhYmxlLCBjb2x1bW5zKTsK
KyAgICAgICAgICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB0YWJsZSA9IG1fYXJndW1l
bnRzLT5hcmd1bWVudEF0KDApOworICAgICAgICAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlIGNvbHVtbnMgPSBtX2FyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgpID4gMSA/IG1fYXJndW1l
bnRzLT5hcmd1bWVudEF0KDEpIDogRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKTsKKyAgICAgICAg
ICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0PiBpbnNwZWN0b3JWYWx1ZSA9IGluamVjdGVkU2NyaXB0LndyYXBUYWJsZSh0YWJsZSwgY29s
dW1ucyk7CiAgICAgICAgICAgICAgICAgaWYgKCFpbnNwZWN0b3JWYWx1ZSkgewogICAgICAgICAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMjE2LDcgKzIxOCw3IEBAIHZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRl
bmQoSW5zcGVjdG9yQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciogY29uc29sZUZyCiAgICAgICAg
ICAgICAgICAganNvbkFyZ3MtPmFkZEl0ZW0oaW5zcGVjdG9yVmFsdWUpOwogICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9hcmd1
bWVudHMtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZlB0
cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBpbnNwZWN0b3JWYWx1ZSA9IGlu
amVjdGVkU2NyaXB0LndyYXBPYmplY3QobV9hcmd1bWVudHMtPmFyZ3VtZW50QXQoaSksICJjb25z
b2xlIiwgZ2VuZXJhdGVQcmV2aWV3KTsKKyAgICAgICAgICAgICAgICAgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gaW5zcGVjdG9yVmFsdWUg
PSBpbmplY3RlZFNjcmlwdC53cmFwT2JqZWN0KG1fYXJndW1lbnRzLT5hcmd1bWVudEF0KGkpLCAi
Y29uc29sZSIsIGdlbmVyYXRlUHJldmlldyk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghaW5z
cGVjdG9yVmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvQ29uc29sZU1lc3NhZ2UuaAppbmRleCAwN2Y4OGI2Li43ZmQxNmZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaApAQCAtMzgsMTUgKzM4LDE3IEBACiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKK25hbWVz
cGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworfQorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIERPTVdpbmRvdzsKIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdl
cjsKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIFNjcmlwdEFyZ3VtZW50czsKIGNsYXNz
IFNjcmlwdENhbGxGcmFtZTsKIGNsYXNzIFNjcmlwdENhbGxTdGFjazsKLWNsYXNzIFNjcmlwdFZh
bHVlOwogCiBjbGFzcyBDb25zb2xlTWVzc2FnZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
Q29uc29sZU1lc3NhZ2UpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAKaW5kZXggMDNhODA1Zi4uZWEx
YTBlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hV
dGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGls
cy5jcHAKQEAgLTMxLDE0ICszMSwxNCBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKICNpbmNs
dWRlICJDb250ZW50U2VhcmNoVXRpbHMuaCIKLQotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5o
IgogI2luY2x1ZGUgIlJlZ3VsYXJFeHByZXNzaW9uLmgiCi0KKyNpbmNsdWRlIDxpbnNwZWN0b3Iv
SW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL0J1bXBQb2ludGVyQWxsb2NhdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHlhcnIvWWFyci5oPgog
Cit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1l
c3BhY2UgQ29udGVudFNlYXJjaFV0aWxzIHsKIApAQCAtMTIwLDkgKzEyMCw5IEBAIFBhc3NPd25Q
dHI8VmVjdG9yPHNpemVfdD4+IGxpbmVFbmRpbmdzKGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBy
ZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxk
ZXI6OlBhZ2U6OlNlYXJjaE1hdGNoPiBidWlsZE9iamVjdEZvclNlYXJjaE1hdGNoKGludCBsaW5l
TnVtYmVyLCBjb25zdCBTdHJpbmcmIGxpbmVDb250ZW50KQorc3RhdGljIFBhc3NSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0Y2g+IGJ1aWxkT2JqZWN0Rm9yU2Vh
cmNoTWF0Y2goaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgbGluZUNvbnRlbnQpCiB7Ci0g
ICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hNYXRjaDo6Y3JlYXRlKCkKKyAgICBy
ZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0Y2g6OmNyZWF0ZSgp
CiAgICAgICAgIC5zZXRMaW5lTnVtYmVyKGxpbmVOdW1iZXIpCiAgICAgICAgIC5zZXRMaW5lQ29u
dGVudChsaW5lQ29udGVudCkKICAgICAgICAgLnJlbGVhc2UoKTsKQEAgLTE1Myw5ICsxNTMsOSBA
QCBpbnQgY291bnRSZWd1bGFyRXhwcmVzc2lvbk1hdGNoZXMoY29uc3QgUmVndWxhckV4cHJlc3Np
b24mIHJlZ2V4LCBjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzc1Jl
ZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaE1hdGNoPj4g
c2VhcmNoSW5UZXh0QnlMaW5lcyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgcXVl
cnksIGNvbnN0IGJvb2wgY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCBpc1JlZ2V4KQorUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpQYWdlOjpTZWFyY2hNYXRjaD4+IHNlYXJjaEluVGV4dEJ5TGluZXMoY29uc3QgU3RyaW5nJiB0
ZXh0LCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sIGNhc2VTZW5zaXRpdmUsIGNvbnN0
IGJvb2wgaXNSZWdleCkKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpQYWdlOjpTZWFyY2hNYXRjaD4+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBl
QnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0Y2g+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6U2Vh
cmNoTWF0Y2g+PiByZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hNYXRjaD46OmNyZWF0ZSgpOwogCiAgICAgUmVn
dWxhckV4cHJlc3Npb24gcmVnZXggPSBDb250ZW50U2VhcmNoVXRpbHM6OmNyZWF0ZVNlYXJjaFJl
Z2V4KHF1ZXJ5LCBjYXNlU2Vuc2l0aXZlLCBpc1JlZ2V4KTsKICAgICBWZWN0b3I8cGFpcjxpbnQs
IFN0cmluZz4+IG1hdGNoZXMgPSBnZXRSZWd1bGFyRXhwcmVzc2lvbk1hdGNoZXNCeUxpbmVzKHJl
Z2V4LCB0ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db250ZW50
U2VhcmNoVXRpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRp
bHMuaAppbmRleCA2MGFkNjc4Li4zMTFiNjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0NvbnRlbnRTZWFyY2hVdGlscy5oCkBAIC0zMSwyMSArMzEsMjAgQEAKIAogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgorI2luY2x1
ZGUgIkluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbnNwZWN0b3JBcnJh
eTsKIGNsYXNzIFJlZ3VsYXJFeHByZXNzaW9uOwogCiBuYW1lc3BhY2UgQ29udGVudFNlYXJjaFV0
aWxzIHsKIAogUmVndWxhckV4cHJlc3Npb24gY3JlYXRlU2VhcmNoUmVnZXgoY29uc3QgU3RyaW5n
JiBxdWVyeSwgYm9vbCBjYXNlU2Vuc2l0aXZlLCBib29sIGlzUmVnZXgpOwogaW50IGNvdW50UmVn
dWxhckV4cHJlc3Npb25NYXRjaGVzKGNvbnN0IFJlZ3VsYXJFeHByZXNzaW9uJiwgY29uc3QgU3Ry
aW5nJik7Ci1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6
U2VhcmNoTWF0Y2g+PiBzZWFyY2hJblRleHRCeUxpbmVzKGNvbnN0IFN0cmluZyYgdGV4dCwgY29u
c3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sIGlz
UmVnZXgpOworUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hNYXRjaD4+IHNlYXJjaEluVGV4dEJ5TGluZXMo
Y29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sIGNhc2VT
ZW5zaXRpdmUsIGNvbnN0IGJvb2wgaXNSZWdleCk7CiBUZXh0UG9zaXRpb24gdGV4dFBvc2l0aW9u
RnJvbU9mZnNldChzaXplX3Qgb2Zmc2V0LCBjb25zdCBWZWN0b3I8c2l6ZV90PiYgbGluZUVuZGlu
Z3MpOwogUGFzc093blB0cjxWZWN0b3I8c2l6ZV90Pj4gbGluZUVuZGluZ3MoY29uc3QgU3RyaW5n
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCmluZGV4
IDc3Zjc4MGMuLjk5YmE5ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0LmNwcApAQCAtMzYsMTggKzM2LDIxIEBACiAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlw
dEhvc3QuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1vZHVsZS5oIgotI2luY2x1ZGUgIklu
c3BlY3RvclZhbHVlcy5oIgorI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgogI2lu
Y2x1ZGUgIk5vZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwuaCIKLSNpbmNsdWRl
ICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRGdW5j
dGlvbkNhbGwuaD4KKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3QuaD4KKyNpbmNsdWRl
IDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpBcnJheTsKLXVzaW5nIFdlYkNv
cmU6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lOwotdXNpbmcgV2ViQ29yZTo6VHlw
ZUJ1aWxkZXI6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcjsKLXVzaW5nIFdlYkNvcmU6OlR5
cGVCdWlsZGVyOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcjsKLXVzaW5nIFdl
YkNvcmU6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzOwotdXNpbmcgV2Vi
Q29yZTo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDsKK3VzaW5nIEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5OwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVi
dWdnZXI6OkNhbGxGcmFtZTsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2Vy
OjpGdW5jdGlvbkRldGFpbHM7Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1l
OjpQcm9wZXJ0eURlc2NyaXB0b3I7Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50
aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcjsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDsKKwordXNpbmcgbmFtZXNwYWNlIEluc3BlY3Rv
cjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NiwxNCArNTksMTQgQEAgSW5qZWN0ZWRT
Y3JpcHQ6OkluamVjdGVkU2NyaXB0KCkKIHsKIH0KIAotSW5qZWN0ZWRTY3JpcHQ6OkluamVjdGVk
U2NyaXB0KFNjcmlwdE9iamVjdCBpbmplY3RlZFNjcmlwdE9iamVjdCwgSW5zcGVjdGVkU3RhdGVB
Y2Nlc3NDaGVjayBhY2Nlc3NDaGVjaykKK0luamVjdGVkU2NyaXB0OjpJbmplY3RlZFNjcmlwdChE
ZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgaW5qZWN0ZWRTY3JpcHRPYmplY3QsIEluc3BlY3RlZFN0
YXRlQWNjZXNzQ2hlY2sgYWNjZXNzQ2hlY2spCiAgICAgOiBJbmplY3RlZFNjcmlwdEJhc2UoIklu
amVjdGVkU2NyaXB0IiwgaW5qZWN0ZWRTY3JpcHRPYmplY3QsIGFjY2Vzc0NoZWNrKQogewogfQog
Ci12b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9v
bCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0
ZVByZXZpZXcsIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVz
dWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCit2b2lkIEluamVj
dGVkU2NyaXB0OjpldmFsdWF0ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29t
bWFuZExpbmVBUEksIGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1
bHQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQog
ewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgp
LCAiZXZhbHVhdGUiKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rp
b24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImV2YWx1YXRlIiwgV2ViQ29yZTo6ZnVuY3Rpb25D
YWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGV4
cHJlc3Npb24pOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdEdyb3VwKTsKICAg
ICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChpbmNsdWRlQ29tbWFuZExpbmVBUEkpOwpAQCAtNzIs
OSArNzUsOSBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZShFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbgogICAgIG1ha2VFdmFsQ2FsbChlcnJv
clN0cmluZywgZnVuY3Rpb24sIHJlc3VsdCwgd2FzVGhyb3duKTsKIH0KIAotdm9pZCBJbmplY3Rl
ZFNjcmlwdDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYg
YXJndW1lbnRzLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwgVHlwZUJ1aWxk
ZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQordm9pZCBJbmplY3RlZFNjcmlwdDo6Y2Fs
bEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVj
dElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgYXJndW1lbnRzLCBi
b29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKIHsKLSAgICBTY3JpcHRG
dW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImNhbGxGdW5jdGlv
bk9uIik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVj
dGVkU2NyaXB0T2JqZWN0KCksICJjYWxsRnVuY3Rpb25PbiIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2Fs
bEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmpl
Y3RJZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZXhwcmVzc2lvbik7CiAgICAgZnVu
Y3Rpb24uYXBwZW5kQXJndW1lbnQoYXJndW1lbnRzKTsKQEAgLTgzLDkgKzg2LDkgQEAgdm9pZCBJ
bmplY3RlZFNjcmlwdDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbmcmIG9iamUKICAgICBtYWtlRXZhbENhbGwoZXJyb3JTdHJpbmcsIGZ1bmN0aW9u
LCByZXN1bHQsIHdhc1Rocm93bik7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRl
T25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTY3JpcHRWYWx1ZSYg
Y2FsbEZyYW1lcywgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHBy
ZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGlu
ZUFQSSwgYm9vbCByZXR1cm5CeVZhbHVlLCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPFJl
bW90ZU9iamVjdD4qIHJlc3VsdCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhy
b3duKQordm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBjYWxsRnJhbWVz
LCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNv
bnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBib29s
IHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8UmVtb3RlT2JqZWN0
PiogcmVzdWx0LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Ro
cm93bikKIHsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRP
YmplY3QoKSwgImV2YWx1YXRlT25DYWxsRnJhbWUiKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRG
dW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImV2YWx1YXRlT25D
YWxsRnJhbWUiLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAg
ICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY2FsbEZyYW1lcyk7CiAgICAgZnVuY3Rpb24uYXBw
ZW5kQXJndW1lbnQoY2FsbEZyYW1lSWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGV4
cHJlc3Npb24pOwpAQCAtOTgsNyArMTAxLDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVh
dGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFNjcmlwdFYKIAog
dm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8RnVuY3Rpb25EZXRhaWxz
PiogcmVzdWx0KQogewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNj
cmlwdE9iamVjdCgpLCAiZ2V0RnVuY3Rpb25EZXRhaWxzIik7CisgICAgRGVwcmVjYXRlZDo6U2Ny
aXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJnZXRGdW5j
dGlvbkRldGFpbHMiLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7
CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZnVuY3Rpb25JZCk7CiAgICAgUmVmUHRyPElu
c3BlY3RvclZhbHVlPiByZXN1bHRWYWx1ZTsKICAgICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJlc3Vs
dFZhbHVlKTsKQEAgLTExMiw3ICsxMTUsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRGdW5j
dGlvbkRldGFpbHMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmCiAKIHZv
aWQgSW5qZWN0ZWRTY3JpcHQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIG93blByb3BlcnRpZXMsIFJlZlB0cjxBcnJh
eTxQcm9wZXJ0eURlc2NyaXB0b3I+PiogcHJvcGVydGllcykKIHsKLSAgICBTY3JpcHRGdW5jdGlv
bkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImdldFByb3BlcnRpZXMiKTsK
KyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3Jp
cHRPYmplY3QoKSwgImdldFByb3BlcnRpZXMiLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVy
RnJvbUFueVRocmVhZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQpOwog
ICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG93blByb3BlcnRpZXMpOwogCkBAIC0xMjcsNyAr
MTMwLDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0UHJvcGVydGllcyhFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWMKIAogdm9pZCBJbmplY3RlZFNjcmlwdDo6
Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3Ry
aW5nJiBvYmplY3RJZCwgUmVmUHRyPEFycmF5PEludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4q
IHByb3BlcnRpZXMpCiB7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVk
U2NyaXB0T2JqZWN0KCksICJnZXRJbnRlcm5hbFByb3BlcnRpZXMiKTsKKyAgICBEZXByZWNhdGVk
OjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImdl
dEludGVybmFsUHJvcGVydGllcyIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55
VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RJZCk7CiAKICAgICBS
ZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdDsKQEAgLTE0NiwxMSArMTQ5LDExIEBAIE5vZGUq
IEluamVjdGVkU2NyaXB0Ojpub2RlRm9yT2JqZWN0SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJZCkK
ICAgICBpZiAoaGFzTm9WYWx1ZSgpIHx8ICFjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0
ZWRTY3JpcHRPYmplY3QoKSwgIm5vZGVGb3JPYmplY3RJZCIpOworICAgIERlcHJlY2F0ZWQ6OlNj
cmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAibm9kZUZv
ck9iamVjdElkIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwog
ICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKIAogICAgIGJvb2wgaGFkRXhj
ZXB0aW9uID0gZmFsc2U7Ci0gICAgU2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBjYWxsRnVuY3Rp
b25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CisgICAgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQo
ZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CiAgICAgQVNTRVJUKCFoYWRFeGNlcHRpb24pOwogCiAg
ICAgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdDo6c2NyaXB0VmFsdWVBc05vZGUocmVzdWx0VmFs
dWUpOwpAQCAtMTU4LDIwICsxNjEsMjAgQEAgTm9kZSogSW5qZWN0ZWRTY3JpcHQ6Om5vZGVGb3JP
YmplY3RJZChjb25zdCBTdHJpbmcmIG9iamVjdElkKQogCiB2b2lkIEluamVjdGVkU2NyaXB0Ojpy
ZWxlYXNlT2JqZWN0KGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpCiB7Ci0gICAgU2NyaXB0RnVuY3Rp
b25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJyZWxlYXNlT2JqZWN0Iik7
CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2Ny
aXB0T2JqZWN0KCksICJyZWxlYXNlT2JqZWN0IiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxl
ckZyb21BbnlUaHJlYWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsK
ICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdDsKICAgICBtYWtlQ2FsbChmdW5jdGlv
biwgJnJlc3VsdCk7CiB9CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLVBhc3NS
ZWZQdHI8QXJyYXk8Q2FsbEZyYW1lPj4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVzKGNv
bnN0IFNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzKQorUGFzc1JlZlB0cjxBcnJheTxDYWxsRnJhbWU+
PiBJbmplY3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUmIGNhbGxGcmFtZXMpCiB7CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwotICAgIFNj
cmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAid3JhcENh
bGxGcmFtZXMiKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24o
aW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgIndyYXBDYWxsRnJhbWVzIiwgV2ViQ29yZTo6ZnVuY3Rp
b25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50
KGNhbGxGcmFtZXMpOwogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgU2NyaXB0
VmFsdWUgY2FsbEZyYW1lc1ZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0
aW9uLCBoYWRFeGNlcHRpb24pOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGNhbGxGcmFt
ZXNWYWx1ZSA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbiwgaGFkRXhjZXB0
aW9uKTsKICAgICBBU1NFUlQoIWhhZEV4Y2VwdGlvbik7CiAgICAgUmVmUHRyPEluc3BlY3RvclZh
bHVlPiByZXN1bHQgPSBjYWxsRnJhbWVzVmFsdWUudG9JbnNwZWN0b3JWYWx1ZShzY3JpcHRTdGF0
ZSgpKTsKICAgICBpZiAocmVzdWx0LT50eXBlKCkgPT0gSW5zcGVjdG9yVmFsdWU6OlR5cGVBcnJh
eSkKQEAgLTE4MCwyNiArMTgzLDI2IEBAIFBhc3NSZWZQdHI8QXJyYXk8Q2FsbEZyYW1lPj4gSW5q
ZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVzKGNvbnN0IFNjcmlwdFZhbHVlJiBjCiB9CiAjZW5k
aWYKIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmpl
Y3RlZFNjcmlwdDo6d3JhcE9iamVjdChjb25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IFN0
cmluZyYgZ3JvdXBOYW1lLCBib29sIGdlbmVyYXRlUHJldmlldykgY29uc3QKK1Bhc3NSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNj
cmlwdDo6d3JhcE9iamVjdChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIGNv
bnN0IFN0cmluZyYgZ3JvdXBOYW1lLCBib29sIGdlbmVyYXRlUHJldmlldykgY29uc3QKIHsKICAg
ICBBU1NFUlQoIWhhc05vVmFsdWUoKSk7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIHdyYXBGdW5j
dGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAid3JhcE9iamVjdCIpOworICAgIERlcHJlY2F0
ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCB3cmFwRnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3Qo
KSwgIndyYXBPYmplY3QiKTsKICAgICB3cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1lbnQodmFsdWUp
OwogICAgIHdyYXBGdW5jdGlvbi5hcHBlbmRBcmd1bWVudChncm91cE5hbWUpOwogICAgIHdyYXBG
dW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coKSk7CiAgICAg
d3JhcEZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGdlbmVyYXRlUHJldmlldyk7CiAgICAgYm9vbCBo
YWRFeGNlcHRpb24gPSBmYWxzZTsKLSAgICBTY3JpcHRWYWx1ZSByID0gY2FsbEZ1bmN0aW9uV2l0
aEV2YWxFbmFibGVkKHdyYXBGdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKKyAgICBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSByID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKHdyYXBGdW5jdGlv
biwgaGFkRXhjZXB0aW9uKTsKICAgICBpZiAoaGFkRXhjZXB0aW9uKQogICAgICAgICByZXR1cm4g
MDsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByYXdSZXN1bHQgPSByLnRvSW5zcGVjdG9y
VmFsdWUoc2NyaXB0U3RhdGUoKSktPmFzT2JqZWN0KCk7Ci0gICAgcmV0dXJuIFR5cGVCdWlsZGVy
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q6OnJ1bnRpbWVDYXN0KHJhd1Jlc3VsdCk7CisgICAgcmV0
dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDo6cnVudGlt
ZUNhc3QocmF3UmVzdWx0KTsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6
UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcFRhYmxlKGNvbnN0IFNjcmlwdFZhbHVl
JiB0YWJsZSwgY29uc3QgU2NyaXB0VmFsdWUmIGNvbHVtbnMpIGNvbnN0CitQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3Jp
cHQ6OndyYXBUYWJsZShjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdGFibGUsIGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBjb2x1bW5zKSBjb25zdAogewogICAgIEFTU0VSVCgh
aGFzTm9WYWx1ZSgpKTsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgd3JhcEZ1bmN0aW9uKGluamVj
dGVkU2NyaXB0T2JqZWN0KCksICJ3cmFwVGFibGUiKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRG
dW5jdGlvbkNhbGwgd3JhcEZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJ3cmFwVGFi
bGUiKTsKICAgICB3cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY2FuQWNjZXNzSW5zcGVjdGVk
V2luZG93KCkpOwogICAgIHdyYXBGdW5jdGlvbi5hcHBlbmRBcmd1bWVudCh0YWJsZSk7CiAgICAg
aWYgKGNvbHVtbnMuaGFzTm9WYWx1ZSgpKQpAQCAtMjA3LDI2ICsyMTAsMjYgQEAgUGFzc1JlZlB0
cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3Jh
cFRhYmxlKGNvbnN0IFMKICAgICBlbHNlCiAgICAgICAgIHdyYXBGdW5jdGlvbi5hcHBlbmRBcmd1
bWVudChjb2x1bW5zKTsKICAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwotICAgIFNjcmlw
dFZhbHVlIHIgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQod3JhcEZ1bmN0aW9uLCBoYWRF
eGNlcHRpb24pOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHIgPSBjYWxsRnVuY3Rpb25X
aXRoRXZhbEVuYWJsZWQod3JhcEZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwogICAgIGlmIChoYWRF
eGNlcHRpb24pCiAgICAgICAgIHJldHVybiAwOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IHJhd1Jlc3VsdCA9IHIudG9JbnNwZWN0b3JWYWx1ZShzY3JpcHRTdGF0ZSgpKS0+YXNPYmplY3Qo
KTsKLSAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDo6cnVudGlt
ZUNhc3QocmF3UmVzdWx0KTsKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0OjpydW50aW1lQ2FzdChyYXdSZXN1bHQpOwogfQogCi1QYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3
cmFwTm9kZShOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSkKK1Bhc3NSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNj
cmlwdDo6d3JhcE5vZGUoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUpCiB7CiAg
ICAgcmV0dXJuIHdyYXBPYmplY3Qobm9kZUFzU2NyaXB0VmFsdWUobm9kZSksIGdyb3VwTmFtZSk7
CiB9CiAKLVNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0OjpmaW5kT2JqZWN0QnlJZChjb25zdCBT
dHJpbmcmIG9iamVjdElkKSBjb25zdAorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgSW5qZWN0ZWRT
Y3JpcHQ6OmZpbmRPYmplY3RCeUlkKGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlv
bihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZmluZE9iamVjdEJ5SWQiKTsKKyAgICBEZXByZWNh
dGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwg
ImZpbmRPYmplY3RCeUlkIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJl
YWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKIAogICAgIGJvb2wg
aGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgU2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBjYWxs
RnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CisgICAgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVu
YWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CiAgICAgQVNTRVJUKCFoYWRFeGNlcHRpb24p
OwogICAgIHJldHVybiByZXN1bHRWYWx1ZTsKIH0KQEAgLTIzNCw3ICsyMzcsNyBAQCBTY3JpcHRW
YWx1ZSBJbmplY3RlZFNjcmlwdDo6ZmluZE9iamVjdEJ5SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJ
ZCkgY29uc3QKIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6Omluc3BlY3ROb2RlKE5vZGUqIG5vZGUpCiB7
CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5j
dGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiaW5zcGVjdE5vZGUiKTsKKyAgICBEZXByZWNh
dGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwg
Imluc3BlY3ROb2RlIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQp
OwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG5vZGVBc1NjcmlwdFZhbHVlKG5vZGUpKTsK
ICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdDsKICAgICBtYWtlQ2FsbChmdW5jdGlv
biwgJnJlc3VsdCk7CkBAIC0yNDMsMTQgKzI0NiwxNCBAQCB2b2lkIEluamVjdGVkU2NyaXB0Ojpp
bnNwZWN0Tm9kZShOb2RlKiBub2RlKQogdm9pZCBJbmplY3RlZFNjcmlwdDo6cmVsZWFzZU9iamVj
dEdyb3VwKGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApCiB7CiAgICAgQVNTRVJUKCFoYXNOb1Zh
bHVlKCkpOwotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCByZWxlYXNlRnVuY3Rpb24oaW5qZWN0ZWRT
Y3JpcHRPYmplY3QoKSwgInJlbGVhc2VPYmplY3RHcm91cCIpOworICAgIERlcHJlY2F0ZWQ6OlNj
cmlwdEZ1bmN0aW9uQ2FsbCByZWxlYXNlRnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwg
InJlbGVhc2VPYmplY3RHcm91cCIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55
VGhyZWFkKTsKICAgICByZWxlYXNlRnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0R3JvdXAp
OwogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7CiAgICAgY2FsbEZ1bmN0aW9uV2l0aEV2
YWxFbmFibGVkKHJlbGVhc2VGdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKICAgICBBU1NFUlQoIWhh
ZEV4Y2VwdGlvbik7CiB9CiAKLVNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0Ojpub2RlQXNTY3Jp
cHRWYWx1ZShOb2RlKiBub2RlKQorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3Jp
cHQ6Om5vZGVBc1NjcmlwdFZhbHVlKE5vZGUqIG5vZGUpCiB7CiAgICAgcmV0dXJuIEluamVjdGVk
U2NyaXB0SG9zdDo6bm9kZUFzU2NyaXB0VmFsdWUoc2NyaXB0U3RhdGUoKSwgbm9kZSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCmluZGV4IDliNmFkMmYuLmZk
OWI5ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCkBAIC0z
MywxOSArMzMsMjEgQEAKIAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0QmFzZS5oIgogI2luY2x1
ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgotI2luY2x1ZGUgIkluc3BlY3RvclR5cGVCdWls
ZGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmgiCiAjaW5jbHVkZSAi
U2NyaXB0QXJndW1lbnRzLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAorbmFtZXNwYWNlIERl
cHJlY2F0ZWQgeworY2xhc3MgU2NyaXB0T2JqZWN0OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEluamVjdGVkU2NyaXB0TW9kdWxlOwogY2xhc3MgTm9kZTsKLWNsYXNzIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKQEAgLTYwLDQwICs2
Miw0MCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICBib29sIGluY2x1ZGVDb21tYW5kTGlu
ZUFQSSwKICAgICAgICAgICAgICAgICAgIGJvb2wgcmV0dXJuQnlWYWx1ZSwKICAgICAgICAgICAg
ICAgICAgIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LAotICAgICAgICAgICAgICAgICAgUmVmUHRyPFR5
cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsCi0gICAgICAgICAgICAg
ICAgICBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOworICAgICAgICAg
ICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4qIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKTsKICAgICB2b2lkIGNhbGxGdW5jdGlvbk9uKEVy
cm9yU3RyaW5nKiwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgb2JqZWN0
SWQsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sCiAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGFyZ3VtZW50cywKICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgcmV0dXJuQnlWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRy
PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOwor
ICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKTsKICAgICB2
b2lkIGV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmV0dXJuQnlWYWx1ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBnZW5lcmF0ZVByZXZpZXcsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0PiogcmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlQnVpbGRlcjo6
T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOwotICAgIHZvaWQgZ2V0RnVuY3Rpb25EZXRhaWxz
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+KiByZXN1bHQpOwotICAgIHZvaWQgZ2V0UHJv
cGVydGllcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGJvb2wgb3duUHJv
cGVydGllcywgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UnVudGltZTo6
UHJvcGVydHlEZXNjcmlwdG9yPj4qIHJlc3VsdCk7Ci0gICAgdm9pZCBnZXRJbnRlcm5hbFByb3Bl
cnRpZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3Jp
cHRvcj4+KiByZXN1bHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRw
dXQ8Ym9vbD4qIHdhc1Rocm93bik7CisgICAgdm9pZCBnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiogcmVzdWx0KTsKKyAgICB2b2lkIGdl
dFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIG93
blByb3BlcnRpZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiogcmVzdWx0KTsK
KyAgICB2b2lkIGdldEludGVybmFsUHJvcGVydGllcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgb2JqZWN0SWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+KiBy
ZXN1bHQpOwogICAgIE5vZGUqIG5vZGVGb3JPYmplY3RJZChjb25zdCBTdHJpbmcmIG9iamVjdElk
KTsKICAgICB2b2lkIHJlbGVhc2VPYmplY3QoY29uc3QgU3RyaW5nJiBvYmplY3RJZCk7CiAKICNp
ZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcnJheTxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IHdyYXBDYWxsRnJhbWVz
KGNvbnN0IFNjcmlwdFZhbHVlJik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4g
d3JhcENhbGxGcmFtZXMoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmKTsKICNlbmRpZgog
Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiB3cmFw
T2JqZWN0KGNvbnN0IFNjcmlwdFZhbHVlJiwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUsIGJvb2wg
Z2VuZXJhdGVQcmV2aWV3ID0gZmFsc2UpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxk
ZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gd3JhcFRhYmxlKGNvbnN0IFNjcmlwdFZhbHVlJiB0
YWJsZSwgY29uc3QgU2NyaXB0VmFsdWUmIGNvbHVtbnMpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8
VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gd3JhcE5vZGUoTm9kZSosIGNvbnN0
IFN0cmluZyYgZ3JvdXBOYW1lKTsKLSAgICBTY3JpcHRWYWx1ZSBmaW5kT2JqZWN0QnlJZChjb25z
dCBTdHJpbmcmIG9iamVjdElkKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gd3JhcE9iamVjdChjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lLCBib29sIGdlbmVyYXRl
UHJldmlldyA9IGZhbHNlKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gd3JhcFRhYmxlKGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiB0YWJsZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGNvbHVt
bnMpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0PiB3cmFwTm9kZShOb2RlKiwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUp
OworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGZpbmRPYmplY3RCeUlkKGNvbnN0IFN0cmlu
ZyYgb2JqZWN0SWQpIGNvbnN0OwogCiAgICAgdm9pZCBpbnNwZWN0Tm9kZShOb2RlKik7CiAgICAg
dm9pZCByZWxlYXNlT2JqZWN0R3JvdXAoY29uc3QgU3RyaW5nJik7CkBAIC0xMDEsOSArMTAzLDkg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgSW5qZWN0ZWRTY3JpcHRNb2R1
bGU7CiAgICAgZnJpZW5kIEluamVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5q
ZWN0ZWRTY3JpcHRGb3IoSlNDOjpFeGVjU3RhdGUqKTsKLSAgICBJbmplY3RlZFNjcmlwdChTY3Jp
cHRPYmplY3QsIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOworICAgIEluamVjdGVkU2NyaXB0
KERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCwgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayk7CiAK
LSAgICBTY3JpcHRWYWx1ZSBub2RlQXNTY3JpcHRWYWx1ZShOb2RlKik7CisgICAgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUgbm9kZUFzU2NyaXB0VmFsdWUoTm9kZSopOwogfTsKIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwCmluZGV4
IGQ5ZmJhNDAuLjYzZjI5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdEJhc2UuY3BwCkBAIC0zNSwxMiArMzUsMTQgQEAKICNpbmNsdWRlICJJbmplY3Rl
ZFNjcmlwdEJhc2UuaCIKIAogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgot
I2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgotI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2Fs
bC5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oPgorI2luY2x1ZGUg
PGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTR2xvYmFs
T2JqZWN0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLXVzaW5nIFdlYkNv
cmU6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q7Cit1c2luZyBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q7CisKK3VzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTAsMTQgKzUyLDE0IEBAIElu
amVjdGVkU2NyaXB0QmFzZTo6SW5qZWN0ZWRTY3JpcHRCYXNlKGNvbnN0IFN0cmluZyYgbmFtZSkK
IHsKIH0KIAotSW5qZWN0ZWRTY3JpcHRCYXNlOjpJbmplY3RlZFNjcmlwdEJhc2UoY29uc3QgU3Ry
aW5nJiBuYW1lLCBTY3JpcHRPYmplY3QgaW5qZWN0ZWRTY3JpcHRPYmplY3QsIEluc3BlY3RlZFN0
YXRlQWNjZXNzQ2hlY2sgYWNjZXNzQ2hlY2spCitJbmplY3RlZFNjcmlwdEJhc2U6OkluamVjdGVk
U2NyaXB0QmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBp
bmplY3RlZFNjcmlwdE9iamVjdCwgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayBhY2Nlc3NDaGVj
aykKICAgICA6IG1fbmFtZShuYW1lKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE9iamVjdChpbmpl
Y3RlZFNjcmlwdE9iamVjdCkKICAgICAsIG1faW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayhhY2Nl
c3NDaGVjaykKIHsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6OmluaXRpYWxpemUoU2Ny
aXB0T2JqZWN0IGluamVjdGVkU2NyaXB0T2JqZWN0LCBJbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNr
IGFjY2Vzc0NoZWNrKQordm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6OmluaXRpYWxpemUoRGVwcmVj
YXRlZDo6U2NyaXB0T2JqZWN0IGluamVjdGVkU2NyaXB0T2JqZWN0LCBJbnNwZWN0ZWRTdGF0ZUFj
Y2Vzc0NoZWNrIGFjY2Vzc0NoZWNrKQogewogICAgIG1faW5qZWN0ZWRTY3JpcHRPYmplY3QgPSBp
bmplY3RlZFNjcmlwdE9iamVjdDsKICAgICBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sgPSBh
Y2Nlc3NDaGVjazsKQEAgLTY4LDEyICs3MCwxMiBAQCBib29sIEluamVjdGVkU2NyaXB0QmFzZTo6
Y2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KCkgY29uc3QKICAgICByZXR1cm4gbV9pbnNwZWN0ZWRT
dGF0ZUFjY2Vzc0NoZWNrKG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKSk7CiB9
CiAKLWNvbnN0IFNjcmlwdE9iamVjdCYgSW5qZWN0ZWRTY3JpcHRCYXNlOjppbmplY3RlZFNjcmlw
dE9iamVjdCgpIGNvbnN0Citjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmIEluamVjdGVk
U2NyaXB0QmFzZTo6aW5qZWN0ZWRTY3JpcHRPYmplY3QoKSBjb25zdAogewogICAgIHJldHVybiBt
X2luamVjdGVkU2NyaXB0T2JqZWN0OwogfQogCi1TY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdEJh
c2U6OmNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0
aW9uLCBib29sJiBoYWRFeGNlcHRpb24pIGNvbnN0CitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBJ
bmplY3RlZFNjcmlwdEJhc2U6OmNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChEZXByZWNhdGVk
OjpTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uLCBib29sJiBoYWRFeGNlcHRpb24pIGNvbnN0
CiB7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKG1faW5qZWN0ZWRTY3JpcHRPYmpl
Y3Quc2NyaXB0U3RhdGUoKSk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNv
b2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbENhbGxGdW5jdGlvbihzY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBuYW1lKCksIDEpOwpAQCAtODcsNyArODksNyBAQCBTY3JpcHRWYWx1
ZSBJbmplY3RlZFNjcmlwdEJhc2U6OmNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChTY3JpcHRG
dW5jdGlvbkNhbGwmCiAgICAgICAgICAgICBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5zZXRFdmFsRW5hYmxlZCh0cnVlKTsKICAgICB9CiAKLSAgICBTY3JpcHRWYWx1ZSByZXN1
bHRWYWx1ZSA9IGZ1bmN0aW9uLmNhbGwoaGFkRXhjZXB0aW9uKTsKKyAgICBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSByZXN1bHRWYWx1ZSA9IGZ1bmN0aW9uLmNhbGwoaGFkRXhjZXB0aW9uKTsKIAog
ICAgIGlmIChldmFsSXNEaXNhYmxlZCkKICAgICAgICAgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9i
YWxPYmplY3QoKS0+c2V0RXZhbEVuYWJsZWQoZmFsc2UpOwpAQCAtOTYsNyArOTgsNyBAQCBTY3Jp
cHRWYWx1ZSBJbmplY3RlZFNjcmlwdEJhc2U6OmNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChT
Y3JpcHRGdW5jdGlvbkNhbGwmCiAgICAgcmV0dXJuIHJlc3VsdFZhbHVlOwogfQogCi12b2lkIElu
amVjdGVkU2NyaXB0QmFzZTo6bWFrZUNhbGwoU2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwg
UmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KQordm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6
Om1ha2VDYWxsKERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24sIFJlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKIHsKICAgICBpZiAoaGFzTm9WYWx1ZSgpIHx8ICFj
YW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coKSkgewogICAgICAgICAqcmVzdWx0ID0gSW5zcGVjdG9y
VmFsdWU6Om51bGwoKTsKQEAgLTEwNCw3ICsxMDYsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0QmFz
ZTo6bWFrZUNhbGwoU2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwgUmVmUHRyPEluc3BlY3Rv
cgogICAgIH0KIAogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgU2NyaXB0VmFs
dWUgcmVzdWx0VmFsdWUgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhh
ZEV4Y2VwdGlvbik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBj
YWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CiAKICAg
ICBBU1NFUlQoIWhhZEV4Y2VwdGlvbik7CiAgICAgaWYgKCFoYWRFeGNlcHRpb24pIHsKQEAgLTEx
NSw3ICsxMTcsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUNhbGwoU2NyaXB0RnVu
Y3Rpb25DYWxsJiBmdW5jdGlvbiwgUmVmUHRyPEluc3BlY3RvcgogICAgICAgICAqcmVzdWx0ID0g
SW5zcGVjdG9yU3RyaW5nOjpjcmVhdGUoIkV4Y2VwdGlvbiB3aGlsZSBtYWtpbmcgYSBjYWxsLiIp
OwogfQogCi12b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUV2YWxDYWxsKEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgU2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwgUmVmUHRyPFR5cGVC
dWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiBvYmplY3RSZXN1bHQsIFR5cGVCdWlsZGVy
OjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKK3ZvaWQgSW5qZWN0ZWRTY3JpcHRCYXNlOjpt
YWtlRXZhbENhbGwoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBEZXByZWNhdGVkOjpTY3JpcHRG
dW5jdGlvbkNhbGwmIGZ1bmN0aW9uLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0Piogb2JqZWN0UmVzdWx0LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yVmFs
dWU+IHJlc3VsdDsKICAgICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJlc3VsdCk7CkBAIC0xMzksNyAr
MTQxLDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6Om1ha2VFdmFsQ2FsbChFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIFNjcmlwdEZ1bmN0aW9uQ2EKICAgICAgICAgKmVycm9yU3RyaW5nID0g
IkludGVybmFsIGVycm9yOiByZXN1bHQgaXMgbm90IGEgcGFpciBvZiB2YWx1ZSBhbmQgd2FzVGhy
b3duIGZsYWciOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgICpvYmplY3RSZXN1bHQgPSBU
eXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0OjpydW50aW1lQ2FzdChyZXN1bHRPYmop
OworICAgICpvYmplY3RSZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpS
ZW1vdGVPYmplY3Q6OnJ1bnRpbWVDYXN0KHJlc3VsdE9iaik7CiAgICAgKndhc1Rocm93biA9IHdh
c1Rocm93blZhbDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0QmFzZS5oCmluZGV4IDc5NmY2YzAuLjc1ZjUyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmgKQEAgLTMxLDE1ICszMSwyMCBAQAogI2lmbmRl
ZiBJbmplY3RlZFNjcmlwdEJhc2VfaAogI2RlZmluZSBJbmplY3RlZFNjcmlwdEJhc2VfaAogCi0j
aW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3Qu
aCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCIKKyNpbmNsdWRlIDxiaW5k
aW5ncy9TY3JpcHRPYmplY3QuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBJbnNwZWN0b3JW
YWx1ZTsKK25hbWVzcGFjZSBEZXByZWNhdGVkIHsKIGNsYXNzIFNjcmlwdEZ1bmN0aW9uQ2FsbDsK
K30KKworbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKK30KKwor
bmFtZXNwYWNlIFdlYkNvcmUgewogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIApAQCAt
NTYsMTggKzYxLDE4IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICB0eXBlZGVmIGJvb2wgKCpJ
bnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKShKU0M6OkV4ZWNTdGF0ZSopOwogICAgIEluamVjdGVk
U2NyaXB0QmFzZShjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIEluamVjdGVkU2NyaXB0QmFzZShj
b25zdCBTdHJpbmcmIG5hbWUsIFNjcmlwdE9iamVjdCwgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVj
ayk7CisgICAgSW5qZWN0ZWRTY3JpcHRCYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgRGVwcmVjYXRl
ZDo6U2NyaXB0T2JqZWN0LCBJbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKTsKIAotICAgIHZvaWQg
aW5pdGlhbGl6ZShTY3JpcHRPYmplY3QsIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOworICAg
IHZvaWQgaW5pdGlhbGl6ZShEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QsIEluc3BlY3RlZFN0YXRl
QWNjZXNzQ2hlY2spOwogICAgIGJvb2wgY2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KCkgY29uc3Q7
Ci0gICAgY29uc3QgU2NyaXB0T2JqZWN0JiBpbmplY3RlZFNjcmlwdE9iamVjdCgpIGNvbnN0Owot
ICAgIFNjcmlwdFZhbHVlIGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChTY3JpcHRGdW5jdGlv
bkNhbGwmLCBib29sJiBoYWRFeGNlcHRpb24pIGNvbnN0OwotICAgIHZvaWQgbWFrZUNhbGwoU2Ny
aXB0RnVuY3Rpb25DYWxsJiwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKLSAgICB2
b2lkIG1ha2VFdmFsQ2FsbChFcnJvclN0cmluZyosIFNjcmlwdEZ1bmN0aW9uQ2FsbCYsIFJlZlB0
cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBUeXBlQnVpbGRl
cjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOworICAgIGNvbnN0IERlcHJlY2F0ZWQ6OlNj
cmlwdE9iamVjdCYgaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSBjb25zdDsKKyAgICBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoRGVwcmVjYXRlZDo6U2Ny
aXB0RnVuY3Rpb25DYWxsJiwgYm9vbCYgaGFkRXhjZXB0aW9uKSBjb25zdDsKKyAgICB2b2lkIG1h
a2VDYWxsKERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCYsIFJlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKKyAgICB2b2lkIG1ha2VFdmFsQ2FsbChFcnJvclN0
cmluZyosIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCYsIFJlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsIEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKTsKIAogcHJpdmF0ZToKICAg
ICBTdHJpbmcgbV9uYW1lOwotICAgIFNjcmlwdE9iamVjdCBtX2luamVjdGVkU2NyaXB0T2JqZWN0
OworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBtX2luamVjdGVkU2NyaXB0T2JqZWN0Owog
ICAgIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sgbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNr
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0Q2FudmFzTW9kdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdENhbnZhc01vZHVsZS5jcHAKaW5kZXggZmFkNzk4Yi4uNThiZTczOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUu
Y3BwCkBAIC0zNywxNSArMzcsMTkgQEAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2lu
Y2x1ZGUgIkluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLmgiCiAjaW5jbHVkZSAiSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCi0j
aW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRl
LmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmg+CisjaW5jbHVkZSA8
YmluZGluZ3MvU2NyaXB0T2JqZWN0Lmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZh
bHVlcy5oPgogCi11c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6QXJyYXk7Ci11c2luZyBXZWJD
b3JlOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJjZUlkOwotdXNpbmcgV2ViQ29yZTo6VHlw
ZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VJbmZvOwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxk
ZXI6OkNhbnZhczo6UmVzb3VyY2VTdGF0ZTsKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpD
YW52YXM6OlRyYWNlTG9nOwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJh
Y2VMb2dJZDsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5OwordXNpbmcgSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJjZUlkOwordXNpbmcgSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJjZUluZm87Cit1c2luZyBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlU3RhdGU7Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nOwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q2FudmFzOjpUcmFjZUxvZ0lkOworCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY2LDM0ICs3MCwzNCBAQCBTdHJpbmcgSW5qZWN0ZWRTY3Jp
cHRDYW52YXNNb2R1bGU6OnNvdXJjZSgpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZyhyZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZV9q
cyksIHNpemVvZihJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZV9qcykpOwogfQogCi1T
Y3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OndyYXBDYW52YXMyRENvbnRl
eHQoY29uc3QgU2NyaXB0T2JqZWN0JiBjb250ZXh0KQorRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0
IEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjp3cmFwQ2FudmFzMkRDb250ZXh0KGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgY29udGV4dCkKIHsKICAgICByZXR1cm4gY2FsbFdyYXBD
b250ZXh0RnVuY3Rpb24oIndyYXBDYW52YXMyRENvbnRleHQiLCBjb250ZXh0KTsKIH0KIAogI2lm
IEVOQUJMRShXRUJHTCkKLVNjcmlwdE9iamVjdCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6
d3JhcFdlYkdMQ29udGV4dChjb25zdCBTY3JpcHRPYmplY3QmIGdsQ29udGV4dCkKK0RlcHJlY2F0
ZWQ6OlNjcmlwdE9iamVjdCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6d3JhcFdlYkdMQ29u
dGV4dChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmIGdsQ29udGV4dCkKIHsKICAgICBy
ZXR1cm4gY2FsbFdyYXBDb250ZXh0RnVuY3Rpb24oIndyYXBXZWJHTENvbnRleHQiLCBnbENvbnRl
eHQpOwogfQogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIAotU2NyaXB0T2JqZWN0IEluamVjdGVk
U2NyaXB0Q2FudmFzTW9kdWxlOjpjYWxsV3JhcENvbnRleHRGdW5jdGlvbihjb25zdCBTdHJpbmcm
IGZ1bmN0aW9uTmFtZSwgY29uc3QgU2NyaXB0T2JqZWN0JiBjb250ZXh0KQorRGVwcmVjYXRlZDo6
U2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjpjYWxsV3JhcENvbnRleHRG
dW5jdGlvbihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0T2JqZWN0JiBjb250ZXh0KQogewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihp
bmplY3RlZFNjcmlwdE9iamVjdCgpLCBmdW5jdGlvbk5hbWUpOworICAgIERlcHJlY2F0ZWQ6OlNj
cmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCBmdW5jdGlv
bk5hbWUsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICBm
dW5jdGlvbi5hcHBlbmRBcmd1bWVudChjb250ZXh0KTsKICAgICBib29sIGhhZEV4Y2VwdGlvbiA9
IGZhbHNlOwotICAgIFNjcmlwdFZhbHVlIHJlc3VsdFZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2
YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOworICAgIERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlIHJlc3VsdFZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9u
LCBoYWRFeGNlcHRpb24pOwogICAgIGlmIChoYWRFeGNlcHRpb24gfHwgcmVzdWx0VmFsdWUuaGFz
Tm9WYWx1ZSgpIHx8ICFyZXN1bHRWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gU2NyaXB0T2JqZWN0KCk7CisgICAgICAgIHJl
dHVybiBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QoKTsKICAgICB9Ci0gICAgcmV0dXJuIFNjcmlw
dE9iamVjdChjb250ZXh0LnNjcmlwdFN0YXRlKCksIHJlc3VsdFZhbHVlKTsKKyAgICByZXR1cm4g
RGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KGNvbnRleHQuc2NyaXB0U3RhdGUoKSwgcmVzdWx0VmFs
dWUpOwogfQogCiB2b2lkIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjptYXJrRnJhbWVFbmQo
KQogewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVj
dCgpLCAibWFya0ZyYW1lRW5kIik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxs
IGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJtYXJrRnJhbWVFbmQiLCBXZWJDb3Jl
OjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAgUmVmUHRyPEluc3BlY3Rv
clZhbHVlPiByZXN1bHRWYWx1ZTsKICAgICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJlc3VsdFZhbHVl
KTsKICAgICBBU1NFUlQocmVzdWx0VmFsdWUpOwpAQCAtMTExLDcgKzExNSw3IEBAIHZvaWQgSW5q
ZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OnN0YXJ0Q2FwdHVyaW5nKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgVHJhY2VMCiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OmNhbGxT
dGFydENhcHR1cmluZ0Z1bmN0aW9uKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lLCBFcnJvclN0
cmluZyogZXJyb3JTdHJpbmcsIFRyYWNlTG9nSWQqIHRyYWNlTG9nSWQpCiB7Ci0gICAgU2NyaXB0
RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksIGZ1bmN0aW9uTmFt
ZSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVk
U2NyaXB0T2JqZWN0KCksIGZ1bmN0aW9uTmFtZSwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxl
ckZyb21BbnlUaHJlYWQpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0VmFsdWU7
CiAgICAgbWFrZUNhbGwoZnVuY3Rpb24sICZyZXN1bHRWYWx1ZSk7CiAgICAgaWYgKCFyZXN1bHRW
YWx1ZSB8fCByZXN1bHRWYWx1ZS0+dHlwZSgpICE9IEluc3BlY3RvclZhbHVlOjpUeXBlU3RyaW5n
IHx8ICFyZXN1bHRWYWx1ZS0+YXNTdHJpbmcodHJhY2VMb2dJZCkpCkBAIC0xMzAsNyArMTM0LDcg
QEAgdm9pZCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6ZHJvcFRyYWNlTG9nKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgY29uc3QgVHIKIAogdm9pZCBJbmplY3RlZFNjcmlwdENhbnZhc01v
ZHVsZTo6Y2FsbFZvaWRGdW5jdGlvbldpdGhUcmFjZUxvZ0lkQXJndW1lbnQoY29uc3QgU3RyaW5n
JiBmdW5jdGlvbk5hbWUsIEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgVHJhY2VMb2dJ
ZCYgdHJhY2VMb2dJZCkKIHsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0
ZWRTY3JpcHRPYmplY3QoKSwgZnVuY3Rpb25OYW1lKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRG
dW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgZnVuY3Rpb25OYW1l
LCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAgZnVuY3Rp
b24uYXBwZW5kQXJndW1lbnQodHJhY2VMb2dJZCk7CiAgICAgYm9vbCBoYWRFeGNlcHRpb24gPSBm
YWxzZTsKICAgICBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2Vw
dGlvbik7CkBAIC0xNDEsNyArMTQ1LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVs
ZTo6Y2FsbFZvaWRGdW5jdGlvbldpdGhUcmFjZUxvZ0lkQXJndW1lbnQoY29uc3QgU3QKIAogdm9p
ZCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6dHJhY2VMb2coRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBjb25zdCBUcmFjZUxvZ0lkJiB0cmFjZUxvZ0lkLCBjb25zdCBpbnQqIHN0YXJ0T2Zm
c2V0LCBjb25zdCBpbnQqIG1heExlbmd0aCwgUmVmUHRyPFRyYWNlTG9nPiogdHJhY2VMb2cpCiB7
Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCks
ICJ0cmFjZUxvZyIpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlv
bihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAidHJhY2VMb2ciLCBXZWJDb3JlOjpmdW5jdGlvbkNh
bGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQodHJh
Y2VMb2dJZCk7CiAgICAgaWYgKHN0YXJ0T2Zmc2V0KQogICAgICAgICBmdW5jdGlvbi5hcHBlbmRB
cmd1bWVudCgqc3RhcnRPZmZzZXQpOwpAQCAtMTU5LDcgKzE2Myw3IEBAIHZvaWQgSW5qZWN0ZWRT
Y3JpcHRDYW52YXNNb2R1bGU6OnRyYWNlTG9nKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29u
c3QgVHJhY2VMCiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OnJlcGxheVRyYWNl
TG9nKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgVHJhY2VMb2dJZCYgdHJhY2VMb2dJ
ZCwgaW50IHN0ZXBObywgUmVmUHRyPFJlc291cmNlU3RhdGU+KiByZXN1bHQpCiB7Ci0gICAgU2Ny
aXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJyZXBsYXlU
cmFjZUxvZyIpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihp
bmplY3RlZFNjcmlwdE9iamVjdCgpLCAicmVwbGF5VHJhY2VMb2ciLCBXZWJDb3JlOjpmdW5jdGlv
bkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQo
dHJhY2VMb2dJZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoc3RlcE5vKTsKICAgICBS
ZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdFZhbHVlOwpAQCAtMTc0LDcgKzE3OCw3IEBAIHZv
aWQgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OnJlcGxheVRyYWNlTG9nKEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgY29uc3QKIAogdm9pZCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6
cmVzb3VyY2VJbmZvKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVzb3VyY2VJZCYg
cmVzb3VyY2VJZCwgUmVmUHRyPFJlc291cmNlSW5mbz4qIHJlc3VsdCkKIHsKLSAgICBTY3JpcHRG
dW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgInJlc291cmNlSW5m
byIpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3Rl
ZFNjcmlwdE9iamVjdCgpLCAicmVzb3VyY2VJbmZvIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFu
ZGxlckZyb21BbnlUaHJlYWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHJlc291cmNl
SWQpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0VmFsdWU7CiAgICAgbWFrZUNh
bGwoZnVuY3Rpb24sICZyZXN1bHRWYWx1ZSk7CkBAIC0xODgsNyArMTkyLDcgQEAgdm9pZCBJbmpl
Y3RlZFNjcmlwdENhbnZhc01vZHVsZTo6cmVzb3VyY2VJbmZvKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgY29uc3QgUmUKIAogdm9pZCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6cmVzb3Vy
Y2VTdGF0ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFRyYWNlTG9nSWQmIHRyYWNl
TG9nSWQsIGNvbnN0IFJlc291cmNlSWQmIHJlc291cmNlSWQsIFJlZlB0cjxSZXNvdXJjZVN0YXRl
PiogcmVzdWx0KQogewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNj
cmlwdE9iamVjdCgpLCAicmVzb3VyY2VTdGF0ZSIpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1
bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAicmVzb3VyY2VTdGF0
ZSIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICBmdW5j
dGlvbi5hcHBlbmRBcmd1bWVudCh0cmFjZUxvZ0lkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1
bWVudChyZXNvdXJjZUlkKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdFZhbHVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2Fu
dmFzTW9kdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52
YXNNb2R1bGUuaAppbmRleCBmMzMxMTJjLi5hY2VjZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuaApAQCAtMzUsMTAg
KzM1LDEzIEBACiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIERlcHJlY2F0ZWQgeworY2xhc3MgU2NyaXB0T2JqZWN0
OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdl
cjsKLWNsYXNzIFNjcmlwdE9iamVjdDsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKQEAgLTUw
LDIzICs1MywyMyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSW5qZWN0ZWRTY3JpcHRDYW52YXNN
b2R1bGUgbW9kdWxlRm9yU3RhdGUoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSlNDOjpFeGVjU3Rh
dGUqKTsKIAotICAgIFNjcmlwdE9iamVjdCB3cmFwQ2FudmFzMkRDb250ZXh0KGNvbnN0IFNjcmlw
dE9iamVjdCYpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCB3cmFwQ2FudmFzMkRDb250
ZXh0KGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYpOwogI2lmIEVOQUJMRShXRUJHTCkK
LSAgICBTY3JpcHRPYmplY3Qgd3JhcFdlYkdMQ29udGV4dChjb25zdCBTY3JpcHRPYmplY3QmKTsK
KyAgICBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3Qgd3JhcFdlYkdMQ29udGV4dChjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRPYmplY3QmKTsKICNlbmRpZgogICAgIHZvaWQgbWFya0ZyYW1lRW5kKCk7
CiAKLSAgICB2b2lkIGNhcHR1cmVGcmFtZShFcnJvclN0cmluZyosIFR5cGVCdWlsZGVyOjpDYW52
YXM6OlRyYWNlTG9nSWQqKTsKLSAgICB2b2lkIHN0YXJ0Q2FwdHVyaW5nKEVycm9yU3RyaW5nKiwg
VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCopOwotICAgIHZvaWQgc3RvcENhcHR1cmlu
ZyhFcnJvclN0cmluZyosIGNvbnN0IFR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQmKTsK
LSAgICB2b2lkIGRyb3BUcmFjZUxvZyhFcnJvclN0cmluZyosIGNvbnN0IFR5cGVCdWlsZGVyOjpD
YW52YXM6OlRyYWNlTG9nSWQmKTsKLSAgICB2b2lkIHRyYWNlTG9nKEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiwgY29uc3QgaW50KiwgY29uc3QgaW50KiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpD
YW52YXM6OlRyYWNlTG9nPiopOwotICAgIHZvaWQgcmVwbGF5VHJhY2VMb2coRXJyb3JTdHJpbmcq
LCBjb25zdCBUeXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFjZUxvZ0lkJiwgaW50LCBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VTdGF0ZT4qKTsKLSAgICB2b2lkIHJlc291cmNlSW5m
byhFcnJvclN0cmluZyosIGNvbnN0IFR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlSWQmLCBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VJbmZvPiopOwotICAgIHZvaWQgcmVz
b3VyY2VTdGF0ZShFcnJvclN0cmluZyosIGNvbnN0IFR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNl
TG9nSWQmLCBjb25zdCBUeXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJjZUlkJiwgUmVmUHRyPFR5
cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlU3RhdGU+Kik7CisgICAgdm9pZCBjYXB0dXJlRnJh
bWUoRXJyb3JTdHJpbmcqLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9n
SWQqKTsKKyAgICB2b2lkIHN0YXJ0Q2FwdHVyaW5nKEVycm9yU3RyaW5nKiwgSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFjZUxvZ0lkKik7CisgICAgdm9pZCBzdG9wQ2FwdHVyaW5n
KEVycm9yU3RyaW5nKiwgY29uc3QgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFj
ZUxvZ0lkJik7CisgICAgdm9pZCBkcm9wVHJhY2VMb2coRXJyb3JTdHJpbmcqLCBjb25zdCBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQmKTsKKyAgICB2b2lkIHRyYWNl
TG9nKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiwgY29uc3QgaW50KiwgY29uc3QgaW50Kiwg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2c+Kik7CisgICAg
dm9pZCByZXBsYXlUcmFjZUxvZyhFcnJvclN0cmluZyosIGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCYsIGludCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VTdGF0ZT4qKTsKKyAgICB2b2lkIHJlc291cmNlSW5mbyhF
cnJvclN0cmluZyosIGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3Vy
Y2VJZCYsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlSW5m
bz4qKTsKKyAgICB2b2lkIHJlc291cmNlU3RhdGUoRXJyb3JTdHJpbmcqLCBjb25zdCBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQmLCBjb25zdCBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlSWQmLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q2FudmFzOjpSZXNvdXJjZVN0YXRlPiopOwogCiBwcml2YXRlOgotICAgIFNjcmlwdE9i
amVjdCBjYWxsV3JhcENvbnRleHRGdW5jdGlvbihjb25zdCBTdHJpbmcmLCBjb25zdCBTY3JpcHRP
YmplY3QmKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgY2FsbFdyYXBDb250ZXh0RnVu
Y3Rpb24oY29uc3QgU3RyaW5nJiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0Jik7CiAg
ICAgdm9pZCBjYWxsU3RhcnRDYXB0dXJpbmdGdW5jdGlvbihjb25zdCBTdHJpbmcmLCBFcnJvclN0
cmluZyosIFN0cmluZyopOwogICAgIHZvaWQgY2FsbFZvaWRGdW5jdGlvbldpdGhUcmFjZUxvZ0lk
QXJndW1lbnQoY29uc3QgU3RyaW5nJiwgRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmKTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwCmlu
ZGV4IGVmNTMzYWEuLjU0Njc1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdEhvc3QuY3BwCkBAIC00NywxOSArNDcsMjAgQEAKICNpbmNsdWRlICJJbnNw
ZWN0b3JEYXRhYmFzZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5o
IgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFs
dWVzLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogI2luY2x1ZGUgIlN0b3JhZ2UuaCIKLQot
I2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0jaW5jbHVkZSAiRGF0YWJhc2UuaCIKLSNlbmRpZgot
CiAjaW5jbHVkZSAibWFya3VwLmgiCi0KKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5o
PgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCisjaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKKyNpbmNsdWRlICJEYXRhYmFzZS5oIgorI2VuZGlmCisKK3VzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxJbmpl
Y3RlZFNjcmlwdEhvc3Q+IEluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkKQEAgLTk3LDcgKzk4
LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6OmRpc2Nvbm5lY3QoKQogdm9pZCBJbmplY3Rl
ZFNjcmlwdEhvc3Q6Omluc3BlY3RJbXBsKFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IG9iamVj
dCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gaGludHMpCiB7CiAgICAgaWYgKG1faW5zcGVj
dG9yQWdlbnQpIHsKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q+IHJlbW90ZU9iamVjdCA9IFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q6
OnJ1bnRpbWVDYXN0KG9iamVjdCk7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHJlbW90ZU9iamVjdCA9IEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDo6cnVudGltZUNhc3Qob2JqZWN0KTsKICAg
ICAgICAgbV9pbnNwZWN0b3JBZ2VudC0+aW5zcGVjdChyZW1vdGVPYmplY3QsIGhpbnRzLT5hc09i
amVjdCgpKTsKICAgICB9CiB9CkBAIC0xMjEsOSArMTIyLDkgQEAgdm9pZCBJbmplY3RlZFNjcmlw
dEhvc3Q6OmNvcHlUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBQYXN0ZWJvYXJkOjpjcmVh
dGVGb3JDb3B5QW5kUGFzdGUoKS0+d3JpdGVQbGFpblRleHQodGV4dCwgUGFzdGVib2FyZDo6Q2Fu
bm90U21hcnRSZXBsYWNlKTsKIH0KIAotU2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHRIb3N0OjpJ
bnNwZWN0YWJsZU9iamVjdDo6Z2V0KEpTQzo6RXhlY1N0YXRlKikKK0RlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlIEluamVjdGVkU2NyaXB0SG9zdDo6SW5zcGVjdGFibGVPYmplY3Q6OmdldChKU0M6OkV4
ZWNTdGF0ZSopCiB7Ci0gICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7CisgICAgcmV0dXJuIERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlKCk7CiB9OwogCiB2b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6YWRk
SW5zcGVjdGVkT2JqZWN0KFBhc3NPd25QdHI8SW5qZWN0ZWRTY3JpcHRIb3N0OjpJbnNwZWN0YWJs
ZU9iamVjdD4gb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0SG9zdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0SG9zdC5oCmluZGV4IDRhODQxODIuLjhjNDRkNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgKQEAgLTM2LDYgKzM2LDE1IEBACiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKK25hbWVzcGFj
ZSBEZXByZWNhdGVkIHsKK2NsYXNzIFNjcmlwdFZhbHVlOworfQorCituYW1lc3BhY2UgSW5zcGVj
dG9yIHsKK2NsYXNzIEluc3BlY3Rvck9iamVjdDsKK2NsYXNzIEluc3BlY3RvclZhbHVlOworfQor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERhdGFiYXNlOwpAQCAtNDYsMTIgKzU1LDgg
QEAgY2xhc3MgSW5zcGVjdG9yRE9NQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQ7CiBjbGFzcyBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDsKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsKLWNsYXNzIEluc3BlY3RvclZhbHVlOwog
Y2xhc3MgTm9kZTsKIGNsYXNzIFNjcmlwdERlYnVnU2VydmVyOwotY2xhc3MgU2NyaXB0T2JqZWN0
OwotY2xhc3MgU2NyaXB0VmFsdWU7CiBjbGFzcyBTdG9yYWdlOwogCiBzdHJ1Y3QgRXZlbnRMaXN0
ZW5lckluZm87CkBAIC04NSwyMiArOTAsMjIgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCi0g
ICAgc3RhdGljIE5vZGUqIHNjcmlwdFZhbHVlQXNOb2RlKFNjcmlwdFZhbHVlKTsKLSAgICBzdGF0
aWMgU2NyaXB0VmFsdWUgbm9kZUFzU2NyaXB0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBOb2RlKik7
CisgICAgc3RhdGljIE5vZGUqIHNjcmlwdFZhbHVlQXNOb2RlKERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlKTsKKyAgICBzdGF0aWMgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgbm9kZUFzU2NyaXB0VmFs
dWUoSlNDOjpFeGVjU3RhdGUqLCBOb2RlKik7CiAKICAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKIAog
ICAgIGNsYXNzIEluc3BlY3RhYmxlT2JqZWN0IHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIFNjcmlwdFZhbHVlIGdldChKU0M6
OkV4ZWNTdGF0ZSopOworICAgICAgICB2aXJ0dWFsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGdl
dChKU0M6OkV4ZWNTdGF0ZSopOwogICAgICAgICB2aXJ0dWFsIH5JbnNwZWN0YWJsZU9iamVjdCgp
IHsgfQogICAgIH07CiAgICAgdm9pZCBhZGRJbnNwZWN0ZWRPYmplY3QoUGFzc093blB0cjxJbnNw
ZWN0YWJsZU9iamVjdD4pOwogICAgIHZvaWQgY2xlYXJJbnNwZWN0ZWRPYmplY3RzKCk7CiAgICAg
SW5zcGVjdGFibGVPYmplY3QqIGluc3BlY3RlZE9iamVjdCh1bnNpZ25lZCBpbnQgbnVtKTsKIAot
ICAgIHZvaWQgaW5zcGVjdEltcGwoUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gb2JqZWN0VG9J
bnNwZWN0LCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBoaW50cyk7CisgICAgdm9pZCBpbnNw
ZWN0SW1wbChQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IG9iamVjdFRvSW5z
cGVjdCwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiBoaW50cyk7CiAgICAg
dm9pZCBnZXRFdmVudExpc3RlbmVyc0ltcGwoTm9kZSosIFZlY3RvcjxFdmVudExpc3RlbmVySW5m
bz4mIGxpc3RlbmVyc0FycmF5KTsKIAogICAgIHZvaWQgY2xlYXJDb25zb2xlTWVzc2FnZXMoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5j
cHAKaW5kZXggN2FhM2Q0My4uMTI3NmM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKQEAgLTM3LDEwICszNywxMiBAQAogI2lu
Y2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0Lmgi
CiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JW
YWx1ZXMuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9T
Y3JpcHRPYmplY3QuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzT3duUHRyPEluamVjdGVkU2NyaXB0TWFuYWdl
cj4gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVGb3JQYWdlKCkKQEAgLTE3Myw3ICsxNzUs
NyBAQCBJbmplY3RlZFNjcmlwdCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0
Rm9yKEpTQzo6RXhlY1N0YXRlKiBpbnNwZWN0ZQogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3Jp
cHQoKTsKIAogICAgIGludCBpZCA9IGluamVjdGVkU2NyaXB0SWRGb3IoaW5zcGVjdGVkRXhlY1N0
YXRlKTsKLSAgICBTY3JpcHRPYmplY3QgaW5qZWN0ZWRTY3JpcHRPYmplY3QgPSBjcmVhdGVJbmpl
Y3RlZFNjcmlwdChpbmplY3RlZFNjcmlwdFNvdXJjZSgpLCBpbnNwZWN0ZWRFeGVjU3RhdGUsIGlk
KTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgaW5qZWN0ZWRTY3JpcHRPYmplY3QgPSBj
cmVhdGVJbmplY3RlZFNjcmlwdChpbmplY3RlZFNjcmlwdFNvdXJjZSgpLCBpbnNwZWN0ZWRFeGVj
U3RhdGUsIGlkKTsKICAgICBJbmplY3RlZFNjcmlwdCByZXN1bHQoaW5qZWN0ZWRTY3JpcHRPYmpl
Y3QsIG1faW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayk7CiAgICAgbV9pZFRvSW5qZWN0ZWRTY3Jp
cHQuc2V0KGlkLCByZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKaW5kZXggNjgxZTQwOC4uN2I0
OGQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1h
bmFnZXIuaApAQCAtMzUsMTMgKzM1LDE5IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIERlcHJlY2F0ZWQgewor
Y2xhc3MgU2NyaXB0T2JqZWN0OworfQorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNzIElu
c3BlY3Rvck9iamVjdDsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBET01XaW5k
b3c7CiBjbGFzcyBJbmplY3RlZFNjcmlwdDsKIGNsYXNzIEluamVjdGVkU2NyaXB0SG9zdDsKLWNs
YXNzIEluc3BlY3Rvck9iamVjdDsKLWNsYXNzIFNjcmlwdE9iamVjdDsKIAogY2xhc3MgSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbmplY3RlZFNjcmlw
dE1hbmFnZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTY5LDcgKzc1LDcgQEAgcHJp
dmF0ZToKICAgICBleHBsaWNpdCBJbmplY3RlZFNjcmlwdE1hbmFnZXIoSW5zcGVjdGVkU3RhdGVB
Y2Nlc3NDaGVjayk7CiAKICAgICBTdHJpbmcgaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKTsKLSAgICBT
Y3JpcHRPYmplY3QgY3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEpT
Qzo6RXhlY1N0YXRlKiwgaW50IGlkKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgY3Jl
YXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEpTQzo6RXhlY1N0YXRlKiwg
aW50IGlkKTsKIAogICAgIHN0YXRpYyBib29sIGNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdyhKU0M6
OkV4ZWNTdGF0ZSopOwogICAgIHN0YXRpYyBib29sIGNhbkFjY2Vzc0luc3BlY3RlZFdvcmtlckds
b2JhbFNjb3BlKEpTQzo6RXhlY1N0YXRlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcAppbmRleCBkYjIwNzc5Li45MjY4ZWRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAK
QEAgLTM2LDggKzM2LDExIEBACiAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1
ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgotI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2Fs
bC5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4
ZWNTdGF0ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oPgorI2lu
Y2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgorCit1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU0LDEzICs1NywxMyBAQCB2b2lkIElu
amVjdGVkU2NyaXB0TW9kdWxlOjplbnN1cmVJbmplY3RlZChJbmplY3RlZFNjcmlwdE1hbmFnZXIq
IGluamVjdGVkU2NyaXB0TQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogTWFrZSB0
aGUgSW5qZWN0ZWRTY3JpcHQgYSBtb2R1bGUgaXRzZWxmLgotICAgIFNjcmlwdEZ1bmN0aW9uQ2Fs
bCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdC5pbmplY3RlZFNjcmlwdE9iamVjdCgpLCAibW9kdWxl
Iik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVk
U2NyaXB0LmluamVjdGVkU2NyaXB0T2JqZWN0KCksICJtb2R1bGUiLCBXZWJDb3JlOjpmdW5jdGlv
bkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQo
bmFtZSgpKTsKICAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwotICAgIFNjcmlwdFZhbHVl
IHJlc3VsdFZhbHVlID0gaW5qZWN0ZWRTY3JpcHQuY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVk
KGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHJl
c3VsdFZhbHVlID0gaW5qZWN0ZWRTY3JpcHQuY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1
bmN0aW9uLCBoYWRFeGNlcHRpb24pOwogICAgIEFTU0VSVCghaGFkRXhjZXB0aW9uKTsKICAgICBp
ZiAoaGFkRXhjZXB0aW9uIHx8IHJlc3VsdFZhbHVlLmhhc05vVmFsdWUoKSB8fCAhcmVzdWx0VmFs
dWUuaXNPYmplY3QoKSkgewotICAgICAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5q
ZWN0ZWRTY3JpcHQuaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImluamVjdE1vZHVsZSIpOworICAg
ICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3Jp
cHQuaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImluamVjdE1vZHVsZSIsIFdlYkNvcmU6OmZ1bmN0
aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJn
dW1lbnQobmFtZSgpKTsKICAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoc291cmNlKCkp
OwogICAgICAgICByZXN1bHRWYWx1ZSA9IGluamVjdGVkU2NyaXB0LmNhbGxGdW5jdGlvbldpdGhF
dmFsRW5hYmxlZChmdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKQEAgLTcwLDcgKzczLDcgQEAgdm9p
ZCBJbmplY3RlZFNjcmlwdE1vZHVsZTo6ZW5zdXJlSW5qZWN0ZWQoSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKiBpbmplY3RlZFNjcmlwdE0KICAgICAgICAgfQogICAgIH0KIAotICAgIFNjcmlwdE9iamVj
dCBtb2R1bGVPYmplY3Qoc2NyaXB0U3RhdGUsIHJlc3VsdFZhbHVlKTsKKyAgICBEZXByZWNhdGVk
OjpTY3JpcHRPYmplY3QgbW9kdWxlT2JqZWN0KHNjcmlwdFN0YXRlLCByZXN1bHRWYWx1ZSk7CiAg
ICAgaW5pdGlhbGl6ZShtb2R1bGVPYmplY3QsIGluamVjdGVkU2NyaXB0TWFuYWdlci0+aW5zcGVj
dGVkU3RhdGVBY2Nlc3NDaGVjaygpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBZ2VudC5jcHAKaW5kZXggZWE3YjQyMC4uMTk0Yjc3OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCkBAIC00MiwyMyArNDIsMjQgQEAKICNp
bmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRl
bmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJJ
bnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5j
bHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlc291cmNl
UmVxdWVzdC5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJTY3Jp
cHRGdW5jdGlvbkNhbGwuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSA8YmluZGlu
Z3MvU2NyaXB0VmFsdWUuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAK
K3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW5z
cGVjdG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KFBhZ2UqIHBhZ2UsIEluamVjdGVkU2NyaXB0TWFu
YWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzKQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiSW5z
cGVjdG9yIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2Uo
QVNDSUlMaXRlcmFsKCJJbnNwZWN0b3IiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1f
aW5zcGVjdGVkUGFnZShwYWdlKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9lbmFibGVkKGZhbHNlKQpAQCAtOTMsNyArOTQsNyBA
QCB2b2lkIEluc3BlY3RvckFnZW50OjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUq
IGZyYW1lLCBET01XcmFwcGVyV29ybGQmCiAgICAgZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3Jp
cHQoc2NyaXB0U291cmNlLnRvU3RyaW5nKCkpOwogfQogCi12b2lkIEluc3BlY3RvckFnZW50Ojpk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9u
dGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hl
cikKK3ZvaWQgSW5zcGVjdG9yQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvckluc3BlY3RvckZyb250ZW5k
RGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0g
SW5zcGVjdG9ySW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcyk7CkBAIC0xNTAsNyArMTUxLDcgQEAgdm9pZCBJbnNwZWN0b3JBZ2VudDo6c2V0
SW5qZWN0ZWRTY3JpcHRGb3JPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmkK
ICAgICBtX2luamVjdGVkU2NyaXB0Rm9yT3JpZ2luLnNldChvcmlnaW4sIHNvdXJjZSk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yQWdlbnQ6Omluc3BlY3QoUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0PiBvYmplY3RUb0luc3BlY3QsIFBhc3NSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBoaW50cykKK3ZvaWQgSW5zcGVjdG9yQWdlbnQ6Omluc3BlY3QoUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IG9iamVjdFRvSW5z
cGVjdCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhpbnRzKQogewogICAgIGlmIChtX2Vu
YWJsZWQgJiYgbV9mcm9udGVuZERpc3BhdGNoZXIpIHsKICAgICAgICAgbV9mcm9udGVuZERpc3Bh
dGNoZXItPmluc3BlY3Qob2JqZWN0VG9JbnNwZWN0LCBoaW50cyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oCmluZGV4IGZiNGJkMjUuLjFjZWE3YzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oCkBAIC0zMCwxMSArMzAsMTcgQEAK
ICNpZm5kZWYgSW5zcGVjdG9yQWdlbnRfaAogI2RlZmluZSBJbnNwZWN0b3JBZ2VudF9oCiAKLSNp
bmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKK25hbWVzcGFjZSBJ
bnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworfQorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKQEAgLTQyLDEzICs0OCwxMiBAQCBjbGFzcyBE
b2N1bWVudExvYWRlcjsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
OwogY2xhc3MgSW5zcGVjdG9ySW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVyOwotY2xhc3MgSW5z
cGVjdG9yT2JqZWN0OwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFBhZ2U7CiAK
IHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JBZ2VudCA6IHB1
YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yQWdlbnQgOiBwdWJsaWMgSW5zcGVj
dG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9ySW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JBZ2VudCk7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yQWdlbnQ+IGNyZWF0ZShQYWdlKiBw
YWdlLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKQEAgLTY0LDcgKzY5LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdm9pZCBkaXNhYmxlKEVy
cm9yU3RyaW5nKik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERl
c3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIHZvaWQgZGlkQ2xlYXJX
aW5kb3dPYmplY3RJbldvcmxkKEZyYW1lKiwgRE9NV3JhcHBlcldvcmxkJik7CkBAIC03OSw3ICs4
NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SW5qZWN0ZWRTY3JpcHRGb3JPcmlnaW4oY29u
c3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgc291cmNlKTsKIAotICAgIHZvaWQgaW5z
cGVjdChQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IG9iamVj
dFRvSW5zcGVjdCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhpbnRzKTsKKyAgICB2b2lk
IGluc3BlY3QoUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+IG9iamVjdFRvSW5zcGVjdCwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4gaGludHMpOwogCiBwcml2YXRlOgogICAgIEluc3BlY3RvckFnZW50KFBhZ2UqLCBJ
bmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnN0cnVtZW50aW5nQWdlbnRzKik7CkBAIC05MCw3ICs5
NSw3IEBAIHByaXZhdGU6CiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlcjsKIAogICAgIFZlY3RvcjxwYWlyPGxvbmcsIFN0cmluZz4+IG1fcGVuZGluZ0V2
YWx1YXRlVGVzdENvbW1hbmRzOwotICAgIHBhaXI8UmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1l
OjpSZW1vdGVPYmplY3Q+LCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Pj4gbV9wZW5kaW5nSW5zcGVj
dERhdGE7CisgICAgcGFpcjxSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6
UmVtb3RlT2JqZWN0PiwgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Pj4gbV9wZW5k
aW5nSW5zcGVjdERhdGE7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbV9pbmplY3RlZFNj
cmlwdEZvck9yaWdpbjsKIAogICAgIGJvb2wgbV9lbmFibGVkOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHAKaW5kZXggMjYzYmRkOS4uNTMwMGQ5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwCkBA
IC0zNyw5ICszNyw3IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCIKICNp
bmNsdWRlICJJbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQWdl
bnQuY3BwIgotI2luY2x1ZGUgIkluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwIgogI2luY2x1ZGUg
Ikluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAiCi0jaW5jbHVkZSAiSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIuY3BwIgogI2luY2x1ZGUgIkluc3BlY3RvckNTU0FnZW50LmNwcCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
Q2xpZW50LmNwcCIKQEAgLTcwLDcgKzY4LDYgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcCIKICNpbmNsdWRlICJJbnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuY3BwIgogI2luY2x1
ZGUgIkluc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVl
cy5jcHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwIgogI2luY2x1ZGUgIklu
c3RydW1lbnRpbmdBZ2VudHMuY3BwIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZXNEYXRhLmNw
cCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKaW5kZXggMDRjYzUzYS4uNmQ3ZDgwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudC5jcHAKQEAgLTM2LDIxICszNiwyMyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckFn
ZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JQYWdlQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJ
bnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0YXRlTm90aWZpZXIuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1
ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KKwordXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQ6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKLSAg
ICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIkFwcGxpY2F0aW9uQ2FjaGUiKSwg
aW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVy
YWwoIkFwcGxpY2F0aW9uQ2FjaGUiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fcGFn
ZUFnZW50KHBhZ2VBZ2VudCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmRE
aXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCog
ZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3Bh
dGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5l
bCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVC
YWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKQEAgLTky
LDkgKzk0LDkgQEAgdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6Om5ldHdvcmtT
dGF0ZUNoYW5nZWQoKQogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5uZXR3b3JrU3RhdGVVcGRh
dGVkKGlzTm93T25saW5lKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQ6OmdldEZyYW1lc1dpdGhNYW5pZmVzdHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVz
dD4+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0RnJh
bWVzV2l0aE1hbmlmZXN0cyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFt
ZVdpdGhNYW5pZmVzdD4+JiByZXN1bHQpCiB7Ci0gICAgcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVzdD46OmNy
ZWF0ZSgpOworICAgIHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkZyYW1lV2l0aE1hbmlmZXN0Pjo6
Y3JlYXRlKCk7CiAKICAgICBGcmFtZSogbWFpbkZyYW1lID0gbV9wYWdlQWdlbnQtPm1haW5GcmFt
ZSgpOwogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lOyBmcmFtZTsgZnJhbWUgPSBm
cmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dChtYWluRnJhbWUpKSB7CkBAIC0xMDYsNyArMTA4LDcg
QEAgdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmdldEZyYW1lc1dpdGhNYW5p
ZmVzdHMoRXJyb3JTdHJpbmcqLCBSZWZQdHIKICAgICAgICAgQXBwbGljYXRpb25DYWNoZUhvc3Q6
OkNhY2hlSW5mbyBpbmZvID0gaG9zdC0+YXBwbGljYXRpb25DYWNoZUluZm8oKTsKICAgICAgICAg
U3RyaW5nIG1hbmlmZXN0VVJMID0gaW5mby5tX21hbmlmZXN0LnN0cmluZygpOwogICAgICAgICBp
ZiAoIW1hbmlmZXN0VVJMLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgUmVmUHRyPFR5cGVCdWls
ZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVzdD4gdmFsdWUgPSBUeXBlQnVp
bGRlcjo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q6OmNyZWF0ZSgpCisgICAg
ICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6
RnJhbWVXaXRoTWFuaWZlc3Q+IHZhbHVlID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXBwbGlj
YXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q6OmNyZWF0ZSgpCiAgICAgICAgICAgICAgICAg
LnNldEZyYW1lSWQobV9wYWdlQWdlbnQtPmZyYW1lSWQoZnJhbWUpKQogICAgICAgICAgICAgICAg
IC5zZXRNYW5pZmVzdFVSTChtYW5pZmVzdFVSTCkKICAgICAgICAgICAgICAgICAuc2V0U3RhdHVz
KHN0YXRpY19jYXN0PGludD4oaG9zdC0+c3RhdHVzKCkpKTsKQEAgLTEzNCw3ICsxMzYsNyBAQCB2
b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0TWFuaWZlc3RGb3JGcmFtZShF
cnJvclN0cmluZyogZXJyb3JTdHJpbgogICAgICptYW5pZmVzdFVSTCA9IGluZm8ubV9tYW5pZmVz
dC5zdHJpbmcoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6Omdl
dEFwcGxpY2F0aW9uQ2FjaGVGb3JGcmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYgZnJhbWVJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpB
cHBsaWNhdGlvbkNhY2hlPiYgYXBwbGljYXRpb25DYWNoZSkKK3ZvaWQgSW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50OjpnZXRBcHBsaWNhdGlvbkNhY2hlRm9yRnJhbWUoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlPiYgYXBwbGljYXRp
b25DYWNoZSkKIHsKICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBhc3NlcnRG
cmFtZVdpdGhEb2N1bWVudExvYWRlcihlcnJvclN0cmluZywgZnJhbWVJZCk7CiAgICAgaWYgKCFk
b2N1bWVudExvYWRlcikKQEAgLTE0OSw5ICsxNTEsOSBAQCB2b2lkIEluc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudDo6Z2V0QXBwbGljYXRpb25DYWNoZUZvckZyYW1lKEVycm9yU3RyaW5nKiBl
cgogICAgIGFwcGxpY2F0aW9uQ2FjaGUgPSBidWlsZE9iamVjdEZvckFwcGxpY2F0aW9uQ2FjaGUo
cmVzb3VyY2VzLCBpbmZvKTsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXBwbGljYXRp
b25DYWNoZTo6QXBwbGljYXRpb25DYWNoZT4gSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
OjpidWlsZE9iamVjdEZvckFwcGxpY2F0aW9uQ2FjaGUoY29uc3QgQXBwbGljYXRpb25DYWNoZUhv
c3Q6OlJlc291cmNlSW5mb0xpc3QmIGFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMsIGNvbnN0IEFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjpDYWNoZUluZm8mIGFwcGxpY2F0aW9uQ2FjaGVJbmZvKQorUGFz
c1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNh
dGlvbkNhY2hlPiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9y
QXBwbGljYXRpb25DYWNoZShjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZv
TGlzdCYgYXBwbGljYXRpb25DYWNoZVJlc291cmNlcywgY29uc3QgQXBwbGljYXRpb25DYWNoZUhv
c3Q6OkNhY2hlSW5mbyYgYXBwbGljYXRpb25DYWNoZUluZm8pCiB7Ci0gICAgcmV0dXJuIFR5cGVC
dWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlOjpjcmVhdGUoKQorICAg
IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNh
dGlvbkNhY2hlOjpjcmVhdGUoKQogICAgICAgICAuc2V0TWFuaWZlc3RVUkwoYXBwbGljYXRpb25D
YWNoZUluZm8ubV9tYW5pZmVzdC5zdHJpbmcoKSkKICAgICAgICAgLnNldFNpemUoYXBwbGljYXRp
b25DYWNoZUluZm8ubV9zaXplKQogICAgICAgICAuc2V0Q3JlYXRpb25UaW1lKGFwcGxpY2F0aW9u
Q2FjaGVJbmZvLm1fY3JlYXRpb25UaW1lKQpAQCAtMTYwLDkgKzE2Miw5IEBAIFBhc3NSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU+IEluc3BlY3Rv
ckFwcGxpY2F0aW9uCiAgICAgICAgIC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1
aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2U+PiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmJ1aWxkQXJyYXlG
b3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzKGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpS
ZXNvdXJjZUluZm9MaXN0JiBhcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzKQorUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBs
aWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+PiBJbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQ6OmJ1aWxkQXJyYXlGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzKGNv
bnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm9MaXN0JiBhcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2VzKQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxk
ZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4+IHJlc291cmNl
cyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBw
bGljYXRpb25DYWNoZVJlc291cmNlPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2Fj
aGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4+IHJlc291cmNlcyA9IEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6
OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT46OmNyZWF0ZSgpOwogCiAgICAgQXBwbGljYXRpb25D
YWNoZUhvc3Q6OlJlc291cmNlSW5mb0xpc3Q6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZXMuZW5kKCk7CiAgICAgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291
cmNlSW5mb0xpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gYXBwbGljYXRpb25DYWNoZVJlc291cmNl
cy5iZWdpbigpOwpAQCAtMTcyLDcgKzE3NCw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzCiAg
ICAgcmV0dXJuIHJlc291cmNlczsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXBwbGlj
YXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBJbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlKGNvbnN0
IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm8mIHJlc291cmNlSW5mbykKK1Bhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRp
b25DYWNoZVJlc291cmNlPiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmJ1aWxkT2Jq
ZWN0Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlKGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0
OjpSZXNvdXJjZUluZm8mIHJlc291cmNlSW5mbykKIHsKICAgICBTdHJpbmcgdHlwZXM7CiAgICAg
aWYgKHJlc291cmNlSW5mby5tX2lzTWFzdGVyKQpAQCAtMTkwLDcgKzE5Miw3IEBAIFBhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZT4gSW5zcGVjdG9yQXBwCiAgICAgaWYgKHJlc291cmNlSW5mby5tX2lzRXhwbGljaXQpCiAgICAg
ICAgIHR5cGVzLmFwcGVuZCgiRXhwbGljaXQgIik7CiAKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gdmFsdWUgPSBUeXBl
QnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVh
dGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hl
OjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IHZhbHVlID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUoKQog
ICAgICAgICAuc2V0VXJsKHJlc291cmNlSW5mby5tX3Jlc291cmNlLnN0cmluZygpKQogICAgICAg
ICAuc2V0U2l6ZShzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlSW5mby5tX3NpemUpKQogICAgICAg
ICAuc2V0VHlwZSh0eXBlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgKaW5kZXggZWIwNmM4Zi4uODIxMWEz
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQuaApAQCAtMjgsMjcgKzI4LDMwIEBACiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKIAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVIb3N0LmgiCi0jaW5jbHVkZSAi
SW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKKyNpbmNsdWRlICJJbnNwZWN0
b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgogCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNzIEluc3Bl
Y3Rvck9iamVjdDsKK2NsYXNzIEluc3BlY3RvclZhbHVlOworfQorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEZyYW1lOwotY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBjbGFzcyBJbnNwZWN0
b3JBZ2VudDsKIGNsYXNzIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNo
ZXI7Ci1jbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7Ci1j
bGFzcyBJbnNwZWN0b3JWYWx1ZTsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBQ
YWdlOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJp
bmc7CiAKLWNsYXNzIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCA6IHB1YmxpYyBJbnNw
ZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCA6
IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJ
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJ
bnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKQEAgLTU3LDI1ICs2MCwyMiBAQCBwdWJsaWM6
CiAgICAgfQogICAgIH5JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoKSB7IH0KIAotICAg
IC8vIEluc3BlY3RvckJhc2VBZ2VudAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9y
OjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCi0gICAgLy8gSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uIEFQSQogICAgIHZvaWQgdXBkYXRlQXBwbGljYXRpb25DYWNo
ZVN0YXR1cyhGcmFtZSopOwogICAgIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZCgpOwogCi0gICAg
Ly8gQXBwbGljYXRpb25DYWNoZSBBUEkgZm9yIEluc3BlY3RvckZyb250ZW5kCiAgICAgdmlydHVh
bCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwotICAgIHZpcnR1YWwgdm9pZCBnZXRGcmFtZXNX
aXRoTWFuaWZlc3RzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBl
QnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+PiYgcmVzdWx0KTsK
KyAgICB2aXJ0dWFsIHZvaWQgZ2V0RnJhbWVzV2l0aE1hbmlmZXN0cyhFcnJvclN0cmluZyosIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVzdD4+JiByZXN1bHQpOwogICAgIHZp
cnR1YWwgdm9pZCBnZXRNYW5pZmVzdEZvckZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiBmcmFtZUlkLCBTdHJpbmcqIG1hbmlmZXN0VVJMKTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QXBw
bGljYXRpb25DYWNoZUZvckZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlk
LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU+
Jik7CisgICAgdmlydHVhbCB2b2lkIGdldEFwcGxpY2F0aW9uQ2FjaGVGb3JGcmFtZShFcnJvclN0
cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU+Jik7CiAKIHByaXZhdGU6CiAg
ICAgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJ
bnNwZWN0b3JQYWdlQWdlbnQqKTsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcHBsaWNh
dGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlPiBidWlsZE9iamVjdEZvckFwcGxpY2F0aW9uQ2Fj
aGUoY29uc3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mb0xpc3QmLCBjb25zdCBB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6Q2FjaGVJbmZvJik7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZT4+IGJ1aWxkQXJyYXlGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzKGNvbnN0
IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm9MaXN0Jik7Ci0gICAgUGFzc1JlZlB0
cjxUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNl
PiBidWlsZE9iamVjdEZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShjb25zdCBBcHBsaWNhdGlv
bkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvJik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlPiBidWlsZE9iamVj
dEZvckFwcGxpY2F0aW9uQ2FjaGUoY29uc3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNl
SW5mb0xpc3QmLCBjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Q2FjaGVJbmZvJik7CisgICAg
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+PiBidWls
ZEFycmF5Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlcyhjb25zdCBBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6UmVzb3VyY2VJbmZvTGlzdCYpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBidWls
ZE9iamVjdEZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShjb25zdCBBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6UmVzb3VyY2VJbmZvJik7CiAKICAgICBEb2N1bWVudExvYWRlciogYXNzZXJ0RnJhbWVX
aXRoRG9jdW1lbnRMb2FkZXIoRXJyb3JTdHJpbmcqLCBTdHJpbmcgZnJhbWVJZCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IGJiMTdj
NjUuLjgzYzQyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcApAQCAtNDMsOCArNDMsNyBAQAogI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckhp
c3RvcnkuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgotI2luY2x1ZGUgIklu
c3BlY3RvclZhbHVlcy5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIgog
I2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJOYW1lZEZsb3dDb2xs
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgpAQCAtNTcsNyArNTYsNyBAQAogI2luY2x1ZGUg
IlN0eWxlUnVsZS5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRMaXN0LmgiCiAjaW5jbHVkZSAiV2Vi
S2l0TmFtZWRGbG93LmgiCi0KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+
CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBAIC02NSw2ICs2NCw4IEBACiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAK
K3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51
bSBGb3JjZVBzZXVkb0NsYXNzRmxhZ3MgewpAQCAtMTE3LDcgKzExOCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHN0YXJ0U2VsZWN0b3IoY29uc3QgQ1NTU3R5bGVSdWxlKik7CiAgICAgdm9pZCBjb21t
aXRTZWxlY3Rvcihib29sKTsKICAgICB2b2lkIGNvbW1pdFNlbGVjdG9yVGltZSgpOwotICAgIFBh
c3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlPiB0b0luc3BlY3Rvck9i
amVjdCgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpTZWxlY3RvclByb2ZpbGU+IHRvSW5zcGVjdG9yT2JqZWN0KCkgY29uc3Q7CiAKIHByaXZhdGU6
CiAKQEAgLTIwNSwxMSArMjA2LDExIEBAIGlubGluZSB2b2lkIFNlbGVjdG9yUHJvZmlsZTo6Y29t
bWl0U2VsZWN0b3JUaW1lKCkKICAgICBpdC0+dmFsdWUudG90YWxUaW1lICs9IHByb2Nlc3NpbmdU
aW1lTVM7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxl
PiBTZWxlY3RvclByb2ZpbGU6OnRvSW5zcGVjdG9yT2JqZWN0KCkgY29uc3QKK1Bhc3NSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+IFNlbGVjdG9yUHJv
ZmlsZTo6dG9JbnNwZWN0b3JPYmplY3QoKSBjb25zdAogewotICAgIFJlZlB0cjxUeXBlQnVpbGRl
cjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlRW50cnk+PiBzZWxlY3Rv
clByb2ZpbGVEYXRhID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVj
dG9yUHJvZmlsZUVudHJ5Pjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxl
RW50cnk+PiBzZWxlY3RvclByb2ZpbGVEYXRhID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGVFbnRyeT46OmNy
ZWF0ZSgpOwogICAgIGZvciAoUnVsZU1hdGNoaW5nU3RhdHNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gbV9ydWxlTWF0Y2hpbmdTdGF0cy5iZWdpbigpOyBpdCAhPSBtX3J1bGVNYXRjaGluZ1N0YXRz
LmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3Rv
clByb2ZpbGVFbnRyeT4gZW50cnkgPSBUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGVF
bnRyeTo6Y3JlYXRlKCkKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNT
Uzo6U2VsZWN0b3JQcm9maWxlRW50cnk+IGVudHJ5ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpTZWxlY3RvclByb2ZpbGVFbnRyeTo6Y3JlYXRlKCkKICAgICAgICAgICAgIC5zZXRTZWxl
Y3RvcihpdC0+dmFsdWUuc2VsZWN0b3IpCiAgICAgICAgICAgICAuc2V0VXJsKGl0LT52YWx1ZS51
cmwpCiAgICAgICAgICAgICAuc2V0TGluZU51bWJlcihpdC0+dmFsdWUubGluZU51bWJlcikKQEAg
LTIxOSw3ICsyMjAsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJv
ZmlsZT4gU2VsZWN0b3JQcm9maWxlOjp0b0luc3BlY3Rvck9iamVjdAogICAgICAgICBzZWxlY3Rv
clByb2ZpbGVEYXRhLT5hZGRJdGVtKGVudHJ5LnJlbGVhc2UoKSk7CiAgICAgfQogCi0gICAgUmVm
UHRyPFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZT4gcmVzdWx0ID0gVHlwZUJ1aWxk
ZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlOjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZT4gcmVzdWx0ID0gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRU
b3RhbFRpbWUodG90YWxNYXRjaGluZ1RpbWVNcygpKQogICAgICAgICAuc2V0RGF0YShzZWxlY3Rv
clByb2ZpbGVEYXRhKTsKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKQEAgLTYxNiw3ICs2
MTcsNyBAQCBDU1NTdHlsZVJ1bGUqIEluc3BlY3RvckNTU0FnZW50Ojphc0NTU1N0eWxlUnVsZShD
U1NSdWxlKiBydWxlKQogfQogCiBJbnNwZWN0b3JDU1NBZ2VudDo6SW5zcGVjdG9yQ1NTQWdlbnQo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yRE9NQWdl
bnQqIGRvbUFnZW50KQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiQ1NT
IiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlM
aXRlcmFsKCJDU1MiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fZG9tQWdlbnQoZG9t
QWdlbnQpCiAgICAgLCBtX2xhc3RTdHlsZVNoZWV0SWQoMSkKIHsKQEAgLTYyOSw3ICs2MzAsNyBA
QCBJbnNwZWN0b3JDU1NBZ2VudDo6fkluc3BlY3RvckNTU0FnZW50KCkKICAgICByZXNldCgpOwog
fQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFj
a2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3RvckNTU0Zyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsK
ICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yQ1NTQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CkBAIC04MTAsNyArODExLDcgQEAgYm9v
bCBJbnNwZWN0b3JDU1NBZ2VudDo6Zm9yY2VQc2V1ZG9TdGF0ZShFbGVtZW50KiBlbGVtZW50LCBD
U1NTZWxlY3Rvcjo6UHNldWRvVHkKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5v
ZGVJZCwgY29uc3QgYm9vbCogaW5jbHVkZVBzZXVkbywgY29uc3QgYm9vbCogaW5jbHVkZUluaGVy
aXRlZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0
Y2g+PiYgbWF0Y2hlZENTU1J1bGVzLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz4+JiBwc2V1ZG9JZE1hdGNoZXMsIFJlZlB0cjxUeXBl
QnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4+JiBp
bmhlcml0ZWRFbnRyaWVzKQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxl
c0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBib29s
KiBpbmNsdWRlUHNldWRvLCBjb25zdCBib29sKiBpbmNsdWRlSW5oZXJpdGVkLCBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpS
dWxlTWF0Y2g+PiYgbWF0Y2hlZENTU1J1bGVzLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+PiYg
cHNldWRvSWRNYXRjaGVzLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5Pj4mIGluaGVyaXRl
ZEVudHJpZXMpCiB7CiAgICAgRWxlbWVudCogZWxlbWVudCA9IGVsZW1lbnRGb3JJZChlcnJvclN0
cmluZywgbm9kZUlkKTsKICAgICBpZiAoIWVsZW1lbnQpCkBAIC04MjMsMTEgKzgyNCwxMSBAQCB2
b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGludCBubwogCiAgICAgLy8gUHNldWRvIGVsZW1lbnRzLgogICAgIGlm
ICghaW5jbHVkZVBzZXVkbyB8fCAqaW5jbHVkZVBzZXVkbykgewotICAgICAgICBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz4+IHBzZXVk
b0VsZW1lbnRzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlBzZXVkb0lk
TWF0Y2hlcz46OmNyZWF0ZSgpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+PiBw
c2V1ZG9FbGVtZW50cyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNTUzo6UHNldWRvSWRNYXRjaGVzPjo6Y3JlYXRlKCk7CiAgICAgICAgIGZv
ciAoUHNldWRvSWQgcHNldWRvSWQgPSBGSVJTVF9QVUJMSUNfUFNFVURPSUQ7IHBzZXVkb0lkIDwg
QUZURVJfTEFTVF9JTlRFUk5BTF9QU0VVRE9JRDsgcHNldWRvSWQgPSBzdGF0aWNfY2FzdDxQc2V1
ZG9JZD4ocHNldWRvSWQgKyAxKSkgewogICAgICAgICAgICAgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1
bGVCYXNlPj4gbWF0Y2hlZFJ1bGVzID0gc3R5bGVSZXNvbHZlci5wc2V1ZG9TdHlsZVJ1bGVzRm9y
RWxlbWVudChlbGVtZW50LCBwc2V1ZG9JZCwgU3R5bGVSZXNvbHZlcjo6QWxsQ1NTUnVsZXMpOwog
ICAgICAgICAgICAgaWYgKCFtYXRjaGVkUnVsZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAg
ICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz4gbWF0Y2hlcyA9IFR5
cGVCdWlsZGVyOjpDU1M6OlBzZXVkb0lkTWF0Y2hlczo6Y3JlYXRlKCkKKyAgICAgICAgICAgICAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+IG1h
dGNoZXMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlBzZXVkb0lkTWF0Y2hlczo6Y3Jl
YXRlKCkKICAgICAgICAgICAgICAgICAgICAgLnNldFBzZXVkb0lkKHN0YXRpY19jYXN0PGludD4o
cHNldWRvSWQpKQogICAgICAgICAgICAgICAgICAgICAuc2V0TWF0Y2hlcyhidWlsZEFycmF5Rm9y
TWF0Y2hlZFJ1bGVMaXN0KG1hdGNoZWRSdWxlcywgc3R5bGVSZXNvbHZlciwgZWxlbWVudCkpOwog
ICAgICAgICAgICAgICAgIHBzZXVkb0VsZW1lbnRzLT5hZGRJdGVtKG1hdGNoZXMucmVsZWFzZSgp
KTsKQEAgLTgzOSwxMiArODQwLDEyIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNo
ZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vCiAKICAgICAv
LyBJbmhlcml0ZWQgc3R5bGVzLgogICAgIGlmICghaW5jbHVkZUluaGVyaXRlZCB8fCAqaW5jbHVk
ZUluaGVyaXRlZCkgewotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+PiBlbnRyaWVzID0gVHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+OjpjcmVhdGUoKTsKKyAg
ICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4+IGVudHJpZXMgPSBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkluaGVyaXRl
ZFN0eWxlRW50cnk+OjpjcmVhdGUoKTsKICAgICAgICAgRWxlbWVudCogcGFyZW50RWxlbWVudCA9
IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKTsKICAgICAgICAgd2hpbGUgKHBhcmVudEVsZW1lbnQp
IHsKICAgICAgICAgICAgIFN0eWxlUmVzb2x2ZXImIHBhcmVudFN0eWxlUmVzb2x2ZXIgPSBwYXJl
bnRFbGVtZW50LT5kb2N1bWVudCgpLmVuc3VyZVN0eWxlUmVzb2x2ZXIoKTsKICAgICAgICAgICAg
IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+IHBhcmVudE1hdGNoZWRSdWxlcyA9IHBhcmVu
dFN0eWxlUmVzb2x2ZXIuc3R5bGVSdWxlc0ZvckVsZW1lbnQocGFyZW50RWxlbWVudCwgU3R5bGVS
ZXNvbHZlcjo6QWxsQ1NTUnVsZXMpOwotICAgICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpD
U1M6OkluaGVyaXRlZFN0eWxlRW50cnk+IGVudHJ5ID0gVHlwZUJ1aWxkZXI6OkNTUzo6SW5oZXJp
dGVkU3R5bGVFbnRyeTo6Y3JlYXRlKCkKKyAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+IGVudHJ5ID0gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5OjpjcmVhdGUoKQogICAgICAgICAg
ICAgICAgIC5zZXRNYXRjaGVkQ1NTUnVsZXMoYnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChw
YXJlbnRNYXRjaGVkUnVsZXMsIHN0eWxlUmVzb2x2ZXIsIHBhcmVudEVsZW1lbnQpKTsKICAgICAg
ICAgICAgIGlmIChwYXJlbnRFbGVtZW50LT5zdHlsZSgpICYmIHBhcmVudEVsZW1lbnQtPnN0eWxl
KCktPmxlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklu
bGluZVN0eWxlKiBzdHlsZVNoZWV0ID0gYXNJbnNwZWN0b3JTdHlsZVNoZWV0KHBhcmVudEVsZW1l
bnQpOwpAQCAtODYwLDcgKzg2MSw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNo
ZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vCiAgICAgfQog
fQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRJbmxpbmVTdHlsZXNGb3JOb2RlKEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6
OkNTU1N0eWxlPiYgaW5saW5lU3R5bGUsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHls
ZT4mIGF0dHJpYnV0ZXNTdHlsZSkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldElubGluZVN0
eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4mIGlubGluZVN0eWxlLCBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4mIGF0dHJpYnV0ZXNTdHls
ZSkKIHsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gZWxlbWVudEZvcklkKGVycm9yU3RyaW5nLCBu
b2RlSWQpOwogICAgIGlmICghZWxlbWVudCkKQEAgLTg3MSwxMSArODcyLDExIEBAIHZvaWQgSW5z
cGVjdG9yQ1NTQWdlbnQ6OmdldElubGluZVN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBpbnQgbm9kCiAgICAgICAgIHJldHVybjsKIAogICAgIGlubGluZVN0eWxlID0gc3R5
bGVTaGVldC0+YnVpbGRPYmplY3RGb3JTdHlsZShlbGVtZW50LT5zdHlsZSgpKTsKLSAgICBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IGF0dHJpYnV0ZXMgPSBidWlsZE9iamVjdEZv
ckF0dHJpYnV0ZXNTdHlsZShlbGVtZW50KTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NTdHlsZT4gYXR0cmlidXRlcyA9IGJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRl
c1N0eWxlKGVsZW1lbnQpOwogICAgIGF0dHJpYnV0ZXNTdHlsZSA9IGF0dHJpYnV0ZXMgPyBhdHRy
aWJ1dGVzLnJlbGVhc2UoKSA6IDA7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldENv
bXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwg
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NDb21wdXRlZFN0
eWxlUHJvcGVydHk+PiYgc3R5bGUpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRDb21wdXRl
ZFN0eWxlRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+JiBzdHlsZSkKIHsKICAgICBFbGVtZW50KiBl
bGVtZW50ID0gZWxlbWVudEZvcklkKGVycm9yU3RyaW5nLCBub2RlSWQpOwogICAgIGlmICghZWxl
bWVudCkKQEAgLTg4Niw5ICs4ODcsOSBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRDb21w
dXRlZFN0eWxlRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBubwogICAgIHN0
eWxlID0gaW5zcGVjdG9yU3R5bGUtPmJ1aWxkQXJyYXlGb3JDb21wdXRlZFN0eWxlKCk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldEFsbFN0eWxlU2hlZXRzKEVycm9yU3RyaW5nKiwg
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0
SGVhZGVyPj4mIHN0eWxlSW5mb3MpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRBbGxTdHls
ZVNoZWV0cyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJh
eTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+PiYgc3R5
bGVJbmZvcykKIHsKLSAgICBzdHlsZUluZm9zID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+OjpjcmVhdGUoKTsKKyAgICBzdHlsZUluZm9z
ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPjo6Y3JlYXRlKCk7CiAgICAgVmVjdG9yPERvY3VtZW50
Kj4gZG9jdW1lbnRzID0gbV9kb21BZ2VudC0+ZG9jdW1lbnRzKCk7CiAgICAgZm9yIChWZWN0b3I8
RG9jdW1lbnQqPjo6aXRlcmF0b3IgaXQgPSBkb2N1bWVudHMuYmVnaW4oKTsgaXQgIT0gZG9jdW1l
bnRzLmVuZCgpOyArK2l0KSB7CiAgICAgICAgIFN0eWxlU2hlZXRMaXN0KiBsaXN0ID0gKCppdCkt
PnN0eWxlU2hlZXRzKCk7CkBAIC05MDAsNyArOTAxLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2Vu
dDo6Z2V0QWxsU3R5bGVTaGVldHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmEKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN0eWxlU2hlZXQoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgUmVmUHRy
PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5PiYgc3R5bGVTaGVldE9iamVjdCkK
K3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN0eWxlU2hlZXQoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEJvZHk+JiBzdHlsZVNoZWV0T2JqZWN0KQogewog
ICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQgPSBhc3NlcnRTdHls
ZVNoZWV0Rm9ySWQoZXJyb3JTdHJpbmcsIHN0eWxlU2hlZXRJZCk7CiAgICAgaWYgKCFpbnNwZWN0
b3JTdHlsZVNoZWV0KQpAQCAtOTI5LDcgKzkzMCw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OnNldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5n
CiAgICAgKmVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcoZWMp
OwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVRleHQoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgZnVsbFN0eWxlSWQs
IGNvbnN0IFN0cmluZyYgdGV4dCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYg
cmVzdWx0KQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVUZXh0KEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGZ1bGxTdHlsZUlk
LCBjb25zdCBTdHJpbmcmIHRleHQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
OkNTU1N0eWxlPiYgcmVzdWx0KQogewogICAgIEluc3BlY3RvckNTU0lkIGNvbXBvdW5kSWQoZnVs
bFN0eWxlSWQpOwogICAgIEFTU0VSVCghY29tcG91bmRJZC5pc0VtcHR5KCkpOwpAQCAtOTQ1LDcg
Kzk0Niw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlVGV4dChFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwCiAgICAgKmVycm9yU3RyaW5nID0gSW5z
cGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcoZWMpOwogfQogCi12b2lkIEluc3BlY3RvckNT
U0FnZW50OjpzZXRQcm9wZXJ0eVRleHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgZnVsbFN0eWxlSWQsIGludCBwcm9wZXJ0eUluZGV4LCBj
b25zdCBTdHJpbmcmIHRleHQsIGJvb2wgb3ZlcndyaXRlLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTU3R5bGU+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRQcm9wZXJ0
eVRleHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiYgZnVsbFN0eWxlSWQsIGludCBwcm9wZXJ0eUluZGV4LCBjb25zdCBTdHJpbmcmIHRleHQs
IGJvb2wgb3ZlcndyaXRlLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NT
dHlsZT4mIHJlc3VsdCkKIHsKICAgICBJbnNwZWN0b3JDU1NJZCBjb21wb3VuZElkKGZ1bGxTdHls
ZUlkKTsKICAgICBBU1NFUlQoIWNvbXBvdW5kSWQuaXNFbXB0eSgpKTsKQEAgLTk2MSw3ICs5NjIs
NyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRQcm9wZXJ0eVRleHQoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SQogICAgICplcnJvclN0cmluZyA9IEluc3BlY3Rv
ckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKGVjKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2Vu
dDo6dG9nZ2xlUHJvcGVydHkoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiYgZnVsbFN0eWxlSWQsIGludCBwcm9wZXJ0eUluZGV4LCBib29sIGRp
c2FibGUsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4mIHJlc3VsdCkKK3ZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OnRvZ2dsZVByb3BlcnR5KEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGZ1bGxTdHlsZUlkLCBpbnQgcHJvcGVy
dHlJbmRleCwgYm9vbCBkaXNhYmxlLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NTdHlsZT4mIHJlc3VsdCkKIHsKICAgICBJbnNwZWN0b3JDU1NJZCBjb21wb3VuZElkKGZ1
bGxTdHlsZUlkKTsKICAgICBBU1NFUlQoIWNvbXBvdW5kSWQuaXNFbXB0eSgpKTsKQEAgLTk3Nyw3
ICs5NzgsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojp0b2dnbGVQcm9wZXJ0eShFcnJvclN0
cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbgogICAgICplcnJvclN0cmluZyA9IElu
c3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKGVjKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JD
U1NBZ2VudDo6c2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3Qg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGZ1bGxSdWxlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0
b3IsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KQordm9pZCBJbnNw
ZWN0b3JDU1NBZ2VudDo6c2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGZ1bGxSdWxlSWQsIGNvbnN0IFN0cmluZyYg
c2VsZWN0b3IsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+JiBy
ZXN1bHQpCiB7CiAgICAgSW5zcGVjdG9yQ1NTSWQgY29tcG91bmRJZChmdWxsUnVsZUlkKTsKICAg
ICBBU1NFUlQoIWNvbXBvdW5kSWQuaXNFbXB0eSgpKTsKQEAgLTk5NCw3ICs5OTUsNyBAQCB2b2lk
IEluc3BlY3RvckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0b3IoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBjb25zdCBSZWZQdHI8SQogICAgICplcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50
Ojp0b0Vycm9yU3RyaW5nKGVjKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6YWRkUnVs
ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IGludCBjb250ZXh0Tm9kZUlkLCBjb25z
dCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4mIHJl
c3VsdCkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmFkZFJ1bGUoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBjb25zdCBpbnQgY29udGV4dE5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3Rvciwg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCkKIHsK
ICAgICBOb2RlKiBub2RlID0gbV9kb21BZ2VudC0+YXNzZXJ0Tm9kZShlcnJvclN0cmluZywgY29u
dGV4dE5vZGVJZCk7CiAgICAgaWYgKCFub2RlKQpAQCAtMTAyMCwxMiArMTAyMSwxMiBAQCB2b2lk
IEluc3BlY3RvckNTU0FnZW50OjphZGRSdWxlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29u
c3QgaW50IGNvbnRleHROb2RlSQogICAgIHJlc3VsdCA9IGluc3BlY3RvclN0eWxlU2hlZXQtPmJ1
aWxkT2JqZWN0Rm9yUnVsZShydWxlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0
U3VwcG9ydGVkQ1NTUHJvcGVydGllcyhFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6
QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHlJbmZvPj4mIGNzc1Byb3BlcnRpZXMp
Cit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKEVycm9y
U3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHlJbmZvPj4mIGNzc1Byb3BlcnRpZXMpCiB7Ci0g
ICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0
eUluZm8+PiBwcm9wZXJ0aWVzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6
OkNTU1Byb3BlcnR5SW5mbz46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5SW5m
bz4+IHByb3BlcnRpZXMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5SW5mbz46OmNyZWF0ZSgpOwogICAgIGZvciAo
aW50IGkgPSBmaXJzdENTU1Byb3BlcnR5OyBpIDw9IGxhc3RDU1NQcm9wZXJ0eTsgKytpKSB7CiAg
ICAgICAgIENTU1Byb3BlcnR5SUQgaWQgPSBjb252ZXJ0VG9DU1NQcm9wZXJ0eUlEKGkpOwotICAg
ICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHlJbmZvPiBwcm9wZXJ0eSA9
IFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5SW5mbzo6Y3JlYXRlKCkKKyAgICAgICAgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHlJbmZvPiBwcm9wZXJ0
eSA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHlJbmZvOjpjcmVhdGUo
KQogICAgICAgICAgICAgLnNldE5hbWUoZ2V0UHJvcGVydHlOYW1lU3RyaW5nKGlkKSk7CiAKICAg
ICAgICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kID0gc2hvcnRoYW5k
Rm9yUHJvcGVydHkoaWQpOwpAQCAtMTAzMyw3ICsxMDM0LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NB
Z2VudDo6Z2V0U3VwcG9ydGVkQ1NTUHJvcGVydGllcyhFcnJvclN0cmluZyosIFJlZlB0cjxUeXBl
QnVpbGQKICAgICAgICAgICAgIHByb3BlcnRpZXMtPmFkZEl0ZW0ocHJvcGVydHkucmVsZWFzZSgp
KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIFJlZlB0cjxUeXBl
QnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gbG9uZ2hhbmRzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFN0
cmluZz46OmNyZWF0ZSgpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
QXJyYXk8U3RyaW5nPj4gbG9uZ2hhbmRzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8
U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBzaG9y
dGhhbmQubGVuZ3RoKCk7ICsraikgewogICAgICAgICAgICAgQ1NTUHJvcGVydHlJRCBsb25naGFu
ZElEID0gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtqXTsKICAgICAgICAgICAgIGxvbmdoYW5kcy0+
YWRkSXRlbShnZXRQcm9wZXJ0eU5hbWVTdHJpbmcobG9uZ2hhbmRJRCkpOwpAQCAtMTA2NCw3ICsx
MDY1LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Zm9yY2VQc2V1ZG9TdGF0ZShFcnJvclN0
cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGMKICAgICBlbGVtZW50LT5kb2N1bWVudCgp
LnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFJlY2FsY1N0eWxlSW1tZWRpYXRlbHkpOwogfQogCi12b2lk
IEluc3BlY3RvckNTU0FnZW50OjpnZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgaW50IGRvY3VtZW50Tm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5
PFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvckNT
U0FnZW50OjpnZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
aW50IGRvY3VtZW50Tm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+PiYgcmVzdWx0KQogewogICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IG1fZG9tQWdlbnQtPmFzc2VydERvY3VtZW50KGVycm9yU3Ry
aW5nLCBkb2N1bWVudE5vZGVJZCk7CiAgICAgaWYgKCFkb2N1bWVudCkKQEAgLTEwNzMsNyArMTA3
NCw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE5hbWVkRmxvd0NvbGxlY3Rpb24oRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgZG9jCiAgICAgbV9uYW1lZEZsb3dDb2xsZWN0aW9u
c1JlcXVlc3RlZC5hZGQoZG9jdW1lbnROb2RlSWQpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJL
aXROYW1lZEZsb3c+PiBuYW1lZEZsb3dzVmVjdG9yID0gZG9jdW1lbnQtPm5hbWVkRmxvd3MoKS0+
bmFtZWRGbG93cygpOwotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6
OkNTUzo6TmFtZWRGbG93Pj4gbmFtZWRGbG93cyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVp
bGRlcjo6Q1NTOjpOYW1lZEZsb3c+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+
PiBuYW1lZEZsb3dzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+OjpjcmVhdGUoKTsKIAogICAgIGZvciAoVmVjdG9y
PFJlZlB0cjxXZWJLaXROYW1lZEZsb3c+Pjo6aXRlcmF0b3IgaXQgPSBuYW1lZEZsb3dzVmVjdG9y
LmJlZ2luKCk7IGl0ICE9IG5hbWVkRmxvd3NWZWN0b3IuZW5kKCk7ICsraXQpCiAgICAgICAgIG5h
bWVkRmxvd3MtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JOYW1lZEZsb3coZXJyb3JTdHJpbmcsIGl0
LT5nZXQoKSwgZG9jdW1lbnROb2RlSWQpKTsKQEAgLTEwODYsMTYgKzEwODcsMTYgQEAgdm9pZCBJ
bnNwZWN0b3JDU1NBZ2VudDo6c3RhcnRTZWxlY3RvclByb2ZpbGVyKEVycm9yU3RyaW5nKikKICAg
ICBtX2N1cnJlbnRTZWxlY3RvclByb2ZpbGUgPSBhZG9wdFB0cihuZXcgU2VsZWN0b3JQcm9maWxl
KCkpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpzdG9wU2VsZWN0b3JQcm9maWxlcihF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3Rv
clByb2ZpbGU+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzdG9wU2VsZWN0b3JQ
cm9maWxlcihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZT4mIHJlc3VsdCkKIHsKICAgICByZXN1bHQgPSBz
dG9wU2VsZWN0b3JQcm9maWxlckltcGwoZXJyb3JTdHJpbmcsIHRydWUpOwogfQogCi1QYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6
OnN0b3BTZWxlY3RvclByb2ZpbGVySW1wbChFcnJvclN0cmluZyosIGJvb2wgbmVlZFByb2ZpbGUp
CitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxl
PiBJbnNwZWN0b3JDU1NBZ2VudDo6c3RvcFNlbGVjdG9yUHJvZmlsZXJJbXBsKEVycm9yU3RyaW5n
KiwgYm9vbCBuZWVkUHJvZmlsZSkKIHsKICAgICBpZiAoIW1fY3VycmVudFNlbGVjdG9yUHJvZmls
ZSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVj
dG9yUHJvZmlsZT4gcmVzdWx0OworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6OlNlbGVjdG9yUHJvZmlsZT4gcmVzdWx0OwogICAgIGlmIChtX2Zyb250ZW5kRGlzcGF0Y2hl
ciAmJiBuZWVkUHJvZmlsZSkKICAgICAgICAgcmVzdWx0ID0gbV9jdXJyZW50U2VsZWN0b3JQcm9m
aWxlLT50b0luc3BlY3Rvck9iamVjdCgpOwogICAgIG1fY3VycmVudFNlbGVjdG9yUHJvZmlsZS5j
bGVhcigpOwpAQCAtMTEzNiw3ICsxMTM3LDcgQEAgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGlu
ZVN0eWxlKiBJbnNwZWN0b3JDU1NBZ2VudDo6YXNJbnNwZWN0b3JTdHlsZVNoZWV0KEVsZW0KICAg
ICAgICAgICAgIHJldHVybiAwOwogCiAgICAgICAgIFN0cmluZyBuZXdTdHlsZVNoZWV0SWQgPSBT
dHJpbmc6Om51bWJlcihtX2xhc3RTdHlsZVNoZWV0SWQrKyk7Ci0gICAgICAgIFJlZlB0cjxJbnNw
ZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU+IGluc3BlY3RvclN0eWxlU2hlZXQgPSBJbnNw
ZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmNyZWF0ZShtX2RvbUFnZW50LT5wYWdlQWdl
bnQoKSwgbmV3U3R5bGVTaGVldElkLCBlbGVtZW50LCBUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNo
ZWV0T3JpZ2luOjpSZWd1bGFyLCB0aGlzKTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3RvclN0eWxl
U2hlZXRGb3JJbmxpbmVTdHlsZT4gaW5zcGVjdG9yU3R5bGVTaGVldCA9IEluc3BlY3RvclN0eWxl
U2hlZXRGb3JJbmxpbmVTdHlsZTo6Y3JlYXRlKG1fZG9tQWdlbnQtPnBhZ2VBZ2VudCgpLCBuZXdT
dHlsZVNoZWV0SWQsIGVsZW1lbnQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVT
aGVldE9yaWdpbjo6UmVndWxhciwgdGhpcyk7CiAgICAgICAgIG1faWRUb0luc3BlY3RvclN0eWxl
U2hlZXQuc2V0KG5ld1N0eWxlU2hlZXRJZCwgaW5zcGVjdG9yU3R5bGVTaGVldCk7CiAgICAgICAg
IG1fbm9kZVRvSW5zcGVjdG9yU3R5bGVTaGVldC5zZXQoZWxlbWVudCwgaW5zcGVjdG9yU3R5bGVT
aGVldCk7CiAgICAgICAgIHJldHVybiBpbnNwZWN0b3JTdHlsZVNoZWV0LmdldCgpOwpAQCAtMTE2
OCw3ICsxMTY5LDcgQEAgaW50IEluc3BlY3RvckNTU0FnZW50Ojpkb2N1bWVudE5vZGVXaXRoUmVx
dWVzdGVkRmxvd3NJZChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgcmV0dXJuIGRvY3VtZW50Tm9k
ZUlkOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50Ojpjb2xsZWN0U3R5bGVTaGVldHMoQ1NT
U3R5bGVTaGVldCogc3R5bGVTaGVldCwgVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpD
U1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+KiByZXN1bHQpCit2b2lkIEluc3BlY3RvckNTU0FnZW50
Ojpjb2xsZWN0U3R5bGVTaGVldHMoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCwgSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHls
ZVNoZWV0SGVhZGVyPiogcmVzdWx0KQogewogICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIGluc3Bl
Y3RvclN0eWxlU2hlZXQgPSBiaW5kU3R5bGVTaGVldChzdGF0aWNfY2FzdDxDU1NTdHlsZVNoZWV0
Kj4oc3R5bGVTaGVldCkpOwogICAgIHJlc3VsdC0+YWRkSXRlbShpbnNwZWN0b3JTdHlsZVNoZWV0
LT5idWlsZE9iamVjdEZvclN0eWxlU2hlZXRJbmZvKCkpOwpAQCAtMTI0MSw3ICsxMjQyLDcgQEAg
SW5zcGVjdG9yU3R5bGVTaGVldCogSW5zcGVjdG9yQ1NTQWdlbnQ6OnZpYUluc3BlY3RvclN0eWxl
U2hlZXQoRG9jdW1lbnQqIGRvY3VtZW4KICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBTdHJpbmcg
aWQgPSBTdHJpbmc6Om51bWJlcihtX2xhc3RTdHlsZVNoZWV0SWQrKyk7Ci0gICAgaW5zcGVjdG9y
U3R5bGVTaGVldCA9IEluc3BlY3RvclN0eWxlU2hlZXQ6OmNyZWF0ZShtX2RvbUFnZW50LT5wYWdl
QWdlbnQoKSwgaWQsIGNzc1N0eWxlU2hlZXQsIFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRP
cmlnaW46Okluc3BlY3RvciwgSW5zcGVjdG9yRE9NQWdlbnQ6OmRvY3VtZW50VVJMU3RyaW5nKGRv
Y3VtZW50KSwgdGhpcyk7CisgICAgaW5zcGVjdG9yU3R5bGVTaGVldCA9IEluc3BlY3RvclN0eWxl
U2hlZXQ6OmNyZWF0ZShtX2RvbUFnZW50LT5wYWdlQWdlbnQoKSwgaWQsIGNzc1N0eWxlU2hlZXQs
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6SW5zcGVjdG9y
LCBJbnNwZWN0b3JET01BZ2VudDo6ZG9jdW1lbnRVUkxTdHJpbmcoZG9jdW1lbnQpLCB0aGlzKTsK
ICAgICBtX2lkVG9JbnNwZWN0b3JTdHlsZVNoZWV0LnNldChpZCwgaW5zcGVjdG9yU3R5bGVTaGVl
dCk7CiAgICAgbV9jc3NTdHlsZVNoZWV0VG9JbnNwZWN0b3JTdHlsZVNoZWV0LnNldChjc3NTdHls
ZVNoZWV0LCBpbnNwZWN0b3JTdHlsZVNoZWV0KTsKICAgICBtX2RvY3VtZW50VG9JbnNwZWN0b3JT
dHlsZVNoZWV0LnNldChkb2N1bWVudCwgaW5zcGVjdG9yU3R5bGVTaGVldCk7CkBAIC0xMjU4LDIy
ICsxMjU5LDIyIEBAIEluc3BlY3RvclN0eWxlU2hlZXQqIEluc3BlY3RvckNTU0FnZW50Ojphc3Nl
cnRTdHlsZVNoZWV0Rm9ySWQoRXJyb3JTdHJpbmcqIGVycm9yCiAgICAgcmV0dXJuIGl0LT52YWx1
ZS5nZXQoKTsKIH0KIAotVHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6RW51bSBJ
bnNwZWN0b3JDU1NBZ2VudDo6ZGV0ZWN0T3JpZ2luKENTU1N0eWxlU2hlZXQqIHBhZ2VTdHlsZVNo
ZWV0LCBEb2N1bWVudCogb3duZXJEb2N1bWVudCkKK0luc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNT
Uzo6U3R5bGVTaGVldE9yaWdpbjo6RW51bSBJbnNwZWN0b3JDU1NBZ2VudDo6ZGV0ZWN0T3JpZ2lu
KENTU1N0eWxlU2hlZXQqIHBhZ2VTdHlsZVNoZWV0LCBEb2N1bWVudCogb3duZXJEb2N1bWVudCkK
IHsKLSAgICBUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpFbnVtIG9yaWdpbiA9
IFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlJlZ3VsYXI7CisgICAgSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpFbnVtIG9yaWdpbiA9IElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6UmVndWxhcjsKICAg
ICBpZiAocGFnZVN0eWxlU2hlZXQgJiYgIXBhZ2VTdHlsZVNoZWV0LT5vd25lck5vZGUoKSAmJiBw
YWdlU3R5bGVTaGVldC0+aHJlZigpLmlzRW1wdHkoKSkKLSAgICAgICAgb3JpZ2luID0gVHlwZUJ1
aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6VXNlckFnZW50OworICAgICAgICBvcmlnaW4g
PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlVzZXJBZ2Vu
dDsKICAgICBlbHNlIGlmIChwYWdlU3R5bGVTaGVldCAmJiBwYWdlU3R5bGVTaGVldC0+b3duZXJO
b2RlKCkgJiYgcGFnZVN0eWxlU2hlZXQtPm93bmVyTm9kZSgpLT5ub2RlTmFtZSgpID09ICIjZG9j
dW1lbnQiKQotICAgICAgICBvcmlnaW4gPSBUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3Jp
Z2luOjpVc2VyOworICAgICAgICBvcmlnaW4gPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
OlN0eWxlU2hlZXRPcmlnaW46OlVzZXI7CiAgICAgZWxzZSB7CiAgICAgICAgIEluc3BlY3RvclN0
eWxlU2hlZXQqIHZpYUluc3BlY3RvclN0eWxlU2hlZXRGb3JPd25lciA9IHZpYUluc3BlY3RvclN0
eWxlU2hlZXQob3duZXJEb2N1bWVudCwgZmFsc2UpOwogICAgICAgICBpZiAodmlhSW5zcGVjdG9y
U3R5bGVTaGVldEZvck93bmVyICYmIHBhZ2VTdHlsZVNoZWV0ID09IHZpYUluc3BlY3RvclN0eWxl
U2hlZXRGb3JPd25lci0+cGFnZVN0eWxlU2hlZXQoKSkKLSAgICAgICAgICAgIG9yaWdpbiA9IFR5
cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46Okluc3BlY3RvcjsKKyAgICAgICAgICAg
IG9yaWdpbiA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6
SW5zcGVjdG9yOwogICAgIH0KICAgICByZXR1cm4gb3JpZ2luOwogfQogCi1QYXNzUmVmUHRyPFR5
cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZv
clJ1bGUoU3R5bGVSdWxlKiBzdHlsZVJ1bGUsIFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIp
CitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gSW5zcGVj
dG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZShTdHlsZVJ1bGUqIHN0eWxlUnVsZSwgU3R5
bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKIHsKICAgICBpZiAoIXN0eWxlUnVsZSkKICAgICAg
ICAgcmV0dXJuIDA7CkBAIC0xMjg3LDcgKzEyODgsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVy
OjpDU1M6OkNTU1J1bGU+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvclJ1bGUoU3R5
bAogICAgIHJldHVybiBpbnNwZWN0b3JTdHlsZVNoZWV0ID8gaW5zcGVjdG9yU3R5bGVTaGVldC0+
YnVpbGRPYmplY3RGb3JSdWxlKGNzc29tV3JhcHBlcikgOiAwOwogfQogCi1QYXNzUmVmUHRyPFR5
cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZv
clJ1bGUoQ1NTU3R5bGVSdWxlKiBydWxlKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDU1M6OkNTU1J1bGU+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvclJ1bGUo
Q1NTU3R5bGVSdWxlKiBydWxlKQogewogICAgIGlmICghcnVsZSkKICAgICAgICAgcmV0dXJuIDA7
CkBAIC0xMjk3LDE1ICsxMjk4LDE1IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
UnVsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZShDU1NTCiAgICAgcmV0
dXJuIGluc3BlY3RvclN0eWxlU2hlZXQgPyBpbnNwZWN0b3JTdHlsZVNoZWV0LT5idWlsZE9iamVj
dEZvclJ1bGUocnVsZSkgOiAwOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPj4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlG
b3JSdWxlTGlzdChDU1NSdWxlTGlzdCogcnVsZUxpc3QpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4+
IEluc3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3QqIHJ1
bGVMaXN0KQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTUnVsZT4+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NSdWxlPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4+IHJlc3VsdCA9IElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTUnVsZT46OmNyZWF0ZSgpOwogICAgIGlmICghcnVsZUxpc3QpCiAgICAgICAgIHJldHVybiBy
ZXN1bHQucmVsZWFzZSgpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgc2l6ZSA9IHJ1bGVM
aXN0LT5sZW5ndGgoKTsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBDU1NTdHlsZVJ1bGUqIHJ1
bGUgPSBhc0NTU1N0eWxlUnVsZShydWxlTGlzdC0+aXRlbShpKSk7Ci0gICAgICAgIFJlZlB0cjxU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiBydWxlT2JqZWN0ID0gYnVpbGRPYmplY3RGb3JSdWxl
KHJ1bGUpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NS
dWxlPiBydWxlT2JqZWN0ID0gYnVpbGRPYmplY3RGb3JSdWxlKHJ1bGUpOwogICAgICAgICBpZiAo
IXJ1bGVPYmplY3QpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgcmVzdWx0LT5hZGRJ
dGVtKHJ1bGVPYmplY3QpOwpAQCAtMTMxMywxOCArMTMxNCwxOCBAQCBQYXNzUmVmUHRyPFR5cGVC
dWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPj4gSW5zcGVjdG9yQ1NTQWdl
bnQ6OmJ1aQogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g+PiBJbnNwZWN0b3JD
U1NBZ2VudDo6YnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChjb25zdCBWZWN0b3I8UmVmUHRy
PFN0eWxlUnVsZUJhc2U+PiYgbWF0Y2hlZFJ1bGVzLCBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29s
dmVyLCBFbGVtZW50KiBlbGVtZW50KQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRjaD4+IEluc3BlY3Rv
ckNTU0FnZW50OjpidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0IFZlY3RvcjxSZWZQ
dHI8U3R5bGVSdWxlQmFzZT4+JiBtYXRjaGVkUnVsZXMsIFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVz
b2x2ZXIsIEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJh
eTxUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g+PiByZXN1bHQgPSBUeXBlQnVpbGRlcjo6QXJy
YXk8VHlwZUJ1aWxkZXI6OkNTUzo6UnVsZU1hdGNoPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6
UnVsZU1hdGNoPj4gcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g+OjpjcmVhdGUoKTsKIAogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtYXRjaGVkUnVsZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAg
aWYgKCFtYXRjaGVkUnVsZXNbaV0tPmlzU3R5bGVSdWxlKCkpCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgU3R5bGVSdWxlKiBtYXRjaGVkU3R5bGVSdWxlID0gc3RhdGljX2Nhc3Q8U3R5
bGVSdWxlKj4obWF0Y2hlZFJ1bGVzW2ldLmdldCgpKTsKLSAgICAgICAgUmVmUHRyPFR5cGVCdWls
ZGVyOjpDU1M6OkNTU1J1bGU+IHJ1bGVPYmplY3QgPSBidWlsZE9iamVjdEZvclJ1bGUobWF0Y2hl
ZFN0eWxlUnVsZSwgc3R5bGVSZXNvbHZlcik7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+IHJ1bGVPYmplY3QgPSBidWlsZE9iamVjdEZvclJ1bGUo
bWF0Y2hlZFN0eWxlUnVsZSwgc3R5bGVSZXNvbHZlcik7CiAgICAgICAgIGlmICghcnVsZU9iamVj
dCkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PGludD4+IG1hdGNoaW5nU2VsZWN0b3JzID0gVHlwZUJ1aWxkZXI6OkFycmF5PGludD46OmNy
ZWF0ZSgpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8aW50
Pj4gbWF0Y2hpbmdTZWxlY3RvcnMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+
OjpjcmVhdGUoKTsKICAgICAgICAgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3Qg
PSBtYXRjaGVkU3R5bGVSdWxlLT5zZWxlY3Rvckxpc3QoKTsKICAgICAgICAgbG9uZyBpbmRleCA9
IDA7CiAgICAgICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gc2VsZWN0b3JM
aXN0LmZpcnN0KCk7IHNlbGVjdG9yOyBzZWxlY3RvciA9IENTU1NlbGVjdG9yTGlzdDo6bmV4dChz
ZWxlY3RvcikpIHsKQEAgLTEzMzMsNyArMTMzNCw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6
OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRjaD4+IEluc3BlY3RvckNTU0FnZW50Ojpi
CiAgICAgICAgICAgICAgICAgbWF0Y2hpbmdTZWxlY3RvcnMtPmFkZEl0ZW0oaW5kZXgpOwogICAg
ICAgICAgICAgKytpbmRleDsKICAgICAgICAgfQotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkNTUzo6UnVsZU1hdGNoPiBtYXRjaCA9IFR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRjaDo6Y3Jl
YXRlKCkKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UnVsZU1h
dGNoPiBtYXRjaCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UnVsZU1hdGNoOjpjcmVh
dGUoKQogICAgICAgICAgICAgLnNldFJ1bGUocnVsZU9iamVjdCkKICAgICAgICAgICAgIC5zZXRN
YXRjaGluZ1NlbGVjdG9ycyhtYXRjaGluZ1NlbGVjdG9ycyk7CiAgICAgICAgIHJlc3VsdC0+YWRk
SXRlbShtYXRjaCk7CkBAIC0xMzQyLDcgKzEzNDMsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g+PiBJbnNwZWN0b3JDU1NBZ2VudDo6
YgogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JBdHRy
aWJ1dGVzU3R5bGUoRWxlbWVudCogZWxlbWVudCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9y
QXR0cmlidXRlc1N0eWxlKEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgaWYgKCFlbGVtZW50LT5p
c1N0eWxlZEVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMzU5LDIyICsxMzYwLDIy
IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvckNTU0Fn
ZW50OjpidWlsZE9iamVjdEZvckF0dHJpYnV0CiAgICAgcmV0dXJuIGluc3BlY3RvclN0eWxlLT5i
dWlsZE9iamVjdEZvclN0eWxlKCk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5
PFR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbj4+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5
Rm9yUmVnaW9ucyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+
IHJlZ2lvbkxpc3QsIGludCBkb2N1bWVudE5vZGVJZCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb24+PiBJ
bnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvclJlZ2lvbnMoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBQYXNzUmVmUHRyPE5vZGVMaXN0PiByZWdpb25MaXN0LCBpbnQgZG9jdW1lbnROb2Rl
SWQpCiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpS
ZWdpb24+PiByZWdpb25zID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlJl
Z2lvbj46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJh
eTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbj4+IHJlZ2lvbnMgPSBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lv
bj46OmNyZWF0ZSgpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lvbkxpc3Qt
Pmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgVHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uOjpSZWdp
b25PdmVyc2V0OjpFbnVtIHJlZ2lvbk92ZXJzZXQ7CisgICAgICAgIEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNTUzo6UmVnaW9uOjpSZWdpb25PdmVyc2V0OjpFbnVtIHJlZ2lvbk92ZXJzZXQ7CiAK
ICAgICAgICAgc3dpdGNoICh0b0VsZW1lbnQocmVnaW9uTGlzdC0+aXRlbShpKSktPnJlbmRlclJl
Z2lvbigpLT5yZWdpb25PdmVyc2V0U3RhdGUoKSkgewogICAgICAgICBjYXNlIFJlZ2lvbkZpdDoK
LSAgICAgICAgICAgIHJlZ2lvbk92ZXJzZXQgPSBUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb246OlJl
Z2lvbk92ZXJzZXQ6OkZpdDsKKyAgICAgICAgICAgIHJlZ2lvbk92ZXJzZXQgPSBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbjo6UmVnaW9uT3ZlcnNldDo6Rml0OwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUmVnaW9uRW1wdHk6Ci0gICAgICAgICAgICByZWdpb25P
dmVyc2V0ID0gVHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uOjpSZWdpb25PdmVyc2V0OjpFbXB0eTsK
KyAgICAgICAgICAgIHJlZ2lvbk92ZXJzZXQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
OlJlZ2lvbjo6UmVnaW9uT3ZlcnNldDo6RW1wdHk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBSZWdpb25PdmVyc2V0OgotICAgICAgICAgICAgcmVnaW9uT3ZlcnNldCA9IFR5cGVC
dWlsZGVyOjpDU1M6OlJlZ2lvbjo6UmVnaW9uT3ZlcnNldDo6T3ZlcnNldDsKKyAgICAgICAgICAg
IHJlZ2lvbk92ZXJzZXQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbjo6UmVn
aW9uT3ZlcnNldDo6T3ZlcnNldDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFJl
Z2lvblVuZGVmaW5lZDoKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTM4Myw3ICsxMzg0LDcg
QEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9u
Pj4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWwKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICB9CiAKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbj4gcmVnaW9uID0g
VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uOjpjcmVhdGUoKQorICAgICAgICBSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb24+IHJlZ2lvbiA9IEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNTUzo6UmVnaW9uOjpjcmVhdGUoKQogICAgICAgICAgICAgLnNldFJlZ2lvbk92ZXJz
ZXQocmVnaW9uT3ZlcnNldCkKICAgICAgICAgICAgIC8vIGRvY3VtZW50Tm9kZUlkIHdhcyBwcmV2
aW91c2x5IGFzc2VydGVkCiAgICAgICAgICAgICAuc2V0Tm9kZUlkKG1fZG9tQWdlbnQtPnB1c2hO
b2RlVG9Gcm9udGVuZChlcnJvclN0cmluZywgZG9jdW1lbnROb2RlSWQsIHJlZ2lvbkxpc3QtPml0
ZW0oaSkpKTsKQEAgLTEzOTQsMTcgKzEzOTUsMTcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6
QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uPj4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWwK
ICAgICByZXR1cm4gcmVnaW9ucy5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkNTUzo6TmFtZWRGbG93PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JOYW1l
ZEZsb3coRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBXZWJLaXROYW1lZEZsb3cqIHdlYmtpdE5h
bWVkRmxvdywgaW50IGRvY3VtZW50Tm9kZUlkKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9y
TmFtZWRGbG93KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgV2ViS2l0TmFtZWRGbG93KiB3ZWJr
aXROYW1lZEZsb3csIGludCBkb2N1bWVudE5vZGVJZCkKIHsKICAgICBSZWZQdHI8Tm9kZUxpc3Q+
IGNvbnRlbnRMaXN0ID0gd2Via2l0TmFtZWRGbG93LT5nZXRDb250ZW50KCk7Ci0gICAgUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+PiBjb250ZW50ID0gVHlwZUJ1aWxkZXI6OkFycmF5PGlu
dD46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxp
bnQ+PiBjb250ZW50ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pjo6Y3JlYXRl
KCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29udGVudExpc3QtPmxlbmd0aCgp
OyArK2kpIHsKICAgICAgICAgLy8gZG9jdW1lbnROb2RlSWQgd2FzIHByZXZpb3VzbHkgYXNzZXJ0
ZWQKICAgICAgICAgY29udGVudC0+YWRkSXRlbShtX2RvbUFnZW50LT5wdXNoTm9kZVRvRnJvbnRl
bmQoZXJyb3JTdHJpbmcsIGRvY3VtZW50Tm9kZUlkLCBjb250ZW50TGlzdC0+aXRlbShpKSkpOwog
ICAgIH0KIAotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+IG5hbWVkRmxv
dyA9IFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdzo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+IG5hbWVkRmxvdyA9IEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93OjpjcmVhdGUoKQogICAgICAgICAuc2V0RG9j
dW1lbnROb2RlSWQoZG9jdW1lbnROb2RlSWQpCiAgICAgICAgIC5zZXROYW1lKHdlYmtpdE5hbWVk
Rmxvdy0+bmFtZSgpLnN0cmluZygpKQogICAgICAgICAuc2V0T3ZlcnNldCh3ZWJraXROYW1lZEZs
b3ctPm92ZXJzZXQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0Fn
ZW50LmgKaW5kZXggOWQzYjQwZC4uYTE2ZmVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNTU0FnZW50LmgKQEAgLTI3LDEyICsyNywxMiBAQAogCiAjaW5jbHVkZSAi
Q1NTU2VsZWN0b3IuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKLSNpbmNs
dWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgogI2luY2x1ZGUgIklu
c3BlY3RvclN0eWxlU2hlZXQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKyNpbmNs
dWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRlICJTZWN1cml0eUNvbnRleHQu
aCIKLQorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KQEAgLTY0LDcgKzY0LDcgQEAgY2xhc3MgQ2hhbmdlUmVnaW9uT3ZlcnNldFRh
c2s7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAogY2xhc3MgSW5zcGVjdG9yQ1NTQWdlbnQKLSAg
ICA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQKKyAgICA6IHB1YmxpYyBJbnNwZWN0b3JBZ2Vu
dEJhc2UKICAgICAsIHB1YmxpYyBJbnNwZWN0b3JET01BZ2VudDo6RE9NTGlzdGVuZXIKICAgICAs
IHB1YmxpYyBJbnNwZWN0b3JDU1NCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKICAgICAsIHB1Ymxp
YyBJbnNwZWN0b3JTdHlsZVNoZWV0OjpMaXN0ZW5lciB7CkBAIC05Niw3ICs5Niw3IEBAIHB1Ymxp
YzoKICAgICB+SW5zcGVjdG9yQ1NTQWdlbnQoKTsKIAogICAgIGJvb2wgZm9yY2VQc2V1ZG9TdGF0
ZShFbGVtZW50KiwgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUpOwotICAgIHZpcnR1YWwgdm9pZCBk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkQWdlbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZW5h
YmxlKEVycm9yU3RyaW5nKik7CkBAIC0xMTIsMjYgKzExMiwyNiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkaWRSZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50KiwgV2ViS2l0TmFt
ZWRGbG93KiwgTm9kZSogY29udGVudEVsZW1lbnQsIE5vZGUqIG5leHRDb250ZW50RWxlbWVudCA9
IG51bGxwdHIpOwogICAgIHZvaWQgZGlkVW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50
KERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93KiwgTm9kZSogY29udGVudEVsZW1lbnQpOwogCi0g
ICAgdmlydHVhbCB2b2lkIGdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50
IG5vZGVJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1ND
b21wdXRlZFN0eWxlUHJvcGVydHk+PiYpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbmxpbmVTdHls
ZXNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpD
U1M6OkNTU1N0eWxlPiYgaW5saW5lU3R5bGUsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NT
dHlsZT4mIGF0dHJpYnV0ZXMpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRNYXRjaGVkU3R5bGVzRm9y
Tm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IGJvb2wqIGluY2x1ZGVQc2V1ZG8s
IGNvbnN0IGJvb2wqIGluY2x1ZGVJbmhlcml0ZWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8
VHlwZUJ1aWxkZXI6OkNTUzo6UnVsZU1hdGNoPj4mIG1hdGNoZWRDU1NSdWxlcywgUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+PiYgcHNl
dWRvSWRNYXRjaGVzLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6
OkluaGVyaXRlZFN0eWxlRW50cnk+PiYgaW5oZXJpdGVkRW50cmllcyk7Ci0gICAgdmlydHVhbCB2
b2lkIGdldEFsbFN0eWxlU2hlZXRzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpB
cnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPj4mIHN0eWxlU2hlZXRJ
bmZvcyk7Ci0gICAgdmlydHVhbCB2b2lkIGdldFN0eWxlU2hlZXQoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxl
U2hlZXRCb2R5PiYgcmVzdWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q29tcHV0ZWRTdHlsZUZv
ck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NDb21wdXRlZFN0eWxl
UHJvcGVydHk+PiYpOworICAgIHZpcnR1YWwgdm9pZCBnZXRJbmxpbmVTdHlsZXNGb3JOb2RlKEVy
cm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTU3R5bGU+JiBpbmxpbmVTdHlsZSwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTU3R5bGU+JiBhdHRyaWJ1dGVzKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0TWF0Y2hl
ZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBib29sKiBpbmNs
dWRlUHNldWRvLCBjb25zdCBib29sKiBpbmNsdWRlSW5oZXJpdGVkLCBSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0
Y2g+PiYgbWF0Y2hlZENTU1J1bGVzLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+PiYgcHNldWRv
SWRNYXRjaGVzLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5Pj4mIGluaGVyaXRlZEVudHJp
ZXMpOworICAgIHZpcnR1YWwgdm9pZCBnZXRBbGxTdHlsZVNoZWV0cyhFcnJvclN0cmluZyosIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+PiYgc3R5bGVTaGVldEluZm9zKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZ2V0U3R5bGVTaGVldChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc3R5bGVT
aGVldElkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0
Qm9keT4mIHJlc3VsdCk7CiAgICAgdmlydHVhbCB2b2lkIGdldFN0eWxlU2hlZXRUZXh0KEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIFN0cmluZyogcmVzdWx0KTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0U3R5bGVTaGVldFRleHQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIHN0eWxlU2hlZXRJZCwgY29uc3QgU3RyaW5nJiB0ZXh0KTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0U3R5bGVUZXh0KEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4m
IHN0eWxlSWQsIGNvbnN0IFN0cmluZyYgdGV4dCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNT
U1N0eWxlPiYgcmVzdWx0KTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UHJvcGVydHlUZXh0KEVycm9y
U3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHN0eWxlSWQsIGludCBwcm9w
ZXJ0eUluZGV4LCBjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wgb3ZlcndyaXRlLCBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpOwotICAgIHZpcnR1YWwgdm9pZCB0b2dn
bGVQcm9wZXJ0eShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBz
dHlsZUlkLCBpbnQgcHJvcGVydHlJbmRleCwgYm9vbCBkaXNhYmxlLCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRSdWxlU2Vs
ZWN0b3IoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcnVsZUlk
LCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVs
ZT4mIHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2b2lkIGFkZFJ1bGUoRXJyb3JTdHJpbmcqLCBpbnQg
Y29udGV4dE5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpDU1M6OkNTU1J1bGU+JiByZXN1bHQpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTdXBwb3J0ZWRD
U1NQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+PiYgcmVzdWx0KTsKLSAgICB2aXJ0dWFsIHZv
aWQgZm9yY2VQc2V1ZG9TdGF0ZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3JBcnJheT4mIGZvcmNlZFBzZXVkb0NsYXNzZXMpOwotICAgIHZpcnR1YWwgdm9p
ZCBnZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3RyaW5nKiwgaW50IGRvY3VtZW50Tm9kZUlk
LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4+
JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCBzZXRTdHlsZVRleHQoRXJyb3JTdHJpbmcqLCBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBzdHlsZUlkLCBjb25zdCBT
dHJpbmcmIHRleHQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxl
PiYgcmVzdWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJvcGVydHlUZXh0KEVycm9yU3RyaW5n
KiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgc3R5bGVJZCwgaW50
IHByb3BlcnR5SW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBvdmVyd3JpdGUsIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KTsKKyAgICB2
aXJ0dWFsIHZvaWQgdG9nZ2xlUHJvcGVydHkoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBzdHlsZUlkLCBpbnQgcHJvcGVydHlJbmRleCwgYm9v
bCBkaXNhYmxlLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4m
IHJlc3VsdCk7CisgICAgdmlydHVhbCB2b2lkIHNldFJ1bGVTZWxlY3RvcihFcnJvclN0cmluZyos
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIHJ1bGVJZCwgY29uc3Qg
U3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
UnVsZT4mIHJlc3VsdCk7CisgICAgdmlydHVhbCB2b2lkIGFkZFJ1bGUoRXJyb3JTdHJpbmcqLCBp
bnQgY29udGV4dE5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCk7CisgICAgdmlydHVhbCB2b2lk
IGdldFN1cHBvcnRlZENTU1Byb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9w
ZXJ0eUluZm8+PiYgcmVzdWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9yY2VQc2V1ZG9TdGF0ZShF
cnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ckFycmF5PiYgZm9yY2VkUHNldWRvQ2xhc3Nlcyk7CisgICAgdmlydHVhbCB2b2lkIGdldE5hbWVk
Rmxvd0NvbGxlY3Rpb24oRXJyb3JTdHJpbmcqLCBpbnQgZG9jdW1lbnROb2RlSWQsIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
Ok5hbWVkRmxvdz4+JiByZXN1bHQpOwogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0U2VsZWN0b3JQ
cm9maWxlcihFcnJvclN0cmluZyopOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wU2VsZWN0b3JQcm9m
aWxlcihFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2Zp
bGU+Jik7CisgICAgdmlydHVhbCB2b2lkIHN0b3BTZWxlY3RvclByb2ZpbGVyKEVycm9yU3RyaW5n
KiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlPiYp
OwogCi0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+IHN0
b3BTZWxlY3RvclByb2ZpbGVySW1wbChFcnJvclN0cmluZyosIGJvb2wgbmVlZFByb2ZpbGUpOwor
ICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2Zp
bGU+IHN0b3BTZWxlY3RvclByb2ZpbGVySW1wbChFcnJvclN0cmluZyosIGJvb2wgbmVlZFByb2Zp
bGUpOwogICAgIHZvaWQgd2lsbE1hdGNoUnVsZShTdHlsZVJ1bGUqLCBJbnNwZWN0b3JDU1NPTVdy
YXBwZXJzJiwgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbiYpOwogICAgIHZvaWQgZGlkTWF0
Y2hSdWxlKGJvb2wpOwogICAgIHZvaWQgd2lsbFByb2Nlc3NSdWxlKFN0eWxlUnVsZSosIFN0eWxl
UmVzb2x2ZXImKTsKQEAgLTE1OCwyMCArMTU4LDIwIEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9y
U3R5bGVTaGVldEZvcklubGluZVN0eWxlKiBhc0luc3BlY3RvclN0eWxlU2hlZXQoRWxlbWVudCog
ZWxlbWVudCk7CiAgICAgRWxlbWVudCogZWxlbWVudEZvcklkKEVycm9yU3RyaW5nKiwgaW50IG5v
ZGVJZCk7CiAgICAgaW50IGRvY3VtZW50Tm9kZVdpdGhSZXF1ZXN0ZWRGbG93c0lkKERvY3VtZW50
Kik7Ci0gICAgdm9pZCBjb2xsZWN0U3R5bGVTaGVldHMoQ1NTU3R5bGVTaGVldCosIFR5cGVCdWls
ZGVyOjpBcnJheTxXZWJDb3JlOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVy
PiopOworICAgIHZvaWQgY29sbGVjdFN0eWxlU2hlZXRzKENTU1N0eWxlU2hlZXQqLCBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0
eWxlU2hlZXRIZWFkZXI+Kik7CiAKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBiaW5kU3R5bGVT
aGVldChDU1NTdHlsZVNoZWV0Kik7CiAgICAgSW5zcGVjdG9yU3R5bGVTaGVldCogdmlhSW5zcGVj
dG9yU3R5bGVTaGVldChEb2N1bWVudCosIGJvb2wgY3JlYXRlSWZBYnNlbnQpOwogICAgIEluc3Bl
Y3RvclN0eWxlU2hlZXQqIGFzc2VydFN0eWxlU2hlZXRGb3JJZChFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYpOwotICAgIFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OkVudW0g
ZGV0ZWN0T3JpZ2luKENTU1N0eWxlU2hlZXQqIHBhZ2VTdHlsZVNoZWV0LCBEb2N1bWVudCogb3du
ZXJEb2N1bWVudCk7CisgICAgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0
T3JpZ2luOjpFbnVtIGRldGVjdE9yaWdpbihDU1NTdHlsZVNoZWV0KiBwYWdlU3R5bGVTaGVldCwg
RG9jdW1lbnQqIG93bmVyRG9jdW1lbnQpOwogCi0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NSdWxlPiBidWlsZE9iamVjdEZvclJ1bGUoU3R5bGVSdWxlKiwgU3R5bGVSZXNvbHZl
ciYpOwotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gYnVpbGRPYmpl
Y3RGb3JSdWxlKENTU1N0eWxlUnVsZSopOwotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+PiBidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NT
UnVsZUxpc3QqKTsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRl
cjo6Q1NTOjpSdWxlTWF0Y2g+PiBidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0IFZl
Y3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiwgU3R5bGVSZXNvbHZlciYsIEVsZW1lbnQqKTsK
LSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBidWlsZE9iamVjdEZv
ckF0dHJpYnV0ZXNTdHlsZShFbGVtZW50Kik7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6
QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uPj4gYnVpbGRBcnJheUZvclJlZ2lvbnMoRXJy
b3JTdHJpbmcqLCBQYXNzUmVmUHRyPE5vZGVMaXN0PiwgaW50IGRvY3VtZW50Tm9kZUlkKTsKLSAg
ICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4gYnVpbGRPYmplY3RGb3JO
YW1lZEZsb3coRXJyb3JTdHJpbmcqLCBXZWJLaXROYW1lZEZsb3cqLCBpbnQgZG9jdW1lbnROb2Rl
SWQpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxl
PiBidWlsZE9iamVjdEZvclJ1bGUoU3R5bGVSdWxlKiwgU3R5bGVSZXNvbHZlciYpOworICAgIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiBidWlsZE9iamVj
dEZvclJ1bGUoQ1NTU3R5bGVSdWxlKik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+PiBidWls
ZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3QqKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UnVsZU1h
dGNoPj4gYnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChjb25zdCBWZWN0b3I8UmVmUHRyPFN0
eWxlUnVsZUJhc2U+PiYsIFN0eWxlUmVzb2x2ZXImLCBFbGVtZW50Kik7CisgICAgUGFzc1JlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBidWlsZE9iamVjdEZvckF0
dHJpYnV0ZXNTdHlsZShFbGVtZW50Kik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbj4+IGJ1aWxk
QXJyYXlGb3JSZWdpb25zKEVycm9yU3RyaW5nKiwgUGFzc1JlZlB0cjxOb2RlTGlzdD4sIGludCBk
b2N1bWVudE5vZGVJZCk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6Ok5hbWVkRmxvdz4gYnVpbGRPYmplY3RGb3JOYW1lZEZsb3coRXJyb3JTdHJpbmcqLCBXZWJL
aXROYW1lZEZsb3cqLCBpbnQgZG9jdW1lbnROb2RlSWQpOwogCiAgICAgLy8gSW5zcGVjdG9yRE9N
QWdlbnQ6OkRPTUxpc3RlbmVyIGltcGxlbWVudGF0aW9uCiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
bW92ZURvY3VtZW50KERvY3VtZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAppbmRleCBmOWY3MmYyLi45NDMwOTk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKQEAg
LTQ3LDIyICs0NywyNCBAQAogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk5vZGVM
aXN0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2lu
Y2x1ZGUgIlNjcmlwdFByb2ZpbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKKyNpbmNs
dWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3QuaD4KIAotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxk
ZXI6OkFycmF5OwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VJ
ZDsKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlSW5mbzsKLXVz
aW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlU3RhdGU7Ci11c2luZyBX
ZWJDb3JlOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFjZUxvZzsKLXVzaW5nIFdlYkNvcmU6OlR5
cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQ7Ci11c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRl
cjo6TmV0d29yazo6RnJhbWVJZDsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5
OwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJjZUlkOwordXNp
bmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJjZUluZm87Cit1c2luZyBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlU3RhdGU7Cit1c2luZyBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nOwordXNpbmcgSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFjZUxvZ0lkOwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6TmV0d29yazo6RnJhbWVJZDsKKwordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6SW5zcGVjdG9yQ2Fu
dmFzQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVj
dG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiQ2Fu
dmFzIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVND
SUlMaXRlcmFsKCJDYW52YXMiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fcGFnZUFn
ZW50KHBhZ2VBZ2VudCkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2Ny
aXB0TWFuYWdlcikKICAgICAsIG1fZW5hYmxlZChmYWxzZSkKQEAgLTczLDcgKzc1LDcgQEAgSW5z
cGVjdG9yQ2FudmFzQWdlbnQ6On5JbnNwZWN0b3JDYW52YXNBZ2VudCgpCiB7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5k
RGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yQ2FudmFzRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwog
ICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JDYW52YXNCYWNrZW5kRGlzcGF0Y2hl
cjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKQEAgLTE3OCwyNyArMTgwLDI3IEBA
IHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmdldFJlc291cmNlU3RhdGUoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBjb25zdCBUcmFjCiAgICAgICAgIG1vZHVsZS5yZXNvdXJjZVN0YXRlKGVy
cm9yU3RyaW5nLCB0cmFjZUxvZ0lkLCByZXNvdXJjZUlkLCAmcmVzdWx0KTsKIH0KIAotU2NyaXB0
T2JqZWN0IEluc3BlY3RvckNhbnZhc0FnZW50Ojp3cmFwQ2FudmFzMkRSZW5kZXJpbmdDb250ZXh0
Rm9ySW5zdHJ1bWVudGF0aW9uKGNvbnN0IFNjcmlwdE9iamVjdCYgY29udGV4dCkKK0RlcHJlY2F0
ZWQ6OlNjcmlwdE9iamVjdCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6d3JhcENhbnZhczJEUmVuZGVy
aW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlvbihjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmpl
Y3QmIGNvbnRleHQpCiB7CiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgSW5qZWN0ZWRTY3Jp
cHRDYW52YXNNb2R1bGUgbW9kdWxlID0gaW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUoJmVycm9y
LCBjb250ZXh0KTsKICAgICBpZiAobW9kdWxlLmhhc05vVmFsdWUoKSkKLSAgICAgICAgcmV0dXJu
IFNjcmlwdE9iamVjdCgpOworICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0
KCk7CiAgICAgcmV0dXJuIG5vdGlmeVJlbmRlcmluZ0NvbnRleHRXYXNXcmFwcGVkKG1vZHVsZS53
cmFwQ2FudmFzMkRDb250ZXh0KGNvbnRleHQpKTsKIH0KIAogI2lmIEVOQUJMRShXRUJHTCkKLVNj
cmlwdE9iamVjdCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6d3JhcFdlYkdMUmVuZGVyaW5nQ29udGV4
dEZvckluc3RydW1lbnRhdGlvbihjb25zdCBTY3JpcHRPYmplY3QmIGdsQ29udGV4dCkKK0RlcHJl
Y2F0ZWQ6OlNjcmlwdE9iamVjdCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6d3JhcFdlYkdMUmVuZGVy
aW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlvbihjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmpl
Y3QmIGdsQ29udGV4dCkKIHsKICAgICBFcnJvclN0cmluZyBlcnJvcjsKICAgICBJbmplY3RlZFNj
cmlwdENhbnZhc01vZHVsZSBtb2R1bGUgPSBpbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZSgmZXJy
b3IsIGdsQ29udGV4dCk7CiAgICAgaWYgKG1vZHVsZS5oYXNOb1ZhbHVlKCkpCi0gICAgICAgIHJl
dHVybiBTY3JpcHRPYmplY3QoKTsKKyAgICAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdE9i
amVjdCgpOwogICAgIHJldHVybiBub3RpZnlSZW5kZXJpbmdDb250ZXh0V2FzV3JhcHBlZChtb2R1
bGUud3JhcFdlYkdMQ29udGV4dChnbENvbnRleHQpKTsKIH0KICNlbmRpZgogCi1TY3JpcHRPYmpl
Y3QgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6Om5vdGlmeVJlbmRlcmluZ0NvbnRleHRXYXNXcmFwcGVk
KGNvbnN0IFNjcmlwdE9iamVjdCYgd3JhcHBlZENvbnRleHQpCitEZXByZWNhdGVkOjpTY3JpcHRP
YmplY3QgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6Om5vdGlmeVJlbmRlcmluZ0NvbnRleHRXYXNXcmFw
cGVkKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgd3JhcHBlZENvbnRleHQpCiB7CiAg
ICAgQVNTRVJUKG1fZnJvbnRlbmREaXNwYXRjaGVyKTsKICAgICBKU0M6OkV4ZWNTdGF0ZSogc2Ny
aXB0U3RhdGUgPSB3cmFwcGVkQ29udGV4dC5zY3JpcHRTdGF0ZSgpOwpAQCAtMjI0LDEzICsyMjYs
MTMgQEAgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6Omlu
amVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlKEVycm8KICAgICByZXR1cm4gbW9kdWxlOwogfQogCi1J
bmplY3RlZFNjcmlwdENhbnZhc01vZHVsZSBJbnNwZWN0b3JDYW52YXNBZ2VudDo6aW5qZWN0ZWRT
Y3JpcHRDYW52YXNNb2R1bGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTY3JpcHRP
YmplY3QmIHNjcmlwdE9iamVjdCkKK0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlIEluc3BlY3Rv
ckNhbnZhc0FnZW50OjppbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZShFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgc2NyaXB0T2JqZWN0KQog
ewogICAgIGlmICghY2hlY2tJc0VuYWJsZWQoZXJyb3JTdHJpbmcpKQogICAgICAgICByZXR1cm4g
SW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUoKTsKICAgICBpZiAoc2NyaXB0T2JqZWN0Lmhhc05v
VmFsdWUoKSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgKmVycm9y
U3RyaW5nID0gIkludGVybmFsIGVycm9yOiBvcmlnaW5hbCBTY3JpcHRPYmplY3QgaGFzIG5vIHZh
bHVlIjsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yOiBvcmlnaW5hbCBE
ZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgaGFzIG5vIHZhbHVlIjsKICAgICAgICAgcmV0dXJuIElu
amVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlKCk7CiAgICAgfQogICAgIHJldHVybiBpbmplY3RlZFNj
cmlwdENhbnZhc01vZHVsZShlcnJvclN0cmluZywgc2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRlKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0Fn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaApp
bmRleCA0OWQwM2U4Li4yN2QzZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzQWdlbnQuaApAQCAtMzMsMTUgKzMzLDIwIEBACiAKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRl
bmQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgorI2luY2x1ZGUgIkluc3Bl
Y3RvcldlYkFnZW50QmFzZS5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5o
IgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBEZXByZWNhdGVkIHsK
K2NsYXNzIFNjcmlwdE9iamVjdDsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBG
cmFtZTsKQEAgLTQ5LDExICs1NCwxMCBAQCBjbGFzcyBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVs
ZTsKIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2Vu
dDsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7Ci1jbGFzcyBTY3JpcHRPYmplY3Q7CiAKIHR5
cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JDYW52YXNBZ2VudCA6
IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JDYW52YXNCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yQ2FudmFzQWdlbnQgOiBwdWJsaWMg
SW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yQ2FudmFzQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JDYW52
YXNBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMs
IEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGlu
amVjdGVkU2NyaXB0TWFuYWdlcikKICAgICB7CkBAIC02MSw3ICs2NSw3IEBAIHB1YmxpYzoKICAg
ICB9CiAgICAgfkluc3BlY3RvckNhbnZhc0FnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsK
IAogICAgIHZvaWQgZnJhbWVOYXZpZ2F0ZWQoRnJhbWUqKTsKQEAgLTY5LDM0ICs3MywzNCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWRCZWdpbkZyYW1lKCk7CiAKICAgICAvLyBDYWxsZWQgZnJvbSBJ
bnNwZWN0b3JDYW52YXNJbnN0cnVtZW50YXRpb24uCi0gICAgU2NyaXB0T2JqZWN0IHdyYXBDYW52
YXMyRFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24oY29uc3QgU2NyaXB0T2JqZWN0
Jik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IHdyYXBDYW52YXMyRFJlbmRlcmluZ0Nv
bnRleHRGb3JJbnN0cnVtZW50YXRpb24oY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0Jik7
CiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIFNjcmlwdE9iamVjdCB3cmFwV2ViR0xSZW5kZXJpbmdD
b250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKGNvbnN0IFNjcmlwdE9iamVjdCYpOworICAgIERlcHJl
Y2F0ZWQ6OlNjcmlwdE9iamVjdCB3cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVu
dGF0aW9uKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYpOwogI2VuZGlmCiAKICAgICAv
LyBDYWxsZWQgZnJvbSB0aGUgZnJvbnQtZW5kLgogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJy
b3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwotICAg
IHZpcnR1YWwgdm9pZCBkcm9wVHJhY2VMb2coRXJyb3JTdHJpbmcqLCBjb25zdCBUeXBlQnVpbGRl
cjo6Q2FudmFzOjpUcmFjZUxvZ0lkJik7CisgICAgdmlydHVhbCB2b2lkIGRyb3BUcmFjZUxvZyhF
cnJvclN0cmluZyosIGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VM
b2dJZCYpOwogICAgIHZpcnR1YWwgdm9pZCBoYXNVbmluc3RydW1lbnRlZENhbnZhc2VzKEVycm9y
U3RyaW5nKiwgYm9vbCopOwotICAgIHZpcnR1YWwgdm9pZCBjYXB0dXJlRnJhbWUoRXJyb3JTdHJp
bmcqLCBjb25zdCBUeXBlQnVpbGRlcjo6TmV0d29yazo6RnJhbWVJZCosIFR5cGVCdWlsZGVyOjpD
YW52YXM6OlRyYWNlTG9nSWQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRDYXB0dXJpbmcoRXJy
b3JTdHJpbmcqLCBjb25zdCBUeXBlQnVpbGRlcjo6TmV0d29yazo6RnJhbWVJZCosIFR5cGVCdWls
ZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcENhcHR1cmlu
ZyhFcnJvclN0cmluZyosIGNvbnN0IFR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQmKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0VHJhY2VMb2coRXJyb3JTdHJpbmcqLCBjb25zdCBUeXBlQnVp
bGRlcjo6Q2FudmFzOjpUcmFjZUxvZ0lkJiwgY29uc3QgaW50KiwgY29uc3QgaW50KiwgUmVmUHRy
PFR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nPiYpOwotICAgIHZpcnR1YWwgdm9pZCByZXBs
YXlUcmFjZUxvZyhFcnJvclN0cmluZyosIGNvbnN0IFR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNl
TG9nSWQmLCBpbnQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJjZVN0YXRlPiYp
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRSZXNvdXJjZUluZm8oRXJyb3JTdHJpbmcqLCBjb25zdCBU
eXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJjZUlkJiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDYW52
YXM6OlJlc291cmNlSW5mbz4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVzb3VyY2VTdGF0ZShF
cnJvclN0cmluZyosIGNvbnN0IFR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQmLCBjb25z
dCBUeXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJjZUlkJiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpD
YW52YXM6OlJlc291cmNlU3RhdGU+Jik7CisgICAgdmlydHVhbCB2b2lkIGNhcHR1cmVGcmFtZShF
cnJvclN0cmluZyosIGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkZyYW1l
SWQqLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc3RhcnRDYXB0dXJpbmcoRXJyb3JTdHJpbmcqLCBjb25zdCBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpGcmFtZUlkKiwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q2FudmFzOjpUcmFjZUxvZ0lkKik7CisgICAgdmlydHVhbCB2b2lkIHN0b3BDYXB0dXJpbmcoRXJy
b3JTdHJpbmcqLCBjb25zdCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9n
SWQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VHJhY2VMb2coRXJyb3JTdHJpbmcqLCBjb25zdCBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQmLCBjb25zdCBpbnQqLCBj
b25zdCBpbnQqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFjZUxv
Zz4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVwbGF5VHJhY2VMb2coRXJyb3JTdHJpbmcqLCBjb25z
dCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQmLCBpbnQsIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlU3RhdGU+Jik7CisgICAg
dmlydHVhbCB2b2lkIGdldFJlc291cmNlSW5mbyhFcnJvclN0cmluZyosIGNvbnN0IEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VJZCYsIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlSW5mbz4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0
UmVzb3VyY2VTdGF0ZShFcnJvclN0cmluZyosIGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNhbnZhczo6VHJhY2VMb2dJZCYsIGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZh
czo6UmVzb3VyY2VJZCYsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlJl
c291cmNlU3RhdGU+Jik7CiAKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yQ2FudmFzQWdlbnQoSW5z
dHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclBhZ2VBZ2VudCosIEluamVjdGVkU2NyaXB0TWFu
YWdlciopOwogCiAgICAgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUgaW5qZWN0ZWRTY3JpcHRD
YW52YXNNb2R1bGUoRXJyb3JTdHJpbmcqLCBKU0M6OkV4ZWNTdGF0ZSopOwotICAgIEluamVjdGVk
U2NyaXB0Q2FudmFzTW9kdWxlIGluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlKEVycm9yU3RyaW5n
KiwgY29uc3QgU2NyaXB0T2JqZWN0Jik7CisgICAgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUg
aW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUoRXJyb3JTdHJpbmcqLCBjb25zdCBEZXByZWNhdGVk
OjpTY3JpcHRPYmplY3QmKTsKICAgICBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZSBpbmplY3Rl
ZFNjcmlwdENhbnZhc01vZHVsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYpOwogCiAgICAg
dm9pZCBmaW5kRnJhbWVzV2l0aFVuaW5zdHJ1bWVudGVkQ2FudmFzZXMoKTsKICAgICBib29sIGNo
ZWNrSXNFbmFibGVkKEVycm9yU3RyaW5nKikgY29uc3Q7Ci0gICAgU2NyaXB0T2JqZWN0IG5vdGlm
eVJlbmRlcmluZ0NvbnRleHRXYXNXcmFwcGVkKGNvbnN0IFNjcmlwdE9iamVjdCYpOworICAgIERl
cHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBub3RpZnlSZW5kZXJpbmdDb250ZXh0V2FzV3JhcHBlZChj
b25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmKTsKIAogICAgIEluc3BlY3RvclBhZ2VBZ2Vu
dCogbV9wYWdlQWdlbnQ7CiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXNJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDYW52YXNJbnN0cnVtZW50YXRpb24uaAppbmRleCBkM2ZkYTYwLi4wMTUwYzkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzSW5zdHJ1bWVu
dGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0lu
c3RydW1lbnRhdGlvbi5oCkBAIC0zNCwxMSArMzQsMTEgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JD
YW52YXNBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2lu
Y2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIK
KyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1TY3JpcHRPYmplY3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3cmFwQ2FudmFzMkRS
ZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKERvY3VtZW50KiBkb2N1bWVudCwgY29u
c3QgU2NyaXB0T2JqZWN0JiBjb250ZXh0KQorRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d3JhcENhbnZhczJEUmVuZGVyaW5nQ29udGV4dEZvckluc3Ry
dW1lbnRhdGlvbihEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9i
amVjdCYgY29udGV4dCkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0Zv
ckRvY3VtZW50KGRvY3VtZW50KSkgewpAQCAtNDksMTEgKzQ5LDExIEBAIFNjcmlwdE9iamVjdCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndyYXBDYW52YXMyRFJlbmRlcmluZ0NvbnRleHRGb3JJ
bnN0cnVtZW50CiAgICAgVU5VU0VEX1BBUkFNKGRvY3VtZW50KTsKICAgICBVTlVTRURfUEFSQU0o
Y29udGV4dCk7CiAjZW5kaWYKLSAgICByZXR1cm4gU2NyaXB0T2JqZWN0KCk7CisgICAgcmV0dXJu
IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCgpOwogfQogCiAjaWYgRU5BQkxFKFdFQkdMKQotU2Ny
aXB0T2JqZWN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d3JhcFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEZvckluc3RydW1lbnRhdGlvbihEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFNjcmlwdE9i
amVjdCYgZ2xDb250ZXh0KQorRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d3JhcFdlYkdMUmVuZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlvbihE
b2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgZ2xDb250
ZXh0KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQo
ZG9jdW1lbnQpKSB7CkBAIC02NCw3ICs2NCw3IEBAIFNjcmlwdE9iamVjdCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndyYXBXZWJHTFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpCiAg
ICAgVU5VU0VEX1BBUkFNKGRvY3VtZW50KTsKICAgICBVTlVTRURfUEFSQU0oZ2xDb250ZXh0KTsK
ICNlbmRpZgotICAgIHJldHVybiBTY3JpcHRPYmplY3QoKTsKKyAgICByZXR1cm4gRGVwcmVjYXRl
ZDo6U2NyaXB0T2JqZWN0KCk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IGM2NzIxNDIuLmMz
M2U2YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuY3Bw
CkBAIC0zOCw3ICszOCw5IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNjcmlwdENv
bnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiU2Ny
aXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgorCit1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAppbmRleCA0NGU3ZWExNmEuLmRmMzg5ZDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTI3LDYg
KzI3LDcgQEAKICNpZm5kZWYgSW5zcGVjdG9yQ2xpZW50X2gKICNkZWZpbmUgSW5zcGVjdG9yQ2xp
ZW50X2gKIAorI2luY2x1ZGUgIkluc3BlY3RvckZvcndhcmRpbmcuaCIKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KQEAgLTM0LDcgKzM1LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5z
cGVjdG9yQ29udHJvbGxlcjsKLWNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKIGNsYXNz
IEZyYW1lOwogY2xhc3MgUGFnZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcAppbmRleCBkYWE5YzViLi5kZTE2ZjQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcApA
QCAtNDMsMTQgKzQzLDE2IEBACiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIu
aCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlci5o
IgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgogI2luY2x1ZGUgPHd0Zi9DdXJy
ZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4aW11bUNvbnNvbGVN
ZXNzYWdlcyA9IDEwMDA7CkBAIC01OSw3ICs2MSw3IEBAIHN0YXRpYyBjb25zdCBpbnQgZXhwaXJl
Q29uc29sZU1lc3NhZ2VzU3RlcCA9IDEwMDsKIGludCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OnNf
ZW5hYmxlZEFnZW50Q291bnQgPSAwOwogCiBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6Okluc3BlY3Rv
ckNvbnNvbGVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJ
bmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKLSAgICA6IEluc3Bl
Y3RvckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIkNvbnNvbGUiKSwgaW5zdHJ1bWVudGluZ0FnZW50
cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkNvbnNvbGUiKSwgaW5z
dHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVk
U2NyaXB0TWFuYWdlcikKICAgICAsIG1fcHJldmlvdXNNZXNzYWdlKDApCiAgICAgLCBtX2V4cGly
ZWRDb25zb2xlTWVzc2FnZUNvdW50KDApCkBAIC0xMjIsNyArMTI0LDcgQEAgdm9pZCBJbnNwZWN0
b3JDb25zb2xlQWdlbnQ6OnJlc2V0KCkKICAgICBtX2NvdW50cy5jbGVhcigpOwogfQogCi12b2lk
IEluc3BlY3RvckNvbnNvbGVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNr
ZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91
bmlxdWU8SW5zcGVjdG9yQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVs
KTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yQ29uc29sZUJhY2tlbmREaXNw
YXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpAQCAtMzIwLDcgKzMyMiw3
IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjphZGRDb25zb2xlTWVzc2FnZShQYXNzT3du
UHRyPENvbnNvbGVNZXNzYWdlPiBjb25zb2xlCiBjbGFzcyBJbnNwZWN0YWJsZUhlYXBPYmplY3Qg
OiBwdWJsaWMgSW5qZWN0ZWRTY3JpcHRIb3N0OjpJbnNwZWN0YWJsZU9iamVjdCB7CiBwdWJsaWM6
CiAgICAgZXhwbGljaXQgSW5zcGVjdGFibGVIZWFwT2JqZWN0KGludCBoZWFwT2JqZWN0SWQpIDog
bV9oZWFwT2JqZWN0SWQoaGVhcE9iamVjdElkKSB7IH0KLSAgICB2aXJ0dWFsIFNjcmlwdFZhbHVl
IGdldChKU0M6OkV4ZWNTdGF0ZSopCisgICAgdmlydHVhbCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSBnZXQoSlNDOjpFeGVjU3RhdGUqKQogICAgIHsKICAgICAgICAgcmV0dXJuIFNjcmlwdFByb2Zp
bGVyOjpvYmplY3RCeUhlYXBPYmplY3RJZChtX2hlYXBPYmplY3RJZCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCmluZGV4IGMw
ZjBhZGMuLjk5NDU1Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb25zb2xlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29uc29sZUFnZW50LmgKQEAgLTI5LDggKzI5LDkgQEAKIAogI2luY2x1ZGUgIkNvbnNvbGVB
UElUeXBlcy5oIgogI2luY2x1ZGUgIkNvbnNvbGVUeXBlcy5oIgotI2luY2x1ZGUgIkluc3BlY3Rv
ckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgog
I2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdl
bnRCYXNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC01Miw3ICs1Myw3IEBAIGNsYXNzIFNj
cmlwdFByb2ZpbGU7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNw
ZWN0b3JDb25zb2xlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5z
cGVjdG9yQ29uc29sZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JD
b25zb2xlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9y
Q29uc29sZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoSW5zcGVjdG9yQ29uc29sZUFnZW50KTsKIHB1YmxpYzoKICAgICBJbnNwZWN0b3JDb25zb2xl
QWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluamVjdGVkU2NyaXB0TWFuYWdlciopOwpAQCAt
NjQsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9lbmFibGVkOyB9CiAgICAgdm9pZCByZXNldCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
LCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAK
ICAgICB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUs
IE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBKU0M6OkV4ZWNTdGF0ZSosIFBh
c3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmll
ciA9IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuY3BwCmluZGV4IGUyM2ZlMDcuLjQzNzc1ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTQyLDcgKzQyLDYgQEAKICNpbmNs
dWRlICJJbnNwZWN0b3JBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgotI2lu
Y2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNTU0FnZW50
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JDbGllbnQuaCIKQEAgLTcxLDggKzcwLDEwIEBACiAjaW5jbHVkZSAiUGFnZURlYnVnZ2VyQWdl
bnQuaCIKICNpbmNsdWRlICJQYWdlUnVudGltZUFnZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgot
I2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVk
ZSA8aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggYTZlMmQ3ZC4uZjZlNmQ4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5o
CkBAIC0zMywxMyArMzMsMTggQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRl
ICJJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50
LmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaD4KICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25h
bWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworY2xhc3MgSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsOworY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7Cit9
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwpAQCAtNDgs
MTUgKzUzLDEyIEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEluamVjdGVkU2NyaXB0
TWFuYWdlcjsKIGNsYXNzIEluc3BlY3RvckFnZW50OwogY2xhc3MgSW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50OwotY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CiBjbGFzcyBJ
bnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JET01BZ2VudDsKIGNsYXNzIEluc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OwotY2xhc3Mg
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7
CiBjbGFzcyBJbnNwZWN0b3JNZW1vcnlBZ2VudDsKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNs
YXNzIEluc3BlY3Rvck92ZXJsYXk7CiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CiBjbGFzcyBJ
bnNwZWN0b3JQcm9maWxlckFnZW50OwpAQCAtOTUsNyArOTcsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBoYXNMb2NhbEZyb250ZW5kKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNSZW1vdGVGcm9udGVuZCgp
IGNvbnN0OwogCi0gICAgdm9pZCBjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKik7CisgICAgdm9pZCBjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqKTsKICAgICB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZCgpOwogICAgIHZvaWQg
c2V0UHJvY2Vzc0lkKGxvbmcpOwogCkBAIC0xMTEsNyArMTEzLDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBzZXRJbmRpY2F0aW5nKGJvb2wpOwogCi0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5v
ZGUoKSBjb25zdDsKIAogICAgIGJvb2wgaXNVbmRlclRlc3QoKTsKICAgICB2b2lkIGV2YWx1YXRl
Rm9yVGVzdEluRnJvbnRlbmQobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgc2NyaXB0KTsKQEAg
LTE1NCwxMiArMTU2LDEyIEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudCog
bV9wcm9maWxlckFnZW50OwogI2VuZGlmCiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI+IG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1faW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI7CiAgICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5kQ2xpZW50PiBtX2luc3BlY3RvckZy
b250ZW5kQ2xpZW50OwotICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JG
cm9udGVuZENoYW5uZWw7CisgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
IG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogICAgIFBhZ2UqIG1fcGFnZTsKICAgICBJbnNw
ZWN0b3JDbGllbnQqIG1faW5zcGVjdG9yQ2xpZW50OwotICAgIEluc3BlY3RvckFnZW50UmVnaXN0
cnkgbV9hZ2VudHM7CisgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5IG1fYWdl
bnRzOwogICAgIGJvb2wgbV9pc1VuZGVyVGVzdDsKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVD
VE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAK
aW5kZXggMzcwMzQzOC4uZTFkMjczYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xMDEsNiArMTAxLDggQEAKICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK3VzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKQEAgLTIxMCw3ICsyMTIsNyBAQCBTdHJpbmcgSW5zcGVjdG9yRE9N
QWdlbnQ6OnRvRXJyb3JTdHJpbmcoY29uc3QgRXhjZXB0aW9uQ29kZSYgZWMpCiB9CiAKIEluc3Bl
Y3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3BlY3Rvck92ZXJsYXkqIG92
ZXJsYXksIEluc3BlY3RvckNsaWVudCogY2xpZW50KQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50
KEFTQ0lJTGl0ZXJhbCgiRE9NIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0
b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJET00iKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAg
ICAsIG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1fb3ZlcmxheShvdmVybGF5KQpAQCAtMjMw
LDcgKzIzMiw3IEBAIEluc3BlY3RvckRPTUFnZW50Ojp+SW5zcGVjdG9yRE9NQWdlbnQoKQogICAg
IEFTU0VSVCghbV9zZWFyY2hpbmdGb3JOb2RlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCog
ZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3Bh
dGNoZXIpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1f
ZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JET01Gcm9udGVu
ZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9
IEluc3BlY3RvckRPTUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIs
IHRoaXMpOwpAQCAtNDIwLDcgKzQyMiw3IEBAIEVsZW1lbnQqIEluc3BlY3RvckRPTUFnZW50Ojph
c3NlcnRFZGl0YWJsZUVsZW1lbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQKICAgICBy
ZXR1cm4gZWxlbWVudDsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0RG9jdW1lbnQo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4m
IHJvb3QpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXREb2N1bWVudChFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+JiBy
b290KQogewogICAgIG1fZG9jdW1lbnRSZXF1ZXN0ZWQgPSB0cnVlOwogCkBAIC00NjAsNyArNDYy
LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKGlu
dCBub2RlSWQsIGludCBkZXB0aCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4+IGNoaWxkcmVuID0g
YnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKG5vZGUsIGRlcHRoLCBub2RlTWFwKTsKKyAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6RE9NOjpOb2RlPj4gY2hpbGRyZW4gPSBidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRy
ZW4obm9kZSwgZGVwdGgsIG5vZGVNYXApOwogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5zZXRD
aGlsZE5vZGVzKG5vZGVJZCwgY2hpbGRyZW4ucmVsZWFzZSgpKTsKIH0KIApAQCAtNTM4LDcgKzU0
MCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnF1ZXJ5U2VsZWN0b3IoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zCiAgICAgICAgICplbGVtZW50SWQgPSBwdXNo
Tm9kZVBhdGhUb0Zyb250ZW5kKGVsZW1lbnQuZ2V0KCkpOwogfQogCi12b2lkIEluc3BlY3RvckRP
TUFnZW50OjpxdWVyeVNlbGVjdG9yQWxsKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5v
ZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8
aW50Pj4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnF1ZXJ5U2VsZWN0b3JBbGwo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVj
dG9ycywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PGludD4+JiByZXN1bHQp
CiB7CiAgICAgTm9kZSogbm9kZSA9IGFzc2VydE5vZGUoZXJyb3JTdHJpbmcsIG5vZGVJZCk7CiAg
ICAgaWYgKCFub2RlKQpAQCAtNTU1LDcgKzU1Nyw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OnF1ZXJ5U2VsZWN0b3JBbGwoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBj
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICByZXN1bHQgPSBUeXBlQnVpbGRlcjo6QXJy
YXk8aW50Pjo6Y3JlYXRlKCk7CisgICAgcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbm9k
ZXMtPmxlbmd0aCgpOyArK2kpCiAgICAgICAgIHJlc3VsdC0+YWRkSXRlbShwdXNoTm9kZVBhdGhU
b0Zyb250ZW5kKG5vZGVzLT5pdGVtKGkpKSk7CkBAIC01ODYsNyArNTg4LDcgQEAgaW50IEluc3Bl
Y3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKE5vZGUqIG5vZGVUb1B1c2gpCiAg
ICAgICAgICAgICBPd25QdHI8Tm9kZVRvSWRNYXA+IG5ld01hcCA9IGFkb3B0UHRyKG5ldyBOb2Rl
VG9JZE1hcCk7CiAgICAgICAgICAgICBkYW5nbGluZ01hcCA9IG5ld01hcC5nZXQoKTsKICAgICAg
ICAgICAgIG1fZGFuZ2xpbmdOb2RlVG9JZE1hcHMuYXBwZW5kKG5ld01hcC5yZWxlYXNlKCkpOwot
ICAgICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RE9NOjpO
b2RlPj4gY2hpbGRyZW4gPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9k
ZT46OmNyZWF0ZSgpOworICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4+IGNoaWxkcmVuID0gSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpO
b2RlPjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBjaGlsZHJlbi0+YWRkSXRlbShidWlsZE9iamVj
dEZvck5vZGUobm9kZSwgMCwgZGFuZ2xpbmdNYXApKTsKICAgICAgICAgICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyLT5zZXRDaGlsZE5vZGVzKDAsIGNoaWxkcmVuKTsKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtODEzLDkgKzgxNSw5IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldE5vZGVWYWx1
ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0CiAgICAgbV9kb21F
ZGl0b3ItPnJlcGxhY2VXaG9sZVRleHQodG9UZXh0KG5vZGUpLCB2YWx1ZSwgZXJyb3JTdHJpbmcp
OwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcqIG9iamVj
dEdyb3VwLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpET006OkV2ZW50
TGlzdGVuZXI+PiYgbGlzdGVuZXJzQXJyYXkpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRF
dmVudExpc3RlbmVyc0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlk
LCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpFdmVudExpc3RlbmVyPj4mIGxp
c3RlbmVyc0FycmF5KQogewotICAgIGxpc3RlbmVyc0FycmF5ID0gVHlwZUJ1aWxkZXI6OkFycmF5
PFR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI+OjpjcmVhdGUoKTsKKyAgICBsaXN0ZW5l
cnNBcnJheSA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkRPTTo6RXZlbnRMaXN0ZW5lcj46OmNyZWF0ZSgpOwogICAgIE5vZGUqIG5vZGUgPSBh
c3NlcnROb2RlKGVycm9yU3RyaW5nLCBub2RlSWQpOwogICAgIGlmICghbm9kZSkKICAgICAgICAg
cmV0dXJuOwpAQCAtOTIxLDcgKzkyMyw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnBlcmZv
cm1TZWFyY2goRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHdoCiAgICAg
KnJlc3VsdENvdW50ID0gcmVzdWx0c1ZlY3Rvci5zaXplKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6OmdldFNlYXJjaFJlc3VsdHMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHNlYXJjaElkLCBpbnQgZnJvbUluZGV4LCBpbnQgdG9JbmRleCwgUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxpbnQ+PiYgbm9kZUlkcykKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OmdldFNlYXJjaFJlc3VsdHMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHNlYXJjaElkLCBpbnQgZnJvbUluZGV4LCBpbnQgdG9JbmRleCwgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkFycmF5PGludD4+JiBub2RlSWRzKQogewogICAgIFNlYXJjaFJlc3VsdHM6
Oml0ZXJhdG9yIGl0ID0gbV9zZWFyY2hSZXN1bHRzLmZpbmQoc2VhcmNoSWQpOwogICAgIGlmIChp
dCA9PSBtX3NlYXJjaFJlc3VsdHMuZW5kKCkpIHsKQEAgLTkzNSw3ICs5MzcsNyBAQCB2b2lkIElu
c3BlY3RvckRPTUFnZW50OjpnZXRTZWFyY2hSZXN1bHRzKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbm9kZUlkcyA9
IFR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKKyAgICBub2RlSWRzID0gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CiAgICAgZm9yIChpbnQgaSA9
IGZyb21JbmRleDsgaSA8IHRvSW5kZXg7ICsraSkKICAgICAgICAgbm9kZUlkcy0+YWRkSXRlbShw
dXNoTm9kZVBhdGhUb0Zyb250ZW5kKChpdC0+dmFsdWUpW2ldLmdldCgpKSk7CiB9CkBAIC0xMjEy
LDcgKzEyMTQsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRGaWxlSW5wdXRGaWxlcyhF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsCiAgICAgZWxlbWVudC0+c2V0Rmls
ZXMoZmlsZUxpc3QpOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZXNvbHZlTm9kZShF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyogY29uc3Qg
b2JqZWN0R3JvdXAsIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYg
cmVzdWx0KQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cmVzb2x2ZU5vZGUoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVjdEdyb3Vw
LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYg
cmVzdWx0KQogewogICAgIFN0cmluZyBvYmplY3RHcm91cE5hbWUgPSBvYmplY3RHcm91cCA/ICpv
YmplY3RHcm91cCA6ICIiOwogICAgIE5vZGUqIG5vZGUgPSBub2RlRm9ySWQobm9kZUlkKTsKQEAg
LTEyMjAsNyArMTIyMiw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlc29sdmVOb2RlKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QKICAgICAgICAgKmVycm9y
U3RyaW5nID0gIk5vIG5vZGUgd2l0aCBnaXZlbiBpZCBmb3VuZCI7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IG9i
amVjdCA9IHJlc29sdmVOb2RlKG5vZGUsIG9iamVjdEdyb3VwTmFtZSk7CisgICAgUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gb2JqZWN0ID0gcmVz
b2x2ZU5vZGUobm9kZSwgb2JqZWN0R3JvdXBOYW1lKTsKICAgICBpZiAoIW9iamVjdCkgewogICAg
ICAgICAqZXJyb3JTdHJpbmcgPSAiTm9kZSB3aXRoIGdpdmVuIGlkIGRvZXMgbm90IGJlbG9uZyB0
byB0aGUgZG9jdW1lbnQiOwogICAgICAgICByZXR1cm47CkBAIC0xMjI4LDcgKzEyMzAsNyBAQCB2
b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZXNvbHZlTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIGludCBub2RlSWQsIGNvbnN0CiAgICAgcmVzdWx0ID0gb2JqZWN0OwogfQogCi12b2lkIElu
c3BlY3RvckRPTUFnZW50OjpnZXRBdHRyaWJ1dGVzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
aW50IG5vZGVJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiYgcmVzdWx0KQor
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0QXR0cmlidXRlcyhFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxT
dHJpbmc+PiYgcmVzdWx0KQogewogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBhc3NlcnRFbGVtZW50
KGVycm9yU3RyaW5nLCBub2RlSWQpOwogICAgIGlmICghZWxlbWVudCkKQEAgLTEyNjAsNyArMTI2
Miw3IEBAIHN0YXRpYyBTdHJpbmcgZG9jdW1lbnRCYXNlVVJMU3RyaW5nKERvY3VtZW50KiBkb2N1
bWVudCkKICAgICByZXR1cm4gZG9jdW1lbnQtPmNvbXBsZXRlVVJMKCIiKS5zdHJpbmcoKTsKIH0K
IAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiBJbnNwZWN0b3JET01BZ2VudDo6
YnVpbGRPYmplY3RGb3JOb2RlKE5vZGUqIG5vZGUsIGludCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5v
ZGVzTWFwKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+IElu
c3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvck5vZGUoTm9kZSogbm9kZSwgaW50IGRlcHRo
LCBOb2RlVG9JZE1hcCogbm9kZXNNYXApCiB7CiAgICAgaW50IGlkID0gYmluZChub2RlLCBub2Rl
c01hcCk7CiAgICAgU3RyaW5nIG5vZGVOYW1lOwpAQCAtMTI4OSw3ICsxMjkxLDcgQEAgUGFzc1Jl
ZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmpl
Y3RGb3JOb2RlKE5vZGUqIG4KICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgUmVmUHRyPFR5
cGVCdWlsZGVyOjpET006Ok5vZGU+IHZhbHVlID0gVHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZTo6Y3Jl
YXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiB2YWx1
ZSA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZTo6Y3JlYXRlKCkKICAgICAgICAg
LnNldE5vZGVJZChpZCkKICAgICAgICAgLnNldE5vZGVUeXBlKHN0YXRpY19jYXN0PGludD4obm9k
ZS0+bm9kZVR5cGUoKSkpCiAgICAgICAgIC5zZXROb2RlTmFtZShub2RlTmFtZSkKQEAgLTEyOTks
NyArMTMwMSw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4gSW5zcGVjdG9y
RE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiBuCiAgICAgaWYgKG5vZGUtPmlzQ29u
dGFpbmVyTm9kZSgpKSB7CiAgICAgICAgIGludCBub2RlQ291bnQgPSBpbm5lckNoaWxkTm9kZUNv
dW50KG5vZGUpOwogICAgICAgICB2YWx1ZS0+c2V0Q2hpbGROb2RlQ291bnQobm9kZUNvdW50KTsK
LSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RE9NOjpOb2Rl
Pj4gY2hpbGRyZW4gPSBidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4obm9kZSwgZGVwdGgs
IG5vZGVzTWFwKTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4+IGNoaWxkcmVuID0gYnVpbGRBcnJh
eUZvckNvbnRhaW5lckNoaWxkcmVuKG5vZGUsIGRlcHRoLCBub2Rlc01hcCk7CiAgICAgICAgIGlm
IChjaGlsZHJlbi0+bGVuZ3RoKCkgPiAwKQogICAgICAgICAgICAgdmFsdWUtPnNldENoaWxkcmVu
KGNoaWxkcmVuLnJlbGVhc2UoKSk7CiAgICAgfQpAQCAtMTMxOCw3ICsxMzIwLDcgQEAgUGFzc1Jl
ZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmpl
Y3RGb3JOb2RlKE5vZGUqIG4KICAgICAgICAgfQogCiAgICAgICAgIGlmIChTaGFkb3dSb290KiBy
b290ID0gZWxlbWVudC0+c2hhZG93Um9vdCgpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpET006Ok5vZGU+PiBzaGFkb3dSb290cyA9IFR5cGVC
dWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPjo6Y3JlYXRlKCk7CisgICAgICAg
ICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6RE9NOjpOb2RlPj4gc2hhZG93Um9vdHMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+OjpjcmVhdGUoKTsKICAg
ICAgICAgICAgIHNoYWRvd1Jvb3RzLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTm9kZShyb290LCAw
LCBub2Rlc01hcCkpOwogICAgICAgICAgICAgdmFsdWUtPnNldFNoYWRvd1Jvb3RzKHNoYWRvd1Jv
b3RzKTsKICAgICAgICAgfQpAQCAtMTM0Niw5ICsxMzQ4LDkgQEAgUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6RE9NOjpOb2RlPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JOb2RlKE5v
ZGUqIG4KICAgICByZXR1cm4gdmFsdWUucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFR5cGVC
dWlsZGVyOjpBcnJheTxTdHJpbmc+PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckVs
ZW1lbnRBdHRyaWJ1dGVzKEVsZW1lbnQqIGVsZW1lbnQpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5
Rm9yRWxlbWVudEF0dHJpYnV0ZXMoRWxlbWVudCogZWxlbWVudCkKIHsKLSAgICBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IGF0dHJpYnV0ZXNWYWx1ZSA9IFR5cGVCdWlsZGVyOjpB
cnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8U3RyaW5nPj4gYXR0cmlidXRlc1ZhbHVlID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgLy8gR28gdGhyb3VnaCBhbGwgYXR0cmli
dXRlcyBhbmQgc2VyaWFsaXplIHRoZW0uCiAgICAgaWYgKCFlbGVtZW50LT5oYXNBdHRyaWJ1dGVz
KCkpCiAgICAgICAgIHJldHVybiBhdHRyaWJ1dGVzVmFsdWUucmVsZWFzZSgpOwpAQCAtMTM2Miw5
ICsxMzY0LDkgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gSW5zcGVj
dG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JFbGVtZW50QXQKICAgICByZXR1cm4gYXR0cmlidXRl
c1ZhbHVlLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlw
ZUJ1aWxkZXI6OkRPTTo6Tm9kZT4+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yQ29u
dGFpbmVyQ2hpbGRyZW4oTm9kZSogY29udGFpbmVyLCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFwKiBu
b2Rlc01hcCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJy
YXlGb3JDb250YWluZXJDaGlsZHJlbihOb2RlKiBjb250YWluZXIsIGludCBkZXB0aCwgTm9kZVRv
SWRNYXAqIG5vZGVzTWFwKQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1
aWxkZXI6OkRPTTo6Tm9kZT4+IGNoaWxkcmVuID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpET006Ok5vZGU+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPj4gY2hpbGRyZW4g
PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpE
T006Ok5vZGU+OjpjcmVhdGUoKTsKICAgICBpZiAoZGVwdGggPT0gMCkgewogICAgICAgICAvLyBT
cGVjaWFsLWNhc2UgdGhlIG9ubHkgdGV4dCBjaGlsZCAtIHByZXRlbmQgdGhhdCBjb250YWluZXIn
cyBjaGlsZHJlbiBoYXZlIGJlZW4gcmVxdWVzdGVkLgogICAgICAgICBOb2RlKiBmaXJzdENoaWxk
ID0gY29udGFpbmVyLT5maXJzdENoaWxkKCk7CkBAIC0xMzg2LDcgKzEzODgsNyBAQCBQYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPj4gSW5zcGVjdG9y
RE9NQWdlbnQ6OmJ1aWxkQQogICAgIHJldHVybiBjaGlsZHJlbi5yZWxlYXNlKCk7CiB9CiAKLVBh
c3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gSW5zcGVjdG9yRE9NQWdl
bnQ6OmJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0
ZW5lciYgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwSWQpCitQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gSW5zcGVjdG9yRE9N
QWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihjb25zdCBSZWdpc3RlcmVkRXZlbnRM
aXN0ZW5lciYgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwSWQpCiB7CiAgICAg
UmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIgPSByZWdpc3RlcmVkRXZlbnRMaXN0
ZW5lci5saXN0ZW5lcjsKIApAQCAtMTQxNCw3ICsxNDE2LDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6RE9NOjpFdmVudExpc3RlbmVyPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RG
b3JFdmUKICAgICAgICAgfQogICAgIH0KIAotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpF
dmVudExpc3RlbmVyPiB2YWx1ZSA9IFR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI6OmNy
ZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6RXZlbnRMaXN0
ZW5lcj4gdmFsdWUgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI6
OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRUeXBlKGV2ZW50VHlwZSkKICAgICAgICAgLnNldFVzZUNh
cHR1cmUocmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIudXNlQ2FwdHVyZSkKICAgICAgICAgLnNldElz
QXR0cmlidXRlKGV2ZW50TGlzdGVuZXItPmlzQXR0cmlidXRlKCkpCkBAIC0xNDIzLDEwICsxNDI1
LDEwIEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gSW5zcGVj
dG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRXZlCiAgICAgaWYgKG9iamVjdEdyb3VwSWQgJiYg
aGFuZGxlciAmJiBzdGF0ZSkgewogICAgICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvcihzdGF0ZSk7CiAg
ICAgICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQotICAgICAgICAgICAgdmFs
dWUtPnNldEhhbmRsZXIoaW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChTY3JpcHRWYWx1ZShzdGF0
ZS0+dm0oKSwgaGFuZGxlciksICpvYmplY3RHcm91cElkKSk7CisgICAgICAgICAgICB2YWx1ZS0+
c2V0SGFuZGxlcihpbmplY3RlZFNjcmlwdC53cmFwT2JqZWN0KERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlKHN0YXRlLT52bSgpLCBoYW5kbGVyKSwgKm9iamVjdEdyb3VwSWQpKTsKICAgICB9CiAgICAg
aWYgKCFzY3JpcHRJRC5pc051bGwoKSkgewotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRl
YnVnZ2VyOjpMb2NhdGlvbj4gbG9jYXRpb24gPSBUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0
aW9uOjpjcmVhdGUoKQorICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVi
dWdnZXI6OkxvY2F0aW9uPiBsb2NhdGlvbiA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVn
Z2VyOjpMb2NhdGlvbjo6Y3JlYXRlKCkKICAgICAgICAgICAgIC5zZXRTY3JpcHRJZChzY3JpcHRJ
RCkKICAgICAgICAgICAgIC5zZXRMaW5lTnVtYmVyKGxpbmVOdW1iZXIpOwogICAgICAgICB2YWx1
ZS0+c2V0TG9jYXRpb24obG9jYXRpb24ucmVsZWFzZSgpKTsKQEAgLTE1MDksNyArMTUxMSw3IEBA
IHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENvbW1pdExvYWQoRG9jdW1lbnQqIGRvY3VtZW50
KQogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5jaGlsZE5vZGVSZW1vdmVkKHBhcmVudElkLCBm
cmFtZU93bmVySWQpOwogICAgIHVuYmluZChmcmFtZU93bmVyLCAmbV9kb2N1bWVudE5vZGVUb0lk
TWFwKTsKIAotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiB2YWx1ZSA9IGJ1aWxk
T2JqZWN0Rm9yTm9kZShmcmFtZU93bmVyLCAwLCAmbV9kb2N1bWVudE5vZGVUb0lkTWFwKTsKKyAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiB2YWx1ZSA9IGJ1aWxk
T2JqZWN0Rm9yTm9kZShmcmFtZU93bmVyLCAwLCAmbV9kb2N1bWVudE5vZGVUb0lkTWFwKTsKICAg
ICBOb2RlKiBwcmV2aW91c1NpYmxpbmcgPSBpbm5lclByZXZpb3VzU2libGluZyhmcmFtZU93bmVy
KTsKICAgICBpbnQgcHJldklkID0gcHJldmlvdXNTaWJsaW5nID8gbV9kb2N1bWVudE5vZGVUb0lk
TWFwLmdldChwcmV2aW91c1NpYmxpbmcpIDogMDsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+
Y2hpbGROb2RlSW5zZXJ0ZWQocGFyZW50SWQsIHByZXZJZCwgdmFsdWUucmVsZWFzZSgpKTsKQEAg
LTE1MzksNyArMTU0MSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZEluc2VydERPTU5v
ZGUoTm9kZSogbm9kZSkKICAgICAgICAgLy8gQ2hpbGRyZW4gaGF2ZSBiZWVuIHJlcXVlc3RlZCAt
PiByZXR1cm4gdmFsdWUgb2YgYSBuZXcgY2hpbGQuCiAgICAgICAgIE5vZGUqIHByZXZTaWJsaW5n
ID0gaW5uZXJQcmV2aW91c1NpYmxpbmcobm9kZSk7CiAgICAgICAgIGludCBwcmV2SWQgPSBwcmV2
U2libGluZyA/IG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQocHJldlNpYmxpbmcpIDogMDsKLSAg
ICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpET006Ok5vZGU+IHZhbHVlID0gYnVpbGRPYmplY3RG
b3JOb2RlKG5vZGUsIDAsICZtX2RvY3VtZW50Tm9kZVRvSWRNYXApOworICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiB2YWx1ZSA9IGJ1aWxkT2JqZWN0Rm9y
Tm9kZShub2RlLCAwLCAmbV9kb2N1bWVudE5vZGVUb0lkTWFwKTsKICAgICAgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXItPmNoaWxkTm9kZUluc2VydGVkKHBhcmVudElkLCBwcmV2SWQsIHZhbHVlLnJl
bGVhc2UoKSk7CiAgICAgfQogfQpAQCAtMTYwNCw3ICsxNjA2LDcgQEAgdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6ZGlkUmVtb3ZlRE9NQXR0cihFbGVtZW50KiBlbGVtZW50LCBjb25zdCBBdG9taWNT
dHJpbmcmIG4KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c3R5bGVBdHRyaWJ1dGVJbnZhbGlk
YXRlZChjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBlbGVtZW50cykKIHsKLSAgICBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkFycmF5PGludD4+IG5vZGVJZHMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pjo6
Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PGludD4+
IG5vZGVJZHMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBzaXplID0gZWxlbWVudHMuc2l6ZSgpOyBpIDwgc2l6
ZTsgKytpKSB7CiAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBlbGVtZW50cy5hdChpKTsKICAg
ICAgICAgaW50IGlkID0gYm91bmROb2RlSWQoZWxlbWVudCk7CkBAIC0xNzI5LDcgKzE3MzEsNyBA
QCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZUJ5QmFja2VuZElkVG9Gcm9udGVuZChF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsCiAgICAgfQogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluc3BlY3RvckRPTUFnZW50OjpyZXNvbHZlTm9k
ZShOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKQorUGFzc1JlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluc3BlY3RvckRPTUFn
ZW50OjpyZXNvbHZlTm9kZShOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKQog
ewogICAgIEZyYW1lKiBmcmFtZSA9IG5vZGUtPmRvY3VtZW50KCkuZnJhbWUoKTsKICAgICBpZiAo
IWZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaApp
bmRleCBhNWQ2MGJjLi5mMDFmOWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuaApAQCAtMzMsMTMgKzMzLDEzIEBACiAjaW5jbHVkZSAiRXZlbnRUYXJn
ZXQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2Ny
aXB0TWFuYWdlci5oIgotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250
ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yT3ZlcmxheS5oIgotI2luY2x1ZGUgIkluc3BlY3Rv
clZhbHVlcy5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUg
IlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKLQorI2luY2x1ZGUgPGluc3BlY3Rv
ci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC00OSw3ICs0OSwxMiBA
QAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJp
bmcuaD4KIAorbmFtZXNwYWNlIERlcHJlY2F0ZWQgeworY2xhc3MgU2NyaXB0VmFsdWU7Cit9CisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKKwogY2xhc3MgQ29udGFpbmVyTm9kZTsKIGNsYXNzIENoYXJh
Y3RlckRhdGE7CiBjbGFzcyBET01FZGl0b3I7CkBAIC02Niw3ICs3MSw2IEBAIGNsYXNzIEluc3Ry
dW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBOYW1lTm9kZU1hcDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBS
ZXZhbGlkYXRlU3R5bGVBdHRyaWJ1dGVUYXNrOwotY2xhc3MgU2NyaXB0VmFsdWU7CiBjbGFzcyBT
aGFkb3dSb290OwogCiBzdHJ1Y3QgSGlnaGxpZ2h0Q29uZmlnOwpAQCAtODksNyArOTMsNyBAQCBz
dHJ1Y3QgRXZlbnRMaXN0ZW5lckluZm8gewogICAgIGNvbnN0IEV2ZW50TGlzdGVuZXJWZWN0b3Ig
ZXZlbnRMaXN0ZW5lclZlY3RvcjsKIH07CiAKLWNsYXNzIEluc3BlY3RvckRPTUFnZW50IDogcHVi
bGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3RvckRPTUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JET01BZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JB
Z2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JET01CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckRPTUFnZW50KTsKIHB1YmxpYzoKICAg
ICBzdHJ1Y3QgRE9NTGlzdGVuZXIgewpAQCAtMTEwLDcgKzExNCw3IEBAIHB1YmxpYzoKIAogICAg
IH5JbnNwZWN0b3JET01BZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0
b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICBWZWN0
b3I8RG9jdW1lbnQqPiBkb2N1bWVudHMoKTsKQEAgLTExOCw4ICsxMjIsOCBAQCBwdWJsaWM6CiAK
ICAgICAvLyBNZXRob2RzIGNhbGxlZCBmcm9tIHRoZSBmcm9udGVuZCBmb3IgRE9NIG5vZGVzIGlu
c3BlY3Rpb24uCiAgICAgdmlydHVhbCB2b2lkIHF1ZXJ5U2VsZWN0b3IoRXJyb3JTdHJpbmcqLCBp
bnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgaW50KiBlbGVtZW50SWQpOwotICAg
IHZpcnR1YWwgdm9pZCBxdWVyeVNlbGVjdG9yQWxsKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwg
Y29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4m
IHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2b2lkIGdldERvY3VtZW50KEVycm9yU3RyaW5nKiwgUmVm
UHRyPFR5cGVCdWlsZGVyOjpET006Ok5vZGU+JiByb290KTsKKyAgICB2aXJ0dWFsIHZvaWQgcXVl
cnlTZWxlY3RvckFsbChFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgc2Vs
ZWN0b3JzLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4mIHJlc3Vs
dCk7CisgICAgdmlydHVhbCB2b2lkIGdldERvY3VtZW50KEVycm9yU3RyaW5nKiwgUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4mIHJvb3QpOwogICAgIHZpcnR1YWwgdm9p
ZCByZXF1ZXN0Q2hpbGROb2RlcyhFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IGludCog
ZGVwdGgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBdHRyaWJ1dGVWYWx1ZShFcnJvclN0cmluZyos
IGludCBlbGVtZW50SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7
CiAgICAgdmlydHVhbCB2b2lkIHNldEF0dHJpYnV0ZXNBc1RleHQoRXJyb3JTdHJpbmcqLCBpbnQg
ZWxlbWVudElkLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyogbmFtZSk7CkBAIC0x
MjksMjkgKzEzMywyOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldE91dGVySFRNTChF
cnJvclN0cmluZyosIGludCBub2RlSWQsIFdURjo6U3RyaW5nKiBvdXRlckhUTUwpOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRPdXRlckhUTUwoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBT
dHJpbmcmIG91dGVySFRNTCk7CiAgICAgdmlydHVhbCB2b2lkIHNldE5vZGVWYWx1ZShFcnJvclN0
cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwotICAgIHZpcnR1YWwgdm9p
ZCBnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25z
dCBXVEY6OlN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlw
ZUJ1aWxkZXI6OkRPTTo6RXZlbnRMaXN0ZW5lcj4+JiBsaXN0ZW5lcnNBcnJheSk7Ci0gICAgdmly
dHVhbCB2b2lkIHBlcmZvcm1TZWFyY2goRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHdoaXRl
c3BhY2VUcmltbWVkUXVlcnksIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIG5vZGVJZHMs
IFN0cmluZyogc2VhcmNoSWQsIGludCogcmVzdWx0Q291bnQpOwotICAgIHZpcnR1YWwgdm9pZCBn
ZXRTZWFyY2hSZXN1bHRzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCwgaW50
IGZyb21JbmRleCwgaW50IHRvSW5kZXgsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4m
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKEVycm9yU3RyaW5n
KiwgaW50IG5vZGVJZCwgY29uc3QgV1RGOjpTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpF
dmVudExpc3RlbmVyPj4mIGxpc3RlbmVyc0FycmF5KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9y
bVNlYXJjaChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgd2hpdGVzcGFjZVRyaW1tZWRRdWVy
eSwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+KiBub2RlSWRzLCBTdHJp
bmcqIHNlYXJjaElkLCBpbnQqIHJlc3VsdENvdW50KTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0U2Vh
cmNoUmVzdWx0cyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2VhcmNoSWQsIGludCBmcm9t
SW5kZXgsIGludCB0b0luZGV4LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8
aW50Pj4mKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY2FyZFNlYXJjaFJlc3VsdHMoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIHNlYXJjaElkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZU5v
ZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCk7Ci0gICAg
dmlydHVhbCB2b2lkIGdldEF0dHJpYnV0ZXMoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+JiByZXN1bHQpOwotICAgIHZpcnR1YWwgdm9p
ZCBzZXRJbnNwZWN0TW9kZUVuYWJsZWQoRXJyb3JTdHJpbmcqLCBib29sIGVuYWJsZWQsIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBoaWdobGlnaHRDb25maWcpOworICAgIHZpcnR1YWwg
dm9pZCByZXNvbHZlTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyog
b2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCBnZXRBdHRyaWJ1dGVzKEVycm9y
U3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5
PFN0cmluZz4+JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCBzZXRJbnNwZWN0TW9kZUVuYWJs
ZWQoRXJyb3JTdHJpbmcqLCBib29sIGVuYWJsZWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdD4qIGhpZ2hsaWdodENvbmZpZyk7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVl
c3ROb2RlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgaW50KiBub2RlSWQp
OwogICAgIHZpcnR1YWwgdm9pZCBwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIHBhdGgsIGludCogbm9kZUlkKTsKICAgICB2aXJ0dWFsIHZvaWQgcHVz
aE5vZGVCeUJhY2tlbmRJZFRvRnJvbnRlbmQoRXJyb3JTdHJpbmcqLCBCYWNrZW5kTm9kZUlkLCBp
bnQqIG5vZGVJZCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VCYWNrZW5kTm9kZUlkcyhFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgbm9kZUdyb3VwKTsKICAgICB2aXJ0dWFsIHZvaWQgaGlk
ZUhpZ2hsaWdodChFcnJvclN0cmluZyopOwotICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHRSZWN0
KEVycm9yU3RyaW5nKiwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4qIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0UXVhZChFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3JBcnJheT4mIHF1YWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb2xv
ciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvciwgY29uc3QgYm9v
bCogdXNlUGFnZUNvb3JkaW5hdGVzKTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0Tm9kZShF
cnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBoaWdobGlnaHRDb25m
aWcsIGNvbnN0IGludCogbm9kZUlkLCBjb25zdCBTdHJpbmcqIG9iamVjdElkKTsKLSAgICB2aXJ0
dWFsIHZvaWQgaGlnaGxpZ2h0RnJhbWUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1l
SWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvcik7CisgICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdo
dFJlY3QoRXJyb3JTdHJpbmcqLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvciwgY29uc3QgYm9v
bCogdXNlUGFnZUNvb3JkaW5hdGVzKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0UXVhZChF
cnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYgcXVh
ZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvciwgY29uc3Qg
Ym9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0Tm9k
ZShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4m
IGhpZ2hsaWdodENvbmZpZywgY29uc3QgaW50KiBub2RlSWQsIGNvbnN0IFN0cmluZyogb2JqZWN0
SWQpOworICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHRGcmFtZShFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG91dGxp
bmVDb2xvcik7CiAKICAgICB2aXJ0dWFsIHZvaWQgbW92ZVRvKEVycm9yU3RyaW5nKiwgaW50IG5v
ZGVJZCwgaW50IHRhcmdldE5vZGVJZCwgY29uc3QgaW50KiBhbmNob3JOb2RlSWQsIGludCogbmV3
Tm9kZUlkKTsKICAgICB2aXJ0dWFsIHZvaWQgdW5kbyhFcnJvclN0cmluZyopOwogICAgIHZpcnR1
YWwgdm9pZCByZWRvKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIG1hcmtVbmRvYWJs
ZVN0YXRlKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIGZvY3VzKEVycm9yU3RyaW5n
KiwgaW50IG5vZGVJZCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldEZpbGVJbnB1dEZpbGVzKEVycm9y
U3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgZmlsZXMp
OworICAgIHZpcnR1YWwgdm9pZCBzZXRGaWxlSW5wdXRGaWxlcyhFcnJvclN0cmluZyosIGludCBu
b2RlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYgZmlsZXMpOwog
CiAgICAgdm9pZCBnZXRFdmVudExpc3RlbmVycyhOb2RlKiwgVmVjdG9yPEV2ZW50TGlzdGVuZXJJ
bmZvPiYgbGlzdGVuZXJzQXJyYXksIGJvb2wgaW5jbHVkZUFuY2VzdG9ycyk7CiAKQEAgLTE4Miw3
ICsxODYsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgU3RyaW5nIGRvY3VtZW50VVJMU3RyaW5n
KERvY3VtZW50Kik7CiAKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+IHJlc29sdmVOb2RlKE5vZGUqLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKTsK
KyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4gcmVzb2x2ZU5vZGUoTm9kZSosIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApOwogICAg
IGJvb2wgaGFuZGxlTW91c2VQcmVzcygpOwogICAgIGJvb2wgaGFuZGxlVG91Y2hFdmVudChOb2Rl
Kik7CiAgICAgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0
JiwgdW5zaWduZWQgbW9kaWZpZXJGbGFncyk7CkBAIC0yMTAsOCArMjE0LDggQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBJbnNwZWN0b3JET01BZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5z
cGVjdG9yUGFnZUFnZW50KiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSW5zcGVjdG9yT3Zlcmxh
eSosIEluc3BlY3RvckNsaWVudCopOwogCi0gICAgdm9pZCBzZXRTZWFyY2hpbmdGb3JOb2RlKEVy
cm9yU3RyaW5nKiwgYm9vbCBlbmFibGVkLCBJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdodENvbmZp
Zyk7Ci0gICAgUGFzc093blB0cjxIaWdobGlnaHRDb25maWc+IGhpZ2hsaWdodENvbmZpZ0Zyb21J
bnNwZWN0b3JPYmplY3QoRXJyb3JTdHJpbmcqLCBJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdodElu
c3BlY3Rvck9iamVjdCk7CisgICAgdm9pZCBzZXRTZWFyY2hpbmdGb3JOb2RlKEVycm9yU3RyaW5n
KiwgYm9vbCBlbmFibGVkLCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0Q29u
ZmlnKTsKKyAgICBQYXNzT3duUHRyPEhpZ2hsaWdodENvbmZpZz4gaGlnaGxpZ2h0Q29uZmlnRnJv
bUluc3BlY3Rvck9iamVjdChFcnJvclN0cmluZyosIEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
KiBoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpOwogCiAgICAgLy8gTm9kZS1yZWxhdGVkIG1ldGhv
ZHMuCiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxOb2RlPiwgaW50PiBOb2RlVG9JZE1hcDsK
QEAgLTIyNiwxOCArMjMwLDE4IEBAIHByaXZhdGU6CiAKICAgICBib29sIGhhc0JyZWFrcG9pbnQo
Tm9kZSosIGludCB0eXBlKTsKICAgICB2b2lkIHVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhOb2Rl
KiByb290LCB1aW50MzJfdCByb290TWFzaywgYm9vbCB2YWx1ZSk7Ci0gICAgdm9pZCBkZXNjcmlw
dGlvbkZvckRPTUV2ZW50KE5vZGUqIHRhcmdldCwgaW50IGJyZWFrcG9pbnRUeXBlLCBib29sIGlu
c2VydGlvbiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRlc2NyaXB0aW9uKTsKKyAgICB2
b2lkIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQoTm9kZSogdGFyZ2V0LCBpbnQgYnJlYWtwb2ludFR5
cGUsIGJvb2wgaW5zZXJ0aW9uLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiBkZXNjcmlwdGlvbik7CiAKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpET006Ok5vZGU+
IGJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCopOwotICAg
IFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IGJ1aWxkQXJyYXlGb3JFbGVt
ZW50QXR0cmlidXRlcyhFbGVtZW50Kik7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJy
YXk8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4+IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJl
bihOb2RlKiBjb250YWluZXIsIGludCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKTsKLSAg
ICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI+IGJ1aWxkT2JqZWN0
Rm9yRXZlbnRMaXN0ZW5lcihjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYsIGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBOb2RlKiwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cElk
KTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4gYnVp
bGRPYmplY3RGb3JOb2RlKE5vZGUqLCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFwKik7CisgICAgUGFz
c1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBidWlsZEFycmF5
Rm9yRWxlbWVudEF0dHJpYnV0ZXMoRWxlbWVudCopOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPj4g
YnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKE5vZGUqIGNvbnRhaW5lciwgaW50IGRlcHRo
LCBOb2RlVG9JZE1hcCogbm9kZXNNYXApOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6RE9NOjpFdmVudExpc3RlbmVyPiBidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIo
Y29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgTm9kZSosIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXBJZCk7CiAKICAgICBOb2RlKiBu
b2RlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpOwogCiAgICAgdm9pZCBkaXNjYXJkQmluZGlu
Z3MoKTsKIAotICAgIHZvaWQgaW5uZXJIaWdobGlnaHRRdWFkKFBhc3NPd25QdHI8RmxvYXRRdWFk
PiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGNvbG9yLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0Piogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0
ZXMpOworICAgIHZvaWQgaW5uZXJIaWdobGlnaHRRdWFkKFBhc3NPd25QdHI8RmxvYXRRdWFkPiwg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvciwgY29uc3QgYm9v
bCogdXNlUGFnZUNvb3JkaW5hdGVzKTsKIAogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdl
QWdlbnQ7CiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVjdGVkU2NyaXB0TWFuYWdl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50LmNwcAppbmRleCA4OWZmNmU5Li4xNDMxNzBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCkBAIC00
MCw4ICs0MCw4IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVu
dGluZ0FnZW50cy5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIHsKQEAgLTYxLDYgKzYx
LDggQEAgY29uc3QgaW50IGRvbUJyZWFrcG9pbnREZXJpdmVkVHlwZVNoaWZ0ID0gMTY7CiAKIH0K
IAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQ
YXNzT3duUHRyPEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ+IEluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQ6OmNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJ
bnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQsIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVn
Z2VyQWdlbnQsIEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCkKQEAgLTY5LDcgKzcxLDcg
QEAgUGFzc093blB0cjxJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50PiBJbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50OjpjcmVhdGUoSW5zdHJ1bWUKIH0KIAogSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dDo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQsIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQsIEluc3BlY3RvckFnZW50KikKLSAgICA6IEluc3BlY3Rv
ckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIkRPTURlYnVnZ2VyIiksIGluc3RydW1lbnRpbmdBZ2Vu
dHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJET01EZWJ1Z2dlciIp
LCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9kb21BZ2VudChkb21BZ2VudCkKICAgICAs
IG1fZGVidWdnZXJBZ2VudChkZWJ1Z2dlckFnZW50KQogICAgICwgbV9wYXVzZUluTmV4dEV2ZW50
TGlzdGVuZXIoZmFsc2UpCkBAIC0xMTEsNyArMTEzLDcgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50OjpkaXNhYmxlKCkKICAgICBjbGVhcigpOwogfQogCi12b2lkIEluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNo
ZXIpCit2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2JhY2tlbmREaXNw
YXRjaGVyID0gSW5zcGVjdG9yRE9NRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJh
Y2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KQEAgLTMxNCw3ICszMTYsNyBAQCB2b2lkIEluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRlc2NyaXB0aW9uRm9yRE9NRXZlbnQoTm9kZSogdGFyZ2V0
LCBpbnQgYnJlYWtwbwogICAgIGlmICgoMSA8PCBicmVha3BvaW50VHlwZSkgJiBpbmhlcml0YWJs
ZURPTUJyZWFrcG9pbnRUeXBlc01hc2spIHsKICAgICAgICAgLy8gRm9yIGluaGVyaXRhYmxlIGJy
ZWFrcG9pbnQgdHlwZXMsIHRhcmdldCBub2RlIGlzbid0IGFsd2F5cyB0aGUgc2FtZSBhcyB0aGUg
bm9kZSB0aGF0IG93bnMgYSBicmVha3BvaW50LgogICAgICAgICAvLyBUYXJnZXQgbm9kZSBtYXkg
YmUgdW5rbm93biB0byBmcm9udGVuZCwgc28gd2UgbmVlZCB0byBwdXNoIGl0IGZpcnN0LgotICAg
ICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gdGFyZ2V0Tm9k
ZU9iamVjdCA9IG1fZG9tQWdlbnQtPnJlc29sdmVOb2RlKHRhcmdldCwgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6YmFja3RyYWNlT2JqZWN0R3JvdXApOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiB0YXJnZXROb2RlT2JqZWN0ID0g
bV9kb21BZ2VudC0+cmVzb2x2ZU5vZGUodGFyZ2V0LCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpi
YWNrdHJhY2VPYmplY3RHcm91cCk7CiAgICAgICAgIGRlc2NyaXB0aW9uLT5zZXRWYWx1ZSgidGFy
Z2V0Tm9kZSIsIHRhcmdldE5vZGVPYmplY3QpOwogCiAgICAgICAgIC8vIEZpbmQgYnJlYWtwb2lu
dCBvd25lciBub2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50LmgKaW5kZXggOTZmODhhOS4uYTNkYWFmZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCkBA
IC0zMywyNiArMzMsMzAgQEAKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBF
TkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5j
bHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNzIEluc3BlY3Rvck9iamVjdDsKK30KKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFbGVtZW50OwogY2xhc3MgSW5zcGVjdG9yQWdlbnQ7
CiBjbGFzcyBJbnNwZWN0b3JET01BZ2VudDsKIGNsYXNzIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ7
Ci1jbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xh
c3MgTm9kZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6TGlzdGVuZXIsIHB1YmxpYyBJbnNwZWN0b3JET01EZWJ1Z2dl
ckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6Okxpc3RlbmVyLCBwdWJsaWMgSW5zcGVjdG9yRE9NRGVidWdnZXJCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQpOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckRPTURl
YnVnZ2VyQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yRE9NQWdl
bnQqLCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiwgSW5zcGVjdG9yQWdlbnQqKTsKQEAgLTc5LDcg
KzgzLDcgQEAgcHVibGljOgogICAgIHZvaWQgd2lsbFNlbmRYTUxIdHRwUmVxdWVzdChjb25zdCBT
dHJpbmcmIHVybCk7CiAgICAgdm9pZCBwYXVzZU9uTmF0aXZlRXZlbnRJZk5lZWRlZChib29sIGlz
RE9NRXZlbnQsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lLCBib29sIHN5bmNocm9ub3VzKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5k
QmFja2VuZCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkQWdlbnQoKTsKIApA
QCAtOTMsNyArOTcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZSgpOwog
ICAgIHZvaWQgZGlzYWJsZSgpOwogCi0gICAgdm9pZCBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KE5v
ZGUqIHRhcmdldCwgaW50IGJyZWFrcG9pbnRUeXBlLCBib29sIGluc2VydGlvbiwgSW5zcGVjdG9y
T2JqZWN0KiBkZXNjcmlwdGlvbik7CisgICAgdm9pZCBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KE5v
ZGUqIHRhcmdldCwgaW50IGJyZWFrcG9pbnRUeXBlLCBib29sIGluc2VydGlvbiwgSW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3QqIGRlc2NyaXB0aW9uKTsKICAgICB2b2lkIHVwZGF0ZVN1YnRyZWVC
cmVha3BvaW50cyhOb2RlKiwgdWludDMyX3Qgcm9vdE1hc2ssIGJvb2wgc2V0KTsKICAgICBib29s
IGhhc0JyZWFrcG9pbnQoTm9kZSosIGludCB0eXBlKTsKICAgICB2b2lkIGRpc2NhcmRCaW5kaW5n
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50LmNwcAppbmRleCA2NDZkZTIzLi45YzU5YjFhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKQEAgLTQx
LDcgKzQxLDYgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250
ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVj
dG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUg
IlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKQEAgLTUwLDEzICs0OSwxNSBAQAogI2lu
Y2x1ZGUgIlN0b3JhZ2VBcmVhLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZS5oIgogI2lu
Y2x1ZGUgIlZvaWRDYWxsYmFjay5oIgotCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZh
bHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6
Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKLSAgICA6IEluc3BlY3Rv
ckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIkRPTVN0b3JhZ2UiKSwgaW5zdHJ1bWVudGluZ0FnZW50
cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkRPTVN0b3JhZ2UiKSwg
aW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkKICAgICAs
IG1fZW5hYmxlZChmYWxzZSkKIHsKQEAgLTY5LDcgKzcwLDcgQEAgSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50Ojp+SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KCkKICAgICBtX2luc3RydW1lbnRpbmdB
Z2VudHMgPSAwOwogfQogCi12b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFu
bmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lk
IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250
ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NU3RvcmFnZUZyb250
ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVy
ID0gSW5zcGVjdG9yRE9NU3RvcmFnZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERp
c3BhdGNoZXIsIHRoaXMpOwpAQCAtOTMsNyArOTQsNyBAQCB2b2lkIEluc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiAgICAgbV9lbmFibGVkID0gZmFsc2U7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpnZXRET01TdG9yYWdlSXRlbXMoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgc3Rv
cmFnZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpBcnJheTxTdHJp
bmc+Pj4mIGl0ZW1zKQordm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmdldERPTVN0b3Jh
Z2VJdGVtcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+JiBzdG9yYWdlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+Pj4mIGl0ZW1zKQogewogICAgIEZy
YW1lKiBmcmFtZTsKICAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhID0gZmluZFN0
b3JhZ2VBcmVhKGVycm9yU3RyaW5nLCBzdG9yYWdlSWQsIGZyYW1lKTsKQEAgLTEwMywxMyArMTA0
LDEzIEBAIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpnZXRET01TdG9yYWdlSXRlbXMo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+
Pj4gc3RvcmFnZUl0ZW1zID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpBcnJheTxT
dHJpbmc+Pjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFy
cmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+PiBzdG9yYWdlSXRlbXMg
PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpB
cnJheTxTdHJpbmc+Pjo6Y3JlYXRlKCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
c3RvcmFnZUFyZWEtPmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgU3RyaW5nIGtleSA9IHN0b3Jh
Z2VBcmVhLT5rZXkoaSk7CiAgICAgICAgIFN0cmluZyB2YWx1ZSA9IHN0b3JhZ2VBcmVhLT5pdGVt
KGtleSk7CiAKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBlbnRy
eSA9IFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICAgICAgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IGVudHJ5ID0gSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgICAgIGVudHJ5LT5h
ZGRJdGVtKGtleSk7CiAgICAgICAgIGVudHJ5LT5hZGRJdGVtKHZhbHVlKTsKICAgICAgICAgc3Rv
cmFnZUl0ZW1zLT5hZGRJdGVtKGVudHJ5LnJlbGVhc2UoKSk7CkBAIC0xNTcsOSArMTU4LDkgQEAg
U3RyaW5nIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6c3RvcmFnZUlkKFN0b3JhZ2UqIHN0b3Jh
Z2UpCiAgICAgcmV0dXJuIHN0b3JhZ2VJZChzZWN1cml0eU9yaWdpbi5nZXQoKSwgaXNMb2NhbFN0
b3JhZ2UpLT50b0pTT05TdHJpbmcoKTsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9N
U3RvcmFnZTo6U3RvcmFnZUlkPiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OnN0b3JhZ2VJZChT
ZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGJvb2wgaXNMb2NhbFN0b3JhZ2UpCitQYXNz
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZD4gSW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50OjpzdG9yYWdlSWQoU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5
T3JpZ2luLCBib29sIGlzTG9jYWxTdG9yYWdlKQogewotICAgIHJldHVybiBUeXBlQnVpbGRlcjo6
RE9NU3RvcmFnZTo6U3RvcmFnZUlkOjpjcmVhdGUoKQorICAgIHJldHVybiBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpET01TdG9yYWdlOjpTdG9yYWdlSWQ6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRT
ZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbi0+dG9SYXdTdHJpbmcoKSkKICAgICAgICAgLnNl
dElzTG9jYWxTdG9yYWdlKGlzTG9jYWxTdG9yYWdlKS5yZWxlYXNlKCk7CiB9CkBAIC0xNjksNyAr
MTcwLDcgQEAgdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZERpc3BhdGNoRE9NU3Rv
cmFnZUV2ZW50KGNvbnN0IFN0cmluZyYga2V5LCBjb24KICAgICBpZiAoIW1fZnJvbnRlbmREaXNw
YXRjaGVyIHx8ICFtX2VuYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxUeXBl
QnVpbGRlcjo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkPiBpZCA9IHN0b3JhZ2VJZChzZWN1cml0eU9y
aWdpbiwgc3RvcmFnZVR5cGUgPT0gTG9jYWxTdG9yYWdlKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkPiBpZCA9IHN0b3JhZ2VJZChzZWN1
cml0eU9yaWdpbiwgc3RvcmFnZVR5cGUgPT0gTG9jYWxTdG9yYWdlKTsKIAogICAgIGlmIChrZXku
aXNOdWxsKCkpCiAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5kb21TdG9yYWdlSXRlbXND
bGVhcmVkKGlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuaAppbmRleCAyY2QxN2IzLi45NzQ0MWIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCkBAIC0yOSwy
NyArMjksMzAgQEAKICNpZm5kZWYgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50X2gKICNkZWZpbmUg
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50X2gKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2Vu
dC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhLmgiCiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNz
IEluc3BlY3RvckFycmF5OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1l
OwotY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBjbGFzcyBJbnNwZWN0b3JET01TdG9yYWdlRnJvbnRl
bmREaXNwYXRjaGVyOwogY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50OwogY2xhc3MgSW5zdHJ1bWVu
dGluZ0FnZW50czsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFN0
b3JhZ2U7Ci1jbGFzcyBTdG9yYWdlQXJlYTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7
CiAKLWNsYXNzIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNl
QWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JET01TdG9yYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
IHsKK2NsYXNzIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2Vu
dEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JET01TdG9yYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNw
ZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKICAgICB7CkBAIC01NywxOSArNjAsMTkgQEAgcHVi
bGljOgogICAgIH0KICAgICB+SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KCk7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
KSBPVkVSUklERTsKIAogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCiAgICAgdmly
dHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxl
KEVycm9yU3RyaW5nKik7Ci0gICAgdmlydHVhbCB2b2lkIGdldERPTVN0b3JhZ2VJdGVtcyhFcnJv
clN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBzdG9yYWdlSWQsIFJlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+PiYgaXRlbXMp
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRET01TdG9yYWdlSXRlbShFcnJvclN0cmluZyosIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5LCBj
b25zdCBTdHJpbmcmIHZhbHVlKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRE9NU3RvcmFnZUl0
ZW0oRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgc3RvcmFnZUlk
LCBjb25zdCBTdHJpbmcmIGtleSk7CisgICAgdmlydHVhbCB2b2lkIGdldERPTVN0b3JhZ2VJdGVt
cyhFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4m
IHN0b3JhZ2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+PiYgaXRlbXMpOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRET01TdG9yYWdlSXRlbShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdD4mIHN0b3JhZ2VJZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0
cmluZyYgdmFsdWUpOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVET01TdG9yYWdlSXRlbShFcnJv
clN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIHN0b3Jh
Z2VJZCwgY29uc3QgU3RyaW5nJiBrZXkpOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGluamVj
dGVkIHNjcmlwdC4KICAgICBTdHJpbmcgc3RvcmFnZUlkKFN0b3JhZ2UqKTsKLSAgICBQYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpET01TdG9yYWdlOjpTdG9yYWdlSWQ+IHN0b3JhZ2VJZChTZWN1cml0
eU9yaWdpbiosIGJvb2wgaXNMb2NhbFN0b3JhZ2UpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkPiBzdG9yYWdlSWQoU2VjdXJpdHlP
cmlnaW4qLCBib29sIGlzTG9jYWxTdG9yYWdlKTsKIAogICAgIC8vIENhbGxlZCBmcm9tIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbgogICAgIHZvaWQgZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQo
Y29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYg
bmV3VmFsdWUsIFN0b3JhZ2VUeXBlLCBTZWN1cml0eU9yaWdpbiosIFBhZ2UqKTsKQEAgLTc4LDcg
KzgxLDcgQEAgcHJpdmF0ZToKIAogICAgIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudChJbnN0cnVt
ZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7CiAKLSAgICBQYXNzUmVmUHRyPFN0
b3JhZ2VBcmVhPiBmaW5kU3RvcmFnZUFyZWEoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiYsIEZyYW1lKiYpOworICAgIFBhc3NSZWZQdHI8U3RvcmFnZUFyZWE+IGZp
bmRTdG9yYWdlQXJlYShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdD4mLCBGcmFtZSomKTsKIAogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdl
QWdlbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckRPTVN0b3JhZ2VGcm9udGVuZERp
c3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCmluZGV4IGM1ODAwZWEuLjliODU1
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFz
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudC5jcHAKQEAgLTM3LDggKzM3LDYgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxh
Y2Vob2xkZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKLQotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5o
IgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJTUUxFcnJvci5o
IgogI2luY2x1ZGUgIlNRTFJlc3VsdFNldC5oIgpAQCAtNTAsMTggKzQ4LDIwIEBACiAjaW5jbHVk
ZSAiU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiU1FMVmFsdWUuaCIK
ICNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKLQorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0
b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIHR5cGVkZWYgV2ViQ29yZTo6
SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxDYWxs
YmFjayBFeGVjdXRlU1FMQ2FsbGJhY2s7CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIHsKIAogdm9pZCByZXBvcnRUcmFuc2Fj
dGlvbkZhaWxlZChFeGVjdXRlU1FMQ2FsbGJhY2sqIHJlcXVlc3RDYWxsYmFjaywgU1FMRXJyb3Iq
IGVycm9yKQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkVycm9yPiBlcnJv
ck9iamVjdCA9IFR5cGVCdWlsZGVyOjpEYXRhYmFzZTo6RXJyb3I6OmNyZWF0ZSgpCisgICAgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpFcnJvcj4gZXJyb3JPYmplY3Qg
PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEYXRhYmFzZTo6RXJyb3I6OmNyZWF0ZSgpCiAgICAg
ICAgIC5zZXRNZXNzYWdlKGVycm9yLT5tZXNzYWdlKCkpCiAgICAgICAgIC5zZXRDb2RlKGVycm9y
LT5jb2RlKCkpOwogICAgIHJlcXVlc3RDYWxsYmFjay0+c2VuZFN1Y2Nlc3MoMCwgMCwgZXJyb3JP
YmplY3QucmVsZWFzZSgpKTsKQEAgLTgwLDEyICs4MCwxMiBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICBTUUxSZXN1bHRTZXRSb3dMaXN0KiByb3dMaXN0ID0gcmVzdWx0U2V0LT5yb3dzKCk7CiAK
LSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBjb2x1bW5OYW1lcyA9
IFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICAgICAgUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IGNvbHVtbk5hbWVzID0gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgICAgIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBjb2x1bW5zID0gcm93TGlzdC0+Y29sdW1uTmFtZXMoKTsKICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb2x1bW5zLnNpemUoKTsgKytpKQogICAgICAgICAg
ICAgY29sdW1uTmFtZXMtPmFkZEl0ZW0oY29sdW1uc1tpXSk7CiAKLSAgICAgICAgUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JWYWx1ZT4+IHZhbHVlcyA9IFR5cGVCdWlsZGVyOjpB
cnJheTxJbnNwZWN0b3JWYWx1ZT46OmNyZWF0ZSgpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yVmFsdWU+PiB2YWx1ZXMgPSBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JWYWx1ZT46OmNyZWF0ZSgpOwogICAgICAgICBj
b25zdCBWZWN0b3I8U1FMVmFsdWU+JiBkYXRhID0gcm93TGlzdC0+dmFsdWVzKCk7CiAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGF0YS5zaXplKCk7ICsraSkgewogICAgICAgICAgICAg
Y29uc3QgU1FMVmFsdWUmIHZhbHVlID0gcm93TGlzdC0+dmFsdWVzKClbaV07CkBAIC0yMTEsNyAr
MjExLDcgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpjbGVhclJlc291cmNlcygpCiB9
CiAKIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICA6IEluc3BlY3RvckJhc2VB
Z2VudChBU0NJSUxpdGVyYWwoIkRhdGFiYXNlIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAg
OiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJEYXRhYmFzZSIpLCBpbnN0cnVtZW50
aW5nQWdlbnRzKQogICAgICwgbV9lbmFibGVkKGZhbHNlKQogewogICAgIG1faW5zdHJ1bWVudGlu
Z0FnZW50cy0+c2V0SW5zcGVjdG9yRGF0YWJhc2VBZ2VudCh0aGlzKTsKQEAgLTIyMiw3ICsyMjIs
NyBAQCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50Ojp+SW5zcGVjdG9yRGF0YWJhc2VBZ2VudCgpCiAg
ICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JEYXRhYmFzZUFnZW50KDApOwog
fQogCi12b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JEYXRh
YmFzZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJv
bnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKQEAg
LTI1NCwxNCArMjU0LDE0IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGlzYWJsZShF
cnJvclN0cmluZyopCiAgICAgbV9lbmFibGVkID0gZmFsc2U7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
RGF0YWJhc2VBZ2VudDo6Z2V0RGF0YWJhc2VUYWJsZU5hbWVzKEVycm9yU3RyaW5nKiBlcnJvciwg
Y29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmlu
Zz4+JiBuYW1lcykKK3ZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6Z2V0RGF0YWJhc2VUYWJs
ZU5hbWVzKEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkLCBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4mIG5hbWVzKQogewogICAg
IGlmICghbV9lbmFibGVkKSB7CiAgICAgICAgICplcnJvciA9ICJEYXRhYmFzZSBhZ2VudCBpcyBu
b3QgZW5hYmxlZCI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBuYW1lcyA9IFR5cGVC
dWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICBuYW1lcyA9IEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwogCiAgICAgRGF0YWJhc2UqIGRh
dGFiYXNlID0gZGF0YWJhc2VGb3JJZChkYXRhYmFzZUlkKTsKICAgICBpZiAoZGF0YWJhc2UpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5o
CmluZGV4IGEzMmYwNjQuLjUzOWEzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaApAQCAtMzEsMjIgKzMxLDI2IEBACiAKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKSAmJiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogCi0jaW5jbHVkZSAiSW5z
cGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJz
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JX
ZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFj
ZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yQXJyYXk7Cit9CisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgRGF0YWJhc2U7Ci1jbGFzcyBJbnNwZWN0b3JBcnJheTsKIGNsYXNzIElu
c3BlY3RvckRhdGFiYXNlUmVzb3VyY2U7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogCiB0
eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JEYXRhYmFzZUJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JEYXRhYmFzZUFnZW50IDog
cHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3RvckRhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNw
ZWN0b3JEYXRhYmFzZUFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cykKICAgICB7CkBAIC01NCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAg
fkluc3BlY3RvckRhdGFiYXNlQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5z
cGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAg
dm9pZCBjbGVhclJlc291cmNlcygpOwpAQCAtNjIsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgLy8g
Q2FsbGVkIGZyb20gdGhlIGZyb250LWVuZC4KICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9y
U3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VUYWJsZU5hbWVzKEVycm9yU3RyaW5nKiwgY29uc3QgU3Ry
aW5nJiBkYXRhYmFzZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+JiBuYW1l
cyk7CisgICAgdmlydHVhbCB2b2lkIGdldERhdGFiYXNlVGFibGVOYW1lcyhFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PFN0cmluZz4+JiBuYW1lcyk7CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUwoRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgcXVlcnks
IFBhc3NSZWZQdHI8RXhlY3V0ZVNRTENhbGxiYWNrPik7CiAKICAgICAvLyBDYWxsZWQgZnJvbSB0
aGUgaW5qZWN0ZWQgc2NyaXB0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwCmluZGV4IDlkNGI3M2YuLjI1YTMxNDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VS
ZXNvdXJjZS5jcHAKQEAgLTM2LDcgKzM2LDkgQEAKIAogI2luY2x1ZGUgIkRhdGFiYXNlLmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMu
aCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTgsNyArNjAsNyBA
QCBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlOjpJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlKFBh
c3NSZWZQdHI8RGF0YWJhc2U+IGRhdGFiYQogCiB2b2lkIEluc3BlY3RvckRhdGFiYXNlUmVzb3Vy
Y2U6OmJpbmQoSW5zcGVjdG9yRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXIqIGRhdGFiYXNlRnJv
bnRlbmREaXNwYXRjaGVyKQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkRh
dGFiYXNlPiBqc29uT2JqZWN0ID0gVHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpEYXRhYmFzZTo6Y3Jl
YXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkRhdGFi
YXNlPiBqc29uT2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkRhdGFi
YXNlOjpjcmVhdGUoKQogICAgICAgICAuc2V0SWQobV9pZCkKICAgICAgICAgLnNldERvbWFpbiht
X2RvbWFpbikKICAgICAgICAgLnNldE5hbWUobV9uYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGFjMmI3MGUuLjg1
ZGUyNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5jcHAKQEAgLTM4LDI0ICszOCwyNyBAQAogI2luY2x1ZGUgIkluamVjdGVkU2Ny
aXB0TWFuYWdlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yUGFnZUFnZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5j
bHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIlJlZ3VsYXJFeHByZXNzaW9u
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmpl
Y3QuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3QuaD4KKyNpbmNsdWRlIDxiaW5k
aW5ncy9TY3JpcHRWYWx1ZS5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotdXNpbmcgV2ViQ29yZTo6VHlw
ZUJ1aWxkZXI6OkFycmF5OwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpG
dW5jdGlvbkRldGFpbHM7Ci11c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OlNj
cmlwdElkOwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVj
dDsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5OwordXNpbmcgSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlsczsKK3VzaW5nIEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpTY3JpcHRJZDsKK3VzaW5nIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDsKKwordXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBjaGFyKiBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpiYWNrdHJhY2VPYmplY3RHcm91cCA9ICJiYWNrdHJhY2UiOwogCiBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiRGVi
dWdnZXIiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShB
U0NJSUxpdGVyYWwoIkRlYnVnZ2VyIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBtX3BhdXNl
ZFNjcmlwdFN0YXRlKDApCiAgICAgLCBtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJRChu
b0JyZWFrcG9pbnRJRCkKQEAgLTEzNiw3ICsxMzksNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogICAgIGRpc2FibGUoKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNr
ZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91
bmlxdWU8SW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5l
bCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckRlYnVnZ2VyQmFja2VuZERp
c3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CkBAIC0yMDAsMTUgKzIw
MywxNSBAQCBzdGF0aWMgYm9vbCBtYXRjaGVzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcmIHBhdHRlcm4sIGJvb2wgaXNSZWdleCkKIAogc3RhdGljIGJvb2wgYnJlYWtwb2ludEFjdGlv
blR5cGVGb3JTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlU3RyaW5nLCBTY3JpcHRCcmVha3BvaW50
QWN0aW9uVHlwZSogb3V0cHV0KQogewotICAgIGlmICh0eXBlU3RyaW5nID09IFR5cGVCdWlsZGVy
OjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRB
Y3Rpb246OlR5cGU6OkxvZykpIHsKKyAgICBpZiAodHlwZVN0cmluZyA9PSBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpE
ZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6VHlwZTo6TG9nKSkgewogICAgICAgICAqb3V0cHV0
ID0gU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVMb2c7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KLSAgICBpZiAodHlwZVN0cmluZyA9PSBUeXBlQnVpbGRlcjo6Z2V0RW51bUNvbnN0YW50
VmFsdWUoVHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlOjpFdmFs
dWF0ZSkpIHsKKyAgICBpZiAodHlwZVN0cmluZyA9PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpn
ZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJl
YWtwb2ludEFjdGlvbjo6VHlwZTo6RXZhbHVhdGUpKSB7CiAgICAgICAgICpvdXRwdXQgPSBTY3Jp
cHRCcmVha3BvaW50QWN0aW9uVHlwZUV2YWx1YXRlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9Ci0gICAgaWYgKHR5cGVTdHJpbmcgPT0gVHlwZUJ1aWxkZXI6OmdldEVudW1Db25zdGFudFZh
bHVlKFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6VHlwZTo6U291bmQp
KSB7CisgICAgaWYgKHR5cGVTdHJpbmcgPT0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Z2V0RW51
bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9p
bnRBY3Rpb246OlR5cGU6OlNvdW5kKSkgewogICAgICAgICAqb3V0cHV0ID0gU2NyaXB0QnJlYWtw
b2ludEFjdGlvblR5cGVTb3VuZDsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjU1
LDkgKzI1OCw5IEBAIHN0YXRpYyBib29sIGJyZWFrcG9pbnRBY3Rpb25zRnJvbVByb3RvY29sKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgUmVmUHRyPEluc3BlCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludEJ5VXJsKEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogY29uc3Qg
b3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkxSZWdleCwgY29uc3Qg
aW50KiBjb25zdCBvcHRpb25hbENvbHVtbk51bWJlciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4qIG9wdGlvbnMsIFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiBvdXRC
cmVha3BvaW50SWRlbnRpZmllciwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRl
cjo6RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9ucykKK3ZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6c2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50
IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmlu
ZyogY29uc3Qgb3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBjb25zdCBvcHRpb25hbENvbHVt
bk51bWJlciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG9wdGlvbnMsIEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9pbnRJZGVu
dGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9ucykKIHsKLSAgICBsb2Nh
dGlvbnMgPSBBcnJheTxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPjo6Y3JlYXRlKCk7
CisgICAgbG9jYXRpb25zID0gQXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6
OkxvY2F0aW9uPjo6Y3JlYXRlKCk7CiAgICAgaWYgKCFvcHRpb25hbFVSTCA9PSAhb3B0aW9uYWxV
UkxSZWdleCkgewogICAgICAgICAqZXJyb3JTdHJpbmcgPSAiRWl0aGVyIHVybCBvciB1cmxSZWdl
eCBtdXN0IGJlIHNwZWNpZmllZC4iOwogICAgICAgICByZXR1cm47CkBAIC0yOTQsNyArMjk3LDcg
QEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50QnlVcmwoRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbGkKICAgICAgICAgaWYgKCFtYXRjaGVzKHNjcmlwdFVS
TCwgdXJsLCBpc1JlZ2V4KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFJlZlB0
cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiBsb2NhdGlvbiA9IHJlc29sdmVCcmVh
a3BvaW50KGJyZWFrcG9pbnRJZGVudGlmaWVyLCBpdC0+a2V5LCBicmVha3BvaW50KTsKKyAgICAg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gbG9j
YXRpb24gPSByZXNvbHZlQnJlYWtwb2ludChicmVha3BvaW50SWRlbnRpZmllciwgaXQtPmtleSwg
YnJlYWtwb2ludCk7CiAgICAgICAgIGlmIChsb2NhdGlvbikKICAgICAgICAgICAgIGxvY2F0aW9u
cy0+YWRkSXRlbShsb2NhdGlvbik7CiAgICAgfQpAQCAtMzE2LDcgKzMxOSw3IEBAIHN0YXRpYyBi
b29sIHBhcnNlTG9jYXRpb24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBJbnNwZWN0b3JPYmpl
Y3QqIGxvY2F0aW9uLCBTCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBsb2NhdGlvbiwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4qIG9wdGlvbnMsIFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiBv
dXRCcmVha3BvaW50SWRlbnRpZmllciwgUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9j
YXRpb24+JiBhY3R1YWxMb2NhdGlvbikKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0
QnJlYWtwb2ludChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+JiBsb2NhdGlvbiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG9wdGlv
bnMsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJy
ZWFrcG9pbnRJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdn
ZXI6OkxvY2F0aW9uPiYgYWN0dWFsTG9jYXRpb24pCiB7CiAgICAgU291cmNlSUQgc291cmNlSUQ7
CiAgICAgdW5zaWduZWQgbGluZU51bWJlcjsKQEAgLTM4Myw3ICszODYsNyBAQCB2b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGNvbnN0CiAgICAgcmVzdW1lKGVycm9yU3RyaW5nKTsKIH0KIAotUGFzc1JlZlB0cjxU
eXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpy
ZXNvbHZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZGVudGlmaWVyLCBTb3Vy
Y2VJRCBzb3VyY2VJRCwgY29uc3QgU2NyaXB0QnJlYWtwb2ludCYgYnJlYWtwb2ludCkKK1Bhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpyZXNvbHZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGJyZWFrcG9p
bnRJZGVudGlmaWVyLCBTb3VyY2VJRCBzb3VyY2VJRCwgY29uc3QgU2NyaXB0QnJlYWtwb2ludCYg
YnJlYWtwb2ludCkKIHsKICAgICBTY3JpcHRzTWFwOjppdGVyYXRvciBzY3JpcHRJdGVyYXRvciA9
IG1fc2NyaXB0cy5maW5kKHNvdXJjZUlEKTsKICAgICBpZiAoc2NyaXB0SXRlcmF0b3IgPT0gbV9z
Y3JpcHRzLmVuZCgpKQpAQCAtNDAzLDE0ICs0MDYsMTQgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRl
cjo6RGVidWdnZXI6OkxvY2F0aW9uPiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXNvbHZlQnJl
YWsKICAgICAgICAgZGVidWdTZXJ2ZXJCcmVha3BvaW50SURzSXRlcmF0b3IgPSBtX2JyZWFrcG9p
bnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHMuc2V0KGJyZWFrcG9pbnRJZGVu
dGlmaWVyLCBWZWN0b3I8QnJlYWtwb2ludElEPigpKS5pdGVyYXRvcjsKICAgICBkZWJ1Z1NlcnZl
ckJyZWFrcG9pbnRJRHNJdGVyYXRvci0+dmFsdWUuYXBwZW5kKGRlYnVnU2VydmVyQnJlYWtwb2lu
dElEKTsKIAotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiBsb2Nh
dGlvbiA9IFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb246OmNyZWF0ZSgpCisgICAgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gbG9jYXRpb24g
PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb246OmNyZWF0ZSgpCiAg
ICAgICAgIC5zZXRTY3JpcHRJZChTdHJpbmc6Om51bWJlcihzb3VyY2VJRCkpCiAgICAgICAgIC5z
ZXRMaW5lTnVtYmVyKGFjdHVhbExpbmVOdW1iZXIpOwogICAgIGxvY2F0aW9uLT5zZXRDb2x1bW5O
dW1iZXIoYWN0dWFsQ29sdW1uTnVtYmVyKTsKICAgICByZXR1cm4gbG9jYXRpb247CiB9CiAKLXN0
YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gc2NyaXB0VG9JbnNwZWN0b3JPYmplY3Qo
U2NyaXB0T2JqZWN0IHNjcmlwdE9iamVjdCkKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gc2NyaXB0VG9JbnNwZWN0b3JPYmplY3QoRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IHNj
cmlwdE9iamVjdCkKIHsKICAgICBpZiAoc2NyaXB0T2JqZWN0Lmhhc05vVmFsdWUoKSkKICAgICAg
ICAgcmV0dXJuIDA7CkBAIC00MjAsNyArNDIzLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBzY3JpcHRUb0luc3BlY3Rvck9iamVjdChTY3JpcHRPYmplY3Qgc2NyaXB0T2IK
ICAgICByZXR1cm4gdmFsdWUtPmFzT2JqZWN0KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6c2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5n
JiBzY3JpcHRJRFN0ciwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogY29uc3Qgb3B0
aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbElzUmVnZXgsIFJl
ZlB0cjxBcnJheTxXZWJDb3JlOjpUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0Y2g+PiYgcmVz
dWx0cykKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2VhcmNoSW5Db250ZW50KEVycm9y
U3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRFN0ciwgY29uc3QgU3RyaW5nJiBx
dWVyeSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29s
KiBjb25zdCBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpQYWdlOjpTZWFyY2hNYXRjaD4+JiByZXN1bHRzKQogewogICAgIGJvb2wgaXNSZWdleCA9
IG9wdGlvbmFsSXNSZWdleCA/ICpvcHRpb25hbElzUmVnZXggOiBmYWxzZTsKICAgICBib29sIGNh
c2VTZW5zaXRpdmUgPSBvcHRpb25hbENhc2VTZW5zaXRpdmUgPyAqb3B0aW9uYWxDYXNlU2Vuc2l0
aXZlIDogZmFsc2U7CkBAIC00MzMsMTAgKzQzNiwxMCBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OnNlYXJjaEluQ29udGVudChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYg
cwogICAgICAgICAqZXJyb3IgPSAiTm8gc2NyaXB0IGZvciBpZDogIiArIHNjcmlwdElEU3RyOwog
fQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldFNjcmlwdFNvdXJjZShFcnJvclN0
cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIGNvbnN0IFN0cmluZyYgbmV3Q29u
dGVudCwgY29uc3QgYm9vbCogY29uc3QgcHJldmlldywgUmVmUHRyPEFycmF5PFR5cGVCdWlsZGVy
OjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4mIG5ld0NhbGxGcmFtZXMsIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldFNjcmlwdFNv
dXJjZShFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIGNvbnN0IFN0
cmluZyYgbmV3Q29udGVudCwgY29uc3QgYm9vbCogY29uc3QgcHJldmlldywgUmVmUHRyPEFycmF5
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiYgbmV3Q2FsbEZy
YW1lcywgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHJlc3VsdCkKIHsKICAgICBib29sIHByZXZp
ZXdPbmx5ID0gcHJldmlldyAmJiAqcHJldmlldzsKLSAgICBTY3JpcHRPYmplY3QgcmVzdWx0T2Jq
ZWN0OworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCByZXN1bHRPYmplY3Q7CiAgICAgaWYg
KCFzY3JpcHREZWJ1Z1NlcnZlcigpLnNldFNjcmlwdFNvdXJjZShzY3JpcHRJRCwgbmV3Q29udGVu
dCwgcHJldmlld09ubHksIGVycm9yLCAmbV9jdXJyZW50Q2FsbFN0YWNrLCAmcmVzdWx0T2JqZWN0
KSkKICAgICAgICAgcmV0dXJuOwogICAgIG5ld0NhbGxGcmFtZXMgPSBjdXJyZW50Q2FsbEZyYW1l
cygpOwpAQCAtNDU1LDcgKzQ1OCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Z2V0
U2NyaXB0U291cmNlKEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBzCiAgICAgICAg
ICplcnJvciA9ICJObyBzY3JpcHQgZm9yIGlkOiAiICsgc2NyaXB0SURTdHI7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Z2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+JiBkZXRhaWxzKQordm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpE
ZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiYgZGV0YWlscykKIHsKICAgICBJbmplY3RlZFNjcmlw
dCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlw
dEZvck9iamVjdElkKGZ1bmN0aW9uSWQpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1Zh
bHVlKCkpIHsKQEAgLTU0Nyw3ICs1NTAsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OnNldFBhdXNlT25FeGNlcHRpb25zSW1wbChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsCiAgICAg
ICAgICplcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvci4gQ291bGQgbm90IGNoYW5nZSBwYXVz
ZSBvbiBleGNlcHRpb25zIHN0YXRlIjsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3Ry
aW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcq
IGNvbnN0IG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBjb25zdCBpbmNsdWRlQ29tbWFuZExpbmVB
UEksIGNvbnN0IGJvb2wqIGNvbnN0IGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29s
ZSwgY29uc3QgYm9vbCogY29uc3QgcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQ
cmV2aWV3LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3Vs
dCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQordm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9u
LCBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBjb25zdCBpbmNs
dWRlQ29tbWFuZExpbmVBUEksIGNvbnN0IGJvb2wqIGNvbnN0IGRvTm90UGF1c2VPbkV4Y2VwdGlv
bnNBbmRNdXRlQ29uc29sZSwgY29uc3QgYm9vbCogY29uc3QgcmV0dXJuQnlWYWx1ZSwgY29uc3Qg
Ym9vbCogZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRP
dXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKIHsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNj
cmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvck9iamVjdElk
KGNhbGxGcmFtZUlkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CkBA
IC01NzEsNyArNTc0LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpldmFsdWF0ZU9u
Q2FsbEZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QKICAgICB9CiB9CiAKLXZv
aWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y29tcGlsZVNjcmlwdChFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkwsIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8U2NyaXB0SWQ+KiBzY3JpcHRJRCwgVHlwZUJ1aWxk
ZXI6Ok9wdE91dHB1dDxTdHJpbmc+KiBzeW50YXhFcnJvck1lc3NhZ2UpCit2b2lkIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OmNvbXBpbGVTY3JpcHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8U2NyaXB0SWQ+KiBzY3JpcHRJRCwgSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PFN0cmluZz4qIHN5bnRheEVycm9yTWVzc2FnZSkKIHsK
ICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0Rm9yRXZh
bChlcnJvclN0cmluZywgMCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkg
ewpAQCAtNTkwLDcgKzU5Myw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y29tcGls
ZVNjcmlwdChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluCiAgICAgKnNjcmlw
dElEID0gc2NyaXB0SURWYWx1ZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpy
dW5TY3JpcHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTY3JpcHRJZCYgc2NyaXB0
SUQsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9i
amVjdEdyb3VwLCBjb25zdCBib29sKiBjb25zdCBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0
ZUNvbnNvbGUsIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVz
dWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCit2b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OnJ1blNjcmlwdChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNv
bnN0IFNjcmlwdElkJiBzY3JpcHRJRCwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQsIGNv
bnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGNvbnN0IGRvTm90UGF1
c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCiB7CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5q
ZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdEZvckV2YWwoZXJyb3JTdHJpbmcsIGV4ZWN1dGlv
bkNvbnRleHRJZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewpAQCAt
NjA1LDcgKzYwOCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cnVuU2NyaXB0KEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU2NyaXB0SWQmCiAgICAgICAgIG11dGVDb25z
b2xlKCk7CiAgICAgfQogCi0gICAgU2NyaXB0VmFsdWUgdmFsdWU7CisgICAgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUgdmFsdWU7CiAgICAgYm9vbCB3YXNUaHJvd25WYWx1ZTsKICAgICBTdHJpbmcg
ZXhjZXB0aW9uTWVzc2FnZTsKICAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLnJ1blNjcmlwdChpbmpl
Y3RlZFNjcmlwdC5zY3JpcHRTdGF0ZSgpLCBzY3JpcHRJRCwgJnZhbHVlLCAmd2FzVGhyb3duVmFs
dWUsICZleGNlcHRpb25NZXNzYWdlKTsKQEAgLTYzOCwxNCArNjQxLDE0IEBAIHZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6c2NyaXB0RXhlY3V0aW9uQmxvY2tlZEJ5Q1NQKGNvbnN0IFN0cmlu
ZyYgZGlyZWN0aXZlCiAgICAgfQogfQogCi1QYXNzUmVmUHRyPEFycmF5PFR5cGVCdWlsZGVyOjpE
ZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y3VycmVudENhbGxG
cmFtZXMoKQorUGFzc1JlZlB0cjxBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dl
cjo6Q2FsbEZyYW1lPj4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y3VycmVudENhbGxGcmFtZXMo
KQogewogICAgIGlmICghbV9wYXVzZWRTY3JpcHRTdGF0ZSkKLSAgICAgICAgcmV0dXJuIEFycmF5
PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPjo6Y3JlYXRlKCk7CisgICAgICAgIHJl
dHVybiBBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPjo6
Y3JlYXRlKCk7CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVk
U2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3IobV9wYXVzZWRTY3JpcHRTdGF0ZSk7CiAg
ICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEFycmF5PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6
Q2FsbEZyYW1lPjo6Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBBcnJheTxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPjo6Y3JlYXRlKCk7CiAgICAgfQogICAgIHJl
dHVybiBpbmplY3RlZFNjcmlwdC53cmFwQ2FsbEZyYW1lcyhtX2N1cnJlbnRDYWxsU3RhY2spOwog
fQpAQCAtNzE1LDcgKzcxOCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGFy
c2VTb3VyY2UoU291cmNlSUQgc291cmNlSUQsIGNvbnN0IFNjcmlwdCYgaW5TCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6RGVi
dWdnZXI6OkxvY2F0aW9uPiBsb2NhdGlvbiA9IHJlc29sdmVCcmVha3BvaW50KGl0LT5rZXksIHNv
dXJjZUlELCBicmVha3BvaW50KTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gbG9jYXRpb24gPSByZXNvbHZlQnJlYWtwb2ludChpdC0+
a2V5LCBzb3VyY2VJRCwgYnJlYWtwb2ludCk7CiAgICAgICAgIGlmIChsb2NhdGlvbikKICAgICAg
ICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5icmVha3BvaW50UmVzb2x2ZWQoaXQtPmtleSwg
bG9jYXRpb24pOwogICAgIH0KQEAgLTcyNiw3ICs3MjksNyBAQCB2b2lkIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OmZhaWxlZFRvUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZwogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5zY3JpcHRGYWlsZWRUb1BhcnNlKHVybCwg
ZGF0YSwgZmlyc3RMaW5lLCBlcnJvckxpbmUsIGVycm9yTWVzc2FnZSk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRl
LCBjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywgY29uc3QgU2NyaXB0VmFsdWUmIGV4Y2Vw
dGlvbikKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UoSlNDOjpFeGVjU3Rh
dGUqIHNjcmlwdFN0YXRlLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgY2FsbEZyYW1l
cywgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGV4Y2VwdGlvbikKIHsKICAgICBBU1NF
UlQoc2NyaXB0U3RhdGUgJiYgIW1fcGF1c2VkU2NyaXB0U3RhdGUpOwogICAgIG1fcGF1c2VkU2Ny
aXB0U3RhdGUgPSBzY3JpcHRTdGF0ZTsKQEAgLTc1NSw3ICs3NTgsNyBAQCB2b2lkIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OmRpZFBhdXNlKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29u
c3QgU2NyaXB0Vgogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRDb250aW51ZSgpCiB7
CiAgICAgbV9wYXVzZWRTY3JpcHRTdGF0ZSA9IDA7Ci0gICAgbV9jdXJyZW50Q2FsbFN0YWNrID0g
U2NyaXB0VmFsdWUoKTsKKyAgICBtX2N1cnJlbnRDYWxsU3RhY2sgPSBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSgpOwogICAgIGNsZWFyQnJlYWtEZXRhaWxzKCk7CiAgICAgbV9mcm9udGVuZERpc3Bh
dGNoZXItPnJlc3VtZWQoKTsKIH0KQEAgLTc3MCw3ICs3NzMsNyBAQCB2b2lkIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmJyZWFrUHJvZ3JhbShJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0
Y2hlcjo6Ugogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjbGVhcigpCiB7CiAgICAgbV9w
YXVzZWRTY3JpcHRTdGF0ZSA9IDA7Ci0gICAgbV9jdXJyZW50Q2FsbFN0YWNrID0gU2NyaXB0VmFs
dWUoKTsKKyAgICBtX2N1cnJlbnRDYWxsU3RhY2sgPSBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSgp
OwogICAgIG1fc2NyaXB0cy5jbGVhcigpOwogICAgIG1fYnJlYWtwb2ludElkZW50aWZpZXJUb0Rl
YnVnU2VydmVyQnJlYWtwb2ludElEcy5jbGVhcigpOwogICAgIG1fY29udGludWVUb0xvY2F0aW9u
QnJlYWtwb2ludElEID0gbm9CcmVha3BvaW50SUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAppbmRleCA0YmU2MDAwLi45NWVkYTA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmgKQEAgLTMxLDEyICszMSwxNCBAQAogI2RlZmluZSBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50X2gK
IAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEUoSU5TUEVDVE9SKQor
CiAjaW5jbHVkZSAiQnJlYWtwb2ludElELmgiCiAjaW5jbHVkZSAiQ29uc29sZUFQSVR5cGVzLmgi
CiAjaW5jbHVkZSAiQ29uc29sZVR5cGVzLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIK
LSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgorI2luY2x1
ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgIlNjcmlwdEJyZWFrcG9pbnQu
aCIKICNpbmNsdWRlICJTY3JpcHREZWJ1Z0xpc3RlbmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3Rh
dGUuaCIKQEAgLTQ4LDE5ICs1MCwyNSBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVz
cGFjZSBEZXByZWNhdGVkIHsKK2NsYXNzIFNjcmlwdFZhbHVlOworfQogCi1jbGFzcyBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXI7CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIGNsYXNzIEluc3BlY3RvckFy
cmF5OwogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3MgSW5zcGVjdG9yVmFsdWU7Cit9CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogY2xh
c3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFNjcmlwdERlYnVnU2VydmVyOwotY2xhc3Mg
U2NyaXB0VmFsdWU7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIFNj
cmlwdERlYnVnTGlzdGVuZXIsIHB1YmxpYyBJbnNwZWN0b3JEZWJ1Z2dlckJhY2tlbmREaXNwYXRj
aGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50IDogcHVibGljIEluc3Bl
Y3RvckFnZW50QmFzZSwgcHVibGljIFNjcmlwdERlYnVnTGlzdGVuZXIsIHB1YmxpYyBJbnNwZWN0
b3JEZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBiYWNrdHJhY2VPYmplY3RHcm91cDsKQEAg
LTcxLDcgKzc5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjYW5TZXRTY3JpcHRTb3Vy
Y2UoRXJyb3JTdHJpbmcqLCBib29sKik7CiAgICAgdmlydHVhbCB2b2lkIHN1cHBvcnRzU2VwYXJh
dGVTY3JpcHRDb21waWxhdGlvbkFuZEV4ZWN1dGlvbihFcnJvclN0cmluZyosIGJvb2wqKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5k
QmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgYm9vbCBpc1BhdXNlZCgpOwpAQCAtODMsMTUgKzkx
LDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRCcmVha3BvaW50c0FjdGl2ZShFcnJvclN0cmluZyosIGJvb2wg
YWN0aXZlKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJp
bmcqLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFVSTCwgY29uc3QgU3Ry
aW5nKiBvcHRpb25hbFVSTFJlZ2V4LCBjb25zdCBpbnQqIG9wdGlvbmFsQ29sdW1uTnVtYmVyLCBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3B0aW9ucywgVHlwZUJ1aWxkZXI6OkRlYnVn
Z2VyOjpCcmVha3BvaW50SWQqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVy
OjpEZWJ1Z2dlcjo6TG9jYXRpb24+PiYgbG9jYXRpb25zKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
QnJlYWtwb2ludChFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBs
b2NhdGlvbiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG9wdGlvbnMsIFR5cGVCdWls
ZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dl
cjo6TG9jYXRpb24+JiBhY3R1YWxMb2NhdGlvbik7CisgICAgdmlydHVhbCB2b2lkIHNldEJyZWFr
cG9pbnRCeVVybChFcnJvclN0cmluZyosIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcqIG9w
dGlvbmFsVVJMLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCogb3B0
aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4qIG9wdGlvbnMsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50
SWQqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9ucyk7CisgICAgdmlydHVhbCB2
b2lkIHNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3Q+JiBsb2NhdGlvbiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0Piogb3B0aW9ucywgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJy
ZWFrcG9pbnRJZCosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9j
YXRpb24+JiBhY3R1YWxMb2NhdGlvbik7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUJyZWFrcG9p
bnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZGVudGlmaWVyKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgY29udGludWVUb0xvY2F0aW9uKEVycm9yU3RyaW5nKiwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4mIGxvY2F0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgY29udGlu
dWVUb0xvY2F0aW9uKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0PiYgbG9jYXRpb24pOwogCi0gICAgdmlydHVhbCB2b2lkIHNlYXJjaEluQ29udGVu
dChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIGNvbnN0IFN0cmluZyYgcXVl
cnksIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9u
YWxJc1JlZ2V4LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpT
ZWFyY2hNYXRjaD4+Jik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNjcmlwdFNvdXJjZShFcnJvclN0
cmluZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudCwg
Y29uc3QgYm9vbCogcHJldmlldywgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRl
cjo6RGVidWdnZXI6OkNhbGxGcmFtZT4+JiBuZXdDYWxsRnJhbWVzLCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiYgcmVzdWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoSW5Db250ZW50KEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29u
c3QgYm9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVn
ZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpQYWdlOjpTZWFyY2hNYXRjaD4+Jik7CisgICAgdmlydHVhbCB2b2lkIHNldFNjcmlw
dFNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIGNvbnN0IFN0cmlu
ZyYgbmV3Q29udGVudCwgY29uc3QgYm9vbCogcHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJh
bWU+PiYgbmV3Q2FsbEZyYW1lcywgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYg
cmVzdWx0KTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgU3RyaW5nKiBzY3JpcHRTb3VyY2UpOwotICAgIHZpcnR1
YWwgdm9pZCBnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZ1
bmN0aW9uSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4m
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVi
dWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4mKTsKICAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoRXJyb3JT
dHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKEVycm9yU3RyaW5nKik7CiAgICAgdmly
dHVhbCB2b2lkIHN0ZXBPdmVyKEVycm9yU3RyaW5nKik7CkBAIC0xMDYsMTUgKzExNCwxNSBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wqIGRvTm90UGF1
c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29s
Piogd2FzVGhyb3duKTsKLSAgICB2b2lkIGNvbXBpbGVTY3JpcHQoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBUeXBlQnVpbGRl
cjo6T3B0T3V0cHV0PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6U2NyaXB0SWQ+KiwgVHlwZUJ1aWxk
ZXI6Ok9wdE91dHB1dDxTdHJpbmc+KiBzeW50YXhFcnJvck1lc3NhZ2UpOwotICAgIHZvaWQgcnVu
U2NyaXB0KEVycm9yU3RyaW5nKiwgY29uc3QgVHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpTY3JpcHRJ
ZCYsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdy
b3VwLCBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBUeXBlQnVp
bGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0PiYgcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7CisgICAgdm9pZCBjb21waWxl
U2NyaXB0KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpTY3JpcHRJZD4qLCBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpPcHRPdXRwdXQ8U3RyaW5nPiogc3ludGF4RXJyb3JNZXNzYWdlKTsKKyAgICB2b2lkIHJ1
blNjcmlwdChFcnJvclN0cmluZyosIGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVn
Z2VyOjpTY3JpcHRJZCYsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkLCBjb25zdCBTdHJp
bmcqIG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0
ZUNvbnNvbGUsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q+JiByZXN1bHQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiog
d2FzVGhyb3duKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0T3ZlcmxheU1lc3NhZ2UoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcqKTsKIAotICAgIHZvaWQgc2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRl
bWVudChJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpFbnVtIGJy
ZWFrUmVhc29uLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSk7CisgICAgdm9pZCBz
Y2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNw
YXRjaGVyOjpSZWFzb246OkVudW0gYnJlYWtSZWFzb24sIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3Q+IGRhdGEpOwogICAgIHZvaWQgY2FuY2VsUGF1c2VPbk5leHRTdGF0ZW1l
bnQoKTsKLSAgICB2b2lkIGJyZWFrUHJvZ3JhbShJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlz
cGF0Y2hlcjo6UmVhc29uOjpFbnVtIGJyZWFrUmVhc29uLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gZGF0YSk7CisgICAgdm9pZCBicmVha1Byb2dyYW0oSW5zcGVjdG9yRGVidWdnZXJGcm9u
dGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RW51bSBicmVha1JlYXNvbiwgUGFzc1JlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gZGF0YSk7CiAgICAgdmlydHVhbCB2b2lkIHNjcmlwdEV4
ZWN1dGlvbkJsb2NrZWRCeUNTUChjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQpOwogCiAgICAg
Y2xhc3MgTGlzdGVuZXIgewpAQCAtMTQxLDIxICsxNDksMjEgQEAgcHJvdGVjdGVkOgogCiAgICAg
dmlydHVhbCB2b2lkIGVuYWJsZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKCk7Ci0gICAg
dmlydHVhbCB2b2lkIGRpZFBhdXNlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU2NyaXB0VmFsdWUm
IGNhbGxGcmFtZXMsIGNvbnN0IFNjcmlwdFZhbHVlJiBleGNlcHRpb24pOworICAgIHZpcnR1YWwg
dm9pZCBkaWRQYXVzZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlJiBjYWxsRnJhbWVzLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZXhjZXB0aW9u
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29udGludWUoKTsKICAgICB2b2lkIHJlc2V0KCk7CiAK
IHByaXZhdGU6CiAgICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9
OwogCi0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVn
Z2VyOjpDYWxsRnJhbWU+PiBjdXJyZW50Q2FsbEZyYW1lcygpOworICAgIFBhc3NSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdn
ZXI6OkNhbGxGcmFtZT4+IGN1cnJlbnRDYWxsRnJhbWVzKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUGFyc2VTb3VyY2UoU291cmNlSUQsIGNvbnN0IFNjcmlwdCYpIE9WRVJSSURFIEZJTkFMOwog
ICAgIHZpcnR1YWwgdm9pZCBmYWlsZWRUb1BhcnNlU291cmNlKGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIGRhdGEsIGludCBmaXJzdExpbmUsIGludCBlcnJvckxpbmUsIGNvbnN0IFN0
cmluZyYgZXJyb3JNZXNzYWdlKSBPVkVSUklERSBGSU5BTDsKIAogICAgIHZvaWQgc2V0UGF1c2VP
bkV4Y2VwdGlvbnNJbXBsKEVycm9yU3RyaW5nKiwgaW50KTsKIAotICAgIFBhc3NSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gcmVzb2x2ZUJyZWFrcG9pbnQoY29uc3QgU3Ry
aW5nJiBicmVha3BvaW50SWRlbnRpZmllciwgU291cmNlSUQsIGNvbnN0IFNjcmlwdEJyZWFrcG9p
bnQmKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpM
b2NhdGlvbj4gcmVzb2x2ZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWRlbnRp
ZmllciwgU291cmNlSUQsIGNvbnN0IFNjcmlwdEJyZWFrcG9pbnQmKTsKICAgICB2b2lkIGNsZWFy
KCk7CiAgICAgYm9vbCBhc3NlcnRQYXVzZWQoRXJyb3JTdHJpbmcqKTsKICAgICB2b2lkIGNsZWFy
QnJlYWtEZXRhaWxzKCk7CkBAIC0xNjQsMTkgKzE3MiwxOSBAQCBwcml2YXRlOgogCiAgICAgdHlw
ZWRlZiBIYXNoTWFwPFNvdXJjZUlELCBTY3JpcHQ+IFNjcmlwdHNNYXA7CiAgICAgdHlwZWRlZiBI
YXNoTWFwPFN0cmluZywgVmVjdG9yPEJyZWFrcG9pbnRJRD4+IEJyZWFrcG9pbnRJZGVudGlmaWVy
VG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHNNYXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFN0cmlu
ZywgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4+IEJyZWFrcG9pbnRJZGVudGlmaWVyVG9CcmVha3Bv
aW50TWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdD4+IEJyZWFrcG9pbnRJZGVudGlmaWVyVG9CcmVha3BvaW50TWFwOwogCiAg
ICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJv
bnRlbmREaXNwYXRjaGVyOwogICAgIFJlZlB0cjxJbnNwZWN0b3JEZWJ1Z2dlckJhY2tlbmREaXNw
YXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIEpTQzo6RXhlY1N0YXRlKiBtX3BhdXNl
ZFNjcmlwdFN0YXRlOwotICAgIFNjcmlwdFZhbHVlIG1fY3VycmVudENhbGxTdGFjazsKKyAgICBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBtX2N1cnJlbnRDYWxsU3RhY2s7CiAgICAgU2NyaXB0c01h
cCBtX3NjcmlwdHM7CiAgICAgQnJlYWtwb2ludElkZW50aWZpZXJUb0RlYnVnU2VydmVyQnJlYWtw
b2ludElEc01hcCBtX2JyZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJ
RHM7CiAgICAgQnJlYWtwb2ludElkZW50aWZpZXJUb0JyZWFrcG9pbnRNYXAgbV9qYXZhU2NyaXB0
QnJlYWtwb2ludHM7CiAgICAgQnJlYWtwb2ludElEIG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtw
b2ludElEOwogICAgIEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246
OkVudW0gbV9icmVha1JlYXNvbjsKLSAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtX2JyZWFr
QXV4RGF0YTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1fYnJlYWtB
dXhEYXRhOwogICAgIGJvb2wgbV9lbmFibGVkOwogICAgIGJvb2wgbV9qYXZhU2NyaXB0UGF1c2VT
Y2hlZHVsZWQ7CiAgICAgTGlzdGVuZXIqIG1fbGlzdGVuZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRm9yd2FyZGluZy5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZvcndhcmRpbmcuaAppbmRleCBmNjA2NTk0Li5mNjhmY2RjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRm9yd2FyZGluZy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGb3J3YXJkaW5nLmgKQEAg
LTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCB7IH07Cit0
eXBlZGVmIEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbDsKIH0KIAogI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckZvcndhcmRpbmdf
aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsLmNwcAppbmRleCA4NzExYThlLi5hYThjYTBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWwuY3BwCkBAIC00OCwxNyArNDgsMTkgQEAKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNs
dWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNj
cmlwdEZ1bmN0aW9uQ2FsbC5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUg
IlNjcmlwdEdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJl
SW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKKyNpbmNsdWRlIDxiaW5k
aW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAordXNp
bmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMg
Y29uc3QgY2hhciogaW5zcGVjdG9yQXR0YWNoZWRIZWlnaHRTZXR0aW5nID0gImluc3BlY3RvckF0
dGFjaGVkSGVpZ2h0IjsKQEAgLTM0NCw3ICszNDYsNyBAQCBib29sIEluc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWw6OmlzVW5kZXJUZXN0KCkKIAogYm9vbCBJbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsOjpldmFsdWF0ZUFzQm9vbGVhbihjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24pCiB7Ci0g
ICAgU2NyaXB0VmFsdWUgdmFsdWUgPSBtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCkuc2NyaXB0
KCkuZXhlY3V0ZVNjcmlwdChleHByZXNzaW9uKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSB2YWx1ZSA9IG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2Ny
aXB0KGV4cHJlc3Npb24pOwogICAgIHJldHVybiB2YWx1ZS50b1N0cmluZyhtYWluV29ybGRFeGVj
U3RhdGUoJm1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKSkpID09ICJ0cnVlIjsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcApp
bmRleCBiZTI0ZTFlLi4yODA5ZjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUg
Ikluc3BlY3RvckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmgiCisjaW5jbHVkZSAiSlNNYWluVGhyZWFk
RXhlY1N0YXRlLmgiCiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVu
dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTUzLDI5ICs1NCwzMyBAQAogI2luY2x1ZGUgIlJl
c291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZVJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCisjaW5j
bHVkZSAiU2NyaXB0R2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNp
bmNsdWRlICJTb3VuZC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCisjaW5j
bHVkZSA8YmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKIGNsYXNzIEZyb250ZW5kTWVudVBy
b3ZpZGVyIDogcHVibGljIENvbnRleHRNZW51UHJvdmlkZXIgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEZyb250ZW5kTWVudVByb3ZpZGVyPiBjcmVhdGUoSW5zcGVjdG9yRnJvbnRl
bmRIb3N0KiBmcm9udGVuZEhvc3QsIFNjcmlwdE9iamVjdCBmcm9udGVuZEFwaU9iamVjdCwgY29u
c3QgVmVjdG9yPENvbnRleHRNZW51SXRlbT4mIGl0ZW1zKQorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEZyb250ZW5kTWVudVByb3ZpZGVyPiBjcmVhdGUoSW5zcGVjdG9yRnJvbnRlbmRIb3N0KiBmcm9u
dGVuZEhvc3QsIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBmcm9udGVuZEFwaU9iamVjdCwgY29u
c3QgVmVjdG9yPENvbnRleHRNZW51SXRlbT4mIGl0ZW1zKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBGcm9udGVuZE1lbnVQcm92aWRlcihmcm9udGVuZEhvc3QsIGZyb250ZW5k
QXBpT2JqZWN0LCBpdGVtcykpOwogICAgIH0KICAgICAKICAgICB2b2lkIGRpc2Nvbm5lY3QoKQog
ICAgIHsKLSAgICAgICAgbV9mcm9udGVuZEFwaU9iamVjdCA9IFNjcmlwdE9iamVjdCgpOworICAg
ICAgICBtX2Zyb250ZW5kQXBpT2JqZWN0ID0gRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KCk7CiAg
ICAgICAgIG1fZnJvbnRlbmRIb3N0ID0gMDsKICAgICB9CiAgICAgCiBwcml2YXRlOgotICAgIEZy
b250ZW5kTWVudVByb3ZpZGVyKEluc3BlY3RvckZyb250ZW5kSG9zdCogZnJvbnRlbmRIb3N0LCBT
Y3JpcHRPYmplY3QgZnJvbnRlbmRBcGlPYmplY3QsIGNvbnN0IFZlY3RvcjxDb250ZXh0TWVudUl0
ZW0+JiBpdGVtcykKKyAgICBGcm9udGVuZE1lbnVQcm92aWRlcihJbnNwZWN0b3JGcm9udGVuZEhv
c3QqIGZyb250ZW5kSG9zdCwgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IGZyb250ZW5kQXBpT2Jq
ZWN0LCBjb25zdCBWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiYgaXRlbXMpCiAgICAgICAgIDogbV9m
cm9udGVuZEhvc3QoZnJvbnRlbmRIb3N0KQogICAgICAgICAsIG1fZnJvbnRlbmRBcGlPYmplY3Qo
ZnJvbnRlbmRBcGlPYmplY3QpCiAgICAgICAgICwgbV9pdGVtcyhpdGVtcykKQEAgLTk5LDcgKzEw
NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJl
SW5kaWNhdG9yKERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwogICAgICAgICAgICAg
aW50IGl0ZW1OdW1iZXIgPSBpdGVtLT5hY3Rpb24oKSAtIENvbnRleHRNZW51SXRlbUJhc2VDdXN0
b21UYWc7CiAKLSAgICAgICAgICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2Zyb250
ZW5kQXBpT2JqZWN0LCAiY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQiKTsKKyAgICAgICAgICAgIERl
cHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2Zyb250ZW5kQXBpT2JqZWN0
LCAiY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQiLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVy
RnJvbUFueVRocmVhZCk7CiAgICAgICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChpdGVt
TnVtYmVyKTsKICAgICAgICAgICAgIGZ1bmN0aW9uLmNhbGwoKTsKICAgICAgICAgfQpAQCAtMTA4
LDcgKzExMyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51Q2xlYXJl
ZCgpCiAgICAgewogICAgICAgICBpZiAobV9mcm9udGVuZEhvc3QpIHsKLSAgICAgICAgICAgIFNj
cmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2Zyb250ZW5kQXBpT2JqZWN0LCAiY29udGV4dE1l
bnVDbGVhcmVkIik7CisgICAgICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwg
ZnVuY3Rpb24obV9mcm9udGVuZEFwaU9iamVjdCwgImNvbnRleHRNZW51Q2xlYXJlZCIsIFdlYkNv
cmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICAgICAgICAgIGZ1bmN0
aW9uLmNhbGwoKTsKIAogICAgICAgICAgICAgbV9mcm9udGVuZEhvc3QtPm1fbWVudVByb3ZpZGVy
ID0gMDsKQEAgLTExNyw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIEluc3BlY3Rv
ckZyb250ZW5kSG9zdCogbV9mcm9udGVuZEhvc3Q7Ci0gICAgU2NyaXB0T2JqZWN0IG1fZnJvbnRl
bmRBcGlPYmplY3Q7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IG1fZnJvbnRlbmRBcGlP
YmplY3Q7CiAgICAgVmVjdG9yPENvbnRleHRNZW51SXRlbT4gbV9pdGVtczsKIH07CiAjZW5kaWYK
QEAgLTI3Miw3ICsyNzcsNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6c2hvd0NvbnRl
eHRNZW51KEV2ZW50KiBldmVudCwgY29uc3QgVmVjdG9yPENvbnRleHRNZQogCiAgICAgQVNTRVJU
KG1fZnJvbnRlbmRQYWdlKTsKICAgICBKU0M6OkV4ZWNTdGF0ZSogZnJvbnRlbmRFeGVjU3RhdGUg
PSBleGVjU3RhdGVGcm9tUGFnZShkZWJ1Z2dlcldvcmxkKCksIG1fZnJvbnRlbmRQYWdlKTsKLSAg
ICBTY3JpcHRPYmplY3QgZnJvbnRlbmRBcGlPYmplY3Q7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0
T2JqZWN0IGZyb250ZW5kQXBpT2JqZWN0OwogICAgIGlmICghU2NyaXB0R2xvYmFsT2JqZWN0Ojpn
ZXQoZnJvbnRlbmRFeGVjU3RhdGUsICJJbnNwZWN0b3JGcm9udGVuZEFQSSIsIGZyb250ZW5kQXBp
T2JqZWN0KSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9m
aWxlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJv
ZmlsZXJBZ2VudC5jcHAKaW5kZXggMDgxNGEwZi4uN2I3ODhhYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuY3BwCkBA
IC0zOSw2ICszOSw4IEBACiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1
ZGUgIlNjcmlwdFByb2ZpbGVyLmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IFVzZXJJbml0aWF0
ZWRQcm9maWxlTmFtZUhlYXAgPSAib3JnLndlYmtpdC5wcm9maWxlcy51c2VyLWluaXRpYXRlZCI7
CkBAIC00OSw3ICs1MSw3IEBAIFBhc3NPd25QdHI8SW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ+
IEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpjcmVhdGUoSW5zdHJ1CiB9CiAKIEluc3BlY3Rv
ckhlYXBQcm9maWxlckFnZW50OjpJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudChJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGlu
amVjdGVkU2NyaXB0TWFuYWdlcikKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVy
YWwoIkhlYXBQcm9maWxlciIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9y
QWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiSGVhcFByb2ZpbGVyIiksIGluc3RydW1lbnRpbmdBZ2Vu
dHMpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIp
CiAgICAgLCBtX25leHRVc2VySW5pdGlhdGVkSGVhcFNuYXBzaG90TnVtYmVyKDEpCiAgICAgLCBt
X3Byb2ZpbGVIZWFkZXJzUmVxdWVzdGVkKGZhbHNlKQpAQCAtODAsNyArODIsNyBAQCB2b2lkIElu
c3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpyZXNldEZyb250ZW5kUHJvZmlsZXMoKQogICAgICAg
ICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVzZXRQcm9maWxlcygpOwogfQogCi12b2lkIEluc3Bl
Y3RvckhlYXBQcm9maWxlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdl
bnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciog
YmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3RvckhlYXBQcm9maWxlckZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRl
bmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9ySGVhcFByb2Zp
bGVyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CkBA
IC05OSw5ICsxMDEsOSBAQCB2b2lkIEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50Ojpjb2xsZWN0
R2FyYmFnZShXZWJDb3JlOjpFcnJvclN0cmluZyopCiAgICAgU2NyaXB0UHJvZmlsZXI6OmNvbGxl
Y3RHYXJiYWdlKCk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkhlYXBQcm9maWxlcjo6
UHJvZmlsZUhlYWRlcj4gSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OmNyZWF0ZVNuYXBzaG90
SGVhZGVyKGNvbnN0IFNjcmlwdEhlYXBTbmFwc2hvdCYgc25hcHNob3QpCitQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkhlYXBQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4gSW5zcGVj
dG9ySGVhcFByb2ZpbGVyQWdlbnQ6OmNyZWF0ZVNuYXBzaG90SGVhZGVyKGNvbnN0IFNjcmlwdEhl
YXBTbmFwc2hvdCYgc25hcHNob3QpCiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpIZWFwUHJv
ZmlsZXI6OlByb2ZpbGVIZWFkZXI+IGhlYWRlciA9IFR5cGVCdWlsZGVyOjpIZWFwUHJvZmlsZXI6
OlByb2ZpbGVIZWFkZXI6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkhlYXBQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4gaGVhZGVyID0gSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6SGVhcFByb2ZpbGVyOjpQcm9maWxlSGVhZGVyOjpjcmVhdGUoKQogICAgICAgICAu
c2V0VWlkKHNuYXBzaG90LnVpZCgpKQogICAgICAgICAuc2V0VGl0bGUoc25hcHNob3QudGl0bGUo
KSk7CiAgICAgaGVhZGVyLT5zZXRNYXhKU09iamVjdElkKHNuYXBzaG90Lm1heFNuYXBzaG90SlNP
YmplY3RJZCgpKTsKQEAgLTExMywxMCArMTE1LDEwIEBAIHZvaWQgSW5zcGVjdG9ySGVhcFByb2Zp
bGVyQWdlbnQ6Omhhc0hlYXBQcm9maWxlcihFcnJvclN0cmluZyosIGJvb2wqIHJlc3VsdCkKICAg
ICAqcmVzdWx0ID0gU2NyaXB0UHJvZmlsZXI6Omhhc0hlYXBQcm9maWxlcigpOwogfQogCi12b2lk
IEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpnZXRQcm9maWxlSGVhZGVycyhFcnJvclN0cmlu
ZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkhlYXBQcm9maWxlcjo6
UHJvZmlsZUhlYWRlcj4+JiBoZWFkZXJzKQordm9pZCBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2Vu
dDo6Z2V0UHJvZmlsZUhlYWRlcnMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6SGVhcFByb2ZpbGVyOjpQcm9m
aWxlSGVhZGVyPj4mIGhlYWRlcnMpCiB7CiAgICAgbV9wcm9maWxlSGVhZGVyc1JlcXVlc3RlZCA9
IHRydWU7Ci0gICAgaGVhZGVycyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6SGVh
cFByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPjo6Y3JlYXRlKCk7CisgICAgaGVhZGVycyA9IEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkhlYXBQcm9m
aWxlcjo6UHJvZmlsZUhlYWRlcj46OmNyZWF0ZSgpOwogCiAgICAgSWRUb0hlYXBTbmFwc2hvdE1h
cDo6aXRlcmF0b3Igc25hcHNob3RzRW5kID0gbV9zbmFwc2hvdHMuZW5kKCk7CiAgICAgZm9yIChJ
ZFRvSGVhcFNuYXBzaG90TWFwOjppdGVyYXRvciBpdCA9IG1fc25hcHNob3RzLmJlZ2luKCk7IGl0
ICE9IHNuYXBzaG90c0VuZDsgKytpdCkKQEAgLTE5MCw3ICsxOTIsNyBAQCB2b2lkIEluc3BlY3Rv
ckhlYXBQcm9maWxlckFnZW50Ojp0YWtlSGVhcFNuYXBzaG90KEVycm9yU3RyaW5nKiwgY29uc3Qg
Ym9vbCogcmVwbwogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6
Z2V0T2JqZWN0QnlIZWFwT2JqZWN0SWQoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcm
IGhlYXBTbmFwc2hvdE9iamVjdElkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVj
dG9ySGVhcFByb2ZpbGVyQWdlbnQ6OmdldE9iamVjdEJ5SGVhcE9iamVjdElkKEVycm9yU3RyaW5n
KiBlcnJvciwgY29uc3QgU3RyaW5nJiBoZWFwU25hcHNob3RPYmplY3RJZCwgY29uc3QgU3RyaW5n
KiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJl
bW90ZU9iamVjdD4mIHJlc3VsdCkKIHsKICAgICBib29sIG9rOwogICAgIHVuc2lnbmVkIGlkID0g
aGVhcFNuYXBzaG90T2JqZWN0SWQudG9VSW50KCZvayk7CkBAIC0xOTgsNyArMjAwLDcgQEAgdm9p
ZCBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6Z2V0T2JqZWN0QnlIZWFwT2JqZWN0SWQoRXJy
b3JTdHJpbmcqIGVycm9yLCBjb24KICAgICAgICAgKmVycm9yID0gIkludmFsaWQgaGVhcCBzbmFw
c2hvdCBvYmplY3QgaWQiOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIFNjcmlwdE9iamVj
dCBoZWFwT2JqZWN0ID0gU2NyaXB0UHJvZmlsZXI6Om9iamVjdEJ5SGVhcE9iamVjdElkKGlkKTsK
KyAgICBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgaGVhcE9iamVjdCA9IFNjcmlwdFByb2ZpbGVy
OjpvYmplY3RCeUhlYXBPYmplY3RJZChpZCk7CiAgICAgaWYgKGhlYXBPYmplY3QuaGFzTm9WYWx1
ZSgpKSB7CiAgICAgICAgICplcnJvciA9ICJPYmplY3QgaXMgbm90IGF2YWlsYWJsZSI7CiAgICAg
ICAgIHJldHVybjsKQEAgLTIyMCw3ICsyMjIsNyBAQCB2b2lkIEluc3BlY3RvckhlYXBQcm9maWxl
ckFnZW50OjpnZXRIZWFwT2JqZWN0SWQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdAog
ICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW5zcGVjdGVkIGNvbnRleHQgaGFzIGdvbmUiOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIFNjcmlwdFZhbHVlIHZhbHVlID0gaW5qZWN0ZWRTY3Jp
cHQuZmluZE9iamVjdEJ5SWQob2JqZWN0SWQpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
IHZhbHVlID0gaW5qZWN0ZWRTY3JpcHQuZmluZE9iamVjdEJ5SWQob2JqZWN0SWQpOwogICAgIGlm
ICh2YWx1ZS5oYXNOb1ZhbHVlKCkgfHwgdmFsdWUuaXNVbmRlZmluZWQoKSkgewogICAgICAgICAq
ZXJyb3JTdHJpbmcgPSAiT2JqZWN0IHdpdGggZ2l2ZW4gaWQgbm90IGZvdW5kIjsKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhl
YXBQcm9maWxlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGVh
cFByb2ZpbGVyQWdlbnQuaAppbmRleCBjYzM2ODY4Li42MmMxM2U0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuaApAQCAt
MzMsOCArMzMsOSBAQAogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJM
RShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRl
ICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9u
dGVuZC5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KQEAgLTQ5LDcgKzUwLDcgQEAgY2xhc3MgU2NyaXB0UHJvZmlsZTsKIAogdHlw
ZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckhlYXBQcm9maWxlckFn
ZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3RvckhlYXBQcm9m
aWxlckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JIZWFwUHJvZmls
ZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JIZWFw
UHJvZmlsZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdl
bnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKik7
CkBAIC02MSwxNiArNjIsMTYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGhhc0hlYXBQ
cm9maWxlcihFcnJvclN0cmluZyosIGJvb2wqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9m
aWxlSGVhZGVycyhFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1
aWxkZXI6OkhlYXBQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4+Jik7CisgICAgdmlydHVhbCB2b2lk
IGdldFByb2ZpbGVIZWFkZXJzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkhlYXBQcm9maWxlcjo6UHJvZmls
ZUhlYWRlcj4+Jik7CiAgICAgdmlydHVhbCB2b2lkIGdldEhlYXBTbmFwc2hvdChFcnJvclN0cmlu
ZyosIGludCB1aWQpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVQcm9maWxlKEVycm9yU3RyaW5n
KiwgaW50IHVpZCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERl
c3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCB0
YWtlSGVhcFNuYXBzaG90KEVycm9yU3RyaW5nKiwgY29uc3QgYm9vbCogcmVwb3J0UHJvZ3Jlc3Mp
OwogCi0gICAgdmlydHVhbCB2b2lkIGdldE9iamVjdEJ5SGVhcE9iamVjdElkKEVycm9yU3RyaW5n
KiwgY29uc3QgU3RyaW5nJiBoZWFwU25hcHNob3RPYmplY3RJZCwgY29uc3QgU3RyaW5nKiBvYmpl
Y3RHcm91cCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1
bHQpOworICAgIHZpcnR1YWwgdm9pZCBnZXRPYmplY3RCeUhlYXBPYmplY3RJZChFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgaGVhcFNuYXBzaG90T2JqZWN0SWQsIGNvbnN0IFN0cmluZyogb2Jq
ZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q+JiByZXN1bHQpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRIZWFwT2JqZWN0SWQoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBTdHJpbmcqIGhlYXBTbmFwc2hvdE9iamVj
dElkKTsKIAogcHJpdmF0ZToKQEAgLTgwLDcgKzgxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
cmVzZXRGcm9udGVuZFByb2ZpbGVzKCk7CiAKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpI
ZWFwUHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+IGNyZWF0ZVNuYXBzaG90SGVhZGVyKGNvbnN0IFNj
cmlwdEhlYXBTbmFwc2hvdCYpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6SGVhcFByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPiBjcmVhdGVTbmFwc2hvdEhlYWRlcihjb25z
dCBTY3JpcHRIZWFwU25hcHNob3QmKTsKIAogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9p
bmplY3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckhlYXBQ
cm9maWxlckZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApp
bmRleCBhMDI1NzEzLi5mYjQyZjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTYxLDI3ICs2MSwyOCBAQAogI2lu
Y2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1
ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW4uaCIKLQorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpBcnJh
eTsKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6OkRhdGFiYXNlV2l0aE9i
amVjdFN0b3JlczsKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6OkRhdGFF
bnRyeTsKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6OktleTsKLXVzaW5n
IFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6OktleVBhdGg7Ci11c2luZyBXZWJDb3Jl
OjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpLZXlSYW5nZTsKLXVzaW5nIFdlYkNvcmU6OlR5cGVC
dWlsZGVyOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlOwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxk
ZXI6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmVJbmRleDsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkFycmF5OwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpE
YXRhYmFzZVdpdGhPYmplY3RTdG9yZXM7Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpJ
bmRleGVkREI6OkRhdGFFbnRyeTsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkluZGV4
ZWREQjo6S2V5OwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpLZXlQ
YXRoOwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpLZXlSYW5nZTsK
K3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmU7Cit1
c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlSW5kZXg7
CiAKK3R5cGVkZWYgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJh
Y2tCYXNlIFJlcXVlc3RDYWxsYmFjazsKIHR5cGVkZWYgV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhl
ZERCQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXF1ZXN0RGF0YWJhc2VOYW1lc0NhbGxiYWNr
IFJlcXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJhY2s7CiB0eXBlZGVmIFdlYkNvcmU6Okluc3BlY3Rv
ckluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UmVxdWVzdERhdGFiYXNlQ2FsbGJh
Y2sgUmVxdWVzdERhdGFiYXNlQ2FsbGJhY2s7CiB0eXBlZGVmIFdlYkNvcmU6Okluc3BlY3Rvcklu
ZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UmVxdWVzdERhdGFDYWxsYmFjayBSZXF1
ZXN0RGF0YUNhbGxiYWNrOwotdHlwZWRlZiBXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcjo6Q2FsbGJhY2tCYXNlIFJlcXVlc3RDYWxsYmFjazsKIHR5cGVkZWYgV2ViQ29yZTo6SW5z
cGVjdG9ySW5kZXhlZERCQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpDbGVhck9iamVjdFN0b3Jl
Q2FsbGJhY2sgQ2xlYXJPYmplY3RTdG9yZUNhbGxiYWNrOwogCit1c2luZyBuYW1lc3BhY2UgSW5z
cGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSB7CkBAIC0xMjMsNyAr
MTI0LDcgQEAgcHVibGljOgogICAgICAgICB9CiAKICAgICAgICAgUmVmUHRyPERPTVN0cmluZ0xp
c3Q+IGRhdGFiYXNlTmFtZXNMaXN0ID0gcmVxdWVzdFJlc3VsdC0+ZG9tU3RyaW5nTGlzdCgpOwot
ICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IGRhdGFiYXNlTmFtZXMg
PSBUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CisgICAgICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBkYXRhYmFzZU5hbWVzID0gSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgZGF0YWJhc2VOYW1lc0xpc3QtPmxlbmd0aCgpOyArK2kpCiAg
ICAgICAgICAgICBkYXRhYmFzZU5hbWVzLT5hZGRJdGVtKGRhdGFiYXNlTmFtZXNMaXN0LT5pdGVt
KGkpKTsKICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRTdWNjZXNzKGRhdGFiYXNlTmFt
ZXMucmVsZWFzZSgpKTsKQEAgLTI1MCw3ICsyNTEsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxLZXlQ
YXRoPiBrZXlQYXRoRnJvbUlEQktleVBhdGgoY29uc3QgSURCS2V5UGF0aCYgaWRiS2V5UGF0aCkK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJREJLZXlQYXRoOjpBcnJheVR5cGU6IHsKICAgICAg
ICAga2V5UGF0aCA9IEtleVBhdGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6VHlwZTo6QXJy
YXkpOwotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IGFycmF5ID0g
VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgICAgICBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gYXJyYXkgPSBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICAgICAgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHN0cmluZ0FycmF5ID0gaWRiS2V5UGF0aC5hcnJheSgpOwogICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHN0cmluZ0FycmF5LnNpemUoKTsgKytpKQogICAgICAgICAgICAg
YXJyYXktPmFkZEl0ZW0oc3RyaW5nQXJyYXlbaV0pOwpAQCAtMjg1LDEyICsyODYsMTIgQEAgcHVi
bGljOgogCiAgICAgICAgIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEgZGF0YWJhc2VNZXRhZGF0
YSA9IGlkYkRhdGFiYXNlLT5tZXRhZGF0YSgpOwogCi0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRl
cjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmU+PiBvYmplY3RTdG9y
ZXMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6T2JqZWN0U3Rv
cmU+OjpjcmVhdGUoKTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFy
cmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmU+PiBvYmpl
Y3RTdG9yZXMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlPjo6Y3JlYXRlKCk7CiAKICAgICAgICAgZm9y
IChJREJEYXRhYmFzZU1ldGFkYXRhOjpPYmplY3RTdG9yZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBkYXRhYmFzZU1ldGFkYXRhLm9iamVjdFN0b3Jlcy5iZWdpbigpOyBpdCAhPSBkYXRhYmFzZU1l
dGFkYXRhLm9iamVjdFN0b3Jlcy5lbmQoKTsgKytpdCkgewogICAgICAgICAgICAgY29uc3QgSURC
T2JqZWN0U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3RvcmVNZXRhZGF0YSA9IGl0LT52YWx1ZTsKIAot
ICAgICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6SW5kZXhl
ZERCOjpPYmplY3RTdG9yZUluZGV4Pj4gaW5kZXhlcyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBl
QnVpbGRlcjo6SW5kZXhlZERCOjpPYmplY3RTdG9yZUluZGV4Pjo6Y3JlYXRlKCk7CisgICAgICAg
ICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6SW5kZXhlZERCOjpPYmplY3RTdG9yZUluZGV4Pj4gaW5kZXhlcyA9IEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6
T2JqZWN0U3RvcmVJbmRleD46OmNyZWF0ZSgpOwogCiAgICAgICAgICAgICBmb3IgKElEQk9iamVj
dFN0b3JlTWV0YWRhdGE6OkluZGV4TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG9iamVjdFN0b3Jl
TWV0YWRhdGEuaW5kZXhlcy5iZWdpbigpOyBpdCAhPSBvYmplY3RTdG9yZU1ldGFkYXRhLmluZGV4
ZXMuZW5kKCk7ICsraXQpIHsKICAgICAgICAgICAgICAgICBjb25zdCBJREJJbmRleE1ldGFkYXRh
JiBpbmRleE1ldGFkYXRhID0gaXQtPnZhbHVlOwpAQCAtNTU3LDcgKzU1OCw3IEBAIHB1YmxpYzoK
IH0gLy8gbmFtZXNwYWNlCiAKIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpJbnNwZWN0b3JJbmRl
eGVkREJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zcGVjdG9yUGFnZUFn
ZW50KiBwYWdlQWdlbnQpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJJ
bmRleGVkREIiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFz
ZShBU0NJSUxpdGVyYWwoIkluZGV4ZWREQiIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwg
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9w
YWdlQWdlbnQocGFnZUFnZW50KQogewpAQCAtNTY3LDcgKzU2OCw3IEBAIEluc3BlY3RvckluZGV4
ZWREQkFnZW50Ojp+SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQoKQogewogfQogCi12b2lkIEluc3Bl
Y3RvckluZGV4ZWREQkFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNw
YXRjaGVyKQordm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fYmFja2VuZERp
c3BhdGNoZXIgPSBJbnNwZWN0b3JJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJh
Y2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgKaW5kZXggYmEzNzU5YS4uYjk1NTIxMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50
LmgKQEAgLTMzLDcgKzMzLDggQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpICYmIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5j
bHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9y
V2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDQsNyArNDUsNyBAQCBjbGFzcyBJbnNwZWN0b3JQ
YWdlQWdlbnQ7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0
b3JJbmRleGVkREJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNw
ZWN0b3JJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVj
dG9ySW5kZXhlZERCQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc093blB0cjxJbnNwZWN0b3JJbmRleGVkREJBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKICAgICB7
CkBAIC01Miw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgfkluc3BlY3RvckluZGV4ZWRE
QkFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIC8vIENhbGxlZCBmcm9tIHRo
ZSBmcm9udC1lbmQuCkBAIC02MCw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzYWJsZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RGF0YWJhc2VO
YW1lcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIFBhc3NSZWZQ
dHI8UmVxdWVzdERhdGFiYXNlTmFtZXNDYWxsYmFjaz4pOwogICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0RGF0YWJhc2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBj
b25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YWJhc2VDYWxs
YmFjaz4pOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RGF0YShFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25z
dCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUsIGludCBz
a2lwQ291bnQsIGludCBwYWdlU2l6ZSwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGtl
eVJhbmdlLCBQYXNzUmVmUHRyPFJlcXVlc3REYXRhQ2FsbGJhY2s+KTsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVxdWVzdERhdGEoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2lu
LCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5h
bWUsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBpbnQgc2tpcENvdW50LCBpbnQgcGFnZVNpemUs
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIGtleVJhbmdlLCBQYXNz
UmVmUHRyPFJlcXVlc3REYXRhQ2FsbGJhY2s+KTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJPYmpl
Y3RTdG9yZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgaW5fc2VjdXJpdHlPcmlnaW4sIGNv
bnN0IFN0cmluZyYgaW5fZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGluX29iamVjdFN0b3Jl
TmFtZSwgUGFzc1JlZlB0cjxDbGVhck9iamVjdFN0b3JlQ2FsbGJhY2s+KTsKIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50LmNwcApp
bmRleCA3ZWNjYjhkLi5jNGI4Nzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5wdXRBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvcklucHV0QWdlbnQuY3BwCkBAIC00OSwxMCArNDksMTIgQEAKICNpbmNsdWRlIDx3
dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAordXNp
bmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbnNwZWN0
b3JJbnB1dEFnZW50OjpJbnNwZWN0b3JJbnB1dEFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHMsIFBhZ2UqIHBhZ2UpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQo
QVNDSUlMaXRlcmFsKCJJbnB1dCIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVj
dG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiSW5wdXQiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykK
ICAgICAsIG1fcGFnZShwYWdlKQogewogfQpAQCAtNjEsNyArNjMsNyBAQCBJbnNwZWN0b3JJbnB1
dEFnZW50Ojp+SW5zcGVjdG9ySW5wdXRBZ2VudCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5w
dXRBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3Zv
aWQgSW5zcGVjdG9ySW5wdXRBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNw
ZWN0b3JJbnB1dEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRo
aXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
cHV0QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50
LmgKaW5kZXggYWNiYTI5OS4uNGUwNjJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvcklucHV0QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5wdXRBZ2VudC5oCkBAIC0zMyw4ICszMyw4IEBACiAKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCi0KKyNpbmNsdWRl
ICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJB
Z2VudEJhc2UuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDQsNyAr
NDQsNyBAQCBjbGFzcyBQYWdlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xh
c3MgSW5zcGVjdG9ySW5wdXRBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1Ymxp
YyBJbnNwZWN0b3JJbnB1dEJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0
b3JJbnB1dEFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rv
cklucHV0QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShJbnNwZWN0b3JJbnB1dEFnZW50KTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJ
bnNwZWN0b3JJbnB1dEFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cywgUGFnZSogcGFnZSkKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogCiAgICAg
fkluc3BlY3RvcklucHV0QWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVj
dG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgLy8g
TWV0aG9kcyBjYWxsZWQgZnJvbSB0aGUgZnJvbnRlbmQgZm9yIHNpbXVsYXRpbmcgaW5wdXQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uY3BwCmluZGV4IGM0YzUxY2IuLjExN2RiMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC04Myw2ICs4Myw4
IEBACiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgcmVxdWVzdEFuaW1hdGlvbkZyYW1lRXZl
bnROYW1lID0gInJlcXVlc3RBbmltYXRpb25GcmFtZSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggYmQ1Yzk1Mi4uMzNi
NmJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaApAQCAtNDUsNiArNDUsMTAgQEAKICNpbmNsdWRlICJXZWJTb2NrZXRGcmFt
ZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAorbmFtZXNwYWNlIERlcHJlY2F0ZWQgewor
Y2xhc3MgU2NyaXB0T2JqZWN0OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENT
U1J1bGU7CkBAIC03Nyw3ICs4MSw2IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBT
Y3JpcHRBcmd1bWVudHM7CiBjbGFzcyBTY3JpcHRDYWxsU3RhY2s7CiBjbGFzcyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OwotY2xhc3MgU2NyaXB0T2JqZWN0OwogY2xhc3MgU2NyaXB0UHJvZmlsZTsK
IGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU2hhZG93Um9vdDsKQEAgLTI3Niw5ICsyNzks
OSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lRXJy
b3IoRG9jdW1lbnQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlKTsKICNlbmRpZgogCi0gICAgc3RhdGljIFNjcmlwdE9iamVjdCB3cmFwQ2FudmFz
MkRSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKERvY3VtZW50KiwgY29uc3QgU2Ny
aXB0T2JqZWN0Jik7CisgICAgc3RhdGljIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCB3cmFwQ2Fu
dmFzMkRSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKERvY3VtZW50KiwgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0Jik7CiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIHN0YXRp
YyBTY3JpcHRPYmplY3Qgd3JhcFdlYkdMUmVuZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlv
bihEb2N1bWVudCosIGNvbnN0IFNjcmlwdE9iamVjdCYpOworICAgIHN0YXRpYyBEZXByZWNhdGVk
OjpTY3JpcHRPYmplY3Qgd3JhcFdlYkdMUmVuZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlv
bihEb2N1bWVudCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYpOwogI2VuZGlmCiAK
ICAgICBzdGF0aWMgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKFBhZ2UqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCmluZGV4
IGQyN2Y5MDkuLmM0MTViZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcApAQCAtNDYsMTAgKzQ2LDEyIEBACiAjaW5jbHVk
ZSAiUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogCit1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEluc3Bl
Y3RvckxheWVyVHJlZUFnZW50OjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFT
Q0lJTGl0ZXJhbCgiTGF5ZXJUcmVlIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNw
ZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJMYXllclRyZWUiKSwgaW5zdHJ1bWVudGluZ0Fn
ZW50cykKIHsKIH0KIApAQCAtNTgsNyArNjAsNyBAQCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6
fkluc3BlY3RvckxheWVyVHJlZUFnZW50KCkKICAgICByZXNldCgpOwogfQogCi12b2lkIEluc3Bl
Y3RvckxheWVyVHJlZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2Vu
ZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3RvckxheWVyVHJlZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVs
KTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yTGF5ZXJUcmVlQmFja2VuZERp
c3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CkBAIC0xMDUsOSArMTA3
LDkgQEAgdm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6cHNldWRvRWxlbWVudERlc3Ryb3ll
ZChQc2V1ZG9FbGVtZW50KiBwc2V1ZG9FbGVtZW4KICAgICB1bmJpbmRQc2V1ZG9FbGVtZW50KHBz
ZXVkb0VsZW1lbnQpOwogfQogCi12b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpsYXllcnNG
b3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPFR5cGVC
dWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4+JiBsYXllcnMpCit2
b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpsYXllcnNGb3JOb2RlKEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFy
cmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+PiYgbGF5ZXJzKQog
ewotICAgIGxheWVycyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVl
OjpMYXllcj46OmNyZWF0ZSgpOworICAgIGxheWVycyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+OjpjcmVhdGUo
KTsKIAogICAgIE5vZGUqIG5vZGUgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckRP
TUFnZW50KCktPm5vZGVGb3JJZChub2RlSWQpOwogICAgIGlmICghbm9kZSkgewpAQCAtMTI0LDcg
KzEyNiw3IEBAIHZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmxheWVyc0Zvck5vZGUoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkCiAgICAgZ2F0aGVyTGF5ZXJzVXNpbmdS
ZW5kZXJPYmplY3RIaWVyYXJjaHkoZXJyb3JTdHJpbmcsIHJlbmRlcmVyLCBsYXllcnMpOwogfQog
Ci12b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9i
amVjdEhpZXJhcmNoeShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFJlbmRlck9iamVjdCogcmVu
ZGVyZXIsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6
TGF5ZXI+PiYgbGF5ZXJzKQordm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6Z2F0aGVyTGF5
ZXJzVXNpbmdSZW5kZXJPYmplY3RIaWVyYXJjaHkoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4+JiBsYXllcnMpCiB7
CiAgICAgaWYgKHJlbmRlcmVyLT5oYXNMYXllcigpKSB7CiAgICAgICAgIGdhdGhlckxheWVyc1Vz
aW5nUmVuZGVyTGF5ZXJIaWVyYXJjaHkoZXJyb3JTdHJpbmcsIHRvUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdChyZW5kZXJlciktPmxheWVyKCksIGxheWVycyk7CkBAIC0xMzUsNyArMTM3LDcgQEAgdm9p
ZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6Z2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJPYmplY3RI
aWVyYXJjaHkoRXJyb3JTdHJpbmcKICAgICAgICAgZ2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJPYmpl
Y3RIaWVyYXJjaHkoZXJyb3JTdHJpbmcsIHJlbmRlcmVyLCBsYXllcnMpOwogfQogCi12b2lkIElu
c3BlY3RvckxheWVyVHJlZUFnZW50OjpnYXRoZXJMYXllcnNVc2luZ1JlbmRlckxheWVySGllcmFy
Y2h5KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVyLCBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPj4m
IGxheWVycykKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmdhdGhlckxheWVyc1VzaW5n
UmVuZGVyTGF5ZXJIaWVyYXJjaHkoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBSZW5kZXJMYXll
ciogcmVuZGVyTGF5ZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPj4mIGxheWVycykKIHsKICAgICBp
ZiAocmVuZGVyTGF5ZXItPmlzQ29tcG9zaXRlZCgpKQogICAgICAgICBsYXllcnMtPmFkZEl0ZW0o
YnVpbGRPYmplY3RGb3JMYXllcihlcnJvclN0cmluZywgcmVuZGVyTGF5ZXIpKTsKQEAgLTE0NCw3
ICsxNDYsNyBAQCB2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpnYXRoZXJMYXllcnNVc2lu
Z1JlbmRlckxheWVySGllcmFyY2h5KEVycm9yU3RyaW5nKgogICAgICAgICBnYXRoZXJMYXllcnNV
c2luZ1JlbmRlckxheWVySGllcmFyY2h5KGVycm9yU3RyaW5nLCByZW5kZXJMYXllciwgbGF5ZXJz
KTsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4gSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTGF5ZXIoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+IEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojpi
dWlsZE9iamVjdEZvckxheWVyKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgUmVuZGVyTGF5ZXIq
IHJlbmRlckxheWVyKQogewogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSAmcmVuZGVyTGF5
ZXItPnJlbmRlcmVyKCk7CiAgICAgUmVuZGVyTGF5ZXJCYWNraW5nKiBiYWNraW5nID0gcmVuZGVy
TGF5ZXItPmJhY2tpbmcoKTsKQEAgLTE2NCw3ICsxNjYsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpMYXllclRyZWU6OkxheWVyPiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6YnVpbGRPYmpl
Y3RGbwogICAgICAgICBub2RlID0gcmVuZGVyZXItPnBhcmVudCgpLT5lbGVtZW50KCk7CiAKICAg
ICAvLyBCYXNpYyBzZXQgb2YgcHJvcGVydGllcy4KLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6Okxh
eWVyVHJlZTo6TGF5ZXI+IGxheWVyT2JqZWN0ID0gVHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5
ZXI6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJl
ZTo6TGF5ZXI+IGxheWVyT2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TGF5ZXJUcmVl
OjpMYXllcjo6Y3JlYXRlKCkKICAgICAgICAgLnNldExheWVySWQoYmluZChyZW5kZXJMYXllcikp
CiAgICAgICAgIC5zZXROb2RlSWQoaWRGb3JOb2RlKGVycm9yU3RyaW5nLCBub2RlKSkKICAgICAg
ICAgLnNldEJvdW5kcyhidWlsZE9iamVjdEZvckludFJlY3QocmVuZGVyZXItPmFic29sdXRlQm91
bmRpbmdCb3hSZWN0KCkpKQpAQCAtMjE2LDE2ICsyMTgsMTYgQEAgaW50IEluc3BlY3RvckxheWVy
VHJlZUFnZW50OjppZEZvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBOb2RlKiBub2Rl
KQogICAgIHJldHVybiBub2RlSWQ7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkxheWVy
VHJlZTo6SW50UmVjdD4gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9ySW50
UmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpMYXllclRyZWU6OkludFJlY3Q+IEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpidWlsZE9i
amVjdEZvckludFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICByZXR1cm4gVHlwZUJ1
aWxkZXI6OkxheWVyVHJlZTo6SW50UmVjdDo6Y3JlYXRlKCkKKyAgICByZXR1cm4gSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpJbnRSZWN0OjpjcmVhdGUoKQogICAgICAgICAuc2V0
WChyZWN0LngoKSkKICAgICAgICAgLnNldFkocmVjdC55KCkpCiAgICAgICAgIC5zZXRXaWR0aChy
ZWN0LndpZHRoKCkpCiAgICAgICAgIC5zZXRIZWlnaHQocmVjdC5oZWlnaHQoKSkucmVsZWFzZSgp
OwogfQogCi12b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpyZWFzb25zRm9yQ29tcG9zaXRp
bmdMYXllcihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgbGF5ZXJJZCwg
UmVmUHRyPFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkNvbXBvc2l0aW5nUmVhc29ucz4mIGNvbXBv
c2l0aW5nUmVhc29ucykKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OnJlYXNvbnNGb3JD
b21wb3NpdGluZ0xheWVyKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBs
YXllcklkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpDb21wb3Np
dGluZ1JlYXNvbnM+JiBjb21wb3NpdGluZ1JlYXNvbnMpCiB7CiAgICAgY29uc3QgUmVuZGVyTGF5
ZXIqIHJlbmRlckxheWVyID0gbV9pZFRvTGF5ZXIuZ2V0KGxheWVySWQpOwogCkBAIC0yMzUsNyAr
MjM3LDcgQEAgdm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6cmVhc29uc0ZvckNvbXBvc2l0
aW5nTGF5ZXIoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW4KICAgICB9CiAKICAgICBDb21wb3NpdGlu
Z1JlYXNvbnMgcmVhc29uc0JpdG1hc2sgPSByZW5kZXJMYXllci0+Y29tcG9zaXRvcigpLnJlYXNv
bnNGb3JDb21wb3NpdGluZygqcmVuZGVyTGF5ZXIpOwotICAgIGNvbXBvc2l0aW5nUmVhc29ucyA9
IFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkNvbXBvc2l0aW5nUmVhc29uczo6Y3JlYXRlKCk7Cisg
ICAgY29tcG9zaXRpbmdSZWFzb25zID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TGF5ZXJUcmVl
OjpDb21wb3NpdGluZ1JlYXNvbnM6OmNyZWF0ZSgpOwogCiAgICAgaWYgKHJlYXNvbnNCaXRtYXNr
ICYgQ29tcG9zaXRpbmdSZWFzb24zRFRyYW5zZm9ybSkKICAgICAgICAgY29tcG9zaXRpbmdSZWFz
b25zLT5zZXRUcmFuc2Zvcm0zRCh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKaW5kZXggYWY1NWE5Mi4uMTc0NTYwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50
LmgKQEAgLTMxLDkgKzMxLDEwIEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVk
ZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKLSNpbmNsdWRlICJJbnNw
ZWN0b3JUeXBlQnVpbGRlci5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgor
I2luY2x1ZGUgIkluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIgogI2luY2x1ZGUgIlJlbmRlckxh
eWVyLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgpAQCAtNDYsNyArNDcsNyBAQCBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogCiB0
eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yTGF5ZXJUcmVl
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckxheWVyVHJlZUFnZW50
IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3RvckxheWVyVHJlZUJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzKQogICAgIHsKQEAgLTU0LDcgKzU1LDcgQEAgcHVibGljOgogICAgIH0K
ICAgICB+SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwog
ICAgIHZvaWQgcmVzZXQoKTsKIApAQCAtNjUsOCArNjYsOCBAQCBwdWJsaWM6CiAgICAgLy8gQ2Fs
bGVkIGZyb20gdGhlIGZyb250LWVuZC4KICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3Ry
aW5nKik7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKLSAgICB2aXJ0
dWFsIHZvaWQgbGF5ZXJzRm9yTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIFJlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+PiYpOwotICAg
IHZpcnR1YWwgdm9pZCByZWFzb25zRm9yQ29tcG9zaXRpbmdMYXllcihFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyYgbGF5ZXJJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkNvbXBv
c2l0aW5nUmVhc29ucz4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5ZXJzRm9yTm9kZShFcnJvclN0
cmluZyosIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPj4mKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVhc29uc0ZvckNvbXBvc2l0aW5nTGF5ZXIoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIGxheWVySWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkNv
bXBvc2l0aW5nUmVhc29ucz4mKTsKIAogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JMYXllclRyZWVB
Z2VudChJbnN0cnVtZW50aW5nQWdlbnRzKik7CkBAIC03NSwxMSArNzYsMTEgQEAgcHJpdmF0ZToK
ICAgICBTdHJpbmcgYmluZChjb25zdCBSZW5kZXJMYXllciopOwogICAgIHZvaWQgdW5iaW5kKGNv
bnN0IFJlbmRlckxheWVyKik7CiAKLSAgICB2b2lkIGdhdGhlckxheWVyc1VzaW5nUmVuZGVyT2Jq
ZWN0SGllcmFyY2h5KEVycm9yU3RyaW5nKiwgUmVuZGVyT2JqZWN0KiwgUmVmUHRyPFR5cGVCdWls
ZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4+Jik7Ci0gICAgdm9pZCBn
YXRoZXJMYXllcnNVc2luZ1JlbmRlckxheWVySGllcmFyY2h5KEVycm9yU3RyaW5nKiwgUmVuZGVy
TGF5ZXIqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpMYXllclRyZWU6
OkxheWVyPj4mKTsKKyAgICB2b2lkIGdhdGhlckxheWVyc1VzaW5nUmVuZGVyT2JqZWN0SGllcmFy
Y2h5KEVycm9yU3RyaW5nKiwgUmVuZGVyT2JqZWN0KiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+PiYp
OworICAgIHZvaWQgZ2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJMYXllckhpZXJhcmNoeShFcnJvclN0
cmluZyosIFJlbmRlckxheWVyKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+PiYpOwogCi0gICAgUGFz
c1JlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4gYnVpbGRPYmplY3RGb3JMYXll
cihFcnJvclN0cmluZyosIFJlbmRlckxheWVyKik7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRl
cjo6TGF5ZXJUcmVlOjpJbnRSZWN0PiBidWlsZE9iamVjdEZvckludFJlY3QoY29uc3QgSW50UmVj
dCYpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpM
YXllcj4gYnVpbGRPYmplY3RGb3JMYXllcihFcnJvclN0cmluZyosIFJlbmRlckxheWVyKik7Cisg
ICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkludFJlY3Q+
IGJ1aWxkT2JqZWN0Rm9ySW50UmVjdChjb25zdCBJbnRSZWN0Jik7CiAKICAgICBpbnQgaWRGb3JO
b2RlKEVycm9yU3RyaW5nKiwgTm9kZSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAppbmRleCA3NThiN2I0Li4zMmQwMWZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAK
QEAgLTQxLDEzICs0MSwxMyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKLSNp
bmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRz
LmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVk
ZSAiTm9kZVRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGVyLmgiCiAjaW5jbHVk
ZSAiU3R5bGVkRWxlbWVudC5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMu
aD4KICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtNTgsOCArNTgsMTAgQEAKICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogLy8gVXNlIGEgdHlwZSBhbGlhcyBpbnN0
ZWFkIG9mICd1c2luZycgaGVyZSB3aGljaCB3b3VsZCBjYXVzZSBhIGNvbmZsaWN0IG9uIE1hYy4K
LXR5cGVkZWYgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6Ok1lbW9yeTo6TWVtb3J5QmxvY2sgSW5zcGVj
dG9yTWVtb3J5QmxvY2s7Ci10eXBlZGVmIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNw
ZWN0b3JNZW1vcnlCbG9jaz4gSW5zcGVjdG9yTWVtb3J5QmxvY2tzOwordHlwZWRlZiBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpNZW1vcnk6Ok1lbW9yeUJsb2NrIEluc3BlY3Rvck1lbW9yeUJsb2Nr
OwordHlwZWRlZiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlC
bG9jaz4gSW5zcGVjdG9yTWVtb3J5QmxvY2tzOworCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY3LDcgKzY5LDcgQEAgSW5zcGVjdG9yTWVt
b3J5QWdlbnQ6On5JbnNwZWN0b3JNZW1vcnlBZ2VudCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
TWVtb3J5QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIp
Cit2b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9
IEluc3BlY3Rvck1lbW9yeUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNo
ZXIsIHRoaXMpOwogfQpAQCAtODUsNyArODcsNyBAQCB2b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50
OjpnZXRET01Db3VudGVycyhFcnJvclN0cmluZyosIGludCogZG9jdW1lbnRzLCBpbnQqIG5vZAog
fQogCiBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6SW5zcGVjdG9yTWVtb3J5QWdlbnQoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICA6IEluc3BlY3RvckJhc2VBZ2Vu
dChBU0NJSUxpdGVyYWwoIk1lbW9yeSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5z
cGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiTWVtb3J5IiksIGluc3RydW1lbnRpbmdBZ2Vu
dHMpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JNZW1vcnlBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9y
eUFnZW50LmgKaW5kZXggZTE5MTBkZS4uOGYxNTY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKQEAgLTMzLDggKzMzLDggQEAKIAogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKLSNp
bmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC00NSwx
MyArNDUsMTMgQEAgY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIAogdHlwZWRlZiBTdHJpbmcg
RXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3Rvck1lbW9yeUFnZW50IDogcHVibGljIEluc3Bl
Y3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3Rvck1lbW9yeUJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlciB7CitjbGFzcyBJbnNwZWN0b3JNZW1vcnlBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2Vu
dEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JNZW1vcnlCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3Rvck1lbW9yeUFnZW50KTsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JNZW1vcnlBZ2VudD4gY3JlYXRlKEluc3Ry
dW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpOwogICAgIHZpcnR1YWwgfkluc3Bl
Y3Rvck1lbW9yeUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwg
dm9pZCBnZXRET01Db3VudGVycyhFcnJvclN0cmluZyosIGludCogZG9jdW1lbnRzLCBpbnQqIG5v
ZGVzLCBpbnQqIGpzRXZlbnRMaXN0ZW5lcnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvck92ZXJsYXkuY3BwCmluZGV4IDI4Njg0MWYuLmE4NWQ4YzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKQEAgLTM5LDcgKzM5LDYg
QEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDbGll
bnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5UGFnZS5oIgotI2luY2x1ZGUgIkluc3Bl
Y3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk5vZGUuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCkBAIC01NSwxMSArNTQsMTQgQEAKICNpbmNsdWRlICJSZW5kZXJW
aWV3LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdFNv
dXJjZUNvZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1Njcmlw
dFZhbHVlLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3Rv
cjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmgKaW5kZXggZWY5OTIzMC4uYjUyOTIyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oCkBAIC0zMiwyMCAr
MzIsMjIgQEAKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgogI2lu
Y2x1ZGUgIkxheW91dFJlY3QuaCIKLQogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFj
ZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworY2xhc3MgSW5zcGVjdG9yVmFs
dWU7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CiBjbGFzcyBHcmFw
aGljc0NvbnRleHQ7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7Ci1jbGFzcyBJbnNwZWN0b3JWYWx1
ZTsKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBOb2RlOwog
Y2xhc3MgUGFnZTsKQEAgLTEyNCw3ICsxMjYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZFNl
dFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVkKTsKIAotICAgIFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZSgpIGNvbnN0OworICAgIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9ySGlnaGxp
Z2h0ZWROb2RlKCkgY29uc3Q7CiAKICAgICB2b2lkIGZyZWVQYWdlKCk7CiBwcml2YXRlOgpAQCAt
MTM3LDcgKzEzOSw3IEBAIHByaXZhdGU6CiAgICAgUGFnZSogb3ZlcmxheVBhZ2UoKTsKICAgICB2
b2lkIHJlc2V0KGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgSW50U2l6ZSYgZnJh
bWVWaWV3RnVsbFNpemUpOwogICAgIHZvaWQgZXZhbHVhdGVJbk92ZXJsYXkoY29uc3QgU3RyaW5n
JiBtZXRob2QsIGNvbnN0IFN0cmluZyYgYXJndW1lbnQpOwotICAgIHZvaWQgZXZhbHVhdGVJbk92
ZXJsYXkoY29uc3QgU3RyaW5nJiBtZXRob2QsIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGFy
Z3VtZW50KTsKKyAgICB2b2lkIGV2YWx1YXRlSW5PdmVybGF5KGNvbnN0IFN0cmluZyYgbWV0aG9k
LCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IGFyZ3VtZW50KTsKIAogICAg
IFBhZ2UqIG1fcGFnZTsKICAgICBJbnNwZWN0b3JDbGllbnQqIG1fY2xpZW50OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCBjMGJlZDll
Li5mNGRiZmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcApAQCAtNjYsNyArNjYsNiBAQAogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5k
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yT3ZlcmxheS5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUg
Ikluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRl
ICJNZW1vcnlDYWNoZS5oIgpAQCAtNzQsMTIgKzczLDEzIEBACiAjaW5jbHVkZSAiUmVndWxhckV4
cHJlc3Npb24uaCIKICNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlNjcmlw
dENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRlICJTZWN1
cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29k
aW5nLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlVzZXJH
ZXN0dXJlSW5kaWNhdG9yLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KKyNp
bmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJl
bnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgpAQCAtOTAsNiArOTAsOCBAQAogI2luY2x1ZGUgIkxlZ2FjeVdlYkFyY2hpdmUuaCIK
ICNlbmRpZgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0YXRpYyBib29sIGRlY29kZUJ1ZmZlcihjb25zdCBjaGFyKiBidWZmZXIsIHVuc2ln
bmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgU3RyaW5nKiByZXN1bHQp
CkBAIC0yOTcsMjcgKzI5OSwyNyBAQCBDYWNoZWRSZXNvdXJjZSogSW5zcGVjdG9yUGFnZUFnZW50
OjpjYWNoZWRSZXNvdXJjZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQogICAgIHJldHVy
biBjYWNoZWRSZXNvdXJjZTsKIH0KIAotVHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6
RW51bSBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlVHlwZUpzb24oSW5zcGVjdG9yUGFnZUFn
ZW50OjpSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKQorSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
UGFnZTo6UmVzb3VyY2VUeXBlOjpFbnVtIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VUeXBl
SnNvbihJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUpCiB7CiAg
ICAgc3dpdGNoIChyZXNvdXJjZVR5cGUpIHsKICAgICBjYXNlIERvY3VtZW50UmVzb3VyY2U6Ci0g
ICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpEb2N1bWVudDsK
KyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlw
ZTo6RG9jdW1lbnQ7CiAgICAgY2FzZSBJbWFnZVJlc291cmNlOgotICAgICAgICByZXR1cm4gVHlw
ZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6SW1hZ2U7CisgICAgICAgIHJldHVybiBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkltYWdlOwogICAgIGNhc2Ug
Rm9udFJlc291cmNlOgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNl
VHlwZTo6Rm9udDsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6
OlJlc291cmNlVHlwZTo6Rm9udDsKICAgICBjYXNlIFN0eWxlc2hlZXRSZXNvdXJjZToKLSAgICAg
ICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OlN0eWxlc2hlZXQ7Cisg
ICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6
OlN0eWxlc2hlZXQ7CiAgICAgY2FzZSBTY3JpcHRSZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIFR5
cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OlNjcmlwdDsKKyAgICAgICAgcmV0dXJuIElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6U2NyaXB0OwogICAgIGNh
c2UgWEhSUmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3Vy
Y2VUeXBlOjpYSFI7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdl
OjpSZXNvdXJjZVR5cGU6OlhIUjsKICAgICBjYXNlIFdlYlNvY2tldFJlc291cmNlOgotICAgICAg
ICByZXR1cm4gVHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6V2ViU29ja2V0OworICAg
ICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpX
ZWJTb2NrZXQ7CiAgICAgY2FzZSBPdGhlclJlc291cmNlOgotICAgICAgICByZXR1cm4gVHlwZUJ1
aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6T3RoZXI7CisgICAgICAgIHJldHVybiBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6Ok90aGVyOwogICAgIH0KLSAgICBy
ZXR1cm4gVHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6T3RoZXI7CisgICAgcmV0dXJu
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6T3RoZXI7CiB9CiAK
IEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2Fj
aGVkUmVzb3VyY2VUeXBlKGNvbnN0IENhY2hlZFJlc291cmNlJiBjYWNoZWRSZXNvdXJjZSkKQEAg
LTM0NSwxMyArMzQ3LDEzIEBAIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2VUeXBlKGNvbnN0IENhCiAgICAgcmV0dXJuIElu
c3BlY3RvclBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJjZTsKIH0KIAotVHlwZUJ1aWxkZXI6OlBhZ2U6
OlJlc291cmNlVHlwZTo6RW51bSBJbnNwZWN0b3JQYWdlQWdlbnQ6OmNhY2hlZFJlc291cmNlVHlw
ZUpzb24oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIGNhY2hlZFJlc291cmNlKQorSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpFbnVtIEluc3BlY3RvclBhZ2VBZ2VudDo6
Y2FjaGVkUmVzb3VyY2VUeXBlSnNvbihjb25zdCBDYWNoZWRSZXNvdXJjZSYgY2FjaGVkUmVzb3Vy
Y2UpCiB7CiAgICAgcmV0dXJuIHJlc291cmNlVHlwZUpzb24oY2FjaGVkUmVzb3VyY2VUeXBlKGNh
Y2hlZFJlc291cmNlKSk7CiB9CiAKIEluc3BlY3RvclBhZ2VBZ2VudDo6SW5zcGVjdG9yUGFnZUFn
ZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIFBhZ2UqIHBhZ2Us
IEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBp
bmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3BlY3RvckNsaWVudCogY2xpZW50LCBJbnNwZWN0b3JP
dmVybGF5KiBvdmVybGF5KQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgi
UGFnZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFT
Q0lJTGl0ZXJhbCgiUGFnZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9wYWdlKHBh
Z2UpCiAgICAgLCBtX2luc3BlY3RvckFnZW50KGluc3BlY3RvckFnZW50KQogICAgICwgbV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQpAQCAtMzcxLDcgKzM3Myw3
IEBAIEluc3BlY3RvclBhZ2VBZ2VudDo6SW5zcGVjdG9yUGFnZUFnZW50KEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFn
ZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlz
cGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5l
bCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAg
IG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JQYWdlRnJv
bnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNo
ZXIgPSBJbnNwZWN0b3JQYWdlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcyk7CkBAIC00NjAsOSArNDYyLDkgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6
Om5hdmlnYXRlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgZnJhbWUubG9h
ZGVyKCkuY2hhbmdlTG9jYXRpb24oZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwg
ZnJhbWUuZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsKSwgIiIsIGZhbHNlLCBmYWxzZSk7CiB9
CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQYWdlOjpDb29raWU+IGJ1aWxkT2Jq
ZWN0Rm9yQ29va2llKGNvbnN0IENvb2tpZSYgY29va2llKQorc3RhdGljIFBhc3NSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6Q29va2llPiBidWlsZE9iamVjdEZvckNvb2tpZShj
b25zdCBDb29raWUmIGNvb2tpZSkKIHsKLSAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlBhZ2U6OkNv
b2tpZTo6Y3JlYXRlKCkKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6
Q29va2llOjpjcmVhdGUoKQogICAgICAgICAuc2V0TmFtZShjb29raWUubmFtZSkKICAgICAgICAg
LnNldFZhbHVlKGNvb2tpZS52YWx1ZSkKICAgICAgICAgLnNldERvbWFpbihjb29raWUuZG9tYWlu
KQpAQCAtNDc1LDkgKzQ3Nyw5IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQYWdl
OjpDb29raWU+IGJ1aWxkT2JqZWN0Rm9yQ29va2llKGNvbnN0IENvb2tpZSYKICAgICAgICAgLnJl
bGVhc2UoKTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVC
dWlsZGVyOjpQYWdlOjpDb29raWU+PiBidWlsZEFycmF5Rm9yQ29va2llcyhMaXN0SGFzaFNldDxD
b29raWU+JiBjb29raWVzTGlzdCkKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkNvb2tpZT4+IGJ1aWxk
QXJyYXlGb3JDb29raWVzKExpc3RIYXNoU2V0PENvb2tpZT4mIGNvb2tpZXNMaXN0KQogewotICAg
IFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OkNvb2tpZT4+IGNv
b2tpZXMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OkNvb2tpZT46OmNy
ZWF0ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpDb29raWU+PiBjb29raWVzID0gSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6Q29va2llPjo6Y3Jl
YXRlKCk7CiAKICAgICBMaXN0SGFzaFNldDxDb29raWU+OjppdGVyYXRvciBlbmQgPSBjb29raWVz
TGlzdC5lbmQoKTsKICAgICBMaXN0SGFzaFNldDxDb29raWU+OjppdGVyYXRvciBpdCA9IGNvb2tp
ZXNMaXN0LmJlZ2luKCk7CkBAIC01MjgsNyArNTMwLDcgQEAgc3RhdGljIFZlY3RvcjxVUkw+IGFs
bFJlc291cmNlc1VSTHNGb3JGcmFtZShGcmFtZSogZnJhbWUpCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMoRXJyb3JTdHJpbmcqLCBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpDb29raWU+PiYgY29v
a2llcykKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpnZXRDb29raWVzKEVycm9yU3RyaW5nKiwg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OlBhZ2U6OkNvb2tpZT4+JiBjb29raWVzKQogewogICAgIC8vIElmIHdlIGNhbiBnZXQgcmF3
IGNvb2tpZXMuCiAgICAgTGlzdEhhc2hTZXQ8Q29va2llPiByYXdDb29raWVzTGlzdDsKQEAgLTU2
Nyw3ICs1NjksNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0Q29va2llcyhFcnJvclN0
cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZQogICAgIGlmIChyYXdDb29raWVz
SW1wbGVtZW50ZWQpCiAgICAgICAgIGNvb2tpZXMgPSBidWlsZEFycmF5Rm9yQ29va2llcyhyYXdD
b29raWVzTGlzdCk7CiAgICAgZWxzZQotICAgICAgICBjb29raWVzID0gVHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpDb29raWU+OjpjcmVhdGUoKTsKKyAgICAgICAgY29va2ll
cyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpDb29r
aWU+OjpjcmVhdGUoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRlbGV0ZUNvb2tp
ZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSwgY29uc3QgU3RyaW5nJiB1
cmwpCkBAIC01NzcsNyArNTc5LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRlbGV0ZUNv
b2tpZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSwgY28KICAgICAgICAg
V2ViQ29yZTo6ZGVsZXRlQ29va2llKGZyYW1lLT5kb2N1bWVudCgpLCBwYXJzZWRVUkwsIGNvb2tp
ZU5hbWUpOwogfQogCi12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0UmVzb3VyY2VUcmVlKEVy
cm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT4m
IG9iamVjdCkKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpnZXRSZXNvdXJjZVRyZWUoRXJyb3JT
dHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJj
ZVRyZWU+JiBvYmplY3QpCiB7CiAgICAgb2JqZWN0ID0gYnVpbGRPYmplY3RGb3JGcmFtZVRyZWUo
Jm1fcGFnZS0+bWFpbkZyYW1lKCkpOwogfQpAQCAtNjA0LDkgKzYwNiw5IEBAIHN0YXRpYyBib29s
IHRleHRDb250ZW50Rm9yQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291
cmNlLCBTdHJpbmcqCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEluc3BlY3RvclBhZ2VB
Z2VudDo6c2VhcmNoSW5SZXNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJ
ZCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIGNv
bnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJc1Jl
Z2V4LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hN
YXRjaD4+JiByZXN1bHRzKQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3Vy
Y2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5z
aXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJj
aE1hdGNoPj4mIHJlc3VsdHMpCiB7Ci0gICAgcmVzdWx0cyA9IFR5cGVCdWlsZGVyOjpBcnJheTxU
eXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0Y2g+OjpjcmVhdGUoKTsKKyAgICByZXN1bHRzID0g
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFn
ZTo6U2VhcmNoTWF0Y2g+OjpjcmVhdGUoKTsKIAogICAgIGJvb2wgaXNSZWdleCA9IG9wdGlvbmFs
SXNSZWdleCA/ICpvcHRpb25hbElzUmVnZXggOiBmYWxzZTsKICAgICBib29sIGNhc2VTZW5zaXRp
dmUgPSBvcHRpb25hbENhc2VTZW5zaXRpdmUgPyAqb3B0aW9uYWxDYXNlU2Vuc2l0aXZlIDogZmFs
c2U7CkBAIC02MzgsMTggKzY0MCwxOCBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNo
SW5SZXNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgYwogICAgIHJl
c3VsdHMgPSBDb250ZW50U2VhcmNoVXRpbHM6OnNlYXJjaEluVGV4dEJ5TGluZXMoY29udGVudCwg
cXVlcnksIGNhc2VTZW5zaXRpdmUsIGlzUmVnZXgpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxU
eXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoUmVzdWx0PiBidWlsZE9iamVjdEZvclNlYXJjaFJlc3Vs
dChjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbWF0Y2hlc0Nv
dW50KQorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6U2Vh
cmNoUmVzdWx0PiBidWlsZE9iamVjdEZvclNlYXJjaFJlc3VsdChjb25zdCBTdHJpbmcmIGZyYW1l
SWQsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbWF0Y2hlc0NvdW50KQogewotICAgIHJldHVybiBU
eXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoUmVzdWx0OjpjcmVhdGUoKQorICAgIHJldHVybiBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hSZXN1bHQ6OmNyZWF0ZSgpCiAgICAgICAg
IC5zZXRVcmwodXJsKQogICAgICAgICAuc2V0RnJhbWVJZChmcmFtZUlkKQogICAgICAgICAuc2V0
TWF0Y2hlc0NvdW50KG1hdGNoZXNDb3VudCkKICAgICAgICAgLnJlbGVhc2UoKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3VyY2VzKEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUs
IGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpB
cnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mIHJlc3VsdHMpCit2b2lkIElu
c3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIHRleHQsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29u
c3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4m
IHJlc3VsdHMpCiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6
UGFnZTo6U2VhcmNoUmVzdWx0Pj4gc2VhcmNoUmVzdWx0cyA9IFR5cGVCdWlsZGVyOjpBcnJheTxU
eXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoUmVzdWx0Pjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6
OlNlYXJjaFJlc3VsdD4+IHNlYXJjaFJlc3VsdHMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpB
cnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hSZXN1bHQ+OjpjcmVhdGUo
KTsKIAogICAgIGJvb2wgaXNSZWdleCA9IG9wdGlvbmFsSXNSZWdleCA/ICpvcHRpb25hbElzUmVn
ZXggOiBmYWxzZTsKICAgICBib29sIGNhc2VTZW5zaXRpdmUgPSBvcHRpb25hbENhc2VTZW5zaXRp
dmUgPyAqb3B0aW9uYWxDYXNlU2Vuc2l0aXZlIDogZmFsc2U7CkBAIC0xMDM1LDkgKzEwMzcsOSBA
QCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2NyaXB0c0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQp
CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnNjcmlwdHNFbmFibGVkKGlzRW5hYmxlZCk7CiB9
CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lPiBJbnNwZWN0b3JQYWdlQWdl
bnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWUoRnJhbWUqIGZyYW1lKQorUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZT4gSW5zcGVjdG9yUGFnZUFnZW50OjpidWlsZE9i
amVjdEZvckZyYW1lKEZyYW1lKiBmcmFtZSkKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlBh
Z2U6OkZyYW1lPiBmcmFtZU9iamVjdCA9IFR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZTo6Y3JlYXRl
KCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWU+IGZyYW1l
T2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWU6OmNyZWF0ZSgpCiAg
ICAgICAgIC5zZXRJZChmcmFtZUlkKGZyYW1lKSkKICAgICAgICAgLnNldExvYWRlcklkKGxvYWRl
cklkKGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKSkKICAgICAgICAgLnNldFVybChm
cmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkpCkBAIC0xMDU1LDExICsxMDU3LDExIEBA
IFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lPiBJbnNwZWN0b3JQYWdlQWdlbnQ6
OmJ1aWxkT2JqZWN0Rm9yRnJhbWUoRnJhCiAgICAgcmV0dXJuIGZyYW1lT2JqZWN0OwogfQogCi1Q
YXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT4gSW5zcGVjdG9y
UGFnZUFnZW50OjpidWlsZE9iamVjdEZvckZyYW1lVHJlZShGcmFtZSogZnJhbWUpCitQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKEZyYW1lKiBmcmFtZSkKIHsK
LSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lPiBmcmFtZU9iamVjdCA9IGJ1aWxk
T2JqZWN0Rm9yRnJhbWUoZnJhbWUpOwotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlw
ZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlOjpSZXNvdXJjZXM+PiBzdWJyZXNvdXJj
ZXMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VU
cmVlOjpSZXNvdXJjZXM+OjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6
OkZyYW1lUmVzb3VyY2VUcmVlPiByZXN1bHQgPSBUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNv
dXJjZVRyZWU6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBh
Z2U6OkZyYW1lPiBmcmFtZU9iamVjdCA9IGJ1aWxkT2JqZWN0Rm9yRnJhbWUoZnJhbWUpOworICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZTo6UmVzb3VyY2VzPj4gc3VicmVzb3VyY2VzID0g
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFn
ZTo6RnJhbWVSZXNvdXJjZVRyZWU6OlJlc291cmNlcz46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT4gcmVzdWx0ID0g
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU6OmNyZWF0ZSgp
CiAgICAgICAgICAuc2V0RnJhbWUoZnJhbWVPYmplY3QpCiAgICAgICAgICAuc2V0UmVzb3VyY2Vz
KHN1YnJlc291cmNlcyk7CiAKQEAgLTEwNjcsNyArMTA2OSw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1
aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxk
T2JqZWN0CiAgICAgZm9yIChWZWN0b3I8Q2FjaGVkUmVzb3VyY2UqPjo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBhbGxSZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gYWxsUmVzb3VyY2VzLmVuZCgpOyArK2l0
KSB7CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSA9ICppdDsKIAotICAg
ICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlOjpSZXNvdXJj
ZXM+IHJlc291cmNlT2JqZWN0ID0gVHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVl
OjpSZXNvdXJjZXM6OmNyZWF0ZSgpCisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZTo6UmVzb3VyY2VzPiByZXNvdXJjZU9iamVjdCA9
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlOjpSZXNvdXJj
ZXM6OmNyZWF0ZSgpCiAgICAgICAgICAgICAuc2V0VXJsKGNhY2hlZFJlc291cmNlLT51cmwoKSkK
ICAgICAgICAgICAgIC5zZXRUeXBlKGNhY2hlZFJlc291cmNlVHlwZUpzb24oKmNhY2hlZFJlc291
cmNlKSkKICAgICAgICAgICAgIC5zZXRNaW1lVHlwZShjYWNoZWRSZXNvdXJjZS0+cmVzcG9uc2Uo
KS5taW1lVHlwZSgpKTsKQEAgLTEwODEsMTAgKzEwODMsMTAgQEAgUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+IEluc3BlY3RvclBhZ2VBZ2VudDo6YnVpbGRP
YmplY3QKICAgICAgICAgc3VicmVzb3VyY2VzLT5hZGRJdGVtKHJlc291cmNlT2JqZWN0KTsKICAg
ICB9CiAKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpG
cmFtZVJlc291cmNlVHJlZT4+IGNoaWxkcmVuQXJyYXk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVz
b3VyY2VUcmVlPj4gY2hpbGRyZW5BcnJheTsKICAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IGZyYW1l
LT50cmVlKCkuZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLm5leHRT
aWJsaW5nKCkpIHsKICAgICAgICAgaWYgKCFjaGlsZHJlbkFycmF5KSB7Ci0gICAgICAgICAgICBj
aGlsZHJlbkFycmF5ID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpGcmFt
ZVJlc291cmNlVHJlZT46OmNyZWF0ZSgpOworICAgICAgICAgICAgY2hpbGRyZW5BcnJheSA9IElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6
OkZyYW1lUmVzb3VyY2VUcmVlPjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICByZXN1bHQtPnNldENo
aWxkRnJhbWVzKGNoaWxkcmVuQXJyYXkpOwogICAgICAgICB9CiAgICAgICAgIGNoaWxkcmVuQXJy
YXktPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JGcmFtZVRyZWUoY2hpbGQpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCAxYjI2YjZlLi41ZDY1
Njk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFn
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5o
CkBAIC0zNSw4ICszNSw5IEBACiAKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkRhdGEuaCIK
ICNpbmNsdWRlICJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFz
ZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJh
c2UuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC00NCw2ICs0NSwxMSBAQAogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIElu
c3BlY3RvciB7CitjbGFzcyBJbnNwZWN0b3JBcnJheTsKK2NsYXNzIEluc3BlY3Rvck9iamVjdDsK
K30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKQEAgLTU0
LDkgKzYwLDcgQEAgY2xhc3MgRnJvbnRlbmQ7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFz
cyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBJbnNwZWN0b3JBZ2VudDsKLWNsYXNzIElu
c3BlY3RvckFycmF5OwogY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwotY2xhc3MgSW5zcGVjdG9yT2Jq
ZWN0OwogY2xhc3MgSW5zcGVjdG9yT3ZlcmxheTsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7
CiBjbGFzcyBVUkw7CkBAIC02Nyw3ICs3MSw3IEBAIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7
CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JQYWdlQWdl
bnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yUGFnZUJhY2tl
bmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQgOiBwdWJsaWMg
SW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yUGFnZUJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yUGFnZUFnZW50KTsK
IHB1YmxpYzoKICAgICBlbnVtIFJlc291cmNlVHlwZSB7CkBAIC05MCw5ICs5NCw5IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhKEZy
YW1lKiwgY29uc3QgVVJMJiwgU3RyaW5nKiB0ZXh0RW5jb2RpbmdOYW1lKTsKICAgICBzdGF0aWMg
Q2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKEZyYW1lKiwgY29uc3QgVVJMJik7Ci0gICAg
c3RhdGljIFR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkVudW0gcmVzb3VyY2VUeXBl
SnNvbihSZXNvdXJjZVR5cGUpOworICAgIHN0YXRpYyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQ
YWdlOjpSZXNvdXJjZVR5cGU6OkVudW0gcmVzb3VyY2VUeXBlSnNvbihSZXNvdXJjZVR5cGUpOwog
ICAgIHN0YXRpYyBSZXNvdXJjZVR5cGUgY2FjaGVkUmVzb3VyY2VUeXBlKGNvbnN0IENhY2hlZFJl
c291cmNlJik7Ci0gICAgc3RhdGljIFR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkVu
dW0gY2FjaGVkUmVzb3VyY2VUeXBlSnNvbihjb25zdCBDYWNoZWRSZXNvdXJjZSYpOworICAgIHN0
YXRpYyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkVudW0gY2Fj
aGVkUmVzb3VyY2VUeXBlSnNvbihjb25zdCBDYWNoZWRSZXNvdXJjZSYpOwogCiAgICAgLy8gUGFn
ZSBBUEkgZm9yIEluc3BlY3RvckZyb250ZW5kCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJv
clN0cmluZyopOwpAQCAtMTAxLDEyICsxMDUsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVTY3JpcHRUb0V2YWx1YXRlT25Mb2FkKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVsb2FkKEVycm9yU3RyaW5nKiwgY29u
c3QgYm9vbCogb3B0aW9uYWxJZ25vcmVDYWNoZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFNjcmlw
dFRvRXZhbHVhdGVPbkxvYWQsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxTY3JpcHRQcmVwcm9jZXNz
b3IpOwogICAgIHZpcnR1YWwgdm9pZCBuYXZpZ2F0ZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgdXJsKTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Q29va2llcyhFcnJvclN0cmluZyosIFJlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OkNvb2tpZT4+JiBjb29raWVz
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q29va2llcyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpD
b29raWU+PiYgY29va2llcyk7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShFcnJvclN0
cmluZyosIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSwgY29uc3QgU3RyaW5nJiB1cmwpOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRSZXNvdXJjZVRyZWUoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1
aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiYpOworICAgIHZpcnR1YWwgdm9pZCBnZXRS
ZXNvdXJjZVRyZWUoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+Jik7CiAgICAgdmlydHVhbCB2b2lkIGdldFJlc291cmNl
Q29udGVudChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5n
JiB1cmwsIFN0cmluZyogY29udGVudCwgYm9vbCogYmFzZTY0RW5jb2RlZCk7Ci0gICAgdmlydHVh
bCB2b2lkIHNlYXJjaEluUmVzb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1l
SWQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBv
cHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCwgUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0Y2g+PiYpOwot
ICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hJblJlc291cmNlcyhFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYsIGNvbnN0IGJvb2wqIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGlzUmVnZXgsIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaFJlc3VsdD4+
Jik7CisgICAgdmlydHVhbCB2b2lkIHNlYXJjaEluUmVzb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHF1ZXJ5
LCBjb25zdCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFs
SXNSZWdleCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaE1hdGNoPj4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2Vh
cmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBib29sKiBj
YXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBpc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoUmVzdWx0
Pj4mKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RG9jdW1lbnRDb250ZW50KEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIGh0bWwpOwogICAgIHZpcnR1YWwg
dm9pZCBjYW5PdmVycmlkZURldmljZU1ldHJpY3MoRXJyb3JTdHJpbmcqLCBib29sKik7CiAgICAg
dmlydHVhbCB2b2lkIHNldERldmljZU1ldHJpY3NPdmVycmlkZShFcnJvclN0cmluZyosIGludCB3
aWR0aCwgaW50IGhlaWdodCwgZG91YmxlIGZvbnRTY2FsZUZhY3RvciwgYm9vbCBmaXRXaW5kb3cp
OwpAQCAtMTYzLDcgKzE2Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjcmlwdHNFbmFibGVkKGJv
b2wgaXNFbmFibGVkKTsKIAogICAgIC8vIEluc3BlY3RvciBDb250cm9sbGVyIEFQSQotICAgIHZp
cnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciop
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZCgpIE9WRVJSSURFOwogCiAgICAgLy8gQ3Jvc3MtYWdlbnRzIEFQSQpAQCAtMTkwLDggKzE5NCw4
IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgbWFpblJlc291cmNlQ29udGVudChGcmFtZSos
IGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOwogICAgIHN0YXRpYyBib29s
IGRhdGFDb250ZW50KGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmlu
ZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3Vs
dCk7CiAKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZT4gYnVpbGRPYmpl
Y3RGb3JGcmFtZShGcmFtZSopOwotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OkZy
YW1lUmVzb3VyY2VUcmVlPiBidWlsZE9iamVjdEZvckZyYW1lVHJlZShGcmFtZSopOworICAgIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWU+IGJ1aWxkT2JqZWN0
Rm9yRnJhbWUoRnJhbWUqKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiBidWlsZE9iamVjdEZvckZyYW1lVHJlZShGcmFtZSop
OwogICAgIFBhZ2UqIG1fcGFnZTsKICAgICBJbnNwZWN0b3JBZ2VudCogbV9pbnNwZWN0b3JBZ2Vu
dDsKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwpA
QCAtMjE4LDcgKzIyMiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lnbm9yZVNjcmlwdHNFbmFi
bGVkTm90aWZpY2F0aW9uOwogICAgIGJvb2wgbV9zaG93UGFpbnRSZWN0czsKICAgICBTdHJpbmcg
bV9lbXVsYXRlZE1lZGlhOwotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1fc2NyaXB0c1Rv
RXZhbHVhdGVPbkxvYWQ7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBt
X3NjcmlwdHNUb0V2YWx1YXRlT25Mb2FkOwogICAgIFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9u
PiBtX2dlb2xvY2F0aW9uUG9zaXRpb247CiAgICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+
IG1fcGxhdGZvcm1HZW9sb2NhdGlvblBvc2l0aW9uOwogICAgIFJlZlB0cjxEZXZpY2VPcmllbnRh
dGlvbkRhdGE+IG1fZGV2aWNlT3JpZW50YXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKaW5kZXggYmFmNTFmNC4uMjdkZDVk
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVy
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxl
ckFnZW50LmNwcApAQCAtNDAsMjAgKzQwLDIyIEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRI
b3N0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29uc29sZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yRnJvbnRlbmQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRl
ICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oIgogI2luY2x1ZGUgIlNjcmlw
dEhlYXBTbmFwc2hvdC5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlNj
cmlwdFByb2ZpbGUuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlci5oIgogI2luY2x1ZGUgIldv
cmtlclNjcmlwdERlYnVnU2VydmVyLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0T2JqZWN0
Lmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0
Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBVc2VySW5p
dGlhdGVkUHJvZmlsZU5hbWUgPSAib3JnLndlYmtpdC5wcm9maWxlcy51c2VyLWluaXRpYXRlZCI7
CkBAIC0xMTksNyArMTIxLDcgQEAgUGFzc093blB0cjxJbnNwZWN0b3JQcm9maWxlckFnZW50PiBJ
bnNwZWN0b3JQcm9maWxlckFnZW50OjpjcmVhdGUoSW5zdHJ1bWVudGluZ0EKIH0KIAogSW5zcGVj
dG9yUHJvZmlsZXJBZ2VudDo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudChJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JDb25zb2xlQWdlbnQqIGNvbnNvbGVB
Z2VudCwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAg
OiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJQcm9maWxlciIpLCBpbnN0cnVtZW50
aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiUHJvZmls
ZXIiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fY29uc29sZUFnZW50KGNvbnNvbGVB
Z2VudCkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdl
cikKICAgICAsIG1fZW5hYmxlZChmYWxzZSkKQEAgLTE2OCwxOSArMTcwLDE5IEBAIHZvaWQgSW5z
cGVjdG9yUHJvZmlsZXJBZ2VudDo6Y29sbGVjdEdhcmJhZ2UoV2ViQ29yZTo6RXJyb3JTdHJpbmcq
KQogICAgIFNjcmlwdFByb2ZpbGVyOjpjb2xsZWN0R2FyYmFnZSgpOwogfQogCi1QYXNzUmVmUHRy
PFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4gSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudDo6Y3JlYXRlUHJvZmlsZUhlYWRlcihjb25zdCBTY3JpcHRQcm9maWxlJiBwcm9maWxlKQor
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRl
cj4gSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Y3JlYXRlUHJvZmlsZUhlYWRlcihjb25zdCBTY3Jp
cHRQcm9maWxlJiBwcm9maWxlKQogewotICAgIHJldHVybiBUeXBlQnVpbGRlcjo6UHJvZmlsZXI6
OlByb2ZpbGVIZWFkZXI6OmNyZWF0ZSgpCi0gICAgICAgIC5zZXRUeXBlSWQoVHlwZUJ1aWxkZXI6
OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyOjpUeXBlSWQ6OkNQVSkKKyAgICByZXR1cm4gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI6OmNyZWF0ZSgpCisgICAg
ICAgIC5zZXRUeXBlSWQoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVI
ZWFkZXI6OlR5cGVJZDo6Q1BVKQogICAgICAgICAuc2V0VWlkKHByb2ZpbGUudWlkKCkpCiAgICAg
ICAgIC5zZXRUaXRsZShwcm9maWxlLnRpdGxlKCkpCiAgICAgICAgIC5yZWxlYXNlKCk7CiB9CiAK
LVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPiBJbnNwZWN0
b3JQcm9maWxlckFnZW50OjpjcmVhdGVTbmFwc2hvdEhlYWRlcihjb25zdCBTY3JpcHRIZWFwU25h
cHNob3QmIHNuYXBzaG90KQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9m
aWxlcjo6UHJvZmlsZUhlYWRlcj4gSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Y3JlYXRlU25hcHNo
b3RIZWFkZXIoY29uc3QgU2NyaXB0SGVhcFNuYXBzaG90JiBzbmFwc2hvdCkKIHsKLSAgICBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPiBoZWFkZXIgPSBUeXBlQnVp
bGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI6OmNyZWF0ZSgpCi0gICAgICAgIC5zZXRUeXBl
SWQoVHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyOjpUeXBlSWQ6OkhFQVApCisg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVy
PiBoZWFkZXIgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRl
cjo6Y3JlYXRlKCkKKyAgICAgICAgLnNldFR5cGVJZChJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQ
cm9maWxlcjo6UHJvZmlsZUhlYWRlcjo6VHlwZUlkOjpIRUFQKQogICAgICAgICAuc2V0VWlkKHNu
YXBzaG90LnVpZCgpKQogICAgICAgICAuc2V0VGl0bGUoc25hcHNob3QudGl0bGUoKSk7CiAgICAg
aGVhZGVyLT5zZXRNYXhKU09iamVjdElkKHNuYXBzaG90Lm1heFNuYXBzaG90SlNPYmplY3RJZCgp
KTsKQEAgLTI0MCwxMCArMjQyLDEwIEBAIFN0cmluZyBJbnNwZWN0b3JQcm9maWxlckFnZW50Ojpn
ZXRDdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOYW1lKGJvb2wgaW5jcmVtZW50CiAgICAgcmV0
dXJuIG1ha2VTdHJpbmcoVXNlckluaXRpYXRlZFByb2ZpbGVOYW1lLCAnLicsIFN0cmluZzo6bnVt
YmVyKG1fY3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTnVtYmVyKSk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0UHJvZmlsZUhlYWRlcnMoRXJyb3JTdHJpbmcqLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRl
cj4+JiBoZWFkZXJzKQordm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRQcm9maWxlSGVh
ZGVycyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4+JiBoZWFkZXJz
KQogewogICAgIG1fcHJvZmlsZUhlYWRlcnNSZXF1ZXN0ZWQgPSB0cnVlOwotICAgIGhlYWRlcnMg
PSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVy
Pjo6Y3JlYXRlKCk7CisgICAgaGVhZGVycyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPjo6Y3JlYXRl
KCk7CiAKICAgICBQcm9maWxlc01hcDo6aXRlcmF0b3IgcHJvZmlsZXNFbmQgPSBtX3Byb2ZpbGVz
LmVuZCgpOwogICAgIGZvciAoUHJvZmlsZXNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wcm9maWxlcy5i
ZWdpbigpOyBpdCAhPSBwcm9maWxlc0VuZDsgKytpdCkKQEAgLTI2OCw3ICsyNzAsNyBAQCBwcml2
YXRlOgogCiB9IC8vIG5hbWVzcGFjZQogCi12b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6Omdl
dENQVVByb2ZpbGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgcmF3VWlkLCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlPiYgcHJvZmlsZU9iamVjdCkKK3ZvaWQg
SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0Q1BVUHJvZmlsZShFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGludCByYXdVaWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9maWxl
cjo6Q1BVUHJvZmlsZT4mIHByb2ZpbGVPYmplY3QpCiB7CiAgICAgdW5zaWduZWQgdWlkID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHJhd1VpZCk7CiAgICAgUHJvZmlsZXNNYXA6Oml0ZXJhdG9yIGl0
ID0gbV9wcm9maWxlcy5maW5kKHVpZCk7CkBAIC0yNzYsNyArMjc4LDcgQEAgdm9pZCBJbnNwZWN0
b3JQcm9maWxlckFnZW50OjpnZXRDUFVQcm9maWxlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
aW50IHJhd1VpZCwKICAgICAgICAgKmVycm9yU3RyaW5nID0gIlByb2ZpbGUgd2Fzbid0IGZvdW5k
IjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBwcm9maWxlT2JqZWN0ID0gVHlwZUJ1aWxk
ZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlOjpjcmVhdGUoKTsKKyAgICBwcm9maWxlT2JqZWN0ID0g
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGU6OmNyZWF0ZSgpOwog
ICAgIHByb2ZpbGVPYmplY3QtPnNldEhlYWQoaXQtPnZhbHVlLT5idWlsZEluc3BlY3Rvck9iamVj
dEZvckhlYWQoKSk7CiAgICAgcHJvZmlsZU9iamVjdC0+c2V0SWRsZVRpbWUoaXQtPnZhbHVlLT5p
ZGxlVGltZSgpKTsKIH0KQEAgLTMyNyw3ICszMjksNyBAQCB2b2lkIEluc3BlY3RvclByb2ZpbGVy
QWdlbnQ6OnJlc2V0RnJvbnRlbmRQcm9maWxlcygpCiAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyLT5yZXNldFByb2ZpbGVzKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJv
bnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNo
ZXIpCit2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVs
LCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAg
bV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclByb2ZpbGVy
RnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3Bh
dGNoZXIgPSBJbnNwZWN0b3JQcm9maWxlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2Vu
ZERpc3BhdGNoZXIsIHRoaXMpOwpAQCAtNDE0LDcgKzQxNiw3IEBAIHZvaWQgSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudDo6dG9nZ2xlUmVjb3JkQnV0dG9uKGJvb2wgaXNQcm9maWxpbmcpCiAgICAgICAg
IG1fZnJvbnRlbmREaXNwYXRjaGVyLT5zZXRSZWNvcmRpbmdQcm9maWxlKGlzUHJvZmlsaW5nKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRPYmplY3RCeUhlYXBPYmplY3RJ
ZChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgaGVhcFNuYXBzaG90T2JqZWN0SWQs
IGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6
UmVtb3RlT2JqZWN0PiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRP
YmplY3RCeUhlYXBPYmplY3RJZChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgaGVh
cFNuYXBzaG90T2JqZWN0SWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpCiB7CiAg
ICAgYm9vbCBvazsKICAgICB1bnNpZ25lZCBpZCA9IGhlYXBTbmFwc2hvdE9iamVjdElkLnRvVUlu
dCgmb2spOwpAQCAtNDIyLDcgKzQyNCw3IEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6
Z2V0T2JqZWN0QnlIZWFwT2JqZWN0SWQoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTCiAgICAg
ICAgICplcnJvciA9ICJJbnZhbGlkIGhlYXAgc25hcHNob3Qgb2JqZWN0IGlkIjsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICBTY3JpcHRPYmplY3QgaGVhcE9iamVjdCA9IFNjcmlwdFByb2Zp
bGVyOjpvYmplY3RCeUhlYXBPYmplY3RJZChpZCk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0T2Jq
ZWN0IGhlYXBPYmplY3QgPSBTY3JpcHRQcm9maWxlcjo6b2JqZWN0QnlIZWFwT2JqZWN0SWQoaWQp
OwogICAgIGlmIChoZWFwT2JqZWN0Lmhhc05vVmFsdWUoKSkgewogICAgICAgICAqZXJyb3IgPSAi
T2JqZWN0IGlzIG5vdCBhdmFpbGFibGUiOwogICAgICAgICByZXR1cm47CkBAIC00NDQsNyArNDQ2
LDcgQEAgdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRIZWFwT2JqZWN0SWQoRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHIKICAgICAgICAgKmVycm9yU3RyaW5nID0gIklu
c3BlY3RlZCBjb250ZXh0IGhhcyBnb25lIjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBT
Y3JpcHRWYWx1ZSB2YWx1ZSA9IGluamVjdGVkU2NyaXB0LmZpbmRPYmplY3RCeUlkKG9iamVjdElk
KTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB2YWx1ZSA9IGluamVjdGVkU2NyaXB0LmZp
bmRPYmplY3RCeUlkKG9iamVjdElkKTsKICAgICBpZiAodmFsdWUuaGFzTm9WYWx1ZSgpIHx8IHZh
bHVlLmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgKmVycm9yU3RyaW5nID0gIk9iamVjdCB3aXRo
IGdpdmVuIGlkIG5vdCBmb3VuZCI7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oCmluZGV4IDUzNzA5YzUuLjNm
NzgzNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9m
aWxlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2Zp
bGVyQWdlbnQuaApAQCAtMzIsMjAgKzMyLDI0IEBACiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9E
RUJVR0dFUikgJiYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VB
Z2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNl
LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3Ig
eworY2xhc3MgSW5zcGVjdG9yQXJyYXk7CitjbGFzcyBJbnNwZWN0b3JPYmplY3Q7Cit9CisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotY2xhc3Mg
SW5zcGVjdG9yQXJyYXk7CiBjbGFzcyBJbnNwZWN0b3JDb25zb2xlQWdlbnQ7Ci1jbGFzcyBJbnNw
ZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgUGFnZTsKIGNs
YXNzIFNjcmlwdEhlYXBTbmFwc2hvdDsKQEAgLTU0LDcgKzU4LDcgQEAgY2xhc3MgV29ya2VyR2xv
YmFsU2NvcGU7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0
b3JQcm9maWxlckFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3Bl
Y3RvclByb2ZpbGVyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvclBy
b2ZpbGVyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9y
UHJvZmlsZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEluc3BlY3RvclByb2ZpbGVyQWdlbnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JQcm9maWxlckFnZW50PiBjcmVh
dGUoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvckNvbnNvbGVBZ2VudCosIFBhZ2UqLCBJ
bmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKQEAgLTgzLDE4ICs4NywxOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBlbmFibGUoYm9vbCBza2lwUmVjb21waWxlKTsKICAgICBib29sIGVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KICAgICBTdHJpbmcgZ2V0Q3VycmVudFVzZXJJbml0aWF0
ZWRQcm9maWxlTmFtZShib29sIGluY3JlbWVudFByb2ZpbGVOdW1iZXIgPSBmYWxzZSk7Ci0gICAg
dmlydHVhbCB2b2lkIGdldFByb2ZpbGVIZWFkZXJzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVC
dWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+PiYpOwot
ICAgIHZpcnR1YWwgdm9pZCBnZXRDUFVQcm9maWxlKEVycm9yU3RyaW5nKiwgaW50IHVpZCwgUmVm
UHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZT4mKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZ2V0UHJvZmlsZUhlYWRlcnMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVI
ZWFkZXI+PiYpOworICAgIHZpcnR1YWwgdm9pZCBnZXRDUFVQcm9maWxlKEVycm9yU3RyaW5nKiwg
aW50IHVpZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9m
aWxlPiYpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRIZWFwU25hcHNob3QoRXJyb3JTdHJpbmcqLCBp
bnQgdWlkKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUHJvZmlsZShFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyYgdHlwZSwgaW50IHVpZCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIElu
c3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAg
IHZpcnR1YWwgdm9pZCB0YWtlSGVhcFNuYXBzaG90KEVycm9yU3RyaW5nKiwgY29uc3QgYm9vbCog
cmVwb3J0UHJvZ3Jlc3MpOwogICAgIHZvaWQgdG9nZ2xlUmVjb3JkQnV0dG9uKGJvb2wgaXNQcm9m
aWxpbmcpOwogCi0gICAgdmlydHVhbCB2b2lkIGdldE9iamVjdEJ5SGVhcE9iamVjdElkKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiBoZWFwU25hcHNob3RPYmplY3RJZCwgY29uc3QgU3RyaW5n
KiBvYmplY3RHcm91cCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+
JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCBnZXRPYmplY3RCeUhlYXBPYmplY3RJZChFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgaGVhcFNuYXBzaG90T2JqZWN0SWQsIGNvbnN0IFN0cmlu
Zyogb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpS
ZW1vdGVPYmplY3Q+JiByZXN1bHQpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRIZWFwT2JqZWN0SWQo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBTdHJpbmcqIGhlYXBTbmFwc2hv
dE9iamVjdElkKTsKIAogcHJvdGVjdGVkOgpAQCAtMTA5LDggKzExMyw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCByZXNldEZyb250ZW5kUHJvZmlsZXMoKTsKICAgICB2b2lkIHJlc3RvcmVFbmFibGVt
ZW50KCk7CiAKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhl
YWRlcj4gY3JlYXRlUHJvZmlsZUhlYWRlcihjb25zdCBTY3JpcHRQcm9maWxlJik7Ci0gICAgUGFz
c1JlZlB0cjxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+IGNyZWF0ZVNuYXBz
aG90SGVhZGVyKGNvbnN0IFNjcmlwdEhlYXBTbmFwc2hvdCYpOworICAgIFBhc3NSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+IGNyZWF0ZVByb2Zp
bGVIZWFkZXIoY29uc3QgU2NyaXB0UHJvZmlsZSYpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+IGNyZWF0ZVNuYXBzaG90SGVh
ZGVyKGNvbnN0IFNjcmlwdEhlYXBTbmFwc2hvdCYpOwogCiAgICAgSW5zcGVjdG9yQ29uc29sZUFn
ZW50KiBtX2NvbnNvbGVBZ2VudDsKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IGUxMmIwYTAuLjQ0ZjQ5YzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAg
LTQ4LDcgKzQ4LDYgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgotI2lu
Y2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMu
aCIKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgpAQCAtNjcsMTYg
KzY2LDE4IEBACiAjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJXZWJT
b2NrZXRGcmFtZS5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0LmgiCi0KKyNpbmNsdWRlIDxp
bnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+
CiAjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9
IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yTmV0d29ya0Zyb250ZW5kRGlzcGF0Y2hlcj4oZnJv
bnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yTmV0d29y
a0JhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpAQCAt
MTAwLDkgKzEwMSw5IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRP
YmplY3RGb3JIZWFkZXJzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlCiAgICAgcmV0dXJuIGhlYWRl
cnNPYmplY3Q7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpS
ZXNvdXJjZVRpbWluZz4gYnVpbGRPYmplY3RGb3JUaW1pbmcoY29uc3QgUmVzb3VyY2VMb2FkVGlt
aW5nJiB0aW1pbmcsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCitzdGF0aWMgUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNvdXJjZVRpbWluZz4gYnVpbGRPYmpl
Y3RGb3JUaW1pbmcoY29uc3QgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcsIERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIpCiB7Ci0gICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNvdXJj
ZVRpbWluZzo6Y3JlYXRlKCkKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0
d29yazo6UmVzb3VyY2VUaW1pbmc6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRSZXF1ZXN0VGltZShs
b2FkZXItPnRpbWluZygpLT5tb25vdG9uaWNUaW1lVG9Qc2V1ZG9XYWxsVGltZSh0aW1pbmcuY29u
dmVydFJlc291cmNlTG9hZFRpbWVUb01vbm90b25pY1RpbWUoMCkpKQogICAgICAgICAuc2V0UHJv
eHlTdGFydCh0aW1pbmcucHJveHlTdGFydCkKICAgICAgICAgLnNldFByb3h5RW5kKHRpbWluZy5w
cm94eUVuZCkKQEAgLTExOCw5ICsxMTksOSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRl
cjo6TmV0d29yazo6UmVzb3VyY2VUaW1pbmc+IGJ1aWxkT2JqZWN0Rm9yVGltaW5nKGNvbgogICAg
ICAgICAucmVsZWFzZSgpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TmV0
d29yazo6UmVxdWVzdD4gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3QoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6TmV0d29yazo6UmVxdWVzdD4gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3QoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6
TmV0d29yazo6UmVxdWVzdD4gcmVxdWVzdE9iamVjdCA9IFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpS
ZXF1ZXN0OjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3
b3JrOjpSZXF1ZXN0PiByZXF1ZXN0T2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0
d29yazo6UmVxdWVzdDo6Y3JlYXRlKCkKICAgICAgICAgLnNldFVybChyZXF1ZXN0LnVybCgpLnN0
cmluZygpKQogICAgICAgICAuc2V0TWV0aG9kKHJlcXVlc3QuaHR0cE1ldGhvZCgpKQogICAgICAg
ICAuc2V0SGVhZGVycyhidWlsZE9iamVjdEZvckhlYWRlcnMocmVxdWVzdC5odHRwSGVhZGVyRmll
bGRzKCkpKTsKQEAgLTEyOSw3ICsxMzAsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRl
cjo6TmV0d29yazo6UmVxdWVzdD4gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3QoYwogICAg
IHJldHVybiByZXF1ZXN0T2JqZWN0OwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRl
cjo6TmV0d29yazo6UmVzcG9uc2U+IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKK3N0
YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc3BvbnNl
PiBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7CiAgICAgaWYgKHJlc3BvbnNlLmlz
TnVsbCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEzNyw3ICsxMzgsNyBAQCBzdGF0aWMgUGFz
c1JlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVzcG9uc2U+IGJ1aWxkT2JqZWN0Rm9yUmVz
b3VyY2VSZXNwb25zZQogICAgIGRvdWJsZSBzdGF0dXMgPSByZXNwb25zZS5odHRwU3RhdHVzQ29k
ZSgpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhlYWRlcnMgPSBidWlsZE9iamVjdEZv
ckhlYWRlcnMocmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpKTsKIAotICAgIFJlZlB0cjxUeXBl
QnVpbGRlcjo6TmV0d29yazo6UmVzcG9uc2U+IHJlc3BvbnNlT2JqZWN0ID0gVHlwZUJ1aWxkZXI6
Ok5ldHdvcms6OlJlc3BvbnNlOjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpOZXR3b3JrOjpSZXNwb25zZT4gcmVzcG9uc2VPYmplY3QgPSBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNwb25zZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldFVybChy
ZXNwb25zZS51cmwoKS5zdHJpbmcoKSkKICAgICAgICAgLnNldFN0YXR1cyhzdGF0dXMpCiAgICAg
ICAgIC5zZXRTdGF0dXNUZXh0KHJlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCkpCkBAIC0xNTMsMTQg
KzE1NCwxNCBAQCBzdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVzcG9u
c2U+IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZQogICAgIHJldHVybiByZXNwb25zZU9i
amVjdDsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkNhY2hl
ZFJlc291cmNlPiBidWlsZE9iamVjdEZvckNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKiBj
YWNoZWRSZXNvdXJjZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKK3N0YXRpYyBQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkNhY2hlZFJlc291cmNlPiBidWlsZE9i
amVjdEZvckNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSwgRG9j
dW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6
OkNhY2hlZFJlc291cmNlPiByZXNvdXJjZU9iamVjdCA9IFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpD
YWNoZWRSZXNvdXJjZTo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6TmV0d29yazo6Q2FjaGVkUmVzb3VyY2U+IHJlc291cmNlT2JqZWN0ID0gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6TmV0d29yazo6Q2FjaGVkUmVzb3VyY2U6OmNyZWF0ZSgpCiAgICAgICAgIC5z
ZXRVcmwoY2FjaGVkUmVzb3VyY2UtPnVybCgpKQogICAgICAgICAuc2V0VHlwZShJbnNwZWN0b3JQ
YWdlQWdlbnQ6OmNhY2hlZFJlc291cmNlVHlwZUpzb24oKmNhY2hlZFJlc291cmNlKSkKICAgICAg
ICAgLnNldEJvZHlTaXplKGNhY2hlZFJlc291cmNlLT5lbmNvZGVkU2l6ZSgpKTsKIAotICAgIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVzcG9uc2U+IHJlc291cmNlUmVzcG9uc2UgPSBi
dWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UoY2FjaGVkUmVzb3VyY2UtPnJlc3BvbnNlKCks
IGxvYWRlcik7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJl
c3BvbnNlPiByZXNvdXJjZVJlc3BvbnNlID0gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNl
KGNhY2hlZFJlc291cmNlLT5yZXNwb25zZSgpLCBsb2FkZXIpOwogICAgIGlmIChyZXNvdXJjZVJl
c3BvbnNlKQogICAgICAgICByZXNvdXJjZU9iamVjdC0+c2V0UmVzcG9uc2UocmVzb3VyY2VSZXNw
b25zZSk7CiAKQEAgLTIxNiw5ICsyMTcsOSBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6
OndpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TAogICAg
ICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgiQ2FjaGUtQ29udHJvbCIsICJuby1jYWNo
ZSIpOwogICAgIH0KIAotICAgIFR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkVudW0g
cmVzb3VyY2VUeXBlID0gSW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJjZVR5cGVKc29uKHR5cGUp
OworICAgIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6RW51bSBy
ZXNvdXJjZVR5cGUgPSBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlVHlwZUpzb24odHlwZSk7
CiAKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4gaW5pdGlhdG9y
T2JqZWN0ID0gYnVpbGRJbml0aWF0b3JPYmplY3QobG9hZGVyLT5mcmFtZSgpID8gbG9hZGVyLT5m
cmFtZSgpLT5kb2N1bWVudCgpIDogMCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4gaW5pdGlhdG9yT2JqZWN0ID0gYnVpbGRJbml0aWF0b3JP
YmplY3QobG9hZGVyLT5mcmFtZSgpID8gbG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpIDogMCk7
CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RXaWxsQmVTZW50KHJlcXVlc3RJZCwg
bV9wYWdlQWdlbnQtPmZyYW1lSWQobG9hZGVyLT5mcmFtZSgpKSwgbV9wYWdlQWdlbnQtPmxvYWRl
cklkKGxvYWRlciksIGxvYWRlci0+dXJsKCkuc3RyaW5nKCksIGJ1aWxkT2JqZWN0Rm9yUmVzb3Vy
Y2VSZXF1ZXN0KHJlcXVlc3QpLCBjdXJyZW50VGltZSgpLCBpbml0aWF0b3JPYmplY3QsIGJ1aWxk
T2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShyZWRpcmVjdFJlc3BvbnNlLCBsb2FkZXIpLCB0eXBl
ICE9IEluc3BlY3RvclBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJjZSA/ICZyZXNvdXJjZVR5cGUgOiAw
KTsKIH0KIApAQCAtMjMwLDcgKzIzMSw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
bWFya1Jlc291cmNlQXNDYWNoZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogdm9pZCBJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgUmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVyKQogewogICAgIFN0cmluZyBy
ZXF1ZXN0SWQgPSBJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKTsKLSAg
ICBSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc3BvbnNlPiByZXNvdXJjZVJlc3BvbnNl
ID0gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKHJlc3BvbnNlLCBsb2FkZXIpOworICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNwb25zZT4gcmVzb3Vy
Y2VSZXNwb25zZSA9IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShyZXNwb25zZSwgbG9h
ZGVyKTsKIAogICAgIGJvb2wgaXNOb3RNb2RpZmllZCA9IHJlc3BvbnNlLmh0dHBTdGF0dXNDb2Rl
KCkgPT0gMzA0OwogCkBAIC0yNDMsNyArMjQ0LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWUK
ICAgICBpZiAoY2FjaGVkUmVzb3VyY2UpIHsKICAgICAgICAgLy8gVXNlIG1pbWUgdHlwZSBmcm9t
IGNhY2hlZCByZXNvdXJjZSBpbiBjYXNlIHRoZSBvbmUgaW4gcmVzcG9uc2UgaXMgZW1wdHkuCiAg
ICAgICAgIGlmIChyZXNvdXJjZVJlc3BvbnNlICYmIHJlc3BvbnNlLm1pbWVUeXBlKCkuaXNFbXB0
eSgpKQotICAgICAgICAgICAgcmVzb3VyY2VSZXNwb25zZS0+c2V0U3RyaW5nKFR5cGVCdWlsZGVy
OjpOZXR3b3JrOjpSZXNwb25zZTo6TWltZVR5cGUsIGNhY2hlZFJlc291cmNlLT5yZXNwb25zZSgp
Lm1pbWVUeXBlKCkpOworICAgICAgICAgICAgcmVzb3VyY2VSZXNwb25zZS0+c2V0U3RyaW5nKElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc3BvbnNlOjpNaW1lVHlwZSwgY2FjaGVk
UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSk7CiAgICAgICAgIG1fcmVzb3VyY2VzRGF0
YS0+YWRkQ2FjaGVkUmVzb3VyY2UocmVxdWVzdElkLCBjYWNoZWRSZXNvdXJjZSk7CiAgICAgfQog
CkBAIC0zMzUsNyArMzM2LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRMb2Fk
UmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqIGxvYWQKICAgICAgICAgbV9y
ZXNvdXJjZXNEYXRhLT5yZXVzZVhIUlJlcGxheURhdGEocmVxdWVzdElkLCByYXdSZXF1ZXN0SWQp
OwogICAgIH0KIAotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yPiBp
bml0aWF0b3JPYmplY3QgPSBidWlsZEluaXRpYXRvck9iamVjdChsb2FkZXItPmZyYW1lKCkgPyBs
b2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCkgOiAwKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yPiBpbml0aWF0b3JPYmplY3QgPSBidWlsZElu
aXRpYXRvck9iamVjdChsb2FkZXItPmZyYW1lKCkgPyBsb2FkZXItPmZyYW1lKCktPmRvY3VtZW50
KCkgOiAwKTsKIAogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXF1ZXN0U2VydmVkRnJvbU1l
bW9yeUNhY2hlKHJlcXVlc3RJZCwgZnJhbWVJZCwgbG9hZGVySWQsIGxvYWRlci0+dXJsKCkuc3Ry
aW5nKCksIGN1cnJlbnRUaW1lKCksIGluaXRpYXRvck9iamVjdCwgYnVpbGRPYmplY3RGb3JDYWNo
ZWRSZXNvdXJjZShyZXNvdXJjZSwgbG9hZGVyKSk7CiB9CkBAIC00NDAsMTkgKzQ0MSwxOSBAQCB2
b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFNjaGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9u
KERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgbV9zdHlsZVJlY2FsY3VsYXRpb25Jbml0aWF0
b3IgPSBidWlsZEluaXRpYXRvck9iamVjdChkb2N1bWVudCk7CiB9CiAKLVBhc3NSZWZQdHI8VHlw
ZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4gSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6YnVp
bGRJbml0aWF0b3JPYmplY3QoRG9jdW1lbnQqIGRvY3VtZW50KQorUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IEluc3BlY3RvclJlc291cmNlQWdl
bnQ6OmJ1aWxkSW5pdGlhdG9yT2JqZWN0KERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBSZWZQ
dHI8U2NyaXB0Q2FsbFN0YWNrPiBzdGFja1RyYWNlID0gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKFNj
cmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSwgdHJ1ZSk7CiAgICAgaWYg
KHN0YWNrVHJhY2UgJiYgc3RhY2tUcmFjZS0+c2l6ZSgpID4gMCkgewotICAgICAgICBSZWZQdHI8
VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4gaW5pdGlhdG9yT2JqZWN0ID0gVHlwZUJ1
aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcjo6Y3JlYXRlKCkKLSAgICAgICAgICAgIC5zZXRUeXBl
KFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I6OlR5cGU6OlNjcmlwdCk7CisgICAgICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IGluaXRp
YXRvck9iamVjdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcjo6
Y3JlYXRlKCkKKyAgICAgICAgICAgIC5zZXRUeXBlKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5l
dHdvcms6OkluaXRpYXRvcjo6VHlwZTo6U2NyaXB0KTsKICAgICAgICAgaW5pdGlhdG9yT2JqZWN0
LT5zZXRTdGFja1RyYWNlKHN0YWNrVHJhY2UtPmJ1aWxkSW5zcGVjdG9yQXJyYXkoKSk7CiAgICAg
ICAgIHJldHVybiBpbml0aWF0b3JPYmplY3Q7CiAgICAgfQogCiAgICAgaWYgKGRvY3VtZW50ICYm
IGRvY3VtZW50LT5zY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKSkgewotICAgICAgICBSZWZQdHI8
VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4gaW5pdGlhdG9yT2JqZWN0ID0gVHlwZUJ1
aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcjo6Y3JlYXRlKCkKLSAgICAgICAgICAgIC5zZXRUeXBl
KFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I6OlR5cGU6OlBhcnNlcik7CisgICAgICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IGluaXRp
YXRvck9iamVjdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcjo6
Y3JlYXRlKCkKKyAgICAgICAgICAgIC5zZXRUeXBlKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5l
dHdvcms6OkluaXRpYXRvcjo6VHlwZTo6UGFyc2VyKTsKICAgICAgICAgaW5pdGlhdG9yT2JqZWN0
LT5zZXRVcmwoZG9jdW1lbnQtPnVybCgpLnN0cmluZygpKTsKICAgICAgICAgaW5pdGlhdG9yT2Jq
ZWN0LT5zZXRMaW5lTnVtYmVyKGRvY3VtZW50LT5zY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKS0+
dGV4dFBvc2l0aW9uKCkubV9saW5lLm9uZUJhc2VkSW50KCkpOwogICAgICAgICByZXR1cm4gaW5p
dGlhdG9yT2JqZWN0OwpAQCAtNDYxLDggKzQ2Miw4IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6
Ok5ldHdvcms6OkluaXRpYXRvcj4gSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6YnVpbGRJbml0aWF0
CiAgICAgaWYgKG1faXNSZWNhbGN1bGF0aW5nU3R5bGUgJiYgbV9zdHlsZVJlY2FsY3VsYXRpb25J
bml0aWF0b3IpCiAgICAgICAgIHJldHVybiBtX3N0eWxlUmVjYWxjdWxhdGlvbkluaXRpYXRvcjsK
IAotICAgIHJldHVybiBUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yOjpjcmVhdGUoKQot
ICAgICAgICAuc2V0VHlwZShUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yOjpUeXBlOjpP
dGhlcikKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlh
dG9yOjpjcmVhdGUoKQorICAgICAgICAuc2V0VHlwZShJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpO
ZXR3b3JrOjpJbml0aWF0b3I6OlR5cGU6Ok90aGVyKQogICAgICAgICAucmVsZWFzZSgpOwogfQog
CkBAIC00NzUsMTQgKzQ3NiwxNCBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZENy
ZWF0ZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0CiAKIHZvaWQgSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQog
ewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6V2ViU29ja2V0UmVxdWVzdD4gcmVx
dWVzdE9iamVjdCA9IFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpXZWJTb2NrZXRSZXF1ZXN0OjpjcmVh
dGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpXZWJTb2Nr
ZXRSZXF1ZXN0PiByZXF1ZXN0T2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29y
azo6V2ViU29ja2V0UmVxdWVzdDo6Y3JlYXRlKCkKICAgICAgICAgLnNldEhlYWRlcnMoYnVpbGRP
YmplY3RGb3JIZWFkZXJzKHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygpKSk7CiAgICAgbV9mcm9u
dGVuZERpc3BhdGNoZXItPndlYlNvY2tldFdpbGxTZW5kSGFuZHNoYWtlUmVxdWVzdChJZGVudGlm
aWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKSwgY3VycmVudFRpbWUoKSwgcmVxdWVz
dE9iamVjdCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVdl
YlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpO
ZXR3b3JrOjpXZWJTb2NrZXRSZXNwb25zZT4gcmVzcG9uc2VPYmplY3QgPSBUeXBlQnVpbGRlcjo6
TmV0d29yazo6V2ViU29ja2V0UmVzcG9uc2U6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OldlYlNvY2tldFJlc3BvbnNlPiByZXNwb25zZU9iamVj
dCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OldlYlNvY2tldFJlc3BvbnNlOjpj
cmVhdGUoKQogICAgICAgICAuc2V0U3RhdHVzKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpCiAg
ICAgICAgIC5zZXRTdGF0dXNUZXh0KHJlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCkpCiAgICAgICAg
IC5zZXRIZWFkZXJzKGJ1aWxkT2JqZWN0Rm9ySGVhZGVycyhyZXNwb25zZS5odHRwSGVhZGVyRmll
bGRzKCkpKTsKQEAgLTQ5Niw3ICs0OTcsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6
OmRpZENsb3NlV2ViU29ja2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKIAogdm9pZCBJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlV2ViU29ja2V0RnJhbWUodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBXZWJTb2NrZXRGcmFtZSYgZnJhbWUpCiB7Ci0gICAgUmVmUHRy
PFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpXZWJTb2NrZXRGcmFtZT4gZnJhbWVPYmplY3QgPSBUeXBl
QnVpbGRlcjo6TmV0d29yazo6V2ViU29ja2V0RnJhbWU6OmNyZWF0ZSgpCisgICAgUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OldlYlNvY2tldEZyYW1lPiBmcmFtZU9iamVj
dCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OldlYlNvY2tldEZyYW1lOjpjcmVh
dGUoKQogICAgICAgICAuc2V0T3Bjb2RlKGZyYW1lLm9wQ29kZSkKICAgICAgICAgLnNldE1hc2so
ZnJhbWUubWFza2VkKQogICAgICAgICAuc2V0UGF5bG9hZERhdGEoU3RyaW5nKGZyYW1lLnBheWxv
YWQsIGZyYW1lLnBheWxvYWRMZW5ndGgpKTsKQEAgLTUwNSw3ICs1MDYsNyBAQCB2b2lkIEluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZSh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsCiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkU2VuZFdlYlNv
Y2tldEZyYW1lKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViU29ja2V0RnJhbWUm
IGZyYW1lKQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6V2ViU29ja2V0RnJh
bWU+IGZyYW1lT2JqZWN0ID0gVHlwZUJ1aWxkZXI6Ok5ldHdvcms6OldlYlNvY2tldEZyYW1lOjpj
cmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpXZWJT
b2NrZXRGcmFtZT4gZnJhbWVPYmplY3QgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3Jr
OjpXZWJTb2NrZXRGcmFtZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldE9wY29kZShmcmFtZS5vcENv
ZGUpCiAgICAgICAgIC5zZXRNYXNrKGZyYW1lLm1hc2tlZCkKICAgICAgICAgLnNldFBheWxvYWRE
YXRhKFN0cmluZyhmcmFtZS5wYXlsb2FkLCBmcmFtZS5wYXlsb2FkTGVuZ3RoKSk7CkBAIC02NTAs
NyArNjUxLDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjptYWluRnJhbWVOYXZpZ2F0
ZWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIH0KIAogSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5zcGVjdG9yQ2xpZW50KiBj
bGllbnQpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJOZXR3b3JrIiks
IGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRl
cmFsKCJOZXR3b3JrIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX3BhZ2VBZ2VudChw
YWdlQWdlbnQpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX3Jlc291cmNlc0RhdGEo
YWRvcHRQdHIobmV3IE5ldHdvcmtSZXNvdXJjZXNEYXRhKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKaW5kZXggOGMyN2Y5NC4uOWYy
ZTcyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudC5oCkBAIC0zMSw5ICszMSw5IEBACiAjaWZuZGVmIEluc3BlY3RvclJlc291cmNlQWdl
bnRfaAogI2RlZmluZSBJbnNwZWN0b3JSZXNvdXJjZUFnZW50X2gKIAotI2luY2x1ZGUgIkluc3Bl
Y3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5o
IgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCi0KKyNpbmNsdWRlICJJbnNwZWN0b3JX
ZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNDEsOCArNDEsOSBA
QAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBTdHJp
bmc7CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNzIEluc3BlY3RvckFycmF5OworY2xhc3Mg
SW5zcGVjdG9yT2JqZWN0OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Myw5ICs1NCw3
IEBAIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRm9ybURhdGE7CiBjbGFzcyBGcmFtZTsK
IGNsYXNzIEhUVFBIZWFkZXJNYXA7Ci1jbGFzcyBJbnNwZWN0b3JBcnJheTsKIGNsYXNzIEluc3Bl
Y3RvckNsaWVudDsKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3BlY3RvclBhZ2VB
Z2VudDsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBVUkw7CkBAIC03Niw3ICs3
NSw3IEBAIHN0cnVjdCBXZWJTb2NrZXRGcmFtZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJp
bmc7CiAKLWNsYXNzIEluc3BlY3RvclJlc291cmNlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFz
ZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yTmV0d29ya0JhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7
CitjbGFzcyBJbnNwZWN0b3JSZXNvdXJjZUFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFz
ZSwgcHVibGljIEluc3BlY3Rvck5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvclJlc291cmNlQWdlbnQ+IGNyZWF0
ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdl
QWdlbnQqIHBhZ2VBZ2VudCwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCiAgICAgewpAQCAtODUs
NyArODQsNyBAQCBwdWJsaWM6CiAKICAgICB+SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpOwogCi0g
ICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRC
YWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CkBAIC0xMTYsNyArMTE1LDcgQEAg
cHVibGljOgogICAgIHZvaWQgZGlkUmVjYWxjdWxhdGVTdHlsZSgpOwogICAgIHZvaWQgZGlkU2No
ZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24oRG9jdW1lbnQqKTsKIAotICAgIFBhc3NSZWZQdHI8VHlw
ZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4gYnVpbGRJbml0aWF0b3JPYmplY3QoRG9jdW1l
bnQqKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6Oklu
aXRpYXRvcj4gYnVpbGRJbml0aWF0b3JPYmplY3QoRG9jdW1lbnQqKTsKIAogI2lmIEVOQUJMRShX
RUJfU09DS0VUUykKICAgICB2b2lkIGRpZENyZWF0ZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCk7CkBAIC0xMzUsNyArMTM0LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VyQWdl
bnRPdmVycmlkZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0RXh0cmFIVFRQSGVhZGVycyhFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+Jik7CisgICAgdmlydHVhbCB2b2lkIHNldEV4dHJhSFRUUEhlYWRl
cnMoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
Jik7CiAgICAgdmlydHVhbCB2b2lkIGdldFJlc3BvbnNlQm9keShFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgcmVxdWVzdElkLCBTdHJpbmcqIGNvbnRlbnQsIGJvb2wqIGJhc2U2NEVuY29kZWQp
OwogCiAgICAgdmlydHVhbCB2b2lkIHJlcGxheVhIUihFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkKTsKQEAgLTE2MCwxMiArMTU5LDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2VuYWJsZWQ7CiAgICAgYm9vbCBtX2NhY2hlRGlzYWJsZWQ7CiAgICAgYm9vbCBtX2xvYWRpbmdY
SFJTeW5jaHJvbm91c2x5OwotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1fZXh0cmFSZXF1
ZXN0SGVhZGVyczsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1fZXh0
cmFSZXF1ZXN0SGVhZGVyczsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50KiwgUmVmUHRyPFhIUlJlcGxheURhdGE+PiBQZW5kaW5nWEhSUmVwbGF5RGF0YU1hcDsK
ICAgICBQZW5kaW5nWEhSUmVwbGF5RGF0YU1hcCBtX3BlbmRpbmdYSFJSZXBsYXlEYXRhOwogICAg
IC8vIEZJWE1FOiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50IHNob3VsZCBub3cgYmUgYXdhcmUgb2Yg
c3R5bGUgcmVjYWxjdWxhdGlvbi4KLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6Oklu
aXRpYXRvcj4gbV9zdHlsZVJlY2FsY3VsYXRpb25Jbml0aWF0b3I7CisgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4gbV9zdHlsZVJlY2FsY3VsYXRp
b25Jbml0aWF0b3I7CiAgICAgYm9vbCBtX2lzUmVjYWxjdWxhdGluZ1N0eWxlOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcApp
bmRleCA4YjM0NjkwLi5hZDhjNDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcApAQCAtMzYsOCArMzYsOCBAQAogCiAjaW5jbHVk
ZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIK
LSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2Uu
aCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8cGFy
c2VyL1BhcnNlckVycm9yLmg+CiAjaW5jbHVkZSA8cGFyc2VyL1NvdXJjZUNvZGUuaD4KICNpbmNs
dWRlIDxydW50aW1lL0NvbXBsZXRpb24uaD4KQEAgLTUwLDYgKzUwLDggQEAKIAogdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdGF0aWMgYm9vbCBhc0Jvb2woY29uc3QgYm9vbCogY29uc3QgYikKQEAgLTU4
LDcgKzYwLDcgQEAgc3RhdGljIGJvb2wgYXNCb29sKGNvbnN0IGJvb2wqIGNvbnN0IGIpCiB9CiAK
IEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6SW5zcGVjdG9yUnVudGltZUFnZW50KEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJh
bCgiUnVudGltZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRC
YXNlKEFTQ0lJTGl0ZXJhbCgiUnVudGltZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwg
bV9lbmFibGVkKGZhbHNlKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKQogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQpAQCAtODIsMTUg
Kzg0LDE1IEBAIHN0YXRpYyBTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0
ZSBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKFNjcmlwCiB9CiAjZW5kaWYKIAotc3RhdGljIFBh
c3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkVycm9yUmFuZ2U+IGJ1aWxkRXJyb3JSYW5n
ZU9iamVjdChjb25zdCBKU1Rva2VuTG9jYXRpb24mIHRva2VuTG9jYXRpb24pCitzdGF0aWMgUGFz
c1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpFcnJvclJhbmdlPiBidWls
ZEVycm9yUmFuZ2VPYmplY3QoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiB0b2tlbkxvY2F0aW9uKQog
ewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6RXJyb3JSYW5nZT4gcmVzdWx0ID0g
VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkVycm9yUmFuZ2U6OmNyZWF0ZSgpCisgICAgUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkVycm9yUmFuZ2U+IHJlc3VsdCA9IEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkVycm9yUmFuZ2U6OmNyZWF0ZSgpCiAgICAgICAg
IC5zZXRTdGFydE9mZnNldCh0b2tlbkxvY2F0aW9uLnN0YXJ0T2Zmc2V0KQogICAgICAgICAuc2V0
RW5kT2Zmc2V0KHRva2VuTG9jYXRpb24uZW5kT2Zmc2V0KTsKICAgICByZXR1cm4gcmVzdWx0LnJl
bGVhc2UoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnBhcnNlKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBUeXBlQnVpbGRlcjo6UnVudGltZTo6U3lu
dGF4RXJyb3JUeXBlOjpFbnVtKiByZXN1bHQsIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8U3RyaW5n
PiogbWVzc2FnZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpFcnJvclJhbmdlPiYgcmFu
Z2UpCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6cGFyc2UoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIGV4cHJlc3Npb24sIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlN5
bnRheEVycm9yVHlwZTo6RW51bSogcmVzdWx0LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRP
dXRwdXQ8U3RyaW5nPiogbWVzc2FnZSwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1
bnRpbWU6OkVycm9yUmFuZ2U+JiByYW5nZSkKIHsKICAgICBWTSogdm0gPSBKU0RPTVdpbmRvd0Jh
c2U6OmNvbW1vblZNKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwpAQCAtMTAwLDE2ICsx
MDIsMTYgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnBhcnNlKEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBUeXBlQnUKIAogICAgIHN3aXRjaCAoZXJyb3IubV9z
eW50YXhFcnJvclR5cGUpIHsKICAgICBjYXNlIFBhcnNlckVycm9yOjpTeW50YXhFcnJvck5vbmU6
Ci0gICAgICAgICpyZXN1bHQgPSBUeXBlQnVpbGRlcjo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBl
OjpOb25lOworICAgICAgICAqcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGlt
ZTo6U3ludGF4RXJyb3JUeXBlOjpOb25lOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBhcnNl
ckVycm9yOjpTeW50YXhFcnJvcklycmVjb3ZlcmFibGU6Ci0gICAgICAgICpyZXN1bHQgPSBUeXBl
QnVpbGRlcjo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBlOjpJcnJlY292ZXJhYmxlOworICAgICAg
ICAqcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6U3ludGF4RXJyb3JU
eXBlOjpJcnJlY292ZXJhYmxlOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBhcnNlckVycm9y
OjpTeW50YXhFcnJvclVudGVybWluYXRlZExpdGVyYWw6Ci0gICAgICAgICpyZXN1bHQgPSBUeXBl
QnVpbGRlcjo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBlOjpVbnRlcm1pbmF0ZWRMaXRlcmFsOwor
ICAgICAgICAqcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6U3ludGF4
RXJyb3JUeXBlOjpVbnRlcm1pbmF0ZWRMaXRlcmFsOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IFBhcnNlckVycm9yOjpTeW50YXhFcnJvclJlY292ZXJhYmxlOgotICAgICAgICAqcmVzdWx0ID0g
VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZTo6UmVjb3ZlcmFibGU7CisgICAg
ICAgICpyZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpTeW50YXhFcnJv
clR5cGU6OlJlY292ZXJhYmxlOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTExOSw3ICsx
MjEsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6cGFyc2UoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIFR5cGVCdQogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0
b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBjb25z
dCBib29sKiBjb25zdCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGNvbnN0IGJvb2wqIGNvbnN0IGRv
Tm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3QgaW50KiBleGVjdXRpb25D
b250ZXh0SWQsIGNvbnN0IGJvb2wqIGNvbnN0IHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGdl
bmVyYXRlUHJldmlldywgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+
JiByZXN1bHQsIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKK3ZvaWQg
SW5zcGVjdG9yUnVudGltZUFnZW50OjpldmFsdWF0ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nKiBjb25zdCBvYmplY3RHcm91
cCwgY29uc3QgYm9vbCogY29uc3QgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBjb25zdCBib29sKiBj
b25zdCBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGludCogZXhl
Y3V0aW9uQ29udGV4dElkLCBjb25zdCBib29sKiBjb25zdCByZXR1cm5CeVZhbHVlLCBjb25zdCBi
b29sKiBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91
dHB1dDxib29sPiogd2FzVGhyb3duKQogewogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2Ny
aXB0ID0gaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKGVycm9yU3RyaW5nLCBleGVjdXRpb25Db250ZXh0
SWQpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCkBAIC0xNDIsNyArMTQ0
LDcgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRlKEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBleHAKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9y
UnVudGltZUFnZW50OjpjYWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNv
bnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgUmVm
UHRyPEluc3BlY3RvckFycmF5PiogY29uc3Qgb3B0aW9uYWxBcmd1bWVudHMsIGNvbnN0IGJvb2wq
IGNvbnN0IGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3QgYm9vbCog
Y29uc3QgcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgVHlwZUJ1aWxkZXI6
Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQordm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6
OmNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBv
YmplY3RJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9y
QXJyYXk+KiBjb25zdCBvcHRpb25hbEFyZ3VtZW50cywgY29uc3QgYm9vbCogY29uc3QgZG9Ob3RQ
YXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBib29sKiBjb25zdCByZXR1cm5C
eVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQogewogICAgIEluamVjdGVkU2Ny
aXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2Ny
aXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1Zh
bHVlKCkpIHsKQEAgLTE3MSw3ICsxNzMsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6
Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbgogICAg
IH0KIH0KIAotdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFByb3BlcnRpZXMoRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBib29sKiBj
b25zdCBvd25Qcm9wZXJ0aWVzLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVy
OjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRv
cj4+JiBpbnRlcm5hbFByb3BlcnRpZXMpCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0
UHJvcGVydGllcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0
SWQsIGNvbnN0IGJvb2wqIGNvbnN0IG93blByb3BlcnRpZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpQcm9wZXJ0
eURlc2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2Ny
aXB0b3I+PiYgaW50ZXJuYWxQcm9wZXJ0aWVzKQogewogICAgIEluamVjdGVkU2NyaXB0IGluamVj
dGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yT2Jq
ZWN0SWQob2JqZWN0SWQpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaApp
bmRleCBjZjQ0ZTU4Li44YjQ0NGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCkBAIC0zMywyNSArMzMsMjkgQEAKIAogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRl
ICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJB
Z2VudEJhc2UuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgSW5qZWN0ZWRTY3JpcHQ7Ci1jbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7
CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIGNsYXNzIEluc3BlY3RvckFycmF5OwogY2xhc3MgSW5z
cGVjdG9yT2JqZWN0OwogY2xhc3MgSW5zcGVjdG9yVmFsdWU7Cit9CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgSW5qZWN0ZWRTY3JpcHQ7CitjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFn
ZXI7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgU2NyaXB0RGVidWdTZXJ2ZXI7
CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7
CiAKLWNsYXNzIEluc3BlY3RvclJ1bnRpbWVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdl
bnQsIHB1YmxpYyBJbnNwZWN0b3JSdW50aW1lQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2Ns
YXNzIEluc3BlY3RvclJ1bnRpbWVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1
YmxpYyBJbnNwZWN0b3JSdW50aW1lQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JSdW50aW1lQWdlbnQpOwogcHVibGljOgogICAgIHZp
cnR1YWwgfkluc3BlY3RvclJ1bnRpbWVBZ2VudCgpOwpAQCAtNTksNyArNjMsNyBAQCBwdWJsaWM6
CiAgICAgLy8gUGFydCBvZiB0aGUgcHJvdG9jb2wuCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShF
cnJvclN0cmluZyopIHsgbV9lbmFibGVkID0gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNh
YmxlKEVycm9yU3RyaW5nKikgeyBtX2VuYWJsZWQgPSBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgVHlwZUJ1aWxk
ZXI6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZTo6RW51bSogcmVzdWx0LCBUeXBlQnVpbGRlcjo6
T3B0T3V0cHV0PFN0cmluZz4qIG1lc3NhZ2UsIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6
RXJyb3JSYW5nZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2UoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIGV4cHJlc3Npb24sIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlN5
bnRheEVycm9yVHlwZTo6RW51bSogcmVzdWx0LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRP
dXRwdXQ8U3RyaW5nPiogbWVzc2FnZSwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1
bnRpbWU6OkVycm9yUmFuZ2U+Jik7CiAgICAgdmlydHVhbCB2b2lkIGV2YWx1YXRlKEVycm9yU3Ry
aW5nKiwKICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwKICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsCkBAIC02OCwxOSArNzIsMTkg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0
SWQsCiAgICAgICAgICAgICAgICAgICBjb25zdCBib29sKiByZXR1cm5CeVZhbHVlLAogICAgICAg
ICAgICAgICAgICAgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LAotICAgICAgICAgICAgICAg
ICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsCi0g
ICAgICAgICAgICAgICAgICBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24p
OworICAgICAgICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRp
bWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgIEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKTsKICAgICB2aXJ0dWFsIHZv
aWQgY2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcqLAogICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgU3RyaW5nJiBvYmplY3RJZCwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0
cmluZyYgZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3JBcnJheT4qIG9wdGlvbmFsQXJndW1lbnRzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+KiBvcHRpb25hbEFyZ3Vt
ZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wqIGRvTm90UGF1c2VPbkV4
Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJv
b2wqIHJldHVybkJ5VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sKiBn
ZW5lcmF0ZVByZXZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7CisgICAgICAgICAg
ICAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVt
b3RlT2JqZWN0PiYgcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOwogICAgIHZpcnR1YWwgdm9p
ZCByZWxlYXNlT2JqZWN0KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCk7Ci0g
ICAgdmlydHVhbCB2b2lkIGdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcm
IG9iamVjdElkLCBjb25zdCBib29sKiBvd25Qcm9wZXJ0aWVzLCBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkFycmF5PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcmVzdWx0
LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpJbnRlcm5h
bFByb3BlcnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFByb3BlcnRpZXMpOworICAgIHZpcnR1YWwg
dm9pZCBnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwg
Y29uc3QgYm9vbCogb3duUHJvcGVydGllcywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRv
cj4+JiByZXN1bHQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBp
bnRlcm5hbFByb3BlcnRpZXMpOwogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlT2JqZWN0R3JvdXAo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKTsKICAgICB2aXJ0dWFsIHZv
aWQgcnVuKEVycm9yU3RyaW5nKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCA2NzY2MjJiLi5jYWE0NGNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC00OSw3
ICs0OSw2IEBACiAjaW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckNTU0FnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCi0jaW5jbHVk
ZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlJlZ3Vs
YXJFeHByZXNzaW9uLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKQEAgLTYwLDEzICs1OSwxMyBA
QAogI2luY2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRM
aXN0LmgiCiAjaW5jbHVkZSAiV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5oIgotCisjaW5jbHVkZSA8
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWls
ZGVyOjpBcnJheTsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5OwogdXNpbmcg
V2ViQ29yZTo6UnVsZVNvdXJjZURhdGFMaXN0OwogdXNpbmcgV2ViQ29yZTo6Q1NTUnVsZVNvdXJj
ZURhdGE7CiAKQEAgLTE0NCw2ICsxNDMsOCBAQCBQYXNzUmVmUHRyPFdlYkNvcmU6OkNTU1J1bGVT
b3VyY2VEYXRhPiBQYXJzZWRTdHlsZVNoZWV0OjpydWxlU291cmNlRGF0YUF0KHVuc2lnbgogICAg
IHJldHVybiBtX3NvdXJjZURhdGEtPmF0KGluZGV4KTsKIH0KIAordXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIE1lZGlhTGlzdFNvdXJjZSB7
CkBAIC0xNTMsMTQgKzE1NCwxNCBAQCBlbnVtIE1lZGlhTGlzdFNvdXJjZSB7CiAgICAgTWVkaWFM
aXN0U291cmNlSW1wb3J0UnVsZQogfTsKIAotc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6
OkNTUzo6U291cmNlUmFuZ2U+IGJ1aWxkU291cmNlUmFuZ2VPYmplY3QoY29uc3QgU291cmNlUmFu
Z2UmIHJhbmdlLCBWZWN0b3I8c2l6ZV90PiogbGluZUVuZGluZ3MpCitzdGF0aWMgUGFzc1JlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNvdXJjZVJhbmdlPiBidWlsZFNvdXJjZVJh
bmdlT2JqZWN0KGNvbnN0IFNvdXJjZVJhbmdlJiByYW5nZSwgVmVjdG9yPHNpemVfdD4qIGxpbmVF
bmRpbmdzKQogewogICAgIGlmICghbGluZUVuZGluZ3MpCiAgICAgICAgIHJldHVybiAwOwogICAg
IFRleHRQb3NpdGlvbiBzdGFydCA9IENvbnRlbnRTZWFyY2hVdGlsczo6dGV4dFBvc2l0aW9uRnJv
bU9mZnNldChyYW5nZS5zdGFydCwgKmxpbmVFbmRpbmdzKTsKICAgICBUZXh0UG9zaXRpb24gZW5k
ID0gQ29udGVudFNlYXJjaFV0aWxzOjp0ZXh0UG9zaXRpb25Gcm9tT2Zmc2V0KHJhbmdlLmVuZCwg
KmxpbmVFbmRpbmdzKTsKIAotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTb3VyY2VSYW5n
ZT4gcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OkNTUzo6U291cmNlUmFuZ2U6OmNyZWF0ZSgpCisgICAg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U291cmNlUmFuZ2U+IHJlc3VsdCA9
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U291cmNlUmFuZ2U6OmNyZWF0ZSgpCiAgICAg
ICAgIC5zZXRTdGFydExpbmUoc3RhcnQubV9saW5lLnplcm9CYXNlZEludCgpKQogICAgICAgICAu
c2V0U3RhcnRDb2x1bW4oc3RhcnQubV9jb2x1bW4uemVyb0Jhc2VkSW50KCkpCiAgICAgICAgIC5z
ZXRFbmRMaW5lKGVuZC5tX2xpbmUuemVyb0Jhc2VkSW50KCkpCkBAIC0xNjgsMjYgKzE2OSwyNiBA
QCBzdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTb3VyY2VSYW5nZT4gYnVpbGRT
b3VyY2VSYW5nZU9iamVjdChjb25zdCBTbwogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwog
fQogCi1zdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYT4gYnVpbGRN
ZWRpYU9iamVjdChjb25zdCBNZWRpYUxpc3QqIG1lZGlhLCBNZWRpYUxpc3RTb3VyY2UgbWVkaWFM
aXN0U291cmNlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3N0YXRpYyBQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE+IGJ1aWxkTWVkaWFPYmplY3QoY29u
c3QgTWVkaWFMaXN0KiBtZWRpYSwgTWVkaWFMaXN0U291cmNlIG1lZGlhTGlzdFNvdXJjZSwgY29u
c3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7CiAgICAgLy8gTWFrZSBjZXJ0YWluIGNvbXBpbGVycyBo
YXBweSBieSBpbml0aWFsaXppbmcgfHNvdXJjZXwgdXAtZnJvbnQuCi0gICAgVHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTTWVkaWE6OlNvdXJjZTo6RW51bSBzb3VyY2UgPSBUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NNZWRpYTo6U291cmNlOjpJbmxpbmVTaGVldDsKKyAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDU1M6OkNTU01lZGlhOjpTb3VyY2U6OkVudW0gc291cmNlID0gSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NNZWRpYTo6U291cmNlOjpJbmxpbmVTaGVldDsKICAgICBzd2l0Y2ggKG1l
ZGlhTGlzdFNvdXJjZSkgewogICAgIGNhc2UgTWVkaWFMaXN0U291cmNlTWVkaWFSdWxlOgotICAg
ICAgICBzb3VyY2UgPSBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYTo6U291cmNlOjpNZWRpYVJ1
bGU7CisgICAgICAgIHNvdXJjZSA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVk
aWE6OlNvdXJjZTo6TWVkaWFSdWxlOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lZGlhTGlz
dFNvdXJjZUltcG9ydFJ1bGU6Ci0gICAgICAgIHNvdXJjZSA9IFR5cGVCdWlsZGVyOjpDU1M6OkNT
U01lZGlhOjpTb3VyY2U6OkltcG9ydFJ1bGU7CisgICAgICAgIHNvdXJjZSA9IEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE6OlNvdXJjZTo6SW1wb3J0UnVsZTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBNZWRpYUxpc3RTb3VyY2VMaW5rZWRTaGVldDoKLSAgICAgICAgc291
cmNlID0gVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE6OlNvdXJjZTo6TGlua2VkU2hlZXQ7Cisg
ICAgICAgIHNvdXJjZSA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE6OlNv
dXJjZTo6TGlua2VkU2hlZXQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVkaWFMaXN0U291
cmNlSW5saW5lU2hlZXQ6Ci0gICAgICAgIHNvdXJjZSA9IFR5cGVCdWlsZGVyOjpDU1M6OkNTU01l
ZGlhOjpTb3VyY2U6OklubGluZVNoZWV0OworICAgICAgICBzb3VyY2UgPSBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDU1M6OkNTU01lZGlhOjpTb3VyY2U6OklubGluZVNoZWV0OwogICAgICAgICBi
cmVhazsKICAgICB9CiAKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE+IG1l
ZGlhT2JqZWN0ID0gVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE6OmNyZWF0ZSgpCisgICAgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE+IG1lZGlhT2JqZWN0ID0g
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYTo6Y3JlYXRlKCkKICAgICAgICAg
LnNldFRleHQobWVkaWEtPm1lZGlhVGV4dCgpKQogICAgICAgICAuc2V0U291cmNlKHNvdXJjZSk7
CiAKQEAgLTIzOCw3ICsyMzksNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gYXND
U1NSdWxlTGlzdChDU1NSdWxlKiBydWxlKQogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgdm9p
ZCBmaWxsTWVkaWFMaXN0Q2hhaW4oQ1NTUnVsZSogcnVsZSwgQXJyYXk8VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTTWVkaWE+KiBtZWRpYUFycmF5KQorc3RhdGljIHZvaWQgZmlsbE1lZGlhTGlzdENoYWlu
KENTU1J1bGUqIHJ1bGUsIEFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVk
aWE+KiBtZWRpYUFycmF5KQogewogICAgIE1lZGlhTGlzdCogbWVkaWFMaXN0OwogICAgIENTU1J1
bGUqIHBhcmVudFJ1bGUgPSBydWxlOwpAQCAtMzE2LDExICszMTcsMTEgQEAgSW5zcGVjdG9yU3R5
bGU6On5JbnNwZWN0b3JTdHlsZSgpCiB7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpidWlsZE9iamVjdEZvclN0eWxlKCkgY29uc3QK
K1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVj
dG9yU3R5bGU6OmJ1aWxkT2JqZWN0Rm9yU3R5bGUoKSBjb25zdAogewotICAgIFJlZlB0cjxUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gcmVzdWx0ID0gc3R5bGVXaXRoUHJvcGVydGllcygpOwor
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiByZXN1bHQg
PSBzdHlsZVdpdGhQcm9wZXJ0aWVzKCk7CiAgICAgaWYgKCFtX3N0eWxlSWQuaXNFbXB0eSgpKQot
ICAgICAgICByZXN1bHQtPnNldFN0eWxlSWQobV9zdHlsZUlkLmFzUHJvdG9jb2xWYWx1ZTxUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NTdHlsZUlkPigpKTsKKyAgICAgICAgcmVzdWx0LT5zZXRTdHlsZUlk
KG1fc3R5bGVJZC5hc1Byb3RvY29sVmFsdWU8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NTdHlsZUlkPigpKTsKIAogICAgIHJlc3VsdC0+c2V0V2lkdGgobV9zdHlsZS0+Z2V0UHJvcGVy
dHlWYWx1ZSgid2lkdGgiKSk7CiAgICAgcmVzdWx0LT5zZXRIZWlnaHQobV9zdHlsZS0+Z2V0UHJv
cGVydHlWYWx1ZSgiaGVpZ2h0IikpOwpAQCAtMzMyLDE1ICszMzMsMTUgQEAgUGFzc1JlZlB0cjxU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OmJ1aWxkT2JqZWN0Rm9y
U3R5bGUoKSBjb24KICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVBy
b3BlcnR5Pj4gSW5zcGVjdG9yU3R5bGU6OmJ1aWxkQXJyYXlGb3JDb21wdXRlZFN0eWxlKCkgY29u
c3QKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+PiBJbnNwZWN0b3JTdHls
ZTo6YnVpbGRBcnJheUZvckNvbXB1dGVkU3R5bGUoKSBjb25zdAogewotICAgIFJlZlB0cjxUeXBl
QnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5
Pj4gcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU0NvbXB1
dGVkU3R5bGVQcm9wZXJ0eT46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU0NvbXB1dGVkU3R5
bGVQcm9wZXJ0eT4+IHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pjo6Y3JlYXRl
KCk7CiAgICAgVmVjdG9yPEluc3BlY3RvclN0eWxlUHJvcGVydHk+IHByb3BlcnRpZXM7CiAgICAg
cG9wdWxhdGVBbGxQcm9wZXJ0aWVzKCZwcm9wZXJ0aWVzKTsKIAogICAgIGZvciAoVmVjdG9yPElu
c3BlY3RvclN0eWxlUHJvcGVydHk+OjppdGVyYXRvciBpdCA9IHByb3BlcnRpZXMuYmVnaW4oKSwg
aXRFbmQgPSBwcm9wZXJ0aWVzLmVuZCgpOyBpdCAhPSBpdEVuZDsgKytpdCkgewogICAgICAgICBj
b25zdCBDU1NQcm9wZXJ0eVNvdXJjZURhdGEmIHByb3BlcnR5RW50cnkgPSBpdC0+c291cmNlRGF0
YTsKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9w
ZXJ0eT4gZW50cnkgPSBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk6
OmNyZWF0ZSgpCisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNT
U0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4gZW50cnkgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eTo6Y3JlYXRlKCkKICAgICAgICAgICAgIC5zZXRO
YW1lKHByb3BlcnR5RW50cnkubmFtZSkKICAgICAgICAgICAgIC5zZXRWYWx1ZShwcm9wZXJ0eUVu
dHJ5LnZhbHVlKTsKICAgICAgICAgcmVzdWx0LT5hZGRJdGVtKGVudHJ5KTsKQEAgLTUxOSwxNCAr
NTIwLDE0IEBAIGJvb2wgSW5zcGVjdG9yU3R5bGU6OnBvcHVsYXRlQWxsUHJvcGVydGllcyhWZWN0
b3I8SW5zcGVjdG9yU3R5bGVQcm9wZXJ0eT4qIHJlc3VsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpz
dHlsZVdpdGhQcm9wZXJ0aWVzKCkgY29uc3QKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMo
KSBjb25zdAogewogICAgIFZlY3RvcjxJbnNwZWN0b3JTdHlsZVByb3BlcnR5PiBwcm9wZXJ0aWVz
OwogICAgIHBvcHVsYXRlQWxsUHJvcGVydGllcygmcHJvcGVydGllcyk7CiAKLSAgICBSZWZQdHI8
QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk+PiBwcm9wZXJ0aWVzT2JqZWN0ID0g
QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk+OjpjcmVhdGUoKTsKLSAgICBSZWZQ
dHI8QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6U2hvcnRoYW5kRW50cnk+PiBzaG9ydGhhbmRFbnRy
aWVzID0gQXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6U2hvcnRoYW5kRW50cnk+OjpjcmVhdGUoKTsK
LSAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5
Pj4gcHJvcGVydHlOYW1lVG9QcmV2aW91c0FjdGl2ZVByb3BlcnR5OworICAgIFJlZlB0cjxBcnJh
eTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5Pj4gcHJvcGVydGllc09i
amVjdCA9IEFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk+Ojpj
cmVhdGUoKTsKKyAgICBSZWZQdHI8QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpT
aG9ydGhhbmRFbnRyeT4+IHNob3J0aGFuZEVudHJpZXMgPSBBcnJheTxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6OlNob3J0aGFuZEVudHJ5Pjo6Y3JlYXRlKCk7CisgICAgSGFzaE1hcDxTdHJp
bmcsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5Pj4gcHJv
cGVydHlOYW1lVG9QcmV2aW91c0FjdGl2ZVByb3BlcnR5OwogICAgIEhhc2hTZXQ8U3RyaW5nPiBm
b3VuZFNob3J0aGFuZHM7CiAgICAgU3RyaW5nIHByZXZpb3VzUHJpb3JpdHk7CiAgICAgU3RyaW5n
IHByZXZpb3VzU3RhdHVzOwpAQCAtNTM4LDkgKzUzOSw5IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVzKCkg
Y29uCiAgICAgICAgIGNvbnN0IENTU1Byb3BlcnR5U291cmNlRGF0YSYgcHJvcGVydHlFbnRyeSA9
IGl0LT5zb3VyY2VEYXRhOwogICAgICAgICBjb25zdCBTdHJpbmcmIG5hbWUgPSBwcm9wZXJ0eUVu
dHJ5Lm5hbWU7CiAKLSAgICAgICAgVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlN0YXR1
czo6RW51bSBzdGF0dXMgPSBpdC0+ZGlzYWJsZWQgPyBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9w
ZXJ0eTo6U3RhdHVzOjpEaXNhYmxlZCA6IFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpT
dGF0dXM6OkFjdGl2ZTsKKyAgICAgICAgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQ
cm9wZXJ0eTo6U3RhdHVzOjpFbnVtIHN0YXR1cyA9IGl0LT5kaXNhYmxlZCA/IEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlN0YXR1czo6RGlzYWJsZWQgOiBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpTdGF0dXM6OkFjdGl2ZTsKIAotICAg
ICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk+IHByb3BlcnR5ID0gVHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OmNyZWF0ZSgpCisgICAgICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5PiBwcm9wZXJ0eSA9IEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OmNyZWF0ZSgpCiAgICAgICAgICAgICAu
c2V0TmFtZShuYW1lKQogICAgICAgICAgICAgLnNldFZhbHVlKHByb3BlcnR5RW50cnkudmFsdWUp
OwogCkBAIC01NzMsMjIgKzU3NCwyMiBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNT
U1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcygpIGNvbgogICAgICAg
ICAgICAgICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCA9IGNzc1Byb3BlcnR5SUQobmFtZSk7
CiAgICAgICAgICAgICAgICAgLy8gQ2Fub25pY2FsaXplIHByb3BlcnR5IG5hbWVzIHRvIHRyZWF0
IG5vbi1wcmVmaXhlZCBhbmQgdmVuZG9yLXByZWZpeGVkIHByb3BlcnR5IG5hbWVzIHRoZSBzYW1l
IChvcGFjaXR5IHZzLiAtd2Via2l0LW9wYWNpdHkpLgogICAgICAgICAgICAgICAgIFN0cmluZyBj
YW5vbmljYWxQcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eUlkID8gZ2V0UHJvcGVydHlOYW1lU3RyaW5n
KHByb3BlcnR5SWQpIDogbmFtZTsKLSAgICAgICAgICAgICAgICBIYXNoTWFwPFN0cmluZywgUmVm
UHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5Pj46Oml0ZXJhdG9yIGFjdGl2ZUl0ID0g
cHJvcGVydHlOYW1lVG9QcmV2aW91c0FjdGl2ZVByb3BlcnR5LmZpbmQoY2Fub25pY2FsUHJvcGVy
dHlOYW1lKTsKKyAgICAgICAgICAgICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk+Pjo6aXRlcmF0b3IgYWN0aXZlSXQgPSBw
cm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHkuZmluZChjYW5vbmljYWxQcm9wZXJ0
eU5hbWUpOwogICAgICAgICAgICAgICAgIGlmIChhY3RpdmVJdCAhPSBwcm9wZXJ0eU5hbWVUb1By
ZXZpb3VzQWN0aXZlUHJvcGVydHkuZW5kKCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHBy
b3BlcnR5RW50cnkucGFyc2VkT2spIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3Vj
Y2Vzc1ByaW9yaXR5ID0gYWN0aXZlSXQtPnZhbHVlLT5nZXRTdHJpbmcoVHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTUHJvcGVydHk6OlByaW9yaXR5LCAmcHJldmlvdXNQcmlvcml0eSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBib29sIHN1Y2Nlc3NTdGF0dXMgPSBhY3RpdmVJdC0+dmFsdWUtPmdldFN0
cmluZyhUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eTo6U3RhdHVzLCAmcHJldmlvdXNTdGF0
dXMpOworICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzdWNjZXNzUHJpb3JpdHkgPSBhY3Rp
dmVJdC0+dmFsdWUtPmdldFN0cmluZyhJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1By
b3BlcnR5OjpQcmlvcml0eSwgJnByZXZpb3VzUHJpb3JpdHkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBzdWNjZXNzU3RhdHVzID0gYWN0aXZlSXQtPnZhbHVlLT5nZXRTdHJpbmcoSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eTo6U3RhdHVzLCAmcHJldmlvdXNT
dGF0dXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1Y2Nlc3NTdGF0dXMgJiYgcHJl
dmlvdXNTdGF0dXMgIT0gImluYWN0aXZlIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChwcm9wZXJ0eUVudHJ5LmltcG9ydGFudCB8fCAhc3VjY2Vzc1ByaW9yaXR5KSAvLyBQcmlv
cml0eSBub3Qgc2V0ID09ICJub3QgaW1wb3J0YW50Ii4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2hvdWxkSW5hY3RpdmF0ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZSBpZiAoc3RhdHVzID09IFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpT
dGF0dXM6OkFjdGl2ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN0
YXR1cyA9PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpTdGF0dXM6
OkFjdGl2ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbmFjdGl2YXRl
IGEgbm9uLWltcG9ydGFudCBwcm9wZXJ0eSBmb2xsb3dpbmcgdGhlIHNhbWUtbmFtZWQgaW1wb3J0
YW50IHByb3BlcnR5LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eTo6U3RhdHVzOjpJbmFjdGl2ZTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NQcm9wZXJ0eTo6U3RhdHVzOjpJbmFjdGl2ZTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHByZXZpb3VzUGFyc2VkT2s7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBib29sIHN1Y2Nlc3MgPSBhY3RpdmVJdC0+dmFsdWUt
PmdldEJvb2xlYW4oVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlBhcnNlZE9rLCAmcHJl
dmlvdXNQYXJzZWRPayk7CisgICAgICAgICAgICAgICAgICAgICAgICBib29sIHN1Y2Nlc3MgPSBh
Y3RpdmVJdC0+dmFsdWUtPmdldEJvb2xlYW4oSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NQcm9wZXJ0eTo6UGFyc2VkT2ssICZwcmV2aW91c1BhcnNlZE9rKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChzdWNjZXNzICYmICFwcmV2aW91c1BhcnNlZE9rKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNob3VsZEluYWN0aXZhdGUgPSB0cnVlOwogICAgICAgICAgICAgICAg
ICAgICB9CkBAIC01OTYsNyArNTk3LDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjb24KICAgICAg
ICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lVG9QcmV2aW91c0FjdGl2ZVByb3BlcnR5LnNldChj
YW5vbmljYWxQcm9wZXJ0eU5hbWUsIHByb3BlcnR5KTsKIAogICAgICAgICAgICAgICAgIGlmIChz
aG91bGRJbmFjdGl2YXRlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFjdGl2ZUl0LT52YWx1ZS0+
c2V0U3RhdHVzKFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpTdGF0dXM6OkluYWN0aXZl
KTsKKyAgICAgICAgICAgICAgICAgICAgYWN0aXZlSXQtPnZhbHVlLT5zZXRTdGF0dXMoSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eTo6U3RhdHVzOjpJbmFjdGl2ZSk7CiAg
ICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVRvUHJldmlvdXNBY3RpdmVQcm9wZXJ0eS5z
ZXQoY2Fub25pY2FsUHJvcGVydHlOYW1lLCBwcm9wZXJ0eSk7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTYwNCwxMyArNjA1LDEzIEBAIFBhc3NSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0
aWVzKCkgY29uCiAgICAgICAgICAgICAgICAgLy8gRGVmYXVsdCAiaW1wbGljaXQiID09IGZhbHNl
LgogICAgICAgICAgICAgICAgIGlmIChpbXBsaWNpdCkKICAgICAgICAgICAgICAgICAgICAgcHJv
cGVydHktPnNldEltcGxpY2l0KHRydWUpOwotICAgICAgICAgICAgICAgIHN0YXR1cyA9IFR5cGVC
dWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpTdGF0dXM6OlN0eWxlOworICAgICAgICAgICAgICAg
IHN0YXR1cyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlN0YXR1
czo6U3R5bGU7CiAKICAgICAgICAgICAgICAgICBTdHJpbmcgc2hvcnRoYW5kID0gbV9zdHlsZS0+
Z2V0UHJvcGVydHlTaG9ydGhhbmQobmFtZSk7CiAgICAgICAgICAgICAgICAgaWYgKCFzaG9ydGhh
bmQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghZm91bmRTaG9ydGhhbmRz
LmNvbnRhaW5zKHNob3J0aGFuZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kU2hv
cnRoYW5kcy5hZGQoc2hvcnRoYW5kKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxU
eXBlQnVpbGRlcjo6Q1NTOjpTaG9ydGhhbmRFbnRyeT4gZW50cnkgPSBUeXBlQnVpbGRlcjo6Q1NT
OjpTaG9ydGhhbmRFbnRyeTo6Y3JlYXRlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNob3J0aGFuZEVudHJ5PiBlbnRyeSA9IElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2hvcnRoYW5kRW50cnk6OmNyZWF0ZSgpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLnNldE5hbWUoc2hvcnRoYW5kKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC5zZXRWYWx1ZShzaG9ydGhhbmRWYWx1ZShzaG9ydGhhbmQpKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHNob3J0aGFuZEVudHJpZXMtPmFkZEl0ZW0oZW50cnkpOwpA
QCAtNjIwLDExICs2MjEsMTEgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHls
ZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjb24KICAgICAgICAgfQog
CiAgICAgICAgIC8vIERlZmF1bHQgInN0YXR1cyIgPT0gInN0eWxlIi4KLSAgICAgICAgaWYgKHN0
YXR1cyAhPSBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eTo6U3RhdHVzOjpTdHlsZSkKKyAg
ICAgICAgaWYgKHN0YXR1cyAhPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3Bl
cnR5OjpTdGF0dXM6OlN0eWxlKQogICAgICAgICAgICAgcHJvcGVydHktPnNldFN0YXR1cyhzdGF0
dXMpOwogICAgIH0KIAotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gcmVz
dWx0ID0gVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU6OmNyZWF0ZSgpCisgICAgUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IHJlc3VsdCA9IEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRDc3NQcm9w
ZXJ0aWVzKHByb3BlcnRpZXNPYmplY3QpCiAgICAgICAgIC5zZXRTaG9ydGhhbmRFbnRyaWVzKHNo
b3J0aGFuZEVudHJpZXMpOwogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwpAQCAtNzU5LDcg
Kzc2MCw3IEBAIE5ld0xpbmVBbmRXaGl0ZXNwYWNlJiBJbnNwZWN0b3JTdHlsZTo6bmV3TGluZUFu
ZFdoaXRlc3BhY2VEZWxpbWl0ZXJzKCkgY29uc3QKICAgICByZXR1cm4gbV9mb3JtYXQ7CiB9CiAK
LVBhc3NSZWZQdHI8SW5zcGVjdG9yU3R5bGVTaGVldD4gSW5zcGVjdG9yU3R5bGVTaGVldDo6Y3Jl
YXRlKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBjb25zdCBTdHJpbmcmIGlkLCBQYXNz
UmVmUHRyPENTU1N0eWxlU2hlZXQ+IHBhZ2VTdHlsZVNoZWV0LCBUeXBlQnVpbGRlcjo6Q1NTOjpT
dHlsZVNoZWV0T3JpZ2luOjpFbnVtIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBkb2N1bWVudFVSTCwg
TGlzdGVuZXIqIGxpc3RlbmVyKQorUGFzc1JlZlB0cjxJbnNwZWN0b3JTdHlsZVNoZWV0PiBJbnNw
ZWN0b3JTdHlsZVNoZWV0OjpjcmVhdGUoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIGNv
bnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4gcGFnZVN0eWxlU2hlZXQs
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6RW51bSBvcmln
aW4sIGNvbnN0IFN0cmluZyYgZG9jdW1lbnRVUkwsIExpc3RlbmVyKiBsaXN0ZW5lcikKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEluc3BlY3RvclN0eWxlU2hlZXQocGFnZUFnZW50LCBpZCwg
cGFnZVN0eWxlU2hlZXQsIG9yaWdpbiwgZG9jdW1lbnRVUkwsIGxpc3RlbmVyKSk7CiB9CkBAIC03
NzIsNyArNzczLDcgQEAgU3RyaW5nIEluc3BlY3RvclN0eWxlU2hlZXQ6OnN0eWxlU2hlZXRVUkwo
Q1NTU3R5bGVTaGVldCogcGFnZVN0eWxlU2hlZXQpCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
CiB9CiAKLUluc3BlY3RvclN0eWxlU2hlZXQ6Okluc3BlY3RvclN0eWxlU2hlZXQoSW5zcGVjdG9y
UGFnZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8Q1NTU3R5
bGVTaGVldD4gcGFnZVN0eWxlU2hlZXQsIFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmln
aW46OkVudW0gb3JpZ2luLCBjb25zdCBTdHJpbmcmIGRvY3VtZW50VVJMLCBMaXN0ZW5lciogbGlz
dGVuZXIpCitJbnNwZWN0b3JTdHlsZVNoZWV0OjpJbnNwZWN0b3JTdHlsZVNoZWV0KEluc3BlY3Rv
clBhZ2VBZ2VudCogcGFnZUFnZW50LCBjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPENTU1N0
eWxlU2hlZXQ+IHBhZ2VTdHlsZVNoZWV0LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0
eWxlU2hlZXRPcmlnaW46OkVudW0gb3JpZ2luLCBjb25zdCBTdHJpbmcmIGRvY3VtZW50VVJMLCBM
aXN0ZW5lciogbGlzdGVuZXIpCiAgICAgOiBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCiAgICAgLCBt
X2lkKGlkKQogICAgICwgbV9wYWdlU3R5bGVTaGVldChwYWdlU3R5bGVTaGVldCkKQEAgLTk2Myw3
ICs5NjQsNyBAQCBDU1NTdHlsZVJ1bGUqIEluc3BlY3RvclN0eWxlU2hlZXQ6OnJ1bGVGb3JJZChj
b25zdCBJbnNwZWN0b3JDU1NJZCYgaWQpIGNvbnN0CiAKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0Qm9keT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRP
YmplY3RGb3JTdHlsZVNoZWV0KCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NTdHlsZVNoZWV0Qm9keT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RG
b3JTdHlsZVNoZWV0KCkKIHsKICAgICBDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0ID0gcGFnZVN0
eWxlU2hlZXQoKTsKICAgICBpZiAoIXN0eWxlU2hlZXQpCkBAIC05NzEsNyArOTcyLDcgQEAgUGFz
c1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0Qm9keT4gSW5zcGVjdG9yU3R5
bGVTaGVldDo6YnVpbGRPYmplY3QKIAogICAgIFJlZlB0cjxDU1NSdWxlTGlzdD4gY3NzUnVsZUxp
c3QgPSBhc0NTU1J1bGVMaXN0KHN0eWxlU2hlZXQpOwogCi0gICAgUmVmUHRyPFR5cGVCdWlsZGVy
OjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5PiByZXN1bHQgPSBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NT
dHlsZVNoZWV0Qm9keTo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NTdHlsZVNoZWV0Qm9keT4gcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NTdHlsZVNoZWV0Qm9keTo6Y3JlYXRlKCkKICAgICAgICAgLnNldFN0eWxlU2hl
ZXRJZChpZCgpKQogICAgICAgICAuc2V0UnVsZXMoYnVpbGRBcnJheUZvclJ1bGVMaXN0KGNzc1J1
bGVMaXN0LmdldCgpKSk7CiAKQEAgLTk4Myw3ICs5ODQsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5PiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9i
amVjdAogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFR5cGVC
dWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1
aWxkT2JqZWN0Rm9yU3R5bGVTaGVldEluZm8oKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1
aWxkT2JqZWN0Rm9yU3R5bGVTaGVldEluZm8oKQogewogICAgIENTU1N0eWxlU2hlZXQqIHN0eWxl
U2hlZXQgPSBwYWdlU3R5bGVTaGVldCgpOwogICAgIGlmICghc3R5bGVTaGVldCkKQEAgLTk5MSw3
ICs5OTIsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFk
ZXI+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZQogCiAgICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gc3R5bGVTaGVldC0+b3duZXJEb2N1bWVudCgpOwogICAgIEZyYW1lKiBmcmFtZSA9IGRv
Y3VtZW50ID8gZG9jdW1lbnQtPmZyYW1lKCkgOiAwOwotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPiByZXN1bHQgPSBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NT
dHlsZVNoZWV0SGVhZGVyOjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+IHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcjo6Y3JlYXRlKCkKICAgICAgICAgLnNldFN0
eWxlU2hlZXRJZChpZCgpKQogICAgICAgICAuc2V0T3JpZ2luKG1fb3JpZ2luKQogICAgICAgICAu
c2V0RGlzYWJsZWQoc3R5bGVTaGVldC0+ZGlzYWJsZWQoKSkKQEAgLTEwMDIsMTAgKzEwMDMsMTAg
QEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPiBJbnNw
ZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamUKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsK
IH0KIAotc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IHNlbGVj
dG9yc0Zyb21Tb3VyY2UoY29uc3QgQ1NTUnVsZVNvdXJjZURhdGEqIHNvdXJjZURhdGEsIGNvbnN0
IFN0cmluZyYgc2hlZXRUZXh0KQorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8U3RyaW5nPj4gc2VsZWN0b3JzRnJvbVNvdXJjZShjb25zdCBDU1NSdWxlU291
cmNlRGF0YSogc291cmNlRGF0YSwgY29uc3QgU3RyaW5nJiBzaGVldFRleHQpCiB7CiAgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChSZWd1bGFyRXhwcmVzc2lvbiwgY29tbWVudCwgKCIvXFwqW15dKj9c
XCovIiwgVGV4dENhc2VTZW5zaXRpdmUsIE11bHRpbGluZUVuYWJsZWQpKTsKLSAgICBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpBcnJheTxT
dHJpbmc+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8U3RyaW5nPj4gcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5n
Pjo6Y3JlYXRlKCk7CiAgICAgY29uc3QgU2VsZWN0b3JSYW5nZUxpc3QmIHJhbmdlcyA9IHNvdXJj
ZURhdGEtPnNlbGVjdG9yUmFuZ2VzOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gcmFu
Z2VzLnNpemUoKTsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBjb25zdCBTb3VyY2VSYW5nZSYg
cmFuZ2UgPSByYW5nZXMuYXQoaSk7CkBAIC0xMDE4LDEyICsxMDE5LDEyIEBAIHN0YXRpYyBQYXNz
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBzZWxlY3RvcnNGcm9tU291cmNlKGNv
bnN0IENTU1J1bGVTCiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JMaXN0PiBJbnNwZWN0b3JTdHlsZVNoZWV0Ojpi
dWlsZE9iamVjdEZvclNlbGVjdG9yTGlzdChDU1NTdHlsZVJ1bGUqIHJ1bGUpCitQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JMaXN0PiBJbnNwZWN0b3JTdHls
ZVNoZWV0OjpidWlsZE9iamVjdEZvclNlbGVjdG9yTGlzdChDU1NTdHlsZVJ1bGUqIHJ1bGUpCiB7
CiAgICAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBzb3VyY2VEYXRhOwogICAgIGlmIChlbnN1
cmVQYXJzZWREYXRhUmVhZHkoKSkKICAgICAgICAgc291cmNlRGF0YSA9IHJ1bGVTb3VyY2VEYXRh
Rm9yKHJ1bGUtPnN0eWxlKCkpOwotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5n
Pj4gc2VsZWN0b3JzOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxT
dHJpbmc+PiBzZWxlY3RvcnM7CiAKICAgICAvLyBUaGlzIGludGVudGlvbmFsbHkgZG9lcyBub3Qg
cmVseSBvbiB0aGUgc291cmNlIGRhdGEgdG8gYXZvaWQgY2F0Y2hpbmcgdGhlIHRyYWlsaW5nIGNv
bW1lbnRzIChiZWZvcmUgdGhlIGRlY2xhcmF0aW9uIHN0YXJ0aW5nICd7JykuCiAgICAgU3RyaW5n
IHNlbGVjdG9yVGV4dCA9IHJ1bGUtPnNlbGVjdG9yVGV4dCgpOwpAQCAtMTAzMSwxMiArMTAzMiwx
MiBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yTGlzdD4gSW5zcGVjdG9y
U3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTZQogICAgIGlmIChzb3VyY2VEYXRhKQogICAgICAg
ICBzZWxlY3RvcnMgPSBzZWxlY3RvcnNGcm9tU291cmNlKHNvdXJjZURhdGEuZ2V0KCksIG1fcGFy
c2VkU3R5bGVTaGVldC0+dGV4dCgpKTsKICAgICBlbHNlIHsKLSAgICAgICAgc2VsZWN0b3JzID0g
VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgICAgICBzZWxlY3RvcnMg
PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICAg
ICAgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QgPSBydWxlLT5zdHlsZVJ1bGUo
KS0+c2VsZWN0b3JMaXN0KCk7CiAgICAgICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVj
dG9yID0gc2VsZWN0b3JMaXN0LmZpcnN0KCk7IHNlbGVjdG9yOyBzZWxlY3RvciA9IENTU1NlbGVj
dG9yTGlzdDo6bmV4dChzZWxlY3RvcikpCiAgICAgICAgICAgICBzZWxlY3RvcnMtPmFkZEl0ZW0o
c2VsZWN0b3ItPnNlbGVjdG9yVGV4dCgpKTsKICAgICB9Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVy
OjpDU1M6OlNlbGVjdG9yTGlzdD4gcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JM
aXN0OjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNl
bGVjdG9yTGlzdD4gcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3Rv
ckxpc3Q6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRTZWxlY3RvcnMoc2VsZWN0b3JzKQogICAgICAg
ICAuc2V0VGV4dChzZWxlY3RvclRleHQpCiAgICAgICAgIC5yZWxlYXNlKCk7CkBAIC0xMDQ1LDI5
ICsxMDQ2LDI5IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JMaXN0PiBJ
bnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdEZvclNlCiAgICAgcmV0dXJuIHJlc3VsdC5y
ZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gSW5z
cGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JSdWxlKENTU1N0eWxlUnVsZSogcnVsZSkK
K1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiBJbnNwZWN0
b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdEZvclJ1bGUoQ1NTU3R5bGVSdWxlKiBydWxlKQogewog
ICAgIENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQgPSBwYWdlU3R5bGVTaGVldCgpOwogICAgIGlm
ICghc3R5bGVTaGVldCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTUnVsZT4gcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZTo6Y3Jl
YXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiBy
ZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU6OmNyZWF0ZSgpCiAg
ICAgICAgIC5zZXRTZWxlY3Rvckxpc3QoYnVpbGRPYmplY3RGb3JTZWxlY3Rvckxpc3QocnVsZSkp
CiAgICAgICAgIC5zZXRTb3VyY2VMaW5lKHJ1bGUtPnN0eWxlUnVsZSgpLT5zb3VyY2VMaW5lKCkp
CiAgICAgICAgIC5zZXRPcmlnaW4obV9vcmlnaW4pCiAgICAgICAgIC5zZXRTdHlsZShidWlsZE9i
amVjdEZvclN0eWxlKHJ1bGUtPnN0eWxlKCkpKTsKIAogICAgIC8vICJzb3VyY2VVUkwiIGlzIHBy
ZXNlbnQgb25seSBmb3IgcmVndWxhciBydWxlcywgb3RoZXJ3aXNlICJvcmlnaW4iIHNob3VsZCBi
ZSB1c2VkIGluIHRoZSBmcm9udGVuZC4KLSAgICBpZiAobV9vcmlnaW4gPT0gVHlwZUJ1aWxkZXI6
OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6UmVndWxhcikKKyAgICBpZiAobV9vcmlnaW4gPT0gSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpSZWd1bGFyKQogICAg
ICAgICByZXN1bHQtPnNldFNvdXJjZVVSTChmaW5hbFVSTCgpKTsKIAogICAgIGlmIChjYW5CaW5k
KCkpIHsKICAgICAgICAgSW5zcGVjdG9yQ1NTSWQgaWQocnVsZUlkKHJ1bGUpKTsKICAgICAgICAg
aWYgKCFpZC5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXN1bHQtPnNldFJ1bGVJZChpZC5hc1By
b3RvY29sVmFsdWU8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZUlkPigpKTsKKyAgICAgICAgICAg
IHJlc3VsdC0+c2V0UnVsZUlkKGlkLmFzUHJvdG9jb2xWYWx1ZTxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDU1M6OkNTU1J1bGVJZD4oKSk7CiAgICAgfQogCi0gICAgUmVmUHRyPEFycmF5PFR5cGVC
dWlsZGVyOjpDU1M6OkNTU01lZGlhPj4gbWVkaWFBcnJheSA9IEFycmF5PFR5cGVCdWlsZGVyOjpD
U1M6OkNTU01lZGlhPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEFycmF5PEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE+PiBtZWRpYUFycmF5ID0gQXJyYXk8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYT46OmNyZWF0ZSgpOwogCiAgICAgZmlsbE1lZGlhTGlz
dENoYWluKHJ1bGUsIG1lZGlhQXJyYXkuZ2V0KCkpOwogICAgIGlmIChtZWRpYUFycmF5LT5sZW5n
dGgoKSkKQEAgLTEwNzYsNyArMTA3Nyw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTUnVsZT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JSdWxlKENTCiAgICAg
cmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU3R5bGUoQ1NT
U3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU3R5
bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpCiB7CiAgICAgUmVmUHRyPENTU1J1bGVTb3Vy
Y2VEYXRhPiBzb3VyY2VEYXRhOwogICAgIGlmIChlbnN1cmVQYXJzZWREYXRhUmVhZHkoKSkKQEAg
LTEwODQsMTMgKzEwODUsMTMgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHls
ZT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTdHlsZSgKIAogICAgIEluc3Bl
Y3RvckNTU0lkIGlkID0gcnVsZU9yU3R5bGVJZChzdHlsZSk7CiAgICAgaWYgKGlkLmlzRW1wdHko
KSkgewotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IGJvZ3VzU3R5
bGUgPSBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZTo6Y3JlYXRlKCkKLSAgICAgICAgICAgIC5z
ZXRDc3NQcm9wZXJ0aWVzKEFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5Pjo6Y3Jl
YXRlKCkpCi0gICAgICAgICAgICAuc2V0U2hvcnRoYW5kRW50cmllcyhBcnJheTxUeXBlQnVpbGRl
cjo6Q1NTOjpTaG9ydGhhbmRFbnRyeT46OmNyZWF0ZSgpKTsKKyAgICAgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IGJvZ3VzU3R5bGUgPSBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlOjpjcmVhdGUoKQorICAgICAgICAgICAgLnNldENz
c1Byb3BlcnRpZXMoQXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0
eT46OmNyZWF0ZSgpKQorICAgICAgICAgICAgLnNldFNob3J0aGFuZEVudHJpZXMoQXJyYXk8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTaG9ydGhhbmRFbnRyeT46OmNyZWF0ZSgpKTsKICAg
ICAgICAgcmV0dXJuIGJvZ3VzU3R5bGUucmVsZWFzZSgpOwogICAgIH0KICAgICBSZWZQdHI8SW5z
cGVjdG9yU3R5bGU+IGluc3BlY3RvclN0eWxlID0gaW5zcGVjdG9yU3R5bGVGb3JJZChpZCk7Ci0g
ICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiByZXN1bHQgPSBpbnNwZWN0b3JT
dHlsZS0+YnVpbGRPYmplY3RGb3JTdHlsZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6OkNTU1N0eWxlPiByZXN1bHQgPSBpbnNwZWN0b3JTdHlsZS0+YnVpbGRPYmpl
Y3RGb3JTdHlsZSgpOwogCiAgICAgLy8gU3R5bGUgdGV4dCBjYW5ub3QgYmUgcmV0cmlldmVkIHdp
dGhvdXQgc3R5bGVzaGVldCwgc28gc2V0IGNzc1RleHQgaGVyZS4KICAgICBpZiAoc291cmNlRGF0
YSkgewpAQCAtMTM3NCw3ICsxMzc1LDcgQEAgYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0Ojpvcmln
aW5hbFN0eWxlU2hlZXRUZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdAogCiBib29sIEluc3BlY3Rv
clN0eWxlU2hlZXQ6OnJlc291cmNlU3R5bGVTaGVldFRleHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0
CiB7Ci0gICAgaWYgKG1fb3JpZ2luID09IFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmln
aW46OlVzZXIgfHwgbV9vcmlnaW4gPT0gVHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdp
bjo6VXNlckFnZW50KQorICAgIGlmIChtX29yaWdpbiA9PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlVzZXIgfHwgbV9vcmlnaW4gPT0gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpVc2VyQWdlbnQpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGlmICghbV9wYWdlU3R5bGVTaGVldCB8fCAhb3duZXJEb2N1bWVu
dCgpIHx8ICFvd25lckRvY3VtZW50KCktPmZyYW1lKCkpCkBAIC0xNDA2LDkgKzE0MDcsOSBAQCBi
b29sIEluc3BlY3RvclN0eWxlU2hlZXQ6OmlubGluZVN0eWxlU2hlZXRUZXh0KFN0cmluZyogcmVz
dWx0KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPj4gSW5zcGVjdG9yU3R5bGVTaGVldDo6
YnVpbGRBcnJheUZvclJ1bGVMaXN0KENTU1J1bGVMaXN0KiBydWxlTGlzdCkKK1Bhc3NSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NSdWxlPj4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRBcnJheUZvclJ1bGVMaXN0KENT
U1J1bGVMaXN0KiBydWxlTGlzdCkKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5
cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+PiByZXN1bHQgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+
PiByZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6OkNTU1J1bGU+OjpjcmVhdGUoKTsKICAgICBpZiAoIXJ1bGVMaXN0KQogICAg
ICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIApAQCAtMTQ0MCwxMiArMTQ0MSwxMiBAQCB2
b2lkIEluc3BlY3RvclN0eWxlU2hlZXQ6OmNvbGxlY3RGbGF0UnVsZXMoUGFzc1JlZlB0cjxDU1NS
dWxlTGlzdD4gcnVsZUxpc3QsIENTUwogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3JT
dHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU+IEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHls
ZTo6Y3JlYXRlKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBjb25zdCBTdHJpbmcmIGlk
LCBQYXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQsIFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hl
ZXRPcmlnaW46OkVudW0gb3JpZ2luLCBMaXN0ZW5lciogbGlzdGVuZXIpCitQYXNzUmVmUHRyPElu
c3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZT4gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklu
bGluZVN0eWxlOjpjcmVhdGUoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0IFN0
cmluZyYgaWQsIFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCwgSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpFbnVtIG9yaWdpbiwgTGlzdGVuZXIqIGxpc3Rl
bmVyKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklu
bGluZVN0eWxlKHBhZ2VBZ2VudCwgaWQsIGVsZW1lbnQsIG9yaWdpbiwgbGlzdGVuZXIpKTsKIH0K
IAotSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpJbnNwZWN0b3JTdHlsZVNoZWV0
Rm9ySW5saW5lU3R5bGUoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0IFN0cmlu
ZyYgaWQsIFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCwgVHlwZUJ1aWxkZXI6OkNTUzo6U3R5
bGVTaGVldE9yaWdpbjo6RW51bSBvcmlnaW4sIExpc3RlbmVyKiBsaXN0ZW5lcikKK0luc3BlY3Rv
clN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0
eWxlKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBjb25zdCBTdHJpbmcmIGlkLCBQYXNz
UmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5
bGVTaGVldE9yaWdpbjo6RW51bSBvcmlnaW4sIExpc3RlbmVyKiBsaXN0ZW5lcikKICAgICA6IElu
c3BlY3RvclN0eWxlU2hlZXQocGFnZUFnZW50LCBpZCwgMCwgb3JpZ2luLCAiIiwgbGlzdGVuZXIp
CiAgICAgLCBtX2VsZW1lbnQoZWxlbWVudCkKICAgICAsIG1fcnVsZVNvdXJjZURhdGEoMCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCmluZGV4IGY1
MDM5YjQuLjJiMzE2YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlU2hlZXQuaApAQCAtMjksOSArMjksOCBAQAogI2luY2x1ZGUgIkNTU1N0eWxlRGVjbGFy
YXRpb24uaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
U3R5bGVUZXh0RWRpdG9yLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKLSNp
bmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKLQorI2luY2x1ZGUgIkluc3BlY3RvcldlYlR5cGVC
dWlsZGVycy5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTY0LDEyICs2MywxMiBAQCBwdWJsaWM6CiAgICAgewogICAg
IH0KIAotICAgIGV4cGxpY2l0IEluc3BlY3RvckNTU0lkKFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IHZhbHVlKQorICAgIGV4cGxpY2l0IEluc3BlY3RvckNTU0lkKFJlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdD4gdmFsdWUpCiAgICAgewogICAgICAgICBpZiAoIXZhbHVlLT5nZXRTdHJp
bmcoInN0eWxlU2hlZXRJZCIsICZtX3N0eWxlU2hlZXRJZCkpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIAotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IG9yZGluYWxWYWx1ZSA9
IHZhbHVlLT5nZXQoIm9yZGluYWwiKTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVj
dG9yVmFsdWU+IG9yZGluYWxWYWx1ZSA9IHZhbHVlLT5nZXQoIm9yZGluYWwiKTsKICAgICAgICAg
aWYgKCFvcmRpbmFsVmFsdWUgfHwgIW9yZGluYWxWYWx1ZS0+YXNOdW1iZXIoJm1fb3JkaW5hbCkp
CiAgICAgICAgICAgICBtX3N0eWxlU2hlZXRJZCA9ICIiOwogICAgIH0KQEAgLTg1LDcgKzg0LDcg
QEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkKCkgY29uc3QgeyByZXR1
cm4gbV9zdHlsZVNoZWV0SWQ7IH0KICAgICB1bnNpZ25lZCBvcmRpbmFsKCkgY29uc3QgeyByZXR1
cm4gbV9vcmRpbmFsOyB9CiAKLSAgICAvLyBJRCB0eXBlIGlzIGVpdGhlciBUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NTdHlsZUlkIG9yIFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGVJZC4KKyAgICAvLyBJ
RCB0eXBlIGlzIGVpdGhlciBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlSWQg
b3IgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlSWQuCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgSUQ+CiAgICAgUGFzc1JlZlB0cjxJRD4gYXNQcm90b2NvbFZhbHVlKCkgY29uc3QK
ICAgICB7CkBAIC0xNDAsOCArMTM5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkluc3BlY3Rv
clN0eWxlKCk7CiAKICAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBjc3NTdHlsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3R5bGUuZ2V0KCk7IH0KLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6
OkNTU1N0eWxlPiBidWlsZE9iamVjdEZvclN0eWxlKCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3Bl
cnR5Pj4gYnVpbGRBcnJheUZvckNvbXB1dGVkU3R5bGUoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IGJ1aWxkT2JqZWN0Rm9yU3R5
bGUoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4g
YnVpbGRBcnJheUZvckNvbXB1dGVkU3R5bGUoKSBjb25zdDsKICAgICBib29sIGhhc0Rpc2FibGVk
UHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuICFtX2Rpc2FibGVkUHJvcGVydGllcy5pc0VtcHR5
KCk7IH0KICAgICBib29sIHNldFByb3BlcnR5VGV4dCh1bnNpZ25lZCBpbmRleCwgY29uc3QgU3Ry
aW5nJiB0ZXh0LCBib29sIG92ZXJ3cml0ZSwgU3RyaW5nKiBvbGRUZXh0LCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgYm9vbCB0b2dnbGVQcm9wZXJ0eSh1bnNpZ25lZCBpbmRleCwgYm9vbCBkaXNhYmxl
LCBFeGNlcHRpb25Db2RlJik7CkBAIC0xNTcsNyArMTU2LDcgQEAgcHJpdmF0ZToKICAgICBib29s
IGFwcGx5U3R5bGVUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkgeyBFeGNlcHRpb25Db2RlIGVjID0g
MDsgcmV0dXJuIHNldFRleHQodGV4dCwgZWMpOyB9CiAKICAgICBib29sIHBvcHVsYXRlQWxsUHJv
cGVydGllcyhWZWN0b3I8SW5zcGVjdG9yU3R5bGVQcm9wZXJ0eT4qIHJlc3VsdCkgY29uc3Q7Ci0g
ICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gc3R5bGVXaXRoUHJvcGVy
dGllcygpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NTdHlsZT4gc3R5bGVXaXRoUHJvcGVydGllcygpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8
Q1NTUnVsZVNvdXJjZURhdGE+IGV4dHJhY3RTb3VyY2VEYXRhKCkgY29uc3Q7CiAgICAgU3RyaW5n
IHNob3J0aGFuZFZhbHVlKGNvbnN0IFN0cmluZyYgc2hvcnRoYW5kUHJvcGVydHkpIGNvbnN0Owog
ICAgIFN0cmluZyBzaG9ydGhhbmRQcmlvcml0eShjb25zdCBTdHJpbmcmIHNob3J0aGFuZFByb3Bl
cnR5KSBjb25zdDsKQEAgLTE4Miw3ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHR5
cGVkZWYgSGFzaE1hcDxDU1NTdHlsZURlY2xhcmF0aW9uKiwgUmVmUHRyPEluc3BlY3RvclN0eWxl
Pj4gSW5zcGVjdG9yU3R5bGVNYXA7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yU3R5
bGVTaGVldD4gY3JlYXRlKEluc3BlY3RvclBhZ2VBZ2VudCosIGNvbnN0IFN0cmluZyYgaWQsIFBh
c3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4gcGFnZVN0eWxlU2hlZXQsIFR5cGVCdWlsZGVyOjpDU1M6
OlN0eWxlU2hlZXRPcmlnaW46OkVudW0sIGNvbnN0IFN0cmluZyYgZG9jdW1lbnRVUkwsIExpc3Rl
bmVyKik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yU3R5bGVTaGVldD4gY3JlYXRl
KEluc3BlY3RvclBhZ2VBZ2VudCosIGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8Q1NTU3R5
bGVTaGVldD4gcGFnZVN0eWxlU2hlZXQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5
bGVTaGVldE9yaWdpbjo6RW51bSwgY29uc3QgU3RyaW5nJiBkb2N1bWVudFVSTCwgTGlzdGVuZXIq
KTsKICAgICBzdGF0aWMgU3RyaW5nIHN0eWxlU2hlZXRVUkwoQ1NTU3R5bGVTaGVldCogcGFnZVN0
eWxlU2hlZXQpOwogCiAgICAgdmlydHVhbCB+SW5zcGVjdG9yU3R5bGVTaGVldCgpOwpAQCAtMTk3
LDEwICsxOTYsMTAgQEAgcHVibGljOgogICAgIENTU1N0eWxlUnVsZSogYWRkUnVsZShjb25zdCBT
dHJpbmcmIHNlbGVjdG9yLCBFeGNlcHRpb25Db2RlJik7CiAgICAgYm9vbCBkZWxldGVSdWxlKGNv
bnN0IEluc3BlY3RvckNTU0lkJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIENTU1N0eWxlUnVsZSog
cnVsZUZvcklkKGNvbnN0IEluc3BlY3RvckNTU0lkJikgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0Qm9keT4gYnVpbGRPYmplY3RGb3JTdHlsZVNo
ZWV0KCk7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVh
ZGVyPiBidWlsZE9iamVjdEZvclN0eWxlU2hlZXRJbmZvKCk7Ci0gICAgUGFzc1JlZlB0cjxUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiBidWlsZE9iamVjdEZvclJ1bGUoQ1NTU3R5bGVSdWxlKik7
Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gYnVpbGRPYmplY3RG
b3JTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5PiBidWlsZE9iamVjdEZvclN0eWxl
U2hlZXQoKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
U3R5bGVTaGVldEhlYWRlcj4gYnVpbGRPYmplY3RGb3JTdHlsZVNoZWV0SW5mbygpOworICAgIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiBidWlsZE9iamVj
dEZvclJ1bGUoQ1NTU3R5bGVSdWxlKik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBidWlsZE9iamVjdEZvclN0eWxlKENTU1N0eWxlRGVjbGFy
YXRpb24qKTsKICAgICBib29sIHNldFN0eWxlVGV4dChjb25zdCBJbnNwZWN0b3JDU1NJZCYsIGNv
bnN0IFN0cmluZyYgdGV4dCwgU3RyaW5nKiBvbGRUZXh0LCBFeGNlcHRpb25Db2RlJik7CiAgICAg
Ym9vbCBzZXRQcm9wZXJ0eVRleHQoY29uc3QgSW5zcGVjdG9yQ1NTSWQmLCB1bnNpZ25lZCBwcm9w
ZXJ0eUluZGV4LCBjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wgb3ZlcndyaXRlLCBTdHJpbmcqIG9s
ZFByb3BlcnR5VGV4dCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIGJvb2wgdG9nZ2xlUHJvcGVydHko
Y29uc3QgSW5zcGVjdG9yQ1NTSWQmLCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4LCBib29sIGRpc2Fi
bGUsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTIxMyw5ICsyMTIsOSBAQCBwdWJsaWM6CiAgICAgSW5z
cGVjdG9yQ1NTSWQgc3R5bGVJZChDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkgY29uc3QgeyBy
ZXR1cm4gcnVsZU9yU3R5bGVJZChzdHlsZSk7IH0KIAogcHJvdGVjdGVkOgotICAgIEluc3BlY3Rv
clN0eWxlU2hlZXQoSW5zcGVjdG9yUGFnZUFnZW50KiwgY29uc3QgU3RyaW5nJiBpZCwgUGFzc1Jl
ZlB0cjxDU1NTdHlsZVNoZWV0PiBwYWdlU3R5bGVTaGVldCwgVHlwZUJ1aWxkZXI6OkNTUzo6U3R5
bGVTaGVldE9yaWdpbjo6RW51bSwgY29uc3QgU3RyaW5nJiBkb2N1bWVudFVSTCwgTGlzdGVuZXIq
KTsKKyAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KEluc3BlY3RvclBhZ2VBZ2VudCosIGNvbnN0IFN0
cmluZyYgaWQsIFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4gcGFnZVN0eWxlU2hlZXQsIEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6RW51bSwgY29uc3QgU3Ry
aW5nJiBkb2N1bWVudFVSTCwgTGlzdGVuZXIqKTsKIAotICAgIGJvb2wgY2FuQmluZCgpIGNvbnN0
IHsgcmV0dXJuIG1fb3JpZ2luICE9IFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46
OlVzZXJBZ2VudCAmJiBtX29yaWdpbiAhPSBUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3Jp
Z2luOjpVc2VyOyB9CisgICAgYm9vbCBjYW5CaW5kKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW4g
IT0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpVc2VyQWdl
bnQgJiYgbV9vcmlnaW4gIT0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0
T3JpZ2luOjpVc2VyOyB9CiAgICAgSW5zcGVjdG9yQ1NTSWQgcnVsZU9yU3R5bGVJZChDU1NTdHls
ZURlY2xhcmF0aW9uKiBzdHlsZSkgY29uc3Q7CiAgICAgdmlydHVhbCBEb2N1bWVudCogb3duZXJE
b2N1bWVudCgpIGNvbnN0OwogICAgIHZpcnR1YWwgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBy
dWxlU291cmNlRGF0YUZvcihDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkgY29uc3Q7CkBAIC0y
NDMsMTMgKzI0MiwxMyBAQCBwcml2YXRlOgogICAgIGJvb2wgb3JpZ2luYWxTdHlsZVNoZWV0VGV4
dChTdHJpbmcqIHJlc3VsdCkgY29uc3Q7CiAgICAgYm9vbCByZXNvdXJjZVN0eWxlU2hlZXRUZXh0
KFN0cmluZyogcmVzdWx0KSBjb25zdDsKICAgICBib29sIGlubGluZVN0eWxlU2hlZXRUZXh0KFN0
cmluZyogcmVzdWx0KSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPj4gYnVpbGRBcnJheUZvclJ1bGVMaXN0KENTU1J1bGVM
aXN0Kik7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3Rvckxpc3Q+IGJ1
aWxkT2JqZWN0Rm9yU2VsZWN0b3JMaXN0KENTU1N0eWxlUnVsZSopOworICAgIFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NSdWxlPj4gYnVpbGRBcnJheUZvclJ1bGVMaXN0KENTU1J1bGVMaXN0Kik7CisgICAgUGFz
c1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yTGlzdD4gYnVpbGRP
YmplY3RGb3JTZWxlY3Rvckxpc3QoQ1NTU3R5bGVSdWxlKik7CiAKICAgICBJbnNwZWN0b3JQYWdl
QWdlbnQqIG1fcGFnZUFnZW50OwogICAgIFN0cmluZyBtX2lkOwogICAgIFJlZlB0cjxDU1NTdHls
ZVNoZWV0PiBtX3BhZ2VTdHlsZVNoZWV0OwotICAgIFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hl
ZXRPcmlnaW46OkVudW0gbV9vcmlnaW47CisgICAgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpTdHlsZVNoZWV0T3JpZ2luOjpFbnVtIG1fb3JpZ2luOwogICAgIFN0cmluZyBtX2RvY3VtZW50
VVJMOwogICAgIGJvb2wgbV9pc1JldmFsaWRhdGluZzsKICAgICBQYXJzZWRTdHlsZVNoZWV0KiBt
X3BhcnNlZFN0eWxlU2hlZXQ7CkBAIC0yNjAsMTQgKzI1OSwxNCBAQCBwcml2YXRlOgogCiBjbGFz
cyBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUgOiBwdWJsaWMgSW5zcGVjdG9yU3R5
bGVTaGVldCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yU3R5bGVT
aGVldEZvcklubGluZVN0eWxlPiBjcmVhdGUoSW5zcGVjdG9yUGFnZUFnZW50KiwgY29uc3QgU3Ry
aW5nJiBpZCwgUGFzc1JlZlB0cjxFbGVtZW50PiwgVHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVl
dE9yaWdpbjo6RW51bSwgTGlzdGVuZXIqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU+IGNyZWF0ZShJbnNwZWN0b3JQYWdlQWdlbnQqLCBj
b25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPEVsZW1lbnQ+LCBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OkVudW0sIExpc3RlbmVyKik7CiAKICAgICB2b2lk
IGRpZE1vZGlmeUVsZW1lbnRBdHRyaWJ1dGUoKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0VGV4dChT
dHJpbmcqIHJlc3VsdCkgY29uc3Q7CiAgICAgdmlydHVhbCBDU1NTdHlsZURlY2xhcmF0aW9uKiBz
dHlsZUZvcklkKGNvbnN0IEluc3BlY3RvckNTU0lkJiBpZCkgY29uc3QgeyBBU1NFUlRfVU5VU0VE
KGlkLCAhaWQub3JkaW5hbCgpKTsgcmV0dXJuIGlubGluZVN0eWxlKCk7IH0KIAogcHJvdGVjdGVk
OgotICAgIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZShJbnNwZWN0b3JQYWdlQWdl
bnQqLCBjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPEVsZW1lbnQ+LCBUeXBlQnVpbGRlcjo6
Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpFbnVtLCBMaXN0ZW5lciopOworICAgIEluc3BlY3RvclN0
eWxlU2hlZXRGb3JJbmxpbmVTdHlsZShJbnNwZWN0b3JQYWdlQWdlbnQqLCBjb25zdCBTdHJpbmcm
IGlkLCBQYXNzUmVmUHRyPEVsZW1lbnQ+LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0
eWxlU2hlZXRPcmlnaW46OkVudW0sIExpc3RlbmVyKik7CiAKICAgICB2aXJ0dWFsIERvY3VtZW50
KiBvd25lckRvY3VtZW50KCkgY29uc3Q7CiAgICAgdmlydHVhbCBSZWZQdHI8Q1NTUnVsZVNvdXJj
ZURhdGE+IHJ1bGVTb3VyY2VEYXRhRm9yKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKSBjb25z
dCB7IEFTU0VSVF9VTlVTRUQoc3R5bGUsIHN0eWxlID09IGlubGluZVN0eWxlKCkpOyByZXR1cm4g
bV9ydWxlU291cmNlRGF0YTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclN0eWxlVGV4dEVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yU3R5bGVUZXh0RWRpdG9yLmNwcAppbmRleCBiNmVjNGRiLi5mMzA5OWE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVUZXh0RWRpdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVUZXh0RWRp
dG9yLmNwcApAQCAtMzIsNiArMzIsOCBAQAogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JTdHlsZVNoZWV0LmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW5zcGVjdG9yU3R5bGVUZXh0RWRpdG9y
OjpJbnNwZWN0b3JTdHlsZVRleHRFZGl0b3IoVmVjdG9yPEluc3BlY3RvclN0eWxlUHJvcGVydHk+
KiBhbGxQcm9wZXJ0aWVzLCBWZWN0b3I8SW5zcGVjdG9yU3R5bGVQcm9wZXJ0eT4qIGRpc2FibGVk
UHJvcGVydGllcywgY29uc3QgU3RyaW5nJiBzdHlsZVRleHQsIGNvbnN0IE5ld0xpbmVBbmRXaGl0
ZXNwYWNlJiBmb3JtYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yVGltZWxpbmVBZ2VudC5jcHAKaW5kZXggNGM4OGIxYi4uMjQ3MmVkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApAQCAt
NTQsNiArNTQsOCBAQAogI2luY2x1ZGUgIlRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oIgogI2luY2x1
ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgVGltZWxpbmVUaW1lQ29udmVydGVyOjpyZXNldCgp
CkBAIC02NSw3ICs2Nyw3IEBAIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6On5JbnNwZWN0b3JUaW1l
bGluZUFnZW50KCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENo
YW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3Zv
aWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250
ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yVGltZWxpbmVGcm9udGVu
ZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9
IEluc3BlY3RvclRpbWVsaW5lQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcyk7CkBAIC00MjIsOTkgKzQyNCw5OSBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OmFkZFJlY29yZFRvVGltZWxpbmUoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJl
YwogICAgIGlubmVyQWRkUmVjb3JkVG9UaW1lbGluZShyZWNvcmQsIHR5cGUpOwogfQogCi1zdGF0
aWMgVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OkVudW0gdG9Qcm90b2NvbChUaW1l
bGluZVJlY29yZFR5cGUgdHlwZSkKK3N0YXRpYyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1l
bGluZTo6RXZlbnRUeXBlOjpFbnVtIHRvUHJvdG9jb2woVGltZWxpbmVSZWNvcmRUeXBlIHR5cGUp
CiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OkV2
ZW50RGlzcGF0Y2g6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50
VHlwZTo6RXZlbnREaXNwYXRjaDsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OkV2ZW50RGlzcGF0Y2g7CiAgICAgY2FzZSBUaW1lbGlu
ZVJlY29yZFR5cGU6OkJlZ2luRnJhbWU6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGlt
ZWxpbmU6OkV2ZW50VHlwZTo6QmVnaW5GcmFtZTsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OkJlZ2luRnJhbWU7CiAgICAgY2FzZSBU
aW1lbGluZVJlY29yZFR5cGU6OlNjaGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9uOgotICAgICAgICBy
ZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlNjaGVkdWxlU3R5bGVSZWNh
bGN1bGF0aW9uOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxp
bmU6OkV2ZW50VHlwZTo6U2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb247CiAgICAgY2FzZSBUaW1l
bGluZVJlY29yZFR5cGU6OlJlY2FsY3VsYXRlU3R5bGVzOgotICAgICAgICByZXR1cm4gVHlwZUJ1
aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlJlY2FsY3VsYXRlU3R5bGVzOworICAgICAgICBy
ZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6UmVjYWxj
dWxhdGVTdHlsZXM7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OkludmFsaWRhdGVMYXlv
dXQ6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6SW52
YWxpZGF0ZUxheW91dDsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRp
bWVsaW5lOjpFdmVudFR5cGU6OkludmFsaWRhdGVMYXlvdXQ7CiAgICAgY2FzZSBUaW1lbGluZVJl
Y29yZFR5cGU6OkxheW91dDoKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6
RXZlbnRUeXBlOjpMYXlvdXQ7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpUaW1lbGluZTo6RXZlbnRUeXBlOjpMYXlvdXQ7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5
cGU6OlBhaW50OgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5
cGU6OlBhaW50OworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxp
bmU6OkV2ZW50VHlwZTo6UGFpbnQ7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlNjcm9s
bExheWVyOgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6
OlNjcm9sbExheWVyOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGlt
ZWxpbmU6OkV2ZW50VHlwZTo6U2Nyb2xsTGF5ZXI7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5
cGU6OlJlc2l6ZUltYWdlOgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpF
dmVudFR5cGU6OlJlc2l6ZUltYWdlOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6UmVzaXplSW1hZ2U7CiAgICAgY2FzZSBUaW1lbGlu
ZVJlY29yZFR5cGU6OkNvbXBvc2l0ZUxheWVyczoKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVy
OjpUaW1lbGluZTo6RXZlbnRUeXBlOjpDb21wb3NpdGVMYXllcnM7CisgICAgICAgIHJldHVybiBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpDb21wb3NpdGVMYXll
cnM7CiAKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6UGFyc2VIVE1MOgotICAgICAgICBy
ZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlBhcnNlSFRNTDsKKyAgICAg
ICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlBh
cnNlSFRNTDsKIAogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpUaW1lckluc3RhbGw6Ci0g
ICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6VGltZXJJbnN0
YWxsOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2
ZW50VHlwZTo6VGltZXJJbnN0YWxsOwogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpUaW1l
clJlbW92ZToKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBl
OjpUaW1lclJlbW92ZTsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRp
bWVsaW5lOjpFdmVudFR5cGU6OlRpbWVyUmVtb3ZlOwogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRU
eXBlOjpUaW1lckZpcmU6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2
ZW50VHlwZTo6VGltZXJGaXJlOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6VGltZXJGaXJlOwogCiAgICAgY2FzZSBUaW1lbGluZVJl
Y29yZFR5cGU6OkV2YWx1YXRlU2NyaXB0OgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRp
bWVsaW5lOjpFdmVudFR5cGU6OkV2YWx1YXRlU2NyaXB0OworICAgICAgICByZXR1cm4gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6RXZhbHVhdGVTY3JpcHQ7CiAK
ICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6TWFya0xvYWQ6Ci0gICAgICAgIHJldHVybiBU
eXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6TWFya0xvYWQ7CisgICAgICAgIHJldHVy
biBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpNYXJrTG9hZDsK
ICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6TWFya0RPTUNvbnRlbnQ6Ci0gICAgICAgIHJl
dHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6TWFya0RPTUNvbnRlbnQ7Cisg
ICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBl
OjpNYXJrRE9NQ29udGVudDsKIAogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpUaW1lU3Rh
bXA6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6VGlt
ZVN0YW1wOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6
OkV2ZW50VHlwZTo6VGltZVN0YW1wOwogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpUaW1l
OgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlRpbWU7
CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRU
eXBlOjpUaW1lOwogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpUaW1lRW5kOgotICAgICAg
ICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlRpbWVFbmQ7CisgICAg
ICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpU
aW1lRW5kOwogCiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlNjaGVkdWxlUmVzb3VyY2VS
ZXF1ZXN0OgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6
OlNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0OworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6U2NoZWR1bGVSZXNvdXJjZVJlcXVlc3Q7CiAg
ICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlJlc291cmNlU2VuZFJlcXVlc3Q6Ci0gICAgICAg
IHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6UmVzb3VyY2VTZW5kUmVx
dWVzdDsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpF
dmVudFR5cGU6OlJlc291cmNlU2VuZFJlcXVlc3Q7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5
cGU6OlJlc291cmNlUmVjZWl2ZVJlc3BvbnNlOgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6
OlRpbWVsaW5lOjpFdmVudFR5cGU6OlJlc291cmNlUmVjZWl2ZVJlc3BvbnNlOworICAgICAgICBy
ZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6UmVzb3Vy
Y2VSZWNlaXZlUmVzcG9uc2U7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlJlc291cmNl
UmVjZWl2ZWREYXRhOgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVu
dFR5cGU6OlJlc291cmNlUmVjZWl2ZWREYXRhOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6UmVzb3VyY2VSZWNlaXZlZERhdGE7CiAg
ICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlJlc291cmNlRmluaXNoOgotICAgICAgICByZXR1
cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlJlc291cmNlRmluaXNoOworICAg
ICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6
UmVzb3VyY2VGaW5pc2g7CiAKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6WEhSUmVhZHlT
dGF0ZUNoYW5nZToKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRU
eXBlOjpYSFJSZWFkeVN0YXRlQ2hhbmdlOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6WEhSUmVhZHlTdGF0ZUNoYW5nZTsKICAgICBj
YXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6WEhSTG9hZDoKLSAgICAgICAgcmV0dXJuIFR5cGVCdWls
ZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpYSFJMb2FkOworICAgICAgICByZXR1cm4gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6WEhSTG9hZDsKIAogICAgIGNh
c2UgVGltZWxpbmVSZWNvcmRUeXBlOjpGdW5jdGlvbkNhbGw6Ci0gICAgICAgIHJldHVybiBUeXBl
QnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6RnVuY3Rpb25DYWxsOworICAgICAgICByZXR1
cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6RnVuY3Rpb25D
YWxsOwogCiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlJlcXVlc3RBbmltYXRpb25GcmFt
ZToKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpSZXF1
ZXN0QW5pbWF0aW9uRnJhbWU7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpUaW1lbGluZTo6RXZlbnRUeXBlOjpSZXF1ZXN0QW5pbWF0aW9uRnJhbWU7CiAgICAgY2FzZSBU
aW1lbGluZVJlY29yZFR5cGU6OkNhbmNlbEFuaW1hdGlvbkZyYW1lOgotICAgICAgICByZXR1cm4g
VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OkNhbmNlbEFuaW1hdGlvbkZyYW1lOwor
ICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlw
ZTo6Q2FuY2VsQW5pbWF0aW9uRnJhbWU7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OkZp
cmVBbmltYXRpb25GcmFtZToKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6
RXZlbnRUeXBlOjpGaXJlQW5pbWF0aW9uRnJhbWU7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpGaXJlQW5pbWF0aW9uRnJhbWU7CiAK
ICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6V2ViU29ja2V0Q3JlYXRlOgotICAgICAgICBy
ZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OldlYlNvY2tldENyZWF0ZTsK
KyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5
cGU6OldlYlNvY2tldENyZWF0ZTsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6V2ViU29j
a2V0U2VuZEhhbmRzaGFrZVJlcXVlc3Q6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGlt
ZWxpbmU6OkV2ZW50VHlwZTo6V2ViU29ja2V0U2VuZEhhbmRzaGFrZVJlcXVlc3Q7CisgICAgICAg
IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpXZWJT
b2NrZXRTZW5kSGFuZHNoYWtlUmVxdWVzdDsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6
V2ViU29ja2V0UmVjZWl2ZUhhbmRzaGFrZVJlc3BvbnNlOgotICAgICAgICByZXR1cm4gVHlwZUJ1
aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OldlYlNvY2tldFJlY2VpdmVIYW5kc2hha2VSZXNw
b25zZTsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpF
dmVudFR5cGU6OldlYlNvY2tldFJlY2VpdmVIYW5kc2hha2VSZXNwb25zZTsKICAgICBjYXNlIFRp
bWVsaW5lUmVjb3JkVHlwZTo6V2ViU29ja2V0RGVzdHJveToKLSAgICAgICAgcmV0dXJuIFR5cGVC
dWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpXZWJTb2NrZXREZXN0cm95OworICAgICAgICBy
ZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6V2ViU29j
a2V0RGVzdHJveTsKICAgICB9CiAKLSAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpF
dmVudFR5cGU6OlRpbWVTdGFtcDsKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
VGltZWxpbmU6OkV2ZW50VHlwZTo6VGltZVN0YW1wOwogfQogCiB2b2lkIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OmlubmVyQWRkUmVjb3JkVG9UaW1lbGluZShQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gcHJwUmVjb3JkLCBUaW1lbGluZVJlY29yZFR5cGUgdHlwZSkKIHsKLSAgICBwcnBSZWNv
cmQtPnNldFN0cmluZygidHlwZSIsIFR5cGVCdWlsZGVyOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZSh0
b1Byb3RvY29sKHR5cGUpKSk7CisgICAgcHJwUmVjb3JkLT5zZXRTdHJpbmcoInR5cGUiLCBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZSh0b1Byb3RvY29sKHR5cGUp
KSk7CiAKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50PiBy
ZWNvcmQgPSBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ6OnJ1bnRpbWVDYXN0
KHBycFJlY29yZCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5l
OjpUaW1lbGluZUV2ZW50PiByZWNvcmQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGlu
ZTo6VGltZWxpbmVFdmVudDo6cnVudGltZUNhc3QocHJwUmVjb3JkKTsKIAogICAgIHNldERPTUNv
dW50ZXJzKHJlY29yZC5nZXQoKSk7CiAKQEAgLTUzMSw3ICs1MzMsNyBAQCBzdGF0aWMgc2l6ZV90
IHVzZWRIZWFwU2l6ZSgpCiAgICAgcmV0dXJuIEpTRE9NV2luZG93Ojpjb21tb25WTSgpLT5oZWFw
LnNpemUoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzZXRET01Db3VudGVy
cyhUeXBlQnVpbGRlcjo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQqIHJlY29yZCkKK3ZvaWQgSW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6c2V0RE9NQ291bnRlcnMoSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQqIHJlY29yZCkKIHsKICAgICByZWNvcmQtPnNldFVz
ZWRIZWFwU2l6ZSh1c2VkSGVhcFNpemUoKSk7CiAKQEAgLTU0Myw3ICs1NDUsNyBAQCB2b2lkIElu
c3BlY3RvclRpbWVsaW5lQWdlbnQ6OnNldERPTUNvdW50ZXJzKFR5cGVCdWlsZGVyOjpUaW1lbGlu
ZTo6VGltZWxpbmVFdmVudAogICAgICAgICAgICAgbm9kZUNvdW50ID0gSW5zcGVjdG9yQ291bnRl
cnM6OmNvdW50ZXJWYWx1ZShJbnNwZWN0b3JDb3VudGVyczo6Tm9kZUNvdW50ZXIpOwogICAgICAg
ICB9CiAgICAgICAgIGludCBsaXN0ZW5lckNvdW50ID0gVGhyZWFkTG9jYWxJbnNwZWN0b3JDb3Vu
dGVyczo6Y3VycmVudCgpLmNvdW50ZXJWYWx1ZShUaHJlYWRMb2NhbEluc3BlY3RvckNvdW50ZXJz
OjpKU0V2ZW50TGlzdGVuZXJDb3VudGVyKTsKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpU
aW1lbGluZTo6RE9NQ291bnRlcnM+IGNvdW50ZXJzID0gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpE
T01Db3VudGVyczo6Y3JlYXRlKCkKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OlRpbWVsaW5lOjpET01Db3VudGVycz4gY291bnRlcnMgPSBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpUaW1lbGluZTo6RE9NQ291bnRlcnM6OmNyZWF0ZSgpCiAgICAgICAgICAgICAuc2V0RG9j
dW1lbnRzKGRvY3VtZW50Q291bnQpCiAgICAgICAgICAgICAuc2V0Tm9kZXMobm9kZUNvdW50KQog
ICAgICAgICAgICAgLnNldEpzRXZlbnRMaXN0ZW5lcnMobGlzdGVuZXJDb3VudCk7CkBAIC01ODAs
NyArNTgyLDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDb21wbGV0ZUN1cnJl
bnRSZWNvcmQoVGltZWxpbmVSZWNvcmRUeXBlIHR5cGUpCiB9CiAKIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIEluc3BlY3Rvck1l
bW9yeUFnZW50KiBtZW1vcnlBZ2VudCwgSW5zcGVjdG9yVHlwZSB0eXBlLCBJbnNwZWN0b3JDbGll
bnQqIGNsaWVudCkKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIlRpbWVs
aW5lIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVND
SUlMaXRlcmFsKCJUaW1lbGluZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9wYWdl
QWdlbnQocGFnZUFnZW50KQogICAgICwgbV9tZW1vcnlBZ2VudChtZW1vcnlBZ2VudCkKICAgICAs
IG1faWQoMSkKQEAgLTYwNCw3ICs2MDYsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OmFwcGVuZFJlY29yZChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSwgVGltZQogdm9p
ZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzZW5kRXZlbnQoUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IGV2ZW50KQogewogICAgIC8vIEZJWE1FOiBydW50aW1lQ2FzdCBpcyBhIGhhY2suIFdl
IGRvIGl0IGJlY2F1c2Ugd2UgY2FuJ3QgYnVpbGQgVGltZWxpbmVFdmVudCBkaXJlY3RseSBub3cu
Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6VGltZWxpbmVFdmVudD4gcmVjb3Jk
Q2hlY2tlZCA9IFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6VGltZWxpbmVFdmVudDo6cnVudGltZUNh
c3QoZXZlbnQpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6
VGltZWxpbmVFdmVudD4gcmVjb3JkQ2hlY2tlZCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRp
bWVsaW5lOjpUaW1lbGluZUV2ZW50OjpydW50aW1lQ2FzdChldmVudCk7CiAgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXItPmV2ZW50UmVjb3JkZWQocmVjb3JkQ2hlY2tlZC5yZWxlYXNlKCkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVB
Z2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQu
aAppbmRleCA0NWRjMmYzLi4wNWI4ZTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKQEAgLTMzLDEwICszMywxMSBAQAogCiAjaWYg
RU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2lu
Y2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckZyb250ZW5kLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCisjaW5jbHVkZSAiSW5z
cGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgorI2luY2x1ZGUg
PGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAt
MTIxLDcgKzEyMiw3IEBAIHByaXZhdGU6CiB9OwogCiBjbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50Ci0gICAgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50CisgICAgOiBwdWJsaWMgSW5zcGVj
dG9yQWdlbnRCYXNlCiAgICAgLCBwdWJsaWMgSW5zcGVjdG9yVGltZWxpbmVCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvclRpbWVsaW5l
QWdlbnQpOwogcHVibGljOgpAQCAtMTM0LDcgKzEzNSw3IEBAIHB1YmxpYzoKIAogICAgIH5JbnNw
ZWN0b3JUaW1lbGluZUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rv
cjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIHZpcnR1
YWwgdm9pZCBzdGFydChFcnJvclN0cmluZyosIGNvbnN0IGludCogbWF4Q2FsbFN0YWNrRGVwdGgs
IGNvbnN0IGJvb2wqIGluY2x1ZGVEb21Db3VudGVycyk7CkBAIC0yMjAsMzMgKzIyMSwzMyBAQCBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBUaW1lbGluZVJlY29yZFN0YWNrOwogCiAgICAgc3Ry
dWN0IFRpbWVsaW5lUmVjb3JkRW50cnkgewotICAgICAgICBUaW1lbGluZVJlY29yZEVudHJ5KFBh
c3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBkYXRhLCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBjaGlsZHJlbiwgVGltZWxpbmVS
ZWNvcmRUeXBlIHR5cGUsIHNpemVfdCB1c2VkSGVhcFNpemVBdFN0YXJ0KQorICAgICAgICBUaW1l
bGluZVJlY29yZEVudHJ5KFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHJl
Y29yZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gZGF0YSwgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiBjaGlsZHJlbiwgVGltZWxpbmVSZWNvcmRU
eXBlIHR5cGUsIHNpemVfdCB1c2VkSGVhcFNpemVBdFN0YXJ0KQogICAgICAgICAgICAgOiByZWNv
cmQocmVjb3JkKSwgZGF0YShkYXRhKSwgY2hpbGRyZW4oY2hpbGRyZW4pLCB0eXBlKHR5cGUpLCB1
c2VkSGVhcFNpemVBdFN0YXJ0KHVzZWRIZWFwU2l6ZUF0U3RhcnQpCiAgICAgICAgIHsKICAgICAg
ICAgfQotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQ7Ci0gICAgICAgIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGE7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJh
eT4gY2hpbGRyZW47CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4g
cmVjb3JkOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGRhdGE7
CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiBjaGlsZHJlbjsKICAg
ICAgICAgVGltZWxpbmVSZWNvcmRUeXBlIHR5cGU7CiAgICAgICAgIHNpemVfdCB1c2VkSGVhcFNp
emVBdFN0YXJ0OwogICAgIH07CiAKICAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KEluc3RydW1l
bnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdlQWdlbnQqLCBJbnNwZWN0b3JNZW1vcnlBZ2VudCos
IEluc3BlY3RvclR5cGUsIEluc3BlY3RvckNsaWVudCopOwogCi0gICAgdm9pZCBzZW5kRXZlbnQo
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KTsKLSAgICB2b2lkIGFwcGVuZFJlY29yZChQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSwgVGltZWxpbmVSZWNvcmRUeXBlLCBib29sIGNh
cHR1cmVDYWxsU3RhY2ssIEZyYW1lKik7Ci0gICAgdm9pZCBwdXNoQ3VycmVudFJlY29yZChQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4sIFRpbWVsaW5lUmVjb3JkVHlwZSwgYm9vbCBjYXB0dXJl
Q2FsbFN0YWNrLCBGcmFtZSopOworICAgIHZvaWQgc2VuZEV2ZW50KFBhc3NSZWZQdHI8SW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3Q+KTsKKyAgICB2b2lkIGFwcGVuZFJlY29yZChQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBkYXRhLCBUaW1lbGluZVJlY29yZFR5cGUsIGJv
b2wgY2FwdHVyZUNhbGxTdGFjaywgRnJhbWUqKTsKKyAgICB2b2lkIHB1c2hDdXJyZW50UmVjb3Jk
KFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+LCBUaW1lbGluZVJlY29yZFR5
cGUsIGJvb2wgY2FwdHVyZUNhbGxTdGFjaywgRnJhbWUqKTsKIAotICAgIHZvaWQgc2V0RE9NQ291
bnRlcnMoVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50KiByZWNvcmQpOwotICAg
IHZvaWQgc2V0RnJhbWVJZGVudGlmaWVyKEluc3BlY3Rvck9iamVjdCogcmVjb3JkLCBGcmFtZSop
OworICAgIHZvaWQgc2V0RE9NQ291bnRlcnMoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxp
bmU6OlRpbWVsaW5lRXZlbnQqIHJlY29yZCk7CisgICAgdm9pZCBzZXRGcmFtZUlkZW50aWZpZXIo
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIHJlY29yZCwgRnJhbWUqKTsKIAogICAgIHZvaWQg
ZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKFRpbWVsaW5lUmVjb3JkVHlwZSk7CiAKLSAgICB2b2lk
IHNldEhlYXBTaXplU3RhdGlzdGljcyhJbnNwZWN0b3JPYmplY3QqIHJlY29yZCk7CisgICAgdm9p
ZCBzZXRIZWFwU2l6ZVN0YXRpc3RpY3MoSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIHJlY29y
ZCk7CiAgICAgdm9pZCBjb21taXRGcmFtZVJlY29yZCgpOwogCi0gICAgdm9pZCBhZGRSZWNvcmRU
b1RpbWVsaW5lKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiwgVGltZWxpbmVSZWNvcmRUeXBl
KTsKLSAgICB2b2lkIGlubmVyQWRkUmVjb3JkVG9UaW1lbGluZShQYXNzUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4sIFRpbWVsaW5lUmVjb3JkVHlwZSk7CisgICAgdm9pZCBhZGRSZWNvcmRUb1RpbWVs
aW5lKFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+LCBUaW1lbGluZVJlY29y
ZFR5cGUpOworICAgIHZvaWQgaW5uZXJBZGRSZWNvcmRUb1RpbWVsaW5lKFBhc3NSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+LCBUaW1lbGluZVJlY29yZFR5cGUpOwogICAgIHZvaWQg
Y2xlYXJSZWNvcmRTdGFjaygpOwogCiAgICAgdm9pZCBsb2NhbFRvUGFnZVF1YWQoY29uc3QgUmVu
ZGVyT2JqZWN0JiwgY29uc3QgTGF5b3V0UmVjdCYsIEZsb2F0UXVhZCopOwpAQCAtMjY2LDcgKzI2
Nyw3IEBAIHByaXZhdGU6CiAKICAgICBpbnQgbV9pZDsKICAgICBpbnQgbV9tYXhDYWxsU3RhY2tE
ZXB0aDsKLSAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtX3BlbmRpbmdGcmFtZVJlY29yZDsK
KyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1fcGVuZGluZ0ZyYW1lUmVj
b3JkOwogICAgIEluc3BlY3RvclR5cGUgbV9pbnNwZWN0b3JUeXBlOwogICAgIEluc3BlY3RvckNs
aWVudCogbV9jbGllbnQ7CiAgICAgV2Vha1B0ckZhY3Rvcnk8SW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dD4gbV93ZWFrRmFjdG9yeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yV2ViQWdlbnRCYXNlLmgKc2ltaWxhcml0eSBpbmRleCA2OSUKcmVuYW1lIGZyb20gU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaApyZW5hbWUgdG8gU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5oCmluZGV4IDRmZDAz
NTMuLmRmY2M0YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JBZ2VudFJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
cldlYkFnZW50QmFzZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNCwy
OSArMjQsMjggQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBJbnNwZWN0b3JBZ2Vu
dFJlZ2lzdHJ5X2gKLSNkZWZpbmUgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeV9oCisjaWZuZGVmIElu
c3BlY3RvcldlYkFnZW50QmFzZV9oCisjZGVmaW5lIEluc3BlY3RvcldlYkFnZW50QmFzZV9oCiAK
LSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlICJJbnNwZWN0b3JGb3J3YXJk
aW5nLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOworY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsK
IAotY2xhc3MgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeSB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBhcHBl
bmQoUGFzc093blB0cjxJbnNwZWN0b3JCYXNlQWdlbnQ+KTsKK2NsYXNzIEluc3BlY3RvckFnZW50
QmFzZSA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50QmFzZSB7Citwcm90ZWN0ZWQ6
CisgICAgSW5zcGVjdG9yQWdlbnRCYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICAgICAgOiBJbnNwZWN0b3I6Okluc3Bl
Y3RvckFnZW50QmFzZShuYW1lKQorICAgICAgICAsIG1faW5zdHJ1bWVudGluZ0FnZW50cyhpbnN0
cnVtZW50aW5nQWdlbnRzKQorICAgIHsKKyAgICB9CiAKLSAgICB2b2lkIGRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlciopOwotICAgIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKTsK
LSAgICB2b2lkIGRpc2NhcmRBZ2VudHMoKTsKLQotcHJpdmF0ZToKLSAgICBWZWN0b3I8T3duUHRy
PEluc3BlY3RvckJhc2VBZ2VudD4+IG1fYWdlbnRzOworICAgIEluc3RydW1lbnRpbmdBZ2VudHMq
IG1faW5zdHJ1bWVudGluZ0FnZW50czsKIH07Ci0KKyAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAotI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckFnZW50UmVnaXN0cnlfaCkKKyNlbmRp
ZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JXZWJBZ2VudEJhc2VfaCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCmluZGV4IDMyODAxYzYuLjg4
NDU2YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3Jr
ZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcldvcmtl
ckFnZW50LmNwcApAQCAtMzYsMTMgKzM2LDE1IEBACiAKICNpbmNsdWRlICJJbnNwZWN0b3JGb3J3
YXJkaW5nLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKLSNpbmNsdWRlICJJbnNw
ZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIgorI2luY2x1ZGUg
PGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6V29y
a2VyRnJvbnRlbmRDaGFubmVsIDogcHVibGljIFdvcmtlckdsb2JhbFNjb3BlUHJveHk6OlBhZ2VJ
bnNwZWN0b3IgewpAQCAtMTA3LDcgKzEwOSw3IEBAIFBhc3NPd25QdHI8SW5zcGVjdG9yV29ya2Vy
QWdlbnQ+IEluc3BlY3RvcldvcmtlckFnZW50OjpjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50CiB9
CiAKIEluc3BlY3RvcldvcmtlckFnZW50OjpJbnNwZWN0b3JXb3JrZXJBZ2VudChJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50
KEFTQ0lJTGl0ZXJhbCgiV29ya2VyIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNw
ZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJXb3JrZXIiKSwgaW5zdHJ1bWVudGluZ0FnZW50
cykKICAgICAsIG1fZW5hYmxlZChmYWxzZSkKICAgICAsIG1fc2hvdWxkUGF1c2VEZWRpY2F0ZWRX
b3JrZXJPblN0YXJ0KGZhbHNlKQogewpAQCAtMTE5LDcgKzEyMSw3IEBAIEluc3BlY3Rvcldvcmtl
ckFnZW50Ojp+SW5zcGVjdG9yV29ya2VyQWdlbnQoKQogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50
cy0+c2V0SW5zcGVjdG9yV29ya2VyQWdlbnQoMCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yV29ya2Vy
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmRE
aXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENo
YW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsK
ICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yV29y
a2VyRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERp
c3BhdGNoZXIgPSBJbnNwZWN0b3JXb3JrZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tl
bmREaXNwYXRjaGVyLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvcldvcmtlckFnZW50LmgKaW5kZXggYWI2MjIxYS4uZWE0NzVlZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmgKQEAgLTMxLDEyICszMSwx
NiBAQAogI2lmbmRlZiBJbnNwZWN0b3JXb3JrZXJBZ2VudF9oCiAjZGVmaW5lIEluc3BlY3Rvcldv
cmtlckFnZW50X2gKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFn
ZW50QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIEluc3BlY3RvciB7CiBjbGFz
cyBJbnNwZWN0b3JPYmplY3Q7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluc3Bl
Y3RvcldvcmtlckZyb250ZW5kRGlzcGF0Y2hlcjsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7
CiBjbGFzcyBVUkw7CkBAIC00NCwxMiArNDgsMTIgQEAgY2xhc3MgV29ya2VyR2xvYmFsU2NvcGVQ
cm94eTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3Rvcldv
cmtlckFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3Rvcldv
cmtlckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JXb3JrZXJBZ2Vu
dCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JXb3JrZXJCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPElu
c3BlY3RvcldvcmtlckFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyopOwogICAgIH5J
bnNwZWN0b3JXb3JrZXJBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0
b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICAvLyBD
YWxsZWQgZnJvbSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24KQEAgLTYzLDcgKzY3LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBjYW5JbnNwZWN0V29ya2VycyhFcnJvclN0cmluZyosIGJv
b2wqKTsKICAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdFRvV29ya2VyKEVycm9yU3RyaW5nKiwgaW50
IHdvcmtlcklkKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdEZyb21Xb3JrZXIoRXJyb3JT
dHJpbmcqLCBpbnQgd29ya2VySWQpOwotICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZVRvV29y
a2VyKEVycm9yU3RyaW5nKiwgaW50IHdvcmtlcklkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiYgbWVzc2FnZSk7CisgICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlVG9Xb3JrZXIoRXJy
b3JTdHJpbmcqLCBpbnQgd29ya2VySWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4mIG1lc3NhZ2UpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBdXRvY29ubmVjdFRvV29y
a2VycyhFcnJvclN0cmluZyosIGJvb2wgdmFsdWUpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuY3BwCmluZGV4IDhjZmIzMjgu
LjYyOGYxMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50
aW5nQWdlbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGlu
Z0FnZW50cy5jcHAKQEAgLTQwLDYgKzQwLDggQEAKICNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JD
b250cm9sbGVyLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAordXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbnN0cnVtZW50aW5nQWdl
bnRzOjpJbnN0cnVtZW50aW5nQWdlbnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IDk2OWQzMGQuLjVjY2E0NDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApA
QCAtNDYsNiArNDYsOCBAQCBzdGF0aWMgc2l6ZV90IG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6
ZSA9IDEwMCAqIDEwMDAgKiAxMDAwOwogc3RhdGljIHNpemVfdCBtYXhpbXVtU2luZ2xlUmVzb3Vy
Y2VDb250ZW50U2l6ZSA9IDEwICogMTAwMCAqIDEwMDA7CiB9CiAKK3VzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHAKaW5kZXggYmNkODlmMi4uY2VhYmJkMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmNwcApAQCAtNDAs
NyArNDAsOCBAQAogI2luY2x1ZGUgIkluc3BlY3RvckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yRE9NQWdlbnQuaCIKICNpbmNsdWRlICJOb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0
LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNjYsNyArNjcsNyBAQCB2b2lkIFBhZ2VDb25zb2xlQWdlbnQ6OmNsZWFyTWVzc2FnZXMo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nKQogY2xhc3MgSW5zcGVjdGFibGVOb2RlIDogcHVibGlj
IEluamVjdGVkU2NyaXB0SG9zdDo6SW5zcGVjdGFibGVPYmplY3QgewogcHVibGljOgogICAgIGV4
cGxpY2l0IEluc3BlY3RhYmxlTm9kZShOb2RlKiBub2RlKSA6IG1fbm9kZShub2RlKSB7IH0KLSAg
ICB2aXJ0dWFsIFNjcmlwdFZhbHVlIGdldChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCisgICAgdmly
dHVhbCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBnZXQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdDo6bm9kZUFzU2NyaXB0VmFs
dWUoc3RhdGUsIG1fbm9kZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Q
YWdlRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggODdmYWJlZS4uMDRkNDc5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCkBAIC00MSw2ICs0MSw4
IEBACiAjaW5jbHVkZSAiUGFnZUNvbnNvbGUuaCIKICNpbmNsdWRlICJQYWdlU2NyaXB0RGVidWdT
ZXJ2ZXIuaCIKIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBQYXNzT3duUHRyPFBhZ2VEZWJ1Z2dlckFnZW50PiBQYWdlRGVidWdnZXJBZ2VudDo6
Y3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3Rv
clBhZ2VBZ2VudCogcGFnZUFnZW50LCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2Ny
aXB0TWFuYWdlciwgSW5zcGVjdG9yT3ZlcmxheSogb3ZlcmxheSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmgKaW5kZXggNTU4NjMxMS4uYTVmODE4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmgKQEAgLTMyLDYg
KzMyLDcgQEAKICNkZWZpbmUgUGFnZURlYnVnZ2VyQWdlbnRfaAogCiAjaWYgRU5BQkxFKEpBVkFT
Q1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRShJTlNQRUNUT1IpCisKICNpbmNsdWRlICJJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAiUGFnZVNjcmlwdERlYnVnU2VydmVyLmgiCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcAppbmRleCA1
N2IzYjMwLi5hMWI2Nzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFn
ZVJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50
aW1lQWdlbnQuY3BwCkBAIC00NSw3ICs0NSw5IEBACiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAKLXVzaW5nIFdlYkNvcmU6OlR5cGVC
dWlsZGVyOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0RGVzY3JpcHRpb247Cit1c2luZyBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0RGVzY3JpcHRpb247
CisKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNjMsNyArNjUsNyBAQCBQYWdlUnVudGltZUFnZW50Ojp+UGFnZVJ1bnRpbWVBZ2VudCgpCiAg
ICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRQYWdlUnVudGltZUFnZW50KDApOwogfQogCi12
b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBQYWdlUnVudGltZUFnZW50OjpkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
IGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNw
YXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3JSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAg
IG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JSdW50aW1lQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1BhZ2VSdW50aW1lQWdlbnQuaAppbmRleCBlOGIzM2IyLi5jZDA0ZDk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmgKQEAgLTUxLDcgKzUxLDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBhZ2VSdW50aW1lQWdlbnQoaW5z
dHJ1bWVudGluZ0FnZW50cywgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBwYWdlLCBwYWdlQWdlbnQp
KTsKICAgICB9CiAgICAgdmlydHVhbCB+UGFnZVJ1bnRpbWVBZ2VudCgpOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvU2NyaXB0QXJndW1lbnRzLmNwcAppbmRleCA4OWI5YTBiLi4zNjU3YTk4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNwcApAQCAtMzEsMTYgKzMxLDE2
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2NyaXB0QXJndW1lbnRzLmgiCiAK
LSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVl
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+
IFNjcmlwdEFyZ3VtZW50czo6Y3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgVmVj
dG9yPFNjcmlwdFZhbHVlPiYgYXJndW1lbnRzKQorUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+
IFNjcmlwdEFyZ3VtZW50czo6Y3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgVmVj
dG9yPERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlPiYgYXJndW1lbnRzKQogewogICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU2NyaXB0QXJndW1lbnRzKHNjcmlwdFN0YXRlLCBhcmd1bWVudHMpKTsKIH0K
IAotU2NyaXB0QXJndW1lbnRzOjpTY3JpcHRBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUqIHNjcmlw
dFN0YXRlLCBWZWN0b3I8U2NyaXB0VmFsdWU+JiBhcmd1bWVudHMpCitTY3JpcHRBcmd1bWVudHM6
OlNjcmlwdEFyZ3VtZW50cyhKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIFZlY3RvcjxEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZT4mIGFyZ3VtZW50cykKICAgICA6IG1fZ2xvYmFsT2JqZWN0KHNj
cmlwdFN0YXRlLT52bSgpLCBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKQogewog
ICAgIG1fYXJndW1lbnRzLnN3YXAoYXJndW1lbnRzKTsKQEAgLTUwLDcgKzUwLDcgQEAgU2NyaXB0
QXJndW1lbnRzOjp+U2NyaXB0QXJndW1lbnRzKCkKIHsKIH0KIAotY29uc3QgU2NyaXB0VmFsdWUg
JlNjcmlwdEFyZ3VtZW50czo6YXJndW1lbnRBdChzaXplX3QgaW5kZXgpIGNvbnN0Citjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSAmU2NyaXB0QXJndW1lbnRzOjphcmd1bWVudEF0KHNpemVf
dCBpbmRleCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9hcmd1bWVudHMuc2l6ZSgpID4gaW5kZXgp
OwogICAgIHJldHVybiBtX2FyZ3VtZW50c1tpbmRleF07CkBAIC02OCw3ICs2OCw3IEBAIGJvb2wg
U2NyaXB0QXJndW1lbnRzOjpnZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcoU3RyaW5nJiByZXN1bHQs
IGJvb2wgY2hlY2tGb3JOdWxsCiAgICAgaWYgKCFhcmd1bWVudENvdW50KCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1ZSA9IGFyZ3VtZW50QXQo
MCk7CisgICAgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlID0gYXJndW1lbnRB
dCgwKTsKICAgICBpZiAoY2hlY2tGb3JOdWxsT3JVbmRlZmluZWQgJiYgKHZhbHVlLmlzTnVsbCgp
IHx8IHZhbHVlLmlzVW5kZWZpbmVkKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaAppbmRleCAxNzQzOWEwLi40N2E5
NjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oCkBAIC0x
LDEwICsxLDEwIEBACiAvKgogICogQ29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiAKKyAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
ICAqIG1ldDoKLSAqIAorICoKICAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCkBAIC0x
NCw3ICsxNCw3IEBACiAgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCiAgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQogICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqIAorICoKICAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKICAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCiAgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKQEAgLTM3LDYgKzM3LDEwIEBACiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CituYW1lc3BhY2UgRGVwcmVjYXRlZCB7CitjbGFzcyBTY3JpcHRWYWx1ZTsKK30KKwogbmFtZXNw
YWNlIEpTQyB7CiBjbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsKQEAgLTQ0
LDE1ICs0OCwxMyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdDsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBTY3JpcHRWYWx1ZTsKLQogY2xhc3MgU2NyaXB0QXJndW1lbnRzIDogcHVibGlj
IFJlZkNvdW50ZWQ8U2NyaXB0QXJndW1lbnRzPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqLCBWZWN0b3I8U2Ny
aXB0VmFsdWU+JiBhcmd1bWVudHMpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcmlwdEFyZ3Vt
ZW50cz4gY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiwgVmVjdG9yPERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlPiYgYXJndW1lbnRzKTsKIAogICAgIH5TY3JpcHRBcmd1bWVudHMoKTsKIAotICAgIGNvbnN0
IFNjcmlwdFZhbHVlJiBhcmd1bWVudEF0KHNpemVfdCkgY29uc3Q7CisgICAgY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmIGFyZ3VtZW50QXQoc2l6ZV90KSBjb25zdDsKICAgICBzaXplX3Qg
YXJndW1lbnRDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJndW1lbnRzLnNpemUoKTsgfQogCiAg
ICAgSlNDOjpFeGVjU3RhdGUqIGdsb2JhbFN0YXRlKCkgY29uc3Q7CkBAIC02MSwxMCArNjMsMTAg
QEAgcHVibGljOgogICAgIGJvb2wgaXNFcXVhbChTY3JpcHRBcmd1bWVudHMqKSBjb25zdDsKIAog
cHJpdmF0ZToKLSAgICBTY3JpcHRBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUqLCBWZWN0b3I8U2Ny
aXB0VmFsdWU+JiBhcmd1bWVudHMpOworICAgIFNjcmlwdEFyZ3VtZW50cyhKU0M6OkV4ZWNTdGF0
ZSosIFZlY3RvcjxEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZT4mIGFyZ3VtZW50cyk7CiAKICAgICBK
U0M6OlN0cm9uZzxKU0M6OkpTR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKLSAgICBWZWN0
b3I8U2NyaXB0VmFsdWU+IG1fYXJndW1lbnRzOworICAgIFZlY3RvcjxEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZT4gbV9hcmd1bWVudHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuY3BwCmluZGV4IDFhYmJkNzUu
LmFiZTllMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxs
RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUu
Y3BwCkBAIC0zMiw5ICszMiwxMSBAQAogI2luY2x1ZGUgIlNjcmlwdENhbGxGcmFtZS5oIgogCiAj
aW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMu
aCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFNjcmlwdENhbGxGcmFtZTo6U2NyaXB0Q2FsbEZyYW1lKGNvbnN0IFN0cmluZyYg
ZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNjcmlwdE5hbWUsIHVuc2lnbmVkIGxpbmVOdW1i
ZXIsIHVuc2lnbmVkIGNvbHVtbikKQEAgLTU4LDkgKzYwLDkgQEAgYm9vbCBTY3JpcHRDYWxsRnJh
bWU6OmlzRXF1YWwoY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBvKSBjb25zdAogfQogCiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNhbGxGcmFt
ZT4gU2NyaXB0Q2FsbEZyYW1lOjpidWlsZEluc3BlY3Rvck9iamVjdCgpIGNvbnN0CitQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNhbGxGcmFtZT4gU2NyaXB0Q2Fs
bEZyYW1lOjpidWlsZEluc3BlY3Rvck9iamVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFR5cGVC
dWlsZGVyOjpDb25zb2xlOjpDYWxsRnJhbWU6OmNyZWF0ZSgpCisgICAgcmV0dXJuIEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNhbGxGcmFtZTo6Y3JlYXRlKCkKICAgICAgICAgLnNl
dEZ1bmN0aW9uTmFtZShtX2Z1bmN0aW9uTmFtZSkKICAgICAgICAgLnNldFVybChtX3NjcmlwdE5h
bWUpCiAgICAgICAgIC5zZXRMaW5lTnVtYmVyKG1fbGluZU51bWJlcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuaAppbmRleCA2N2YwZDM2Li5kNmRjZmEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5oCkBAIC0zMiwxNSArMzIs
MTcgQEAKICNkZWZpbmUgU2NyaXB0Q2FsbEZyYW1lX2gKIAogI2lmIEVOQUJMRShJTlNQRUNUT1Ip
Ci0jaW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JX
ZWJUeXBlQnVpbGRlcnMuaCIKICNlbmRpZgogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotCitu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKIGNsYXNzIEluc3BlY3Rvck9iamVjdDsKK30KKworbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBTY3JpcHRDYWxsRnJhbWUgIHsKIHB1YmxpYzoKQEAgLTU1
LDcgKzU3LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNFcXVhbChjb25zdCBTY3JpcHRDYWxsRnJh
bWUmKSBjb25zdDsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgUGFzc1JlZlB0cjxUeXBl
QnVpbGRlcjo6Q29uc29sZTo6Q2FsbEZyYW1lPiBidWlsZEluc3BlY3Rvck9iamVjdCgpIGNvbnN0
OworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q2FsbEZy
YW1lPiBidWlsZEluc3BlY3Rvck9iamVjdCgpIGNvbnN0OwogI2VuZGlmCiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwCmluZGV4IGU2OTRi
ZjEuLmM0YWYxYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRD
YWxsU3RhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3Rh
Y2suY3BwCkBAIC0zMSw4ICszMSwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlNjcmlwdENhbGxTdGFjay5oIgogCi0jaW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIK
LSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJUeXBl
QnVpbGRlcnMuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNzks
OSArODEsOSBAQCBib29sIFNjcmlwdENhbGxTdGFjazo6aXNFcXVhbChTY3JpcHRDYWxsU3RhY2sq
IG8pIGNvbnN0CiB9CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNhbGxGcmFtZT4+IFNjcmlwdENhbGxT
dGFjazo6YnVpbGRJbnNwZWN0b3JBcnJheSgpIGNvbnN0CitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNhbGxG
cmFtZT4+IFNjcmlwdENhbGxTdGFjazo6YnVpbGRJbnNwZWN0b3JBcnJheSgpIGNvbnN0CiB7Ci0g
ICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q2FsbEZy
YW1lPj4gZnJhbWVzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDb25zb2xlOjpD
YWxsRnJhbWU+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q2FsbEZyYW1lPj4gZnJhbWVz
ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q29uc29sZTo6Q2FsbEZyYW1lPjo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX2ZyYW1lcy5zaXplKCk7IGkrKykKICAgICAgICAgZnJhbWVzLT5hZGRJdGVtKG1fZnJhbWVz
LmF0KGkpLmJ1aWxkSW5zcGVjdG9yT2JqZWN0KCkpOwogICAgIHJldHVybiBmcmFtZXM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmgKaW5kZXggZTBkN2ZkNS4uMTk3
NWRhNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3Rh
Y2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmgKQEAg
LTMyLDcgKzMyLDcgQEAKICNkZWZpbmUgU2NyaXB0Q2FsbFN0YWNrX2gKIAogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCi0jaW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKKyNpbmNsdWRlICJJ
bnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCIKICNlbmRpZgogCiAjaW5jbHVkZSAiU2NyaXB0Q2Fs
bEZyYW1lLmgiCkBAIC00Miw4ICs0Miw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgSW5zcGVjdG9yQXJyYXk7Ci0KIGNsYXNzIFNjcmlwdENhbGxTdGFjayA6IHB1YmxpYyBSZWZD
b3VudGVkPFNjcmlwdENhbGxTdGFjaz4gewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBzaXpl
X3QgbWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSA9IDIwMDsKQEAgLTU4LDcgKzU2LDcgQEAgcHVi
bGljOgogICAgIGJvb2wgaXNFcXVhbChTY3JpcHRDYWxsU3RhY2sqKSBjb25zdDsKIAogI2lmIEVO
QUJMRShJTlNQRUNUT1IpCi0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1
aWxkZXI6OkNvbnNvbGU6OkNhbGxGcmFtZT4+IGJ1aWxkSW5zcGVjdG9yQXJyYXkoKSBjb25zdDsK
KyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNhbGxGcmFtZT4+IGJ1aWxkSW5zcGVjdG9yQXJyYXkoKSBj
b25zdDsKICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1NjcmlwdERlYnVnTGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9T
Y3JpcHREZWJ1Z0xpc3RlbmVyLmgKaW5kZXggNWJjYTc1MS4uMGViNGZiMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnTGlzdGVuZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdMaXN0ZW5lci5oCkBAIC0zNyw4ICszNywx
MSBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEZXByZWNhdGVkIHsKIGNs
YXNzIFNjcmlwdFZhbHVlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcmlw
dERlYnVnTGlzdGVuZXIgewogcHVibGljOgpAQCAtNjgsNyArNzEsNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUGFyc2VTb3VyY2UoU291cmNlSUQsIGNvbnN0IFNjcmlwdCYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZmFpbGVkVG9QYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiBkYXRhLCBpbnQgZmlyc3RMaW5lLCBpbnQgZXJyb3JMaW5lLCBjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZShK
U0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBjb25zdCBTY3Jp
cHRWYWx1ZSYgZXhjZXB0aW9uKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKEpTQzo6
RXhlY1N0YXRlKiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBleGNlcHRpb24pID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkQ29udGludWUoKSA9IDA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwCmluZGV4IDhiYWFiOWUuLjlmMmY3ZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3Rv
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3Rv
cnkuY3BwCkBAIC0zNiwxNSArMzYsMTcgQEAKIAogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVk
ZSAiRmxvYXRRdWFkLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAi
SW50UmVjdC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJl
cXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0
Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIgorI2luY2x1
ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRp
bWUuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5Ojpj
cmVhdGVHZW5lcmljUmVjb3JkKGRvdWJsZSBzdGFydFRpbWUsIGludCBtYXhDYWxsU3RhY2tEZXB0
aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZh
Y3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3Rvcnku
aAppbmRleCBkYjQ0YjFlLi5lNGJmOTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5oCkBAIC0zMSw5ICszMSw4IEBACiAjaWZuZGVmIFRp
bWVsaW5lUmVjb3JkRmFjdG9yeV9oCiAjZGVmaW5lIFRpbWVsaW5lUmVjb3JkRmFjdG9yeV9oCiAK
LSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJVUkwuaCIKLSNpbmNsdWRl
ICJMYXlvdXRSZWN0LmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKQEAgLTQxLDY0ICs0MCw2MiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBF
dmVudDsKICAgICBjbGFzcyBGbG9hdFF1YWQ7Ci0gICAgY2xhc3MgSW5zcGVjdG9yT2JqZWN0Owot
ICAgIGNsYXNzIEludFJlY3Q7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogICAgIGNsYXNz
IFJlc291cmNlUmVzcG9uc2U7CiAKICAgICBjbGFzcyBUaW1lbGluZVJlY29yZEZhY3Rvcnkgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBj
cmVhdGVHZW5lcmljUmVjb3JkKGRvdWJsZSBzdGFydFRpbWUsIGludCBtYXhDYWxsU3RhY2tEZXB0
aCk7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlQmFj
a2dyb3VuZFJlY29yZChkb3VibGUgc3RhcnRUaW1lLCBjb25zdCBTdHJpbmcmIHRocmVhZCk7Cisg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVh
dGVHZW5lcmljUmVjb3JkKGRvdWJsZSBzdGFydFRpbWUsIGludCBtYXhDYWxsU3RhY2tEZXB0aCk7
CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBj
cmVhdGVCYWNrZ3JvdW5kUmVjb3JkKGRvdWJsZSBzdGFydFRpbWUsIGNvbnN0IFN0cmluZyYgdGhy
ZWFkKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0
ZUdDRXZlbnREYXRhKGNvbnN0IHNpemVfdCB1c2VkSGVhcFNpemVEZWx0YSk7CisgICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVHQ0V2ZW50
RGF0YShjb25zdCBzaXplX3QgdXNlZEhlYXBTaXplRGVsdGEpOwogCi0gICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlRnVuY3Rpb25DYWxsRGF0YShjb25zdCBT
dHJpbmcmIHNjcmlwdE5hbWUsIGludCBzY3JpcHRMaW5lKTsKKyAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUZ1bmN0aW9uQ2FsbERhdGEo
Y29uc3QgU3RyaW5nJiBzY3JpcHROYW1lLCBpbnQgc2NyaXB0TGluZSk7CiAKLSAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVFdmVudERpc3BhdGNoRGF0YShj
b25zdCBFdmVudCYpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdD4gY3JlYXRlRXZlbnREaXNwYXRjaERhdGEoY29uc3QgRXZlbnQmKTsKIAotICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUdlbmVyaWNUaW1l
ckRhdGEoaW50IHRpbWVySWQpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlR2VuZXJpY1RpbWVyRGF0YShpbnQgdGltZXJJZCk7CiAK
LSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVUaW1lcklu
c3RhbGxEYXRhKGludCB0aW1lcklkLCBpbnQgdGltZW91dCwgYm9vbCBzaW5nbGVTaG90KTsKKyAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0
ZVRpbWVySW5zdGFsbERhdGEoaW50IHRpbWVySWQsIGludCB0aW1lb3V0LCBib29sIHNpbmdsZVNo
b3QpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRl
WEhSUmVhZHlTdGF0ZUNoYW5nZURhdGEoY29uc3QgU3RyaW5nJiB1cmwsIGludCByZWFkeVN0YXRl
KTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
IGNyZWF0ZVhIUlJlYWR5U3RhdGVDaGFuZ2VEYXRhKGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgcmVh
ZHlTdGF0ZSk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBj
cmVhdGVYSFJMb2FkRGF0YShjb25zdCBTdHJpbmcmIHVybCk7CisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVYSFJMb2FkRGF0YShjb25z
dCBTdHJpbmcmIHVybCk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBjcmVhdGVFdmFsdWF0ZVNjcmlwdERhdGEoY29uc3QgU3RyaW5nJiwgZG91YmxlIGxpbmVO
dW1iZXIpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdD4gY3JlYXRlRXZhbHVhdGVTY3JpcHREYXRhKGNvbnN0IFN0cmluZyYsIGRvdWJsZSBsaW5l
TnVtYmVyKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNy
ZWF0ZVRpbWVTdGFtcERhdGEoY29uc3QgU3RyaW5nJik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVUaW1lU3RhbXBEYXRhKGNvbnN0
IFN0cmluZyYpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
Y3JlYXRlUmVzb3VyY2VTZW5kUmVxdWVzdERhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlUmVzb3VyY2VTZW5kUmVxdWVzdERhdGEoY29uc3Qg
U3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogCi0gICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlU2NoZWR1bGVSZXNvdXJjZVJl
cXVlc3REYXRhKGNvbnN0IFN0cmluZyYpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3REYXRh
KGNvbnN0IFN0cmluZyYpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gY3JlYXRlUmVzb3VyY2VSZWNlaXZlUmVzcG9uc2VEYXRhKGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVSZXNvdXJjZVJlY2VpdmVSZXNw
b25zZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVJl
Y2VpdmVSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGludCBsZW5ndGgpOwor
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3Jl
YXRlUmVjZWl2ZVJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgaW50IGxlbmd0
aCk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVS
ZXNvdXJjZUZpbmlzaERhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGJvb2wgZGlkRmFpbCwg
ZG91YmxlIGZpbmlzaFRpbWUpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlUmVzb3VyY2VGaW5pc2hEYXRhKGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkLCBib29sIGRpZEZhaWwsIGRvdWJsZSBmaW5pc2hUaW1lKTsKIAotICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUxheW91dERhdGEodW5zaWdu
ZWQgZGlydHlPYmplY3RzLCB1bnNpZ25lZCB0b3RhbE9iamVjdHMsIGJvb2wgcGFydGlhbExheW91
dCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiBjcmVhdGVMYXlvdXREYXRhKHVuc2lnbmVkIGRpcnR5T2JqZWN0cywgdW5zaWduZWQgdG90YWxP
YmplY3RzLCBib29sIHBhcnRpYWxMYXlvdXQpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gY3JlYXRlRGVjb2RlSW1hZ2VEYXRhKGNvbnN0IFN0cmluZyYgaW1h
Z2VUeXBlKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+IGNyZWF0ZURlY29kZUltYWdlRGF0YShjb25zdCBTdHJpbmcmIGltYWdlVHlwZSk7CiAK
LSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVSZXNpemVJ
bWFnZURhdGEoYm9vbCBzaG91bGRDYWNoZSk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVSZXNpemVJbWFnZURhdGEoYm9vbCBzaG91
bGRDYWNoZSk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBj
cmVhdGVNYXJrRGF0YShib29sIGlzTWFpbkZyYW1lKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZU1hcmtEYXRhKGJvb2wgaXNNYWlu
RnJhbWUpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3Jl
YXRlUGFyc2VIVE1MRGF0YSh1bnNpZ25lZCBzdGFydExpbmUpOworICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlUGFyc2VIVE1MRGF0YSh1
bnNpZ25lZCBzdGFydExpbmUpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gY3JlYXRlQW5pbWF0aW9uRnJhbWVEYXRhKGludCBjYWxsYmFja0lkKTsKKyAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUFu
aW1hdGlvbkZyYW1lRGF0YShpbnQgY2FsbGJhY2tJZCk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVQYWludERhdGEoY29uc3QgRmxvYXRRdWFkJik7
CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBj
cmVhdGVQYWludERhdGEoY29uc3QgRmxvYXRRdWFkJik7CiAKLSAgICAgICAgc3RhdGljIHZvaWQg
YXBwZW5kTGF5b3V0Um9vdChJbnNwZWN0b3JPYmplY3QqIGRhdGEsIGNvbnN0IEZsb2F0UXVhZCYp
OworICAgICAgICBzdGF0aWMgdm9pZCBhcHBlbmRMYXlvdXRSb290KEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0KiBkYXRhLCBjb25zdCBGbG9hdFF1YWQmKTsKIAogI2lmIEVOQUJMRShXRUJfU09D
S0VUUykKLSAgICAgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
Y3JlYXRlV2ViU29ja2V0Q3JlYXRlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQorICAgICAgICBzdGF0aWMgaW5saW5l
IFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVdlYlNvY2tldENy
ZWF0ZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBwcm90b2NvbCkKICAgICAgICAgewotICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gZGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGRhdGEgPSBJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBkYXRhLT5zZXROdW1iZXIoImlkZW50
aWZpZXIiLCBpZGVudGlmaWVyKTsKICAgICAgICAgICAgIGRhdGEtPnNldFN0cmluZygidXJsIiwg
dXJsLnN0cmluZygpKTsKICAgICAgICAgICAgIGlmICghcHJvdG9jb2wuaXNOdWxsKCkpCkBAIC0x
MDYsOSArMTAzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgcmV0dXJuIGRh
dGEucmVsZWFzZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIGlubGluZSBQYXNzUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlR2VuZXJpY1dlYlNvY2tldERhdGEodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyKQorICAgICAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUdlbmVyaWNXZWJTb2NrZXREYXRhKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllcikKICAgICAgICAgewotICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gZGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGRhdGEgPSBJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBkYXRhLT5zZXROdW1iZXIoImlkZW50
aWZpZXIiLCBpZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybiBkYXRhLnJlbGVhc2UoKTsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckNv
bnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyQ29uc29sZUFn
ZW50LmNwcAppbmRleCAxNWJiN2E4Li42NjZhOGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50LmNwcApAQCAtMzQsNiArMzQsOCBAQAogCiAjaW5j
bHVkZSAiV29ya2VyQ29uc29sZUFnZW50LmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV29ya2VyQ29uc29sZUFnZW50OjpXb3JrZXJDb25z
b2xlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggNzEzNmU0Ni4uOTdk
MDBlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2Vy
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFn
ZW50LmNwcApAQCAtMzgsNiArMzgsOCBAQAogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2lu
Y2x1ZGUgPHd0Zi9NZXNzYWdlUXVldWUuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGVm
MjMwMzcuLjdmNWU3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTUxLDggKzUxLDExIEBACiAjaW5jbHVk
ZSAiV29ya2VyUmVwb3J0aW5nUHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJSdW50aW1lQWdlbnQu
aCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCit1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVz
cGFjZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVj
dG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXIuaAppbmRleCA1OGJkYTIwLi5hYTBkOTBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTMzLDE5
ICszMywyMSBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3Rv
ckFnZW50UmVnaXN0cnkuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNs
dWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVj
dG9yQWdlbnRSZWdpc3RyeS5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCituYW1lc3BhY2UgSW5z
cGVjdG9yIHsKK2NsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOworfQorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKLWNsYXNzIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOwotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwog
Y2xhc3MgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOwogY2xhc3MgSW5zcGVjdG9yUnVudGltZUFn
ZW50OwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKQEAgLTcyLDkgKzc0LDkgQEAgcHJpdmF0
ZToKICAgICBSZWZQdHI8SW5zdHJ1bWVudGluZ0FnZW50cz4gbV9pbnN0cnVtZW50aW5nQWdlbnRz
OwogICAgIE93blB0cjxJbmplY3RlZFNjcmlwdE1hbmFnZXI+IG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOwogICAgIEluc3BlY3RvclJ1bnRpbWVBZ2VudCogbV9ydW50aW1lQWdlbnQ7Ci0gICAgSW5z
cGVjdG9yQWdlbnRSZWdpc3RyeSBtX2FnZW50czsKKyAgICBJbnNwZWN0b3I6Okluc3BlY3RvckFn
ZW50UmVnaXN0cnkgbV9hZ2VudHM7CiAgICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bD4gbV9mcm9udGVuZENoYW5uZWw7Ci0gICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNwcAppbmRleCBiMDdi
NjMzLi4xZWY4MzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2Vy
UnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVu
dGltZUFnZW50LmNwcApAQCAtNDIsNiArNDIsOCBAQAogI2luY2x1ZGUgIldvcmtlclJ1bkxvb3Au
aCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3Rv
cjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXb3JrZXJSdW50aW1lQWdlbnQ6OldvcmtlclJ1
bnRpbWVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgV29ya2VyR2xvYmFsU2Nv
cGUqIHdvcmtlckdsb2JhbFNjb3BlKQpAQCAtNTcsNyArNTksNyBAQCBXb3JrZXJSdW50aW1lQWdl
bnQ6On5Xb3JrZXJSdW50aW1lQWdlbnQoKQogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0
V29ya2VyUnVudGltZUFnZW50KDApOwogfQogCi12b2lkIFdvcmtlclJ1bnRpbWVBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgV29ya2VyUnVu
dGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERp
c3BhdGNoZXIpCiB7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvclJ1bnRpbWVC
YWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaAppbmRleCA2N2Rl
MDhhLi41YjYyOWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2Vy
UnVudGltZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRp
bWVBZ2VudC5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+
V29ya2VyUnVudGltZUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rv
cjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIC8vIFBy
b3RvY29sIGNvbW1hbmRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db25zb2xl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKaW5kZXggYTk3MjJlMS4uMjMy
Y2Y0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCkBAIC00Nyw5ICs0Nyw5IEBACiAjaW5jbHVk
ZSAiU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGUuaCIK
ICNpbmNsdWRlICJTY3JpcHRQcm9maWxlci5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAj
aW5jbHVkZSAiU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQ
b2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3Bw
CmluZGV4IDBiZTlmOTguLmNjNjYzNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q29udGVudFNlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRl
bnRTZWN1cml0eVBvbGljeS5jcHAKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJGb3JtRGF0
YUxpc3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgIlBpbmdMb2FkZXIuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1
cmVzLmgiCkBAIC00NiwxMCArNDUsMTMgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgog
I2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQuaCIKICNpbmNsdWRlICJUZXh0
RW5jb2RpbmcuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBOb3JtYWxseSBXZWJLaXQgdXNlcyAi
c3RhdGljIiBmb3IgaW50ZXJuYWwgbGlua2FnZSwgYnV0IHVzaW5nICJzdGF0aWMiIGZvcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcAppbmRleCA0OWUxODdiLi5iOGQ4Nzc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNw
cApAQCAtODYsNyArODYsNiBAQAogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRl
ICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCiAjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKQEAgLTEwNCw2
ICsxMDMsNyBAQAogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgIm5wcnVudGltZV9pbXBs
LmgiCiAjaW5jbHVkZSAicnVudGltZV9yb290LmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0
VmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkTGVha0NvdW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZUNvbnNvbGUuY3BwCmluZGV4IDBiYjcwNTIuLjgxZjFjZmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZUNvbnNvbGUuY3BwCkBAIC00Miw5ICs0Miw5IEBACiAjaW5jbHVkZSAiU2Ny
aXB0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAi
U2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5j
bHVkZSAiU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
KyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZDYwYzg4NS4uZjg0
NWNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC02MSw3ICs2MSw2
IEBACiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAj
aW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1
ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCkBAIC02OSw2ICs2OCw3IEBACiAjaW5jbHVkZSAi
Y19pbnN0YW5jZS5oIgogI2luY2x1ZGUgIm5wcnVudGltZV9pbXBsLmgiCiAjaW5jbHVkZSAicnVu
dGltZV9yb290LmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRl
IDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgogI2lu
Y2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CkBAIC00NjcsNyArNDY3LDcgQEAgdm9pZCBQbHVnaW5W
aWV3OjpwZXJmb3JtUmVxdWVzdChQbHVnaW5SZXF1ZXN0KiByZXF1ZXN0KQogICAgIAogICAgIC8v
IEV4ZWN1dGluZyBhIHNjcmlwdCBjYW4gY2F1c2UgdGhlIHBsdWdpbiB2aWV3IHRvIGJlIGRlc3Ry
b3llZCwgc28gd2Uga2VlcCBhIHJlZmVyZW5jZSB0byBpdC4KICAgICBSZWZQdHI8UGx1Z2luVmll
dz4gcHJvdGVjdG9yKHRoaXMpOwotICAgIFNjcmlwdFZhbHVlIHJlc3VsdCA9IG1fcGFyZW50RnJh
bWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoanNTdHJpbmcsIHJlcXVlc3QtPnNob3VsZEFsbG93
UG9wdXBzKCkpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHJlc3VsdCA9IG1fcGFyZW50
RnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoanNTdHJpbmcsIHJlcXVlc3QtPnNob3VsZEFs
bG93UG9wdXBzKCkpOwogCiAgICAgaWYgKHRhcmdldEZyYW1lTmFtZS5pc051bGwoKSkgewogICAg
ICAgICBTdHJpbmcgcmVzdWx0U3RyaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CmluZGV4IDgwOWZlOGMuLjAwMDZiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKQEAgLTYzLDcgKzYzLDYgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yT3ZlcmxheS5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1
ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJJbnRlcm5hbFNldHRpbmdzLmgi
CiAjaW5jbHVkZSAiSW50UmVjdC5oIgpAQCAtOTYsNiArOTUsNyBAQAogI2luY2x1ZGUgIlZpZXdw
b3J0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8Ynl0
ZWNvZGUvQ29kZUJsb2NrLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5o
PgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaD4KQEAgLTE2Nyw2ICsx
NjcsOCBAQCB1c2luZyBKU0M6OkpTVmFsdWU7CiB1c2luZyBKU0M6OlNjcmlwdEV4ZWN1dGFibGU7
CiB1c2luZyBKU0M6OlN0YWNrVmlzaXRvcjsKIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAt
MTI4Miw3ICsxMjg0LDcgQEAgcHJpdmF0ZToKICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwog
fTsKIAotU3RyaW5nIEludGVybmFsczo6cGFyc2VyTWV0YURhdGEoU2NyaXB0VmFsdWUgdmFsdWUp
CitTdHJpbmcgSW50ZXJuYWxzOjpwYXJzZXJNZXRhRGF0YShEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSB2YWx1ZSkKIHsKICAgICBKU0M6OlZNKiB2bSA9IGNvbnRleHREb2N1bWVudCgpLT52bSgpOwog
ICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gdm0tPnRvcENhbGxGcmFtZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oCmluZGV4IDI1YmNhZmUuLjEwOTI1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIkNvbnRleHREZXN0cnVj
dGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCiAj
aW5jbHVkZSAiTm9kZUxpc3QuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUg
PGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5o
PgogI2luY2x1ZGUgPHJ1bnRpbWUvRmxvYXQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KQEAgLTE4MSw3ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbWl0SW5zcGVj
dG9yRGlkQmVnaW5GcmFtZSgpOwogICAgIHZvaWQgZW1pdEluc3BlY3RvckRpZENhbmNlbEZyYW1l
KCk7CiAKLSAgICBTdHJpbmcgcGFyc2VyTWV0YURhdGEoU2NyaXB0VmFsdWUgPSBTY3JpcHRWYWx1
ZSgpKTsKKyAgICBTdHJpbmcgcGFyc2VyTWV0YURhdGEoRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUg
PSBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSgpKTsKIAogICAgIGJvb2wgaGFzU3BlbGxpbmdNYXJr
ZXIoaW50IGZyb20sIGludCBsZW5ndGgsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBib29sIGhhc0dy
YW1tYXJNYXJrZXIoaW50IGZyb20sIGludCBsZW5ndGgsIEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5k
ZXggZTE3N2E3MC4uMTM4YmZhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9T
aGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9T
aGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogUGFzc1JlZlB0cjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZUNvbm5lY3RFdmVudChQYXNz
UmVmUHRyPE1lc3NhZ2VQb3J0PiBwcnBQb3J0KQogewogICAgIFJlZlB0cjxNZXNzYWdlUG9ydD4g
cG9ydCA9IHBycFBvcnQ7Ci0gICAgUmVmUHRyPE1lc3NhZ2VFdmVudD4gZXZlbnQgPSBNZXNzYWdl
RXZlbnQ6OmNyZWF0ZShhZG9wdFB0cihuZXcgTWVzc2FnZVBvcnRBcnJheSgxLCBwb3J0KSksIFNj
cmlwdFZhbHVlKCksIFN0cmluZygpLCBTdHJpbmcoKSwgcG9ydCk7CisgICAgUmVmUHRyPE1lc3Nh
Z2VFdmVudD4gZXZlbnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShhZG9wdFB0cihuZXcgTWVzc2Fn
ZVBvcnRBcnJheSgxLCBwb3J0KSksIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCksIFN0cmluZygp
LCBTdHJpbmcoKSwgcG9ydCk7CiAgICAgZXZlbnQtPmluaXRFdmVudChldmVudE5hbWVzKCkuY29u
bmVjdEV2ZW50LCBmYWxzZSwgZmFsc2UpOwogICAgIHJldHVybiBldmVudC5yZWxlYXNlKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IGVj
MmQxOTAuLmZjYmY2NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRXJyb3JFdmVudC5oIgogI2lu
Y2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJF
eGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29uc29sZUluc3RydW1lbnRhdGlv
bi5oIgogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCkBAIC00NCw3
ICs0NSw2IEBACiAjaW5jbHVkZSAiU2NoZWR1bGVkQWN0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0
Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNj
cmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJXb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyTG9jYXRpb24uaCIKQEAg
LTU0LDE0ICs1NCwxMyBAQAogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgIldv
cmtlclRocmVhZGFibGVMb2FkZXIuaCIKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdEV4Y2VwdGlv
bi5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9U
SUZJQ0FUSU9OUykKICNpbmNsdWRlICJOb3RpZmljYXRpb25DZW50ZXIuaCIKICNlbmRpZgogCi0j
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IENsb3NlV29ya2VyR2xvYmFsU2NvcGVUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2sgewpAQCAtMjQxLDcgKzI0MCw3IEBAIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6Omlt
cG9ydFNjcmlwdHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHVybHMsIEV4Y2VwdGlvbkNvZGUmCiAK
ICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRlZChzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIHNjcmlwdExvYWRlci0+aWRlbnRpZmllcigpLCBzY3JpcHRMb2Fk
ZXItPnNjcmlwdCgpKTsKIAotICAgICAgICBTY3JpcHRWYWx1ZSBleGNlcHRpb247CisgICAgICAg
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGV4Y2VwdGlvbjsKICAgICAgICAgbV9zY3JpcHQtPmV2
YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSwgc2NyaXB0TG9h
ZGVyLT5yZXNwb25zZVVSTCgpKSwgJmV4Y2VwdGlvbik7CiAgICAgICAgIGlmICghZXhjZXB0aW9u
Lmhhc05vVmFsdWUoKSkgewogICAgICAgICAgICAgbV9zY3JpcHQtPnNldEV4Y2VwdGlvbihleGNl
cHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCmluZGV4IDUwYmZh
MWQuLmZlZjNlNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhy
ZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKQEAg
LTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIgog
I2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdFNv
dXJjZUNvZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luLmgiCiAjaW5jbHVkZSAiVGhyZWFkR2xvYmFsRGF0YS5oIgogI2luY2x1ZGUgIlVSTC5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCmluZGV4IDE2MWRkMDEuLmMzOWU3NTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxUcmVlVmlld2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAKQEAgLTM4LDEwICszOCwxMCBAQAog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1
ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1
ZGUgIlRleHQuaCIKICNpbmNsdWRlICJYTUxWaWV3ZXJDU1MuaCIKICNpbmNsdWRlICJYTUxWaWV3
ZXJKUy5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1
bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyLmNwcAppbmRleCA3NGE3ZDAwLi45MGVmZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtNDYsNyArNDYsNiBAQAogI2luY2x1
ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTY3JpcHRFbGVtZW50LmgiCiAjaW5j
bHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5j
bHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlRyZWVEZXB0aExpbWl0Lmgi
CiAjaW5jbHVkZSAiWE1MRXJyb3JzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggYzI4ZTc3ZS4uOTVkNzdi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ckxpYnhtbDIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXJMaWJ4bWwyLmNwcApAQCAtNTIsNyArNTIsNiBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVz
cG9uc2UuaCIKICNpbmNsdWRlICJTY3JpcHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0U291
cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURl
Y29kZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0
RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluIGIvU291cmNlL1dlYktpdC9XZWJL
aXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4KaW5k
ZXggNjg1ZjVmMS4uNTZkODViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQudmN4
cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4KKysrIGIvU291
cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhw
b3J0cy5kZWYuaW4KQEAgLTIyMCw3ICsyMjAsNiBAQCBFWFBPUlRTCiAgICAgICAgIHN5bWJvbFdp
dGhQb2ludGVyKD8/MUluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUFFQFha
LCA/PzFJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVFQUFAWFopCiAgICAg
ICAgIHN5bWJvbFdpdGhQb2ludGVyKD9jaGFuZ2VBdHRhY2hlZFdpbmRvd0hlaWdodEBJbnNwZWN0
b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVBRVhJQFosID9jaGFuZ2VBdHRhY2hlZFdp
bmRvd0hlaWdodEBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVFQUFYSUBa
KQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/Y2hhbmdlQXR0YWNoZWRXaW5kb3dXaWR0aEBJ
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVBRVhJQFosID9jaGFuZ2VBdHRh
Y2hlZFdpbmRvd1dpZHRoQEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUVB
QVhJQFopCi0gICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9jb25uZWN0RnJvbnRlbmRASW5zcGVj
dG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYUEFWSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsQDJA
QFosID9jb25uZWN0RnJvbnRlbmRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRRUFBWFBF
QVZJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxAMkBAWikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50
ZXIoP2RvRGlzcGF0Y2hNZXNzYWdlT25Gcm9udGVuZFBhZ2VASW5zcGVjdG9yQ2xpZW50QFdlYkNv
cmVAQFNBX05QQVZQYWdlQDJAQUJWU3RyaW5nQFdURkBAQFosID9kb0Rpc3BhdGNoTWVzc2FnZU9u
RnJvbnRlbmRQYWdlQEluc3BlY3RvckNsaWVudEBXZWJDb3JlQEBTQV9OUEVBVlBhZ2VAMkBBRUJW
U3RyaW5nQFdURkBAQFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9mcm9udGVuZExvYWRl
ZEBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVBRVhYWiwgP2Zyb250ZW5k
TG9hZGVkQEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUVBQVhYWikKICAg
ICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2dldFByb3BlcnR5QFNldHRpbmdzQEluc3BlY3RvckZy
b250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUFFP0FWU3RyaW5nQFdURkBAQUJWNDVAQFosID9n
ZXRQcm9wZXJ0eUBTZXR0aW5nc0BJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVA
QFVFQUE/QVZTdHJpbmdAV1RGQEBBRUJWNDVAQFopCkBAIC00NDksOCArNDQ4LDYgQEAgRVhQT1JU
UwogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/bmVhcmVzdEBUaW1lUmFuZ2VzQFdlYkNvcmVA
QFFCRU5OQFosID9uZWFyZXN0QFRpbWVSYW5nZXNAV2ViQ29yZUBAUUVCQU5OQFopCiAgICAgICAg
IHN5bWJvbFdpdGhQb2ludGVyKD9hZGRAVGltZVJhbmdlc0BXZWJDb3JlQEBRQUVYTk5AWiwgP2Fk
ZEBUaW1lUmFuZ2VzQFdlYkNvcmVAQFFFQUFYTk5AWikKICNlbmRpZgotICAgICAgICBzeW1ib2xX
aXRoUG9pbnRlcig/dG9KU09OU3RyaW5nQEluc3BlY3RvclZhbHVlQFdlYkNvcmVAQFFCRT9BVlN0
cmluZ0BXVEZAQFhaLCA/dG9KU09OU3RyaW5nQEluc3BlY3RvclZhbHVlQFdlYkNvcmVAQFFFQkE/
QVZTdHJpbmdAV1RGQEBYWikKLSAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2J1aWxkT2JqZWN0
Rm9ySGlnaGxpZ2h0ZWROb2RlQEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUJFP0FWPyRQ
YXNzUmVmUHRyQFZJbnNwZWN0b3JPYmplY3RAV2ViQ29yZUBAQFdURkBAWFosID9idWlsZE9iamVj
dEZvckhpZ2hsaWdodGVkTm9kZUBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFFQkE/QVY/
JFBhc3NSZWZQdHJAVkluc3BlY3Rvck9iamVjdEBXZWJDb3JlQEBAV1RGQEBYWikKICAgICAgICAg
c3ltYm9sV2l0aFBvaW50ZXIoP3N0YW5kYXJkRm9udEZhbWlseUBTZXR0aW5nc0BXZWJDb3JlQEBR
QkVBQlZBdG9taWNTdHJpbmdAV1RGQEBXNFVTY3JpcHRDb2RlQEBAWiwgP3N0YW5kYXJkRm9udEZh
bWlseUBTZXR0aW5nc0BXZWJDb3JlQEBRRUJBQUVCVkF0b21pY1N0cmluZ0BXVEZAQFc0VVNjcmlw
dENvZGVAQEBaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/c2VyaWZGb250RmFtaWx5QFNl
dHRpbmdzQFdlYkNvcmVAQFFCRUFCVkF0b21pY1N0cmluZ0BXVEZAQFc0VVNjcmlwdENvZGVAQEBa
LCA/c2VyaWZGb250RmFtaWx5QFNldHRpbmdzQFdlYkNvcmVAQFFFQkFBRUJWQXRvbWljU3RyaW5n
QFdURkBAVzRVU2NyaXB0Q29kZUBAQFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9zYW5z
U2VyaWZGb250RmFtaWx5QFNldHRpbmdzQFdlYkNvcmVAQFFCRUFCVkF0b21pY1N0cmluZ0BXVEZA
QFc0VVNjcmlwdENvZGVAQEBaLCA/c2Fuc1NlcmlmRm9udEZhbWlseUBTZXR0aW5nc0BXZWJDb3Jl
QEBRRUJBQUVCVkF0b21pY1N0cmluZ0BXVEZAQFc0VVNjcmlwdENvZGVAQEBaKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKaW5kZXggZTcxZjRmYy4uNGVlZmQzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCkBAIC0xMTgsNyArMTE4LDYg
QEAKICNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVl
LmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5o
IgogI2luY2x1ZGUgIlNlbGVjdGlvbkhhbmRsZXIuaCIKQEAgLTE3Miw2ICsxNzEsNyBAQAogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ29udGV4dFJlZi5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTU3RyaW5nUmVmLmg+CiAjaW5jbHVkZSA8U2hhcmVkUG9pbnRlci5oPgorI2luY2x1
ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8
c3lzL2tleWNvZGVzLmg+CiAjaW5jbHVkZSA8dW5pY29kZS91c3RyaW5nLmg+IC8vIHBsYXRmb3Jt
IElDVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5kZXggMDQ0NmFiMS4uMjQwY2I2YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMTIt
MDUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVjdG9yIFJlcXVpcmVkIENsYXNzZXMgRG93biBpbnRv
IEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjUzMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIEFwaS9XZWJQYWdlLmNwcDoKKwogMjAxMy0xMi0wMyAgSm9zZXBoIFBlY29yYXJv
ICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggUmVt
b3RlIEluc3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2VtZW50IGludG8gSmF2YVNj
cmlwdENvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCAzMWVlMmI1Li43ZGQ1ZTU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMTItMDUgIEpvc2VwaCBQZWNvcmFybyAgPHBl
Y29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5z
cGVjdG9yIFJlcXVpcmVkIENsYXNzZXMgRG93biBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGV3ay9ld2tfZnJhbWUu
Y3BwOgorCiAyMDEzLTEyLTAzICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+
CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBSZW1vdGUgSW5zcGVjdG9yIGRlYnVnZ2lu
ZyBjb25uZWN0aW9uIG1hbmFnZW1lbnQgaW50byBKYXZhU2NyaXB0Q29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbC5jcHAKaW5kZXggOWM2OGM5MS4uMWE3YTc5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRF
ZmwuY3BwCkBAIC01OSw5ICs1OSw5IEBACiAjaW5jbHVkZSA8UnVudGltZUVuYWJsZWRGZWF0dXJl
cy5oPgogI2luY2x1ZGUgPFNjaGVtZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8U2NyaXB0Q29udHJv
bGxlci5oPgotI2luY2x1ZGUgPFNjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8U2V0dGluZ3MuaD4K
ICNpbmNsdWRlIDxUZXh0SXRlcmF0b3IuaD4KKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1
ZS5oPgogI2luY2x1ZGUgPGJpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPGhp
c3RvcnkvSGlzdG9yeUl0ZW0uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2ZyYW1lLmNwcAppbmRleCBmMmEyMGMzLi5hMDUyYWEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2ZyYW1lLmNwcApAQCAtNTMsNyArNTMsNiBAQAogI2luY2x1ZGUgIlByb2dyZXNz
VHJhY2tlci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNjcmlw
dENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlN1YnN0aXR1dGVEYXRhLmgiCiAjaW5jbHVkZSAiV2luZG93
c0tleWJvYXJkQ29kZXMuaCIKQEAgLTY1LDYgKzY0LDcgQEAKICNpbmNsdWRlIDxFY29yZV9JbnB1
dC5oPgogI2luY2x1ZGUgPEVpbmEuaD4KICNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8Ymlu
ZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxlaW5hX3NhZmV0eV9jaGVja3MuaD4KICNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cKaW5kZXggY2JkZmUyOC4uMWM0OWE0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEyIEBACisyMDEzLTEyLTA1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBs
ZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBNb3JlIEluc3BlY3RvciBSZXF1
aXJlZCBDbGFzc2VzIERvd24gaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1MzI0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6
CisKIDIwMTMtMTItMTAgIEpvYW5tYXJpZSBEaWdncyAgPGpkaWdnc0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIEFYOiBbQVRLXSBDb252ZXJ0IHRoZSBnZXRfdGV4dCBhdGt0ZXN0LmMgdW5pdCB0ZXN0
cyB0byBsYXlvdXQgdGVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3
LmNwcAppbmRleCBmOWQ5YjFkZC4uNjAyMzI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtODUsNyArODUsNiBAQAogI2luY2x1ZGUgIlJlc291cmNl
SGFuZGxlLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUg
IlNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUg
IlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9NRG9jdW1lbnRQcml2YXRlLmgiCiAjaW5j
bHVkZSAid2Via2l0ZG93bmxvYWQuaCIKQEAgLTExNCw2ICsxMTMsNyBAQAogI2luY2x1ZGUgIndl
YmtpdHdlYnBsdWdpbmRhdGFiYXNlcHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdHdlYndpbmRv
d2ZlYXR1cmVzLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vidmlld3ByaXZhdGUuaCIKKyNpbmNsdWRl
IDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+CiAj
aW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRy
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggMWU4ZThhZC4uNmMxOTYzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVk
L05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtNTcsMTEgKzU3LDExIEBACiAjaW1w
b3J0IDxXZWJDb3JlL1Byb3h5U2VydmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3Jp
Z2luLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvU2NyaXB0VmFsdWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVXNlckdlc3R1cmVJbmRpY2F0
b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvbnBydW50aW1lX2ltcGwuaD4KICNpbXBvcnQgPFdlYkNv
cmUvcnVudGltZV9vYmplY3QuaD4KICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgor
I2ltcG9ydCA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbXBvcnQgPG1hY2gvbWFjaC5oPgog
I2ltcG9ydCA8dXRpbGl0eT4KICNpbXBvcnQgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5tbQppbmRleCBlMjVlYmU5Li5hMTRjODg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCkBAIC00Mywx
MiArNDMsMTIgQEAKICNpbXBvcnQgIldlYlVJRGVsZWdhdGUuaCIKICNpbXBvcnQgIldlYlZpZXdJ
bnRlcm5hbC5oIgogI2ltcG9ydCA8YWxnb3JpdGhtPgorI2ltcG9ydCA8YmluZGluZ3MvU2NyaXB0
VmFsdWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvSW5zcGVjdG9yQ29udHJvbGxlci5oPgogI2ltcG9y
dCA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9N
YWluRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9T
Y3JpcHRDb250cm9sbGVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1NjcmlwdFZhbHVlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0IDxXZWJLaXQvRE9NRXh0ZW5zaW9u
cy5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJGcmFtZS5tbQppbmRleCBlNGIyYmVkLi42ZjU4ODZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTg5LDcgKzg5LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUv
UmVuZGVyV2lkZ2V0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNr
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1NjcmlwdFZhbHVlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1NtYXJ0UmVwbGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVBy
b3BlcnRpZXMuaD4KQEAgLTEwMCw2ICs5OSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL2h0bWxlZGl0
aW5nLmg+CiAjaW1wb3J0IDxXZWJDb3JlL21hcmt1cC5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVt
SW50ZXJmYWNlLmg+CisjaW1wb3J0IDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2ltcG9ydCA8
cnVudGltZS9KU0xvY2suaD4KICNpbXBvcnQgPHJ1bnRpbWUvSlNPYmplY3QuaD4KICNpbXBvcnQg
PHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmlu
ZGV4IGRmN2Q2ZjQuLmNkMjdmNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
QEAgLTE2OSw3ICsxNjksNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lRW5hYmxlZEZlYXR1
cmVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvU2NyaXB0VmFsdWUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvU2Vj
dXJpdHlQb2xpY3kuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2V0dGluZ3MuaD4KQEAgLTE4NSw2ICsx
ODQsNyBAQAogI2ltcG9ydCA8V2ViS2l0L0RPTUV4dGVuc2lvbnMuaD4KICNpbXBvcnQgPFdlYktp
dC9ET01Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KKyNpbXBv
cnQgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW1wb3J0IDxtYWNoLW8vZHlsZC5oPgogI2lt
cG9ydCA8b2JqYy9vYmpjLWF1dG8uaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hh
bmdlTG9nCmluZGV4IDRiNTJhNzUuLmQwM2E1MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxMy0xMi0wNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggTW9yZSBJbnNwZWN0b3IgUmVxdWlyZWQg
Q2xhc3NlcyBEb3duIGludG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTMyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAqIFdlYlZp
ZXcuY3BwOgorCiAyMDEzLTEyLTA0ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIFtXaW5dIEV4aXRpbmcgZnJvbSBNZWRpYSBGdWxsIFNjcmVlbiBtb2RlIHZp
YSAnZXNjYXBlJyBrZXkgZG9lcyBub3Qgd29yayBwcm9wZXJseQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3Bw
CmluZGV4IGVhOGJkMTguLjQ5ZDY2Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTk5LDEy
ICs5OSwxMiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEl0ZXJhdG9yLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9KU0RPTUJpbmRpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xs
ZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3QuaD4K
KyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0
cmFzLmg+CiAKICNpZiBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJW
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IGY5ZjVkMDYuLjA4
Mzg0NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCkBAIC0xMzcsNyArMTM3LDYgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nj
aGVtZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xs
YmFyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxiYXJUaGVtZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KQEAgLTE0Nyw2ICsxNDYsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvU3lzdGVtSW5mby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93TWVzc2FnZUJyb2Fk
Y2FzdGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dzVG91Y2guaD4KKyNpbmNsdWRlIDxi
aW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKICNp
ZiBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggN2ZmZWFjMy4uYjEwYjgzZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI0IEBACisyMDEzLTEyLTA1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBs
ZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBNb3JlIEluc3BlY3RvciBSZXF1
aXJlZCBDbGFzc2VzIERvd24gaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1MzI0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHA6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorCisyMDEzLTEyLTA1
ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogUHVzaCBNb3JlIEluc3BlY3RvciBSZXF1aXJlZCBDbGFzc2VzIERvd24gaW50byBK
YXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI1MzI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmg6CisKIDIwMTMtMTItMTAgIERhbiBCZXJu
c3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBBbGwgb2JzZXJ2YWJsZSBQYWdlTG9h
ZFN0YXRlIHByb3BlcnRpZXMgc2hvdWxkIGNoYW5nZSBpbiBhbiBhdG9taWMgZmFzaGlvbiwgd2l0
aCBwcm9wZXJseSBuZXN0ZWQgY2hhbmdlIG5vdGlmaWNhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBlMDBkM2EyLi42MTNk
NWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCkBAIC02MywxMiArNjMsMTIgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlckVtYmVk
ZGVkT2JqZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxWaWV3Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlQ
b2xpY3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Vc2VyR2VzdHVyZUluZGljYXRvci5oPgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVl
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwpAQCAtMTE3OSw3ICsxMTc5LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3JtSmF2
YVNjcmlwdFVSTFJlcXVlc3QoVVJMUmVxdWVzdCogcmVxdWVzdCkKICAgICAvLyBFdmFsdWF0ZSB0
aGUgSmF2YVNjcmlwdCBjb2RlLiBOb3RlIHRoYXQgcnVubmluZyBKYXZhU2NyaXB0IGhlcmUgY291
bGQgY2F1c2UgdGhlIHBsdWctaW4gdG8gYmUgZGVzdHJveWVkLCBzbyB3ZQogICAgIC8vIGdyYWIg
cmVmZXJlbmNlcyB0byB0aGUgcGx1Zy1pbiBoZXJlLgogICAgIFJlZlB0cjxQbHVnaW4+IHBsdWdp
biA9IG1fcGx1Z2luOwotICAgIFNjcmlwdFZhbHVlIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS5l
eGVjdXRlU2NyaXB0KGpzU3RyaW5nLCByZXF1ZXN0LT5hbGxvd1BvcHVwcygpKTsKKyAgICBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSByZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlw
dChqc1N0cmluZywgcmVxdWVzdC0+YWxsb3dQb3B1cHMoKSk7CiAKICAgICAvLyBDaGVjayBpZiBl
dmFsdWF0aW5nIHRoZSBKYXZhU2NyaXB0IGRlc3Ryb3llZCB0aGUgcGx1Zy1pbi4KICAgICBpZiAo
IXBsdWdpbi0+Y29udHJvbGxlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAppbmRleCBhODkwZjViLi4xMDViYWIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcApA
QCAtMzQsMTIgKzM0LDExIEBACiAjaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckNv
bnRyb2xsZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZvcndhcmRpbmcuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9NYWluRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdFZhbHVl
Lmg+CisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaAppbmRleCAy
Zjk3MWQ0Li41YzYyMTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViSW5zcGVjdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3Rvci5oCkBAIC0zMCwxOCArMzAsMTQgQEAKIAogI2luY2x1ZGUgIkFQSU9i
amVjdC5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0luc3Bl
Y3RvckZvcndhcmRpbmcuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiBjbGFzcyBXZWJQYWdlOwotc3RydWN0IFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIFdlYkluc3BlY3RvciA6IHB1YmxpYyBBUEk6
Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZUluc3BlY3Rvcj4gewogcHVibGlj
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4
IDFlZmU3MzguLmI2Yjk5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKQEAgLTEyNyw3ICsxMjcsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUnVu
dGltZUVuYWJsZWRGZWF0dXJlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnku
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
aGFkb3dSb290Lmg+CkBAIC0xMzgsNiArMTM3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Zpc2li
bGVQb3NpdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVmlzaWJsZVVuaXRzLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9tYXJrdXAuaD4KKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgog
I2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2Nr
Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9PcGVyYXRpb25zLmg+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219001</attachid>
            <date>2013-12-11 14:03:23 -0800</date>
            <delta_ts>2014-02-13 03:48:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125324-20131211140322.patch</filename>
            <type>text/plain</type>
            <size>904795</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMCBA
QAorMjAxMy0xMi0xMCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisg
ICAgICAgIFBBUlQgNjogRXh0cmFjdCBHZW5lcmljIEluc3BlY3RvclR5cGVCdWlsZGVyCisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBNb3JlIEluc3BlY3RvciBSZXF1aXJlZCBDbGFzc2Vz
IERvd24gaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTI1MzI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmls
ZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUeXBlQnVpbGRl
ci5oOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDo6
T3B0T3V0cHV0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDo6
b3BlcmF0b3I9KToKKyAgICAgICAgKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDo6
aXNBc3NpZ25lZCk6CisgICAgICAgIChJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ6
OmdldFZhbHVlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkV4YWN0bHlJbnQ6
OkV4YWN0bHlJbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RXhhY3RseUlu
dDo6b3BlcmF0b3IgaW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkV4YWN0
bHlJbnQ6OmNhc3RfdG9faW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Omlu
dCk6CisgICAgICAgIChJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lQ2FzdEhlbHBlcjo6
YXNzZXJ0VHlwZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lQ2Fz
dEhlbHBlcjo6YXNzZXJ0QW55KToKKyAgICAgICAgKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1
bnRpbWVDYXN0SGVscGVyOjphc3NlcnRJbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk6OkFycmF5KToKKyAgICAgICAgKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFy
cmF5OjpvcGVuQWNjZXNzb3JzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFy
cmF5OjphZGRJdGVtKToKKyAgICAgICAgKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5Ojpj
cmVhdGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk6OnJ1bnRpbWVD
YXN0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5Ojphc3NlcnRDb3Jy
ZWN0VmFsdWUpOgorICAgICAgICAoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6U3RydWN0SXRlbVRy
YWl0czo6cHVzaFJlZlB0cik6CisgICAgICAgIChJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpTdHJ1
Y3RJdGVtVHJhaXRzOjphc3NlcnRDb3JyZWN0VmFsdWUpOgorCisyMDEzLTEyLTA1ICBKb3NlcGgg
UGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
UHVzaCBNb3JlIEluc3BlY3RvciBSZXF1aXJlZCBDbGFzc2VzIERvd24gaW50byBKYXZhU2NyaXB0
Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1
MzI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGJpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHA6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwLgorICAgICAgICAo
SlNDOjpTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1bWVudCk6CisgICAgICAg
IChKU0M6OlNjcmlwdEZ1bmN0aW9uQ2FsbDo6U2NyaXB0RnVuY3Rpb25DYWxsKToKKyAgICAgICAg
KEpTQzo6U2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKToKKyAgICAgICAgKiBiaW5kaW5ncy9TY3Jp
cHRGdW5jdGlvbkNhbGwuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdEZ1bmN0aW9uQ2FsbC5oLgorCisyMDEzLTEyLTA1ICBKb3NlcGggUGVjb3Jhcm8gIDxw
ZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBNb3JlIElu
c3BlY3RvciBSZXF1aXJlZCBDbGFzc2VzIERvd24gaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1MzI0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0
LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL2NvcHktZmls
ZXMuY21kOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogYmluZGluZ3MvU2NyaXB0T2JqZWN0LmNwcDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5jcHAuCisgICAgICAgIChKU0M6
OlNjcmlwdE9iamVjdDo6U2NyaXB0T2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9TY3JpcHRP
YmplY3QuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9i
amVjdC5oLgorICAgICAgICAoSlNDOjpTY3JpcHRPYmplY3Q6OlNjcmlwdE9iamVjdCk6CisgICAg
ICAgIChKU0M6OlNjcmlwdE9iamVjdDo6anNPYmplY3QpOgorICAgICAgICAoSlNDOjpTY3JpcHRP
YmplY3Q6OnNjcmlwdFN0YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAu
CisgICAgICAgIChKU0M6OlNjcmlwdFZhbHVlOjp+U2NyaXB0VmFsdWUpOgorICAgICAgICAoSlND
OjpTY3JpcHRWYWx1ZTo6Z2V0U3RyaW5nKToKKyAgICAgICAgKEpTQzo6U2NyaXB0VmFsdWU6OnRv
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6U2NyaXB0VmFsdWU6OmlzRXF1YWwpOgorICAgICAgICAo
SlNDOjpqc1RvSW5zcGVjdG9yVmFsdWUpOgorICAgICAgICAoSlNDOjpTY3JpcHRWYWx1ZTo6dG9J
bnNwZWN0b3JWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvU2NyaXB0VmFsdWUuaDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmguCisKKzIwMTMt
MTItMDUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVjdG9yIFJlcXVpcmVkIENsYXNzZXMgRG93biBp
bnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3Qu
YW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5o
LgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudEJhc2U6On5JbnNwZWN0b3JBZ2Vu
dEJhc2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudEJhc2U6OmRpc2NhcmRB
Z2VudCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50QmFzZTo6SW5zcGVjdG9y
QWdlbnRCYXNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5j
cHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRS
ZWdpc3RyeS5jcHAuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50UmVnaXN0cnk6
OmFwcGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaDog
Q29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0
cnkuaC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3Bw
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmNwcC4KKyAgICAgICAgKEluc3BlY3Rvcjo6Z2V0UHJvcGVydHlWYWx1ZSk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
aC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwLgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaC4KKwogMjAxMy0xMi0xMCAgRmlsaXAgUGl6bG8g
IDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEdldCByaWQgb2YgZm9yd2FyZCBleGl0IGlu
IEdldEJ5VmFsIG9uIFVpbnQzMkFycmF5CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNiArNCw3IEBAIHNldChKYXZhU2NyaXB0Q29y
ZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9BUEkiCiAg
ICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9Gb3J3YXJkaW5nSGVhZGVycyIKICAgICAiJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L2Fzc2VtYmxlciIKKyAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2Jp
bmRpbmdzIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnl0ZWNvZGUiCiAgICAgIiR7SkFW
QVNDUklQVENPUkVfRElSfS9ieXRlY29tcGlsZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElS
fS9kZmciCkBAIC00NSw2ICs0NiwxMCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAg
IGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5jcHAKICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJYODZDb21tb24uY3BwCiAKKyAgICBiaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCisg
ICAgYmluZGluZ3MvU2NyaXB0T2JqZWN0LmNwcAorICAgIGJpbmRpbmdzL1NjcmlwdFZhbHVlLmNw
cAorCiAgICAgYnl0ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAKICAgICBieXRlY29k
ZS9BcnJheVByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcApA
QCAtMjE2LDYgKzIyMSwxMCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGhlYXAv
V2Vha1NldC5jcHAKICAgICBoZWFwL1dyaXRlQmFycmllclN1cHBvcnQuY3BwCiAKKyAgICBpbnNw
ZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAKKyAgICBpbnNwZWN0b3IvSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIuY3BwCisgICAgaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAK
KwogICAgIGludGVycHJldGVyL0Fic3RyYWN0UEMuY3BwCiAgICAgaW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmNwcAogICAgIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtNTg0LDYgKzU5Myw3
IEBAIGVuZGZvcmVhY2ggKCkKIAogc2V0KEphdmFTY3JpcHRDb3JlX0ZPUldBUkRJTkdfSEVBREVS
U19ESVJFQ1RPUklFUwogICAgIGFzc2VtYmxlcgorICAgIGJpbmRpbmdzCiAgICAgYnl0ZWNvZGUK
ICAgICBjb2xsZWN0b3IvaGFuZGxlcwogICAgIGRlYnVnZ2VyCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDcgQEAgamF2
YXNjcmlwdGNvcmVfY3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Gb3J3YXJkaW5n
SGVhZGVycyBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlciBc
CisJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzIFwKIAktSSQoc3Jj
ZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUgXAogCS1JJChzcmNkaXIpL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlciBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTk1LDYgKzk1LDEyIEBAIGph
dmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvUmVwYXRjaEJ1ZmZlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1NI
NEFzc2VtYmxlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2Vt
Ymxlci5oIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rp
b25DYWxsLmNwcCBcCisgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1
bmN0aW9uQ2FsbC5oIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0
T2JqZWN0LmNwcCBcCisgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdE9i
amVjdC5oIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUu
Y3BwIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2ZpbGUu
Y3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJv
ZmlsZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNw
cCBcCkBAIC02MTUsNyArNjIxLDE1IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5pY29kZS91dGZfb2xkLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pY3UvdW5pY29kZS91dHlwZXMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ljdS91bmljb2RlL3V2ZXJzaW9uLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBcCisJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5o
IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclR5cGVCdWlsZGVy
LmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNw
cCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Fic3RyYWN0UEMuY3BwIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQWJzdHJhY3RQQy5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oIFwKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjk0LDYgKzI5NCw5IEBACiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxhc3NlbWJsZXJcTWFjcm9Bc3NlbWJsZXIuY3BwIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cQVBJXEpTQ1Rlc3RSdW5uZXJVdGlscy5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNwcCIgLz4K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdEZ1bmN0aW9uQ2FsbC5j
cHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRPYmplY3Qu
Y3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0VmFsdWUu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0
aW9uUHJvZmlsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxB
cnJheVByb2ZpbGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVc
Qnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCIgLz4KQEAgLTQ1Nyw2ICs0NjAsOSBAQAogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5caGVhcFxXZWFrSGFuZGxlT3duZXIuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5caGVhcFxXZWFrU2V0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGhlYXBcV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAiIC8+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAiIC8+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3Bl
Y3RvclZhbHVlcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRl
clxBYnN0cmFjdFBDLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGludGVycHJl
dGVyXENhbGxGcmFtZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnRlcnBy
ZXRlclxJbnRlcnByZXRlci5jcHAiIC8+CkBAIC03NTAsNiArNzU2LDkgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxNYWNyb0Fzc2VtYmxlclg4Nl82NC5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXFJlcGF0Y2hCdWZmZXIuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxYODZBc3NlbWJsZXIuaCIgLz4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdEZ1bmN0aW9uQ2FsbC5oIiAv
PgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0T2JqZWN0LmgiIC8+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRWYWx1ZS5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0aW9uUHJvZmls
ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlQcm9maWxl
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxCeVZhbEluZm8uaCIg
Lz4KQEAgLTEwMDAsNyArMTAwOSwxMiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVh
cFxXZWFrU2V0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXFdlYWtTZXRJ
bmxpbmVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXFdyaXRlQmFycmll
clN1cHBvcnQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNw
ZWN0b3JBZ2VudEJhc2UuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3Rv
clxJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIgLz4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JUeXBlQnVpbGRl
ci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvclZh
bHVlcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcQWJzdHJh
Y3RQQy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcQ2FjaGVk
Q2FsbC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcQ2FsbEZy
YW1lLmgiIC8+CkBAIC0xMzQ4LDQgKzEzNjIsNCBAQAogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4
dGVuc2lvblRhcmdldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxC
dWlsZEN1c3RvbWl6YXRpb25zXG1hc20udGFyZ2V0cyIgLz4KICAgPC9JbXBvcnRHcm91cD4KLTwv
UHJvamVjdD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCShyZXZp
c2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTQs
NiArNCw5IEBACiAgICAgPEZpbHRlciBJbmNsdWRlPSJhc3NlbWJsZXIiPgogICAgICAgPFVuaXF1
ZUlkZW50aWZpZXI+ezQyOTc4M2ExLTVkNmEtNDAxOS1hZDFhLWRkYjJjOThmOWI2Y308L1VuaXF1
ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJiaW5kaW5n
cyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57MGJhY2UxMjMtNDU4Mi1lZWJjLTkzMTQtNzgx
OWIzNzZjMTk4fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KICAgICA8RmlsdGVy
IEluY2x1ZGU9ImJ5dGVjb2RlIj4KICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns3NjYwODhhMC0x
MjE2LTQ4NTQtYWE0My01NjBjNWUyODM2Njh9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmls
dGVyPgpAQCAtMjc5LDYgKzI4MiwxNSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVh
cFxXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcCI+CiAgICAgICA8RmlsdGVyPmhlYXA8L0ZpbHRlcj4K
ICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJ
bnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcCI+CisgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmls
dGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVj
dG9yXEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCI+CisgICAgICA8RmlsdGVyPmluc3Bl
Y3RvcjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5caW5zcGVjdG9yXEluc3BlY3RvclZhbHVlcy5jcHAiPgorICAgICAgPEZpbHRlcj5pbnNwZWN0
b3I8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGludGVycHJldGVyXEFic3RyYWN0UEMuY3BwIj4KICAgICAgIDxGaWx0ZXI+aW50ZXJwcmV0ZXI8
L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTEyNjYsNiArMTI3OCwyNCBAQAogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQuY3BwIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAgICA8
L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdFZh
bHVlLmNwcCI+CisgICAgICA8RmlsdGVyPmJpbmRpbmdzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBp
bGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNh
bGwuY3BwIj4KKyAgICAgIDxGaWx0ZXI+YmluZGluZ3M8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGls
ZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdE9iamVjdC5jcHAi
PgorICAgICAgPEZpbHRlcj5iaW5kaW5nczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR1NTQUxvd2VyaW5nUGhhc2UuY3BwIj4KKyAg
ICAgIDxGaWx0ZXI+ZGZnPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxkZmdcREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAiPgorICAgICAg
PEZpbHRlcj5kZmc8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNwcCI+Cisg
ICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgPC9JdGVt
R3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcQVBJ
Q2FsbGJhY2tGdW5jdGlvbi5oIj4KQEAgLTE3MTgsOSArMTc0OCwyNCBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5caGVhcFxXcml0ZUJhcnJpZXJTdXBwb3J0LmgiPgogICAgICAgPEZpbHRl
cj5oZWFwPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQWdlbnRCYXNlLmgiPgorICAgICAgPEZpbHRlcj5pbnNw
ZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgiPgorICAgICAgPEZpbHRlcj5p
bnNwZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIj4KKyAgICAgIDxG
aWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiPgogICAg
ICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JUeXBlQnVpbGRlci5oIj4KKyAg
ICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yVmFsdWVzLmgiPgorICAgICAg
PEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGludGVycHJldGVyXEFic3RyYWN0UEMuaCI+CiAgICAgICA8RmlsdGVy
PmludGVycHJldGVyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0zMTYyLDYgKzMyMDcs
MjcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXFZhcmlhYmxlV2F0Y2hw
b2ludFNldC5oIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAgICA8L0NsSW5j
bHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdEZ1bmN0aW9u
Q2FsbC5oIj4KKyAgICAgIDxGaWx0ZXI+YmluZGluZ3M8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVk
ZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdE9iamVjdC5oIj4K
KyAgICAgIDxGaWx0ZXI+YmluZGluZ3M8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdFZhbHVlLmgiPgorICAgICAgPEZp
bHRlcj5iaW5kaW5nczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cZGZnXERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuaCI+CisgICAgICA8Rmls
dGVyPmRmZzwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cZGZnXERGR1NTQUxvd2VyaW5nUGhhc2UuaCI+CisgICAgICA8RmlsdGVyPmRmZzwvRmls
dGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRp
bWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcQ29uc3RhbnRNb2RlLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+
CisgICAgPC9DbEluY2x1ZGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxO
b25lIEluY2x1ZGU9IkphdmFTY3JpcHRDb3JlUHJlTGluay5jbWQiIC8+CkBAIC0zMTczLDQgKzMy
MzksNCBAQAogICAgICAgPEZpbHRlcj5qaXQ8L0ZpbHRlcj4KICAgICA8L01BU00+CiAgIDwvSXRl
bUdyb3VwPgotPC9Qcm9qZWN0PgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlQ29tbW9uLnByb3BzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlQ29tbW9uLnByb3BzCShy
ZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZUNvbW1vbi5wcm9wcwkod29ya2luZyBjb3B5KQpAQCAtNSw3
ICs1LDcgQEAKICAgPFByb3BlcnR5R3JvdXAgLz4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAg
ICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXDsu
Llx0b29sc1w7Li5ccnVudGltZVw7Li5cbGxpbnRcOy4uXGppdFw7Li5cZGlzYXNzZW1ibGVyXDsu
LlxoZWFwXDsuLlxkZWJ1Z2dlclw7Li5cYXNzZW1ibGVyXDsuLlxwcm9maWxlclw7Li5ceWFyclw7
Li5caW50ZXJwcmV0ZXJcOy4uXGJ5dGVjb2RlXDsuLlxkZmdcOy4uXGJ5dGVjb21waWxlclw7Li5c
cGFyc2VyXDsuLlxBUElcOy4uXGZ0bFw7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXEphdmFTY3JpcHRDb3JlXERlcml2ZWRTb3VyY2VzXDskKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVw7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1
ZGVcSmF2YVNjcmlwdENvcmVcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZh
dGVcOyQoV2ViS2l0X0xpYnJhcmllcylcaW5jbHVkZTskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1
ZGVccHJpdmF0ZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5c
Oy4uXHRvb2xzXDsuLlxydW50aW1lXDsuLlxsbGludFw7Li5caml0XDsuLlxkaXNhc3NlbWJsZXJc
Oy4uXGhlYXBcOy4uXGRlYnVnZ2VyXDsuLlxhc3NlbWJsZXJcOy4uXHByb2ZpbGVyXDsuLlx5YXJy
XDsuLlxpbnRlcnByZXRlclw7Li5cYnl0ZWNvZGVcOy4uXGRmZ1w7Li5cYnl0ZWNvbXBpbGVyXDsu
LlxwYXJzZXJcOy4uXEFQSVw7Li5cZnRsXDsuLlxiaW5kaW5nc1w7Li5caW5zcGVjdG9yXDskKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcSmF2YVNjcmlw
dENvcmVcRGVyaXZlZFNvdXJjZXNcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXDsk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZVw7JChDb25maWd1
cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVw7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNs
dWRlOyQoV2ViS2l0X0xpYnJhcmllcylcaW5jbHVkZVxwcml2YXRlOyUoQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgICA8Rm9y
Y2VkSW5jbHVkZUZpbGVzPklDVVZlcnNpb24uaDslKEZvcmNlZEluY2x1ZGVGaWxlcyk8L0ZvcmNl
ZEluY2x1ZGVGaWxlcz4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8TGluaz4KQEAgLTE2LDQgKzE2
LDQgQEAKICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91
cCAvPgotPC9Qcm9qZWN0PgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL2NvcHkt
ZmlsZXMuY21kCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL2NvcHktZmlsZXMuY21kCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9jb3B5LWZpbGVzLmNtZAkod29y
a2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBlY2hvIENvcHlpbmcgcHJpdmF0ZSBoZWFkZXJz
Li4uCiBta2RpciAiJVByaXZhdGVIZWFkZXJzRGlyZWN0b3J5JSIgMj5OVUwNCiBmb3IgJSVkIGlu
ICgNCiAgICAgYXNzZW1ibGVyDQorICAgIGJpbmRpbmdzDQogICAgIGJ5dGVjb2RlDQogICAgIGRm
Zw0KICAgICBkaXNhc3NlbWJsZXINCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMTYwNDA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTg5NSw2ICs4OTUs
MjAgQEAKIAkJQTE3MTJCNDExMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3MTJCNDAxMUM3QjIzNTAw
N0E1MzE1IC8qIFJlZ0V4cEtleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUExQTAwOUMwMTgzMUEyMkQwMENGODcxMSAvKiBNYWNyb0Fzc2VtYmxl
ckFSTTY0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NjQwOTIzQzE1NkVFRDNCMDA1NjZDQjIgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQTAwOUMxMTgzMUEy
NkUwMENGODcxMSAvKiBBUk02NEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODY0MDkyM0IxNTZFRUQzQjAwNTY2Q0IyIC8qIEFSTTY0QXNz
ZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJQTU0Q0YyRjUxODRFQUIyNDAwMjM3RjE5IC8qIFNjcmlwdFZhbHVlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NENGMkYyMTg0RUFCMjQwMDIz
N0YxOSAvKiBTY3JpcHRWYWx1ZS5jcHAgKi87IH07CisJCUE1NENGMkY2MTg0RUFCMjQwMDIzN0Yx
OSAvKiBTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTU0Q0YyRjMxODRFQUIyNDAwMjM3RjE5IC8qIFNjcmlwdFZhbHVlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTU0Q0YyRjkxODRF
QUVEQTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTRDRjJGNzE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0
T2JqZWN0LmNwcCAqLzsgfTsKKwkJQTU0Q0YyRkExODRFQUVEQTAwMjM3RjE5IC8qIFNjcmlwdE9i
amVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU0
Q0YyRjgxODRFQUVEQTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1NUQ5M0E1MTg1MDEyQTgwMDQwMERF
RCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTU1RDkzQTMxODUwMTJBODAwNDAwREVEIC8qIFNjcmlwdEZ1bmN0
aW9uQ2FsbC5jcHAgKi87IH07CisJCUE1NUQ5M0E2MTg1MDEyQTgwMDQwMERFRCAvKiBTY3JpcHRG
dW5jdGlvbkNhbGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1NUQ5M0E0MTg1MDEyQTgwMDQwMERFRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNTVEOTNBQzE4
NTE0Rjc5MDA0MDBERUQgLyogSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NUQ5M0FCMTg1MTRGNzkwMDQwMERFRCAv
KiBJbnNwZWN0b3JUeXBlQnVpbGRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUE1OTNDRjdDMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTkzQ0Y3QTE4NDAzNjAzMDBCRkNFMjcgLyogSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIuY3BwICovOyB9OworCQlBNTkzQ0Y3RDE4NDAzNjAzMDBCRkNFMjcgLyogSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1OTNDRjdCMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUE1OTNDRjdGMTg0MDM2MkMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudEJhc2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OTNDRjdFMTg0
MDM2MkMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudEJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNTkzQ0Y4MjE4NDAzNzcxMDBCRkNFMjcg
LyogSW5zcGVjdG9yVmFsdWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1OTNDRjgwMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMu
Y3BwICovOyB9OworCQlBNTkzQ0Y4MzE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTkzQ0Y4
MTE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTU5M0NGODYxODQwMzhDQTAwQkZDRTI3
IC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5M0NGODQxODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3Rv
ckFnZW50UmVnaXN0cnkuY3BwICovOyB9OworCQlBNTkzQ0Y4NzE4NDAzOENBMDBCRkNFMjcgLyog
SW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTU5M0NGODUxODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50
UmVnaXN0cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlBNTk0NTU4RjE4MjQ1RUZEMDBDQzM4NDMgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTk0
NTU4RTE4MjQ1RURFMDBDQzM4NDMgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHAgKi87
IH07CiAJCUE1OTQ1NTkyMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2Fi
bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5
NDU1OTAxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAgKi87
IH07CiAJCUE1OTQ1NTkzMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2Fi
bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OTQ1
NTkxMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaCAqLzsgfTsK
QEAgLTIyMjcsNiArMjI0MSwyMCBAQAogCQlBMTcxMkIzQTExQzdCMjEyMDA3QTUzMTUgLyogUmVn
RXhwQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVnRXhw
Q2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTcxMkIzRTExQzdCMjI4
MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVnRXhwQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3MTJCNDAx
MUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZWdFeHBLZXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU0Q0Yy
RjIxODRFQUIyNDAwMjM3RjE5IC8qIFNjcmlwdFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTU0Q0YyRjMxODRFQUIyNDAwMjM3RjE5IC8qIFNjcmlwdFZhbHVlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUE1NENGMkY3MTg0RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3Qu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0T2JqZWN0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU0Q0YyRjgxODRFQUVEQTAwMjM3RjE5
IC8qIFNjcmlwdE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3Jp
cHRPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU1RDkzQTMxODUwMTJB
ODAwNDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBNTVEOTNBNDE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25D
YWxsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEZ1bmN0aW9uQ2Fs
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTVEOTNBQjE4NTE0Rjc5MDA0MDBE
RUQgLyogSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaDsgcGF0aCA9IGluc3BlY3Rvci9JbnNwZWN0b3JU
eXBlQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTkzQ0Y3QTE4NDAz
NjAzMDBCRkNFMjcgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3Bw
OyBwYXRoID0gaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU5M0NGN0IxODQwMzYwMzAwQkZDRTI3IC8qIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg7IHBhdGggPSBpbnNwZWN0b3IvSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU5M0NG
N0UxODQwMzYyQzAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50QmFzZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBJbnNwZWN0b3JBZ2VudEJhc2UuaDsgcGF0aCA9IGluc3BlY3Rv
ci9JbnNwZWN0b3JBZ2VudEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU5
M0NGODAxODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBJbnNwZWN0b3JWYWx1ZXMuY3BwOyBwYXRoID0gaW5z
cGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE1OTNDRjgxMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSW5zcGVjdG9yVmFsdWVzLmg7IHBhdGggPSBpbnNwZWN0
b3IvSW5zcGVjdG9yVmFsdWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTND
Rjg0MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3Bw
OyBwYXRoID0gaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBNTkzQ0Y4NTE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9y
QWdlbnRSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJbnNwZWN0
b3JBZ2VudFJlZ2lzdHJ5Lmg7IHBhdGggPSBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3Ry
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTk0NTU4RTE4MjQ1RURFMDBDQzM4
NDMgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcDsgcGF0aCA9IGlu
c3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE1OTQ1NTkwMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9i
amVjdERlYnVnZ2FibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTU5NDU1OTExODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dsb2JhbE9iamVjdERlYnVnZ2Fi
bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3MjcsNiArMjc1NSw3IEBACiAJ
CQkJQTdDMjI1Q0MxMzk5ODFGMTAwRkYxNjYyIC8qIEtleXdvcmRMb29rdXBHZW5lcmF0b3IucHkg
Ki8sCiAJCQkJMTQzMkVCRDcwQTM0Q0FENDAwNzE3QjlGIC8qIEFQSSAqLywKIAkJCQk5Njg4Q0Ix
MjBFRDEyQjRFMDAxRDY0OUYgLyogYXNzZW1ibGVyICovLAorCQkJCUE1NENGMkVBMTg0RUE3Mzkw
MDIzN0YxOSAvKiBiaW5kaW5ncyAqLywKIAkJCQk5NjlBMDc4RjBFRDFEM0FFMDBGMUY2ODEgLyog
Ynl0ZWNvZGUgKi8sCiAJCQkJN0UzOUQ4MUQwRUMzOEVGQTAwM0FGMTFBIC8qIGJ5dGVjb21waWxl
ciAqLywKIAkJCQkxQzkwNTEzRTBCQTlFODgzMDA4MUU5RDAgLyogQ29uZmlndXJhdGlvbnMgKi8s
CkBAIC00MjAxLDExICs0MjMwLDMyIEBACiAJCQlwYXRoID0gYnl0ZWNvZGU7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwogCQl9OworCQlBNTRDRjJFQTE4NEVBNzM5MDAyMzdGMTkgLyogYmlu
ZGluZ3MgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUE1
NUQ5M0EzMTg1MDEyQTgwMDQwMERFRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwICovLAorCQkJ
CUE1NUQ5M0E0MTg1MDEyQTgwMDQwMERFRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCAqLywKKwkJ
CQlBNTRDRjJGNzE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2JqZWN0LmNwcCAqLywKKwkJCQlB
NTRDRjJGODE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2JqZWN0LmggKi8sCisJCQkJQTU0Q0Yy
RjIxODRFQUIyNDAwMjM3RjE5IC8qIFNjcmlwdFZhbHVlLmNwcCAqLywKKwkJCQlBNTRDRjJGMzE4
NEVBQjI0MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gYmlu
ZGluZ3M7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlBNUJBMTVERjE4MjM0
MDkyMDBBODJFNjkgLyogaW5zcGVjdG9yICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKIAkJCQlBNUJBMTVFMDE4MjM0MDlEMDBBODJFNjkgLyogcmVtb3RlICovLAor
CQkJCUE1OTNDRjdFMTg0MDM2MkMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudEJhc2UuaCAqLywK
KwkJCQlBNTkzQ0Y4NDE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5j
cHAgKi8sCisJCQkJQTU5M0NGODUxODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVn
aXN0cnkuaCAqLywKKwkJCQlBNTkzQ0Y3QTE4NDAzNjAzMDBCRkNFMjcgLyogSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIuY3BwICovLAorCQkJCUE1OTNDRjdCMTg0MDM2MDMwMEJGQ0UyNyAvKiBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oICovLAogCQkJCUE1OTQ1NTk0MTgyNDc5RUIwMEND
Mzg0MyAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCAqLywKKwkJCQlBNTVEOTNBQjE4NTE0
Rjc5MDA0MDBERUQgLyogSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCAqLywKKwkJCQlBNTkzQ0Y4MDE4
NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCAqLywKKwkJCQlBNTkzQ0Y4MTE4
NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVzLmggKi8sCiAJCQkpOwogCQkJbmFtZSA9
IGluc3BlY3RvcjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC00MzQ2LDYgKzQzOTYs
NyBAQAogCQkJCTBGMkI2NkRGMTdCNkI1QUIwMEE3QUUzRiAvKiBEYXRhVmlldy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkNEMjAzNEEwRTE3MTM1RTAwMkM3RTgyIC8qIERhdGVDb25zdHJ1Y3Rvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzNTlDRjMwRkREODlBRDAwMjA2MTgwIC8qIERhdGVDb252
ZXJzaW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTkzQ0Y3RjE4NDAzNjJDMDBCRkNFMjcgLyog
SW5zcGVjdG9yQWdlbnRCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzExNjYwMjBFMTk5N0I0
MDA4MDY2REQgLyogRGF0ZUluc3RhbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEExNTYzMjEw
OTY2MzY1MDA2RkEyNjAgLyogRGF0ZUluc3RhbmNlQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDRDIwMzRDMEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LywKQEAgLTQzNzcsNiArNDQyOCw3IEBACiAJCQkJMEY4MzY0QjcxNjRCMEMxMTAwNTMzMjlBIC8q
IERGR0JyYW5jaERpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBMDA5QzAxODMxQTIy
RDAwQ0Y4NzExIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2
RUM5REM1MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQTU5M0NGODcxODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0
cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjU2QzM2MTYyN0IwQUQwMDdGMjc4MyAvKiBERkdD
YWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY3QjI5NEIxNEMzQ0QyRjAwN0MzREIxIC8qIERGR0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZGRkM5NTgxNEVGOTBBMjAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTQ0NjQsNiArNDUxNiw3IEBACiAJCQkJODZFQzlERDMxMzI4REY4MjAwMkIy
QUQ3IC8qIERGR1NwZWN1bGF0aXZlSklULmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q4OUQwMDE3
QTBCOENDMDA3NzNBRDggLyogREZHU1NBQ29udmVyc2lvblBoYXNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjlGQjRGNTE3RkNCOTE3MDBDQjY3RjggLyogREZHU3RhY2tMYXlvdXRQaGFzZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQTU5M0NGODMxODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZh
bHVlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2Mzk0NzgxNURDRTM0QjAwNkE1OTdDIC8qIERG
R1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzA5N0EyMTQ2
QjI4Q0MwMENGMjQ0MiAvKiBERkdUaHVua3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDhBMzI4
MTdENTFGNTcwMENBMkM0MCAvKiBERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTQ0OTgsNiArNDU1MSw3IEBACiAJCQkJMEZCMTA1ODYxNjc1NDgxMjAwRjhB
QjZFIC8qIEV4aXRLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBQjE0QkNGNUJCMDA4
ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFG
MzgxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QTU0Q0YyRjYxODRFQUIyNDAwMjM3RjE5IC8qIFNjcmlwdFZhbHVlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBN0E4QUYzOTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQ2NEFycmF5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjI0RTU0MzE3RUE5RjU5MDBBQkIyMTcgLyogRlBSSW5mby5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZGQzk5RDUxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVy
aW5nV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8sCkBAIC00ODQ0LDYgKzQ4OTgsNyBAQAogCQkJ
CTBGMENENEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGOUZDOEM1MTRFMUI2MDQwMEQ1MkFFMCAvKiBQdXRLaW5kLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxNDdCODQ2MzBFNkRFNkIxMDA0Nzc1QTQgLyogUHV0UHJvcGVydHlTbG90
LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTkzQ0Y3RDE4NDAzNjAzMDBCRkNFMjcgLyogSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjYwQUMyMTY3NDBG
ODMwMDAyOTc3OSAvKiBSZWR1Y2VXaGl0ZXNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4
QzQ1QTBFMTZGNUNEMDBCMzQ0NjAgLyogUmVnRXhwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTcx
MkIzRjExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCBpbiBIZWFkZXJzICovLApAQCAt
NDg4NSw2ICs0OTQwLDcgQEAKIAkJCQkwRkQ4MkU1NDE0MURBRUVFMDAxNzlDOTQgLyogU3BlY3Vs
YXRlZFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QzFFQUYyMTc5ODdBQjYwMDI5OURCMiAv
KiBTdGFja1Zpc2l0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0REYwNERBMTZCMzk5NkQwMDE2
QTUxMyAvKiBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTRD
RjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxNENBOTU4QjE2QUI1MERFMDA5MzhBMDYgLyogU3RhdGljUHJvcGVydHlBbmFseXplci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTczMEI2MTIxMjUwMDY4RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxB
Y3RpdmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ2NjBFMTZGNUNEMDBCMzQ0NjAg
LyogU3RyaW5nQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtNDk0Nyw2ICs1MDAzLDcg
QEAKIAkJCQkxNEJFN0QzMzE3MTM1Q0Y0MDBEMTgwN0EgLyogV2Vha0lubGluZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3Q0EzQUU0MTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwQ29uc3RydWN0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Q0EzQUVDMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFr
TWFwRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU1RDkzQUMxODUxNEY3OTAwNDAwREVEIC8q
IEluc3BlY3RvclR5cGVCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0NBM0FFNjE3REE0
MUFFMDA2NTM4QUYgLyogV2Vha01hcFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQy
MEJFN0IxMEFBNkREQjAwRjQ1NUQyIC8qIFdlYWtSYW5kb20uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMjQyREE3MTNGM0IxRTgwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTQ5NjAsNiArNTAxNyw3IEBACiAJCQkJNDUxNTM5QjkxMkRDOTk0NTAw
RUY3QUM0IC8qIFlhcnIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjY2RUNEMTgzNkIzN0UwMEQw
MTdGMSAvKiBERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg2NzA0Qjg1MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySW50ZXJwcmV0ZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUE1NUQ5M0E2MTg1MDEyQTgwMDQwMERFRCAvKiBTY3JpcHRGdW5jdGlv
bkNhbGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NzA0Qjg3MTJEQkEzMzcwMEE5RkU3QiAvKiBZ
YXJySklULmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI4ODEyREJBMzM3MDBBOUZFN0IgLyog
WWFyclBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY3MDRCOEExMkRCQTMzNzAwQTlGRTdC
IC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVycyAqLywKQEAgLTU0NjUsNiArNTUyMyw3IEBACiAJ
CQkJMEZGNDI3NjQxNTkxQTFDQzAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRkQ4MUFEMjE1NEZCNEVFMDA5ODNFNzIgLyogREZHRG9taW5hdG9ycy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQzQzgyNjE0MTE1RDQwMDBGRDgxQ0IgLyogREZHRHJp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1OTNDRjgyMTg0MDM3NzEwMEJGQ0UyNyAvKiBJ
bnNwZWN0b3JWYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGMEYxOUUxNkI3MkEwQjAw
NURGOTVCIC8qIERGR0VkZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc0REVGOTMxODJEOTkx
NDAwNTIyQzIyIC8qIE1hcEl0ZXJhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGQkMwQUU3MTQ5NkM3QzQwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTU1MjAsNiArNTU3OSw3IEBACiAJCQkJMEZCRTBGNzYxNkMxREIwRjAwODJDNUU4
IC8qIERGR1VuaWZpY2F0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzNEIxNDkx
NkQ0MjAxMDAwMUNEQTVBIC8qIERGR1VzZUtpbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYz
QjNBMkIxNTQ3NTAwMDAwM0VEMEZGIC8qIERGR1ZhbGlkYXRlLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUE1NUQ5M0E1MTg1MDEyQTgwMDQwMERFRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEYyQkRDNEYxNTIyOEJGMzAwQ0Q4OTEwIC8qIERGR1ZhbHVlU291
cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRERCRkI1MTY2NkVFRDgwMEM1NUZFRiAvKiBE
RkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkJEQzUx
MTUyMjhGRkQwMENEODkxMCAvKiBERkdWYXJpYWJsZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApA
QCAtNTU0MCw2ICs1NjAwLDcgQEAKIAkJCQkwRjU2QTFENTE1MDAxQ0Y0MDAyOTkyQjEgLyogRXhl
Y3V0aW9uQ291bnRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTk0NTU5MjE4MjQ3NDQ3MDBD
QzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGQjEwNTg1MTY3NTQ4MEYwMEY4QUI2RSAvKiBFeGl0S2luZC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlBNTRDRjJGNTE4NEVBQjI0MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZFQTBBMUMxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEExRTE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEwOTE3MDUx
M0RCMDBCQjcyMkMgLyogRlRMQ2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTU2
OSw2ICs1NjMwLDcgQEAKIAkJCQkwRjlEMzM5QTE4MDNBREI3MDA3M0MyQkMgLyogRlRMU3RhY2tN
YXBzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEwQTE2MTcwNkJCOTAwMEJCNzIyQyAvKiBG
VExTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJFMTE3MTc4RTFDMDA2OTBDN0Yg
LyogRlRMVGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1OTNDRjdDMTg0MDM2MDMwMEJG
Q0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjIzNUJFMzE3MTc4RTFDMDA2OTBDN0YgLyogRlRMVmFsdWVGb3JtYXQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMTQ3RjM5Q0IxMDdFQzM3NjAwNDI3QTQ4IC8qIEZ1bmN0aW9uQ29uc3RydWN0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGMEYxOUYxNkI3MkExNzAwNURGOTVCIC8qIEZ1
bmN0aW9uRXhlY3V0YWJsZUR1bXAuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01NzE5LDYgKzU3ODEs
NyBAQAogCQkJCTg2RUJGMkZGMTU2MEYwNkEwMDhFOTIyMiAvKiBOYW1lQ29uc3RydWN0b3IuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJODZFQkYzMDExNTYwRjA2QTAwOEU5MjIyIC8qIE5hbWVJbnN0
YW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkVCRjMwMzE1NjBGMDZBMDA4RTkyMjIgLyog
TmFtZVByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNTRDRjJGOTE4NEVBRURBMDAy
MzdGMTkgLyogU2NyaXB0T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NDY5REUwMTA3
RUM3RTcwMDY1MDQ0NiAvKiBOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTE0NDY5REUxMTA3RUM3RTcwMDY1MDQ0NiAvKiBOYXRpdmVFcnJvclByb3RvdHlwZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDhGMjFCNzEwN0VDNTQ3MDA0MkVDMkMgLyogTm9kZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC01ODM4LDYgKzU5MDEsNyBAQAogCQkJCTg2NzA0Qjg0MTJE
QkEzMzcwMEE5RkU3QiAvKiBZYXJySW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
ODY3MDRCODYxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODY3MDRCODkxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUE1OTNDRjg2MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lz
dHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0QjQyMTJEQjhBODEwMEE5RkU3QiAvKiBZ
YXJyU3ludGF4Q2hlY2tlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCShyZXZpc2lvbiAx
NjA0MDQpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2Fs
bC5jcHA6MTYwNDA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1
bmN0aW9uQ2FsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNTQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCisKKyNpbmNsdWRlICJK
U01haW5UaHJlYWRFeGVjU3RhdGUuaCIKKyNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorCisjaW5j
bHVkZSA8cnVudGltZS9KU0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFNj
cmlwdENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KGNvbnN0IFNjcmlwdE9iamVj
dCYgYXJndW1lbnQpCit7CisgICAgaWYgKGFyZ3VtZW50LnNjcmlwdFN0YXRlKCkgIT0gbV9leGVj
KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIG1fYXJndW1lbnRzLmFwcGVuZChhcmd1bWVudC5qc09iamVjdCgpKTsKK30KKwordm9p
ZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1bWVudChjb25zdCBTY3JpcHRW
YWx1ZSYgYXJndW1lbnQpCit7CisgICAgbV9hcmd1bWVudHMuYXBwZW5kKGFyZ3VtZW50LmpzVmFs
dWUoKSk7Cit9CisKK3ZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1l
bnQoY29uc3QgU3RyaW5nJiBhcmd1bWVudCkKK3sKKyAgICBKU0xvY2tIb2xkZXIgbG9jayhtX2V4
ZWMpOworICAgIG1fYXJndW1lbnRzLmFwcGVuZChqc1N0cmluZ1dpdGhDYWNoZShtX2V4ZWMsIGFy
Z3VtZW50KSk7Cit9CisKK3ZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJn
dW1lbnQoY29uc3QgY2hhciogYXJndW1lbnQpCit7CisgICAgSlNMb2NrSG9sZGVyIGxvY2sobV9l
eGVjKTsKKyAgICBtX2FyZ3VtZW50cy5hcHBlbmQoanNTdHJpbmcobV9leGVjLCBTdHJpbmcoYXJn
dW1lbnQpKSk7Cit9CisKK3ZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJn
dW1lbnQoSlNDOjpKU1ZhbHVlIGFyZ3VtZW50KQoreworICAgIG1fYXJndW1lbnRzLmFwcGVuZChh
cmd1bWVudCk7Cit9CisKK3ZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJn
dW1lbnQobG9uZyBhcmd1bWVudCkKK3sKKyAgICBKU0xvY2tIb2xkZXIgbG9jayhtX2V4ZWMpOwor
ICAgIG1fYXJndW1lbnRzLmFwcGVuZChqc051bWJlcihhcmd1bWVudCkpOworfQorCit2b2lkIFNj
cmlwdENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KGxvbmcgbG9uZyBhcmd1bWVu
dCkKK3sKKyAgICBKU0xvY2tIb2xkZXIgbG9jayhtX2V4ZWMpOworICAgIG1fYXJndW1lbnRzLmFw
cGVuZChqc051bWJlcihhcmd1bWVudCkpOworfQorCit2b2lkIFNjcmlwdENhbGxBcmd1bWVudEhh
bmRsZXI6OmFwcGVuZEFyZ3VtZW50KHVuc2lnbmVkIGludCBhcmd1bWVudCkKK3sKKyAgICBKU0xv
Y2tIb2xkZXIgbG9jayhtX2V4ZWMpOworICAgIG1fYXJndW1lbnRzLmFwcGVuZChqc051bWJlcihh
cmd1bWVudCkpOworfQorCit2b2lkIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVuZEFy
Z3VtZW50KHVuc2lnbmVkIGxvbmcgYXJndW1lbnQpCit7CisgICAgSlNMb2NrSG9sZGVyIGxvY2so
bV9leGVjKTsKKyAgICBtX2FyZ3VtZW50cy5hcHBlbmQoanNOdW1iZXIoYXJndW1lbnQpKTsKK30K
Kwordm9pZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1bWVudChpbnQgYXJn
dW1lbnQpCit7CisgICAgSlNMb2NrSG9sZGVyIGxvY2sobV9leGVjKTsKKyAgICBtX2FyZ3VtZW50
cy5hcHBlbmQoanNOdW1iZXIoYXJndW1lbnQpKTsKK30KKwordm9pZCBTY3JpcHRDYWxsQXJndW1l
bnRIYW5kbGVyOjphcHBlbmRBcmd1bWVudChib29sIGFyZ3VtZW50KQoreworICAgIG1fYXJndW1l
bnRzLmFwcGVuZChqc0Jvb2xlYW4oYXJndW1lbnQpKTsKK30KKworU2NyaXB0RnVuY3Rpb25DYWxs
OjpTY3JpcHRGdW5jdGlvbkNhbGwoY29uc3QgU2NyaXB0T2JqZWN0JiB0aGlzT2JqZWN0LCBjb25z
dCBTdHJpbmcmIG5hbWUpCisgICAgOiBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyKHRoaXNPYmpl
Y3Quc2NyaXB0U3RhdGUoKSkKKyAgICAsIG1fdGhpc09iamVjdCh0aGlzT2JqZWN0KQorICAgICwg
bV9uYW1lKG5hbWUpCit7Cit9CisKK1NjcmlwdFZhbHVlIFNjcmlwdEZ1bmN0aW9uQ2FsbDo6Y2Fs
bChib29sJiBoYWRFeGNlcHRpb24pCit7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBtX3Ro
aXNPYmplY3QuanNPYmplY3QoKTsKKworICAgIEpTTG9ja0hvbGRlciBsb2NrKG1fZXhlYyk7CisK
KyAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gdGhpc09iamVjdC0+Z2V0KG1fZXhlYywgSWRlbnRpZmll
cihtX2V4ZWMsIG1fbmFtZSkpOworICAgIGlmIChtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7Cisg
ICAgICAgIGhhZEV4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZSgp
OworICAgIH0KKworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBl
ID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAgICBpZiAoY2FsbFR5cGUgPT0g
Q2FsbFR5cGVOb25lKQorICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoKTsKKworICAgIEpTVmFs
dWUgcmVzdWx0OworICAgIGlmIChpc01haW5UaHJlYWQoKSkKKyAgICAgICAgcmVzdWx0ID0gSlNN
YWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKG1fZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxs
RGF0YSwgdGhpc09iamVjdCwgbV9hcmd1bWVudHMpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0
ID0gSlNDOjpjYWxsKG1fZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc09i
amVjdCwgbV9hcmd1bWVudHMpOworCisgICAgaWYgKG1fZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsK
KyAgICAgICAgaGFkRXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVl
KCk7CisgICAgfQorCisgICAgcmV0dXJuIFNjcmlwdFZhbHVlKG1fZXhlYy0+dm0oKSwgcmVzdWx0
KTsKK30KKworU2NyaXB0VmFsdWUgU2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKCkKK3sKKyAgICBi
b29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOworICAgIHJldHVybiBjYWxsKGhhZEV4Y2VwdGlvbik7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCSh3b3JraW5nIGNv
cHkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDUgQEAKIC8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBA
IC0zMSwxNyArMzIsMTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY3JpcHRG
dW5jdGlvbkNhbGwuaCIKIAotI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgorI2lu
Y2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCi0KLSNpbmNsdWRlIDxy
dW50aW1lL0pTTG9jay5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgRGVwcmVj
YXRlZCB7CiAKLXZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQo
Y29uc3QgU2NyaXB0T2JqZWN0JiBhcmd1bWVudCkKK3ZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFu
ZGxlcjo6YXBwZW5kQXJndW1lbnQoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiBhcmd1
bWVudCkKIHsKICAgICBpZiAoYXJndW1lbnQuc2NyaXB0U3RhdGUoKSAhPSBtX2V4ZWMpIHsKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01MCw3ICs0OSw3IEBAIHZvaWQgU2NyaXB0
Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXIKICAgICBtX2FyZ3VtZW50cy5hcHBlbmQoYXJn
dW1lbnQuanNPYmplY3QoKSk7CiB9CiAKLXZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6
YXBwZW5kQXJndW1lbnQoY29uc3QgU2NyaXB0VmFsdWUmIGFyZ3VtZW50KQordm9pZCBTY3JpcHRD
YWxsQXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1bWVudChjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYgYXJndW1lbnQpCiB7CiAgICAgbV9hcmd1bWVudHMuYXBwZW5kKGFyZ3VtZW50Lmpz
VmFsdWUoKSk7CiB9CkBAIC01OCw3ICs1Nyw3IEBAIHZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFu
ZGxlcjo6YXBwZW5kQXIKIHZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJn
dW1lbnQoY29uc3QgU3RyaW5nJiBhcmd1bWVudCkKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayht
X2V4ZWMpOwotICAgIG1fYXJndW1lbnRzLmFwcGVuZChqc1N0cmluZ1dpdGhDYWNoZShtX2V4ZWMs
IGFyZ3VtZW50KSk7CisgICAgbV9hcmd1bWVudHMuYXBwZW5kKGpzU3RyaW5nKG1fZXhlYywgYXJn
dW1lbnQpKTsKIH0KIAogdm9pZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1
bWVudChjb25zdCBjaGFyKiBhcmd1bWVudCkKQEAgLTY3LDcgKzY2LDcgQEAgdm9pZCBTY3JpcHRD
YWxsQXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcgogICAgIG1fYXJndW1lbnRzLmFwcGVuZChqc1N0
cmluZyhtX2V4ZWMsIFN0cmluZyhhcmd1bWVudCkpKTsKIH0KIAotdm9pZCBTY3JpcHRDYWxsQXJn
dW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1bWVudChKU0M6OkpTVmFsdWUgYXJndW1lbnQpCit2b2lk
IFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KEpTVmFsdWUgYXJndW1l
bnQpCiB7CiAgICAgbV9hcmd1bWVudHMuYXBwZW5kKGFyZ3VtZW50KTsKIH0KQEAgLTEwNywxNCAr
MTA2LDE1IEBAIHZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXIKICAgICBt
X2FyZ3VtZW50cy5hcHBlbmQoanNCb29sZWFuKGFyZ3VtZW50KSk7CiB9CiAKLVNjcmlwdEZ1bmN0
aW9uQ2FsbDo6U2NyaXB0RnVuY3Rpb25DYWxsKGNvbnN0IFNjcmlwdE9iamVjdCYgdGhpc09iamVj
dCwgY29uc3QgU3RyaW5nJiBuYW1lKQorU2NyaXB0RnVuY3Rpb25DYWxsOjpTY3JpcHRGdW5jdGlv
bkNhbGwoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiB0aGlzT2JqZWN0LCBjb25zdCBT
dHJpbmcmIG5hbWUsIFNjcmlwdEZ1bmN0aW9uQ2FsbEhhbmRsZXIgY2FsbEhhbmRsZXIpCiAgICAg
OiBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyKHRoaXNPYmplY3Quc2NyaXB0U3RhdGUoKSkKKyAg
ICAsIG1fY2FsbEhhbmRsZXIoY2FsbEhhbmRsZXIpCiAgICAgLCBtX3RoaXNPYmplY3QodGhpc09i
amVjdCkKICAgICAsIG1fbmFtZShuYW1lKQogewogfQogCi1TY3JpcHRWYWx1ZSBTY3JpcHRGdW5j
dGlvbkNhbGw6OmNhbGwoYm9vbCYgaGFkRXhjZXB0aW9uKQorRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUgU2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKGJvb2wmIGhhZEV4Y2VwdGlvbikKIHsKICAgICBK
U09iamVjdCogdGhpc09iamVjdCA9IG1fdGhpc09iamVjdC5qc09iamVjdCgpOwogCkBAIC0xMjMs
MzIgKzEyMywzMiBAQCBTY3JpcHRWYWx1ZSBTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwoYm9vCiAg
ICAgSlNWYWx1ZSBmdW5jdGlvbiA9IHRoaXNPYmplY3QtPmdldChtX2V4ZWMsIElkZW50aWZpZXIo
bV9leGVjLCBtX25hbWUpKTsKICAgICBpZiAobV9leGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAg
ICAgICBoYWRFeGNlcHRpb24gPSB0cnVlOwotICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoKTsK
KyAgICAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCk7CiAgICAgfQogCiAgICAg
Q2FsbERhdGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShm
dW5jdGlvbiwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpCi0g
ICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOworICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUoKTsKIAogICAgIEpTVmFsdWUgcmVzdWx0OwotICAgIGlmIChpc01haW5UaHJl
YWQoKSkKLSAgICAgICAgcmVzdWx0ID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKG1fZXhl
YywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc09iamVjdCwgbV9hcmd1bWVudHMp
OworICAgIGlmIChtX2NhbGxIYW5kbGVyKQorICAgICAgICByZXN1bHQgPSBtX2NhbGxIYW5kbGVy
KG1fZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc09iamVjdCwgbV9hcmd1
bWVudHMpOwogICAgIGVsc2UKICAgICAgICAgcmVzdWx0ID0gSlNDOjpjYWxsKG1fZXhlYywgZnVu
Y3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc09iamVjdCwgbV9hcmd1bWVudHMpOwogCiAg
ICAgaWYgKG1fZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAgaGFkRXhjZXB0aW9uID0g
dHJ1ZTsKLSAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7CisgICAgICAgIHJldHVybiBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSgpOwogICAgIH0KIAotICAgIHJldHVybiBTY3JpcHRWYWx1ZSht
X2V4ZWMtPnZtKCksIHJlc3VsdCk7CisgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
KG1fZXhlYy0+dm0oKSwgcmVzdWx0KTsKIH0KIAotU2NyaXB0VmFsdWUgU2NyaXB0RnVuY3Rpb25D
YWxsOjpjYWxsKCkKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIFNjcmlwdEZ1bmN0aW9uQ2FsbDo6
Y2FsbCgpCiB7CiAgICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKICAgICByZXR1cm4gY2Fs
bChoYWRFeGNlcHRpb24pOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVz
cGFjZSBEZXByZWNhdGVkCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2Ny
aXB0RnVuY3Rpb25DYWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Jp
bmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oCShyZXZpc2lvbiAxNjA0MDQpCShmcm9tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oOjE2MDQwNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTY3JpcHRGdW5jdGlvbkNhbGxfaAorI2Rl
ZmluZSBTY3JpcHRGdW5jdGlvbkNhbGxfaAorCisjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisj
aW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKKworI2luY2x1ZGUgPHJ1bnRpbWUvQXJnTGlzdC5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgSlNDIHsKKyAgICBj
bGFzcyBKU1ZhbHVlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xhc3MgU2NyaXB0
VmFsdWU7CisKKyAgICBjbGFzcyBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyIHsKKyAgICBwdWJs
aWM6CisgICAgICAgIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXIoSlNDOjpFeGVjU3RhdGUqIHN0
YXRlKSA6IG1fZXhlYyhzdGF0ZSkgeyB9CisKKyAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVudChj
b25zdCBTY3JpcHRPYmplY3QmKTsKKyAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVudChjb25zdCBT
Y3JpcHRWYWx1ZSYpOworICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGNvbnN0IGNoYXIqKTsK
KyAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVudChjb25zdCBTdHJpbmcmKTsKKyAgICAgICAgdm9p
ZCBhcHBlbmRBcmd1bWVudChKU0M6OkpTVmFsdWUpOworICAgICAgICB2b2lkIGFwcGVuZEFyZ3Vt
ZW50KGxvbmcpOworICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGxvbmcgbG9uZyk7CisgICAg
ICAgIHZvaWQgYXBwZW5kQXJndW1lbnQodW5zaWduZWQgaW50KTsKKyAgICAgICAgdm9pZCBhcHBl
bmRBcmd1bWVudCh1bnNpZ25lZCBsb25nKTsKKyAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVudChp
bnQpOworICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGJvb2wpOworCisgICAgcHJvdGVjdGVk
OgorICAgICAgICBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyIG1fYXJndW1lbnRzOworICAgICAg
ICBKU0M6OkV4ZWNTdGF0ZSogbV9leGVjOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgLy8gTWFy
a2VkQXJndW1lbnRCdWZmZXIgbXVzdCBiZSBzdGFjayBhbGxvY2F0ZWQsIHNvIHByZXZlbnQgaGVh
cAorICAgICAgICAvLyBhbGxvYyBvZiBTY3JpcHRGdW5jdGlvbkNhbGwgYXMgd2VsbC4KKyAgICAg
ICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDB4YmFkYmVlZik7IH0KKyAgICAgICAgdm9pZCog
b3BlcmF0b3IgbmV3W10oc2l6ZV90KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oMHhiYWRiZWVmKTsgfQorICAgIH07CisKKyAgICBjbGFzcyBT
Y3JpcHRGdW5jdGlvbkNhbGwgOiBwdWJsaWMgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlciB7Cisg
ICAgcHVibGljOgorICAgICAgICBTY3JpcHRGdW5jdGlvbkNhbGwoY29uc3QgU2NyaXB0T2JqZWN0
JiB0aGlzT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgICAgICBTY3JpcHRWYWx1ZSBj
YWxsKGJvb2wmIGhhZEV4Y2VwdGlvbik7CisgICAgICAgIFNjcmlwdFZhbHVlIGNhbGwoKTsKKwor
ICAgIHByb3RlY3RlZDoKKyAgICAgICAgU2NyaXB0T2JqZWN0IG1fdGhpc09iamVjdDsKKyAgICAg
ICAgU3RyaW5nIG1fbmFtZTsKKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBTY3JpcHRGdW5jdGlvbkNhbGwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
aW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmgJKHdvcmtpbmcgY29weSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw0ICsxLDUgQEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zMSw1NyAr
MzIsNTYgQEAKICNpZm5kZWYgU2NyaXB0RnVuY3Rpb25DYWxsX2gKICNkZWZpbmUgU2NyaXB0RnVu
Y3Rpb25DYWxsX2gKIAorI2luY2x1ZGUgIkFyZ0xpc3QuaCIKICNpbmNsdWRlICJTY3JpcHRPYmpl
Y3QuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgotCi0jaW5jbHVkZSA8cnVudGltZS9BcmdM
aXN0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBKU0Mg
ewotICAgIGNsYXNzIEpTVmFsdWU7CitjbGFzcyBKU1ZhbHVlOwogfQogCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0gICAgY2xhc3MgU2NyaXB0VmFsdWU7CituYW1lc3BhY2UgRGVwcmVjYXRlZCB7CiAK
LSAgICBjbGFzcyBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyIHsKLSAgICBwdWJsaWM6Ci0gICAg
ICAgIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlKSA6IG1f
ZXhlYyhzdGF0ZSkgeyB9Ci0KLSAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVudChjb25zdCBTY3Jp
cHRPYmplY3QmKTsKLSAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVudChjb25zdCBTY3JpcHRWYWx1
ZSYpOwotICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGNvbnN0IGNoYXIqKTsKLSAgICAgICAg
dm9pZCBhcHBlbmRBcmd1bWVudChjb25zdCBTdHJpbmcmKTsKLSAgICAgICAgdm9pZCBhcHBlbmRB
cmd1bWVudChKU0M6OkpTVmFsdWUpOwotICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGxvbmcp
OwotICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGxvbmcgbG9uZyk7Ci0gICAgICAgIHZvaWQg
YXBwZW5kQXJndW1lbnQodW5zaWduZWQgaW50KTsKLSAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVu
dCh1bnNpZ25lZCBsb25nKTsKLSAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVudChpbnQpOwotICAg
ICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGJvb2wpOwotCi0gICAgcHJvdGVjdGVkOgotICAgICAg
ICBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyIG1fYXJndW1lbnRzOwotICAgICAgICBKU0M6OkV4
ZWNTdGF0ZSogbV9leGVjOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgLy8gTWFya2VkQXJndW1l
bnRCdWZmZXIgbXVzdCBiZSBzdGFjayBhbGxvY2F0ZWQsIHNvIHByZXZlbnQgaGVhcAotICAgICAg
ICAvLyBhbGxvYyBvZiBTY3JpcHRGdW5jdGlvbkNhbGwgYXMgd2VsbC4KLSAgICAgICAgdm9pZCog
b3BlcmF0b3IgbmV3KHNpemVfdCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KDB4YmFkYmVlZik7IH0KLSAgICAgICAgdm9pZCogb3BlcmF0b3Ig
bmV3W10oc2l6ZV90KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oMHhiYWRiZWVmKTsgfQotICAgIH07Ci0KLSAgICBjbGFzcyBTY3JpcHRGdW5j
dGlvbkNhbGwgOiBwdWJsaWMgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlciB7Ci0gICAgcHVibGlj
OgotICAgICAgICBTY3JpcHRGdW5jdGlvbkNhbGwoY29uc3QgU2NyaXB0T2JqZWN0JiB0aGlzT2Jq
ZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgICAgICBTY3JpcHRWYWx1ZSBjYWxsKGJvb2wm
IGhhZEV4Y2VwdGlvbik7Ci0gICAgICAgIFNjcmlwdFZhbHVlIGNhbGwoKTsKLQotICAgIHByb3Rl
Y3RlZDoKLSAgICAgICAgU2NyaXB0T2JqZWN0IG1fdGhpc09iamVjdDsKLSAgICAgICAgU3RyaW5n
IG1fbmFtZTsKLSAgICB9OworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgU2NyaXB0Q2FsbEFyZ3Vt
ZW50SGFuZGxlciB7CitwdWJsaWM6CisgICAgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcihKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUpIDogbV9leGVjKHN0YXRlKSB7IH0KKworICAgIHZvaWQgYXBwZW5k
QXJndW1lbnQoY29uc3QgU2NyaXB0T2JqZWN0Jik7CisgICAgdm9pZCBhcHBlbmRBcmd1bWVudChj
b25zdCBTY3JpcHRWYWx1ZSYpOworICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoY29uc3QgY2hhciop
OworICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBhcHBl
bmRBcmd1bWVudChKU0M6OkpTVmFsdWUpOworICAgIHZvaWQgYXBwZW5kQXJndW1lbnQobG9uZyk7
CisgICAgdm9pZCBhcHBlbmRBcmd1bWVudChsb25nIGxvbmcpOworICAgIHZvaWQgYXBwZW5kQXJn
dW1lbnQodW5zaWduZWQgaW50KTsKKyAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KHVuc2lnbmVkIGxv
bmcpOworICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoaW50KTsKKyAgICB2b2lkIGFwcGVuZEFyZ3Vt
ZW50KGJvb2wpOworCitwcm90ZWN0ZWQ6CisgICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBt
X2FyZ3VtZW50czsKKyAgICBKU0M6OkV4ZWNTdGF0ZSogbV9leGVjOworCitwcml2YXRlOgorICAg
IC8vIE1hcmtlZEFyZ3VtZW50QnVmZmVyIG11c3QgYmUgc3RhY2sgYWxsb2NhdGVkLCBzbyBwcmV2
ZW50IGhlYXAKKyAgICAvLyBhbGxvYyBvZiBTY3JpcHRGdW5jdGlvbkNhbGwgYXMgd2VsbC4KKyAg
ICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMHhiYWRiZWVmKTsgfQorICAgIHZvaWQqIG9wZXJh
dG9yIG5ld1tdKHNpemVfdCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KDB4YmFkYmVlZik7IH0KK307CisKK2NsYXNzIEpTX0VYUE9SVF9QUklW
QVRFIFNjcmlwdEZ1bmN0aW9uQ2FsbCA6IHB1YmxpYyBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVy
IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTQzo6SlNWYWx1ZSAoKlNjcmlwdEZ1bmN0aW9uQ2Fs
bEhhbmRsZXIpKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb25PYmpl
Y3QsIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0IEpTQzo6Q2FsbERhdGEmIGNhbGxEYXRh
LCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MpOworICAg
IFNjcmlwdEZ1bmN0aW9uQ2FsbChjb25zdCBTY3JpcHRPYmplY3QmIHRoaXNPYmplY3QsIGNvbnN0
IFN0cmluZyYgbmFtZSwgU2NyaXB0RnVuY3Rpb25DYWxsSGFuZGxlciBoYW5kbGVyID0gbnVsbHB0
cik7CisgICAgU2NyaXB0VmFsdWUgY2FsbChib29sJiBoYWRFeGNlcHRpb24pOworICAgIFNjcmlw
dFZhbHVlIGNhbGwoKTsKKworcHJvdGVjdGVkOgorICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbEhhbmRs
ZXIgbV9jYWxsSGFuZGxlcjsKKyAgICBTY3JpcHRPYmplY3QgbV90aGlzT2JqZWN0OworICAgIFN0
cmluZyBtX25hbWU7Cit9OwogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFj
ZSBEZXByZWNhdGVkCiAKICNlbmRpZiAvLyBTY3JpcHRGdW5jdGlvbkNhbGwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRPYmplY3QuY3BwCShyZXZpc2lv
biAxNjA0MDQpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdl
bnQuY3BwOjE2MDQwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorCisjaW5jbHVkZSAiV29ya2VyQ29uc29sZUFn
ZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV29ya2VyQ29uc29sZUFnZW50OjpXb3Jr
ZXJDb25zb2xlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywg
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCisgICAgOiBJbnNw
ZWN0b3JDb25zb2xlQWdlbnQoaW5zdHJ1bWVudGluZ0FnZW50cywgaW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKQoreworfQorCitXb3JrZXJDb25zb2xlQWdlbnQ6On5Xb3JrZXJDb25zb2xlQWdlbnQoKQor
eworfQorCit2b2lkIFdvcmtlckNvbnNvbGVBZ2VudDo6YWRkSW5zcGVjdGVkTm9kZShFcnJvclN0
cmluZyogZXJyb3IsIGludCkKK3sKKyAgICAqZXJyb3IgPSAiYWRkSW5zcGVjdGVkTm9kZSBpcyBu
b3Qgc3VwcG9ydGVkIGZvciB3b3JrZXJzIjsKK30KKworYm9vbCBXb3JrZXJDb25zb2xlQWdlbnQ6
OmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKQoreworICAgIHJldHVybiB0cnVlOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5jcHAJKHdv
cmtpbmcgY29weSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRPYmpl
Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQpAQCAtMjksMzIgKzMwLDIyIEBACiAgKi8KIAogI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogCi0jaWYgRU5BQkxFKElOU1BFQ1RP
UikKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLSNpbmNsdWRlICJXb3JrZXJDb25zb2xlQWdlbnQu
aCIKK25hbWVzcGFjZSBEZXByZWNhdGVkIHsKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1Xb3Jr
ZXJDb25zb2xlQWdlbnQ6OldvcmtlckNvbnNvbGVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0
TWFuYWdlcikKLSAgICA6IEluc3BlY3RvckNvbnNvbGVBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRz
LCBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCi17Ci19Ci0KLVdvcmtlckNvbnNvbGVBZ2VudDo6fldv
cmtlckNvbnNvbGVBZ2VudCgpCitTY3JpcHRPYmplY3Q6OlNjcmlwdE9iamVjdChFeGVjU3RhdGUq
IHNjcmlwdFN0YXRlLCBKU09iamVjdCogb2JqZWN0KQorICAgIDogU2NyaXB0VmFsdWUoc2NyaXB0
U3RhdGUtPnZtKCksIG9iamVjdCkKKyAgICAsIG1fc2NyaXB0U3RhdGUoc2NyaXB0U3RhdGUpCiB7
CiB9CiAKLXZvaWQgV29ya2VyQ29uc29sZUFnZW50OjphZGRJbnNwZWN0ZWROb2RlKEVycm9yU3Ry
aW5nKiBlcnJvciwgaW50KQorU2NyaXB0T2JqZWN0OjpTY3JpcHRPYmplY3QoRXhlY1N0YXRlKiBz
Y3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0VmFsdWUmIHNjcmlwdFZhbHVlKQorICAgIDogU2NyaXB0
VmFsdWUoc2NyaXB0U3RhdGUtPnZtKCksIHNjcmlwdFZhbHVlLmpzVmFsdWUoKSkKKyAgICAsIG1f
c2NyaXB0U3RhdGUoc2NyaXB0U3RhdGUpCiB7Ci0gICAgKmVycm9yID0gImFkZEluc3BlY3RlZE5v
ZGUgaXMgbm90IHN1cHBvcnRlZCBmb3Igd29ya2VycyI7CiB9CiAKLWJvb2wgV29ya2VyQ29uc29s
ZUFnZW50OjpkZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikK
K30gLy8gbmFtZXNwYWNlIERlcHJlY2F0ZWQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
aW5kaW5ncy9TY3JpcHRPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYmluZGluZ3MvU2NyaXB0T2JqZWN0LmgJKHJldmlzaW9uIDE2MDQwNCkJKGZyb20gU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhc2VBZ2VudC5oOjE2MDQwNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnNwZWN0b3JCYXNlQWdlbnRfaAorI2RlZmluZSBJbnNw
ZWN0b3JCYXNlQWdlbnRfaAorCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJz
LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOworY2xhc3MgSW5zdHJ1bWVudGlu
Z0FnZW50czsKKworY2xhc3MgSW5zcGVjdG9yQmFzZUFnZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5JbnNwZWN0b3JCYXNlQWdlbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJv
bnRlbmRBbmRCYWNrZW5kKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkQWdlbnQoKSB7
IH0KKworcHJvdGVjdGVkOgorICAgIEluc3BlY3RvckJhc2VBZ2VudChjb25zdCBTdHJpbmcmIG5h
bWUsIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgICAgIDog
bV9pbnN0cnVtZW50aW5nQWdlbnRzKGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgICAgICwgbV9u
YW1lKG5hbWUpCisgICAgeworICAgIH0KKworICAgIEluc3RydW1lbnRpbmdBZ2VudHMqIG1faW5z
dHJ1bWVudGluZ0FnZW50czsKKyAgICBTdHJpbmcgbV9uYW1lOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yQmFzZUFnZW50X2gpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0T2JqZWN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5oCSh3
b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0T2Jq
ZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCkBAIC0yOCwzNiArMjksMjcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2lmbmRlZiBJbnNwZWN0b3JCYXNlQWdlbnRfaAotI2RlZmluZSBJbnNwZWN0b3JCYXNlQWdl
bnRfaAorI2lmbmRlZiBTY3JpcHRPYmplY3RfaAorI2RlZmluZSBTY3JpcHRPYmplY3RfaAogCi0j
aW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCi0jaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJTY3JpcHRW
YWx1ZS5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgRGVwcmVjYXRlZCB7CiAK
LWNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKLWNsYXNzIEluc3RydW1lbnRpbmdBZ2Vu
dHM7Ci0KLWNsYXNzIEluc3BlY3RvckJhc2VBZ2VudCB7CitjbGFzcyBTY3JpcHRPYmplY3QgOiBw
dWJsaWMgU2NyaXB0VmFsdWUgewogcHVibGljOgotICAgIHZpcnR1YWwgfkluc3BlY3RvckJhc2VB
Z2VudCgpIHsgfQorICAgIEpTX0VYUE9SVF9QUklWQVRFIFNjcmlwdE9iamVjdChKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6SlNPYmplY3QqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBTY3JpcHRPYmpl
Y3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTY3JpcHRWYWx1ZSYpOworICAgIFNjcmlwdE9iamVj
dCgpIDogbV9zY3JpcHRTdGF0ZShudWxscHRyKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIqKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95
RnJvbnRlbmRBbmRCYWNrZW5kKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkQWdlbnQo
KSB7IH0KKyAgICBKU0M6OkpTT2JqZWN0KiBqc09iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGFzT2Jq
ZWN0KGpzVmFsdWUoKSk7IH0KKyAgICBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUoKSBjb25z
dCB7IHJldHVybiBtX3NjcmlwdFN0YXRlOyB9CiAKIHByb3RlY3RlZDoKLSAgICBJbnNwZWN0b3JC
YXNlQWdlbnQoY29uc3QgU3RyaW5nJiBuYW1lLCBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzKQotICAgICAgICA6IG1faW5zdHJ1bWVudGluZ0FnZW50cyhpbnN0cnVtZW50
aW5nQWdlbnRzKQotICAgICAgICAsIG1fbmFtZShuYW1lKQotICAgIHsKLSAgICB9Ci0KLSAgICBJ
bnN0cnVtZW50aW5nQWdlbnRzKiBtX2luc3RydW1lbnRpbmdBZ2VudHM7Ci0gICAgU3RyaW5nIG1f
bmFtZTsKKyAgICBKU0M6OkV4ZWNTdGF0ZSogbV9zY3JpcHRTdGF0ZTsKIH07CiAKLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIERlcHJlY2F0ZWQKIAotI2VuZGlmIC8vICFk
ZWZpbmVkKEluc3BlY3RvckJhc2VBZ2VudF9oKQorI2VuZGlmIC8vIFNjcmlwdE9iamVjdF9oCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAJ
KHJldmlzaW9uIDE2MDQwNCkJKGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
VmFsdWUuY3BwOjE2MDQwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3Jp
cHRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNzkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChjKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENv
bXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisKKyNpbmNs
dWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNs
dWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0FQSUNhc3QuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlUmVmLmg+CisKKyNp
bmNsdWRlIDxoZWFwL1N0cm9uZy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBTY3JpcHRW
YWx1ZTo6Z2V0U3RyaW5nKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgU3RyaW5nJiByZXN1
bHQpIGNvbnN0Cit7CisgICAgaWYgKCFtX3ZhbHVlKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgSlNMb2NrSG9sZGVyIGxvY2soc2NyaXB0U3RhdGUpOworICAgIGlmICghbV92YWx1ZS5nZXQo
KS5nZXRTdHJpbmcoc2NyaXB0U3RhdGUsIHJlc3VsdCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworU3RyaW5nIFNjcmlwdFZhbHVlOjp0b1N0cmluZyhKU0M6
OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUpIGNvbnN0Cit7CisgICAgU3RyaW5nIHJlc3VsdCA9IG1f
dmFsdWUuZ2V0KCkudG9TdHJpbmcoc2NyaXB0U3RhdGUpLT52YWx1ZShzY3JpcHRTdGF0ZSk7Cisg
ICAgLy8gSGFuZGxlIHRoZSBjYXNlIHdoZXJlIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gYXMgcGFy
dCBvZiBpbnZva2luZyB0b1N0cmluZyBvbiB0aGUgb2JqZWN0LgorICAgIGlmIChzY3JpcHRTdGF0
ZS0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHNjcmlwdFN0YXRlLT5jbGVhckV4Y2VwdGlvbigp
OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Jvb2wgU2NyaXB0VmFsdWU6OmlzRXF1YWwoSlND
OjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcHRWYWx1ZSYgYW5vdGhlclZhbHVl
KSBjb25zdAoreworICAgIGlmIChoYXNOb1ZhbHVlKCkpCisgICAgICAgIHJldHVybiBhbm90aGVy
VmFsdWUuaGFzTm9WYWx1ZSgpOworCisgICAgcmV0dXJuIEpTVmFsdWVJc0VxdWFsKHRvUmVmKHNj
cmlwdFN0YXRlKSwgdG9SZWYoc2NyaXB0U3RhdGUsIGpzVmFsdWUoKSksIHRvUmVmKHNjcmlwdFN0
YXRlLCBhbm90aGVyVmFsdWUuanNWYWx1ZSgpKSwgMCk7Cit9CisKK2Jvb2wgU2NyaXB0VmFsdWU6
OmlzTnVsbCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3ZhbHVlKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuIG1fdmFsdWUuZ2V0KCkuaXNOdWxsKCk7Cit9CisKK2Jvb2wgU2NyaXB0
VmFsdWU6OmlzVW5kZWZpbmVkKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fdmFsdWUpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV92YWx1ZS5nZXQoKS5pc1VuZGVmaW5lZCgpOwor
fQorCitib29sIFNjcmlwdFZhbHVlOjppc09iamVjdCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3Zh
bHVlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fdmFsdWUuZ2V0KCkuaXNP
YmplY3QoKTsKK30KKworYm9vbCBTY3JpcHRWYWx1ZTo6aXNGdW5jdGlvbigpIGNvbnN0Cit7Cisg
ICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgcmV0dXJuIGdldENhbGxEYXRhKG1fdmFsdWUuZ2V0
KCksIGNhbGxEYXRhKSAhPSBDYWxsVHlwZU5vbmU7Cit9CisKK1Bhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBTY3JpcHRWYWx1ZTo6c2VyaWFsaXplKEpTQzo6RXhlY1N0YXRlKiBzY3Jp
cHRTdGF0ZSwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCit7CisgICAg
cmV0dXJuIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHNjcmlwdFN0YXRlLCBqc1ZhbHVl
KCksIDAsIDAsIHRocm93RXhjZXB0aW9ucyk7Cit9CisKK1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBTY3JpcHRWYWx1ZTo6c2VyaWFsaXplKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRT
dGF0ZSwgTWVzc2FnZVBvcnRBcnJheSogbWVzc2FnZVBvcnRzLCBBcnJheUJ1ZmZlckFycmF5KiBh
cnJheUJ1ZmZlcnMsIGJvb2wmIGRpZFRocm93KQoreworICAgIFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRl
KHNjcmlwdFN0YXRlLCBqc1ZhbHVlKCksIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJzKTsKKyAg
ICBkaWRUaHJvdyA9IHNjcmlwdFN0YXRlLT5oYWRFeGNlcHRpb24oKTsKKyAgICByZXR1cm4gc2Vy
aWFsaXplZFZhbHVlLnJlbGVhc2UoKTsKK30KKworU2NyaXB0VmFsdWUgU2NyaXB0VmFsdWU6OmRl
c2VyaWFsaXplKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgU2VyaWFsaXplZFNjcmlwdFZh
bHVlKiB2YWx1ZSwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCit7Cisg
ICAgcmV0dXJuIFNjcmlwdFZhbHVlKHNjcmlwdFN0YXRlLT52bSgpLCB2YWx1ZS0+ZGVzZXJpYWxp
emUoc2NyaXB0U3RhdGUsIHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIDAsIHRo
cm93RXhjZXB0aW9ucykpOworfQorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKK3N0YXRpYyBQYXNz
UmVmUHRyPEluc3BlY3RvclZhbHVlPiBqc1RvSW5zcGVjdG9yVmFsdWUoSlNDOjpFeGVjU3RhdGUq
IHNjcmlwdFN0YXRlLCBKU1ZhbHVlIHZhbHVlLCBpbnQgbWF4RGVwdGgpCit7CisgICAgaWYgKCF2
YWx1ZSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorCisgICAgaWYgKCFtYXhEZXB0aCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgbWF4
RGVwdGgtLTsKKworICAgIGlmICh2YWx1ZS5pc051bGwoKSB8fCB2YWx1ZS5pc1VuZGVmaW5lZCgp
KQorICAgICAgICByZXR1cm4gSW5zcGVjdG9yVmFsdWU6Om51bGwoKTsKKyAgICBpZiAodmFsdWUu
aXNCb29sZWFuKCkpCisgICAgICAgIHJldHVybiBJbnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUo
dmFsdWUuYXNCb29sZWFuKCkpOworICAgIGlmICh2YWx1ZS5pc051bWJlcigpKQorICAgICAgICBy
ZXR1cm4gSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKHZhbHVlLmFzTnVtYmVyKCkpOworICAg
IGlmICh2YWx1ZS5pc1N0cmluZygpKSB7CisgICAgICAgIFN0cmluZyBzID0gdmFsdWUuZ2V0U3Ry
aW5nKHNjcmlwdFN0YXRlKTsKKyAgICAgICAgcmV0dXJuIEluc3BlY3RvclN0cmluZzo6Y3JlYXRl
KFN0cmluZyhzLmNoYXJhY3RlcnMoKSwgcy5sZW5ndGgoKSkpOworICAgIH0KKyAgICBpZiAodmFs
dWUuaXNPYmplY3QoKSkgeworICAgICAgICBpZiAoaXNKU0FycmF5KHZhbHVlKSkgeworICAgICAg
ICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBpbnNwZWN0b3JBcnJheSA9IEluc3BlY3RvckFy
cmF5OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh2YWx1
ZSk7CisgICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBhcnJheS0+bGVuZ3RoKCk7CisgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAg
ICAgICAgICBKU1ZhbHVlIGVsZW1lbnQgPSBhcnJheS0+Z2V0SW5kZXgoc2NyaXB0U3RhdGUsIGkp
OworICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gZWxlbWVudFZhbHVlID0g
anNUb0luc3BlY3RvclZhbHVlKHNjcmlwdFN0YXRlLCBlbGVtZW50LCBtYXhEZXB0aCk7CisgICAg
ICAgICAgICAgICAgaWYgKCFlbGVtZW50VmFsdWUpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICAgICAgICAgIGluc3BlY3RvckFycmF5LT5wdXNoVmFsdWUoZWxlbWVudFZh
bHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBpbnNwZWN0b3JBcnJheTsK
KyAgICAgICAgfQorICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBpbnNwZWN0b3JPYmpl
Y3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOworICAgICAgICBKU09iamVjdCogb2JqZWN0
ID0gdmFsdWUuZ2V0T2JqZWN0KCk7CisgICAgICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5
TmFtZXMoc2NyaXB0U3RhdGUpOworICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93
blByb3BlcnR5TmFtZXMob2JqZWN0LCBzY3JpcHRTdGF0ZSwgcHJvcGVydHlOYW1lcywgRXhjbHVk
ZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJv
cGVydHlOYW1lcy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYg
bmFtZSA9ICBwcm9wZXJ0eU5hbWVzW2ldOworICAgICAgICAgICAgSlNWYWx1ZSBwcm9wZXJ0eVZh
bHVlID0gb2JqZWN0LT5nZXQoc2NyaXB0U3RhdGUsIG5hbWUpOworICAgICAgICAgICAgUmVmUHRy
PEluc3BlY3RvclZhbHVlPiBpbnNwZWN0b3JWYWx1ZSA9IGpzVG9JbnNwZWN0b3JWYWx1ZShzY3Jp
cHRTdGF0ZSwgcHJvcGVydHlWYWx1ZSwgbWF4RGVwdGgpOworICAgICAgICAgICAgaWYgKCFpbnNw
ZWN0b3JWYWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGluc3Bl
Y3Rvck9iamVjdC0+c2V0VmFsdWUoU3RyaW5nKG5hbWUuY2hhcmFjdGVycygpLCBuYW1lLmxlbmd0
aCgpKSwgaW5zcGVjdG9yVmFsdWUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBpbnNwZWN0
b3JPYmplY3Q7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAw
OworfQorCitQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBTY3JpcHRWYWx1ZTo6dG9JbnNwZWN0
b3JWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUpIGNvbnN0Cit7CisgICAgSlNDOjpK
U0xvY2tIb2xkZXIgaG9sZGVyKHNjcmlwdFN0YXRlKTsKKyAgICByZXR1cm4ganNUb0luc3BlY3Rv
clZhbHVlKHNjcmlwdFN0YXRlLCBtX3ZhbHVlLmdldCgpLCBJbnNwZWN0b3JWYWx1ZTo6bWF4RGVw
dGgpOworfQorI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZh
bHVlLmNwcAkod29ya2luZyBjb3B5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdz
L1NjcmlwdFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoYykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNywxMyArNywxMyBAQAog
ICogYXJlIG1ldDoKICAqCiAgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
ICAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAogICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgogICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKICAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
Ci0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLiAKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKICAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKQEAgLTMwLDIxICszMCwyMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAKKyNpbmNsdWRlICJBUElDYXN0LmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yVmFsdWVzLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVk
ZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCi0KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9B
UElDYXN0Lmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZVJlZi5oPgotCi0jaW5j
bHVkZSA8aGVhcC9TdHJvbmcuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgorI2luY2x1
ZGUgIkpTTG9jay5oIgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwordXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKKworbmFtZXNwYWNlIERlcHJlY2F0ZWQgewogCi1uYW1lc3BhY2UgV2ViQ29yZSB7
CitTY3JpcHRWYWx1ZTo6flNjcmlwdFZhbHVlKCkKK3sKK30KIAotYm9vbCBTY3JpcHRWYWx1ZTo6
Z2V0U3RyaW5nKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgU3RyaW5nJiByZXN1bHQpIGNv
bnN0Citib29sIFNjcmlwdFZhbHVlOjpnZXRTdHJpbmcoRXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwg
U3RyaW5nJiByZXN1bHQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3ZhbHVlKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC01NCw3ICs1Myw3IEBAIGJvb2wgU2NyaXB0VmFsdWU6OmdldFN0cmluZyhK
U0M6OkV4ZWNTdGEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotU3RyaW5nIFNjcmlwdFZhbHVlOjp0
b1N0cmluZyhKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUpIGNvbnN0CitTdHJpbmcgU2NyaXB0
VmFsdWU6OnRvU3RyaW5nKEV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUpIGNvbnN0CiB7CiAgICAgU3Ry
aW5nIHJlc3VsdCA9IG1fdmFsdWUuZ2V0KCkudG9TdHJpbmcoc2NyaXB0U3RhdGUpLT52YWx1ZShz
Y3JpcHRTdGF0ZSk7CiAgICAgLy8gSGFuZGxlIHRoZSBjYXNlIHdoZXJlIGFuIGV4Y2VwdGlvbiBp
cyB0aHJvd24gYXMgcGFydCBvZiBpbnZva2luZyB0b1N0cmluZyBvbiB0aGUgb2JqZWN0LgpAQCAt
NjMsMTIgKzYyLDExIEBAIFN0cmluZyBTY3JpcHRWYWx1ZTo6dG9TdHJpbmcoSlNDOjpFeGVjU3QK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1ib29sIFNjcmlwdFZhbHVlOjppc0VxdWFsKEpTQzo6
RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0VmFsdWUmIGFub3RoZXJWYWx1ZSkg
Y29uc3QKK2Jvb2wgU2NyaXB0VmFsdWU6OmlzRXF1YWwoRXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwg
Y29uc3QgU2NyaXB0VmFsdWUmIGFub3RoZXJWYWx1ZSkgY29uc3QKIHsKICAgICBpZiAoaGFzTm9W
YWx1ZSgpKQogICAgICAgICByZXR1cm4gYW5vdGhlclZhbHVlLmhhc05vVmFsdWUoKTsKLQotICAg
IHJldHVybiBKU1ZhbHVlSXNFcXVhbCh0b1JlZihzY3JpcHRTdGF0ZSksIHRvUmVmKHNjcmlwdFN0
YXRlLCBqc1ZhbHVlKCkpLCB0b1JlZihzY3JpcHRTdGF0ZSwgYW5vdGhlclZhbHVlLmpzVmFsdWUo
KSksIDApOworICAgIHJldHVybiBKU1ZhbHVlSXNFcXVhbCh0b1JlZihzY3JpcHRTdGF0ZSksIHRv
UmVmKHNjcmlwdFN0YXRlLCBqc1ZhbHVlKCkpLCB0b1JlZihzY3JpcHRTdGF0ZSwgYW5vdGhlclZh
bHVlLmpzVmFsdWUoKSksIG51bGxwdHIpOwogfQogCiBib29sIFNjcmlwdFZhbHVlOjppc051bGwo
KSBjb25zdApAQCAtOTgsMzMgKzk2LDE3IEBAIGJvb2wgU2NyaXB0VmFsdWU6OmlzRnVuY3Rpb24o
KSBjb25zdAogICAgIHJldHVybiBnZXRDYWxsRGF0YShtX3ZhbHVlLmdldCgpLCBjYWxsRGF0YSkg
IT0gQ2FsbFR5cGVOb25lOwogfQogCi1QYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
U2NyaXB0VmFsdWU6OnNlcmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIFNlcmlh
bGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQotewotICAgIHJldHVybiBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzY3JpcHRTdGF0ZSwganNWYWx1ZSgpLCAwLCAwLCB0aHJv
d0V4Y2VwdGlvbnMpOwotfQotCi1QYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2Ny
aXB0VmFsdWU6OnNlcmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIE1lc3NhZ2VQ
b3J0QXJyYXkqIG1lc3NhZ2VQb3J0cywgQXJyYXlCdWZmZXJBcnJheSogYXJyYXlCdWZmZXJzLCBi
b29sJiBkaWRUaHJvdykKLXsKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJp
YWxpemVkVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzY3JpcHRTdGF0ZSwg
anNWYWx1ZSgpLCBtZXNzYWdlUG9ydHMsIGFycmF5QnVmZmVycyk7Ci0gICAgZGlkVGhyb3cgPSBz
Y3JpcHRTdGF0ZS0+aGFkRXhjZXB0aW9uKCk7Ci0gICAgcmV0dXJuIHNlcmlhbGl6ZWRWYWx1ZS5y
ZWxlYXNlKCk7Ci19Ci0KLVNjcmlwdFZhbHVlIFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShKU0M6
OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUsIFNl
cmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQotewotICAgIHJldHVybiBTY3Jp
cHRWYWx1ZShzY3JpcHRTdGF0ZS0+dm0oKSwgdmFsdWUtPmRlc2VyaWFsaXplKHNjcmlwdFN0YXRl
LCBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAwLCB0aHJvd0V4Y2VwdGlvbnMp
KTsKLX0KLQogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi1zdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3JWYWx1ZT4ganNUb0luc3BlY3RvclZhbHVlKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwg
SlNWYWx1ZSB2YWx1ZSwgaW50IG1heERlcHRoKQorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9y
VmFsdWU+IGpzVG9JbnNwZWN0b3JWYWx1ZShFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBKU1ZhbHVl
IHZhbHVlLCBpbnQgbWF4RGVwdGgpCiB7CiAgICAgaWYgKCF2YWx1ZSkgewogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIAogICAgIGlmICghbWF4RGVwdGgpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIG1heERlcHRoLS07CiAKICAgICBpZiAodmFsdWUu
aXNOdWxsKCkgfHwgdmFsdWUuaXNVbmRlZmluZWQoKSkKQEAgLTEzNyw2ICsxMTksNyBAQCBzdGF0
aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4ganNUb0luCiAgICAgICAgIFN0cmluZyBzID0g
dmFsdWUuZ2V0U3RyaW5nKHNjcmlwdFN0YXRlKTsKICAgICAgICAgcmV0dXJuIEluc3BlY3RvclN0
cmluZzo6Y3JlYXRlKFN0cmluZyhzLmNoYXJhY3RlcnMoKSwgcy5sZW5ndGgoKSkpOwogICAgIH0K
KwogICAgIGlmICh2YWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgIGlmIChpc0pTQXJyYXkodmFs
dWUpKSB7CiAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGluc3BlY3RvckFycmF5
ID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOwpAQCAtMTQ2LDcgKzEyOSw3IEBAIHN0YXRpYyBQ
YXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBqc1RvSW4KICAgICAgICAgICAgICAgICBKU1ZhbHVl
IGVsZW1lbnQgPSBhcnJheS0+Z2V0SW5kZXgoc2NyaXB0U3RhdGUsIGkpOwogICAgICAgICAgICAg
ICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gZWxlbWVudFZhbHVlID0ganNUb0luc3BlY3RvclZh
bHVlKHNjcmlwdFN0YXRlLCBlbGVtZW50LCBtYXhEZXB0aCk7CiAgICAgICAgICAgICAgICAgaWYg
KCFlbGVtZW50VmFsdWUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAgICBpbnNwZWN0b3JBcnJh
eS0+cHVzaFZhbHVlKGVsZW1lbnRWYWx1ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBy
ZXR1cm4gaW5zcGVjdG9yQXJyYXk7CkBAIC0xNjAsMjAgKzE0MywyMSBAQCBzdGF0aWMgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JWYWx1ZT4ganNUb0luCiAgICAgICAgICAgICBKU1ZhbHVlIHByb3BlcnR5
VmFsdWUgPSBvYmplY3QtPmdldChzY3JpcHRTdGF0ZSwgbmFtZSk7CiAgICAgICAgICAgICBSZWZQ
dHI8SW5zcGVjdG9yVmFsdWU+IGluc3BlY3RvclZhbHVlID0ganNUb0luc3BlY3RvclZhbHVlKHNj
cmlwdFN0YXRlLCBwcm9wZXJ0eVZhbHVlLCBtYXhEZXB0aCk7CiAgICAgICAgICAgICBpZiAoIWlu
c3BlY3RvclZhbHVlKQotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgaW5zcGVjdG9yT2JqZWN0LT5zZXRWYWx1ZShT
dHJpbmcobmFtZS5jaGFyYWN0ZXJzKCksIG5hbWUubGVuZ3RoKCkpLCBpbnNwZWN0b3JWYWx1ZSk7
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGluc3BlY3Rvck9iamVjdDsKICAgICB9CisKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gU2NyaXB0VmFsdWU6OnRvSW5zcGVj
dG9yVmFsdWUoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlKSBjb25zdAorUGFzc1JlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4gU2NyaXB0VmFsdWU6OnRvSW5zcGVjdG9yVmFsdWUoRXhlY1N0YXRlKiBz
Y3JpcHRTdGF0ZSkgY29uc3QKIHsKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBob2xkZXIoc2NyaXB0
U3RhdGUpOworICAgIEpTTG9ja0hvbGRlciBob2xkZXIoc2NyaXB0U3RhdGUpOwogICAgIHJldHVy
biBqc1RvSW5zcGVjdG9yVmFsdWUoc2NyaXB0U3RhdGUsIG1fdmFsdWUuZ2V0KCksIEluc3BlY3Rv
clZhbHVlOjptYXhEZXB0aCk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKIAotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgRGVwcmVjYXRlZApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmgJKHJldmlzaW9uIDE2
MDQwNCkJKGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaDoxNjA0
MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LCAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICogCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTY3JpcHRWYWx1ZV9o
CisjZGVmaW5lIFNjcmlwdFZhbHVlX2gKKworI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oIgorI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCisjaW5jbHVkZSA8aGVhcC9TdHJvbmcuaD4K
KyNpbmNsdWRlIDxoZWFwL1N0cm9uZ0lubGluZXMuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTQ0pT
VmFsdWUuaD4KKyNpbmNsdWRlIDxydW50aW1lL09wZXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEluc3BlY3RvclZhbHVlOworY2xhc3MgU2VyaWFsaXplZFNj
cmlwdFZhbHVlOworCitjbGFzcyBTY3JpcHRWYWx1ZSB7CitwdWJsaWM6CisgICAgU2NyaXB0VmFs
dWUoKSB7IH0KKyAgICBTY3JpcHRWYWx1ZShKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVl
KSA6IG1fdmFsdWUodm0sIHZhbHVlKSB7fQorICAgIHZpcnR1YWwgflNjcmlwdFZhbHVlKCkge30K
KworICAgIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS5nZXQo
KTsgfQorICAgIGJvb2wgZ2V0U3RyaW5nKEpTQzo6RXhlY1N0YXRlKiwgU3RyaW5nJiByZXN1bHQp
IGNvbnN0OworICAgIFN0cmluZyB0b1N0cmluZyhKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0OworICAg
IGJvb2wgaXNFcXVhbChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFNjcmlwdFZhbHVlJikgY29uc3Q7
CisgICAgYm9vbCBpc051bGwoKSBjb25zdDsKKyAgICBib29sIGlzVW5kZWZpbmVkKCkgY29uc3Q7
CisgICAgYm9vbCBpc09iamVjdCgpIGNvbnN0OworICAgIGJvb2wgaXNGdW5jdGlvbigpIGNvbnN0
OworICAgIGJvb2wgaGFzTm9WYWx1ZSgpIGNvbnN0IHsgcmV0dXJuICFtX3ZhbHVlOyB9CisKKyAg
ICB2b2lkIGNsZWFyKCkgeyBtX3ZhbHVlLmNsZWFyKCk7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBTY3JpcHRWYWx1ZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0gb3Ro
ZXIubV92YWx1ZTsgfQorCisgICAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNl
cmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSosIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2lu
Zyk7CisgICAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZShKU0M6
OkV4ZWNTdGF0ZSosIE1lc3NhZ2VQb3J0QXJyYXkqLCBBcnJheUJ1ZmZlckFycmF5KiwgYm9vbCYp
OworICAgIHN0YXRpYyBTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSosIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSosIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7
CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+
IHRvSW5zcGVjdG9yVmFsdWUoSlNDOjpFeGVjU3RhdGUqKSBjb25zdDsKKyNlbmRpZgorCitwcml2
YXRlOgorICAgIEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4gbV92YWx1ZTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFNjcmlwdFZhbHVlX2gKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5oCSh3b3JraW5nIGNvcHkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxMCArMSwxMSBAQAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIAorICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQogICogbWV0OgotICogCisgKgogICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KICAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKQEAgLTE0LDcgKzE1LDcgQEAKICAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKICAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCiAgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICogCisgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwogICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKICAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgpAQCAt
MzEsMjUgKzMyLDI0IEBACiAjaWZuZGVmIFNjcmlwdFZhbHVlX2gKICNkZWZpbmUgU2NyaXB0VmFs
dWVfaAogCi0jaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCi0jaW5jbHVkZSAiU2Ny
aXB0U3RhdGUuaCIKLSNpbmNsdWRlIDxoZWFwL1N0cm9uZy5oPgotI2luY2x1ZGUgPGhlYXAvU3Ry
b25nSW5saW5lcy5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgotI2luY2x1ZGUg
PHJ1bnRpbWUvT3BlcmF0aW9ucy5oPgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRl
ICJPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiU3Ryb25nLmgiCisjaW5jbHVkZSAiU3Ryb25nSW5s
aW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQorbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CiBjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKLWNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsK
K30KKworbmFtZXNwYWNlIERlcHJlY2F0ZWQgewogCi1jbGFzcyBTY3JpcHRWYWx1ZSB7CitjbGFz
cyBKU19FWFBPUlRfUFJJVkFURSBTY3JpcHRWYWx1ZSB7CiBwdWJsaWM6CiAgICAgU2NyaXB0VmFs
dWUoKSB7IH0KLSAgICBTY3JpcHRWYWx1ZShKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVl
KSA6IG1fdmFsdWUodm0sIHZhbHVlKSB7fQotICAgIHZpcnR1YWwgflNjcmlwdFZhbHVlKCkge30K
KyAgICBTY3JpcHRWYWx1ZShKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKSA6IG1fdmFs
dWUodm0sIHZhbHVlKSB7IH0KKyAgICB2aXJ0dWFsIH5TY3JpcHRWYWx1ZSgpOwogCiAgICAgSlND
OjpKU1ZhbHVlIGpzVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlLmdldCgpOyB9CiAgICAg
Ym9vbCBnZXRTdHJpbmcoSlNDOjpFeGVjU3RhdGUqLCBTdHJpbmcmIHJlc3VsdCkgY29uc3Q7CkBA
IC02NSwxOCArNjUsMTQgQEAgcHVibGljOgogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNj
cmlwdFZhbHVlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBvdGhlci5tX3ZhbHVl
OyB9CiAKLSAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplKEpT
Qzo6RXhlY1N0YXRlKiwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSA9IFRocm93aW5nKTsKLSAgICBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplKEpTQzo6RXhlY1N0YXRl
KiwgTWVzc2FnZVBvcnRBcnJheSosIEFycmF5QnVmZmVyQXJyYXkqLCBib29sJik7Ci0gICAgc3Rh
dGljIFNjcmlwdFZhbHVlIGRlc2VyaWFsaXplKEpTQzo6RXhlY1N0YXRlKiwgU2VyaWFsaXplZFNj
cmlwdFZhbHVlKiwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSA9IFRocm93aW5nKTsKLQogI2lmIEVO
QUJMRShJTlNQRUNUT1IpCi0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdG9JbnNwZWN0
b3JWYWx1ZShKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JWYWx1ZT4gdG9JbnNwZWN0b3JWYWx1ZShKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0
OwogI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgSlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPiBtX3Zh
bHVlOwogfTsKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgRGVwcmVj
YXRlZAogCiAjZW5kaWYgLy8gU2NyaXB0VmFsdWVfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oCShyZXZpc2lvbiAx
NjA0MDQpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lz
dHJ5Lmg6MTYwNDA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JBZ2VudEJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEluc3BlY3RvckFnZW50
UmVnaXN0cnlfaAorI2RlZmluZSBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5X2gKKworI2luY2x1ZGUg
Ikluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOworCitjbGFzcyBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5IHsK
K3B1YmxpYzoKKyAgICB2b2lkIGFwcGVuZChQYXNzT3duUHRyPEluc3BlY3RvckJhc2VBZ2VudD4p
OworCisgICAgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKTsKKyAgICB2b2lkIHdpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCk7CisgICAgdm9pZCBkaXNjYXJkQWdlbnRzKCk7CisK
K3ByaXZhdGU6CisgICAgVmVjdG9yPE93blB0cjxJbnNwZWN0b3JCYXNlQWdlbnQ+PiBtX2FnZW50
czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vICFkZWZpbmVkKElu
c3BlY3RvckFnZW50UmVnaXN0cnlfaCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaAkod29ya2luZyBjb3B5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjQsMjkgKzI0
LDMzIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgSW5zcGVjdG9yQWdlbnRSZWdp
c3RyeV9oCi0jZGVmaW5lIEluc3BlY3RvckFnZW50UmVnaXN0cnlfaAorI2lmbmRlZiBJbnNwZWN0
b3JBZ2VudEJhc2VfaAorI2RlZmluZSBJbnNwZWN0b3JBZ2VudEJhc2VfaAogCi0jaW5jbHVkZSAi
SW5zcGVjdG9yQmFzZUFnZW50LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLW5h
bWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBjbGFzcyBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcjsKK2NsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKIAot
Y2xhc3MgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeSB7CitjbGFzcyBJbnNwZWN0b3JBZ2VudEJhc2Ug
ewogcHVibGljOgotICAgIHZvaWQgYXBwZW5kKFBhc3NPd25QdHI8SW5zcGVjdG9yQmFzZUFnZW50
Pik7CisgICAgdmlydHVhbCB+SW5zcGVjdG9yQWdlbnRCYXNlKCkgeyB9CiAKLSAgICB2b2lkIGRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopOwotICAgIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFu
ZEJhY2tlbmQoKTsKLSAgICB2b2lkIGRpc2NhcmRBZ2VudHMoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVz
dHJveUZyb250ZW5kQW5kQmFja2VuZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzY2FyZEFn
ZW50KCkgeyB9CisKK3Byb3RlY3RlZDoKKyAgICBJbnNwZWN0b3JBZ2VudEJhc2UoY29uc3QgU3Ry
aW5nJiBuYW1lKQorICAgICAgICA6IG1fbmFtZShuYW1lKQorICAgIHsKKyAgICB9CiAKLXByaXZh
dGU6Ci0gICAgVmVjdG9yPE93blB0cjxJbnNwZWN0b3JCYXNlQWdlbnQ+PiBtX2FnZW50czsKKyAg
ICBTdHJpbmcgbV9uYW1lOwogfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JBZ2Vu
dFJlZ2lzdHJ5X2gpCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yQWdlbnRCYXNlX2gpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0
cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAJKHJldmlzaW9uIDE2MDQwNCkJKGZyb20gU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwOjE2MDQwNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKElO
U1BFQ1RPUikKKworI2luY2x1ZGUgIkluc3BlY3RvckFnZW50UmVnaXN0cnkuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCit2b2lkIEluc3BlY3RvckFnZW50UmVnaXN0cnk6OmFwcGVuZChQYXNz
T3duUHRyPEluc3BlY3RvckJhc2VBZ2VudD4gYWdlbnQpCit7CisgICAgbV9hZ2VudHMuYXBwZW5k
KGFnZW50KTsKK30KKwordm9pZCBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5OjpkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWws
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3sKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYWdlbnRzLnNpemUoKTsgaSsrKQorICAgICAgICBtX2Fn
ZW50c1tpXS0+ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKGZyb250ZW5kQ2hhbm5lbCwgYmFj
a2VuZERpc3BhdGNoZXIpOworfQorCit2b2lkIEluc3BlY3RvckFnZW50UmVnaXN0cnk6OndpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fYWdlbnRzLnNpemUoKTsgaSsrKQorICAgICAgICBtX2FnZW50c1tpXS0+d2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQoKTsKK30KKwordm9pZCBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Ojpk
aXNjYXJkQWdlbnRzKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYWdlbnRzLnNp
emUoKTsgaSsrKQorICAgICAgICBtX2FnZW50c1tpXS0+ZGlzY2FyZEFnZW50KCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQWdlbnRSZWdpc3RyeS5jcHAJKHdvcmtpbmcgY29weSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI1LDE0ICsyNSwxMyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgiCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0j
aW5jbHVkZSAiSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotdm9pZCBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Ojph
cHBlbmQoUGFzc093blB0cjxJbnNwZWN0b3JCYXNlQWdlbnQ+IGFnZW50KQordm9pZCBJbnNwZWN0
b3JBZ2VudFJlZ2lzdHJ5OjphcHBlbmQoUGFzc093blB0cjxJbnNwZWN0b3JBZ2VudEJhc2U+IGFn
ZW50KQogewogICAgIG1fYWdlbnRzLmFwcGVuZChhZ2VudCk7CiB9CkBAIC01NSw2ICs1NCw2IEBA
IHZvaWQgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6ZGlzY2FyZEFnZW4KICAgICAgICAgbV9hZ2Vu
dHNbaV0tPmRpc2NhcmRBZ2VudCgpOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8v
IG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckFnZW50UmVnaXN0cnkuaAkocmV2aXNpb24gMTYwNDA0KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oOjE2MDQwNCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeV9oCisjZGVmaW5lIEluc3Bl
Y3RvckFnZW50UmVnaXN0cnlfaAorCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CisK
K2NsYXNzIEluc3BlY3RvckFnZW50UmVnaXN0cnkgeworcHVibGljOgorICAgIHZvaWQgYXBwZW5k
KFBhc3NPd25QdHI8SW5zcGVjdG9yQmFzZUFnZW50Pik7CisKKyAgICB2b2lkIGRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciopOworICAgIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
KTsKKyAgICB2b2lkIGRpc2NhcmRBZ2VudHMoKTsKKworcHJpdmF0ZToKKyAgICBWZWN0b3I8T3du
UHRyPEluc3BlY3RvckJhc2VBZ2VudD4+IG1fYWdlbnRzOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yQWdlbnRSZWdpc3RyeV9oKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lz
dHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JBZ2VudFJlZ2lzdHJ5LmgJKHdvcmtpbmcgY29weSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNywyNiArMjcsMjcgQEAKICNpZm5kZWYgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeV9oCiAjZGVm
aW5lIEluc3BlY3RvckFnZW50UmVnaXN0cnlfaAogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFn
ZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKK25hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcjsKK2NsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKIAotY2xhc3MgSW5zcGVjdG9y
QWdlbnRSZWdpc3RyeSB7CitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JBZ2VudFJl
Z2lzdHJ5IHsKIHB1YmxpYzoKLSAgICB2b2lkIGFwcGVuZChQYXNzT3duUHRyPEluc3BlY3RvckJh
c2VBZ2VudD4pOworICAgIHZvaWQgYXBwZW5kKFBhc3NPd25QdHI8SW5zcGVjdG9yQWdlbnRCYXNl
Pik7CiAKICAgICB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopOwogICAgIHZvaWQgd2ls
bERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKTsKICAgICB2b2lkIGRpc2NhcmRBZ2VudHMoKTsK
IAogcHJpdmF0ZToKLSAgICBWZWN0b3I8T3duUHRyPEluc3BlY3RvckJhc2VBZ2VudD4+IG1fYWdl
bnRzOworICAgIFZlY3RvcjxPd25QdHI8SW5zcGVjdG9yQWdlbnRCYXNlPj4gbV9hZ2VudHM7CiB9
OwogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAog
I2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckFnZW50UmVnaXN0cnlfaCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIuY3BwCShyZXZpc2lvbiAxNjA0MDQpCShmcm9tIFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHA6MTYwNDA0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExIFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCIKKworI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCisKKyNpbmNsdWRlICJJbnNwZWN0b3JGb3J3YXJkaW5nLmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yVmFsdWVzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0luc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6OkNhbGxiYWNrQmFzZShQYXNzUmVm
UHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBiYWNrZW5kRGlzcGF0Y2hlciwgaW50IGlk
KQorICAgIDogbV9iYWNrZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcikKKyAgICAsIG1f
aWQoaWQpCisgICAgLCBtX2FscmVhZHlTZW50KGZhbHNlKQoreworfQorCitib29sIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6OmlzQWN0aXZlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gIW1fYWxyZWFkeVNlbnQgJiYgbV9iYWNrZW5kRGlzcGF0Y2hlci0+aXNBY3RpdmUo
KTsKK30KKwordm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjpz
ZW5kRmFpbHVyZShjb25zdCBFcnJvclN0cmluZyYgZXJyb3IpCit7CisgICAgQVNTRVJUKGVycm9y
Lmxlbmd0aCgpKTsKKyAgICBzZW5kSWZBY3RpdmUobnVsbHB0ciwgZXJyb3IpOworfQorCit2b2lk
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6OnNlbmRJZkFjdGl2ZShQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcGFydGlhbE1lc3NhZ2UsIGNvbnN0IEVycm9yU3Ry
aW5nJiBpbnZvY2F0aW9uRXJyb3IpCit7CisgICAgaWYgKG1fYWxyZWFkeVNlbnQpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNlbmRSZXNwb25zZShtX2lkLCBw
YXJ0aWFsTWVzc2FnZSwgaW52b2NhdGlvbkVycm9yKTsKKyAgICBtX2FscmVhZHlTZW50ID0gdHJ1
ZTsKK30KKworUGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkpOworfQorCit2b2lk
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpyZWdpc3RlckRpc3BhdGNoZXJGb3JEb21haW4o
Y29uc3QgU3RyaW5nJiBkb21haW4sIEluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRj
aGVyKiBkaXNwYXRjaGVyKQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9kaXNwYXRjaGVycy5hZGQo
ZG9tYWluLCBkaXNwYXRjaGVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0Lmlz
TmV3RW50cnkpOworfQorCit2b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRj
aChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgUmVmPEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyPiBwcm90ZWN0KCp0aGlzKTsKKworICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcGFy
c2VkTWVzc2FnZSA9IEluc3BlY3RvclZhbHVlOjpwYXJzZUpTT04obWVzc2FnZSk7CisgICAgaWYg
KCFwYXJzZWRNZXNzYWdlKSB7CisgICAgICAgIHJlcG9ydFByb3RvY29sRXJyb3IobnVsbHB0ciwg
UGFyc2VFcnJvciwgIk1lc3NhZ2UgbXVzdCBiZSBpbiBKU09OIGZvcm1hdCIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbWVzc2FnZU9iamVj
dCA9IHBhcnNlZE1lc3NhZ2UtPmFzT2JqZWN0KCk7CisgICAgaWYgKCFtZXNzYWdlT2JqZWN0KSB7
CisgICAgICAgIHJlcG9ydFByb3RvY29sRXJyb3IobnVsbHB0ciwgSW52YWxpZFJlcXVlc3QsICJN
ZXNzYWdlIG11c3QgYmUgYSBKU09OaWZpZWQgb2JqZWN0Iik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGNhbGxJZFZhbHVlID0gbWVzc2FnZU9i
amVjdC0+Z2V0KCJpZCIpOworICAgIGlmICghY2FsbElkVmFsdWUpIHsKKyAgICAgICAgcmVwb3J0
UHJvdG9jb2xFcnJvcihudWxscHRyLCBJbnZhbGlkUmVxdWVzdCwgIidpZCcgcHJvcGVydHkgd2Fz
IG5vdCBmb3VuZCIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbG9uZyBjYWxsSWQg
PSAwOworICAgIGlmICghY2FsbElkVmFsdWUtPmFzTnVtYmVyKCZjYWxsSWQpKSB7CisgICAgICAg
IHJlcG9ydFByb3RvY29sRXJyb3IobnVsbHB0ciwgSW52YWxpZFJlcXVlc3QsICJUaGUgdHlwZSBv
ZiAnaWQnIHByb3BlcnR5IG11c3QgYmUgbnVtYmVyIik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IG1ldGhvZFZhbHVlID0gbWVzc2FnZU9iamVj
dC0+Z2V0KCJtZXRob2QiKTsKKyAgICBpZiAoIW1ldGhvZFZhbHVlKSB7CisgICAgICAgIHJlcG9y
dFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW52YWxpZFJlcXVlc3QsICInbWV0aG9kJyBwcm9wZXJ0
eSB3YXNuJ3QgZm91bmQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFN0cmluZyBt
ZXRob2Q7CisgICAgaWYgKCFtZXRob2RWYWx1ZS0+YXNTdHJpbmcoJm1ldGhvZCkpIHsKKyAgICAg
ICAgcmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJbnZhbGlkUmVxdWVzdCwgIlRoZSB0eXBl
IG9mICdtZXRob2QnIHByb3BlcnR5IG11c3QgYmUgc3RyaW5nIik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBzaXplX3QgcG9zaXRpb24gPSBtZXRob2QuZmluZCgnLicpOworICAgIGlm
IChwb3NpdGlvbiA9PSBXVEY6Om5vdEZvdW5kKSB7CisgICAgICAgIHJlcG9ydFByb3RvY29sRXJy
b3IoJmNhbGxJZCwgSW52YWxpZFJlcXVlc3QsICJUaGUgJ21ldGhvZCcgcHJvcGVydHkgd2FzIGZv
cm1hdHRlZCBpbmNvcnJlY3RseS4gSXQgc2hvdWxkIGJlICdEb21haW4ubWV0aG9kJyIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgU3RyaW5nIGRvbWFpbiA9IG1ldGhvZC5zdWJzdHJp
bmcoMCwgcG9zaXRpb24pOworICAgIEluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRj
aGVyKiBkb21haW5EaXNwYXRjaGVyID0gbV9kaXNwYXRjaGVycy5nZXQoZG9tYWluKTsKKyAgICBp
ZiAoIWRvbWFpbkRpc3BhdGNoZXIpIHsKKyAgICAgICAgcmVwb3J0UHJvdG9jb2xFcnJvcigmY2Fs
bElkLCBNZXRob2ROb3RGb3VuZCwgIiciICsgZG9tYWluICsgIicgZG9tYWluIHdhcyBub3QgZm91
bmQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFN0cmluZyBkb21haW5NZXRob2Qg
PSBtZXRob2Quc3Vic3RyaW5nKHBvc2l0aW9uICsgMSk7CisgICAgZG9tYWluRGlzcGF0Y2hlci0+
ZGlzcGF0Y2goY2FsbElkLCBkb21haW5NZXRob2QsIG1lc3NhZ2VPYmplY3QucmVsZWFzZSgpKTsK
K30KKwordm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6c2VuZFJlc3BvbnNlKGxvbmcg
Y2FsbElkLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0LCBjb25zdCBFcnJvclN0
cmluZyYgaW52b2NhdGlvbkVycm9yKQoreworICAgIGlmICghbV9pbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChpbnZvY2F0aW9uRXJyb3IubGVuZ3Ro
KCkpIHsKKyAgICAgICAgcmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBTZXJ2ZXJFcnJvciwg
aW52b2NhdGlvbkVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IHJlc3BvbnNlTWVzc2FnZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRl
KCk7CisgICAgcmVzcG9uc2VNZXNzYWdlLT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJyZXN1bHQi
KSwgcmVzdWx0KTsKKyAgICByZXNwb25zZU1lc3NhZ2UtPnNldE51bWJlcihBU0NJSUxpdGVyYWwo
ImlkIiksIGNhbGxJZCk7CisgICAgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwtPnNlbmRNZXNz
YWdlVG9Gcm9udGVuZChyZXNwb25zZU1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsKK30KKwordm9p
ZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6cmVwb3J0UHJvdG9jb2xFcnJvcihjb25zdCBs
b25nKiBjb25zdCBjYWxsSWQsIENvbW1vbkVycm9yQ29kZSBlcnJvckNvZGUsIGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlKSBjb25zdAoreworICAgIHJlcG9ydFByb3RvY29sRXJyb3IoY2FsbElk
LCBlcnJvckNvZGUsIGVycm9yTWVzc2FnZSwgbnVsbHB0cik7Cit9CisKK3ZvaWQgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI6OnJlcG9ydFByb3RvY29sRXJyb3IoY29uc3QgbG9uZyogY29uc3Qg
Y2FsbElkLCBDb21tb25FcnJvckNvZGUgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gZGF0YSkgY29uc3QKK3sKKyAgICBzdGF0
aWMgY29uc3QgaW50IGVycm9yQ29kZXNbXSA9IHsKKyAgICAgICAgLTMyNzAwLCAvLyBQYXJzZUVy
cm9yCisgICAgICAgIC0zMjYwMCwgLy8gSW52YWxpZFJlcXVlc3QKKyAgICAgICAgLTMyNjAxLCAv
LyBNZXRob2ROb3RGb3VuZAorICAgICAgICAtMzI2MDIsIC8vIEludmFsaWRQYXJhbXMKKyAgICAg
ICAgLTMyNjAzLCAvLyBJbnRlcm5hbEVycm9yCisgICAgICAgIC0zMjAwMCwgLy8gU2VydmVyRXJy
b3IKKyAgICB9OworCisgICAgQVNTRVJUKGVycm9yQ29kZSA+PSAwKTsKKyAgICBBU1NFUlQoKHVu
c2lnbmVkKWVycm9yQ29kZSA8IFdURl9BUlJBWV9MRU5HVEgoZXJyb3JDb2RlcykpOworICAgIEFT
U0VSVChlcnJvckNvZGVzW2Vycm9yQ29kZV0pOworCisgICAgaWYgKCFtX2luc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gZXJyb3IgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOworICAgIGVycm9yLT5zZXROdW1i
ZXIoQVNDSUlMaXRlcmFsKCJjb2RlIiksIGVycm9yQ29kZXNbZXJyb3JDb2RlXSk7CisgICAgZXJy
b3ItPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm1lc3NhZ2UiKSwgZXJyb3JNZXNzYWdlKTsKKyAg
ICBpZiAoZGF0YSkKKyAgICAgICAgZXJyb3ItPnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiZGF0YSIp
LCBkYXRhKTsKKworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1lc3NhZ2UgPSBJbnNwZWN0
b3JPYmplY3Q6OmNyZWF0ZSgpOworICAgIG1lc3NhZ2UtPnNldE9iamVjdChBU0NJSUxpdGVyYWwo
ImVycm9yIiksIGVycm9yLnJlbGVhc2UoKSk7CisgICAgaWYgKGNhbGxJZCkKKyAgICAgICAgbWVz
c2FnZS0+c2V0TnVtYmVyKEFTQ0lJTGl0ZXJhbCgiaWQiKSwgKmNhbGxJZCk7CisgICAgZWxzZQor
ICAgICAgICBtZXNzYWdlLT5zZXRWYWx1ZShBU0NJSUxpdGVyYWwoImlkIiksIEluc3BlY3RvclZh
bHVlOjpudWxsKCkpOworCisgICAgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwtPnNlbmRNZXNz
YWdlVG9Gcm9udGVuZChtZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFJldHVyblZhbHVlVHlwZSwgdHlwZW5hbWUgVmFsdWVUeXBlLCB0eXBlbmFtZSBEZWZh
dWx0VmFsdWVUeXBlPgorUmV0dXJuVmFsdWVUeXBlIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
OjpnZXRQcm9wZXJ0eVZhbHVlKEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcm
IG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3RvckFycmF5KiBwcm90b2NvbEVycm9ycywg
RGVmYXVsdFZhbHVlVHlwZSBkZWZhdWx0VmFsdWUsIGJvb2wgKCphc01ldGhvZCkoSW5zcGVjdG9y
VmFsdWUqLCBWYWx1ZVR5cGUqKSwgY29uc3QgY2hhciogdHlwZU5hbWUpCit7CisgICAgQVNTRVJU
KHByb3RvY29sRXJyb3JzKTsKKworICAgIFZhbHVlVHlwZSB2YWx1ZSA9IGRlZmF1bHRWYWx1ZTsK
KyAgICBpZiAodmFsdWVGb3VuZCkKKyAgICAgICAgKnZhbHVlRm91bmQgPSBmYWxzZTsKKworICAg
IGlmICghb2JqZWN0KSB7CisgICAgICAgIGlmICghdmFsdWVGb3VuZCkKKyAgICAgICAgICAgIHBy
b3RvY29sRXJyb3JzLT5wdXNoU3RyaW5nKFN0cmluZzo6Zm9ybWF0KCIncGFyYW1zJyBvYmplY3Qg
bXVzdCBjb250YWluIHJlcXVpcmVkIHBhcmFtZXRlciAnJXMnIHdpdGggdHlwZSAnJXMnLiIsIG5h
bWUudXRmOCgpLmRhdGEoKSwgdHlwZU5hbWUpKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAg
IH0KKworICAgIEluc3BlY3Rvck9iamVjdDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gb2JqZWN0LT5l
bmQoKTsKKyAgICBJbnNwZWN0b3JPYmplY3Q6OmNvbnN0X2l0ZXJhdG9yIHZhbHVlSXRlcmF0b3Ig
PSBvYmplY3QtPmZpbmQobmFtZSk7CisgICAgaWYgKHZhbHVlSXRlcmF0b3IgPT0gZW5kKSB7Cisg
ICAgICAgIGlmICghdmFsdWVGb3VuZCkKKyAgICAgICAgICAgIHByb3RvY29sRXJyb3JzLT5wdXNo
U3RyaW5nKFN0cmluZzo6Zm9ybWF0KCJQYXJhbWV0ZXIgJyVzJyB3aXRoIHR5cGUgJyVzJyB3YXMg
bm90IGZvdW5kLiIsIG5hbWUudXRmOCgpLmRhdGEoKSwgdHlwZU5hbWUpKTsKKyAgICAgICAgcmV0
dXJuIHZhbHVlOworICAgIH0KKworICAgIGlmICghYXNNZXRob2QodmFsdWVJdGVyYXRvci0+dmFs
dWUuZ2V0KCksICZ2YWx1ZSkpIHsKKyAgICAgICAgcHJvdG9jb2xFcnJvcnMtPnB1c2hTdHJpbmco
U3RyaW5nOjpmb3JtYXQoIlBhcmFtZXRlciAnJXMnIGhhcyB3cm9uZyB0eXBlLiBJdCBtdXN0IGJl
ICclcycuIiwgbmFtZS51dGY4KCkuZGF0YSgpLCB0eXBlTmFtZSkpOworICAgICAgICByZXR1cm4g
dmFsdWU7CisgICAgfQorCisgICAgaWYgKHZhbHVlRm91bmQpCisgICAgICAgICp2YWx1ZUZvdW5k
ID0gdHJ1ZTsKKworICAgIHJldHVybiB2YWx1ZTsKK30KKworc3RydWN0IEFzTWV0aG9kQnJpZGdl
cyB7CisgICAgc3RhdGljIGJvb2wgYXNJbnQoSW5zcGVjdG9yVmFsdWUqIHZhbHVlLCBpbnQqIG91
dHB1dCkgeyByZXR1cm4gdmFsdWUtPmFzTnVtYmVyKG91dHB1dCk7IH0KKyAgICBzdGF0aWMgYm9v
bCBhc0RvdWJsZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUsIGRvdWJsZSogb3V0cHV0KSB7IHJldHVy
biB2YWx1ZS0+YXNOdW1iZXIob3V0cHV0KTsgfQorICAgIHN0YXRpYyBib29sIGFzU3RyaW5nKElu
c3BlY3RvclZhbHVlKiB2YWx1ZSwgU3RyaW5nKiBvdXRwdXQpIHsgcmV0dXJuIHZhbHVlLT5hc1N0
cmluZyhvdXRwdXQpOyB9CisgICAgc3RhdGljIGJvb2wgYXNCb29sZWFuKEluc3BlY3RvclZhbHVl
KiB2YWx1ZSwgYm9vbCogb3V0cHV0KSB7IHJldHVybiB2YWx1ZS0+YXNCb29sZWFuKG91dHB1dCk7
IH0KKyAgICBzdGF0aWMgYm9vbCBhc09iamVjdChJbnNwZWN0b3JWYWx1ZSogdmFsdWUsIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+KiBvdXRwdXQpIHsgcmV0dXJuIHZhbHVlLT5hc09iamVjdChvdXRw
dXQpOyB9CisgICAgc3RhdGljIGJvb2wgYXNBcnJheShJbnNwZWN0b3JWYWx1ZSogdmFsdWUsIFJl
ZlB0cjxJbnNwZWN0b3JBcnJheT4qIG91dHB1dCkgeyByZXR1cm4gdmFsdWUtPmFzQXJyYXkob3V0
cHV0KTsgfQorfTsKKworaW50IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnQoSW5z
cGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3Vu
ZCwgSW5zcGVjdG9yQXJyYXkqIHByb3RvY29sRXJyb3JzKQoreworICAgIHJldHVybiBnZXRQcm9w
ZXJ0eVZhbHVlPGludCwgaW50LCBpbnQ+KG9iamVjdCwgbmFtZSwgdmFsdWVGb3VuZCwgcHJvdG9j
b2xFcnJvcnMsIDAsIEFzTWV0aG9kQnJpZGdlczo6YXNJbnQsICJOdW1iZXIiKTsKK30KKworZG91
YmxlIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXREb3VibGUoSW5zcGVjdG9yT2JqZWN0
KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9y
QXJyYXkqIHByb3RvY29sRXJyb3JzKQoreworICAgIHJldHVybiBnZXRQcm9wZXJ0eVZhbHVlPGRv
dWJsZSwgZG91YmxlLCBkb3VibGU+KG9iamVjdCwgbmFtZSwgdmFsdWVGb3VuZCwgcHJvdG9jb2xF
cnJvcnMsIDAsIEFzTWV0aG9kQnJpZGdlczo6YXNEb3VibGUsICJOdW1iZXIiKTsKK30KKworU3Ry
aW5nIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJpbmcoSW5zcGVjdG9yT2JqZWN0
KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9y
QXJyYXkqIHByb3RvY29sRXJyb3JzKQoreworICAgIHJldHVybiBnZXRQcm9wZXJ0eVZhbHVlPFN0
cmluZywgU3RyaW5nLCBTdHJpbmc+KG9iamVjdCwgbmFtZSwgdmFsdWVGb3VuZCwgcHJvdG9jb2xF
cnJvcnMsICIiLCBBc01ldGhvZEJyaWRnZXM6OmFzU3RyaW5nLCAiU3RyaW5nIik7Cit9CisKK2Jv
b2wgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEJvb2xlYW4oSW5zcGVjdG9yT2JqZWN0
KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9y
QXJyYXkqIHByb3RvY29sRXJyb3JzKQoreworICAgIHJldHVybiBnZXRQcm9wZXJ0eVZhbHVlPGJv
b2wsIGJvb2wsIGJvb2w+KG9iamVjdCwgbmFtZSwgdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMs
IGZhbHNlLCBBc01ldGhvZEJyaWRnZXM6OmFzQm9vbGVhbiwgIkJvb2xlYW4iKTsKK30KKworUGFz
c1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRP
YmplY3QoSW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCog
dmFsdWVGb3VuZCwgSW5zcGVjdG9yQXJyYXkqIHByb3RvY29sRXJyb3JzKQoreworICAgIHJldHVy
biBnZXRQcm9wZXJ0eVZhbHVlPFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiwgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4sIEluc3BlY3Rvck9iamVjdCo+KG9iamVjdCwgbmFtZSwgdmFsdWVGb3Vu
ZCwgcHJvdG9jb2xFcnJvcnMsIG51bGxwdHIsIEFzTWV0aG9kQnJpZGdlczo6YXNPYmplY3QsICJP
YmplY3QiKTsKK30KKworUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI6OmdldEFycmF5KEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJp
bmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3RvckFycmF5KiBwcm90b2NvbEVycm9y
cykKK3sKKyAgICByZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZTxQYXNzUmVmUHRyPEluc3BlY3RvckFy
cmF5PiwgUmVmUHRyPEluc3BlY3RvckFycmF5PiwgSW5zcGVjdG9yQXJyYXkqPihvYmplY3QsIG5h
bWUsIHZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLCBudWxscHRyLCBBc01ldGhvZEJyaWRnZXM6
OmFzQXJyYXksICJBcnJheSIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAJ
KHdvcmtpbmcgY29weSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMiArMjksMTIg
QEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JGb3J3YXJk
aW5nLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKIAogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFz
ZTo6Q2FsbGJhY2tCYXNlKFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IGJh
Y2tlbmREaXNwYXRjaGVyLCBpbnQgaWQpCiAgICAgOiBtX2JhY2tlbmREaXNwYXRjaGVyKGJhY2tl
bmREaXNwYXRjaGVyKQpAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI6OnJlcG9ydFAKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuVmFsdWVUeXBl
LCB0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIERlZmF1bHRWYWx1ZVR5cGU+Ci1SZXR1cm5W
YWx1ZVR5cGUgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFByb3BlcnR5VmFsdWUoSW5z
cGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3Vu
ZCwgSW5zcGVjdG9yQXJyYXkqIHByb3RvY29sRXJyb3JzLCBEZWZhdWx0VmFsdWVUeXBlIGRlZmF1
bHRWYWx1ZSwgYm9vbCAoKmFzTWV0aG9kKShJbnNwZWN0b3JWYWx1ZSosIFZhbHVlVHlwZSopLCBj
b25zdCBjaGFyKiB0eXBlTmFtZSkKK3N0YXRpYyBSZXR1cm5WYWx1ZVR5cGUgZ2V0UHJvcGVydHlW
YWx1ZShJbnNwZWN0b3JPYmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2
YWx1ZUZvdW5kLCBJbnNwZWN0b3JBcnJheSogcHJvdG9jb2xFcnJvcnMsIERlZmF1bHRWYWx1ZVR5
cGUgZGVmYXVsdFZhbHVlLCBib29sICgqYXNNZXRob2QpKEluc3BlY3RvclZhbHVlKiwgVmFsdWVU
eXBlKiksIGNvbnN0IGNoYXIqIHR5cGVOYW1lKQogewogICAgIEFTU0VSVChwcm90b2NvbEVycm9y
cyk7CiAKQEAgLTI1OSw2ICsyNTksNiBAQCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBJbnNw
ZWN0b3JCYWNrCiAgICAgcmV0dXJuIGdldFByb3BlcnR5VmFsdWU8UGFzc1JlZlB0cjxJbnNwZWN0
b3JBcnJheT4sIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4sIEluc3BlY3RvckFycmF5Kj4ob2JqZWN0
LCBuYW1lLCB2YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycywgbnVsbHB0ciwgQXNNZXRob2RCcmlk
Z2VzOjphc0FycmF5LCAiQXJyYXkiKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAv
LyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaAkocmV2aXNpb24gMTYwNDA0KQkoZnJvbSBTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaDoxNjA0MDQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExIFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyX2gKKyNkZWZpbmUgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJfaAor
CisjaW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI7CitjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7Cit0eXBlZGVm
IFN0cmluZyBFcnJvclN0cmluZzsKKworY2xhc3MgSW5zcGVjdG9yU3VwcGxlbWVudGFsQmFja2Vu
ZERpc3BhdGNoZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnNwZWN0b3JTdXBwbGVtZW50YWxCYWNr
ZW5kRGlzcGF0Y2hlcj4geworcHVibGljOgorICAgIEluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tl
bmREaXNwYXRjaGVyKEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hl
cikgOiBtX2JhY2tlbmREaXNwYXRjaGVyKGJhY2tlbmREaXNwYXRjaGVyKSB7IH0KKyAgICB2aXJ0
dWFsIH5JbnNwZWN0b3JTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFBh
c3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtZXNzYWdlKSA9IDA7Citwcm90ZWN0ZWQ6CisgICAg
UmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwor
fTsKKworY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgOiBwdWJsaWMgUmVmQ291bnRl
ZDxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBjcmVhdGUoSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKik7CisgICAgdmlydHVhbCB+SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIoKSB7
IH0KKworICAgIGNsYXNzIENhbGxiYWNrQmFzZTogcHVibGljIFJlZkNvdW50ZWQ8Q2FsbGJhY2tC
YXNlPiB7CisgICAgcHVibGljOgorICAgICAgICBDYWxsYmFja0Jhc2UoUGFzc1JlZlB0cjxJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4sIGludCBpZCk7CisgICAgICAgIHZpcnR1YWwgfkNhbGxi
YWNrQmFzZSgpIHsgfQorCisgICAgICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKKyAgICAgICAg
dm9pZCBzZW5kRmFpbHVyZShjb25zdCBFcnJvclN0cmluZyYpOworICAgICAgICB2b2lkIGRpc2Fi
bGUoKSB7IG1fYWxyZWFkeVNlbnQgPSB0cnVlOyB9CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAg
IHZvaWQgc2VuZElmQWN0aXZlKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBwYXJ0aWFsTWVz
c2FnZSwgY29uc3QgRXJyb3JTdHJpbmcmIGludm9jYXRpb25FcnJvcik7CisKKyAgICBwcml2YXRl
OgorICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERp
c3BhdGNoZXI7CisgICAgICAgIGludCBtX2lkOworICAgICAgICBib29sIG1fYWxyZWFkeVNlbnQ7
CisgICAgfTsKKworICAgIHZvaWQgY2xlYXJGcm9udGVuZCgpIHsgbV9pbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwgPSBudWxscHRyOyB9CisgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJu
ICEhbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7IH0KKworICAgIGVudW0gQ29tbW9uRXJyb3JD
b2RlIHsKKyAgICAgICAgUGFyc2VFcnJvciA9IDAsCisgICAgICAgIEludmFsaWRSZXF1ZXN0LAor
ICAgICAgICBNZXRob2ROb3RGb3VuZCwKKyAgICAgICAgSW52YWxpZFBhcmFtcywKKyAgICAgICAg
SW50ZXJuYWxFcnJvciwKKyAgICAgICAgU2VydmVyRXJyb3IKKyAgICB9OworCisgICAgdm9pZCBy
ZWdpc3RlckRpc3BhdGNoZXJGb3JEb21haW4oY29uc3QgU3RyaW5nJiBkb21haW4sIEluc3BlY3Rv
clN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKik7CisgICAgdm9pZCBkaXNwYXRjaChjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQgc2VuZFJlc3BvbnNlKGxvbmcgY2FsbElkLCBQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0LCBjb25zdCBFcnJvclN0cmluZyYgaW52
b2NhdGlvbkVycm9yKTsKKyAgICB2b2lkIHJlcG9ydFByb3RvY29sRXJyb3IoY29uc3QgbG9uZyog
Y29uc3QgY2FsbElkLCBDb21tb25FcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
KSBjb25zdDsKKyAgICB2b2lkIHJlcG9ydFByb3RvY29sRXJyb3IoY29uc3QgbG9uZyogY29uc3Qg
Y2FsbElkLCBDb21tb25FcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBQYXNz
UmVmUHRyPEluc3BlY3RvckFycmF5PiBkYXRhKSBjb25zdDsKKworICAgIHN0YXRpYyBpbnQgZ2V0
SW50KEluc3BlY3Rvck9iamVjdCosIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3Vu
ZCwgSW5zcGVjdG9yQXJyYXkqIHByb3RvY29sRXJyb3JzKTsKKyAgICBzdGF0aWMgZG91YmxlIGdl
dERvdWJsZShJbnNwZWN0b3JPYmplY3QqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVl
Rm91bmQsIEluc3BlY3RvckFycmF5KiBwcm90b2NvbEVycm9ycyk7CisgICAgc3RhdGljIFN0cmlu
ZyBnZXRTdHJpbmcoSW5zcGVjdG9yT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2
YWx1ZUZvdW5kLCBJbnNwZWN0b3JBcnJheSogcHJvdG9jb2xFcnJvcnMpOworICAgIHN0YXRpYyBi
b29sIGdldEJvb2xlYW4oSW5zcGVjdG9yT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29s
KiB2YWx1ZUZvdW5kLCBJbnNwZWN0b3JBcnJheSogcHJvdG9jb2xFcnJvcnMpOworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZ2V0T2JqZWN0KEluc3BlY3Rvck9iamVjdCos
IGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yQXJyYXkqIHBy
b3RvY29sRXJyb3JzKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gZ2V0
QXJyYXkoSW5zcGVjdG9yT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZv
dW5kLCBJbnNwZWN0b3JBcnJheSogcHJvdG9jb2xFcnJvcnMpOworCitwcml2YXRlOgorICAgIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogaW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKSA6IG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKGluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCkgeyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5WYWx1
ZVR5cGUsIHR5cGVuYW1lIFZhbHVlVHlwZSwgdHlwZW5hbWUgRGVmYXVsdFZhbHVlVHlwZT4KKyAg
ICBzdGF0aWMgUmV0dXJuVmFsdWVUeXBlIGdldFByb3BlcnR5VmFsdWUoSW5zcGVjdG9yT2JqZWN0
KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9y
QXJyYXkqIHByb3RvY29sRXJyb3JzLCBEZWZhdWx0VmFsdWVUeXBlIGRlZmF1bHRWYWx1ZSwgYm9v
bCAoKmFzTWV0aG9kKShJbnNwZWN0b3JWYWx1ZSosIFZhbHVlVHlwZSopLCBjb25zdCBjaGFyKiB0
eXBlTmFtZSk7CisKKyAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG1faW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsOworICAgIEhhc2hNYXA8U3RyaW5nLCBJbnNwZWN0b3JTdXBwbGVtZW50YWxC
YWNrZW5kRGlzcGF0Y2hlcio+IG1fZGlzcGF0Y2hlcnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcl9o
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaAkod29ya2luZyBjb3B5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNywxMiArMjcsMTIgQEAKICNpZm5kZWYgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXJfaAogI2RlZmluZSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcl9oCiAKLSNp
bmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgorI2luY2x1ZGUgIkluc3BlY3RvclZhbHVl
cy5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNv
cmUgeworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIGNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwpAQCAtNDcsMTUgKzQ3LDEz
IEBAIHByb3RlY3RlZDoKICAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1f
YmFja2VuZERpc3BhdGNoZXI7CiB9OwogCi1jbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiB7CitjbGFz
cyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBS
ZWZDb3VudGVkPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IGNyZWF0ZShJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqKTsKLSAgICB2aXJ0dWFsIH5JbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcigpIHsgfQogCi0gICAgY2xhc3MgQ2FsbGJhY2tCYXNlOiBwdWJsaWMgUmVmQ291bnRlZDxD
YWxsYmFja0Jhc2U+IHsKKyAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBDYWxsYmFja0Jhc2Ug
OiBwdWJsaWMgUmVmQ291bnRlZDxDYWxsYmFja0Jhc2U+IHsKICAgICBwdWJsaWM6CiAgICAgICAg
IENhbGxiYWNrQmFzZShQYXNzUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiwgaW50
IGlkKTsKLSAgICAgICAgdmlydHVhbCB+Q2FsbGJhY2tCYXNlKCkgeyB9CiAKICAgICAgICAgYm9v
bCBpc0FjdGl2ZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNlbmRGYWlsdXJlKGNvbnN0IEVycm9y
U3RyaW5nJik7CkBAIC05OCwxMyArOTYsMTAgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCkgOiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbChpbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwpIHsgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuVmFsdWVU
eXBlLCB0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIERlZmF1bHRWYWx1ZVR5cGU+Ci0gICAg
c3RhdGljIFJldHVyblZhbHVlVHlwZSBnZXRQcm9wZXJ0eVZhbHVlKEluc3BlY3Rvck9iamVjdCog
b2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3RvckFy
cmF5KiBwcm90b2NvbEVycm9ycywgRGVmYXVsdFZhbHVlVHlwZSBkZWZhdWx0VmFsdWUsIGJvb2wg
KCphc01ldGhvZCkoSW5zcGVjdG9yVmFsdWUqLCBWYWx1ZVR5cGUqKSwgY29uc3QgY2hhciogdHlw
ZU5hbWUpOwotCiAgICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250
ZW5kQ2hhbm5lbDsKICAgICBIYXNoTWFwPFN0cmluZywgSW5zcGVjdG9yU3VwcGxlbWVudGFsQmFj
a2VuZERpc3BhdGNoZXIqPiBtX2Rpc3BhdGNoZXJzOwogfTsKIAotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyAhZGVmaW5lZChJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcl9oKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JUeXBlQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVHlwZUJ1aWxkZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW5zcGVjdG9yVHlwZUJ1
aWxkZXJfaAorI2RlZmluZSBJbnNwZWN0b3JUeXBlQnVpbGRlcl9oCisKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SKQorCisjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCisjaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgSW5z
cGVjdG9yIHsKKworbmFtZXNwYWNlIFR5cGVCdWlsZGVyIHsKKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4KK2NsYXNzIE9wdE91dHB1dCB7CitwdWJsaWM6CisgICAgT3B0T3V0cHV0KCkgOiBtX2Fzc2ln
bmVkKGZhbHNlKSB7IH0KKworICAgIHZvaWQgb3BlcmF0b3I9KFQgdmFsdWUpCisgICAgeworICAg
ICAgICBtX3ZhbHVlID0gdmFsdWU7CisgICAgICAgIG1fYXNzaWduZWQgPSB0cnVlOworICAgIH0K
KworICAgIGJvb2wgaXNBc3NpZ25lZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXNzaWduZWQ7IH0KKwor
ICAgIFQgZ2V0VmFsdWUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzQXNzaWduZWQoKSk7Cisg
ICAgICAgIHJldHVybiBtX3ZhbHVlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBUIG1fdmFsdWU7
CisgICAgYm9vbCBtX2Fzc2lnbmVkOworCisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoT3B0T3V0
cHV0KTsKK307CisKKworLy8gQSBzbWFsbCB0cmFuc2llbnQgd3JhcHBlciBhcm91bmQgaW50IHR5
cGUsIHRoYXQgY2FuIGJlIHVzZWQgYXMgYSBmdW5jaXRvbiBwYXJhbWV0ZXIgdHlwZQorLy8gY2xl
dmVybHkgZGlzYWxsb3dpbmcgQysrIGltcGxpY2l0IGNhc3RzIGZyb20gZmxvYXQgb3IgZG91Ymxl
LgorY2xhc3MgRXhhY3RseUludCB7CitwdWJsaWM6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
KyAgICBFeGFjdGx5SW50KFQgdCkgOiBtX3ZhbHVlKGNhc3RfdG9faW50PFQ+KHQpKSB7IH0KKyAg
ICBFeGFjdGx5SW50KCkgeyB9CisKKyAgICBvcGVyYXRvciBpbnQoKSB7IHJldHVybiBtX3ZhbHVl
OyB9CisKK3ByaXZhdGU6CisgICAgaW50IG1fdmFsdWU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgorICAgIHN0YXRpYyBpbnQgY2FzdF90b19pbnQoVCkgeyByZXR1cm4gVDo6ZGVmYXVsdF9j
YXNlX2Nhc3RfaXNfbm90X3N1cHBvcnRlZCgpOyB9Cit9OworCit0ZW1wbGF0ZTw+CitpbmxpbmUg
aW50IEV4YWN0bHlJbnQ6OmNhc3RfdG9faW50PGludD4oaW50IGkpIHsgcmV0dXJuIGk7IH0KKwor
dGVtcGxhdGU8PgoraW5saW5lIGludCBFeGFjdGx5SW50OjpjYXN0X3RvX2ludDx1bnNpZ25lZCBp
bnQ+KHVuc2lnbmVkIGludCBpKSB7IHJldHVybiBpOyB9CisKKyNpZiAhQVNTRVJUX0RJU0FCTEVE
CitjbGFzcyBSdW50aW1lQ2FzdEhlbHBlciB7CitwdWJsaWM6CisgICAgdGVtcGxhdGU8SW5zcGVj
dG9yVmFsdWU6OlR5cGUgVFlQRT4KKyAgICBzdGF0aWMgdm9pZCBhc3NlcnRUeXBlKEluc3BlY3Rv
clZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVCh2YWx1ZS0+dHlwZSgpID09IFRZ
UEUpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGFzc2VydEFueShJbnNwZWN0b3JWYWx1ZSop
CisgICAgeworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGFzc2VydEludChJbnNwZWN0b3JWYWx1
ZSogdmFsdWUpCisgICAgeworICAgICAgICBkb3VibGUgdjsKKyAgICAgICAgYm9vbCBjYXN0UmVz
ID0gdmFsdWUtPmFzTnVtYmVyKCZ2KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChjYXN0UmVzLCBj
YXN0UmVzKTsKKyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGRvdWJsZT4oc3RhdGljX2Nhc3Q8
aW50Pih2KSkgPT0gdik7CisgICAgfQorfTsKKyNlbmRpZgorCisKKy8vIFRoaXMgY2xhc3MgcHJv
dmlkZXMgIlRyYWl0cyIgdHlwZSBmb3IgdGhlIGlucHV0IHR5cGUgVC4gSXQgaXMgcHJvZ3JhbW1l
ZCB1c2luZyBDKysgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24KKy8vIHRlY2huaXF1ZS4gQnkgZGVm
YXVsdCBpdCBzaW1wbHkgdGFrZXMgIkl0ZW1UcmFpdHMiIHR5cGUgZnJvbSBULCBidXQgaXQgZG9l
c24ndCB3b3JrIHdpdGggdGhlIGJhc2UgdHlwZXMuCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3Ry
dWN0IEFycmF5SXRlbUhlbHBlciB7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBUOjpJdGVtVHJhaXRz
IFRyYWl0czsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBBcnJheSA6IHB1Ymxp
YyBJbnNwZWN0b3JBcnJheUJhc2UgeworcHJpdmF0ZToKKyAgICBBcnJheSgpIHsgfQorCisgICAg
SW5zcGVjdG9yQXJyYXkqIG9wZW5BY2Nlc3NvcnMoKQorICAgIHsKKyAgICAgICAgQ09NUElMRV9B
U1NFUlQoc2l6ZW9mKEluc3BlY3RvckFycmF5KSA9PSBzaXplb2YoQXJyYXk8VD4pLCBjYW5ub3Rf
Y2FzdCk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbnNwZWN0b3JBcnJheSo+KHN0YXRp
Y19jYXN0PEluc3BlY3RvckFycmF5QmFzZSo+KHRoaXMpKTsKKyAgICB9CisKK3B1YmxpYzoKKyAg
ICB2b2lkIGFkZEl0ZW0oUGFzc1JlZlB0cjxUPiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFycmF5
SXRlbUhlbHBlcjxUPjo6VHJhaXRzOjpwdXNoUmVmUHRyKHRoaXMtPm9wZW5BY2Nlc3NvcnMoKSwg
dmFsdWUpOworICAgIH0KKworICAgIHZvaWQgYWRkSXRlbShUIHZhbHVlKQorICAgIHsKKyAgICAg
ICAgQXJyYXlJdGVtSGVscGVyPFQ+OjpUcmFpdHM6OnB1c2hSYXcodGhpcy0+b3BlbkFjY2Vzc29y
cygpLCB2YWx1ZSk7CisgICAgfQorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXJyYXk8VD4+IGNy
ZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFycmF5PFQ+KCkpOwor
ICAgIH0KKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFycmF5PFQ+PiBydW50aW1lQ2FzdChQYXNz
UmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSkKKyAgICB7CisgICAgICAgIFJlZlB0cjxJbnNw
ZWN0b3JBcnJheT4gYXJyYXk7CisgICAgICAgIGJvb2wgY2FzdFJlcyA9IHZhbHVlLT5hc0FycmF5
KCZhcnJheSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoY2FzdFJlcywgY2FzdFJlcyk7CisjaWYg
IUFTU0VSVF9ESVNBQkxFRAorICAgICAgICBhc3NlcnRDb3JyZWN0VmFsdWUoYXJyYXkuZ2V0KCkp
OworI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6
ZW9mKEFycmF5PFQ+KSA9PSBzaXplb2YoSW5zcGVjdG9yQXJyYXkpLCB0eXBlX2Nhc3RfcHJvYmxl
bSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTxUPio+KHN0YXRpY19jYXN0PElu
c3BlY3RvckFycmF5QmFzZSo+KGFycmF5LmdldCgpKSk7CisgICAgfQorCisjaWYgIUFTU0VSVF9E
SVNBQkxFRAorICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1
ZSogdmFsdWUpCisgICAgeworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFycmF5Owor
ICAgICAgICBib29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNBcnJheSgmYXJyYXkpOworICAgICAgICBB
U1NFUlRfVU5VU0VEKGNhc3RSZXMsIGNhc3RSZXMpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgYXJyYXktPmxlbmd0aCgpOyBpKyspCisgICAgICAgICAgICBBcnJheUl0ZW1IZWxw
ZXI8VD46OlRyYWl0czo6dGVtcGxhdGUgYXNzZXJ0Q29ycmVjdFZhbHVlPFQ+KGFycmF5LT5nZXQo
aSkuZ2V0KCkpOworICAgIH0KKyNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECit9OworCitzdHJ1
Y3QgU3RydWN0SXRlbVRyYWl0cyB7CisgICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0
b3JBcnJheSogYXJyYXksIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQorICAgIHsK
KyAgICAgICAgYXJyYXktPnB1c2hWYWx1ZSh2YWx1ZSk7CisgICAgfQorCisjaWYgIUFTU0VSVF9E
SVNBQkxFRAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgc3RhdGljIHZvaWQgYXNzZXJ0
Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIFQ6OmFz
c2VydENvcnJlY3RWYWx1ZSh2YWx1ZSk7CisgICAgfQorI2VuZGlmIC8vICFBU1NFUlRfRElTQUJM
RUQKK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBBcnJheUl0ZW1IZWxwZXI8U3RyaW5nPiB7Cisg
ICAgc3RydWN0IFRyYWl0cyB7CisgICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSYXcoSW5zcGVjdG9y
QXJyYXkqIGFycmF5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAg
ICBhcnJheS0+cHVzaFN0cmluZyh2YWx1ZSk7CisgICAgICAgIH0KKworI2lmICFBU1NFUlRfRElT
QUJMRUQKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICAgICAgc3RhdGljIHZvaWQg
YXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFsdWU6OlR5
cGVTdHJpbmc+KHZhbHVlKTsKKyAgICAgICAgfQorI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQK
KyAgICB9OworfTsKKwordGVtcGxhdGU8Pgorc3RydWN0IEFycmF5SXRlbUhlbHBlcjxpbnQ+IHsK
KyAgICBzdHJ1Y3QgVHJhaXRzIHsKKyAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJhdyhJbnNwZWN0
b3JBcnJheSogYXJyYXksIGludCB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgYXJyYXkt
PnB1c2hJbnQodmFsdWUpOworICAgICAgICB9CisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJl
Y3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIFJ1
bnRpbWVDYXN0SGVscGVyOjphc3NlcnRJbnQodmFsdWUpOworICAgICAgICB9CisjZW5kaWYgLy8g
IUFTU0VSVF9ESVNBQkxFRAorICAgIH07Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgQXJyYXlJ
dGVtSGVscGVyPGRvdWJsZT4geworICAgIHN0cnVjdCBUcmFpdHMgeworICAgICAgICBzdGF0aWMg
dm9pZCBwdXNoUmF3KEluc3BlY3RvckFycmF5KiBhcnJheSwgZG91YmxlIHZhbHVlKQorICAgICAg
ICB7CisgICAgICAgICAgICBhcnJheS0+cHVzaE51bWJlcih2YWx1ZSk7CisgICAgICAgIH0KKwor
I2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICAg
ICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkK
KyAgICAgICAgeworICAgICAgICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5z
cGVjdG9yVmFsdWU6OlR5cGVOdW1iZXI+KHZhbHVlKTsKKyAgICAgICAgfQorI2VuZGlmIC8vICFB
U1NFUlRfRElTQUJMRUQKKyAgICB9OworfTsKKwordGVtcGxhdGU8Pgorc3RydWN0IEFycmF5SXRl
bUhlbHBlcjxib29sPiB7CisgICAgc3RydWN0IFRyYWl0cyB7CisgICAgICAgIHN0YXRpYyB2b2lk
IHB1c2hSYXcoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBib29sIHZhbHVlKQorICAgICAgICB7Cisg
ICAgICAgICAgICBhcnJheS0+cHVzaEJvb2xlYW4odmFsdWUpOworICAgICAgICB9CisKKyNpZiAh
QVNTRVJUX0RJU0FCTEVECisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgICAgIHN0
YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3Rv
clZhbHVlOjpUeXBlQm9vbGVhbj4odmFsdWUpOworICAgICAgICB9CisjZW5kaWYgLy8gIUFTU0VS
VF9ESVNBQkxFRAorICAgIH07Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgQXJyYXlJdGVtSGVs
cGVyPEluc3BlY3RvclZhbHVlPiB7CisgICAgc3RydWN0IFRyYWl0cyB7CisgICAgICAgIHN0YXRp
YyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgYXJyYXktPnB1c2hWYWx1
ZSh2YWx1ZSk7CisgICAgICAgIH0KKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KKyAgICAgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVl
KEluc3BlY3RvclZhbHVlKiB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgUnVudGltZUNh
c3RIZWxwZXI6OmFzc2VydEFueSh2YWx1ZSk7CisgICAgICAgIH0KKyNlbmRpZiAvLyAhQVNTRVJU
X0RJU0FCTEVECisgICAgfTsKK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBBcnJheUl0ZW1IZWxw
ZXI8SW5zcGVjdG9yT2JqZWN0PiB7CisgICAgc3RydWN0IFRyYWl0cyB7CisgICAgICAgIHN0YXRp
YyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgYXJyYXktPnB1c2hWYWx1
ZSh2YWx1ZSk7CisgICAgICAgIH0KKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KKyAgICAgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVl
KEluc3BlY3RvclZhbHVlKiB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgUnVudGltZUNh
c3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFsdWU6OlR5cGVPYmplY3Q+KHZhbHVlKTsK
KyAgICAgICAgfQorI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKKyAgICB9OworfTsKKwordGVt
cGxhdGU8Pgorc3RydWN0IEFycmF5SXRlbUhlbHBlcjxJbnNwZWN0b3JBcnJheT4geworICAgIHN0
cnVjdCBUcmFpdHMgeworICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmVmUHRyKEluc3BlY3RvckFy
cmF5KiBhcnJheSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gdmFsdWUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGFycmF5LT5wdXNoQXJyYXkodmFsdWUpOworICAgICAgICB9CisKKyNpZiAh
QVNTRVJUX0RJU0FCTEVECisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgICAgIHN0
YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3Rv
clZhbHVlOjpUeXBlQXJyYXk+KHZhbHVlKTsKKyAgICAgICAgfQorI2VuZGlmIC8vICFBU1NFUlRf
RElTQUJMRUQKKyAgICB9OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBBcnJh
eUl0ZW1IZWxwZXI8VHlwZUJ1aWxkZXI6OkFycmF5PFQ+PiB7CisgICAgc3RydWN0IFRyYWl0cyB7
CisgICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQ
YXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUPj4gdmFsdWUpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGFycmF5LT5wdXNoVmFsdWUodmFsdWUpOworICAgICAgICB9CisKKyNpZiAhQVNTRVJU
X0RJU0FCTEVECisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFM+CisgICAgICAgIHN0YXRpYyB2
b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIFM6OmFzc2VydENvcnJlY3RWYWx1ZSh2YWx1ZSk7CisgICAgICAgIH0KKyNl
bmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECisgICAgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFR5
cGVCdWlsZGVyCisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8gRU5BQkxF
KElOU1BFQ1RPUikKKworI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvclR5cGVCdWlsZGVyX2gp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JWYWx1ZXMuY3BwCShyZXZpc2lvbiAxNjA0MDQpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwOjE2MDQwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDgzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIK
KworI2luY2x1ZGUgPHd0Zi9EZWNpbWFsTnVtYmVyLmg+CisjaW5jbHVkZSA8d3RmL2R0b2EuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworbmFtZXNwYWNlIHsKKworc3RhdGljIGNvbnN0IGludCBzdGFja0xpbWl0ID0gMTAwMDsK
KworZW51bSBUb2tlbiB7CisgICAgT0JKRUNUX0JFR0lOLAorICAgIE9CSkVDVF9FTkQsCisgICAg
QVJSQVlfQkVHSU4sCisgICAgQVJSQVlfRU5ELAorICAgIFNUUklORywKKyAgICBOVU1CRVIsCisg
ICAgQk9PTF9UUlVFLAorICAgIEJPT0xfRkFMU0UsCisgICAgTlVMTF9UT0tFTiwKKyAgICBMSVNU
X1NFUEFSQVRPUiwKKyAgICBPQkpFQ1RfUEFJUl9TRVBBUkFUT1IsCisgICAgSU5WQUxJRF9UT0tF
TiwKK307CisKK2NvbnN0IGNoYXIqIGNvbnN0IG51bGxTdHJpbmcgPSAibnVsbCI7Citjb25zdCBj
aGFyKiBjb25zdCB0cnVlU3RyaW5nID0gInRydWUiOworY29uc3QgY2hhciogY29uc3QgZmFsc2VT
dHJpbmcgPSAiZmFsc2UiOworCitib29sIHBhcnNlQ29uc3RUb2tlbihjb25zdCBVQ2hhciogc3Rh
cnQsIGNvbnN0IFVDaGFyKiBlbmQsIGNvbnN0IFVDaGFyKiogdG9rZW5FbmQsIGNvbnN0IGNoYXIq
IHRva2VuKQoreworICAgIHdoaWxlIChzdGFydCA8IGVuZCAmJiAqdG9rZW4gIT0gJ1wwJyAmJiAq
c3RhcnQrKyA9PSAqdG9rZW4rKykgeyB9CisgICAgaWYgKCp0b2tlbiAhPSAnXDAnKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgKnRva2VuRW5kID0gc3RhcnQ7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2Jvb2wgcmVhZEludChjb25zdCBVQ2hhciogc3RhcnQsIGNvbnN0IFVDaGFyKiBlbmQs
IGNvbnN0IFVDaGFyKiogdG9rZW5FbmQsIGJvb2wgY2FuSGF2ZUxlYWRpbmdaZXJvcykKK3sKKyAg
ICBpZiAoc3RhcnQgPT0gZW5kKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYm9vbCBoYXZl
TGVhZGluZ1plcm8gPSAnMCcgPT0gKnN0YXJ0OworICAgIGludCBsZW5ndGggPSAwOworICAgIHdo
aWxlIChzdGFydCA8IGVuZCAmJiAnMCcgPD0gKnN0YXJ0ICYmICpzdGFydCA8PSAnOScpIHsKKyAg
ICAgICAgKytzdGFydDsKKyAgICAgICAgKytsZW5ndGg7CisgICAgfQorICAgIGlmICghbGVuZ3Ro
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjYW5IYXZlTGVhZGluZ1plcm9zICYm
IGxlbmd0aCA+IDEgJiYgaGF2ZUxlYWRpbmdaZXJvKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgKnRva2VuRW5kID0gc3RhcnQ7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgcGFyc2VO
dW1iZXJUb2tlbihjb25zdCBVQ2hhciogc3RhcnQsIGNvbnN0IFVDaGFyKiBlbmQsIGNvbnN0IFVD
aGFyKiogdG9rZW5FbmQpCit7CisgICAgLy8gV2UganVzdCBncmFiIHRoZSBudW1iZXIgaGVyZS4g
IFdlIHZhbGlkYXRlIHRoZSBzaXplIGluIERlY29kZU51bWJlci4KKyAgICAvLyBBY2NvcmRpbmcg
ICB0byBSRkM0NjI3LCBhIHZhbGlkIG51bWJlciBpczogW21pbnVzXSBpbnQgW2ZyYWNdIFtleHBd
CisgICAgaWYgKHN0YXJ0ID09IGVuZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFVDaGFy
IGMgPSAqc3RhcnQ7CisgICAgaWYgKCctJyA9PSBjKQorICAgICAgICArK3N0YXJ0OworCisgICAg
aWYgKCFyZWFkSW50KHN0YXJ0LCBlbmQsICZzdGFydCwgZmFsc2UpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgaWYgKHN0YXJ0ID09IGVuZCkgeworICAgICAgICAqdG9rZW5FbmQgPSBzdGFy
dDsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gT3B0aW9uYWwgZnJhY3Rp
b24gcGFydAorICAgIGMgPSAqc3RhcnQ7CisgICAgaWYgKCcuJyA9PSBjKSB7CisgICAgICAgICsr
c3RhcnQ7CisgICAgICAgIGlmICghcmVhZEludChzdGFydCwgZW5kLCAmc3RhcnQsIHRydWUpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoc3RhcnQgPT0gZW5kKSB7Cisg
ICAgICAgICAgICAqdG9rZW5FbmQgPSBzdGFydDsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9CisgICAgICAgIGMgPSAqc3RhcnQ7CisgICAgfQorCisgICAgLy8gT3B0aW9uYWwg
ZXhwb25lbnQgcGFydAorICAgIGlmICgnZScgPT0gYyB8fCAnRScgPT0gYykgeworICAgICAgICAr
K3N0YXJ0OworICAgICAgICBpZiAoc3RhcnQgPT0gZW5kKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBjID0gKnN0YXJ0OworICAgICAgICBpZiAoJy0nID09IGMgfHwgJysnID09
IGMpIHsKKyAgICAgICAgICAgICsrc3RhcnQ7CisgICAgICAgICAgICBpZiAoc3RhcnQgPT0gZW5k
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
IXJlYWRJbnQoc3RhcnQsIGVuZCwgJnN0YXJ0LCB0cnVlKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICAqdG9rZW5FbmQgPSBzdGFydDsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCByZWFkSGV4RGlnaXRzKGNvbnN0IFVDaGFyKiBzdGFydCwgY29uc3QgVUNoYXIq
IGVuZCwgY29uc3QgVUNoYXIqKiB0b2tlbkVuZCwgaW50IGRpZ2l0cykKK3sKKyAgICBpZiAoZW5k
IC0gc3RhcnQgPCBkaWdpdHMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBmb3IgKGludCBp
ID0gMDsgaSA8IGRpZ2l0czsgKytpKSB7CisgICAgICAgIFVDaGFyIGMgPSAqc3RhcnQrKzsKKyAg
ICAgICAgaWYgKCEoKCcwJyA8PSBjICYmIGMgPD0gJzknKSB8fCAoJ2EnIDw9IGMgJiYgYyA8PSAn
ZicpIHx8ICgnQScgPD0gYyAmJiBjIDw9ICdGJykpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICAqdG9rZW5FbmQgPSBzdGFydDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Ym9vbCBwYXJzZVN0cmluZ1Rva2VuKGNvbnN0IFVDaGFyKiBzdGFydCwgY29uc3QgVUNoYXIqIGVu
ZCwgY29uc3QgVUNoYXIqKiB0b2tlbkVuZCkKK3sKKyAgICB3aGlsZSAoc3RhcnQgPCBlbmQpIHsK
KyAgICAgICAgVUNoYXIgYyA9ICpzdGFydCsrOworICAgICAgICBpZiAoJ1xcJyA9PSBjKSB7Cisg
ICAgICAgICAgICBjID0gKnN0YXJ0Kys7CisgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGVz
Y2FwZWQgY2hhciBpcyB2YWxpZC4KKyAgICAgICAgICAgIHN3aXRjaCAoYykgeworICAgICAgICAg
ICAgY2FzZSAneCc6CisgICAgICAgICAgICAgICAgaWYgKCFyZWFkSGV4RGlnaXRzKHN0YXJ0LCBl
bmQsICZzdGFydCwgMikpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ3UnOgorICAgICAgICAgICAgICAg
IGlmICghcmVhZEhleERpZ2l0cyhzdGFydCwgZW5kLCAmc3RhcnQsIDQpKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlICdcXCc6CisgICAgICAgICAgICBjYXNlICcvJzoKKyAgICAgICAgICAgIGNhc2UgJ2In
OgorICAgICAgICAgICAgY2FzZSAnZic6CisgICAgICAgICAgICBjYXNlICduJzoKKyAgICAgICAg
ICAgIGNhc2UgJ3InOgorICAgICAgICAgICAgY2FzZSAndCc6CisgICAgICAgICAgICBjYXNlICd2
JzoKKyAgICAgICAgICAgIGNhc2UgJyInOgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0gZWxzZSBpZiAoJyInID09IGMpIHsKKyAgICAgICAgICAgICp0b2tlbkVu
ZCA9IHN0YXJ0OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitUb2tlbiBwYXJzZVRva2VuKGNvbnN0IFVDaGFyKiBzdGFy
dCwgY29uc3QgVUNoYXIqIGVuZCwgY29uc3QgVUNoYXIqKiB0b2tlblN0YXJ0LCBjb25zdCBVQ2hh
cioqIHRva2VuRW5kKQoreworICAgIHdoaWxlIChzdGFydCA8IGVuZCAmJiBpc1NwYWNlT3JOZXds
aW5lKCpzdGFydCkpCisgICAgICAgICsrc3RhcnQ7CisKKyAgICBpZiAoc3RhcnQgPT0gZW5kKQor
ICAgICAgICByZXR1cm4gSU5WQUxJRF9UT0tFTjsKKworICAgICp0b2tlblN0YXJ0ID0gc3RhcnQ7
CisKKyAgICBzd2l0Y2ggKCpzdGFydCkgeworICAgIGNhc2UgJ24nOgorICAgICAgICBpZiAocGFy
c2VDb25zdFRva2VuKHN0YXJ0LCBlbmQsIHRva2VuRW5kLCBudWxsU3RyaW5nKSkKKyAgICAgICAg
ICAgIHJldHVybiBOVUxMX1RPS0VOOworICAgICAgICBicmVhazsKKyAgICBjYXNlICd0JzoKKyAg
ICAgICAgaWYgKHBhcnNlQ29uc3RUb2tlbihzdGFydCwgZW5kLCB0b2tlbkVuZCwgdHJ1ZVN0cmlu
ZykpCisgICAgICAgICAgICByZXR1cm4gQk9PTF9UUlVFOworICAgICAgICBicmVhazsKKyAgICBj
YXNlICdmJzoKKyAgICAgICAgaWYgKHBhcnNlQ29uc3RUb2tlbihzdGFydCwgZW5kLCB0b2tlbkVu
ZCwgZmFsc2VTdHJpbmcpKQorICAgICAgICAgICAgcmV0dXJuIEJPT0xfRkFMU0U7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgJ1snOgorICAgICAgICAqdG9rZW5FbmQgPSBzdGFydCArIDE7Cisg
ICAgICAgIHJldHVybiBBUlJBWV9CRUdJTjsKKyAgICBjYXNlICddJzoKKyAgICAgICAgKnRva2Vu
RW5kID0gc3RhcnQgKyAxOworICAgICAgICByZXR1cm4gQVJSQVlfRU5EOworICAgIGNhc2UgJywn
OgorICAgICAgICAqdG9rZW5FbmQgPSBzdGFydCArIDE7CisgICAgICAgIHJldHVybiBMSVNUX1NF
UEFSQVRPUjsKKyAgICBjYXNlICd7JzoKKyAgICAgICAgKnRva2VuRW5kID0gc3RhcnQgKyAxOwor
ICAgICAgICByZXR1cm4gT0JKRUNUX0JFR0lOOworICAgIGNhc2UgJ30nOgorICAgICAgICAqdG9r
ZW5FbmQgPSBzdGFydCArIDE7CisgICAgICAgIHJldHVybiBPQkpFQ1RfRU5EOworICAgIGNhc2Ug
JzonOgorICAgICAgICAqdG9rZW5FbmQgPSBzdGFydCArIDE7CisgICAgICAgIHJldHVybiBPQkpF
Q1RfUEFJUl9TRVBBUkFUT1I7CisgICAgY2FzZSAnMCc6CisgICAgY2FzZSAnMSc6CisgICAgY2Fz
ZSAnMic6CisgICAgY2FzZSAnMyc6CisgICAgY2FzZSAnNCc6CisgICAgY2FzZSAnNSc6CisgICAg
Y2FzZSAnNic6CisgICAgY2FzZSAnNyc6CisgICAgY2FzZSAnOCc6CisgICAgY2FzZSAnOSc6Cisg
ICAgY2FzZSAnLSc6CisgICAgICAgIGlmIChwYXJzZU51bWJlclRva2VuKHN0YXJ0LCBlbmQsIHRv
a2VuRW5kKSkKKyAgICAgICAgICAgIHJldHVybiBOVU1CRVI7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgJyInOgorICAgICAgICBpZiAocGFyc2VTdHJpbmdUb2tlbihzdGFydCArIDEsIGVuZCwg
dG9rZW5FbmQpKQorICAgICAgICAgICAgcmV0dXJuIFNUUklORzsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIHJldHVybiBJTlZBTElEX1RPS0VOOworfQorCitpbmxpbmUgaW50IGhleFRvSW50
KFVDaGFyIGMpCit7CisgICAgaWYgKCcwJyA8PSBjICYmIGMgPD0gJzknKQorICAgICAgICByZXR1
cm4gYyAtICcwJzsKKyAgICBpZiAoJ0EnIDw9IGMgJiYgYyA8PSAnRicpCisgICAgICAgIHJldHVy
biBjIC0gJ0EnICsgMTA7CisgICAgaWYgKCdhJyA8PSBjICYmIGMgPD0gJ2YnKQorICAgICAgICBy
ZXR1cm4gYyAtICdhJyArIDEwOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biAwOworfQorCitib29sIGRlY29kZVN0cmluZyhjb25zdCBVQ2hhciogc3RhcnQsIGNvbnN0IFVD
aGFyKiBlbmQsIFN0cmluZ0J1aWxkZXIqIG91dHB1dCkKK3sKKyAgICB3aGlsZSAoc3RhcnQgPCBl
bmQpIHsKKyAgICAgICAgVUNoYXIgYyA9ICpzdGFydCsrOworICAgICAgICBpZiAoJ1xcJyAhPSBj
KSB7CisgICAgICAgICAgICBvdXRwdXQtPmFwcGVuZChjKTsKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB9CisgICAgICAgIGMgPSAqc3RhcnQrKzsKKyAgICAgICAgc3dpdGNoIChjKSB7
CisgICAgICAgIGNhc2UgJyInOgorICAgICAgICBjYXNlICcvJzoKKyAgICAgICAgY2FzZSAnXFwn
OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ2InOgorICAgICAgICAgICAgYyA9
ICdcYic7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnZic6CisgICAgICAgICAg
ICBjID0gJ1xmJzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICduJzoKKyAgICAg
ICAgICAgIGMgPSAnXG4nOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ3InOgor
ICAgICAgICAgICAgYyA9ICdccic7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAn
dCc6CisgICAgICAgICAgICBjID0gJ1x0JzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlICd2JzoKKyAgICAgICAgICAgIGMgPSAnXHYnOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgJ3gnOgorICAgICAgICAgICAgYyA9IChoZXhUb0ludCgqc3RhcnQpIDw8IDQpICsK
KyAgICAgICAgICAgICAgICBoZXhUb0ludCgqKHN0YXJ0ICsgMSkpOworICAgICAgICAgICAgc3Rh
cnQgKz0gMjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICd1JzoKKyAgICAgICAg
ICAgIGMgPSAoaGV4VG9JbnQoKnN0YXJ0KSA8PCAxMikgKworICAgICAgICAgICAgICAgIChoZXhU
b0ludCgqKHN0YXJ0ICsgMSkpIDw8IDgpICsKKyAgICAgICAgICAgICAgICAoaGV4VG9JbnQoKihz
dGFydCArIDIpKSA8PCA0KSArCisgICAgICAgICAgICAgICAgaGV4VG9JbnQoKihzdGFydCArIDMp
KTsKKyAgICAgICAgICAgIHN0YXJ0ICs9IDQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBv
dXRwdXQtPmFwcGVuZChjKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgZGVj
b2RlU3RyaW5nKGNvbnN0IFVDaGFyKiBzdGFydCwgY29uc3QgVUNoYXIqIGVuZCwgU3RyaW5nKiBv
dXRwdXQpCit7CisgICAgaWYgKHN0YXJ0ID09IGVuZCkgeworICAgICAgICAqb3V0cHV0ID0gIiI7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAoc3RhcnQgPiBlbmQpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBTdHJpbmdCdWlsZGVyIGJ1ZmZlcjsKKyAgICBidWZmZXIu
cmVzZXJ2ZUNhcGFjaXR5KGVuZCAtIHN0YXJ0KTsKKyAgICBpZiAoIWRlY29kZVN0cmluZyhzdGFy
dCwgZW5kLCAmYnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICpvdXRwdXQgPSBi
dWZmZXIudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworUGFzc1JlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4gYnVpbGRWYWx1ZShjb25zdCBVQ2hhciogc3RhcnQsIGNvbnN0IFVDaGFyKiBl
bmQsIGNvbnN0IFVDaGFyKiogdmFsdWVUb2tlbkVuZCwgaW50IGRlcHRoKQoreworICAgIGlmIChk
ZXB0aCA+IHN0YWNrTGltaXQpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiByZXN1bHQ7CisgICAgY29uc3QgVUNoYXIqIHRva2VuU3RhcnQ7CisgICAgY29u
c3QgVUNoYXIqIHRva2VuRW5kOworICAgIFRva2VuIHRva2VuID0gcGFyc2VUb2tlbihzdGFydCwg
ZW5kLCAmdG9rZW5TdGFydCwgJnRva2VuRW5kKTsKKyAgICBzd2l0Y2ggKHRva2VuKSB7CisgICAg
Y2FzZSBJTlZBTElEX1RPS0VOOgorICAgICAgICByZXR1cm4gMDsKKyAgICBjYXNlIE5VTExfVE9L
RU46CisgICAgICAgIHJlc3VsdCA9IEluc3BlY3RvclZhbHVlOjpudWxsKCk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQk9PTF9UUlVFOgorICAgICAgICByZXN1bHQgPSBJbnNwZWN0b3JCYXNp
Y1ZhbHVlOjpjcmVhdGUodHJ1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQk9PTF9GQUxT
RToKKyAgICAgICAgcmVzdWx0ID0gSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKGZhbHNlKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOVU1CRVI6IHsKKyAgICAgICAgYm9vbCBvazsKKyAg
ICAgICAgZG91YmxlIHZhbHVlID0gY2hhcmFjdGVyc1RvRG91YmxlKHRva2VuU3RhcnQsIHRva2Vu
RW5kIC0gdG9rZW5TdGFydCwgJm9rKTsKKyAgICAgICAgaWYgKCFvaykKKyAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXN1bHQgPSBJbnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUodmFs
dWUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBTVFJJTkc6IHsKKyAgICAgICAg
U3RyaW5nIHZhbHVlOworICAgICAgICBib29sIG9rID0gZGVjb2RlU3RyaW5nKHRva2VuU3RhcnQg
KyAxLCB0b2tlbkVuZCAtIDEsICZ2YWx1ZSk7CisgICAgICAgIGlmICghb2spCisgICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmVzdWx0ID0gSW5zcGVjdG9yU3RyaW5nOjpjcmVhdGUodmFs
dWUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBBUlJBWV9CRUdJTjogeworICAg
ICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFycmF5ID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0
ZSgpOworICAgICAgICBzdGFydCA9IHRva2VuRW5kOworICAgICAgICB0b2tlbiA9IHBhcnNlVG9r
ZW4oc3RhcnQsIGVuZCwgJnRva2VuU3RhcnQsICZ0b2tlbkVuZCk7CisgICAgICAgIHdoaWxlICh0
b2tlbiAhPSBBUlJBWV9FTkQpIHsKKyAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4g
YXJyYXlOb2RlID0gYnVpbGRWYWx1ZShzdGFydCwgZW5kLCAmdG9rZW5FbmQsIGRlcHRoICsgMSk7
CisgICAgICAgICAgICBpZiAoIWFycmF5Tm9kZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgICAgIGFycmF5LT5wdXNoVmFsdWUoYXJyYXlOb2RlKTsKKworICAgICAgICAgICAg
Ly8gQWZ0ZXIgYSBsaXN0IHZhbHVlLCB3ZSBleHBlY3QgYSBjb21tYSBvciB0aGUgZW5kIG9mIHRo
ZSBsaXN0LgorICAgICAgICAgICAgc3RhcnQgPSB0b2tlbkVuZDsKKyAgICAgICAgICAgIHRva2Vu
ID0gcGFyc2VUb2tlbihzdGFydCwgZW5kLCAmdG9rZW5TdGFydCwgJnRva2VuRW5kKTsKKyAgICAg
ICAgICAgIGlmICh0b2tlbiA9PSBMSVNUX1NFUEFSQVRPUikgeworICAgICAgICAgICAgICAgIHN0
YXJ0ID0gdG9rZW5FbmQ7CisgICAgICAgICAgICAgICAgdG9rZW4gPSBwYXJzZVRva2VuKHN0YXJ0
LCBlbmQsICZ0b2tlblN0YXJ0LCAmdG9rZW5FbmQpOworICAgICAgICAgICAgICAgIGlmICh0b2tl
biA9PSBBUlJBWV9FTkQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAg
ICAgfSBlbHNlIGlmICh0b2tlbiAhPSBBUlJBWV9FTkQpIHsKKyAgICAgICAgICAgICAgICAvLyBV
bmV4cGVjdGVkIHZhbHVlIGFmdGVyIGxpc3QgdmFsdWUuICBCYWlsIG91dC4KKyAgICAgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAodG9r
ZW4gIT0gQVJSQVlfRU5EKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJlc3VsdCA9
IGFycmF5LnJlbGVhc2UoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgT0JKRUNU
X0JFR0lOOiB7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdCA9IEluc3Bl
Y3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgICAgIHN0YXJ0ID0gdG9rZW5FbmQ7CisgICAgICAg
IHRva2VuID0gcGFyc2VUb2tlbihzdGFydCwgZW5kLCAmdG9rZW5TdGFydCwgJnRva2VuRW5kKTsK
KyAgICAgICAgd2hpbGUgKHRva2VuICE9IE9CSkVDVF9FTkQpIHsKKyAgICAgICAgICAgIGlmICh0
b2tlbiAhPSBTVFJJTkcpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBT
dHJpbmcga2V5OworICAgICAgICAgICAgaWYgKCFkZWNvZGVTdHJpbmcodG9rZW5TdGFydCArIDEs
IHRva2VuRW5kIC0gMSwgJmtleSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
ICAgICBzdGFydCA9IHRva2VuRW5kOworCisgICAgICAgICAgICB0b2tlbiA9IHBhcnNlVG9rZW4o
c3RhcnQsIGVuZCwgJnRva2VuU3RhcnQsICZ0b2tlbkVuZCk7CisgICAgICAgICAgICBpZiAodG9r
ZW4gIT0gT0JKRUNUX1BBSVJfU0VQQVJBVE9SKQorICAgICAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICAgICAgc3RhcnQgPSB0b2tlbkVuZDsKKworICAgICAgICAgICAgUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiB2YWx1ZSA9IGJ1aWxkVmFsdWUoc3RhcnQsIGVuZCwgJnRva2VuRW5kLCBkZXB0
aCArIDEpOworICAgICAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgICAgIG9iamVjdC0+c2V0VmFsdWUoa2V5LCB2YWx1ZSk7CisgICAgICAgICAg
ICBzdGFydCA9IHRva2VuRW5kOworCisgICAgICAgICAgICAvLyBBZnRlciBhIGtleS92YWx1ZSBw
YWlyLCB3ZSBleHBlY3QgYSBjb21tYSBvciB0aGUgZW5kIG9mIHRoZQorICAgICAgICAgICAgLy8g
b2JqZWN0LgorICAgICAgICAgICAgdG9rZW4gPSBwYXJzZVRva2VuKHN0YXJ0LCBlbmQsICZ0b2tl
blN0YXJ0LCAmdG9rZW5FbmQpOworICAgICAgICAgICAgaWYgKHRva2VuID09IExJU1RfU0VQQVJB
VE9SKSB7CisgICAgICAgICAgICAgICAgc3RhcnQgPSB0b2tlbkVuZDsKKyAgICAgICAgICAgICAg
ICB0b2tlbiA9IHBhcnNlVG9rZW4oc3RhcnQsIGVuZCwgJnRva2VuU3RhcnQsICZ0b2tlbkVuZCk7
CisgICAgICAgICAgICAgICAgIGlmICh0b2tlbiA9PSBPQkpFQ1RfRU5EKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodG9rZW4gIT0gT0JKRUNU
X0VORCkgeworICAgICAgICAgICAgICAgIC8vIFVuZXhwZWN0ZWQgdmFsdWUgYWZ0ZXIgbGFzdCBv
YmplY3QgdmFsdWUuICBCYWlsIG91dC4KKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAodG9rZW4gIT0gT0JKRUNUX0VORCkKKyAg
ICAgICAgICAgIHJldHVybiAwOworICAgICAgICByZXN1bHQgPSBvYmplY3QucmVsZWFzZSgpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkZWZhdWx0OgorICAgICAgICAvLyBXZSBnb3Qg
YSB0b2tlbiB0aGF0J3Mgbm90IGEgdmFsdWUuCisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAg
ICAqdmFsdWVUb2tlbkVuZCA9IHRva2VuRW5kOworICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgp
OworfQorCitpbmxpbmUgYm9vbCBlc2NhcGVDaGFyKFVDaGFyIGMsIFN0cmluZ0J1aWxkZXIqIGRz
dCkKK3sKKyAgICBzd2l0Y2ggKGMpIHsKKyAgICBjYXNlICdcYic6IGRzdC0+YXBwZW5kKCJcXGIi
LCAyKTsgYnJlYWs7CisgICAgY2FzZSAnXGYnOiBkc3QtPmFwcGVuZCgiXFxmIiwgMik7IGJyZWFr
OworICAgIGNhc2UgJ1xuJzogZHN0LT5hcHBlbmQoIlxcbiIsIDIpOyBicmVhazsKKyAgICBjYXNl
ICdccic6IGRzdC0+YXBwZW5kKCJcXHIiLCAyKTsgYnJlYWs7CisgICAgY2FzZSAnXHQnOiBkc3Qt
PmFwcGVuZCgiXFx0IiwgMik7IGJyZWFrOworICAgIGNhc2UgJ1xcJzogZHN0LT5hcHBlbmQoIlxc
XFwiLCAyKTsgYnJlYWs7CisgICAgY2FzZSAnIic6IGRzdC0+YXBwZW5kKCJcXFwiIiwgMik7IGJy
ZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2lubGluZSB2b2lkIGRvdWJsZVF1b3RlU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgc3RyLCBTdHJpbmdCdWlsZGVyKiBkc3QpCit7CisgICAgZHN0LT5hcHBlbmQoJyInKTsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3RyLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAg
VUNoYXIgYyA9IHN0cltpXTsKKyAgICAgICAgaWYgKCFlc2NhcGVDaGFyKGMsIGRzdCkpIHsKKyAg
ICAgICAgICAgIGlmIChjIDwgMzIgfHwgYyA+IDEyNiB8fCBjID09ICc8JyB8fCBjID09ICc+Jykg
eworICAgICAgICAgICAgICAgIC8vIDEuIEVzY2FwaW5nIDwsID4gdG8gcHJldmVudCBzY3JpcHQg
ZXhlY3V0aW9uLgorICAgICAgICAgICAgICAgIC8vIDIuIFRlY2huaWNhbGx5LCB3ZSBjb3VsZCBh
bHNvIHBhc3MgdGhyb3VnaCBjID4gMTI2IGFzIFVURjgsIGJ1dCB0aGlzCisgICAgICAgICAgICAg
ICAgLy8gICAgaXMgYWxzbyBvcHRpb25hbC4gIEl0IHdvdWxkIGFsc28gYmUgYSBwYWluIHRvIGlt
cGxlbWVudCBoZXJlLgorICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzeW1ib2wgPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGMpOworICAgICAgICAgICAgICAgIFN0cmluZyBzeW1ib2xD
b2RlID0gU3RyaW5nOjpmb3JtYXQoIlxcdSUwNFgiLCBzeW1ib2wpOworICAgICAgICAgICAgICAg
IGRzdC0+YXBwZW5kKHN5bWJvbENvZGUuY2hhcmFjdGVycygpLCBzeW1ib2xDb2RlLmxlbmd0aCgp
KTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGRzdC0+YXBwZW5kKGMpOwor
ICAgICAgICB9CisgICAgfQorICAgIGRzdC0+YXBwZW5kKCciJyk7Cit9CisKK30gLy8gYW5vbnlt
b3VzIG5hbWVzcGFjZQorCitib29sIEluc3BlY3RvclZhbHVlOjphc0Jvb2xlYW4oYm9vbCopIGNv
bnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEluc3BlY3RvclZhbHVlOjphc051
bWJlcihkb3VibGUqKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBJbnNw
ZWN0b3JWYWx1ZTo6YXNOdW1iZXIobG9uZyopIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIEluc3BlY3RvclZhbHVlOjphc051bWJlcihpbnQqKSBjb25zdAoreworICAgIHJl
dHVybiBmYWxzZTsKK30KKworYm9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNOdW1iZXIodW5zaWduZWQg
bG9uZyopIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEluc3BlY3RvclZh
bHVlOjphc051bWJlcih1bnNpZ25lZCBpbnQqKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsK
K30KKworYm9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNTdHJpbmcoU3RyaW5nKikgY29uc3QKK3sKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgSW5zcGVjdG9yVmFsdWU6OmFzVmFsdWUoUmVmUHRy
PEluc3BlY3RvclZhbHVlPiogb3V0cHV0KQoreworICAgICpvdXRwdXQgPSB0aGlzOworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIEluc3BlY3RvclZhbHVlOjphc09iamVjdChSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiopCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEluc3BlY3Rv
clZhbHVlOjphc0FycmF5KFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qKQoreworICAgIHJldHVybiBm
YWxzZTsKK30KKworUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluc3BlY3RvclZhbHVlOjph
c09iamVjdCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yQXJy
YXk+IEluc3BlY3RvclZhbHVlOjphc0FycmF5KCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworUGFz
c1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gSW5zcGVjdG9yVmFsdWU6OnBhcnNlSlNPTihjb25zdCBT
dHJpbmcmIGpzb24pCit7CisgICAgY29uc3QgVUNoYXIqIHN0YXJ0ID0ganNvbi5jaGFyYWN0ZXJz
KCk7CisgICAgY29uc3QgVUNoYXIqIGVuZCA9IGpzb24uY2hhcmFjdGVycygpICsganNvbi5sZW5n
dGgoKTsKKyAgICBjb25zdCBVQ2hhciAqdG9rZW5FbmQ7CisgICAgUmVmUHRyPEluc3BlY3RvclZh
bHVlPiB2YWx1ZSA9IGJ1aWxkVmFsdWUoc3RhcnQsIGVuZCwgJnRva2VuRW5kLCAwKTsKKyAgICBp
ZiAoIXZhbHVlIHx8IHRva2VuRW5kICE9IGVuZCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0
dXJuIHZhbHVlLnJlbGVhc2UoKTsKK30KKworU3RyaW5nIEluc3BlY3RvclZhbHVlOjp0b0pTT05T
dHJpbmcoKSBjb25zdAoreworICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OworICAgIHJlc3VsdC5y
ZXNlcnZlQ2FwYWNpdHkoNTEyKTsKKyAgICB3cml0ZUpTT04oJnJlc3VsdCk7CisgICAgcmV0dXJu
IHJlc3VsdC50b1N0cmluZygpOworfQorCit2b2lkIEluc3BlY3RvclZhbHVlOjp3cml0ZUpTT04o
U3RyaW5nQnVpbGRlciogb3V0cHV0KSBjb25zdAoreworICAgIEFTU0VSVChtX3R5cGUgPT0gVHlw
ZU51bGwpOworICAgIG91dHB1dC0+YXBwZW5kKG51bGxTdHJpbmcsIDQpOworfQorCitib29sIElu
c3BlY3RvckJhc2ljVmFsdWU6OmFzQm9vbGVhbihib29sKiBvdXRwdXQpIGNvbnN0Cit7CisgICAg
aWYgKHR5cGUoKSAhPSBUeXBlQm9vbGVhbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICpv
dXRwdXQgPSBtX2Jvb2xWYWx1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBJbnNwZWN0
b3JCYXNpY1ZhbHVlOjphc051bWJlcihkb3VibGUqIG91dHB1dCkgY29uc3QKK3sKKyAgICBpZiAo
dHlwZSgpICE9IFR5cGVOdW1iZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAqb3V0cHV0
ID0gbV9kb3VibGVWYWx1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBJbnNwZWN0b3JC
YXNpY1ZhbHVlOjphc051bWJlcihsb25nKiBvdXRwdXQpIGNvbnN0Cit7CisgICAgaWYgKHR5cGUo
KSAhPSBUeXBlTnVtYmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgKm91dHB1dCA9IHN0
YXRpY19jYXN0PGxvbmc+KG1fZG91YmxlVmFsdWUpOworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIEluc3BlY3RvckJhc2ljVmFsdWU6OmFzTnVtYmVyKGludCogb3V0cHV0KSBjb25zdAorewor
ICAgIGlmICh0eXBlKCkgIT0gVHlwZU51bWJlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICpvdXRwdXQgPSBzdGF0aWNfY2FzdDxpbnQ+KG1fZG91YmxlVmFsdWUpOworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIEluc3BlY3RvckJhc2ljVmFsdWU6OmFzTnVtYmVyKHVuc2lnbmVkIGxv
bmcqIG91dHB1dCkgY29uc3QKK3sKKyAgICBpZiAodHlwZSgpICE9IFR5cGVOdW1iZXIpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAqb3V0cHV0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9u
Zz4obV9kb3VibGVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgSW5zcGVjdG9y
QmFzaWNWYWx1ZTo6YXNOdW1iZXIodW5zaWduZWQgaW50KiBvdXRwdXQpIGNvbnN0Cit7CisgICAg
aWYgKHR5cGUoKSAhPSBUeXBlTnVtYmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgKm91
dHB1dCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4obV9kb3VibGVWYWx1ZSk7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6d3JpdGVKU09OKFN0cmlu
Z0J1aWxkZXIqIG91dHB1dCkgY29uc3QKK3sKKyAgICBBU1NFUlQodHlwZSgpID09IFR5cGVCb29s
ZWFuIHx8IHR5cGUoKSA9PSBUeXBlTnVtYmVyKTsKKyAgICBpZiAodHlwZSgpID09IFR5cGVCb29s
ZWFuKSB7CisgICAgICAgIGlmIChtX2Jvb2xWYWx1ZSkKKyAgICAgICAgICAgIG91dHB1dC0+YXBw
ZW5kKHRydWVTdHJpbmcsIDQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBvdXRwdXQtPmFw
cGVuZChmYWxzZVN0cmluZywgNSk7CisgICAgfSBlbHNlIGlmICh0eXBlKCkgPT0gVHlwZU51bWJl
cikgeworICAgICAgICBOdW1iZXJUb0xTdHJpbmdCdWZmZXIgYnVmZmVyOworICAgICAgICBpZiAo
IXN0ZDo6aXNmaW5pdGUobV9kb3VibGVWYWx1ZSkpIHsKKyAgICAgICAgICAgIG91dHB1dC0+YXBw
ZW5kKG51bGxTdHJpbmcsIDQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIERlY2ltYWxOdW1iZXIgZGVjaW1hbCA9IG1fZG91YmxlVmFsdWU7CisgICAgICAgIHVuc2ln
bmVkIGxlbmd0aCA9IDA7CisgICAgICAgIGlmIChkZWNpbWFsLmJ1ZmZlckxlbmd0aEZvclN0cmlu
Z0RlY2ltYWwoKSA+IFdURjo6TnVtYmVyVG9TdHJpbmdCdWZmZXJMZW5ndGgpIHsKKyAgICAgICAg
ICAgIC8vIE5vdCBlbm91Z2ggcm9vbSBmb3IgZGVjaW1hbC4gVXNlIGV4cG9uZW50aWFsIGZvcm1h
dC4KKyAgICAgICAgICAgIGlmIChkZWNpbWFsLmJ1ZmZlckxlbmd0aEZvclN0cmluZ0V4cG9uZW50
aWFsKCkgPiBXVEY6Ok51bWJlclRvU3RyaW5nQnVmZmVyTGVuZ3RoKSB7CisgICAgICAgICAgICAg
ICAgLy8gRmFsbGJhY2sgZm9yIGFuIGFibm9ybWFsIGNhc2UgaWYgaXQncyB0b28gbGl0dGxlIGV2
ZW4gZm9yIGV4cG9uZW50aWFsLgorICAgICAgICAgICAgICAgIG91dHB1dC0+YXBwZW5kKCJOYU4i
LCAzKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBsZW5ndGggPSBkZWNpbWFsLnRvU3RyaW5nRXhwb25lbnRpYWwoYnVmZmVyLCBXVEY6Ok51bWJl
clRvU3RyaW5nQnVmZmVyTGVuZ3RoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBsZW5n
dGggPSBkZWNpbWFsLnRvU3RyaW5nRGVjaW1hbChidWZmZXIsIFdURjo6TnVtYmVyVG9TdHJpbmdC
dWZmZXJMZW5ndGgpOworICAgICAgICBvdXRwdXQtPmFwcGVuZChidWZmZXIsIGxlbmd0aCk7Cisg
ICAgfQorfQorCitib29sIEluc3BlY3RvclN0cmluZzo6YXNTdHJpbmcoU3RyaW5nKiBvdXRwdXQp
IGNvbnN0Cit7CisgICAgKm91dHB1dCA9IG1fc3RyaW5nVmFsdWU7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3ZvaWQgSW5zcGVjdG9yU3RyaW5nOjp3cml0ZUpTT04oU3RyaW5nQnVpbGRlciogb3V0
cHV0KSBjb25zdAoreworICAgIEFTU0VSVCh0eXBlKCkgPT0gVHlwZVN0cmluZyk7CisgICAgZG91
YmxlUXVvdGVTdHJpbmcobV9zdHJpbmdWYWx1ZSwgb3V0cHV0KTsKK30KKworSW5zcGVjdG9yT2Jq
ZWN0QmFzZTo6fkluc3BlY3Rvck9iamVjdEJhc2UoKQoreworfQorCitib29sIEluc3BlY3Rvck9i
amVjdEJhc2U6OmFzT2JqZWN0KFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvdXRwdXQpCit7Cisg
ICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEluc3BlY3Rvck9iamVjdCkgPT0gc2l6ZW9mKEluc3Bl
Y3Rvck9iamVjdEJhc2UpLCBjYW5ub3RfY2FzdCk7CisgICAgKm91dHB1dCA9IHN0YXRpY19jYXN0
PEluc3BlY3Rvck9iamVjdCo+KHRoaXMpOworICAgIHJldHVybiB0cnVlOworfQorCitQYXNzUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yT2JqZWN0QmFzZTo6YXNPYmplY3QoKQorewor
ICAgIHJldHVybiBvcGVuQWNjZXNzb3JzKCk7Cit9CisKK0luc3BlY3Rvck9iamVjdCogSW5zcGVj
dG9yT2JqZWN0QmFzZTo6b3BlbkFjY2Vzc29ycygpCit7CisgICAgQ09NUElMRV9BU1NFUlQoc2l6
ZW9mKEluc3BlY3Rvck9iamVjdCkgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVjdEJhc2UpLCBjYW5u
b3RfY2FzdCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3BlY3Rvck9iamVjdCo+KHRoaXMp
OworfQorCitib29sIEluc3BlY3Rvck9iamVjdEJhc2U6OmdldEJvb2xlYW4oY29uc3QgU3RyaW5n
JiBuYW1lLCBib29sKiBvdXRwdXQpIGNvbnN0Cit7CisgICAgUmVmUHRyPEluc3BlY3RvclZhbHVl
PiB2YWx1ZSA9IGdldChuYW1lKTsKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuIHZhbHVlLT5hc0Jvb2xlYW4ob3V0cHV0KTsKK30KKworYm9vbCBJbnNw
ZWN0b3JPYmplY3RCYXNlOjpnZXRTdHJpbmcoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcqIG91
dHB1dCkgY29uc3QKK3sKKyAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlID0gZ2V0KG5h
bWUpOworICAgIGlmICghdmFsdWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
dmFsdWUtPmFzU3RyaW5nKG91dHB1dCk7Cit9CisKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBJbnNwZWN0b3JPYmplY3RCYXNlOjpnZXRPYmplY3QoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25z
dAoreworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlID0gZ2V0KG5hbWUpOwor
ICAgIGlmICghdmFsdWUpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiB2YWx1ZS0+YXNP
YmplY3QoKTsKK30KKworUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gSW5zcGVjdG9yT2JqZWN0
QmFzZTo6Z2V0QXJyYXkoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAoreworICAgIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlID0gZ2V0KG5hbWUpOworICAgIGlmICghdmFsdWUpCisg
ICAgICAgIHJldHVybiAwOworICAgIHJldHVybiB2YWx1ZS0+YXNBcnJheSgpOworfQorCitQYXNz
UmVmUHRyPEluc3BlY3RvclZhbHVlPiBJbnNwZWN0b3JPYmplY3RCYXNlOjpnZXQoY29uc3QgU3Ry
aW5nJiBuYW1lKSBjb25zdAoreworICAgIERpY3Rpb25hcnk6OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
bV9kYXRhLmZpbmQobmFtZSk7CisgICAgaWYgKGl0ID09IG1fZGF0YS5lbmQoKSkKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgcmV0dXJuIGl0LT52YWx1ZTsKK30KKwordm9pZCBJbnNwZWN0b3JPYmpl
Y3RCYXNlOjpyZW1vdmUoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIG1fZGF0YS5yZW1vdmUo
bmFtZSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX29yZGVyLnNpemUoKTsgKytpKSB7
CisgICAgICAgIGlmIChtX29yZGVyW2ldID09IG5hbWUpIHsKKyAgICAgICAgICAgIG1fb3JkZXIu
cmVtb3ZlKGkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3Zv
aWQgSW5zcGVjdG9yT2JqZWN0QmFzZTo6d3JpdGVKU09OKFN0cmluZ0J1aWxkZXIqIG91dHB1dCkg
Y29uc3QKK3sKKyAgICBvdXRwdXQtPmFwcGVuZCgneycpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9vcmRlci5zaXplKCk7ICsraSkgeworICAgICAgICBEaWN0aW9uYXJ5Ojpjb25zdF9p
dGVyYXRvciBpdCA9IG1fZGF0YS5maW5kKG1fb3JkZXJbaV0pOworICAgICAgICBBU1NFUlQoaXQg
IT0gbV9kYXRhLmVuZCgpKTsKKyAgICAgICAgaWYgKGkpCisgICAgICAgICAgICBvdXRwdXQtPmFw
cGVuZCgnLCcpOworICAgICAgICBkb3VibGVRdW90ZVN0cmluZyhpdC0+a2V5LCBvdXRwdXQpOwor
ICAgICAgICBvdXRwdXQtPmFwcGVuZCgnOicpOworICAgICAgICBpdC0+dmFsdWUtPndyaXRlSlNP
TihvdXRwdXQpOworICAgIH0KKyAgICBvdXRwdXQtPmFwcGVuZCgnfScpOworfQorCitJbnNwZWN0
b3JPYmplY3RCYXNlOjpJbnNwZWN0b3JPYmplY3RCYXNlKCkKKyAgICA6IEluc3BlY3RvclZhbHVl
KFR5cGVPYmplY3QpCisgICAgLCBtX2RhdGEoKQorICAgICwgbV9vcmRlcigpCit7Cit9CisKK0lu
c3BlY3RvckFycmF5QmFzZTo6fkluc3BlY3RvckFycmF5QmFzZSgpCit7Cit9CisKK2Jvb2wgSW5z
cGVjdG9yQXJyYXlCYXNlOjphc0FycmF5KFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIG91dHB1dCkK
K3sKKyAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoSW5zcGVjdG9yQXJyYXlCYXNlKSA9PSBzaXpl
b2YoSW5zcGVjdG9yQXJyYXkpLCBjYW5ub3RfY2FzdCk7CisgICAgKm91dHB1dCA9IHN0YXRpY19j
YXN0PEluc3BlY3RvckFycmF5Kj4odGhpcyk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1Bhc3NS
ZWZQdHI8SW5zcGVjdG9yQXJyYXk+IEluc3BlY3RvckFycmF5QmFzZTo6YXNBcnJheSgpCit7Cisg
ICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEluc3BlY3RvckFycmF5QmFzZSkgPT0gc2l6ZW9mKElu
c3BlY3RvckFycmF5KSwgY2Fubm90X2Nhc3QpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbnNw
ZWN0b3JBcnJheSo+KHRoaXMpOworfQorCit2b2lkIEluc3BlY3RvckFycmF5QmFzZTo6d3JpdGVK
U09OKFN0cmluZ0J1aWxkZXIqIG91dHB1dCkgY29uc3QKK3sKKyAgICBvdXRwdXQtPmFwcGVuZCgn
WycpOworICAgIGZvciAoVmVjdG9yPFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4+Ojpjb25zdF9pdGVy
YXRvciBpdCA9IG1fZGF0YS5iZWdpbigpOyBpdCAhPSBtX2RhdGEuZW5kKCk7ICsraXQpIHsKKyAg
ICAgICAgaWYgKGl0ICE9IG1fZGF0YS5iZWdpbigpKQorICAgICAgICAgICAgb3V0cHV0LT5hcHBl
bmQoJywnKTsKKyAgICAgICAgKCppdCktPndyaXRlSlNPTihvdXRwdXQpOworICAgIH0KKyAgICBv
dXRwdXQtPmFwcGVuZCgnXScpOworfQorCitJbnNwZWN0b3JBcnJheUJhc2U6Okluc3BlY3RvckFy
cmF5QmFzZSgpCisgICAgOiBJbnNwZWN0b3JWYWx1ZShUeXBlQXJyYXkpCisgICAgLCBtX2RhdGEo
KQoreworfQorCitQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBJbnNwZWN0b3JBcnJheUJhc2U6
OmdldChzaXplX3QgaW5kZXgpCit7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04oaW5kZXggPCBtX2RhdGEuc2l6ZSgpKTsKKyAgICByZXR1cm4gbV9kYXRhW2luZGV4XTsKK30K
KworUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluc3BlY3Rvck9iamVjdCk7Cit9CisKK1Bhc3NS
ZWZQdHI8SW5zcGVjdG9yQXJyYXk+IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKQoreworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSW5zcGVjdG9yQXJyYXkpOworfQorCitQYXNzUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiBJbnNwZWN0b3JWYWx1ZTo6bnVsbCgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBJbnNwZWN0b3JWYWx1ZSk7Cit9CisKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yU3RyaW5nPiBJ
bnNwZWN0b3JTdHJpbmc6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSW5zcGVjdG9yU3RyaW5nKHZhbHVlKSk7Cit9CisKK1Bhc3NSZWZQdHI8
SW5zcGVjdG9yU3RyaW5nPiBJbnNwZWN0b3JTdHJpbmc6OmNyZWF0ZShjb25zdCBjaGFyKiB2YWx1
ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluc3BlY3RvclN0cmluZyh2YWx1ZSkpOwor
fQorCitQYXNzUmVmUHRyPEluc3BlY3RvckJhc2ljVmFsdWU+IEluc3BlY3RvckJhc2ljVmFsdWU6
OmNyZWF0ZShib29sIHZhbHVlKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5zcGVjdG9y
QmFzaWNWYWx1ZSh2YWx1ZSkpOworfQorCitQYXNzUmVmUHRyPEluc3BlY3RvckJhc2ljVmFsdWU+
IEluc3BlY3RvckJhc2ljVmFsdWU6OmNyZWF0ZShpbnQgdmFsdWUpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBJbnNwZWN0b3JCYXNpY1ZhbHVlKHZhbHVlKSk7Cit9CisKK1Bhc3NSZWZQdHI8
SW5zcGVjdG9yQmFzaWNWYWx1ZT4gSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKGRvdWJsZSB2
YWx1ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluc3BlY3RvckJhc2ljVmFsdWUodmFs
dWUpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcAkod29ya2luZyBj
b3B5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL2R0b2Eu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKLW5hbWVzcGFjZSBXZWJD
b3JlIHsKK25hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBuYW1lc3BhY2UgewogCkBAIC04MzMsNCAr
ODMzLDQgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JCYXNpY1ZhbHVlPiBJbnNwZWN0bwogICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSW5zcGVjdG9yQmFzaWNWYWx1ZSh2YWx1ZSkpOwogfQogCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaAkocmV2
aXNpb24gMTYwNDA0KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFs
dWVzLmg6MTYwNDA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JWYWx1ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM2OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW5zcGVj
dG9yVmFsdWVzX2gKKyNkZWZpbmUgSW5zcGVjdG9yVmFsdWVzX2gKKworI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgSW5zcGVjdG9yQXJyYXk7CitjbGFzcyBJbnNwZWN0b3JPYmplY3Q7
CisKK2NsYXNzIEluc3BlY3RvclZhbHVlIDogcHVibGljIFJlZkNvdW50ZWQ8SW5zcGVjdG9yVmFs
dWU+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgaW50IG1heERlcHRoID0gMTAwMDsKKwor
ICAgIEluc3BlY3RvclZhbHVlKCkgOiBtX3R5cGUoVHlwZU51bGwpIHsgfQorICAgIHZpcnR1YWwg
fkluc3BlY3RvclZhbHVlKCkgeyB9CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JW
YWx1ZT4gbnVsbCgpOworCisgICAgdHlwZWRlZiBlbnVtIHsKKyAgICAgICAgVHlwZU51bGwgPSAw
LAorICAgICAgICBUeXBlQm9vbGVhbiwKKyAgICAgICAgVHlwZU51bWJlciwKKyAgICAgICAgVHlw
ZVN0cmluZywKKyAgICAgICAgVHlwZU9iamVjdCwKKyAgICAgICAgVHlwZUFycmF5CisgICAgfSBU
eXBlOworCisgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisKKyAgICBi
b29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlTnVsbDsgfQorCisgICAg
dmlydHVhbCBib29sIGFzQm9vbGVhbihib29sKiBvdXRwdXQpIGNvbnN0OworICAgIHZpcnR1YWwg
Ym9vbCBhc051bWJlcihkb3VibGUqIG91dHB1dCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGFz
TnVtYmVyKGxvbmcqIG91dHB1dCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGFzTnVtYmVyKGlu
dCogb3V0cHV0KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgYXNOdW1iZXIodW5zaWduZWQgbG9u
Zyogb3V0cHV0KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgYXNOdW1iZXIodW5zaWduZWQgaW50
KiBvdXRwdXQpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBhc1N0cmluZyhTdHJpbmcqIG91dHB1
dCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGFzVmFsdWUoUmVmUHRyPEluc3BlY3RvclZhbHVl
Piogb3V0cHV0KTsKKyAgICB2aXJ0dWFsIGJvb2wgYXNPYmplY3QoUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4qIG91dHB1dCk7CisgICAgdmlydHVhbCBib29sIGFzQXJyYXkoUmVmUHRyPEluc3BlY3Rv
ckFycmF5Piogb3V0cHV0KTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBhc09iamVjdCgpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXNB
cnJheSgpOworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHBhcnNlSlNP
Tihjb25zdCBTdHJpbmcmIGpzb24pOworCisgICAgU3RyaW5nIHRvSlNPTlN0cmluZygpIGNvbnN0
OworICAgIHZpcnR1YWwgdm9pZCB3cml0ZUpTT04oU3RyaW5nQnVpbGRlciogb3V0cHV0KSBjb25z
dDsKKworcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IEluc3BlY3RvclZhbHVlKFR5cGUgdHlwZSkg
OiBtX3R5cGUodHlwZSkgeyB9CisKK3ByaXZhdGU6CisgICAgVHlwZSBtX3R5cGU7Cit9OworCitj
bGFzcyBJbnNwZWN0b3JCYXNpY1ZhbHVlIDogcHVibGljIEluc3BlY3RvclZhbHVlIHsKK3B1Ymxp
YzoKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvckJhc2ljVmFsdWU+IGNyZWF0ZShi
b29sKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JCYXNpY1ZhbHVlPiBjcmVhdGUo
aW50KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JCYXNpY1ZhbHVlPiBjcmVhdGUo
ZG91YmxlKTsKKworICAgIHZpcnR1YWwgYm9vbCBhc0Jvb2xlYW4oYm9vbCogb3V0cHV0KSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgYXNOdW1iZXIoZG91YmxlKiBvdXRwdXQpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBhc051bWJlcihsb25nKiBvdXRwdXQpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBhc051bWJlcihpbnQqIG91dHB1dCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGFzTnVtYmVyKHVuc2lnbmVkIGxvbmcqIG91
dHB1dCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGFzTnVtYmVyKHVuc2lnbmVk
KiBvdXRwdXQpIGNvbnN0IE9WRVJSSURFOworCisgICAgdmlydHVhbCB2b2lkIHdyaXRlSlNPTihT
dHJpbmdCdWlsZGVyKiBvdXRwdXQpIGNvbnN0IE9WRVJSSURFOworCitwcml2YXRlOgorICAgIGV4
cGxpY2l0IEluc3BlY3RvckJhc2ljVmFsdWUoYm9vbCB2YWx1ZSkgOiBJbnNwZWN0b3JWYWx1ZShU
eXBlQm9vbGVhbiksIG1fYm9vbFZhbHVlKHZhbHVlKSB7IH0KKyAgICBleHBsaWNpdCBJbnNwZWN0
b3JCYXNpY1ZhbHVlKGludCB2YWx1ZSkgOiBJbnNwZWN0b3JWYWx1ZShUeXBlTnVtYmVyKSwgbV9k
b3VibGVWYWx1ZSgoZG91YmxlKXZhbHVlKSB7IH0KKyAgICBleHBsaWNpdCBJbnNwZWN0b3JCYXNp
Y1ZhbHVlKGRvdWJsZSB2YWx1ZSkgOiBJbnNwZWN0b3JWYWx1ZShUeXBlTnVtYmVyKSwgbV9kb3Vi
bGVWYWx1ZSh2YWx1ZSkgeyB9CisKKyAgICB1bmlvbiB7CisgICAgICAgIGJvb2wgbV9ib29sVmFs
dWU7CisgICAgICAgIGRvdWJsZSBtX2RvdWJsZVZhbHVlOworICAgIH07Cit9OworCitjbGFzcyBJ
bnNwZWN0b3JTdHJpbmcgOiBwdWJsaWMgSW5zcGVjdG9yVmFsdWUgeworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvclN0cmluZz4gY3JlYXRlKGNvbnN0IFN0cmluZyYpOwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvclN0cmluZz4gY3JlYXRlKGNvbnN0IGNoYXIq
KTsKKworICAgIHZpcnR1YWwgYm9vbCBhc1N0cmluZyhTdHJpbmcqIG91dHB1dCkgY29uc3QgT1ZF
UlJJREU7CisKKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGVKU09OKFN0cmluZ0J1aWxkZXIqIG91dHB1
dCkgY29uc3QgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgSW5zcGVjdG9yU3Ry
aW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpIDogSW5zcGVjdG9yVmFsdWUoVHlwZVN0cmluZyksIG1f
c3RyaW5nVmFsdWUodmFsdWUpIHsgfQorICAgIGV4cGxpY2l0IEluc3BlY3RvclN0cmluZyhjb25z
dCBjaGFyKiB2YWx1ZSkgOiBJbnNwZWN0b3JWYWx1ZShUeXBlU3RyaW5nKSwgbV9zdHJpbmdWYWx1
ZSh2YWx1ZSkgeyB9CisKKyAgICBTdHJpbmcgbV9zdHJpbmdWYWx1ZTsKK307CisKK2NsYXNzIElu
c3BlY3Rvck9iamVjdEJhc2UgOiBwdWJsaWMgSW5zcGVjdG9yVmFsdWUgeworcHJpdmF0ZToKKyAg
ICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+PiBEaWN0aW9u
YXJ5OworCitwdWJsaWM6CisgICAgdHlwZWRlZiBEaWN0aW9uYXJ5OjppdGVyYXRvciBpdGVyYXRv
cjsKKyAgICB0eXBlZGVmIERpY3Rpb25hcnk6OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9y
OworCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYXNPYmplY3QoKSBP
VkVSUklERTsKKyAgICBJbnNwZWN0b3JPYmplY3QqIG9wZW5BY2Nlc3NvcnMoKTsKKworcHJvdGVj
dGVkOgorICAgIHZpcnR1YWwgfkluc3BlY3Rvck9iamVjdEJhc2UoKTsKKworICAgIHZpcnR1YWwg
Ym9vbCBhc09iamVjdChSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0cHV0KSBPVkVSUklERTsK
KworICAgIHZvaWQgc2V0Qm9vbGVhbihjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wpOworICAgIHZv
aWQgc2V0TnVtYmVyKGNvbnN0IFN0cmluZyYgbmFtZSwgZG91YmxlKTsKKyAgICB2b2lkIHNldFN0
cmluZyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0VmFs
dWUoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPik7CisgICAg
dm9pZCBzZXRPYmplY3QoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4pOworICAgIHZvaWQgc2V0QXJyYXkoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRy
PEluc3BlY3RvckFycmF5Pik7CisKKyAgICBpdGVyYXRvciBmaW5kKGNvbnN0IFN0cmluZyYgbmFt
ZSk7CisgICAgY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0Owor
ICAgIGJvb2wgZ2V0Qm9vbGVhbihjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIG91dHB1dCkgY29u
c3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgVD4gYm9vbCBnZXROdW1iZXIoY29uc3QgU3RyaW5nJiBu
YW1lLCBUKiBvdXRwdXQpIGNvbnN0CisgICAgeworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yVmFs
dWU+IHZhbHVlID0gZ2V0KG5hbWUpOworICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdmFsdWUtPmFzTnVtYmVyKG91dHB1dCk7Cisg
ICAgfQorICAgIGJvb2wgZ2V0U3RyaW5nKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nKiBvdXRw
dXQpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBnZXRPYmplY3QoY29u
c3QgU3RyaW5nJiBuYW1lKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBn
ZXRBcnJheShjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+IGdldChjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0OworCisgICAgdm9pZCByZW1v
dmUoY29uc3QgU3RyaW5nJiBuYW1lKTsKKworICAgIHZpcnR1YWwgdm9pZCB3cml0ZUpTT04oU3Ry
aW5nQnVpbGRlciogb3V0cHV0KSBjb25zdCBPVkVSUklERTsKKworICAgIGl0ZXJhdG9yIGJlZ2lu
KCkgeyByZXR1cm4gbV9kYXRhLmJlZ2luKCk7IH0KKyAgICBpdGVyYXRvciBlbmQoKSB7IHJldHVy
biBtX2RhdGEuZW5kKCk7IH0KKyAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YS5iZWdpbigpOyB9CisgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhLmVuZCgpOyB9CisKKyAgICBpbnQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGF0YS5zaXplKCk7IH0KKworcHJvdGVjdGVkOgorICAgIEluc3BlY3Rvck9iamVjdEJhc2UoKTsK
KworcHJpdmF0ZToKKyAgICBEaWN0aW9uYXJ5IG1fZGF0YTsKKyAgICBWZWN0b3I8U3RyaW5nPiBt
X29yZGVyOworfTsKKworY2xhc3MgSW5zcGVjdG9yT2JqZWN0IDogcHVibGljIEluc3BlY3Rvck9i
amVjdEJhc2UgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gY3JlYXRlKCk7CisKKyAgICB1c2luZyBJbnNwZWN0b3JPYmplY3RCYXNlOjphc09iamVjdDsK
KworICAgIHVzaW5nIEluc3BlY3Rvck9iamVjdEJhc2U6OnNldEJvb2xlYW47CisgICAgdXNpbmcg
SW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0TnVtYmVyOworICAgIHVzaW5nIEluc3BlY3Rvck9iamVj
dEJhc2U6OnNldFN0cmluZzsKKyAgICB1c2luZyBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXRWYWx1
ZTsKKyAgICB1c2luZyBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXRPYmplY3Q7CisgICAgdXNpbmcg
SW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0QXJyYXk7CisKKyAgICB1c2luZyBJbnNwZWN0b3JPYmpl
Y3RCYXNlOjpmaW5kOworICAgIHVzaW5nIEluc3BlY3Rvck9iamVjdEJhc2U6OmdldEJvb2xlYW47
CisgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6Z2V0TnVtYmVyOworICAgIHVzaW5nIElu
c3BlY3Rvck9iamVjdEJhc2U6OmdldFN0cmluZzsKKyAgICB1c2luZyBJbnNwZWN0b3JPYmplY3RC
YXNlOjpnZXRPYmplY3Q7CisgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6Z2V0QXJyYXk7
CisgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6Z2V0OworCisgICAgdXNpbmcgSW5zcGVj
dG9yT2JqZWN0QmFzZTo6cmVtb3ZlOworCisgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6
YmVnaW47CisgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6ZW5kOworCisgICAgdXNpbmcg
SW5zcGVjdG9yT2JqZWN0QmFzZTo6c2l6ZTsKK307CisKKworY2xhc3MgSW5zcGVjdG9yQXJyYXlC
YXNlIDogcHVibGljIEluc3BlY3RvclZhbHVlIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIFZlY3Rv
cjxSZWZQdHI8SW5zcGVjdG9yVmFsdWU+Pjo6aXRlcmF0b3IgaXRlcmF0b3I7CisgICAgdHlwZWRl
ZiBWZWN0b3I8UmVmUHRyPEluc3BlY3RvclZhbHVlPj46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0
ZXJhdG9yOworCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBhc0FycmF5
KCkgT1ZFUlJJREU7CisKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGEuc2l6ZSgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5JbnNwZWN0b3JBcnJheUJh
c2UoKTsKKworICAgIHZpcnR1YWwgYm9vbCBhc0FycmF5KFJlZlB0cjxJbnNwZWN0b3JBcnJheT4q
IG91dHB1dCkgT1ZFUlJJREU7CisKKyAgICB2b2lkIHB1c2hCb29sZWFuKGJvb2wpOworICAgIHZv
aWQgcHVzaEludChpbnQpOworICAgIHZvaWQgcHVzaE51bWJlcihkb3VibGUpOworICAgIHZvaWQg
cHVzaFN0cmluZyhjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHB1c2hWYWx1ZShQYXNzUmVmUHRy
PEluc3BlY3RvclZhbHVlPik7CisgICAgdm9pZCBwdXNoT2JqZWN0KFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0Pik7CisgICAgdm9pZCBwdXNoQXJyYXkoUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJh
eT4pOworCisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gZ2V0KHNpemVfdCBpbmRleCk7
CisKKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGVKU09OKFN0cmluZ0J1aWxkZXIqIG91dHB1dCkgY29u
c3QgT1ZFUlJJREU7CisKKyAgICBpdGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIG1fZGF0YS5iZWdp
bigpOyB9CisgICAgaXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gbV9kYXRhLmVuZCgpOyB9CisgICAg
Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2RhdGEuYmVnaW4oKTsgfQor
ICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5lbmQoKTsgfQor
Citwcm90ZWN0ZWQ6CisgICAgSW5zcGVjdG9yQXJyYXlCYXNlKCk7CisKK3ByaXZhdGU6CisgICAg
VmVjdG9yPFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4+IG1fZGF0YTsKK307CisKK2NsYXNzIEluc3Bl
Y3RvckFycmF5IDogcHVibGljIEluc3BlY3RvckFycmF5QmFzZSB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGNyZWF0ZSgpOworCisgICAgdXNpbmcgSW5z
cGVjdG9yQXJyYXlCYXNlOjphc0FycmF5OworCisgICAgdXNpbmcgSW5zcGVjdG9yQXJyYXlCYXNl
OjpwdXNoQm9vbGVhbjsKKyAgICB1c2luZyBJbnNwZWN0b3JBcnJheUJhc2U6OnB1c2hJbnQ7Cisg
ICAgdXNpbmcgSW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoTnVtYmVyOworICAgIHVzaW5nIEluc3Bl
Y3RvckFycmF5QmFzZTo6cHVzaFN0cmluZzsKKyAgICB1c2luZyBJbnNwZWN0b3JBcnJheUJhc2U6
OnB1c2hWYWx1ZTsKKyAgICB1c2luZyBJbnNwZWN0b3JBcnJheUJhc2U6OnB1c2hPYmplY3Q7Cisg
ICAgdXNpbmcgSW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoQXJyYXk7CisKKyAgICB1c2luZyBJbnNw
ZWN0b3JBcnJheUJhc2U6OmdldDsKKworICAgIHVzaW5nIEluc3BlY3RvckFycmF5QmFzZTo6YmVn
aW47CisgICAgdXNpbmcgSW5zcGVjdG9yQXJyYXlCYXNlOjplbmQ7Cit9OworCisKK2lubGluZSBJ
bnNwZWN0b3JPYmplY3RCYXNlOjppdGVyYXRvciBJbnNwZWN0b3JPYmplY3RCYXNlOjpmaW5kKGNv
bnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gbV9kYXRhLmZpbmQobmFtZSk7Cit9CisK
K2lubGluZSBJbnNwZWN0b3JPYmplY3RCYXNlOjpjb25zdF9pdGVyYXRvciBJbnNwZWN0b3JPYmpl
Y3RCYXNlOjpmaW5kKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9k
YXRhLmZpbmQobmFtZSk7Cit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvck9iamVjdEJhc2U6OnNl
dEJvb2xlYW4oY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIHZhbHVlKQoreworICAgIHNldFZhbHVl
KG5hbWUsIEluc3BlY3RvckJhc2ljVmFsdWU6OmNyZWF0ZSh2YWx1ZSkpOworfQorCitpbmxpbmUg
dm9pZCBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXROdW1iZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBk
b3VibGUgdmFsdWUpCit7CisgICAgc2V0VmFsdWUobmFtZSwgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6
Y3JlYXRlKHZhbHVlKSk7Cit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvck9iamVjdEJhc2U6OnNl
dFN0cmluZyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAg
c2V0VmFsdWUobmFtZSwgSW5zcGVjdG9yU3RyaW5nOjpjcmVhdGUodmFsdWUpKTsKK30KKworaW5s
aW5lIHZvaWQgSW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1l
LCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSkKK3sKKyAgICBBU1NFUlQodmFsdWUp
OworICAgIGlmIChtX2RhdGEuc2V0KG5hbWUsIHZhbHVlKS5pc05ld0VudHJ5KQorICAgICAgICBt
X29yZGVyLmFwcGVuZChuYW1lKTsKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9yT2JqZWN0QmFz
ZTo6c2V0T2JqZWN0KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IHZhbHVlKQoreworICAgIEFTU0VSVCh2YWx1ZSk7CisgICAgaWYgKG1fZGF0YS5zZXQobmFt
ZSwgdmFsdWUpLmlzTmV3RW50cnkpCisgICAgICAgIG1fb3JkZXIuYXBwZW5kKG5hbWUpOworfQor
CitpbmxpbmUgdm9pZCBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXRBcnJheShjb25zdCBTdHJpbmcm
IG5hbWUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHZhbHVlKQoreworICAgIEFTU0VSVCh2
YWx1ZSk7CisgICAgaWYgKG1fZGF0YS5zZXQobmFtZSwgdmFsdWUpLmlzTmV3RW50cnkpCisgICAg
ICAgIG1fb3JkZXIuYXBwZW5kKG5hbWUpOworfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JBcnJh
eUJhc2U6OnB1c2hCb29sZWFuKGJvb2wgdmFsdWUpCit7CisgICAgbV9kYXRhLmFwcGVuZChJbnNw
ZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUodmFsdWUpKTsKK30KKworaW5saW5lIHZvaWQgSW5zcGVj
dG9yQXJyYXlCYXNlOjpwdXNoSW50KGludCB2YWx1ZSkKK3sKKyAgICBtX2RhdGEuYXBwZW5kKElu
c3BlY3RvckJhc2ljVmFsdWU6OmNyZWF0ZSh2YWx1ZSkpOworfQorCitpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JBcnJheUJhc2U6OnB1c2hOdW1iZXIoZG91YmxlIHZhbHVlKQoreworICAgIG1fZGF0YS5h
cHBlbmQoSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKHZhbHVlKSk7Cit9CisKK2lubGluZSB2
b2lkIEluc3BlY3RvckFycmF5QmFzZTo6cHVzaFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQor
eworICAgIG1fZGF0YS5hcHBlbmQoSW5zcGVjdG9yU3RyaW5nOjpjcmVhdGUodmFsdWUpKTsKK30K
KworaW5saW5lIHZvaWQgSW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoVmFsdWUoUGFzc1JlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4gdmFsdWUpCit7CisgICAgQVNTRVJUKHZhbHVlKTsKKyAgICBtX2RhdGEu
YXBwZW5kKHZhbHVlKTsKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNo
T2JqZWN0KFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiB2YWx1ZSkKK3sKKyAgICBBU1NFUlQo
dmFsdWUpOworICAgIG1fZGF0YS5hcHBlbmQodmFsdWUpOworfQorCitpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JBcnJheUJhc2U6OnB1c2hBcnJheShQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiB2YWx1
ZSkKK3sKKyAgICBBU1NFUlQodmFsdWUpOworICAgIG1fZGF0YS5hcHBlbmQodmFsdWUpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JW
YWx1ZXNfaCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
VmFsdWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JWYWx1ZXMuaAkod29ya2luZyBjb3B5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTIgKzM4
LDEyIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSW5zcGVj
dG9yIHsKIAogY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiAK
LWNsYXNzIEluc3BlY3RvclZhbHVlIDogcHVibGljIFJlZkNvdW50ZWQ8SW5zcGVjdG9yVmFsdWU+
IHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvclZhbHVlIDogcHVibGljIFJlZkNv
dW50ZWQ8SW5zcGVjdG9yVmFsdWU+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgaW50IG1h
eERlcHRoID0gMTAwMDsKIApAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRlOgogICAgIFR5cGUgbV90
eXBlOwogfTsKIAotY2xhc3MgSW5zcGVjdG9yQmFzaWNWYWx1ZSA6IHB1YmxpYyBJbnNwZWN0b3JW
YWx1ZSB7CitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JCYXNpY1ZhbHVlIDogcHVi
bGljIEluc3BlY3RvclZhbHVlIHsKIHB1YmxpYzoKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPElu
c3BlY3RvckJhc2ljVmFsdWU+IGNyZWF0ZShib29sKTsKQEAgLTExNyw3ICsxMTcsNyBAQCBwcml2
YXRlOgogICAgIH07CiB9OwogCi1jbGFzcyBJbnNwZWN0b3JTdHJpbmcgOiBwdWJsaWMgSW5zcGVj
dG9yVmFsdWUgeworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yU3RyaW5nIDogcHVi
bGljIEluc3BlY3RvclZhbHVlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JTdHJpbmc+IGNyZWF0ZShjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxJbnNwZWN0b3JTdHJpbmc+IGNyZWF0ZShjb25zdCBjaGFyKik7CkBAIC0xMzMsNyArMTMzLDcg
QEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zdHJpbmdWYWx1ZTsKIH07CiAKLWNsYXNzIEluc3Bl
Y3Rvck9iamVjdEJhc2UgOiBwdWJsaWMgSW5zcGVjdG9yVmFsdWUgeworY2xhc3MgSlNfRVhQT1JU
X1BSSVZBVEUgSW5zcGVjdG9yT2JqZWN0QmFzZSA6IHB1YmxpYyBJbnNwZWN0b3JWYWx1ZSB7CiBw
cml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJbnNwZWN0b3JWYWx1
ZT4+IERpY3Rpb25hcnk7CiAKQEAgLTE5Miw3ICsxOTIsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBJ
bnNwZWN0b3JPYmplY3QgOiBwdWJsaWMgSW5zcGVjdG9yT2JqZWN0QmFzZSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGUoKTsKKyAgICBzdGF0
aWMgSlNfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZSgp
OwogCiAgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6YXNPYmplY3Q7CiAKQEAgLTIyMCw3
ICsyMjAsNyBAQCBwdWJsaWM6CiB9OwogCiAKLWNsYXNzIEluc3BlY3RvckFycmF5QmFzZSA6IHB1
YmxpYyBJbnNwZWN0b3JWYWx1ZSB7CitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JB
cnJheUJhc2UgOiBwdWJsaWMgSW5zcGVjdG9yVmFsdWUgewogcHVibGljOgogICAgIHR5cGVkZWYg
VmVjdG9yPFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4+OjppdGVyYXRvciBpdGVyYXRvcjsKICAgICB0
eXBlZGVmIFZlY3RvcjxSZWZQdHI8SW5zcGVjdG9yVmFsdWU+Pjo6Y29uc3RfaXRlcmF0b3IgY29u
c3RfaXRlcmF0b3I7CkBAIC0yNjAsNyArMjYwLDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgSW5zcGVj
dG9yQXJyYXkgOiBwdWJsaWMgSW5zcGVjdG9yQXJyYXlCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gY3JlYXRlKCk7CisgICAgc3RhdGljIEpTX0VY
UE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGNyZWF0ZSgpOwogCiAgICAg
dXNpbmcgSW5zcGVjdG9yQXJyYXlCYXNlOjphc0FycmF5OwogCkBAIC0zNjMsNiArMzYzLDYgQEAg
aW5saW5lIHZvaWQgSW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoQXJyYQogICAgIG1fZGF0YS5hcHBl
bmQodmFsdWUpOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJ
bnNwZWN0b3IKIAogI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvclZhbHVlc19oKQpJbmRleDog
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjMwIEBACisyMDEzLTEyLTEwICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBN
b3JlIEluc3BlY3RvciBSZXF1aXJlZCBDbGFzc2VzIERvd24gaW50byBKYXZhU2NyaXB0Q29yZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1MzI0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFydCA0OiBF
eHRyYWN0IEluc3BlY3RvclR5cGVCdWlsZGVyIGhlbHBlciBmdW5jdGlvbnMKKworICAgICAgICAg
IC0gVGhlcmUgaXMgYSBjaHVuayBvZiBJbnNwZWN0b3JUeXBlQnVpbGRlciB0aGF0IG5ldmVyIGNo
YW5nZXMuIEV4dHJhY3QgaXQgaW50bworICAgICAgICAgICAgaXRzIG93biBmaWxlLCBJbnNwZWN0
b3JUeXBlQnVpbGRlci5oIGluIEpTQy9pbnNwZWN0b3IsIEluc3BlY3RvciBuYW1lc3BhY2UuCisg
ICAgICAgICAgLSBUaGlzIG1vdmVzIFR5cGVCdWlsZGVyIGZyb20gbmFtZXNwYWNlIFdlYkNvcmUg
dG8gbmFtZXNwYWNlIEluc3BlY3RvcgorICAgICAgICAgIC0gUmVuYW1lIHRoZSBXZWJDb3JlIGdl
bmVyYXRlZCBJbnNwZWN0b3JUeXBlQnVpbGRlciB0byBJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMs
CisgICAgICAgICAgICBldmVudHVhbGx5IHRoZSBDb2RlR2VuZXJhdG9yIHNjcmlwdCB3aWxsIGRv
IHRoaXMgZm9yIG1vcmUgdGhlbiBUeXBlQnVpbGRlcnMKKyAgICAgICAgICAgIGFuZCB0aGVyZSB3
aWxsIGJlICJKUyIgVHlwZUJ1aWxkZXJzIGFuZCAiV2ViIiBUeXBlQnVpbGRlcnMgZmlsZXMuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9p
bnNwZWN0b3IvSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaDogQWRkZWQuCisgICAgICAgICogR05VbWFr
ZWZpbGUuYW06CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpidWlsZEluc3BlY3Rvck9iamVjdEZvcik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRQcm9maWxlOjpidWlsZEluc3BlY3Rvck9iamVjdEZvckhlYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0UHJvZmlsZTo6YnVpbGRJbnNwZWN0b3JPYmplY3RGb3JCb3R0b21V
cEhlYWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weToKKyAgICAgICAgKENvbW1hbmRS
ZXR1cm5QYXNzTW9kZWwuT3B0T3V0cHV0LmdldF9yZXR1cm5fdmFyX3R5cGUpOgorICAgICAgICAo
Q29tbWFuZFJldHVyblBhc3NNb2RlbC5PcHRPdXRwdXQuZ2V0X291dHB1dF9wYXJhbWV0ZXJfdHlw
ZSk6CisgICAgICAgIChUeXBlTW9kZWwuRXhhY3RseUludC5nZXRfaW5wdXRfcGFyYW1fdHlwZV90
ZXh0KToKKyAgICAgICAgKFR5cGVNb2RlbC5FeGFjdGx5SW50LmdldF9vcHRfb3V0cHV0X3R5cGVf
KToKKyAgICAgICAgKFR5cGVCaW5kaW5ncy5jcmVhdGVfbmFtZWRfdHlwZV9kZWNsYXJhdGlvbi5I
ZWxwZXIpOgorICAgICAgICAoVHlwZUJpbmRpbmdzLmNyZWF0ZV90eXBlX2RlY2xhcmF0aW9uXy5F
bnVtQmluZGluZy5nZXRfc2V0dGVyX3ZhbHVlX2V4cHJlc3Npb25fcGF0dGVybik6CisgICAgICAg
IChJbnNwZWN0b3IpOgorICAgICAgICAoQXJyYXlCaW5kaW5nLmdldF9hcnJheV9pdGVtX2NfdHlw
ZV90ZXh0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3RvclN0cmlu
Z3MucHk6CisgICAgICAgIChJbnNwZWN0b3JGcm9udGVuZF9oKToKKyAgICAgICAgKEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyc19oKToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3Nh
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWVzc2FnZVNvdXJjZVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6Om1lc3NhZ2VUeXBlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6bWVzc2FnZUxl
dmVsVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRl
bmQpOgorICAgICAgICAqIGluc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudFNlYXJjaFV0aWxzOjpidWlsZE9iamVjdEZvclNlYXJjaE1hdGNo
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWFyY2hVdGlsczo6c2VhcmNoSW5UZXh0QnlM
aW5lcyk6CisgICAgICAgICogaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmpl
Y3RlZFNjcmlwdDo6ZXZhbHVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6
OmNhbGxGdW5jdGlvbk9uKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpldmFs
dWF0ZU9uQ2FsbEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Ojp3cmFw
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Ojp3cmFwVGFibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBOb2RlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0QmFzZTo6bWFr
ZUV2YWxDYWxsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmNwcDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluamVj
dGVkU2NyaXB0SG9zdDo6aW5zcGVjdEltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBZ2VudDo6aW5zcGVjdCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFnZW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmdldEZyYW1lc1dpdGhNYW5pZmVzdHMp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpnZXRB
cHBsaWNhdGlvbkNhY2hlRm9yRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50OjpidWlsZE9iamVjdEZvckFwcGxpY2F0aW9uQ2FjaGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpidWlsZEFycmF5
Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZVJl
c291cmNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNlbGVjdG9yUHJvZmlsZTo6dG9JbnNwZWN0b3JPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRJbmxpbmVTdHlsZXNGb3JO
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRDb21wdXRlZFN0
eWxlRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0QWxs
U3R5bGVTaGVldHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN0
eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxl
VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UHJvcGVydHlU
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50Ojp0b2dnbGVQcm9wZXJ0
eSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UnVsZVNlbGVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjphZGRSdWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVz
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXROYW1lZEZsb3dDb2xs
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzdG9wU2VsZWN0
b3JQcm9maWxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6c3RvcFNl
bGVjdG9yUHJvZmlsZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50
Ojphc0luc3BlY3RvclN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OmNvbGxlY3RTdHlsZVNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
U1NBZ2VudDo6dmlhSW5zcGVjdG9yU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDU1NBZ2VudDo6ZGV0ZWN0T3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNTU0FnZW50OjpidWlsZE9iamVjdEZvclJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JSdWxlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5
bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JS
ZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVj
dEZvck5hbWVkRmxvdyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6OmdldERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojpw
dXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OnF1ZXJ5U2VsZWN0b3JBbGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0U2VhcmNoUmVzdWx0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01BZ2VudDo6cmVzb2x2ZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NQWdlbnQ6OmdldEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckVsZW1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRy
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9y
RXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlk
Q29tbWl0TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkSW5z
ZXJ0RE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6c3R5bGVB
dHRyaWJ1dGVJbnZhbGlkYXRlZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGVzY3JpcHRp
b25Gb3JET01FdmVudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6Omdl
dERPTVN0b3JhZ2VJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQ6OnN0b3JhZ2VJZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQ6OmRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckRhdGFiYXNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VB
Z2VudDo6Z2V0RGF0YWJhc2VUYWJsZU5hbWVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRGF0YWJhc2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFz
ZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlUmVzb3Vy
Y2U6OmJpbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmJyZWFrcG9pbnRBY3Rpb25UeXBlRm9yU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRCeVVy
bCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3Bv
aW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlc29sdmVC
cmVha3BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNl
YXJjaEluQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpzZXRTY3JpcHRTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6Z2V0RnVuY3Rpb25EZXRhaWxzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmV2YWx1YXRlT25DYWxsRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6Y29tcGlsZVNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpydW5TY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6Y3VycmVudENhbGxGcmFtZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGFyc2VTb3VyY2UpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckhlYXBQcm9maWxlckFnZW50OjpjcmVhdGVTbmFwc2hvdEhlYWRlcik6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6Z2V0UHJvZmlsZUhlYWRlcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OmdldE9iamVjdEJ5SGVh
cE9iamVjdElkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdl
bnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6bGF5ZXJzRm9yTm9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6Z2F0aGVyTGF5ZXJzVXNpbmdS
ZW5kZXJPYmplY3RIaWVyYXJjaHkpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQ6OmdhdGhlckxheWVyc1VzaW5nUmVuZGVyTGF5ZXJIaWVyYXJjaHkpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTGF5ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0
Rm9ySW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6
cmVhc29uc0ZvckNvbXBvc2l0aW5nTGF5ZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JMYXllclRyZWVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlB
Z2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlVHlwZUpzb24pOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZVR5cGVK
c29uKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9yQ29va2llKToKKyAgICAgICAg
KFdlYkNvcmU6OmJ1aWxkQXJyYXlGb3JDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclBhZ2VBZ2VudDo6Z2V0Q29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQ
YWdlQWdlbnQ6OmdldFJlc291cmNlVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQ
YWdlQWdlbnQ6OnNlYXJjaEluUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmpl
Y3RGb3JTZWFyY2hSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50
OjpzZWFyY2hJblJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdl
bnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFn
ZUFnZW50OjpidWlsZE9iamVjdEZvckZyYW1lVHJlZSk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxl
ckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmNy
ZWF0ZVByb2ZpbGVIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJB
Z2VudDo6Y3JlYXRlU25hcHNob3RIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UHJvZmlsZXJBZ2VudDo6Z2V0UHJvZmlsZUhlYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0Q1BVUHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRPYmplY3RCeUhlYXBPYmplY3RJZCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9i
amVjdEZvclRpbWluZyk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvclJlc291cmNl
UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JDYWNoZWRSZXNvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2VuZFJlcXVlc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZExv
YWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50OjpidWlsZEluaXRpYXRvck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVdl
YlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJl
c291cmNlQWdlbnQ6OmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRTZW5kV2ViU29ja2V0RnJhbWUpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZEVy
cm9yUmFuZ2VPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUnVudGltZUFnZW50
OjpwYXJzZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Y2FsbEZ1bmN0
aW9uT24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRQcm9w
ZXJ0aWVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50Lmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YnVpbGRTb3VyY2VSYW5nZU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZE1l
ZGlhT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGxNZWRpYUxpc3RDaGFpbik6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZTo6YnVpbGRPYmplY3RGb3JTdHlsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZTo6YnVpbGRBcnJheUZvckNvbXB1dGVkU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6Okluc3BlY3RvclN0eWxlU2hlZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTdHls
ZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2Jq
ZWN0Rm9yU3R5bGVTaGVldEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6c2VsZWN0b3JzRnJvbVNv
dXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVj
dEZvclNlbGVjdG9yTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0
OjpidWlsZE9iamVjdEZvclJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVT
aGVldDo6YnVpbGRPYmplY3RGb3JTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JT
dHlsZVNoZWV0OjpyZXNvdXJjZVN0eWxlU2hlZXRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkQXJyYXlGb3JSdWxlTGlzdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6Okluc3BlY3RvclN0
eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0
eWxlU2hlZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmNhbkJp
bmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnRvUHJvdG9jb2wpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
VGltZWxpbmVBZ2VudDo6aW5uZXJBZGRSZWNvcmRUb1RpbWVsaW5lKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnNldERPTUNvdW50ZXJzKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnNlbmRFdmVudCk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFn
ZVJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsRnJhbWU6OmJ1aWxkSW5zcGVjdG9yT2Jq
ZWN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmg6CisgICAgICAgICog
aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRD
YWxsU3RhY2s6OmJ1aWxkSW5zcGVjdG9yQXJyYXkpOgorICAgICAgICAqIGluc3BlY3Rvci9TY3Jp
cHRDYWxsU3RhY2suaDoKKworMjAxMy0xMi0wNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9A
YXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggTW9yZSBJbnNwZWN0b3Ig
UmVxdWlyZWQgQ2xhc3NlcyBEb3duIGludG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTMyNAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhcnQgMzogUHVzaCBEb3duIFNjcmlw
dEZ1bmN0aW9uQ2FsbAorCisgICAgICAgICAgLSBNb3ZlIFNjcmlwdEZ1bmN0aW9uQ2FsbCB0byBK
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncyBpbnRvIG5hbWVzcGFjZSBEZXByZWNhdGVkLgorICAgICAg
ICAgIC0gR2l2ZSBjb25zdHJ1Y3RvciBhIGZ1bmN0aW9uIHRvIGFsbCBmb3IgYSBkaWZmZXJlbnQg
SlNDOjpjYWxsLCBiZWNhdXNlCisgICAgICAgICAgICBXZWJDb3JlIFNjcmlwdEZ1bmN0aW9uQ2Fs
bCdzIHVzZSBKU01haW5UaHJlYWRFeGVjU3RhdGUgd2hlbiBpc01haW5UaHJlYWQuCisgICAgICAg
ICAgLSBQcmVmZXIgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGV2ZXJ5d2hlcmUgaXQg
aXMgdXNlZCBpbiBXZWJDb3JlLgorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvYmluZGlu
Z3MvU2NyaXB0RnVuY3Rpb25DYWxsLmg6IEFkZGVkLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxp
c3QuYW06CisgICAgICAgICogVXNlSlNDLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvai5maWx0ZXJzOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpKU01haW5U
aHJlYWRFeGVjU3RhdGU6OmN1cnJlbnRTdGF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpldmFsdWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6Y2FsbEZ1bmN0aW9uT24pOgor
ICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT25DYWxsRnJhbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmdldEZ1bmN0aW9uRGV0YWlscyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6Z2V0UHJvcGVydGllcyk6CisgICAgICAg
IChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Ojpub2RlRm9yT2JqZWN0SWQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OnJlbGVhc2VPYmplY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVzKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
amVjdGVkU2NyaXB0Ojp3cmFwT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2Ny
aXB0Ojp3cmFwVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmZpbmRP
YmplY3RCeUlkKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjppbnNwZWN0Tm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6cmVsZWFzZU9iamVjdEdyb3Vw
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkluamVjdGVkU2NyaXB0QmFzZTo6Y2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUNhbGwpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtlRXZhbENhbGwpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0
ZWRTY3JpcHRDYW52YXNNb2R1bGU6OmNhbGxXcmFwQ29udGV4dEZ1bmN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjptYXJrRnJhbWVFbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OmNhbGxTdGFydENhcHR1
cmluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Q2FudmFzTW9k
dWxlOjpjYWxsVm9pZEZ1bmN0aW9uV2l0aFRyYWNlTG9nSWRBcmd1bWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6dHJhY2VMb2cpOgorICAgICAgICAo
V2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OnJlcGxheVRyYWNlTG9nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjpyZXNvdXJjZUluZm8p
OgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OnJlc291cmNl
U3RhdGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdE1vZHVsZTo6ZW5zdXJlSW5qZWN0ZWQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJvbnRlbmRN
ZW51UHJvdmlkZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyb250ZW5kTWVudVByb3ZpZGVyOjpjb250ZXh0TWVudUNsZWFyZWQpOgorCisyMDEzLTEyLTA1
ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogUHVzaCBNb3JlIEluc3BlY3RvciBSZXF1aXJlZCBDbGFzc2VzIERvd24gaW50byBK
YXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI1MzI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUGFydCAyOiBQdXNoIFNjcmlwdCB3cmFwcGVyIGNsYXNzZXMgZG93biBpbnRvIEphdmFT
Y3JpcHRDb3JlL2JpbmRpbmdzLgorCisgICAgICAgICAgLSBNb3ZlIFNjcmlwdE9iamVjdCBhbmQg
U2NyaXB0VmFsdWUgaW50byBKYXZhU2NyaXB0Q29yZSBidXQgbmFtZXNwYWNlIERlcHJlY2F0ZWQK
KyAgICAgICAgICAtIEFkZCBmb3J3YXJkaW5nIGhlYWRlcnMKKyAgICAgICAgICAtIFVzZSBEZXBy
ZWNhdGVkOjpTY3JpcHRPYmplY3QgYW5kIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGV2ZXJ5d2hl
cmUuCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9iaW5kaW5ncy9TY3JpcHRPYmplY3Qu
aDogQWRkZWQuCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvYmluZGluZ3MvU2NyaXB0VmFs
dWUuaDogQWRkZWQuCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQkFueS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHA6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmg6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHA6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCRmFjdG9yeS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcDoK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oOgorICAgICAgICAoV2ViQ29y
ZTo6SURCSW5kZXg6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6Om9w
ZW5LZXlDdXJzb3IpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmNw
cDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5oOgorICAgICAgICAo
V2ViQ29yZTo6SURCS2V5UmFuZ2U6Omxvd2VyQm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
S2V5UmFuZ2U6OnVwcGVyQm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UmFuZ2U6OmJv
dW5kKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQlJlcXVlc3QuY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3Qu
aDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5jcHA6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaDoKKyAgICAgICAg
KiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwOgorICAgICAg
ICAqIE1vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oOgorICAgICAg
ICAqIFVzZUpTQy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBX
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvRGljdGlvbmFyeS5oOgorICAg
ICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6Z2V0RXZlbnRMaXN0ZW5lcik6CisgICAgICAgICog
YmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpk
ZXNlcmlhbGl6ZUlEQlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmRlc2VyaWFsaXplSURCVmFs
dWVCdWZmZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRGljdGlvbmFyeS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTENhbnZh
c0VsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3Jp
cHRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0
TWFuYWdlci5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcDoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmg6
CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRHbG9iYWxPYmplY3QuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNwcC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRH
bG9iYWxPYmplY3QuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNsaWVudC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRHbG9iYWxPYmplY3Q6OlNj
cmlwdEdsb2JhbE9iamVjdCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIu
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmg6CisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpkZXNlcmlhbGl6ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmg6CisgICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA6
CisgICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAg
ICAqIGRvbS9DdXN0b21FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FdmVudDo6
aW5pdEN1c3RvbUV2ZW50KToKKyAgICAgICAgKiBkb20vQ3VzdG9tRXZlbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkN1c3RvbUV2ZW50OjpkZXRhaWwpOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZl
bnQuY3BwOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lc3NhZ2VFdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6
ZGF0YUFzU2NyaXB0VmFsdWUpOgorICAgICAgICAqIGRvbS9Qb3BTdGF0ZUV2ZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpQb3BTdGF0ZUV2ZW50OjpzdGF0ZSk6CisgICAgICAgICogZG9tL1Njcmlw
dEVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAg
ICAgICogaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
Q29uc29sZU1lc3NhZ2UuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3Bw
OgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdEJhc2UuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNN
b2R1bGUuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVs
ZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxl
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckNhbnZhc0FnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNh
bnZhc0luc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3cmFwQ2FudmFzMkRSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d3JhcFdlYkdM
UmVuZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlvbik6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnNv
bGVBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1
Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWwuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3Bw
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5jcHA6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmls
ZXJBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwOgor
ICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwOgorICAgICAgICAqIGluc3Bl
Y3Rvci9TY3JpcHRBcmd1bWVudHMuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0RGVidWdM
aXN0ZW5lci5oOgorICAgICAgICAqIHBhZ2UvQ29uc29sZS5jcHA6CisgICAgICAgICogcGFnZS9G
cmFtZS5jcHA6CisgICAgICAgICogcGFnZS9QYWdlQ29uc29sZS5jcHA6CisgICAgICAgICogcGx1
Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6Cisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB3b3JrZXJzL1NoYXJlZFdv
cmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3Bl
LmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRocmVhZC5jcHA6CisgICAgICAgICogeG1s
L1hNTFRyZWVWaWV3ZXIuY3BwOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXIuY3BwOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNw
cDoKKworMjAxMy0xMi0wNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgor
CisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggTW9yZSBJbnNwZWN0b3IgUmVxdWlyZWQgQ2xh
c3NlcyBEb3duIGludG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTMyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFBhcnQgMTogUHVzaCBkb3duIGNvcmUgaW5zcGVjdG9yIGNs
YXNzZXMuCisKKyAgICAgICAgICAtIE1vdmUgSW5zcGVjdEFnZW50QmFzZSwgSW5zcGVjdG9yQWdl
bnRSZWdpc3RyeSwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIsIEluc3BlY3RvclZhbHVlcwor
ICAgICAgICAgICAgZG93biB0byBKYXZhU2NyaXB0Q29yZSBhbmQgaW50byB0aGUgSW5zcGVjdG9y
IG5hbWVzcGFjZS4KKyAgICAgICAgICAtIEFkZCBmb3J3YXJkaW5nIGhlYWRlcnMgZm9yIEphdmFT
Y3JpcHRDb3JlL2luc3BlY3RvciBmaWxlcy4KKyAgICAgICAgICAtIFVzZSB0aGUgSW5zcGVjdG9y
IG5hbWVzcGFjZSB3aGVyZSBhcHByb3ByaWF0ZS4KKyAgICAgICAgICAtIFJlbmFtZSBJbnNwZWN0
b3JCYXNlQWdlbnQgdG8gSW5zcGVjdG9yQWdlbnRCYXNlIGZvciBjbGFyaXR5LgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9y
L0luc3BlY3RvckFnZW50QmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVy
cy9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oOiBBZGRlZC4KKyAgICAgICAgKiBG
b3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaDog
QWRkZWQuCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvclZh
bHVlcy5oOiBBZGRlZC4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAq
IFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHA6CisgICAgICAgICogYmlu
ZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0
UHJvZmlsZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5oOgorICAgICAgICAqIGh0bWwvcGFyc2VyL1hT
U0F1ZGl0b3IuY3BwOgorICAgICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5j
cHA6CisgICAgICAgICogaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHk6CisgICAg
ICAgIChSYXdUeXBlcy5CYXNlVHlwZS5nZXRfcmF3X3ZhbGlkYXRvcl9jYWxsX3RleHQpOgorICAg
ICAgICAoUmF3VHlwZXMuT2JqZWN0LmdldF9hcnJheV9pdGVtX3Jhd19jX3R5cGVfdGV4dCk6Cisg
ICAgICAgIChSYXdUeXBlcy5BbnkuZ2V0X2FycmF5X2l0ZW1fcmF3X2NfdHlwZV90ZXh0KToKKyAg
ICAgICAgKFJhd1R5cGVzLkFycmF5LmdldF9hcnJheV9pdGVtX3Jhd19jX3R5cGVfdGV4dCk6Cisg
ICAgICAgIChUeXBlTW9kZWwuaW5pdF9jbGFzcyk6CisgICAgICAgIChUeXBlQmluZGluZ3MuY3Jl
YXRlX3R5cGVfZGVjbGFyYXRpb25fLkVudW1CaW5kaW5nLmdldF9jb2RlX2dlbmVyYXRvci5Db2Rl
R2VuZXJhdG9yLmdlbmVyYXRlX3R5cGVfYnVpbGRlcik6CisgICAgICAgIChUeXBlQmluZGluZ3Mu
Y3JlYXRlX3R5cGVfZGVjbGFyYXRpb25fLkNsYXNzQmluZGluZy5nZXRfY29kZV9nZW5lcmF0b3Iu
Q29kZUdlbmVyYXRvci5nZW5lcmF0ZV90eXBlX2J1aWxkZXIpOgorICAgICAgICAoR2VuZXJhdG9y
LmdvKToKKyAgICAgICAgKEdlbmVyYXRvci5wcm9jZXNzX2NvbW1hbmQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weToKKyAgICAgICAgKHZvaWQp
OgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRfaCk6CisgICAgICAgIChJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcnNfaCk6CisgICAgICAgIChBcnJheSk6CisgICAgICAgICogaW5zcGVjdG9y
L0NvbnNvbGVNZXNzYWdlLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2Uu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmNwcDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNl
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmNwcDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRIb3N0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFu
YWdlci5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHA6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckFnZW50OjpJbnNwZWN0b3JBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBZ2Vu
dDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmg6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdp
c3RyeS5oLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQWdlbnRCYXNlOjpJbnNwZWN0b3JB
Z2VudEJhc2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHA6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6Okluc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JCYXNlQWdlbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q1NTQWdlbnQ6Okluc3BlY3RvckNTU0FnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNTU0FnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JD
YW52YXNBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6
SW5zcGVjdG9yQ2FudmFzQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFz
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckNhbnZhc0FnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNs
aWVudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjpJbnNwZWN0b3JDb25zb2xlQWdlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Oklu
c3BlY3RvckRPTUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojpk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6Oklu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50OjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNl
QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5j
cHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRGVidWdnZXJB
Z2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1
Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZvcndhcmRpbmcuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHA6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6ZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySGVh
cFByb2ZpbGVyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERC
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6Oklu
c3BlY3RvckluZGV4ZWREQkFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckluZGV4
ZWREQkFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JJbnB1dEFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvcklucHV0QWdl
bnQ6Okluc3BlY3RvcklucHV0QWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5w
dXRBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9ySW5wdXRBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JMYXllclRy
ZWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9y
eUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yTWVtb3J5QWdlbnQ6Okluc3BlY3Rvck1lbW9yeUFnZW50KToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yT3ZlcmxheS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXku
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6SW5zcGVjdG9yUGFnZUFnZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6Okluc3Bl
Y3RvclJlc291cmNlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6Okluc3BlY3RvclJ1bnRp
bWVBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ1NTSWQ6Okluc3BlY3RvckNTU0lkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVUZXh0RWRpdG9yLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
VGltZWxpbmVBZ2VudDo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudCk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6OlRpbWVsaW5lUmVjb3JkRW50cnk6OlRpbWVsaW5lUmVjb3JkRW50cnkp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JXb3JrZXJBZ2VudDo6SW5zcGVjdG9yV29ya2VyQWdlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuY3BwOgorICAgICAgICAq
IGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgICogaW5zcGVjdG9y
L1BhZ2VDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9QYWdlRGVidWdnZXJB
Z2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZVJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9TY3Jp
cHRBcmd1bWVudHMuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuY3Bw
OgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0Q2Fs
bFN0YWNrLmg6CisgICAgICAgICogaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHA6
CisgICAgICAgICogaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5oOgorICAgICAgICAo
V2ViQ29yZTo6VGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVXZWJTb2NrZXRDcmVhdGVEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJp
Y1dlYlNvY2tldERhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdlbnQu
Y3BwOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgICog
aW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvV29ya2VyUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bnRp
bWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvV29ya2VyUnVudGltZUFnZW50Lmg6CisgICAgICAgICogcGFnZS9Db250ZW50U2VjdXJpdHlQ
b2xpY3kuY3BwOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKwogMjAxMy0xMi0x
MCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgSG9yaXpvbnRhbCBy
dWJiZXItYmFuZGluZyB3aXRob3V0IGEgaG9yaXpvbnRhbCBzY3JvbGxiYXIgaXMgZGlzdHJhY3Rp
bmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTU3OCw5ICsxNTc4LDcg
QEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFn
ZXIuY3BwCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcAogICAgIGluc3Bl
Y3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKLSAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdp
c3RyeS5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNw
cAotICAgIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAKICAgICBpbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckNhbnZh
c0FnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuY3BwCkBAIC0xNjExLDcg
KzE2MDksNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclN0
eWxlU2hlZXQuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlVGV4dEVkaXRvci5jcHAK
ICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKLSAgICBpbnNwZWN0b3Iv
SW5zcGVjdG9yVmFsdWVzLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5j
cHAKICAgICBpbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5jcHAKICAgICBpbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC0zMDQ5LDEyICszMDQ2LDEyIEBAIGFkZF9jdXN0
b21fY29tbWFuZCgKIAogIyBBbGwgV2ViIEluc3BlY3RvciBnZW5lcmF0ZWQgZmlsZXMgYXJlIGNy
ZWF0ZWQgd2l0aCB0aGlzIG9uZSBjYWxsIHRvIENvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0KIGFk
ZF9jdXN0b21fY29tbWFuZCgKLSAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9E
SVJ9L0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5jcHAgJHtERVJJVkVEX1NPVVJDRVNfV0VC
Q09SRV9ESVJ9L0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oICR7REVSSVZFRF9TT1VSQ0VT
X1dFQkNPUkVfRElSfS9JbnNwZWN0b3JGcm9udGVuZC5jcHAgJHtERVJJVkVEX1NPVVJDRVNfV0VC
Q09SRV9ESVJ9L0luc3BlY3RvckZyb250ZW5kLmggJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9E
SVJ9L0luc3BlY3RvclR5cGVCdWlsZGVyLmNwcCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJ
Un0vSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaAorICAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19X
RUJDT1JFX0RJUn0vSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmNwcCAke0RFUklWRURfU09V
UkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmggJHtERVJJVkVE
X1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3RvckZyb250ZW5kLmNwcCAke0RFUklWRURfU09V
UkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yRnJvbnRlbmQuaCAke0RFUklWRURfU09VUkNFU19X
RUJDT1JFX0RJUn0vSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmNwcCAke0RFUklWRURfU09VUkNF
U19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmgKICAgICBNQUlOX0RFUEVO
REVOQ1kgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3Rvci5qc29uCiAgICAg
REVQRU5EUyAke1dFQkNPUkVfRElSfS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5w
eSAke1dFQkNPUkVfRElSfS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3RvclN0cmluZ3Mu
cHkKICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7V0VCQ09SRV9ESVJ9L2luc3Bl
Y3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5ICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVf
RElSfS9JbnNwZWN0b3IuanNvbiAtLW91dHB1dF9oX2RpciAiJHtERVJJVkVEX1NPVVJDRVNfV0VC
Q09SRV9ESVJ9IiAtLW91dHB1dF9jcHBfZGlyICIke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJ
Un0iIC0tb3V0cHV0X2pzX2RpciAiJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9IiAtLXdy
aXRlX2Fsd2F5cwogICAgIFZFUkJBVElNKQotbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTICR7
REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMu
Y3BwICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3JGcm9udGVuZC5jcHAg
JHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3RvclR5cGVCdWlsZGVyLmNwcCkK
K2xpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUyAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJ
Un0vSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmNwcCAke0RFUklWRURfU09VUkNFU19XRUJD
T1JFX0RJUn0vSW5zcGVjdG9yRnJvbnRlbmQuY3BwICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVf
RElSfS9JbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuY3BwKQogCiAKICMgR2VuZXJhdGUgSW5zcGVj
dG9yT3ZlcmxheVBhZ2UuaApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDE2MDQw
NCkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0z
NjIsOCArMzYyLDggQEAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3IuanNvbjogJAog
IyBBbGwgV2ViIEluc3BlY3RvciBnZW5lcmF0ZWQgZmlsZXMgYXJlIGNyZWF0ZWQgd2l0aCB0aGlz
IG9uZSBjYWxsIHRvIENvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKIERlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmNwcDogRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9JbnNwZWN0b3IuanNvbiAkKFdlYkNvcmUpL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5z
cGVjdG9yLnB5ICQoV2ViQ29yZSkvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJp
bmdzLnB5CiAJJChBTV9WX0dFTikkKFBZVEhPTikgJChXZWJDb3JlKS9pbnNwZWN0b3IvQ29kZUdl
bmVyYXRvckluc3BlY3Rvci5weSAkPCAtLW91dHB1dF9oX2RpciAkKEdFTlNPVVJDRVNfV0VCQ09S
RSkgLS1vdXRwdXRfY3BwX2RpciAkKEdFTlNPVVJDRVNfV0VCQ09SRSkgLS1vdXRwdXRfanNfZGly
ICQoR0VOU09VUkNFU19XRUJDT1JFKQotRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JU
eXBlQnVpbGRlci5oOiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3RvclR5cGVCdWlsZGVy
LmNwcAotRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JUeXBlQnVpbGRlci5jcHA6IERl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmQuaAorRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9JbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaDogRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9JbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuY3BwCitEZXJpdmVkU291cmNlcy9XZWJDb3JlL0lu
c3BlY3RvcldlYlR5cGVCdWlsZGVycy5jcHA6IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVj
dG9yRnJvbnRlbmQuaAogRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZC5o
OiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3RvckZyb250ZW5kLmNwcAogRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZC5jcHA6IERlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0lu
c3BlY3RvckJhY2tlbmRDb21tYW5kcy5qczogRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw4IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyAr
PSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZC5jcHAgXAogCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmQuaCBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9JbnNwZWN0b3JPdmVybGF5UGFnZS5oIFwKLQlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0luc3BlY3RvclR5cGVCdWlsZGVyLmNwcCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9J
bnNwZWN0b3JUeXBlQnVpbGRlci5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3Rv
cldlYlR5cGVCdWlsZGVycy5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9y
V2ViVHlwZUJ1aWxkZXJzLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBYnN0cmFjdFdv
cmtlci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBYnN0cmFjdFdvcmtlci5oIFwK
IAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQWxsQXVkaW9DYXBhYmlsaXRpZXMuY3BwIFwKQEAg
LTI0NDksMTEgKzI0NDksOSBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHREZWJ1Z1NlcnZlci5oIFwKLQlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRGdW5jdGlvbkNhbGwuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRG
dW5jdGlvbkNhbGwuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0SGVhcFNu
YXBzaG90LmggXAotCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHAg
XAotCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuY3BwIFwKKwlTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuaCBcCiAJU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdFByb2ZpbGUuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
UHJvZmlsZU5vZGUuaCBcCkBAIC0yNDYyLDggKzI0NjAsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaCBcCiAJU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oIFwKLQlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRWYWx1ZS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZh
bHVlLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFdyYXBwYWJsZS5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGVJbmxpbmVzLmggXAog
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgXApA
QCAtMzc4NCwxMyArMzc4MCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmggXAogCVNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBZ2VudC5oIFwKLQlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdl
bnRSZWdpc3RyeS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2Vu
dFJlZ2lzdHJ5LmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50LmggXAotCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIFwKLQlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQmFzZUFnZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXNBZ2VudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
YW52YXNBZ2VudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFz
SW5zdHJ1bWVudGF0aW9uLmggXApAQCAtMzg1Niw4ICszODQ3LDcgQEAgd2ViY29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVUZXh0RWRpdG9y
LmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBc
Ci0JU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAgXAotCVNvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaCBcCisJU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvcldvcmtlclJlc291cmNlLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvVXNlSlNDLmNt
YWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQkocmV2aXNpb24g
MTYwNDA0KQorKysgU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjQsMTIgKzEyNCwxMCBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5k
aW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcAogICAgIGJpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuY3BwCiAgICAgYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCi0g
ICAgYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAotICAgIGJpbmRpbmdzL2pzL1Nj
cmlwdE9iamVjdC5jcHAKKyAgICBiaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuY3BwCiAg
ICAgYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5jcHAKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRQ
cm9maWxlci5jcHAKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKLSAgICBiaW5kaW5n
cy9qcy9TY3JpcHRWYWx1ZS5jcHAKICAgICBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwCiAgICAgYmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcAog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTE0MzAsNyArMTQzMCw2IEBA
IF9fWk5LN1dlYkNvcmUxMVJlbmRlckxheWVyMjRuZWVkc0NvbXBvc2kKIF9fWk5LN1dlYkNvcmUx
MVJlbmRlclN0eWxlMTFmb250TWV0cmljc0V2CiBfX1pOSzdXZWJDb3JlMTFSZW5kZXJTdHlsZTIx
dmlzaXRlZERlcGVuZGVudENvbG9yRWkKIF9fWk5LN1dlYkNvcmUxMVJlbmRlclN0eWxlNGZvbnRF
dgotX19aTks3V2ViQ29yZTExU2NyaXB0VmFsdWU5Z2V0U3RyaW5nRVBOM0pTQzlFeGVjU3RhdGVF
Uk4zV1RGNlN0cmluZ0UKIF9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDE0ZW5jbG9zaW5nTGF5
ZXJFdgogX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTVsb2NhbFRvQWJzb2x1dGVFUktOU18x
MEZsb2F0UG9pbnRFagogX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTZyZXBhaW50UmVjdGFu
Z2xlRVJLTlNfMTBMYXlvdXRSZWN0RWIKQEAgLTE1MDIsNyArMTUwMSw2IEBAIF9fWk5LN1dlYkNv
cmUxNEZyYW1lU2VsZWN0aW9uMzFnZXRDbGlwcGUKIF9fWk5LN1dlYkNvcmUxNEZyYW1lU2VsZWN0
aW9uMzZyb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnRFdgogX19aTks3V2ViQ29y
ZTE0RnJhbWVTZWxlY3Rpb242Ym91bmRzRWIKIF9fWk5LN1dlYkNvcmUxNEluc2VydGlvblBvaW50
OGlzQWN0aXZlRXYKLV9fWk5LN1dlYkNvcmUxNEluc3BlY3RvclZhbHVlMTJ0b0pTT05TdHJpbmdF
dgogX19aTks3V2ViQ29yZTE0UmVuZGVyTGlzdEl0ZW0xMG1hcmtlclRleHRFdgogX19aTks3V2Vi
Q29yZTE0UmVzb3VyY2VCdWZmZXI0ZGF0YUV2CiBfX1pOSzdXZWJDb3JlMTRSZXNvdXJjZUJ1ZmZl
cjRzaXplRXYKQEAgLTI2MjUsNyArMjYyMyw3IEBAIF9fWk43V2ViQ29yZTE2SFRNTElucHV0RWxl
bWVudDI1c2VsZWN0Q28KICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogX19aTjdXZWJDb3JlMTVJbnNw
ZWN0b3JDbGllbnQzMWRvRGlzcGF0Y2hNZXNzYWdlT25Gcm9udGVuZFBhZ2VFUE5TXzRQYWdlRVJL
TjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTdJbnNwZWN0b3JDb3VudGVyczEyY291bnRlclZh
bHVlRU5TMF8xMUNvdW50ZXJUeXBlRQotX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVy
MTVjb25uZWN0RnJvbnRlbmRFUE5TXzI0SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsRQorX19aTjdX
ZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMTVjb25uZWN0RnJvbnRlbmRFUE45SW5zcGVjdG9y
MjRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxFCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRy
b2xsZXIxOGRpc2Nvbm5lY3RGcm9udGVuZEV2CiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRy
b2xsZXIxOHNldFByb2ZpbGVyRW5hYmxlZEViCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRy
b2xsZXIyNWV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmRFbFJLTjNXVEY2U3RyaW5nRQpJbmRleDog
U291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25D
YWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvYmlu
ZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9Gb3J3YXJkaW5nSGVhZGVycy9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfU2NyaXB0RnVuY3Rp
b25DYWxsX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfU2NyaXB0RnVuY3Rpb25DYWxsX2gKKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRGdW5jdGlvbkNhbGwuaD4KKyNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvYmluZGluZ3MvU2NyaXB0T2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvYmluZGluZ3Mv
U2NyaXB0T2JqZWN0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9iaW5kaW5ncy9TY3JpcHRPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfU2NyaXB0T2JqZWN0X2gKKyNkZWZpbmUgV2ViQ29y
ZV9GV0RfU2NyaXB0T2JqZWN0X2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRPYmpl
Y3QuaD4KKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvYmlu
ZGluZ3MvU2NyaXB0VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvYmluZGluZ3MvU2NyaXB0VmFsdWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfU2NyaXB0VmFsdWVf
aAorI2RlZmluZSBXZWJDb3JlX0ZXRF9TY3JpcHRWYWx1ZV9oCisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvU2NyaXB0VmFsdWUuaD4KKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvRm9yd2Fy
ZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2Vu
dEJhc2UuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJz
L2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfSW5zcGVjdG9yQWdlbnRCYXNlX2gKKyNkZWZpbmUg
V2ViQ29yZV9GV0RfSW5zcGVjdG9yQWdlbnRCYXNlX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9JbnNwZWN0b3JBZ2VudEJhc2UuaD4KKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVj
dG9yQWdlbnRSZWdpc3RyeS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvRm9yd2Fy
ZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfSW5zcGVjdG9yQWdlbnRS
ZWdpc3RyeV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX0luc3BlY3RvckFnZW50UmVnaXN0cnlfaAor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaD4KKyNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3Iv
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQg
QEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJfaAorI2Rl
ZmluZSBXZWJDb3JlX0ZXRF9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcl9oCisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaD4KKyNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvclR5
cGVCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRl
cnMvaW5zcGVjdG9yL0luc3BlY3RvclR5cGVCdWlsZGVyLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yVHlwZUJ1aWxk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0Rf
SW5zcGVjdG9yVHlwZUJ1aWxkZXJfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9JbnNwZWN0b3JUeXBl
QnVpbGRlcl9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVHlwZUJ1aWxkZXIu
aD4KKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVj
dG9yL0luc3BlY3RvclZhbHVlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Zvcndh
cmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0Rf
SW5zcGVjdG9yVmFsdWVzX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfSW5zcGVjdG9yVmFsdWVzX2gK
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KKyNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuY3BwCShyZXZpc2lv
biAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDcgQEAgUGFzc1JlZlB0cjxJREJUcmFuc2Fj
dGlvbj4gSURCQW55OjppZGJUcgogICAgIHJldHVybiBtX2lkYlRyYW5zYWN0aW9uOwogfQogCi1j
b25zdCBTY3JpcHRWYWx1ZSYgSURCQW55OjpzY3JpcHRWYWx1ZSgpCitjb25zdCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYgSURCQW55OjpzY3JpcHRWYWx1ZSgpCiB7CiAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBTY3JpcHRWYWx1ZVR5cGUpOwogICAgIHJldHVybiBtX3NjcmlwdFZhbHVlOwpAQCAtMTg2
LDcgKzE4Niw3IEBAIElEQkFueTo6SURCQW55KFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmUKIHsK
IH0KIAotSURCQW55OjpJREJBbnkoY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVlKQorSURCQW55OjpJ
REJBbnkoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlKQogICAgIDogbV90eXBl
KFNjcmlwdFZhbHVlVHlwZSkKICAgICAsIG1fc2NyaXB0VmFsdWUodmFsdWUpCiAgICAgLCBtX2lu
dGVnZXIoMCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5o
CShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJBbnkuaAkod29ya2luZyBjb3B5KQpAQCAtMjksOCArMjksOCBAQAogI2lmIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgotI2luY2x1ZGUgIlNjcmlw
dFZhbHVlLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCisjaW5jbHVkZSA8YmluZGlu
Z3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtMTAxLDcgKzEw
MSw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQkluZGV4PiBpZGJJbmRleCgpOwogICAg
IFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IGlkYk9iamVjdFN0b3JlKCk7CiAgICAgUGFzc1Jl
ZlB0cjxJREJUcmFuc2FjdGlvbj4gaWRiVHJhbnNhY3Rpb24oKTsKLSAgICBjb25zdCBTY3JpcHRW
YWx1ZSYgc2NyaXB0VmFsdWUoKTsKKyAgICBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYg
c2NyaXB0VmFsdWUoKTsKICAgICBpbnQ2NF90IGludGVnZXIoKTsKICAgICBjb25zdCBTdHJpbmcm
IHN0cmluZygpOwogICAgIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgoKSB7IHJldHVybiBtX2lk
YktleVBhdGg7IH07CkBAIC0xMTgsNyArMTE4LDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBJ
REJBbnkoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4pOwogICAgIGV4cGxpY2l0IElEQkFueShj
b25zdCBJREJLZXlQYXRoJik7CiAgICAgZXhwbGljaXQgSURCQW55KGNvbnN0IFN0cmluZyYpOwot
ICAgIGV4cGxpY2l0IElEQkFueShjb25zdCBTY3JpcHRWYWx1ZSYpOworICAgIGV4cGxpY2l0IElE
QkFueShjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYpOwogICAgIGV4cGxpY2l0IElEQkFu
eShpbnQ2NF90KTsKIAogICAgIGNvbnN0IFR5cGUgbV90eXBlOwpAQCAtMTMzLDcgKzEzMyw3IEBA
IHByaXZhdGU6CiAgICAgY29uc3QgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBtX2lkYk9iamVjdFN0
b3JlOwogICAgIGNvbnN0IFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gbV9pZGJUcmFuc2FjdGlvbjsK
ICAgICBjb25zdCBJREJLZXlQYXRoIG1faWRiS2V5UGF0aDsKLSAgICBjb25zdCBTY3JpcHRWYWx1
ZSBtX3NjcmlwdFZhbHVlOworICAgIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG1fc2Ny
aXB0VmFsdWU7CiAgICAgY29uc3QgU3RyaW5nIG1fc3RyaW5nOwogICAgIGNvbnN0IGludDY0X3Qg
bV9pbnRlZ2VyOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yLmNwcAkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTgsMTkgKzk4
LDE5IEBAIGNvbnN0IFN0cmluZyYgSURCQ3Vyc29yOjpkaXJlY3Rpb24oKSBjb24KICAgICByZXR1
cm4gZGlyZWN0aW9uVG9TdHJpbmcobV9kaXJlY3Rpb24pOwogfQogCi1jb25zdCBTY3JpcHRWYWx1
ZSYgSURCQ3Vyc29yOjprZXkoKSBjb25zdAorY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
IElEQkN1cnNvcjo6a2V5KCkgY29uc3QKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgIklEQkN1cnNv
cjo6a2V5Iik7CiAgICAgcmV0dXJuIG1fY3VycmVudEtleVZhbHVlOwogfQogCi1jb25zdCBTY3Jp
cHRWYWx1ZSYgSURCQ3Vyc29yOjpwcmltYXJ5S2V5KCkgY29uc3QKK2NvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiBJREJDdXJzb3I6OnByaW1hcnlLZXkoKSBjb25zdAogewogICAgIExPRyhT
dG9yYWdlQVBJLCAiSURCQ3Vyc29yOjpwcmltYXJ5S2V5Iik7CiAgICAgcmV0dXJuIG1fY3VycmVu
dFByaW1hcnlLZXlWYWx1ZTsKIH0KIAotY29uc3QgU2NyaXB0VmFsdWUmIElEQkN1cnNvcjo6dmFs
dWUoKSBjb25zdAorY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIElEQkN1cnNvcjo6dmFs
dWUoKSBjb25zdAogewogICAgIExPRyhTdG9yYWdlQVBJLCAiSURCQ3Vyc29yOjp2YWx1ZSIpOwog
ICAgIHJldHVybiBtX2N1cnJlbnRWYWx1ZTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBJREJBbnkqIElE
QkN1cnNvcjo6c291cmNlKCkgY29uc3QKICAgICByZXR1cm4gbV9zb3VyY2UuZ2V0KCk7CiB9CiAK
LVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCQ3Vyc29yOjp1cGRhdGUoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCBTY3JpcHRWYWx1ZSYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBJREJDdXJzb3I6OnVwZGF0ZShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
TE9HKFN0b3JhZ2VBUEksICJJREJDdXJzb3I6OnVwZGF0ZSIpOwogCkBAIC0xNzcsNyArMTc3LDcg
QEAgdm9pZCBJREJDdXJzb3I6OmFkdmFuY2UodW5zaWduZWQgbG9uZyBjbwogICAgIEFTU0VSVCgh
ZWMpOwogfQogCi12b2lkIElEQkN1cnNvcjo6Y29udGludWVGdW5jdGlvbihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5VmFsdWUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQordm9pZCBJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleVZh
bHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBET01SZXF1ZXN0U3RhdGUgcmVxdWVzdFN0
YXRlKGNvbnRleHQpOwogICAgIFJlZlB0cjxJREJLZXk+IGtleSA9IHNjcmlwdFZhbHVlVG9JREJL
ZXkoJnJlcXVlc3RTdGF0ZSwga2V5VmFsdWUpOwpAQCAtMjYzLDcgKzI2Myw3IEBAIHZvaWQgSURC
Q3Vyc29yOjpjbG9zZSgpCiAgICAgfQogfQogCi12b2lkIElEQkN1cnNvcjo6c2V0VmFsdWVSZWFk
eShET01SZXF1ZXN0U3RhdGUqIHN0YXRlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVm
UHRyPElEQktleT4gcHJpbWFyeUtleSwgU2NyaXB0VmFsdWUmIHZhbHVlKQordm9pZCBJREJDdXJz
b3I6OnNldFZhbHVlUmVhZHkoRE9NUmVxdWVzdFN0YXRlKiBzdGF0ZSwgUGFzc1JlZlB0cjxJREJL
ZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlJiB2YWx1ZSkKIHsKICAgICBtX2N1cnJlbnRLZXkgPSBrZXk7CiAgICAgbV9jdXJyZW50
S2V5VmFsdWUgPSBpZGJLZXlUb1NjcmlwdFZhbHVlKHN0YXRlLCBtX2N1cnJlbnRLZXkpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgJKHJldmlz
aW9uIDE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSw4IEBACiAjaW5jbHVkZSAiSURCS2V5Lmgi
CiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJJbmRleGVkREIuaCIKLSNp
bmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgorI2lu
Y2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
QEAgLTYzLDIyICs2MywyMiBAQCBwdWJsaWM6CiAKICAgICAvLyBJbXBsZW1lbnQgdGhlIElETAog
ICAgIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uKCkgY29uc3Q7Ci0gICAgY29uc3QgU2NyaXB0VmFs
dWUmIGtleSgpIGNvbnN0OwotICAgIGNvbnN0IFNjcmlwdFZhbHVlJiBwcmltYXJ5S2V5KCkgY29u
c3Q7Ci0gICAgY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVlKCkgY29uc3Q7CisgICAgY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSgpIGNvbnN0OworICAgIGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiBwcmltYXJ5S2V5KCkgY29uc3Q7CisgICAgY29uc3QgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUmIHZhbHVlKCkgY29uc3Q7CiAgICAgSURCQW55KiBzb3VyY2UoKSBjb25zdDsK
IAotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gdXBkYXRlKEpTQzo6RXhlY1N0YXRlKiwgU2Ny
aXB0VmFsdWUmLCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiB1
cGRhdGUoSlNDOjpFeGVjU3RhdGUqLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIEV4Y2VwdGlv
bkNvZGUmKTsKICAgICB2b2lkIGFkdmFuY2UodW5zaWduZWQgbG9uZywgRXhjZXB0aW9uQ29kZSYp
OwogICAgIC8vIEZJWE1FOiBUcnkgdG8gbW9kaWZ5IHRoZSBjb2RlIGdlbmVyYXRvciBzbyB0aGlz
IG92ZXJsb2FkIGlzIHVubmVlZGVkLgogICAgIHZvaWQgY29udGludWVGdW5jdGlvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgY29udGludWVGdW5jdGlvbihz
dGF0aWNfY2FzdDxJREJLZXkqPigwKSwgZWMpOyB9Ci0gICAgdm9pZCBjb250aW51ZUZ1bmN0aW9u
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRp
b25Db2RlJik7CisgICAgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7
CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdm9pZCBjb250aW51ZUZ1bmN0aW9u
KFBhc3NSZWZQdHI8SURCS2V5PiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgcG9zdFN1Y2Nl
c3NIYW5kbGVyQ2FsbGJhY2soKTsKICAgICB2b2lkIGNsb3NlKCk7Ci0gICAgdm9pZCBzZXRWYWx1
ZVJlYWR5KERPTVJlcXVlc3RTdGF0ZSosIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJ
REJLZXk+IHByaW1hcnlLZXksIFNjcmlwdFZhbHVlJik7CisgICAgdm9pZCBzZXRWYWx1ZVJlYWR5
KERPTVJlcXVlc3RTdGF0ZSosIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+
IHByaW1hcnlLZXksIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJik7CiAgICAgUGFzc1JlZlB0cjxJ
REJLZXk+IGlkYlByaW1hcnlLZXkoKSB7IHJldHVybiBtX2N1cnJlbnRQcmltYXJ5S2V5OyB9CiAK
IHByb3RlY3RlZDoKQEAgLTk3LDExICs5NywxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9nb3RW
YWx1ZTsKICAgICAvLyBUaGVzZSB2YWx1ZXMgYXJlIGhlbGQgYmVjYXVzZSBtX2JhY2tlbmQgbWF5
IGFkdmFuY2Ugd2hpbGUgdGhleQogICAgIC8vIGFyZSBzdGlsbCB2YWxpZCBmb3IgdGhlIGN1cnJl
bnQgc3VjY2VzcyBoYW5kbGVycy4KLSAgICBTY3JpcHRWYWx1ZSBtX2N1cnJlbnRLZXlWYWx1ZTsK
LSAgICBTY3JpcHRWYWx1ZSBtX2N1cnJlbnRQcmltYXJ5S2V5VmFsdWU7CisgICAgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUgbV9jdXJyZW50S2V5VmFsdWU7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUgbV9jdXJyZW50UHJpbWFyeUtleVZhbHVlOwogICAgIFJlZlB0cjxJREJLZXk+IG1fY3Vy
cmVudEtleTsKICAgICBSZWZQdHI8SURCS2V5PiBtX2N1cnJlbnRQcmltYXJ5S2V5OwotICAgIFNj
cmlwdFZhbHVlIG1fY3VycmVudFZhbHVlOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG1f
Y3VycmVudFZhbHVlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAJKHJldmlzaW9u
IDE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3Rvcnku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsNyArMTY1LDcgQEAgUGFzc1JlZlB0cjxJREJPcGVu
REJSZXF1ZXN0PiBJREJGYWN0b3J5OgogICAgIHJldHVybiByZXF1ZXN0OwogfQogCi1zaG9ydCBJ
REJGYWN0b3J5OjpjbXAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2Ny
aXB0VmFsdWUmIGZpcnN0VmFsdWUsIGNvbnN0IFNjcmlwdFZhbHVlJiBzZWNvbmRWYWx1ZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCitzaG9ydCBJREJGYWN0b3J5OjpjbXAoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGZpcnN0VmFsdWUs
IGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBzZWNvbmRWYWx1ZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CiAgICAgRE9NUmVxdWVzdFN0YXRlIHJlcXVlc3RTdGF0ZShjb250ZXh0KTsKICAg
ICBSZWZQdHI8SURCS2V5PiBmaXJzdCA9IHNjcmlwdFZhbHVlVG9JREJLZXkoJnJlcXVlc3RTdGF0
ZSwgZmlyc3RWYWx1ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJGYWN0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRmFjdG9yeS5oCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcg
QEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gb3BlbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCB1bnNpZ25lZCBsb25nIGxvbmcg
dmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVz
dD4gZGVsZXRlRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYg
bmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgc2hvcnQgY21wKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYgZmlyc3QsIGNvbnN0IFNjcmlwdFZhbHVlJiBzZWNv
bmQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzaG9ydCBjbXAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBmaXJzdCwgY29uc3QgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUmIHNlY29uZCwgRXhjZXB0aW9uQ29kZSYpOwogCiBwcml2YXRlOgogICAg
IElEQkZhY3RvcnkoSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UqKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAJKHJldmlzaW9uIDE2MDQw
NCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQklu
ZGV4OjpvcGVuQ3VyCiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gSURCSW5kZXg6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2Vw
dGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbkN1cnNv
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJJbmRleDo6b3BlbkN1cnNvciIpOwogICAgIFJl
ZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBJREJLZXlSYW5nZTo6b25seShjb250ZXh0LCBr
ZXksIGVjKTsKQEAgLTEwMCw3ICsxMDAsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQklu
ZGV4Ojpjb3VudChTCiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gSURCSW5kZXg6OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBJREJJbmRleDo6Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Y29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJJbmRleDo6Y291bnQiKTsKICAgICBSZWZQdHI8SURC
S2V5UmFuZ2U+IGtleVJhbmdlID0gSURCS2V5UmFuZ2U6Om9ubHkoY29udGV4dCwga2V5LCBlYyk7
CkBAIC0xMzAsNyArMTMwLDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3Bl
bktleQogICAgIHJldHVybiByZXF1ZXN0OwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElE
QkluZGV4OjpvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFNjcmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25D
b2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5LZXlDdXJzb3Io
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewogICAgIExPRyhTdG9yYWdlQVBJLCAiSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IiKTsKICAgICBS
ZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlID0gSURCS2V5UmFuZ2U6Om9ubHkoY29udGV4dCwg
a2V5LCBlYyk7CkBAIC0xMzksNyArMTM5LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJ
bmRleDo6b3BlbktleQogICAgIHJldHVybiBvcGVuS2V5Q3Vyc29yKGNvbnRleHQsIGtleVJhbmdl
LnJlbGVhc2UoKSwgZGlyZWN0aW9uLCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
SURCSW5kZXg6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3Jp
cHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4g
SURCSW5kZXg6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBMT0co
U3RvcmFnZUFQSSwgIklEQkluZGV4OjpnZXQiKTsKICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IGtl
eVJhbmdlID0gSURCS2V5UmFuZ2U6Om9ubHkoY29udGV4dCwga2V5LCBlYyk7CkBAIC0xNjksNyAr
MTY5LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Z2V0KFNjcgogICAgIHJl
dHVybiByZXF1ZXN0OwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpnZXRL
ZXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGtl
eSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4Ojpn
ZXRLZXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgTE9HKFN0b3JhZ2VB
UEksICJJREJJbmRleDo6Z2V0S2V5Iik7CiAgICAgUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5n
ZSA9IElEQktleVJhbmdlOjpvbmx5KGNvbnRleHQsIGtleSwgZWMpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCShyZXZpc2lvbiAxNjA0MDQpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCSh3b3JraW5nIGNv
cHkpCkBAIC02MywyMyArNjMsMjMgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBUcnkgdG8gbW9k
aWZ5IHRoZSBjb2RlIGdlbmVyYXRvciBzbyB0aGlzIGlzIHVubmVlZGVkLgogICAgIFBhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCBzdGF0aWNf
Y2FzdDxJREJLZXlSYW5nZSo+KDApLCBlYyk7IH0KICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4ga2V5UmFuZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBvcGVuQ3Vy
c29yKGNvbnRleHQsIGtleVJhbmdlLCBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHQoKSwgZWMpOyB9
Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVj
KSB7IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIGtleSwgSURCQ3Vyc29yOjpkaXJlY3Rpb25O
ZXh0KCksIGVjKTsgfQorICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCBr
ZXksIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCgpLCBlYyk7IH0KICAgICBQYXNzUmVmUHRyPElE
QlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8
SURCS2V5UmFuZ2U+LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYpOwot
ICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXks
IGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNl
cHRpb25Db2RlJiBlYykgeyByZXR1cm4gY291bnQoY29udGV4dCwgc3RhdGljX2Nhc3Q8SURCS2V5
UmFuZ2UqPigwKSwgZWMpOyB9CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIEV4Y2VwdGlvbkNv
ZGUmKTsKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBvcGVuS2V5Q3Vyc29yKGNvbnRl
eHQsIHN0YXRpY19jYXN0PElEQktleVJhbmdlKj4oMCksIGVjKTsgfQogICAgIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsg
cmV0dXJuIG9wZW5LZXlDdXJzb3IoY29udGV4dCwga2V5UmFuZ2UsIElEQkN1cnNvcjo6ZGlyZWN0
aW9uTmV4dCgpLCBlYyk7IH0KLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5LZXlDdXJz
b3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGtl
eSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5LZXlDdXJzb3IoY29udGV4dCwga2V5
LCBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHQoKSwgZWMpOyB9CisgICAgUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJl
dHVybiBvcGVuS2V5Q3Vyc29yKGNvbnRleHQsIGtleSwgSURCQ3Vyc29yOjpkaXJlY3Rpb25OZXh0
KCksIGVjKTsgfQogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbktleUN1cnNvcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIGNvbnN0IFN0cmlu
ZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0
PiBvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTY3JpcHRWYWx1
ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBh
c3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJl
Y3Rpb24sIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZ2V0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgRXhjZXB0
aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZ2V0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CisgICAg
UGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IGdldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IGdldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU2NyaXB0VmFsdWUm
IGtleSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZ2V0S2V5
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYg
a2V5LCBFeGNlcHRpb25Db2RlJik7CiAKICAgICB2b2lkIG1hcmtEZWxldGVkKCkgeyBtX2RlbGV0
ZWQgPSB0cnVlOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QktleVJhbmdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJLZXlSYW5nZS5jcHAJKHJldmlzaW9uIDE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDks
MTMgKzQ5LDEzIEBAIElEQktleVJhbmdlOjpJREJLZXlSYW5nZShQYXNzUmVmUHRyPElEQksKIHsK
IH0KIAotU2NyaXB0VmFsdWUgSURCS2V5UmFuZ2U6Omxvd2VyVmFsdWUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCkgY29uc3QKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIElEQktleVJh
bmdlOjpsb3dlclZhbHVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIGNvbnN0CiB7
CiAgICAgRE9NUmVxdWVzdFN0YXRlIHJlcXVlc3RTdGF0ZShjb250ZXh0KTsKICAgICByZXR1cm4g
aWRiS2V5VG9TY3JpcHRWYWx1ZSgmcmVxdWVzdFN0YXRlLCBtX2xvd2VyKTsKIH0KIAotU2NyaXB0
VmFsdWUgSURCS2V5UmFuZ2U6OnVwcGVyVmFsdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCkgY29uc3QKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIElEQktleVJhbmdlOjp1cHBlclZh
bHVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgRE9NUmVx
dWVzdFN0YXRlIHJlcXVlc3RTdGF0ZShjb250ZXh0KTsKICAgICByZXR1cm4gaWRiS2V5VG9TY3Jp
cHRWYWx1ZSgmcmVxdWVzdFN0YXRlLCBtX3VwcGVyKTsKQEAgLTcyLDcgKzcyLDcgQEAgUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6Om9ubAogICAgIHJldHVybiBJREJLZXlSYW5n
ZTo6Y3JlYXRlKGtleSwga2V5LCBMb3dlckJvdW5kQ2xvc2VkLCBVcHBlckJvdW5kQ2xvc2VkKTsK
IH0KIAotUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6Om9ubHkoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGtleVZhbHVlLCBFeGNl
cHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IElEQktleVJhbmdlOjpvbmx5
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlJiBrZXlWYWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgRE9NUmVxdWVzdFN0
YXRlIHJlcXVlc3RTdGF0ZShjb250ZXh0KTsKICAgICBSZWZQdHI8SURCS2V5PiBrZXkgPSBzY3Jp
cHRWYWx1ZVRvSURCS2V5KCZyZXF1ZXN0U3RhdGUsIGtleVZhbHVlKTsKQEAgLTg0LDcgKzg0LDcg
QEAgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6Om9ubAogICAgIHJldHVybiBJ
REJLZXlSYW5nZTo6Y3JlYXRlKGtleSwga2V5LCBMb3dlckJvdW5kQ2xvc2VkLCBVcHBlckJvdW5k
Q2xvc2VkKTsKIH0KIAotUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6Omxvd2Vy
Qm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUm
IGJvdW5kVmFsdWUsIGJvb2wgb3BlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElE
QktleVJhbmdlPiBJREJLZXlSYW5nZTo6bG93ZXJCb3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgYm91bmRWYWx1ZSwgYm9v
bCBvcGVuLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBET01SZXF1ZXN0U3RhdGUgcmVxdWVz
dFN0YXRlKGNvbnRleHQpOwogICAgIFJlZlB0cjxJREJLZXk+IGJvdW5kID0gc2NyaXB0VmFsdWVU
b0lEQktleSgmcmVxdWVzdFN0YXRlLCBib3VuZFZhbHVlKTsKQEAgLTk2LDcgKzk2LDcgQEAgUGFz
c1JlZlB0cjxJREJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6OmxvdwogICAgIHJldHVybiBJREJLZXlS
YW5nZTo6Y3JlYXRlKGJvdW5kLCAwLCBvcGVuID8gTG93ZXJCb3VuZE9wZW4gOiBMb3dlckJvdW5k
Q2xvc2VkLCBVcHBlckJvdW5kT3Blbik7CiB9CiAKLVBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IElE
QktleVJhbmdlOjp1cHBlckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFNjcmlwdFZhbHVlJiBib3VuZFZhbHVlLCBib29sIG9wZW4sIEV4Y2VwdGlvbkNvZGUmIGVj
KQorUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6OnVwcGVyQm91bmQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
IGJvdW5kVmFsdWUsIGJvb2wgb3BlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgRE9NUmVx
dWVzdFN0YXRlIHJlcXVlc3RTdGF0ZShjb250ZXh0KTsKICAgICBSZWZQdHI8SURCS2V5PiBib3Vu
ZCA9IHNjcmlwdFZhbHVlVG9JREJLZXkoJnJlcXVlc3RTdGF0ZSwgYm91bmRWYWx1ZSk7CkBAIC0x
MDgsNyArMTA4LDcgQEAgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6OnVwcAog
ICAgIHJldHVybiBJREJLZXlSYW5nZTo6Y3JlYXRlKDAsIGJvdW5kLCBMb3dlckJvdW5kT3Blbiwg
b3BlbiA/IFVwcGVyQm91bmRPcGVuIDogVXBwZXJCb3VuZENsb3NlZCk7CiB9CiAKLVBhc3NSZWZQ
dHI8SURCS2V5UmFuZ2U+IElEQktleVJhbmdlOjpib3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYgbG93ZXJWYWx1ZSwgY29uc3QgU2NyaXB0VmFs
dWUmIHVwcGVyVmFsdWUsIGJvb2wgbG93ZXJPcGVuLCBib29sIHVwcGVyT3BlbiwgRXhjZXB0aW9u
Q29kZSYgZWMpCitQYXNzUmVmUHRyPElEQktleVJhbmdlPiBJREJLZXlSYW5nZTo6Ym91bmQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUmIGxvd2VyVmFsdWUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB1cHBlclZhbHVl
LCBib29sIGxvd2VyT3BlbiwgYm9vbCB1cHBlck9wZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIERPTVJlcXVlc3RTdGF0ZSByZXF1ZXN0U3RhdGUoY29udGV4dCk7CiAgICAgUmVmUHRyPElE
QktleT4gbG93ZXIgPSBzY3JpcHRWYWx1ZVRvSURCS2V5KCZyZXF1ZXN0U3RhdGUsIGxvd2VyVmFs
dWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlS
YW5nZS5oCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJLZXlSYW5nZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSwyMyArNTksMjMgQEAgcHVi
bGljOgogICAgIFBhc3NSZWZQdHI8SURCS2V5PiBsb3dlcigpIGNvbnN0IHsgcmV0dXJuIG1fbG93
ZXI7IH0KICAgICBQYXNzUmVmUHRyPElEQktleT4gdXBwZXIoKSBjb25zdCB7IHJldHVybiBtX3Vw
cGVyOyB9CiAKLSAgICBTY3JpcHRWYWx1ZSBsb3dlclZhbHVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqKSBjb25zdDsKLSAgICBTY3JpcHRWYWx1ZSB1cHBlclZhbHVlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKSBjb25zdDsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBsb3dlclZhbHVlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBjb25zdDsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSB1cHBlclZhbHVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBjb25zdDsKICAgICBib29sIGxv
d2VyT3BlbigpIGNvbnN0IHsgcmV0dXJuIG1fbG93ZXJUeXBlID09IExvd2VyQm91bmRPcGVuOyB9
CiAgICAgYm9vbCB1cHBlck9wZW4oKSBjb25zdCB7IHJldHVybiBtX3VwcGVyVHlwZSA9PSBVcHBl
ckJvdW5kT3BlbjsgfQogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IG9ubHko
UGFzc1JlZlB0cjxJREJLZXk+IHZhbHVlLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+IG9ubHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxJREJLZXlSYW5nZT4gb25seShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgc3RhdGljIFBh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+IGxvd2VyQm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGJvdW5kLCBFeGNlcHRpb25Db2RlJiBlYykgeyBy
ZXR1cm4gbG93ZXJCb3VuZChjb250ZXh0LCBib3VuZCwgZmFsc2UsIGVjKTsgfQotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBsb3dlckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYgYm91bmQsIGJvb2wgb3BlbiwgRXhjZXB0aW9uQ29kZSYp
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBsb3dlckJvdW5kKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBi
b3VuZCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGxvd2VyQm91bmQoY29udGV4dCwgYm91
bmQsIGZhbHNlLCBlYyk7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gbG93
ZXJCb3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUmIGJvdW5kLCBib29sIG9wZW4sIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPElEQktleVJhbmdlPiB1cHBlckJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBib3VuZCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsg
cmV0dXJuIHVwcGVyQm91bmQoY29udGV4dCwgYm91bmQsIGZhbHNlLCBlYyk7IH0KLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gdXBwZXJCb3VuZChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgU2NyaXB0VmFsdWUmIGJvdW5kLCBib29sIG9wZW4sIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gdXBwZXJCb3VuZChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYg
Ym91bmQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiB1cHBlckJvdW5kKGNvbnRleHQsIGJv
dW5kLCBmYWxzZSwgZWMpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHVw
cGVyQm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlJiBib3VuZCwgYm9vbCBvcGVuLCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gYm91bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIGxvd2VyLCBjb25zdCBTY3JpcHRWYWx1ZSYgdXBwZXIs
IEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBib3VuZChjb250ZXh0LCBsb3dlciwgdXBwZXIs
IGZhbHNlLCBmYWxzZSwgZWMpOyB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+
IGJvdW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVl
JiBsb3dlciwgY29uc3QgU2NyaXB0VmFsdWUmIHVwcGVyLCBib29sIGxvd2VyT3BlbiwgRXhjZXB0
aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGJvdW5kKGNvbnRleHQsIGxvd2VyLCB1cHBlciwgbG93ZXJP
cGVuLCBmYWxzZSwgZWMpOyB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGJv
dW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYgbG93ZXIsIGNv
bnN0IFNjcmlwdFZhbHVlJiB1cHBlciwgYm9vbCBsb3dlck9wZW4sIGJvb2wgdXBwZXJPcGVuLCBF
eGNlcHRpb25Db2RlJik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGJvdW5k
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlJiBsb3dlciwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHVwcGVyLCBFeGNl
cHRpb25Db2RlJiBlYykgeyByZXR1cm4gYm91bmQoY29udGV4dCwgbG93ZXIsIHVwcGVyLCBmYWxz
ZSwgZmFsc2UsIGVjKTsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBib3Vu
ZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYgbG93ZXIsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB1cHBlciwgYm9v
bCBsb3dlck9wZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBib3VuZChjb250ZXh0LCBs
b3dlciwgdXBwZXIsIGxvd2VyT3BlbiwgZmFsc2UsIGVjKTsgfQorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPElEQktleVJhbmdlPiBib3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmIGxvd2VyLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYgdXBwZXIsIGJvb2wgbG93ZXJPcGVuLCBib29sIHVwcGVyT3BlbiwgRXhjZXB0aW9uQ29kZSYp
OwogCiAgICAgYm9vbCBpc09ubHlLZXkoKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAkocmV2aXNpb24g
MTYwNDA0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3IEBAIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gSURCT2JqZWN0U3RvcmU6OmcKICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9
CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmdldChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25D
b2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmdldChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IGtl
eVJhbmdlID0gSURCS2V5UmFuZ2U6Om9ubHkoY29udGV4dCwga2V5LCBlYyk7CiAgICAgaWYgKGVj
KQpAQCAtOTQsNyArOTQsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3Jl
OjpnCiAgICAgcmV0dXJuIGdldChjb250ZXh0LCBrZXlSYW5nZS5yZWxlYXNlKCksIGVjKTsKIH0K
IAotc3RhdGljIHZvaWQgZ2VuZXJhdGVJbmRleEtleXNGb3JWYWx1ZShET01SZXF1ZXN0U3RhdGUq
IHJlcXVlc3RTdGF0ZSwgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYgaW5kZXhNZXRhZGF0YSwgY29u
c3QgU2NyaXB0VmFsdWUmIG9iamVjdFZhbHVlLCBJREJPYmplY3RTdG9yZTo6SW5kZXhLZXlzKiBp
bmRleEtleXMpCitzdGF0aWMgdm9pZCBnZW5lcmF0ZUluZGV4S2V5c0ZvclZhbHVlKERPTVJlcXVl
c3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBjb25zdCBJREJJbmRleE1ldGFkYXRhJiBpbmRleE1ldGFk
YXRhLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgb2JqZWN0VmFsdWUsIElEQk9iamVj
dFN0b3JlOjpJbmRleEtleXMqIGluZGV4S2V5cykKIHsKICAgICBBU1NFUlQoaW5kZXhLZXlzKTsK
ICAgICBSZWZQdHI8SURCS2V5PiBpbmRleEtleSA9IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1
ZUFuZEtleVBhdGgocmVxdWVzdFN0YXRlLCBvYmplY3RWYWx1ZSwgaW5kZXhNZXRhZGF0YS5rZXlQ
YXRoKTsKQEAgLTExNywzMSArMTE3LDMxIEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlSW5kZXhLZXlz
Rm9yVmFsdWUoRE8KICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0
U3RvcmU6OmFkZChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29u
c3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IElEQk9iamVjdFN0b3JlOjphZGQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBr
ZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIExPRyhTdG9yYWdlQVBJLCAiSURCT2JqZWN0
U3RvcmU6OmFkZCIpOwogICAgIHJldHVybiBwdXQoSURCRGF0YWJhc2VCYWNrZW5kOjpBZGRPbmx5
LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgc3RhdGUsIHZhbHVlLCBrZXksIGVjKTsKIH0KIAotUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6YWRkKEpTQzo6RXhlY1N0YXRlKiBz
dGF0ZSwgU2NyaXB0VmFsdWUmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8
SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmFkZChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
TE9HKFN0b3JhZ2VBUEksICJJREJPYmplY3RTdG9yZTo6YWRkIik7CiAgICAgcmV0dXJuIHB1dChJ
REJEYXRhYmFzZUJhY2tlbmQ6OkFkZE9ubHksIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBzdGF0ZSwg
dmFsdWUsIHN0YXRpY19jYXN0PElEQktleSo+KDApLCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8SURC
UmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFNjcmlw
dFZhbHVlJiB2YWx1ZSwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMp
CitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIExPRyhTdG9y
YWdlQVBJLCAiSURCT2JqZWN0U3RvcmU6OnB1dCIpOwogICAgIHJldHVybiBwdXQoSURCRGF0YWJh
c2VCYWNrZW5kOjpBZGRPclVwZGF0ZSwgSURCQW55OjpjcmVhdGUodGhpcyksIHN0YXRlLCB2YWx1
ZSwga2V5LCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6
OnB1dChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFNjcmlwdFZhbHVlJiB2YWx1ZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoSlND
OjpFeGVjU3RhdGUqIHN0YXRlLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIExPRyhTdG9yYWdlQVBJLCAiSURCT2JqZWN0U3RvcmU6OnB1
dCIpOwogICAgIHJldHVybiBwdXQoSURCRGF0YWJhc2VCYWNrZW5kOjpBZGRPclVwZGF0ZSwgSURC
QW55OjpjcmVhdGUodGhpcyksIHN0YXRlLCB2YWx1ZSwgc3RhdGljX2Nhc3Q8SURCS2V5Kj4oMCks
IGVjKTsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KElE
QkRhdGFiYXNlQmFja2VuZDo6UHV0TW9kZSBwdXRNb2RlLCBQYXNzUmVmUHRyPElEQkFueT4gc291
cmNlLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU2Ny
aXB0VmFsdWUmIGtleVZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVx
dWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChJREJEYXRhYmFzZUJhY2tlbmQ6OlB1dE1vZGUgcHV0
TW9kZSwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlJiBrZXlWYWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKHN0
YXRlKTsKICAgICBET01SZXF1ZXN0U3RhdGUgcmVxdWVzdFN0YXRlKGNvbnRleHQpOwpAQCAtMTQ5
LDcgKzE0OSw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnAKICAg
ICByZXR1cm4gcHV0KHB1dE1vZGUsIHNvdXJjZSwgc3RhdGUsIHZhbHVlLCBrZXkucmVsZWFzZSgp
LCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChJ
REJEYXRhYmFzZUJhY2tlbmQ6OlB1dE1vZGUgcHV0TW9kZSwgUGFzc1JlZlB0cjxJREJBbnk+IHNv
dXJjZSwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBTY3JpcHRWYWx1ZSYgdmFsdWUsIFBhc3NSZWZQ
dHI8SURCS2V5PiBwcnBLZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KElEQkRhdGFiYXNlQmFja2VuZDo6UHV0TW9kZSBwdXRN
b2RlLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IHBycEtleSwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPElEQktleT4ga2V5ID0gcHJwS2V5Owog
ICAgIGlmIChtX2RlbGV0ZWQpIHsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwCiAKICAgICAvLyBGSVhNRTogRXhwb3NlIHRoZSBKUyBl
bmdpbmUgZXhjZXB0aW9uIHN0YXRlIHRocm91Z2ggU2NyaXB0U3RhdGUuCiAgICAgYm9vbCBkaWRU
aHJvdyA9IGZhbHNlOwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6
ZWRWYWx1ZSA9IHZhbHVlLnNlcmlhbGl6ZShzdGF0ZSwgMCwgMCwgZGlkVGhyb3cpOworICAgIFJl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6c2VyaWFsaXplKHZhbHVlLCBzdGF0ZSwgbnVsbHB0ciwgbnVsbHB0ciwgZGlk
VGhyb3cpOwogICAgIGlmIChkaWRUaHJvdykgewogICAgICAgICAvLyBTZXR0aW5nIGFuIGV4cGxp
Y2l0IEV4Y2VwdGlvbkNvZGUgaGVyZSB3b3VsZCBkZWZlciBoYW5kbGluZyB0aGUgYWxyZWFkeSB0
aHJvd24gZXhjZXB0aW9uLgogICAgICAgICByZXR1cm4gMDsKQEAgLTI2Miw3ICsyNjIsNyBAQCBQ
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpkCiAgICAgcmV0dXJuIHJlcXVl
c3QucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3Jl
OjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
Y3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVz
dD4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewogICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBJREJLZXlSYW5n
ZTo6b25seShjb250ZXh0LCBrZXksIGVjKTsKICAgICBpZiAoZWMpCkBAIC0zMzYsNyArMzM2LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIGN1cnNvci0+Y29udGludWVGdW5jdGlvbihzdGF0aWNf
Y2FzdDxJREJLZXkqPigwKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAKICAgICAgICAgICAgIFJl
ZlB0cjxJREJLZXk+IHByaW1hcnlLZXkgPSBjdXJzb3ItPmlkYlByaW1hcnlLZXkoKTsKLSAgICAg
ICAgICAgIFNjcmlwdFZhbHVlIHZhbHVlID0gY3Vyc29yLT52YWx1ZSgpOworICAgICAgICAgICAg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgdmFsdWUgPSBjdXJzb3ItPnZhbHVlKCk7CiAKICAgICAg
ICAgICAgIElEQk9iamVjdFN0b3JlOjpJbmRleEtleXMgaW5kZXhLZXlzOwogICAgICAgICAgICAg
Z2VuZXJhdGVJbmRleEtleXNGb3JWYWx1ZShyZXF1ZXN0LT5yZXF1ZXN0U3RhdGUoKSwgbV9pbmRl
eE1ldGFkYXRhLCB2YWx1ZSwgJmluZGV4S2V5cyk7CkBAIC01MDIsNyArNTAyLDcgQEAgUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6bwogICAgIHJldHVybiBvcGVuQ3Vyc29y
KGNvbnRleHQsIGtleVJhbmdlLCBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHQoKSwgZWMpOwogfQog
Ci1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2Vw
dGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6b3Bl
bkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICByZXR1cm4gb3Bl
bkN1cnNvcihjb250ZXh0LCBrZXksIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCgpLCBlYyk7CiB9
CkBAIC01MzQsNyArNTM0LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9y
ZTo6bwogICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlv
biwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0
b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlID0gSURC
S2V5UmFuZ2U6Om9ubHkoY29udGV4dCwga2V5LCBlYyk7CiAgICAgaWYgKGVjKQpAQCAtNTU4LDcg
KzU1OCw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmMKICAgICBy
ZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURC
T2JqZWN0U3RvcmU6OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0
IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBJREJPYmplY3RTdG9yZTo6Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSA9IElEQktleVJhbmdlOjpvbmx5
KGNvbnRleHQsIGtleSwgZWMpOwogICAgIGlmIChlYykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaAkocmV2aXNpb24gMTYwNDA0
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaAko
d29ya2luZyBjb3B5KQpAQCAtNjUsMjEgKzY1LDIxIEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNhY3Rp
b247IH0KICAgICBib29sIGF1dG9JbmNyZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRh
LmF1dG9JbmNyZW1lbnQ7IH0KIAotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gYWRkKEpTQzo6
RXhlY1N0YXRlKiwgU2NyaXB0VmFsdWUmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBwdXQoSlNDOjpFeGVjU3RhdGUqLCBTY3JpcHRWYWx1ZSYsIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGFkZChKU0M6OkV4ZWNTdGF0ZSos
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gcHV0KEpTQzo6RXhlY1N0YXRlKiwgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vy
c29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNz
UmVmUHRyPElEQktleVJhbmdlPiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURC
UmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU2NyaXB0
VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVz
dD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4sIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQ
YXNzUmVmUHRyPElEQktleVJhbmdlPiwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIElEQkRhdGFi
YXNlQmFja2VuZDo6VGFza1R5cGUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPElE
QlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFNjcmlw
dFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRp
cmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBn
ZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFNjcmlwdFZhbHVlJiBrZXksIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGdldChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9u
Q29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZ2V0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBh
c3NSZWZQdHI8SURCUmVxdWVzdD4gYWRkKEpTQzo6RXhlY1N0YXRlKiwgU2NyaXB0VmFsdWUmLCBj
b25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBwdXQoSlNDOjpFeGVjU3RhdGUqLCBTY3JpcHRWYWx1ZSYsIGNvbnN0IFNjcmlw
dFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IGFkZChKU0M6OkV4ZWNTdGF0ZSosIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gcHV0KEpTQzo6RXhlY1N0YXRlKiwgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUmLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7
CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIEV4Y2VwdGlvbkNvZGUmKTsKLSAg
ICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY2xlYXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIFBhc3NSZWZQdHI8SURCSW5kZXg+IGNyZWF0ZUluZGV4
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiBrZXlQYXRoLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBFeGNlcHRpb25D
b2RlJiBlYykgeyByZXR1cm4gY3JlYXRlSW5kZXgoY29udGV4dCwgbmFtZSwgSURCS2V5UGF0aChr
ZXlQYXRoKSwgb3B0aW9ucywgZWMpOyB9CkBAIC05MiwxMCArOTIsMTAgQEAgcHVibGljOgogCiAg
ICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gY291bnQoY29udGV4dCwgc3RhdGlj
X2Nhc3Q8SURCS2V5UmFuZ2UqPigwKSwgZWMpOyB9CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0
PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4s
IEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYp
OwogCi0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBwdXQoSURCRGF0YWJhc2VCYWNrZW5kOjpQ
dXRNb2RlLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBKU0M6OkV4ZWNTdGF0ZSosIFNjcmlw
dFZhbHVlJiwgY29uc3QgU2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBh
c3NSZWZQdHI8SURCUmVxdWVzdD4gcHV0KElEQkRhdGFiYXNlQmFja2VuZDo6UHV0TW9kZSwgUGFz
c1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgSlNDOjpFeGVjU3RhdGUqLCBTY3JpcHRWYWx1ZSYsIFBh
c3NSZWZQdHI8SURCS2V5PiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gcHV0KElEQkRhdGFiYXNlQmFja2VuZDo6UHV0TW9kZSwgUGFzc1JlZlB0cjxJREJBbnk+
IHNvdXJjZSwgSlNDOjpFeGVjU3RhdGUqLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IHB1dChJREJEYXRhYmFzZUJhY2tlbmQ6OlB1dE1vZGUsIFBhc3NS
ZWZQdHI8SURCQW55PiBzb3VyY2UsIEpTQzo6RXhlY1N0YXRlKiwgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUmLCBQYXNzUmVmUHRyPElEQktleT4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIG1h
cmtEZWxldGVkKCkgeyBtX2RlbGV0ZWQgPSB0cnVlOyB9CiAgICAgdm9pZCB0cmFuc2FjdGlvbkZp
bmlzaGVkKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJl
cXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlJlcXVlc3QuY3BwCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzLDcgKzIx
Myw3IEBAIFBhc3NSZWZQdHI8SURCQ3Vyc29yPiBJREJSZXF1ZXN0OjpnZXRSZXMKICAgICByZXR1
cm4gMDsKIH0KIAotdm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHRDdXJzb3IoUGFzc1JlZlB0cjxJ
REJDdXJzb3I+IGN1cnNvciwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJL
ZXk+IHByaW1hcnlLZXksIGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1ZSkKK3ZvaWQgSURCUmVxdWVz
dDo6c2V0UmVzdWx0Q3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yPiBjdXJzb3IsIFBhc3NSZWZQ
dHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUpCiB7CiAgICAgQVNTRVJUKG1fcmVhZHlTdGF0ZSA9
PSBQRU5ESU5HKTsKICAgICBtX2N1cnNvcktleSA9IGtleTsKQEAgLTI4Miw3ICsyODIsNyBAQCB2
b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElECiAgICAgICAgIHJldHVybjsK
IAogICAgIERPTVJlcXVlc3RTdGF0ZTo6U2NvcGUgc2NvcGUobV9yZXF1ZXN0U3RhdGUpOwotICAg
IFNjcmlwdFZhbHVlIHZhbHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihyZXF1ZXN0U3Rh
dGUoKSwgYnVmZmVyKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB2YWx1ZSA9IGRlc2Vy
aWFsaXplSURCVmFsdWVCdWZmZXIocmVxdWVzdFN0YXRlKCksIGJ1ZmZlcik7CiAgICAgQVNTRVJU
KCFtX3BlbmRpbmdDdXJzb3IpOwogICAgIFJlZlB0cjxJREJDdXJzb3I+IGN1cnNvcjsKICAgICBz
d2l0Y2ggKG1fY3Vyc29yVHlwZSkgewpAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgSURCUmVxdWVz
dDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8U2gKICAgICAgICAgcmV0dXJuOwogCiAgICAgRE9NUmVx
dWVzdFN0YXRlOjpTY29wZSBzY29wZShtX3JlcXVlc3RTdGF0ZSk7Ci0gICAgU2NyaXB0VmFsdWUg
dmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKHJlcXVlc3RTdGF0ZSgpLCB2YWx1ZUJ1
ZmZlcik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZUlE
QlZhbHVlQnVmZmVyKHJlcXVlc3RTdGF0ZSgpLCB2YWx1ZUJ1ZmZlcik7CiAgICAgb25TdWNjZXNz
SW50ZXJuYWwodmFsdWUpOwogfQogCkBAIC0zNDgsNyArMzQ4LDcgQEAgdm9pZCBJREJSZXF1ZXN0
OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTaAogICAgIEFTU0VSVChrZXlQYXRoID09IGVmZmVjdGl2
ZU9iamVjdFN0b3JlKG1fc291cmNlKS0+a2V5UGF0aCgpKTsKICNlbmRpZgogICAgIERPTVJlcXVl
c3RTdGF0ZTo6U2NvcGUgc2NvcGUobV9yZXF1ZXN0U3RhdGUpOwotICAgIFNjcmlwdFZhbHVlIHZh
bHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihyZXF1ZXN0U3RhdGUoKSwgdmFsdWVCdWZm
ZXIpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHZhbHVlID0gZGVzZXJpYWxpemVJREJW
YWx1ZUJ1ZmZlcihyZXF1ZXN0U3RhdGUoKSwgdmFsdWVCdWZmZXIpOwogCiAgICAgUmVmUHRyPElE
QktleT4gcHJpbWFyeUtleSA9IHBycFByaW1hcnlLZXk7CiAjaWZuZGVmIE5ERUJVRwpAQCAtMzgz
LDcgKzM4Myw3IEBAIHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzSW50ZXJuYWwoUGFzc1IKICAg
ICByZXR1cm4gb25TdWNjZXNzSW50ZXJuYWwoZGVzZXJpYWxpemVJREJWYWx1ZShyZXF1ZXN0U3Rh
dGUoKSwgdmFsdWUpKTsKIH0KIAotdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3NJbnRlcm5hbChj
b25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUpCit2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2Vzc0ludGVy
bmFsKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSkKIHsKICAgICBtX3Jlc3Vs
dCA9IElEQkFueTo6Y3JlYXRlKHZhbHVlKTsKICAgICBpZiAobV9wZW5kaW5nQ3Vyc29yKSB7CkBA
IC00MDAsNyArNDAwLDcgQEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJ
RAogICAgICAgICByZXR1cm47CiAKICAgICBET01SZXF1ZXN0U3RhdGU6OlNjb3BlIHNjb3BlKG1f
cmVxdWVzdFN0YXRlKTsKLSAgICBTY3JpcHRWYWx1ZSB2YWx1ZSA9IGRlc2VyaWFsaXplSURCVmFs
dWVCdWZmZXIocmVxdWVzdFN0YXRlKCksIGJ1ZmZlcik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKHJlcXVlc3RTdGF0ZSgpLCBi
dWZmZXIpOwogICAgIEFTU0VSVChtX3BlbmRpbmdDdXJzb3IpOwogICAgIHNldFJlc3VsdEN1cnNv
cihtX3BlbmRpbmdDdXJzb3IucmVsZWFzZSgpLCBrZXksIHByaW1hcnlLZXksIHZhbHVlKTsKICAg
ICBlbnF1ZXVlRXZlbnQoY3JlYXRlU3VjY2Vzc0V2ZW50KCkpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAkocmV2aXNpb24gMTYwNDA0KQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjAsNyArMTIwLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZW5xdWV1ZUV2
ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW5xdWV1ZUV2
ZW50KCkgY29uc3Q7CiAgICAgdm9pZCBvblN1Y2Nlc3NJbnRlcm5hbChQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4pOwotICAgIHZvaWQgb25TdWNjZXNzSW50ZXJuYWwoY29uc3QgU2Ny
aXB0VmFsdWUmKTsKKyAgICB2b2lkIG9uU3VjY2Vzc0ludGVybmFsKGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJik7CiAKICAgICBSZWZQdHI8SURCQW55PiBtX3Jlc3VsdDsKICAgICB1bnNp
Z25lZCBzaG9ydCBtX2Vycm9yQ29kZTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklOQUwgeyBkZXJlZigp
OyB9CiAKICAgICBQYXNzUmVmUHRyPElEQkN1cnNvcj4gZ2V0UmVzdWx0Q3Vyc29yKCk7Ci0gICAg
dm9pZCBzZXRSZXN1bHRDdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3I+LCBQYXNzUmVmUHRyPElE
QktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBjb25zdCBTY3JpcHRWYWx1ZSYp
OworICAgIHZvaWQgc2V0UmVzdWx0Q3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yPiwgUGFzc1Jl
ZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmKTsKIAogICAgIFJlZlB0cjxJREJBbnk+IG1fc291cmNlOwogICAg
IGNvbnN0IElEQkRhdGFiYXNlQmFja2VuZDo6VGFza1R5cGUgbV90YXNrVHlwZTsKQEAgLTE1NSw3
ICsxNTUsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJREJDdXJzb3I+IG1fcGVuZGluZ0N1cnNv
cjsKICAgICBSZWZQdHI8SURCS2V5PiBtX2N1cnNvcktleTsKICAgICBSZWZQdHI8SURCS2V5PiBt
X2N1cnNvclByaW1hcnlLZXk7Ci0gICAgU2NyaXB0VmFsdWUgbV9jdXJzb3JWYWx1ZTsKKyAgICBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBtX2N1cnNvclZhbHVlOwogICAgIGJvb2wgbV9kaWRGaXJl
VXBncmFkZU5lZWRlZEV2ZW50OwogICAgIGJvb2wgbV9wcmV2ZW50UHJvcGFnYXRpb247CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFi
aWxpdHlSYW5nZS5jcHAJKHJldmlzaW9uIDE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIs
NyArMzIsNyBAQAogCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFT
b3VyY2VTdGF0ZXMuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPGJpbmRp
bmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg+CiAj
aW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAKQEAgLTUwLDcgKzUwLDcgQEAgQ2FwYWJp
bGl0eVJhbmdlOjpDYXBhYmlsaXR5UmFuZ2UoY29uc3QgTQogewogfQogCi1zdGF0aWMgU2NyaXB0
VmFsdWUgc2NyaXB0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJj
ZUNhcGFiaWxpdHlSYW5nZTo6VmFsdWVVbmlvbiYgdmFsdWUsIE1lZGlhU3RyZWFtU291cmNlQ2Fw
YWJpbGl0eVJhbmdlOjpUeXBlIHR5cGUpCitzdGF0aWMgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUg
c2NyaXB0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFi
aWxpdHlSYW5nZTo6VmFsdWVVbmlvbiYgdmFsdWUsIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0
eVJhbmdlOjpUeXBlIHR5cGUpCiB7CiAgICAgLy8gTk9URTogdGhlIHNwZWMgc2F5czoKICAgICAv
LyAgICAgIC4uLiBhbiBpbXBsZW1lbnRhdGlvbiBzaG91bGQgbWFrZSBhIHJlYXNvbmFibGUgYXR0
ZW1wdCB0byB0cmFuc2xhdGUgYW5kIHNjYWxlIHRoZSBoYXJkd2FyZSdzIHNldHRpbmcKQEAgLTYz
LDI2ICs2MywyNiBAQCBzdGF0aWMgU2NyaXB0VmFsdWUgc2NyaXB0VmFsdWUoRXhlY1N0YXRlCiAg
ICAgCiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZUNhcGFi
aWxpdHlSYW5nZTo6RmxvYXQ6Ci0gICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZShleGVjLT52bSgp
LCBKU1ZhbHVlKHZhbHVlLmFzRmxvYXQpKTsKKyAgICAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlKGV4ZWMtPnZtKCksIEpTVmFsdWUodmFsdWUuYXNGbG9hdCkpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlOjpVTG9uZzoK
LSAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIEpTVmFsdWUodmFsdWUuYXNV
TG9uZykpOworICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoZXhlYy0+dm0o
KSwgSlNWYWx1ZSh2YWx1ZS5hc1VMb25nKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVk
aWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2U6OlVuZGVmaW5lZDoKLSAgICAgICAgcmV0dXJu
IFNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIGpzVW5kZWZpbmVkKCkpOworICAgICAgICByZXR1cm4g
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwganNVbmRlZmluZWQoKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICByZXR1cm4gRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwganNVbmRlZmluZWQoKSk7CiB9CiAKLVNj
cmlwdFZhbHVlIENhcGFiaWxpdHlSYW5nZTo6bWluKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK0Rl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIENhcGFiaWxpdHlSYW5nZTo6bWluKEV4ZWNTdGF0ZSogZXhl
YykgY29uc3QKIHsKICAgICByZXR1cm4gc2NyaXB0VmFsdWUoZXhlYywgbV9yYW5nZUluZm8ubWlu
KCksIG1fcmFuZ2VJbmZvLnR5cGUoKSk7CiB9CiAKLVNjcmlwdFZhbHVlIENhcGFiaWxpdHlSYW5n
ZTo6bWF4KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIENh
cGFiaWxpdHlSYW5nZTo6bWF4KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKICAgICByZXR1cm4g
c2NyaXB0VmFsdWUoZXhlYywgbV9yYW5nZUluZm8ubWF4KCksIG1fcmFuZ2VJbmZvLnR5cGUoKSk7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlS
YW5nZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
Q2FwYWJpbGl0eVJhbmdlLmgJKHJldmlzaW9uIDE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDggKzMwLDggQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSAiTWVkaWFT
dHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVl
Lmg+CiAjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KIApAQCAtNDMsOCArNDMsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVm
UHRyPENhcGFiaWxpdHlSYW5nZT4gY3JlYXRlKGNvbnN0IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJp
bGl0eVJhbmdlJik7CiAKLSAgICBTY3JpcHRWYWx1ZSBtaW4oSlNDOjpFeGVjU3RhdGUqKSBjb25z
dDsKLSAgICBTY3JpcHRWYWx1ZSBtYXgoSlNDOjpFeGVjU3RhdGUqKSBjb25zdDsKKyAgICBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSBtaW4oSlNDOjpFeGVjU3RhdGUqKSBjb25zdDsKKyAgICBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSBtYXgoSlNDOjpFeGVjU3RhdGUqKSBjb25zdDsKICAgICBib29s
IHN1cHBvcnRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2VJbmZvLnN1cHBvcnRlZCgpOyB9CiAK
IHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
VHJhY2tDb25zdHJhaW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5oCShyZXZpc2lvbiAxNjA0MDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDkgKzMzLDExIEBACiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBh
YmxlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCituYW1lc3BhY2UgRGVwcmVjYXRlZCB7CiBjbGFzcyBTY3JpcHRWYWx1ZTsKK30KKworbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVRyYWNrQ29uc3RyYWludCA6IHB1YmxpYyBS
ZWZDb3VudGVkPE1lZGlhVHJhY2tDb25zdHJhaW50PiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7
CiBwdWJsaWM6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0lj
ZUNhbmRpZGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuY3BwCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDcgKzM3LDYgQEAKIAogI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKICNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5j
bHVkZSAiUlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVw
bGFjZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lu
cy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAJKHJldmlzaW9uIDE2MDQwNCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDYgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIK
LSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgi
CiAjaW5jbHVkZSAiVXNlckFnZW50U2NyaXB0cy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0FQSUNhc3QuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1Rp
bWVQbHVnaW5SZXBsYWNlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oCShyZXZpc2lvbiAxNjA0MDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiUGx1
Z2luUmVwbGFjZW1lbnQuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgotI2luY2x1ZGUgIlNj
cmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0T2JqZWN0Lmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
CShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03NDIsNyArNzQyLDcgQEAKICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJj
aGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xIVE1MTmFtZXMuY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVycy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yRnJvbnRlbmQuY3BwIiAvPgotICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvclR5cGVC
dWlsZGVyLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVk
U291cmNlc1xJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcSlNBYnN0cmFjdFdvcmtlci5jcHAiPgogICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtMTcyODgsMjEgKzE3Mjg4
LDcgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5n
c1xqc1xTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIj4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9F
eGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCci
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMici
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdE9iamVjdC5jcHAiIC8+CisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRHbG9iYWxPYmplY3QuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0UHJvZmlsZS5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRQcm9maWxl
ci5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KQEAgLTE3MzMyLDcgKzE3MzE4LDYgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzIn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRWYWx1ZS5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIj4K
ICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE3NjQ1LDE0
ICsxNzYzMCw2IEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
aW5zcGVjdG9yXEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwIj4KLSAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNh
aXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
X1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJv
ZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJv
ZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICA8L0NsQ29tcGlsZT4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JBbGxJbk9uZS5j
cHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
ICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtMTc2
NjksMTQgKzE3NjQ2LDYgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9F
eGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIj4KLSAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICA8L0Ns
Q29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JD
YW52YXNBZ2VudC5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KQEAgLTE3OTE3LDE0ICsxNzg4Niw2IEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9u
fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9u
fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvclZhbHVlcy5jcHAiPgotICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0g
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0g
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAg
IDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3Bl
Y3RvcldvcmtlckFnZW50LmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgpAQCAtMTgxMTcsNyArMTgwNzgsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
cy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEluc3BlY3RvckZyb250ZW5kLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yT3ZlcmxheVBhZ2UuaCIgLz4KLSAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0
ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JUeXBlQnVpbGRl
ci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXFdlYkNv
cmVcRGVyaXZlZFNvdXJjZXNcSlNBYnN0cmFjdFdvcmtlci5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQXR0ci5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQmFyUHJvcC5oIiAvPgpA
QCAtMTg1ODcsMTEgKzE4NTQ4LDIwIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcV2ViQ29yZVxEZXJp
dmVkU291cmNlc1xKU1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGFjY2Vzc2liaWxpdHlcQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNzc1xDU1NJbWFnZVNldFZhbHVlLmgiIC8+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5nc1xT
Y3JpcHRGdW5jdGlvbkNhbGwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndh
cmRpbmdIZWFkZXJzXGJpbmRpbmdzXFNjcmlwdE9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3NcU2NyaXB0VmFsdWUuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGhlYXBcQWxsb2Nh
dGlvblNwYWNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVh
ZGVyc1xoZWFwXEhlYXAuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRp
bmdIZWFkZXJzXGhlYXBcU2xvdFZpc2l0b3IuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGhlYXBcU3Ryb25nSW5saW5lcy5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaGVhcFxXZWFrLmgiIC8+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVj
dG9yQWdlbnRCYXNlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5n
SGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIiAvPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJk
aW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiIC8+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVj
dG9yVHlwZUJ1aWxkZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRp
bmdIZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JWYWx1ZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXG1hc21cWDg2QXNzZW1ibGVyLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xwYXJzZXJcU291cmNl
Q29kZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNc
cGFyc2VyXFNvdXJjZVByb3ZpZGVyLmgiIC8+CkBAIC0yMDY0MiwxNSArMjA2MTIsMTMgQEAKICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdENhbGxTdGFja0ZhY3Rv
cnkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdENv
bnRyb2xsZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNj
cmlwdERlYnVnU2VydmVyLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5n
c1xqc1xTY3JpcHRGdW5jdGlvbkNhbGwuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGJpbmRpbmdzXGpzXFNjcmlwdEhlYXBTbmFwc2hvdC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0T2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRHbG9iYWxPYmplY3QuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdFByb2ZpbGUuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdFByb2ZpbGVOb2RlLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRQcm9maWxlci5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0U291cmNl
Q29kZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0
U3RhdGUuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlw
dFZhbHVlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3Jp
cHRXcmFwcGFibGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpz
XFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
YmluZGluZ3NcanNcU291cmNlSUQuaCIgLz4KQEAgLTIwOTYxLDggKzIwOTI5LDYgQEAKICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbmplY3RlZFNjcmlwdE1vZHVsZS5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckFnZW50Lmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0
b3JcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JCYXNlQWdlbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JDYW52YXNBZ2VudC5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckNhbnZhc0luc3RydW1lbnRh
dGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3Rv
ckNsaWVudC5oIiAvPgpAQCAtMjA5OTgsNyArMjA5NjQsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvclN0eWxlU2hlZXQuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JUaW1lbGluZUFn
ZW50LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9y
VmFsdWVzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVj
dG9yV2ViQWdlbnRCYXNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0
b3JcSW5zcGVjdG9yV29ya2VyQWdlbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGluc3BlY3RvclxJbnNwZWN0b3JXb3JrZXJSZXNvdXJjZS5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3RydW1lbnRpbmdBZ2VudHMuaCIgLz4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
LmZpbHRlcnMJKHJldmlzaW9uIDE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtMjUzLDYgKzI1
Myw5IEBACiAgICAgPEZpbHRlciBJbmNsdWRlPSJGb3J3YXJkaW5nSGVhZGVycyI+CiAgICAgICA8
VW5pcXVlSWRlbnRpZmllcj57OTUyMTZhNzAtYTNiMi00NTNjLWE2NmYtYTgxY2MxYWJlZmVlfTwv
VW5pcXVlSWRlbnRpZmllcj4KICAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkZv
cndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnsyMTM0
MzEyNC0xMjM0LTQ1NDItYThhYS1lYmFjODc4MTIzMTJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAg
IDwvRmlsdGVyPgogICAgIDxGaWx0ZXIgSW5jbHVkZT0iRm9yd2FyZGluZ0hlYWRlcnNceWFyciI+
CiAgICAgICA8VW5pcXVlSWRlbnRpZmllcj57M2I5YjE4MTktMWIzMS00NzcxLWIxMmEtMzJjMjEw
Zjg0NzZkfTwvVW5pcXVlSWRlbnRpZmllcj4KICAgICA8L0ZpbHRlcj4KQEAgLTQ1NjksMTAgKzQ1
NzIsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4KICAgICA8
L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlw
dEZ1bmN0aW9uQ2FsbC5jcHAiPgotICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgot
ICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNc
U2NyaXB0T2JqZWN0LmNwcCI+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xq
c1xTY3JpcHRHbG9iYWxPYmplY3QuY3BwIj4KICAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0Zp
bHRlcj4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRp
bmdzXGpzXFNjcmlwdFByb2ZpbGUuY3BwIj4KQEAgLTQ1ODQsOSArNDU4NCw2IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRTdGF0ZS5jcHAiPgogICAgICAg
PEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0VmFsdWUuY3BwIj4KLSAgICAgIDxG
aWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAiPgog
ICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAt
NDgzMCwxOCArNDgyNywxMiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9y
XEluc3BlY3RvckFnZW50LmNwcCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgog
ICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXElu
c3BlY3RvckFnZW50UmVnaXN0cnkuY3BwIj4KLSAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0
ZXI+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0
b3JcSW5zcGVjdG9yQWxsSW5PbmUuY3BwIj4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0
ZXI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0
b3JcSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCI+CiAgICAgICA8RmlsdGVyPmlu
c3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCI+Ci0gICAgICA8
RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckNhbnZhc0FnZW50LmNwcCI+CiAgICAg
ICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNDkzMiw5
ICs0OTIzLDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0
b3JUaW1lbGluZUFnZW50LmNwcCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgog
ICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXElu
c3BlY3RvclZhbHVlcy5jcHAiPgotICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KLSAg
ICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNw
ZWN0b3JXb3JrZXJBZ2VudC5jcHAiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4K
ICAgICA8L0NsQ29tcGlsZT4KQEAgLTUyOTMsNyArNTI4MSw3IEBACiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVy
ZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yRnJvbnRlbmQuY3BwIj4K
ICAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4K
LSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBs
YXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0
b3JUeXBlQnVpbGRlci5jcHAiPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5jcHAiPgogICAgICAgPEZpbHRl
cj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcSlNBYnN0cmFjdFdvcmtlci5jcHAiPgpAQCAt
MTE1MTcsMTMgKzExNTA1LDEwIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5n
c1xqc1xTY3JpcHREZWJ1Z1NlcnZlci5oIj4KICAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0Zp
bHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRp
bmdzXGpzXFNjcmlwdEZ1bmN0aW9uQ2FsbC5oIj4KLSAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8
L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJp
bmRpbmdzXGpzXFNjcmlwdEhlYXBTbmFwc2hvdC5oIj4KICAgICAgIDxGaWx0ZXI+YmluZGluZ3Nc
anM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGJpbmRpbmdzXGpzXFNjcmlwdE9iamVjdC5oIj4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGJpbmRpbmdzXGpzXFNjcmlwdEdsb2JhbE9iamVjdC5oIj4KICAgICAgIDxGaWx0ZXI+YmluZGlu
Z3NcanM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdFByb2ZpbGUuaCI+CkBAIC0xMTU0MSw5ICsxMTUyNiw2IEBA
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xTY3JpcHRTdGF0ZS5oIj4K
ICAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXFNjcmlwdFZhbHVlLmgiPgotICAg
ICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcU2NyaXB0V3JhcHBhYmxlLmgiPgogICAg
ICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMTIy
MDEsNiArMTIxODMsMTUgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHN2Z1xwcm9wZXJ0
aWVzXFNWR1RyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaCI+CiAgICAgICA8RmlsdGVyPnJl
bmRlcmluZ1xzdmdccHJvcGVydGllczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3NcU2NyaXB0RnVu
Y3Rpb25DYWxsLmgiPgorICAgICAgPEZpbHRlcj5Gb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5nczwv
RmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9y
d2FyZGluZ0hlYWRlcnNcYmluZGluZ3NcU2NyaXB0T2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5G
b3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5nczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3NcU2NyaXB0
VmFsdWUuaCI+CisgICAgICA8RmlsdGVyPkZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzPC9GaWx0
ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJk
aW5nSGVhZGVyc1xydW50aW1lXEFyZ0xpc3QuaCI+CiAgICAgICA8RmlsdGVyPkZvcndhcmRpbmdI
ZWFkZXJzXHJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTEyMjQ2LDkgKzEy
MjM3LDI0IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xo
ZWFwXFN0cm9uZy5oIj4KICAgICAgIDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRlcnNcaGVhcDwvRmls
dGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2Fy
ZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvckFnZW50QmFzZS5oIj4KKyAgICAgIDxGaWx0
ZXI+Rm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3Jc
SW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIj4KKyAgICAgIDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRl
cnNcaW5zcGVjdG9yPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIuaCI+CisgICAgICA8RmlsdGVyPkZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3Rvcjwv
RmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9y
d2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIj4KICAg
ICAgIDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9D
bEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xp
bnNwZWN0b3JcSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCI+CisgICAgICA8RmlsdGVyPkZvcndhcmRp
bmdIZWFkZXJzXGluc3BlY3RvcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvclZh
bHVlcy5oIj4KKyAgICAgIDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yPC9GaWx0
ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoaXN0b3J5
XEJhY2tGb3J3YXJkQ2xpZW50LmgiPgogICAgICAgPEZpbHRlcj5oaXN0b3J5PC9GaWx0ZXI+CiAg
ICAgPC9DbEluY2x1ZGU+CkBAIC0xMjQwMiwxMiArMTI0MDgsNiBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oIj4K
ICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIuaCI+Ci0gICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRl
PgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckJhc2VBZ2Vu
dC5oIj4KLSAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQ2FudmFzQWdl
bnQuaCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRl
PgpAQCAtMTI1MTMsNyArMTI1MTMsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5z
cGVjdG9yXEluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3Rv
cjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aW5zcGVjdG9yXEluc3BlY3RvclZhbHVlcy5oIj4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGluc3BlY3RvclxJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCI+CiAgICAgICA8RmlsdGVyPmluc3Bl
Y3RvcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caW5zcGVjdG9yXEluc3BlY3RvcldvcmtlckFnZW50LmgiPgpAQCAtMTMwNzksNyArMTMwNzks
NyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9i
aiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXElu
c3BlY3Rvck92ZXJsYXlQYWdlLmgiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmls
dGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEluc3BlY3RvclR5cGVCdWlsZGVyLmgiPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvcldlYlR5cGVCdWlsZGVy
cy5oIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5j
bHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVxXZWJDb3JlXERlcml2ZWRTb3VyY2VzXEpTQWJzdHJh
Y3RXb3JrZXIuaCI+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEyMjUs
OCArMTIyNSw2IEBACiAJCTQwOUVCREM1MTZCN0YzQ0EwMENCQTNGQyAvKiBKU0NTU0ZvbnRGYWNl
TG9hZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQwOUVCREM0MTZCN0YzQ0EwMENCQTNGQyAvKiBKU0NTU0ZvbnRGYWNlTG9hZEV2ZW50LmNw
cCAqLzsgfTsKIAkJNDBFQ0FFN0UxNkI4QjY3MjAwQzM2MTAzIC8qIEpTRE9NRXJyb3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwRUNBRTdEMTZCOEI2
NzIwMEMzNjEwMyAvKiBKU0RPTUVycm9yLmggKi87IH07CiAJCTQwRUNBRTgxMTZCOEI2OEEwMEMz
NjEwMyAvKiBKU0RPTUVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQwRUNBRTgwMTZCOEI2OEEwMEMzNjEwMyAvKiBKU0RPTUVycm9yLmNwcCAq
LzsgfTsKLQkJNDEwMDJDQ0QwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwMDJDQ0Iw
RjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oICovOyB9OwotCQk0MTAwMkND
RTBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDAyQ0NDMEY2NkVERUYwMDlFNjYw
RCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwICovOyB9OwogCQk0MTBCN0U3MjEwNDVGQUIwMDBE
ODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwQjdFNzExMDQ1RkFCMDAwRDgyMjRGIC8qIEpTTWVz
c2FnZUV2ZW50Q3VzdG9tLmNwcCAqLzsgfTsKIAkJNDEyMzA4MUIxMzhDNDI5NzAwQkNDRkNBIC8q
IFdlYkNvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTNGMTlCMUEwODI0NUU1QTAwMUU5QUJDIC8qIFdlYkNvcmUuZnJhbWV3b3Jr
ICovOyB9OwogCQk0MTIzMDkxMzEzOEM0MkZGMDBCQ0NGQ0EgLyogSmF2YVNjcmlwdENvcmUuZnJh
bWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjgyMTYyOTkwMjlGNEZCNTAxMDAwMTMxIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLzsg
fTsKQEAgLTEyOTUsOCArMTI5Myw4IEBACiAJCTQxRjA2MThGMEY1RjA2OTgwMEEwN0VBQyAvKiBD
b25zb2xlTWVzc2FnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MUYwNjE4RDBGNUYwNjk4MDBBMDdFQUMgLyogQ29uc29sZU1lc3NhZ2UuY3BwICov
OyB9OwogCQk0MUYwNjIxNDBGNUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNv
dXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFG
MDYyMTIwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCAqLzsg
fTsKIAkJNDFGMDYyMTUwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3Vy
Y2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFG
MDYyMTMwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwICov
OyB9OwotCQk0MUYwNjZFNDBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0T2JqZWN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjZFMjBGNjRCQ0Y2
MDBBMDdFQUMgLyogU2NyaXB0T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDFGMDY2RTUwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdE9i
amVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MUYwNjZFMzBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0T2JqZWN0LmNwcCAqLzsgfTsKKwkJNDFG
MDY2RTQwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdEdsb2JhbE9iamVjdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGMDY2RTIwRjY0QkNGNjAwQTA3
RUFDIC8qIFNjcmlwdEdsb2JhbE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTQxRjA2NkU1MEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRH
bG9iYWxPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDFGMDY2RTMwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdEdsb2JhbE9iamVjdC5jcHAg
Ki87IH07CiAJCTQxRjFEMjFGMEVGMzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURh
dGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjFE
MjFEMEVGMzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURhdGEuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUYxRDIyMDBFRjM1QzJB
MDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjFEMjFFMEVGMzVDMkEwMERBODc1MyAvKiBT
Y3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwICovOyB9OwogCQk0MUY1ODRDNzEwNDY1MkNCMDA5Q0FB
NjQgLyogSlNNZXNzYWdlUG9ydEN1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFGNTg0QzYxMDQ2NTJDQjAwOUNBQTY0IC8qIEpTTWVzc2FnZVBv
cnRDdXN0b20uaCAqLzsgfTsKQEAgLTE2MDksOCArMTYwNyw2IEBACiAJCTRGMTUzNEUwMTFCNTMz
MDIwMDIxRkQ4NiAvKiBFZGl0aW5nQmVoYXZpb3JUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYxNTM0REYxMUI1MzMwMjAwMjFGRDg2IC8qIEVk
aXRpbmdCZWhhdmlvclR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNEYyRDIwNTQxMkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3RvckFnZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjJEMjA1
MjEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0RjJEMjA1NTEyRUFFN0IzMDA1QzI4NzQg
LyogSW5zcGVjdG9yQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEYyRDIwNTMxMkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3RvckFnZW50LmNw
cCAqLzsgfTsKLQkJNEYzMjg5QjUxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjMyODlC
MzExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCAqLzsgfTsKLQkJNEYzMjg5
QjYxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYzMjg5QjQxMUE0MkFBQjAwNUFCRTdFIC8q
IEluc3BlY3RvclZhbHVlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTRGNEY1RkZCMTFDQkQyRTEwMEExODZCRiAvKiBJbnNwZWN0b3JGcm9udGVu
ZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjRG
NUZGQTExQ0JEMkQyMDBBMTg2QkYgLyogSW5zcGVjdG9yRnJvbnRlbmQuY3BwICovOyB9OwogCQk0
RjZGREQ2NDEzNDFERUREMDAxRjhFRTMgLyogSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNkZERDYyMTM0MURFREQw
MDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuY3BwICovOyB9OwogCQk0RjZGREQ2NTEzNDFE
RUREMDAxRjhFRTMgLyogSW5zcGVjdG9yUGFnZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjZGREQ2MzEzNDFERUREMDAxRjhFRTMgLyogSW5z
cGVjdG9yUGFnZUFnZW50LmggKi87IH07CkBAIC0xODk3LDkgKzE4OTMsOSBAQAogCQk1M0VGNzY2
QzE2NTMxOTk0MDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCBpbiBDb3B5IEdlbmVyYXRlZCBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRUY3NjZBMTY1MzBB
NjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oICovOyB9OwogCQk1NTBBMEJDOTA4NUY2MDM5
MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVk
TmFtZS5jcHAgKi87IH07CiAJCTU1MEEwQkNBMDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWRO
YW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBB
MEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTU3M0QxMzQ3MTRDRTM5RkYwMDU3QUJD
QSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NzNEMTM0NTE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9y
VHlwZUJ1aWxkZXIuY3BwICovOyB9OworCQk1NzNEMTM0NzE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5z
cGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU3M0QxMzQ1MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JXZWJU
eXBlQnVpbGRlcnMuY3BwICovOyB9OwogCQk1NzhEQTIwRTE1MjBFQjhDMDA2MTQxQzEgLyogSW5z
cGVjdG9yRnJvbnRlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDRGNEY1RkZDMTFDQkQzMDEwMEExODZCRiAvKiBJbnNwZWN0b3JGcm9udGVuZC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTU3OERBMjBG
MTUyMEVCQTMwMDYxNDFDMSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczRDEzNDYxNENFMzlGRjAwNTdBQkNB
IC8qIEluc3BlY3RvclR5cGVCdWlsZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTc4REEyMEYxNTIwRUJBMzAwNjE0MUMxIC8qIEluc3BlY3Rv
cldlYlR5cGVCdWlsZGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTczRDEzNDYxNENFMzlGRjAwNTdBQkNBIC8qIEluc3BlY3RvcldlYlR5cGVCdWls
ZGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTU3Qjc5MUEzMTRDNkE2MjkwMEYyMDJEMSAvKiBDb250ZW50RGlzdHJpYnV0b3IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCNzkxOUYxNEM2QTYy
OTAwRjIwMkQxIC8qIENvbnRlbnREaXN0cmlidXRvci5jcHAgKi87IH07CiAJCTU3Qjc5MUE0MTRD
NkE2MjkwMEYyMDJEMSAvKiBDb250ZW50RGlzdHJpYnV0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3Qjc5MUEwMTRDNkE2MjkwMEYyMDJEMSAvKiBD
b250ZW50RGlzdHJpYnV0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1N0NGNDk3NDE0RUUzNkQ3MDBFQ0ZGMTQgLyogSW5zZXJ0aW9uUG9pbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdDRjQ5
NzIxNEVFMzZENzAwRUNGRjE0IC8qIEluc2VydGlvblBvaW50LmNwcCAqLzsgfTsKQEAgLTIyMDEs
NyArMjE5Nyw2IEBACiAJCTdBNzRFQ0JCMTAxODM5QTYwMEJGOTM5RSAvKiBJbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdBNzRFQ0I5MTAxODM5QTYwMEJGOTM5RSAvKiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQu
aCAqLzsgfTsKIAkJN0E3NEVDQkQxMDE4MzlEQTAwQkY5MzlFIC8qIEpTSW5zcGVjdG9yRnJvbnRl
bmRIb3N0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdBNzRFQ0JDMTAxODM5REEwMEJGOTM5RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9z
dEN1c3RvbS5jcHAgKi87IH07CiAJCTdBQTM2NUVFMTJFNzI2NTQwMERDQTI0MiAvKiBJbnNwZWN0
b3JSdW50aW1lQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0FBMzY1RUQxMkU3MjY1NDAwRENBMjQyIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2Vu
dC5jcHAgKi87IH07Ci0JCTdBQTUxQjZFMTQ4M0I2MTYwMEFEMjc1MiAvKiBJbnNwZWN0b3JCYXNl
QWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdB
QTUxQjZDMTQ4M0I2MTYwMEFEMjc1MiAvKiBJbnNwZWN0b3JCYXNlQWdlbnQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QUE1MURENTE0ODUwNkE5
MDBBRDI3NTIgLyogSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FBNTFERDMxNDg1MDZBOTAwQUQyNzUyIC8qIElu
c3BlY3Rvck1lbW9yeUFnZW50LmNwcCAqLzsgfTsKIAkJN0FBNTFERDYxNDg1MDZBOTAwQUQyNzUy
IC8qIEluc3BlY3Rvck1lbW9yeUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QUE1MURENDE0ODUwNkE5MDBBRDI3NTIgLyogSW5zcGVjdG9yTWVt
b3J5QWdlbnQuaCAqLzsgfTsKIAkJN0FBQkEyNTkxNEJDNjEzMzAwQUE5QTExIC8qIERPTUVkaXRv
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUFC
QTI1NzE0QkM2MTMzMDBBQTlBMTEgLyogRE9NRWRpdG9yLmNwcCAqLzsgfTsKQEAgLTMwMjEsOCAr
MzAxNiw2IEBACiAJCTkzNDQyQzlFMEQyQjMzNUMwMDMzOEZGOSAvKiBIVE1MVGFibGVSb3dzQ29s
bGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTM0NDJDOUQwRDJCMzM1QzAwMzM4RkY5IC8qIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmggKi87
IH07CiAJCTkzNDQyQ0EwMEQyQjMzNjAwMDMzOEZGOSAvKiBIVE1MVGFibGVSb3dzQ29sbGVjdGlv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzQ0
MkM5RjBEMkIzMzYwMDAzMzhGRjkgLyogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwICovOyB9
OwogCQk5MzQ5MDdFNDEyNUJCQkM4MDA3RjIzQTAgLyogR3JhcGhpY3NDb250ZXh0Q0cuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNDkwN0UzMTI1QkJC
QzgwMDdGMjNBMCAvKiBHcmFwaGljc0NvbnRleHRDRy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTkzNENDMEUxMEVEMzlENkYwMEE2NThGMiAvKiBT
Y3JpcHRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5MzRDQzBERjBFRDM5RDZGMDBBNjU4RjIgLyogU2NyaXB0VmFsdWUuY3BwICovOyB9Owot
CQk5MzRDQzBFMjBFRDM5RDZGMDBBNjU4RjIgLyogU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNENDMEUwMEVEMzlENkYwMEE2NThG
MiAvKiBTY3JpcHRWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTkzNENDMTBBMEVEQjIyMzkwMEE2NThGMiAvKiBTY3JpcHRTb3VyY2VDb2Rl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzRDQzEw
OTBFREIyMjM5MDBBNjU4RjIgLyogU2NyaXB0U291cmNlQ29kZS5oICovOyB9OwogCQk5MzREOUJB
NTBCOEMxMTZCMDA3QjQyQTkgLyogV2ViQ29yZU5TU3RyaW5nRXh0cmFzLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0RDlCQTQwQjhDMTE2QjAwN0I0
MkE5IC8qIFdlYkNvcmVOU1N0cmluZ0V4dHJhcy5tbSAqLzsgfTsKIAkJOTM0RDlCQTcwQjhDMTE3
NTAwN0I0MkE5IC8qIFdlYkNvcmVOU1N0cmluZ0V4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0RDlCQTYwQjhDMTE3NTAwN0I0MkE5IC8qIFdl
YkNvcmVOU1N0cmluZ0V4dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0zNTI0LDE1ICszNTE3LDEyIEBACiAJCUE1MTNCM0Q4MTE0QjE2NkEw
MDFDNDI5QiAvKiBLZXlFdmVudENvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTVDOTc0RDAxMTQ4NUZGMTAwNjZGMkFCIC8qIEtleUV2ZW50Q29j
b2EubW0gKi87IH07CiAJCUE1NEE4MkVDMTUyMjhEMkYwMEM3MkJBNiAvKiBET01Ob2RlUHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU0QTgy
RUExNTIyOENBMzAwQzcyQkE2IC8qIERPTU5vZGVQcml2YXRlLmggKi87IH07CiAJCUE1NEE4MkYx
MTUyMjhERjYwMEM3MkJBNiAvKiBET01Ob2RlUHJpdmF0ZS5oIGluIENvcHkgR2VuZXJhdGVkIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU0QTgyRUExNTIyOENB
MzAwQzcyQkE2IC8qIERPTU5vZGVQcml2YXRlLmggKi87IH07Ci0JCUE1NTZDMjg4MTgzMjA2QTgw
MDhDQjcyMCAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NTZDMjg2MTgzMjA2QTgwMDhDQjcyMCAvKiBJ
bnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcCAqLzsgfTsKLQkJQTU1NkMyODkxODMyMDZBODAwOENC
NzIwIC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NTZDMjg3MTgzMjA2QTgwMDhDQjcyMCAvKiBJbnNwZWN0
b3JBZ2VudFJlZ2lzdHJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQTU3MzJCMEExMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NzMyQjA4
MTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5jcHAgKi87IH07CiAJCUE1NzMyQjBC
MTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3MzJCMDkxMzZBMTYxRDAwNUM4RDdDIC8qIERh
dGVDb21wb25lbnRzLmggKi87IH07CisJCUE1OTNDRjhCMTg0MDUzNTIwMEJGQ0UyNyAvKiBJbnNw
ZWN0b3JXZWJBZ2VudEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1OTNDRjhBMTg0MDUzNTIwMEJGQ0UyNyAvKiBJbnNwZWN0b3JXZWJBZ2VudEJh
c2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlB
NUEyQUYwQjE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBMkFGMDkxODI5NzM0MzAwREUx
NzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmNwcCAqLzsgfTsKIAkJQTVBMkFGMEMxODI5NzM0MzAwREUx
NzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNUEyQUYwQTE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUu
aCAqLzsgfTsKIAkJQTVBQkI3ODcxM0I5MDRCQzAwRjE5N0UzIC8qIExpbmVCcmVha0l0ZXJhdG9y
UG9vbElDVS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTVBQkI3ODYxM0I5MDRCQzAwRjE5N0UzIC8qIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oICov
OyB9OwotCQlBNUFDNEFFRjE4MzM2OTc1MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTVBQzRBRUQxODMzNjk3NTAwNzExNEUwIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNw
cCAqLzsgfTsKLQkJQTVBQzRBRjAxODMzNjk3NTAwNzExNEUwIC8qIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNUFDNEFFRTE4MzM2OTc1MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNUFG
QjM0RjExNTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QUZCMzREMTE1MTUxQTcwMEIwNDVDQiAvKiBT
dGVwUmFuZ2UuY3BwICovOyB9OwogCQlBNUFGQjM1MDExNTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJh
bmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUFG
QjM0RTExNTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTVDNTY2QUIxMjdBM0FBRDAwRThBM0ZGIC8q
IERpc2tJbWFnZUNhY2hlQ2xpZW50SU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNUM1NjZBQTEyN0EzQUFEMDBFOEEzRkYgLyogRGlza0ltYWdlQ2Fj
aGVDbGllbnRJT1MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtNzkxOSw4ICs3OTA5LDYgQEAKIAkJNDA5RUJEQzQxNkI3RjNDQTAwQ0JBM0ZDIC8q
IEpTQ1NTRm9udEZhY2VMb2FkRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNDU1NGb250RmFjZUxvYWRFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQwRUNBRTdEMTZCOEI2NzIwMEMzNjEwMyAvKiBKU0RPTUVycm9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDBFQ0FFODAxNkI4QjY4QTAwQzM2MTAzIC8qIEpTRE9NRXJyb3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01FcnJvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxMDAyQ0NCMEY2NkVERUYwMDlFNjYwRCAvKiBT
Y3JpcHRGdW5jdGlvbkNhbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Ny
aXB0RnVuY3Rpb25DYWxsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxMDAyQ0ND
MEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0RnVuY3Rpb25DYWxsLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEwQjdFNzExMDQ1RkFCMDAwRDgyMjRGIC8qIEpTTWVzc2Fn
ZUV2ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEy
N0Q1MzYwRjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDEzOEQzMzMxMjQ0MDU0ODAwMzIzRDMzIC8qIEV2ZW50Q29udGV4dC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudENvbnRleHQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc5OTUsOCArNzk4Myw4IEBACiAJCTQxRjA2MThEMEY1RjA2
OTgwMEEwN0VBQyAvKiBDb25zb2xlTWVzc2FnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDb25zb2xlTWVzc2FnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxRjA2MjEyMEY1RjE5MjYwMEEwN0VBQyAvKiBJbnNwZWN0b3JEYXRhYmFzZVJlc291
cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckRhdGFiYXNl
UmVzb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGMDYyMTMwRjVGMTky
NjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxRjA2NkUyMEY2NEJDRjYwMEEwN0VBQyAvKiBT
Y3JpcHRPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0T2Jq
ZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxRjA2NkUzMEY2NEJDRjYwMEEw
N0VBQyAvKiBTY3JpcHRPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2NyaXB0T2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFG
MDY2RTIwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdEdsb2JhbE9iamVjdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRHbG9iYWxPYmplY3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDFGMDY2RTMwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdEdsb2Jh
bE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRH
bG9iYWxPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUYxRDIxRDBF
RjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdENhY2hlZEZyYW1lRGF0YS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MUYxRDIxRTBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVk
RnJhbWVEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlw
dENhY2hlZEZyYW1lRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRjU4
NEM2MTA0NjUyQ0IwMDlDQUE2NCAvKiBKU01lc3NhZ2VQb3J0Q3VzdG9tLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVzc2FnZVBvcnRDdXN0b20uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTgzNTUsOCArODM0Myw2IEBACiAJCTRGMTUzNERGMTFCNTMzMDIw
MDIxRkQ4NiAvKiBFZGl0aW5nQmVoYXZpb3JUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBFZGl0aW5nQmVoYXZpb3JUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0RjJEMjA1MjEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQWdlbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEYyRDIwNTMxMkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3Rv
ckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rv
ckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNEYzMjg5QjMxMUE0MkFB
QjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbnNwZWN0b3JWYWx1ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk0RjMyODlCNDExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvclZhbHVlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0RjRGNUZGQTExQ0JEMkQyMDBBMTg2QkYgLyogSW5zcGVj
dG9yRnJvbnRlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5z
cGVjdG9yRnJvbnRlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RjRGNUZG
QzExQ0JEMzAxMDBBMTg2QkYgLyogSW5zcGVjdG9yRnJvbnRlbmQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRnJvbnRlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNEY2RkRENjIxMzQxREVERDAwMUY4RUUzIC8qIEluc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JQYWdl
QWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODY3MCw4ICs4NjU2LDgg
QEAKIAkJNTNFRjc2NkExNjUzMEE2MTAwNENCRTQ5IC8qIFNldHRpbmdzTWFjcm9zLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNldHRpbmdzTWFjcm9zLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTU1MEEwQkM3MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWRO
YW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
aW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFF1YWxpZmllZE5hbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0
aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1
YWxpZmllZE5hbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUXVhbGlmaWVkTmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0
aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKLQkJNTczRDEzNDUxNENFMzlGRjAwNTdBQkNBIC8qIElu
c3BlY3RvclR5cGVCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEluc3BlY3RvclR5cGVCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNTczRDEzNDYxNENFMzlGRjAwNTdBQkNBIC8qIEluc3BlY3RvclR5cGVCdWlsZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvclR5cGVCdWlsZGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3M0QxMzQ1MTRDRTM5RkYwMDU3QUJDQSAvKiBJ
bnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTczRDEzNDYxNENFMzlGRjAwNTdBQkNBIC8qIEluc3BlY3RvcldlYlR5cGVC
dWlsZGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JXZWJU
eXBlQnVpbGRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdCNzkxOUYxNEM2
QTYyOTAwRjIwMkQxIC8qIENvbnRlbnREaXN0cmlidXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZW50RGlzdHJpYnV0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1N0I3OTFBMDE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudERpc3Ry
aWJ1dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnREaXN0cmli
dXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0NGNDk3MjE0RUUzNkQ3MDBF
Q0ZGMTQgLyogSW5zZXJ0aW9uUG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW5zZXJ0aW9uUG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtOTAwNyw3ICs4OTkzLDYgQEAKIAkJN0E3NEVDQjkxMDE4MzlBNjAwQkY5MzlFIC8qIEluc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0E3NEVDQkMxMDE4MzlEQTAwQkY5MzlFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9t
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW5zcGVjdG9yRnJv
bnRlbmRIb3N0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FBMzY1
RUQxMkU3MjY1NDAwRENBMjQyIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QUE1MUI2QzE0ODNCNjE2MDBBRDI3NTIgLyog
SW5zcGVjdG9yQmFzZUFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
c3BlY3RvckJhc2VBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUE1MURE
MzE0ODUwNkE5MDBBRDI3NTIgLyogSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUE1MURENDE0ODUwNkE5MDBBRDI3NTIgLyogSW5z
cGVjdG9yTWVtb3J5QWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5z
cGVjdG9yTWVtb3J5QWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FBQkEy
NTcxNEJDNjEzMzAwQUE5QTExIC8qIERPTUVkaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBET01FZGl0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtOTgxNCw4ICs5Nzk5LDYgQEAKIAkJOTM0NDJDOUQwRDJCMzM1QzAwMzM4RkY5IC8qIEhU
TUxUYWJsZVJvd3NDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzNDQyQzlGMEQyQjMzNjAwMDMzOEZGOSAvKiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MVGFibGVSb3dzQ29sbGVj
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNDkwN0UzMTI1QkJCQzgw
MDdGMjNBMCAvKiBHcmFwaGljc0NvbnRleHRDRy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBHcmFwaGljc0NvbnRleHRDRy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk5MzRDQzBERjBFRDM5RDZGMDBBNjU4RjIgLyogU2NyaXB0VmFsdWUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk5MzRDQzBFMDBFRDM5RDZGMDBBNjU4RjIgLyogU2NyaXB0VmFsdWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0VmFsdWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM0Q0MxMDkwRURCMjIzOTAwQTY1OEYyIC8qIFNjcmlw
dFNvdXJjZUNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0U291
cmNlQ29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzREOUJBNDBCOEMxMTZC
MDA3QjQyQTkgLyogV2ViQ29yZU5TU3RyaW5nRXh0cmFzLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvcmVOU1N0cmluZ0V4dHJhcy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM0RDlCQTYwQjhDMTE3NTAwN0I0MkE5IC8qIFdlYkNvcmVO
U1N0cmluZ0V4dHJhcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29y
ZU5TU3RyaW5nRXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDM1NSwx
OSArMTAzMzgsMTYgQEAKIAkJQTUxODIyNTQxN0UyQTBENDAwQTlCQTFEIC8qIEluc3BlY3Rvck92
ZXJsYXlQYWdlLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuY3NzOyBwYXRoID0gSW5zcGVjdG9yT3ZlcmxheVBhZ2UuY3NzOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNTE4MjI1NTE3RTJBMEQ0MDBBOUJBMUQgLyogSW5zcGVj
dG9yT3ZlcmxheVBhZ2UuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBJbnNwZWN0b3JPdmVybGF5
UGFnZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU0QTgyRUExNTIyOENBMzAw
QzcyQkE2IC8qIERPTU5vZGVQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERPTU5vZGVQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1NTZD
Mjg2MTgzMjA2QTgwMDhDQjcyMCAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTU2QzI4NzE4MzIwNkE4MDA4Q0I3MjAg
LyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE1NzMyQjA4MTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRlQ29tcG9uZW50cy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1NzMyQjA5MTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRl
Q29tcG9uZW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRlQ29tcG9u
ZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTkzQ0Y3MjE4NDAyQ0U5MDBC
RkNFMjcgLyogcHJvdG9jb2wgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBmb2xkZXI7IHBhdGggPSBwcm90b2NvbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTU5M0NGNzMxODQwMkQ0QjAwQkZDRTI3IC8qIENvZGVHZW5lcmF0b3JJbnNwZWN0
b3IucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5OyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTkzQ0Y3NDE4NDAyRDRCMDBCRkNFMjcgLyogQ29k
ZUdlbmVyYXRvckluc3BlY3RvclN0cmluZ3MucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBDb2RlR2Vu
ZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTU5M0NGNzUxODQwMkQ0QjAwQkZDRTI3IC8qIGNvbWJpbmUtamF2YXNjcmlwdC1yZXNvdXJjZXMu
cGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnNjcmlwdC5wZXJsOyBwYXRoID0gImNvbWJpbmUtamF2YXNjcmlwdC1yZXNvdXJjZXMucGwiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTkzQ0Y4QTE4NDA1MzUyMDBCRkNFMjcgLyog
SW5zcGVjdG9yV2ViQWdlbnRCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEluc3BlY3RvcldlYkFnZW50QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NUEyQUYwOTE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZURlYnVnZ2FibGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNUEyQUYwQTE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVn
Z2FibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZURlYnVnZ2FibGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVBQkI3ODYxM0I5MDRCQzAwRjE5N0Uz
IC8qIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQTVBQzRBRUQxODMzNjk3NTAwNzExNEUwIC8qIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTVB
QzRBRUUxODMzNjk3NTAwNzExNEUwIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QUZCMzREMTE1MTUxQTcwMEIwNDVD
QiAvKiBTdGVwUmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U3RlcFJhbmdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVBRkIzNEUxMTUx
NTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTdGVwUmFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVDNTY2QUEx
MjdBM0FBRDAwRThBM0ZGIC8qIERpc2tJbWFnZUNhY2hlQ2xpZW50SU9TLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc2tJbWFnZUNhY2hlQ2xpZW50SU9TLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDQ2Myw4ICsxNDQ0Myw4IEBACiAJCQkJNEY3MDdBOTgx
MUVGNjc5NDAwQUNEQTY5IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oICovLAogCQkJ
CTRGNEY1RkZBMTFDQkQyRDIwMEExODZCRiAvKiBJbnNwZWN0b3JGcm9udGVuZC5jcHAgKi8sCiAJ
CQkJNEY0RjVGRkMxMUNCRDMwMTAwQTE4NkJGIC8qIEluc3BlY3RvckZyb250ZW5kLmggKi8sCi0J
CQkJNTczRDEzNDUxNENFMzlGRjAwNTdBQkNBIC8qIEluc3BlY3RvclR5cGVCdWlsZGVyLmNwcCAq
LywKLQkJCQk1NzNEMTM0NjE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yVHlwZUJ1aWxkZXIu
aCAqLywKKwkJCQk1NzNEMTM0NTE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yV2ViVHlwZUJ1
aWxkZXJzLmNwcCAqLywKKwkJCQk1NzNEMTM0NjE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9y
V2ViVHlwZUJ1aWxkZXJzLmggKi8sCiAJCQkJN0EwRTc2RDgxMEJGMDU5ODAwQTAyNzZFIC8qIEpT
SW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCAqLywKIAkJCQk3QTBFNzZEOTEwQkYwNTk4MDBBMDI3NkUg
LyogSlNJbmplY3RlZFNjcmlwdEhvc3QuaCAqLywKIAkJCQk3QTBFNzcxQzEwQzAwREIxMDBBMDI3
NkUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwICovLApAQCAtMTQ1MTYsMTMgKzE0NDk2
LDggQEAKIAkJCQk3QTU2M0Y5NTEyREY1QzkxMDBGNDUzNkQgLyogSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UuanMgKi8sCiAJCQkJNEYyRDIwNTMxMkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3RvckFnZW50
LmNwcCAqLywKIAkJCQk0RjJEMjA1MjEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQu
aCAqLywKLQkJCQlBNTU2QzI4NjE4MzIwNkE4MDA4Q0I3MjAgLyogSW5zcGVjdG9yQWdlbnRSZWdp
c3RyeS5jcHAgKi8sCi0JCQkJQTU1NkMyODcxODMyMDZBODAwOENCNzIwIC8qIEluc3BlY3RvckFn
ZW50UmVnaXN0cnkuaCAqLywKIAkJCQlCODg1RThEMjExRTA2REQyMDA5RkZCRjQgLyogSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCAqLywKIAkJCQlCODg1RThEMzExRTA2REQyMDA5
RkZCRjQgLyogSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmggKi8sCi0JCQkJQTVBQzRB
RUQxODMzNjk3NTAwNzExNEUwIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCAqLywK
LQkJCQlBNUFDNEFFRTE4MzM2OTc1MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIuaCAqLywKLQkJCQk3QUE1MUI2QzE0ODNCNjE2MDBBRDI3NTIgLyogSW5zcGVjdG9yQmFzZUFn
ZW50LmggKi8sCiAJCQkJQUFENzY2RTgxNTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvckNhbnZh
c0FnZW50LmNwcCAqLywKIAkJCQlBQUQ3NjZFOTE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVjdG9y
Q2FudmFzQWdlbnQuaCAqLywKIAkJCQlBQUQ3NjZFQTE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVj
dG9yQ2FudmFzSW5zdHJ1bWVudGF0aW9uLmggKi8sCkBAIC0xNDU5Miw4ICsxNDU2Nyw3IEBACiAJ
CQkJODI4ODlCNEIxM0M2MjM5MjAwOUE2MTU2IC8qIEluc3BlY3RvclN0eWxlVGV4dEVkaXRvci5o
ICovLAogCQkJCTc1NDEzM0E5MTAyRTAwRjQwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50LmNwcCAqLywKIAkJCQk3NTQxMzNBNzEwMkUwMEU4MDAwNzVEMDAgLyogSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudC5oICovLAotCQkJCTRGMzI4OUIzMTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0
b3JWYWx1ZXMuY3BwICovLAotCQkJCTRGMzI4OUI0MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0
b3JWYWx1ZXMuaCAqLywKKwkJCQlBNTkzQ0Y4QTE4NDA1MzUyMDBCRkNFMjcgLyogSW5zcGVjdG9y
V2ViQWdlbnRCYXNlLmggKi8sCiAJCQkJRjM4MTBDMTkxMzY1QTQ5NjAwRUQ2RTMzIC8qIEluc3Bl
Y3RvcldvcmtlckFnZW50LmNwcCAqLywKIAkJCQlGMzgxMEMxQTEzNjVBNDk2MDBFRDZFMzMgLyog
SW5zcGVjdG9yV29ya2VyQWdlbnQuaCAqLywKIAkJCQlGMzc1Q0MwNjExNTBEMzAwMDA4RERCODEg
LyogSW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaCAqLywKQEAgLTE5Njg5LDExICsxOTY2Myw5IEBA
CiAJCQkJQTgzRTFDNzIwRTQ5MDQyQjAwMTQwQjlDIC8qIFNjcmlwdENvbnRyb2xsZXJNYWMubW0g
Ki8sCiAJCQkJOUY2RkMxOTQxMTIyRTgyQTAwRTgwMTk2IC8qIFNjcmlwdERlYnVnU2VydmVyLmNw
cCAqLywKIAkJCQk5RjZGQzE5NTExMjJFODJBMDBFODAxOTYgLyogU2NyaXB0RGVidWdTZXJ2ZXIu
aCAqLywKLQkJCQk0MTAwMkNDQzBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxs
LmNwcCAqLywKLQkJCQk0MTAwMkNDQjBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25D
YWxsLmggKi8sCiAJCQkJOUYzQjk0N0QxMjI0MTc1ODAwNTMwNEU3IC8qIFNjcmlwdEhlYXBTbmFw
c2hvdC5oICovLAotCQkJCTQxRjA2NkUzMEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRPYmplY3Qu
Y3BwICovLAotCQkJCTQxRjA2NkUyMEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRPYmplY3QuaCAq
LywKKwkJCQk0MUYwNjZFMzBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0R2xvYmFsT2JqZWN0LmNw
cCAqLywKKwkJCQk0MUYwNjZFMjBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0R2xvYmFsT2JqZWN0
LmggKi8sCiAJCQkJRjMzRjAyODExMjA5NDdGMjAwRTU3NDNBIC8qIFNjcmlwdFByb2ZpbGUuY3Bw
ICovLAogCQkJCTlGNzIzMDRDMTExODRCNDEwMEFEMDEyNiAvKiBTY3JpcHRQcm9maWxlLmggKi8s
CiAJCQkJOUZBMzdFRTMxMTcyRkM4MDAwQzRDRDU1IC8qIFNjcmlwdFByb2ZpbGVOb2RlLmggKi8s
CkBAIC0xOTcwMiw4ICsxOTY3NCw2IEBACiAJCQkJOTM0Q0MxMDkwRURCMjIzOTAwQTY1OEYyIC8q
IFNjcmlwdFNvdXJjZUNvZGUuaCAqLywKIAkJCQk0MTI3RDUzNjBGOEFBQjFEMDBFNDI0RjUgLyog
U2NyaXB0U3RhdGUuY3BwICovLAogCQkJCTQxQzc2MEIwMEVERTAzRDMwMEMxNjU1RiAvKiBTY3Jp
cHRTdGF0ZS5oICovLAotCQkJCTkzNENDMERGMEVEMzlENkYwMEE2NThGMiAvKiBTY3JpcHRWYWx1
ZS5jcHAgKi8sCi0JCQkJOTM0Q0MwRTAwRUQzOUQ2RjAwQTY1OEYyIC8qIFNjcmlwdFZhbHVlLmgg
Ki8sCiAJCQkJMjI4QzI4NDQxMEQ4MjUwMDAwOUQwRDBFIC8qIFNjcmlwdFdyYXBwYWJsZS5oICov
LAogCQkJCTE0MDBEN0E3MTcxMzZFQTcwMDc3Q0UwNSAvKiBTY3JpcHRXcmFwcGFibGVJbmxpbmVz
LmggKi8sCiAJCQkJQTc1RTQ5NzUxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAgKi8sCkBAIC0yMjE0Niw3ICsyMjExNiw2IEBACiAJCQkJMjlBODEyM0YwRkJCOUMx
RDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMjlBODEyMzEwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlUYWJs
ZVJvdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjVEMzFERkIxMUNGNjEwQjAwOUYyMkI0IC8qIEFj
dGl2ZURPTUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNTU2QzI4OTE4MzIwNkE4MDA4
Q0I3MjAgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFD
NERFNjkwRUE3NUMxRTAwMjNDQ0Q2IC8qIEFjdGl2ZURPTU9iamVjdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNGN0U0OTExMzdDRDdDNzAwMUREQUU3IC8qIEFkanVzdFZpZXdTaXplT3JOb3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTg0RDBDNDA2MTExNUYxRUEwMDE4QUEzNCAvKiBBZmZpbmVUcmFu
c2Zvcm0uaCBpbiBIZWFkZXJzICovLApAQCAtMjI0NTAsNyArMjI0MTksNiBAQAogCQkJCUE4MEU2
RDAxMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NJbmhlcml0ZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTgwRTZEMDgwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU0luaXRpYWxWYWx1ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM3NzJFMTMxMzMxNjIwQzAwMUVDOUNFIC8qIENTU0xpbmVCb3hDb250
YWluVmFsdWUuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1QUM0QUYwMTgzMzY5NzUwMDcxMTRFMCAv
KiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZE
MDMwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU01lZGlhUnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Rjk4RkZGNDUxMUEyNjc2MjAwRjU0OEU4IC8qIENTU09NVXRpbHMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE4MEU2RDAwMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQYWdlUnVsZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yMzQxMyw3ICsyMzM4MSw2IEBACiAJCQkJNEYyRDIwNTQxMkVBRTdCMzAwNUMyODc0
IC8qIEluc3BlY3RvckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCODg1RThENTExRTA2REQy
MDA5RkZCRjQgLyogSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk0RjcwN0E5QTExRUY2Nzk0MDBBQ0RBNjkgLyogSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXJzLmggaW4gSGVhZGVycyAqLywKLQkJCQk3QUE1MUI2RTE0ODNCNjE2MDBBRDI3NTIgLyog
SW5zcGVjdG9yQmFzZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBQUQ3NjZFQzE1N0U1MDJG
MDBFODU0MjMgLyogSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUFB
RDc2NkVEMTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JDYW52YXNJbnN0cnVtZW50YXRpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTFDODFCOTVDMEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0
b3JDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjM0NTIsOCArMjM0MTksNyBAQAogCQkJCTgy
QUIxNzc0MTI1QzgyNjcwMEM1MDY5RCAvKiBJbnNwZWN0b3JTdHlsZVNoZWV0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4Mjg4OUI0RDEzQzYyMzkyMDA5QTYxNTYgLyogSW5zcGVjdG9yU3R5bGVUZXh0
RWRpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk3NTQxMzNBODEwMkUwMEU4MDAwNzVEMDAgLyog
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTc4REEyMEYxNTIw
RUJBMzAwNjE0MUMxIC8qIEluc3BlY3RvclR5cGVCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKLQkJ
CQk0RjMyODlCNjExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk1NzhEQTIwRjE1MjBFQkEzMDA2MTQxQzEgLyogSW5zcGVjdG9yV2ViVHlwZUJ1
aWxkZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGMzgxMEMxQzEzNjVBNDk2MDBFRDZFMzMgLyog
SW5zcGVjdG9yV29ya2VyQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTI5MTdEMTRE
MUMwMDQyMEFBMSAvKiBSVENTdGF0c0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlGMzc1
Q0MwNzExNTBEMzAwMDA4RERCODEgLyogSW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjQ1NzUsOSArMjQ1NDEsOCBAQAogCQkJCTA4QTQ4NDc4MEU1MjcyQzUwMEMz
RkU3NiAvKiBTY3JpcHRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTFDOUQ5QjBFQjM2
ODEyMDBFNDA5REIgLyogU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0RENzA4OTcxODM1OUY2RjAwMkIzREM2IC8qIFNhbXBsZU1hcC5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJNDEwMDJDQ0QwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOUYzQjk0N0UxMjI0MTc1ODAwNTMwNEU3IC8qIFNjcmlwdEhlYXBT
bmFwc2hvdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDFGMDY2RTQwRjY0QkNGNjAwQTA3RUFDIC8q
IFNjcmlwdE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFGMDY2RTQwRjY0QkNGNjAwQTA3
RUFDIC8qIFNjcmlwdEdsb2JhbE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMzYx
MkIwMjY3NjAwQzFBMzU5IC8qIFNjcmlwdFByb2Nlc3Nvck5vZGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTlGNzIzMDRGMTExODRCNDEwMEFEMDEyNiAvKiBTY3JpcHRQcm9maWxlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5RkEzN0VFNDExNzJGQzgwMDBDNENENTUgLyogU2NyaXB0UHJvZmlsZU5vZGUu
aCBpbiBIZWFkZXJzICovLApAQCAtMjQ1ODUsNyArMjQ1NTAsNiBAQAogCQkJCThBNDEzQUUwMTIw
N0JCQTUwMDgyMDE2RSAvKiBTY3JpcHRSdW5uZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNEND
MTBBMEVEQjIyMzkwMEE2NThGMiAvKiBTY3JpcHRTb3VyY2VDb2RlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MUM3NjBCMTBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTkzNENDMEUyMEVEMzlENkYwMEE2NThGMiAvKiBTY3JpcHRWYWx1ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMjI4QzI4NDUxMEQ4MjUwMDAwOUQwRDBFIC8qIFNjcmlwdFdyYXBwYWJs
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQwMEQ3QTgxNzEzNkVBNzAwNzdDRTA1IC8qIFNjcmlw
dFdyYXBwYWJsZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOEFFMzRGMTJFQTA5NkEw
MEVCM0FFNiAvKiBTY3JvbGxhYmxlQXJlYS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDk3OSw2ICsy
NDk0Myw3IEBACiAJCQkJMDg4QTBFMEExMjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwODFERDQ5QzEzQkExQTYwMDBEQzc2MjcgLyogU1ZHUHJvcGVy
dHlJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlCNTdDQjUyRTE4MkEzRUZDMDA3OUE2NDcgLyog
SW5saW5lRWxlbWVudEJveC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU5M0NGOEIxODQwNTM1MjAw
QkZDRTI3IC8qIEluc3BlY3RvcldlYkFnZW50QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg4
QTBFMEIxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMDg4QTBFMEMxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5VHJhaXRzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E5QTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUmFkaWFs
R3JhZGllbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI1ODMxLDcgKzI1Nzk2LDYgQEAK
IAkJCQk1OUI1OTc3MzExMDg2NTZCMDA3MTU5RTggLyogQnJpZGdlSlNDLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUY1NUIzREFGMTI1MUYxMkQwMDNFRjI2OSAvKiBCdXR0b25JbnB1dFR5cGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlDRjcwRDdFMkI4MjAwN0MzOTgzIC8qIGNfY2xhc3Mu
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTVBQzRBRUYxODMzNjk3NTAwNzExNEUwIC8qIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5Q0Y5MEQ3
RTJCODIwMDdDMzk4MyAvKiBjX2luc3RhbmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5
Q0ZCMEQ3RTJCODIwMDdDMzk4MyAvKiBjX3J1bnRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUE1NjlDRkQwRDdFMkI4MjAwN0MzOTgzIC8qIGNfdXRpbGl0eS5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTI2NzEyLDggKzI2Njc2LDcgQEAKIAkJCQk4Mjg4OUI0QzEzQzYyMzkyMDA5QTYxNTYgLyog
SW5zcGVjdG9yU3R5bGVUZXh0RWRpdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3Mjc3RTRF
MTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNzU0MTMzQUExMDJFMDBGNDAwMDc1RDAwIC8qIEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTczRDEzNDcxNENFMzlGRjAw
NTdBQkNBIC8qIEluc3BlY3RvclR5cGVCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTRG
MzI4OUI1MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNTczRDEzNDcxNENFMzlGRjAwNTdBQkNBIC8qIEluc3BlY3RvcldlYlR5cGVCdWls
ZGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGMzgxMEMxQjEzNjVBNDk2MDBFRDZFMzMgLyog
SW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjM1MEI3MzUxM0Yx
Mzc3RDAwODgwQzQzIC8qIEluc3RydW1lbnRpbmdBZ2VudHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjI3NTM1NjAwQjA1MzgxNDAwMkNFNjRGIC8qIEludFBvaW50Q0cuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC0yNzgxOSwxNCArMjc3ODIsMTIgQEAKIAkJCQk0OTk4QUVEMTEzRkIyMjREMDA5MEIx
QUEgLyogU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTA4QTQ4NDc3MEU1MjcyQzUwMEMzRkU3NiAvKiBTY3JpcHRFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUUxMUM5REIwMEVCMzY5OTUwMEU0MDlEQiAvKiBTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQxMDAyQ0NFMEY2NkVERUYwMDlFNjYwRCAvKiBT
Y3JpcHRGdW5jdGlvbkNhbGwuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDFGMDY2RTUwRjY0QkNG
NjAwQTA3RUFDIC8qIFNjcmlwdE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MUYwNjZF
NTBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0R2xvYmFsT2JqZWN0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUZEMzE2MDM1MTJCMDI2NzYwMEMxQTM1OSAvKiBTY3JpcHRQcm9jZXNzb3JOb2RlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUYzM0YwMjgyMTIwOTQ3RjIwMEU1NzQzQSAvKiBTY3JpcHRQ
cm9maWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlGNzIzMDUwMTExODRCNDEwMEFEMDEyNiAv
KiBTY3JpcHRQcm9maWxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4QTQxM0FFMTEyMDdCQkE1
MDA4MjAxNkUgLyogU2NyaXB0UnVubmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxMjdENTM3
MEY4QUFCMUQwMEU0MjRGNSAvKiBTY3JpcHRTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk5
MzRDQzBFMTBFRDM5RDZGMDBBNjU4RjIgLyogU2NyaXB0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkM4QUUzNEUxMkVBMDk2QTAwRUIzQUU2IC8qIFNjcm9sbGFibGVBcmVhLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUNBM0JGNjdDMTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRv
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzUxMTU2RTEyQjE3NDlDMDBDOTY3NTQgLyogU2Ny
b2xsQW5pbWF0b3JNYWMubW0gaW4gU291cmNlcyAqLywKQEAgLTI3OTE4LDcgKzI3ODc5LDYgQEAK
IAkJCQlBQTJBNUFENTE2QTQ4NjE0MDA5NzVBMjUgLyogU3BlZWNoU3ludGhlc2lzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUFBMkE1QUQzMTZBNDg2MEQwMDk3NUEyNSAvKiBTcGVlY2hTeW50aGVz
aXNFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBQTJBNUFEMTE2QTQ4NjA3MDA5NzVBMjUg
LyogU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE1NTZD
Mjg4MTgzMjA2QTgwMDhDQjcyMCAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUFBMkE1QUNEMTZBNDg1RkEwMDk3NUEyNSAvKiBTcGVlY2hTeW50aGVzaXNW
b2ljZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzhGRTEzQjEyMzY2QjEwMDBBQ0U4RDAgLyog
U3BlbGxDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI4REJEQjREMTMwQjBGOEEwMEY1
Q0RCMSAvKiBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcCBpbiBTb3VyY2VzICovLApJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaAkocmV2aXNpb24gMTYwNDA0
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiSlNEaWN0aW9uYXJ5LmgiCiAjaW5jbHVk
ZSAiSlNFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNs
dWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC05Miw3ICs5Miw3IEBAIFBhc3NSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4gRGljdGlvbmFyeTo6Z2UKICAgICBpZiAoIW1fZGljdGlvbmFyeS5p
c1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgU2NyaXB0VmFsdWUgZXZlbnRMaXN0
ZW5lcjsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBldmVudExpc3RlbmVyOwogICAgIGlm
ICghbV9kaWN0aW9uYXJ5LnRyeUdldFByb3BlcnR5KHByb3BlcnR5TmFtZSwgZXZlbnRMaXN0ZW5l
cikpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChldmVudExpc3RlbmVyLmhhc05vVmFsdWUo
KSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdV
dGlsaXRpZXMuY3BwCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDcgKzE3
OCw3IEBAIHN0YXRpYyBKU1ZhbHVlIGdldE50aFZhbHVlT25LZXlQYXRoKEV4ZWMKICAgICByZXR1
cm4gY3VycmVudFZhbHVlOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlE
QktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTY3Jp
cHRWYWx1ZSYgdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKK3N0YXRpYyBQYXNzUmVmUHRy
PElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5n
JiBrZXlQYXRoKQogewogICAgIFZlY3RvcjxTdHJpbmc+IGtleVBhdGhFbGVtZW50czsKICAgICBJ
REJLZXlQYXRoUGFyc2VFcnJvciBlcnJvcjsKQEAgLTIyOCw3ICsyMjgsNyBAQCBzdGF0aWMgYm9v
bCBjYW5JbmplY3ROdGhWYWx1ZU9uS2V5UGF0aChFCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgaW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0
YXRlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IElE
QktleVBhdGgmIGtleVBhdGgpCitib29sIGluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShET01S
ZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQogewog
ICAgIExPRyhTdG9yYWdlQVBJLCAiaW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlIik7CiAKQEAg
LTI1NCw3ICsyNTQsNyBAQCBib29sIGluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShET01SZXF1
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlG
cm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBj
b25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCitQYXNz
UmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChET01S
ZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
IHZhbHVlLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQogewogICAgIExPRyhTdG9yYWdlQVBJ
LCAiY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aCIpOwogICAgIEFTU0VSVCgh
a2V5UGF0aC5pc051bGwoKSk7CkBAIC0yNzcsNyArMjc3LDcgQEAgUGFzc1JlZlB0cjxJREJLZXk+
IGNyZWF0ZUlEQktleUZyb21TY3JpcAogICAgIHJldHVybiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0
VmFsdWVBbmRLZXlQYXRoKGV4ZWMsIHZhbHVlLCBrZXlQYXRoLnN0cmluZygpKTsKIH0KIAotYm9v
bCBjYW5JbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0
U3RhdGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBzY3JpcHRWYWx1ZSwgY29uc3QgSURCS2V5UGF0aCYg
a2V5UGF0aCkKK2Jvb2wgY2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKERPTVJlcXVlc3RT
dGF0ZSogcmVxdWVzdFN0YXRlLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgc2NyaXB0
VmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEks
ICJjYW5JbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUiKTsKIApAQCAtMjk0LDE2ICsyOTQsMTYg
QEAgYm9vbCBjYW5JbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoRE9NUgogICAgIHJldHVybiBj
YW5JbmplY3ROdGhWYWx1ZU9uS2V5UGF0aChleGVjLCBzY3JpcHRWYWx1ZS5qc1ZhbHVlKCksIGtl
eVBhdGhFbGVtZW50cywga2V5UGF0aEVsZW1lbnRzLnNpemUoKSAtIDEpOwogfQogCi1TY3JpcHRW
YWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVlKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHJwVmFsdWUpCitEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVlKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0
YXRlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHJwVmFsdWUpCiB7CiAgICAg
RXhlY1N0YXRlKiBleGVjID0gcmVxdWVzdFN0YXRlLT5leGVjKCk7CiAgICAgUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gcHJwVmFsdWU7CiAgICAgaWYgKHNl
cmlhbGl6ZWRWYWx1ZSkKLSAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShl
eGVjLCBzZXJpYWxpemVkVmFsdWUuZ2V0KCksIE5vblRocm93aW5nKTsKLSAgICByZXR1cm4gU2Ny
aXB0VmFsdWUoZXhlYy0+dm0oKSwganNOdWxsKCkpOworICAgICAgICByZXR1cm4gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShleGVjLCBzZXJpYWxpemVkVmFsdWUuZ2V0KCksIE5v
blRocm93aW5nKTsKKyAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoZXhlYy0+dm0o
KSwganNOdWxsKCkpOwogfQogCi1TY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVy
KERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
cHJwQnVmZmVyKQorRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZGVzZXJpYWxpemVJREJWYWx1ZUJ1
ZmZlcihET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZm
ZXI+IHBycEJ1ZmZlcikKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSByZXF1ZXN0U3RhdGUtPmV4
ZWMoKTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwcnBCdWZmZXI7CkBAIC0z
MTIsMTggKzMxMiwxOCBAQCBTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKERP
CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZTsKICAgICAgICAgdmFsdWUuYXBwZW5kKGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIFJlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3Jl
YXRlRnJvbVdpcmVCeXRlcyh2YWx1ZSk7Ci0gICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZTo6ZGVz
ZXJpYWxpemUoZXhlYywgc2VyaWFsaXplZFZhbHVlLmdldCgpLCBOb25UaHJvd2luZyk7CisgICAg
ICAgIHJldHVybiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKGV4ZWMsIHNlcmlh
bGl6ZWRWYWx1ZS5nZXQoKSwgTm9uVGhyb3dpbmcpOwogICAgIH0KLSAgICByZXR1cm4gU2NyaXB0
VmFsdWUoZXhlYy0+dm0oKSwganNOdWxsKCkpOworICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZShleGVjLT52bSgpLCBqc051bGwoKSk7CiB9CiAKLVNjcmlwdFZhbHVlIGlkYktleVRv
U2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIFBhc3NSZWZQdHI8SURC
S2V5PiBrZXkpCitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBpZGJLZXlUb1NjcmlwdFZhbHVlKERP
TVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5KQogewog
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHJlcXVlc3RTdGF0ZS0+ZXhlYygpOwotICAgIHJldHVybiBT
Y3JpcHRWYWx1ZShleGVjLT52bSgpLCBpZGJLZXlUb0pTVmFsdWUoZXhlYywganNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwga2V5LmdldCgpKSk7
CisgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIGlkYktleVRv
SlNWYWx1ZShleGVjLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpLCBrZXkuZ2V0KCkpKTsKIH0KIAotUGFzc1JlZlB0cjxJREJLZXk+IHNjcmlw
dFZhbHVlVG9JREJLZXkoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIGNvbnN0IFNjcmlw
dFZhbHVlJiBzY3JpcHRWYWx1ZSkKK1Bhc3NSZWZQdHI8SURCS2V5PiBzY3JpcHRWYWx1ZVRvSURC
S2V5KERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYgc2NyaXB0VmFsdWUpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gcmVxdWVzdFN0
YXRlLT5leGVjKCk7CiAgICAgcmV0dXJuIGNyZWF0ZUlEQktleUZyb21WYWx1ZShleGVjLCBzY3Jp
cHRWYWx1ZS5qc1ZhbHVlKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURC
QmluZGluZ1V0aWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaAkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSw3ICsyOSw3IEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKICNpbmNsdWRl
ICJEaWN0aW9uYXJ5LmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxiaW5k
aW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTQxLDEzICs0MSwxMyBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIElE
QktleVBhdGggaWRiS2V5UGF0aEZyb21WYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1
ZSk7CiAKLWJvb2wgaW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSos
IFBhc3NSZWZQdHI8SURCS2V5PiwgU2NyaXB0VmFsdWUmLCBjb25zdCBJREJLZXlQYXRoJik7Ci1Q
YXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChE
T01SZXF1ZXN0U3RhdGUqLCBjb25zdCBTY3JpcHRWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsK
LWJvb2wgY2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSosIGNv
bnN0IFNjcmlwdFZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOwotU2NyaXB0VmFsdWUgZGVzZXJp
YWxpemVJREJWYWx1ZShET01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4pOwotU2NyaXB0VmFsdWUgZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihET01SZXF1
ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pOwotU2NyaXB0VmFsdWUgaWRiS2V5
VG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPElEQktleT4pOwotUGFz
c1JlZlB0cjxJREJLZXk+IHNjcmlwdFZhbHVlVG9JREJLZXkoRE9NUmVxdWVzdFN0YXRlKiwgY29u
c3QgU2NyaXB0VmFsdWUmKTsKK2Jvb2wgaW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKERPTVJl
cXVlc3RTdGF0ZSosIFBhc3NSZWZQdHI8SURCS2V5PiwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
LCBjb25zdCBJREJLZXlQYXRoJik7CitQYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJv
bVNjcmlwdFZhbHVlQW5kS2V5UGF0aChET01SZXF1ZXN0U3RhdGUqLCBjb25zdCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsKK2Jvb2wgY2FuSW5qZWN0SURCS2V5
SW50b1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOworRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZGVz
ZXJpYWxpemVJREJWYWx1ZShET01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4pOworRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZGVzZXJpYWxpemVJREJWYWx1
ZUJ1ZmZlcihET01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pOworRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUgaWRiS2V5VG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUq
LCBQYXNzUmVmUHRyPElEQktleT4pOworUGFzc1JlZlB0cjxJREJLZXk+IHNjcmlwdFZhbHVlVG9J
REJLZXkoRE9NUmVxdWVzdFN0YXRlKiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmKTsK
IAogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5P
bmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGlu
Z3NBbGxJbk9uZS5jcHAJKHJldmlzaW9uIDE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw3ICsx
NDksNiBAQAogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwIgogI2luY2x1ZGUg
IlNjcmlwdENvbnRyb2xsZXIuY3BwIgogI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmNwcCIK
LSNpbmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIgogI2luY2x1ZGUgIlNjcmlwdFByb2Zp
bGVyLmNwcCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5jcHAiCiAjaW5jbHVkZSAiU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGlj
dGlvbmFyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
aWN0aW9uYXJ5LmNwcAkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNEaWN0aW9uYXJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBAQAog
I2luY2x1ZGUgIkpTU3RvcmFnZS5oIgogI2luY2x1ZGUgIkpTVHJhY2tDdXN0b20uaCIKICNpbmNs
dWRlICJKU1ZvaWRDYWxsYmFjay5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVk
ZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU1R5cGVkQXJy
YXlzLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTE0NCw5ICsxNDMsOSBAQCB2b2lk
IEpTRGljdGlvbmFyeTo6Y29udmVydFZhbHVlKEV4ZWNTdGF0CiAgICAgfQogfQogCi12b2lkIEpT
RGljdGlvbmFyeTo6Y29udmVydFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwg
U2NyaXB0VmFsdWUmIHJlc3VsdCkKK3ZvaWQgSlNEaWN0aW9uYXJ5Ojpjb252ZXJ0VmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgcmVz
dWx0KQogewotICAgIHJlc3VsdCA9IFNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIHZhbHVlKTsKKyAg
ICByZXN1bHQgPSBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShleGVjLT52bSgpLCB2YWx1ZSk7CiB9
CiAKIHZvaWQgSlNEaWN0aW9uYXJ5Ojpjb252ZXJ0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHZhbHVlLCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYgcmVzdWx0KQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmgJKHJldmlzaW9uIDE2MDQw
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw2ICszNCwxMCBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5o
PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKK25hbWVzcGFjZSBEZXByZWNhdGVkIHsKK2Ns
YXNzIFNjcmlwdFZhbHVlOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFycmF5
VmFsdWU7CkBAIC00Niw3ICs1MCw2IEBAIGNsYXNzIE1lZGlhS2V5RXJyb3I7CiBjbGFzcyBNZWRp
YVN0cmVhbTsKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2s7CiBjbGFzcyBOb2RlOwotY2xhc3MgU2Ny
aXB0VmFsdWU7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiBjbGFzcyBTdG9yYWdlOwog
Y2xhc3MgVHJhY2tCYXNlOwpAQCAtMTA4LDcgKzExMSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IHZvaWQgY29udmVydFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBkb3VibGUm
IHJlc3VsdCk7CiAgICAgc3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpKU1ZhbHVlLCBEaWN0aW9uYXJ5JiByZXN1bHQpOwogICAgIHN0YXRpYyB2b2lkIGNvbnZl
cnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgU3RyaW5nJiByZXN1bHQpOwot
ICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1
ZSwgU2NyaXB0VmFsdWUmIHJlc3VsdCk7CisgICAgc3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgcmVz
dWx0KTsKICAgICBzdGF0aWMgdm9pZCBjb252ZXJ0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTVmFsdWUsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpOwogICAgIHN0YXRpYyB2b2lkIGNvbnZl
cnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4mIHJlc3VsdCk7CiAgICAgc3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBSZWZQdHI8RE9NV2luZG93PiYgcmVzdWx0KTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZh
c0VsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzEsMTMgKzMxLDE0IEBACiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JDYW52YXNJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJKU0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1
ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKwog
I2lmIEVOQUJMRShXRUJHTCkKICNpbmNsdWRlICJKU0RpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJK
U1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYkdMQ29udGV4dEF0dHJpYnV0
ZXMuaCIKICNlbmRpZgotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIApAQCAtODUsOCArODYsOCBAQCBKU1ZhbHVlIEpTSFRNTENhbnZhc0VsZW1lbnQ6Omdl
dENvbnRleHQoCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKICAgICBKU1ZhbHVlIGpzVmFsdWUg
PSB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihjb250ZXh0KSk7CiAgICAg
aWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2FudmFzQWdlbnRFbmFibGVkKCZjYW52YXMu
ZG9jdW1lbnQoKSkpIHsKLSAgICAgICAgU2NyaXB0T2JqZWN0IGNvbnRleHRPYmplY3QoZXhlYywg
anNWYWx1ZS5nZXRPYmplY3QoKSk7Ci0gICAgICAgIFNjcmlwdE9iamVjdCB3cmFwcGVkOworICAg
ICAgICBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgY29udGV4dE9iamVjdChleGVjLCBqc1ZhbHVl
LmdldE9iamVjdCgpKTsKKyAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IHdyYXBwZWQ7
CiAgICAgICAgIGlmIChjb250ZXh0LT5pczJkKCkpCiAgICAgICAgICAgICB3cmFwcGVkID0gSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3cmFwQ2FudmFzMkRSZW5kZXJpbmdDb250ZXh0Rm9ySW5z
dHJ1bWVudGF0aW9uKCZjYW52YXMuZG9jdW1lbnQoKSwgY29udGV4dE9iamVjdCk7CiAjaWYgRU5B
QkxFKFdFQkdMKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNj
cmlwdEhvc3RDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAkocmV2aXNpb24gMTYwNDA0KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NCwxNSArNDQsMTUgQEAKICNpbmNsdWRlICJJbmplY3RlZFNj
cmlwdEhvc3QuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgogI2luY2x1ZGUgIklu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNp
bmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJKU0hUTUxBbGxDb2xsZWN0aW9u
LmgiCiAjaW5jbHVkZSAiSlNIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgog
I2luY2x1ZGUgIkpTTm9kZUxpc3QuaCIKICNpbmNsdWRlICJKU1N0b3JhZ2UuaCIKLSNpbmNsdWRl
ICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlN0b3JhZ2UuaCIKKyNpbmNsdWRlIDxiaW5kaW5n
cy9TY3JpcHRWYWx1ZS5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4K
ICNpbmNsdWRlIDxwYXJzZXIvU291cmNlQ29kZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRGF0ZUlu
c3RhbmNlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgpAQCAtNjksMjAgKzY5LDIwIEBA
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTm9kZSogSW5q
ZWN0ZWRTY3JpcHRIb3N0OjpzY3JpcHRWYWx1ZUFzTm9kZShTY3JpcHRWYWx1ZSB2YWx1ZSkKK05v
ZGUqIEluamVjdGVkU2NyaXB0SG9zdDo6c2NyaXB0VmFsdWVBc05vZGUoRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpIHx8IHZhbHVlLmlz
TnVsbCgpKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gdG9Ob2RlKHZhbHVlLmpzVmFs
dWUoKSk7CiB9CiAKLVNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0SG9zdDo6bm9kZUFzU2NyaXB0
VmFsdWUoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBOb2RlKiBub2RlKQorRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHRIb3N0Ojpub2RlQXNTY3JpcHRWYWx1ZShKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUsIE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1Rv
Tm9kZShzdGF0ZSwgbm9kZSkpCi0gICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZShzdGF0ZS0+dm0o
KSwganNOdWxsKCkpOworICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoc3Rh
dGUtPnZtKCksIGpzTnVsbCgpKTsKIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKHN0YXRlKTsKLSAg
ICByZXR1cm4gU2NyaXB0VmFsdWUoc3RhdGUtPnZtKCksIHRvSlMoc3RhdGUsIGRlcHJlY2F0ZWRH
bG9iYWxPYmplY3RGb3JQcm90b3R5cGUoc3RhdGUpLCBub2RlKSk7CisgICAgcmV0dXJuIERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlKHN0YXRlLT52bSgpLCB0b0pTKHN0YXRlLCBkZXByZWNhdGVkR2xv
YmFsT2JqZWN0Rm9yUHJvdG90eXBlKHN0YXRlKSwgbm9kZSkpOwogfQogCiBKU1ZhbHVlIEpTSW5q
ZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0ZWRPYmplY3QoRXhlY1N0YXRlKiBleGVjKQpAQCAtOTUs
NyArOTUsNyBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0ZWRPCiAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7
Ci0gICAgU2NyaXB0VmFsdWUgc2NyaXB0VmFsdWUgPSBvYmplY3QtPmdldChleGVjKTsKKyAgICBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBzY3JpcHRWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMpOwog
ICAgIGlmIChzY3JpcHRWYWx1ZS5oYXNOb1ZhbHVlKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwogCkBAIC0yNDcsOCArMjQ3LDggQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9z
dDo6Z2V0RXZlbnRMaQogSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdChFeGVj
U3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAyKSB7Ci0g
ICAgICAgIFNjcmlwdFZhbHVlIG9iamVjdChleGVjLT52bSgpLCBleGVjLT51bmNoZWNrZWRBcmd1
bWVudCgwKSk7Ci0gICAgICAgIFNjcmlwdFZhbHVlIGhpbnRzKGV4ZWMtPnZtKCksIGV4ZWMtPnVu
Y2hlY2tlZEFyZ3VtZW50KDEpKTsKKyAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgb2Jq
ZWN0KGV4ZWMtPnZtKCksIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICAgICAgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUgaGludHMoZXhlYy0+dm0oKSwgZXhlYy0+dW5jaGVja2VkQXJn
dW1lbnQoMSkpOwogICAgICAgICBpbXBsKCkuaW5zcGVjdEltcGwob2JqZWN0LnRvSW5zcGVjdG9y
VmFsdWUoZXhlYyksIGhpbnRzLnRvSW5zcGVjdG9yVmFsdWUoZXhlYykpOwogICAgIH0KICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAJKHJldmlzaW9uIDE2MDQwNCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUgIkpTRE9NV2luZG93
Q3VzdG9tLmgiCiAjaW5jbHVkZSAiSlNJbmplY3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJK
U01haW5UaHJlYWRFeGVjU3RhdGUuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNs
dWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3QuaD4KICNpbmNsdWRlIDxwYXJzZXIvU291cmNlQ29k
ZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAKQEAgLTQ5LDcgKzQ5LDcgQEAgdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TY3JpcHRPYmplY3Qg
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcm
IHNvdXJjZSwgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBpbnQgaWQpCitEZXByZWNhdGVk
OjpTY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlw
dChjb25zdCBTdHJpbmcmIHNvdXJjZSwgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBpbnQg
aWQpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soc2NyaXB0U3RhdGUpOwogCkBAIC02NiwxMyAr
NjYsMTMgQEAgU2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYQogICAgICAg
ICBldmFsdWF0aW9uUmV0dXJuVmFsdWUgPSBKU0M6OmV2YWx1YXRlKHNjcmlwdFN0YXRlLCBzb3Vy
Y2VDb2RlLCBnbG9iYWxUaGlzVmFsdWUsICZldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICB9CiAg
ICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pCi0gICAgICAgIHJldHVybiBTY3JpcHRPYmplY3Qo
KTsKKyAgICAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCgpOwogCiAgICAgSlNW
YWx1ZSBmdW5jdGlvblZhbHVlID0gZXZhbHVhdGlvblJldHVyblZhbHVlOwogICAgIENhbGxEYXRh
IGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb25W
YWx1ZSwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpCi0gICAg
ICAgIHJldHVybiBTY3JpcHRPYmplY3QoKTsKKyAgICAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNj
cmlwdE9iamVjdCgpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKICAgICBhcmdz
LmFwcGVuZCh0b0pTKHNjcmlwdFN0YXRlLCBnbG9iYWxPYmplY3QsIG1faW5qZWN0ZWRTY3JpcHRI
b3N0LmdldCgpKSk7CkBAIC04MSw4ICs4MSw4IEBAIFNjcmlwdE9iamVjdCBJbmplY3RlZFNjcmlw
dE1hbmFnZXI6OmNyZWEKIAogICAgIEpTVmFsdWUgcmVzdWx0ID0gSlNDOjpjYWxsKHNjcmlwdFN0
YXRlLCBmdW5jdGlvblZhbHVlLCBjYWxsVHlwZSwgY2FsbERhdGEsIGdsb2JhbFRoaXNWYWx1ZSwg
YXJncyk7CiAgICAgaWYgKHJlc3VsdC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gU2NyaXB0
T2JqZWN0KHNjcmlwdFN0YXRlLCByZXN1bHQuZ2V0T2JqZWN0KCkpOwotICAgIHJldHVybiBTY3Jp
cHRPYmplY3QoKTsKKyAgICAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdChzY3Jp
cHRTdGF0ZSwgcmVzdWx0LmdldE9iamVjdCgpKTsKKyAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2Ny
aXB0T2JqZWN0KCk7CiB9CiAKIGJvb2wgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjYW5BY2Nlc3NJ
bnNwZWN0ZWRXaW5kb3coSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuY3Bw
CShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5U
aHJlYWRFeGVjU3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw0ICs0NiwxMiBAQCB2b2lk
IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6ZGlkTGVhdmVTY3JpCiAgICAgTXV0YXRpb25PYnNlcnZl
cjo6ZGVsaXZlckFsbE11dGF0aW9ucygpOwogfQogCitKU0M6OkpTVmFsdWUgZnVuY3Rpb25DYWxs
SGFuZGxlckZyb21BbnlUaHJlYWQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBm
dW5jdGlvbk9iamVjdCwgSlNDOjpDYWxsVHlwZSBjYWxsVHlwZSwgY29uc3QgSlNDOjpDYWxsRGF0
YSYgY2FsbERhdGEsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYg
YXJncykKK3sKKyAgICBpZiAoaXNNYWluVGhyZWFkKCkpCisgICAgICAgIHJldHVybiBKU01haW5U
aHJlYWRFeGVjU3RhdGU6OmNhbGwoZXhlYywgZnVuY3Rpb25PYmplY3QsIGNhbGxUeXBlLCBjYWxs
RGF0YSwgdGhpc1ZhbHVlLCBhcmdzKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBKU0M6OmNh
bGwoZXhlYywgZnVuY3Rpb25PYmplY3QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBh
cmdzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgJKHJldmlzaW9uIDE2
MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw5ICsyOCw3IEBACiAKICNpbmNsdWRlICJKU0RPTUJp
bmRpbmcuaCIKICNpbmNsdWRlIDxydW50aW1lL0NvbXBsZXRpb24uaD4KLSNpZm5kZWYgTkRFQlVH
CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTQyLDcgKzQwLDcgQEAgY2xhc3MgSlNNYWluVGhyZWFkRXhlY1N0YXRlIHsKICAg
ICBmcmllbmQgY2xhc3MgSlNNYWluVGhyZWFkTnVsbFN0YXRlOwogcHVibGljOgogICAgIHN0YXRp
YyBKU0M6OkV4ZWNTdGF0ZSogY3VycmVudFN0YXRlKCkKLSAgICB7IAorICAgIHsKICAgICAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgcmV0dXJuIHNfbWFpblRocmVhZFN0YXRl
OwogICAgIH07CkBAIC01Myw4ICs1MSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEpTQzo6
Y2FsbChleGVjLCBmdW5jdGlvbk9iamVjdCwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUs
IGFyZ3MpOwogICAgIH07CiAKLSAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llIGluc3RydW1lbnRGdW5jdGlvbkNhbGwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEpTQzo6
Q2FsbFR5cGUsIGNvbnN0IEpTQzo6Q2FsbERhdGEmKTsKLQogICAgIHN0YXRpYyBKU0M6OkpTVmFs
dWUgZXZhbHVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6U291cmNlQ29kZSYg
c291cmNlLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBKU0M6OkpTVmFsdWUqIGV4Y2VwdGlvbikK
ICAgICB7CiAgICAgICAgIEpTTWFpblRocmVhZEV4ZWNTdGF0ZSBjdXJyZW50U3RhdGUoZXhlYyk7
CkBAIC02Miw2ICs1OCw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEpTQzo6ZXZhbHVhdGUo
ZXhlYywgc291cmNlLCB0aGlzVmFsdWUsIGV4Y2VwdGlvbik7CiAgICAgfTsKIAorICAgIHN0YXRp
YyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgaW5zdHJ1bWVudEZ1bmN0aW9uQ2FsbChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSlNDOjpDYWxsVHlwZSwgY29uc3QgSlNDOjpDYWxsRGF0
YSYpOworCiAgICAgZXhwbGljaXQgSlNNYWluVGhyZWFkRXhlY1N0YXRlKEpTQzo6RXhlY1N0YXRl
KiBleGVjKQogICAgICAgICA6IG1fcHJldmlvdXNTdGF0ZShzX21haW5UaHJlYWRTdGF0ZSkKICAg
ICB7CkBAIC0xMTAsNiArMTA4LDggQEAgcHJpdmF0ZToKICAgICBKU0M6OkV4ZWNTdGF0ZSogbV9w
cmV2aW91c1N0YXRlOwogfTsKIAorSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9t
QW55VGhyZWFkKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb25PYmpl
Y3QsIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0IEpTQzo6Q2FsbERhdGEmIGNhbGxEYXRh
LCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MpOworCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBKU01haW5UaHJlYWRFeGVjU3RhdGVf
aApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2
ZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1
Myw3IEBAIEpTVmFsdWUgSlNNZXNzYWdlRXZlbnQ6OmRhdGEoRXhlY1N0YXRlKgogICAgIEpTVmFs
dWUgcmVzdWx0OwogICAgIHN3aXRjaCAoZXZlbnQuZGF0YVR5cGUoKSkgewogICAgIGNhc2UgTWVz
c2FnZUV2ZW50OjpEYXRhVHlwZVNjcmlwdFZhbHVlOiB7Ci0gICAgICAgIFNjcmlwdFZhbHVlIHNj
cmlwdFZhbHVlID0gZXZlbnQuZGF0YUFzU2NyaXB0VmFsdWUoKTsKKyAgICAgICAgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUgc2NyaXB0VmFsdWUgPSBldmVudC5kYXRhQXNTY3JpcHRWYWx1ZSgpOwog
ICAgICAgICBpZiAoc2NyaXB0VmFsdWUuaGFzTm9WYWx1ZSgpKQogICAgICAgICAgICAgcmVzdWx0
ID0ganNOdWxsKCk7CiAgICAgICAgIGVsc2UKQEAgLTEwNSw3ICsxMDUsNyBAQCBzdGF0aWMgSlND
OjpKU1ZhbHVlIGhhbmRsZUluaXRNZXNzYWdlRXZlCiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KLSAgICBT
Y3JpcHRWYWx1ZSBkYXRhQXJnID0gU2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwgZXhlYy0+YXJndW1l
bnQoMykpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRhdGFBcmcgPSBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBleGVjLT5hcmd1bWVudCgzKSk7CiAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCShy
ZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRB
Y3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw5ICszNyw5IEBACiAjaW5jbHVkZSAiU2Ny
aXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNp
bmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNp
bmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgor
I2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xv
Y2suaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCShyZXZpc2lvbiAx
NjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0
b3J5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgIlNjcmlw
dEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxGcmFtZS5oIgogI2luY2x1ZGUgIlNj
cmlwdENhbGxTdGFjay5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8Ymlu
ZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxpbnRlcnByZXRlci9DYWxsRnJhbWUuaD4K
ICNpbmNsdWRlIDxpbnRlcnByZXRlci9DYWxsRnJhbWVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8aW50
ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmg+CkBAIC0xOTksMTAgKzE5OSwxMCBAQCBQYXNzUmVmUHRy
PFNjcmlwdENhbGxTdGFjaz4gY3JlYXRlU2NyaXB0CiAKIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1l
bnRzPiBjcmVhdGVTY3JpcHRBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IHNraXBBcmd1bWVudENvdW50KQogewotICAgIFZlY3RvcjxTY3JpcHRWYWx1ZT4gYXJndW1lbnRz
OworICAgIFZlY3RvcjxEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZT4gYXJndW1lbnRzOwogICAgIHNp
emVfdCBhcmd1bWVudENvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOwogICAgIGZvciAoc2l6
ZV90IGkgPSBza2lwQXJndW1lbnRDb3VudDsgaSA8IGFyZ3VtZW50Q291bnQ7ICsraSkKLSAgICAg
ICAgYXJndW1lbnRzLmFwcGVuZChTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBleGVjLT51bmNoZWNr
ZWRBcmd1bWVudChpKSkpOworICAgICAgICBhcmd1bWVudHMuYXBwZW5kKERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlKGV4ZWMtPnZtKCksIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKSk7CiAgICAg
cmV0dXJuIFNjcmlwdEFyZ3VtZW50czo6Y3JlYXRlKGV4ZWMsIGFyZ3VtZW50cyk7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3Bw
CShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNiBAQAogI2luY2x1ZGUg
IlBsdWdpblZpZXcuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRlICJT
Y3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJT
Y3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1
ZGUgIlN0b3JhZ2VOYW1lc3BhY2UuaCIKQEAgLTQ4LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJXZWJD
b3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSAibnBydW50aW1lX2ltcGwuaCIKICNpbmNsdWRl
ICJydW50aW1lX3Jvb3QuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2lu
Y2x1ZGUgPGRlYnVnZ2VyL0RlYnVnZ2VyLmg+CiAjaW5jbHVkZSA8aGVhcC9TdHJvbmdJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CkBAIC0xMTcsNyAr
MTE3LDcgQEAgSlNET01XaW5kb3dTaGVsbCogU2NyaXB0Q29udHJvbGxlcjo6Y3JlYQogICAgIHJl
dHVybiB3aW5kb3dTaGVsbC5nZXQoKTsKIH0KIAotU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxl
cjo6ZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERP
TVdyYXBwZXJXb3JsZCYgd29ybGQpCitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBTY3JpcHRDb250
cm9sbGVyOjpldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29k
ZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKICAgICBjb25zdCBTb3VyY2VDb2RlJiBqc1Nv
dXJjZUNvZGUgPSBzb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpOwogICAgIFN0cmluZyBzb3VyY2VV
UkwgPSBqc1NvdXJjZUNvZGUucHJvdmlkZXIoKS0+dXJsKCk7CkBAIC0xNDksMTQgKzE0OSwxNCBA
QCBTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluCiAgICAgaWYgKGV2YWx1
YXRpb25FeGNlcHRpb24pIHsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKGV4ZWMsIGV2YWx1YXRp
b25FeGNlcHRpb24sIHNvdXJjZUNvZGUuY2FjaGVkU2NyaXB0KCkpOwogICAgICAgICBtX3NvdXJj
ZVVSTCA9IHNhdmVkU291cmNlVVJMOwotICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoKTsKKyAg
ICAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCk7CiAgICAgfQogCiAgICAgbV9z
b3VyY2VVUkwgPSBzYXZlZFNvdXJjZVVSTDsKLSAgICByZXR1cm4gU2NyaXB0VmFsdWUoZXhlYy0+
dm0oKSwgcmV0dXJuVmFsdWUpOworICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShl
eGVjLT52bSgpLCByZXR1cm5WYWx1ZSk7CiB9CiAKLVNjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xs
ZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpIAorRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0
U291cmNlQ29kZSYgc291cmNlQ29kZSkgCiB7CiAgICAgcmV0dXJuIGV2YWx1YXRlSW5Xb3JsZChz
b3VyY2VDb2RlLCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CiB9CkBAIC00NTgsMTMgKzQ1OCwx
MyBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNsZWFyU2NyaXB0T2JqZWN0CiAjZW5kaWYKIH0K
IAotU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2Vy
R2VzdHVyZSkKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1
dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2Ny
aXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCiB7CiAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3Ig
Z2VzdHVyZUluZGljYXRvcihmb3JjZVVzZXJHZXN0dXJlID8gRGVmaW5pdGVseVByb2Nlc3NpbmdV
c2VyR2VzdHVyZSA6IFBvc3NpYmx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKICAgICBTY3JpcHRT
b3VyY2VDb2RlIHNvdXJjZUNvZGUoc2NyaXB0LCBtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpKTsK
IAogICAgIGlmICghY2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpIHx8IGlz
UGF1c2VkKCkpCi0gICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOworICAgICAgICByZXR1cm4g
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKTsKIAogICAgIHJldHVybiBldmFsdWF0ZUluV29ybGQo
c291cmNlQ29kZSwgd29ybGQpOwogfQpAQCAtNTAwLDE2ICs1MDAsMTYgQEAgYm9vbCBTY3JpcHRD
b250cm9sbGVyOjpjYW5FeGVjdXRlU2NyaXB0cwogICAgIHJldHVybiBtX2ZyYW1lLmxvYWRlcigp
LmNsaWVudCgpLmFsbG93U2NyaXB0KG1fZnJhbWUuc2V0dGluZ3MoKS5pc1NjcmlwdEVuYWJsZWQo
KSk7CiB9CiAKLVNjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHQoY29u
c3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKK0RlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU3RyaW5nJiBz
Y3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKIHsKICAgICBVc2VyR2VzdHVyZUluZGljYXRv
ciBnZXN0dXJlSW5kaWNhdG9yKGZvcmNlVXNlckdlc3R1cmUgPyBEZWZpbml0ZWx5UHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlIDogUG9zc2libHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwogICAgIHJldHVy
biBleGVjdXRlU2NyaXB0KFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0LCBtX2ZyYW1lLmRvY3VtZW50
KCktPnVybCgpKSk7CiB9CiAKLVNjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVT
Y3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKK0RlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291
cmNlQ29kZSYgc291cmNlQ29kZSkKIHsKICAgICBpZiAoIWNhbkV4ZWN1dGVTY3JpcHRzKEFib3V0
VG9FeGVjdXRlU2NyaXB0KSB8fCBpc1BhdXNlZCgpKQotICAgICAgICByZXR1cm4gU2NyaXB0VmFs
dWUoKTsKKyAgICAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCk7CiAKICAgICBS
ZWY8RnJhbWU+IHByb3RlY3QobV9mcmFtZSk7IC8vIFNjcmlwdCBleGVjdXRpb24gY2FuIGRlc3Ry
b3kgdGhlIGZyYW1lLCBhbmQgdGh1cyB0aGUgU2NyaXB0Q29udHJvbGxlci4KIApAQCAtNTMyLDcg
KzUzMiw3IEBAIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZUlmSmF2YVNjcmkKICAgICBj
b25zdCBpbnQgamF2YXNjcmlwdFNjaGVtZUxlbmd0aCA9IHNpemVvZigiamF2YXNjcmlwdDoiKSAt
IDE7CiAKICAgICBTdHJpbmcgZGVjb2RlZFVSTCA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyh1
cmwuc3RyaW5nKCkpOwotICAgIFNjcmlwdFZhbHVlIHJlc3VsdCA9IGV4ZWN1dGVTY3JpcHQoZGVj
b2RlZFVSTC5zdWJzdHJpbmcoamF2YXNjcmlwdFNjaGVtZUxlbmd0aCkpOworICAgIERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlIHJlc3VsdCA9IGV4ZWN1dGVTY3JpcHQoZGVjb2RlZFVSTC5zdWJzdHJp
bmcoamF2YXNjcmlwdFNjaGVtZUxlbmd0aCkpOwogCiAgICAgLy8gSWYgZXhlY3V0aW5nIHNjcmlw
dCBjYXVzZWQgdGhpcyBmcmFtZSB0byBiZSByZW1vdmVkIGZyb20gdGhlIHBhZ2UsIHdlCiAgICAg
Ly8gZG9uJ3Qgd2FudCB0byB0cnkgdG8gcmVwbGFjZSBpdHMgZG9jdW1lbnQhCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCShyZXZpc2lvbiAx
NjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDEwIEBAIE9CSkNfQ0xBU1MgSlNDb250ZXh0Owog
CiBzdHJ1Y3QgTlBPYmplY3Q7CiAKK25hbWVzcGFjZSBEZXByZWNhdGVkIHsKK2NsYXNzIFNjcmlw
dFZhbHVlOworfQorCiBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsK
ICAgICBjbGFzcyBFeGVjU3RhdGU7CkBAIC01Myw3ICs1Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIEhUTUxQbHVnSW5FbGVtZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBTY3JpcHRT
b3VyY2VDb2RlOwotY2xhc3MgU2NyaXB0VmFsdWU7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNs
YXNzIFdpZGdldDsKIApAQCAtOTQsOSArOTcsOSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9p
ZCBnZXRBbGxXb3JsZHMoVmVjdG9yPFJlZjxET01XcmFwcGVyV29ybGQ+PiYpOwogCi0gICAgU2Ny
aXB0VmFsdWUgZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7Ci0gICAgU2Ny
aXB0VmFsdWUgZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVz
ZXJHZXN0dXJlID0gZmFsc2UpOwotICAgIFNjcmlwdFZhbHVlIGV4ZWN1dGVTY3JpcHRJbldvcmxk
KERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdl
c3R1cmUgPSBmYWxzZSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZXhlY3V0ZVNjcmlw
dChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUg
ZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJl
ID0gZmFsc2UpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGV4ZWN1dGVTY3JpcHRJbldv
cmxkKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNl
ckdlc3R1cmUgPSBmYWxzZSk7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgYXJndW1lbnQgaXMg
YSBKYXZhU2NyaXB0IFVSTC4KICAgICBib29sIGV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoY29uc3Qg
VVJMJiwgU2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMIHNob3VsZFJlcGxhY2VE
b2N1bWVudElmSmF2YVNjcmlwdFVSTCA9IFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCk7
CkBAIC0xMDUsOCArMTA4LDggQEAgcHVibGljOgogICAgIC8vIERhcndpbiBpcyBhbiBleGNlcHRp
b24gdG8gdGhpcyBydWxlOiBpdCBpcyBPSyB0byBjYWxsIHRoaXMgZnVuY3Rpb24gZnJvbSBhbnkg
dGhyZWFkLCBldmVuIHJlZW50cmFudGx5LgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVUaHJl
YWRpbmcoKTsKIAotICAgIFNjcmlwdFZhbHVlIGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNv
ZGUmKTsKLSAgICBTY3JpcHRWYWx1ZSBldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNl
Q29kZSYsIERPTVdyYXBwZXJXb3JsZCYpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGV2
YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSBldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJX
b3JsZCYpOwogCiAgICAgV1RGOjpUZXh0UG9zaXRpb24gZXZlbnRIYW5kbGVyUG9zaXRpb24oKSBj
b25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERl
YnVnU2VydmVyLmNwcAkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw4ICs0MSw4
IEBACiAjaW5jbHVkZSAiUGFnZUNvbnNvbGUuaCIKICNpbmNsdWRlICJTY3JpcHRCcmVha3BvaW50
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RGVidWdMaXN0ZW5lci5oIgotI2luY2x1ZGUgIlNjcmlwdFZh
bHVlLmgiCiAjaW5jbHVkZSAiU291bmQuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1
ZS5oPgogI2luY2x1ZGUgPGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmg+CiAjaW5jbHVkZSA8
cGFyc2VyL1NvdXJjZVByb3ZpZGVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KQEAg
LTEzMCwxNCArMTMwLDE0IEBAIGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OmNhblNldFNjcmlwdFNv
dXIKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OnNldFNj
cmlwdFNvdXJjZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sLCBTdHJpbmcqLCBT
Y3JpcHRWYWx1ZSosIFNjcmlwdE9iamVjdCopCitib29sIFNjcmlwdERlYnVnU2VydmVyOjpzZXRT
Y3JpcHRTb3VyY2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgYm9vbCwgU3RyaW5nKiwg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUqLCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QqKQogewog
ICAgIC8vIEZJWE1FKDQwMzAwKTogaW1wbGVtZW50IHRoaXMuCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCiAKLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnVwZGF0ZUNhbGxTdGFjayhTY3JpcHRWYWx1
ZSopCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjp1cGRhdGVDYWxsU3RhY2soRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUqKQogewogICAgIC8vIFRoaXMgbWV0aG9kIGlzIHVzZWQgZm9yIHJlc3RhcnQg
ZnJhbWUgZmVhdHVyZSB0aGF0IGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQuCiAgICAgLy8gRklYTUUo
NDAzMDApOiBpbXBsZW1lbnQgdGhpcy4KQEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIFNjcmlwdERl
YnVnU2VydmVyOjpkaXNwYXRjaERpZFBhdXNlCiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
anNDYWxsRnJhbWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIH0KLSAgICBsaXN0ZW5lci0+ZGlkUGF1
c2Uoc3RhdGUsIFNjcmlwdFZhbHVlKHN0YXRlLT52bSgpLCBqc0NhbGxGcmFtZSksIFNjcmlwdFZh
bHVlKCkpOworICAgIGxpc3RlbmVyLT5kaWRQYXVzZShzdGF0ZSwgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUoc3RhdGUtPnZtKCksIGpzQ2FsbEZyYW1lKSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUo
KSk7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRGlkQ29udGludWUoU2Ny
aXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIpCkBAIC0zMTksNyArMzE5LDcgQEAgdm9pZCBTY3Jp
cHREZWJ1Z1NlcnZlcjo6Y2xlYXJDb21waWxlZFNjcgogICAgIC8vIEZJWE1FKDg5NjUyKTogaW1w
bGVtZW50IHRoaXMuCiB9CiAKLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJ1blNjcmlwdChKU0M6
OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYsIFNjcmlwdFZhbHVlKiwgYm9vbCosIFN0cmluZyop
Cit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpydW5TY3JpcHQoSlNDOjpFeGVjU3RhdGUqLCBjb25z
dCBTdHJpbmcmLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSosIGJvb2wqLCBTdHJpbmcqKQogewog
ICAgIC8vIEZJWE1FKDg5NjUyKTogaW1wbGVtZW50IHRoaXMuCiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgJKHJldmlzaW9uIDE2MDQw
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJTY3JpcHREZWJ1Z0xpc3Rl
bmVyLmgiCiAjaW5jbHVkZSAiU291cmNlSUQuaCIKICNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1
ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgogI2luY2x1ZGUgPGRlYnVnZ2VyL0RlYnVnZ2Vy
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpA
QCAtNTAsMTEgKzUxLDggQEAgY2xhc3MgRGVidWdnZXJDYWxsRnJhbWU7CiBjbGFzcyBKU0dsb2Jh
bE9iamVjdDsKIGNsYXNzIEV4ZWNTdGF0ZTsKIH0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgU2NyaXB0RGVidWdMaXN0ZW5lcjsKLWNsYXNzIFNjcmlwdE9iamVjdDsKLWNsYXNzIFNjcmlw
dFZhbHVlOworbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTY3JpcHREZWJ1Z1NlcnZlciA6
IHB1YmxpYyBKU0M6OkRlYnVnZ2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY3JpcHRE
ZWJ1Z1NlcnZlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNjQsOCArNjIsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjbGVhckJyZWFrcG9pbnRzKCk7CiAKICAgICBib29sIGNhblNldFNj
cmlwdFNvdXJjZSgpOwotICAgIGJvb2wgc2V0U2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYgc291
cmNlSUQsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudCwgYm9vbCBwcmV2aWV3LCBTdHJpbmcqIGVy
cm9yLCBTY3JpcHRWYWx1ZSogbmV3Q2FsbEZyYW1lcywgU2NyaXB0T2JqZWN0KiByZXN1bHQpOwot
ICAgIHZvaWQgdXBkYXRlQ2FsbFN0YWNrKFNjcmlwdFZhbHVlKiBjYWxsRnJhbWUpOworICAgIGJv
b2wgc2V0U2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFN0cmluZyYg
bmV3Q29udGVudCwgYm9vbCBwcmV2aWV3LCBTdHJpbmcqIGVycm9yLCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSogbmV3Q2FsbEZyYW1lcywgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KiByZXN1bHQp
OworICAgIHZvaWQgdXBkYXRlQ2FsbFN0YWNrKERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKiBjYWxs
RnJhbWUpOwogCiAgICAgYm9vbCBjYXVzZXNSZWNvbXBpbGF0aW9uKCkgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIGJvb2wgc3VwcG9ydHNTZXBhcmF0ZVNjcmlwdENvbXBpbGF0aW9uQW5kRXhlY3V0aW9u
KCkgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTgyLDcgKzgwLDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBjb21waWxlU2NyaXB0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9u
LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgU3RyaW5nKiBzY3JpcHRJRCwgU3RyaW5nKiBleGNl
cHRpb25NZXNzYWdlKTsKICAgICB2b2lkIGNsZWFyQ29tcGlsZWRTY3JpcHRzKCk7Ci0gICAgdm9p
ZCBydW5TY3JpcHQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHNjcmlwdElELCBTY3Jp
cHRWYWx1ZSogcmVzdWx0LCBib29sKiB3YXNUaHJvd24sIFN0cmluZyogZXhjZXB0aW9uTWVzc2Fn
ZSk7CisgICAgdm9pZCBydW5TY3JpcHQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHNj
cmlwdElELCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSogcmVzdWx0LCBib29sKiB3YXNUaHJvd24s
IFN0cmluZyogZXhjZXB0aW9uTWVzc2FnZSk7CiAKICAgICBjbGFzcyBUYXNrIHsKICAgICAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAJKHJldmlzaW9uIDE2MDQwNCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMTU0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2Ny
aXB0RnVuY3Rpb25DYWxsLmgiCi0KLSNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIK
LSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgotCi0jaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6
OmFwcGVuZEFyZ3VtZW50KGNvbnN0IFNjcmlwdE9iamVjdCYgYXJndW1lbnQpCi17Ci0gICAgaWYg
KGFyZ3VtZW50LnNjcmlwdFN0YXRlKCkgIT0gbV9leGVjKSB7Ci0gICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fYXJndW1lbnRzLmFwcGVu
ZChhcmd1bWVudC5qc09iamVjdCgpKTsKLX0KLQotdm9pZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5k
bGVyOjphcHBlbmRBcmd1bWVudChjb25zdCBTY3JpcHRWYWx1ZSYgYXJndW1lbnQpCi17Ci0gICAg
bV9hcmd1bWVudHMuYXBwZW5kKGFyZ3VtZW50LmpzVmFsdWUoKSk7Ci19Ci0KLXZvaWQgU2NyaXB0
Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQoY29uc3QgU3RyaW5nJiBhcmd1bWVu
dCkKLXsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhtX2V4ZWMpOwotICAgIG1fYXJndW1lbnRzLmFw
cGVuZChqc1N0cmluZ1dpdGhDYWNoZShtX2V4ZWMsIGFyZ3VtZW50KSk7Ci19Ci0KLXZvaWQgU2Ny
aXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQoY29uc3QgY2hhciogYXJndW1l
bnQpCi17Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2sobV9leGVjKTsKLSAgICBtX2FyZ3VtZW50cy5h
cHBlbmQoanNTdHJpbmcobV9leGVjLCBTdHJpbmcoYXJndW1lbnQpKSk7Ci19Ci0KLXZvaWQgU2Ny
aXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQoSlNDOjpKU1ZhbHVlIGFyZ3Vt
ZW50KQotewotICAgIG1fYXJndW1lbnRzLmFwcGVuZChhcmd1bWVudCk7Ci19Ci0KLXZvaWQgU2Ny
aXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQobG9uZyBhcmd1bWVudCkKLXsK
LSAgICBKU0xvY2tIb2xkZXIgbG9jayhtX2V4ZWMpOwotICAgIG1fYXJndW1lbnRzLmFwcGVuZChq
c051bWJlcihhcmd1bWVudCkpOwotfQotCi12b2lkIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6
OmFwcGVuZEFyZ3VtZW50KGxvbmcgbG9uZyBhcmd1bWVudCkKLXsKLSAgICBKU0xvY2tIb2xkZXIg
bG9jayhtX2V4ZWMpOwotICAgIG1fYXJndW1lbnRzLmFwcGVuZChqc051bWJlcihhcmd1bWVudCkp
OwotfQotCi12b2lkIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KHVu
c2lnbmVkIGludCBhcmd1bWVudCkKLXsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhtX2V4ZWMpOwot
ICAgIG1fYXJndW1lbnRzLmFwcGVuZChqc051bWJlcihhcmd1bWVudCkpOwotfQotCi12b2lkIFNj
cmlwdENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KHVuc2lnbmVkIGxvbmcgYXJn
dW1lbnQpCi17Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2sobV9leGVjKTsKLSAgICBtX2FyZ3VtZW50
cy5hcHBlbmQoanNOdW1iZXIoYXJndW1lbnQpKTsKLX0KLQotdm9pZCBTY3JpcHRDYWxsQXJndW1l
bnRIYW5kbGVyOjphcHBlbmRBcmd1bWVudChpbnQgYXJndW1lbnQpCi17Ci0gICAgSlNMb2NrSG9s
ZGVyIGxvY2sobV9leGVjKTsKLSAgICBtX2FyZ3VtZW50cy5hcHBlbmQoanNOdW1iZXIoYXJndW1l
bnQpKTsKLX0KLQotdm9pZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1bWVu
dChib29sIGFyZ3VtZW50KQotewotICAgIG1fYXJndW1lbnRzLmFwcGVuZChqc0Jvb2xlYW4oYXJn
dW1lbnQpKTsKLX0KLQotU2NyaXB0RnVuY3Rpb25DYWxsOjpTY3JpcHRGdW5jdGlvbkNhbGwoY29u
c3QgU2NyaXB0T2JqZWN0JiB0aGlzT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgOiBT
Y3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyKHRoaXNPYmplY3Quc2NyaXB0U3RhdGUoKSkKLSAgICAs
IG1fdGhpc09iamVjdCh0aGlzT2JqZWN0KQotICAgICwgbV9uYW1lKG5hbWUpCi17Ci19Ci0KLVNj
cmlwdFZhbHVlIFNjcmlwdEZ1bmN0aW9uQ2FsbDo6Y2FsbChib29sJiBoYWRFeGNlcHRpb24pCi17
Ci0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBtX3RoaXNPYmplY3QuanNPYmplY3QoKTsKLQot
ICAgIEpTTG9ja0hvbGRlciBsb2NrKG1fZXhlYyk7Ci0KLSAgICBKU1ZhbHVlIGZ1bmN0aW9uID0g
dGhpc09iamVjdC0+Z2V0KG1fZXhlYywgSWRlbnRpZmllcihtX2V4ZWMsIG1fbmFtZSkpOwotICAg
IGlmIChtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7Ci0gICAgICAgIGhhZEV4Y2VwdGlvbiA9IHRy
dWU7Ci0gICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOwotICAgIH0KLQotICAgIENhbGxEYXRh
IGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24s
IGNhbGxEYXRhKTsKLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQotICAgICAgICBy
ZXR1cm4gU2NyaXB0VmFsdWUoKTsKLQotICAgIEpTVmFsdWUgcmVzdWx0OwotICAgIGlmIChpc01h
aW5UaHJlYWQoKSkKLSAgICAgICAgcmVzdWx0ID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxs
KG1fZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc09iamVjdCwgbV9hcmd1
bWVudHMpOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gSlNDOjpjYWxsKG1fZXhlYywgZnVu
Y3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc09iamVjdCwgbV9hcmd1bWVudHMpOwotCi0g
ICAgaWYgKG1fZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgaGFkRXhjZXB0aW9uID0g
dHJ1ZTsKLSAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7Ci0gICAgfQotCi0gICAgcmV0dXJu
IFNjcmlwdFZhbHVlKG1fZXhlYy0+dm0oKSwgcmVzdWx0KTsKLX0KLQotU2NyaXB0VmFsdWUgU2Ny
aXB0RnVuY3Rpb25DYWxsOjpjYWxsKCkKLXsKLSAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNl
OwotICAgIHJldHVybiBjYWxsKGhhZEV4Y2VwdGlvbik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2Fs
bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0
aW9uQ2FsbC5oCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRGdW5jdGlvbkNhbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMSw4NyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAq
IGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0g
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBTY3JpcHRGdW5jdGlvbkNhbGxfaAotI2RlZmluZSBTY3JpcHRGdW5jdGlvbkNhbGxfaAot
Ci0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCi0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKLQot
I2luY2x1ZGUgPHJ1bnRpbWUvQXJnTGlzdC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLSAgICBjbGFzcyBKU1ZhbHVlOwotfQotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgU2NyaXB0VmFsdWU7Ci0KLSAgICBjbGFzcyBTY3JpcHRD
YWxsQXJndW1lbnRIYW5kbGVyIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFNjcmlwdENhbGxBcmd1
bWVudEhhbmRsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlKSA6IG1fZXhlYyhzdGF0ZSkgeyB9Ci0K
LSAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVudChjb25zdCBTY3JpcHRPYmplY3QmKTsKLSAgICAg
ICAgdm9pZCBhcHBlbmRBcmd1bWVudChjb25zdCBTY3JpcHRWYWx1ZSYpOwotICAgICAgICB2b2lk
IGFwcGVuZEFyZ3VtZW50KGNvbnN0IGNoYXIqKTsKLSAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVu
dChjb25zdCBTdHJpbmcmKTsKLSAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVudChKU0M6OkpTVmFs
dWUpOwotICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGxvbmcpOwotICAgICAgICB2b2lkIGFw
cGVuZEFyZ3VtZW50KGxvbmcgbG9uZyk7Ci0gICAgICAgIHZvaWQgYXBwZW5kQXJndW1lbnQodW5z
aWduZWQgaW50KTsKLSAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVudCh1bnNpZ25lZCBsb25nKTsK
LSAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVudChpbnQpOwotICAgICAgICB2b2lkIGFwcGVuZEFy
Z3VtZW50KGJvb2wpOwotCi0gICAgcHJvdGVjdGVkOgotICAgICAgICBKU0M6Ok1hcmtlZEFyZ3Vt
ZW50QnVmZmVyIG1fYXJndW1lbnRzOwotICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogbV9leGVjOwot
Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgLy8gTWFya2VkQXJndW1lbnRCdWZmZXIgbXVzdCBiZSBz
dGFjayBhbGxvY2F0ZWQsIHNvIHByZXZlbnQgaGVhcAotICAgICAgICAvLyBhbGxvYyBvZiBTY3Jp
cHRGdW5jdGlvbkNhbGwgYXMgd2VsbC4KLSAgICAgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVf
dCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KDB4YmFkYmVlZik7IH0KLSAgICAgICAgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90KSB7IEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMHhiYWRi
ZWVmKTsgfQotICAgIH07Ci0KLSAgICBjbGFzcyBTY3JpcHRGdW5jdGlvbkNhbGwgOiBwdWJsaWMg
U2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlciB7Ci0gICAgcHVibGljOgotICAgICAgICBTY3JpcHRG
dW5jdGlvbkNhbGwoY29uc3QgU2NyaXB0T2JqZWN0JiB0aGlzT2JqZWN0LCBjb25zdCBTdHJpbmcm
IG5hbWUpOwotICAgICAgICBTY3JpcHRWYWx1ZSBjYWxsKGJvb2wmIGhhZEV4Y2VwdGlvbik7Ci0g
ICAgICAgIFNjcmlwdFZhbHVlIGNhbGwoKTsKLQotICAgIHByb3RlY3RlZDoKLSAgICAgICAgU2Ny
aXB0T2JqZWN0IG1fdGhpc09iamVjdDsKLSAgICAgICAgU3RyaW5nIG1fbmFtZTsKLSAgICB9Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBTY3JpcHRGdW5jdGlvbkNhbGwK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2Jq
ZWN0LmNwcAkocmV2aXNpb24gMTYwNDA0KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRPYmplY3QuY3BwOjE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdEdsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisKKyNpbmNsdWRl
ICJKU0RPTUJpbmRpbmcuaCIKKworI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CisKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SKQorI2luY2x1ZGUgIkpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgiCisj
ZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitT
Y3JpcHRPYmplY3Q6OlNjcmlwdE9iamVjdChKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIEpT
T2JqZWN0KiBvYmplY3QpCisgICAgOiBTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZS0+dm0oKSwgb2Jq
ZWN0KQorICAgICwgbV9zY3JpcHRTdGF0ZShzY3JpcHRTdGF0ZSkKK3sKK30KKworU2NyaXB0T2Jq
ZWN0OjpTY3JpcHRPYmplY3QoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3Jp
cHRWYWx1ZSYgc2NyaXB0VmFsdWUpCisgICAgOiBTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZS0+dm0o
KSwgc2NyaXB0VmFsdWUuanNWYWx1ZSgpKQorICAgICwgbV9zY3JpcHRTdGF0ZShzY3JpcHRTdGF0
ZSkKK3sKK30KKworc3RhdGljIGJvb2wgaGFuZGxlRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiBz
Y3JpcHRTdGF0ZSkKK3sKKyAgICBpZiAoIXNjcmlwdFN0YXRlLT5oYWRFeGNlcHRpb24oKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXBvcnRFeGNlcHRpb24oc2NyaXB0U3RhdGUsIHNj
cmlwdFN0YXRlLT5leGNlcHRpb24oKSk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFNj
cmlwdEdsb2JhbE9iamVjdDo6c2V0KEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3Qg
Y2hhciogbmFtZSwgY29uc3QgU2NyaXB0T2JqZWN0JiB2YWx1ZSkKK3sKKyAgICBKU0xvY2tIb2xk
ZXIgbG9jayhzY3JpcHRTdGF0ZSk7CisgICAgc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKS0+cHV0RGlyZWN0KHNjcmlwdFN0YXRlLT52bSgpLCBJZGVudGlmaWVyKHNjcmlwdFN0YXRl
LCBuYW1lKSwgdmFsdWUuanNPYmplY3QoKSk7CisgICAgcmV0dXJuIGhhbmRsZUV4Y2VwdGlvbihz
Y3JpcHRTdGF0ZSk7Cit9CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorYm9vbCBTY3JpcHRHbG9i
YWxPYmplY3Q6OnNldChKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5h
bWUsIEluc3BlY3RvckZyb250ZW5kSG9zdCogdmFsdWUpCit7CisgICAgSlNMb2NrSG9sZGVyIGxv
Y2soc2NyaXB0U3RhdGUpOworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpKTsKKyAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdChzY3JpcHRTdGF0ZS0+dm0oKSwgSWRl
bnRpZmllcihzY3JpcHRTdGF0ZSwgbmFtZSksIHRvSlMoc2NyaXB0U3RhdGUsIGdsb2JhbE9iamVj
dCwgdmFsdWUpKTsKKyAgICByZXR1cm4gaGFuZGxlRXhjZXB0aW9uKHNjcmlwdFN0YXRlKTsKK30K
KyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQorCitib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6
Z2V0KEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgU2NyaXB0
T2JqZWN0JiB2YWx1ZSkKK3sKKyAgICBKU0xvY2tIb2xkZXIgbG9jayhzY3JpcHRTdGF0ZSk7Cisg
ICAgSlNWYWx1ZSBqc1ZhbHVlID0gc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+
Z2V0KHNjcmlwdFN0YXRlLCBJZGVudGlmaWVyKHNjcmlwdFN0YXRlLCBuYW1lKSk7CisgICAgaWYg
KCFqc1ZhbHVlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWpzVmFsdWUuaXNP
YmplY3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdmFsdWUgPSBTY3JpcHRPYmpl
Y3Qoc2NyaXB0U3RhdGUsIGFzT2JqZWN0KGpzVmFsdWUpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OnJlbW92ZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0
U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUpCit7CisgICAgSlNMb2NrSG9sZGVyIGxvY2soc2NyaXB0
U3RhdGUpOworICAgIHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm1ldGhvZFRh
YmxlKCktPmRlbGV0ZVByb3BlcnR5KHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCks
IHNjcmlwdFN0YXRlLCBJZGVudGlmaWVyKHNjcmlwdFN0YXRlLCBuYW1lKSk7CisgICAgcmV0dXJu
IGhhbmRsZUV4Y2VwdGlvbihzY3JpcHRTdGF0ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0R2xvYmFs
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0R2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksMTAgKzI5LDEwIEBA
CiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgor
I2luY2x1ZGUgIlNjcmlwdEdsb2JhbE9iamVjdC5oIgogCiAjaW5jbHVkZSAiSlNET01CaW5kaW5n
LmgiCi0KKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3QuaD4KICNpbmNsdWRlIDxydW50
aW1lL0pTTG9jay5oPgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKQEAgLTQzLDE4ICs0Myw2IEBA
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2NyaXB0T2Jq
ZWN0OjpTY3JpcHRPYmplY3QoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBKU09iamVjdCog
b2JqZWN0KQotICAgIDogU2NyaXB0VmFsdWUoc2NyaXB0U3RhdGUtPnZtKCksIG9iamVjdCkKLSAg
ICAsIG1fc2NyaXB0U3RhdGUoc2NyaXB0U3RhdGUpCi17Ci19Ci0KLVNjcmlwdE9iamVjdDo6U2Ny
aXB0T2JqZWN0KEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0VmFsdWUm
IHNjcmlwdFZhbHVlKQotICAgIDogU2NyaXB0VmFsdWUoc2NyaXB0U3RhdGUtPnZtKCksIHNjcmlw
dFZhbHVlLmpzVmFsdWUoKSkKLSAgICAsIG1fc2NyaXB0U3RhdGUoc2NyaXB0U3RhdGUpCi17Ci19
Ci0KIHN0YXRpYyBib29sIGhhbmRsZUV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3Rh
dGUpCiB7CiAgICAgaWYgKCFzY3JpcHRTdGF0ZS0+aGFkRXhjZXB0aW9uKCkpCkBAIC02NCw3ICs1
Miw3IEBAIHN0YXRpYyBib29sIGhhbmRsZUV4Y2VwdGlvbihKU0M6OkV4ZWNTdGEKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLWJvb2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQoSlNDOjpFeGVjU3Rh
dGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBTY3JpcHRPYmplY3QmIHZh
bHVlKQorYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OnNldChKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0
U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYg
dmFsdWUpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soc2NyaXB0U3RhdGUpOwogICAgIHNjcmlw
dFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnB1dERpcmVjdChzY3JpcHRTdGF0ZS0+dm0o
KSwgSWRlbnRpZmllcihzY3JpcHRTdGF0ZSwgbmFtZSksIHZhbHVlLmpzT2JqZWN0KCkpOwpAQCAt
ODEsNyArNjksNyBAQCBib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KEpTQzo6RXhlY1N0CiB9
CiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKIAotYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6
OmdldChKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUsIFNjcmlw
dE9iamVjdCYgdmFsdWUpCitib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6Z2V0KEpTQzo6RXhlY1N0
YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgRGVwcmVjYXRlZDo6U2NyaXB0T2Jq
ZWN0JiB2YWx1ZSkKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhzY3JpcHRTdGF0ZSk7CiAgICAg
SlNWYWx1ZSBqc1ZhbHVlID0gc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Z2V0
KHNjcmlwdFN0YXRlLCBJZGVudGlmaWVyKHNjcmlwdFN0YXRlLCBuYW1lKSk7CkBAIC05MSw3ICs3
OSw3IEBAIGJvb2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpnZXQoSlNDOjpFeGVjU3QKICAgICBpZiAo
IWpzVmFsdWUuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdmFsdWUg
PSBTY3JpcHRPYmplY3Qoc2NyaXB0U3RhdGUsIGFzT2JqZWN0KGpzVmFsdWUpKTsKKyAgICB2YWx1
ZSA9IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdChzY3JpcHRTdGF0ZSwgYXNPYmplY3QoanNWYWx1
ZSkpOwogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMTYwNDA0KQkoZnJvbSBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg6MTYwNDA0KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOCwgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2NyaXB0Q2FsbFN0YWNrX2gKKyNk
ZWZpbmUgU2NyaXB0Q2FsbFN0YWNrX2gKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisjaW5jbHVk
ZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAiU2NyaXB0Q2Fs
bEZyYW1lLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBJbnNwZWN0b3JBcnJheTsKKworY2xhc3MgU2NyaXB0Q2FsbFN0YWNrIDogcHVibGlj
IFJlZkNvdW50ZWQ8U2NyaXB0Q2FsbFN0YWNrPiB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0
IHNpemVfdCBtYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlID0gMjAwOworICAgIAorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRlKFZlY3RvcjxTY3JpcHRDYWxsRnJh
bWU+Jik7CisKKyAgICB+U2NyaXB0Q2FsbFN0YWNrKCk7CisKKyAgICBjb25zdCBTY3JpcHRDYWxs
RnJhbWUgJmF0KHNpemVfdCkgY29uc3Q7CisgICAgc2l6ZV90IHNpemUoKSBjb25zdDsKKworICAg
IGJvb2wgaXNFcXVhbChTY3JpcHRDYWxsU3RhY2sqKSBjb25zdDsKKworI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCisgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNv
bnNvbGU6OkNhbGxGcmFtZT4+IGJ1aWxkSW5zcGVjdG9yQXJyYXkoKSBjb25zdDsKKyNlbmRpZgor
Citwcml2YXRlOgorICAgIFNjcmlwdENhbGxTdGFjayhWZWN0b3I8U2NyaXB0Q2FsbEZyYW1lPiYp
OworCisgICAgVmVjdG9yPFNjcmlwdENhbGxGcmFtZT4gbV9mcmFtZXM7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTY3JpcHRDYWxsU3RhY2tfaApJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0LmgJKHdvcmtp
bmcgY29weSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICsxLDEwIEBACiAvKgotICogQ29weXJpZ2h0IChj
KSAyMDA4LCAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKKyAqIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQogICogbWV0OgotICogCisgKgogICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKICAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KICAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKQEAgLTE0LDcgKzE0LDcgQEAKICAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKICAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCiAgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICogCisgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwogICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKICAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgpAQCAtMjgsNDUgKzI4LDQwIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5k
ZWYgU2NyaXB0Q2FsbFN0YWNrX2gKLSNkZWZpbmUgU2NyaXB0Q2FsbFN0YWNrX2gKKyNpZm5kZWYg
U2NyaXB0R2xvYmFsT2JqZWN0X2gKKyNkZWZpbmUgU2NyaXB0R2xvYmFsT2JqZWN0X2gKIAotI2lm
IEVOQUJMRShJTlNQRUNUT1IpCi0jaW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKLSNl
bmRpZgotCi0jaW5jbHVkZSAiU2NyaXB0Q2FsbEZyYW1lLmgiCi0jaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KK25hbWVzcGFjZSBEZXByZWNhdGVkIHsKK2NsYXNzIFNjcmlwdE9iamVjdDsKK30KKworbmFt
ZXNwYWNlIEpTQyB7CitjbGFzcyBFeGVjU3RhdGU7Cit9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgSW5zcGVjdG9yQXJyYXk7CitjbGFzcyBJbmplY3RlZFNjcmlwdEhvc3Q7CitjbGFz
cyBJbnNwZWN0b3JGcm9udGVuZEhvc3Q7CitjbGFzcyBNZWRpYUNvbnRyb2xzSG9zdDsKIAotY2xh
c3MgU2NyaXB0Q2FsbFN0YWNrIDogcHVibGljIFJlZkNvdW50ZWQ8U2NyaXB0Q2FsbFN0YWNrPiB7
CitjbGFzcyBTY3JpcHRHbG9iYWxPYmplY3QgewogcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBz
aXplX3QgbWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSA9IDIwMDsKLSAgICAKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNyZWF0ZShWZWN0b3I8U2NyaXB0Q2FsbEZyYW1l
PiYpOwotCi0gICAgflNjcmlwdENhbGxTdGFjaygpOwotCi0gICAgY29uc3QgU2NyaXB0Q2FsbEZy
YW1lICZhdChzaXplX3QpIGNvbnN0OwotICAgIHNpemVfdCBzaXplKCkgY29uc3Q7Ci0KLSAgICBi
b29sIGlzRXF1YWwoU2NyaXB0Q2FsbFN0YWNrKikgY29uc3Q7Ci0KKyAgICBzdGF0aWMgYm9vbCBz
ZXQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBEZXByZWNhdGVkOjpT
Y3JpcHRPYmplY3QmKTsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIFBhc3NSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDYWxsRnJhbWU+PiBidWlsZElu
c3BlY3RvckFycmF5KCkgY29uc3Q7CisgICAgc3RhdGljIGJvb2wgc2V0KEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgY2hhciogbmFtZSwgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Kik7CisgICAgc3RhdGlj
IGJvb2wgc2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgSW5qZWN0ZWRTY3Jp
cHRIb3N0Kik7CisjZW5kaWYKKyNpZiBFTkFCTEUoTUVESUFfQ09OVFJPTFNfU0NSSVBUKQorICAg
IHN0YXRpYyBib29sIHNldChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIE1lZGlh
Q29udHJvbHNIb3N0Kik7CiAjZW5kaWYKIAorICAgIHN0YXRpYyBib29sIGdldChKU0M6OkV4ZWNT
dGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYpOworICAg
IHN0YXRpYyBib29sIHJlbW92ZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUpOwog
cHJpdmF0ZToKLSAgICBTY3JpcHRDYWxsU3RhY2soVmVjdG9yPFNjcmlwdENhbGxGcmFtZT4mKTsK
LQotICAgIFZlY3RvcjxTY3JpcHRDYWxsRnJhbWU+IG1fZnJhbWVzOworICAgIFNjcmlwdEdsb2Jh
bE9iamVjdCgpIHsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8g
U2NyaXB0Q2FsbFN0YWNrX2gKKyNlbmRpZiAvLyBTY3JpcHRHbG9iYWxPYmplY3RfaApJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwCShyZXZpc2lvbiAx
NjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDEwNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIlNjcmlwdE9iamVjdC5oIgotCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0KLSNpbmNs
dWRlIDxydW50aW1lL0pTTG9jay5oPgotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSNpbmNsdWRl
ICJKU0luc3BlY3RvckZyb250ZW5kSG9zdC5oIgotI2VuZGlmCi0KLXVzaW5nIG5hbWVzcGFjZSBK
U0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU2NyaXB0T2JqZWN0OjpTY3JpcHRPYmplY3Qo
SlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBKU09iamVjdCogb2JqZWN0KQotICAgIDogU2Ny
aXB0VmFsdWUoc2NyaXB0U3RhdGUtPnZtKCksIG9iamVjdCkKLSAgICAsIG1fc2NyaXB0U3RhdGUo
c2NyaXB0U3RhdGUpCi17Ci19Ci0KLVNjcmlwdE9iamVjdDo6U2NyaXB0T2JqZWN0KEpTQzo6RXhl
Y1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0VmFsdWUmIHNjcmlwdFZhbHVlKQotICAg
IDogU2NyaXB0VmFsdWUoc2NyaXB0U3RhdGUtPnZtKCksIHNjcmlwdFZhbHVlLmpzVmFsdWUoKSkK
LSAgICAsIG1fc2NyaXB0U3RhdGUoc2NyaXB0U3RhdGUpCi17Ci19Ci0KLXN0YXRpYyBib29sIGhh
bmRsZUV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUpCi17Ci0gICAgaWYgKCFz
Y3JpcHRTdGF0ZS0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAg
cmVwb3J0RXhjZXB0aW9uKHNjcmlwdFN0YXRlLCBzY3JpcHRTdGF0ZS0+ZXhjZXB0aW9uKCkpOwot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OnNldChKU0M6
OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFNjcmlwdE9i
amVjdCYgdmFsdWUpCi17Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2soc2NyaXB0U3RhdGUpOwotICAg
IHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnB1dERpcmVjdChzY3JpcHRTdGF0
ZS0+dm0oKSwgSWRlbnRpZmllcihzY3JpcHRTdGF0ZSwgbmFtZSksIHZhbHVlLmpzT2JqZWN0KCkp
OwotICAgIHJldHVybiBoYW5kbGVFeGNlcHRpb24oc2NyaXB0U3RhdGUpOwotfQotCi0jaWYgRU5B
QkxFKElOU1BFQ1RPUikKLWJvb2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQoSlNDOjpFeGVjU3Rh
dGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBJbnNwZWN0b3JGcm9udGVuZEhvc3Qq
IHZhbHVlKQotewotICAgIEpTTG9ja0hvbGRlciBsb2NrKHNjcmlwdFN0YXRlKTsKLSAgICBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
c2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7Ci0gICAgZ2xvYmFsT2JqZWN0LT5w
dXREaXJlY3Qoc2NyaXB0U3RhdGUtPnZtKCksIElkZW50aWZpZXIoc2NyaXB0U3RhdGUsIG5hbWUp
LCB0b0pTKHNjcmlwdFN0YXRlLCBnbG9iYWxPYmplY3QsIHZhbHVlKSk7Ci0gICAgcmV0dXJuIGhh
bmRsZUV4Y2VwdGlvbihzY3JpcHRTdGF0ZSk7Ci19Ci0jZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RP
UikKLQotYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OmdldChKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0
U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUsIFNjcmlwdE9iamVjdCYgdmFsdWUpCi17Ci0gICAgSlNM
b2NrSG9sZGVyIGxvY2soc2NyaXB0U3RhdGUpOwotICAgIEpTVmFsdWUganNWYWx1ZSA9IHNjcmlw
dFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdldChzY3JpcHRTdGF0ZSwgSWRlbnRpZmll
cihzY3JpcHRTdGF0ZSwgbmFtZSkpOwotICAgIGlmICghanNWYWx1ZSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgaWYgKCFqc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIHZhbHVlID0gU2NyaXB0T2JqZWN0KHNjcmlwdFN0YXRlLCBhc09iamVjdChq
c1ZhbHVlKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgU2NyaXB0R2xvYmFsT2JqZWN0
OjpyZW1vdmUoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lKQot
ewotICAgIEpTTG9ja0hvbGRlciBsb2NrKHNjcmlwdFN0YXRlKTsKLSAgICBzY3JpcHRTdGF0ZS0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eShzY3Jp
cHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzY3JpcHRTdGF0ZSwgSWRlbnRpZmllcihz
Y3JpcHRTdGF0ZSwgbmFtZSkpOwotICAgIHJldHVybiBoYW5kbGVFeGNlcHRpb24oc2NyaXB0U3Rh
dGUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaAkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNzAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0Ogot
ICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0g
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgU2NyaXB0T2JqZWN0X2gKLSNkZWZpbmUgU2NyaXB0T2JqZWN0X2gKLQot
I2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKLQotI2lu
Y2x1ZGUgPGhlYXAvU3Ryb25nLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU09iamVjdC5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZEhvc3Q7Ci0K
LSAgICBjbGFzcyBTY3JpcHRPYmplY3QgOiBwdWJsaWMgU2NyaXB0VmFsdWUgewotICAgIHB1Ymxp
YzoKLSAgICAgICAgU2NyaXB0T2JqZWN0KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCop
OwotICAgICAgICBTY3JpcHRPYmplY3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTY3JpcHRWYWx1
ZSYpOwotICAgICAgICBTY3JpcHRPYmplY3QoKSA6IG1fc2NyaXB0U3RhdGUoMCkgeyB9Ci0gICAg
ICAgIEpTQzo6SlNPYmplY3QqIGpzT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gYXNPYmplY3QoanNW
YWx1ZSgpKTsgfQotICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUoKSBjb25zdCB7
IHJldHVybiBtX3NjcmlwdFN0YXRlOyB9Ci0KLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIEpTQzo6
RXhlY1N0YXRlKiBtX3NjcmlwdFN0YXRlOwotICAgIH07Ci0KLSAgICBjbGFzcyBTY3JpcHRHbG9i
YWxPYmplY3QgewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIGJvb2wgc2V0KEpTQzo6RXhl
Y1N0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgY29uc3QgU2NyaXB0T2JqZWN0Jik7Ci0jaWYgRU5B
QkxFKElOU1BFQ1RPUikKLSAgICAgICAgc3RhdGljIGJvb2wgc2V0KEpTQzo6RXhlY1N0YXRlKiwg
Y29uc3QgY2hhciogbmFtZSwgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Kik7Ci0jZW5kaWYKLSAgICAg
ICAgc3RhdGljIGJvb2wgZ2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgU2Ny
aXB0T2JqZWN0Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIHJlbW92ZShKU0M6OkV4ZWNTdGF0ZSos
IGNvbnN0IGNoYXIqIG5hbWUpOwotICAgIHByaXZhdGU6Ci0gICAgICAgIFNjcmlwdEdsb2JhbE9i
amVjdCgpIHsgfQotICAgIH07Ci0KLX0KLQotI2VuZGlmIC8vIFNjcmlwdE9iamVjdF9oCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmNwcAkocmV2aXNp
b24gMTYwNDA0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDggKzMwLDggQEAKIAogI2luY2x1ZGUgIlNjcmlwdFBy
b2ZpbGUuaCIKIAotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkpTRE9N
QmluZGluZy5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNs
dWRlIDxwcm9maWxlci9Qcm9maWxlLmg+CiAjaW5jbHVkZSA8cHJvZmlsZXIvUHJvZmlsZU5vZGUu
aD4KIApAQCAtNzQsMTYgKzc0LDE2IEBAIGRvdWJsZSBTY3JpcHRQcm9maWxlOjppZGxlVGltZSgp
IGNvbnN0CiB9CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotc3RhdGljIFBhc3NSZWZQdHI8VHlw
ZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZT4gYnVpbGRJbnNwZWN0b3JPYmplY3RG
b3IoY29uc3QgSlNDOjpQcm9maWxlTm9kZSogbm9kZSkKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZT4gYnVpbGRJbnNwZWN0
b3JPYmplY3RGb3IoY29uc3QgSlNDOjpQcm9maWxlTm9kZSogbm9kZSkKIHsKICAgICB0eXBlZGVm
IFZlY3RvcjxSZWZQdHI8SlNDOjpQcm9maWxlTm9kZT4+IFByb2ZpbGVOb2Rlc0xpc3Q7CiAgICAg
Y29uc3QgUHJvZmlsZU5vZGVzTGlzdCYgbm9kZUNoaWxkcmVuID0gbm9kZS0+Y2hpbGRyZW4oKTsK
ICAgICBQcm9maWxlTm9kZXNMaXN0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBub2RlQ2hpbGRyZW4u
ZW5kKCk7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UHJvZmls
ZXI6OkNQVVByb2ZpbGVOb2RlPj4gY2hpbGRyZW4gPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1
aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZT46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9m
aWxlcjo6Q1BVUHJvZmlsZU5vZGU+PiBjaGlsZHJlbiA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZT46
OmNyZWF0ZSgpOwogICAgIGZvciAoUHJvZmlsZU5vZGVzTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXRl
ciA9IG5vZGVDaGlsZHJlbi5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKQogICAgICAgICBj
aGlsZHJlbi0+YWRkSXRlbShidWlsZEluc3BlY3Rvck9iamVjdEZvcihpdGVyLT5nZXQoKSkpOwog
Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+IHJlc3Vs
dCA9IFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU6OmNyZWF0ZSgpCisgICAg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZT4g
cmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2Rl
OjpjcmVhdGUoKQogICAgICAgICAuc2V0RnVuY3Rpb25OYW1lKG5vZGUtPmZ1bmN0aW9uTmFtZSgp
KQogICAgICAgICAuc2V0VXJsKG5vZGUtPnVybCgpKQogICAgICAgICAuc2V0TGluZU51bWJlcihu
b2RlLT5saW5lTnVtYmVyKCkpCkBAIC05NiwxMiArOTYsMTIgQEAgc3RhdGljIFBhc3NSZWZQdHI8
VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOgogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQog
Ci1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+IFNjcmlw
dFByb2ZpbGU6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9ySGVhZCgpIGNvbnN0CitQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZT4gU2NyaXB0
UHJvZmlsZTo6YnVpbGRJbnNwZWN0b3JPYmplY3RGb3JIZWFkKCkgY29uc3QKIHsKICAgICByZXR1
cm4gYnVpbGRJbnNwZWN0b3JPYmplY3RGb3IobV9wcm9maWxlLT5oZWFkKCkpOwogfQogCi1QYXNz
UmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+IFNjcmlwdFByb2Zp
bGU6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9yQm90dG9tVXBIZWFkKCkgY29uc3QKK1Bhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlPiBTY3Jp
cHRQcm9maWxlOjpidWlsZEluc3BlY3Rvck9iamVjdEZvckJvdHRvbVVwSGVhZCgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIDA7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0UHJvZmlsZS5oCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotI2luY2x1ZGUg
Ikluc3BlY3RvclR5cGVCdWlsZGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViVHlwZUJ1aWxk
ZXJzLmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00NCw4ICs0NCw2IEBAIGNsYXNz
IFByb2ZpbGU7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW5zcGVjdG9yT2JqZWN0
OwotCiBjbGFzcyBTY3JpcHRQcm9maWxlIDogcHVibGljIFJlZkNvdW50ZWQ8U2NyaXB0UHJvZmls
ZT4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcmlwdFByb2ZpbGU+IGNyZWF0
ZShQYXNzUmVmUHRyPEpTQzo6UHJvZmlsZT4gcHJvZmlsZSk7CkBAIC01Nyw4ICs1NSw4IEBAIHB1
YmxpYzoKICAgICBkb3VibGUgaWRsZVRpbWUoKSBjb25zdDsKIAogI2lmIEVOQUJMRShJTlNQRUNU
T1IpCi0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2Rl
PiBidWlsZEluc3BlY3Rvck9iamVjdEZvckhlYWQoKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPFR5
cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0
Rm9yQm90dG9tVXBIZWFkKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9y
SGVhZCgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UHJv
ZmlsZXI6OkNQVVByb2ZpbGVOb2RlPiBidWlsZEluc3BlY3Rvck9iamVjdEZvckJvdHRvbVVwSGVh
ZCgpIGNvbnN0OwogI2VuZGlmCiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRQcm9maWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuY3BwCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDggKzM1LDkgQEAKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIk1h
aW5GcmFtZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIK
ICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVj
dC5oPgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8cHJvZmls
ZXIvTGVnYWN5UHJvZmlsZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCkBAIC00Nywx
MiArNDgsMTIgQEAgdm9pZCBTY3JpcHRQcm9maWxlcjo6Y29sbGVjdEdhcmJhZ2UoKQogICAgIGdj
Q29udHJvbGxlcigpLmdhcmJhZ2VDb2xsZWN0U29vbigpOwogfQogCi1TY3JpcHRPYmplY3QgU2Ny
aXB0UHJvZmlsZXI6Om9iamVjdEJ5SGVhcE9iamVjdElkKHVuc2lnbmVkKQorRGVwcmVjYXRlZDo6
U2NyaXB0T2JqZWN0IFNjcmlwdFByb2ZpbGVyOjpvYmplY3RCeUhlYXBPYmplY3RJZCh1bnNpZ25l
ZCkKIHsKLSAgICByZXR1cm4gU2NyaXB0T2JqZWN0KCk7CisgICAgcmV0dXJuIERlcHJlY2F0ZWQ6
OlNjcmlwdE9iamVjdCgpOwogfQogCi11bnNpZ25lZCBTY3JpcHRQcm9maWxlcjo6Z2V0SGVhcE9i
amVjdElkKGNvbnN0IFNjcmlwdFZhbHVlJikKK3Vuc2lnbmVkIFNjcmlwdFByb2ZpbGVyOjpnZXRI
ZWFwT2JqZWN0SWQoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmKQogewogICAgIHJldHVy
biAwOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxl
ci5oCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRQcm9maWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwyMCArMjgsMjQgQEAKICNkZWZpbmUg
U2NyaXB0UHJvZmlsZXJfaAogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisKICNp
bmNsdWRlICJTY3JpcHRIZWFwU25hcHNob3QuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKK25hbWVzcGFjZSBEZXByZWNhdGVkIHsKK2NsYXNz
IFNjcmlwdE9iamVjdDsKK2NsYXNzIFNjcmlwdFZhbHVlOworfQorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEV4dGVybmFsQXJyYXlWaXNpdG9yOwogY2xhc3MgRXh0ZXJuYWxTdHJpbmdW
aXNpdG9yOwogY2xhc3MgV3JhcHBlZE5vZGVWaXNpdG9yOwogY2xhc3MgUGFnZTsKLWNsYXNzIFNj
cmlwdE9iamVjdDsKLWNsYXNzIFNjcmlwdFZhbHVlOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7
CiAKIGNsYXNzIFNjcmlwdFByb2ZpbGVyIHsKQEAgLTU3LDggKzYxLDggQEAgcHVibGljOgogICAg
IH07CiAKICAgICBzdGF0aWMgdm9pZCBjb2xsZWN0R2FyYmFnZSgpOwotICAgIHN0YXRpYyBTY3Jp
cHRPYmplY3Qgb2JqZWN0QnlIZWFwT2JqZWN0SWQodW5zaWduZWQgaWQpOwotICAgIHN0YXRpYyB1
bnNpZ25lZCBnZXRIZWFwT2JqZWN0SWQoY29uc3QgU2NyaXB0VmFsdWUmKTsKKyAgICBzdGF0aWMg
RGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IG9iamVjdEJ5SGVhcE9iamVjdElkKHVuc2lnbmVkIGlk
KTsKKyAgICBzdGF0aWMgdW5zaWduZWQgZ2V0SGVhcE9iamVjdElkKGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJik7CiAgICAgc3RhdGljIHZvaWQgc3RhcnQoSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBTdHJpbmcmIHRpdGxlKTsKICAgICBzdGF0aWMgdm9pZCBzdGFydEZvclBhZ2UoUGFnZSos
IGNvbnN0IFN0cmluZyYgdGl0bGUpOwogICAgIHN0YXRpYyB2b2lkIHN0YXJ0Rm9yV29ya2VyR2xv
YmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUqLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaAkocmV2aXNpb24gMTYwNDA0
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMSwxMSArMSwxMSBAQAogLyoKICAqIENvcHlyaWdodCAoYykgMjAwOCwgMjAxMSBH
b29nbGUgSW5jLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIAorICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQogICogbWV0OgotICogCisgKgogICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KICAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKQEAgLTE1LDcgKzE1LDcgQEAKICAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKICAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCiAg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotICogCisgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwogICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKICAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgpA
QCAtMzQsNyArMzQsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEV4ZWNTdGF0ZTsKLWNs
YXNzIEpTR2xvYmFsT2JqZWN0OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwCShyZXZpc2lvbiAxNjA0MDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMTc5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcs
IDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChjKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAK
LSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAK
LSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCi0KLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMu
aCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0
VmFsdWUuaCIKLQotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KLSNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlUmVmLmg+Ci0KLSNpbmNsdWRlIDxoZWFwL1N0cm9uZy5o
PgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotYm9vbCBTY3JpcHRWYWx1ZTo6Z2V0U3RyaW5nKEpTQzo6
RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgU3RyaW5nJiByZXN1bHQpIGNvbnN0Ci17Ci0gICAgaWYg
KCFtX3ZhbHVlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2so
c2NyaXB0U3RhdGUpOwotICAgIGlmICghbV92YWx1ZS5nZXQoKS5nZXRTdHJpbmcoc2NyaXB0U3Rh
dGUsIHJlc3VsdCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotU3RyaW5nIFNjcmlwdFZhbHVlOjp0b1N0cmluZyhKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3Rh
dGUpIGNvbnN0Ci17Ci0gICAgU3RyaW5nIHJlc3VsdCA9IG1fdmFsdWUuZ2V0KCkudG9TdHJpbmco
c2NyaXB0U3RhdGUpLT52YWx1ZShzY3JpcHRTdGF0ZSk7Ci0gICAgLy8gSGFuZGxlIHRoZSBjYXNl
IHdoZXJlIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gYXMgcGFydCBvZiBpbnZva2luZyB0b1N0cmlu
ZyBvbiB0aGUgb2JqZWN0LgotICAgIGlmIChzY3JpcHRTdGF0ZS0+aGFkRXhjZXB0aW9uKCkpCi0g
ICAgICAgIHNjcmlwdFN0YXRlLT5jbGVhckV4Y2VwdGlvbigpOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLWJvb2wgU2NyaXB0VmFsdWU6OmlzRXF1YWwoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0
YXRlLCBjb25zdCBTY3JpcHRWYWx1ZSYgYW5vdGhlclZhbHVlKSBjb25zdAotewotICAgIGlmICho
YXNOb1ZhbHVlKCkpCi0gICAgICAgIHJldHVybiBhbm90aGVyVmFsdWUuaGFzTm9WYWx1ZSgpOwot
Ci0gICAgcmV0dXJuIEpTVmFsdWVJc0VxdWFsKHRvUmVmKHNjcmlwdFN0YXRlKSwgdG9SZWYoc2Ny
aXB0U3RhdGUsIGpzVmFsdWUoKSksIHRvUmVmKHNjcmlwdFN0YXRlLCBhbm90aGVyVmFsdWUuanNW
YWx1ZSgpKSwgMCk7Ci19Ci0KLWJvb2wgU2NyaXB0VmFsdWU6OmlzTnVsbCgpIGNvbnN0Ci17Ci0g
ICAgaWYgKCFtX3ZhbHVlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1fdmFs
dWUuZ2V0KCkuaXNOdWxsKCk7Ci19Ci0KLWJvb2wgU2NyaXB0VmFsdWU6OmlzVW5kZWZpbmVkKCkg
Y29uc3QKLXsKLSAgICBpZiAoIW1fdmFsdWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBy
ZXR1cm4gbV92YWx1ZS5nZXQoKS5pc1VuZGVmaW5lZCgpOwotfQotCi1ib29sIFNjcmlwdFZhbHVl
Ojppc09iamVjdCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX3ZhbHVlKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuIG1fdmFsdWUuZ2V0KCkuaXNPYmplY3QoKTsKLX0KLQotYm9vbCBT
Y3JpcHRWYWx1ZTo6aXNGdW5jdGlvbigpIGNvbnN0Ci17Ci0gICAgQ2FsbERhdGEgY2FsbERhdGE7
Ci0gICAgcmV0dXJuIGdldENhbGxEYXRhKG1fdmFsdWUuZ2V0KCksIGNhbGxEYXRhKSAhPSBDYWxs
VHlwZU5vbmU7Ci19Ci0KLVBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTY3JpcHRW
YWx1ZTo6c2VyaWFsaXplKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgU2VyaWFsaXphdGlv
bkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCi17Ci0gICAgcmV0dXJuIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKHNjcmlwdFN0YXRlLCBqc1ZhbHVlKCksIDAsIDAsIHRocm93RXhjZXB0
aW9ucyk7Ci19Ci0KLVBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTY3JpcHRWYWx1
ZTo6c2VyaWFsaXplKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgTWVzc2FnZVBvcnRBcnJh
eSogbWVzc2FnZVBvcnRzLCBBcnJheUJ1ZmZlckFycmF5KiBhcnJheUJ1ZmZlcnMsIGJvb2wmIGRp
ZFRocm93KQotewotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRW
YWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHNjcmlwdFN0YXRlLCBqc1ZhbHVl
KCksIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJzKTsKLSAgICBkaWRUaHJvdyA9IHNjcmlwdFN0
YXRlLT5oYWRFeGNlcHRpb24oKTsKLSAgICByZXR1cm4gc2VyaWFsaXplZFZhbHVlLnJlbGVhc2Uo
KTsKLX0KLQotU2NyaXB0VmFsdWUgU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKEpTQzo6RXhlY1N0
YXRlKiBzY3JpcHRTdGF0ZSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiB2YWx1ZSwgU2VyaWFsaXph
dGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCi17Ci0gICAgcmV0dXJuIFNjcmlwdFZhbHVl
KHNjcmlwdFN0YXRlLT52bSgpLCB2YWx1ZS0+ZGVzZXJpYWxpemUoc2NyaXB0U3RhdGUsIHNjcmlw
dFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIDAsIHRocm93RXhjZXB0aW9ucykpOwotfQot
Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLXN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVl
PiBqc1RvSW5zcGVjdG9yVmFsdWUoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBKU1ZhbHVl
IHZhbHVlLCBpbnQgbWF4RGVwdGgpCi17Ci0gICAgaWYgKCF2YWx1ZSkgewotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgaWYgKCFt
YXhEZXB0aCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgbWF4RGVwdGgtLTsKLQotICAgIGlmICh2
YWx1ZS5pc051bGwoKSB8fCB2YWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4gSW5z
cGVjdG9yVmFsdWU6Om51bGwoKTsKLSAgICBpZiAodmFsdWUuaXNCb29sZWFuKCkpCi0gICAgICAg
IHJldHVybiBJbnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUodmFsdWUuYXNCb29sZWFuKCkpOwot
ICAgIGlmICh2YWx1ZS5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gSW5zcGVjdG9yQmFzaWNW
YWx1ZTo6Y3JlYXRlKHZhbHVlLmFzTnVtYmVyKCkpOwotICAgIGlmICh2YWx1ZS5pc1N0cmluZygp
KSB7Ci0gICAgICAgIFN0cmluZyBzID0gdmFsdWUuZ2V0U3RyaW5nKHNjcmlwdFN0YXRlKTsKLSAg
ICAgICAgcmV0dXJuIEluc3BlY3RvclN0cmluZzo6Y3JlYXRlKFN0cmluZyhzLmNoYXJhY3RlcnMo
KSwgcy5sZW5ndGgoKSkpOwotICAgIH0KLSAgICBpZiAodmFsdWUuaXNPYmplY3QoKSkgewotICAg
ICAgICBpZiAoaXNKU0FycmF5KHZhbHVlKSkgewotICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiBpbnNwZWN0b3JBcnJheSA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKLSAgICAg
ICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh2YWx1ZSk7Ci0gICAgICAgICAgICB1bnNp
Z25lZCBsZW5ndGggPSBhcnJheS0+bGVuZ3RoKCk7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICBKU1ZhbHVlIGVsZW1l
bnQgPSBhcnJheS0+Z2V0SW5kZXgoc2NyaXB0U3RhdGUsIGkpOwotICAgICAgICAgICAgICAgIFJl
ZlB0cjxJbnNwZWN0b3JWYWx1ZT4gZWxlbWVudFZhbHVlID0ganNUb0luc3BlY3RvclZhbHVlKHNj
cmlwdFN0YXRlLCBlbGVtZW50LCBtYXhEZXB0aCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFlbGVt
ZW50VmFsdWUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAg
IGluc3BlY3RvckFycmF5LT5wdXNoVmFsdWUoZWxlbWVudFZhbHVlKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHJldHVybiBpbnNwZWN0b3JBcnJheTsKLSAgICAgICAgfQotICAgICAgICBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBpbnNwZWN0b3JPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6
OmNyZWF0ZSgpOwotICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gdmFsdWUuZ2V0T2JqZWN0KCk7
Ci0gICAgICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoc2NyaXB0U3RhdGUpOwot
ICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0
LCBzY3JpcHRTdGF0ZSwgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7
Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvcGVydHlOYW1lcy5zaXplKCk7IGkr
KykgewotICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSA9ICBwcm9wZXJ0eU5hbWVz
W2ldOwotICAgICAgICAgICAgSlNWYWx1ZSBwcm9wZXJ0eVZhbHVlID0gb2JqZWN0LT5nZXQoc2Ny
aXB0U3RhdGUsIG5hbWUpOwotICAgICAgICAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBpbnNw
ZWN0b3JWYWx1ZSA9IGpzVG9JbnNwZWN0b3JWYWx1ZShzY3JpcHRTdGF0ZSwgcHJvcGVydHlWYWx1
ZSwgbWF4RGVwdGgpOwotICAgICAgICAgICAgaWYgKCFpbnNwZWN0b3JWYWx1ZSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIGluc3BlY3Rvck9iamVjdC0+c2V0VmFsdWUo
U3RyaW5nKG5hbWUuY2hhcmFjdGVycygpLCBuYW1lLmxlbmd0aCgpKSwgaW5zcGVjdG9yVmFsdWUp
OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBpbnNwZWN0b3JPYmplY3Q7Ci0gICAgfQotICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOwotfQotCi1QYXNzUmVmUHRyPElu
c3BlY3RvclZhbHVlPiBTY3JpcHRWYWx1ZTo6dG9JbnNwZWN0b3JWYWx1ZShKU0M6OkV4ZWNTdGF0
ZSogc2NyaXB0U3RhdGUpIGNvbnN0Ci17Ci0gICAgSlNDOjpKU0xvY2tIb2xkZXIgaG9sZGVyKHNj
cmlwdFN0YXRlKTsKLSAgICByZXR1cm4ganNUb0luc3BlY3RvclZhbHVlKHNjcmlwdFN0YXRlLCBt
X3ZhbHVlLmdldCgpLCBJbnNwZWN0b3JWYWx1ZTo6bWF4RGVwdGgpOwotfQotI2VuZGlmIC8vIEVO
QUJMRShJTlNQRUNUT1IpCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaAkocmV2aXNpb24gMTYwNDA0KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw4MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDA4LCAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotICogbWV0OgotICogCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKiAKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBTY3JpcHRWYWx1ZV9oCi0jZGVmaW5lIFNjcmlw
dFZhbHVlX2gKLQotI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgotI2luY2x1ZGUg
IlNjcmlwdFN0YXRlLmgiCi0jaW5jbHVkZSA8aGVhcC9TdHJvbmcuaD4KLSNpbmNsdWRlIDxoZWFw
L1N0cm9uZ0lubGluZXMuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KLSNpbmNs
dWRlIDxydW50aW1lL09wZXJhdGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNsYXNzIEluc3BlY3RvclZhbHVlOwotY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwotCi1j
bGFzcyBTY3JpcHRWYWx1ZSB7Ci1wdWJsaWM6Ci0gICAgU2NyaXB0VmFsdWUoKSB7IH0KLSAgICBT
Y3JpcHRWYWx1ZShKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKSA6IG1fdmFsdWUodm0s
IHZhbHVlKSB7fQotICAgIHZpcnR1YWwgflNjcmlwdFZhbHVlKCkge30KLQotICAgIEpTQzo6SlNW
YWx1ZSBqc1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS5nZXQoKTsgfQotICAgIGJvb2wg
Z2V0U3RyaW5nKEpTQzo6RXhlY1N0YXRlKiwgU3RyaW5nJiByZXN1bHQpIGNvbnN0OwotICAgIFN0
cmluZyB0b1N0cmluZyhKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0OwotICAgIGJvb2wgaXNFcXVhbChK
U0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFNjcmlwdFZhbHVlJikgY29uc3Q7Ci0gICAgYm9vbCBpc051
bGwoKSBjb25zdDsKLSAgICBib29sIGlzVW5kZWZpbmVkKCkgY29uc3Q7Ci0gICAgYm9vbCBpc09i
amVjdCgpIGNvbnN0OwotICAgIGJvb2wgaXNGdW5jdGlvbigpIGNvbnN0OwotICAgIGJvb2wgaGFz
Tm9WYWx1ZSgpIGNvbnN0IHsgcmV0dXJuICFtX3ZhbHVlOyB9Ci0KLSAgICB2b2lkIGNsZWFyKCkg
eyBtX3ZhbHVlLmNsZWFyKCk7IH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRW
YWx1ZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0gb3RoZXIubV92YWx1ZTsgfQot
Ci0gICAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZShKU0M6OkV4
ZWNTdGF0ZSosIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7Ci0gICAgUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSosIE1l
c3NhZ2VQb3J0QXJyYXkqLCBBcnJheUJ1ZmZlckFycmF5KiwgYm9vbCYpOwotICAgIHN0YXRpYyBT
Y3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSosIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSosIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7Ci0KLSNpZiBFTkFCTEUo
SU5TUEVDVE9SKQotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHRvSW5zcGVjdG9yVmFs
dWUoSlNDOjpFeGVjU3RhdGUqKSBjb25zdDsKLSNlbmRpZgotCi1wcml2YXRlOgotICAgIEpTQzo6
U3Ryb25nPEpTQzo6VW5rbm93bj4gbV92YWx1ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIFNjcmlwdFZhbHVlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAkocmV2aXNpb24gMTYw
NDA0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNiBAQAogI2luY2x1ZGUgIkpTTWVzc2Fn
ZVBvcnQuaCIKICNpbmNsdWRlICJKU05hdmlnYXRvci5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8bGltaXRzPgpA
QCAtMjAwMiwxMCArMjAwMSwxMCBAQCBKU1ZhbHVlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVz
ZXJpYWxpCiB9CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotU2NyaXB0VmFsdWUgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZUZvckluc3BlY3RvcihKU0M6OkV4ZWNTdGF0ZSogc2Ny
aXB0U3RhdGUpCitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmRlc2VyaWFsaXplRm9ySW5zcGVjdG9yKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSkKIHsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gZGVzZXJpYWxpemUoc2NyaXB0U3RhdGUsIHNjcmlwdFN0YXRl
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIDApOwotICAgIHJldHVybiBTY3JpcHRWYWx1ZShzY3Jp
cHRTdGF0ZS0+dm0oKSwgdmFsdWUpOworICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZShzY3JpcHRTdGF0ZS0+dm0oKSwgdmFsdWUpOwogfQogI2VuZGlmCiAKQEAgLTIwNDksNiArMjA0
OCwyMyBAQCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsCiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoYnVmZmVyKSk7CiB9CiAKK1Bh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnNl
cmlhbGl6ZShjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIEpTQzo6RXhlY1N0
YXRlKiBzY3JpcHRTdGF0ZSwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMp
Cit7CisgICAgcmV0dXJuIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHNjcmlwdFN0YXRl
LCB2YWx1ZS5qc1ZhbHVlKCksIG51bGxwdHIsIG51bGxwdHIsIHRocm93RXhjZXB0aW9ucyk7Cit9
CisKK1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OnNlcmlhbGl6ZShjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIEpTQzo6
RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgTWVzc2FnZVBvcnRBcnJheSogbWVzc2FnZVBvcnRzLCBB
cnJheUJ1ZmZlckFycmF5KiBhcnJheUJ1ZmZlcnMsIGJvb2wmIGRpZFRocm93KQoreworICAgIFJl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Y3JlYXRlKHNjcmlwdFN0YXRlLCB2YWx1ZS5qc1ZhbHVlKCksIG1lc3NhZ2VQ
b3J0cywgYXJyYXlCdWZmZXJzKTsKKyAgICBkaWRUaHJvdyA9IHNjcmlwdFN0YXRlLT5oYWRFeGNl
cHRpb24oKTsKKyAgICByZXR1cm4gc2VyaWFsaXplZFZhbHVlLnJlbGVhc2UoKTsKK30KKworRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShK
U0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUs
IFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQoreworICAgIHJldHVybiBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZS0+dm0oKSwgdmFsdWUtPmRlc2VyaWFs
aXplKHNjcmlwdFN0YXRlLCBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAwLCB0
aHJvd0V4Y2VwdGlvbnMpKTsKK30KKwogdm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om1heWJl
VGhyb3dFeGNlcHRpb25JZlNlcmlhbGl6YXRpb25GYWlsZWQoRXhlY1N0YXRlKiBleGVjLCBTZXJp
YWxpemF0aW9uUmV0dXJuQ29kZSBjb2RlKQogewogICAgIGlmIChjb2RlID09IFN1Y2Nlc3NmdWxs
eUNvbXBsZXRlZCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAt
MjgsNiArMjgsNyBAQAogI2RlZmluZSBTZXJpYWxpemVkU2NyaXB0VmFsdWVfaAogCiAjaW5jbHVk
ZSAiU2NyaXB0U3RhdGUuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2lu
Y2x1ZGUgPGhlYXAvU3Ryb25nLmg+CiAjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgog
I2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgpAQCAtNTcsNyArNTgsNiBAQCBlbnVtIFNl
cmlhbGl6YXRpb25SZXR1cm5Db2RlIHsKICAgICAKIGVudW0gU2VyaWFsaXphdGlvbkVycm9yTW9k
ZSB7IE5vblRocm93aW5nLCBUaHJvd2luZyB9OwogCi1jbGFzcyBTY3JpcHRWYWx1ZTsKIGNsYXNz
IFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlIDoKQEAgLTY3LDgg
KzY3LDcgQEAgY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlIDoKICAgICBwdWJsaWMgUmVmQ291
bnRlZDxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHsKICNlbmRpZgogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpKU1ZhbHVlLCBNZXNzYWdlUG9ydEFycmF5KiwgQXJyYXlCdWZmZXJBcnJheSosCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VyaWFs
aXphdGlvbkVycm9yTW9kZSA9IFRocm93aW5nKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwg
TWVzc2FnZVBvcnRBcnJheSosIEFycmF5QnVmZmVyQXJyYXkqLCBTZXJpYWxpemF0aW9uRXJyb3JN
b2RlID0gVGhyb3dpbmcpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gY3JlYXRlKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiwgTWVzc2FnZVBvcnRBcnJheSos
IEFycmF5QnVmZmVyQXJyYXkqLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpTQ29udGV4dFJlZiwgSlNW
YWx1ZVJlZiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKIApAQCAtODMsNiArODIsMTAgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdW5kZWZp
bmVkVmFsdWUoKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IGJvb2xlYW5WYWx1ZShib29sIHZhbHVlKTsKIAorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
JiwgSlNDOjpFeGVjU3RhdGUqLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcpOwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplKGNv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgSlNDOjpFeGVjU3RhdGUqLCBNZXNzYWdlUG9y
dEFycmF5KiwgQXJyYXlCdWZmZXJBcnJheSosIGJvb2wmKTsKKyAgICBzdGF0aWMgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUgZGVzZXJpYWxpemUoSlNDOjpFeGVjU3RhdGUqLCBTZXJpYWxpemVkU2Ny
aXB0VmFsdWUqLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcpOworCiAgICAgc3Rh
dGljIHVpbnQzMl90IHdpcmVGb3JtYXRWZXJzaW9uKCk7CiAKICAgICBTdHJpbmcgdG9TdHJpbmco
KTsKQEAgLTkyLDcgKzk1LDcgQEAgcHVibGljOgogICAgIEpTVmFsdWVSZWYgZGVzZXJpYWxpemUo
SlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogCiAjaWYgRU5BQkxFKElOU1BF
Q1RPUikKLSAgICBTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUZvckluc3BlY3RvcihKU0M6OkV4ZWNT
dGF0ZSopOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRlc2VyaWFsaXplRm9ySW5zcGVj
dG9yKEpTQzo6RXhlY1N0YXRlKik7CiAjZW5kaWYKIAogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAJKHJldmlz
aW9uIDE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENv
bnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMiArMzEsMTIgQEAKICNpbmNsdWRl
ICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVl
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgIldvcmtlckds
b2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyT2JqZWN0UHJveHkuaCIKICNpbmNsdWRlICJX
b3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorI2lu
Y2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8aGVhcC9TdHJvbmdJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaD4KICNpbmNsdWRlIDxy
dW50aW1lL0NvbXBsZXRpb24uaD4KQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIFdvcmtlclNjcmlw
dENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvCiAgICAgaWYgKGlzRXhlY3V0aW9uRm9yYmlkZGVuKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFNjcmlwdFZhbHVlIGV4Y2VwdGlvbjsKKyAgICBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSBleGNlcHRpb247CiAgICAgZXZhbHVhdGUoc291cmNlQ29kZSwg
JmV4Y2VwdGlvbik7CiAgICAgaWYgKGV4Y2VwdGlvbi5qc1ZhbHVlKCkpIHsKICAgICAgICAgSlNM
b2NrSG9sZGVyIGxvY2sodm0oKSk7CkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBXb3JrZXJTY3Jp
cHRDb250cm9sbGVyOjpldmFsdWF0ZShjbwogICAgIH0KIH0KIAotdm9pZCBXb3JrZXJTY3JpcHRD
b250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBT
Y3JpcHRWYWx1ZSogZXhjZXB0aW9uKQordm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFs
dWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSogZXhjZXB0aW9uKQogewogICAgIGlmIChpc0V4ZWN1dGlvbkZvcmJpZGRlbigpKQog
ICAgICAgICByZXR1cm47CkBAIC0xNDUsMTMgKzE0NSwxMyBAQCB2b2lkIFdvcmtlclNjcmlwdENv
bnRyb2xsZXI6OmV2YWx1YXRlKGNvCiAgICAgICAgIGludCBjb2x1bW5OdW1iZXIgPSAwOwogICAg
ICAgICBTdHJpbmcgc291cmNlVVJMID0gc291cmNlQ29kZS51cmwoKS5zdHJpbmcoKTsKICAgICAg
ICAgaWYgKG1fd29ya2VyR2xvYmFsU2NvcGUtPnNhbml0aXplU2NyaXB0RXJyb3IoZXJyb3JNZXNz
YWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCwgc291cmNlQ29kZS5jYWNo
ZWRTY3JpcHQoKSkpCi0gICAgICAgICAgICAqZXhjZXB0aW9uID0gU2NyaXB0VmFsdWUoKm1fdm0s
IGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgZXJyb3JN
ZXNzYWdlLmltcGwoKSkpKTsKKyAgICAgICAgICAgICpleGNlcHRpb24gPSBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSgqbV92bSwgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVF
cnJvcihleGVjLCBlcnJvck1lc3NhZ2UuaW1wbCgpKSkpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAqZXhjZXB0aW9uID0gU2NyaXB0VmFsdWUoKm1fdm0sIGV2YWx1YXRpb25FeGNlcHRpb24p
OworICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCptX3Zt
LCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICB9CiB9CiAKLXZvaWQgV29ya2VyU2NyaXB0Q29u
dHJvbGxlcjo6c2V0RXhjZXB0aW9uKGNvbnN0IFNjcmlwdFZhbHVlJiBleGNlcHRpb24pCit2b2lk
IFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNldEV4Y2VwdGlvbihjb25zdCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSYgZXhjZXB0aW9uKQogewogICAgIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVy
LT5nbG9iYWxFeGVjKCktPnZtKCkudGhyb3dFeGNlcHRpb24obV93b3JrZXJHbG9iYWxTY29wZVdy
YXBwZXItPmdsb2JhbEV4ZWMoKSwgZXhjZXB0aW9uLmpzVmFsdWUoKSk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5o
CShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJT
Y3JpcHRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE1ICszMywxOCBAQAogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCituYW1l
c3BhY2UgRGVwcmVjYXRlZCB7CitjbGFzcyBTY3JpcHRWYWx1ZTsKK30KKwogbmFtZXNwYWNlIEpT
QyB7Ci0gICAgY2xhc3MgVk07CitjbGFzcyBWTTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgY2xhc3MgSlNXb3JrZXJHbG9iYWxTY29wZTsKICAgICBjbGFzcyBTY3JpcHRTb3VyY2VD
b2RlOwotICAgIGNsYXNzIFNjcmlwdFZhbHVlOwogICAgIGNsYXNzIFdvcmtlckdsb2JhbFNjb3Bl
OwogCiAgICAgY2xhc3MgV29ya2VyU2NyaXB0Q29udHJvbGxlciB7CkBAIC01Nyw5ICs2MCw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZXZhbHVhdGUo
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYpOwotICAgICAgICB2b2lkIGV2YWx1YXRlKGNvbnN0IFNj
cmlwdFNvdXJjZUNvZGUmLCBTY3JpcHRWYWx1ZSogZXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCBl
dmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUq
IGV4Y2VwdGlvbik7CiAKLSAgICAgICAgdm9pZCBzZXRFeGNlcHRpb24oY29uc3QgU2NyaXB0VmFs
dWUmKTsKKyAgICAgICAgdm9pZCBzZXRFeGNlcHRpb24oY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUmKTsKIAogICAgICAgICAvLyBBc3luYyByZXF1ZXN0IHRvIHRlcm1pbmF0ZSBhIEpTIHJ1
biBleGVjdXRpb24uIEV2ZW50dWFsbHkgY2F1c2VzIHRlcm1pbmF0aW9uCiAgICAgICAgIC8vIGV4
Y2VwdGlvbiByYWlzZWQgZHVyaW5nIEpTIGV4ZWN1dGlvbiwgaWYgdGhlIHdvcmtlciB0aHJlYWQg
aGFwcGVucyB0byBydW4gSlMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29w
eSkKQEAgLTMyMzQsNyArMzIzNCw3IEBAIG15ICVuYXRpdmVUeXBlID0gKAogICAgICJTZXJpYWxp
emVkU2NyaXB0VmFsdWUiID0+ICJSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiIsCiAgICAg
IkRhdGUiID0+ICJkb3VibGUiLAogICAgICJEaWN0aW9uYXJ5IiA9PiAiRGljdGlvbmFyeSIsCi0g
ICAgImFueSIgPT4gIlNjcmlwdFZhbHVlIiwKKyAgICAiYW55IiA9PiAiRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUiLAogICAgICJib29sZWFuIiA9PiAiYm9vbCIsCiAgICAgImRvdWJsZSIgPT4gImRv
dWJsZSIsCiAgICAgImZsb2F0IiA9PiAiZmxvYXQiLApJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHJldmlzaW9u
IDE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjUxLDcgKzE2NTEsNyBAQCB2b2lkIHNldEpT
VGVzdE9iakFueUF0dHJpYnV0ZShFeGVjU3RhdGUqCiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwog
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPih0aGlzT2JqZWN0
KTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwotICAgIFNjcmlwdFZh
bHVlIG5hdGl2ZVZhbHVlKGV4ZWMtPnZtKCksIHZhbHVlKTsKKyAgICBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSBuYXRpdmVWYWx1ZShleGVjLT52bSgpLCB2YWx1ZSk7CiAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47CiAgICAgaW1wbC5zZXRBbnlBdHRyaWJ1dGUo
bmF0aXZlVmFsdWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuY3BwCShyZXZpc2lv
biAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIEN1c3RvbUV2ZW50Ojp+Q3VzdG9tRXZlbnQoKQogewog
fQogCi12b2lkIEN1c3RvbUV2ZW50Ojppbml0Q3VzdG9tRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBTY3JpcHRWYWx1
ZSYgZGV0YWlsKQordm9pZCBDdXN0b21FdmVudDo6aW5pdEN1c3RvbUV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmIGRldGFpbCkKIHsKICAgICBBU1NFUlQoIW1fc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmdldCgpKTsKICAgICBpZiAoZGlzcGF0Y2hlZCgpKQpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL0N1c3RvbUV2ZW50LmgJKHJldmlzaW9uIDE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9DdXN0b21FdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNSArMjcsMTUgQEAKICNkZWZp
bmUgQ3VzdG9tRXZlbnRfaAogCiAjaW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNsdWRlICJTY3JpcHRW
YWx1ZS5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPGJp
bmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEN1
c3RvbUV2ZW50SW5pdCA6IHB1YmxpYyBFdmVudEluaXQgewogICAgIEN1c3RvbUV2ZW50SW5pdCgp
OwogCi0gICAgU2NyaXB0VmFsdWUgZGV0YWlsOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
IGRldGFpbDsKIH07CiAKIGNsYXNzIEN1c3RvbUV2ZW50IDogcHVibGljIEV2ZW50IHsKQEAgLTUy
LDE4ICs1MiwxOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3VzdG9t
RXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIpKTsKICAgICB9CiAKLSAgICB2b2lkIGluaXRDdXN0b21F
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBkZXRhaWwpOworICAgIHZvaWQgaW5pdEN1c3RvbUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2Vs
YWJsZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGRldGFpbCk7CiAKICAgICB2aXJ0
dWFsIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Q7CiAKLSAgICBjb25zdCBT
Y3JpcHRWYWx1ZSYgZGV0YWlsKCkgY29uc3QgeyByZXR1cm4gbV9kZXRhaWw7IH0KKyAgICBjb25z
dCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZGV0YWlsKCkgY29uc3QgeyByZXR1cm4gbV9kZXRh
aWw7IH0KICAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFNj
cmlwdFZhbHVlKCkgeyByZXR1cm4gbV9zZXJpYWxpemVkU2NyaXB0VmFsdWU7IH0KIAogcHJpdmF0
ZToKICAgICBDdXN0b21FdmVudCgpOwogICAgIEN1c3RvbUV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgY29uc3QgQ3VzdG9tRXZlbnRJbml0JiBpbml0aWFsaXplcik7CiAKLSAgICBTY3Jp
cHRWYWx1ZSBtX2RldGFpbDsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBtX2RldGFpbDsK
ICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX3NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCShyZXZpc2lvbiAx
NjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjEsMTQgKzIxLDEzIEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICoKICAqLwogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZFNvdXJjZShFdmVudFRhcmdl
dCogc291cmNlKQpAQCAtNTYsNyArNTUsNyBAQCBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChj
b25zdCBBdG9taWNTCiB7CiB9CiAKLU1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KGNvbnN0IFNj
cmlwdFZhbHVlJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0
RXZlbnRJZCwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gc291cmNlLCBQYXNzT3duUHRyPE1lc3Nh
Z2VQb3J0QXJyYXk+IHBvcnRzKQorTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBT
dHJpbmcmIGxhc3RFdmVudElkLCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBzb3VyY2UsIFBhc3NP
d25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMpCiAgICAgOiBFdmVudChldmVudE5hbWVzKCku
bWVzc2FnZUV2ZW50LCBmYWxzZSwgZmFsc2UpCiAgICAgLCBtX2RhdGFUeXBlKERhdGFUeXBlU2Ny
aXB0VmFsdWUpCiAgICAgLCBtX2RhdGFBc1NjcmlwdFZhbHVlKGRhdGEpCkBAIC0xMDgsNyArMTA3
LDcgQEAgTWVzc2FnZUV2ZW50Ojp+TWVzc2FnZUV2ZW50KCkKIHsKIH0KIAotdm9pZCBNZXNzYWdl
RXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBTY3JpcHRWYWx1ZSYgZGF0YSwgY29uc3Qg
U3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIERPTVdpbmRvdyogc291
cmNlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzKQordm9pZCBNZXNzYWdlRXZl
bnQ6OmluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1
YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZGF0
YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIERPTVdp
bmRvdyogc291cmNlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzKQogewogICAg
IGlmIChkaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9NZXNzYWdlRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTWVz
c2FnZUV2ZW50LmgJKHJldmlzaW9uIDE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNz
YWdlRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsOCBAQAogI2luY2x1ZGUgIkRP
TVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIK
LSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8cnVudGlt
ZS9BcnJheUJ1ZmZlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Myw3ICs0Myw3IEBA
IGNsYXNzIEV2ZW50VGFyZ2V0Owogc3RydWN0IE1lc3NhZ2VFdmVudEluaXQgOiBwdWJsaWMgRXZl
bnRJbml0IHsKICAgICBNZXNzYWdlRXZlbnRJbml0KCk7CiAKLSAgICBTY3JpcHRWYWx1ZSBkYXRh
OworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRhdGE7CiAgICAgU3RyaW5nIG9yaWdpbjsK
ICAgICBTdHJpbmcgbGFzdEV2ZW50SWQ7CiAgICAgUmVmUHRyPEV2ZW50VGFyZ2V0PiBzb3VyY2U7
CkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgTWVzc2FnZUV2ZW50KTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVzc2Fn
ZUV2ZW50PiBjcmVhdGUoUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cywgY29uc3Qg
U2NyaXB0VmFsdWUmIGRhdGEgPSBTY3JpcHRWYWx1ZSgpLCBjb25zdCBTdHJpbmcmIG9yaWdpbiA9
IFN0cmluZygpLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkID0gU3RyaW5nKCksIFBhc3NSZWZQ
dHI8RXZlbnRUYXJnZXQ+IHNvdXJjZSA9IDApCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVzc2Fn
ZUV2ZW50PiBjcmVhdGUoUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cywgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGRhdGEgPSBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSgp
LCBjb25zdCBTdHJpbmcmIG9yaWdpbiA9IFN0cmluZygpLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVu
dElkID0gU3RyaW5nKCksIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHNvdXJjZSA9IDApCiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lc3NhZ2VFdmVudChkYXRhLCBvcmlnaW4s
IGxhc3RFdmVudElkLCBzb3VyY2UsIHBvcnRzKSk7CiAgICAgfQpAQCAtODIsNyArODIsNyBAQCBw
dWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgfk1lc3NhZ2VFdmVudCgpOwogCi0gICAgdm9pZCBp
bml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUs
IGJvb2wgY2FuY2VsYWJsZSwgY29uc3QgU2NyaXB0VmFsdWUmIGRhdGEsIGNvbnN0IFN0cmluZyYg
b3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBET01XaW5kb3cqIHNvdXJjZSwgUGFz
c093blB0cjxNZXNzYWdlUG9ydEFycmF5Pik7CisgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwg
Y29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
LCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBET01XaW5kb3cqIHNvdXJjZSwgUGFzc093blB0
cjxNZXNzYWdlUG9ydEFycmF5Pik7CiAgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBj
b25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBET01XaW5kb3cqIHNvdXJjZSwgUGFzc093blB0cjxN
ZXNzYWdlUG9ydEFycmF5Pik7CiAKICAgICBjb25zdCBTdHJpbmcmIG9yaWdpbigpIGNvbnN0IHsg
cmV0dXJuIG1fb3JpZ2luOyB9CkBAIC0xMDcsNyArMTA3LDcgQEAgcHVibGljOgogICAgICAgICBE
YXRhVHlwZUFycmF5QnVmZmVyCiAgICAgfTsKICAgICBEYXRhVHlwZSBkYXRhVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YVR5cGU7IH0KLSAgICBjb25zdCBTY3JpcHRWYWx1ZSYgZGF0YUFzU2Ny
aXB0VmFsdWUoKSBjb25zdCB7IEFTU0VSVChtX2RhdGFUeXBlID09IERhdGFUeXBlU2NyaXB0VmFs
dWUpOyByZXR1cm4gbV9kYXRhQXNTY3JpcHRWYWx1ZTsgfQorICAgIGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiBkYXRhQXNTY3JpcHRWYWx1ZSgpIGNvbnN0IHsgQVNTRVJUKG1fZGF0YVR5
cGUgPT0gRGF0YVR5cGVTY3JpcHRWYWx1ZSk7IHJldHVybiBtX2RhdGFBc1NjcmlwdFZhbHVlOyB9
CiAgICAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGFBc1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSgpIGNvbnN0IHsgQVNTRVJUKG1fZGF0YVR5cGUgPT0gRGF0YVR5cGVTZXJpYWxp
emVkU2NyaXB0VmFsdWUpOyByZXR1cm4gbV9kYXRhQXNTZXJpYWxpemVkU2NyaXB0VmFsdWU7IH0K
ICAgICBTdHJpbmcgZGF0YUFzU3RyaW5nKCkgY29uc3QgeyBBU1NFUlQobV9kYXRhVHlwZSA9PSBE
YXRhVHlwZVN0cmluZyk7IHJldHVybiBtX2RhdGFBc1N0cmluZzsgfQogICAgIEJsb2IqIGRhdGFB
c0Jsb2IoKSBjb25zdCB7IEFTU0VSVChtX2RhdGFUeXBlID09IERhdGFUeXBlQmxvYik7IHJldHVy
biBtX2RhdGFBc0Jsb2IuZ2V0KCk7IH0KQEAgLTExNiw3ICsxMTYsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIE1lc3NhZ2VFdmVudCgpOwogICAgIE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmLCBjb25zdCBNZXNzYWdlRXZlbnRJbml0Jik7Ci0gICAgTWVzc2FnZUV2ZW50KGNvbnN0
IFNjcmlwdFZhbHVlJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBs
YXN0RXZlbnRJZCwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gc291cmNlLCBQYXNzT3duUHRyPE1l
c3NhZ2VQb3J0QXJyYXk+KTsKKyAgICBNZXNzYWdlRXZlbnQoY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RF
dmVudElkLCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2Fn
ZVBvcnRBcnJheT4pOwogICAgIE1lc3NhZ2VFdmVudChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2
ZW50SWQsIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdl
UG9ydEFycmF5Pik7CiAKICAgICBleHBsaWNpdCBNZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBk
YXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbik7CkBAIC0xMjQsNyArMTI0LDcgQEAgcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBNZXNzYWdlRXZlbnQoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gZGF0YSwg
Y29uc3QgU3RyaW5nJiBvcmlnaW4pOwogCiAgICAgRGF0YVR5cGUgbV9kYXRhVHlwZTsKLSAgICBT
Y3JpcHRWYWx1ZSBtX2RhdGFBc1NjcmlwdFZhbHVlOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlIG1fZGF0YUFzU2NyaXB0VmFsdWU7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gbV9kYXRhQXNTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAgICAgU3RyaW5nIG1fZGF0YUFzU3Ry
aW5nOwogICAgIFJlZlB0cjxCbG9iPiBtX2RhdGFBc0Jsb2I7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vUG9wU3RhdGVFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Q
b3BTdGF0ZUV2ZW50LmgJKHJldmlzaW9uIDE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Q
b3BTdGF0ZUV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDE0ICsyOCwxNCBAQAogI2RlZmlu
ZSBQb3BTdGF0ZUV2ZW50X2gKIAogI2luY2x1ZGUgIkV2ZW50LmgiCi0jaW5jbHVkZSAiU2NyaXB0
VmFsdWUuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0cnVjdCBQb3BTdGF0ZUV2ZW50SW5pdCA6IHB1YmxpYyBFdmVudEluaXQg
ewogICAgIFBvcFN0YXRlRXZlbnRJbml0KCk7CiAKLSAgICBTY3JpcHRWYWx1ZSBzdGF0ZTsKKyAg
ICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBzdGF0ZTsKIH07CiAKIGNsYXNzIEhpc3Rvcnk7CkBA
IC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQb3BTdGF0ZUV2
ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgUG9wU3RhdGVFdmVudEluaXQm
KTsKIAogICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU3Rh
dGUoKSBjb25zdCB7IHJldHVybiBtX3NlcmlhbGl6ZWRTdGF0ZTsgfQotICAgIGNvbnN0IFNjcmlw
dFZhbHVlJiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KKyAgICBjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CiAg
ICAgSGlzdG9yeSogaGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1faGlzdG9yeS5nZXQoKTsgfQog
CiAgICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0OwpAQCAt
NTksNyArNTksNyBAQCBwcml2YXRlOgogICAgIFBvcFN0YXRlRXZlbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiwgY29uc3QgUG9wU3RhdGVFdmVudEluaXQmKTsKICAgICBleHBsaWNpdCBQb3BTdGF0ZUV2
ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxIaXN0b3J5
Pik7CiAKLSAgICBTY3JpcHRWYWx1ZSBtX3N0YXRlOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlIG1fc3RhdGU7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9zZXJpYWxp
emVkU3RhdGU7CiAgICAgUmVmUHRyPEhpc3Rvcnk+IG1faGlzdG9yeTsKIH07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDExICs0
MiwxMSBAQAogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRS
dW5uZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0
VmFsdWUuaCIKICNpbmNsdWRlICJTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4
dE5vZGVUcmF2ZXJzYWwuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzUsOCArMTM1LDkgQEAKICNpZiBFTkFCTEUoTUVESUFfQ09OVFJPTFNfU0NSSVBUKQogI2luY2x1
ZGUgIkpTTWVkaWFDb250cm9sc0hvc3QuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xzSG9zdC5o
IgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUgIlNjcmlwdEdsb2JhbE9iamVj
dC5oIgogI2luY2x1ZGUgIlVzZXJBZ2VudFNjcmlwdHMuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9T
Y3JpcHRPYmplY3QuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAkocmV2aXNpb24gMTYwNDA0KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDE3ICszNywxNSBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUg
IkhUTUxQYXJhbUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCi0jaW5j
bHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRl
ICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiWExpbmtOYW1lcy5oIgorI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR05h
bWVzLmgiCiAjZW5kaWYKIAotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcAkocmV2aXNp
b24gMTYwNDA0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVn
YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTIgKzM1LDE0IEBACiAjaW5jbHVkZSAiRnJh
bWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkhU
TUxQYXJzZXJJZGlvbXMuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRl
ICJQaW5nTG9hZGVyLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlIDxp
bnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAordXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBYU1NBdWRpdG9yRGVsZWdhdGU6
OlhTU0F1ZGl0b3JEZWxlZ2F0ZShEb2N1bWVudCYgZG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQkocmV2aXNp
b24gMTYwNDA0KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNw
ZWN0b3IucHkJKHdvcmtpbmcgY29weSkKQEAgLTI2Miw3ICsyNjIsNyBAQCBjbGFzcyBSYXdUeXBl
cyhvYmplY3QpOgogCiAgICAgICAgIEBjbGFzc21ldGhvZAogICAgICAgICBkZWYgZ2V0X3Jhd192
YWxpZGF0b3JfY2FsbF90ZXh0KGNscyk6Ci0gICAgICAgICAgICByZXR1cm4gIlJ1bnRpbWVDYXN0
SGVscGVyOjphc3NlcnRUeXBlPEluc3BlY3RvclZhbHVlOjpUeXBlJXM+IiAlIGNscy5nZXRfdmFs
aWRhdGVfbWV0aG9kX3BhcmFtcygpLnRlbXBsYXRlX3R5cGUKKyAgICAgICAgICAgIHJldHVybiAi
UnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZTo6
VHlwZSVzPiIgJSBjbHMuZ2V0X3ZhbGlkYXRlX21ldGhvZF9wYXJhbXMoKS50ZW1wbGF0ZV90eXBl
CiAKICAgICBjbGFzcyBTdHJpbmcoQmFzZVR5cGUpOgogICAgICAgICBAc3RhdGljbWV0aG9kCkBA
IC00NTEsNyArNDUxLDcgQEAgY2xhc3MgUmF3VHlwZXMob2JqZWN0KToKIAogICAgICAgICBAc3Rh
dGljbWV0aG9kCiAgICAgICAgIGRlZiBnZXRfYXJyYXlfaXRlbV9yYXdfY190eXBlX3RleHQoKToK
LSAgICAgICAgICAgIHJldHVybiAiSW5zcGVjdG9yT2JqZWN0IgorICAgICAgICAgICAgcmV0dXJu
ICJJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCIKIAogICAgICAgICBAc3RhdGljbWV0aG9kCiAg
ICAgICAgIGRlZiBnZXRfcmF3X3R5cGVfbW9kZWwoKToKQEAgLTQ4Niw3ICs0ODYsNyBAQCBjbGFz
cyBSYXdUeXBlcyhvYmplY3QpOgogCiAgICAgICAgIEBzdGF0aWNtZXRob2QKICAgICAgICAgZGVm
IGdldF9hcnJheV9pdGVtX3Jhd19jX3R5cGVfdGV4dCgpOgotICAgICAgICAgICAgcmV0dXJuICJJ
bnNwZWN0b3JWYWx1ZSIKKyAgICAgICAgICAgIHJldHVybiAiSW5zcGVjdG9yOjpJbnNwZWN0b3JW
YWx1ZSIKIAogICAgICAgICBAc3RhdGljbWV0aG9kCiAgICAgICAgIGRlZiBnZXRfcmF3X3R5cGVf
bW9kZWwoKToKQEAgLTUyOSw3ICs1MjksNyBAQCBjbGFzcyBSYXdUeXBlcyhvYmplY3QpOgogCiAg
ICAgICAgIEBzdGF0aWNtZXRob2QKICAgICAgICAgZGVmIGdldF9hcnJheV9pdGVtX3Jhd19jX3R5
cGVfdGV4dCgpOgotICAgICAgICAgICAgcmV0dXJuICJJbnNwZWN0b3JBcnJheSIKKyAgICAgICAg
ICAgIHJldHVybiAiSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSIKIAogICAgICAgICBAc3RhdGlj
bWV0aG9kCiAgICAgICAgIGRlZiBnZXRfcmF3X3R5cGVfbW9kZWwoKToKQEAgLTU5MCw3ICs1OTAs
NyBAQCBjbGFzcyBDb21tYW5kUmV0dXJuUGFzc01vZGVsOgogICAgICAgICAgICAgc2VsZi52YXJf
dHlwZSA9IHZhcl90eXBlCiAKICAgICAgICAgZGVmIGdldF9yZXR1cm5fdmFyX3R5cGUoc2VsZik6
Ci0gICAgICAgICAgICByZXR1cm4gIlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8JXM+IiAlIHNlbGYu
dmFyX3R5cGUKKyAgICAgICAgICAgIHJldHVybiAiSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0
T3V0cHV0PCVzPiIgJSBzZWxmLnZhcl90eXBlCiAKICAgICAgICAgQHN0YXRpY21ldGhvZAogICAg
ICAgICBkZWYgZ2V0X291dHB1dF9hcmd1bWVudF9wcmVmaXgoKToKQEAgLTYwMSw3ICs2MDEsNyBA
QCBjbGFzcyBDb21tYW5kUmV0dXJuUGFzc01vZGVsOgogICAgICAgICAgICAgcmV0dXJuICIlcy5n
ZXRWYWx1ZSgpIgogCiAgICAgICAgIGRlZiBnZXRfb3V0cHV0X3BhcmFtZXRlcl90eXBlKHNlbGYp
OgotICAgICAgICAgICAgcmV0dXJuICJUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PCVzPioiICUgc2Vs
Zi52YXJfdHlwZQorICAgICAgICAgICAgcmV0dXJuICJJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpP
cHRPdXRwdXQ8JXM+KiIgJSBzZWxmLnZhcl90eXBlCiAKICAgICAgICAgQHN0YXRpY21ldGhvZAog
ICAgICAgICBkZWYgZ2V0X3NldF9yZXR1cm5fY29uZGl0aW9uKCk6CkBAIC03MTIsMTAgKzcxMiwx
MCBAQCBjbGFzcyBUeXBlTW9kZWw6CiAgICAgICAgICAgICBUeXBlTW9kZWwuVmFsdWVUeXBlLl9f
aW5pdF9fKHNlbGYsICJpbnQiLCBGYWxzZSkKIAogICAgICAgICBkZWYgZ2V0X2lucHV0X3BhcmFt
X3R5cGVfdGV4dChzZWxmKToKLSAgICAgICAgICAgIHJldHVybiAiVHlwZUJ1aWxkZXI6OkV4YWN0
bHlJbnQiCisgICAgICAgICAgICByZXR1cm4gIkluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkV4YWN0
bHlJbnQiCiAKICAgICAgICAgZGVmIGdldF9vcHRfb3V0cHV0X3R5cGVfKHNlbGYpOgotICAgICAg
ICAgICAgcmV0dXJuICJUeXBlQnVpbGRlcjo6RXhhY3RseUludCIKKyAgICAgICAgICAgIHJldHVy
biAiSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RXhhY3RseUludCIKIAogICAgIEBjbGFzc21ldGhv
ZAogICAgIGRlZiBpbml0X2NsYXNzKGNscyk6CkBAIC03MjYsOSArNzI2LDkgQEAgY2xhc3MgVHlw
ZU1vZGVsOgogICAgICAgICAgICAgY2xzLkludCA9IGNscy5WYWx1ZVR5cGUoImludCIsIEZhbHNl
KQogICAgICAgICBjbHMuTnVtYmVyID0gY2xzLlZhbHVlVHlwZSgiZG91YmxlIiwgRmFsc2UpCiAg
ICAgICAgIGNscy5TdHJpbmcgPSBjbHMuVmFsdWVUeXBlKCJTdHJpbmciLCBUcnVlLCkKLSAgICAg
ICAgY2xzLk9iamVjdCA9IGNscy5SZWZQdHJCYXNlZCgiSW5zcGVjdG9yT2JqZWN0IikKLSAgICAg
ICAgY2xzLkFycmF5ID0gY2xzLlJlZlB0ckJhc2VkKCJJbnNwZWN0b3JBcnJheSIpCi0gICAgICAg
IGNscy5BbnkgPSBjbHMuUmVmUHRyQmFzZWQoIkluc3BlY3RvclZhbHVlIikKKyAgICAgICAgY2xz
Lk9iamVjdCA9IGNscy5SZWZQdHJCYXNlZCgiSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QiKQor
ICAgICAgICBjbHMuQXJyYXkgPSBjbHMuUmVmUHRyQmFzZWQoIkluc3BlY3Rvcjo6SW5zcGVjdG9y
QXJyYXkiKQorICAgICAgICBjbHMuQW55ID0gY2xzLlJlZlB0ckJhc2VkKCJJbnNwZWN0b3I6Oklu
c3BlY3RvclZhbHVlIikKIAogVHlwZU1vZGVsLmluaXRfY2xhc3MoKQogCkBAIC04MzcsOCArODM3
LDggQEAgY2xhc3MgVHlwZUJpbmRpbmdzOgogCiAgICAgICAgIGNsYXNzIEhlbHBlcjoKICAgICAg
ICAgICAgIGlzX2FkX2hvYyA9IEZhbHNlCi0gICAgICAgICAgICBmdWxsX25hbWVfcHJlZml4X2Zv
cl91c2UgPSAiVHlwZUJ1aWxkZXI6OiIgKyBjb250ZXh0X2RvbWFpbl9uYW1lICsgIjo6IgotICAg
ICAgICAgICAgZnVsbF9uYW1lX3ByZWZpeF9mb3JfaW1wbCA9ICJUeXBlQnVpbGRlcjo6IiArIGNv
bnRleHRfZG9tYWluX25hbWUgKyAiOjoiCisgICAgICAgICAgICBmdWxsX25hbWVfcHJlZml4X2Zv
cl91c2UgPSAiSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6IiArIGNvbnRleHRfZG9tYWluX25hbWUg
KyAiOjoiCisgICAgICAgICAgICBmdWxsX25hbWVfcHJlZml4X2Zvcl9pbXBsID0gIkluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OiIgKyBjb250ZXh0X2RvbWFpbl9uYW1lICsgIjo6IgogCiAgICAgICAg
ICAgICBAc3RhdGljbWV0aG9kCiAgICAgICAgICAgICBkZWYgd3JpdGVfZG9jKHdyaXRlcik6CkBA
IC05MjgsNyArOTI4LDcgQEAgY2xhc3MgVHlwZUJpbmRpbmdzOgogCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIGVudW1fYmluZGluZ19jbHMubmVlZF9pbnRlcm5hbF9ydW50aW1l
X2Nhc3RfOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVu
ZCgiI2lmICVzXG4iICUgVkFMSURBVE9SX0lGREVGX05BTUUpCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgIHN0YXRpYyB2b2lkIGFzc2VydENv
cnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpO1xuIikKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgc3RhdGljIHZvaWQgYXNzZXJ0
Q29ycmVjdFZhbHVlKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVlKTtcbiIpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKCIjZW5kaWYgIC8v
ICVzXG4iICUgVkFMSURBVE9SX0lGREVGX05BTUUpCiAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZhbGlkYXRvcl93cml0ZXIgPSBnZW5lcmF0ZV9jb250ZXh0LnZhbGlkYXRv
cl93cml0ZXIKQEAgLTkzOCw3ICs5MzgsNyBAQCBjbGFzcyBUeXBlQmluZGluZ3M6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkb21haW5fZ3VhcmQ6CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluX2d1YXJkLmdlbmVyYXRlX29wZW4o
dmFsaWRhdG9yX3dyaXRlcikKIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCJ2b2lkICVzJXM6OmFzc2VydENvcnJlY3RWYWx1ZShJ
bnNwZWN0b3JWYWx1ZSogdmFsdWUpXG4iICUgKGhlbHBlci5mdWxsX25hbWVfcHJlZml4X2Zvcl9p
bXBsLCBlbnVtX25hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFs
aWRhdG9yX3dyaXRlci5uZXdsaW5lKCJ2b2lkICVzJXM6OmFzc2VydENvcnJlY3RWYWx1ZShJbnNw
ZWN0b3I6Okluc3BlY3RvclZhbHVlKiB2YWx1ZSlcbiIgJSAoaGVscGVyLmZ1bGxfbmFtZV9wcmVm
aXhfZm9yX2ltcGwsIGVudW1fbmFtZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoIntcbiIpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoIiAgICBXVEY6OlN0cmlu
ZyBzO1xuIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcl93
cml0ZXIubmV3bGluZSgiICAgIGJvb2wgY2FzdF9yZXMgPSB2YWx1ZS0+YXNTdHJpbmcoJnMpO1xu
IikKQEAgLTk4MCw3ICs5ODAsNyBAQCBjbGFzcyBUeXBlQmluZGluZ3M6CiAKICAgICAgICAgICAg
ICAgICAgICAgQHN0YXRpY21ldGhvZAogICAgICAgICAgICAgICAgICAgICBkZWYgZ2V0X3NldHRl
cl92YWx1ZV9leHByZXNzaW9uX3BhdHRlcm4oKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAiVHlwZUJ1aWxkZXI6OmdldEVudW1Db25zdGFudFZhbHVlKCVzKSIKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAiSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Z2V0RW51bUNvbnN0
YW50VmFsdWUoJXMpIgogCiAgICAgICAgICAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKICAgICAg
ICAgICAgICAgICAgICAgZGVmIHJlZHVjZV90b19yYXdfdHlwZSgpOgpAQCAtMTE3Miw5ICsxMTcy
LDkgQEAgY2xhc3MgVHlwZUJpbmRpbmdzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3cml0ZXIuYXBwZW5kKGNsYXNzX25hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdyaXRlci5hcHBlbmQoIiA6IHB1YmxpYyAiKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiBpc19vcGVuX3R5cGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB3cml0ZXIuYXBwZW5kKCJJbnNwZWN0b3JPYmplY3QiKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVuZCgiSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3QiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVuZCgiSW5zcGVjdG9yT2JqZWN0QmFz
ZSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKCJJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdEJhc2UiKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3cml0ZXIuYXBwZW5kKCIge1xuIikKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgd3JpdGVyLm5ld2xpbmUoInB1YmxpYzpcbiIpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFkX2hvY190eXBlX3dyaXRlciA9IHdyaXRlci5pbnNlcnRfd3JpdGVyKCIgICAg
IikKQEAgLTEyMzQsNyArMTIzNCw3IEBAIGNsYXNzIFR5cGVCaW5kaW5nczoKIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZV9tdWx0aWxpbmUoQ29kZUdlbmVy
YXRvckluc3BlY3RvclN0cmluZ3MuY2xhc3NfYmluZGluZ19idWlsZGVyX3BhcnRfNCkKIAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgIHR5cGVkZWYg
VHlwZUJ1aWxkZXI6OlN0cnVjdEl0ZW1UcmFpdHMgSXRlbVRyYWl0cztcbiIpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgdHlwZWRlZiBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpTdHJ1Y3RJdGVtVHJhaXRzIEl0ZW1UcmFpdHM7XG4iKQogCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwcm9wX2RhdGEgaW4gcmVzb2x2ZV9kYXRh
Lm9wdGlvbmFsX3Byb3BlcnRpZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwcm9wX25hbWUgPSBwcm9wX2RhdGEucFsibmFtZSJdCkBAIC0xMjUxLDI1ICsxMjUxLDI1IEBA
IGNsYXNzIFR5cGVCaW5kaW5nczoKIAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiBzZXR0ZXJfbmFtZSBpbiBJTlNQRUNUT1JfT0JKRUNUX1NFVFRFUl9OQU1FUzoKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAg
IHVzaW5nIEluc3BlY3Rvck9iamVjdEJhc2U6OiVzO1xuXG4iICUgc2V0dGVyX25hbWUpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICB1
c2luZyBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdEJhc2U6OiVzO1xuXG4iICUgc2V0dGVyX25h
bWUpCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2xhc3NfYmluZGluZ19j
bHMubmVlZF91c2VyX3J1bnRpbWVfY2FzdF86Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3cml0ZXIubmV3bGluZSgiICAgIHN0YXRpYyBQYXNzUmVmUHRyPCVzPiBydW50aW1l
Q2FzdChQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSlcbiIgJSBjbGFzc19uYW1lKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICBz
dGF0aWMgUGFzc1JlZlB0cjwlcz4gcnVudGltZUNhc3QoUGFzc1JlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3RvclZhbHVlPiB2YWx1ZSlcbiIgJSBjbGFzc19uYW1lKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICB7XG4iKQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICAgICAgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gb2JqZWN0O1xuIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdyaXRlci5uZXdsaW5lKCIgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4gb2JqZWN0O1xuIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdyaXRlci5uZXdsaW5lKCIgICAgICAgIGJvb2wgY2FzdFJlcyA9IHZhbHVlLT5hc09iamVjdCgm
b2JqZWN0KTtcbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIu
bmV3bGluZSgiICAgICAgICBBU1NFUlRfVU5VU0VEKGNhc3RSZXMsIGNhc3RSZXMpO1xuIikKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQoIiNpZiAlc1xu
IiAlIFZBTElEQVRPUl9JRkRFRl9OQU1FKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICAgICAgYXNzZXJ0Q29ycmVjdFZhbHVlKG9iamVjdC5n
ZXQoKSk7XG4iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFw
cGVuZCgiI2VuZGlmICAvLyAlc1xuIiAlIFZBTElEQVRPUl9JRkRFRl9OQU1FKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICAgICAgQ09NUElM
RV9BU1NFUlQoc2l6ZW9mKCVzKSA9PSBzaXplb2YoSW5zcGVjdG9yT2JqZWN0QmFzZSksIHR5cGVf
Y2FzdF9wcm9ibGVtKTtcbiIgJSBjbGFzc19uYW1lKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PCVz
Kj4oc3RhdGljX2Nhc3Q8SW5zcGVjdG9yT2JqZWN0QmFzZSo+KG9iamVjdC5nZXQoKSkpO1xuIiAl
IGNsYXNzX25hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIu
bmV3bGluZSgiICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoJXMpID09IHNpemVvZihJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdEJhc2UpLCB0eXBlX2Nhc3RfcHJvYmxlbSk7XG4iICUgY2xh
c3NfbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXds
aW5lKCIgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDwlcyo+KHN0YXRpY19jYXN0PEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0QmFzZSo+KG9iamVjdC5nZXQoKSkpO1xuIiAlIGNsYXNzX25hbWUp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZSgiICAg
IH1cbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5k
KCJcbiIpCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2xhc3NfYmluZGlu
Z19jbHMubmVlZF9pbnRlcm5hbF9ydW50aW1lX2Nhc3RfOgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVuZCgiI2lmICVzXG4iICUgVkFMSURBVE9SX0lGREVG
X05BTUUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGlu
ZSgiICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFs
dWUpO1xuIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXds
aW5lKCIgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3Rvcjo6SW5zcGVj
dG9yVmFsdWUqIHZhbHVlKTtcbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3cml0ZXIuYXBwZW5kKCIjZW5kaWYgIC8vICVzXG4iICUgVkFMSURBVE9SX0lGREVGX05BTUUp
CiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlZF9maWVsZF9zZXQg
PSAoY29udGV4dF9kb21haW5fbmFtZSArICIuIiArIGNsYXNzX25hbWUpIG5vdCBpbiBUWVBFU19X
SVRIX09QRU5fRklFTERfTElTVF9TRVQKQEAgLTEyODEsNyArMTI4MSw3IEBAIGNsYXNzIFR5cGVC
aW5kaW5nczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRvbWFpbl9n
dWFyZDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW5fZ3Vh
cmQuZ2VuZXJhdGVfb3Blbih2YWxpZGF0b3Jfd3JpdGVyKQogCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoInZvaWQgJXMlczo6YXNz
ZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSlcbiIgJSAoaGVscGVyLmZ1bGxf
bmFtZV9wcmVmaXhfZm9yX2ltcGwsIGNsYXNzX25hbWUpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCJ2b2lkICVzJXM6OmFzc2Vy
dENvcnJlY3RWYWx1ZShJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiB2YWx1ZSlcbiIgJSAoaGVs
cGVyLmZ1bGxfbmFtZV9wcmVmaXhfZm9yX2ltcGwsIGNsYXNzX25hbWUpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCJ7XG4iKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXds
aW5lKCIgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0O1xuIikKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcl93cml0ZXIubmV3bGluZSgiICAgIGJv
b2wgY2FzdFJlcyA9IHZhbHVlLT5hc09iamVjdCgmb2JqZWN0KTtcbiIpCkBAIC0xNTE5LDcgKzE1
MTksNyBAQCBjbGFzcyBUeXBlQmluZGluZ3M6CiAKICAgICAgICAgICAgICAgICAgICAgQGNsYXNz
bWV0aG9kCiAgICAgICAgICAgICAgICAgICAgIGRlZiBnZXRfYXJyYXlfaXRlbV9jX3R5cGVfdGV4
dChjbHMpOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VfcmlnaHRfc2hp
ZnQoIlR5cGVCdWlsZGVyOjpBcnJheTwlcz4iICUgY2xzLnJlc29sdmVfZGF0YV8uaXRlbV90eXBl
X2JpbmRpbmcuZ2V0X2FycmF5X2l0ZW1fY190eXBlX3RleHQoKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiByZXBsYWNlX3JpZ2h0X3NoaWZ0KCJJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTwlcz4iICUgY2xzLnJlc29sdmVfZGF0YV8uaXRlbV90eXBlX2JpbmRpbmcuZ2V0X2Fy
cmF5X2l0ZW1fY190eXBlX3RleHQoKSkKIAogICAgICAgICAgICAgICAgICAgICBAc3RhdGljbWV0
aG9kCiAgICAgICAgICAgICAgICAgICAgIGRlZiBnZXRfc2V0dGVyX3ZhbHVlX2V4cHJlc3Npb25f
cGF0dGVybigpOgpAQCAtMTkwMCwxMCArMTkwMCwxMCBAQCBjbGFzcyBHZW5lcmF0b3I6CiAgICAg
ICAgICAgICBkaXNwYXRjaGVyX25hbWUgPSAiSW5zcGVjdG9yIiArIENhcGl0YWxpemVyLmxvd2Vy
X2NhbWVsX2Nhc2VfdG9fdXBwZXIoZG9tYWluX25hbWUpICsgIkJhY2tlbmREaXNwYXRjaGVyIgog
ICAgICAgICAgICAgYWdlbnRfaW50ZXJmYWNlX25hbWUgPSBkaXNwYXRjaGVyX25hbWUgKyAiSGFu
ZGxlciIKIAotICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfZGlzcGF0Y2hlcl9pbnRlcmZh
Y2VfbGlzdC5hcHBlbmQoImNsYXNzICVzIEZJTkFMIDogcHVibGljIEluc3BlY3RvclN1cHBsZW1l
bnRhbEJhY2tlbmREaXNwYXRjaGVyIHtcbiIgJSBkaXNwYXRjaGVyX25hbWUpCisgICAgICAgICAg
ICBHZW5lcmF0b3IuYmFja2VuZF9kaXNwYXRjaGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgiY2xh
c3MgJXMgRklOQUwgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JTdXBwbGVtZW50YWxCYWNr
ZW5kRGlzcGF0Y2hlciB7XG4iICUgZGlzcGF0Y2hlcl9uYW1lKQogICAgICAgICAgICAgR2VuZXJh
dG9yLmJhY2tlbmRfZGlzcGF0Y2hlcl9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoInB1YmxpYzpcbiIp
Ci0gICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9kaXNwYXRjaGVyX2ludGVyZmFjZV9saXN0
LmFwcGVuZCgiICAgIHN0YXRpYyBQYXNzUmVmUHRyPCVzPiBjcmVhdGUoSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIqLCAlcyopO1xuIiAlIChkaXNwYXRjaGVyX25hbWUsIGFnZW50X2ludGVyZmFj
ZV9uYW1lKSkKLSAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3BhdGNoZXJfaW50ZXJm
YWNlX2xpc3QuYXBwZW5kKCIgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKGxvbmcgY2FsbElkLCBj
b25zdCBTdHJpbmcmIG1ldGhvZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1lc3NhZ2Up
IE9WRVJSSURFO1xuIikKKyAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3BhdGNoZXJf
aW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIgICAgc3RhdGljIFBhc3NSZWZQdHI8JXM+IGNyZWF0ZShJ
bnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiwgJXMqKTtcbiIgJSAoZGlzcGF0
Y2hlcl9uYW1lLCBhZ2VudF9pbnRlcmZhY2VfbmFtZSkpCisgICAgICAgICAgICBHZW5lcmF0b3Iu
YmFja2VuZF9kaXNwYXRjaGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgiICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1lc3NhZ2UpIE9WRVJSSURFO1xuIikKICAgICAg
ICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3BhdGNoZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5k
KCJwcml2YXRlOlxuIikKIAogICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfaGFuZGxlcl9p
bnRlcmZhY2VfbGlzdC5hcHBlbmQoImNsYXNzICVzIHtcbiIgJSBhZ2VudF9pbnRlcmZhY2VfbmFt
ZSkKQEAgLTE5MjIsNyArMTkyMiw3IEBAIGNsYXNzIEdlbmVyYXRvcjoKICAgICAgICAgICAgIEdl
bmVyYXRvci5iYWNrZW5kX2hhbmRsZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCJ9O1xuXG4iKQog
CiAgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9kaXNwYXRjaGVyX2ludGVyZmFjZV9saXN0
LmFwcGVuZCgicHJpdmF0ZTpcbiIpCi0gICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9kaXNw
YXRjaGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgiICAgICVzKEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKiwgJXMqKTtcbiIgJSAoZGlzcGF0Y2hlcl9uYW1lLCBhZ2VudF9pbnRlcmZhY2VfbmFt
ZSkpCisgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9kaXNwYXRjaGVyX2ludGVyZmFjZV9s
aXN0LmFwcGVuZCgiICAgICVzKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
LCAlcyopO1xuIiAlIChkaXNwYXRjaGVyX25hbWUsIGFnZW50X2ludGVyZmFjZV9uYW1lKSkKICAg
ICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3BhdGNoZXJfaW50ZXJmYWNlX2xpc3QuYXBw
ZW5kKCIgICAgJXMqIG1fYWdlbnQ7XG4iICUgYWdlbnRfaW50ZXJmYWNlX25hbWUpCiAgICAgICAg
ICAgICBHZW5lcmF0b3IuYmFja2VuZF9kaXNwYXRjaGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgi
fTtcblxuIikKIApAQCAtMjAwMyw3ICsyMDAzLDcgQEAgY2xhc3MgR2VuZXJhdG9yOgogICAgICAg
ICBHZW5lcmF0b3IuYmFja2VuZF9oYW5kbGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZChhZF9ob2Nf
dHlwZV9vdXRwdXQpCiAgICAgICAgIGFkX2hvY190eXBlX3dyaXRlciA9IFdyaXRlcihhZF9ob2Nf
dHlwZV9vdXRwdXQsICIgICAgIikKIAotICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9kaXNwYXRj
aGVyX2ludGVyZmFjZV9saXN0LmFwcGVuZCgiICAgIHZvaWQgJXMobG9uZyBjYWxsSWQsIGNvbnN0
IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7XG4iICUganNvbl9jb21tYW5kX25hbWUpCisgICAg
ICAgIEdlbmVyYXRvci5iYWNrZW5kX2Rpc3BhdGNoZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIg
ICAgdm9pZCAlcyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Qm
IG1lc3NhZ2UpO1xuIiAlIGpzb25fY29tbWFuZF9uYW1lKQogCiAgICAgICAgIEdlbmVyYXRvci5i
YWNrZW5kX2hhbmRsZXJfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIgICAgdmlydHVhbCB2b2lkICVz
KEVycm9yU3RyaW5nKiIgJSBqc29uX2NvbW1hbmRfbmFtZSkKIApAQCAtMjA5OCw5ICsyMDk4LDkg
QEAgY2xhc3MgR2VuZXJhdG9yOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX21ldGhvZF9pbXBsZW1lbnRhdGlvbl9saXN0LCBUZW1w
bGF0ZXMuY2FsbGJhY2tfbWV0aG9kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHsiY2FsbGJhY2tOYW1lIjogY2FsbGJhY2tfbmFtZSwgImhhbmRsZXJOYW1lIjog
YWdlbnRfaW50ZXJmYWNlX25hbWV9KQogCi0gICAgICAgICAgICBjYWxsYmFja193cml0ZXIubmV3
bGluZSgiY2xhc3MgIiArIGNhbGxiYWNrX25hbWUgKyAiIDogcHVibGljIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2Uge1xuIikKKyAgICAgICAgICAgIGNhbGxiYWNrX3dy
aXRlci5uZXdsaW5lKCJjbGFzcyAiICsgY2FsbGJhY2tfbmFtZSArICIgOiBwdWJsaWMgSW5zcGVj
dG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlIHtcbiIpCiAgICAg
ICAgICAgICBjYWxsYmFja193cml0ZXIubmV3bGluZSgicHVibGljOlxuIikKLSAgICAgICAgICAg
IGNhbGxiYWNrX3dyaXRlci5uZXdsaW5lKCIgICAgIiArIGNhbGxiYWNrX25hbWUgKyAiKFBhc3NS
ZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+LCBpbnQgaWQpO1xuIikKKyAgICAgICAg
ICAgIGNhbGxiYWNrX3dyaXRlci5uZXdsaW5lKCIgICAgIiArIGNhbGxiYWNrX25hbWUgKyAiKFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4sIGludCBpZCk7
XG4iKQogICAgICAgICAgICAgY2FsbGJhY2tfd3JpdGVyLm5ld2xpbmUoIiAgICB2b2lkIHNlbmRT
dWNjZXNzKCIgKyAiLCAiLmpvaW4oZGVjbF9wYXJhbWV0ZXJfbGlzdCkgKyAiKTtcbiIpCiAgICAg
ICAgICAgICBjYWxsYmFja193cml0ZXIubmV3bGluZSgifTtcbiIpCiAKQEAgLTIxMDksNyArMjEw
OSw3IEBAIGNsYXNzIEdlbmVyYXRvcjoKICAgICAgICAgICAgIG1ldGhvZF9kaXNwYXRjaF9oYW5k
bGluZy5hcHBlbmQoIiAgICBSZWZQdHI8JXM6OiVzPiBjYWxsYmFjayA9IGFkb3B0UmVmKG5ldyAl
czo6JXMobV9iYWNrZW5kRGlzcGF0Y2hlcixjYWxsSWQpKTtcbiIgJSAoYWdlbnRfaW50ZXJmYWNl
X25hbWUsIGNhbGxiYWNrX25hbWUsIGFnZW50X2ludGVyZmFjZV9uYW1lLCBjYWxsYmFja19uYW1l
KSkKICAgICAgICAgICAgIG1ldGhvZF9lbmRpbmdfaGFuZGxpbmcuYXBwZW5kKCIgICAgaWYgKGVy
cm9yLmxlbmd0aCgpKSB7XG4iKQogICAgICAgICAgICAgbWV0aG9kX2VuZGluZ19oYW5kbGluZy5h
cHBlbmQoIiAgICAgICAgY2FsbGJhY2stPmRpc2FibGUoKTtcbiIpCi0gICAgICAgICAgICBtZXRo
b2RfZW5kaW5nX2hhbmRsaW5nLmFwcGVuZCgiICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5y
ZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpT
ZXJ2ZXJFcnJvciwgZXJyb3IpO1xuIikKKyAgICAgICAgICAgIG1ldGhvZF9lbmRpbmdfaGFuZGxp
bmcuYXBwZW5kKCIgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJy
b3IoJmNhbGxJZCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6U2VydmVy
RXJyb3IsIGVycm9yKTtcbiIpCiAgICAgICAgICAgICBtZXRob2RfZW5kaW5nX2hhbmRsaW5nLmFw
cGVuZCgiICAgICAgICByZXR1cm47XG4iKQogICAgICAgICAgICAgbWV0aG9kX2VuZGluZ19oYW5k
bGluZy5hcHBlbmQoIiAgICB9IikKIApAQCAtMjQxMyw4ICsyNDEzLDggQEAgYmFja2VuZF9jcHBf
ZmlsZSA9IFNtYXJ0T3V0cHV0KG91dHB1dF9jcAogZnJvbnRlbmRfaF9maWxlID0gU21hcnRPdXRw
dXQob3V0cHV0X2hlYWRlcl9kaXJuYW1lICsgIi9JbnNwZWN0b3JGcm9udGVuZC5oIikKIGZyb250
ZW5kX2NwcF9maWxlID0gU21hcnRPdXRwdXQob3V0cHV0X2NwcF9kaXJuYW1lICsgIi9JbnNwZWN0
b3JGcm9udGVuZC5jcHAiKQogCi10eXBlYnVpbGRlcl9oX2ZpbGUgPSBTbWFydE91dHB1dChvdXRw
dXRfaGVhZGVyX2Rpcm5hbWUgKyAiL0luc3BlY3RvclR5cGVCdWlsZGVyLmgiKQotdHlwZWJ1aWxk
ZXJfY3BwX2ZpbGUgPSBTbWFydE91dHB1dChvdXRwdXRfY3BwX2Rpcm5hbWUgKyAiL0luc3BlY3Rv
clR5cGVCdWlsZGVyLmNwcCIpCit0eXBlYnVpbGRlcl9oX2ZpbGUgPSBTbWFydE91dHB1dChvdXRw
dXRfaGVhZGVyX2Rpcm5hbWUgKyAiL0luc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIikKK3R5cGVi
dWlsZGVyX2NwcF9maWxlID0gU21hcnRPdXRwdXQob3V0cHV0X2NwcF9kaXJuYW1lICsgIi9JbnNw
ZWN0b3JXZWJUeXBlQnVpbGRlcnMuY3BwIikKIAogYmFja2VuZF9qc19maWxlID0gU21hcnRPdXRw
dXQob3V0cHV0X2pzX2Rpcm5hbWUgKyAiL0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcyIpCiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yU3Ry
aW5ncy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVy
YXRvckluc3BlY3RvclN0cmluZ3MucHkJKHJldmlzaW9uIDE2MDQwNCkKKysrIFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weQkod29ya2luZyBj
b3B5KQpAQCAtNzAsNyArNzAsNyBAQCBiYWNrZW5kX2Rpc3BhdGNoZXJfZGlzcGF0Y2hfbWV0aG9k
ID0gKAogewogICAgIFJlZjwke2Rpc3BhdGNoZXJOYW1lfT4gcHJvdGVjdCgqdGhpcyk7CiAKLSAg
ICB0eXBlZGVmIHZvaWQgKCR7ZGlzcGF0Y2hlck5hbWV9OjoqQ2FsbEhhbmRsZXIpKGxvbmcgY2Fs
bElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOworICAgIHR5cGVkZWYgdm9pZCAo
JHtkaXNwYXRjaGVyTmFtZX06OipDYWxsSGFuZGxlcikobG9uZyBjYWxsSWQsIGNvbnN0IEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKICAgICB0eXBlZGVmIEhhc2hNYXA8U3Ry
aW5nLCBDYWxsSGFuZGxlcj4gRGlzcGF0Y2hNYXA7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChE
aXNwYXRjaE1hcCwgZGlzcGF0Y2hNYXAsICgpKTsKICAgICBpZiAoZGlzcGF0Y2hNYXAuaXNFbXB0
eSgpKSB7CkBAIC0xMTIsNyArMTEyLDcgQEAgJGNvZGUKICIiIikKIAogY2FsbGJhY2tfbWV0aG9k
ID0gKAotIiIiJHtoYW5kbGVyTmFtZX06OiR7Y2FsbGJhY2tOYW1lfTo6JHtjYWxsYmFja05hbWV9
KFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IGJhY2tlbmREaXNwYXRjaGVy
LCBpbnQgaWQpIDogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZShiYWNr
ZW5kRGlzcGF0Y2hlciwgaWQpIHsgfQorIiIiJHtoYW5kbGVyTmFtZX06OiR7Y2FsbGJhY2tOYW1l
fTo6JHtjYWxsYmFja05hbWV9KFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+
IGJhY2tlbmREaXNwYXRjaGVyLCBpbnQgaWQpIDogSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlKGJhY2tlbmREaXNwYXRjaGVyLCBpZCkgeyB9CiAKIHZv
aWQgJHtoYW5kbGVyTmFtZX06OiR7Y2FsbGJhY2tOYW1lfTo6c2VuZFN1Y2Nlc3MoJHtwYXJhbWV0
ZXJzfSkKIHsKQEAgLTEyNSwxNSArMTI1LDE0IEBAIGZyb250ZW5kX2ggPSAoCiAiIiIjaWZuZGVm
IEluc3BlY3RvckZyb250ZW5kX2gKICNkZWZpbmUgSW5zcGVjdG9yRnJvbnRlbmRfaAogCi0jaW5j
bHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMu
aCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JGb3J3YXJkaW5nLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsOwotCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAogJGRvbWFpbkNsYXNzTGlzdApAQCAt
MTQ5LDE2ICsxNDgsMTMgQEAgYmFja2VuZF9oID0gKAogIiIiI2lmbmRlZiBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcnNfaAogI2RlZmluZSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnNfaAog
Ci0jaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCIKLSNpbmNsdWRlICJJbnNw
ZWN0b3JUeXBlQnVpbGRlci5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5o
IgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwotY2xhc3Mg
SW5zcGVjdG9yQXJyYXk7Ci0KIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCiAkaGFuZGxl
ckludGVyZmFjZXMKQEAgLTE3OCwxMSArMTc0LDEzIEBAIGJhY2tlbmRfY3BwID0gKAogI2luY2x1
ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogCiAjaW5jbHVkZSAiSW5zcGVjdG9y
QWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JGb3J3YXJkaW5nLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAkbWV0aG9kcwpAQCAtMjAwLDEwICsxOTgsMTEgQEAgZnJvbnRlbmRfY3BwID0gKAogCiAj
aW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKIAotI2luY2x1ZGUgIkluc3BlY3RvckZvcndh
cmRpbmcuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogJG1ldGhvZHMKQEAgLTIxNSwyOTEgKzIxNCwyMCBAQCAkbWV0aG9kcwog
CiB0eXBlYnVpbGRlcl9oID0gKAogIiIiCi0jaWZuZGVmIEluc3BlY3RvclR5cGVCdWlsZGVyX2gK
LSNkZWZpbmUgSW5zcGVjdG9yVHlwZUJ1aWxkZXJfaAorLy8gRklYTUU6IFRZUEUuCisjaWZuZGVm
IEluc3BlY3RvcldlYlR5cGVCdWlsZGVyc19oCisjZGVmaW5lIEluc3BlY3RvcldlYlR5cGVCdWls
ZGVyc19oCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFs
dWVzLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclR5cGVCdWlsZGVyLmg+CiAjaW5j
bHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCi1u
YW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogbmFtZXNwYWNlIFR5
cGVCdWlsZGVyIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIE9wdE91dHB1dCB7Ci1w
dWJsaWM6Ci0gICAgT3B0T3V0cHV0KCkgOiBtX2Fzc2lnbmVkKGZhbHNlKSB7IH0KLQotICAgIHZv
aWQgb3BlcmF0b3I9KFQgdmFsdWUpCi0gICAgewotICAgICAgICBtX3ZhbHVlID0gdmFsdWU7Ci0g
ICAgICAgIG1fYXNzaWduZWQgPSB0cnVlOwotICAgIH0KLQotICAgIGJvb2wgaXNBc3NpZ25lZCgp
IHsgcmV0dXJuIG1fYXNzaWduZWQ7IH0KLQotICAgIFQgZ2V0VmFsdWUoKQotICAgIHsKLSAgICAg
ICAgQVNTRVJUKGlzQXNzaWduZWQoKSk7Ci0gICAgICAgIHJldHVybiBtX3ZhbHVlOwotICAgIH0K
LQotcHJpdmF0ZToKLSAgICBUIG1fdmFsdWU7Ci0gICAgYm9vbCBtX2Fzc2lnbmVkOwotCi0gICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoT3B0T3V0cHV0KTsKLX07Ci0KLQotLy8gQSBzbWFsbCB0cmFu
c2llbnQgd3JhcHBlciBhcm91bmQgaW50IHR5cGUsIHRoYXQgY2FuIGJlIHVzZWQgYXMgYSBmdW5j
aXRvbiBwYXJhbWV0ZXIgdHlwZQotLy8gY2xldmVybHkgZGlzYWxsb3dpbmcgQysrIGltcGxpY2l0
IGNhc3RzIGZyb20gZmxvYXQgb3IgZG91YmxlLgotY2xhc3MgRXhhY3RseUludCB7Ci1wdWJsaWM6
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBFeGFjdGx5SW50KFQgdCkgOiBtX3ZhbHVl
KGNhc3RfdG9faW50PFQ+KHQpKSB7fQotCi0gICAgRXhhY3RseUludCgpIHt9Ci0KLSAgICBvcGVy
YXRvciBpbnQoKSB7IHJldHVybiBtX3ZhbHVlOyB9Ci1wcml2YXRlOgotICAgIGludCBtX3ZhbHVl
OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgaW50IGNhc3RfdG9faW50
KFQpIHsgcmV0dXJuIFQ6OmRlZmF1bHRfY2FzZV9jYXN0X2lzX25vdF9zdXBwb3J0ZWQoKTsgfQot
fTsKLQotdGVtcGxhdGU8PgotaW5saW5lIGludCBFeGFjdGx5SW50OjpjYXN0X3RvX2ludDxpbnQ+
KGludCBpKSB7IHJldHVybiBpOyB9Ci0KLXRlbXBsYXRlPD4KLWlubGluZSBpbnQgRXhhY3RseUlu
dDo6Y2FzdF90b19pbnQ8dW5zaWduZWQgaW50Pih1bnNpZ25lZCBpbnQgaSkgeyByZXR1cm4gaTsg
fQotCi1jbGFzcyBSdW50aW1lQ2FzdEhlbHBlciB7Ci1wdWJsaWM6Ci0jaWYgJHZhbGlkYXRvcklm
ZGVmTmFtZQotICAgIHRlbXBsYXRlPEluc3BlY3RvclZhbHVlOjpUeXBlIFRZUEU+Ci0gICAgc3Rh
dGljIHZvaWQgYXNzZXJ0VHlwZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCi0gICAgewotICAgICAg
ICBBU1NFUlQodmFsdWUtPnR5cGUoKSA9PSBUWVBFKTsKLSAgICB9Ci0gICAgc3RhdGljIHZvaWQg
YXNzZXJ0QW55KEluc3BlY3RvclZhbHVlKik7Ci0gICAgc3RhdGljIHZvaWQgYXNzZXJ0SW50KElu
c3BlY3RvclZhbHVlKiB2YWx1ZSk7Ci0jZW5kaWYKLX07Ci0KLQotLy8gVGhpcyBjbGFzcyBwcm92
aWRlcyAiVHJhaXRzIiB0eXBlIGZvciB0aGUgaW5wdXQgdHlwZSBULiBJdCBpcyBwcm9ncmFtbWVk
IHVzaW5nIEMrKyB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbgotLy8gdGVjaG5pcXVlLiBCeSBkZWZh
dWx0IGl0IHNpbXBseSB0YWtlcyAiSXRlbVRyYWl0cyIgdHlwZSBmcm9tIFQsIGJ1dCBpdCBkb2Vz
bid0IHdvcmsgd2l0aCB0aGUgYmFzZSB0eXBlcy4KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1
Y3QgQXJyYXlJdGVtSGVscGVyIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6Okl0ZW1UcmFpdHMg
VHJhaXRzOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIEFycmF5IDogcHVibGlj
IEluc3BlY3RvckFycmF5QmFzZSB7Ci1wcml2YXRlOgotICAgIEFycmF5KCkgeyB9Ci0KLSAgICBJ
bnNwZWN0b3JBcnJheSogb3BlbkFjY2Vzc29ycygpIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQo
c2l6ZW9mKEluc3BlY3RvckFycmF5KSA9PSBzaXplb2YoQXJyYXk8VD4pLCBjYW5ub3RfY2FzdCk7
Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbnNwZWN0b3JBcnJheSo+KHN0YXRpY19jYXN0
PEluc3BlY3RvckFycmF5QmFzZSo+KHRoaXMpKTsKLSAgICB9Ci0KLXB1YmxpYzoKLSAgICB2b2lk
IGFkZEl0ZW0oUGFzc1JlZlB0cjxUPiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIEFycmF5SXRlbUhl
bHBlcjxUPjo6VHJhaXRzOjpwdXNoUmVmUHRyKHRoaXMtPm9wZW5BY2Nlc3NvcnMoKSwgdmFsdWUp
OwotICAgIH0KLQotICAgIHZvaWQgYWRkSXRlbShUIHZhbHVlKQotICAgIHsKLSAgICAgICAgQXJy
YXlJdGVtSGVscGVyPFQ+OjpUcmFpdHM6OnB1c2hSYXcodGhpcy0+b3BlbkFjY2Vzc29ycygpLCB2
YWx1ZSk7Ci0gICAgfQotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8QXJyYXk8VD4+IGNyZWF0ZSgp
Ci0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFycmF5PFQ+KCkpOwotICAgIH0K
LQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFycmF5PFQ+PiBydW50aW1lQ2FzdChQYXNzUmVmUHRy
PEluc3BlY3RvclZhbHVlPiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JB
cnJheT4gYXJyYXk7Ci0gICAgICAgIGJvb2wgY2FzdFJlcyA9IHZhbHVlLT5hc0FycmF5KCZhcnJh
eSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoY2FzdFJlcywgY2FzdFJlcyk7Ci0jaWYgJHZhbGlk
YXRvcklmZGVmTmFtZQotICAgICAgICBhc3NlcnRDb3JyZWN0VmFsdWUoYXJyYXkuZ2V0KCkpOwot
I2VuZGlmICAvLyAkdmFsaWRhdG9ySWZkZWZOYW1lCi0gICAgICAgIENPTVBJTEVfQVNTRVJUKHNp
emVvZihBcnJheTxUPikgPT0gc2l6ZW9mKEluc3BlY3RvckFycmF5KSwgdHlwZV9jYXN0X3Byb2Js
ZW0pOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk8VD4qPihzdGF0aWNfY2FzdDxJ
bnNwZWN0b3JBcnJheUJhc2UqPihhcnJheS5nZXQoKSkpOwotICAgIH0KLQotI2lmICR2YWxpZGF0
b3JJZmRlZk5hbWUKLSAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9y
VmFsdWUqIHZhbHVlKQotICAgIHsKLSAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcnJh
eTsKLSAgICAgICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFzQXJyYXkoJmFycmF5KTsKLSAgICAg
ICAgQVNTRVJUX1VOVVNFRChjYXN0UmVzLCBjYXN0UmVzKTsKLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGFycmF5LT5sZW5ndGgoKTsgaSsrKQotICAgICAgICAgICAgQXJyYXlJdGVt
SGVscGVyPFQ+OjpUcmFpdHM6OnRlbXBsYXRlIGFzc2VydENvcnJlY3RWYWx1ZTxUPihhcnJheS0+
Z2V0KGkpLmdldCgpKTsKLSAgICB9Ci0KLSNlbmRpZiAvLyAkdmFsaWRhdG9ySWZkZWZOYW1lCi19
OwotCi1zdHJ1Y3QgU3RydWN0SXRlbVRyYWl0cyB7Ci0gICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0
cihJbnNwZWN0b3JBcnJheSogYXJyYXksIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVl
KQotICAgIHsKLSAgICAgICAgYXJyYXktPnB1c2hWYWx1ZSh2YWx1ZSk7Ci0gICAgfQotCi0jaWYg
JHZhbGlkYXRvcklmZGVmTmFtZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGlj
IHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkgewotICAgICAg
ICBUOjphc3NlcnRDb3JyZWN0VmFsdWUodmFsdWUpOwotICAgIH0KLSNlbmRpZiAgLy8gJHZhbGlk
YXRvcklmZGVmTmFtZQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IEFycmF5SXRlbUhlbHBlcjxT
dHJpbmc+IHsKLSAgICBzdHJ1Y3QgVHJhaXRzIHsKLSAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJh
dyhJbnNwZWN0b3JBcnJheSogYXJyYXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGFycmF5LT5wdXNoU3RyaW5nKHZhbHVlKTsKLSAgICAgICAgfQotCi0jaWYg
JHZhbGlkYXRvcklmZGVmTmFtZQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAg
ICBzdGF0aWMgdm9pZCBhc3NlcnRDb3JyZWN0VmFsdWUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKSB7
Ci0gICAgICAgICAgICBSdW50aW1lQ2FzdEhlbHBlcjo6YXNzZXJ0VHlwZTxJbnNwZWN0b3JWYWx1
ZTo6VHlwZVN0cmluZz4odmFsdWUpOwotICAgICAgICB9Ci0jZW5kaWYgIC8vICR2YWxpZGF0b3JJ
ZmRlZk5hbWUKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IEFycmF5SXRlbUhlbHBl
cjxpbnQ+IHsKLSAgICBzdHJ1Y3QgVHJhaXRzIHsKLSAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJh
dyhJbnNwZWN0b3JBcnJheSogYXJyYXksIGludCB2YWx1ZSkKLSAgICAgICAgewotICAgICAgICAg
ICAgYXJyYXktPnB1c2hJbnQodmFsdWUpOwotICAgICAgICB9Ci0KLSNpZiAkdmFsaWRhdG9ySWZk
ZWZOYW1lCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyB2b2lk
IGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpIHsKLSAgICAgICAgICAg
IFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRJbnQodmFsdWUpOwotICAgICAgICB9Ci0jZW5kaWYg
IC8vICR2YWxpZGF0b3JJZmRlZk5hbWUKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0
IEFycmF5SXRlbUhlbHBlcjxkb3VibGU+IHsKLSAgICBzdHJ1Y3QgVHJhaXRzIHsKLSAgICAgICAg
c3RhdGljIHZvaWQgcHVzaFJhdyhJbnNwZWN0b3JBcnJheSogYXJyYXksIGRvdWJsZSB2YWx1ZSkK
LSAgICAgICAgewotICAgICAgICAgICAgYXJyYXktPnB1c2hOdW1iZXIodmFsdWUpOwotICAgICAg
ICB9Ci0KLSNpZiAkdmFsaWRhdG9ySWZkZWZOYW1lCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+Ci0gICAgICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1
ZSogdmFsdWUpIHsKLSAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVscGVyOjphc3NlcnRUeXBlPElu
c3BlY3RvclZhbHVlOjpUeXBlTnVtYmVyPih2YWx1ZSk7Ci0gICAgICAgIH0KLSNlbmRpZiAgLy8g
JHZhbGlkYXRvcklmZGVmTmFtZQotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgQXJy
YXlJdGVtSGVscGVyPGJvb2w+IHsKLSAgICBzdHJ1Y3QgVHJhaXRzIHsKLSAgICAgICAgc3RhdGlj
IHZvaWQgcHVzaFJhdyhJbnNwZWN0b3JBcnJheSogYXJyYXksIGJvb2wgdmFsdWUpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGFycmF5LT5wdXNoQm9vbGVhbih2YWx1ZSk7Ci0gICAgICAgIH0KLQot
I2lmICR2YWxpZGF0b3JJZmRlZk5hbWUKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAg
ICAgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1
ZSkgewotICAgICAgICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9y
VmFsdWU6OlR5cGVCb29sZWFuPih2YWx1ZSk7Ci0gICAgICAgIH0KLSNlbmRpZiAgLy8gJHZhbGlk
YXRvcklmZGVmTmFtZQotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgQXJyYXlJdGVt
SGVscGVyPEluc3BlY3RvclZhbHVlPiB7Ci0gICAgc3RydWN0IFRyYWl0cyB7Ci0gICAgICAgIHN0
YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRyPElu
c3BlY3RvclZhbHVlPiB2YWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgYXJyYXktPnB1c2hW
YWx1ZSh2YWx1ZSk7Ci0gICAgICAgIH0KLQotI2lmICR2YWxpZGF0b3JJZmRlZk5hbWUKLSAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVj
dFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkgewotICAgICAgICAgICAgUnVudGltZUNhc3RI
ZWxwZXI6OmFzc2VydEFueSh2YWx1ZSk7Ci0gICAgICAgIH0KLSNlbmRpZiAgLy8gJHZhbGlkYXRv
cklmZGVmTmFtZQotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgQXJyYXlJdGVtSGVs
cGVyPEluc3BlY3Rvck9iamVjdD4gewotICAgIHN0cnVjdCBUcmFpdHMgewotICAgICAgICBzdGF0
aWMgdm9pZCBwdXNoUmVmUHRyKEluc3BlY3RvckFycmF5KiBhcnJheSwgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4gdmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGFycmF5LT5wdXNoVmFs
dWUodmFsdWUpOwotICAgICAgICB9Ci0KLSNpZiAkdmFsaWRhdG9ySWZkZWZOYW1lCi0gICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyB2b2lkIGFzc2VydENvcnJlY3RW
YWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpIHsKLSAgICAgICAgICAgIFJ1bnRpbWVDYXN0SGVs
cGVyOjphc3NlcnRUeXBlPEluc3BlY3RvclZhbHVlOjpUeXBlT2JqZWN0Pih2YWx1ZSk7Ci0gICAg
ICAgIH0KLSNlbmRpZiAgLy8gJHZhbGlkYXRvcklmZGVmTmFtZQotICAgIH07Ci19OwotCi10ZW1w
bGF0ZTw+Ci1zdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPEluc3BlY3RvckFycmF5PiB7Ci0gICAgc3Ry
dWN0IFRyYWl0cyB7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yQXJy
YXkqIGFycmF5LCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiB2YWx1ZSkKLSAgICAgICAgewot
ICAgICAgICAgICAgYXJyYXktPnB1c2hBcnJheSh2YWx1ZSk7Ci0gICAgICAgIH0KLQotI2lmICR2
YWxpZGF0b3JJZmRlZk5hbWUKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAg
c3RhdGljIHZvaWQgYXNzZXJ0Q29ycmVjdFZhbHVlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkgewot
ICAgICAgICAgICAgUnVudGltZUNhc3RIZWxwZXI6OmFzc2VydFR5cGU8SW5zcGVjdG9yVmFsdWU6
OlR5cGVBcnJheT4odmFsdWUpOwotICAgICAgICB9Ci0jZW5kaWYgIC8vICR2YWxpZGF0b3JJZmRl
Zk5hbWUKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBBcnJheUl0
ZW1IZWxwZXI8VHlwZUJ1aWxkZXI6OkFycmF5PFQ+PiB7Ci0gICAgc3RydWN0IFRyYWl0cyB7Ci0g
ICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQYXNz
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUPj4gdmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGFycmF5LT5wdXNoVmFsdWUodmFsdWUpOwotICAgICAgICB9Ci0KLSNpZiAkdmFsaWRhdG9y
SWZkZWZOYW1lCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFM+Ci0gICAgICAgIHN0YXRpYyB2
b2lkIGFzc2VydENvcnJlY3RWYWx1ZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpIHsKLSAgICAgICAg
ICAgIFM6OmFzc2VydENvcnJlY3RWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIH0KLSNlbmRpZiAgLy8g
JHZhbGlkYXRvcklmZGVmTmFtZQotICAgIH07Ci19OwotCiAke2ZvcndhcmRzfQogCiBTdHJpbmcg
Z2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpOwpAQCAtNTA3LDEyICsyMzUsMTEgQEAgU3Ry
aW5nIGdldEVudW1Db25zdGFudFZhbHVlKGludCBjb2RlKTsKICR7dHlwZUJ1aWxkZXJzfQogfSAv
LyBuYW1lc3BhY2UgVHlwZUJ1aWxkZXIKIAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8v
IG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNl
bmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JUeXBlQnVpbGRlcl9oKQorI2VuZGlmIC8vICFkZWZp
bmVkKEluc3BlY3RvcldlYlR5cGVCdWlsZGVyc19oKQogCiAiIiIpCiAKQEAgLTUyMiwxMCArMjQ5
LDEyIEBAIHR5cGVidWlsZGVyX2NwcCA9ICgKICNpbmNsdWRlICJjb25maWcuaCIKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKKyNpbmNs
dWRlICJJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBuYW1lc3BhY2UgVHlwZUJ1aWxkZXIgewogCkBA
IC01NDIsMjUgKzI3MSwxMSBAQCAkaW1wbENvZGUKIAogI2lmICR2YWxpZGF0b3JJZmRlZk5hbWUK
IAotdm9pZCBUeXBlQnVpbGRlcjo6UnVudGltZUNhc3RIZWxwZXI6OmFzc2VydEFueShJbnNwZWN0
b3JWYWx1ZSopCi17Ci0gICAgLy8gTm8tb3AuCi19Ci0KLQotdm9pZCBUeXBlQnVpbGRlcjo6UnVu
dGltZUNhc3RIZWxwZXI6OmFzc2VydEludChJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCi17Ci0gICAg
ZG91YmxlIHY7Ci0gICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFzTnVtYmVyKCZ2KTsKLSAgICBB
U1NFUlRfVU5VU0VEKGNhc3RSZXMsIGNhc3RSZXMpOwotICAgIEFTU0VSVChzdGF0aWNfY2FzdDxk
b3VibGU+KHN0YXRpY19jYXN0PGludD4odikpID09IHYpOwotfQotCiAkdmFsaWRhdG9yQ29kZQog
CiAjZW5kaWYgLy8gJHZhbGlkYXRvcklmZGVmTmFtZQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Cit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1Ip
CiAiIiIpCkBAIC01ODQsMTQgKzI5OSwxNCBAQCBjbGFzc19iaW5kaW5nX2J1aWxkZXJfcGFydF8x
ID0gKAogICAgIHRlbXBsYXRlPGludCBTVEFURT4KICAgICBjbGFzcyBCdWlsZGVyIHsKICAgICBw
cml2YXRlOgotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKKyAgICAg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKIAogICAgICAg
ICB0ZW1wbGF0ZTxpbnQgU1RFUD4gQnVpbGRlcjxTVEFURSB8IFNURVA+JiBjYXN0U3RhdGUoKQog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8QnVpbGRlcjxT
VEFURSB8IFNURVA+Kj4odGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBCdWlsZGVyKFBhc3NS
ZWZQdHI8LyolcyovSW5zcGVjdG9yT2JqZWN0PiBwdHIpCisgICAgICAgIEJ1aWxkZXIoUGFzc1Jl
ZlB0cjwvKiVzKi9JbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gcHRyKQogICAgICAgICB7CiAg
ICAgICAgICAgICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBOb0ZpZWxkc1NldCwgYnVpbGRlcl9j
cmVhdGVkX2luX25vbl9pbml0X3N0YXRlKTsKICAgICAgICAgICAgIG1fcmVzdWx0ID0gcHRyOwpA
QCAtNjEzLDcgKzMyOCw3IEBAIGNsYXNzX2JpbmRpbmdfYnVpbGRlcl9wYXJ0XzMgPSAoIiIiCiAg
ICAgICAgIG9wZXJhdG9yIFJlZlB0cjwlcz4mICgpCiAgICAgICAgIHsKICAgICAgICAgICAgIENP
TVBJTEVfQVNTRVJUKFNUQVRFID09IEFsbEZpZWxkc1NldCwgcmVzdWx0X2lzX25vdF9yZWFkeSk7
Ci0gICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoJXMpID09IHNpemVvZihJbnNwZWN0
b3JPYmplY3QpLCBjYW5ub3RfY2FzdCk7CisgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXpl
b2YoJXMpID09IHNpemVvZihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0
KTsKICAgICAgICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxSZWZQdHI8JXM+Kj4oJm1f
cmVzdWx0KTsKICAgICAgICAgfQogCkBAIC02MjgsNiArMzQzLDYgQEAgY2xhc3NfYmluZGluZ19i
dWlsZGVyX3BhcnRfMyA9ICgiIiIKIGNsYXNzX2JpbmRpbmdfYnVpbGRlcl9wYXJ0XzQgPSAoCiAi
IiIgICAgc3RhdGljIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+IGNyZWF0ZSgpCiAgICAgewotICAgICAg
ICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7
CisgICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdDo6Y3JlYXRlKCkpOwogICAgIH0KICIiIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzgsMTQgKzM4LDE2IEBACiAjaW5jbHVkZSAiSWRlbnRpZmllcnNGYWN0b3J5LmgiCiAjaW5jbHVk
ZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIK
LSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMu
aCIKICNpbmNsdWRlICJTY3JpcHRDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3Rh
Y2suaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCi0jaW5jbHVkZSAiU2Ny
aXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgorI2luY2x1ZGUg
PGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IENvbnNvbGVNZXNzYWdlOjpDb25zb2xlTWVzc2FnZShib29sIGNhbkdlbmVyYXRlQ2FsbFN0YWNr
LCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxl
dmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZp
ZXIpCkBAIC0xMzksNTcgKzE0MSw1NyBAQCB2b2lkIENvbnNvbGVNZXNzYWdlOjphdXRvZ2VuZXJh
dGVNZXRhZGF0CiB9CiAKIC8vIEtlZXAgaW4gc3luYyB3aXRoIGluc3BlY3Rvci9mcm9udC1lbmQv
Q29uc29sZVZpZXcuanMKLXN0YXRpYyBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3Nh
Z2U6OlNvdXJjZTo6RW51bSBtZXNzYWdlU291cmNlVmFsdWUoTWVzc2FnZVNvdXJjZSBzb3VyY2Up
CitzdGF0aWMgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6
OlNvdXJjZTo6RW51bSBtZXNzYWdlU291cmNlVmFsdWUoTWVzc2FnZVNvdXJjZSBzb3VyY2UpCiB7
CiAgICAgc3dpdGNoIChzb3VyY2UpIHsKLSAgICBjYXNlIFhNTE1lc3NhZ2VTb3VyY2U6IHJldHVy
biBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6WE1MOwotICAg
IGNhc2UgSlNNZXNzYWdlU291cmNlOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNv
bGVNZXNzYWdlOjpTb3VyY2U6OkphdmFzY3JpcHQ7Ci0gICAgY2FzZSBOZXR3b3JrTWVzc2FnZVNv
dXJjZTogcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNl
OjpOZXR3b3JrOwotICAgIGNhc2UgQ29uc29sZUFQSU1lc3NhZ2VTb3VyY2U6IHJldHVybiBUeXBl
QnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6Q29uc29sZUFQSTsKLSAg
ICBjYXNlIFN0b3JhZ2VNZXNzYWdlU291cmNlOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6
OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6OlN0b3JhZ2U7Ci0gICAgY2FzZSBBcHBDYWNoZU1lc3Nh
Z2VTb3VyY2U6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNv
dXJjZTo6QXBwY2FjaGU7Ci0gICAgY2FzZSBSZW5kZXJpbmdNZXNzYWdlU291cmNlOiByZXR1cm4g
VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6OlJlbmRlcmluZzsK
LSAgICBjYXNlIENTU01lc3NhZ2VTb3VyY2U6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6
Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6Q1NTOwotICAgIGNhc2UgU2VjdXJpdHlNZXNzYWdlU291
cmNlOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6
OlNlY3VyaXR5OwotICAgIGNhc2UgT3RoZXJNZXNzYWdlU291cmNlOiByZXR1cm4gVHlwZUJ1aWxk
ZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6Ok90aGVyOworICAgIGNhc2UgWE1M
TWVzc2FnZVNvdXJjZTogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNv
bnNvbGVNZXNzYWdlOjpTb3VyY2U6OlhNTDsKKyAgICBjYXNlIEpTTWVzc2FnZVNvdXJjZTogcmV0
dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3Vy
Y2U6OkphdmFzY3JpcHQ7CisgICAgY2FzZSBOZXR3b3JrTWVzc2FnZVNvdXJjZTogcmV0dXJuIElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6Ok5l
dHdvcms7CisgICAgY2FzZSBDb25zb2xlQVBJTWVzc2FnZVNvdXJjZTogcmV0dXJuIEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6OkNvbnNvbGVB
UEk7CisgICAgY2FzZSBTdG9yYWdlTWVzc2FnZVNvdXJjZTogcmV0dXJuIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6OlN0b3JhZ2U7CisgICAg
Y2FzZSBBcHBDYWNoZU1lc3NhZ2VTb3VyY2U6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpBcHBjYWNoZTsKKyAgICBjYXNlIFJl
bmRlcmluZ01lc3NhZ2VTb3VyY2U6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25z
b2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpSZW5kZXJpbmc7CisgICAgY2FzZSBDU1NNZXNz
YWdlU291cmNlOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29s
ZU1lc3NhZ2U6OlNvdXJjZTo6Q1NTOworICAgIGNhc2UgU2VjdXJpdHlNZXNzYWdlU291cmNlOiBy
ZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNv
dXJjZTo6U2VjdXJpdHk7CisgICAgY2FzZSBPdGhlck1lc3NhZ2VTb3VyY2U6IHJldHVybiBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpPdGhl
cjsKICAgICB9Ci0gICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2Fn
ZTo6U291cmNlOjpPdGhlcjsKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29u
c29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6T3RoZXI7CiB9CiAKLXN0YXRpYyBUeXBlQnVp
bGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkVudW0gbWVzc2FnZVR5cGVWYWx1
ZShNZXNzYWdlVHlwZSB0eXBlKQorc3RhdGljIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNv
bGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpFbnVtIG1lc3NhZ2VUeXBlVmFsdWUoTWVzc2FnZVR5
cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIExvZ01lc3NhZ2VUeXBl
OiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpMb2c7
Ci0gICAgY2FzZSBDbGVhck1lc3NhZ2VUeXBlOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6
OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpDbGVhcjsKLSAgICBjYXNlIERpck1lc3NhZ2VUeXBlOiBy
ZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpEaXI7Ci0g
ICAgY2FzZSBEaXJYTUxNZXNzYWdlVHlwZTogcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpD
b25zb2xlTWVzc2FnZTo6VHlwZTo6RGlyWE1MOwotICAgIGNhc2UgVGFibGVNZXNzYWdlVHlwZTog
cmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6VGFibGU7
Ci0gICAgY2FzZSBUcmFjZU1lc3NhZ2VUeXBlOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6
OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpUcmFjZTsKLSAgICBjYXNlIFN0YXJ0R3JvdXBNZXNzYWdl
VHlwZTogcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6
U3RhcnRHcm91cDsKLSAgICBjYXNlIFN0YXJ0R3JvdXBDb2xsYXBzZWRNZXNzYWdlVHlwZTogcmV0
dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6U3RhcnRHcm91
cENvbGxhcHNlZDsKLSAgICBjYXNlIEVuZEdyb3VwTWVzc2FnZVR5cGU6IHJldHVybiBUeXBlQnVp
bGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkVuZEdyb3VwOwotICAgIGNhc2Ug
QXNzZXJ0TWVzc2FnZVR5cGU6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1l
c3NhZ2U6OlR5cGU6OkFzc2VydDsKLSAgICBjYXNlIFRpbWluZ01lc3NhZ2VUeXBlOiByZXR1cm4g
VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpUaW1pbmc7Ci0gICAg
Y2FzZSBQcm9maWxlTWVzc2FnZVR5cGU6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29u
c29sZU1lc3NhZ2U6OlR5cGU6OlByb2ZpbGU7Ci0gICAgY2FzZSBQcm9maWxlRW5kTWVzc2FnZVR5
cGU6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlBy
b2ZpbGVFbmQ7CisgICAgY2FzZSBMb2dNZXNzYWdlVHlwZTogcmV0dXJuIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpMb2c7CisgICAgY2FzZSBD
bGVhck1lc3NhZ2VUeXBlOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6
Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkNsZWFyOworICAgIGNhc2UgRGlyTWVzc2FnZVR5cGU6IHJl
dHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlw
ZTo6RGlyOworICAgIGNhc2UgRGlyWE1MTWVzc2FnZVR5cGU6IHJldHVybiBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6RGlyWE1MOworICAgIGNh
c2UgVGFibGVNZXNzYWdlVHlwZTogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNv
bGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpUYWJsZTsKKyAgICBjYXNlIFRyYWNlTWVzc2FnZVR5
cGU6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2Fn
ZTo6VHlwZTo6VHJhY2U7CisgICAgY2FzZSBTdGFydEdyb3VwTWVzc2FnZVR5cGU6IHJldHVybiBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6U3Rh
cnRHcm91cDsKKyAgICBjYXNlIFN0YXJ0R3JvdXBDb2xsYXBzZWRNZXNzYWdlVHlwZTogcmV0dXJu
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpT
dGFydEdyb3VwQ29sbGFwc2VkOworICAgIGNhc2UgRW5kR3JvdXBNZXNzYWdlVHlwZTogcmV0dXJu
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpF
bmRHcm91cDsKKyAgICBjYXNlIEFzc2VydE1lc3NhZ2VUeXBlOiByZXR1cm4gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkFzc2VydDsKKyAgICBj
YXNlIFRpbWluZ01lc3NhZ2VUeXBlOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29u
c29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlRpbWluZzsKKyAgICBjYXNlIFByb2ZpbGVNZXNz
YWdlVHlwZTogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVN
ZXNzYWdlOjpUeXBlOjpQcm9maWxlOworICAgIGNhc2UgUHJvZmlsZUVuZE1lc3NhZ2VUeXBlOiBy
ZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5
cGU6OlByb2ZpbGVFbmQ7CiAgICAgfQotICAgIHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6
Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkxvZzsKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkxvZzsKIH0KIAotc3RhdGljIFR5
cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6OkVudW0gbWVzc2FnZUxl
dmVsVmFsdWUoTWVzc2FnZUxldmVsIGxldmVsKQorc3RhdGljIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbDo6RW51bSBtZXNzYWdlTGV2ZWxWYWx1
ZShNZXNzYWdlTGV2ZWwgbGV2ZWwpCiB7CiAgICAgc3dpdGNoIChsZXZlbCkgewotICAgIGNhc2Ug
RGVidWdNZXNzYWdlTGV2ZWw6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1l
c3NhZ2U6OkxldmVsOjpEZWJ1ZzsKLSAgICBjYXNlIExvZ01lc3NhZ2VMZXZlbDogcmV0dXJuIFR5
cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6OkxvZzsKLSAgICBjYXNl
IFdhcm5pbmdNZXNzYWdlTGV2ZWw6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29s
ZU1lc3NhZ2U6OkxldmVsOjpXYXJuaW5nOwotICAgIGNhc2UgRXJyb3JNZXNzYWdlTGV2ZWw6IHJl
dHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpFcnJvcjsK
KyAgICBjYXNlIERlYnVnTWVzc2FnZUxldmVsOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpEZWJ1ZzsKKyAgICBjYXNlIExvZ01l
c3NhZ2VMZXZlbDogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNv
bGVNZXNzYWdlOjpMZXZlbDo6TG9nOworICAgIGNhc2UgV2FybmluZ01lc3NhZ2VMZXZlbDogcmV0
dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZl
bDo6V2FybmluZzsKKyAgICBjYXNlIEVycm9yTWVzc2FnZUxldmVsOiByZXR1cm4gSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpFcnJvcjsKICAg
ICB9Ci0gICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2
ZWw6OkxvZzsKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29u
c29sZU1lc3NhZ2U6OkxldmVsOjpMb2c7CiB9CiAKIHZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRv
RnJvbnRlbmQoSW5zcGVjdG9yQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciogY29uc29sZUZyb250
ZW5kRGlzcGF0Y2hlciwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFn
ZXIsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3KQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q29u
c29sZTo6Q29uc29sZU1lc3NhZ2U+IGpzb25PYmogPSBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29u
c29sZU1lc3NhZ2U6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlPiBqc29uT2JqID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRTb3VyY2Uo
bWVzc2FnZVNvdXJjZVZhbHVlKG1fc291cmNlKSkKICAgICAgICAgLnNldExldmVsKG1lc3NhZ2VM
ZXZlbFZhbHVlKG1fbGV2ZWwpKQogICAgICAgICAuc2V0VGV4dChtX21lc3NhZ2UpOwpAQCAtMjA0
LDExICsyMDYsMTEgQEAgdm9pZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVuZChJbnNwZQog
ICAgIGlmIChtX2FyZ3VtZW50cyAmJiBtX2FyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgpKSB7CiAg
ICAgICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLT5pbmplY3RlZFNjcmlwdEZvcihtX2FyZ3VtZW50cy0+Z2xvYmFsU3RhdGUoKSk7CiAgICAg
ICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7Ci0gICAgICAgICAgICBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+
PiBqc29uQXJncyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVt
b3RlT2JqZWN0Pjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0Pj4ganNvbkFyZ3MgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+OjpjcmVhdGUoKTsKICAgICAgICAg
ICAgIGlmIChtX3R5cGUgPT0gVGFibGVNZXNzYWdlVHlwZSAmJiBnZW5lcmF0ZVByZXZpZXcgJiYg
bV9hcmd1bWVudHMtPmFyZ3VtZW50Q291bnQoKSkgewotICAgICAgICAgICAgICAgIFNjcmlwdFZh
bHVlIHRhYmxlID0gbV9hcmd1bWVudHMtPmFyZ3VtZW50QXQoMCk7Ci0gICAgICAgICAgICAgICAg
U2NyaXB0VmFsdWUgY29sdW1ucyA9IG1fYXJndW1lbnRzLT5hcmd1bWVudENvdW50KCkgPiAxID8g
bV9hcmd1bWVudHMtPmFyZ3VtZW50QXQoMSkgOiBTY3JpcHRWYWx1ZSgpOwotICAgICAgICAgICAg
ICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBpbnNwZWN0b3JW
YWx1ZSA9IGluamVjdGVkU2NyaXB0LndyYXBUYWJsZSh0YWJsZSwgY29sdW1ucyk7CisgICAgICAg
ICAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgdGFibGUgPSBtX2FyZ3VtZW50cy0+YXJn
dW1lbnRBdCgwKTsKKyAgICAgICAgICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBjb2x1
bW5zID0gbV9hcmd1bWVudHMtPmFyZ3VtZW50Q291bnQoKSA+IDEgPyBtX2FyZ3VtZW50cy0+YXJn
dW1lbnRBdCgxKSA6IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCk7CisgICAgICAgICAgICAgICAg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gaW5z
cGVjdG9yVmFsdWUgPSBpbmplY3RlZFNjcmlwdC53cmFwVGFibGUodGFibGUsIGNvbHVtbnMpOwog
ICAgICAgICAgICAgICAgIGlmICghaW5zcGVjdG9yVmFsdWUpIHsKICAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAg
LTIxNiw3ICsyMTgsNyBAQCB2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKEluc3Bl
CiAgICAgICAgICAgICAgICAganNvbkFyZ3MtPmFkZEl0ZW0oaW5zcGVjdG9yVmFsdWUpOwogICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9hcmd1bWVudHMtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBpbnNwZWN0b3JW
YWx1ZSA9IGluamVjdGVkU2NyaXB0LndyYXBPYmplY3QobV9hcmd1bWVudHMtPmFyZ3VtZW50QXQo
aSksICJjb25zb2xlIiwgZ2VuZXJhdGVQcmV2aWV3KTsKKyAgICAgICAgICAgICAgICAgICAgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gaW5zcGVj
dG9yVmFsdWUgPSBpbmplY3RlZFNjcmlwdC53cmFwT2JqZWN0KG1fYXJndW1lbnRzLT5hcmd1bWVu
dEF0KGkpLCAiY29uc29sZSIsIGdlbmVyYXRlUHJldmlldyk7CiAgICAgICAgICAgICAgICAgICAg
IGlmICghaW5zcGVjdG9yVmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgJKHJldmlzaW9uIDE2MDQwNCkK
KysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCwxNSArMzgsMTcgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAorbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFzcyBJbnNwZWN0
b3JPYmplY3Q7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NV2luZG93Owog
Y2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xh
c3MgU2NyaXB0QXJndW1lbnRzOwogY2xhc3MgU2NyaXB0Q2FsbEZyYW1lOwogY2xhc3MgU2NyaXB0
Q2FsbFN0YWNrOwotY2xhc3MgU2NyaXB0VmFsdWU7CiAKIGNsYXNzIENvbnNvbGVNZXNzYWdlIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb25zb2xlTWVzc2FnZSk7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hV
dGlscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRT
ZWFyY2hVdGlscy5jcHAJKHJldmlzaW9uIDE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Db250ZW50U2VhcmNoVXRpbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxNCArMzEs
MTQgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCiAjaW5jbHVkZSAiQ29udGVudFNlYXJjaFV0
aWxzLmgiCi0KLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJSZWd1bGFy
RXhwcmVzc2lvbi5oIgotCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgog
I2luY2x1ZGUgPHd0Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KICNpbmNsdWRlIDx5YXJyL1lhcnIuaD4KIAordXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIENvbnRlbnRTZWFyY2hV
dGlscyB7CiAKQEAgLTEyMCw5ICsxMjAsOSBAQCBQYXNzT3duUHRyPFZlY3RvcjxzaXplX3Q+PiBs
aW5lRW5kaW5ncyhjCiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyBQ
YXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hNYXRjaD4gYnVpbGRPYmplY3RGb3JT
ZWFyY2hNYXRjaChpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBsaW5lQ29udGVudCkKK3N0
YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaE1hdGNo
PiBidWlsZE9iamVjdEZvclNlYXJjaE1hdGNoKGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcm
IGxpbmVDb250ZW50KQogewotICAgIHJldHVybiBUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0
Y2g6OmNyZWF0ZSgpCisgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlNl
YXJjaE1hdGNoOjpjcmVhdGUoKQogICAgICAgICAuc2V0TGluZU51bWJlcihsaW5lTnVtYmVyKQog
ICAgICAgICAuc2V0TGluZUNvbnRlbnQobGluZUNvbnRlbnQpCiAgICAgICAgIC5yZWxlYXNlKCk7
CkBAIC0xNTMsOSArMTUzLDkgQEAgaW50IGNvdW50UmVndWxhckV4cHJlc3Npb25NYXRjaGVzKGNv
bnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJy
YXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaE1hdGNoPj4gc2VhcmNoSW5UZXh0QnlMaW5lcyhj
b25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wgY2FzZVNl
bnNpdGl2ZSwgY29uc3QgYm9vbCBpc1JlZ2V4KQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hNYXRjaD4+
IHNlYXJjaEluVGV4dEJ5TGluZXMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIHF1
ZXJ5LCBjb25zdCBib29sIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wgaXNSZWdleCkKIHsKLSAg
ICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hNYXRj
aD4+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNo
TWF0Y2g+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0Y2g+PiByZXN1bHQgPSBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdl
OjpTZWFyY2hNYXRjaD46OmNyZWF0ZSgpOwogCiAgICAgUmVndWxhckV4cHJlc3Npb24gcmVnZXgg
PSBDb250ZW50U2VhcmNoVXRpbHM6OmNyZWF0ZVNlYXJjaFJlZ2V4KHF1ZXJ5LCBjYXNlU2Vuc2l0
aXZlLCBpc1JlZ2V4KTsKICAgICBWZWN0b3I8cGFpcjxpbnQsIFN0cmluZz4+IG1hdGNoZXMgPSBn
ZXRSZWd1bGFyRXhwcmVzc2lvbk1hdGNoZXNCeUxpbmVzKHJlZ2V4LCB0ZXh0KTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbHMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmgJKHJldmlzaW9u
IDE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbHMu
aAkod29ya2luZyBjb3B5KQpAQCAtMzEsMjEgKzMxLDIwIEBACiAKICNpZiBFTkFCTEUoSU5TUEVD
VE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvVGV4dFBvc2l0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBjbGFz
cyBSZWd1bGFyRXhwcmVzc2lvbjsKIAogbmFtZXNwYWNlIENvbnRlbnRTZWFyY2hVdGlscyB7CiAK
IFJlZ3VsYXJFeHByZXNzaW9uIGNyZWF0ZVNlYXJjaFJlZ2V4KGNvbnN0IFN0cmluZyYgcXVlcnks
IGJvb2wgY2FzZVNlbnNpdGl2ZSwgYm9vbCBpc1JlZ2V4KTsKIGludCBjb3VudFJlZ3VsYXJFeHBy
ZXNzaW9uTWF0Y2hlcyhjb25zdCBSZWd1bGFyRXhwcmVzc2lvbiYsIGNvbnN0IFN0cmluZyYpOwot
UGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaE1h
dGNoPj4gc2VhcmNoSW5UZXh0QnlMaW5lcyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmlu
ZyYgcXVlcnksIGNvbnN0IGJvb2wgY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCBpc1JlZ2V4KTsK
K1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0Y2g+PiBzZWFyY2hJblRleHRCeUxpbmVzKGNvbnN0IFN0
cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCBjYXNlU2Vuc2l0aXZl
LCBjb25zdCBib29sIGlzUmVnZXgpOwogVGV4dFBvc2l0aW9uIHRleHRQb3NpdGlvbkZyb21PZmZz
ZXQoc2l6ZV90IG9mZnNldCwgY29uc3QgVmVjdG9yPHNpemVfdD4mIGxpbmVFbmRpbmdzKTsKIFBh
c3NPd25QdHI8VmVjdG9yPHNpemVfdD4+IGxpbmVFbmRpbmdzKGNvbnN0IFN0cmluZyYpOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAJKHJldmlz
aW9uIDE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDE4ICszNiwyMSBAQAogCiAjaW5jbHVkZSAiSW5qZWN0
ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaCIKLSNpbmNs
dWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKyNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUu
aCIKICNpbmNsdWRlICJOb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCi0j
aW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2Ny
aXB0RnVuY3Rpb25DYWxsLmg+CisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0T2JqZWN0Lmg+Cisj
aW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCi11c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6QXJyYXk7Ci11c2lu
ZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZTsKLXVzaW5nIFdlYkNv
cmU6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I7Ci11c2luZyBXZWJD
b3JlOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I7Ci11
c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlsczsKLXVz
aW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q7Cit1c2luZyBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU7Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpE
ZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzOwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yOwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I7Cit1c2luZyBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q7CisKK3VzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTYsMTQgKzU5LDE0IEBAIElu
amVjdGVkU2NyaXB0OjpJbmplY3RlZFNjcmlwdCgpCiB7CiB9CiAKLUluamVjdGVkU2NyaXB0OjpJ
bmplY3RlZFNjcmlwdChTY3JpcHRPYmplY3QgaW5qZWN0ZWRTY3JpcHRPYmplY3QsIEluc3BlY3Rl
ZFN0YXRlQWNjZXNzQ2hlY2sgYWNjZXNzQ2hlY2spCitJbmplY3RlZFNjcmlwdDo6SW5qZWN0ZWRT
Y3JpcHQoRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IGluamVjdGVkU2NyaXB0T2JqZWN0LCBJbnNw
ZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrIGFjY2Vzc0NoZWNrKQogICAgIDogSW5qZWN0ZWRTY3JpcHRC
YXNlKCJJbmplY3RlZFNjcmlwdCIsIGluamVjdGVkU2NyaXB0T2JqZWN0LCBhY2Nlc3NDaGVjaykK
IHsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGUoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3Jv
dXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wg
Z2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVj
dD4qIHJlc3VsdCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQordm9p
ZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25z
dCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5j
bHVkZUNvbW1hbmRMaW5lQVBJLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2
aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0
PiogcmVzdWx0LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Ro
cm93bikKIHsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRP
YmplY3QoKSwgImV2YWx1YXRlIik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxs
IGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJldmFsdWF0ZSIsIFdlYkNvcmU6OmZ1
bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1
bWVudChleHByZXNzaW9uKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RHcm91
cCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoaW5jbHVkZUNvbW1hbmRMaW5lQVBJKTsK
QEAgLTcyLDkgKzc1LDkgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGUoRXJyb3JTdHJp
bgogICAgIG1ha2VFdmFsQ2FsbChlcnJvclN0cmluZywgZnVuY3Rpb24sIHJlc3VsdCwgd2FzVGhy
b3duKTsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4
cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgYXJndW1lbnRzLCBib29sIHJldHVybkJ5VmFsdWUsIGJv
b2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4qIHJlc3VsdCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQor
dm9pZCBJbmplY3RlZFNjcmlwdDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNv
bnN0IFN0cmluZyYgYXJndW1lbnRzLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQ
cmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0PiogcmVzdWx0LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdh
c1Rocm93bikKIHsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3Jp
cHRPYmplY3QoKSwgImNhbGxGdW5jdGlvbk9uIik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVu
Y3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJjYWxsRnVuY3Rpb25P
biIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICBmdW5j
dGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RJZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1l
bnQoZXhwcmVzc2lvbik7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoYXJndW1lbnRzKTsK
QEAgLTgzLDkgKzg2LDkgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Y2FsbEZ1bmN0aW9uT24oRXJy
bwogICAgIG1ha2VFdmFsQ2FsbChlcnJvclN0cmluZywgZnVuY3Rpb24sIHJlc3VsdCwgd2FzVGhy
b3duKTsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBjb25z
dCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0
cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBib29sIHJldHVy
bkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8UmVtb3RlT2JqZWN0PiogcmVz
dWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCit2b2lkIEluamVj
dGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
Y29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNvbnN0IFN0cmluZyYg
Y2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmpl
Y3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGJvb2wgcmV0dXJuQnlWYWx1ZSwg
Ym9vbCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxSZW1vdGVPYmplY3Q+KiByZXN1bHQsIEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQogewotICAgIFNj
cmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZXZhbHVh
dGVPbkNhbGxGcmFtZSIpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5j
dGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZXZhbHVhdGVPbkNhbGxGcmFtZSIsIFdlYkNv
cmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBl
bmRBcmd1bWVudChjYWxsRnJhbWVzKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYWxs
RnJhbWVJZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZXhwcmVzc2lvbik7CkBAIC05
OCw3ICsxMDEsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lCiAK
IHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPEZ1bmN0aW9uRGV0YWls
cz4qIHJlc3VsdCkKIHsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRT
Y3JpcHRPYmplY3QoKSwgImdldEZ1bmN0aW9uRGV0YWlscyIpOworICAgIERlcHJlY2F0ZWQ6OlNj
cmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZ2V0RnVu
Y3Rpb25EZXRhaWxzIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQp
OwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGZ1bmN0aW9uSWQpOwogICAgIFJlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4gcmVzdWx0VmFsdWU7CiAgICAgbWFrZUNhbGwoZnVuY3Rpb24sICZyZXN1
bHRWYWx1ZSk7CkBAIC0xMTIsNyArMTE1LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0RnVu
Y3Rpb25EZXRhaWxzKAogCiB2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRQcm9wZXJ0aWVzKEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgYm9vbCBvd25Qcm9w
ZXJ0aWVzLCBSZWZQdHI8QXJyYXk8UHJvcGVydHlEZXNjcmlwdG9yPj4qIHByb3BlcnRpZXMpCiB7
Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCks
ICJnZXRQcm9wZXJ0aWVzIik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1
bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJnZXRQcm9wZXJ0aWVzIiwgV2ViQ29yZTo6
ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFy
Z3VtZW50KG9iamVjdElkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvd25Qcm9wZXJ0
aWVzKTsKIApAQCAtMTI3LDcgKzEzMCw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldFByb3Bl
cnRpZXMoRXJyb3IKIAogdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVz
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgUmVmUHRy
PEFycmF5PEludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4qIHByb3BlcnRpZXMpCiB7Ci0gICAg
U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJnZXRJ
bnRlcm5hbFByb3BlcnRpZXMiKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwg
ZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImdldEludGVybmFsUHJvcGVydGllcyIs
IFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICBmdW5jdGlv
bi5hcHBlbmRBcmd1bWVudChvYmplY3RJZCk7CiAKICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+
IHJlc3VsdDsKQEAgLTE0NiwxMSArMTQ5LDExIEBAIE5vZGUqIEluamVjdGVkU2NyaXB0Ojpub2Rl
Rm9yT2JqZWN0SWQoY28KICAgICBpZiAoaGFzTm9WYWx1ZSgpIHx8ICFjYW5BY2Nlc3NJbnNwZWN0
ZWRXaW5kb3coKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwg
ZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgIm5vZGVGb3JPYmplY3RJZCIpOworICAg
IERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9i
amVjdCgpLCAibm9kZUZvck9iamVjdElkIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZy
b21BbnlUaHJlYWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKIAog
ICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgU2NyaXB0VmFsdWUgcmVzdWx0VmFs
dWUgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7
CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBjYWxsRnVuY3Rpb25X
aXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CiAgICAgQVNTRVJUKCFoYWRF
eGNlcHRpb24pOwogCiAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdDo6c2NyaXB0VmFsdWVB
c05vZGUocmVzdWx0VmFsdWUpOwpAQCAtMTU4LDIwICsxNjEsMjAgQEAgTm9kZSogSW5qZWN0ZWRT
Y3JpcHQ6Om5vZGVGb3JPYmplY3RJZChjbwogCiB2b2lkIEluamVjdGVkU2NyaXB0OjpyZWxlYXNl
T2JqZWN0KGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpCiB7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxs
IGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJyZWxlYXNlT2JqZWN0Iik7CisgICAg
RGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2Jq
ZWN0KCksICJyZWxlYXNlT2JqZWN0IiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21B
bnlUaHJlYWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKICAgICBS
ZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdDsKICAgICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJl
c3VsdCk7CiB9CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLVBhc3NSZWZQdHI8
QXJyYXk8Q2FsbEZyYW1lPj4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVzKGNvbnN0IFNj
cmlwdFZhbHVlJiBjYWxsRnJhbWVzKQorUGFzc1JlZlB0cjxBcnJheTxDYWxsRnJhbWU+PiBJbmpl
Y3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
IGNhbGxGcmFtZXMpCiB7CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwotICAgIFNjcmlwdEZ1
bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAid3JhcENhbGxGcmFt
ZXMiKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0
ZWRTY3JpcHRPYmplY3QoKSwgIndyYXBDYWxsRnJhbWVzIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxs
SGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNhbGxG
cmFtZXMpOwogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgU2NyaXB0VmFsdWUg
Y2FsbEZyYW1lc1ZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBo
YWRFeGNlcHRpb24pOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGNhbGxGcmFtZXNWYWx1
ZSA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsK
ICAgICBBU1NFUlQoIWhhZEV4Y2VwdGlvbik7CiAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBy
ZXN1bHQgPSBjYWxsRnJhbWVzVmFsdWUudG9JbnNwZWN0b3JWYWx1ZShzY3JpcHRTdGF0ZSgpKTsK
ICAgICBpZiAocmVzdWx0LT50eXBlKCkgPT0gSW5zcGVjdG9yVmFsdWU6OlR5cGVBcnJheSkKQEAg
LTE4MCwyNiArMTgzLDI2IEBAIFBhc3NSZWZQdHI8QXJyYXk8Q2FsbEZyYW1lPj4gSW5qZWN0ZWRT
Y3IKIH0KICNlbmRpZgogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwT2JqZWN0KGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1
ZSwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3KSBjb25zdAor
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+
IEluamVjdGVkU2NyaXB0Ojp3cmFwT2JqZWN0KGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
JiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3KSBj
b25zdAogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKLSAgICBTY3JpcHRGdW5jdGlvbkNh
bGwgd3JhcEZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJ3cmFwT2JqZWN0Iik7Cisg
ICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIHdyYXBGdW5jdGlvbihpbmplY3RlZFNj
cmlwdE9iamVjdCgpLCAid3JhcE9iamVjdCIpOwogICAgIHdyYXBGdW5jdGlvbi5hcHBlbmRBcmd1
bWVudCh2YWx1ZSk7CiAgICAgd3JhcEZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGdyb3VwTmFtZSk7
CiAgICAgd3JhcEZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNhbkFjY2Vzc0luc3BlY3RlZFdpbmRv
dygpKTsKICAgICB3cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZ2VuZXJhdGVQcmV2aWV3KTsK
ICAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwotICAgIFNjcmlwdFZhbHVlIHIgPSBjYWxs
RnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQod3JhcEZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOworICAg
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHIgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQo
d3JhcEZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwogICAgIGlmIChoYWRFeGNlcHRpb24pCiAgICAg
ICAgIHJldHVybiAwOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJhd1Jlc3VsdCA9IHIu
dG9JbnNwZWN0b3JWYWx1ZShzY3JpcHRTdGF0ZSgpKS0+YXNPYmplY3QoKTsKLSAgICByZXR1cm4g
VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDo6cnVudGltZUNhc3QocmF3UmVzdWx0
KTsKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0OjpydW50aW1lQ2FzdChyYXdSZXN1bHQpOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVy
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwVGFibGUoY29uc3Qg
U2NyaXB0VmFsdWUmIHRhYmxlLCBjb25zdCBTY3JpcHRWYWx1ZSYgY29sdW1ucykgY29uc3QKK1Bh
c3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJ
bmplY3RlZFNjcmlwdDo6d3JhcFRhYmxlKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB0
YWJsZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGNvbHVtbnMpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCB3cmFwRnVu
Y3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgIndyYXBUYWJsZSIpOworICAgIERlcHJlY2F0
ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCB3cmFwRnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3Qo
KSwgIndyYXBUYWJsZSIpOwogICAgIHdyYXBGdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYW5BY2Nl
c3NJbnNwZWN0ZWRXaW5kb3coKSk7CiAgICAgd3JhcEZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHRh
YmxlKTsKICAgICBpZiAoY29sdW1ucy5oYXNOb1ZhbHVlKCkpCkBAIC0yMDcsMjYgKzIxMCwyNiBA
QCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPCiAgICAgZWxzZQogICAg
ICAgICB3cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY29sdW1ucyk7CiAgICAgYm9vbCBoYWRF
eGNlcHRpb24gPSBmYWxzZTsKLSAgICBTY3JpcHRWYWx1ZSByID0gY2FsbEZ1bmN0aW9uV2l0aEV2
YWxFbmFibGVkKHdyYXBGdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKKyAgICBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSByID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKHdyYXBGdW5jdGlvbiwg
aGFkRXhjZXB0aW9uKTsKICAgICBpZiAoaGFkRXhjZXB0aW9uKQogICAgICAgICByZXR1cm4gMDsK
ICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByYXdSZXN1bHQgPSByLnRvSW5zcGVjdG9yVmFs
dWUoc2NyaXB0U3RhdGUoKSktPmFzT2JqZWN0KCk7Ci0gICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q6OnJ1bnRpbWVDYXN0KHJhd1Jlc3VsdCk7CisgICAgcmV0dXJu
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDo6cnVudGltZUNh
c3QocmF3UmVzdWx0KTsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVt
b3RlT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcE5vZGUoTm9kZSogbm9kZSwgY29uc3QgU3Ry
aW5nJiBncm91cE5hbWUpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRp
bWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBOb2RlKE5vZGUqIG5vZGUsIGNv
bnN0IFN0cmluZyYgZ3JvdXBOYW1lKQogewogICAgIHJldHVybiB3cmFwT2JqZWN0KG5vZGVBc1Nj
cmlwdFZhbHVlKG5vZGUpLCBncm91cE5hbWUpOwogfQogCi1TY3JpcHRWYWx1ZSBJbmplY3RlZFNj
cmlwdDo6ZmluZE9iamVjdEJ5SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJZCkgY29uc3QKK0RlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0OjpmaW5kT2JqZWN0QnlJZChjb25zdCBT
dHJpbmcmIG9iamVjdElkKSBjb25zdAogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKLSAg
ICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImZp
bmRPYmplY3RCeUlkIik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0
aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJmaW5kT2JqZWN0QnlJZCIsIFdlYkNvcmU6OmZ1
bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1
bWVudChvYmplY3RJZCk7CiAKICAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwotICAgIFNj
cmlwdFZhbHVlIHJlc3VsdFZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0
aW9uLCBoYWRFeGNlcHRpb24pOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHJlc3VsdFZh
bHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24p
OwogICAgIEFTU0VSVCghaGFkRXhjZXB0aW9uKTsKICAgICByZXR1cm4gcmVzdWx0VmFsdWU7CiB9
CkBAIC0yMzQsNyArMjM3LDcgQEAgU2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHQ6OmZpbmRPYmpl
Y3RCeQogdm9pZCBJbmplY3RlZFNjcmlwdDo6aW5zcGVjdE5vZGUoTm9kZSogbm9kZSkKIHsKICAg
ICBBU1NFUlQoIWhhc05vVmFsdWUoKSk7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9u
KGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJpbnNwZWN0Tm9kZSIpOworICAgIERlcHJlY2F0ZWQ6
OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiaW5z
cGVjdE5vZGUiLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAg
ICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQobm9kZUFzU2NyaXB0VmFsdWUobm9kZSkpOwogICAg
IFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0OwogICAgIG1ha2VDYWxsKGZ1bmN0aW9uLCAm
cmVzdWx0KTsKQEAgLTI0MywxNCArMjQ2LDE0IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6Omluc3Bl
Y3ROb2RlKE5vZGUqIG4KIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OnJlbGVhc2VPYmplY3RHcm91cChj
b25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKQogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsK
LSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgcmVsZWFzZUZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2Jq
ZWN0KCksICJyZWxlYXNlT2JqZWN0R3JvdXAiKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5j
dGlvbkNhbGwgcmVsZWFzZUZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJyZWxlYXNl
T2JqZWN0R3JvdXAiLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7
CiAgICAgcmVsZWFzZUZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdEdyb3VwKTsKICAgICBi
b29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwogICAgIGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxl
ZChyZWxlYXNlRnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CiAgICAgQVNTRVJUKCFoYWRFeGNlcHRp
b24pOwogfQogCi1TY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdDo6bm9kZUFzU2NyaXB0VmFsdWUo
Tm9kZSogbm9kZSkKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0Ojpub2Rl
QXNTY3JpcHRWYWx1ZShOb2RlKiBub2RlKQogewogICAgIHJldHVybiBJbmplY3RlZFNjcmlwdEhv
c3Q6Om5vZGVBc1NjcmlwdFZhbHVlKHNjcmlwdFN0YXRlKCksIG5vZGUpOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgJKHJldmlzaW9uIDE2MDQwNCkK
KysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMywxOSArMzMsMjEgQEAKIAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0QmFzZS5o
IgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgotI2luY2x1ZGUgIkluc3BlY3Rv
clR5cGVCdWlsZGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmgiCiAj
aW5jbHVkZSAiU2NyaXB0QXJndW1lbnRzLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAorbmFt
ZXNwYWNlIERlcHJlY2F0ZWQgeworY2xhc3MgU2NyaXB0T2JqZWN0OworfQorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEluamVjdGVkU2NyaXB0TW9kdWxlOwogY2xhc3MgTm9kZTsKLWNs
YXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKQEAg
LTYwLDQwICs2Miw0MCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICBib29sIGluY2x1ZGVD
b21tYW5kTGluZUFQSSwKICAgICAgICAgICAgICAgICAgIGJvb2wgcmV0dXJuQnlWYWx1ZSwKICAg
ICAgICAgICAgICAgICAgIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LAotICAgICAgICAgICAgICAgICAg
UmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsCi0gICAg
ICAgICAgICAgICAgICBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOwor
ICAgICAgICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6
OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKTsKICAgICB2b2lkIGNhbGxGdW5j
dGlvbk9uKEVycm9yU3RyaW5nKiwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgb2JqZWN0SWQsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGV4cHJl
c3Npb24sCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGFyZ3VtZW50cywK
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmV0dXJuQnlWYWx1ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LAotICAgICAgICAgICAgICAgICAgICAg
ICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNU
aHJvd24pOworICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3du
KTsKICAgICB2b2lkIGV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGNh
bGxGcmFtZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgY2Fs
bEZyYW1lSWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgZXhw
cmVzc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBvYmpl
Y3RHcm91cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpbmNsdWRlQ29tbWFu
ZExpbmVBUEksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmV0dXJuQnlWYWx1
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBnZW5lcmF0ZVByZXZpZXcsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6
UmVtb3RlT2JqZWN0PiogcmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBl
QnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOwotICAgIHZvaWQgZ2V0RnVuY3Rp
b25EZXRhaWxzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+KiByZXN1bHQpOwotICAgIHZv
aWQgZ2V0UHJvcGVydGllcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGJv
b2wgb3duUHJvcGVydGllcywgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6
UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4qIHJlc3VsdCk7Ci0gICAgdm9pZCBnZXRJbnRl
cm5hbFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpJbnRlcm5hbFByb3Bl
cnR5RGVzY3JpcHRvcj4+KiByZXN1bHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVz
dWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7CisgICAgdm9pZCBnZXRGdW5jdGlvbkRldGFp
bHMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiogcmVzdWx0KTsKKyAg
ICB2b2lkIGdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElk
LCBib29sIG93blByb3BlcnRpZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJh
eTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+Piog
cmVzdWx0KTsKKyAgICB2b2lkIGdldEludGVybmFsUHJvcGVydGllcyhFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyYgb2JqZWN0SWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJh
eTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3Jp
cHRvcj4+KiByZXN1bHQpOwogICAgIE5vZGUqIG5vZGVGb3JPYmplY3RJZChjb25zdCBTdHJpbmcm
IG9iamVjdElkKTsKICAgICB2b2lkIHJlbGVhc2VPYmplY3QoY29uc3QgU3RyaW5nJiBvYmplY3RJ
ZCk7CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICBQYXNzUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IHdyYXBD
YWxsRnJhbWVzKGNvbnN0IFNjcmlwdFZhbHVlJik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2Fs
bEZyYW1lPj4gd3JhcENhbGxGcmFtZXMoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmKTsK
ICNlbmRpZgogCi0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0PiB3cmFwT2JqZWN0KGNvbnN0IFNjcmlwdFZhbHVlJiwgY29uc3QgU3RyaW5nJiBncm91cE5h
bWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3ID0gZmFsc2UpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8
VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gd3JhcFRhYmxlKGNvbnN0IFNjcmlw
dFZhbHVlJiB0YWJsZSwgY29uc3QgU2NyaXB0VmFsdWUmIGNvbHVtbnMpIGNvbnN0OwotICAgIFBh
c3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gd3JhcE5vZGUoTm9k
ZSosIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lKTsKLSAgICBTY3JpcHRWYWx1ZSBmaW5kT2JqZWN0
QnlJZChjb25zdCBTdHJpbmcmIG9iamVjdElkKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gd3JhcE9iamVjdChjb25z
dCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lLCBib29s
IGdlbmVyYXRlUHJldmlldyA9IGZhbHNlKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gd3JhcFRhYmxlKGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB0YWJsZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUmIGNvbHVtbnMpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiB3cmFwTm9kZShOb2RlKiwgY29uc3QgU3RyaW5nJiBn
cm91cE5hbWUpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGZpbmRPYmplY3RCeUlkKGNv
bnN0IFN0cmluZyYgb2JqZWN0SWQpIGNvbnN0OwogCiAgICAgdm9pZCBpbnNwZWN0Tm9kZShOb2Rl
Kik7CiAgICAgdm9pZCByZWxlYXNlT2JqZWN0R3JvdXAoY29uc3QgU3RyaW5nJik7CkBAIC0xMDEs
OSArMTAzLDkgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgSW5qZWN0ZWRT
Y3JpcHRNb2R1bGU7CiAgICAgZnJpZW5kIEluamVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0TWFu
YWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3IoSlNDOjpFeGVjU3RhdGUqKTsKLSAgICBJbmplY3RlZFNj
cmlwdChTY3JpcHRPYmplY3QsIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOworICAgIEluamVj
dGVkU2NyaXB0KERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCwgSW5zcGVjdGVkU3RhdGVBY2Nlc3ND
aGVjayk7CiAKLSAgICBTY3JpcHRWYWx1ZSBub2RlQXNTY3JpcHRWYWx1ZShOb2RlKik7CisgICAg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgbm9kZUFzU2NyaXB0VmFsdWUoTm9kZSopOwogfTsKIAog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRCYXNlLmNwcAkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEyICszNSwxNCBA
QAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0QmFzZS5oIgogCiAjaW5jbHVkZSAiSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCi0jaW5jbHVk
ZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0RnVuY3Rp
b25DYWxsLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1
ZGUgPHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVj
dDsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDsK
KwordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC01MCwxNCArNTIsMTQgQEAgSW5qZWN0ZWRTY3JpcHRCYXNlOjpJbmplY3RlZFNjcmlwdEJhc2Uo
YwogewogfQogCi1JbmplY3RlZFNjcmlwdEJhc2U6OkluamVjdGVkU2NyaXB0QmFzZShjb25zdCBT
dHJpbmcmIG5hbWUsIFNjcmlwdE9iamVjdCBpbmplY3RlZFNjcmlwdE9iamVjdCwgSW5zcGVjdGVk
U3RhdGVBY2Nlc3NDaGVjayBhY2Nlc3NDaGVjaykKK0luamVjdGVkU2NyaXB0QmFzZTo6SW5qZWN0
ZWRTY3JpcHRCYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0
IGluamVjdGVkU2NyaXB0T2JqZWN0LCBJbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrIGFjY2Vzc0No
ZWNrKQogICAgIDogbV9uYW1lKG5hbWUpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0T2JqZWN0KGlu
amVjdGVkU2NyaXB0T2JqZWN0KQogICAgICwgbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKGFj
Y2Vzc0NoZWNrKQogewogfQogCi12b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6aW5pdGlhbGl6ZShT
Y3JpcHRPYmplY3QgaW5qZWN0ZWRTY3JpcHRPYmplY3QsIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hl
Y2sgYWNjZXNzQ2hlY2spCit2b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6aW5pdGlhbGl6ZShEZXBy
ZWNhdGVkOjpTY3JpcHRPYmplY3QgaW5qZWN0ZWRTY3JpcHRPYmplY3QsIEluc3BlY3RlZFN0YXRl
QWNjZXNzQ2hlY2sgYWNjZXNzQ2hlY2spCiB7CiAgICAgbV9pbmplY3RlZFNjcmlwdE9iamVjdCA9
IGluamVjdGVkU2NyaXB0T2JqZWN0OwogICAgIG1faW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayA9
IGFjY2Vzc0NoZWNrOwpAQCAtNjgsMTIgKzcwLDEyIEBAIGJvb2wgSW5qZWN0ZWRTY3JpcHRCYXNl
OjpjYW5BY2Nlc3NJbnNwZWMKICAgICByZXR1cm4gbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNr
KG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKSk7CiB9CiAKLWNvbnN0IFNjcmlw
dE9iamVjdCYgSW5qZWN0ZWRTY3JpcHRCYXNlOjppbmplY3RlZFNjcmlwdE9iamVjdCgpIGNvbnN0
Citjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmIEluamVjdGVkU2NyaXB0QmFzZTo6aW5q
ZWN0ZWRTY3JpcHRPYmplY3QoKSBjb25zdAogewogICAgIHJldHVybiBtX2luamVjdGVkU2NyaXB0
T2JqZWN0OwogfQogCi1TY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdEJhc2U6OmNhbGxGdW5jdGlv
bldpdGhFdmFsRW5hYmxlZChTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uLCBib29sJiBoYWRF
eGNlcHRpb24pIGNvbnN0CitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdEJh
c2U6OmNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlv
bkNhbGwmIGZ1bmN0aW9uLCBib29sJiBoYWRFeGNlcHRpb24pIGNvbnN0CiB7CiAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRGcm9tRXhlY1N0YXRlKG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUo
KSk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbENhbGxGdW5jdGlvbihzY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBuYW1lKCksIDEpOwpAQCAtODcsNyArODksNyBAQCBTY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlw
dEJhc2U6OmNhbGxGdW5jCiAgICAgICAgICAgICBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5zZXRFdmFsRW5hYmxlZCh0cnVlKTsKICAgICB9CiAKLSAgICBTY3JpcHRWYWx1ZSBy
ZXN1bHRWYWx1ZSA9IGZ1bmN0aW9uLmNhbGwoaGFkRXhjZXB0aW9uKTsKKyAgICBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSByZXN1bHRWYWx1ZSA9IGZ1bmN0aW9uLmNhbGwoaGFkRXhjZXB0aW9uKTsK
IAogICAgIGlmIChldmFsSXNEaXNhYmxlZCkKICAgICAgICAgc2NyaXB0U3RhdGUtPmxleGljYWxH
bG9iYWxPYmplY3QoKS0+c2V0RXZhbEVuYWJsZWQoZmFsc2UpOwpAQCAtOTYsNyArOTgsNyBAQCBT
Y3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdEJhc2U6OmNhbGxGdW5jCiAgICAgcmV0dXJuIHJlc3Vs
dFZhbHVlOwogfQogCi12b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUNhbGwoU2NyaXB0RnVu
Y3Rpb25DYWxsJiBmdW5jdGlvbiwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KQordm9p
ZCBJbmplY3RlZFNjcmlwdEJhc2U6Om1ha2VDYWxsKERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9u
Q2FsbCYgZnVuY3Rpb24sIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKIHsKICAgICBp
ZiAoaGFzTm9WYWx1ZSgpIHx8ICFjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coKSkgewogICAgICAg
ICAqcmVzdWx0ID0gSW5zcGVjdG9yVmFsdWU6Om51bGwoKTsKQEAgLTEwNCw3ICsxMDYsNyBAQCB2
b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUNhbGwoU2NyaXB0CiAgICAgfQogCiAgICAgYm9v
bCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKLSAgICBTY3JpcHRWYWx1ZSByZXN1bHRWYWx1ZSA9IGNh
bGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKKyAgICBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSByZXN1bHRWYWx1ZSA9IGNhbGxGdW5jdGlvbldpdGhFdmFs
RW5hYmxlZChmdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKIAogICAgIEFTU0VSVCghaGFkRXhjZXB0
aW9uKTsKICAgICBpZiAoIWhhZEV4Y2VwdGlvbikgewpAQCAtMTE1LDcgKzExNyw3IEBAIHZvaWQg
SW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtlQ2FsbChTY3JpcHQKICAgICAgICAgKnJlc3VsdCA9IElu
c3BlY3RvclN0cmluZzo6Y3JlYXRlKCJFeGNlcHRpb24gd2hpbGUgbWFraW5nIGEgY2FsbC4iKTsK
IH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6Om1ha2VFdmFsQ2FsbChFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIFNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24sIFJlZlB0cjxUeXBlQnVp
bGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0Piogb2JqZWN0UmVzdWx0LCBUeXBlQnVpbGRlcjo6
T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCit2b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6bWFr
ZUV2YWxDYWxsKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgRGVwcmVjYXRlZDo6U2NyaXB0RnVu
Y3Rpb25DYWxsJiBmdW5jdGlvbiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRp
bWU6OlJlbW90ZU9iamVjdD4qIG9iamVjdFJlc3VsdCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCiB7CiAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVl
PiByZXN1bHQ7CiAgICAgbWFrZUNhbGwoZnVuY3Rpb24sICZyZXN1bHQpOwpAQCAtMTM5LDcgKzE0
MSw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtlRXZhbENhbGwoRXIKICAgICAgICAg
KmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yOiByZXN1bHQgaXMgbm90IGEgcGFpciBvZiB2
YWx1ZSBhbmQgd2FzVGhyb3duIGZsYWciOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgICpv
YmplY3RSZXN1bHQgPSBUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0OjpydW50aW1l
Q2FzdChyZXN1bHRPYmopOworICAgICpvYmplY3RSZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q6OnJ1bnRpbWVDYXN0KHJlc3VsdE9iaik7CiAgICAg
Kndhc1Rocm93biA9IHdhc1Rocm93blZhbDsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaAkocmV2aXNpb24gMTYwNDA0KQorKysgU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSwxNSArMzEsMjAgQEAKICNpZm5kZWYgSW5qZWN0ZWRTY3JpcHRCYXNlX2gKICNkZWZp
bmUgSW5qZWN0ZWRTY3JpcHRCYXNlX2gKIAotI2luY2x1ZGUgIkluc3BlY3RvclR5cGVCdWlsZGVy
LmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViVHlw
ZUJ1aWxkZXJzLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0T2JqZWN0Lmg+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKK25hbWVzcGFjZSBEZXByZWNhdGVkIHsKK2NsYXNzIFNjcmlwdEZ1bmN0aW9uQ2Fs
bDsKK30KIAorbmFtZXNwYWNlIEluc3BlY3RvciB7CiBjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKLWNs
YXNzIFNjcmlwdEZ1bmN0aW9uQ2FsbDsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0eXBl
ZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIApAQCAtNTYsMTggKzYxLDE4IEBAIHB1YmxpYzoKIHBy
b3RlY3RlZDoKICAgICB0eXBlZGVmIGJvb2wgKCpJbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKShK
U0M6OkV4ZWNTdGF0ZSopOwogICAgIEluamVjdGVkU2NyaXB0QmFzZShjb25zdCBTdHJpbmcmIG5h
bWUpOwotICAgIEluamVjdGVkU2NyaXB0QmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIFNjcmlwdE9i
amVjdCwgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayk7CisgICAgSW5qZWN0ZWRTY3JpcHRCYXNl
KGNvbnN0IFN0cmluZyYgbmFtZSwgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0LCBJbnNwZWN0ZWRT
dGF0ZUFjY2Vzc0NoZWNrKTsKIAotICAgIHZvaWQgaW5pdGlhbGl6ZShTY3JpcHRPYmplY3QsIElu
c3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOworICAgIHZvaWQgaW5pdGlhbGl6ZShEZXByZWNhdGVk
OjpTY3JpcHRPYmplY3QsIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOwogICAgIGJvb2wgY2Fu
QWNjZXNzSW5zcGVjdGVkV2luZG93KCkgY29uc3Q7Ci0gICAgY29uc3QgU2NyaXB0T2JqZWN0JiBp
bmplY3RlZFNjcmlwdE9iamVjdCgpIGNvbnN0OwotICAgIFNjcmlwdFZhbHVlIGNhbGxGdW5jdGlv
bldpdGhFdmFsRW5hYmxlZChTY3JpcHRGdW5jdGlvbkNhbGwmLCBib29sJiBoYWRFeGNlcHRpb24p
IGNvbnN0OwotICAgIHZvaWQgbWFrZUNhbGwoU2NyaXB0RnVuY3Rpb25DYWxsJiwgUmVmUHRyPElu
c3BlY3RvclZhbHVlPiogcmVzdWx0KTsKLSAgICB2b2lkIG1ha2VFdmFsQ2FsbChFcnJvclN0cmlu
ZyosIFNjcmlwdEZ1bmN0aW9uQ2FsbCYsIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVt
b3RlT2JqZWN0PiogcmVzdWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJv
d24pOworICAgIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgaW5qZWN0ZWRTY3JpcHRP
YmplY3QoKSBjb25zdDsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBjYWxsRnVuY3Rpb25X
aXRoRXZhbEVuYWJsZWQoRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsJiwgYm9vbCYgaGFk
RXhjZXB0aW9uKSBjb25zdDsKKyAgICB2b2lkIG1ha2VDYWxsKERlcHJlY2F0ZWQ6OlNjcmlwdEZ1
bmN0aW9uQ2FsbCYsIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsK
KyAgICB2b2lkIG1ha2VFdmFsQ2FsbChFcnJvclN0cmluZyosIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1
bmN0aW9uQ2FsbCYsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+KiByZXN1bHQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29s
Piogd2FzVGhyb3duKTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9uYW1lOwotICAgIFNjcmlw
dE9iamVjdCBtX2luamVjdGVkU2NyaXB0T2JqZWN0OworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9i
amVjdCBtX2luamVjdGVkU2NyaXB0T2JqZWN0OwogICAgIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hl
Y2sgbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrOwogfTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuY3Bw
CShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRDYW52YXNNb2R1bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNSArMzcsMTkgQEAK
ICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0Q2Fu
dmFzTW9kdWxlU291cmNlLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCi0j
aW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0Lmgi
CisjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCisjaW5jbHVkZSA8YmluZGluZ3Mv
U2NyaXB0RnVuY3Rpb25DYWxsLmg+CisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0T2JqZWN0Lmg+
CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgorCit1c2luZyBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNh
bnZhczo6UmVzb3VyY2VJZDsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6
UmVzb3VyY2VJbmZvOwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNv
dXJjZVN0YXRlOwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFjZUxv
ZzsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZDsKIAot
dXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkFycmF5OwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1
aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VJZDsKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpD
YW52YXM6OlJlc291cmNlSW5mbzsKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpDYW52YXM6
OlJlc291cmNlU3RhdGU7Ci11c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFj
ZUxvZzsKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQ7Cit1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY2
LDM0ICs3MCwzNCBAQCBTdHJpbmcgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OnNvdXJjCiAg
ICAgcmV0dXJuIFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihJbmplY3RlZFNj
cmlwdENhbnZhc01vZHVsZVNvdXJjZV9qcyksIHNpemVvZihJbmplY3RlZFNjcmlwdENhbnZhc01v
ZHVsZVNvdXJjZV9qcykpOwogfQogCi1TY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRDYW52YXNN
b2R1bGU6OndyYXBDYW52YXMyRENvbnRleHQoY29uc3QgU2NyaXB0T2JqZWN0JiBjb250ZXh0KQor
RGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjp3cmFw
Q2FudmFzMkRDb250ZXh0KGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgY29udGV4dCkK
IHsKICAgICByZXR1cm4gY2FsbFdyYXBDb250ZXh0RnVuY3Rpb24oIndyYXBDYW52YXMyRENvbnRl
eHQiLCBjb250ZXh0KTsKIH0KIAogI2lmIEVOQUJMRShXRUJHTCkKLVNjcmlwdE9iamVjdCBJbmpl
Y3RlZFNjcmlwdENhbnZhc01vZHVsZTo6d3JhcFdlYkdMQ29udGV4dChjb25zdCBTY3JpcHRPYmpl
Y3QmIGdsQ29udGV4dCkKK0RlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBJbmplY3RlZFNjcmlwdENh
bnZhc01vZHVsZTo6d3JhcFdlYkdMQ29udGV4dChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmpl
Y3QmIGdsQ29udGV4dCkKIHsKICAgICByZXR1cm4gY2FsbFdyYXBDb250ZXh0RnVuY3Rpb24oIndy
YXBXZWJHTENvbnRleHQiLCBnbENvbnRleHQpOwogfQogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkK
IAotU2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjpjYWxsV3JhcENvbnRl
eHRGdW5jdGlvbihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgU2NyaXB0T2JqZWN0
JiBjb250ZXh0KQorRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0Q2FudmFz
TW9kdWxlOjpjYWxsV3JhcENvbnRleHRGdW5jdGlvbihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFt
ZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiBjb250ZXh0KQogewotICAgIFNjcmlw
dEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCBmdW5jdGlvbk5h
bWUpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3Rl
ZFNjcmlwdE9iamVjdCgpLCBmdW5jdGlvbk5hbWUsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRs
ZXJGcm9tQW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjb250ZXh0KTsK
ICAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwotICAgIFNjcmlwdFZhbHVlIHJlc3VsdFZh
bHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24p
OworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHJlc3VsdFZhbHVlID0gY2FsbEZ1bmN0aW9u
V2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwogICAgIGlmIChoYWRFeGNl
cHRpb24gfHwgcmVzdWx0VmFsdWUuaGFzTm9WYWx1ZSgpIHx8ICFyZXN1bHRWYWx1ZS5pc09iamVj
dCgpKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gU2Ny
aXB0T2JqZWN0KCk7CisgICAgICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QoKTsK
ICAgICB9Ci0gICAgcmV0dXJuIFNjcmlwdE9iamVjdChjb250ZXh0LnNjcmlwdFN0YXRlKCksIHJl
c3VsdFZhbHVlKTsKKyAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KGNvbnRleHQu
c2NyaXB0U3RhdGUoKSwgcmVzdWx0VmFsdWUpOwogfQogCiB2b2lkIEluamVjdGVkU2NyaXB0Q2Fu
dmFzTW9kdWxlOjptYXJrRnJhbWVFbmQoKQogewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5j
dGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAibWFya0ZyYW1lRW5kIik7CisgICAgRGVwcmVj
YXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCks
ICJtYXJrRnJhbWVFbmQiLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVh
ZCk7CiAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHRWYWx1ZTsKICAgICBtYWtlQ2Fs
bChmdW5jdGlvbiwgJnJlc3VsdFZhbHVlKTsKICAgICBBU1NFUlQocmVzdWx0VmFsdWUpOwpAQCAt
MTExLDcgKzExNSw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OnN0YXJ0Q2EK
IAogdm9pZCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6Y2FsbFN0YXJ0Q2FwdHVyaW5nRnVu
Y3Rpb24oY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgVHJhY2VMb2dJZCogdHJhY2VMb2dJZCkKIHsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVu
Y3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgZnVuY3Rpb25OYW1lKTsKKyAgICBEZXByZWNh
dGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwg
ZnVuY3Rpb25OYW1lLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7
CiAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHRWYWx1ZTsKICAgICBtYWtlQ2FsbChm
dW5jdGlvbiwgJnJlc3VsdFZhbHVlKTsKICAgICBpZiAoIXJlc3VsdFZhbHVlIHx8IHJlc3VsdFZh
bHVlLT50eXBlKCkgIT0gSW5zcGVjdG9yVmFsdWU6OlR5cGVTdHJpbmcgfHwgIXJlc3VsdFZhbHVl
LT5hc1N0cmluZyh0cmFjZUxvZ0lkKSkKQEAgLTEzMCw3ICsxMzQsNyBAQCB2b2lkIEluamVjdGVk
U2NyaXB0Q2FudmFzTW9kdWxlOjpkcm9wVHJhCiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHRDYW52YXNN
b2R1bGU6OmNhbGxWb2lkRnVuY3Rpb25XaXRoVHJhY2VMb2dJZEFyZ3VtZW50KGNvbnN0IFN0cmlu
ZyYgZnVuY3Rpb25OYW1lLCBFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFRyYWNlTG9n
SWQmIHRyYWNlTG9nSWQpCiB7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVj
dGVkU2NyaXB0T2JqZWN0KCksIGZ1bmN0aW9uTmFtZSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0
RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksIGZ1bmN0aW9uTmFt
ZSwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAgIGZ1bmN0
aW9uLmFwcGVuZEFyZ3VtZW50KHRyYWNlTG9nSWQpOwogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0g
ZmFsc2U7CiAgICAgY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNl
cHRpb24pOwpAQCAtMTQxLDcgKzE0NSw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1
bGU6OmNhbGxWb2kKIAogdm9pZCBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6dHJhY2VMb2co
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBUcmFjZUxvZ0lkJiB0cmFjZUxvZ0lkLCBj
b25zdCBpbnQqIHN0YXJ0T2Zmc2V0LCBjb25zdCBpbnQqIG1heExlbmd0aCwgUmVmUHRyPFRyYWNl
TG9nPiogdHJhY2VMb2cpCiB7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVj
dGVkU2NyaXB0T2JqZWN0KCksICJ0cmFjZUxvZyIpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1
bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAidHJhY2VMb2ciLCBX
ZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAgZnVuY3Rpb24u
YXBwZW5kQXJndW1lbnQodHJhY2VMb2dJZCk7CiAgICAgaWYgKHN0YXJ0T2Zmc2V0KQogICAgICAg
ICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudCgqc3RhcnRPZmZzZXQpOwpAQCAtMTU5LDcgKzE2Myw3
IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGU6OnRyYWNlTG8KIAogdm9pZCBJbmpl
Y3RlZFNjcmlwdENhbnZhc01vZHVsZTo6cmVwbGF5VHJhY2VMb2coRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBjb25zdCBUcmFjZUxvZ0lkJiB0cmFjZUxvZ0lkLCBpbnQgc3RlcE5vLCBSZWZQdHI8
UmVzb3VyY2VTdGF0ZT4qIHJlc3VsdCkKIHsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rp
b24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgInJlcGxheVRyYWNlTG9nIik7CisgICAgRGVwcmVj
YXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCks
ICJyZXBsYXlUcmFjZUxvZyIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhy
ZWFkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudCh0cmFjZUxvZ0lkKTsKICAgICBmdW5j
dGlvbi5hcHBlbmRBcmd1bWVudChzdGVwTm8pOwogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4g
cmVzdWx0VmFsdWU7CkBAIC0xNzQsNyArMTc4LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdENhbnZh
c01vZHVsZTo6cmVwbGF5VAogCiB2b2lkIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlOjpyZXNv
dXJjZUluZm8oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZXNvdXJjZUlkJiByZXNv
dXJjZUlkLCBSZWZQdHI8UmVzb3VyY2VJbmZvPiogcmVzdWx0KQogewotICAgIFNjcmlwdEZ1bmN0
aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAicmVzb3VyY2VJbmZvIik7
CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2Ny
aXB0T2JqZWN0KCksICJyZXNvdXJjZUluZm8iLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVy
RnJvbUFueVRocmVhZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQocmVzb3VyY2VJZCk7
CiAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHRWYWx1ZTsKICAgICBtYWtlQ2FsbChm
dW5jdGlvbiwgJnJlc3VsdFZhbHVlKTsKQEAgLTE4OCw3ICsxOTIsNyBAQCB2b2lkIEluamVjdGVk
U2NyaXB0Q2FudmFzTW9kdWxlOjpyZXNvdXJjCiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHRDYW52YXNN
b2R1bGU6OnJlc291cmNlU3RhdGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBUcmFj
ZUxvZ0lkJiB0cmFjZUxvZ0lkLCBjb25zdCBSZXNvdXJjZUlkJiByZXNvdXJjZUlkLCBSZWZQdHI8
UmVzb3VyY2VTdGF0ZT4qIHJlc3VsdCkKIHsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rp
b24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgInJlc291cmNlU3RhdGUiKTsKKyAgICBEZXByZWNh
dGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwg
InJlc291cmNlU3RhdGUiLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVh
ZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQodHJhY2VMb2dJZCk7CiAgICAgZnVuY3Rp
b24uYXBwZW5kQXJndW1lbnQocmVzb3VyY2VJZCk7CiAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVl
PiByZXN1bHRWYWx1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdENhbnZhc01vZHVsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5oCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsMTAgKzM1LDEzIEBACiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIERlcHJlY2F0ZWQgewor
Y2xhc3MgU2NyaXB0T2JqZWN0OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElu
amVjdGVkU2NyaXB0TWFuYWdlcjsKLWNsYXNzIFNjcmlwdE9iamVjdDsKIAogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCiAKQEAgLTUwLDIzICs1MywyMyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSW5q
ZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUgbW9kdWxlRm9yU3RhdGUoSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKiwgSlNDOjpFeGVjU3RhdGUqKTsKIAotICAgIFNjcmlwdE9iamVjdCB3cmFwQ2FudmFzMkRD
b250ZXh0KGNvbnN0IFNjcmlwdE9iamVjdCYpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVj
dCB3cmFwQ2FudmFzMkRDb250ZXh0KGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYpOwog
I2lmIEVOQUJMRShXRUJHTCkKLSAgICBTY3JpcHRPYmplY3Qgd3JhcFdlYkdMQ29udGV4dChjb25z
dCBTY3JpcHRPYmplY3QmKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3Qgd3JhcFdlYkdM
Q29udGV4dChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmKTsKICNlbmRpZgogICAgIHZv
aWQgbWFya0ZyYW1lRW5kKCk7CiAKLSAgICB2b2lkIGNhcHR1cmVGcmFtZShFcnJvclN0cmluZyos
IFR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQqKTsKLSAgICB2b2lkIHN0YXJ0Q2FwdHVy
aW5nKEVycm9yU3RyaW5nKiwgVHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCopOwotICAg
IHZvaWQgc3RvcENhcHR1cmluZyhFcnJvclN0cmluZyosIGNvbnN0IFR5cGVCdWlsZGVyOjpDYW52
YXM6OlRyYWNlTG9nSWQmKTsKLSAgICB2b2lkIGRyb3BUcmFjZUxvZyhFcnJvclN0cmluZyosIGNv
bnN0IFR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQmKTsKLSAgICB2b2lkIHRyYWNlTG9n
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiwgY29uc3QgaW50KiwgY29uc3QgaW50KiwgUmVm
UHRyPFR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nPiopOwotICAgIHZvaWQgcmVwbGF5VHJh
Y2VMb2coRXJyb3JTdHJpbmcqLCBjb25zdCBUeXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFjZUxvZ0lk
JiwgaW50LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VTdGF0ZT4qKTsKLSAg
ICB2b2lkIHJlc291cmNlSW5mbyhFcnJvclN0cmluZyosIGNvbnN0IFR5cGVCdWlsZGVyOjpDYW52
YXM6OlJlc291cmNlSWQmLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VJbmZv
PiopOwotICAgIHZvaWQgcmVzb3VyY2VTdGF0ZShFcnJvclN0cmluZyosIGNvbnN0IFR5cGVCdWls
ZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQmLCBjb25zdCBUeXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNv
dXJjZUlkJiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlU3RhdGU+Kik7Cisg
ICAgdm9pZCBjYXB0dXJlRnJhbWUoRXJyb3JTdHJpbmcqLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDYW52YXM6OlRyYWNlTG9nSWQqKTsKKyAgICB2b2lkIHN0YXJ0Q2FwdHVyaW5nKEVycm9yU3Ry
aW5nKiwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFjZUxvZ0lkKik7CisgICAg
dm9pZCBzdG9wQ2FwdHVyaW5nKEVycm9yU3RyaW5nKiwgY29uc3QgSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q2FudmFzOjpUcmFjZUxvZ0lkJik7CisgICAgdm9pZCBkcm9wVHJhY2VMb2coRXJyb3JT
dHJpbmcqLCBjb25zdCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQm
KTsKKyAgICB2b2lkIHRyYWNlTG9nKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
aW50KiwgY29uc3QgaW50KiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6
VHJhY2VMb2c+Kik7CisgICAgdm9pZCByZXBsYXlUcmFjZUxvZyhFcnJvclN0cmluZyosIGNvbnN0
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCYsIGludCwgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VTdGF0ZT4qKTsKKyAgICB2
b2lkIHJlc291cmNlSW5mbyhFcnJvclN0cmluZyosIGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNhbnZhczo6UmVzb3VyY2VJZCYsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
YW52YXM6OlJlc291cmNlSW5mbz4qKTsKKyAgICB2b2lkIHJlc291cmNlU3RhdGUoRXJyb3JTdHJp
bmcqLCBjb25zdCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQmLCBj
b25zdCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlSWQmLCBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJjZVN0YXRlPiopOwogCiBwcml2
YXRlOgotICAgIFNjcmlwdE9iamVjdCBjYWxsV3JhcENvbnRleHRGdW5jdGlvbihjb25zdCBTdHJp
bmcmLCBjb25zdCBTY3JpcHRPYmplY3QmKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3Qg
Y2FsbFdyYXBDb250ZXh0RnVuY3Rpb24oY29uc3QgU3RyaW5nJiwgY29uc3QgRGVwcmVjYXRlZDo6
U2NyaXB0T2JqZWN0Jik7CiAgICAgdm9pZCBjYWxsU3RhcnRDYXB0dXJpbmdGdW5jdGlvbihjb25z
dCBTdHJpbmcmLCBFcnJvclN0cmluZyosIFN0cmluZyopOwogICAgIHZvaWQgY2FsbFZvaWRGdW5j
dGlvbldpdGhUcmFjZUxvZ0lkQXJndW1lbnQoY29uc3QgU3RyaW5nJiwgRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDE4ICs0NywxOSBAQAogI2luY2x1ZGUgIkluc3BlY3RvckRhdGFiYXNlQWdlbnQuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRl
bmQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJk
LmgiCiAjaW5jbHVkZSAiU3RvcmFnZS5oIgorI2luY2x1ZGUgIm1hcmt1cC5oIgorI2luY2x1ZGUg
PGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZh
bHVlcy5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogI2luY2x1ZGUgIkRhdGFiYXNlLmgi
CiAjZW5kaWYKIAotI2luY2x1ZGUgIm1hcmt1cC5oIgotCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtOTcsNyArOTgsNyBAQCB2b2lkIEluamVj
dGVkU2NyaXB0SG9zdDo6ZGlzY29ubmVjdCgpCiB2b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6aW5z
cGVjdEltcGwoUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gb2JqZWN0LCBQYXNzUmVmUHRyPElu
c3BlY3RvclZhbHVlPiBoaW50cykKIHsKICAgICBpZiAobV9pbnNwZWN0b3JBZ2VudCkgewotICAg
ICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gcmVtb3RlT2Jq
ZWN0ID0gVHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDo6cnVudGltZUNhc3Qob2Jq
ZWN0KTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJl
bW90ZU9iamVjdD4gcmVtb3RlT2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0OjpydW50aW1lQ2FzdChvYmplY3QpOwogICAgICAgICBtX2luc3BlY3Rv
ckFnZW50LT5pbnNwZWN0KHJlbW90ZU9iamVjdCwgaGludHMtPmFzT2JqZWN0KCkpOwogICAgIH0K
IH0KQEAgLTEyMSw5ICsxMjIsOSBAQCB2b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6Y29weVRleHQo
Y29uc3QKICAgICBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKS0+d3JpdGVQbGFp
blRleHQodGV4dCwgUGFzdGVib2FyZDo6Q2Fubm90U21hcnRSZXBsYWNlKTsKIH0KIAotU2NyaXB0
VmFsdWUgSW5qZWN0ZWRTY3JpcHRIb3N0OjpJbnNwZWN0YWJsZU9iamVjdDo6Z2V0KEpTQzo6RXhl
Y1N0YXRlKikKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0SG9zdDo6SW5z
cGVjdGFibGVPYmplY3Q6OmdldChKU0M6OkV4ZWNTdGF0ZSopCiB7Ci0gICAgcmV0dXJuIFNjcmlw
dFZhbHVlKCk7CisgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCk7CiB9OwogCiB2
b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6YWRkSW5zcGVjdGVkT2JqZWN0KFBhc3NPd25QdHI8SW5q
ZWN0ZWRTY3JpcHRIb3N0OjpJbnNwZWN0YWJsZU9iamVjdD4gb2JqZWN0KQpJbmRleDogU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaAkocmV2aXNpb24gMTYw
NDA0KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiwxNSBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCituYW1lc3BhY2UgRGVwcmVjYXRlZCB7Citj
bGFzcyBTY3JpcHRWYWx1ZTsKK30KKworbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFzcyBJbnNw
ZWN0b3JPYmplY3Q7CitjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKK30KKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBEYXRhYmFzZTsKQEAgLTQ2LDEyICs1NSw4IEBAIGNsYXNzIEluc3BlY3Rv
ckRPTUFnZW50OwogY2xhc3MgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OwogY2xhc3MgSW5zcGVj
dG9yRGF0YWJhc2VBZ2VudDsKIGNsYXNzIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ7Ci1jbGFzcyBJ
bnNwZWN0b3JPYmplY3Q7Ci1jbGFzcyBJbnNwZWN0b3JWYWx1ZTsKIGNsYXNzIE5vZGU7CiBjbGFz
cyBTY3JpcHREZWJ1Z1NlcnZlcjsKLWNsYXNzIFNjcmlwdE9iamVjdDsKLWNsYXNzIFNjcmlwdFZh
bHVlOwogY2xhc3MgU3RvcmFnZTsKIAogc3RydWN0IEV2ZW50TGlzdGVuZXJJbmZvOwpAQCAtODUs
MjIgKzkwLDIyIEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KIAotICAgIHN0YXRpYyBOb2RlKiBz
Y3JpcHRWYWx1ZUFzTm9kZShTY3JpcHRWYWx1ZSk7Ci0gICAgc3RhdGljIFNjcmlwdFZhbHVlIG5v
ZGVBc1NjcmlwdFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgTm9kZSopOworICAgIHN0YXRpYyBOb2Rl
KiBzY3JpcHRWYWx1ZUFzTm9kZShEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSk7CisgICAgc3RhdGlj
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG5vZGVBc1NjcmlwdFZhbHVlKEpTQzo6RXhlY1N0YXRl
KiwgTm9kZSopOwogCiAgICAgdm9pZCBkaXNjb25uZWN0KCk7CiAKICAgICBjbGFzcyBJbnNwZWN0
YWJsZU9iamVjdCB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1Ymxp
YzoKLSAgICAgICAgdmlydHVhbCBTY3JpcHRWYWx1ZSBnZXQoSlNDOjpFeGVjU3RhdGUqKTsKKyAg
ICAgICAgdmlydHVhbCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBnZXQoSlNDOjpFeGVjU3RhdGUq
KTsKICAgICAgICAgdmlydHVhbCB+SW5zcGVjdGFibGVPYmplY3QoKSB7IH0KICAgICB9OwogICAg
IHZvaWQgYWRkSW5zcGVjdGVkT2JqZWN0KFBhc3NPd25QdHI8SW5zcGVjdGFibGVPYmplY3Q+KTsK
ICAgICB2b2lkIGNsZWFySW5zcGVjdGVkT2JqZWN0cygpOwogICAgIEluc3BlY3RhYmxlT2JqZWN0
KiBpbnNwZWN0ZWRPYmplY3QodW5zaWduZWQgaW50IG51bSk7CiAKLSAgICB2b2lkIGluc3BlY3RJ
bXBsKFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IG9iamVjdFRvSW5zcGVjdCwgUGFzc1JlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4gaGludHMpOworICAgIHZvaWQgaW5zcGVjdEltcGwoUGFzc1JlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiBvYmplY3RUb0luc3BlY3QsIFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gaGludHMpOwogICAgIHZvaWQgZ2V0RXZlbnRMaXN0
ZW5lcnNJbXBsKE5vZGUqLCBWZWN0b3I8RXZlbnRMaXN0ZW5lckluZm8+JiBsaXN0ZW5lcnNBcnJh
eSk7CiAKICAgICB2b2lkIGNsZWFyQ29uc29sZU1lc3NhZ2VzKCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAkocmV2aXNp
b24gMTYwNDA0KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFu
YWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEwICszNywxMiBAQAogI2luY2x1ZGUgIklu
amVjdGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVk
ZSAiSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIK
LSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRPYmpl
Y3QuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBQYXNzT3duUHRyPEluamVjdGVkU2NyaXB0TWFuYWdlcj4gSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVGb3JQYWdlKCkKQEAgLTE3Myw3ICsxNzUsNyBAQCBJbmpl
Y3RlZFNjcmlwdCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluCiAgICAgICAgIHJldHVybiBJbmpl
Y3RlZFNjcmlwdCgpOwogCiAgICAgaW50IGlkID0gaW5qZWN0ZWRTY3JpcHRJZEZvcihpbnNwZWN0
ZWRFeGVjU3RhdGUpOwotICAgIFNjcmlwdE9iamVjdCBpbmplY3RlZFNjcmlwdE9iamVjdCA9IGNy
ZWF0ZUluamVjdGVkU2NyaXB0KGluamVjdGVkU2NyaXB0U291cmNlKCksIGluc3BlY3RlZEV4ZWNT
dGF0ZSwgaWQpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBpbmplY3RlZFNjcmlwdE9i
amVjdCA9IGNyZWF0ZUluamVjdGVkU2NyaXB0KGluamVjdGVkU2NyaXB0U291cmNlKCksIGluc3Bl
Y3RlZEV4ZWNTdGF0ZSwgaWQpOwogICAgIEluamVjdGVkU2NyaXB0IHJlc3VsdChpbmplY3RlZFNj
cmlwdE9iamVjdCwgbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKTsKICAgICBtX2lkVG9Jbmpl
Y3RlZFNjcmlwdC5zZXQoaWQsIHJlc3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgJKHJl
dmlzaW9uIDE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTMgKzM1LDE5IEBACiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNw
YWNlIERlcHJlY2F0ZWQgeworY2xhc3MgU2NyaXB0T2JqZWN0OworfQorCituYW1lc3BhY2UgSW5z
cGVjdG9yIHsKK2NsYXNzIEluc3BlY3Rvck9iamVjdDsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBET01XaW5kb3c7CiBjbGFzcyBJbmplY3RlZFNjcmlwdDsKIGNsYXNzIEluamVj
dGVkU2NyaXB0SG9zdDsKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsKLWNsYXNzIFNjcmlwdE9iamVj
dDsKIAogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShJbmplY3RlZFNjcmlwdE1hbmFnZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAg
LTY5LDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBJbmplY3RlZFNjcmlwdE1hbmFn
ZXIoSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayk7CiAKICAgICBTdHJpbmcgaW5qZWN0ZWRTY3Jp
cHRTb3VyY2UoKTsKLSAgICBTY3JpcHRPYmplY3QgY3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3Qg
U3RyaW5nJiBzb3VyY2UsIEpTQzo6RXhlY1N0YXRlKiwgaW50IGlkKTsKKyAgICBEZXByZWNhdGVk
OjpTY3JpcHRPYmplY3QgY3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2Us
IEpTQzo6RXhlY1N0YXRlKiwgaW50IGlkKTsKIAogICAgIHN0YXRpYyBib29sIGNhbkFjY2Vzc0lu
c3BlY3RlZFdpbmRvdyhKU0M6OkV4ZWNTdGF0ZSopOwogICAgIHN0YXRpYyBib29sIGNhbkFjY2Vz
c0luc3BlY3RlZFdvcmtlckdsb2JhbFNjb3BlKEpTQzo6RXhlY1N0YXRlKik7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAJKHJl
dmlzaW9uIDE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1vZHVsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDggKzM2LDExIEBACiAKICNpbmNsdWRl
ICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgot
I2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5o
IgorI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdz
L1NjcmlwdEZ1bmN0aW9uQ2FsbC5oPgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5o
PgorCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTU0LDEzICs1NywxMyBAQCB2b2lkIEluamVjdGVkU2NyaXB0TW9kdWxlOjplbnN1cmVJbmpl
Y3RlCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1FOiBNYWtlIHRoZSBJbmplY3RlZFNj
cmlwdCBhIG1vZHVsZSBpdHNlbGYuCi0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGlu
amVjdGVkU2NyaXB0LmluamVjdGVkU2NyaXB0T2JqZWN0KCksICJtb2R1bGUiKTsKKyAgICBEZXBy
ZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHQuaW5qZWN0
ZWRTY3JpcHRPYmplY3QoKSwgIm1vZHVsZSIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJG
cm9tQW55VGhyZWFkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChuYW1lKCkpOwogICAg
IGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgU2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUg
PSBpbmplY3RlZFNjcmlwdC5jYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhh
ZEV4Y2VwdGlvbik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBp
bmplY3RlZFNjcmlwdC5jYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4
Y2VwdGlvbik7CiAgICAgQVNTRVJUKCFoYWRFeGNlcHRpb24pOwogICAgIGlmIChoYWRFeGNlcHRp
b24gfHwgcmVzdWx0VmFsdWUuaGFzTm9WYWx1ZSgpIHx8ICFyZXN1bHRWYWx1ZS5pc09iamVjdCgp
KSB7Ci0gICAgICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdC5p
bmplY3RlZFNjcmlwdE9iamVjdCgpLCAiaW5qZWN0TW9kdWxlIik7CisgICAgICAgIERlcHJlY2F0
ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdC5pbmplY3RlZFNj
cmlwdE9iamVjdCgpLCAiaW5qZWN0TW9kdWxlIiwgV2ViQ29yZTo6ZnVuY3Rpb25DYWxsSGFuZGxl
ckZyb21BbnlUaHJlYWQpOwogICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChuYW1lKCkp
OwogICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChzb3VyY2UoKSk7CiAgICAgICAgIHJl
c3VsdFZhbHVlID0gaW5qZWN0ZWRTY3JpcHQuY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1
bmN0aW9uLCBoYWRFeGNlcHRpb24pOwpAQCAtNzAsNyArNzMsNyBAQCB2b2lkIEluamVjdGVkU2Ny
aXB0TW9kdWxlOjplbnN1cmVJbmplY3RlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBTY3JpcHRP
YmplY3QgbW9kdWxlT2JqZWN0KHNjcmlwdFN0YXRlLCByZXN1bHRWYWx1ZSk7CisgICAgRGVwcmVj
YXRlZDo6U2NyaXB0T2JqZWN0IG1vZHVsZU9iamVjdChzY3JpcHRTdGF0ZSwgcmVzdWx0VmFsdWUp
OwogICAgIGluaXRpYWxpemUobW9kdWxlT2JqZWN0LCBpbmplY3RlZFNjcmlwdE1hbmFnZXItPmlu
c3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2soKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcAkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDIsMjMgKzQyLDI0IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVu
dGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVy
LmgiCi0jaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5o
IgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9y
L0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIEluc3BlY3RvckFnZW50OjpJbnNwZWN0b3JBZ2VudChQYWdlKiBwYWdl
LCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICA6IEluc3BlY3RvckJhc2VBZ2Vu
dChBU0NJSUxpdGVyYWwoIkluc3BlY3RvciIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDog
SW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiSW5zcGVjdG9yIiksIGluc3RydW1lbnRp
bmdBZ2VudHMpCiAgICAgLCBtX2luc3BlY3RlZFBhZ2UocGFnZSkKICAgICAsIG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1fZW5hYmxlZChmYWxz
ZSkKQEAgLTkzLDcgKzk0LDcgQEAgdm9pZCBJbnNwZWN0b3JBZ2VudDo6ZGlkQ2xlYXJXaW5kb3dP
YmplYwogICAgIGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KHNjcmlwdFNvdXJjZS50b1N0
cmluZygpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckFn
ZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
IGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3JJbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5k
Q2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvckluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpAQCAtMTUw
LDcgKzE1MSw3IEBAIHZvaWQgSW5zcGVjdG9yQWdlbnQ6OnNldEluamVjdGVkU2NyaXB0Rm8KICAg
ICBtX2luamVjdGVkU2NyaXB0Rm9yT3JpZ2luLnNldChvcmlnaW4sIHNvdXJjZSk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yQWdlbnQ6Omluc3BlY3QoUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0PiBvYmplY3RUb0luc3BlY3QsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBoaW50cykKK3ZvaWQgSW5zcGVjdG9yQWdlbnQ6Omluc3BlY3QoUGFzc1JlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IG9iamVjdFRvSW5zcGVj
dCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhpbnRzKQogewogICAgIGlmIChtX2VuYWJs
ZWQgJiYgbV9mcm9udGVuZERpc3BhdGNoZXIpIHsKICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNo
ZXItPmluc3BlY3Qob2JqZWN0VG9JbnNwZWN0LCBoaW50cyk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaAkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDExICszMCwxNyBAQAogI2lmbmRlZiBJbnNwZWN0b3JBZ2VudF9oCiAjZGVmaW5lIEluc3BlY3Rv
ckFnZW50X2gKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIklu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50
QmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAorbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFzcyBJbnNwZWN0b3JPYmplY3Q7Cit9CisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwpAQCAtNDIsMTMgKzQ4
LDEyIEBAIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBJbnNwZWN0b3JJbnNwZWN0b3JGcm9udGVuZERpc3BhdGNo
ZXI7Ci1jbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwog
Y2xhc3MgUGFnZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3Bl
Y3RvckFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3Rvcklu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JBZ2VudCA6
IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3Rv
ckFnZW50KTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JBZ2VudD4g
Y3JlYXRlKFBhZ2UqIHBhZ2UsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLCBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQpAQCAtNjQs
NyArNjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2
b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5z
cGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAg
dm9pZCBkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUqLCBET01XcmFwcGVyV29ybGQm
KTsKQEAgLTc5LDcgKzg0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRJbmplY3RlZFNjcmlw
dEZvck9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBzb3VyY2UpOwog
Ci0gICAgdm9pZCBpbnNwZWN0KFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdD4gb2JqZWN0VG9JbnNwZWN0LCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gaGlu
dHMpOworICAgIHZvaWQgaW5zcGVjdChQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gb2JqZWN0VG9JbnNwZWN0LCBQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBoaW50cyk7CiAKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9y
QWdlbnQoUGFnZSosIEluamVjdGVkU2NyaXB0TWFuYWdlciosIEluc3RydW1lbnRpbmdBZ2VudHMq
KTsKQEAgLTkwLDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXIq
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogCiAgICAgVmVjdG9yPHBhaXI8bG9uZywgU3RyaW5n
Pj4gbV9wZW5kaW5nRXZhbHVhdGVUZXN0Q29tbWFuZHM7Ci0gICAgcGFpcjxSZWZQdHI8VHlwZUJ1
aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+PiBt
X3BlbmRpbmdJbnNwZWN0RGF0YTsKKyAgICBwYWlyPFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+PiBtX3BlbmRpbmdJbnNwZWN0RGF0YTsKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiBtX2luamVjdGVkU2NyaXB0Rm9yT3JpZ2luOwogCiAgICAgYm9vbCBtX2VuYWJsZWQ7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0
cnkuY3BwCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNjAgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLQotI2luY2x1ZGUgIkluc3BlY3RvckFn
ZW50UmVnaXN0cnkuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEluc3BlY3RvckFn
ZW50UmVnaXN0cnk6OmFwcGVuZChQYXNzT3duUHRyPEluc3BlY3RvckJhc2VBZ2VudD4gYWdlbnQp
Ci17Ci0gICAgbV9hZ2VudHMuYXBwZW5kKGFnZW50KTsKLX0KLQotdm9pZCBJbnNwZWN0b3JBZ2Vu
dFJlZ2lzdHJ5OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNr
ZW5kRGlzcGF0Y2hlcikKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYWdlbnRzLnNp
emUoKTsgaSsrKQotICAgICAgICBtX2FnZW50c1tpXS0+ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKGZyb250ZW5kQ2hhbm5lbCwgYmFja2VuZERpc3BhdGNoZXIpOwotfQotCi12b2lkIEluc3Bl
Y3RvckFnZW50UmVnaXN0cnk6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkKLXsKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYWdlbnRzLnNpemUoKTsgaSsrKQotICAgICAgICBt
X2FnZW50c1tpXS0+d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKTsKLX0KLQotdm9pZCBJ
bnNwZWN0b3JBZ2VudFJlZ2lzdHJ5OjpkaXNjYXJkQWdlbnRzKCkKLXsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fYWdlbnRzLnNpemUoKTsgaSsrKQotICAgICAgICBtX2FnZW50c1tpXS0+
ZGlzY2FyZEFnZW50KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShJTlNQRUNUT1IpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQWdlbnRSZWdpc3RyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgJKHJldmlzaW9uIDE2MDQwNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2lmbmRlZiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5X2gKLSNkZWZpbmUgSW5zcGVjdG9y
QWdlbnRSZWdpc3RyeV9oCi0KLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKLSNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKLQotY2xh
c3MgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeSB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBhcHBlbmQoUGFz
c093blB0cjxJbnNwZWN0b3JCYXNlQWdlbnQ+KTsKLQotICAgIHZvaWQgZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKik7Ci0gICAgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpOwot
ICAgIHZvaWQgZGlzY2FyZEFnZW50cygpOwotCi1wcml2YXRlOgotICAgIFZlY3RvcjxPd25QdHI8
SW5zcGVjdG9yQmFzZUFnZW50Pj4gbV9hZ2VudHM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5X2gpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHAJKHJl
dmlzaW9uIDE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBbGxJ
bk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDkgKzM3LDcgQEAKICNpbmNsdWRlICJJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuY3BwIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TW9kdWxlLmNw
cCIKICNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudC5jcHAiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQWdl
bnRSZWdpc3RyeS5jcHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
LmNwcCIKLSNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIgogI2luY2x1ZGUgIkluc3BlY3RvckNhbnZhc0FnZW50
LmNwcCIKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQuY3BwIgpAQCAtNzAsNyArNjgsNiBAQAog
I2luY2x1ZGUgIkluc3BlY3RvclN0eWxlU2hlZXQuY3BwIgogI2luY2x1ZGUgIkluc3BlY3RvclN0
eWxlVGV4dEVkaXRvci5jcHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAi
Ci0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmNwcCIKICNpbmNsdWRlICJJbnNwZWN0b3JXb3Jr
ZXJBZ2VudC5jcHAiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5jcHAiCiAjaW5jbHVk
ZSAiTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIgpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAJ
KHJldmlzaW9uIDE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwyMSArMzYsMjMg
QEAKICNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250
ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVj
dG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtTdGF0ZU5vdGlmaWVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJl
c291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+
CisKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9y
UGFnZUFnZW50KiBwYWdlQWdlbnQpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRl
cmFsKCJBcHBsaWNhdGlvbkNhY2hlIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNw
ZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJBcHBsaWNhdGlvbkNhY2hlIiksIGluc3RydW1l
bnRpbmdBZ2VudHMpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCiB7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlRnJvbnRlbmRE
aXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJ
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5k
RGlzcGF0Y2hlciwgdGhpcyk7CkBAIC05Miw5ICs5NCw5IEBAIHZvaWQgSW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50OjpuZXQKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+bmV0d29ya1N0
YXRlVXBkYXRlZChpc05vd09ubGluZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50OjpnZXRGcmFtZXNXaXRoTWFuaWZlc3RzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRo
TWFuaWZlc3Q+PiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6
OmdldEZyYW1lc1dpdGhNYW5pZmVzdHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNo
ZTo6RnJhbWVXaXRoTWFuaWZlc3Q+PiYgcmVzdWx0KQogewotICAgIHJlc3VsdCA9IFR5cGVCdWls
ZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZl
c3Q+OjpjcmVhdGUoKTsKKyAgICByZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJh
eTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5p
ZmVzdD46OmNyZWF0ZSgpOwogCiAgICAgRnJhbWUqIG1haW5GcmFtZSA9IG1fcGFnZUFnZW50LT5t
YWluRnJhbWUoKTsKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZTsgZnJhbWU7IGZy
YW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQobWFpbkZyYW1lKSkgewpAQCAtMTA2LDcg
KzEwOCw3IEBAIHZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpnZXQKICAgICAg
ICAgQXBwbGljYXRpb25DYWNoZUhvc3Q6OkNhY2hlSW5mbyBpbmZvID0gaG9zdC0+YXBwbGljYXRp
b25DYWNoZUluZm8oKTsKICAgICAgICAgU3RyaW5nIG1hbmlmZXN0VVJMID0gaW5mby5tX21hbmlm
ZXN0LnN0cmluZygpOwogICAgICAgICBpZiAoIW1hbmlmZXN0VVJMLmlzRW1wdHkoKSkgewotICAg
ICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhN
YW5pZmVzdD4gdmFsdWUgPSBUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRo
TWFuaWZlc3Q6OmNyZWF0ZSgpCisgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+IHZhbHVlID0gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q6OmNy
ZWF0ZSgpCiAgICAgICAgICAgICAgICAgLnNldEZyYW1lSWQobV9wYWdlQWdlbnQtPmZyYW1lSWQo
ZnJhbWUpKQogICAgICAgICAgICAgICAgIC5zZXRNYW5pZmVzdFVSTChtYW5pZmVzdFVSTCkKICAg
ICAgICAgICAgICAgICAuc2V0U3RhdHVzKHN0YXRpY19jYXN0PGludD4oaG9zdC0+c3RhdHVzKCkp
KTsKQEAgLTEzNCw3ICsxMzYsNyBAQCB2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dDo6Z2V0CiAgICAgKm1hbmlmZXN0VVJMID0gaW5mby5tX21hbmlmZXN0LnN0cmluZygpOwogfQog
Ci12b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0QXBwbGljYXRpb25DYWNo
ZUZvckZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZUlk
LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU+
JiBhcHBsaWNhdGlvbkNhY2hlKQordm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6
OmdldEFwcGxpY2F0aW9uQ2FjaGVGb3JGcmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNv
bnN0IFN0cmluZyYgZnJhbWVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxp
Y2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU+JiBhcHBsaWNhdGlvbkNhY2hlKQogewogICAg
IERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGFzc2VydEZyYW1lV2l0aERvY3VtZW50
TG9hZGVyKGVycm9yU3RyaW5nLCBmcmFtZUlkKTsKICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQpA
QCAtMTQ5LDkgKzE1MSw5IEBAIHZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Ojpn
ZXQKICAgICBhcHBsaWNhdGlvbkNhY2hlID0gYnVpbGRPYmplY3RGb3JBcHBsaWNhdGlvbkNhY2hl
KHJlc291cmNlcywgaW5mbyk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFwcGxpY2F0
aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU+IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dDo6YnVpbGRPYmplY3RGb3JBcHBsaWNhdGlvbkNhY2hlKGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjpSZXNvdXJjZUluZm9MaXN0JiBhcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzLCBjb25zdCBB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6Q2FjaGVJbmZvJiBhcHBsaWNhdGlvbkNhY2hlSW5mbykKK1Bh
c3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGlj
YXRpb25DYWNoZT4gSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpidWlsZE9iamVjdEZv
ckFwcGxpY2F0aW9uQ2FjaGUoY29uc3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5m
b0xpc3QmIGFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMsIGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjpDYWNoZUluZm8mIGFwcGxpY2F0aW9uQ2FjaGVJbmZvKQogewotICAgIHJldHVybiBUeXBl
QnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZTo6Y3JlYXRlKCkKKyAg
ICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGlj
YXRpb25DYWNoZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldE1hbmlmZXN0VVJMKGFwcGxpY2F0aW9u
Q2FjaGVJbmZvLm1fbWFuaWZlc3Quc3RyaW5nKCkpCiAgICAgICAgIC5zZXRTaXplKGFwcGxpY2F0
aW9uQ2FjaGVJbmZvLm1fc2l6ZSkKICAgICAgICAgLnNldENyZWF0aW9uVGltZShhcHBsaWNhdGlv
bkNhY2hlSW5mby5tX2NyZWF0aW9uVGltZSkKQEAgLTE2MCw5ICsxNjIsOSBAQCBQYXNzUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlCiAgICAgICAgIC5yZWxlYXNlKCk7CiB9CiAK
LVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNh
Y2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+PiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQ6OmJ1aWxkQXJyYXlGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzKGNvbnN0IEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm9MaXN0JiBhcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2VzKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+
PiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmJ1aWxkQXJyYXlGb3JBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VzKGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm9M
aXN0JiBhcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzKQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRl
cjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZT4+IHJlc291cmNlcyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6QXBw
bGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlPjo6Y3JlYXRlKCk7CisgICAg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4+IHJlc291cmNl
cyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT46OmNyZWF0ZSgpOwog
CiAgICAgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mb0xpc3Q6OmNvbnN0X2l0ZXJh
dG9yIGVuZCA9IGFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMuZW5kKCk7CiAgICAgQXBwbGljYXRp
b25DYWNoZUhvc3Q6OlJlc291cmNlSW5mb0xpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gYXBwbGlj
YXRpb25DYWNoZVJlc291cmNlcy5iZWdpbigpOwpAQCAtMTcyLDcgKzE3NCw3IEBAIFBhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGUKICAgICByZXR1cm4gcmVzb3VyY2VzOwog
fQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2U+IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6YnVpbGRPYmpl
Y3RGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoY29uc3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6
OlJlc291cmNlSW5mbyYgcmVzb3VyY2VJbmZvKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IEluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6YnVpbGRPYmplY3RGb3JBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UoY29uc3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mbyYgcmVzb3Vy
Y2VJbmZvKQogewogICAgIFN0cmluZyB0eXBlczsKICAgICBpZiAocmVzb3VyY2VJbmZvLm1faXNN
YXN0ZXIpCkBAIC0xOTAsNyArMTkyLDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXBwbGlj
YXRpb25DYWNoZQogICAgIGlmIChyZXNvdXJjZUluZm8ubV9pc0V4cGxpY2l0KQogICAgICAgICB0
eXBlcy5hcHBlbmQoIkV4cGxpY2l0ICIpOwogCi0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcHBs
aWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IHZhbHVlID0gVHlwZUJ1aWxk
ZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKCkK
KyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBw
bGljYXRpb25DYWNoZVJlc291cmNlPiB2YWx1ZSA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFw
cGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKCkKICAgICAg
ICAgLnNldFVybChyZXNvdXJjZUluZm8ubV9yZXNvdXJjZS5zdHJpbmcoKSkKICAgICAgICAgLnNl
dFNpemUoc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUluZm8ubV9zaXplKSkKICAgICAgICAgLnNl
dFR5cGUodHlwZXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaAkocmV2aXNpb24gMTYwNDA0KQor
KysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwyNyArMjgsMzAgQEAKICNpZiBFTkFCTEUoSU5TUEVD
VE9SKQogCiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZUhvc3QuaCIKLSNpbmNsdWRlICJJbnNw
ZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgorI2luY2x1ZGUgIkluc3BlY3Rvcldl
YkFnZW50QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9y
T2JqZWN0OworY2xhc3MgSW5zcGVjdG9yVmFsdWU7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgRnJhbWU7Ci1jbGFzcyBJbnNwZWN0b3JBcnJheTsKIGNsYXNzIEluc3BlY3RvckFn
ZW50OwogY2xhc3MgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUZyb250ZW5kRGlzcGF0Y2hlcjsK
LWNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKLWNsYXNz
IEluc3BlY3RvclZhbHVlOwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFBhZ2U7
CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsK
IAotY2xhc3MgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50IDogcHVibGljIEluc3BlY3Rv
ckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50IDogcHVi
bGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3Bl
Y3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KQpAQCAtNTcsMjUgKzYwLDIyIEBAIHB1YmxpYzoKICAg
ICB9CiAgICAgfkluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCgpIHsgfQogCi0gICAgLy8g
SW5zcGVjdG9yQmFzZUFnZW50Ci0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Oklu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdp
bGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKLSAgICAvLyBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24gQVBJCiAgICAgdm9pZCB1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3Rh
dHVzKEZyYW1lKik7CiAgICAgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKCk7CiAKLSAgICAvLyBB
cHBsaWNhdGlvbkNhY2hlIEFQSSBmb3IgSW5zcGVjdG9yRnJvbnRlbmQKICAgICB2aXJ0dWFsIHZv
aWQgZW5hYmxlKEVycm9yU3RyaW5nKik7Ci0gICAgdmlydHVhbCB2b2lkIGdldEZyYW1lc1dpdGhN
YW5pZmVzdHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVzdD4+JiByZXN1bHQpOworICAg
IHZpcnR1YWwgdm9pZCBnZXRGcmFtZXNXaXRoTWFuaWZlc3RzKEVycm9yU3RyaW5nKiwgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFw
cGxpY2F0aW9uQ2FjaGU6OkZyYW1lV2l0aE1hbmlmZXN0Pj4mIHJlc3VsdCk7CiAgICAgdmlydHVh
bCB2b2lkIGdldE1hbmlmZXN0Rm9yRnJhbWUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZy
YW1lSWQsIFN0cmluZyogbWFuaWZlc3RVUkwpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRBcHBsaWNh
dGlvbkNhY2hlRm9yRnJhbWUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZT4mKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZ2V0QXBwbGljYXRpb25DYWNoZUZvckZyYW1lKEVycm9yU3RyaW5n
KiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZT4mKTsKIAogcHJpdmF0ZToKICAgICBJ
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3Bl
Y3RvclBhZ2VBZ2VudCopOwotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9u
Q2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU+IGJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZShj
b25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvTGlzdCYsIGNvbnN0IEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjpDYWNoZUluZm8mKTsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcnJheTxUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJl
c291cmNlPj4gYnVpbGRBcnJheUZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMoY29uc3QgQXBw
bGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mb0xpc3QmKTsKLSAgICBQYXNzUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IGJ1
aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlKGNvbnN0IEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjpSZXNvdXJjZUluZm8mKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU+IGJ1aWxkT2JqZWN0Rm9y
QXBwbGljYXRpb25DYWNoZShjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZv
TGlzdCYsIGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpDYWNoZUluZm8mKTsKKyAgICBQYXNz
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4+IGJ1aWxkQXJy
YXlGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzKGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0
OjpSZXNvdXJjZUluZm9MaXN0Jik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IGJ1aWxkT2Jq
ZWN0Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlKGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0
OjpSZXNvdXJjZUluZm8mKTsKIAogICAgIERvY3VtZW50TG9hZGVyKiBhc3NlcnRGcmFtZVdpdGhE
b2N1bWVudExvYWRlcihFcnJvclN0cmluZyosIFN0cmluZyBmcmFtZUlkKTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIuY3BwCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI2NCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyLmgiCi0KLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotCi0jaW5jbHVkZSAiSW5zcGVjdG9y
Rm9yd2FyZGluZy5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgotI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tC
YXNlOjpDYWxsYmFja0Jhc2UoUGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4g
YmFja2VuZERpc3BhdGNoZXIsIGludCBpZCkKLSAgICA6IG1fYmFja2VuZERpc3BhdGNoZXIoYmFj
a2VuZERpc3BhdGNoZXIpCi0gICAgLCBtX2lkKGlkKQotICAgICwgbV9hbHJlYWR5U2VudChmYWxz
ZSkKLXsKLX0KLQotYm9vbCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNl
Ojppc0FjdGl2ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX2FscmVhZHlTZW50ICYmIG1fYmFj
a2VuZERpc3BhdGNoZXItPmlzQWN0aXZlKCk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6c2VuZEZhaWx1cmUoY29uc3QgRXJyb3JTdHJpbmcmIGVy
cm9yKQotewotICAgIEFTU0VSVChlcnJvci5sZW5ndGgoKSk7Ci0gICAgc2VuZElmQWN0aXZlKG51
bGxwdHIsIGVycm9yKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2Fs
bGJhY2tCYXNlOjpzZW5kSWZBY3RpdmUoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHBhcnRp
YWxNZXNzYWdlLCBjb25zdCBFcnJvclN0cmluZyYgaW52b2NhdGlvbkVycm9yKQotewotICAgIGlm
IChtX2FscmVhZHlTZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2JhY2tlbmREaXNwYXRj
aGVyLT5zZW5kUmVzcG9uc2UobV9pZCwgcGFydGlhbE1lc3NhZ2UsIGludm9jYXRpb25FcnJvcik7
Ci0gICAgbV9hbHJlYWR5U2VudCA9IHRydWU7Ci19Ci0KLVBhc3NSZWZQdHI8SW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI+IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiBpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcihpbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwpKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6cmVn
aXN0ZXJEaXNwYXRjaGVyRm9yRG9tYWluKGNvbnN0IFN0cmluZyYgZG9tYWluLCBJbnNwZWN0b3JT
dXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciogZGlzcGF0Y2hlcikKLXsKLSAgICBhdXRvIHJl
c3VsdCA9IG1fZGlzcGF0Y2hlcnMuYWRkKGRvbWFpbiwgZGlzcGF0Y2hlcik7Ci0gICAgQVNTRVJU
X1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2goY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAg
IFJlZjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gcHJvdGVjdCgqdGhpcyk7Ci0KLSAgICBS
ZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHBhcnNlZE1lc3NhZ2UgPSBJbnNwZWN0b3JWYWx1ZTo6cGFy
c2VKU09OKG1lc3NhZ2UpOwotICAgIGlmICghcGFyc2VkTWVzc2FnZSkgewotICAgICAgICByZXBv
cnRQcm90b2NvbEVycm9yKG51bGxwdHIsIFBhcnNlRXJyb3IsICJNZXNzYWdlIG11c3QgYmUgaW4g
SlNPTiBmb3JtYXQiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IG1lc3NhZ2VPYmplY3QgPSBwYXJzZWRNZXNzYWdlLT5hc09iamVjdCgpOwot
ICAgIGlmICghbWVzc2FnZU9iamVjdCkgewotICAgICAgICByZXBvcnRQcm90b2NvbEVycm9yKG51
bGxwdHIsIEludmFsaWRSZXF1ZXN0LCAiTWVzc2FnZSBtdXN0IGJlIGEgSlNPTmlmaWVkIG9iamVj
dCIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUmVmUHRyPEluc3BlY3RvclZhbHVl
PiBjYWxsSWRWYWx1ZSA9IG1lc3NhZ2VPYmplY3QtPmdldCgiaWQiKTsKLSAgICBpZiAoIWNhbGxJ
ZFZhbHVlKSB7Ci0gICAgICAgIHJlcG9ydFByb3RvY29sRXJyb3IobnVsbHB0ciwgSW52YWxpZFJl
cXVlc3QsICInaWQnIHByb3BlcnR5IHdhcyBub3QgZm91bmQiKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGxvbmcgY2FsbElkID0gMDsKLSAgICBpZiAoIWNhbGxJZFZhbHVlLT5hc051
bWJlcigmY2FsbElkKSkgewotICAgICAgICByZXBvcnRQcm90b2NvbEVycm9yKG51bGxwdHIsIElu
dmFsaWRSZXF1ZXN0LCAiVGhlIHR5cGUgb2YgJ2lkJyBwcm9wZXJ0eSBtdXN0IGJlIG51bWJlciIp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBt
ZXRob2RWYWx1ZSA9IG1lc3NhZ2VPYmplY3QtPmdldCgibWV0aG9kIik7Ci0gICAgaWYgKCFtZXRo
b2RWYWx1ZSkgewotICAgICAgICByZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEludmFsaWRS
ZXF1ZXN0LCAiJ21ldGhvZCcgcHJvcGVydHkgd2Fzbid0IGZvdW5kIik7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBTdHJpbmcgbWV0aG9kOwotICAgIGlmICghbWV0aG9kVmFsdWUtPmFz
U3RyaW5nKCZtZXRob2QpKSB7Ci0gICAgICAgIHJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwg
SW52YWxpZFJlcXVlc3QsICJUaGUgdHlwZSBvZiAnbWV0aG9kJyBwcm9wZXJ0eSBtdXN0IGJlIHN0
cmluZyIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc2l6ZV90IHBvc2l0aW9uID0g
bWV0aG9kLmZpbmQoJy4nKTsKLSAgICBpZiAocG9zaXRpb24gPT0gV1RGOjpub3RGb3VuZCkgewot
ICAgICAgICByZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEludmFsaWRSZXF1ZXN0LCAiVGhl
ICdtZXRob2QnIHByb3BlcnR5IHdhcyBmb3JtYXR0ZWQgaW5jb3JyZWN0bHkuIEl0IHNob3VsZCBi
ZSAnRG9tYWluLm1ldGhvZCciKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFN0cmlu
ZyBkb21haW4gPSBtZXRob2Quc3Vic3RyaW5nKDAsIHBvc2l0aW9uKTsKLSAgICBJbnNwZWN0b3JT
dXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciogZG9tYWluRGlzcGF0Y2hlciA9IG1fZGlzcGF0
Y2hlcnMuZ2V0KGRvbWFpbik7Ci0gICAgaWYgKCFkb21haW5EaXNwYXRjaGVyKSB7Ci0gICAgICAg
IHJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgTWV0aG9kTm90Rm91bmQsICInIiArIGRvbWFp
biArICInIGRvbWFpbiB3YXMgbm90IGZvdW5kIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBTdHJpbmcgZG9tYWluTWV0aG9kID0gbWV0aG9kLnN1YnN0cmluZyhwb3NpdGlvbiArIDEp
OwotICAgIGRvbWFpbkRpc3BhdGNoZXItPmRpc3BhdGNoKGNhbGxJZCwgZG9tYWluTWV0aG9kLCBt
ZXNzYWdlT2JqZWN0LnJlbGVhc2UoKSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI6OnNlbmRSZXNwb25zZShsb25nIGNhbGxJZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IHJlc3VsdCwgY29uc3QgRXJyb3JTdHJpbmcmIGludm9jYXRpb25FcnJvcikKLXsKLSAgICBp
ZiAoIW1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKQotICAgICAgICByZXR1cm47Ci0KLSAgICBp
ZiAoaW52b2NhdGlvbkVycm9yLmxlbmd0aCgpKSB7Ci0gICAgICAgIHJlcG9ydFByb3RvY29sRXJy
b3IoJmNhbGxJZCwgU2VydmVyRXJyb3IsIGludm9jYXRpb25FcnJvcik7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXNwb25zZU1lc3NhZ2Ug
PSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIHJlc3BvbnNlTWVzc2FnZS0+c2V0T2Jq
ZWN0KEFTQ0lJTGl0ZXJhbCgicmVzdWx0IiksIHJlc3VsdCk7Ci0gICAgcmVzcG9uc2VNZXNzYWdl
LT5zZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJpZCIpLCBjYWxsSWQpOwotICAgIG1faW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQocmVzcG9uc2VNZXNzYWdlLT50
b0pTT05TdHJpbmcoKSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OnJl
cG9ydFByb3RvY29sRXJyb3IoY29uc3QgbG9uZyogY29uc3QgY2FsbElkLCBDb21tb25FcnJvckNv
ZGUgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgY29uc3QKLXsKLSAgICBy
ZXBvcnRQcm90b2NvbEVycm9yKGNhbGxJZCwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UsIG51bGxw
dHIpOwotfQotCi12b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpyZXBvcnRQcm90b2Nv
bEVycm9yKGNvbnN0IGxvbmcqIGNvbnN0IGNhbGxJZCwgQ29tbW9uRXJyb3JDb2RlIGVycm9yQ29k
ZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
IGRhdGEpIGNvbnN0Ci17Ci0gICAgc3RhdGljIGNvbnN0IGludCBlcnJvckNvZGVzW10gPSB7Ci0g
ICAgICAgIC0zMjcwMCwgLy8gUGFyc2VFcnJvcgotICAgICAgICAtMzI2MDAsIC8vIEludmFsaWRS
ZXF1ZXN0Ci0gICAgICAgIC0zMjYwMSwgLy8gTWV0aG9kTm90Rm91bmQKLSAgICAgICAgLTMyNjAy
LCAvLyBJbnZhbGlkUGFyYW1zCi0gICAgICAgIC0zMjYwMywgLy8gSW50ZXJuYWxFcnJvcgotICAg
ICAgICAtMzIwMDAsIC8vIFNlcnZlckVycm9yCi0gICAgfTsKLQotICAgIEFTU0VSVChlcnJvckNv
ZGUgPj0gMCk7Ci0gICAgQVNTRVJUKCh1bnNpZ25lZCllcnJvckNvZGUgPCBXVEZfQVJSQVlfTEVO
R1RIKGVycm9yQ29kZXMpKTsKLSAgICBBU1NFUlQoZXJyb3JDb2Rlc1tlcnJvckNvZGVdKTsKLQot
ICAgIGlmICghbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGVycm9yID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVh
dGUoKTsKLSAgICBlcnJvci0+c2V0TnVtYmVyKEFTQ0lJTGl0ZXJhbCgiY29kZSIpLCBlcnJvckNv
ZGVzW2Vycm9yQ29kZV0pOwotICAgIGVycm9yLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJtZXNz
YWdlIiksIGVycm9yTWVzc2FnZSk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIGVycm9yLT5zZXRB
cnJheShBU0NJSUxpdGVyYWwoImRhdGEiKSwgZGF0YSk7Ci0KLSAgICBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBtZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBtZXNzYWdl
LT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJlcnJvciIpLCBlcnJvci5yZWxlYXNlKCkpOwotICAg
IGlmIChjYWxsSWQpCi0gICAgICAgIG1lc3NhZ2UtPnNldE51bWJlcihBU0NJSUxpdGVyYWwoImlk
IiksICpjYWxsSWQpOwotICAgIGVsc2UKLSAgICAgICAgbWVzc2FnZS0+c2V0VmFsdWUoQVNDSUlM
aXRlcmFsKCJpZCIpLCBJbnNwZWN0b3JWYWx1ZTo6bnVsbCgpKTsKLQotICAgIG1faW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQobWVzc2FnZS0+dG9KU09OU3Ry
aW5nKCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5WYWx1ZVR5cGUsIHR5cGVuYW1l
IFZhbHVlVHlwZSwgdHlwZW5hbWUgRGVmYXVsdFZhbHVlVHlwZT4KLVJldHVyblZhbHVlVHlwZSBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0UHJvcGVydHlWYWx1ZShJbnNwZWN0b3JPYmpl
Y3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0
b3JBcnJheSogcHJvdG9jb2xFcnJvcnMsIERlZmF1bHRWYWx1ZVR5cGUgZGVmYXVsdFZhbHVlLCBi
b29sICgqYXNNZXRob2QpKEluc3BlY3RvclZhbHVlKiwgVmFsdWVUeXBlKiksIGNvbnN0IGNoYXIq
IHR5cGVOYW1lKQotewotICAgIEFTU0VSVChwcm90b2NvbEVycm9ycyk7Ci0KLSAgICBWYWx1ZVR5
cGUgdmFsdWUgPSBkZWZhdWx0VmFsdWU7Ci0gICAgaWYgKHZhbHVlRm91bmQpCi0gICAgICAgICp2
YWx1ZUZvdW5kID0gZmFsc2U7Ci0KLSAgICBpZiAoIW9iamVjdCkgewotICAgICAgICBpZiAoIXZh
bHVlRm91bmQpCi0gICAgICAgICAgICBwcm90b2NvbEVycm9ycy0+cHVzaFN0cmluZyhTdHJpbmc6
OmZvcm1hdCgiJ3BhcmFtcycgb2JqZWN0IG11c3QgY29udGFpbiByZXF1aXJlZCBwYXJhbWV0ZXIg
JyVzJyB3aXRoIHR5cGUgJyVzJy4iLCBuYW1lLnV0ZjgoKS5kYXRhKCksIHR5cGVOYW1lKSk7Ci0g
ICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICB9Ci0KLSAgICBJbnNwZWN0b3JPYmplY3Q6OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IG9iamVjdC0+ZW5kKCk7Ci0gICAgSW5zcGVjdG9yT2JqZWN0Ojpjb25z
dF9pdGVyYXRvciB2YWx1ZUl0ZXJhdG9yID0gb2JqZWN0LT5maW5kKG5hbWUpOwotICAgIGlmICh2
YWx1ZUl0ZXJhdG9yID09IGVuZCkgewotICAgICAgICBpZiAoIXZhbHVlRm91bmQpCi0gICAgICAg
ICAgICBwcm90b2NvbEVycm9ycy0+cHVzaFN0cmluZyhTdHJpbmc6OmZvcm1hdCgiUGFyYW1ldGVy
ICclcycgd2l0aCB0eXBlICclcycgd2FzIG5vdCBmb3VuZC4iLCBuYW1lLnV0ZjgoKS5kYXRhKCks
IHR5cGVOYW1lKSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICB9Ci0KLSAgICBpZiAoIWFz
TWV0aG9kKHZhbHVlSXRlcmF0b3ItPnZhbHVlLmdldCgpLCAmdmFsdWUpKSB7Ci0gICAgICAgIHBy
b3RvY29sRXJyb3JzLT5wdXNoU3RyaW5nKFN0cmluZzo6Zm9ybWF0KCJQYXJhbWV0ZXIgJyVzJyBo
YXMgd3JvbmcgdHlwZS4gSXQgbXVzdCBiZSAnJXMnLiIsIG5hbWUudXRmOCgpLmRhdGEoKSwgdHlw
ZU5hbWUpKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0KLQotICAgIGlmICh2YWx1ZUZv
dW5kKQotICAgICAgICAqdmFsdWVGb3VuZCA9IHRydWU7Ci0KLSAgICByZXR1cm4gdmFsdWU7Ci19
Ci0KLXN0cnVjdCBBc01ldGhvZEJyaWRnZXMgewotICAgIHN0YXRpYyBib29sIGFzSW50KEluc3Bl
Y3RvclZhbHVlKiB2YWx1ZSwgaW50KiBvdXRwdXQpIHsgcmV0dXJuIHZhbHVlLT5hc051bWJlcihv
dXRwdXQpOyB9Ci0gICAgc3RhdGljIGJvb2wgYXNEb3VibGUoSW5zcGVjdG9yVmFsdWUqIHZhbHVl
LCBkb3VibGUqIG91dHB1dCkgeyByZXR1cm4gdmFsdWUtPmFzTnVtYmVyKG91dHB1dCk7IH0KLSAg
ICBzdGF0aWMgYm9vbCBhc1N0cmluZyhJbnNwZWN0b3JWYWx1ZSogdmFsdWUsIFN0cmluZyogb3V0
cHV0KSB7IHJldHVybiB2YWx1ZS0+YXNTdHJpbmcob3V0cHV0KTsgfQotICAgIHN0YXRpYyBib29s
IGFzQm9vbGVhbihJbnNwZWN0b3JWYWx1ZSogdmFsdWUsIGJvb2wqIG91dHB1dCkgeyByZXR1cm4g
dmFsdWUtPmFzQm9vbGVhbihvdXRwdXQpOyB9Ci0gICAgc3RhdGljIGJvb2wgYXNPYmplY3QoSW5z
cGVjdG9yVmFsdWUqIHZhbHVlLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0cHV0KSB7IHJl
dHVybiB2YWx1ZS0+YXNPYmplY3Qob3V0cHV0KTsgfQotICAgIHN0YXRpYyBib29sIGFzQXJyYXko
SW5zcGVjdG9yVmFsdWUqIHZhbHVlLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBvdXRwdXQpIHsg
cmV0dXJuIHZhbHVlLT5hc0FycmF5KG91dHB1dCk7IH0KLX07Ci0KLWludCBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcjo6Z2V0SW50KEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJp
bmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3RvckFycmF5KiBwcm90b2NvbEVycm9y
cykKLXsKLSAgICByZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZTxpbnQsIGludCwgaW50PihvYmplY3Qs
IG5hbWUsIHZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLCAwLCBBc01ldGhvZEJyaWRnZXM6OmFz
SW50LCAiTnVtYmVyIik7Ci19Ci0KLWRvdWJsZSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6
Z2V0RG91YmxlKEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJv
b2wqIHZhbHVlRm91bmQsIEluc3BlY3RvckFycmF5KiBwcm90b2NvbEVycm9ycykKLXsKLSAgICBy
ZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZTxkb3VibGUsIGRvdWJsZSwgZG91YmxlPihvYmplY3QsIG5h
bWUsIHZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLCAwLCBBc01ldGhvZEJyaWRnZXM6OmFzRG91
YmxlLCAiTnVtYmVyIik7Ci19Ci0KLVN0cmluZyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6
Z2V0U3RyaW5nKEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJv
b2wqIHZhbHVlRm91bmQsIEluc3BlY3RvckFycmF5KiBwcm90b2NvbEVycm9ycykKLXsKLSAgICBy
ZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZTxTdHJpbmcsIFN0cmluZywgU3RyaW5nPihvYmplY3QsIG5h
bWUsIHZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLCAiIiwgQXNNZXRob2RCcmlkZ2VzOjphc1N0
cmluZywgIlN0cmluZyIpOwotfQotCi1ib29sIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpn
ZXRCb29sZWFuKEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJv
b2wqIHZhbHVlRm91bmQsIEluc3BlY3RvckFycmF5KiBwcm90b2NvbEVycm9ycykKLXsKLSAgICBy
ZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZTxib29sLCBib29sLCBib29sPihvYmplY3QsIG5hbWUsIHZh
bHVlRm91bmQsIHByb3RvY29sRXJyb3JzLCBmYWxzZSwgQXNNZXRob2RCcmlkZ2VzOjphc0Jvb2xl
YW4sICJCb29sZWFuIik7Ci19Ci0KLVBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0T2JqZWN0KEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBj
b25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3RvckFycmF5KiBwcm90
b2NvbEVycm9ycykKLXsKLSAgICByZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZTxQYXNzUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4sIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+LCBJbnNwZWN0b3JPYmplY3Qq
PihvYmplY3QsIG5hbWUsIHZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLCBudWxscHRyLCBBc01l
dGhvZEJyaWRnZXM6OmFzT2JqZWN0LCAiT2JqZWN0Iik7Ci19Ci0KLVBhc3NSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRBcnJheShJbnNwZWN0b3JP
YmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJbnNw
ZWN0b3JBcnJheSogcHJvdG9jb2xFcnJvcnMpCi17Ci0gICAgcmV0dXJuIGdldFByb3BlcnR5VmFs
dWU8UGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4sIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4sIElu
c3BlY3RvckFycmF5Kj4ob2JqZWN0LCBuYW1lLCB2YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycywg
bnVsbHB0ciwgQXNNZXRob2RCcmlkZ2VzOjphc0FycmF5LCAiQXJyYXkiKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlci5oCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxMTAgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZm5kZWYgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJfaAotI2RlZmluZSBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcl9oCi0KLSNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgot
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKLWNsYXNzIEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbDsKLXR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwotCi1jbGFzcyBJbnNwZWN0
b3JTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3Bl
Y3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyPiB7Ci1wdWJsaWM6Ci0gICAgSW5zcGVj
dG9yU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIqIGJhY2tlbmREaXNwYXRjaGVyKSA6IG1fYmFja2VuZERpc3BhdGNoZXIoYmFja2VuZERpc3Bh
dGNoZXIpIHsgfQotICAgIHZpcnR1YWwgfkluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNw
YXRjaGVyKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25z
dCBTdHJpbmcmIG1ldGhvZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1lc3NhZ2UpID0g
MDsKLXByb3RlY3RlZDoKLSAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1f
YmFja2VuZERpc3BhdGNoZXI7Ci19OwotCi1jbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IGNy
ZWF0ZShJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKTsKLSAgICB2aXJ0dWFsIH5JbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcigpIHsgfQotCi0gICAgY2xhc3MgQ2FsbGJhY2tCYXNlOiBwdWJsaWMg
UmVmQ291bnRlZDxDYWxsYmFja0Jhc2U+IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIENhbGxiYWNr
QmFzZShQYXNzUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiwgaW50IGlkKTsKLSAg
ICAgICAgdmlydHVhbCB+Q2FsbGJhY2tCYXNlKCkgeyB9Ci0KLSAgICAgICAgYm9vbCBpc0FjdGl2
ZSgpIGNvbnN0OwotICAgICAgICB2b2lkIHNlbmRGYWlsdXJlKGNvbnN0IEVycm9yU3RyaW5nJik7
Ci0gICAgICAgIHZvaWQgZGlzYWJsZSgpIHsgbV9hbHJlYWR5U2VudCA9IHRydWU7IH0KLQotICAg
IHByb3RlY3RlZDoKLSAgICAgICAgdm9pZCBzZW5kSWZBY3RpdmUoUGFzc1JlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IHBhcnRpYWxNZXNzYWdlLCBjb25zdCBFcnJvclN0cmluZyYgaW52b2NhdGlvbkVy
cm9yKTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKLSAgICAgICAgaW50IG1faWQ7Ci0gICAgICAg
IGJvb2wgbV9hbHJlYWR5U2VudDsKLSAgICB9OwotCi0gICAgdm9pZCBjbGVhckZyb250ZW5kKCkg
eyBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCA9IG51bGxwdHI7IH0KLSAgICBib29sIGlzQWN0
aXZlKCkgY29uc3QgeyByZXR1cm4gISFtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsgfQotCi0g
ICAgZW51bSBDb21tb25FcnJvckNvZGUgewotICAgICAgICBQYXJzZUVycm9yID0gMCwKLSAgICAg
ICAgSW52YWxpZFJlcXVlc3QsCi0gICAgICAgIE1ldGhvZE5vdEZvdW5kLAotICAgICAgICBJbnZh
bGlkUGFyYW1zLAotICAgICAgICBJbnRlcm5hbEVycm9yLAotICAgICAgICBTZXJ2ZXJFcnJvcgot
ICAgIH07Ci0KLSAgICB2b2lkIHJlZ2lzdGVyRGlzcGF0Y2hlckZvckRvbWFpbihjb25zdCBTdHJp
bmcmIGRvbWFpbiwgSW5zcGVjdG9yU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIqKTsKLSAg
ICB2b2lkIGRpc3BhdGNoKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0gICAgdm9pZCBzZW5kUmVz
cG9uc2UobG9uZyBjYWxsSWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQsIGNv
bnN0IEVycm9yU3RyaW5nJiBpbnZvY2F0aW9uRXJyb3IpOwotICAgIHZvaWQgcmVwb3J0UHJvdG9j
b2xFcnJvcihjb25zdCBsb25nKiBjb25zdCBjYWxsSWQsIENvbW1vbkVycm9yQ29kZSwgY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UpIGNvbnN0OwotICAgIHZvaWQgcmVwb3J0UHJvdG9jb2xFcnJv
cihjb25zdCBsb25nKiBjb25zdCBjYWxsSWQsIENvbW1vbkVycm9yQ29kZSwgY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UsIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGRhdGEpIGNvbnN0Owot
Ci0gICAgc3RhdGljIGludCBnZXRJbnQoSW5zcGVjdG9yT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBu
YW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0b3JBcnJheSogcHJvdG9jb2xFcnJvcnMpOwot
ICAgIHN0YXRpYyBkb3VibGUgZ2V0RG91YmxlKEluc3BlY3Rvck9iamVjdCosIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yQXJyYXkqIHByb3RvY29sRXJyb3Jz
KTsKLSAgICBzdGF0aWMgU3RyaW5nIGdldFN0cmluZyhJbnNwZWN0b3JPYmplY3QqLCBjb25zdCBT
dHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3RvckFycmF5KiBwcm90b2NvbEVy
cm9ycyk7Ci0gICAgc3RhdGljIGJvb2wgZ2V0Qm9vbGVhbihJbnNwZWN0b3JPYmplY3QqLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3RvckFycmF5KiBwcm90b2Nv
bEVycm9ycyk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBnZXRPYmpl
Y3QoSW5zcGVjdG9yT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5k
LCBJbnNwZWN0b3JBcnJheSogcHJvdG9jb2xFcnJvcnMpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEluc3BlY3RvckFycmF5PiBnZXRBcnJheShJbnNwZWN0b3JPYmplY3QqLCBjb25zdCBTdHJpbmcm
IG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3RvckFycmF5KiBwcm90b2NvbEVycm9ycyk7
Ci0KLXByaXZhdGU6Ci0gICAgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIDogbV9pbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwoaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSB7IH0KLQotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFJldHVyblZhbHVlVHlwZSwgdHlwZW5hbWUgVmFsdWVUeXBlLCB0eXBlbmFtZSBE
ZWZhdWx0VmFsdWVUeXBlPgotICAgIHN0YXRpYyBSZXR1cm5WYWx1ZVR5cGUgZ2V0UHJvcGVydHlW
YWx1ZShJbnNwZWN0b3JPYmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2
YWx1ZUZvdW5kLCBJbnNwZWN0b3JBcnJheSogcHJvdG9jb2xFcnJvcnMsIERlZmF1bHRWYWx1ZVR5
cGUgZGVmYXVsdFZhbHVlLCBib29sICgqYXNNZXRob2QpKEluc3BlY3RvclZhbHVlKiwgVmFsdWVU
eXBlKiksIGNvbnN0IGNoYXIqIHR5cGVOYW1lKTsKLQotICAgIEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIElu
c3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKj4gbV9kaXNwYXRjaGVyczsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyX2gpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQmFzZUFnZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckJhc2VBZ2VudC5oCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFzZUFnZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjMg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0Ogot
ICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0g
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgSW5zcGVjdG9yQmFzZUFnZW50X2gKLSNkZWZpbmUgSW5zcGVjdG9yQmFz
ZUFnZW50X2gKLQotI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKLWNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7
Ci0KLWNsYXNzIEluc3BlY3RvckJhc2VBZ2VudCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+SW5z
cGVjdG9yQmFzZUFnZW50KCkgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5k
QmFja2VuZCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzY2FyZEFnZW50KCkgeyB9Ci0KLXBy
b3RlY3RlZDoKLSAgICBJbnNwZWN0b3JCYXNlQWdlbnQoY29uc3QgU3RyaW5nJiBuYW1lLCBJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQotICAgICAgICA6IG1faW5zdHJ1
bWVudGluZ0FnZW50cyhpbnN0cnVtZW50aW5nQWdlbnRzKQotICAgICAgICAsIG1fbmFtZShuYW1l
KQotICAgIHsKLSAgICB9Ci0KLSAgICBJbnN0cnVtZW50aW5nQWdlbnRzKiBtX2luc3RydW1lbnRp
bmdBZ2VudHM7Ci0gICAgU3RyaW5nIG1fbmFtZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckJhc2VBZ2VudF9oKQpJbmRleDogU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCShyZXZpc2lv
biAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw4ICs0Myw3IEBACiAjaW5jbHVkZSAiSFRNTFN0eWxl
RWxlbWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9ySGlzdG9yeS5oIgotI2luY2x1ZGUgIkluc3BlY3RvclR5cGVCdWlsZGVyLmgiCi0jaW5j
bHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViVHlwZUJ1aWxk
ZXJzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIk5hbWVk
Rmxvd0NvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJOb2RlLmgiCkBAIC01Nyw3ICs1Niw3IEBACiAj
aW5jbHVkZSAiU3R5bGVSdWxlLmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldExpc3QuaCIKICNpbmNs
dWRlICJXZWJLaXROYW1lZEZsb3cuaCIKLQorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JW
YWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTY1LDYgKzY0LDggQEAKICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5h
dGUuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBlbnVtIEZvcmNlUHNldWRvQ2xhc3NGbGFncyB7CkBAIC0xMTcsNyArMTE4LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc3RhcnRTZWxlY3Rvcihjb25zdCBDU1NTdHlsZVJ1bGUqKTsKICAgICB2
b2lkIGNvbW1pdFNlbGVjdG9yKGJvb2wpOwogICAgIHZvaWQgY29tbWl0U2VsZWN0b3JUaW1lKCk7
Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+IHRvSW5z
cGVjdG9yT2JqZWN0KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZT4gdG9JbnNwZWN0b3JPYmplY3QoKSBjb25zdDsKIAog
cHJpdmF0ZToKIApAQCAtMjA1LDExICsyMDYsMTEgQEAgaW5saW5lIHZvaWQgU2VsZWN0b3JQcm9m
aWxlOjpjb21taXRTZWxlYwogICAgIGl0LT52YWx1ZS50b3RhbFRpbWUgKz0gcHJvY2Vzc2luZ1Rp
bWVNUzsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+
IFNlbGVjdG9yUHJvZmlsZTo6dG9JbnNwZWN0b3JPYmplY3QoKSBjb25zdAorUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZT4gU2VsZWN0b3JQcm9m
aWxlOjp0b0luc3BlY3Rvck9iamVjdCgpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGVFbnRyeT4+IHNlbGVjdG9y
UHJvZmlsZURhdGEgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0
b3JQcm9maWxlRW50cnk+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGVF
bnRyeT4+IHNlbGVjdG9yUHJvZmlsZURhdGEgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJh
eTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZUVudHJ5Pjo6Y3Jl
YXRlKCk7CiAgICAgZm9yIChSdWxlTWF0Y2hpbmdTdGF0c01hcDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBtX3J1bGVNYXRjaGluZ1N0YXRzLmJlZ2luKCk7IGl0ICE9IG1fcnVsZU1hdGNoaW5nU3RhdHMu
ZW5kKCk7ICsraXQpIHsKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9y
UHJvZmlsZUVudHJ5PiBlbnRyeSA9IFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZUVu
dHJ5OjpjcmVhdGUoKQorICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpTZWxlY3RvclByb2ZpbGVFbnRyeT4gZW50cnkgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6OlNlbGVjdG9yUHJvZmlsZUVudHJ5OjpjcmVhdGUoKQogICAgICAgICAgICAgLnNldFNlbGVj
dG9yKGl0LT52YWx1ZS5zZWxlY3RvcikKICAgICAgICAgICAgIC5zZXRVcmwoaXQtPnZhbHVlLnVy
bCkKICAgICAgICAgICAgIC5zZXRMaW5lTnVtYmVyKGl0LT52YWx1ZS5saW5lTnVtYmVyKQpAQCAt
MjE5LDcgKzIyMCw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm8K
ICAgICAgICAgc2VsZWN0b3JQcm9maWxlRGF0YS0+YWRkSXRlbShlbnRyeS5yZWxlYXNlKCkpOwog
ICAgIH0KIAotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+IHJl
c3VsdCA9IFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZTo6Y3JlYXRlKCkKKyAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+IHJlc3Vs
dCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlOjpjcmVhdGUo
KQogICAgICAgICAuc2V0VG90YWxUaW1lKHRvdGFsTWF0Y2hpbmdUaW1lTXMoKSkKICAgICAgICAg
LnNldERhdGEoc2VsZWN0b3JQcm9maWxlRGF0YSk7CiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNl
KCk7CkBAIC02MTYsNyArNjE3LDcgQEAgQ1NTU3R5bGVSdWxlKiBJbnNwZWN0b3JDU1NBZ2VudDo6
YXNDU1NTdAogfQogCiBJbnNwZWN0b3JDU1NBZ2VudDo6SW5zcGVjdG9yQ1NTQWdlbnQoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yRE9NQWdlbnQqIGRv
bUFnZW50KQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiQ1NTIiksIGlu
c3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFs
KCJDU1MiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fZG9tQWdlbnQoZG9tQWdlbnQp
CiAgICAgLCBtX2xhc3RTdHlsZVNoZWV0SWQoMSkKIHsKQEAgLTYyOSw3ICs2MzAsNyBAQCBJbnNw
ZWN0b3JDU1NBZ2VudDo6fkluc3BlY3RvckNTU0FnZW50KCkKICAgICByZXNldCgpOwogfQogCi12
b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERp
c3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3RvckNTU0Zyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBt
X2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yQ1NTQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0
ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CkBAIC04MTAsNyArODExLDcgQEAgYm9vbCBJbnNw
ZWN0b3JDU1NBZ2VudDo6Zm9yY2VQc2V1ZG9TdGF0ZQogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0
b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBpbnQgbm9kZUlkLCBjb25zdCBib29sKiBpbmNsdWRlUHNldWRvLCBjb25zdCBib29sKiBp
bmNsdWRlSW5oZXJpdGVkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpD
U1M6OlJ1bGVNYXRjaD4+JiBtYXRjaGVkQ1NTUnVsZXMsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJy
YXk8VHlwZUJ1aWxkZXI6OkNTUzo6UHNldWRvSWRNYXRjaGVzPj4mIHBzZXVkb0lkTWF0Y2hlcywg
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpJbmhlcml0ZWRTdHls
ZUVudHJ5Pj4mIGluaGVyaXRlZEVudHJpZXMpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRN
YXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQs
IGNvbnN0IGJvb2wqIGluY2x1ZGVQc2V1ZG8sIGNvbnN0IGJvb2wqIGluY2x1ZGVJbmhlcml0ZWQs
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDU1M6OlJ1bGVNYXRjaD4+JiBtYXRjaGVkQ1NTUnVsZXMsIFJlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlBzZXVkb0lk
TWF0Y2hlcz4+JiBwc2V1ZG9JZE1hdGNoZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+
PiYgaW5oZXJpdGVkRW50cmllcykKIHsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gZWxlbWVudEZv
cklkKGVycm9yU3RyaW5nLCBub2RlSWQpOwogICAgIGlmICghZWxlbWVudCkKQEAgLTgyMywxMSAr
ODI0LDExIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXMKIAogICAg
IC8vIFBzZXVkbyBlbGVtZW50cy4KICAgICBpZiAoIWluY2x1ZGVQc2V1ZG8gfHwgKmluY2x1ZGVQ
c2V1ZG8pIHsKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6
Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+PiBwc2V1ZG9FbGVtZW50cyA9IFR5cGVCdWlsZGVyOjpBcnJh
eTxUeXBlQnVpbGRlcjo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+OjpjcmVhdGUoKTsKKyAgICAgICAg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6UHNldWRvSWRNYXRjaGVzPj4gcHNldWRvRWxlbWVudHMgPSBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlBzZXVkb0lkTWF0
Y2hlcz46OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKFBzZXVkb0lkIHBzZXVkb0lkID0gRklSU1Rf
UFVCTElDX1BTRVVET0lEOyBwc2V1ZG9JZCA8IEFGVEVSX0xBU1RfSU5URVJOQUxfUFNFVURPSUQ7
IHBzZXVkb0lkID0gc3RhdGljX2Nhc3Q8UHNldWRvSWQ+KHBzZXVkb0lkICsgMSkpIHsKICAgICAg
ICAgICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+IG1hdGNoZWRSdWxlcyA9IHN0eWxl
UmVzb2x2ZXIucHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwgcHNldWRvSWQsIFN0
eWxlUmVzb2x2ZXI6OkFsbENTU1J1bGVzKTsKICAgICAgICAgICAgIGlmICghbWF0Y2hlZFJ1bGVz
LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpQ
c2V1ZG9JZE1hdGNoZXM+IG1hdGNoZXMgPSBUeXBlQnVpbGRlcjo6Q1NTOjpQc2V1ZG9JZE1hdGNo
ZXM6OmNyZWF0ZSgpCisgICAgICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6UHNldWRvSWRNYXRjaGVzPiBtYXRjaGVzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM6OmNyZWF0ZSgpCiAgICAgICAgICAgICAgICAgICAgIC5z
ZXRQc2V1ZG9JZChzdGF0aWNfY2FzdDxpbnQ+KHBzZXVkb0lkKSkKICAgICAgICAgICAgICAgICAg
ICAgLnNldE1hdGNoZXMoYnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChtYXRjaGVkUnVsZXMs
IHN0eWxlUmVzb2x2ZXIsIGVsZW1lbnQpKTsKICAgICAgICAgICAgICAgICBwc2V1ZG9FbGVtZW50
cy0+YWRkSXRlbShtYXRjaGVzLnJlbGVhc2UoKSk7CkBAIC04MzksMTIgKzg0MCwxMiBAQCB2b2lk
IEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5bGVzCiAKICAgICAvLyBJbmhlcml0ZWQg
c3R5bGVzLgogICAgIGlmICghaW5jbHVkZUluaGVyaXRlZCB8fCAqaW5jbHVkZUluaGVyaXRlZCkg
ewotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6Oklu
aGVyaXRlZFN0eWxlRW50cnk+PiBlbnRyaWVzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+OjpjcmVhdGUoKTsKKyAgICAgICAgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNT
Uzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4+IGVudHJpZXMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+
OjpjcmVhdGUoKTsKICAgICAgICAgRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQtPnBh
cmVudEVsZW1lbnQoKTsKICAgICAgICAgd2hpbGUgKHBhcmVudEVsZW1lbnQpIHsKICAgICAgICAg
ICAgIFN0eWxlUmVzb2x2ZXImIHBhcmVudFN0eWxlUmVzb2x2ZXIgPSBwYXJlbnRFbGVtZW50LT5k
b2N1bWVudCgpLmVuc3VyZVN0eWxlUmVzb2x2ZXIoKTsKICAgICAgICAgICAgIFZlY3RvcjxSZWZQ
dHI8U3R5bGVSdWxlQmFzZT4+IHBhcmVudE1hdGNoZWRSdWxlcyA9IHBhcmVudFN0eWxlUmVzb2x2
ZXIuc3R5bGVSdWxlc0ZvckVsZW1lbnQocGFyZW50RWxlbWVudCwgU3R5bGVSZXNvbHZlcjo6QWxs
Q1NTUnVsZXMpOwotICAgICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkluaGVyaXRl
ZFN0eWxlRW50cnk+IGVudHJ5ID0gVHlwZUJ1aWxkZXI6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRy
eTo6Y3JlYXRlKCkKKyAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6OkluaGVyaXRlZFN0eWxlRW50cnk+IGVudHJ5ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5OjpjcmVhdGUoKQogICAgICAgICAgICAgICAgIC5zZXRN
YXRjaGVkQ1NTUnVsZXMoYnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChwYXJlbnRNYXRjaGVk
UnVsZXMsIHN0eWxlUmVzb2x2ZXIsIHBhcmVudEVsZW1lbnQpKTsKICAgICAgICAgICAgIGlmIChw
YXJlbnRFbGVtZW50LT5zdHlsZSgpICYmIHBhcmVudEVsZW1lbnQtPnN0eWxlKCktPmxlbmd0aCgp
KSB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlKiBz
dHlsZVNoZWV0ID0gYXNJbnNwZWN0b3JTdHlsZVNoZWV0KHBhcmVudEVsZW1lbnQpOwpAQCAtODYw
LDcgKzg2MSw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXMKICAg
ICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldElubGluZVN0eWxlc0Zvck5vZGUo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTU3R5bGU+JiBpbmxpbmVTdHlsZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNT
U1N0eWxlPiYgYXR0cmlidXRlc1N0eWxlKQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0SW5s
aW5lU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgaW5saW5lU3R5bGUs
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgYXR0cmlidXRl
c1N0eWxlKQogewogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBlbGVtZW50Rm9ySWQoZXJyb3JTdHJp
bmcsIG5vZGVJZCk7CiAgICAgaWYgKCFlbGVtZW50KQpAQCAtODcxLDExICs4NzIsMTEgQEAgdm9p
ZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0SW5saW5lU3R5bGVzRgogICAgICAgICByZXR1cm47CiAK
ICAgICBpbmxpbmVTdHlsZSA9IHN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9yU3R5bGUoZWxlbWVu
dC0+c3R5bGUoKSk7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBhdHRy
aWJ1dGVzID0gYnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5bGUoZWxlbWVudCk7CisgICAgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IGF0dHJpYnV0ZXMgPSBi
dWlsZE9iamVjdEZvckF0dHJpYnV0ZXNTdHlsZShlbGVtZW50KTsKICAgICBhdHRyaWJ1dGVzU3R5
bGUgPSBhdHRyaWJ1dGVzID8gYXR0cmlidXRlcy5yZWxlYXNlKCkgOiAwOwogfQogCi12b2lkIElu
c3BlY3RvckNTU0FnZW50OjpnZXRDb21wdXRlZFN0eWxlRm9yTm9kZShFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGludCBub2RlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4mIHN0eWxlKQordm9pZCBJbnNwZWN0
b3JDU1NBZ2VudDo6Z2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+PiYgc3R5
bGUpCiB7CiAgICAgRWxlbWVudCogZWxlbWVudCA9IGVsZW1lbnRGb3JJZChlcnJvclN0cmluZywg
bm9kZUlkKTsKICAgICBpZiAoIWVsZW1lbnQpCkBAIC04ODYsOSArODg3LDkgQEAgdm9pZCBJbnNw
ZWN0b3JDU1NBZ2VudDo6Z2V0Q29tcHV0ZWRTdHlsZQogICAgIHN0eWxlID0gaW5zcGVjdG9yU3R5
bGUtPmJ1aWxkQXJyYXlGb3JDb21wdXRlZFN0eWxlKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NT
QWdlbnQ6OmdldEFsbFN0eWxlU2hlZXRzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPj4mIHN0eWxlSW5m
b3MpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRBbGxTdHlsZVNoZWV0cyhFcnJvclN0cmlu
ZyosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+PiYgc3R5bGVJbmZvcykKIHsKLSAgICBz
dHlsZUluZm9zID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxl
U2hlZXRIZWFkZXI+OjpjcmVhdGUoKTsKKyAgICBzdHlsZUluZm9zID0gSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0
SGVhZGVyPjo6Y3JlYXRlKCk7CiAgICAgVmVjdG9yPERvY3VtZW50Kj4gZG9jdW1lbnRzID0gbV9k
b21BZ2VudC0+ZG9jdW1lbnRzKCk7CiAgICAgZm9yIChWZWN0b3I8RG9jdW1lbnQqPjo6aXRlcmF0
b3IgaXQgPSBkb2N1bWVudHMuYmVnaW4oKTsgaXQgIT0gZG9jdW1lbnRzLmVuZCgpOyArK2l0KSB7
CiAgICAgICAgIFN0eWxlU2hlZXRMaXN0KiBsaXN0ID0gKCppdCktPnN0eWxlU2hlZXRzKCk7CkBA
IC05MDAsNyArOTAxLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0QWxsU3R5bGVTaGVl
dAogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3R5bGVTaGVldChFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEJvZHk+JiBzdHlsZVNoZWV0T2JqZWN0KQor
dm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3R5bGVTaGVldChFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0Qm9keT4mIHN0eWxlU2hlZXRPYmplY3QpCiB7CiAg
ICAgSW5zcGVjdG9yU3R5bGVTaGVldCogaW5zcGVjdG9yU3R5bGVTaGVldCA9IGFzc2VydFN0eWxl
U2hlZXRGb3JJZChlcnJvclN0cmluZywgc3R5bGVTaGVldElkKTsKICAgICBpZiAoIWluc3BlY3Rv
clN0eWxlU2hlZXQpCkBAIC05MjksNyArOTMwLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6
c2V0U3R5bGVTaGVldFRleAogICAgICplcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50Ojp0
b0Vycm9yU3RyaW5nKGVjKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVU
ZXh0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4mIGZ1bGxTdHlsZUlkLCBjb25zdCBTdHJpbmcmIHRleHQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NTdHlsZT4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxl
VGV4dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+JiBmdWxsU3R5bGVJZCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4mIHJlc3VsdCkKIHsKICAgICBJbnNwZWN0b3JDU1NJ
ZCBjb21wb3VuZElkKGZ1bGxTdHlsZUlkKTsKICAgICBBU1NFUlQoIWNvbXBvdW5kSWQuaXNFbXB0
eSgpKTsKQEAgLTk0NSw3ICs5NDYsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRTdHls
ZVRleHQoRXJyCiAgICAgKmVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JT
dHJpbmcoZWMpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRQcm9wZXJ0eVRleHQo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYg
ZnVsbFN0eWxlSWQsIGludCBwcm9wZXJ0eUluZGV4LCBjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wg
b3ZlcndyaXRlLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpCit2
b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRQcm9wZXJ0eVRleHQoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgZnVsbFN0eWxlSWQsIGludCBw
cm9wZXJ0eUluZGV4LCBjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wgb3ZlcndyaXRlLCBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4mIHJlc3VsdCkKIHsKICAgICBJ
bnNwZWN0b3JDU1NJZCBjb21wb3VuZElkKGZ1bGxTdHlsZUlkKTsKICAgICBBU1NFUlQoIWNvbXBv
dW5kSWQuaXNFbXB0eSgpKTsKQEAgLTk2MSw3ICs5NjIsNyBAQCB2b2lkIEluc3BlY3RvckNTU0Fn
ZW50OjpzZXRQcm9wZXJ0eVRleHQoCiAgICAgKmVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9NQWdl
bnQ6OnRvRXJyb3JTdHJpbmcoZWMpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50Ojp0b2dn
bGVQcm9wZXJ0eShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+JiBmdWxsU3R5bGVJZCwgaW50IHByb3BlcnR5SW5kZXgsIGJvb2wgZGlzYWJsZSwg
UmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KQordm9pZCBJbnNwZWN0
b3JDU1NBZ2VudDo6dG9nZ2xlUHJvcGVydHkoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgZnVsbFN0eWxlSWQsIGludCBwcm9wZXJ0eUluZGV4
LCBib29sIGRpc2FibGUsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0
eWxlPiYgcmVzdWx0KQogewogICAgIEluc3BlY3RvckNTU0lkIGNvbXBvdW5kSWQoZnVsbFN0eWxl
SWQpOwogICAgIEFTU0VSVCghY29tcG91bmRJZC5pc0VtcHR5KCkpOwpAQCAtOTc3LDcgKzk3OCw3
IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnRvZ2dsZVByb3BlcnR5KEUKICAgICAqZXJyb3JT
dHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhlYyk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFJ1bGVTZWxlY3RvcihFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBmdWxsUnVsZUlkLCBjb25zdCBTdHJp
bmcmIHNlbGVjdG9yLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCkK
K3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFJ1bGVTZWxlY3RvcihFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBmdWxsUnVsZUlkLCBjb25z
dCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NSdWxlPiYgcmVzdWx0KQogewogICAgIEluc3BlY3RvckNTU0lkIGNvbXBvdW5kSWQoZnVsbFJ1
bGVJZCk7CiAgICAgQVNTRVJUKCFjb21wb3VuZElkLmlzRW1wdHkoKSk7CkBAIC05OTQsNyArOTk1
LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UnVsZVNlbGVjdG9yKAogICAgICplcnJv
clN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKGVjKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JDU1NBZ2VudDo6YWRkUnVsZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNv
bnN0IGludCBjb250ZXh0Tm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OmFkZFJ1bGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBpbnQgY29udGV4dE5vZGVJ
ZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCkKIHsKICAgICBOb2RlKiBub2RlID0gbV9kb21BZ2VudC0+
YXNzZXJ0Tm9kZShlcnJvclN0cmluZywgY29udGV4dE5vZGVJZCk7CiAgICAgaWYgKCFub2RlKQpA
QCAtMTAyMCwxMiArMTAyMSwxMiBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjphZGRSdWxlKEVy
cm9yU3RyCiAgICAgcmVzdWx0ID0gaW5zcGVjdG9yU3R5bGVTaGVldC0+YnVpbGRPYmplY3RGb3JS
dWxlKHJ1bGUpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRTdXBwb3J0ZWRDU1NQ
cm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+PiYgY3NzUHJvcGVydGllcykKK3ZvaWQgSW5zcGVj
dG9yQ1NTQWdlbnQ6OmdldFN1cHBvcnRlZENTU1Byb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NQcm9wZXJ0eUluZm8+PiYgY3NzUHJvcGVydGllcykKIHsKLSAgICBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5SW5mbz4+IHByb3Bl
cnRpZXMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHlJ
bmZvPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHlJbmZvPj4gcHJvcGVydGll
cyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTUHJvcGVydHlJbmZvPjo6Y3JlYXRlKCk7CiAgICAgZm9yIChpbnQgaSA9IGZpcnN0
Q1NTUHJvcGVydHk7IGkgPD0gbGFzdENTU1Byb3BlcnR5OyArK2kpIHsKICAgICAgICAgQ1NTUHJv
cGVydHlJRCBpZCA9IGNvbnZlcnRUb0NTU1Byb3BlcnR5SUQoaSk7Ci0gICAgICAgIFJlZlB0cjxU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+IHByb3BlcnR5ID0gVHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTUHJvcGVydHlJbmZvOjpjcmVhdGUoKQorICAgICAgICBSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+IHByb3BlcnR5ID0gSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eUluZm86OmNyZWF0ZSgpCiAgICAgICAgICAg
ICAuc2V0TmFtZShnZXRQcm9wZXJ0eU5hbWVTdHJpbmcoaWQpKTsKIAogICAgICAgICBjb25zdCBT
dHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQgPSBzaG9ydGhhbmRGb3JQcm9wZXJ0eShp
ZCk7CkBAIC0xMDMzLDcgKzEwMzQsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRTdXBw
b3J0ZWRDU1NQCiAgICAgICAgICAgICBwcm9wZXJ0aWVzLT5hZGRJdGVtKHByb3BlcnR5LnJlbGVh
c2UoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IGxvbmdoYW5kcyA9IFR5cGVCdWlsZGVyOjpBcnJh
eTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFycmF5PFN0cmluZz4+IGxvbmdoYW5kcyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFy
cmF5PFN0cmluZz46OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwg
c2hvcnRoYW5kLmxlbmd0aCgpOyArK2opIHsKICAgICAgICAgICAgIENTU1Byb3BlcnR5SUQgbG9u
Z2hhbmRJRCA9IHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbal07CiAgICAgICAgICAgICBsb25naGFu
ZHMtPmFkZEl0ZW0oZ2V0UHJvcGVydHlOYW1lU3RyaW5nKGxvbmdoYW5kSUQpKTsKQEAgLTEwNjQs
NyArMTA2NSw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmZvcmNlUHNldWRvU3RhdGUKICAg
ICBlbGVtZW50LT5kb2N1bWVudCgpLnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFJlY2FsY1N0eWxlSW1t
ZWRpYXRlbHkpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXROYW1lZEZsb3dDb2xs
ZWN0aW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IGRvY3VtZW50Tm9kZUlkLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4+JiByZXN1
bHQpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgaW50IGRvY3VtZW50Tm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZs
b3c+PiYgcmVzdWx0KQogewogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZG9tQWdlbnQtPmFz
c2VydERvY3VtZW50KGVycm9yU3RyaW5nLCBkb2N1bWVudE5vZGVJZCk7CiAgICAgaWYgKCFkb2N1
bWVudCkKQEAgLTEwNzMsNyArMTA3NCw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE5h
bWVkRmxvd0NvbGwKICAgICBtX25hbWVkRmxvd0NvbGxlY3Rpb25zUmVxdWVzdGVkLmFkZChkb2N1
bWVudE5vZGVJZCk7CiAKICAgICBWZWN0b3I8UmVmUHRyPFdlYktpdE5hbWVkRmxvdz4+IG5hbWVk
Rmxvd3NWZWN0b3IgPSBkb2N1bWVudC0+bmFtZWRGbG93cygpLT5uYW1lZEZsb3dzKCk7Ci0gICAg
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+PiBu
YW1lZEZsb3dzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxv
dz46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4+IG5hbWVkRmxvd3MgPSBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6Ok5h
bWVkRmxvdz46OmNyZWF0ZSgpOwogCiAgICAgZm9yIChWZWN0b3I8UmVmUHRyPFdlYktpdE5hbWVk
Rmxvdz4+OjppdGVyYXRvciBpdCA9IG5hbWVkRmxvd3NWZWN0b3IuYmVnaW4oKTsgaXQgIT0gbmFt
ZWRGbG93c1ZlY3Rvci5lbmQoKTsgKytpdCkKICAgICAgICAgbmFtZWRGbG93cy0+YWRkSXRlbShi
dWlsZE9iamVjdEZvck5hbWVkRmxvdyhlcnJvclN0cmluZywgaXQtPmdldCgpLCBkb2N1bWVudE5v
ZGVJZCkpOwpAQCAtMTA4NiwxNiArMTA4NywxNiBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojpz
dGFydFNlbGVjdG9yUHJvCiAgICAgbV9jdXJyZW50U2VsZWN0b3JQcm9maWxlID0gYWRvcHRQdHIo
bmV3IFNlbGVjdG9yUHJvZmlsZSgpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c3Rv
cFNlbGVjdG9yUHJvZmlsZXIoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlPiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JDU1NB
Z2VudDo6c3RvcFNlbGVjdG9yUHJvZmlsZXIoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+JiByZXN1bHQp
CiB7CiAgICAgcmVzdWx0ID0gc3RvcFNlbGVjdG9yUHJvZmlsZXJJbXBsKGVycm9yU3RyaW5nLCB0
cnVlKTsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+
IEluc3BlY3RvckNTU0FnZW50OjpzdG9wU2VsZWN0b3JQcm9maWxlckltcGwoRXJyb3JTdHJpbmcq
LCBib29sIG5lZWRQcm9maWxlKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6OlNlbGVjdG9yUHJvZmlsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OnN0b3BTZWxlY3RvclByb2Zp
bGVySW1wbChFcnJvclN0cmluZyosIGJvb2wgbmVlZFByb2ZpbGUpCiB7CiAgICAgaWYgKCFtX2N1
cnJlbnRTZWxlY3RvclByb2ZpbGUpCiAgICAgICAgIHJldHVybiAwOwotICAgIFJlZlB0cjxUeXBl
QnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+IHJlc3VsdDsKKyAgICBSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+IHJlc3VsdDsKICAgICBpZiAo
bV9mcm9udGVuZERpc3BhdGNoZXIgJiYgbmVlZFByb2ZpbGUpCiAgICAgICAgIHJlc3VsdCA9IG1f
Y3VycmVudFNlbGVjdG9yUHJvZmlsZS0+dG9JbnNwZWN0b3JPYmplY3QoKTsKICAgICBtX2N1cnJl
bnRTZWxlY3RvclByb2ZpbGUuY2xlYXIoKTsKQEAgLTExMzYsNyArMTEzNyw3IEBAIEluc3BlY3Rv
clN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSogSW5zcGUKICAgICAgICAgICAgIHJldHVybiAwOwog
CiAgICAgICAgIFN0cmluZyBuZXdTdHlsZVNoZWV0SWQgPSBTdHJpbmc6Om51bWJlcihtX2xhc3RT
dHlsZVNoZWV0SWQrKyk7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5s
aW5lU3R5bGU+IGluc3BlY3RvclN0eWxlU2hlZXQgPSBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5s
aW5lU3R5bGU6OmNyZWF0ZShtX2RvbUFnZW50LT5wYWdlQWdlbnQoKSwgbmV3U3R5bGVTaGVldElk
LCBlbGVtZW50LCBUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpSZWd1bGFyLCB0
aGlzKTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZT4g
aW5zcGVjdG9yU3R5bGVTaGVldCA9IEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6
Y3JlYXRlKG1fZG9tQWdlbnQtPnBhZ2VBZ2VudCgpLCBuZXdTdHlsZVNoZWV0SWQsIGVsZW1lbnQs
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6UmVndWxhciwg
dGhpcyk7CiAgICAgICAgIG1faWRUb0luc3BlY3RvclN0eWxlU2hlZXQuc2V0KG5ld1N0eWxlU2hl
ZXRJZCwgaW5zcGVjdG9yU3R5bGVTaGVldCk7CiAgICAgICAgIG1fbm9kZVRvSW5zcGVjdG9yU3R5
bGVTaGVldC5zZXQoZWxlbWVudCwgaW5zcGVjdG9yU3R5bGVTaGVldCk7CiAgICAgICAgIHJldHVy
biBpbnNwZWN0b3JTdHlsZVNoZWV0LmdldCgpOwpAQCAtMTE2OCw3ICsxMTY5LDcgQEAgaW50IElu
c3BlY3RvckNTU0FnZW50Ojpkb2N1bWVudE5vZGVXaXRoUgogICAgIHJldHVybiBkb2N1bWVudE5v
ZGVJZDsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Y29sbGVjdFN0eWxlU2hlZXRzKENT
U1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQsIFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPiogcmVzdWx0KQordm9pZCBJbnNwZWN0b3JDU1NBZ2Vu
dDo6Y29sbGVjdFN0eWxlU2hlZXRzKENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQsIEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5
bGVTaGVldEhlYWRlcj4qIHJlc3VsdCkKIHsKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBpbnNw
ZWN0b3JTdHlsZVNoZWV0ID0gYmluZFN0eWxlU2hlZXQoc3RhdGljX2Nhc3Q8Q1NTU3R5bGVTaGVl
dCo+KHN0eWxlU2hlZXQpKTsKICAgICByZXN1bHQtPmFkZEl0ZW0oaW5zcGVjdG9yU3R5bGVTaGVl
dC0+YnVpbGRPYmplY3RGb3JTdHlsZVNoZWV0SW5mbygpKTsKQEAgLTEyNDEsNyArMTI0Miw3IEBA
IEluc3BlY3RvclN0eWxlU2hlZXQqIEluc3BlY3RvckNTU0FnZW50OjoKICAgICAgICAgcmV0dXJu
IDA7CiAKICAgICBTdHJpbmcgaWQgPSBTdHJpbmc6Om51bWJlcihtX2xhc3RTdHlsZVNoZWV0SWQr
Kyk7Ci0gICAgaW5zcGVjdG9yU3R5bGVTaGVldCA9IEluc3BlY3RvclN0eWxlU2hlZXQ6OmNyZWF0
ZShtX2RvbUFnZW50LT5wYWdlQWdlbnQoKSwgaWQsIGNzc1N0eWxlU2hlZXQsIFR5cGVCdWlsZGVy
OjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46Okluc3BlY3RvciwgSW5zcGVjdG9yRE9NQWdlbnQ6OmRv
Y3VtZW50VVJMU3RyaW5nKGRvY3VtZW50KSwgdGhpcyk7CisgICAgaW5zcGVjdG9yU3R5bGVTaGVl
dCA9IEluc3BlY3RvclN0eWxlU2hlZXQ6OmNyZWF0ZShtX2RvbUFnZW50LT5wYWdlQWdlbnQoKSwg
aWQsIGNzc1N0eWxlU2hlZXQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVl
dE9yaWdpbjo6SW5zcGVjdG9yLCBJbnNwZWN0b3JET01BZ2VudDo6ZG9jdW1lbnRVUkxTdHJpbmco
ZG9jdW1lbnQpLCB0aGlzKTsKICAgICBtX2lkVG9JbnNwZWN0b3JTdHlsZVNoZWV0LnNldChpZCwg
aW5zcGVjdG9yU3R5bGVTaGVldCk7CiAgICAgbV9jc3NTdHlsZVNoZWV0VG9JbnNwZWN0b3JTdHls
ZVNoZWV0LnNldChjc3NTdHlsZVNoZWV0LCBpbnNwZWN0b3JTdHlsZVNoZWV0KTsKICAgICBtX2Rv
Y3VtZW50VG9JbnNwZWN0b3JTdHlsZVNoZWV0LnNldChkb2N1bWVudCwgaW5zcGVjdG9yU3R5bGVT
aGVldCk7CkBAIC0xMjU4LDIyICsxMjU5LDIyIEBAIEluc3BlY3RvclN0eWxlU2hlZXQqIEluc3Bl
Y3RvckNTU0FnZW50OjoKICAgICByZXR1cm4gaXQtPnZhbHVlLmdldCgpOwogfQogCi1UeXBlQnVp
bGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpFbnVtIEluc3BlY3RvckNTU0FnZW50OjpkZXRl
Y3RPcmlnaW4oQ1NTU3R5bGVTaGVldCogcGFnZVN0eWxlU2hlZXQsIERvY3VtZW50KiBvd25lckRv
Y3VtZW50KQorSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpF
bnVtIEluc3BlY3RvckNTU0FnZW50OjpkZXRlY3RPcmlnaW4oQ1NTU3R5bGVTaGVldCogcGFnZVN0
eWxlU2hlZXQsIERvY3VtZW50KiBvd25lckRvY3VtZW50KQogewotICAgIFR5cGVCdWlsZGVyOjpD
U1M6OlN0eWxlU2hlZXRPcmlnaW46OkVudW0gb3JpZ2luID0gVHlwZUJ1aWxkZXI6OkNTUzo6U3R5
bGVTaGVldE9yaWdpbjo6UmVndWxhcjsKKyAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
OlN0eWxlU2hlZXRPcmlnaW46OkVudW0gb3JpZ2luID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpSZWd1bGFyOwogICAgIGlmIChwYWdlU3R5bGVTaGVldCAm
JiAhcGFnZVN0eWxlU2hlZXQtPm93bmVyTm9kZSgpICYmIHBhZ2VTdHlsZVNoZWV0LT5ocmVmKCku
aXNFbXB0eSgpKQotICAgICAgICBvcmlnaW4gPSBUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0
T3JpZ2luOjpVc2VyQWdlbnQ7CisgICAgICAgIG9yaWdpbiA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6VXNlckFnZW50OwogICAgIGVsc2UgaWYgKHBhZ2VT
dHlsZVNoZWV0ICYmIHBhZ2VTdHlsZVNoZWV0LT5vd25lck5vZGUoKSAmJiBwYWdlU3R5bGVTaGVl
dC0+b3duZXJOb2RlKCktPm5vZGVOYW1lKCkgPT0gIiNkb2N1bWVudCIpCi0gICAgICAgIG9yaWdp
biA9IFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlVzZXI7CisgICAgICAgIG9y
aWdpbiA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6VXNl
cjsKICAgICBlbHNlIHsKICAgICAgICAgSW5zcGVjdG9yU3R5bGVTaGVldCogdmlhSW5zcGVjdG9y
U3R5bGVTaGVldEZvck93bmVyID0gdmlhSW5zcGVjdG9yU3R5bGVTaGVldChvd25lckRvY3VtZW50
LCBmYWxzZSk7CiAgICAgICAgIGlmICh2aWFJbnNwZWN0b3JTdHlsZVNoZWV0Rm9yT3duZXIgJiYg
cGFnZVN0eWxlU2hlZXQgPT0gdmlhSW5zcGVjdG9yU3R5bGVTaGVldEZvck93bmVyLT5wYWdlU3R5
bGVTaGVldCgpKQotICAgICAgICAgICAgb3JpZ2luID0gVHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVT
aGVldE9yaWdpbjo6SW5zcGVjdG9yOworICAgICAgICAgICAgb3JpZ2luID0gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpJbnNwZWN0b3I7CiAgICAgfQogICAg
IHJldHVybiBvcmlnaW47CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVs
ZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZShTdHlsZVJ1bGUqIHN0eWxl
UnVsZSwgU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKK1Bhc3NSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmpl
Y3RGb3JSdWxlKFN0eWxlUnVsZSogc3R5bGVSdWxlLCBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29s
dmVyKQogewogICAgIGlmICghc3R5bGVSdWxlKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEyODcs
NyArMTI4OCw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gSW4KICAg
ICByZXR1cm4gaW5zcGVjdG9yU3R5bGVTaGVldCA/IGluc3BlY3RvclN0eWxlU2hlZXQtPmJ1aWxk
T2JqZWN0Rm9yUnVsZShjc3NvbVdyYXBwZXIpIDogMDsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NSdWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JSdWxl
KENTU1N0eWxlUnVsZSogcnVsZSkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NSdWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JSdWxlKENTU1N0
eWxlUnVsZSogcnVsZSkKIHsKICAgICBpZiAoIXJ1bGUpCiAgICAgICAgIHJldHVybiAwOwpAQCAt
MTI5NywxNSArMTI5OCwxNSBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+
IEluCiAgICAgcmV0dXJuIGluc3BlY3RvclN0eWxlU2hlZXQgPyBpbnNwZWN0b3JTdHlsZVNoZWV0
LT5idWlsZE9iamVjdEZvclJ1bGUocnVsZSkgOiAwOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPj4gSW5zcGVjdG9yQ1NTQWdlbnQ6
OmJ1aWxkQXJyYXlGb3JSdWxlTGlzdChDU1NSdWxlTGlzdCogcnVsZUxpc3QpCitQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTUnVsZT4+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NT
UnVsZUxpc3QqIHJ1bGVMaXN0KQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NSdWxlPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4+
IHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTUnVsZT46OmNyZWF0ZSgpOwogICAgIGlmICghcnVsZUxpc3QpCiAgICAg
ICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwg
c2l6ZSA9IHJ1bGVMaXN0LT5sZW5ndGgoKTsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBDU1NT
dHlsZVJ1bGUqIHJ1bGUgPSBhc0NTU1N0eWxlUnVsZShydWxlTGlzdC0+aXRlbShpKSk7Ci0gICAg
ICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiBydWxlT2JqZWN0ID0gYnVpbGRP
YmplY3RGb3JSdWxlKHJ1bGUpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NSdWxlPiBydWxlT2JqZWN0ID0gYnVpbGRPYmplY3RGb3JSdWxlKHJ1bGUpOwog
ICAgICAgICBpZiAoIXJ1bGVPYmplY3QpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
cmVzdWx0LT5hZGRJdGVtKHJ1bGVPYmplY3QpOwpAQCAtMTMxMywxOCArMTMxNCwxOCBAQCBQYXNz
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlCiAgICAgcmV0dXJuIHJlc3VsdC5y
ZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVy
OjpDU1M6OlJ1bGVNYXRjaD4+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yTWF0Y2hl
ZFJ1bGVMaXN0KGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBtYXRjaGVkUnVs
ZXMsIFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIEVsZW1lbnQqIGVsZW1lbnQpCitQYXNz
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6UnVsZU1hdGNoPj4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JNYXRj
aGVkUnVsZUxpc3QoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIG1hdGNoZWRS
dWxlcywgU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgRWxlbWVudCogZWxlbWVudCkKIHsK
LSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRj
aD4+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0
Y2g+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g+PiByZXN1bHQgPSBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVN
YXRjaD46OmNyZWF0ZSgpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1hdGNoZWRS
dWxlcy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoIW1hdGNoZWRSdWxlc1tpXS0+aXNTdHls
ZVJ1bGUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBTdHlsZVJ1bGUqIG1hdGNo
ZWRTdHlsZVJ1bGUgPSBzdGF0aWNfY2FzdDxTdHlsZVJ1bGUqPihtYXRjaGVkUnVsZXNbaV0uZ2V0
KCkpOwotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gcnVsZU9iamVj
dCA9IGJ1aWxkT2JqZWN0Rm9yUnVsZShtYXRjaGVkU3R5bGVSdWxlLCBzdHlsZVJlc29sdmVyKTsK
KyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gcnVs
ZU9iamVjdCA9IGJ1aWxkT2JqZWN0Rm9yUnVsZShtYXRjaGVkU3R5bGVSdWxlLCBzdHlsZVJlc29s
dmVyKTsKICAgICAgICAgaWYgKCFydWxlT2JqZWN0KQogICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4gbWF0Y2hpbmdTZWxlY3RvcnMg
PSBUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CisgICAgICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+PiBtYXRjaGluZ1NlbGVjdG9ycyA9IEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PGludD46OmNyZWF0ZSgpOwogICAgICAgICBjb25zdCBD
U1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCA9IG1hdGNoZWRTdHlsZVJ1bGUtPnNlbGVjdG9y
TGlzdCgpOwogICAgICAgICBsb25nIGluZGV4ID0gMDsKICAgICAgICAgZm9yIChjb25zdCBDU1NT
ZWxlY3Rvciogc2VsZWN0b3IgPSBzZWxlY3Rvckxpc3QuZmlyc3QoKTsgc2VsZWN0b3I7IHNlbGVj
dG9yID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHNlbGVjdG9yKSkgewpAQCAtMTMzMyw3ICsxMzM0
LDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZQogICAgICAgICAg
ICAgICAgIG1hdGNoaW5nU2VsZWN0b3JzLT5hZGRJdGVtKGluZGV4KTsKICAgICAgICAgICAgICsr
aW5kZXg7CiAgICAgICAgIH0KLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVN
YXRjaD4gbWF0Y2ggPSBUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g6OmNyZWF0ZSgpCisgICAg
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRjaD4gbWF0Y2gg
PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRjaDo6Y3JlYXRlKCkKICAgICAg
ICAgICAgIC5zZXRSdWxlKHJ1bGVPYmplY3QpCiAgICAgICAgICAgICAuc2V0TWF0Y2hpbmdTZWxl
Y3RvcnMobWF0Y2hpbmdTZWxlY3RvcnMpOwogICAgICAgICByZXN1bHQtPmFkZEl0ZW0obWF0Y2gp
OwpAQCAtMTM0Miw3ICsxMzQzLDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlw
ZUJ1aWxkZQogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFR5
cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RG
b3JBdHRyaWJ1dGVzU3R5bGUoRWxlbWVudCogZWxlbWVudCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2Jq
ZWN0Rm9yQXR0cmlidXRlc1N0eWxlKEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgaWYgKCFlbGVt
ZW50LT5pc1N0eWxlZEVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMzU5LDIyICsx
MzYwLDIyIEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IEkKICAgICBy
ZXR1cm4gaW5zcGVjdG9yU3R5bGUtPmJ1aWxkT2JqZWN0Rm9yU3R5bGUoKTsKIH0KIAotUGFzc1Jl
ZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uPj4gSW5zcGVj
dG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JSZWdpb25zKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgUGFzc1JlZlB0cjxOb2RlTGlzdD4gcmVnaW9uTGlzdCwgaW50IGRvY3VtZW50Tm9kZUlkKQor
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6OlJlZ2lvbj4+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yUmVn
aW9ucyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IHJlZ2lv
bkxpc3QsIGludCBkb2N1bWVudE5vZGVJZCkKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbj4+IHJlZ2lvbnMgPSBUeXBlQnVpbGRlcjo6QXJy
YXk8VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UmVn
aW9uPj4gcmVnaW9ucyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uPjo6Y3JlYXRlKCk7CiAKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgcmVnaW9uTGlzdC0+bGVuZ3RoKCk7ICsraSkgewotICAgICAgICBUeXBlQnVp
bGRlcjo6Q1NTOjpSZWdpb246OlJlZ2lvbk92ZXJzZXQ6OkVudW0gcmVnaW9uT3ZlcnNldDsKKyAg
ICAgICAgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb246OlJlZ2lvbk92ZXJzZXQ6
OkVudW0gcmVnaW9uT3ZlcnNldDsKIAogICAgICAgICBzd2l0Y2ggKHRvRWxlbWVudChyZWdpb25M
aXN0LT5pdGVtKGkpKS0+cmVuZGVyUmVnaW9uKCktPnJlZ2lvbk92ZXJzZXRTdGF0ZSgpKSB7CiAg
ICAgICAgIGNhc2UgUmVnaW9uRml0OgotICAgICAgICAgICAgcmVnaW9uT3ZlcnNldCA9IFR5cGVC
dWlsZGVyOjpDU1M6OlJlZ2lvbjo6UmVnaW9uT3ZlcnNldDo6Rml0OworICAgICAgICAgICAgcmVn
aW9uT3ZlcnNldCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uOjpSZWdpb25P
dmVyc2V0OjpGaXQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBSZWdpb25FbXB0
eToKLSAgICAgICAgICAgIHJlZ2lvbk92ZXJzZXQgPSBUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb246
OlJlZ2lvbk92ZXJzZXQ6OkVtcHR5OworICAgICAgICAgICAgcmVnaW9uT3ZlcnNldCA9IEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uOjpSZWdpb25PdmVyc2V0OjpFbXB0eTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFJlZ2lvbk92ZXJzZXQ6Ci0gICAgICAgICAg
ICByZWdpb25PdmVyc2V0ID0gVHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uOjpSZWdpb25PdmVyc2V0
OjpPdmVyc2V0OworICAgICAgICAgICAgcmVnaW9uT3ZlcnNldCA9IEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNTUzo6UmVnaW9uOjpSZWdpb25PdmVyc2V0OjpPdmVyc2V0OwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgUmVnaW9uVW5kZWZpbmVkOgogICAgICAgICAgICAgY29udGlu
dWU7CkBAIC0xMzgzLDcgKzEzODQsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxU
eXBlQnVpbGRlCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb24+IHJlZ2lvbiA9IFR5cGVCdWlsZGVyOjpDU1M6
OlJlZ2lvbjo6Y3JlYXRlKCkKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNTUzo6UmVnaW9uPiByZWdpb24gPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lv
bjo6Y3JlYXRlKCkKICAgICAgICAgICAgIC5zZXRSZWdpb25PdmVyc2V0KHJlZ2lvbk92ZXJzZXQp
CiAgICAgICAgICAgICAvLyBkb2N1bWVudE5vZGVJZCB3YXMgcHJldmlvdXNseSBhc3NlcnRlZAog
ICAgICAgICAgICAgLnNldE5vZGVJZChtX2RvbUFnZW50LT5wdXNoTm9kZVRvRnJvbnRlbmQoZXJy
b3JTdHJpbmcsIGRvY3VtZW50Tm9kZUlkLCByZWdpb25MaXN0LT5pdGVtKGkpKSk7CkBAIC0xMzk0
LDE3ICsxMzk1LDE3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGUK
ICAgICByZXR1cm4gcmVnaW9ucy5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkNTUzo6TmFtZWRGbG93PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JOYW1l
ZEZsb3coRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBXZWJLaXROYW1lZEZsb3cqIHdlYmtpdE5h
bWVkRmxvdywgaW50IGRvY3VtZW50Tm9kZUlkKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9y
TmFtZWRGbG93KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgV2ViS2l0TmFtZWRGbG93KiB3ZWJr
aXROYW1lZEZsb3csIGludCBkb2N1bWVudE5vZGVJZCkKIHsKICAgICBSZWZQdHI8Tm9kZUxpc3Q+
IGNvbnRlbnRMaXN0ID0gd2Via2l0TmFtZWRGbG93LT5nZXRDb250ZW50KCk7Ci0gICAgUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+PiBjb250ZW50ID0gVHlwZUJ1aWxkZXI6OkFycmF5PGlu
dD46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxp
bnQ+PiBjb250ZW50ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pjo6Y3JlYXRl
KCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29udGVudExpc3QtPmxlbmd0aCgp
OyArK2kpIHsKICAgICAgICAgLy8gZG9jdW1lbnROb2RlSWQgd2FzIHByZXZpb3VzbHkgYXNzZXJ0
ZWQKICAgICAgICAgY29udGVudC0+YWRkSXRlbShtX2RvbUFnZW50LT5wdXNoTm9kZVRvRnJvbnRl
bmQoZXJyb3JTdHJpbmcsIGRvY3VtZW50Tm9kZUlkLCBjb250ZW50TGlzdC0+aXRlbShpKSkpOwog
ICAgIH0KIAotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+IG5hbWVkRmxv
dyA9IFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdzo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+IG5hbWVkRmxvdyA9IEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93OjpjcmVhdGUoKQogICAgICAgICAuc2V0RG9j
dW1lbnROb2RlSWQoZG9jdW1lbnROb2RlSWQpCiAgICAgICAgIC5zZXROYW1lKHdlYmtpdE5hbWVk
Rmxvdy0+bmFtZSgpLnN0cmluZygpKQogICAgICAgICAuc2V0T3ZlcnNldCh3ZWJraXROYW1lZEZs
b3ctPm92ZXJzZXQoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
U1NBZ2VudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5oCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTIgKzI3LDEyIEBA
CiAKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBv
bGljeS5oIgotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50Lmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yU3R5bGVTaGVldC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZh
bHVlcy5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5Q29udGV4dC5oIgotCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNjQsNyArNjQsNyBAQCBjbGFzcyBDaGFuZ2VS
ZWdpb25PdmVyc2V0VGFzazsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCiBjbGFzcyBJbnNwZWN0
b3JDU1NBZ2VudAotICAgIDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudAorICAgIDogcHVibGlj
IEluc3BlY3RvckFnZW50QmFzZQogICAgICwgcHVibGljIEluc3BlY3RvckRPTUFnZW50OjpET01M
aXN0ZW5lcgogICAgICwgcHVibGljIEluc3BlY3RvckNTU0JhY2tlbmREaXNwYXRjaGVySGFuZGxl
cgogICAgICwgcHVibGljIEluc3BlY3RvclN0eWxlU2hlZXQ6Okxpc3RlbmVyIHsKQEAgLTk2LDcg
Kzk2LDcgQEAgcHVibGljOgogICAgIH5JbnNwZWN0b3JDU1NBZ2VudCgpOwogCiAgICAgYm9vbCBm
b3JjZVBzZXVkb1N0YXRlKEVsZW1lbnQqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSk7Ci0gICAg
dmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc2NhcmRBZ2VudCgpOwogICAgIHZp
cnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKQEAgLTExMiwyNiArMTEyLDI2IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRpZFJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoRG9jdW1l
bnQqLCBXZWJLaXROYW1lZEZsb3cqLCBOb2RlKiBjb250ZW50RWxlbWVudCwgTm9kZSogbmV4dENv
bnRlbnRFbGVtZW50ID0gbnVsbHB0cik7CiAgICAgdm9pZCBkaWRVbnJlZ2lzdGVyTmFtZWRGbG93
Q29udGVudEVsZW1lbnQoRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cqLCBOb2RlKiBjb250ZW50
RWxlbWVudCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJy
b3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+Jik7Ci0gICAgdmlydHVhbCB2b2lk
IGdldElubGluZVN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiBpbmxpbmVTdHlsZSwgUmVmUHRyPFR5cGVCdWls
ZGVyOjpDU1M6OkNTU1N0eWxlPiYgYXR0cmlidXRlcyk7Ci0gICAgdmlydHVhbCB2b2lkIGdldE1h
dGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgYm9vbCog
aW5jbHVkZVBzZXVkbywgY29uc3QgYm9vbCogaW5jbHVkZUluaGVyaXRlZCwgUmVmUHRyPFR5cGVC
dWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g+PiYgbWF0Y2hlZENTU1J1
bGVzLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlBzZXVkb0lk
TWF0Y2hlcz4+JiBwc2V1ZG9JZE1hdGNoZXMsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlw
ZUJ1aWxkZXI6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4+JiBpbmhlcml0ZWRFbnRyaWVzKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0QWxsU3R5bGVTaGVldHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+
PiYgc3R5bGVTaGVldEluZm9zKTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U3R5bGVTaGVldChFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTU3R5bGVTaGVldEJvZHk+JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCBnZXRD
b21wdXRlZFN0eWxlRm9yTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNT
U0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+Jik7CisgICAgdmlydHVhbCB2b2lkIGdldElubGluZVN0
eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4mIGlubGluZVN0eWxlLCBSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4mIGF0dHJpYnV0ZXMpOworICAgIHZpcnR1YWwg
dm9pZCBnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNv
bnN0IGJvb2wqIGluY2x1ZGVQc2V1ZG8sIGNvbnN0IGJvb2wqIGluY2x1ZGVJbmhlcml0ZWQsIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDU1M6OlJ1bGVNYXRjaD4+JiBtYXRjaGVkQ1NTUnVsZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlBzZXVkb0lkTWF0
Y2hlcz4+JiBwc2V1ZG9JZE1hdGNoZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpB
cnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+PiYg
aW5oZXJpdGVkRW50cmllcyk7CisgICAgdmlydHVhbCB2b2lkIGdldEFsbFN0eWxlU2hlZXRzKEVy
cm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4+JiBzdHlsZVNoZWV0SW5m
b3MpOworICAgIHZpcnR1YWwgdm9pZCBnZXRTdHlsZVNoZWV0KEVycm9yU3RyaW5nKiwgY29uc3Qg
U3RyaW5nJiBzdHlsZVNoZWV0SWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
OkNTU1N0eWxlU2hlZXRCb2R5PiYgcmVzdWx0KTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0U3R5bGVT
aGVldFRleHQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgU3RyaW5n
KiByZXN1bHQpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBjb25zdCBTdHJpbmcmIHRleHQpOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRTdHlsZVRleHQoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiYgc3R5bGVJZCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9w
ZXJ0eVRleHQoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgc3R5
bGVJZCwgaW50IHByb3BlcnR5SW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBvdmVyd3Jp
dGUsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4mIHJlc3VsdCk7Ci0gICAgdmly
dHVhbCB2b2lkIHRvZ2dsZVByb3BlcnR5KEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4mIHN0eWxlSWQsIGludCBwcm9wZXJ0eUluZGV4LCBib29sIGRpc2FibGUsIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4mIHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFJ1bGVTZWxlY3RvcihFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+JiBydWxlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIFJlZlB0cjxUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkUnVsZShFcnJv
clN0cmluZyosIGludCBjb250ZXh0Tm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2b2lk
IGdldFN1cHBvcnRlZENTU1Byb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5SW5mbz4+JiByZXN1bHQpOwot
ICAgIHZpcnR1YWwgdm9pZCBmb3JjZVBzZXVkb1N0YXRlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJ
ZCwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgZm9yY2VkUHNldWRvQ2xhc3Nlcyk7Ci0g
ICAgdmlydHVhbCB2b2lkIGdldE5hbWVkRmxvd0NvbGxlY3Rpb24oRXJyb3JTdHJpbmcqLCBpbnQg
ZG9jdW1lbnROb2RlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNT
Uzo6TmFtZWRGbG93Pj4mIHJlc3VsdCk7CisgICAgdmlydHVhbCB2b2lkIHNldFN0eWxlVGV4dChF
cnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIHN0
eWxlSWQsIGNvbnN0IFN0cmluZyYgdGV4dCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9wZXJ0eVRl
eHQoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
JiBzdHlsZUlkLCBpbnQgcHJvcGVydHlJbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIG92
ZXJ3cml0ZSwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiBy
ZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVQcm9wZXJ0eShFcnJvclN0cmluZyosIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIHN0eWxlSWQsIGludCBwcm9w
ZXJ0eUluZGV4LCBib29sIGRpc2FibGUsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6OkNTU1N0eWxlPiYgcmVzdWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UnVsZVNlbGVjdG9y
KEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYg
cnVsZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkUnVsZShF
cnJvclN0cmluZyosIGludCBjb250ZXh0Tm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZ2V0U3VwcG9ydGVkQ1NTUHJvcGVydGllcyhFcnJvclN0cmluZyosIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDU1M6OkNTU1Byb3BlcnR5SW5mbz4+JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCBmb3Jj
ZVBzZXVkb1N0YXRlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiBmb3JjZWRQc2V1ZG9DbGFzc2VzKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZ2V0TmFtZWRGbG93Q29sbGVjdGlvbihFcnJvclN0cmluZyosIGludCBkb2N1bWVudE5v
ZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93Pj4mIHJlc3VsdCk7CiAKICAgICB2aXJ0dWFsIHZvaWQg
c3RhcnRTZWxlY3RvclByb2ZpbGVyKEVycm9yU3RyaW5nKik7Ci0gICAgdmlydHVhbCB2b2lkIHN0
b3BTZWxlY3RvclByb2ZpbGVyKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6
OlNlbGVjdG9yUHJvZmlsZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFNlbGVjdG9yUHJvZmls
ZXIoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxl
Y3RvclByb2ZpbGU+Jik7CiAKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVj
dG9yUHJvZmlsZT4gc3RvcFNlbGVjdG9yUHJvZmlsZXJJbXBsKEVycm9yU3RyaW5nKiwgYm9vbCBu
ZWVkUHJvZmlsZSk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
OlNlbGVjdG9yUHJvZmlsZT4gc3RvcFNlbGVjdG9yUHJvZmlsZXJJbXBsKEVycm9yU3RyaW5nKiwg
Ym9vbCBuZWVkUHJvZmlsZSk7CiAgICAgdm9pZCB3aWxsTWF0Y2hSdWxlKFN0eWxlUnVsZSosIElu
c3BlY3RvckNTU09NV3JhcHBlcnMmLCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uJik7CiAg
ICAgdm9pZCBkaWRNYXRjaFJ1bGUoYm9vbCk7CiAgICAgdm9pZCB3aWxsUHJvY2Vzc1J1bGUoU3R5
bGVSdWxlKiwgU3R5bGVSZXNvbHZlciYpOwpAQCAtMTU4LDIwICsxNTgsMjAgQEAgcHJpdmF0ZToK
ICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUqIGFzSW5zcGVjdG9yU3R5bGVT
aGVldChFbGVtZW50KiBlbGVtZW50KTsKICAgICBFbGVtZW50KiBlbGVtZW50Rm9ySWQoRXJyb3JT
dHJpbmcqLCBpbnQgbm9kZUlkKTsKICAgICBpbnQgZG9jdW1lbnROb2RlV2l0aFJlcXVlc3RlZEZs
b3dzSWQoRG9jdW1lbnQqKTsKLSAgICB2b2lkIGNvbGxlY3RTdHlsZVNoZWV0cyhDU1NTdHlsZVNo
ZWV0KiwgVHlwZUJ1aWxkZXI6OkFycmF5PFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0
eWxlU2hlZXRIZWFkZXI+Kik7CisgICAgdm9pZCBjb2xsZWN0U3R5bGVTaGVldHMoQ1NTU3R5bGVT
aGVldCosIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4qKTsKIAogICAgIEluc3BlY3RvclN0eWxlU2hl
ZXQqIGJpbmRTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqKTsKICAgICBJbnNwZWN0b3JTdHlsZVNo
ZWV0KiB2aWFJbnNwZWN0b3JTdHlsZVNoZWV0KERvY3VtZW50KiwgYm9vbCBjcmVhdGVJZkFic2Vu
dCk7CiAgICAgSW5zcGVjdG9yU3R5bGVTaGVldCogYXNzZXJ0U3R5bGVTaGVldEZvcklkKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJik7Ci0gICAgVHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVl
dE9yaWdpbjo6RW51bSBkZXRlY3RPcmlnaW4oQ1NTU3R5bGVTaGVldCogcGFnZVN0eWxlU2hlZXQs
IERvY3VtZW50KiBvd25lckRvY3VtZW50KTsKKyAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6OlN0eWxlU2hlZXRPcmlnaW46OkVudW0gZGV0ZWN0T3JpZ2luKENTU1N0eWxlU2hlZXQqIHBh
Z2VTdHlsZVNoZWV0LCBEb2N1bWVudCogb3duZXJEb2N1bWVudCk7CiAKLSAgICBQYXNzUmVmUHRy
PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9yUnVsZShTdHlsZVJ1bGUq
LCBTdHlsZVJlc29sdmVyJik7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NS
dWxlPiBidWlsZE9iamVjdEZvclJ1bGUoQ1NTU3R5bGVSdWxlKik7Ci0gICAgUGFzc1JlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4+IGJ1aWxkQXJyYXlG
b3JSdWxlTGlzdChDU1NSdWxlTGlzdCopOwotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRjaD4+IGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVs
ZUxpc3QoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mLCBTdHlsZVJlc29sdmVy
JiwgRWxlbWVudCopOwotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+
IGJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRlc1N0eWxlKEVsZW1lbnQqKTsKLSAgICBQYXNzUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb24+PiBidWlsZEFycmF5
Rm9yUmVnaW9ucyhFcnJvclN0cmluZyosIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+LCBpbnQgZG9jdW1l
bnROb2RlSWQpOwotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93PiBi
dWlsZE9iamVjdEZvck5hbWVkRmxvdyhFcnJvclN0cmluZyosIFdlYktpdE5hbWVkRmxvdyosIGlu
dCBkb2N1bWVudE5vZGVJZCk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9yUnVsZShTdHlsZVJ1bGUqLCBTdHlsZVJlc29s
dmVyJik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1
bGU+IGJ1aWxkT2JqZWN0Rm9yUnVsZShDU1NTdHlsZVJ1bGUqKTsKKyAgICBQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTUnVsZT4+IGJ1aWxkQXJyYXlGb3JSdWxlTGlzdChDU1NSdWxlTGlzdCopOworICAgIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q1NTOjpSdWxlTWF0Y2g+PiBidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0IFZl
Y3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiwgU3R5bGVSZXNvbHZlciYsIEVsZW1lbnQqKTsK
KyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IGJ1
aWxkT2JqZWN0Rm9yQXR0cmlidXRlc1N0eWxlKEVsZW1lbnQqKTsKKyAgICBQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6
UmVnaW9uPj4gYnVpbGRBcnJheUZvclJlZ2lvbnMoRXJyb3JTdHJpbmcqLCBQYXNzUmVmUHRyPE5v
ZGVMaXN0PiwgaW50IGRvY3VtZW50Tm9kZUlkKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93PiBidWlsZE9iamVjdEZvck5hbWVkRmxvdyhFcnJv
clN0cmluZyosIFdlYktpdE5hbWVkRmxvdyosIGludCBkb2N1bWVudE5vZGVJZCk7CiAKICAgICAv
LyBJbnNwZWN0b3JET01BZ2VudDo6RE9NTGlzdGVuZXIgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVtb3ZlRG9jdW1lbnQoRG9jdW1lbnQqKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAkocmV2aXNpb24g
MTYwNDA0KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsMjIgKzQ3LDI0IEBACiAjaW5jbHVkZSAiTWFpbkZy
YW1lLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVk
ZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZXIuaCIKICNpbmNsdWRl
ICJTY3JpcHRTdGF0ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgogCi11
c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6QXJyYXk7Ci11c2luZyBXZWJDb3JlOjpUeXBlQnVp
bGRlcjo6Q2FudmFzOjpSZXNvdXJjZUlkOwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkNh
bnZhczo6UmVzb3VyY2VJbmZvOwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6
UmVzb3VyY2VTdGF0ZTsKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNl
TG9nOwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZDsKLXVz
aW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpGcmFtZUlkOwordXNpbmcgSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk7Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
YW52YXM6OlJlc291cmNlSWQ7Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6
OlJlc291cmNlSW5mbzsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVz
b3VyY2VTdGF0ZTsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VM
b2c7Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQ7Cit1
c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpGcmFtZUlkOworCit1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEluc3BlY3RvckNh
bnZhc0FnZW50OjpJbnNwZWN0b3JDYW52YXNBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgOiBJbnNwZWN0b3JCYXNl
QWdlbnQoQVNDSUlMaXRlcmFsKCJDYW52YXMiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6
IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkNhbnZhcyIpLCBpbnN0cnVtZW50aW5n
QWdlbnRzKQogICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQogICAgICwgbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9lbmFibGVkKGZhbHNl
KQpAQCAtNzMsNyArNzUsNyBAQCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6fkluc3BlY3RvckNhbnZh
c0FnCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0
b3JDYW52YXNBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQ2FudmFzRnJvbnRlbmREaXNwYXRjaGVyPihm
cm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JDYW52
YXNCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKQEAg
LTE3OCwyNyArMTgwLDI3IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmdldFJlc291cmNl
U3QKICAgICAgICAgbW9kdWxlLnJlc291cmNlU3RhdGUoZXJyb3JTdHJpbmcsIHRyYWNlTG9nSWQs
IHJlc291cmNlSWQsICZyZXN1bHQpOwogfQogCi1TY3JpcHRPYmplY3QgSW5zcGVjdG9yQ2FudmFz
QWdlbnQ6OndyYXBDYW52YXMyRFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24oY29u
c3QgU2NyaXB0T2JqZWN0JiBjb250ZXh0KQorRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IEluc3Bl
Y3RvckNhbnZhc0FnZW50Ojp3cmFwQ2FudmFzMkRSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVu
dGF0aW9uKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgY29udGV4dCkKIHsKICAgICBF
cnJvclN0cmluZyBlcnJvcjsKICAgICBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZSBtb2R1bGUg
PSBpbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZSgmZXJyb3IsIGNvbnRleHQpOwogICAgIGlmICht
b2R1bGUuaGFzTm9WYWx1ZSgpKQotICAgICAgICByZXR1cm4gU2NyaXB0T2JqZWN0KCk7CisgICAg
ICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QoKTsKICAgICByZXR1cm4gbm90aWZ5
UmVuZGVyaW5nQ29udGV4dFdhc1dyYXBwZWQobW9kdWxlLndyYXBDYW52YXMyRENvbnRleHQoY29u
dGV4dCkpOwogfQogCiAjaWYgRU5BQkxFKFdFQkdMKQotU2NyaXB0T2JqZWN0IEluc3BlY3RvckNh
bnZhc0FnZW50Ojp3cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKGNv
bnN0IFNjcmlwdE9iamVjdCYgZ2xDb250ZXh0KQorRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IElu
c3BlY3RvckNhbnZhc0FnZW50Ojp3cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVu
dGF0aW9uKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgZ2xDb250ZXh0KQogewogICAg
IEVycm9yU3RyaW5nIGVycm9yOwogICAgIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlIG1vZHVs
ZSA9IGluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlKCZlcnJvciwgZ2xDb250ZXh0KTsKICAgICBp
ZiAobW9kdWxlLmhhc05vVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIFNjcmlwdE9iamVjdCgpOwor
ICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KCk7CiAgICAgcmV0dXJuIG5v
dGlmeVJlbmRlcmluZ0NvbnRleHRXYXNXcmFwcGVkKG1vZHVsZS53cmFwV2ViR0xDb250ZXh0KGds
Q29udGV4dCkpOwogfQogI2VuZGlmCiAKLVNjcmlwdE9iamVjdCBJbnNwZWN0b3JDYW52YXNBZ2Vu
dDo6bm90aWZ5UmVuZGVyaW5nQ29udGV4dFdhc1dyYXBwZWQoY29uc3QgU2NyaXB0T2JqZWN0JiB3
cmFwcGVkQ29udGV4dCkKK0RlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBJbnNwZWN0b3JDYW52YXNB
Z2VudDo6bm90aWZ5UmVuZGVyaW5nQ29udGV4dFdhc1dyYXBwZWQoY29uc3QgRGVwcmVjYXRlZDo6
U2NyaXB0T2JqZWN0JiB3cmFwcGVkQ29udGV4dCkKIHsKICAgICBBU1NFUlQobV9mcm9udGVuZERp
c3BhdGNoZXIpOwogICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9IHdyYXBwZWRDb250
ZXh0LnNjcmlwdFN0YXRlKCk7CkBAIC0yMjQsMTMgKzIyNiwxMyBAQCBJbmplY3RlZFNjcmlwdENh
bnZhc01vZHVsZSBJbnNwZWN0b3JDYW52CiAgICAgcmV0dXJuIG1vZHVsZTsKIH0KIAotSW5qZWN0
ZWRTY3JpcHRDYW52YXNNb2R1bGUgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmluamVjdGVkU2NyaXB0
Q2FudmFzTW9kdWxlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU2NyaXB0T2JqZWN0
JiBzY3JpcHRPYmplY3QpCitJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZSBJbnNwZWN0b3JDYW52
YXNBZ2VudDo6aW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmIHNjcmlwdE9iamVjdCkKIHsKICAg
ICBpZiAoIWNoZWNrSXNFbmFibGVkKGVycm9yU3RyaW5nKSkKICAgICAgICAgcmV0dXJuIEluamVj
dGVkU2NyaXB0Q2FudmFzTW9kdWxlKCk7CiAgICAgaWYgKHNjcmlwdE9iamVjdC5oYXNOb1ZhbHVl
KCkpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICplcnJvclN0cmlu
ZyA9ICJJbnRlcm5hbCBlcnJvcjogb3JpZ2luYWwgU2NyaXB0T2JqZWN0IGhhcyBubyB2YWx1ZSI7
CisgICAgICAgICplcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvcjogb3JpZ2luYWwgRGVwcmVj
YXRlZDo6U2NyaXB0T2JqZWN0IGhhcyBubyB2YWx1ZSI7CiAgICAgICAgIHJldHVybiBJbmplY3Rl
ZFNjcmlwdENhbnZhc01vZHVsZSgpOwogICAgIH0KICAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRD
YW52YXNNb2R1bGUoZXJyb3JTdHJpbmcsIHNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5o
CShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q2FudmFzQWdlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTUgKzMzLDIwIEBACiAKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5j
bHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
RnJvbnRlbmQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvcldlYkFnZW50QmFzZS5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYlR5cGVCdWls
ZGVycy5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBEZXByZWNh
dGVkIHsKK2NsYXNzIFNjcmlwdE9iamVjdDsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBGcmFtZTsKQEAgLTQ5LDExICs1NCwxMCBAQCBjbGFzcyBJbmplY3RlZFNjcmlwdENhbnZh
c01vZHVsZTsKIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKIGNsYXNzIEluc3BlY3RvclBh
Z2VBZ2VudDsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7Ci1jbGFzcyBTY3JpcHRPYmplY3Q7
CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JDYW52YXNB
Z2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JDYW52YXNC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yQ2FudmFzQWdlbnQgOiBw
dWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yQ2FudmFzQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0
b3JDYW52YXNBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdB
Z2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBJbmplY3RlZFNjcmlwdE1hbmFn
ZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICB7CkBAIC02MSw3ICs2NSw3IEBAIHB1Ymxp
YzoKICAgICB9CiAgICAgfkluc3BlY3RvckNhbnZhc0FnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCos
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVS
UklERTsKIAogICAgIHZvaWQgZnJhbWVOYXZpZ2F0ZWQoRnJhbWUqKTsKQEAgLTY5LDM0ICs3Mywz
NCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRCZWdpbkZyYW1lKCk7CiAKICAgICAvLyBDYWxsZWQg
ZnJvbSBJbnNwZWN0b3JDYW52YXNJbnN0cnVtZW50YXRpb24uCi0gICAgU2NyaXB0T2JqZWN0IHdy
YXBDYW52YXMyRFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24oY29uc3QgU2NyaXB0
T2JqZWN0Jik7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IHdyYXBDYW52YXMyRFJlbmRl
cmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24oY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2Jq
ZWN0Jik7CiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIFNjcmlwdE9iamVjdCB3cmFwV2ViR0xSZW5k
ZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKGNvbnN0IFNjcmlwdE9iamVjdCYpOworICAg
IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCB3cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5z
dHJ1bWVudGF0aW9uKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYpOwogI2VuZGlmCiAK
ICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgZnJvbnQtZW5kLgogICAgIHZpcnR1YWwgdm9pZCBlbmFi
bGUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyop
OwotICAgIHZpcnR1YWwgdm9pZCBkcm9wVHJhY2VMb2coRXJyb3JTdHJpbmcqLCBjb25zdCBUeXBl
QnVpbGRlcjo6Q2FudmFzOjpUcmFjZUxvZ0lkJik7CisgICAgdmlydHVhbCB2b2lkIGRyb3BUcmFj
ZUxvZyhFcnJvclN0cmluZyosIGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6
VHJhY2VMb2dJZCYpOwogICAgIHZpcnR1YWwgdm9pZCBoYXNVbmluc3RydW1lbnRlZENhbnZhc2Vz
KEVycm9yU3RyaW5nKiwgYm9vbCopOwotICAgIHZpcnR1YWwgdm9pZCBjYXB0dXJlRnJhbWUoRXJy
b3JTdHJpbmcqLCBjb25zdCBUeXBlQnVpbGRlcjo6TmV0d29yazo6RnJhbWVJZCosIFR5cGVCdWls
ZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRDYXB0dXJp
bmcoRXJyb3JTdHJpbmcqLCBjb25zdCBUeXBlQnVpbGRlcjo6TmV0d29yazo6RnJhbWVJZCosIFR5
cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcENh
cHR1cmluZyhFcnJvclN0cmluZyosIGNvbnN0IFR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9n
SWQmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VHJhY2VMb2coRXJyb3JTdHJpbmcqLCBjb25zdCBU
eXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFjZUxvZ0lkJiwgY29uc3QgaW50KiwgY29uc3QgaW50Kiwg
UmVmUHRyPFR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nPiYpOwotICAgIHZpcnR1YWwgdm9p
ZCByZXBsYXlUcmFjZUxvZyhFcnJvclN0cmluZyosIGNvbnN0IFR5cGVCdWlsZGVyOjpDYW52YXM6
OlRyYWNlTG9nSWQmLCBpbnQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJjZVN0
YXRlPiYpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRSZXNvdXJjZUluZm8oRXJyb3JTdHJpbmcqLCBj
b25zdCBUeXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJjZUlkJiwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpDYW52YXM6OlJlc291cmNlSW5mbz4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVzb3VyY2VT
dGF0ZShFcnJvclN0cmluZyosIGNvbnN0IFR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQm
LCBjb25zdCBUeXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJjZUlkJiwgUmVmUHRyPFR5cGVCdWls
ZGVyOjpDYW52YXM6OlJlc291cmNlU3RhdGU+Jik7CisgICAgdmlydHVhbCB2b2lkIGNhcHR1cmVG
cmFtZShFcnJvclN0cmluZyosIGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6
OkZyYW1lSWQqLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRDYXB0dXJpbmcoRXJyb3JTdHJpbmcqLCBjb25zdCBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpGcmFtZUlkKiwgSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q2FudmFzOjpUcmFjZUxvZ0lkKik7CisgICAgdmlydHVhbCB2b2lkIHN0b3BDYXB0dXJp
bmcoRXJyb3JTdHJpbmcqLCBjb25zdCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRy
YWNlTG9nSWQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VHJhY2VMb2coRXJyb3JTdHJpbmcqLCBj
b25zdCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQmLCBjb25zdCBp
bnQqLCBjb25zdCBpbnQqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpU
cmFjZUxvZz4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVwbGF5VHJhY2VMb2coRXJyb3JTdHJpbmcq
LCBjb25zdCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQmLCBpbnQs
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlU3RhdGU+Jik7
CisgICAgdmlydHVhbCB2b2lkIGdldFJlc291cmNlSW5mbyhFcnJvclN0cmluZyosIGNvbnN0IElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VJZCYsIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlSW5mbz4mKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZ2V0UmVzb3VyY2VTdGF0ZShFcnJvclN0cmluZyosIGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCYsIGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNhbnZhczo6UmVzb3VyY2VJZCYsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52
YXM6OlJlc291cmNlU3RhdGU+Jik7CiAKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yQ2FudmFzQWdl
bnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclBhZ2VBZ2VudCosIEluamVjdGVkU2Ny
aXB0TWFuYWdlciopOwogCiAgICAgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUgaW5qZWN0ZWRT
Y3JpcHRDYW52YXNNb2R1bGUoRXJyb3JTdHJpbmcqLCBKU0M6OkV4ZWNTdGF0ZSopOwotICAgIElu
amVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlIGluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlKEVycm9y
U3RyaW5nKiwgY29uc3QgU2NyaXB0T2JqZWN0Jik7CisgICAgSW5qZWN0ZWRTY3JpcHRDYW52YXNN
b2R1bGUgaW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUoRXJyb3JTdHJpbmcqLCBjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRPYmplY3QmKTsKICAgICBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZSBp
bmplY3RlZFNjcmlwdENhbnZhc01vZHVsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYpOwog
CiAgICAgdm9pZCBmaW5kRnJhbWVzV2l0aFVuaW5zdHJ1bWVudGVkQ2FudmFzZXMoKTsKICAgICBi
b29sIGNoZWNrSXNFbmFibGVkKEVycm9yU3RyaW5nKikgY29uc3Q7Ci0gICAgU2NyaXB0T2JqZWN0
IG5vdGlmeVJlbmRlcmluZ0NvbnRleHRXYXNXcmFwcGVkKGNvbnN0IFNjcmlwdE9iamVjdCYpOwor
ICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBub3RpZnlSZW5kZXJpbmdDb250ZXh0V2FzV3Jh
cHBlZChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmKTsKIAogICAgIEluc3BlY3RvclBh
Z2VBZ2VudCogbV9wYWdlQWdlbnQ7CiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVj
dGVkU2NyaXB0TWFuYWdlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXNJbnN0cnVtZW50YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzSW5zdHJ1bWVudGF0aW9uLmgJKHJldmlzaW9uIDE2MDQw
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNJbnN0cnVtZW50
YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTEgKzM0LDExIEBACiAjaW5jbHVkZSAiSW5z
cGVjdG9yQ2FudmFzQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2Jq
ZWN0LmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0T2JqZWN0Lmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotU2NyaXB0T2JqZWN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d3JhcENh
bnZhczJEUmVuZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlvbihEb2N1bWVudCogZG9jdW1l
bnQsIGNvbnN0IFNjcmlwdE9iamVjdCYgY29udGV4dCkKK0RlcHJlY2F0ZWQ6OlNjcmlwdE9iamVj
dCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndyYXBDYW52YXMyRFJlbmRlcmluZ0NvbnRleHRG
b3JJbnN0cnVtZW50YXRpb24oRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBEZXByZWNhdGVkOjpT
Y3JpcHRPYmplY3QmIGNvbnRleHQpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdB
Z2VudHNGb3JEb2N1bWVudChkb2N1bWVudCkpIHsKQEAgLTQ5LDExICs0OSwxMSBAQCBTY3JpcHRP
YmplY3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3CiAgICAgVU5VU0VEX1BBUkFNKGRvY3Vt
ZW50KTsKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CiAjZW5kaWYKLSAgICByZXR1cm4gU2Ny
aXB0T2JqZWN0KCk7CisgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCgpOwogfQog
CiAjaWYgRU5BQkxFKFdFQkdMKQotU2NyaXB0T2JqZWN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d3JhcFdlYkdMUmVuZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlvbihEb2N1bWVudCog
ZG9jdW1lbnQsIGNvbnN0IFNjcmlwdE9iamVjdCYgZ2xDb250ZXh0KQorRGVwcmVjYXRlZDo6U2Ny
aXB0T2JqZWN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d3JhcFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEZvckluc3RydW1lbnRhdGlvbihEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IERlcHJlY2F0
ZWQ6OlNjcmlwdE9iamVjdCYgZ2xDb250ZXh0KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAg
ICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKSB7CkBAIC02NCw3ICs2NCw3IEBAIFNj
cmlwdE9iamVjdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OncKICAgICBVTlVTRURfUEFSQU0o
ZG9jdW1lbnQpOwogICAgIFVOVVNFRF9QQVJBTShnbENvbnRleHQpOwogI2VuZGlmCi0gICAgcmV0
dXJuIFNjcmlwdE9iamVjdCgpOworICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3Qo
KTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuY3BwCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzgsNyArMzgsOSBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTY3JpcHRDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNjcmlw
dFZhbHVlLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KKwordXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oCShyZXZpc2lvbiAxNjA0MDQpCisr
KyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgSW5zcGVjdG9yQ2xpZW50X2gKICNkZWZpbmUg
SW5zcGVjdG9yQ2xpZW50X2gKIAorI2luY2x1ZGUgIkluc3BlY3RvckZvcndhcmRpbmcuaCIKICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTM0LDcgKzM1LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKLWNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgUGFnZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAJKHJldmlzaW9uIDE2
MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MywxNCArNDMsMTYgQEAKICNpbmNsdWRlICJTY3JpcHRD
YWxsU3RhY2suaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCiAjaW5jbHVk
ZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1
ZGUgIlNjcmlwdFByb2ZpbGVyLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0T2JqZWN0Lmg+
CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCit1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBtYXhpbXVtQ29uc29sZU1lc3NhZ2VzID0gMTAwMDsKQEAgLTU5LDcgKzYxLDcgQEAgc3Rh
dGljIGNvbnN0IGludCBleHBpcmVDb25zb2xlTWVzc2FnZXNTdAogaW50IEluc3BlY3RvckNvbnNv
bGVBZ2VudDo6c19lbmFibGVkQWdlbnRDb3VudCA9IDA7CiAKIEluc3BlY3RvckNvbnNvbGVBZ2Vu
dDo6SW5zcGVjdG9yQ29uc29sZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQot
ICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiQ29uc29sZSIpLCBpbnN0cnVt
ZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiQ29u
c29sZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9wcmV2aW91c01lc3NhZ2UoMCkKICAg
ICAsIG1fZXhwaXJlZENvbnNvbGVNZXNzYWdlQ291bnQoMCkKQEAgLTEyMiw3ICsxMjQsNyBAQCB2
b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6cmVzZXQoKQogICAgIG1fY291bnRzLmNsZWFyKCk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yQ29u
c29sZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9u
dGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JDb25zb2xl
QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CkBAIC0z
MjAsNyArMzIyLDcgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmFkZENvbnNvbGVNZQog
Y2xhc3MgSW5zcGVjdGFibGVIZWFwT2JqZWN0IDogcHVibGljIEluamVjdGVkU2NyaXB0SG9zdDo6
SW5zcGVjdGFibGVPYmplY3QgewogcHVibGljOgogICAgIGV4cGxpY2l0IEluc3BlY3RhYmxlSGVh
cE9iamVjdChpbnQgaGVhcE9iamVjdElkKSA6IG1faGVhcE9iamVjdElkKGhlYXBPYmplY3RJZCkg
eyB9Ci0gICAgdmlydHVhbCBTY3JpcHRWYWx1ZSBnZXQoSlNDOjpFeGVjU3RhdGUqKQorICAgIHZp
cnR1YWwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZ2V0KEpTQzo6RXhlY1N0YXRlKikKICAgICB7
CiAgICAgICAgIHJldHVybiBTY3JpcHRQcm9maWxlcjo6b2JqZWN0QnlIZWFwT2JqZWN0SWQobV9o
ZWFwT2JqZWN0SWQpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb25zb2xlQWdlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgJKHJldmlzaW9uIDE2MDQwNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMjksOCArMjksOSBAQAogCiAjaW5jbHVkZSAiQ29uc29sZUFQSVR5cGVzLmgiCiAjaW5jbHVk
ZSAiQ29uc29sZVR5cGVzLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5j
bHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
RnJvbnRlbmQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRl
ICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KQEAgLTUyLDcgKzUzLDcgQEAgY2xhc3MgU2NyaXB0UHJvZmlsZTsKIAogdHlw
ZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckNvbnNvbGVBZ2VudCA6
IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JDb25zb2xlQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckNvbnNvbGVBZ2VudCA6IHB1Ymxp
YyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JDb25zb2xlQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JDb25zb2xl
QWdlbnQpOwogcHVibGljOgogICAgIEluc3BlY3RvckNvbnNvbGVBZ2VudChJbnN0cnVtZW50aW5n
QWdlbnRzKiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKik7CkBAIC02NCw3ICs2NSw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KICAgICB2
b2lkIHJlc2V0KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERl
c3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIHZvaWQgYWRkTWVzc2Fn
ZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIEpTQzo6RXhlY1N0YXRlKiwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1
bWVudHM+LCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyID0gMCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCShyZXZp
c2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDYgQEAKICNpbmNsdWRlICJJbnNw
ZWN0b3JBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5o
IgogI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgotI2luY2x1ZGUgIklu
c3BlY3RvckJhc2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNTU0FnZW50LmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQu
aCIKQEAgLTcxLDggKzcwLDEwIEBACiAjaW5jbHVkZSAiUGFnZURlYnVnZ2VyQWdlbnQuaCIKICNp
bmNsdWRlICJQYWdlUnVudGltZUFnZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUg
IlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSA8aW5zcGVj
dG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCShyZXZpc2lvbiAxNjA0MDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMywxMyArMzMsMTggQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNs
dWRlICJJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFn
ZW50LmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaD4KICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
K25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworY2xhc3MgSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsOworY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7
Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwpAQCAt
NDgsMTUgKzUzLDEyIEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEluamVjdGVkU2Ny
aXB0TWFuYWdlcjsKIGNsYXNzIEluc3BlY3RvckFnZW50OwogY2xhc3MgSW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50OwotY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CiBjbGFz
cyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JET01BZ2VudDsKIGNsYXNzIEluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OwotY2xh
c3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ7CiBjbGFzcyBJbnNwZWN0b3JNZW1vcnlBZ2VudDsKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsK
IGNsYXNzIEluc3BlY3Rvck92ZXJsYXk7CiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CiBjbGFz
cyBJbnNwZWN0b3JQcm9maWxlckFnZW50OwpAQCAtOTUsNyArOTcsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBoYXNMb2NhbEZyb250ZW5kKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNSZW1vdGVGcm9udGVu
ZCgpIGNvbnN0OwogCi0gICAgdm9pZCBjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKik7CisgICAgdm9pZCBjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqKTsKICAgICB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZCgpOwogICAgIHZv
aWQgc2V0UHJvY2Vzc0lkKGxvbmcpOwogCkBAIC0xMTEsNyArMTEzLDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBzZXRJbmRpY2F0aW5nKGJvb2wpOwogCi0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IGJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlKCkgY29uc3Q7CisgICAgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JIaWdobGlnaHRl
ZE5vZGUoKSBjb25zdDsKIAogICAgIGJvb2wgaXNVbmRlclRlc3QoKTsKICAgICB2b2lkIGV2YWx1
YXRlRm9yVGVzdEluRnJvbnRlbmQobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgc2NyaXB0KTsK
QEAgLTE1NCwxMiArMTU2LDEyIEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dCogbV9wcm9maWxlckFnZW50OwogI2VuZGlmCiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI+IG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1faW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI7CiAgICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5kQ2xpZW50PiBtX2luc3BlY3Rv
ckZyb250ZW5kQ2xpZW50OwotICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0
b3JGcm9udGVuZENoYW5uZWw7CisgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogICAgIFBhZ2UqIG1fcGFnZTsKICAgICBJ
bnNwZWN0b3JDbGllbnQqIG1faW5zcGVjdG9yQ2xpZW50OwotICAgIEluc3BlY3RvckFnZW50UmVn
aXN0cnkgbV9hZ2VudHM7CisgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5IG1f
YWdlbnRzOwogICAgIGJvb2wgbV9pc1VuZGVyVGVzdDsKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDggQEAK
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTIxMCw3ICsyMTIsNyBAQCBTdHJp
bmcgSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcoCiB9CiAKIEluc3BlY3RvckRPTUFn
ZW50OjpJbnNwZWN0b3JET01BZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXksIElu
c3BlY3RvckNsaWVudCogY2xpZW50KQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0
ZXJhbCgiRE9NIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJh
c2UoQVNDSUlMaXRlcmFsKCJET00iKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fcGFn
ZUFnZW50KHBhZ2VBZ2VudCkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVk
U2NyaXB0TWFuYWdlcikKICAgICAsIG1fb3ZlcmxheShvdmVybGF5KQpAQCAtMjMwLDcgKzIzMiw3
IEBAIEluc3BlY3RvckRPTUFnZW50Ojp+SW5zcGVjdG9yRE9NQWdlbnQoKQogICAgIEFTU0VSVCgh
bV9zZWFyY2hpbmdGb3JOb2RlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRD
aGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2
b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JET01Gcm9udGVuZERpc3BhdGNo
ZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rv
ckRPTUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpA
QCAtNDIwLDcgKzQyMiw3IEBAIEVsZW1lbnQqIEluc3BlY3RvckRPTUFnZW50Ojphc3NlcnRFZGl0
YWIKICAgICByZXR1cm4gZWxlbWVudDsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0
RG9jdW1lbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRP
TTo6Tm9kZT4mIHJvb3QpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXREb2N1bWVudChFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006
Ok5vZGU+JiByb290KQogewogICAgIG1fZG9jdW1lbnRSZXF1ZXN0ZWQgPSB0cnVlOwogCkBAIC00
NjAsNyArNDYyLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaENoaWxkTm9kZXNUbwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxU
eXBlQnVpbGRlcjo6RE9NOjpOb2RlPj4gY2hpbGRyZW4gPSBidWlsZEFycmF5Rm9yQ29udGFpbmVy
Q2hpbGRyZW4obm9kZSwgZGVwdGgsIG5vZGVNYXApOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+PiBjaGls
ZHJlbiA9IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihub2RlLCBkZXB0aCwgbm9kZU1h
cCk7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnNldENoaWxkTm9kZXMobm9kZUlkLCBjaGls
ZHJlbi5yZWxlYXNlKCkpOwogfQogCkBAIC01MzgsNyArNTQwLDcgQEAgdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6cXVlcnlTZWxlY3RvcihFcgogICAgICAgICAqZWxlbWVudElkID0gcHVzaE5vZGVQ
YXRoVG9Gcm9udGVuZChlbGVtZW50LmdldCgpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6cXVlcnlTZWxlY3RvckFsbChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQs
IGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PGludD4+
JiByZXN1bHQpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpxdWVyeVNlbGVjdG9yQWxsKEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMs
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+PiYgcmVzdWx0KQogewog
ICAgIE5vZGUqIG5vZGUgPSBhc3NlcnROb2RlKGVycm9yU3RyaW5nLCBub2RlSWQpOwogICAgIGlm
ICghbm9kZSkKQEAgLTU1NSw3ICs1NTcsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpxdWVy
eVNlbGVjdG9yQWxsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICByZXN1bHQgPSBUeXBl
QnVpbGRlcjo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CisgICAgcmVzdWx0ID0gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbm9kZXMtPmxlbmd0aCgpOyArK2kpCiAgICAgICAgIHJlc3VsdC0+YWRkSXRlbShw
dXNoTm9kZVBhdGhUb0Zyb250ZW5kKG5vZGVzLT5pdGVtKGkpKSk7CkBAIC01ODYsNyArNTg4LDcg
QEAgaW50IEluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhUb0ZybwogICAgICAgICAgICAg
T3duUHRyPE5vZGVUb0lkTWFwPiBuZXdNYXAgPSBhZG9wdFB0cihuZXcgTm9kZVRvSWRNYXApOwog
ICAgICAgICAgICAgZGFuZ2xpbmdNYXAgPSBuZXdNYXAuZ2V0KCk7CiAgICAgICAgICAgICBtX2Rh
bmdsaW5nTm9kZVRvSWRNYXBzLmFwcGVuZChuZXdNYXAucmVsZWFzZSgpKTsKLSAgICAgICAgICAg
IFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4+IGNoaWxk
cmVuID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpET006Ok5vZGU+OjpjcmVhdGUo
KTsKKyAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+PiBjaGlsZHJlbiA9IEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT46OmNyZWF0
ZSgpOwogICAgICAgICAgICAgY2hpbGRyZW4tPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JOb2RlKG5v
ZGUsIDAsIGRhbmdsaW5nTWFwKSk7CiAgICAgICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+
c2V0Q2hpbGROb2RlcygwLCBjaGlsZHJlbik7CiAgICAgICAgICAgICBicmVhazsKQEAgLTgxMyw5
ICs4MTUsOSBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXROb2RlVmFsdWUoRXJyCiAgICAg
bV9kb21FZGl0b3ItPnJlcGxhY2VXaG9sZVRleHQodG9UZXh0KG5vZGUpLCB2YWx1ZSwgZXJyb3JT
dHJpbmcpOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRFdmVudExpc3RlbmVyc0Zv
ck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcq
IG9iamVjdEdyb3VwLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpET006
OkV2ZW50TGlzdGVuZXI+PiYgbGlzdGVuZXJzQXJyYXkpCit2b2lkIEluc3BlY3RvckRPTUFnZW50
OjpnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQg
bm9kZUlkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpFdmVudExpc3RlbmVy
Pj4mIGxpc3RlbmVyc0FycmF5KQogewotICAgIGxpc3RlbmVyc0FycmF5ID0gVHlwZUJ1aWxkZXI6
OkFycmF5PFR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI+OjpjcmVhdGUoKTsKKyAgICBs
aXN0ZW5lcnNBcnJheSA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkRPTTo6RXZlbnRMaXN0ZW5lcj46OmNyZWF0ZSgpOwogICAgIE5vZGUqIG5v
ZGUgPSBhc3NlcnROb2RlKGVycm9yU3RyaW5nLCBub2RlSWQpOwogICAgIGlmICghbm9kZSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtOTIxLDcgKzkyMyw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OnBlcmZvcm1TZWFyY2goRXIKICAgICAqcmVzdWx0Q291bnQgPSByZXN1bHRzVmVjdG9yLnNpemUo
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0U2VhcmNoUmVzdWx0cyhFcnJvclN0
cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc2VhcmNoSWQsIGludCBmcm9tSW5kZXgs
IGludCB0b0luZGV4LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PGludD4+JiBub2RlSWRzKQor
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0U2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc2VhcmNoSWQsIGludCBmcm9tSW5kZXgsIGludCB0b0lu
ZGV4LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4mIG5vZGVJZHMp
CiB7CiAgICAgU2VhcmNoUmVzdWx0czo6aXRlcmF0b3IgaXQgPSBtX3NlYXJjaFJlc3VsdHMuZmlu
ZChzZWFyY2hJZCk7CiAgICAgaWYgKGl0ID09IG1fc2VhcmNoUmVzdWx0cy5lbmQoKSkgewpAQCAt
OTM1LDcgKzkzNyw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldFNlYXJjaFJlc3VsdHMK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG5vZGVJZHMgPSBUeXBlQnVpbGRlcjo6QXJy
YXk8aW50Pjo6Y3JlYXRlKCk7CisgICAgbm9kZUlkcyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PGludD46OmNyZWF0ZSgpOwogICAgIGZvciAoaW50IGkgPSBmcm9tSW5kZXg7IGkgPCB0
b0luZGV4OyArK2kpCiAgICAgICAgIG5vZGVJZHMtPmFkZEl0ZW0ocHVzaE5vZGVQYXRoVG9Gcm9u
dGVuZCgoaXQtPnZhbHVlKVtpXS5nZXQoKSkpOwogfQpAQCAtMTIxMiw3ICsxMjE0LDcgQEAgdm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0RmlsZUlucHV0RmlsZQogICAgIGVsZW1lbnQtPnNldEZp
bGVzKGZpbGVMaXN0KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cmVzb2x2ZU5vZGUo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcqIGNvbnN0
IG9iamVjdEdyb3VwLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4m
IHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlc29sdmVOb2RlKEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nKiBjb25zdCBvYmplY3RHcm91
cCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4m
IHJlc3VsdCkKIHsKICAgICBTdHJpbmcgb2JqZWN0R3JvdXBOYW1lID0gb2JqZWN0R3JvdXAgPyAq
b2JqZWN0R3JvdXAgOiAiIjsKICAgICBOb2RlKiBub2RlID0gbm9kZUZvcklkKG5vZGVJZCk7CkBA
IC0xMjIwLDcgKzEyMjIsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZXNvbHZlTm9kZShF
cnJvCiAgICAgICAgICplcnJvclN0cmluZyA9ICJObyBub2RlIHdpdGggZ2l2ZW4gaWQgZm91bmQi
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0PiBvYmplY3QgPSByZXNvbHZlTm9kZShub2RlLCBvYmplY3RHcm91cE5h
bWUpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q+IG9iamVjdCA9IHJlc29sdmVOb2RlKG5vZGUsIG9iamVjdEdyb3VwTmFtZSk7CiAgICAg
aWYgKCFvYmplY3QpIHsKICAgICAgICAgKmVycm9yU3RyaW5nID0gIk5vZGUgd2l0aCBnaXZlbiBp
ZCBkb2VzIG5vdCBiZWxvbmcgdG8gdGhlIGRvY3VtZW50IjsKICAgICAgICAgcmV0dXJuOwpAQCAt
MTIyOCw3ICsxMjMwLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cmVzb2x2ZU5vZGUoRXJy
bwogICAgIHJlc3VsdCA9IG9iamVjdDsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0
QXR0cmlidXRlcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIFJlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdl
bnQ6OmdldEF0dHJpYnV0ZXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4mIHJlc3VsdCkKIHsK
ICAgICBFbGVtZW50KiBlbGVtZW50ID0gYXNzZXJ0RWxlbWVudChlcnJvclN0cmluZywgbm9kZUlk
KTsKICAgICBpZiAoIWVsZW1lbnQpCkBAIC0xMjYwLDcgKzEyNjIsNyBAQCBzdGF0aWMgU3RyaW5n
IGRvY3VtZW50QmFzZVVSTFN0cmluZyhEb2N1CiAgICAgcmV0dXJuIGRvY3VtZW50LT5jb21wbGV0
ZVVSTCgiIikuc3RyaW5nKCk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9k
ZT4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiBub2RlLCBpbnQg
ZGVwdGgsIE5vZGVUb0lkTWFwKiBub2Rlc01hcCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6RE9NOjpOb2RlPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JOb2Rl
KE5vZGUqIG5vZGUsIGludCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKQogewogICAgIGlu
dCBpZCA9IGJpbmQobm9kZSwgbm9kZXNNYXApOwogICAgIFN0cmluZyBub2RlTmFtZTsKQEAgLTEy
ODksNyArMTI5MSw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4gSW5zcGUK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpET006Ok5v
ZGU+IHZhbHVlID0gVHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZTo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiB2YWx1ZSA9IEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkRPTTo6Tm9kZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldE5vZGVJZChpZCkKICAg
ICAgICAgLnNldE5vZGVUeXBlKHN0YXRpY19jYXN0PGludD4obm9kZS0+bm9kZVR5cGUoKSkpCiAg
ICAgICAgIC5zZXROb2RlTmFtZShub2RlTmFtZSkKQEAgLTEyOTksNyArMTMwMSw3IEBAIFBhc3NS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4gSW5zcGUKICAgICBpZiAobm9kZS0+aXNDb250
YWluZXJOb2RlKCkpIHsKICAgICAgICAgaW50IG5vZGVDb3VudCA9IGlubmVyQ2hpbGROb2RlQ291
bnQobm9kZSk7CiAgICAgICAgIHZhbHVlLT5zZXRDaGlsZE5vZGVDb3VudChub2RlQ291bnQpOwot
ICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpET006Ok5vZGU+
PiBjaGlsZHJlbiA9IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihub2RlLCBkZXB0aCwg
bm9kZXNNYXApOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPj4gY2hpbGRyZW4gPSBidWlsZEFycmF5
Rm9yQ29udGFpbmVyQ2hpbGRyZW4obm9kZSwgZGVwdGgsIG5vZGVzTWFwKTsKICAgICAgICAgaWYg
KGNoaWxkcmVuLT5sZW5ndGgoKSA+IDApCiAgICAgICAgICAgICB2YWx1ZS0+c2V0Q2hpbGRyZW4o
Y2hpbGRyZW4ucmVsZWFzZSgpKTsKICAgICB9CkBAIC0xMzE4LDcgKzEzMjAsNyBAQCBQYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpET006Ok5vZGU+IEluc3BlCiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoU2hhZG93Um9vdCogcm9vdCA9IGVsZW1lbnQtPnNoYWRvd1Jvb3QoKSkgewotICAgICAgICAg
ICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPj4gc2hh
ZG93Um9vdHMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT46OmNy
ZWF0ZSgpOworICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4+IHNoYWRvd1Jvb3RzID0gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpOb2Rl
Pjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBzaGFkb3dSb290cy0+YWRkSXRlbShidWlsZE9iamVj
dEZvck5vZGUocm9vdCwgMCwgbm9kZXNNYXApKTsKICAgICAgICAgICAgIHZhbHVlLT5zZXRTaGFk
b3dSb290cyhzaGFkb3dSb290cyk7CiAgICAgICAgIH0KQEAgLTEzNDYsOSArMTM0OCw5IEBAIFBh
c3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4gSW5zcGUKICAgICByZXR1cm4gdmFsdWUu
cmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBJ
bnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckVsZW1lbnRBdHRyaWJ1dGVzKEVsZW1lbnQq
IGVsZW1lbnQpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmlu
Zz4+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yRWxlbWVudEF0dHJpYnV0ZXMoRWxl
bWVudCogZWxlbWVudCkKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+
IGF0dHJpYnV0ZXNWYWx1ZSA9IFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsK
KyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gYXR0cmli
dXRlc1ZhbHVlID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRl
KCk7CiAgICAgLy8gR28gdGhyb3VnaCBhbGwgYXR0cmlidXRlcyBhbmQgc2VyaWFsaXplIHRoZW0u
CiAgICAgaWYgKCFlbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkpCiAgICAgICAgIHJldHVybiBhdHRy
aWJ1dGVzVmFsdWUucmVsZWFzZSgpOwpAQCAtMTM2Miw5ICsxMzY0LDkgQEAgUGFzc1JlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gSQogICAgIHJldHVybiBhdHRyaWJ1dGVzVmFsdWUu
cmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRl
cjo6RE9NOjpOb2RlPj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JDb250YWluZXJD
aGlsZHJlbihOb2RlKiBjb250YWluZXIsIGludCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFw
KQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpET006Ok5vZGU+PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckNv
bnRhaW5lckNoaWxkcmVuKE5vZGUqIGNvbnRhaW5lciwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCog
bm9kZXNNYXApCiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6
RE9NOjpOb2RlPj4gY2hpbGRyZW4gPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRP
TTo6Tm9kZT46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpB
cnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+PiBjaGlsZHJlbiA9IEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9k
ZT46OmNyZWF0ZSgpOwogICAgIGlmIChkZXB0aCA9PSAwKSB7CiAgICAgICAgIC8vIFNwZWNpYWwt
Y2FzZSB0aGUgb25seSB0ZXh0IGNoaWxkIC0gcHJldGVuZCB0aGF0IGNvbnRhaW5lcidzIGNoaWxk
cmVuIGhhdmUgYmVlbiByZXF1ZXN0ZWQuCiAgICAgICAgIE5vZGUqIGZpcnN0Q2hpbGQgPSBjb250
YWluZXItPmZpcnN0Q2hpbGQoKTsKQEAgLTEzODYsNyArMTM4OCw3IEBAIFBhc3NSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGUKICAgICByZXR1cm4gY2hpbGRyZW4ucmVsZWFzZSgp
OwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI+IEluc3Bl
Y3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIoY29uc3QgUmVnaXN0ZXJl
ZEV2ZW50TGlzdGVuZXImIHJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLCBjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cElkKQor
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI+IElu
c3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIoY29uc3QgUmVnaXN0
ZXJlZEV2ZW50TGlzdGVuZXImIHJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLCBjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cElk
KQogewogICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyID0gcmVnaXN0ZXJl
ZEV2ZW50TGlzdGVuZXIubGlzdGVuZXI7CiAKQEAgLTE0MTQsNyArMTQxNiw3IEBAIFBhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkRPTTo6RXZlbnRMaXN0ZW4KICAgICAgICAgfQogICAgIH0KIAotICAg
IFJlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpFdmVudExpc3RlbmVyPiB2YWx1ZSA9IFR5cGVCdWls
ZGVyOjpET006OkV2ZW50TGlzdGVuZXI6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gdmFsdWUgPSBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRUeXBlKGV2
ZW50VHlwZSkKICAgICAgICAgLnNldFVzZUNhcHR1cmUocmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIu
dXNlQ2FwdHVyZSkKICAgICAgICAgLnNldElzQXR0cmlidXRlKGV2ZW50TGlzdGVuZXItPmlzQXR0
cmlidXRlKCkpCkBAIC0xNDIzLDEwICsxNDI1LDEwIEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6
OkRPTTo6RXZlbnRMaXN0ZW4KICAgICBpZiAob2JqZWN0R3JvdXBJZCAmJiBoYW5kbGVyICYmIHN0
YXRlKSB7CiAgICAgICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yKHN0YXRlKTsKICAgICAgICAgaWYgKCFp
bmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCi0gICAgICAgICAgICB2YWx1ZS0+c2V0SGFuZGxl
cihpbmplY3RlZFNjcmlwdC53cmFwT2JqZWN0KFNjcmlwdFZhbHVlKHN0YXRlLT52bSgpLCBoYW5k
bGVyKSwgKm9iamVjdEdyb3VwSWQpKTsKKyAgICAgICAgICAgIHZhbHVlLT5zZXRIYW5kbGVyKGlu
amVjdGVkU2NyaXB0LndyYXBPYmplY3QoRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoc3RhdGUtPnZt
KCksIGhhbmRsZXIpLCAqb2JqZWN0R3JvdXBJZCkpOwogICAgIH0KICAgICBpZiAoIXNjcmlwdElE
LmlzTnVsbCgpKSB7Ci0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0
aW9uPiBsb2NhdGlvbiA9IFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb246OmNyZWF0ZSgp
CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRp
b24+IGxvY2F0aW9uID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9u
OjpjcmVhdGUoKQogICAgICAgICAgICAgLnNldFNjcmlwdElkKHNjcmlwdElEKQogICAgICAgICAg
ICAgLnNldExpbmVOdW1iZXIobGluZU51bWJlcik7CiAgICAgICAgIHZhbHVlLT5zZXRMb2NhdGlv
bihsb2NhdGlvbi5yZWxlYXNlKCkpOwpAQCAtMTUwOSw3ICsxNTExLDcgQEAgdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6ZGlkQ29tbWl0TG9hZChEbwogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5j
aGlsZE5vZGVSZW1vdmVkKHBhcmVudElkLCBmcmFtZU93bmVySWQpOwogICAgIHVuYmluZChmcmFt
ZU93bmVyLCAmbV9kb2N1bWVudE5vZGVUb0lkTWFwKTsKIAotICAgIFJlZlB0cjxUeXBlQnVpbGRl
cjo6RE9NOjpOb2RlPiB2YWx1ZSA9IGJ1aWxkT2JqZWN0Rm9yTm9kZShmcmFtZU93bmVyLCAwLCAm
bV9kb2N1bWVudE5vZGVUb0lkTWFwKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6RE9NOjpOb2RlPiB2YWx1ZSA9IGJ1aWxkT2JqZWN0Rm9yTm9kZShmcmFtZU93bmVyLCAwLCAm
bV9kb2N1bWVudE5vZGVUb0lkTWFwKTsKICAgICBOb2RlKiBwcmV2aW91c1NpYmxpbmcgPSBpbm5l
clByZXZpb3VzU2libGluZyhmcmFtZU93bmVyKTsKICAgICBpbnQgcHJldklkID0gcHJldmlvdXNT
aWJsaW5nID8gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldChwcmV2aW91c1NpYmxpbmcpIDogMDsK
ICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+Y2hpbGROb2RlSW5zZXJ0ZWQocGFyZW50SWQsIHBy
ZXZJZCwgdmFsdWUucmVsZWFzZSgpKTsKQEAgLTE1MzksNyArMTU0MSw3IEBAIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OmRpZEluc2VydERPTU5vZGUKICAgICAgICAgLy8gQ2hpbGRyZW4gaGF2ZSBi
ZWVuIHJlcXVlc3RlZCAtPiByZXR1cm4gdmFsdWUgb2YgYSBuZXcgY2hpbGQuCiAgICAgICAgIE5v
ZGUqIHByZXZTaWJsaW5nID0gaW5uZXJQcmV2aW91c1NpYmxpbmcobm9kZSk7CiAgICAgICAgIGlu
dCBwcmV2SWQgPSBwcmV2U2libGluZyA/IG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQocHJldlNp
YmxpbmcpIDogMDsKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpET006Ok5vZGU+IHZhbHVl
ID0gYnVpbGRPYmplY3RGb3JOb2RlKG5vZGUsIDAsICZtX2RvY3VtZW50Tm9kZVRvSWRNYXApOwor
ICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiB2YWx1ZSA9
IGJ1aWxkT2JqZWN0Rm9yTm9kZShub2RlLCAwLCAmbV9kb2N1bWVudE5vZGVUb0lkTWFwKTsKICAg
ICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmNoaWxkTm9kZUluc2VydGVkKHBhcmVudElkLCBw
cmV2SWQsIHZhbHVlLnJlbGVhc2UoKSk7CiAgICAgfQogfQpAQCAtMTYwNCw3ICsxNjA2LDcgQEAg
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkUmVtb3ZlRE9NQXR0cgogCiB2b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpzdHlsZUF0dHJpYnV0ZUludmFsaWRhdGVkKGNvbnN0IFZlY3RvcjxFbGVtZW50
Kj4mIGVsZW1lbnRzKQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4gbm9k
ZUlkcyA9IFR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4gbm9kZUlkcyA9IEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFycmF5PGludD46OmNyZWF0ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDAs
IHNpemUgPSBlbGVtZW50cy5zaXplKCk7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgRWxlbWVu
dCogZWxlbWVudCA9IGVsZW1lbnRzLmF0KGkpOwogICAgICAgICBpbnQgaWQgPSBib3VuZE5vZGVJ
ZChlbGVtZW50KTsKQEAgLTE3MjksNyArMTczMSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OnB1c2hOb2RlQnlCYWNrZW4KICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5zcGVjdG9yRE9NQWdlbnQ6OnJlc29sdmVOb2RlKE5vZGUq
IG5vZGUsIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5zcGVjdG9yRE9NQWdlbnQ6OnJl
c29sdmVOb2RlKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApCiB7CiAgICAg
RnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAko
cmV2aXNpb24gMTYwNDA0KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TUFnZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEzICszMywxMyBAQAogI2luY2x1ZGUgIkV2
ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNp
bmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvck92ZXJsYXkuaCIKLSNpbmNsdWRlICJJ
bnNwZWN0b3JWYWx1ZXMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNp
bmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCi0KKyNpbmNsdWRlIDxp
bnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtNDksNyAr
NDksMTIgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRv
bWljU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBEZXByZWNhdGVkIHsKK2NsYXNzIFNjcmlwdFZhbHVl
OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKIGNsYXNzIENvbnRhaW5lck5vZGU7CiBjbGFz
cyBDaGFyYWN0ZXJEYXRhOwogY2xhc3MgRE9NRWRpdG9yOwpAQCAtNjYsNyArNzEsNiBAQCBjbGFz
cyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgTmFtZU5vZGVNYXA7CiBjbGFzcyBOb2RlOwog
Y2xhc3MgUmV2YWxpZGF0ZVN0eWxlQXR0cmlidXRlVGFzazsKLWNsYXNzIFNjcmlwdFZhbHVlOwog
Y2xhc3MgU2hhZG93Um9vdDsKIAogc3RydWN0IEhpZ2hsaWdodENvbmZpZzsKQEAgLTg5LDcgKzkz
LDcgQEAgc3RydWN0IEV2ZW50TGlzdGVuZXJJbmZvIHsKICAgICBjb25zdCBFdmVudExpc3RlbmVy
VmVjdG9yIGV2ZW50TGlzdGVuZXJWZWN0b3I7CiB9OwogCi1jbGFzcyBJbnNwZWN0b3JET01BZ2Vu
dCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JET01CYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yRE9NQWdlbnQgOiBwdWJsaWMgSW5z
cGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yRE9NQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JET01BZ2VudCk7CiBwdWJs
aWM6CiAgICAgc3RydWN0IERPTUxpc3RlbmVyIHsKQEAgLTExMCw3ICsxMTQsNyBAQCBwdWJsaWM6
CiAKICAgICB+SW5zcGVjdG9yRE9NQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwg
SW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAg
ICAgVmVjdG9yPERvY3VtZW50Kj4gZG9jdW1lbnRzKCk7CkBAIC0xMTgsOCArMTIyLDggQEAgcHVi
bGljOgogCiAgICAgLy8gTWV0aG9kcyBjYWxsZWQgZnJvbSB0aGUgZnJvbnRlbmQgZm9yIERPTSBu
b2RlcyBpbnNwZWN0aW9uLgogICAgIHZpcnR1YWwgdm9pZCBxdWVyeVNlbGVjdG9yKEVycm9yU3Ry
aW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIGludCogZWxlbWVudElk
KTsKLSAgICB2aXJ0dWFsIHZvaWQgcXVlcnlTZWxlY3RvckFsbChFcnJvclN0cmluZyosIGludCBu
b2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5
PGludD4+JiByZXN1bHQpOwotICAgIHZpcnR1YWwgdm9pZCBnZXREb2N1bWVudChFcnJvclN0cmlu
ZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiYgcm9vdCk7CisgICAgdmlydHVhbCB2
b2lkIHF1ZXJ5U2VsZWN0b3JBbGwoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJp
bmcmIHNlbGVjdG9ycywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PGludD4+
JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCBnZXREb2N1bWVudChFcnJvclN0cmluZyosIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+JiByb290KTsKICAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdENoaWxkTm9kZXMoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25z
dCBpbnQqIGRlcHRoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QXR0cmlidXRlVmFsdWUoRXJyb3JT
dHJpbmcqLCBpbnQgZWxlbWVudElkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
dmFsdWUpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBdHRyaWJ1dGVzQXNUZXh0KEVycm9yU3RyaW5n
KiwgaW50IGVsZW1lbnRJZCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcqIG5hbWUp
OwpAQCAtMTI5LDI5ICsxMzMsMjkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRPdXRl
ckhUTUwoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBXVEY6OlN0cmluZyogb3V0ZXJIVE1MKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0T3V0ZXJIVE1MKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwg
Y29uc3QgU3RyaW5nJiBvdXRlckhUTUwpOwogICAgIHZpcnR1YWwgdm9pZCBzZXROb2RlVmFsdWUo
RXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJ
ZCwgY29uc3QgV1RGOjpTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI+PiYgbGlzdGVuZXJzQXJyYXkpOwot
ICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtU2VhcmNoKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiB3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBu
b2RlSWRzLCBTdHJpbmcqIHNlYXJjaElkLCBpbnQqIHJlc3VsdENvdW50KTsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0U2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2VhcmNo
SWQsIGludCBmcm9tSW5kZXgsIGludCB0b0luZGV4LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5
PGludD4+Jik7CisgICAgdmlydHVhbCB2b2lkIGdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShFcnJv
clN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFdURjo6U3RyaW5nKiBvYmplY3RHcm91cCwgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkRPTTo6RXZlbnRMaXN0ZW5lcj4+JiBsaXN0ZW5lcnNBcnJheSk7CisgICAgdmlydHVhbCB2b2lk
IHBlcmZvcm1TZWFyY2goRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHdoaXRlc3BhY2VUcmlt
bWVkUXVlcnksIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5Piogbm9kZUlk
cywgU3RyaW5nKiBzZWFyY2hJZCwgaW50KiByZXN1bHRDb3VudCk7CisgICAgdmlydHVhbCB2b2lk
IGdldFNlYXJjaFJlc3VsdHMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNlYXJjaElkLCBp
bnQgZnJvbUluZGV4LCBpbnQgdG9JbmRleCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PGludD4+Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpc2NhcmRTZWFyY2hSZXN1bHRzKEVy
cm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJl
c29sdmVOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RH
cm91cCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQp
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRBdHRyaWJ1dGVzKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJ
ZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiYgcmVzdWx0KTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0SW5zcGVjdE1vZGVFbmFibGVkKEVycm9yU3RyaW5nKiwgYm9vbCBlbmFibGVk
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVzb2x2ZU5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBT
dHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0QXR0cmlidXRl
cyhFcnJvclN0cmluZyosIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxTdHJpbmc+PiYgcmVzdWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SW5zcGVjdE1v
ZGVFbmFibGVkKEVycm9yU3RyaW5nKiwgYm9vbCBlbmFibGVkLCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBoaWdobGlnaHRDb25maWcpOwogICAgIHZpcnR1YWwgdm9p
ZCByZXF1ZXN0Tm9kZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGludCog
bm9kZUlkKTsKICAgICB2aXJ0dWFsIHZvaWQgcHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiBwYXRoLCBpbnQqIG5vZGVJZCk7CiAgICAgdmlydHVhbCB2
b2lkIHB1c2hOb2RlQnlCYWNrZW5kSWRUb0Zyb250ZW5kKEVycm9yU3RyaW5nKiwgQmFja2VuZE5v
ZGVJZCwgaW50KiBub2RlSWQpOwogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlQmFja2VuZE5vZGVJ
ZHMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG5vZGVHcm91cCk7CiAgICAgdmlydHVhbCB2
b2lkIGhpZGVIaWdobGlnaHQoRXJyb3JTdHJpbmcqKTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlnaGxp
Z2h0UmVjdChFcnJvclN0cmluZyosIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRl
cyk7Ci0gICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodFF1YWQoRXJyb3JTdHJpbmcqLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBxdWFkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29sb3IsIGNv
bnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcyk7Ci0gICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdo
dE5vZGUoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgaGlnaGxp
Z2h0Q29uZmlnLCBjb25zdCBpbnQqIG5vZGVJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RJZCk7Ci0g
ICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodEZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiBmcmFtZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29sb3IpOworICAgIHZpcnR1YWwgdm9pZCBo
aWdobGlnaHRSZWN0KEVycm9yU3RyaW5nKiwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBo
ZWlnaHQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIGNvbG9yLCBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29sb3IsIGNv
bnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcyk7CisgICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdo
dFF1YWQoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJh
eT4mIHF1YWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIGNvbG9y
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29sb3Is
IGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcyk7CisgICAgdmlydHVhbCB2b2lkIGhpZ2hs
aWdodE5vZGUoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+JiBoaWdobGlnaHRDb25maWcsIGNvbnN0IGludCogbm9kZUlkLCBjb25zdCBTdHJpbmcq
IG9iamVjdElkKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0RnJhbWUoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4qIGNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
KiBvdXRsaW5lQ29sb3IpOwogCiAgICAgdmlydHVhbCB2b2lkIG1vdmVUbyhFcnJvclN0cmluZyos
IGludCBub2RlSWQsIGludCB0YXJnZXROb2RlSWQsIGNvbnN0IGludCogYW5jaG9yTm9kZUlkLCBp
bnQqIG5ld05vZGVJZCk7CiAgICAgdmlydHVhbCB2b2lkIHVuZG8oRXJyb3JTdHJpbmcqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVkbyhFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBtYXJr
VW5kb2FibGVTdGF0ZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBmb2N1cyhFcnJv
clN0cmluZyosIGludCBub2RlSWQpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRGaWxlSW5wdXRGaWxl
cyhFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4m
IGZpbGVzKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RmlsZUlucHV0RmlsZXMoRXJyb3JTdHJpbmcq
LCBpbnQgbm9kZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mIGZp
bGVzKTsKIAogICAgIHZvaWQgZ2V0RXZlbnRMaXN0ZW5lcnMoTm9kZSosIFZlY3RvcjxFdmVudExp
c3RlbmVySW5mbz4mIGxpc3RlbmVyc0FycmF5LCBib29sIGluY2x1ZGVBbmNlc3RvcnMpOwogCkBA
IC0xODIsNyArMTg2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFN0cmluZyBkb2N1bWVudFVS
TFN0cmluZyhEb2N1bWVudCopOwogCi0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0PiByZXNvbHZlTm9kZShOb2RlKiwgY29uc3QgU3RyaW5nJiBvYmplY3RH
cm91cCk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpS
ZW1vdGVPYmplY3Q+IHJlc29sdmVOb2RlKE5vZGUqLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3Vw
KTsKICAgICBib29sIGhhbmRsZU1vdXNlUHJlc3MoKTsKICAgICBib29sIGhhbmRsZVRvdWNoRXZl
bnQoTm9kZSopOwogICAgIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgSGl0VGVz
dFJlc3VsdCYsIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MpOwpAQCAtMjEwLDggKzIxNCw4IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yRE9NQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50
cyosIEluc3BlY3RvclBhZ2VBZ2VudCosIEluamVjdGVkU2NyaXB0TWFuYWdlciosIEluc3BlY3Rv
ck92ZXJsYXkqLCBJbnNwZWN0b3JDbGllbnQqKTsKIAotICAgIHZvaWQgc2V0U2VhcmNoaW5nRm9y
Tm9kZShFcnJvclN0cmluZyosIGJvb2wgZW5hYmxlZCwgSW5zcGVjdG9yT2JqZWN0KiBoaWdobGln
aHRDb25maWcpOwotICAgIFBhc3NPd25QdHI8SGlnaGxpZ2h0Q29uZmlnPiBoaWdobGlnaHRDb25m
aWdGcm9tSW5zcGVjdG9yT2JqZWN0KEVycm9yU3RyaW5nKiwgSW5zcGVjdG9yT2JqZWN0KiBoaWdo
bGlnaHRJbnNwZWN0b3JPYmplY3QpOworICAgIHZvaWQgc2V0U2VhcmNoaW5nRm9yTm9kZShFcnJv
clN0cmluZyosIGJvb2wgZW5hYmxlZCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIGhpZ2hs
aWdodENvbmZpZyk7CisgICAgUGFzc093blB0cjxIaWdobGlnaHRDb25maWc+IGhpZ2hsaWdodENv
bmZpZ0Zyb21JbnNwZWN0b3JPYmplY3QoRXJyb3JTdHJpbmcqLCBJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdCogaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsKIAogICAgIC8vIE5vZGUtcmVsYXRl
ZCBtZXRob2RzLgogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8Tm9kZT4sIGludD4gTm9kZVRv
SWRNYXA7CkBAIC0yMjYsMTggKzIzMCwxOCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBoYXNCcmVh
a3BvaW50KE5vZGUqLCBpbnQgdHlwZSk7CiAgICAgdm9pZCB1cGRhdGVTdWJ0cmVlQnJlYWtwb2lu
dHMoTm9kZSogcm9vdCwgdWludDMyX3Qgcm9vdE1hc2ssIGJvb2wgdmFsdWUpOwotICAgIHZvaWQg
ZGVzY3JpcHRpb25Gb3JET01FdmVudChOb2RlKiB0YXJnZXQsIGludCBicmVha3BvaW50VHlwZSwg
Ym9vbCBpbnNlcnRpb24sIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkZXNjcmlwdGlvbik7
CisgICAgdm9pZCBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KE5vZGUqIHRhcmdldCwgaW50IGJyZWFr
cG9pbnRUeXBlLCBib29sIGluc2VydGlvbiwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4gZGVzY3JpcHRpb24pOwogCi0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9N
OjpOb2RlPiBidWlsZE9iamVjdEZvck5vZGUoTm9kZSosIGludCBkZXB0aCwgTm9kZVRvSWRNYXAq
KTsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBidWlsZEFycmF5
Rm9yRWxlbWVudEF0dHJpYnV0ZXMoRWxlbWVudCopOwotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpET006Ok5vZGU+PiBidWlsZEFycmF5Rm9yQ29udGFpbmVy
Q2hpbGRyZW4oTm9kZSogY29udGFpbmVyLCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFwKiBub2Rlc01h
cCk7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpFdmVudExpc3RlbmVyPiBidWls
ZE9iamVjdEZvckV2ZW50TGlzdGVuZXIoY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImLCBj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgTm9kZSosIGNvbnN0IFN0cmluZyogb2JqZWN0
R3JvdXBJZCk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5v
ZGU+IGJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCopOwor
ICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gYnVp
bGRBcnJheUZvckVsZW1lbnRBdHRyaWJ1dGVzKEVsZW1lbnQqKTsKKyAgICBQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6
Tm9kZT4+IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihOb2RlKiBjb250YWluZXIsIGlu
dCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gYnVpbGRPYmplY3RGb3JFdmVudExp
c3RlbmVyKGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiwgY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIE5vZGUqLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwSWQpOwogCiAgICAg
Tm9kZSogbm9kZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKTsKIAogICAgIHZvaWQgZGlzY2Fy
ZEJpbmRpbmdzKCk7CiAKLSAgICB2b2lkIGlubmVySGlnaGxpZ2h0UXVhZChQYXNzT3duUHRyPEZs
b2F0UXVhZD4sIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNv
b3JkaW5hdGVzKTsKKyAgICB2b2lkIGlubmVySGlnaGxpZ2h0UXVhZChQYXNzT3duUHRyPEZsb2F0
UXVhZD4sIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIGNvbG9yLCBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29sb3IsIGNv
bnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcyk7CiAKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQq
IG1fcGFnZUFnZW50OwogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDggKzQwLDggQEAKICNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRl
ICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZh
bHVlcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgewpA
QCAtNjEsNiArNjEsOCBAQCBjb25zdCBpbnQgZG9tQnJlYWtwb2ludERlcml2ZWRUeXBlU2hpZnQK
IAogfQogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFBhc3NPd25QdHI8SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudD4gSW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudDo6Y3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCwgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCog
ZGVidWdnZXJBZ2VudCwgSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50KQpAQCAtNjksNyAr
NzEsNyBAQCBQYXNzT3duUHRyPEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ+IEluCiB9CiAKIElu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yRE9NQWdlbnQqIGRv
bUFnZW50LCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50LCBJbnNwZWN0b3JB
Z2VudCopCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJET01EZWJ1Z2dl
ciIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJ
TGl0ZXJhbCgiRE9NRGVidWdnZXIiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fZG9t
QWdlbnQoZG9tQWdlbnQpCiAgICAgLCBtX2RlYnVnZ2VyQWdlbnQoZGVidWdnZXJBZ2VudCkKICAg
ICAsIG1fcGF1c2VJbk5leHRFdmVudExpc3RlbmVyKGZhbHNlKQpAQCAtMTExLDcgKzExMyw3IEBA
IHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlzYWJsZSgKICAgICBjbGVhcigpOwog
fQogCi12b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6
OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikK
IHsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yRE9NRGVidWdnZXJCYWNrZW5k
RGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KQEAgLTMxNCw3
ICszMTYsNyBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRlc2NyaXB0CiAgICAg
aWYgKCgxIDw8IGJyZWFrcG9pbnRUeXBlKSAmIGluaGVyaXRhYmxlRE9NQnJlYWtwb2ludFR5cGVz
TWFzaykgewogICAgICAgICAvLyBGb3IgaW5oZXJpdGFibGUgYnJlYWtwb2ludCB0eXBlcywgdGFy
Z2V0IG5vZGUgaXNuJ3QgYWx3YXlzIHRoZSBzYW1lIGFzIHRoZSBub2RlIHRoYXQgb3ducyBhIGJy
ZWFrcG9pbnQuCiAgICAgICAgIC8vIFRhcmdldCBub2RlIG1heSBiZSB1bmtub3duIHRvIGZyb250
ZW5kLCBzbyB3ZSBuZWVkIHRvIHB1c2ggaXQgZmlyc3QuCi0gICAgICAgIFJlZlB0cjxUeXBlQnVp
bGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiB0YXJnZXROb2RlT2JqZWN0ID0gbV9kb21BZ2Vu
dC0+cmVzb2x2ZU5vZGUodGFyZ2V0LCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpiYWNrdHJhY2VP
YmplY3RHcm91cCk7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q+IHRhcmdldE5vZGVPYmplY3QgPSBtX2RvbUFnZW50LT5yZXNvbHZl
Tm9kZSh0YXJnZXQsIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJhY2t0cmFjZU9iamVjdEdyb3Vw
KTsKICAgICAgICAgZGVzY3JpcHRpb24tPnNldFZhbHVlKCJ0YXJnZXROb2RlIiwgdGFyZ2V0Tm9k
ZU9iamVjdCk7CiAKICAgICAgICAgLy8gRmluZCBicmVha3BvaW50IG93bmVyIG5vZGUuCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50LmgJKHJldmlzaW9uIDE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDI2ICszMywz
MCBAQAogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRShJTlNQRUNU
T1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBJ
bnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworfQorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBJbnNwZWN0b3JBZ2VudDsKIGNsYXNzIEluc3Bl
Y3RvckRPTUFnZW50OwogY2xhc3MgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDsKLWNsYXNzIEluc3Bl
Y3Rvck9iamVjdDsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBOb2RlOwogCiB0
eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpMaXN0ZW5lciwgcHVibGljIEluc3BlY3RvckRPTURlYnVnZ2VyQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQgOiBwdWJsaWMg
SW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6TGlzdGVu
ZXIsIHB1YmxpYyBJbnNwZWN0b3JET01EZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCk7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudD4g
Y3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JET01BZ2VudCosIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQqLCBJbnNwZWN0b3JBZ2VudCopOwpAQCAtNzksNyArODMsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCB3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJsKTsK
ICAgICB2b2lkIHBhdXNlT25OYXRpdmVFdmVudElmTmVlZGVkKGJvb2wgaXNET01FdmVudCwgY29u
c3QgU3RyaW5nJiBldmVudE5hbWUsIGJvb2wgc3luY2hyb25vdXMpOwogCi0gICAgdmlydHVhbCB2
b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
LCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc2NhcmRBZ2VudCgpOwogCkBAIC05Myw3ICs5Nyw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKCk7CiAgICAgdm9pZCBkaXNh
YmxlKCk7CiAKLSAgICB2b2lkIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQoTm9kZSogdGFyZ2V0LCBp
bnQgYnJlYWtwb2ludFR5cGUsIGJvb2wgaW5zZXJ0aW9uLCBJbnNwZWN0b3JPYmplY3QqIGRlc2Ny
aXB0aW9uKTsKKyAgICB2b2lkIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQoTm9kZSogdGFyZ2V0LCBp
bnQgYnJlYWtwb2ludFR5cGUsIGJvb2wgaW5zZXJ0aW9uLCBJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdCogZGVzY3JpcHRpb24pOwogICAgIHZvaWQgdXBkYXRlU3VidHJlZUJyZWFrcG9pbnRzKE5v
ZGUqLCB1aW50MzJfdCByb290TWFzaywgYm9vbCBzZXQpOwogICAgIGJvb2wgaGFzQnJlYWtwb2lu
dChOb2RlKiwgaW50IHR5cGUpOwogICAgIHZvaWQgZGlzY2FyZEJpbmRpbmdzKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50LmNwcAkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDYg
QEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVz
LmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIK
ICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKQEAgLTUwLDEzICs0OSwxNSBAQAogI2luY2x1ZGUgIlN0
b3JhZ2VBcmVhLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZS5oIgogI2luY2x1ZGUgIlZv
aWRDYWxsYmFjay5oIgotCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6Okluc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKLSAgICA6IEluc3BlY3RvckJhc2VBZ2Vu
dChBU0NJSUxpdGVyYWwoIkRPTVN0b3JhZ2UiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6
IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIkRPTVN0b3JhZ2UiKSwgaW5zdHJ1bWVu
dGluZ0FnZW50cykKICAgICAsIG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkKICAgICAsIG1fZW5hYmxl
ZChmYWxzZSkKIHsKQEAgLTY5LDcgKzcwLDcgQEAgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Ojp+
SW5zcGVjdG9yRE9NUwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cyA9IDA7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
IGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3JET01TdG9yYWdlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVu
ZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JET01TdG9yYWdl
QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CkBAIC05
Myw3ICs5NCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaXNhYmxlKEUKICAg
ICBtX2VuYWJsZWQgPSBmYWxzZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6
OmdldERPTVN0b3JhZ2VJdGVtcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+JiBzdG9yYWdlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8
VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+PiYgaXRlbXMpCit2b2lkIEluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudDo6Z2V0RE9NU3RvcmFnZUl0ZW1zKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHN0b3JhZ2VJZCwgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmlu
Zz4+PiYgaXRlbXMpCiB7CiAgICAgRnJhbWUqIGZyYW1lOwogICAgIFJlZlB0cjxTdG9yYWdlQXJl
YT4gc3RvcmFnZUFyZWEgPSBmaW5kU3RvcmFnZUFyZWEoZXJyb3JTdHJpbmcsIHN0b3JhZ2VJZCwg
ZnJhbWUpOwpAQCAtMTAzLDEzICsxMDQsMTMgQEAgdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQ6OmdldERPTVN0bwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPFR5cGVC
dWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4+IHN0b3JhZ2VJdGVtcyA9
IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj46OmNyZWF0ZSgp
OworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+Pj4gc3RvcmFnZUl0ZW1zID0gSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj46OmNy
ZWF0ZSgpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0b3JhZ2VBcmVhLT5sZW5n
dGgoKTsgKytpKSB7CiAgICAgICAgIFN0cmluZyBrZXkgPSBzdG9yYWdlQXJlYS0+a2V5KGkpOwog
ICAgICAgICBTdHJpbmcgdmFsdWUgPSBzdG9yYWdlQXJlYS0+aXRlbShrZXkpOwogCi0gICAgICAg
IFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gZW50cnkgPSBUeXBlQnVpbGRlcjo6
QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcnJheTxTdHJpbmc+PiBlbnRyeSA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFy
cmF5PFN0cmluZz46OmNyZWF0ZSgpOwogICAgICAgICBlbnRyeS0+YWRkSXRlbShrZXkpOwogICAg
ICAgICBlbnRyeS0+YWRkSXRlbSh2YWx1ZSk7CiAgICAgICAgIHN0b3JhZ2VJdGVtcy0+YWRkSXRl
bShlbnRyeS5yZWxlYXNlKCkpOwpAQCAtMTU3LDkgKzE1OCw5IEBAIFN0cmluZyBJbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQ6OnN0b3JhZ2UKICAgICByZXR1cm4gc3RvcmFnZUlkKHNlY3VyaXR5T3Jp
Z2luLmdldCgpLCBpc0xvY2FsU3RvcmFnZSktPnRvSlNPTlN0cmluZygpOwogfQogCi1QYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpET01TdG9yYWdlOjpTdG9yYWdlSWQ+IEluc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudDo6c3RvcmFnZUlkKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgYm9vbCBp
c0xvY2FsU3RvcmFnZSkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NU3Rv
cmFnZTo6U3RvcmFnZUlkPiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OnN0b3JhZ2VJZChTZWN1
cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGJvb2wgaXNMb2NhbFN0b3JhZ2UpCiB7Ci0gICAg
cmV0dXJuIFR5cGVCdWlsZGVyOjpET01TdG9yYWdlOjpTdG9yYWdlSWQ6OmNyZWF0ZSgpCisgICAg
cmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZDo6Y3Jl
YXRlKCkKICAgICAgICAgLnNldFNlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luLT50b1Jhd1N0
cmluZygpKQogICAgICAgICAuc2V0SXNMb2NhbFN0b3JhZ2UoaXNMb2NhbFN0b3JhZ2UpLnJlbGVh
c2UoKTsKIH0KQEAgLTE2OSw3ICsxNzAsNyBAQCB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dDo6ZGlkRGlzcGF0CiAgICAgaWYgKCFtX2Zyb250ZW5kRGlzcGF0Y2hlciB8fCAhbV9lbmFibGVk
KQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTVN0b3JhZ2U6
OlN0b3JhZ2VJZD4gaWQgPSBzdG9yYWdlSWQoc2VjdXJpdHlPcmlnaW4sIHN0b3JhZ2VUeXBlID09
IExvY2FsU3RvcmFnZSk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTVN0
b3JhZ2U6OlN0b3JhZ2VJZD4gaWQgPSBzdG9yYWdlSWQoc2VjdXJpdHlPcmlnaW4sIHN0b3JhZ2VU
eXBlID09IExvY2FsU3RvcmFnZSk7CiAKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlci0+ZG9tU3RvcmFnZUl0ZW1zQ2xlYXJlZChpZCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dC5oCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDI3ICsyOSwzMCBAQAog
I2lmbmRlZiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnRfaAogI2RlZmluZSBJbnNwZWN0b3JET01T
dG9yYWdlQWdlbnRfaAogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVk
ZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2Vi
QWdlbnRCYXNlLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWEuaCIKICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yQXJy
YXk7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRnJhbWU7Ci1jbGFzcyBJbnNw
ZWN0b3JBcnJheTsKIGNsYXNzIEluc3BlY3RvckRPTVN0b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI7
CiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwog
Y2xhc3MgUGFnZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU3RvcmFnZTsKLWNsYXNz
IFN0b3JhZ2VBcmVhOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGlj
IEluc3BlY3RvckRPTVN0b3JhZ2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGlj
IEluc3BlY3RvckRPTVN0b3JhZ2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudD4gY3JlYXRlKElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2Vu
dCogcGFnZUFnZW50KQogICAgIHsKQEAgLTU3LDE5ICs2MCwxOSBAQCBwdWJsaWM6CiAgICAgfQog
ICAgIH5JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwog
CiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZyb250LWVuZC4KICAgICB2aXJ0dWFsIHZvaWQgZW5h
YmxlKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcq
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0RE9NU3RvcmFnZUl0ZW1zKEVycm9yU3RyaW5nKiwgY29u
c3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHN0b3JhZ2VJZCwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcnJheTxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4+JiBpdGVtcyk7Ci0gICAgdmlydHVh
bCB2b2lkIHNldERPTVN0b3JhZ2VJdGVtKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4mIHN0b3JhZ2VJZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYg
dmFsdWUpOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVET01TdG9yYWdlSXRlbShFcnJvclN0cmlu
ZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBzdG9yYWdlSWQsIGNvbnN0IFN0cmlu
ZyYga2V5KTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0RE9NU3RvcmFnZUl0ZW1zKEVycm9yU3RyaW5n
KiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgc3RvcmFnZUlkLCBS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8U3RyaW5nPj4+JiBpdGVtcyk7CisgICAgdmlydHVhbCB2b2lkIHNldERPTVN0b3Jh
Z2VJdGVtKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0PiYgc3RvcmFnZUlkLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7
CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZURPTVN0b3JhZ2VJdGVtKEVycm9yU3RyaW5nKiwgY29u
c3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgc3RvcmFnZUlkLCBjb25zdCBT
dHJpbmcmIGtleSk7CiAKICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgaW5qZWN0ZWQgc2NyaXB0Lgog
ICAgIFN0cmluZyBzdG9yYWdlSWQoU3RvcmFnZSopOwotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZD4gc3RvcmFnZUlkKFNlY3VyaXR5T3JpZ2luKiwgYm9v
bCBpc0xvY2FsU3RvcmFnZSk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpET01TdG9yYWdlOjpTdG9yYWdlSWQ+IHN0b3JhZ2VJZChTZWN1cml0eU9yaWdpbiosIGJvb2wg
aXNMb2NhbFN0b3JhZ2UpOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uCiAgICAgdm9pZCBkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudChjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgU3Rv
cmFnZVR5cGUsIFNlY3VyaXR5T3JpZ2luKiwgUGFnZSopOwpAQCAtNzgsNyArODEsNyBAQCBwcml2
YXRlOgogCiAgICAgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMq
LCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKIAotICAgIFBhc3NSZWZQdHI8U3RvcmFnZUFyZWE+IGZp
bmRTdG9yYWdlQXJlYShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
JiwgRnJhbWUqJik7CisgICAgUGFzc1JlZlB0cjxTdG9yYWdlQXJlYT4gZmluZFN0b3JhZ2VBcmVh
KEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYs
IEZyYW1lKiYpOwogCiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRE9NU3RvcmFnZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9m
cm9udGVuZERpc3BhdGNoZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRGF0YWJhc2VBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDggKzM3LDYgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xk
ZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yRnJvbnRlbmQuaCIKLQotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2lu
Y2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJTUUxFcnJvci5oIgogI2lu
Y2x1ZGUgIlNRTFJlc3VsdFNldC5oIgpAQCAtNTAsMTggKzQ4LDIwIEBACiAjaW5jbHVkZSAiU1FM
VHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiU1FMVmFsdWUuaCIKICNpbmNs
dWRlICJWb2lkQ2FsbGJhY2suaCIKLQorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1
ZXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIHR5cGVkZWYgV2ViQ29yZTo6SW5zcGVj
dG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxDYWxsYmFjayBF
eGVjdXRlU1FMQ2FsbGJhY2s7CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIHsKIAogdm9pZCByZXBvcnRUcmFuc2FjdGlvbkZh
aWxlZChFeGVjdXRlU1FMQ2FsbGJhY2sqIHJlcXVlc3RDYWxsYmFjaywgU1FMRXJyb3IqIGVycm9y
KQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkVycm9yPiBlcnJvck9iamVj
dCA9IFR5cGVCdWlsZGVyOjpEYXRhYmFzZTo6RXJyb3I6OmNyZWF0ZSgpCisgICAgUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpFcnJvcj4gZXJyb3JPYmplY3QgPSBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpEYXRhYmFzZTo6RXJyb3I6OmNyZWF0ZSgpCiAgICAgICAgIC5z
ZXRNZXNzYWdlKGVycm9yLT5tZXNzYWdlKCkpCiAgICAgICAgIC5zZXRDb2RlKGVycm9yLT5jb2Rl
KCkpOwogICAgIHJlcXVlc3RDYWxsYmFjay0+c2VuZFN1Y2Nlc3MoMCwgMCwgZXJyb3JPYmplY3Qu
cmVsZWFzZSgpKTsKQEAgLTgwLDEyICs4MCwxMiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBT
UUxSZXN1bHRTZXRSb3dMaXN0KiByb3dMaXN0ID0gcmVzdWx0U2V0LT5yb3dzKCk7CiAKLSAgICAg
ICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBjb2x1bW5OYW1lcyA9IFR5cGVC
dWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IGNvbHVtbk5hbWVzID0gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgICAgIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBjb2x1bW5zID0gcm93TGlzdC0+Y29sdW1uTmFtZXMoKTsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBjb2x1bW5zLnNpemUoKTsgKytpKQogICAgICAgICAgICAgY29s
dW1uTmFtZXMtPmFkZEl0ZW0oY29sdW1uc1tpXSk7CiAKLSAgICAgICAgUmVmUHRyPFR5cGVCdWls
ZGVyOjpBcnJheTxJbnNwZWN0b3JWYWx1ZT4+IHZhbHVlcyA9IFR5cGVCdWlsZGVyOjpBcnJheTxJ
bnNwZWN0b3JWYWx1ZT46OmNyZWF0ZSgpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yVmFsdWU+PiB2YWx1ZXMgPSBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcnJheTxJbnNwZWN0b3JWYWx1ZT46OmNyZWF0ZSgpOwogICAgICAgICBjb25zdCBW
ZWN0b3I8U1FMVmFsdWU+JiBkYXRhID0gcm93TGlzdC0+dmFsdWVzKCk7CiAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgZGF0YS5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgY29uc3Qg
U1FMVmFsdWUmIHZhbHVlID0gcm93TGlzdC0+dmFsdWVzKClbaV07CkBAIC0yMTEsNyArMjExLDcg
QEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpjbGVhclJlc291cgogfQogCiBJbnNwZWN0
b3JEYXRhYmFzZUFnZW50OjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50KEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlM
aXRlcmFsKCJEYXRhYmFzZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9y
QWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiRGF0YWJhc2UiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykK
ICAgICAsIG1fZW5hYmxlZChmYWxzZSkKIHsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNl
dEluc3BlY3RvckRhdGFiYXNlQWdlbnQodGhpcyk7CkBAIC0yMjIsNyArMjIyLDcgQEAgSW5zcGVj
dG9yRGF0YWJhc2VBZ2VudDo6fkluc3BlY3RvckRhdGFiYQogICAgIG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy0+c2V0SW5zcGVjdG9yRGF0YWJhc2VBZ2VudCgwKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JE
YXRhYmFzZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBi
YWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBm
cm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0
Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAg
bV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CkBAIC0yNTQsMTQgKzI1NCwxNCBAQCB2
b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpc2FibGUoRXJyCiAgICAgbV9lbmFibGVkID0g
ZmFsc2U7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6Z2V0RGF0YWJhc2VUYWJs
ZU5hbWVzKEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+JiBuYW1lcykKK3ZvaWQgSW5zcGVjdG9yRGF0
YWJhc2VBZ2VudDo6Z2V0RGF0YWJhc2VUYWJsZU5hbWVzKEVycm9yU3RyaW5nKiBlcnJvciwgY29u
c3QgU3RyaW5nJiBkYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8U3RyaW5nPj4mIG5hbWVzKQogewogICAgIGlmICghbV9lbmFibGVkKSB7CiAgICAgICAgICpl
cnJvciA9ICJEYXRhYmFzZSBhZ2VudCBpcyBub3QgZW5hYmxlZCI7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBuYW1lcyA9IFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUo
KTsKKyAgICBuYW1lcyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz46OmNy
ZWF0ZSgpOwogCiAgICAgRGF0YWJhc2UqIGRhdGFiYXNlID0gZGF0YWJhc2VGb3JJZChkYXRhYmFz
ZUlkKTsKICAgICBpZiAoZGF0YWJhc2UpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaAkocmV2aXNpb24gMTYwNDA0KQorKysg
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsMjIgKzMxLDI2IEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKSAmJiBF
TkFCTEUoU1FMX0RBVEFCQVNFKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisj
aW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yRnJvbnRlbmQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3Mg
SW5zcGVjdG9yQXJyYXk7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGF0YWJh
c2U7Ci1jbGFzcyBJbnNwZWN0b3JBcnJheTsKIGNsYXNzIEluc3BlY3RvckRhdGFiYXNlUmVzb3Vy
Y2U7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0
cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JC
YXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxl
ciB7CitjbGFzcyBJbnNwZWN0b3JEYXRhYmFzZUFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50
QmFzZSwgcHVibGljIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JEYXRhYmFzZUFnZW50PiBj
cmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICB7CkBA
IC01NCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgfkluc3BlY3RvckRhdGFiYXNlQWdl
bnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgdm9pZCBjbGVhclJlc291cmNlcygp
OwpAQCAtNjIsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZyb250
LWVuZC4KICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVh
bCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJh
c2VUYWJsZU5hbWVzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+JiBuYW1lcyk7CisgICAgdmlydHVhbCB2b2lk
IGdldERhdGFiYXNlVGFibGVOYW1lcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZGF0YWJh
c2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+JiBuYW1l
cyk7CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUwoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIGRhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgcXVlcnksIFBhc3NSZWZQdHI8RXhlY3V0ZVNR
TENhbGxiYWNrPik7CiAKICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgaW5qZWN0ZWQgc2NyaXB0LgpJ
bmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRh
YmFzZVJlc291cmNlLmNwcAkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Niw3ICszNiw5IEBACiAKICNpbmNsdWRlICJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckZyb250ZW5kLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCisjaW5jbHVkZSA8aW5z
cGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgorCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU4LDcgKzYwLDcgQEAgSW5zcGVjdG9yRGF0YWJh
c2VSZXNvdXJjZTo6SW5zcGVjdG9yRGF0YQogCiB2b2lkIEluc3BlY3RvckRhdGFiYXNlUmVzb3Vy
Y2U6OmJpbmQoSW5zcGVjdG9yRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXIqIGRhdGFiYXNlRnJv
bnRlbmREaXNwYXRjaGVyKQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkRh
dGFiYXNlPiBqc29uT2JqZWN0ID0gVHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpEYXRhYmFzZTo6Y3Jl
YXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkRhdGFi
YXNlPiBqc29uT2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkRhdGFi
YXNlOjpjcmVhdGUoKQogICAgICAgICAuc2V0SWQobV9pZCkKICAgICAgICAgLnNldERvbWFpbiht
X2RvbWFpbikKICAgICAgICAgLnNldE5hbWUobV9uYW1lKQpJbmRleDogU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAkocmV2aXNpb24g
MTYwNDA0KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwyNCArMzgsMjcgQEAKICNpbmNsdWRlICJJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5o
IgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJSZWd1bGFyRXhw
cmVzc2lvbi5oIgogI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCi0jaW5jbHVkZSAiU2Ny
aXB0T2JqZWN0LmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0T2JqZWN0Lmg+CisjaW5jbHVk
ZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9y
VmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLXVzaW5nIFdlYkNv
cmU6OlR5cGVCdWlsZGVyOjpBcnJheTsKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpEZWJ1
Z2dlcjo6RnVuY3Rpb25EZXRhaWxzOwotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkRlYnVn
Z2VyOjpTY3JpcHRJZDsKLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q7Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTsKK3VzaW5nIElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM7Cit1c2luZyBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6U2NyaXB0SWQ7Cit1c2luZyBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q7CisKK3VzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgY2hhciogSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6YmFja3RyYWNlT2JqZWN0R3JvdXAgPSAiYmFja3RyYWNlIjsKIAog
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudChJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGlu
amVjdGVkU2NyaXB0TWFuYWdlcikKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVy
YWwoIkRlYnVnZ2VyIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2Vu
dEJhc2UoQVNDSUlMaXRlcmFsKCJEZWJ1Z2dlciIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAg
ICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwg
bV9wYXVzZWRTY3JpcHRTdGF0ZSgwKQogICAgICwgbV9jb250aW51ZVRvTG9jYXRpb25CcmVha3Bv
aW50SUQobm9CcmVha3BvaW50SUQpCkBAIC0xMzYsNyArMTM5LDcgQEAgdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpkaXNhYmxlKEVycgogICAgIGRpc2FibGUoKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5k
RGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7
CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckRlYnVnZ2VyQmFja2VuZERpc3Bh
dGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CkBAIC0yMDAsMTUgKzIwMywx
NSBAQCBzdGF0aWMgYm9vbCBtYXRjaGVzKGNvbnN0IFN0cmluZyYgdXJsLCBjCiAKIHN0YXRpYyBi
b29sIGJyZWFrcG9pbnRBY3Rpb25UeXBlRm9yU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZVN0cmlu
ZywgU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGUqIG91dHB1dCkKIHsKLSAgICBpZiAodHlwZVN0
cmluZyA9PSBUeXBlQnVpbGRlcjo6Z2V0RW51bUNvbnN0YW50VmFsdWUoVHlwZUJ1aWxkZXI6OkRl
YnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlOjpMb2cpKSB7CisgICAgaWYgKHR5cGVTdHJp
bmcgPT0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU6OkxvZykp
IHsKICAgICAgICAgKm91dHB1dCA9IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlTG9nOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgaWYgKHR5cGVTdHJpbmcgPT0gVHlwZUJ1aWxk
ZXI6OmdldEVudW1Db25zdGFudFZhbHVlKFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2lu
dEFjdGlvbjo6VHlwZTo6RXZhbHVhdGUpKSB7CisgICAgaWYgKHR5cGVTdHJpbmcgPT0gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU6OkV2YWx1YXRlKSkgewogICAg
ICAgICAqb3V0cHV0ID0gU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVFdmFsdWF0ZTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIGlmICh0eXBlU3RyaW5nID09IFR5cGVCdWlsZGVy
OjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRB
Y3Rpb246OlR5cGU6OlNvdW5kKSkgeworICAgIGlmICh0eXBlU3RyaW5nID09IEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlOjpTb3VuZCkpIHsKICAgICAgICAgKm91
dHB1dCA9IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlU291bmQ7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KQEAgLTI1NSw5ICsyNTgsOSBAQCBzdGF0aWMgYm9vbCBicmVha3BvaW50QWN0
aW9uc0Zyb21Qcm90b2NvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
aW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkwsIGNvbnN0IFN0
cmluZyogY29uc3Qgb3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBjb25zdCBvcHRpb25hbENv
bHVtbk51bWJlciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG9wdGlvbnMsIFR5cGVC
dWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiBvdXRCcmVha3BvaW50SWRlbnRpZmllciwg
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9u
Pj4mIGxvY2F0aW9ucykKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2lu
dEJ5VXJsKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0
cmluZyogY29uc3Qgb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkxS
ZWdleCwgY29uc3QgaW50KiBjb25zdCBvcHRpb25hbENvbHVtbk51bWJlciwgY29uc3QgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4qIG9wdGlvbnMsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVn
Z2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9pbnRJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6
OkxvY2F0aW9uPj4mIGxvY2F0aW9ucykKIHsKLSAgICBsb2NhdGlvbnMgPSBBcnJheTxUeXBlQnVp
bGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPjo6Y3JlYXRlKCk7CisgICAgbG9jYXRpb25zID0gQXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPjo6Y3JlYXRlKCk7
CiAgICAgaWYgKCFvcHRpb25hbFVSTCA9PSAhb3B0aW9uYWxVUkxSZWdleCkgewogICAgICAgICAq
ZXJyb3JTdHJpbmcgPSAiRWl0aGVyIHVybCBvciB1cmxSZWdleCBtdXN0IGJlIHNwZWNpZmllZC4i
OwogICAgICAgICByZXR1cm47CkBAIC0yOTQsNyArMjk3LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpzZXRCcmVha3BvaQogICAgICAgICBpZiAoIW1hdGNoZXMoc2NyaXB0VVJMLCB1
cmwsIGlzUmVnZXgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgUmVmUHRyPFR5
cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IGxvY2F0aW9uID0gcmVzb2x2ZUJyZWFrcG9p
bnQoYnJlYWtwb2ludElkZW50aWZpZXIsIGl0LT5rZXksIGJyZWFrcG9pbnQpOworICAgICAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiBsb2NhdGlv
biA9IHJlc29sdmVCcmVha3BvaW50KGJyZWFrcG9pbnRJZGVudGlmaWVyLCBpdC0+a2V5LCBicmVh
a3BvaW50KTsKICAgICAgICAgaWYgKGxvY2F0aW9uKQogICAgICAgICAgICAgbG9jYXRpb25zLT5h
ZGRJdGVtKGxvY2F0aW9uKTsKICAgICB9CkBAIC0zMTYsNyArMzE5LDcgQEAgc3RhdGljIGJvb2wg
cGFyc2VMb2NhdGlvbihFcnJvclN0cmluZyogZQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgbG9jYXRpb24sIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvcHRpb25zLCBUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJy
ZWFrcG9pbnRJZCogb3V0QnJlYWtwb2ludElkZW50aWZpZXIsIFJlZlB0cjxUeXBlQnVpbGRlcjo6
RGVidWdnZXI6OkxvY2F0aW9uPiYgYWN0dWFsTG9jYXRpb24pCit2b2lkIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OnNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgbG9jYXRpb24sIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+KiBvcHRpb25zLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtw
b2ludElkKiBvdXRCcmVha3BvaW50SWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4mIGFjdHVhbExvY2F0aW9uKQogewogICAgIFNvdXJj
ZUlEIHNvdXJjZUlEOwogICAgIHVuc2lnbmVkIGxpbmVOdW1iZXI7CkBAIC0zODMsNyArMzg2LDcg
QEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpjb250aW51ZVRvTAogICAgIHJlc3VtZShl
cnJvclN0cmluZyk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2Nh
dGlvbj4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzb2x2ZUJyZWFrcG9pbnQoY29uc3QgU3Ry
aW5nJiBicmVha3BvaW50SWRlbnRpZmllciwgU291cmNlSUQgc291cmNlSUQsIGNvbnN0IFNjcmlw
dEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzb2x2ZUJy
ZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWRlbnRpZmllciwgU291cmNlSUQgc291
cmNlSUQsIGNvbnN0IFNjcmlwdEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQpCiB7CiAgICAgU2NyaXB0
c01hcDo6aXRlcmF0b3Igc2NyaXB0SXRlcmF0b3IgPSBtX3NjcmlwdHMuZmluZChzb3VyY2VJRCk7
CiAgICAgaWYgKHNjcmlwdEl0ZXJhdG9yID09IG1fc2NyaXB0cy5lbmQoKSkKQEAgLTQwMywxNCAr
NDA2LDE0IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGkKICAgICAg
ICAgZGVidWdTZXJ2ZXJCcmVha3BvaW50SURzSXRlcmF0b3IgPSBtX2JyZWFrcG9pbnRJZGVudGlm
aWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHMuc2V0KGJyZWFrcG9pbnRJZGVudGlmaWVyLCBW
ZWN0b3I8QnJlYWtwb2ludElEPigpKS5pdGVyYXRvcjsKICAgICBkZWJ1Z1NlcnZlckJyZWFrcG9p
bnRJRHNJdGVyYXRvci0+dmFsdWUuYXBwZW5kKGRlYnVnU2VydmVyQnJlYWtwb2ludElEKTsKIAot
ICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiBsb2NhdGlvbiA9IFR5
cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb246OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gbG9jYXRpb24gPSBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb246OmNyZWF0ZSgpCiAgICAgICAgIC5z
ZXRTY3JpcHRJZChTdHJpbmc6Om51bWJlcihzb3VyY2VJRCkpCiAgICAgICAgIC5zZXRMaW5lTnVt
YmVyKGFjdHVhbExpbmVOdW1iZXIpOwogICAgIGxvY2F0aW9uLT5zZXRDb2x1bW5OdW1iZXIoYWN0
dWFsQ29sdW1uTnVtYmVyKTsKICAgICByZXR1cm4gbG9jYXRpb247CiB9CiAKLXN0YXRpYyBQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gc2NyaXB0VG9JbnNwZWN0b3JPYmplY3QoU2NyaXB0T2Jq
ZWN0IHNjcmlwdE9iamVjdCkKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gc2Ny
aXB0VG9JbnNwZWN0b3JPYmplY3QoRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IHNjcmlwdE9iamVj
dCkKIHsKICAgICBpZiAoc2NyaXB0T2JqZWN0Lmhhc05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJu
IDA7CkBAIC00MjAsNyArNDIzLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBzY3JpcAogICAgIHJldHVybiB2YWx1ZS0+YXNPYmplY3QoKTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpzZWFyY2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25z
dCBTdHJpbmcmIHNjcmlwdElEU3RyLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBj
b25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNS
ZWdleCwgUmVmUHRyPEFycmF5PFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hNYXRj
aD4+JiByZXN1bHRzKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZWFyY2hJbkNvbnRl
bnQoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmlwdElEU3RyLCBjb25zdCBT
dHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNv
bnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEFycmF5PEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaE1hdGNoPj4mIHJlc3VsdHMpCiB7CiAgICAgYm9vbCBp
c1JlZ2V4ID0gb3B0aW9uYWxJc1JlZ2V4ID8gKm9wdGlvbmFsSXNSZWdleCA6IGZhbHNlOwogICAg
IGJvb2wgY2FzZVNlbnNpdGl2ZSA9IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSA/ICpvcHRpb25hbENh
c2VTZW5zaXRpdmUgOiBmYWxzZTsKQEAgLTQzMywxMCArNDM2LDEwIEBAIHZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6c2VhcmNoSW5Db24KICAgICAgICAgKmVycm9yID0gIk5vIHNjcmlwdCBm
b3IgaWQ6ICIgKyBzY3JpcHRJRFN0cjsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpzZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmlw
dElELCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIGNvbnN0IGJvb2wqIGNvbnN0IHByZXZpZXcs
IFJlZlB0cjxBcnJheTxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZT4+JiBuZXdDYWxs
RnJhbWVzLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpzZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBT
dHJpbmcmIHNjcmlwdElELCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIGNvbnN0IGJvb2wqIGNv
bnN0IHByZXZpZXcsIFJlZlB0cjxBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dl
cjo6Q2FsbEZyYW1lPj4mIG5ld0NhbGxGcmFtZXMsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBy
ZXN1bHQpCiB7CiAgICAgYm9vbCBwcmV2aWV3T25seSA9IHByZXZpZXcgJiYgKnByZXZpZXc7Ci0g
ICAgU2NyaXB0T2JqZWN0IHJlc3VsdE9iamVjdDsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRPYmpl
Y3QgcmVzdWx0T2JqZWN0OwogICAgIGlmICghc2NyaXB0RGVidWdTZXJ2ZXIoKS5zZXRTY3JpcHRT
b3VyY2Uoc2NyaXB0SUQsIG5ld0NvbnRlbnQsIHByZXZpZXdPbmx5LCBlcnJvciwgJm1fY3VycmVu
dENhbGxTdGFjaywgJnJlc3VsdE9iamVjdCkpCiAgICAgICAgIHJldHVybjsKICAgICBuZXdDYWxs
RnJhbWVzID0gY3VycmVudENhbGxGcmFtZXMoKTsKQEAgLTQ1NSw3ICs0NTgsNyBAQCB2b2lkIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmdldFNjcmlwdFNvCiAgICAgICAgICplcnJvciA9ICJObyBz
Y3JpcHQgZm9yIGlkOiAiICsgc2NyaXB0SURTdHI7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6Z2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpGdW5j
dGlvbkRldGFpbHM+JiBkZXRhaWxzKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRG
dW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZ1
bmN0aW9uSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6RnVuY3Rp
b25EZXRhaWxzPiYgZGV0YWlscykKIHsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKGZ1
bmN0aW9uSWQpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKQEAgLTU0
Nyw3ICs1NTAsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldFBhdXNlT25FCiAg
ICAgICAgICplcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvci4gQ291bGQgbm90IGNoYW5nZSBw
YXVzZSBvbiBleGNlcHRpb25zIHN0YXRlIjsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJp
bmcqIGNvbnN0IG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBjb25zdCBpbmNsdWRlQ29tbWFuZExp
bmVBUEksIGNvbnN0IGJvb2wqIGNvbnN0IGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29u
c29sZSwgY29uc3QgYm9vbCogY29uc3QgcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJh
dGVQcmV2aWV3LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJl
c3VsdCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQordm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNz
aW9uLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBjb25zdCBp
bmNsdWRlQ29tbWFuZExpbmVBUEksIGNvbnN0IGJvb2wqIGNvbnN0IGRvTm90UGF1c2VPbkV4Y2Vw
dGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3QgYm9vbCogY29uc3QgcmV0dXJuQnlWYWx1ZSwgY29u
c3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpP
cHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKIHsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3Rl
ZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvck9iamVj
dElkKGNhbGxGcmFtZUlkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7
CkBAIC01NzEsNyArNTc0LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpldmFsdWF0
ZU9uQwogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpjb21waWxlU2Ny
aXB0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBj
b25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxTY3JpcHRJZD4q
IHNjcmlwdElELCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PFN0cmluZz4qIHN5bnRheEVycm9yTWVz
c2FnZSkKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y29tcGlsZVNjcmlwdChFcnJvclN0
cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkwsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxTY3JpcHRJZD4q
IHNjcmlwdElELCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8U3RyaW5nPiogc3lu
dGF4RXJyb3JNZXNzYWdlKQogewogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0g
aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKGVycm9yU3RyaW5nLCAwKTsKICAgICBpZiAoaW5qZWN0ZWRT
Y3JpcHQuaGFzTm9WYWx1ZSgpKSB7CkBAIC01OTAsNyArNTkzLDcgQEAgdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50Ojpjb21waWxlU2NyaQogICAgICpzY3JpcHRJRCA9IHNjcmlwdElEVmFsdWU7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cnVuU2NyaXB0KEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgY29uc3QgU2NyaXB0SWQmIHNjcmlwdElELCBjb25zdCBpbnQqIGV4ZWN1
dGlvbkNvbnRleHRJZCwgY29uc3QgU3RyaW5nKiBjb25zdCBvYmplY3RHcm91cCwgY29uc3QgYm9v
bCogY29uc3QgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgVHlwZUJ1aWxkZXI6Ok9w
dE91dHB1dDxib29sPiogd2FzVGhyb3duKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpy
dW5TY3JpcHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTY3JpcHRJZCYgc2NyaXB0
SUQsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9i
amVjdEdyb3VwLCBjb25zdCBib29sKiBjb25zdCBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0
ZUNvbnNvbGUsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q+JiByZXN1bHQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiog
d2FzVGhyb3duKQogewogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0
ZWRTY3JpcHRGb3JFdmFsKGVycm9yU3RyaW5nLCBleGVjdXRpb25Db250ZXh0SWQpOwogICAgIGlm
IChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKQEAgLTYwNSw3ICs2MDgsNyBAQCB2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJ1blNjcmlwdChFCiAgICAgICAgIG11dGVDb25zb2xl
KCk7CiAgICAgfQogCi0gICAgU2NyaXB0VmFsdWUgdmFsdWU7CisgICAgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUgdmFsdWU7CiAgICAgYm9vbCB3YXNUaHJvd25WYWx1ZTsKICAgICBTdHJpbmcgZXhj
ZXB0aW9uTWVzc2FnZTsKICAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLnJ1blNjcmlwdChpbmplY3Rl
ZFNjcmlwdC5zY3JpcHRTdGF0ZSgpLCBzY3JpcHRJRCwgJnZhbHVlLCAmd2FzVGhyb3duVmFsdWUs
ICZleGNlcHRpb25NZXNzYWdlKTsKQEAgLTYzOCwxNCArNjQxLDE0IEBAIHZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6c2NyaXB0RXhlY3UKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8QXJyYXk8
VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpjdXJyZW50Q2FsbEZyYW1lcygpCitQYXNzUmVmUHRyPEFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjdXJy
ZW50Q2FsbEZyYW1lcygpCiB7CiAgICAgaWYgKCFtX3BhdXNlZFNjcmlwdFN0YXRlKQotICAgICAg
ICByZXR1cm4gQXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+OjpjcmVhdGUo
KTsKKyAgICAgICAgcmV0dXJuIEFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2Vy
OjpDYWxsRnJhbWU+OjpjcmVhdGUoKTsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvcihtX3BhdXNlZFNj
cmlwdFN0YXRlKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gQXJyYXk8VHlwZUJ1aWxk
ZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+OjpjcmVhdGUoKTsKKyAgICAgICAgcmV0dXJuIEFycmF5
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+OjpjcmVhdGUoKTsK
ICAgICB9CiAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0LndyYXBDYWxsRnJhbWVzKG1fY3VycmVu
dENhbGxTdGFjayk7CiB9CkBAIC03MTUsNyArNzE4LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpkaWRQYXJzZVNvdQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAot
ICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gbG9jYXRpb24g
PSByZXNvbHZlQnJlYWtwb2ludChpdC0+a2V5LCBzb3VyY2VJRCwgYnJlYWtwb2ludCk7CisgICAg
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IGxv
Y2F0aW9uID0gcmVzb2x2ZUJyZWFrcG9pbnQoaXQtPmtleSwgc291cmNlSUQsIGJyZWFrcG9pbnQp
OwogICAgICAgICBpZiAobG9jYXRpb24pCiAgICAgICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ci0+YnJlYWtwb2ludFJlc29sdmVkKGl0LT5rZXksIGxvY2F0aW9uKTsKICAgICB9CkBAIC03MjYs
NyArNzI5LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpmYWlsZWRUb1BhcgogICAg
IG1fZnJvbnRlbmREaXNwYXRjaGVyLT5zY3JpcHRGYWlsZWRUb1BhcnNlKHVybCwgZGF0YSwgZmly
c3RMaW5lLCBlcnJvckxpbmUsIGVycm9yTWVzc2FnZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6ZGlkUGF1c2UoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBT
Y3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywgY29uc3QgU2NyaXB0VmFsdWUmIGV4Y2VwdGlvbikKK3Zv
aWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UoSlNDOjpFeGVjU3RhdGUqIHNjcmlw
dFN0YXRlLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGV4Y2VwdGlvbikKIHsKICAgICBBU1NFUlQoc2NyaXB0
U3RhdGUgJiYgIW1fcGF1c2VkU2NyaXB0U3RhdGUpOwogICAgIG1fcGF1c2VkU2NyaXB0U3RhdGUg
PSBzY3JpcHRTdGF0ZTsKQEAgLTc1NSw3ICs3NTgsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmRpZFBhdXNlKEpTCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENvbnRp
bnVlKCkKIHsKICAgICBtX3BhdXNlZFNjcmlwdFN0YXRlID0gMDsKLSAgICBtX2N1cnJlbnRDYWxs
U3RhY2sgPSBTY3JpcHRWYWx1ZSgpOworICAgIG1fY3VycmVudENhbGxTdGFjayA9IERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlKCk7CiAgICAgY2xlYXJCcmVha0RldGFpbHMoKTsKICAgICBtX2Zyb250
ZW5kRGlzcGF0Y2hlci0+cmVzdW1lZCgpOwogfQpAQCAtNzcwLDcgKzc3Myw3IEBAIHZvaWQgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtQcm9ncmEKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6Y2xlYXIoKQogewogICAgIG1fcGF1c2VkU2NyaXB0U3RhdGUgPSAwOwotICAgIG1fY3Vy
cmVudENhbGxTdGFjayA9IFNjcmlwdFZhbHVlKCk7CisgICAgbV9jdXJyZW50Q2FsbFN0YWNrID0g
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKTsKICAgICBtX3NjcmlwdHMuY2xlYXIoKTsKICAgICBt
X2JyZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHMuY2xlYXIoKTsK
ICAgICBtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJRCA9IG5vQnJlYWtwb2ludElEOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJB
Z2VudC5oCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMiArMzEsMTQgQEAK
ICNkZWZpbmUgSW5zcGVjdG9yRGVidWdnZXJBZ2VudF9oCiAKICNpZiBFTkFCTEUoSkFWQVNDUklQ
VF9ERUJVR0dFUikgJiYgRU5BQkxFKElOU1BFQ1RPUikKKwogI2luY2x1ZGUgIkJyZWFrcG9pbnRJ
RC5oIgogI2luY2x1ZGUgIkNvbnNvbGVBUElUeXBlcy5oIgogI2luY2x1ZGUgIkNvbnNvbGVUeXBl
cy5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFz
ZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJh
c2UuaCIKICNpbmNsdWRlICJTY3JpcHRCcmVha3BvaW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0RGVi
dWdMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCkBAIC00OCwxOSArNTAsMjUg
QEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFz
aC5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgRGVwcmVjYXRlZCB7CitjbGFz
cyBTY3JpcHRWYWx1ZTsKK30KIAotY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOworbmFtZXNw
YWNlIEluc3BlY3RvciB7CiBjbGFzcyBJbnNwZWN0b3JBcnJheTsKIGNsYXNzIEluc3BlY3Rvck9i
amVjdDsKIGNsYXNzIEluc3BlY3RvclZhbHVlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7
CiBjbGFzcyBTY3JpcHREZWJ1Z1NlcnZlcjsKLWNsYXNzIFNjcmlwdFZhbHVlOwogCiB0eXBlZGVm
IFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCA6IHB1
YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBTY3JpcHREZWJ1Z0xpc3RlbmVyLCBwdWJs
aWMgSW5zcGVjdG9yRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBT
Y3JpcHREZWJ1Z0xpc3RlbmVyLCBwdWJsaWMgSW5zcGVjdG9yRGVidWdnZXJCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29u
c3QgY2hhciogYmFja3RyYWNlT2JqZWN0R3JvdXA7CkBAIC03MSw3ICs3OSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgY2FuU2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5nKiwgYm9vbCop
OwogICAgIHZpcnR1YWwgdm9pZCBzdXBwb3J0c1NlcGFyYXRlU2NyaXB0Q29tcGlsYXRpb25BbmRF
eGVjdXRpb24oRXJyb3JTdHJpbmcqLCBib29sKik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCos
IEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAog
ICAgIGJvb2wgaXNQYXVzZWQoKTsKQEAgLTgzLDE1ICs5MSwxNSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QnJl
YWtwb2ludHNBY3RpdmUoRXJyb3JTdHJpbmcqLCBib29sIGFjdGl2ZSk7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nKiwgaW50IGxpbmVOdW1iZXIsIGNv
bnN0IFN0cmluZyogb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxVUkxSZWdleCwg
Y29uc3QgaW50KiBvcHRpb25hbENvbHVtbk51bWJlciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4qIG9wdGlvbnMsIFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiwgUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPj4m
IGxvY2F0aW9ucyk7Ci0gICAgdmlydHVhbCB2b2lkIHNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcq
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgbG9jYXRpb24sIGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+KiBvcHRpb25zLCBUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9p
bnRJZCosIFJlZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiYgYWN0dWFsTG9j
YXRpb24pOworICAgIHZpcnR1YWwgdm9pZCBzZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJpbmcq
LCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFVSTCwgY29uc3QgU3RyaW5n
KiBvcHRpb25hbFVSTFJlZ2V4LCBjb25zdCBpbnQqIG9wdGlvbmFsQ29sdW1uTnVtYmVyLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBvcHRpb25zLCBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiwgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2Nh
dGlvbj4+JiBsb2NhdGlvbnMpOworICAgIHZpcnR1YWwgdm9pZCBzZXRCcmVha3BvaW50KEVycm9y
U3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgbG9jYXRp
b24sIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG9wdGlvbnMsIElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqLCBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiYgYWN0dWFsTG9jYXRpb24p
OwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVCcmVha3BvaW50KEVycm9yU3RyaW5nKiwgY29uc3Qg
U3RyaW5nJiBicmVha3BvaW50SWRlbnRpZmllcik7Ci0gICAgdmlydHVhbCB2b2lkIGNvbnRpbnVl
VG9Mb2NhdGlvbihFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBs
b2NhdGlvbik7CisgICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmlu
ZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIGxvY2F0aW9uKTsK
IAotICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIHNjcmlwdElELCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBvcHRpb25h
bENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPFR5cGVC
dWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0Y2g+PiYpOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNj
cmlwdElELCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIGNvbnN0IGJvb2wqIHByZXZpZXcsIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+
PiYgbmV3Q2FsbEZyYW1lcywgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHJlc3VsdCk7CisgICAg
dmlydHVhbCB2b2lkIHNlYXJjaEluQ29udGVudChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYg
c2NyaXB0SUQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNl
bnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0
Y2g+PiYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIHNjcmlwdElELCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIGNvbnN0IGJv
b2wqIHByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4mIG5ld0NhbGxGcmFtZXMsIFJl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIHJlc3VsdCk7CiAgICAgdmlydHVhbCB2
b2lkIGdldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQs
IFN0cmluZyogc2NyaXB0U291cmNlKTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0RnVuY3Rpb25EZXRh
aWxzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+Jik7CisgICAgdmlydHVhbCB2b2lkIGdl
dEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+
Jik7CiAgICAgdmlydHVhbCB2b2lkIHBhdXNlKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2
b2lkIHJlc3VtZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBzdGVwT3ZlcihFcnJv
clN0cmluZyopOwpAQCAtMTA2LDE1ICsxMTQsMTUgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNv
bnNvbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wqIHJldHVybkJ5
VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wqIGdlbmVyYXRl
UHJldmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVy
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7Ci0gICAgdm9p
ZCBjb21waWxlU2NyaXB0KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBj
b25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxUeXBlQnVpbGRl
cjo6RGVidWdnZXI6OlNjcmlwdElkPiosIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8U3RyaW5nPiog
c3ludGF4RXJyb3JNZXNzYWdlKTsKLSAgICB2b2lkIHJ1blNjcmlwdChFcnJvclN0cmluZyosIGNv
bnN0IFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6U2NyaXB0SWQmLCBjb25zdCBpbnQqIGV4ZWN1dGlv
bkNvbnRleHRJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgY29uc3QgYm9vbCogZG9Ob3RQ
YXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRp
bWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiog
d2FzVGhyb3duKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJv
b2w+KiB3YXNUaHJvd24pOworICAgIHZvaWQgY29tcGlsZVNjcmlwdChFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dl
cjo6U2NyaXB0SWQ+KiwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PFN0cmluZz4q
IHN5bnRheEVycm9yTWVzc2FnZSk7CisgICAgdm9pZCBydW5TY3JpcHQoRXJyb3JTdHJpbmcqLCBj
b25zdCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6U2NyaXB0SWQmLCBjb25zdCBp
bnQqIGV4ZWN1dGlvbkNvbnRleHRJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgY29uc3Qg
Ym9vbCogZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7CiAgICAgdmlydHVh
bCB2b2lkIHNldE92ZXJsYXlNZXNzYWdlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nKik7CiAK
LSAgICB2b2lkIHNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoSW5zcGVjdG9yRGVidWdnZXJG
cm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RW51bSBicmVha1JlYXNvbiwgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGRhdGEpOworICAgIHZvaWQgc2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRl
bWVudChJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpFbnVtIGJy
ZWFrUmVhc29uLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBkYXRhKTsK
ICAgICB2b2lkIGNhbmNlbFBhdXNlT25OZXh0U3RhdGVtZW50KCk7Ci0gICAgdm9pZCBicmVha1By
b2dyYW0oSW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RW51bSBi
cmVha1JlYXNvbiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEpOworICAgIHZvaWQg
YnJlYWtQcm9ncmFtKEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246
OkVudW0gYnJlYWtSZWFzb24sIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
IGRhdGEpOwogICAgIHZpcnR1YWwgdm9pZCBzY3JpcHRFeGVjdXRpb25CbG9ja2VkQnlDU1AoY29u
c3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0KTsKIAogICAgIGNsYXNzIExpc3RlbmVyIHsKQEAgLTE0
MSwyMSArMTQ5LDIxIEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZSgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZShK
U0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBjb25zdCBTY3Jp
cHRWYWx1ZSYgZXhjZXB0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2UoSlNDOjpFeGVj
U3RhdGUqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGV4Y2VwdGlvbik7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZENvbnRpbnVlKCk7CiAgICAgdm9pZCByZXNldCgpOwogCiBwcml2YXRlOgogICAgIGJvb2wgZW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfTsKIAotICAgIFBhc3NSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4gY3VycmVu
dENhbGxGcmFtZXMoKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFy
cmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBjdXJyZW50
Q2FsbEZyYW1lcygpOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZFBhcnNlU291cmNlKFNvdXJjZUlE
LCBjb25zdCBTY3JpcHQmKSBPVkVSUklERSBGSU5BTDsKICAgICB2aXJ0dWFsIHZvaWQgZmFpbGVk
VG9QYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBkYXRhLCBpbnQg
Zmlyc3RMaW5lLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgT1ZF
UlJJREUgRklOQUw7CiAKICAgICB2b2lkIHNldFBhdXNlT25FeGNlcHRpb25zSW1wbChFcnJvclN0
cmluZyosIGludCk7CiAKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9j
YXRpb24+IHJlc29sdmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkZW50aWZp
ZXIsIFNvdXJjZUlELCBjb25zdCBTY3JpcHRCcmVha3BvaW50Jik7CisgICAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IHJlc29sdmVCcmVha3Bv
aW50KGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkZW50aWZpZXIsIFNvdXJjZUlELCBjb25zdCBT
Y3JpcHRCcmVha3BvaW50Jik7CiAgICAgdm9pZCBjbGVhcigpOwogICAgIGJvb2wgYXNzZXJ0UGF1
c2VkKEVycm9yU3RyaW5nKik7CiAgICAgdm9pZCBjbGVhckJyZWFrRGV0YWlscygpOwpAQCAtMTY0
LDE5ICsxNzIsMTkgQEAgcHJpdmF0ZToKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxTb3VyY2VJRCwg
U2NyaXB0PiBTY3JpcHRzTWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxC
cmVha3BvaW50SUQ+PiBCcmVha3BvaW50SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3BvaW50
SURzTWFwOwotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+PiBCcmVha3BvaW50SWRlbnRpZmllclRvQnJlYWtwb2ludE1hcDsKKyAgICB0eXBlZGVmIEhh
c2hNYXA8U3RyaW5nLCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+PiBCcmVha3Bv
aW50SWRlbnRpZmllclRvQnJlYWtwb2ludE1hcDsKIAogICAgIEluamVjdGVkU2NyaXB0TWFuYWdl
ciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rv
ckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICBS
ZWZQdHI8SW5zcGVjdG9yRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0
Y2hlcjsKICAgICBKU0M6OkV4ZWNTdGF0ZSogbV9wYXVzZWRTY3JpcHRTdGF0ZTsKLSAgICBTY3Jp
cHRWYWx1ZSBtX2N1cnJlbnRDYWxsU3RhY2s7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUg
bV9jdXJyZW50Q2FsbFN0YWNrOwogICAgIFNjcmlwdHNNYXAgbV9zY3JpcHRzOwogICAgIEJyZWFr
cG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHNNYXAgbV9icmVha3BvaW50
SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SURzOwogICAgIEJyZWFrcG9pbnRJZGVu
dGlmaWVyVG9CcmVha3BvaW50TWFwIG1famF2YVNjcmlwdEJyZWFrcG9pbnRzOwogICAgIEJyZWFr
cG9pbnRJRCBtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJRDsKICAgICBJbnNwZWN0b3JE
ZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpFbnVtIG1fYnJlYWtSZWFzb247Ci0g
ICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbV9icmVha0F1eERhdGE7CisgICAgUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBtX2JyZWFrQXV4RGF0YTsKICAgICBib29sIG1fZW5h
YmxlZDsKICAgICBib29sIG1famF2YVNjcmlwdFBhdXNlU2NoZWR1bGVkOwogICAgIExpc3RlbmVy
KiBtX2xpc3RlbmVyOwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZv
cndhcmRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRm9yd2FyZGluZy5oCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRm9yd2FyZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3
IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgOiBwdWJs
aWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgeyB9OwordHlwZWRlZiBJbnNw
ZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7
CiB9CiAKICNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JGb3J3YXJkaW5nX2gpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWwuY3BwCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ4LDE3ICs0OCwxOSBAQAogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIlBhZ2Uu
aCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0RnVuY3Rp
b25DYWxsLmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisjaW5jbHVkZSAiU2NyaXB0R2xv
YmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTZXR0aW5n
cy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3Iu
aCIKICNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1Njcmlw
dFZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCit1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBjaGFy
KiBpbnNwZWN0b3JBdHRhY2hlZEhlaWdodFNldHRpbmcgPSAiaW5zcGVjdG9yQXR0YWNoZWRIZWln
aHQiOwpAQCAtMzQ0LDcgKzM0Niw3IEBAIGJvb2wgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bDo6aXNVbmQKIAogYm9vbCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpldmFsdWF0ZUFz
Qm9vbGVhbihjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24pCiB7Ci0gICAgU2NyaXB0VmFsdWUgdmFs
dWUgPSBtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChl
eHByZXNzaW9uKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB2YWx1ZSA9IG1fZnJvbnRl
bmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KGV4cHJlc3Npb24pOwog
ICAgIHJldHVybiB2YWx1ZS50b1N0cmluZyhtYWluV29ybGRFeGVjU3RhdGUoJm1fZnJvbnRlbmRQ
YWdlLT5tYWluRnJhbWUoKSkpID09ICJ0cnVlIjsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAJKHJldmlzaW9uIDE2
MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9y
QWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQuaCIKKyNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUu
aCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgpAQCAtNTMsMjkgKzU0LDMzIEBACiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJv
ci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVz
cG9uc2UuaCIKLSNpbmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwuaCIKKyNpbmNsdWRlICJTY3Jp
cHRHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNv
dW5kLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKKyNpbmNsdWRlIDxiaW5k
aW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
I2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogY2xhc3MgRnJvbnRlbmRNZW51UHJvdmlkZXIgOiBw
dWJsaWMgQ29udGV4dE1lbnVQcm92aWRlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8RnJvbnRlbmRNZW51UHJvdmlkZXI+IGNyZWF0ZShJbnNwZWN0b3JGcm9udGVuZEhvc3QqIGZy
b250ZW5kSG9zdCwgU2NyaXB0T2JqZWN0IGZyb250ZW5kQXBpT2JqZWN0LCBjb25zdCBWZWN0b3I8
Q29udGV4dE1lbnVJdGVtPiYgaXRlbXMpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RnJvbnRlbmRN
ZW51UHJvdmlkZXI+IGNyZWF0ZShJbnNwZWN0b3JGcm9udGVuZEhvc3QqIGZyb250ZW5kSG9zdCwg
RGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IGZyb250ZW5kQXBpT2JqZWN0LCBjb25zdCBWZWN0b3I8
Q29udGV4dE1lbnVJdGVtPiYgaXRlbXMpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEZyb250ZW5kTWVudVByb3ZpZGVyKGZyb250ZW5kSG9zdCwgZnJvbnRlbmRBcGlPYmplY3Qs
IGl0ZW1zKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgZGlzY29ubmVjdCgpCiAgICAgewotICAg
ICAgICBtX2Zyb250ZW5kQXBpT2JqZWN0ID0gU2NyaXB0T2JqZWN0KCk7CisgICAgICAgIG1fZnJv
bnRlbmRBcGlPYmplY3QgPSBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QoKTsKICAgICAgICAgbV9m
cm9udGVuZEhvc3QgPSAwOwogICAgIH0KICAgICAKIHByaXZhdGU6Ci0gICAgRnJvbnRlbmRNZW51
UHJvdmlkZXIoSW5zcGVjdG9yRnJvbnRlbmRIb3N0KiBmcm9udGVuZEhvc3QsIFNjcmlwdE9iamVj
dCBmcm9udGVuZEFwaU9iamVjdCwgY29uc3QgVmVjdG9yPENvbnRleHRNZW51SXRlbT4mIGl0ZW1z
KQorICAgIEZyb250ZW5kTWVudVByb3ZpZGVyKEluc3BlY3RvckZyb250ZW5kSG9zdCogZnJvbnRl
bmRIb3N0LCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgZnJvbnRlbmRBcGlPYmplY3QsIGNvbnN0
IFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+JiBpdGVtcykKICAgICAgICAgOiBtX2Zyb250ZW5kSG9z
dChmcm9udGVuZEhvc3QpCiAgICAgICAgICwgbV9mcm9udGVuZEFwaU9iamVjdChmcm9udGVuZEFw
aU9iamVjdCkKICAgICAgICAgLCBtX2l0ZW1zKGl0ZW1zKQpAQCAtOTksNyArMTA0LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3Io
RGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAgICAgICAgICAgICBpbnQgaXRlbU51
bWJlciA9IGl0ZW0tPmFjdGlvbigpIC0gQ29udGV4dE1lbnVJdGVtQmFzZUN1c3RvbVRhZzsKIAot
ICAgICAgICAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1fZnJvbnRlbmRBcGlPYmpl
Y3QsICJjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCIpOworICAgICAgICAgICAgRGVwcmVjYXRlZDo6
U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1fZnJvbnRlbmRBcGlPYmplY3QsICJjb250ZXh0
TWVudUl0ZW1TZWxlY3RlZCIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhy
ZWFkKTsKICAgICAgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGl0ZW1OdW1iZXIpOwog
ICAgICAgICAgICAgZnVuY3Rpb24uY2FsbCgpOwogICAgICAgICB9CkBAIC0xMDgsNyArMTEzLDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dE1lbnVDbGVhcmVkKCkKICAgICB7
CiAgICAgICAgIGlmIChtX2Zyb250ZW5kSG9zdCkgewotICAgICAgICAgICAgU2NyaXB0RnVuY3Rp
b25DYWxsIGZ1bmN0aW9uKG1fZnJvbnRlbmRBcGlPYmplY3QsICJjb250ZXh0TWVudUNsZWFyZWQi
KTsKKyAgICAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbiht
X2Zyb250ZW5kQXBpT2JqZWN0LCAiY29udGV4dE1lbnVDbGVhcmVkIiwgV2ViQ29yZTo6ZnVuY3Rp
b25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOwogICAgICAgICAgICAgZnVuY3Rpb24uY2FsbCgp
OwogCiAgICAgICAgICAgICBtX2Zyb250ZW5kSG9zdC0+bV9tZW51UHJvdmlkZXIgPSAwOwpAQCAt
MTE3LDcgKzEyMiw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgSW5zcGVjdG9yRnJvbnRlbmRI
b3N0KiBtX2Zyb250ZW5kSG9zdDsKLSAgICBTY3JpcHRPYmplY3QgbV9mcm9udGVuZEFwaU9iamVj
dDsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgbV9mcm9udGVuZEFwaU9iamVjdDsKICAg
ICBWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiBtX2l0ZW1zOwogfTsKICNlbmRpZgpAQCAtMjcyLDcg
KzI3Nyw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpzaG93Q29udGV4dE0KIAogICAg
IEFTU0VSVChtX2Zyb250ZW5kUGFnZSk7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGZyb250ZW5kRXhl
Y1N0YXRlID0gZXhlY1N0YXRlRnJvbVBhZ2UoZGVidWdnZXJXb3JsZCgpLCBtX2Zyb250ZW5kUGFn
ZSk7Ci0gICAgU2NyaXB0T2JqZWN0IGZyb250ZW5kQXBpT2JqZWN0OworICAgIERlcHJlY2F0ZWQ6
OlNjcmlwdE9iamVjdCBmcm9udGVuZEFwaU9iamVjdDsKICAgICBpZiAoIVNjcmlwdEdsb2JhbE9i
amVjdDo6Z2V0KGZyb250ZW5kRXhlY1N0YXRlLCAiSW5zcGVjdG9yRnJvbnRlbmRBUEkiLCBmcm9u
dGVuZEFwaU9iamVjdCkpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJv
ZmlsZXJBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNwcAkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksNiArMzksOCBAQAogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMu
aCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlci5oIgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBV
c2VySW5pdGlhdGVkUHJvZmlsZU5hbWVIZWFwID0gIm9yZy53ZWJraXQucHJvZmlsZXMudXNlci1p
bml0aWF0ZWQiOwpAQCAtNDksNyArNTEsNyBAQCBQYXNzT3duUHRyPEluc3BlY3RvckhlYXBQcm9m
aWxlckFnZW50PiBJCiB9CiAKIEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpJbnNwZWN0b3JI
ZWFwUHJvZmlsZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKLSAgICA6IElu
c3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIkhlYXBQcm9maWxlciIpLCBpbnN0cnVtZW50
aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiSGVhcFBy
b2ZpbGVyIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFu
YWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBtX25leHRVc2VySW5pdGlhdGVkSGVh
cFNuYXBzaG90TnVtYmVyKDEpCiAgICAgLCBtX3Byb2ZpbGVIZWFkZXJzUmVxdWVzdGVkKGZhbHNl
KQpAQCAtODAsNyArODIsNyBAQCB2b2lkIEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpyZXNl
dEZyCiAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXNldFByb2ZpbGVzKCk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JIZWFw
UHJvZmlsZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9ySGVhcFByb2ZpbGVyRnJvbnRlbmREaXNwYXRj
aGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0
b3JIZWFwUHJvZmlsZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVy
LCB0aGlzKTsKQEAgLTk5LDkgKzEwMSw5IEBAIHZvaWQgSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdl
bnQ6OmNvbGxlY3QKICAgICBTY3JpcHRQcm9maWxlcjo6Y29sbGVjdEdhcmJhZ2UoKTsKIH0KIAot
UGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6SGVhcFByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPiBJbnNw
ZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6Y3JlYXRlU25hcHNob3RIZWFkZXIoY29uc3QgU2NyaXB0
SGVhcFNuYXBzaG90JiBzbmFwc2hvdCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6SGVhcFByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPiBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2Vu
dDo6Y3JlYXRlU25hcHNob3RIZWFkZXIoY29uc3QgU2NyaXB0SGVhcFNuYXBzaG90JiBzbmFwc2hv
dCkKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkhlYXBQcm9maWxlcjo6UHJvZmlsZUhlYWRl
cj4gaGVhZGVyID0gVHlwZUJ1aWxkZXI6OkhlYXBQcm9maWxlcjo6UHJvZmlsZUhlYWRlcjo6Y3Jl
YXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6SGVhcFByb2ZpbGVyOjpQ
cm9maWxlSGVhZGVyPiBoZWFkZXIgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpIZWFwUHJvZmls
ZXI6OlByb2ZpbGVIZWFkZXI6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRVaWQoc25hcHNob3QudWlk
KCkpCiAgICAgICAgIC5zZXRUaXRsZShzbmFwc2hvdC50aXRsZSgpKTsKICAgICBoZWFkZXItPnNl
dE1heEpTT2JqZWN0SWQoc25hcHNob3QubWF4U25hcHNob3RKU09iamVjdElkKCkpOwpAQCAtMTEz
LDEwICsxMTUsMTAgQEAgdm9pZCBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6aGFzSGVhcAog
ICAgICpyZXN1bHQgPSBTY3JpcHRQcm9maWxlcjo6aGFzSGVhcFByb2ZpbGVyKCk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OmdldFByb2ZpbGVIZWFkZXJzKEVycm9yU3Ry
aW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6SGVhcFByb2ZpbGVy
OjpQcm9maWxlSGVhZGVyPj4mIGhlYWRlcnMpCit2b2lkIEluc3BlY3RvckhlYXBQcm9maWxlckFn
ZW50OjpnZXRQcm9maWxlSGVhZGVycyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpIZWFwUHJvZmlsZXI6OlBy
b2ZpbGVIZWFkZXI+PiYgaGVhZGVycykKIHsKICAgICBtX3Byb2ZpbGVIZWFkZXJzUmVxdWVzdGVk
ID0gdHJ1ZTsKLSAgICBoZWFkZXJzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpI
ZWFwUHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+OjpjcmVhdGUoKTsKKyAgICBoZWFkZXJzID0gSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6SGVhcFBy
b2ZpbGVyOjpQcm9maWxlSGVhZGVyPjo6Y3JlYXRlKCk7CiAKICAgICBJZFRvSGVhcFNuYXBzaG90
TWFwOjppdGVyYXRvciBzbmFwc2hvdHNFbmQgPSBtX3NuYXBzaG90cy5lbmQoKTsKICAgICBmb3Ig
KElkVG9IZWFwU25hcHNob3RNYXA6Oml0ZXJhdG9yIGl0ID0gbV9zbmFwc2hvdHMuYmVnaW4oKTsg
aXQgIT0gc25hcHNob3RzRW5kOyArK2l0KQpAQCAtMTkwLDcgKzE5Miw3IEBAIHZvaWQgSW5zcGVj
dG9ySGVhcFByb2ZpbGVyQWdlbnQ6OnRha2VIZWEKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9y
SGVhcFByb2ZpbGVyQWdlbnQ6OmdldE9iamVjdEJ5SGVhcE9iamVjdElkKEVycm9yU3RyaW5nKiBl
cnJvciwgY29uc3QgU3RyaW5nJiBoZWFwU25hcHNob3RPYmplY3RJZCwgY29uc3QgU3RyaW5nKiBv
YmplY3RHcm91cCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiBy
ZXN1bHQpCit2b2lkIEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpnZXRPYmplY3RCeUhlYXBP
YmplY3RJZChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgaGVhcFNuYXBzaG90T2Jq
ZWN0SWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpCiB7CiAgICAgYm9vbCBvazsK
ICAgICB1bnNpZ25lZCBpZCA9IGhlYXBTbmFwc2hvdE9iamVjdElkLnRvVUludCgmb2spOwpAQCAt
MTk4LDcgKzIwMCw3IEBAIHZvaWQgSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OmdldE9iamUK
ICAgICAgICAgKmVycm9yID0gIkludmFsaWQgaGVhcCBzbmFwc2hvdCBvYmplY3QgaWQiOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIFNjcmlwdE9iamVjdCBoZWFwT2JqZWN0ID0gU2NyaXB0
UHJvZmlsZXI6Om9iamVjdEJ5SGVhcE9iamVjdElkKGlkKTsKKyAgICBEZXByZWNhdGVkOjpTY3Jp
cHRPYmplY3QgaGVhcE9iamVjdCA9IFNjcmlwdFByb2ZpbGVyOjpvYmplY3RCeUhlYXBPYmplY3RJ
ZChpZCk7CiAgICAgaWYgKGhlYXBPYmplY3QuaGFzTm9WYWx1ZSgpKSB7CiAgICAgICAgICplcnJv
ciA9ICJPYmplY3QgaXMgbm90IGF2YWlsYWJsZSI7CiAgICAgICAgIHJldHVybjsKQEAgLTIyMCw3
ICsyMjIsNyBAQCB2b2lkIEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpnZXRIZWFwCiAgICAg
ICAgICplcnJvclN0cmluZyA9ICJJbnNwZWN0ZWQgY29udGV4dCBoYXMgZ29uZSI7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgU2NyaXB0VmFsdWUgdmFsdWUgPSBpbmplY3RlZFNjcmlwdC5m
aW5kT2JqZWN0QnlJZChvYmplY3RJZCk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgdmFs
dWUgPSBpbmplY3RlZFNjcmlwdC5maW5kT2JqZWN0QnlJZChvYmplY3RJZCk7CiAgICAgaWYgKHZh
bHVlLmhhc05vVmFsdWUoKSB8fCB2YWx1ZS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgICplcnJv
clN0cmluZyA9ICJPYmplY3Qgd2l0aCBnaXZlbiBpZCBub3QgZm91bmQiOwogICAgICAgICByZXR1
cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVy
QWdlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SGVhcFByb2ZpbGVyQWdlbnQuaAkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDggKzMzLDkgQEAKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFC
TEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVk
ZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJv
bnRlbmQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CkBAIC00OSw3ICs1MCw3IEBAIGNsYXNzIFNjcmlwdFByb2ZpbGU7CiAKIHR5
cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JIZWFwUHJvZmlsZXJB
Z2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JIZWFwUHJv
ZmlsZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9ySGVhcFByb2Zp
bGVyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9ySGVh
cFByb2ZpbGVyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckhlYXBQcm9maWxlckFn
ZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluamVjdGVkU2NyaXB0TWFuYWdlciop
OwpAQCAtNjEsMTYgKzYyLDE2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBoYXNIZWFw
UHJvZmlsZXIoRXJyb3JTdHJpbmcqLCBib29sKik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJv
ZmlsZUhlYWRlcnMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVC
dWlsZGVyOjpIZWFwUHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+PiYpOworICAgIHZpcnR1YWwgdm9p
ZCBnZXRQcm9maWxlSGVhZGVycyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpIZWFwUHJvZmlsZXI6OlByb2Zp
bGVIZWFkZXI+PiYpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRIZWFwU25hcHNob3QoRXJyb3JTdHJp
bmcqLCBpbnQgdWlkKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUHJvZmlsZShFcnJvclN0cmlu
ZyosIGludCB1aWQpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQg
dGFrZUhlYXBTbmFwc2hvdChFcnJvclN0cmluZyosIGNvbnN0IGJvb2wqIHJlcG9ydFByb2dyZXNz
KTsKIAotICAgIHZpcnR1YWwgdm9pZCBnZXRPYmplY3RCeUhlYXBPYmplY3RJZChFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgaGVhcFNuYXBzaG90T2JqZWN0SWQsIGNvbnN0IFN0cmluZyogb2Jq
ZWN0R3JvdXAsIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVz
dWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0T2JqZWN0QnlIZWFwT2JqZWN0SWQoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIGhlYXBTbmFwc2hvdE9iamVjdElkLCBjb25zdCBTdHJpbmcqIG9i
amVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0PiYgcmVzdWx0KTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0SGVhcE9iamVjdElkKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgU3RyaW5nKiBoZWFwU25hcHNob3RPYmpl
Y3RJZCk7CiAKIHByaXZhdGU6CkBAIC04MCw3ICs4MSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IHJlc2V0RnJvbnRlbmRQcm9maWxlcygpOwogCi0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6
SGVhcFByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPiBjcmVhdGVTbmFwc2hvdEhlYWRlcihjb25zdCBT
Y3JpcHRIZWFwU25hcHNob3QmKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkhlYXBQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4gY3JlYXRlU25hcHNob3RIZWFkZXIoY29u
c3QgU2NyaXB0SGVhcFNuYXBzaG90Jik7CiAKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JIZWFw
UHJvZmlsZXJGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwpJbmRleDog
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQuY3BwCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSwyNyArNjEsMjgg
QEAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250
ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVj
dG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUg
IlNlY3VyaXR5T3JpZ2luLmgiCi0KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVz
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi11c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRl
cjo6QXJyYXk7Ci11c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpEYXRhYmFz
ZVdpdGhPYmplY3RTdG9yZXM7Ci11c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERC
OjpEYXRhRW50cnk7Ci11c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpLZXk7
Ci11c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpLZXlQYXRoOwotdXNpbmcg
V2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6S2V5UmFuZ2U7Ci11c2luZyBXZWJDb3Jl
OjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpPYmplY3RTdG9yZTsKLXVzaW5nIFdlYkNvcmU6OlR5
cGVCdWlsZGVyOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlSW5kZXg7Cit1c2luZyBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcnJheTsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkluZGV4
ZWREQjo6RGF0YWJhc2VXaXRoT2JqZWN0U3RvcmVzOwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6SW5kZXhlZERCOjpEYXRhRW50cnk7Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpJbmRleGVkREI6OktleTsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkluZGV4ZWRE
Qjo6S2V5UGF0aDsKK3VzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6S2V5
UmFuZ2U7Cit1c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6Ok9iamVjdFN0
b3JlOwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpPYmplY3RTdG9y
ZUluZGV4OwogCit0eXBlZGVmIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6
OkNhbGxiYWNrQmFzZSBSZXF1ZXN0Q2FsbGJhY2s7CiB0eXBlZGVmIFdlYkNvcmU6Okluc3BlY3Rv
ckluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UmVxdWVzdERhdGFiYXNlTmFtZXND
YWxsYmFjayBSZXF1ZXN0RGF0YWJhc2VOYW1lc0NhbGxiYWNrOwogdHlwZWRlZiBXZWJDb3JlOjpJ
bnNwZWN0b3JJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlcXVlc3REYXRhYmFz
ZUNhbGxiYWNrIFJlcXVlc3REYXRhYmFzZUNhbGxiYWNrOwogdHlwZWRlZiBXZWJDb3JlOjpJbnNw
ZWN0b3JJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlcXVlc3REYXRhQ2FsbGJh
Y2sgUmVxdWVzdERhdGFDYWxsYmFjazsKLXR5cGVkZWYgV2ViQ29yZTo6SW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZSBSZXF1ZXN0Q2FsbGJhY2s7CiB0eXBlZGVmIFdlYkNv
cmU6Okluc3BlY3RvckluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6Q2xlYXJPYmpl
Y3RTdG9yZUNhbGxiYWNrIENsZWFyT2JqZWN0U3RvcmVDYWxsYmFjazsKIAordXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgewpAQCAt
MTIzLDcgKzEyNCw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIFJlZlB0cjxET01T
dHJpbmdMaXN0PiBkYXRhYmFzZU5hbWVzTGlzdCA9IHJlcXVlc3RSZXN1bHQtPmRvbVN0cmluZ0xp
c3QoKTsKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBkYXRhYmFz
ZU5hbWVzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgICAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gZGF0YWJhc2VOYW1l
cyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwogICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRhdGFiYXNlTmFtZXNMaXN0LT5sZW5ndGgoKTsg
KytpKQogICAgICAgICAgICAgZGF0YWJhc2VOYW1lcy0+YWRkSXRlbShkYXRhYmFzZU5hbWVzTGlz
dC0+aXRlbShpKSk7CiAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kU3VjY2VzcyhkYXRh
YmFzZU5hbWVzLnJlbGVhc2UoKSk7CkBAIC0yNTAsNyArMjUxLDcgQEAgc3RhdGljIFBhc3NSZWZQ
dHI8S2V5UGF0aD4ga2V5UGF0aEZyb21JRAogICAgICAgICBicmVhazsKICAgICBjYXNlIElEQktl
eVBhdGg6OkFycmF5VHlwZTogewogICAgICAgICBrZXlQYXRoID0gS2V5UGF0aDo6Y3JlYXRlKCku
c2V0VHlwZShLZXlQYXRoOjpUeXBlOjpBcnJheSk7Ci0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRl
cjo6QXJyYXk8U3RyaW5nPj4gYXJyYXkgPSBUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPjo6Y3Jl
YXRlKCk7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJp
bmc+PiBhcnJheSA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz46OmNyZWF0
ZSgpOwogICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RyaW5nQXJyYXkgPSBpZGJLZXlQ
YXRoLmFycmF5KCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RyaW5nQXJyYXku
c2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBhcnJheS0+YWRkSXRlbShzdHJpbmdBcnJheVtpXSk7
CkBAIC0yODUsMTIgKzI4NiwxMiBAQCBwdWJsaWM6CiAKICAgICAgICAgY29uc3QgSURCRGF0YWJh
c2VNZXRhZGF0YSBkYXRhYmFzZU1ldGFkYXRhID0gaWRiRGF0YWJhc2UtPm1ldGFkYXRhKCk7CiAK
LSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6SW5kZXhlZERC
OjpPYmplY3RTdG9yZT4+IG9iamVjdFN0b3JlcyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVp
bGRlcjo6SW5kZXhlZERCOjpPYmplY3RTdG9yZT46OmNyZWF0ZSgpOworICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6SW5k
ZXhlZERCOjpPYmplY3RTdG9yZT4+IG9iamVjdFN0b3JlcyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmU+
OjpjcmVhdGUoKTsKIAogICAgICAgICBmb3IgKElEQkRhdGFiYXNlTWV0YWRhdGE6Ok9iamVjdFN0
b3JlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGRhdGFiYXNlTWV0YWRhdGEub2JqZWN0U3RvcmVz
LmJlZ2luKCk7IGl0ICE9IGRhdGFiYXNlTWV0YWRhdGEub2JqZWN0U3RvcmVzLmVuZCgpOyArK2l0
KSB7CiAgICAgICAgICAgICBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RTdG9y
ZU1ldGFkYXRhID0gaXQtPnZhbHVlOwogCi0gICAgICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkFycmF5PFR5cGVCdWlsZGVyOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlSW5kZXg+PiBpbmRleGVz
ID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpJbmRleGVkREI6Ok9iamVjdFN0b3Jl
SW5kZXg+OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6Ok9iamVjdFN0b3Jl
SW5kZXg+PiBpbmRleGVzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpPYmplY3RTdG9yZUluZGV4Pjo6Y3JlYXRlKCk7CiAK
ICAgICAgICAgICAgIGZvciAoSURCT2JqZWN0U3RvcmVNZXRhZGF0YTo6SW5kZXhNYXA6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gb2JqZWN0U3RvcmVNZXRhZGF0YS5pbmRleGVzLmJlZ2luKCk7IGl0ICE9
IG9iamVjdFN0b3JlTWV0YWRhdGEuaW5kZXhlcy5lbmQoKTsgKytpdCkgewogICAgICAgICAgICAg
ICAgIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEgPSBpdC0+dmFsdWU7CkBA
IC01NTcsNyArNTU4LDcgQEAgcHVibGljOgogfSAvLyBuYW1lc3BhY2UKIAogSW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQ6Okluc3BlY3RvckluZGV4ZWREQkFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKLSAgICA6IEluc3BlY3Rv
ckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIkluZGV4ZWREQiIpLCBpbnN0cnVtZW50aW5nQWdlbnRz
KQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiSW5kZXhlZERCIiksIGlu
c3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihpbmplY3Rl
ZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCiB7CkBAIC01Njcs
NyArNTY4LDcgQEAgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6On5JbnNwZWN0b3JJbmRleAogewog
fQogCi12b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewog
ICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JJbmRleGVkREJCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCShyZXZp
c2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsOCBAQAogCiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikgJiYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKLSNpbmNsdWRlICJJbnNw
ZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMu
aCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00NCw3ICs0
NSw3IEBAIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JT
dHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckluZGV4ZWREQkFnZW50IDogcHVibGljIEluc3BlY3Rv
ckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3RvckluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlciB7CitjbGFzcyBJbnNwZWN0b3JJbmRleGVkREJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JB
Z2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckluZGV4ZWREQkFn
ZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3BlY3RvclBhZ2VB
Z2VudCogcGFnZUFnZW50KQogICAgIHsKQEAgLTUyLDcgKzUzLDcgQEAgcHVibGljOgogICAgIH0K
ICAgICB+SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwog
CiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZyb250LWVuZC4KQEAgLTYwLDcgKzYxLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVh
bCB2b2lkIHJlcXVlc3REYXRhYmFzZU5hbWVzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBz
ZWN1cml0eU9yaWdpbiwgUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YWJhc2VOYW1lc0NhbGxiYWNrPik7
CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3REYXRhYmFzZShFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBQYXNzUmVm
UHRyPFJlcXVlc3REYXRhYmFzZUNhbGxiYWNrPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RE
YXRhKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBjb25zdCBT
dHJpbmcmIGluZGV4TmFtZSwgaW50IHNraXBDb3VudCwgaW50IHBhZ2VTaXplLCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0Pioga2V5UmFuZ2UsIFBhc3NSZWZQdHI8UmVxdWVzdERhdGFDYWxs
YmFjaz4pOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RGF0YShFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25z
dCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUsIGludCBz
a2lwQ291bnQsIGludCBwYWdlU2l6ZSwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0Pioga2V5UmFuZ2UsIFBhc3NSZWZQdHI8UmVxdWVzdERhdGFDYWxsYmFjaz4pOwogICAg
IHZpcnR1YWwgdm9pZCBjbGVhck9iamVjdFN0b3JlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiBpbl9zZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBpbl9kYXRhYmFzZU5hbWUsIGNvbnN0
IFN0cmluZyYgaW5fb2JqZWN0U3RvcmVOYW1lLCBQYXNzUmVmUHRyPENsZWFyT2JqZWN0U3RvcmVD
YWxsYmFjaz4pOwogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvcklucHV0QWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50LmNwcAkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcklucHV0QWdlbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00OSwxMCArNDksMTIgQEAKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbnNwZWN0b3JJbnB1dEFnZW50OjpJbnNwZWN0b3JJ
bnB1dEFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIFBhZ2Uq
IHBhZ2UpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJJbnB1dCIpLCBp
bnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJh
bCgiSW5wdXQiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fcGFnZShwYWdlKQogewog
fQpAQCAtNjEsNyArNjMsNyBAQCBJbnNwZWN0b3JJbnB1dEFnZW50Ojp+SW5zcGVjdG9ySW5wdXRB
Z2VuCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5wdXRBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9ySW5wdXRBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewog
ICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JJbnB1dEJhY2tlbmREaXNwYXRjaGVy
OjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvcklucHV0QWdlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5wdXRBZ2VudC5oCShyZXZpc2lvbiAxNjA0MDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5wdXRBZ2VudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw4ICszMyw4IEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0j
aW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCi0KKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBQ
YWdlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9ySW5w
dXRBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JJbnB1
dEJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JJbnB1dEFnZW50IDog
cHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3RvcklucHV0QmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JJbnB1
dEFnZW50KTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JJbnB1dEFn
ZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgUGFn
ZSogcGFnZSkKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogCiAgICAgfkluc3BlY3RvcklucHV0
QWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJv
eUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgLy8gTWV0aG9kcyBjYWxsZWQg
ZnJvbSB0aGUgZnJvbnRlbmQgZm9yIHNpbXVsYXRpbmcgaW5wdXQuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAko
cmV2aXNpb24gMTYwNDA0KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDggQEAKICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
Cit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
YXRpYyBjb25zdCBjaGFyKiBjb25zdCByZXF1ZXN0QW5pbWF0aW9uRnJhbWVFdmVudE5hbWUgPSAi
cmVxdWVzdEFuaW1hdGlvbkZyYW1lIjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgJKHJldmlzaW9uIDE2MDQwNCkKKysr
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtNDUsNiArNDUsMTAgQEAKICNpbmNsdWRlICJXZWJTb2NrZXRGcmFtZS5o
IgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAorbmFtZXNwYWNlIERlcHJlY2F0ZWQgeworY2xh
c3MgU2NyaXB0T2JqZWN0OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU1J1
bGU7CkBAIC03Nyw3ICs4MSw2IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTY3Jp
cHRBcmd1bWVudHM7CiBjbGFzcyBTY3JpcHRDYWxsU3RhY2s7CiBjbGFzcyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OwotY2xhc3MgU2NyaXB0T2JqZWN0OwogY2xhc3MgU2NyaXB0UHJvZmlsZTsKIGNs
YXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU2hhZG93Um9vdDsKQEAgLTI3Niw5ICsyNzksOSBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lRXJyb3Io
RG9jdW1lbnQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlKTsKICNlbmRpZgogCi0gICAgc3RhdGljIFNjcmlwdE9iamVjdCB3cmFwQ2FudmFzMkRS
ZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKERvY3VtZW50KiwgY29uc3QgU2NyaXB0
T2JqZWN0Jik7CisgICAgc3RhdGljIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCB3cmFwQ2FudmFz
MkRSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKERvY3VtZW50KiwgY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0T2JqZWN0Jik7CiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIHN0YXRpYyBT
Y3JpcHRPYmplY3Qgd3JhcFdlYkdMUmVuZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlvbihE
b2N1bWVudCosIGNvbnN0IFNjcmlwdE9iamVjdCYpOworICAgIHN0YXRpYyBEZXByZWNhdGVkOjpT
Y3JpcHRPYmplY3Qgd3JhcFdlYkdMUmVuZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlvbihE
b2N1bWVudCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYpOwogI2VuZGlmCiAKICAg
ICBzdGF0aWMgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKFBhZ2UqKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcAko
cmV2aXNpb24gMTYwNDA0KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckxh
eWVyVHJlZUFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTAgKzQ2LDEyIEBACiAjaW5j
bHVkZSAiUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgog
Cit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIElu
c3BlY3RvckxheWVyVHJlZUFnZW50OjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudChJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50
KEFTQ0lJTGl0ZXJhbCgiTGF5ZXJUcmVlIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJ
bnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJMYXllclRyZWUiKSwgaW5zdHJ1bWVudGlu
Z0FnZW50cykKIHsKIH0KIApAQCAtNTgsNyArNjAsNyBAQCBJbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dDo6fkluc3BlY3RvckxheWVyCiAgICAgcmVzZXQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JMYXll
clRyZWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFj
a2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZy
b250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRj
aGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3JMYXllclRyZWVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAg
bV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckxheWVyVHJlZUJhY2tlbmREaXNwYXRjaGVy
OjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpAQCAtMTA1LDkgKzEwNyw5IEBAIHZv
aWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OnBzZXVkb0VsZW0KICAgICB1bmJpbmRQc2V1ZG9F
bGVtZW50KHBzZXVkb0VsZW1lbnQpOwogfQogCi12b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50
OjpsYXllcnNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4+JiBs
YXllcnMpCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpsYXllcnNGb3JOb2RlKEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+PiYg
bGF5ZXJzKQogewotICAgIGxheWVycyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6
TGF5ZXJUcmVlOjpMYXllcj46OmNyZWF0ZSgpOworICAgIGxheWVycyA9IEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+
OjpjcmVhdGUoKTsKIAogICAgIE5vZGUqIG5vZGUgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMtPmlu
c3BlY3RvckRPTUFnZW50KCktPm5vZGVGb3JJZChub2RlSWQpOwogICAgIGlmICghbm9kZSkgewpA
QCAtMTI0LDcgKzEyNiw3IEBAIHZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmxheWVyc0Zv
ck4KICAgICBnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNoeShlcnJvclN0cmlu
ZywgcmVuZGVyZXIsIGxheWVycyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6
OmdhdGhlckxheWVyc1VzaW5nUmVuZGVyT2JqZWN0SGllcmFyY2h5KEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJh
eTxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4+JiBsYXllcnMpCit2b2lkIEluc3BlY3Rv
ckxheWVyVHJlZUFnZW50OjpnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNoeShF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFJlbmRlck9iamVjdCogcmVuZGVyZXIsIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXll
clRyZWU6OkxheWVyPj4mIGxheWVycykKIHsKICAgICBpZiAocmVuZGVyZXItPmhhc0xheWVyKCkp
IHsKICAgICAgICAgZ2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJMYXllckhpZXJhcmNoeShlcnJvclN0
cmluZywgdG9SZW5kZXJMYXllck1vZGVsT2JqZWN0KHJlbmRlcmVyKS0+bGF5ZXIoKSwgbGF5ZXJz
KTsKQEAgLTEzNSw3ICsxMzcsNyBAQCB2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpnYXRo
ZXJMYXllCiAgICAgICAgIGdhdGhlckxheWVyc1VzaW5nUmVuZGVyT2JqZWN0SGllcmFyY2h5KGVy
cm9yU3RyaW5nLCByZW5kZXJlciwgbGF5ZXJzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JMYXllclRy
ZWVBZ2VudDo6Z2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJMYXllckhpZXJhcmNoeShFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIFJlbmRlckxheWVyKiByZW5kZXJMYXllciwgUmVmUHRyPFR5cGVCdWls
ZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4+JiBsYXllcnMpCit2b2lk
IEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpnYXRoZXJMYXllcnNVc2luZ1JlbmRlckxheWVySGll
cmFyY2h5KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVy
LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4+JiBsYXllcnMpCiB7CiAgICAgaWYgKHJlbmRlckxheWVy
LT5pc0NvbXBvc2l0ZWQoKSkKICAgICAgICAgbGF5ZXJzLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9y
TGF5ZXIoZXJyb3JTdHJpbmcsIHJlbmRlckxheWVyKSk7CkBAIC0xNDQsNyArMTQ2LDcgQEAgdm9p
ZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6Z2F0aGVyTGF5ZQogICAgICAgICBnYXRoZXJMYXll
cnNVc2luZ1JlbmRlckxheWVySGllcmFyY2h5KGVycm9yU3RyaW5nLCByZW5kZXJMYXllciwgbGF5
ZXJzKTsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4gSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTGF5ZXIoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIpCitQYXNzUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+IEluc3BlY3RvckxheWVyVHJlZUFnZW50
OjpidWlsZE9iamVjdEZvckxheWVyKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgUmVuZGVyTGF5
ZXIqIHJlbmRlckxheWVyKQogewogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSAmcmVuZGVy
TGF5ZXItPnJlbmRlcmVyKCk7CiAgICAgUmVuZGVyTGF5ZXJCYWNraW5nKiBiYWNraW5nID0gcmVu
ZGVyTGF5ZXItPmJhY2tpbmcoKTsKQEAgLTE2NCw3ICsxNjYsNyBAQCBQYXNzUmVmUHRyPFR5cGVC
dWlsZGVyOjpMYXllclRyZWU6OkxheWVyCiAgICAgICAgIG5vZGUgPSByZW5kZXJlci0+cGFyZW50
KCktPmVsZW1lbnQoKTsKIAogICAgIC8vIEJhc2ljIHNldCBvZiBwcm9wZXJ0aWVzLgotICAgIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4gbGF5ZXJPYmplY3QgPSBUeXBlQnVp
bGRlcjo6TGF5ZXJUcmVlOjpMYXllcjo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4gbGF5ZXJPYmplY3QgPSBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyOjpjcmVhdGUoKQogICAgICAgICAuc2V0TGF5ZXJJ
ZChiaW5kKHJlbmRlckxheWVyKSkKICAgICAgICAgLnNldE5vZGVJZChpZEZvck5vZGUoZXJyb3JT
dHJpbmcsIG5vZGUpKQogICAgICAgICAuc2V0Qm91bmRzKGJ1aWxkT2JqZWN0Rm9ySW50UmVjdChy
ZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSkpCkBAIC0yMTYsMTYgKzIxOCwxNiBA
QCBpbnQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmlkRm9yTm9kZShFCiAgICAgcmV0dXJuIG5v
ZGVJZDsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpJbnRSZWN0PiBJ
bnNwZWN0b3JMYXllclRyZWVBZ2VudDo6YnVpbGRPYmplY3RGb3JJbnRSZWN0KGNvbnN0IEludFJl
Y3QmIHJlY3QpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6
SW50UmVjdD4gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9ySW50UmVjdChj
b25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIHJldHVybiBUeXBlQnVpbGRlcjo6TGF5ZXJUcmVl
OjpJbnRSZWN0OjpjcmVhdGUoKQorICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpM
YXllclRyZWU6OkludFJlY3Q6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRYKHJlY3QueCgpKQogICAg
ICAgICAuc2V0WShyZWN0LnkoKSkKICAgICAgICAgLnNldFdpZHRoKHJlY3Qud2lkdGgoKSkKICAg
ICAgICAgLnNldEhlaWdodChyZWN0LmhlaWdodCgpKS5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OnJlYXNvbnNGb3JDb21wb3NpdGluZ0xheWVyKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBsYXllcklkLCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkxheWVyVHJlZTo6Q29tcG9zaXRpbmdSZWFzb25zPiYgY29tcG9zaXRpbmdSZWFzb25zKQor
dm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6cmVhc29uc0ZvckNvbXBvc2l0aW5nTGF5ZXIo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGxheWVySWQsIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkNvbXBvc2l0aW5nUmVhc29ucz4mIGNv
bXBvc2l0aW5nUmVhc29ucykKIHsKICAgICBjb25zdCBSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIg
PSBtX2lkVG9MYXllci5nZXQobGF5ZXJJZCk7CiAKQEAgLTIzNSw3ICsyMzcsNyBAQCB2b2lkIElu
c3BlY3RvckxheWVyVHJlZUFnZW50OjpyZWFzb25zRm9yCiAgICAgfQogCiAgICAgQ29tcG9zaXRp
bmdSZWFzb25zIHJlYXNvbnNCaXRtYXNrID0gcmVuZGVyTGF5ZXItPmNvbXBvc2l0b3IoKS5yZWFz
b25zRm9yQ29tcG9zaXRpbmcoKnJlbmRlckxheWVyKTsKLSAgICBjb21wb3NpdGluZ1JlYXNvbnMg
PSBUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpDb21wb3NpdGluZ1JlYXNvbnM6OmNyZWF0ZSgpOwor
ICAgIGNvbXBvc2l0aW5nUmVhc29ucyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJl
ZTo6Q29tcG9zaXRpbmdSZWFzb25zOjpjcmVhdGUoKTsKIAogICAgIGlmIChyZWFzb25zQml0bWFz
ayAmIENvbXBvc2l0aW5nUmVhc29uM0RUcmFuc2Zvcm0pCiAgICAgICAgIGNvbXBvc2l0aW5nUmVh
c29ucy0+c2V0VHJhbnNmb3JtM0QodHJ1ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaAkocmV2aXNpb24gMTYwNDA0KQor
KysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDEwIEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQog
Ci0jaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKLSNpbmNs
dWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50
QmFzZS5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIgogI2luY2x1ZGUg
IlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgpAQCAtNDYsNyArNDcsNyBAQCBjbGFzcyBJbnN0cnVtZW50aW5nQWdl
bnRzOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9y
TGF5ZXJUcmVlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckxheWVy
VHJlZUFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvckxh
eWVyVHJlZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NPd25QdHI8SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgIHsKQEAgLTU0LDcgKzU1LDcgQEAgcHVibGlj
OgogICAgIH0KICAgICB+SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKTsKIAotICAgIHZpcnR1YWwg
dm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9W
RVJSSURFOwogICAgIHZvaWQgcmVzZXQoKTsKIApAQCAtNjUsOCArNjYsOCBAQCBwdWJsaWM6CiAg
ICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZyb250LWVuZC4KICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxl
KEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsK
LSAgICB2aXJ0dWFsIHZvaWQgbGF5ZXJzRm9yTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQs
IFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+
PiYpOwotICAgIHZpcnR1YWwgdm9pZCByZWFzb25zRm9yQ29tcG9zaXRpbmdMYXllcihFcnJvclN0
cmluZyosIGNvbnN0IFN0cmluZyYgbGF5ZXJJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpMYXllclRy
ZWU6OkNvbXBvc2l0aW5nUmVhc29ucz4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5ZXJzRm9yTm9k
ZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPj4mKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVhc29uc0ZvckNvbXBvc2l0aW5nTGF5ZXIoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIGxheWVySWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXll
clRyZWU6OkNvbXBvc2l0aW5nUmVhc29ucz4mKTsKIAogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JM
YXllclRyZWVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKik7CkBAIC03NSwxMSArNzYsMTEgQEAg
cHJpdmF0ZToKICAgICBTdHJpbmcgYmluZChjb25zdCBSZW5kZXJMYXllciopOwogICAgIHZvaWQg
dW5iaW5kKGNvbnN0IFJlbmRlckxheWVyKik7CiAKLSAgICB2b2lkIGdhdGhlckxheWVyc1VzaW5n
UmVuZGVyT2JqZWN0SGllcmFyY2h5KEVycm9yU3RyaW5nKiwgUmVuZGVyT2JqZWN0KiwgUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4+Jik7Ci0g
ICAgdm9pZCBnYXRoZXJMYXllcnNVc2luZ1JlbmRlckxheWVySGllcmFyY2h5KEVycm9yU3RyaW5n
KiwgUmVuZGVyTGF5ZXIqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpM
YXllclRyZWU6OkxheWVyPj4mKTsKKyAgICB2b2lkIGdhdGhlckxheWVyc1VzaW5nUmVuZGVyT2Jq
ZWN0SGllcmFyY2h5KEVycm9yU3RyaW5nKiwgUmVuZGVyT2JqZWN0KiwgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6
TGF5ZXI+PiYpOworICAgIHZvaWQgZ2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJMYXllckhpZXJhcmNo
eShFcnJvclN0cmluZyosIFJlbmRlckxheWVyKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+PiYpOwog
Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4gYnVpbGRPYmpl
Y3RGb3JMYXllcihFcnJvclN0cmluZyosIFJlbmRlckxheWVyKik7Ci0gICAgUGFzc1JlZlB0cjxU
eXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpJbnRSZWN0PiBidWlsZE9iamVjdEZvckludFJlY3QoY29u
c3QgSW50UmVjdCYpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TGF5
ZXJUcmVlOjpMYXllcj4gYnVpbGRPYmplY3RGb3JMYXllcihFcnJvclN0cmluZyosIFJlbmRlckxh
eWVyKik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXllclRyZWU6
OkludFJlY3Q+IGJ1aWxkT2JqZWN0Rm9ySW50UmVjdChjb25zdCBJbnRSZWN0Jik7CiAKICAgICBp
bnQgaWRGb3JOb2RlKEVycm9yU3RyaW5nKiwgTm9kZSopOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAJKHJldmlzaW9uIDE2
MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEzICs0MSwxMyBAQAogI2luY2x1ZGUgIkZyYW1lLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yRnJvbnRlbmQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJ
bnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRl
ICJOb2RlLmgiCiAjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlNjcmlwdFBy
b2ZpbGVyLmgiCiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgorI2luY2x1ZGUgPGluc3BlY3Rv
ci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyVmlldy5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAt
NTgsOCArNTgsMTAgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogLy8gVXNl
IGEgdHlwZSBhbGlhcyBpbnN0ZWFkIG9mICd1c2luZycgaGVyZSB3aGljaCB3b3VsZCBjYXVzZSBh
IGNvbmZsaWN0IG9uIE1hYy4KLXR5cGVkZWYgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6Ok1lbW9yeTo6
TWVtb3J5QmxvY2sgSW5zcGVjdG9yTWVtb3J5QmxvY2s7Ci10eXBlZGVmIFdlYkNvcmU6OlR5cGVC
dWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gSW5zcGVjdG9yTWVtb3J5QmxvY2tz
OwordHlwZWRlZiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpNZW1vcnk6Ok1lbW9yeUJsb2NrIElu
c3BlY3Rvck1lbW9yeUJsb2NrOwordHlwZWRlZiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJh
eTxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gSW5zcGVjdG9yTWVtb3J5QmxvY2tzOworCit1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY3LDcgKzY5
LDcgQEAgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6On5JbnNwZWN0b3JNZW1vcnlBZwogewogfQogCi12
b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tl
bmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fYmFja2Vu
ZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JNZW1vcnlCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJh
Y2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KQEAgLTg1LDcgKzg3LDcgQEAgdm9pZCBJbnNwZWN0
b3JNZW1vcnlBZ2VudDo6Z2V0RE9NQ291bnRlcgogfQogCiBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6
SW5zcGVjdG9yTWVtb3J5QWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50cykKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIk1lbW9yeSIpLCBp
bnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJh
bCgiTWVtb3J5IiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oCShyZXZpc2lvbiAx
NjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzMsOCArMzMsOCBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgotI2luY2x1ZGUgIkluc3BlY3Rv
ckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCisj
aW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTQ1LDEzICs0NSwxMyBAQCBjbGFz
cyBJbnN0cnVtZW50aW5nQWdlbnRzOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAot
Y2xhc3MgSW5zcGVjdG9yTWVtb3J5QWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBw
dWJsaWMgSW5zcGVjdG9yTWVtb3J5QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIElu
c3BlY3Rvck1lbW9yeUFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIElu
c3BlY3Rvck1lbW9yeUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoSW5zcGVjdG9yTWVtb3J5QWdlbnQpOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
T3duUHRyPEluc3BlY3Rvck1lbW9yeUFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50cyk7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yTWVtb3J5QWdlbnQo
KTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250
ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGdldERPTUNvdW50
ZXJzKEVycm9yU3RyaW5nKiwgaW50KiBkb2N1bWVudHMsIGludCogbm9kZXMsIGludCoganNFdmVu
dExpc3RlbmVycyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zl
cmxheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck92ZXJsYXkuY3BwCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDYgQEAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5UGFnZS5oIgotI2luY2x1ZGUgIkluc3BlY3Rv
clZhbHVlcy5oIgogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNp
bmNsdWRlICJQYWdlLmgiCkBAIC01NSwxMSArNTQsMTQgQEAKICNpbmNsdWRlICJSZW5kZXJWaWV3
LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJj
ZUNvZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZh
bHVlLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgewpJbmRleDogU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oCShyZXZpc2lvbiAxNjA0MDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiwyMCArMzIsMjIgQEAKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkZsb2F0
UXVhZC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKLQogI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworY2xhc3Mg
SW5zcGVjdG9yVmFsdWU7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7
CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7Ci1jbGFzcyBJ
bnNwZWN0b3JWYWx1ZTsKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEludFJlY3Q7CiBj
bGFzcyBOb2RlOwogY2xhc3MgUGFnZTsKQEAgLTEyNCw3ICsxMjYsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGRpZFNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVkKTsKIAotICAgIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZSgpIGNv
bnN0OworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2Jq
ZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlKCkgY29uc3Q7CiAKICAgICB2b2lkIGZyZWVQYWdlKCk7CiBw
cml2YXRlOgpAQCAtMTM3LDcgKzEzOSw3IEBAIHByaXZhdGU6CiAgICAgUGFnZSogb3ZlcmxheVBh
Z2UoKTsKICAgICB2b2lkIHJlc2V0KGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3Qg
SW50U2l6ZSYgZnJhbWVWaWV3RnVsbFNpemUpOwogICAgIHZvaWQgZXZhbHVhdGVJbk92ZXJsYXko
Y29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFN0cmluZyYgYXJndW1lbnQpOwotICAgIHZvaWQg
ZXZhbHVhdGVJbk92ZXJsYXkoY29uc3QgU3RyaW5nJiBtZXRob2QsIFBhc3NSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+IGFyZ3VtZW50KTsKKyAgICB2b2lkIGV2YWx1YXRlSW5PdmVybGF5KGNvbnN0IFN0
cmluZyYgbWV0aG9kLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IGFyZ3Vt
ZW50KTsKIAogICAgIFBhZ2UqIG1fcGFnZTsKICAgICBJbnNwZWN0b3JDbGllbnQqIG1fY2xpZW50
OwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAJKHJldmlzaW9uIDE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw2IEBACiAjaW5j
bHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaCIKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5LmgiCi0jaW5jbHVkZSAiSW5zcGVj
dG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUg
Ik1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCkBAIC03NCwxMiArNzMsMTMg
QEAKICNpbmNsdWRlICJSZWd1bGFyRXhwcmVzc2lvbi5oIgogI2luY2x1ZGUgIlJlc291cmNlQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNjcmlwdE9i
amVjdC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNv
ZGVyLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKKyNpbmNsdWRlIDxiaW5k
aW5ncy9TY3JpcHRWYWx1ZS5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMu
aD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC05MCw2ICs5MCw4IEBACiAjaW5jbHVk
ZSAiTGVnYWN5V2ViQXJjaGl2ZS5oIgogI2VuZGlmCiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGJvb2wgZGVjb2RlQnVmZmVyKGNv
bnN0IGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2Rp
bmdOYW1lLCBTdHJpbmcqIHJlc3VsdCkKQEAgLTI5NywyNyArMjk5LDI3IEBAIENhY2hlZFJlc291
cmNlKiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmNhY2gKICAgICByZXR1cm4gY2FjaGVkUmVzb3VyY2U7
CiB9CiAKLVR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkVudW0gSW5zcGVjdG9yUGFn
ZUFnZW50OjpyZXNvdXJjZVR5cGVKc29uKEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBl
IHJlc291cmNlVHlwZSkKK0luc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlw
ZTo6RW51bSBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlVHlwZUpzb24oSW5zcGVjdG9yUGFn
ZUFnZW50OjpSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKQogewogICAgIHN3aXRjaCAocmVzb3Vy
Y2VUeXBlKSB7CiAgICAgY2FzZSBEb2N1bWVudFJlc291cmNlOgotICAgICAgICByZXR1cm4gVHlw
ZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6RG9jdW1lbnQ7CisgICAgICAgIHJldHVybiBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkRvY3VtZW50OwogICAg
IGNhc2UgSW1hZ2VSZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpQYWdlOjpS
ZXNvdXJjZVR5cGU6OkltYWdlOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpJbWFnZTsKICAgICBjYXNlIEZvbnRSZXNvdXJjZToKLSAg
ICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkZvbnQ7CisgICAg
ICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkZv
bnQ7CiAgICAgY2FzZSBTdHlsZXNoZWV0UmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBUeXBlQnVp
bGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpTdHlsZXNoZWV0OworICAgICAgICByZXR1cm4gSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpTdHlsZXNoZWV0OwogICAg
IGNhc2UgU2NyaXB0UmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6UGFnZTo6
UmVzb3VyY2VUeXBlOjpTY3JpcHQ7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OlNjcmlwdDsKICAgICBjYXNlIFhIUlJlc291cmNlOgot
ICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6WEhSOworICAg
ICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpY
SFI7CiAgICAgY2FzZSBXZWJTb2NrZXRSZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIFR5cGVCdWls
ZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OldlYlNvY2tldDsKKyAgICAgICAgcmV0dXJuIEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6V2ViU29ja2V0OwogICAgIGNh
c2UgT3RoZXJSZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpQYWdlOjpSZXNv
dXJjZVR5cGU6Ok90aGVyOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
UGFnZTo6UmVzb3VyY2VUeXBlOjpPdGhlcjsKICAgICB9Ci0gICAgcmV0dXJuIFR5cGVCdWlsZGVy
OjpQYWdlOjpSZXNvdXJjZVR5cGU6Ok90aGVyOworICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6Ok90aGVyOwogfQogCiBJbnNwZWN0b3JQYWdlQWdl
bnQ6OlJlc291cmNlVHlwZSBJbnNwZWN0b3JQYWdlQWdlbnQ6OmNhY2hlZFJlc291cmNlVHlwZShj
b25zdCBDYWNoZWRSZXNvdXJjZSYgY2FjaGVkUmVzb3VyY2UpCkBAIC0zNDUsMTMgKzM0NywxMyBA
QCBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSBJbnNwZWN0CiAgICAgcmV0dXJuIElu
c3BlY3RvclBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJjZTsKIH0KIAotVHlwZUJ1aWxkZXI6OlBhZ2U6
OlJlc291cmNlVHlwZTo6RW51bSBJbnNwZWN0b3JQYWdlQWdlbnQ6OmNhY2hlZFJlc291cmNlVHlw
ZUpzb24oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIGNhY2hlZFJlc291cmNlKQorSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpFbnVtIEluc3BlY3RvclBhZ2VBZ2VudDo6
Y2FjaGVkUmVzb3VyY2VUeXBlSnNvbihjb25zdCBDYWNoZWRSZXNvdXJjZSYgY2FjaGVkUmVzb3Vy
Y2UpCiB7CiAgICAgcmV0dXJuIHJlc291cmNlVHlwZUpzb24oY2FjaGVkUmVzb3VyY2VUeXBlKGNh
Y2hlZFJlc291cmNlKSk7CiB9CiAKIEluc3BlY3RvclBhZ2VBZ2VudDo6SW5zcGVjdG9yUGFnZUFn
ZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIFBhZ2UqIHBhZ2Us
IEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBp
bmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3BlY3RvckNsaWVudCogY2xpZW50LCBJbnNwZWN0b3JP
dmVybGF5KiBvdmVybGF5KQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgi
UGFnZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFT
Q0lJTGl0ZXJhbCgiUGFnZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9wYWdlKHBh
Z2UpCiAgICAgLCBtX2luc3BlY3RvckFnZW50KGluc3BlY3RvckFnZW50KQogICAgICwgbV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQpAQCAtMzcxLDcgKzM3Myw3
IEBAIEluc3BlY3RvclBhZ2VBZ2VudDo6SW5zcGVjdG9yUGFnZUFnZW50KEkKIHsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERp
c3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3RvclBhZ2VGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAg
bV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvclBhZ2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3Jl
YXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKQEAgLTQ2MCw5ICs0NjIsOSBAQCB2b2lkIElu
c3BlY3RvclBhZ2VBZ2VudDo6bmF2aWdhdGUoRXJyb3JTCiAgICAgZnJhbWUubG9hZGVyKCkuY2hh
bmdlTG9jYXRpb24oZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgZnJhbWUuZG9j
dW1lbnQoKS0+Y29tcGxldGVVUkwodXJsKSwgIiIsIGZhbHNlLCBmYWxzZSk7CiB9CiAKLXN0YXRp
YyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQYWdlOjpDb29raWU+IGJ1aWxkT2JqZWN0Rm9yQ29v
a2llKGNvbnN0IENvb2tpZSYgY29va2llKQorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6UGFnZTo6Q29va2llPiBidWlsZE9iamVjdEZvckNvb2tpZShjb25zdCBDb29r
aWUmIGNvb2tpZSkKIHsKLSAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlBhZ2U6OkNvb2tpZTo6Y3Jl
YXRlKCkKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6Q29va2llOjpj
cmVhdGUoKQogICAgICAgICAuc2V0TmFtZShjb29raWUubmFtZSkKICAgICAgICAgLnNldFZhbHVl
KGNvb2tpZS52YWx1ZSkKICAgICAgICAgLnNldERvbWFpbihjb29raWUuZG9tYWluKQpAQCAtNDc1
LDkgKzQ3Nyw5IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQYWdlOjpDb28KICAg
ICAgICAgLnJlbGVhc2UoKTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpDb29raWU+PiBidWlsZEFycmF5Rm9yQ29va2llcyhMaXN0
SGFzaFNldDxDb29raWU+JiBjb29raWVzTGlzdCkKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkNvb2tp
ZT4+IGJ1aWxkQXJyYXlGb3JDb29raWVzKExpc3RIYXNoU2V0PENvb2tpZT4mIGNvb2tpZXNMaXN0
KQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OkNv
b2tpZT4+IGNvb2tpZXMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OkNv
b2tpZT46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJh
eTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpDb29raWU+PiBjb29raWVzID0gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6Q29v
a2llPjo6Y3JlYXRlKCk7CiAKICAgICBMaXN0SGFzaFNldDxDb29raWU+OjppdGVyYXRvciBlbmQg
PSBjb29raWVzTGlzdC5lbmQoKTsKICAgICBMaXN0SGFzaFNldDxDb29raWU+OjppdGVyYXRvciBp
dCA9IGNvb2tpZXNMaXN0LmJlZ2luKCk7CkBAIC01MjgsNyArNTMwLDcgQEAgc3RhdGljIFZlY3Rv
cjxVUkw+IGFsbFJlc291cmNlc1VSTHNGb3JGcgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yUGFnZUFnZW50OjpnZXRDb29raWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6Q29va2llPj4mIGNvb2tpZXMpCit2
b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0Q29va2llcyhFcnJvclN0cmluZyosIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdl
OjpDb29raWU+PiYgY29va2llcykKIHsKICAgICAvLyBJZiB3ZSBjYW4gZ2V0IHJhdyBjb29raWVz
LgogICAgIExpc3RIYXNoU2V0PENvb2tpZT4gcmF3Q29va2llc0xpc3Q7CkBAIC01NjcsNyArNTY5
LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMoRXJybwogICAgIGlmIChy
YXdDb29raWVzSW1wbGVtZW50ZWQpCiAgICAgICAgIGNvb2tpZXMgPSBidWlsZEFycmF5Rm9yQ29v
a2llcyhyYXdDb29raWVzTGlzdCk7CiAgICAgZWxzZQotICAgICAgICBjb29raWVzID0gVHlwZUJ1
aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpDb29raWU+OjpjcmVhdGUoKTsKKyAgICAg
ICAgY29va2llcyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQ
YWdlOjpDb29raWU+OjpjcmVhdGUoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRl
bGV0ZUNvb2tpZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSwgY29uc3Qg
U3RyaW5nJiB1cmwpCkBAIC01NzcsNyArNTc5LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6
OmRlbGV0ZUNvb2tpZShFcgogICAgICAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoZnJhbWUtPmRv
Y3VtZW50KCksIHBhcnNlZFVSTCwgY29va2llTmFtZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50OjpnZXRSZXNvdXJjZVRyZWUoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6
OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiYgb2JqZWN0KQordm9pZCBJbnNwZWN0b3JQYWdlQWdl
bnQ6OmdldFJlc291cmNlVHJlZShFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT4mIG9iamVjdCkKIHsKICAgICBvYmplY3Qg
PSBidWlsZE9iamVjdEZvckZyYW1lVHJlZSgmbV9wYWdlLT5tYWluRnJhbWUoKSk7CiB9CkBAIC02
MDQsOSArNjA2LDkgQEAgc3RhdGljIGJvb2wgdGV4dENvbnRlbnRGb3JDYWNoZWRSZXNvdXJjZQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaElu
UmVzb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbENh
c2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0Y2g+PiYgcmVzdWx0
cykKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlKEVycm9yU3RyaW5n
KiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiBxdWVyeSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBi
b29sKiBjb25zdCBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hNYXRjaD4+JiByZXN1
bHRzKQogewotICAgIHJlc3VsdHMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBh
Z2U6OlNlYXJjaE1hdGNoPjo6Y3JlYXRlKCk7CisgICAgcmVzdWx0cyA9IEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaE1hdGNo
Pjo6Y3JlYXRlKCk7CiAKICAgICBib29sIGlzUmVnZXggPSBvcHRpb25hbElzUmVnZXggPyAqb3B0
aW9uYWxJc1JlZ2V4IDogZmFsc2U7CiAgICAgYm9vbCBjYXNlU2Vuc2l0aXZlID0gb3B0aW9uYWxD
YXNlU2Vuc2l0aXZlID8gKm9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSA6IGZhbHNlOwpAQCAtNjM4LDE4
ICs2NDAsMTggQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3VyYwogICAg
IHJlc3VsdHMgPSBDb250ZW50U2VhcmNoVXRpbHM6OnNlYXJjaEluVGV4dEJ5TGluZXMoY29udGVu
dCwgcXVlcnksIGNhc2VTZW5zaXRpdmUsIGlzUmVnZXgpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0
cjxUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoUmVzdWx0PiBidWlsZE9iamVjdEZvclNlYXJjaFJl
c3VsdChjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbWF0Y2hl
c0NvdW50KQorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6
U2VhcmNoUmVzdWx0PiBidWlsZE9iamVjdEZvclNlYXJjaFJlc3VsdChjb25zdCBTdHJpbmcmIGZy
YW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbWF0Y2hlc0NvdW50KQogewotICAgIHJldHVy
biBUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoUmVzdWx0OjpjcmVhdGUoKQorICAgIHJldHVybiBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hSZXN1bHQ6OmNyZWF0ZSgpCiAgICAg
ICAgIC5zZXRVcmwodXJsKQogICAgICAgICAuc2V0RnJhbWVJZChmcmFtZUlkKQogICAgICAgICAu
c2V0TWF0Y2hlc0NvdW50KG1hdGNoZXNDb3VudCkKICAgICAgICAgLnJlbGVhc2UoKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3VyY2VzKEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRp
dmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mIHJlc3VsdHMpCit2b2lk
IEluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIHRleHQsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwg
Y29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoUmVzdWx0
Pj4mIHJlc3VsdHMpCiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRl
cjo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4gc2VhcmNoUmVzdWx0cyA9IFR5cGVCdWlsZGVyOjpBcnJh
eTxUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoUmVzdWx0Pjo6Y3JlYXRlKCk7CisgICAgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBh
Z2U6OlNlYXJjaFJlc3VsdD4+IHNlYXJjaFJlc3VsdHMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hSZXN1bHQ+OjpjcmVh
dGUoKTsKIAogICAgIGJvb2wgaXNSZWdleCA9IG9wdGlvbmFsSXNSZWdleCA/ICpvcHRpb25hbElz
UmVnZXggOiBmYWxzZTsKICAgICBib29sIGNhc2VTZW5zaXRpdmUgPSBvcHRpb25hbENhc2VTZW5z
aXRpdmUgPyAqb3B0aW9uYWxDYXNlU2Vuc2l0aXZlIDogZmFsc2U7CkBAIC0xMDM1LDkgKzEwMzcs
OSBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2NyaXB0c0VuYWJsZWQoCiAgICAgbV9mcm9u
dGVuZERpc3BhdGNoZXItPnNjcmlwdHNFbmFibGVkKGlzRW5hYmxlZCk7CiB9CiAKLVBhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2Jq
ZWN0Rm9yRnJhbWUoRnJhbWUqIGZyYW1lKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpQYWdlOjpGcmFtZT4gSW5zcGVjdG9yUGFnZUFnZW50OjpidWlsZE9iamVjdEZvckZyYW1l
KEZyYW1lKiBmcmFtZSkKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lPiBm
cmFtZU9iamVjdCA9IFR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZTo6Y3JlYXRlKCkKKyAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWU+IGZyYW1lT2JqZWN0ID0gSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWU6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRJ
ZChmcmFtZUlkKGZyYW1lKSkKICAgICAgICAgLnNldExvYWRlcklkKGxvYWRlcklkKGZyYW1lLT5s
b2FkZXIoKS5kb2N1bWVudExvYWRlcigpKSkKICAgICAgICAgLnNldFVybChmcmFtZS0+ZG9jdW1l
bnQoKS0+dXJsKCkuc3RyaW5nKCkpCkBAIC0xMDU1LDExICsxMDU3LDExIEBAIFBhc3NSZWZQdHI8
VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lPiBJbnMKICAgICByZXR1cm4gZnJhbWVPYmplY3Q7CiB9
CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKEZyYW1lKiBmcmFtZSkKK1Bh
c3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+
IEluc3BlY3RvclBhZ2VBZ2VudDo6YnVpbGRPYmplY3RGb3JGcmFtZVRyZWUoRnJhbWUqIGZyYW1l
KQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWU+IGZyYW1lT2JqZWN0ID0g
YnVpbGRPYmplY3RGb3JGcmFtZShmcmFtZSk7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJh
eTxUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU6OlJlc291cmNlcz4+IHN1YnJl
c291cmNlcyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNv
dXJjZVRyZWU6OlJlc291cmNlcz46OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6
UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpQYWdlOjpGcmFt
ZVJlc291cmNlVHJlZTo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6UGFnZTo6RnJhbWU+IGZyYW1lT2JqZWN0ID0gYnVpbGRPYmplY3RGb3JGcmFtZShmcmFtZSk7
CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlOjpSZXNvdXJjZXM+PiBzdWJyZXNvdXJj
ZXMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZTo6UmVzb3VyY2VzPjo6Y3JlYXRlKCk7CisgICAgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiByZXN1
bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZTo6Y3Jl
YXRlKCkKICAgICAgICAgIC5zZXRGcmFtZShmcmFtZU9iamVjdCkKICAgICAgICAgIC5zZXRSZXNv
dXJjZXMoc3VicmVzb3VyY2VzKTsKIApAQCAtMTA2Nyw3ICsxMDY5LDcgQEAgUGFzc1JlZlB0cjxU
eXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdQogICAgIGZvciAoVmVjdG9yPENhY2hlZFJlc291
cmNlKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gYWxsUmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IGFs
bFJlc291cmNlcy5lbmQoKTsgKytpdCkgewogICAgICAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVk
UmVzb3VyY2UgPSAqaXQ7CiAKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpQYWdlOjpGcmFt
ZVJlc291cmNlVHJlZTo6UmVzb3VyY2VzPiByZXNvdXJjZU9iamVjdCA9IFR5cGVCdWlsZGVyOjpQ
YWdlOjpGcmFtZVJlc291cmNlVHJlZTo6UmVzb3VyY2VzOjpjcmVhdGUoKQorICAgICAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU6OlJlc291
cmNlcz4gcmVzb3VyY2VPYmplY3QgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpGcmFt
ZVJlc291cmNlVHJlZTo6UmVzb3VyY2VzOjpjcmVhdGUoKQogICAgICAgICAgICAgLnNldFVybChj
YWNoZWRSZXNvdXJjZS0+dXJsKCkpCiAgICAgICAgICAgICAuc2V0VHlwZShjYWNoZWRSZXNvdXJj
ZVR5cGVKc29uKCpjYWNoZWRSZXNvdXJjZSkpCiAgICAgICAgICAgICAuc2V0TWltZVR5cGUoY2Fj
aGVkUmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSk7CkBAIC0xMDgxLDEwICsxMDgzLDEw
IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3UKICAgICAgICAgc3Vi
cmVzb3VyY2VzLT5hZGRJdGVtKHJlc291cmNlT2JqZWN0KTsKICAgICB9CiAKLSAgICBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT4+
IGNoaWxkcmVuQXJyYXk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPj4gY2hpbGRy
ZW5BcnJheTsKICAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IGZyYW1lLT50cmVlKCkuZmlyc3RDaGls
ZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLm5leHRTaWJsaW5nKCkpIHsKICAgICAg
ICAgaWYgKCFjaGlsZHJlbkFycmF5KSB7Ci0gICAgICAgICAgICBjaGlsZHJlbkFycmF5ID0gVHlw
ZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT46OmNy
ZWF0ZSgpOworICAgICAgICAgICAgY2hpbGRyZW5BcnJheSA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVl
Pjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICByZXN1bHQtPnNldENoaWxkRnJhbWVzKGNoaWxkcmVu
QXJyYXkpOwogICAgICAgICB9CiAgICAgICAgIGNoaWxkcmVuQXJyYXktPmFkZEl0ZW0oYnVpbGRP
YmplY3RGb3JGcmFtZVRyZWUoY2hpbGQpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JQYWdlQWdlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgJKHJldmlzaW9uIDE2MDQwNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzUsOCArMzUsOSBAQAogCiAjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25EYXRhLmgiCiAjaW5j
bHVkZSAiR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2Vu
dC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgi
CiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgpAQCAtNDQsNiArNDUsMTEgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0
b3IgeworY2xhc3MgSW5zcGVjdG9yQXJyYXk7CitjbGFzcyBJbnNwZWN0b3JPYmplY3Q7Cit9CisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CkBAIC01NCw5ICs2
MCw3IEBAIGNsYXNzIEZyb250ZW5kOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3MgSW5zcGVjdG9yQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0
b3JBcnJheTsKIGNsYXNzIEluc3BlY3RvckNsaWVudDsKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsK
IGNsYXNzIEluc3BlY3Rvck92ZXJsYXk7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xh
c3MgVVJMOwpAQCAtNjcsNyArNzEsNyBAQCBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCiB0
eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50IDog
cHVibGljIEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3RvclBhZ2VCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50IDogcHVibGljIEluc3Bl
Y3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3RvclBhZ2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvclBhZ2VBZ2VudCk7CiBwdWJs
aWM6CiAgICAgZW51bSBSZXNvdXJjZVR5cGUgewpAQCAtOTAsOSArOTQsOSBAQCBwdWJsaWM6CiAK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YShGcmFtZSos
IGNvbnN0IFVSTCYsIFN0cmluZyogdGV4dEVuY29kaW5nTmFtZSk7CiAgICAgc3RhdGljIENhY2hl
ZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZShGcmFtZSosIGNvbnN0IFVSTCYpOwotICAgIHN0YXRp
YyBUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpFbnVtIHJlc291cmNlVHlwZUpzb24o
UmVzb3VyY2VUeXBlKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6
UmVzb3VyY2VUeXBlOjpFbnVtIHJlc291cmNlVHlwZUpzb24oUmVzb3VyY2VUeXBlKTsKICAgICBz
dGF0aWMgUmVzb3VyY2VUeXBlIGNhY2hlZFJlc291cmNlVHlwZShjb25zdCBDYWNoZWRSZXNvdXJj
ZSYpOwotICAgIHN0YXRpYyBUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpFbnVtIGNh
Y2hlZFJlc291cmNlVHlwZUpzb24oY29uc3QgQ2FjaGVkUmVzb3VyY2UmKTsKKyAgICBzdGF0aWMg
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpFbnVtIGNhY2hlZFJl
c291cmNlVHlwZUpzb24oY29uc3QgQ2FjaGVkUmVzb3VyY2UmKTsKIAogICAgIC8vIFBhZ2UgQVBJ
IGZvciBJbnNwZWN0b3JGcm9udGVuZAogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJp
bmcqKTsKQEAgLTEwMSwxMiArMTA1LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllcik7CiAgICAgdmlydHVhbCB2b2lkIHJlbG9hZChFcnJvclN0cmluZyosIGNvbnN0IGJv
b2wqIG9wdGlvbmFsSWdub3JlQ2FjaGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxTY3JpcHRUb0V2
YWx1YXRlT25Mb2FkLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsU2NyaXB0UHJlcHJvY2Vzc29yKTsK
ICAgICB2aXJ0dWFsIHZvaWQgbmF2aWdhdGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVy
bCk7Ci0gICAgdmlydHVhbCB2b2lkIGdldENvb2tpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpDb29raWU+PiYgY29va2llcyk7Cisg
ICAgdmlydHVhbCB2b2lkIGdldENvb2tpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6Q29va2ll
Pj4mIGNvb2tpZXMpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUsIGNvbnN0IFN0cmluZyYgdXJsKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0UmVzb3VyY2VUcmVlKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVzb3Vy
Y2VUcmVlKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6
OkZyYW1lUmVzb3VyY2VUcmVlPiYpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRSZXNvdXJjZUNvbnRl
bnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJs
LCBTdHJpbmcqIGNvbnRlbnQsIGJvb2wqIGJhc2U2NEVuY29kZWQpOwotICAgIHZpcnR1YWwgdm9p
ZCBzZWFyY2hJblJlc291cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogb3B0aW9u
YWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxUeXBl
QnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaE1hdGNoPj4mKTsKLSAgICB2
aXJ0dWFsIHZvaWQgc2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBib29sKiBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBpc1JlZ2V4LCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiYpOwor
ICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hJblJlc291cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3Ry
aW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29u
c3QgYm9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVn
ZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpQYWdlOjpTZWFyY2hNYXRjaD4+Jik7CisgICAgdmlydHVhbCB2b2lkIHNlYXJjaElu
UmVzb3VyY2VzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiwgY29uc3QgYm9vbCogY2FzZVNl
bnNpdGl2ZSwgY29uc3QgYm9vbCogaXNSZWdleCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaFJlc3VsdD4+Jik7
CiAgICAgdmlydHVhbCB2b2lkIHNldERvY3VtZW50Q29udGVudChFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiBodG1sKTsKICAgICB2aXJ0dWFsIHZvaWQg
Y2FuT3ZlcnJpZGVEZXZpY2VNZXRyaWNzKEVycm9yU3RyaW5nKiwgYm9vbCopOwogICAgIHZpcnR1
YWwgdm9pZCBzZXREZXZpY2VNZXRyaWNzT3ZlcnJpZGUoRXJyb3JTdHJpbmcqLCBpbnQgd2lkdGgs
IGludCBoZWlnaHQsIGRvdWJsZSBmb250U2NhbGVGYWN0b3IsIGJvb2wgZml0V2luZG93KTsKQEAg
LTE2Myw3ICsxNjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY3JpcHRzRW5hYmxlZChib29sIGlz
RW5hYmxlZCk7CiAKICAgICAvLyBJbnNwZWN0b3IgQ29udHJvbGxlciBBUEkKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBP
VkVSUklERTsKIAogICAgIC8vIENyb3NzLWFnZW50cyBBUEkKQEAgLTE5MCw4ICsxOTQsOCBAQCBw
cml2YXRlOgogICAgIHN0YXRpYyBib29sIG1haW5SZXNvdXJjZUNvbnRlbnQoRnJhbWUqLCBib29s
IHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KTsKICAgICBzdGF0aWMgYm9vbCBkYXRh
Q29udGVudChjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOwog
Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWU+IGJ1aWxkT2JqZWN0Rm9y
RnJhbWUoRnJhbWUqKTsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJl
c291cmNlVHJlZT4gYnVpbGRPYmplY3RGb3JGcmFtZVRyZWUoRnJhbWUqKTsKKyAgICBQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lPiBidWlsZE9iamVjdEZvckZy
YW1lKEZyYW1lKik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdl
OjpGcmFtZVJlc291cmNlVHJlZT4gYnVpbGRPYmplY3RGb3JGcmFtZVRyZWUoRnJhbWUqKTsKICAg
ICBQYWdlKiBtX3BhZ2U7CiAgICAgSW5zcGVjdG9yQWdlbnQqIG1faW5zcGVjdG9yQWdlbnQ7CiAg
ICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKQEAgLTIx
OCw3ICsyMjIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pZ25vcmVTY3JpcHRzRW5hYmxlZE5v
dGlmaWNhdGlvbjsKICAgICBib29sIG1fc2hvd1BhaW50UmVjdHM7CiAgICAgU3RyaW5nIG1fZW11
bGF0ZWRNZWRpYTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtX3NjcmlwdHNUb0V2YWx1
YXRlT25Mb2FkOworICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gbV9zY3Jp
cHRzVG9FdmFsdWF0ZU9uTG9hZDsKICAgICBSZWZQdHI8R2VvbG9jYXRpb25Qb3NpdGlvbj4gbV9n
ZW9sb2NhdGlvblBvc2l0aW9uOwogICAgIFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBtX3Bs
YXRmb3JtR2VvbG9jYXRpb25Qb3NpdGlvbjsKICAgICBSZWZQdHI8RGV2aWNlT3JpZW50YXRpb25E
YXRhPiBtX2RldmljZU9yaWVudGF0aW9uOwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAkocmV2aXNpb24gMTYwNDA0KQor
KysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MCwyMCArNDAsMjIgQEAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlw
dEhvc3QuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb25zb2xlQWdlbnQuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JGcm9udGVuZC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1
ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUGFnZVNjcmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0SGVhcFNuYXBzaG90LmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSAi
U2NyaXB0UHJvZmlsZS5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGVyLmgiCiAjaW5jbHVkZSAi
V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRPYmpl
Y3QuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8
d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IFVzZXJJ
bml0aWF0ZWRQcm9maWxlTmFtZSA9ICJvcmcud2Via2l0LnByb2ZpbGVzLnVzZXItaW5pdGlhdGVk
IjsKQEAgLTExOSw3ICsxMjEsNyBAQCBQYXNzT3duUHRyPEluc3BlY3RvclByb2ZpbGVyQWdlbnQ+
IEluc3BlCiB9CiAKIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6Okluc3BlY3RvclByb2ZpbGVyQWdl
bnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yQ29u
c29sZUFnZW50KiBjb25zb2xlQWdlbnQsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50KEFTQ0lJTGl0ZXJhbCgiUHJv
ZmlsZXIiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZShB
U0NJSUxpdGVyYWwoIlByb2ZpbGVyIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX2Nv
bnNvbGVBZ2VudChjb25zb2xlQWdlbnQpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihp
bmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBtX2VuYWJsZWQoZmFsc2UpCkBAIC0xNjgsMTkg
KzE3MCwxOSBAQCB2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmNvbGxlY3RHYXJiCiAgICAg
U2NyaXB0UHJvZmlsZXI6OmNvbGxlY3RHYXJiYWdlKCk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1
aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPiBJbnNwZWN0b3JQcm9maWxlckFnZW50Ojpj
cmVhdGVQcm9maWxlSGVhZGVyKGNvbnN0IFNjcmlwdFByb2ZpbGUmIHByb2ZpbGUpCitQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPiBJbnNw
ZWN0b3JQcm9maWxlckFnZW50OjpjcmVhdGVQcm9maWxlSGVhZGVyKGNvbnN0IFNjcmlwdFByb2Zp
bGUmIHByb2ZpbGUpCiB7Ci0gICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmls
ZUhlYWRlcjo6Y3JlYXRlKCkKLSAgICAgICAgLnNldFR5cGVJZChUeXBlQnVpbGRlcjo6UHJvZmls
ZXI6OlByb2ZpbGVIZWFkZXI6OlR5cGVJZDo6Q1BVKQorICAgIHJldHVybiBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcjo6Y3JlYXRlKCkKKyAgICAgICAgLnNl
dFR5cGVJZChJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcjo6
VHlwZUlkOjpDUFUpCiAgICAgICAgIC5zZXRVaWQocHJvZmlsZS51aWQoKSkKICAgICAgICAgLnNl
dFRpdGxlKHByb2ZpbGUudGl0bGUoKSkKICAgICAgICAgLnJlbGVhc2UoKTsKIH0KIAotUGFzc1Jl
ZlB0cjxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+IEluc3BlY3RvclByb2Zp
bGVyQWdlbnQ6OmNyZWF0ZVNuYXBzaG90SGVhZGVyKGNvbnN0IFNjcmlwdEhlYXBTbmFwc2hvdCYg
c25hcHNob3QpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQ
cm9maWxlSGVhZGVyPiBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpjcmVhdGVTbmFwc2hvdEhlYWRl
cihjb25zdCBTY3JpcHRIZWFwU25hcHNob3QmIHNuYXBzaG90KQogewotICAgIFJlZlB0cjxUeXBl
QnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+IGhlYWRlciA9IFR5cGVCdWlsZGVyOjpQ
cm9maWxlcjo6UHJvZmlsZUhlYWRlcjo6Y3JlYXRlKCkKLSAgICAgICAgLnNldFR5cGVJZChUeXBl
QnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI6OlR5cGVJZDo6SEVBUCkKKyAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+IGhlYWRl
ciA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyOjpjcmVh
dGUoKQorICAgICAgICAuc2V0VHlwZUlkKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlByb2ZpbGVy
OjpQcm9maWxlSGVhZGVyOjpUeXBlSWQ6OkhFQVApCiAgICAgICAgIC5zZXRVaWQoc25hcHNob3Qu
dWlkKCkpCiAgICAgICAgIC5zZXRUaXRsZShzbmFwc2hvdC50aXRsZSgpKTsKICAgICBoZWFkZXIt
PnNldE1heEpTT2JqZWN0SWQoc25hcHNob3QubWF4U25hcHNob3RKU09iamVjdElkKCkpOwpAQCAt
MjQwLDEwICsyNDIsMTAgQEAgU3RyaW5nIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldEN1cnJl
bgogICAgIHJldHVybiBtYWtlU3RyaW5nKFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSwgJy4nLCBT
dHJpbmc6Om51bWJlcihtX2N1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU51bWJlcikpOwogfQog
Ci12b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldFByb2ZpbGVIZWFkZXJzKEVycm9yU3Ry
aW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlBy
b2ZpbGVIZWFkZXI+PiYgaGVhZGVycykKK3ZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0
UHJvZmlsZUhlYWRlcnMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+
PiYgaGVhZGVycykKIHsKICAgICBtX3Byb2ZpbGVIZWFkZXJzUmVxdWVzdGVkID0gdHJ1ZTsKLSAg
ICBoZWFkZXJzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJv
ZmlsZUhlYWRlcj46OmNyZWF0ZSgpOworICAgIGhlYWRlcnMgPSBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRl
cj46OmNyZWF0ZSgpOwogCiAgICAgUHJvZmlsZXNNYXA6Oml0ZXJhdG9yIHByb2ZpbGVzRW5kID0g
bV9wcm9maWxlcy5lbmQoKTsKICAgICBmb3IgKFByb2ZpbGVzTWFwOjppdGVyYXRvciBpdCA9IG1f
cHJvZmlsZXMuYmVnaW4oKTsgaXQgIT0gcHJvZmlsZXNFbmQ7ICsraXQpCkBAIC0yNjgsNyArMjcw
LDcgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UKIAotdm9pZCBJbnNwZWN0b3JQcm9maWxl
ckFnZW50OjpnZXRDUFVQcm9maWxlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IHJhd1Vp
ZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZT4mIHByb2ZpbGVPYmpl
Y3QpCit2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldENQVVByb2ZpbGUoRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBpbnQgcmF3VWlkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6UHJvZmlsZXI6OkNQVVByb2ZpbGU+JiBwcm9maWxlT2JqZWN0KQogewogICAgIHVuc2lnbmVk
IHVpZCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYXdVaWQpOwogICAgIFByb2ZpbGVzTWFwOjpp
dGVyYXRvciBpdCA9IG1fcHJvZmlsZXMuZmluZCh1aWQpOwpAQCAtMjc2LDcgKzI3OCw3IEBAIHZv
aWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0Q1BVUHJvZmkKICAgICAgICAgKmVycm9yU3Ry
aW5nID0gIlByb2ZpbGUgd2Fzbid0IGZvdW5kIjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBwcm9maWxlT2JqZWN0ID0gVHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlOjpjcmVh
dGUoKTsKKyAgICBwcm9maWxlT2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UHJvZmls
ZXI6OkNQVVByb2ZpbGU6OmNyZWF0ZSgpOwogICAgIHByb2ZpbGVPYmplY3QtPnNldEhlYWQoaXQt
PnZhbHVlLT5idWlsZEluc3BlY3Rvck9iamVjdEZvckhlYWQoKSk7CiAgICAgcHJvZmlsZU9iamVj
dC0+c2V0SWRsZVRpbWUoaXQtPnZhbHVlLT5pZGxlVGltZSgpKTsKIH0KQEAgLTMyNyw3ICszMjks
NyBAQCB2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnJlc2V0RnJvbnRlCiAgICAgICAgIG1f
ZnJvbnRlbmREaXNwYXRjaGVyLT5yZXNldFByb2ZpbGVzKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
UHJvZmlsZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciog
YmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCog
ZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3Bh
dGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3RvclByb2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAg
IG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JQcm9maWxlckJhY2tlbmREaXNwYXRjaGVy
OjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpAQCAtNDE0LDcgKzQxNiw3IEBAIHZv
aWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6dG9nZ2xlUmVjb3IKICAgICAgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXItPnNldFJlY29yZGluZ1Byb2ZpbGUoaXNQcm9maWxpbmcpOwogfQogCi12b2lk
IEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldE9iamVjdEJ5SGVhcE9iamVjdElkKEVycm9yU3Ry
aW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBoZWFwU25hcHNob3RPYmplY3RJZCwgY29uc3QgU3Ry
aW5nKiBvYmplY3RHcm91cCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmpl
Y3Q+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldE9iamVjdEJ5SGVh
cE9iamVjdElkKEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBoZWFwU25hcHNob3RP
YmplY3RJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCkKIHsKICAgICBib29sIG9r
OwogICAgIHVuc2lnbmVkIGlkID0gaGVhcFNuYXBzaG90T2JqZWN0SWQudG9VSW50KCZvayk7CkBA
IC00MjIsNyArNDI0LDcgQEAgdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRPYmplY3RC
eQogICAgICAgICAqZXJyb3IgPSAiSW52YWxpZCBoZWFwIHNuYXBzaG90IG9iamVjdCBpZCI7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgU2NyaXB0T2JqZWN0IGhlYXBPYmplY3QgPSBTY3Jp
cHRQcm9maWxlcjo6b2JqZWN0QnlIZWFwT2JqZWN0SWQoaWQpOworICAgIERlcHJlY2F0ZWQ6OlNj
cmlwdE9iamVjdCBoZWFwT2JqZWN0ID0gU2NyaXB0UHJvZmlsZXI6Om9iamVjdEJ5SGVhcE9iamVj
dElkKGlkKTsKICAgICBpZiAoaGVhcE9iamVjdC5oYXNOb1ZhbHVlKCkpIHsKICAgICAgICAgKmVy
cm9yID0gIk9iamVjdCBpcyBub3QgYXZhaWxhYmxlIjsKICAgICAgICAgcmV0dXJuOwpAQCAtNDQ0
LDcgKzQ0Niw3IEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0SGVhcE9iamUKICAg
ICAgICAgKmVycm9yU3RyaW5nID0gIkluc3BlY3RlZCBjb250ZXh0IGhhcyBnb25lIjsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBTY3JpcHRWYWx1ZSB2YWx1ZSA9IGluamVjdGVkU2NyaXB0
LmZpbmRPYmplY3RCeUlkKG9iamVjdElkKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB2
YWx1ZSA9IGluamVjdGVkU2NyaXB0LmZpbmRPYmplY3RCeUlkKG9iamVjdElkKTsKICAgICBpZiAo
dmFsdWUuaGFzTm9WYWx1ZSgpIHx8IHZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgKmVy
cm9yU3RyaW5nID0gIk9iamVjdCB3aXRoIGdpdmVuIGlkIG5vdCBmb3VuZCI7CiAgICAgICAgIHJl
dHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFn
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBy
b2ZpbGVyQWdlbnQuaAkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMjAgKzMy
LDI0IEBACiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFKElOU1BF
Q1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgi
CisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9yQXJyYXk7
CitjbGFzcyBJbnNwZWN0b3JPYmplY3Q7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBjbGFzcyBJ
bnNwZWN0b3JDb25zb2xlQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnN0
cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgUGFnZTsKIGNsYXNzIFNjcmlwdEhlYXBTbmFwc2hvdDsK
QEAgLTU0LDcgKzU4LDcgQEAgY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAKIHR5cGVkZWYgU3Ry
aW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JQcm9maWxlckFnZW50IDogcHVibGlj
IEluc3BlY3RvckJhc2VBZ2VudCwgcHVibGljIEluc3BlY3RvclByb2ZpbGVyQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvclByb2ZpbGVyQWdlbnQgOiBwdWJsaWMgSW5z
cGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yUHJvZmlsZXJCYWNrZW5kRGlzcGF0Y2hl
ckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvclByb2ZpbGVyQWdl
bnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093
blB0cjxJbnNwZWN0b3JQcm9maWxlckFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyos
IEluc3BlY3RvckNvbnNvbGVBZ2VudCosIFBhZ2UqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsK
QEAgLTgzLDE4ICs4NywxOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmFibGUoYm9vbCBza2lwUmVj
b21waWxlKTsKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0K
ICAgICBTdHJpbmcgZ2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZShib29sIGluY3Jl
bWVudFByb2ZpbGVOdW1iZXIgPSBmYWxzZSk7Ci0gICAgdmlydHVhbCB2b2lkIGdldFByb2ZpbGVI
ZWFkZXJzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRl
cjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+PiYpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRDUFVQ
cm9maWxlKEVycm9yU3RyaW5nKiwgaW50IHVpZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxl
cjo6Q1BVUHJvZmlsZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvZmlsZUhlYWRlcnMoRXJy
b3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+PiYpOworICAgIHZpcnR1YWwg
dm9pZCBnZXRDUFVQcm9maWxlKEVycm9yU3RyaW5nKiwgaW50IHVpZCwgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlPiYpOwogICAgIHZpcnR1YWwgdm9p
ZCBnZXRIZWFwU25hcHNob3QoRXJyb3JTdHJpbmcqLCBpbnQgdWlkKTsKICAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlUHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlwZSwgaW50IHVp
ZCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9u
dGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCB0YWtlSGVhcFNu
YXBzaG90KEVycm9yU3RyaW5nKiwgY29uc3QgYm9vbCogcmVwb3J0UHJvZ3Jlc3MpOwogICAgIHZv
aWQgdG9nZ2xlUmVjb3JkQnV0dG9uKGJvb2wgaXNQcm9maWxpbmcpOwogCi0gICAgdmlydHVhbCB2
b2lkIGdldE9iamVjdEJ5SGVhcE9iamVjdElkKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBo
ZWFwU25hcHNob3RPYmplY3RJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgUmVmUHRyPFR5
cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpOworICAgIHZpcnR1YWwg
dm9pZCBnZXRPYmplY3RCeUhlYXBPYmplY3RJZChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYg
aGVhcFNuYXBzaG90T2JqZWN0SWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpOwog
ICAgIHZpcnR1YWwgdm9pZCBnZXRIZWFwT2JqZWN0SWQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIG9iamVjdElkLCBTdHJpbmcqIGhlYXBTbmFwc2hvdE9iamVjdElkKTsKIAogcHJvdGVjdGVk
OgpAQCAtMTA5LDggKzExMyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNldEZyb250ZW5kUHJv
ZmlsZXMoKTsKICAgICB2b2lkIHJlc3RvcmVFbmFibGVtZW50KCk7CiAKLSAgICBQYXNzUmVmUHRy
PFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4gY3JlYXRlUHJvZmlsZUhlYWRl
cihjb25zdCBTY3JpcHRQcm9maWxlJik7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UHJv
ZmlsZXI6OlByb2ZpbGVIZWFkZXI+IGNyZWF0ZVNuYXBzaG90SGVhZGVyKGNvbnN0IFNjcmlwdEhl
YXBTbmFwc2hvdCYpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UHJv
ZmlsZXI6OlByb2ZpbGVIZWFkZXI+IGNyZWF0ZVByb2ZpbGVIZWFkZXIoY29uc3QgU2NyaXB0UHJv
ZmlsZSYpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UHJvZmlsZXI6
OlByb2ZpbGVIZWFkZXI+IGNyZWF0ZVNuYXBzaG90SGVhZGVyKGNvbnN0IFNjcmlwdEhlYXBTbmFw
c2hvdCYpOwogCiAgICAgSW5zcGVjdG9yQ29uc29sZUFnZW50KiBtX2NvbnNvbGVBZ2VudDsKICAg
ICBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwpJbmRleDog
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
LmNwcAkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw2IEBACiAj
aW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JW
YWx1ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKQEAgLTY3LDE2ICs2NiwxOCBAQAogI2luY2x1
ZGUgIlN1YnJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0RnJhbWUuaCIKICNp
bmNsdWRlICJYTUxIdHRwUmVxdWVzdC5oIgotCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3Rv
clZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9I
ZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCit1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERp
c3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3Rvck5ldHdvcmtGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAg
ICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvck5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hl
cjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKQEAgLTEwMCw5ICsxMDEsOSBAQCBz
dGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkCiAgICAgcmV0dXJuIGhlYWRl
cnNPYmplY3Q7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpS
ZXNvdXJjZVRpbWluZz4gYnVpbGRPYmplY3RGb3JUaW1pbmcoY29uc3QgUmVzb3VyY2VMb2FkVGlt
aW5nJiB0aW1pbmcsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCitzdGF0aWMgUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNvdXJjZVRpbWluZz4gYnVpbGRPYmpl
Y3RGb3JUaW1pbmcoY29uc3QgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcsIERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIpCiB7Ci0gICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNvdXJj
ZVRpbWluZzo6Y3JlYXRlKCkKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0
d29yazo6UmVzb3VyY2VUaW1pbmc6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRSZXF1ZXN0VGltZShs
b2FkZXItPnRpbWluZygpLT5tb25vdG9uaWNUaW1lVG9Qc2V1ZG9XYWxsVGltZSh0aW1pbmcuY29u
dmVydFJlc291cmNlTG9hZFRpbWVUb01vbm90b25pY1RpbWUoMCkpKQogICAgICAgICAuc2V0UHJv
eHlTdGFydCh0aW1pbmcucHJveHlTdGFydCkKICAgICAgICAgLnNldFByb3h5RW5kKHRpbWluZy5w
cm94eUVuZCkKQEAgLTExOCw5ICsxMTksOSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRl
cjo6TmV0d29yazo6CiAgICAgICAgIC5yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRy
PFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXF1ZXN0PiBidWlsZE9iamVjdEZvclJlc291cmNlUmVx
dWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCitzdGF0aWMgUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXF1ZXN0PiBidWlsZE9iamVjdEZvclJl
c291cmNlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgUmVm
UHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXF1ZXN0PiByZXF1ZXN0T2JqZWN0ID0gVHlwZUJ1
aWxkZXI6Ok5ldHdvcms6OlJlcXVlc3Q6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlcXVlc3Q+IHJlcXVlc3RPYmplY3QgPSBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXF1ZXN0OjpjcmVhdGUoKQogICAgICAgICAuc2V0VXJs
KHJlcXVlc3QudXJsKCkuc3RyaW5nKCkpCiAgICAgICAgIC5zZXRNZXRob2QocmVxdWVzdC5odHRw
TWV0aG9kKCkpCiAgICAgICAgIC5zZXRIZWFkZXJzKGJ1aWxkT2JqZWN0Rm9ySGVhZGVycyhyZXF1
ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKSkpOwpAQCAtMTI5LDcgKzEzMCw3IEBAIHN0YXRpYyBQYXNz
UmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjoKICAgICByZXR1cm4gcmVxdWVzdE9iamVjdDsK
IH0KIAotc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc3BvbnNlPiBi
dWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCitzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNwb25zZT4gYnVpbGRPYmplY3RGb3JSZXNvdXJj
ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBEb2N1bWVudExvYWRl
ciogbG9hZGVyKQogewogICAgIGlmIChyZXNwb25zZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
IDA7CkBAIC0xMzcsNyArMTM4LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5l
dHdvcms6OgogICAgIGRvdWJsZSBzdGF0dXMgPSByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpOwog
ICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhlYWRlcnMgPSBidWlsZE9iamVjdEZvckhlYWRl
cnMocmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpKTsKIAotICAgIFJlZlB0cjxUeXBlQnVpbGRl
cjo6TmV0d29yazo6UmVzcG9uc2U+IHJlc3BvbnNlT2JqZWN0ID0gVHlwZUJ1aWxkZXI6Ok5ldHdv
cms6OlJlc3BvbnNlOjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpOZXR3b3JrOjpSZXNwb25zZT4gcmVzcG9uc2VPYmplY3QgPSBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpOZXR3b3JrOjpSZXNwb25zZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldFVybChyZXNwb25z
ZS51cmwoKS5zdHJpbmcoKSkKICAgICAgICAgLnNldFN0YXR1cyhzdGF0dXMpCiAgICAgICAgIC5z
ZXRTdGF0dXNUZXh0KHJlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCkpCkBAIC0xNTMsMTQgKzE1NCwx
NCBAQCBzdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6CiAgICAgcmV0dXJu
IHJlc3BvbnNlT2JqZWN0OwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TmV0
d29yazo6Q2FjaGVkUmVzb3VyY2U+IGJ1aWxkT2JqZWN0Rm9yQ2FjaGVkUmVzb3VyY2UoQ2FjaGVk
UmVzb3VyY2UqIGNhY2hlZFJlc291cmNlLCBEb2N1bWVudExvYWRlciogbG9hZGVyKQorc3RhdGlj
IFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6Q2FjaGVkUmVzb3Vy
Y2U+IGJ1aWxkT2JqZWN0Rm9yQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJl
c291cmNlLCBEb2N1bWVudExvYWRlciogbG9hZGVyKQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRl
cjo6TmV0d29yazo6Q2FjaGVkUmVzb3VyY2U+IHJlc291cmNlT2JqZWN0ID0gVHlwZUJ1aWxkZXI6
Ok5ldHdvcms6OkNhY2hlZFJlc291cmNlOjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpDYWNoZWRSZXNvdXJjZT4gcmVzb3VyY2VPYmplY3QgPSBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpDYWNoZWRSZXNvdXJjZTo6Y3JlYXRlKCkK
ICAgICAgICAgLnNldFVybChjYWNoZWRSZXNvdXJjZS0+dXJsKCkpCiAgICAgICAgIC5zZXRUeXBl
KEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2VUeXBlSnNvbigqY2FjaGVkUmVzb3Vy
Y2UpKQogICAgICAgICAuc2V0Qm9keVNpemUoY2FjaGVkUmVzb3VyY2UtPmVuY29kZWRTaXplKCkp
OwogCi0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNwb25zZT4gcmVzb3VyY2VS
ZXNwb25zZSA9IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShjYWNoZWRSZXNvdXJjZS0+
cmVzcG9uc2UoKSwgbG9hZGVyKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
TmV0d29yazo6UmVzcG9uc2U+IHJlc291cmNlUmVzcG9uc2UgPSBidWlsZE9iamVjdEZvclJlc291
cmNlUmVzcG9uc2UoY2FjaGVkUmVzb3VyY2UtPnJlc3BvbnNlKCksIGxvYWRlcik7CiAgICAgaWYg
KHJlc291cmNlUmVzcG9uc2UpCiAgICAgICAgIHJlc291cmNlT2JqZWN0LT5zZXRSZXNwb25zZShy
ZXNvdXJjZVJlc3BvbnNlKTsKIApAQCAtMjE2LDkgKzIxNyw5IEBAIHZvaWQgSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6d2lsbFNlbmRSZXEKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmll
bGQoIkNhY2hlLUNvbnRyb2wiLCAibm8tY2FjaGUiKTsKICAgICB9CiAKLSAgICBUeXBlQnVpbGRl
cjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpFbnVtIHJlc291cmNlVHlwZSA9IEluc3BlY3RvclBhZ2VB
Z2VudDo6cmVzb3VyY2VUeXBlSnNvbih0eXBlKTsKKyAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpQYWdlOjpSZXNvdXJjZVR5cGU6OkVudW0gcmVzb3VyY2VUeXBlID0gSW5zcGVjdG9yUGFnZUFn
ZW50OjpyZXNvdXJjZVR5cGVKc29uKHR5cGUpOwogCi0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpO
ZXR3b3JrOjpJbml0aWF0b3I+IGluaXRpYXRvck9iamVjdCA9IGJ1aWxkSW5pdGlhdG9yT2JqZWN0
KGxvYWRlci0+ZnJhbWUoKSA/IGxvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSA6IDApOworICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IGluaXRp
YXRvck9iamVjdCA9IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KGxvYWRlci0+ZnJhbWUoKSA/IGxvYWRl
ci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSA6IDApOwogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5y
ZXF1ZXN0V2lsbEJlU2VudChyZXF1ZXN0SWQsIG1fcGFnZUFnZW50LT5mcmFtZUlkKGxvYWRlci0+
ZnJhbWUoKSksIG1fcGFnZUFnZW50LT5sb2FkZXJJZChsb2FkZXIpLCBsb2FkZXItPnVybCgpLnN0
cmluZygpLCBidWlsZE9iamVjdEZvclJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwgY3VycmVudFRp
bWUoKSwgaW5pdGlhdG9yT2JqZWN0LCBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UocmVk
aXJlY3RSZXNwb25zZSwgbG9hZGVyKSwgdHlwZSAhPSBJbnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVy
UmVzb3VyY2UgPyAmcmVzb3VyY2VUeXBlIDogMCk7CiB9CiAKQEAgLTIzMCw3ICsyMzEsNyBAQCB2
b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6Om1hcmtSZXNvdXJjCiB2b2lkIEluc3BlY3RvclJl
c291cmNlQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIpCiB7CiAgICAgU3RyaW5nIHJlcXVlc3RJ
ZCA9IElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpOwotICAgIFJlZlB0
cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVzcG9uc2U+IHJlc291cmNlUmVzcG9uc2UgPSBidWls
ZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UocmVzcG9uc2UsIGxvYWRlcik7CisgICAgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc3BvbnNlPiByZXNvdXJjZVJlc3Bv
bnNlID0gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKHJlc3BvbnNlLCBsb2FkZXIpOwog
CiAgICAgYm9vbCBpc05vdE1vZGlmaWVkID0gcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAz
MDQ7CiAKQEAgLTI0Myw3ICsyNDQsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRp
ZFJlY2VpdmVSCiAgICAgaWYgKGNhY2hlZFJlc291cmNlKSB7CiAgICAgICAgIC8vIFVzZSBtaW1l
IHR5cGUgZnJvbSBjYWNoZWQgcmVzb3VyY2UgaW4gY2FzZSB0aGUgb25lIGluIHJlc3BvbnNlIGlz
IGVtcHR5LgogICAgICAgICBpZiAocmVzb3VyY2VSZXNwb25zZSAmJiByZXNwb25zZS5taW1lVHlw
ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJlc291cmNlUmVzcG9uc2UtPnNldFN0cmluZyhU
eXBlQnVpbGRlcjo6TmV0d29yazo6UmVzcG9uc2U6Ok1pbWVUeXBlLCBjYWNoZWRSZXNvdXJjZS0+
cmVzcG9uc2UoKS5taW1lVHlwZSgpKTsKKyAgICAgICAgICAgIHJlc291cmNlUmVzcG9uc2UtPnNl
dFN0cmluZyhJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNwb25zZTo6TWltZVR5
cGUsIGNhY2hlZFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCkpOwogICAgICAgICBtX3Jl
c291cmNlc0RhdGEtPmFkZENhY2hlZFJlc291cmNlKHJlcXVlc3RJZCwgY2FjaGVkUmVzb3VyY2Up
OwogICAgIH0KIApAQCAtMzM1LDcgKzMzNiw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dDo6ZGlkTG9hZFJlc28KICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5yZXVzZVhIUlJlcGxheURh
dGEocmVxdWVzdElkLCByYXdSZXF1ZXN0SWQpOwogICAgIH0KIAotICAgIFJlZlB0cjxUeXBlQnVp
bGRlcjo6TmV0d29yazo6SW5pdGlhdG9yPiBpbml0aWF0b3JPYmplY3QgPSBidWlsZEluaXRpYXRv
ck9iamVjdChsb2FkZXItPmZyYW1lKCkgPyBsb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCkgOiAw
KTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9y
PiBpbml0aWF0b3JPYmplY3QgPSBidWlsZEluaXRpYXRvck9iamVjdChsb2FkZXItPmZyYW1lKCkg
PyBsb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCkgOiAwKTsKIAogICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyLT5yZXF1ZXN0U2VydmVkRnJvbU1lbW9yeUNhY2hlKHJlcXVlc3RJZCwgZnJhbWVJZCwg
bG9hZGVySWQsIGxvYWRlci0+dXJsKCkuc3RyaW5nKCksIGN1cnJlbnRUaW1lKCksIGluaXRpYXRv
ck9iamVjdCwgYnVpbGRPYmplY3RGb3JDYWNoZWRSZXNvdXJjZShyZXNvdXJjZSwgbG9hZGVyKSk7
CiB9CkBAIC00NDAsMTkgKzQ0MSwxOSBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRp
ZFNjaGVkdWxlCiAgICAgICAgIG1fc3R5bGVSZWNhbGN1bGF0aW9uSW5pdGlhdG9yID0gYnVpbGRJ
bml0aWF0b3JPYmplY3QoZG9jdW1lbnQpOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpO
ZXR3b3JrOjpJbml0aWF0b3I+IEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmJ1aWxkSW5pdGlhdG9y
T2JqZWN0KERvY3VtZW50KiBkb2N1bWVudCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6TmV0d29yazo6SW5pdGlhdG9yPiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpidWlsZElu
aXRpYXRvck9iamVjdChEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAgICAgUmVmUHRyPFNjcmlwdENh
bGxTdGFjaz4gc3RhY2tUcmFjZSA9IGNyZWF0ZVNjcmlwdENhbGxTdGFjayhTY3JpcHRDYWxsU3Rh
Y2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUsIHRydWUpOwogICAgIGlmIChzdGFja1RyYWNl
ICYmIHN0YWNrVHJhY2UtPnNpemUoKSA+IDApIHsKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVy
OjpOZXR3b3JrOjpJbml0aWF0b3I+IGluaXRpYXRvck9iamVjdCA9IFR5cGVCdWlsZGVyOjpOZXR3
b3JrOjpJbml0aWF0b3I6OmNyZWF0ZSgpCi0gICAgICAgICAgICAuc2V0VHlwZShUeXBlQnVpbGRl
cjo6TmV0d29yazo6SW5pdGlhdG9yOjpUeXBlOjpTY3JpcHQpOworICAgICAgICBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yPiBpbml0aWF0b3JPYmplY3Qg
PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I6OmNyZWF0ZSgpCisg
ICAgICAgICAgICAuc2V0VHlwZShJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0
aWF0b3I6OlR5cGU6OlNjcmlwdCk7CiAgICAgICAgIGluaXRpYXRvck9iamVjdC0+c2V0U3RhY2tU
cmFjZShzdGFja1RyYWNlLT5idWlsZEluc3BlY3RvckFycmF5KCkpOwogICAgICAgICByZXR1cm4g
aW5pdGlhdG9yT2JqZWN0OwogICAgIH0KIAogICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC0+
c2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCkpIHsKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVy
OjpOZXR3b3JrOjpJbml0aWF0b3I+IGluaXRpYXRvck9iamVjdCA9IFR5cGVCdWlsZGVyOjpOZXR3
b3JrOjpJbml0aWF0b3I6OmNyZWF0ZSgpCi0gICAgICAgICAgICAuc2V0VHlwZShUeXBlQnVpbGRl
cjo6TmV0d29yazo6SW5pdGlhdG9yOjpUeXBlOjpQYXJzZXIpOworICAgICAgICBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yPiBpbml0aWF0b3JPYmplY3Qg
PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I6OmNyZWF0ZSgpCisg
ICAgICAgICAgICAuc2V0VHlwZShJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0
aWF0b3I6OlR5cGU6OlBhcnNlcik7CiAgICAgICAgIGluaXRpYXRvck9iamVjdC0+c2V0VXJsKGRv
Y3VtZW50LT51cmwoKS5zdHJpbmcoKSk7CiAgICAgICAgIGluaXRpYXRvck9iamVjdC0+c2V0TGlu
ZU51bWJlcihkb2N1bWVudC0+c2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCktPnRleHRQb3NpdGlv
bigpLm1fbGluZS5vbmVCYXNlZEludCgpKTsKICAgICAgICAgcmV0dXJuIGluaXRpYXRvck9iamVj
dDsKQEAgLTQ2MSw4ICs0NjIsOCBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJ
bml0aWF0CiAgICAgaWYgKG1faXNSZWNhbGN1bGF0aW5nU3R5bGUgJiYgbV9zdHlsZVJlY2FsY3Vs
YXRpb25Jbml0aWF0b3IpCiAgICAgICAgIHJldHVybiBtX3N0eWxlUmVjYWxjdWxhdGlvbkluaXRp
YXRvcjsKIAotICAgIHJldHVybiBUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yOjpjcmVh
dGUoKQotICAgICAgICAuc2V0VHlwZShUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yOjpU
eXBlOjpPdGhlcikKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6
SW5pdGlhdG9yOjpjcmVhdGUoKQorICAgICAgICAuc2V0VHlwZShJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I6OlR5cGU6Ok90aGVyKQogICAgICAgICAucmVsZWFzZSgp
OwogfQogCkBAIC00NzUsMTQgKzQ3NiwxNCBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6
OmRpZENyZWF0ZVdlCiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbFNlbmRXZWJT
b2NrZXRIYW5kc2hha2VSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29y
azo6V2ViU29ja2V0UmVxdWVzdD4gcmVxdWVzdE9iamVjdCA9IFR5cGVCdWlsZGVyOjpOZXR3b3Jr
OjpXZWJTb2NrZXRSZXF1ZXN0OjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpOZXR3b3JrOjpXZWJTb2NrZXRSZXF1ZXN0PiByZXF1ZXN0T2JqZWN0ID0gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6V2ViU29ja2V0UmVxdWVzdDo6Y3JlYXRlKCkKICAg
ICAgICAgLnNldEhlYWRlcnMoYnVpbGRPYmplY3RGb3JIZWFkZXJzKHJlcXVlc3QuaHR0cEhlYWRl
ckZpZWxkcygpKSk7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPndlYlNvY2tldFdpbGxTZW5k
SGFuZHNoYWtlUmVxdWVzdChJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVy
KSwgY3VycmVudFRpbWUoKSwgcmVxdWVzdE9iamVjdCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0g
ICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpXZWJTb2NrZXRSZXNwb25zZT4gcmVzcG9u
c2VPYmplY3QgPSBUeXBlQnVpbGRlcjo6TmV0d29yazo6V2ViU29ja2V0UmVzcG9uc2U6OmNyZWF0
ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OldlYlNvY2tl
dFJlc3BvbnNlPiByZXNwb25zZU9iamVjdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdv
cms6OldlYlNvY2tldFJlc3BvbnNlOjpjcmVhdGUoKQogICAgICAgICAuc2V0U3RhdHVzKHJlc3Bv
bnNlLmh0dHBTdGF0dXNDb2RlKCkpCiAgICAgICAgIC5zZXRTdGF0dXNUZXh0KHJlc3BvbnNlLmh0
dHBTdGF0dXNUZXh0KCkpCiAgICAgICAgIC5zZXRIZWFkZXJzKGJ1aWxkT2JqZWN0Rm9ySGVhZGVy
cyhyZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkpKTsKQEAgLTQ5Niw3ICs0OTcsNyBAQCB2b2lk
IEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZENsb3NlV2ViCiAKIHZvaWQgSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lKHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgV2ViU29ja2V0RnJhbWUmIGZyYW1lKQogewotICAgIFJlZlB0cjxUeXBlQnVp
bGRlcjo6TmV0d29yazo6V2ViU29ja2V0RnJhbWU+IGZyYW1lT2JqZWN0ID0gVHlwZUJ1aWxkZXI6
Ok5ldHdvcms6OldlYlNvY2tldEZyYW1lOjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpXZWJTb2NrZXRGcmFtZT4gZnJhbWVPYmplY3QgPSBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpXZWJTb2NrZXRGcmFtZTo6Y3JlYXRlKCkKICAg
ICAgICAgLnNldE9wY29kZShmcmFtZS5vcENvZGUpCiAgICAgICAgIC5zZXRNYXNrKGZyYW1lLm1h
c2tlZCkKICAgICAgICAgLnNldFBheWxvYWREYXRhKFN0cmluZyhmcmFtZS5wYXlsb2FkLCBmcmFt
ZS5wYXlsb2FkTGVuZ3RoKSk7CkBAIC01MDUsNyArNTA2LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpkaWRSZWNlaXZlVwogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRp
ZFNlbmRXZWJTb2NrZXRGcmFtZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYlNv
Y2tldEZyYW1lJiBmcmFtZSkKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6Oldl
YlNvY2tldEZyYW1lPiBmcmFtZU9iamVjdCA9IFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpXZWJTb2Nr
ZXRGcmFtZTo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0
d29yazo6V2ViU29ja2V0RnJhbWU+IGZyYW1lT2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6TmV0d29yazo6V2ViU29ja2V0RnJhbWU6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRPcGNvZGUo
ZnJhbWUub3BDb2RlKQogICAgICAgICAuc2V0TWFzayhmcmFtZS5tYXNrZWQpCiAgICAgICAgIC5z
ZXRQYXlsb2FkRGF0YShTdHJpbmcoZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5bG9hZExlbmd0aCkp
OwpAQCAtNjUwLDcgKzY1MSw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6bWFpbkZy
YW1lTmEKIH0KIAogSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6SW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdl
QWdlbnQqIHBhZ2VBZ2VudCwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCi0gICAgOiBJbnNwZWN0
b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJOZXR3b3JrIiksIGluc3RydW1lbnRpbmdBZ2VudHMp
CisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJOZXR3b3JrIiksIGluc3Ry
dW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCiAgICAgLCBtX2Ns
aWVudChjbGllbnQpCiAgICAgLCBtX3Jlc291cmNlc0RhdGEoYWRvcHRQdHIobmV3IE5ldHdvcmtS
ZXNvdXJjZXNEYXRhKCkpKQpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clJlc291cmNlQWdlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw5ICszMSw5IEBACiAjaWZuZGVmIEluc3BlY3RvclJlc291cmNlQWdlbnRfaAogI2RlZmlu
ZSBJbnNwZWN0b3JSZXNvdXJjZUFnZW50X2gKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2Vu
dC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvckZyb250ZW5kLmgiCi0KKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2Uu
aCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNDEsOCArNDEsOSBAQAogCiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKIAotbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBTdHJpbmc7CituYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKK2NsYXNzIEluc3BlY3RvckFycmF5OworY2xhc3MgSW5zcGVjdG9yT2Jq
ZWN0OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Myw5ICs1NCw3IEBAIGNsYXNzIERv
Y3VtZW50TG9hZGVyOwogY2xhc3MgRm9ybURhdGE7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUVFBI
ZWFkZXJNYXA7Ci1jbGFzcyBJbnNwZWN0b3JBcnJheTsKIGNsYXNzIEluc3BlY3RvckNsaWVudDsK
LWNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKIGNsYXNz
IEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBVUkw7CkBAIC03Niw3ICs3NSw3IEBAIHN0cnVj
dCBXZWJTb2NrZXRGcmFtZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNz
IEluc3BlY3RvclJlc291cmNlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJs
aWMgSW5zcGVjdG9yTmV0d29ya0JhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIElu
c3BlY3Rvck5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogcHVibGljOgogICAgIHN0
YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvclJlc291cmNlQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VB
Z2VudCwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCiAgICAgewpAQCAtODUsNyArODQsNyBAQCBw
dWJsaWM6CiAKICAgICB+SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2
b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
LCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZF
UlJJREU7CiAKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CkBAIC0xMTYsNyArMTE1LDcgQEAgcHVibGljOgogICAg
IHZvaWQgZGlkUmVjYWxjdWxhdGVTdHlsZSgpOwogICAgIHZvaWQgZGlkU2NoZWR1bGVTdHlsZVJl
Y2FsY3VsYXRpb24oRG9jdW1lbnQqKTsKIAotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5l
dHdvcms6OkluaXRpYXRvcj4gYnVpbGRJbml0aWF0b3JPYmplY3QoRG9jdW1lbnQqKTsKKyAgICBQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4gYnVp
bGRJbml0aWF0b3JPYmplY3QoRG9jdW1lbnQqKTsKIAogI2lmIEVOQUJMRShXRUJfU09DS0VUUykK
ICAgICB2b2lkIGRpZENyZWF0ZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFVSTCYgcmVxdWVzdFVSTCk7CkBAIC0xMzUsNyArMTM0LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJs
ZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VyQWdlbnRPdmVycmlkZShF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0RXh0cmFIVFRQSGVhZGVycyhFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+Jik7CisgICAgdmlydHVhbCB2b2lkIHNldEV4dHJhSFRUUEhlYWRlcnMoRXJyb3JTdHJp
bmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+Jik7CiAgICAgdmly
dHVhbCB2b2lkIGdldFJlc3BvbnNlQm9keShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBTdHJpbmcqIGNvbnRlbnQsIGJvb2wqIGJhc2U2NEVuY29kZWQpOwogCiAgICAgdmly
dHVhbCB2b2lkIHJlcGxheVhIUihFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
KTsKQEAgLTE2MCwxMiArMTU5LDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2VuYWJsZWQ7CiAg
ICAgYm9vbCBtX2NhY2hlRGlzYWJsZWQ7CiAgICAgYm9vbCBtX2xvYWRpbmdYSFJTeW5jaHJvbm91
c2x5OwotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1fZXh0cmFSZXF1ZXN0SGVhZGVyczsK
KyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1fZXh0cmFSZXF1ZXN0SGVh
ZGVyczsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgUmVm
UHRyPFhIUlJlcGxheURhdGE+PiBQZW5kaW5nWEhSUmVwbGF5RGF0YU1hcDsKICAgICBQZW5kaW5n
WEhSUmVwbGF5RGF0YU1hcCBtX3BlbmRpbmdYSFJSZXBsYXlEYXRhOwogICAgIC8vIEZJWE1FOiBJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50IHNob3VsZCBub3cgYmUgYXdhcmUgb2Ygc3R5bGUgcmVjYWxj
dWxhdGlvbi4KLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4gbV9z
dHlsZVJlY2FsY3VsYXRpb25Jbml0aWF0b3I7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4gbV9zdHlsZVJlY2FsY3VsYXRpb25Jbml0aWF0b3I7
CiAgICAgYm9vbCBtX2lzUmVjYWxjdWxhdGluZ1N0eWxlOwogfTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAJKHJldmlz
aW9uIDE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1l
QWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiw4IEBACiAKICNpbmNsdWRlICJJ
bmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgotI2lu
Y2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgor
I2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDxwYXJzZXIv
UGFyc2VyRXJyb3IuaD4KICNpbmNsdWRlIDxwYXJzZXIvU291cmNlQ29kZS5oPgogI2luY2x1ZGUg
PHJ1bnRpbWUvQ29tcGxldGlvbi5oPgpAQCAtNTAsNiArNTAsOCBAQAogCiB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0YXRpYyBib29sIGFzQm9vbChjb25zdCBib29sKiBjb25zdCBiKQpAQCAtNTgsNyAr
NjAsNyBAQCBzdGF0aWMgYm9vbCBhc0Jvb2woY29uc3QgYm9vbCogY29uc3QgYikKIH0KIAogSW5z
cGVjdG9yUnVudGltZUFnZW50OjpJbnNwZWN0b3JSdW50aW1lQWdlbnQoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3Rl
ZFNjcmlwdE1hbmFnZXIpCi0gICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQoQVNDSUlMaXRlcmFsKCJS
dW50aW1lIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2Uo
QVNDSUlMaXRlcmFsKCJSdW50aW1lIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX2Vu
YWJsZWQoZmFsc2UpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlw
dE1hbmFnZXIpCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCkBAIC04MiwxNSArODQs
MTUgQEAgc3RhdGljIFNjcmlwdERlYnVnU2VydmVyOjpQYXVzZU9uRXhjZXB0aQogfQogI2VuZGlm
CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpFcnJvclJhbmdlPiBi
dWlsZEVycm9yUmFuZ2VPYmplY3QoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiB0b2tlbkxvY2F0aW9u
KQorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6RXJy
b3JSYW5nZT4gYnVpbGRFcnJvclJhbmdlT2JqZWN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgdG9r
ZW5Mb2NhdGlvbikKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkVycm9yUmFu
Z2U+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpSdW50aW1lOjpFcnJvclJhbmdlOjpjcmVhdGUoKQor
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpFcnJvclJhbmdlPiBy
ZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpFcnJvclJhbmdlOjpjcmVh
dGUoKQogICAgICAgICAuc2V0U3RhcnRPZmZzZXQodG9rZW5Mb2NhdGlvbi5zdGFydE9mZnNldCkK
ICAgICAgICAgLnNldEVuZE9mZnNldCh0b2tlbkxvY2F0aW9uLmVuZE9mZnNldCk7CiAgICAgcmV0
dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50Ojpw
YXJzZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgVHlwZUJ1aWxkZXI6
OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZTo6RW51bSogcmVzdWx0LCBUeXBlQnVpbGRlcjo6T3B0
T3V0cHV0PFN0cmluZz4qIG1lc3NhZ2UsIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6RXJy
b3JSYW5nZT4mIHJhbmdlKQordm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnBhcnNlKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGU6OkVudW0qIHJlc3VsdCwgSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6T3B0T3V0cHV0PFN0cmluZz4qIG1lc3NhZ2UsIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpSdW50aW1lOjpFcnJvclJhbmdlPiYgcmFuZ2UpCiB7CiAgICAgVk0qIHZtID0g
SlNET01XaW5kb3dCYXNlOjpjb21tb25WTSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsK
QEAgLTEwMCwxNiArMTAyLDE2IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpwYXJzZShF
cnJvclMKIAogICAgIHN3aXRjaCAoZXJyb3IubV9zeW50YXhFcnJvclR5cGUpIHsKICAgICBjYXNl
IFBhcnNlckVycm9yOjpTeW50YXhFcnJvck5vbmU6Ci0gICAgICAgICpyZXN1bHQgPSBUeXBlQnVp
bGRlcjo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBlOjpOb25lOworICAgICAgICAqcmVzdWx0ID0g
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBlOjpOb25lOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIFBhcnNlckVycm9yOjpTeW50YXhFcnJvcklycmVjb3Zl
cmFibGU6Ci0gICAgICAgICpyZXN1bHQgPSBUeXBlQnVpbGRlcjo6UnVudGltZTo6U3ludGF4RXJy
b3JUeXBlOjpJcnJlY292ZXJhYmxlOworICAgICAgICAqcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBlOjpJcnJlY292ZXJhYmxlOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIFBhcnNlckVycm9yOjpTeW50YXhFcnJvclVudGVybWluYXRlZExp
dGVyYWw6Ci0gICAgICAgICpyZXN1bHQgPSBUeXBlQnVpbGRlcjo6UnVudGltZTo6U3ludGF4RXJy
b3JUeXBlOjpVbnRlcm1pbmF0ZWRMaXRlcmFsOworICAgICAgICAqcmVzdWx0ID0gSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBlOjpVbnRlcm1pbmF0ZWRMaXRl
cmFsOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBhcnNlckVycm9yOjpTeW50YXhFcnJvclJl
Y292ZXJhYmxlOgotICAgICAgICAqcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlN5bnRh
eEVycm9yVHlwZTo6UmVjb3ZlcmFibGU7CisgICAgICAgICpyZXN1bHQgPSBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGU6OlJlY292ZXJhYmxlOwogICAgICAg
ICBicmVhazsKICAgICB9CiAKQEAgLTExOSw3ICsxMjEsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRp
bWVBZ2VudDo6cGFyc2UoRXJyb3JTCiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvclJ1bnRpbWVB
Z2VudDo6ZXZhbHVhdGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGV4
cHJlc3Npb24sIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGNv
bnN0IGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY29uc3QgYm9vbCogY29uc3QgZG9Ob3RQYXVzZU9u
RXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCwg
Y29uc3QgYm9vbCogY29uc3QgcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2
aWV3LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwg
VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQordm9pZCBJbnNwZWN0b3JS
dW50aW1lQWdlbnQ6OmV2YWx1YXRlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3Ry
aW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBjb25zdCBi
b29sKiBjb25zdCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGNvbnN0IGJvb2wqIGNvbnN0IGRvTm90
UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3QgaW50KiBleGVjdXRpb25Db250
ZXh0SWQsIGNvbnN0IGJvb2wqIGNvbnN0IHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGdlbmVy
YXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+
KiB3YXNUaHJvd24pCiB7CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmpl
Y3RlZFNjcmlwdEZvckV2YWwoZXJyb3JTdHJpbmcsIGV4ZWN1dGlvbkNvbnRleHRJZCk7CiAgICAg
aWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKQEAgLTE0Miw3ICsxNDQsNyBAQCB2b2lk
IEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZXZhbHVhdGUoRXJyCiAgICAgfQogfQogCi12b2lkIElu
c3BlY3RvclJ1bnRpbWVBZ2VudDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIGNvbnN0IG9wdGlvbmFsQXJndW1lbnRzLCBjb25z
dCBib29sKiBjb25zdCBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0
IGJvb2wqIGNvbnN0IHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywg
UmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIFR5cGVC
dWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKK3ZvaWQgSW5zcGVjdG9yUnVudGlt
ZUFnZW50OjpjYWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgUmVmUHRyPElu
c3BlY3RvckFycmF5PiogY29uc3Qgb3B0aW9uYWxBcmd1bWVudHMsIGNvbnN0IGJvb2wqIGNvbnN0
IGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3QgYm9vbCogY29uc3Qg
cmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKIHsKICAgICBJbmpl
Y3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmpl
Y3RlZFNjcmlwdEZvck9iamVjdElkKG9iamVjdElkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQu
aGFzTm9WYWx1ZSgpKSB7CkBAIC0xNzEsNyArMTczLDcgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1l
QWdlbnQ6OmNhbGxGdW5jdGlvbgogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdl
bnQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IG9iamVjdElkLCBjb25zdCBib29sKiBjb25zdCBvd25Qcm9wZXJ0aWVzLCBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiYg
cmVzdWx0LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpJ
bnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFByb3BlcnRpZXMpCit2b2lkIElu
c3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVydGllcyhFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIGNvbnN0IG93blByb3BlcnRp
ZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGlt
ZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgaW50ZXJuYWxQcm9wZXJ0aWVzKQogewog
ICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXItPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQpOwogICAgIGlmIChpbmplY3Rl
ZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSdW50aW1lQWdlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmgJKHJldmlzaW9uIDE2MDQwNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzMsMjUgKzMzLDI5IEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVk
ZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSAi
U2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgogCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNzIEluc3BlY3RvckFy
cmF5OworY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworY2xhc3MgSW5zcGVjdG9yVmFsdWU7Cit9CisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5qZWN0ZWRTY3JpcHQ7CiBjbGFzcyBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI7Ci1jbGFzcyBJbnNwZWN0b3JBcnJheTsKLWNsYXNzIEluc3BlY3Rv
ck9iamVjdDsKLWNsYXNzIEluc3BlY3RvclZhbHVlOwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50
czsKIGNsYXNzIFNjcmlwdERlYnVnU2VydmVyOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAK
IHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JSdW50aW1lQWdl
bnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50LCBwdWJsaWMgSW5zcGVjdG9yUnVudGltZUJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JSdW50aW1lQWdlbnQgOiBw
dWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yUnVudGltZUJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yUnVu
dGltZUFnZW50KTsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JSdW50aW1lQWdlbnQo
KTsKQEAgLTU5LDcgKzYzLDcgQEAgcHVibGljOgogICAgIC8vIFBhcnQgb2YgdGhlIHByb3RvY29s
LgogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKSB7IG1fZW5hYmxlZCA9IHRy
dWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopIHsgbV9lbmFibGVk
ID0gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2UoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIGV4cHJlc3Npb24sIFR5cGVCdWlsZGVyOjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGU6
OkVudW0qIHJlc3VsdCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxTdHJpbmc+KiBtZXNzYWdlLCBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkVycm9yUmFuZ2U+Jik7CisgICAgdmlydHVhbCB2
b2lkIHBhcnNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGU6OkVudW0qIHJlc3VsdCwg
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PFN0cmluZz4qIG1lc3NhZ2UsIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpFcnJvclJhbmdlPiYpOwogICAgIHZp
cnR1YWwgdm9pZCBldmFsdWF0ZShFcnJvclN0cmluZyosCiAgICAgICAgICAgICAgICAgICBjb25z
dCBTdHJpbmcmIGV4cHJlc3Npb24sCiAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcqIG9i
amVjdEdyb3VwLApAQCAtNjgsMTkgKzcyLDE5IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAg
IGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkLAogICAgICAgICAgICAgICAgICAgY29uc3Qg
Ym9vbCogcmV0dXJuQnlWYWx1ZSwKICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wqIGdlbmVy
YXRlUHJldmlldywKLSAgICAgICAgICAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LAotICAgICAgICAgICAgICAgICAgVHlwZUJ1aWxkZXI6
Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKTsKKyAgICAgICAgICAgICAgICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsCisg
ICAgICAgICAgICAgICAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4q
IHdhc1Rocm93bik7CiAgICAgdmlydHVhbCB2b2lkIGNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5n
KiwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBvcHRpb25hbEFyZ3Vt
ZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3RvckFycmF5Piogb3B0aW9uYWxBcmd1bWVudHMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sKiByZXR1cm5CeVZhbHVlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LAotICAgICAgICAgICAg
ICAgICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiBy
ZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJv
b2w+KiB3YXNUaHJvd24pOworICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiog
d2FzVGhyb3duKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZU9iamVjdChFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9wZXJ0aWVz
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCogb3duUHJv
cGVydGllcywgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UnVudGltZTo6
UHJvcGVydHlEZXNjcmlwdG9yPj4mIHJlc3VsdCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxU
eXBlQnVpbGRlcjo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgaW50ZXJu
YWxQcm9wZXJ0aWVzKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIG93blByb3BlcnRpZXMsIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6SW50
ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgaW50ZXJuYWxQcm9wZXJ0aWVzKTsKICAgICB2aXJ0
dWFsIHZvaWQgcmVsZWFzZU9iamVjdEdyb3VwKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBv
YmplY3RHcm91cCk7CiAgICAgdmlydHVhbCB2b2lkIHJ1bihFcnJvclN0cmluZyopOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3Bw
CShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVTaGVldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDYgQEAKICNpbmNsdWRl
ICJIVE1MU3R5bGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ1NTQWdlbnQuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMu
aCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiUmVndWxhckV4cHJlc3Npb24uaCIKICNp
bmNsdWRlICJTVkdOYW1lcy5oIgpAQCAtNjAsMTMgKzU5LDEzIEBACiAjaW5jbHVkZSAiU3R5bGVT
aGVldENvbnRlbnRzLmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldExpc3QuaCIKICNpbmNsdWRlICJX
ZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmgiCi0KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9y
VmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KIAotdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkFycmF5OwordXNpbmcg
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk7CiB1c2luZyBXZWJDb3JlOjpSdWxlU291cmNl
RGF0YUxpc3Q7CiB1c2luZyBXZWJDb3JlOjpDU1NSdWxlU291cmNlRGF0YTsKIApAQCAtMTQ0LDYg
KzE0Myw4IEBAIFBhc3NSZWZQdHI8V2ViQ29yZTo6Q1NTUnVsZVNvdXJjZURhdGE+IFAKICAgICBy
ZXR1cm4gbV9zb3VyY2VEYXRhLT5hdChpbmRleCk7CiB9CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBNZWRpYUxpc3RTb3VyY2UgewpA
QCAtMTUzLDE0ICsxNTQsMTQgQEAgZW51bSBNZWRpYUxpc3RTb3VyY2UgewogICAgIE1lZGlhTGlz
dFNvdXJjZUltcG9ydFJ1bGUKIH07CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpD
U1M6OlNvdXJjZVJhbmdlPiBidWlsZFNvdXJjZVJhbmdlT2JqZWN0KGNvbnN0IFNvdXJjZVJhbmdl
JiByYW5nZSwgVmVjdG9yPHNpemVfdD4qIGxpbmVFbmRpbmdzKQorc3RhdGljIFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTb3VyY2VSYW5nZT4gYnVpbGRTb3VyY2VSYW5n
ZU9iamVjdChjb25zdCBTb3VyY2VSYW5nZSYgcmFuZ2UsIFZlY3RvcjxzaXplX3Q+KiBsaW5lRW5k
aW5ncykKIHsKICAgICBpZiAoIWxpbmVFbmRpbmdzKQogICAgICAgICByZXR1cm4gMDsKICAgICBU
ZXh0UG9zaXRpb24gc3RhcnQgPSBDb250ZW50U2VhcmNoVXRpbHM6OnRleHRQb3NpdGlvbkZyb21P
ZmZzZXQocmFuZ2Uuc3RhcnQsICpsaW5lRW5kaW5ncyk7CiAgICAgVGV4dFBvc2l0aW9uIGVuZCA9
IENvbnRlbnRTZWFyY2hVdGlsczo6dGV4dFBvc2l0aW9uRnJvbU9mZnNldChyYW5nZS5lbmQsICps
aW5lRW5kaW5ncyk7CiAKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6U291cmNlUmFuZ2U+
IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpDU1M6OlNvdXJjZVJhbmdlOjpjcmVhdGUoKQorICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNvdXJjZVJhbmdlPiByZXN1bHQgPSBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNvdXJjZVJhbmdlOjpjcmVhdGUoKQogICAgICAg
ICAuc2V0U3RhcnRMaW5lKHN0YXJ0Lm1fbGluZS56ZXJvQmFzZWRJbnQoKSkKICAgICAgICAgLnNl
dFN0YXJ0Q29sdW1uKHN0YXJ0Lm1fY29sdW1uLnplcm9CYXNlZEludCgpKQogICAgICAgICAuc2V0
RW5kTGluZShlbmQubV9saW5lLnplcm9CYXNlZEludCgpKQpAQCAtMTY4LDI2ICsxNjksMjYgQEAg
c3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6U291cgogICAgIHJldHVybiByZXN1
bHQucmVsZWFzZSgpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NNZWRpYT4gYnVpbGRNZWRpYU9iamVjdChjb25zdCBNZWRpYUxpc3QqIG1lZGlhLCBNZWRpYUxp
c3RTb3VyY2UgbWVkaWFMaXN0U291cmNlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3N0YXRp
YyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE+IGJ1aWxk
TWVkaWFPYmplY3QoY29uc3QgTWVkaWFMaXN0KiBtZWRpYSwgTWVkaWFMaXN0U291cmNlIG1lZGlh
TGlzdFNvdXJjZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7CiAgICAgLy8gTWFrZSBjZXJ0
YWluIGNvbXBpbGVycyBoYXBweSBieSBpbml0aWFsaXppbmcgfHNvdXJjZXwgdXAtZnJvbnQuCi0g
ICAgVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE6OlNvdXJjZTo6RW51bSBzb3VyY2UgPSBUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NNZWRpYTo6U291cmNlOjpJbmxpbmVTaGVldDsKKyAgICBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU01lZGlhOjpTb3VyY2U6OkVudW0gc291cmNlID0gSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYTo6U291cmNlOjpJbmxpbmVTaGVldDsK
ICAgICBzd2l0Y2ggKG1lZGlhTGlzdFNvdXJjZSkgewogICAgIGNhc2UgTWVkaWFMaXN0U291cmNl
TWVkaWFSdWxlOgotICAgICAgICBzb3VyY2UgPSBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYTo6
U291cmNlOjpNZWRpYVJ1bGU7CisgICAgICAgIHNvdXJjZSA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTTWVkaWE6OlNvdXJjZTo6TWVkaWFSdWxlOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIE1lZGlhTGlzdFNvdXJjZUltcG9ydFJ1bGU6Ci0gICAgICAgIHNvdXJjZSA9IFR5cGVC
dWlsZGVyOjpDU1M6OkNTU01lZGlhOjpTb3VyY2U6OkltcG9ydFJ1bGU7CisgICAgICAgIHNvdXJj
ZSA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE6OlNvdXJjZTo6SW1wb3J0
UnVsZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYUxpc3RTb3VyY2VMaW5rZWRTaGVl
dDoKLSAgICAgICAgc291cmNlID0gVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE6OlNvdXJjZTo6
TGlua2VkU2hlZXQ7CisgICAgICAgIHNvdXJjZSA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTTWVkaWE6OlNvdXJjZTo6TGlua2VkU2hlZXQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgTWVkaWFMaXN0U291cmNlSW5saW5lU2hlZXQ6Ci0gICAgICAgIHNvdXJjZSA9IFR5cGVCdWls
ZGVyOjpDU1M6OkNTU01lZGlhOjpTb3VyY2U6OklubGluZVNoZWV0OworICAgICAgICBzb3VyY2Ug
PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU01lZGlhOjpTb3VyY2U6OklubGluZVNo
ZWV0OwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTTWVkaWE+IG1lZGlhT2JqZWN0ID0gVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE6OmNy
ZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE+
IG1lZGlhT2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYTo6Y3Jl
YXRlKCkKICAgICAgICAgLnNldFRleHQobWVkaWEtPm1lZGlhVGV4dCgpKQogICAgICAgICAuc2V0
U291cmNlKHNvdXJjZSk7CiAKQEAgLTIzOCw3ICsyMzksNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxD
U1NSdWxlTGlzdD4gYXNDU1NSdWxlCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIGZp
bGxNZWRpYUxpc3RDaGFpbihDU1NSdWxlKiBydWxlLCBBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NNZWRpYT4qIG1lZGlhQXJyYXkpCitzdGF0aWMgdm9pZCBmaWxsTWVkaWFMaXN0Q2hhaW4oQ1NT
UnVsZSogcnVsZSwgQXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYT4q
IG1lZGlhQXJyYXkpCiB7CiAgICAgTWVkaWFMaXN0KiBtZWRpYUxpc3Q7CiAgICAgQ1NTUnVsZSog
cGFyZW50UnVsZSA9IHJ1bGU7CkBAIC0zMTYsMTEgKzMxNywxMSBAQCBJbnNwZWN0b3JTdHlsZTo6
fkluc3BlY3RvclN0eWxlKCkKIHsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OmJ1aWxkT2JqZWN0Rm9yU3R5bGUoKSBjb25zdAorUGFz
c1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JT
dHlsZTo6YnVpbGRPYmplY3RGb3JTdHlsZSgpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPFR5cGVCdWls
ZGVyOjpDU1M6OkNTU1N0eWxlPiByZXN1bHQgPSBzdHlsZVdpdGhQcm9wZXJ0aWVzKCk7CisgICAg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IHJlc3VsdCA9IHN0
eWxlV2l0aFByb3BlcnRpZXMoKTsKICAgICBpZiAoIW1fc3R5bGVJZC5pc0VtcHR5KCkpCi0gICAg
ICAgIHJlc3VsdC0+c2V0U3R5bGVJZChtX3N0eWxlSWQuYXNQcm90b2NvbFZhbHVlPFR5cGVCdWls
ZGVyOjpDU1M6OkNTU1N0eWxlSWQ+KCkpOworICAgICAgICByZXN1bHQtPnNldFN0eWxlSWQobV9z
dHlsZUlkLmFzUHJvdG9jb2xWYWx1ZTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0
eWxlSWQ+KCkpOwogCiAgICAgcmVzdWx0LT5zZXRXaWR0aChtX3N0eWxlLT5nZXRQcm9wZXJ0eVZh
bHVlKCJ3aWR0aCIpKTsKICAgICByZXN1bHQtPnNldEhlaWdodChtX3N0eWxlLT5nZXRQcm9wZXJ0
eVZhbHVlKCJoZWlnaHQiKSk7CkBAIC0zMzIsMTUgKzMzMywxNSBAQCBQYXNzUmVmUHRyPFR5cGVC
dWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBJCiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9
CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU0Nv
bXB1dGVkU3R5bGVQcm9wZXJ0eT4+IEluc3BlY3RvclN0eWxlOjpidWlsZEFycmF5Rm9yQ29tcHV0
ZWRTdHlsZSgpIGNvbnN0CitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4g
SW5zcGVjdG9yU3R5bGU6OmJ1aWxkQXJyYXlGb3JDb21wdXRlZFN0eWxlKCkgY29uc3QKIHsKLSAg
ICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU0NvbXB1dGVk
U3R5bGVQcm9wZXJ0eT4+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NDb21wdXRlZFN0eWxlUHJvcGVydHk+PiByZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9w
ZXJ0eT46OmNyZWF0ZSgpOwogICAgIFZlY3RvcjxJbnNwZWN0b3JTdHlsZVByb3BlcnR5PiBwcm9w
ZXJ0aWVzOwogICAgIHBvcHVsYXRlQWxsUHJvcGVydGllcygmcHJvcGVydGllcyk7CiAKICAgICBm
b3IgKFZlY3RvcjxJbnNwZWN0b3JTdHlsZVByb3BlcnR5Pjo6aXRlcmF0b3IgaXQgPSBwcm9wZXJ0
aWVzLmJlZ2luKCksIGl0RW5kID0gcHJvcGVydGllcy5lbmQoKTsgaXQgIT0gaXRFbmQ7ICsraXQp
IHsKICAgICAgICAgY29uc3QgQ1NTUHJvcGVydHlTb3VyY2VEYXRhJiBwcm9wZXJ0eUVudHJ5ID0g
aXQtPnNvdXJjZURhdGE7Ci0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NDb21w
dXRlZFN0eWxlUHJvcGVydHk+IGVudHJ5ID0gVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTQ29tcHV0ZWRT
dHlsZVByb3BlcnR5OjpjcmVhdGUoKQorICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+IGVudHJ5ID0gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk6OmNyZWF0ZSgpCiAgICAg
ICAgICAgICAuc2V0TmFtZShwcm9wZXJ0eUVudHJ5Lm5hbWUpCiAgICAgICAgICAgICAuc2V0VmFs
dWUocHJvcGVydHlFbnRyeS52YWx1ZSk7CiAgICAgICAgIHJlc3VsdC0+YWRkSXRlbShlbnRyeSk7
CkBAIC01MTksMTQgKzUyMCwxNCBAQCBib29sIEluc3BlY3RvclN0eWxlOjpwb3B1bGF0ZUFsbFBy
b3BlcnRpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVzKCkgY29uc3QK
K1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVj
dG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjb25zdAogewogICAgIFZlY3RvcjxJbnNw
ZWN0b3JTdHlsZVByb3BlcnR5PiBwcm9wZXJ0aWVzOwogICAgIHBvcHVsYXRlQWxsUHJvcGVydGll
cygmcHJvcGVydGllcyk7CiAKLSAgICBSZWZQdHI8QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
UHJvcGVydHk+PiBwcm9wZXJ0aWVzT2JqZWN0ID0gQXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
UHJvcGVydHk+OjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6
U2hvcnRoYW5kRW50cnk+PiBzaG9ydGhhbmRFbnRyaWVzID0gQXJyYXk8VHlwZUJ1aWxkZXI6OkNT
Uzo6U2hvcnRoYW5kRW50cnk+OjpjcmVhdGUoKTsKLSAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRy
PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5Pj4gcHJvcGVydHlOYW1lVG9QcmV2aW91c0Fj
dGl2ZVByb3BlcnR5OworICAgIFJlZlB0cjxBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6OkNTU1Byb3BlcnR5Pj4gcHJvcGVydGllc09iamVjdCA9IEFycmF5PEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8QXJyYXk8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTaG9ydGhhbmRFbnRyeT4+IHNob3J0aGFuZEVu
dHJpZXMgPSBBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNob3J0aGFuZEVudHJ5
Pjo6Y3JlYXRlKCk7CisgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5Pj4gcHJvcGVydHlOYW1lVG9QcmV2aW91c0FjdGl2ZVBy
b3BlcnR5OwogICAgIEhhc2hTZXQ8U3RyaW5nPiBmb3VuZFNob3J0aGFuZHM7CiAgICAgU3RyaW5n
IHByZXZpb3VzUHJpb3JpdHk7CiAgICAgU3RyaW5nIHByZXZpb3VzU3RhdHVzOwpAQCAtNTM4LDkg
KzUzOSw5IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IEkKICAgICAg
ICAgY29uc3QgQ1NTUHJvcGVydHlTb3VyY2VEYXRhJiBwcm9wZXJ0eUVudHJ5ID0gaXQtPnNvdXJj
ZURhdGE7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgbmFtZSA9IHByb3BlcnR5RW50cnkubmFtZTsK
IAotICAgICAgICBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eTo6U3RhdHVzOjpFbnVtIHN0
YXR1cyA9IGl0LT5kaXNhYmxlZCA/IFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpTdGF0
dXM6OkRpc2FibGVkIDogVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlN0YXR1czo6QWN0
aXZlOworICAgICAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpT
dGF0dXM6OkVudW0gc3RhdHVzID0gaXQtPmRpc2FibGVkID8gSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NQcm9wZXJ0eTo6U3RhdHVzOjpEaXNhYmxlZCA6IEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlN0YXR1czo6QWN0aXZlOwogCi0gICAgICAgIFJlZlB0
cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eT4gcHJvcGVydHkgPSBUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NQcm9wZXJ0eTo6Y3JlYXRlKCkKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk+IHByb3BlcnR5ID0gSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eTo6Y3JlYXRlKCkKICAgICAgICAgICAgIC5zZXROYW1lKG5h
bWUpCiAgICAgICAgICAgICAuc2V0VmFsdWUocHJvcGVydHlFbnRyeS52YWx1ZSk7CiAKQEAgLTU3
MywyMiArNTc0LDIyIEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IEkK
ICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SWQgPSBjc3NQcm9wZXJ0eUlE
KG5hbWUpOwogICAgICAgICAgICAgICAgIC8vIENhbm9uaWNhbGl6ZSBwcm9wZXJ0eSBuYW1lcyB0
byB0cmVhdCBub24tcHJlZml4ZWQgYW5kIHZlbmRvci1wcmVmaXhlZCBwcm9wZXJ0eSBuYW1lcyB0
aGUgc2FtZSAob3BhY2l0eSB2cy4gLXdlYmtpdC1vcGFjaXR5KS4KICAgICAgICAgICAgICAgICBT
dHJpbmcgY2Fub25pY2FsUHJvcGVydHlOYW1lID0gcHJvcGVydHlJZCA/IGdldFByb3BlcnR5TmFt
ZVN0cmluZyhwcm9wZXJ0eUlkKSA6IG5hbWU7Ci0gICAgICAgICAgICAgICAgSGFzaE1hcDxTdHJp
bmcsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eT4+OjppdGVyYXRvciBhY3Rp
dmVJdCA9IHByb3BlcnR5TmFtZVRvUHJldmlvdXNBY3RpdmVQcm9wZXJ0eS5maW5kKGNhbm9uaWNh
bFByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5Pj46Oml0ZXJhdG9yIGFjdGl2
ZUl0ID0gcHJvcGVydHlOYW1lVG9QcmV2aW91c0FjdGl2ZVByb3BlcnR5LmZpbmQoY2Fub25pY2Fs
UHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgICAgICBpZiAoYWN0aXZlSXQgIT0gcHJvcGVydHlO
YW1lVG9QcmV2aW91c0FjdGl2ZVByb3BlcnR5LmVuZCgpKSB7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChwcm9wZXJ0eUVudHJ5LnBhcnNlZE9rKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBi
b29sIHN1Y2Nlc3NQcmlvcml0eSA9IGFjdGl2ZUl0LT52YWx1ZS0+Z2V0U3RyaW5nKFR5cGVCdWls
ZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpQcmlvcml0eSwgJnByZXZpb3VzUHJpb3JpdHkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBzdWNjZXNzU3RhdHVzID0gYWN0aXZlSXQtPnZhbHVl
LT5nZXRTdHJpbmcoVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlN0YXR1cywgJnByZXZp
b3VzU3RhdHVzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3VjY2Vzc1ByaW9yaXR5
ID0gYWN0aXZlSXQtPnZhbHVlLT5nZXRTdHJpbmcoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NQcm9wZXJ0eTo6UHJpb3JpdHksICZwcmV2aW91c1ByaW9yaXR5KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgc3VjY2Vzc1N0YXR1cyA9IGFjdGl2ZUl0LT52YWx1ZS0+Z2V0U3Ry
aW5nKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlN0YXR1cywgJnBy
ZXZpb3VzU3RhdHVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdWNjZXNzU3RhdHVz
ICYmIHByZXZpb3VzU3RhdHVzICE9ICJpbmFjdGl2ZSIpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAocHJvcGVydHlFbnRyeS5pbXBvcnRhbnQgfHwgIXN1Y2Nlc3NQcmlvcml0eSkg
Ly8gUHJpb3JpdHkgbm90IHNldCA9PSAibm90IGltcG9ydGFudCIuCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNob3VsZEluYWN0aXZhdGUgPSB0cnVlOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKHN0YXR1cyA9PSBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9w
ZXJ0eTo6U3RhdHVzOjpBY3RpdmUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
IGlmIChzdGF0dXMgPT0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eTo6
U3RhdHVzOjpBY3RpdmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW5h
Y3RpdmF0ZSBhIG5vbi1pbXBvcnRhbnQgcHJvcGVydHkgZm9sbG93aW5nIHRoZSBzYW1lLW5hbWVk
IGltcG9ydGFudCBwcm9wZXJ0eS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
dHVzID0gVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlN0YXR1czo6SW5hY3RpdmU7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlN0YXR1czo6SW5hY3RpdmU7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwcmV2aW91c1Bh
cnNlZE9rOwotICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gYWN0aXZlSXQt
PnZhbHVlLT5nZXRCb29sZWFuKFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpQYXJzZWRP
aywgJnByZXZpb3VzUGFyc2VkT2spOworICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzdWNj
ZXNzID0gYWN0aXZlSXQtPnZhbHVlLT5nZXRCb29sZWFuKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTUHJvcGVydHk6OlBhcnNlZE9rLCAmcHJldmlvdXNQYXJzZWRPayk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoc3VjY2VzcyAmJiAhcHJldmlvdXNQYXJzZWRPaykKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRJbmFjdGl2YXRlID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICAgICAgfQpAQCAtNTk2LDcgKzU5Nyw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTU3R5bGU+IEkKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lVG9QcmV2
aW91c0FjdGl2ZVByb3BlcnR5LnNldChjYW5vbmljYWxQcm9wZXJ0eU5hbWUsIHByb3BlcnR5KTsK
IAogICAgICAgICAgICAgICAgIGlmIChzaG91bGRJbmFjdGl2YXRlKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGFjdGl2ZUl0LT52YWx1ZS0+c2V0U3RhdHVzKFR5cGVCdWlsZGVyOjpDU1M6OkNTU1By
b3BlcnR5OjpTdGF0dXM6OkluYWN0aXZlKTsKKyAgICAgICAgICAgICAgICAgICAgYWN0aXZlSXQt
PnZhbHVlLT5zZXRTdGF0dXMoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0
eTo6U3RhdHVzOjpJbmFjdGl2ZSk7CiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVRv
UHJldmlvdXNBY3RpdmVQcm9wZXJ0eS5zZXQoY2Fub25pY2FsUHJvcGVydHlOYW1lLCBwcm9wZXJ0
eSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTYwNCwxMyAr
NjA1LDEzIEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IEkKICAgICAg
ICAgICAgICAgICAvLyBEZWZhdWx0ICJpbXBsaWNpdCIgPT0gZmFsc2UuCiAgICAgICAgICAgICAg
ICAgaWYgKGltcGxpY2l0KQogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eS0+c2V0SW1wbGlj
aXQodHJ1ZSk7Ci0gICAgICAgICAgICAgICAgc3RhdHVzID0gVHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
UHJvcGVydHk6OlN0YXR1czo6U3R5bGU7CisgICAgICAgICAgICAgICAgc3RhdHVzID0gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eTo6U3RhdHVzOjpTdHlsZTsKIAogICAg
ICAgICAgICAgICAgIFN0cmluZyBzaG9ydGhhbmQgPSBtX3N0eWxlLT5nZXRQcm9wZXJ0eVNob3J0
aGFuZChuYW1lKTsKICAgICAgICAgICAgICAgICBpZiAoIXNob3J0aGFuZC5pc0VtcHR5KCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFmb3VuZFNob3J0aGFuZHMuY29udGFpbnMoc2hvcnRo
YW5kKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRTaG9ydGhhbmRzLmFkZChzaG9y
dGhhbmQpOwotICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6
OlNob3J0aGFuZEVudHJ5PiBlbnRyeSA9IFR5cGVCdWlsZGVyOjpDU1M6OlNob3J0aGFuZEVudHJ5
OjpjcmVhdGUoKQorICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6U2hvcnRoYW5kRW50cnk+IGVudHJ5ID0gSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpTaG9ydGhhbmRFbnRyeTo6Y3JlYXRlKCkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAuc2V0TmFtZShzaG9ydGhhbmQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LnNldFZhbHVlKHNob3J0aGFuZFZhbHVlKHNob3J0aGFuZCkpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgc2hvcnRoYW5kRW50cmllcy0+YWRkSXRlbShlbnRyeSk7CkBAIC02MjAsMTEgKzYyMSwx
MSBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBJCiAgICAgICAgIH0K
IAogICAgICAgICAvLyBEZWZhdWx0ICJzdGF0dXMiID09ICJzdHlsZSIuCi0gICAgICAgIGlmIChz
dGF0dXMgIT0gVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlN0YXR1czo6U3R5bGUpCisg
ICAgICAgIGlmIChzdGF0dXMgIT0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9w
ZXJ0eTo6U3RhdHVzOjpTdHlsZSkKICAgICAgICAgICAgIHByb3BlcnR5LT5zZXRTdGF0dXMoc3Rh
dHVzKTsKICAgICB9CiAKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IHJl
c3VsdCA9IFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlOjpjcmVhdGUoKQorICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiByZXN1bHQgPSBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlOjpjcmVhdGUoKQogICAgICAgICAuc2V0Q3NzUHJv
cGVydGllcyhwcm9wZXJ0aWVzT2JqZWN0KQogICAgICAgICAuc2V0U2hvcnRoYW5kRW50cmllcyhz
aG9ydGhhbmRFbnRyaWVzKTsKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKQEAgLTc1OSw3
ICs3NjAsNyBAQCBOZXdMaW5lQW5kV2hpdGVzcGFjZSYgSW5zcGVjdG9yU3R5bGU6Om5lCiAgICAg
cmV0dXJuIG1fZm9ybWF0OwogfQogCi1QYXNzUmVmUHRyPEluc3BlY3RvclN0eWxlU2hlZXQ+IElu
c3BlY3RvclN0eWxlU2hlZXQ6OmNyZWF0ZShJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwg
Y29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBwYWdlU3R5bGVTaGVl
dCwgVHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6RW51bSBvcmlnaW4sIGNvbnN0
IFN0cmluZyYgZG9jdW1lbnRVUkwsIExpc3RlbmVyKiBsaXN0ZW5lcikKK1Bhc3NSZWZQdHI8SW5z
cGVjdG9yU3R5bGVTaGVldD4gSW5zcGVjdG9yU3R5bGVTaGVldDo6Y3JlYXRlKEluc3BlY3RvclBh
Z2VBZ2VudCogcGFnZUFnZW50LCBjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPENTU1N0eWxl
U2hlZXQ+IHBhZ2VTdHlsZVNoZWV0LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0eWxl
U2hlZXRPcmlnaW46OkVudW0gb3JpZ2luLCBjb25zdCBTdHJpbmcmIGRvY3VtZW50VVJMLCBMaXN0
ZW5lciogbGlzdGVuZXIpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbnNwZWN0b3JTdHls
ZVNoZWV0KHBhZ2VBZ2VudCwgaWQsIHBhZ2VTdHlsZVNoZWV0LCBvcmlnaW4sIGRvY3VtZW50VVJM
LCBsaXN0ZW5lcikpOwogfQpAQCAtNzcyLDcgKzc3Myw3IEBAIFN0cmluZyBJbnNwZWN0b3JTdHls
ZVNoZWV0OjpzdHlsZVNoZWV0VVIKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAotSW5z
cGVjdG9yU3R5bGVTaGVldDo6SW5zcGVjdG9yU3R5bGVTaGVldChJbnNwZWN0b3JQYWdlQWdlbnQq
IHBhZ2VBZ2VudCwgY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBw
YWdlU3R5bGVTaGVldCwgVHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6RW51bSBv
cmlnaW4sIGNvbnN0IFN0cmluZyYgZG9jdW1lbnRVUkwsIExpc3RlbmVyKiBsaXN0ZW5lcikKK0lu
c3BlY3RvclN0eWxlU2hlZXQ6Okluc3BlY3RvclN0eWxlU2hlZXQoSW5zcGVjdG9yUGFnZUFnZW50
KiBwYWdlQWdlbnQsIGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4g
cGFnZVN0eWxlU2hlZXQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9y
aWdpbjo6RW51bSBvcmlnaW4sIGNvbnN0IFN0cmluZyYgZG9jdW1lbnRVUkwsIExpc3RlbmVyKiBs
aXN0ZW5lcikKICAgICA6IG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkKICAgICAsIG1faWQoaWQpCiAg
ICAgLCBtX3BhZ2VTdHlsZVNoZWV0KHBhZ2VTdHlsZVNoZWV0KQpAQCAtOTYzLDcgKzk2NCw3IEBA
IENTU1N0eWxlUnVsZSogSW5zcGVjdG9yU3R5bGVTaGVldDo6cnVsZUYKIAogfQogCi1QYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5PiBJbnNwZWN0b3JTdHlsZVNo
ZWV0OjpidWlsZE9iamVjdEZvclN0eWxlU2hlZXQoKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5PiBJbnNwZWN0b3JTdHlsZVNoZWV0Ojpi
dWlsZE9iamVjdEZvclN0eWxlU2hlZXQoKQogewogICAgIENTU1N0eWxlU2hlZXQqIHN0eWxlU2hl
ZXQgPSBwYWdlU3R5bGVTaGVldCgpOwogICAgIGlmICghc3R5bGVTaGVldCkKQEAgLTk3MSw3ICs5
NzIsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlCiAKICAgICBS
ZWZQdHI8Q1NTUnVsZUxpc3Q+IGNzc1J1bGVMaXN0ID0gYXNDU1NSdWxlTGlzdChzdHlsZVNoZWV0
KTsKIAotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0Qm9keT4gcmVz
dWx0ID0gVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEJvZHk6OmNyZWF0ZSgpCisgICAg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEJvZHk+IHJl
c3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEJvZHk6OmNy
ZWF0ZSgpCiAgICAgICAgIC5zZXRTdHlsZVNoZWV0SWQoaWQoKSkKICAgICAgICAgLnNldFJ1bGVz
KGJ1aWxkQXJyYXlGb3JSdWxlTGlzdChjc3NSdWxlTGlzdC5nZXQoKSkpOwogCkBAIC05ODMsNyAr
OTg0LDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZQogICAgIHJl
dHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6
OkNTU1N0eWxlU2hlZXRIZWFkZXI+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9y
U3R5bGVTaGVldEluZm8oKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
OkNTU1N0eWxlU2hlZXRIZWFkZXI+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9y
U3R5bGVTaGVldEluZm8oKQogewogICAgIENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQgPSBwYWdl
U3R5bGVTaGVldCgpOwogICAgIGlmICghc3R5bGVTaGVldCkKQEAgLTk5MSw3ICs5OTIsNyBAQCBQ
YXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlCiAKICAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSBzdHlsZVNoZWV0LT5vd25lckRvY3VtZW50KCk7CiAgICAgRnJhbWUqIGZyYW1l
ID0gZG9jdW1lbnQgPyBkb2N1bWVudC0+ZnJhbWUoKSA6IDA7Ci0gICAgUmVmUHRyPFR5cGVCdWls
ZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpDU1M6
OkNTU1N0eWxlU2hlZXRIZWFkZXI6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4gcmVzdWx0ID0gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyOjpjcmVhdGUoKQogICAgICAgICAu
c2V0U3R5bGVTaGVldElkKGlkKCkpCiAgICAgICAgIC5zZXRPcmlnaW4obV9vcmlnaW4pCiAgICAg
ICAgIC5zZXREaXNhYmxlZChzdHlsZVNoZWV0LT5kaXNhYmxlZCgpKQpAQCAtMTAwMiwxMCArMTAw
MywxMCBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlCiAgICAgcmV0
dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcnJheTxTdHJpbmc+PiBzZWxlY3RvcnNGcm9tU291cmNlKGNvbnN0IENTU1J1bGVTb3VyY2VE
YXRhKiBzb3VyY2VEYXRhLCBjb25zdCBTdHJpbmcmIHNoZWV0VGV4dCkKK3N0YXRpYyBQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IHNlbGVjdG9yc0Zyb21T
b3VyY2UoY29uc3QgQ1NTUnVsZVNvdXJjZURhdGEqIHNvdXJjZURhdGEsIGNvbnN0IFN0cmluZyYg
c2hlZXRUZXh0KQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVndWxhckV4cHJlc3Npb24s
IGNvbW1lbnQsICgiL1xcKlteXSo/XFwqLyIsIFRleHRDYXNlU2Vuc2l0aXZlLCBNdWx0aWxpbmVF
bmFibGVkKSk7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiByZXN1bHQg
PSBUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwogICAgIGNvbnN0IFNlbGVjdG9yUmFu
Z2VMaXN0JiByYW5nZXMgPSBzb3VyY2VEYXRhLT5zZWxlY3RvclJhbmdlczsKICAgICBmb3IgKHNp
emVfdCBpID0gMCwgc2l6ZSA9IHJhbmdlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpIHsKICAgICAg
ICAgY29uc3QgU291cmNlUmFuZ2UmIHJhbmdlID0gcmFuZ2VzLmF0KGkpOwpAQCAtMTAxOCwxMiAr
MTAxOSwxMiBAQCBzdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyCiAgICAg
cmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNT
Uzo6U2VsZWN0b3JMaXN0PiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdEZvclNlbGVj
dG9yTGlzdChDU1NTdHlsZVJ1bGUqIHJ1bGUpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNTUzo6U2VsZWN0b3JMaXN0PiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVj
dEZvclNlbGVjdG9yTGlzdChDU1NTdHlsZVJ1bGUqIHJ1bGUpCiB7CiAgICAgUmVmUHRyPENTU1J1
bGVTb3VyY2VEYXRhPiBzb3VyY2VEYXRhOwogICAgIGlmIChlbnN1cmVQYXJzZWREYXRhUmVhZHko
KSkKICAgICAgICAgc291cmNlRGF0YSA9IHJ1bGVTb3VyY2VEYXRhRm9yKHJ1bGUtPnN0eWxlKCkp
OwotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gc2VsZWN0b3JzOworICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBzZWxlY3RvcnM7
CiAKICAgICAvLyBUaGlzIGludGVudGlvbmFsbHkgZG9lcyBub3QgcmVseSBvbiB0aGUgc291cmNl
IGRhdGEgdG8gYXZvaWQgY2F0Y2hpbmcgdGhlIHRyYWlsaW5nIGNvbW1lbnRzIChiZWZvcmUgdGhl
IGRlY2xhcmF0aW9uIHN0YXJ0aW5nICd7JykuCiAgICAgU3RyaW5nIHNlbGVjdG9yVGV4dCA9IHJ1
bGUtPnNlbGVjdG9yVGV4dCgpOwpAQCAtMTAzMSwxMiArMTAzMiwxMiBAQCBQYXNzUmVmUHRyPFR5
cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yTGlzCiAgICAgaWYgKHNvdXJjZURhdGEpCiAgICAgICAg
IHNlbGVjdG9ycyA9IHNlbGVjdG9yc0Zyb21Tb3VyY2Uoc291cmNlRGF0YS5nZXQoKSwgbV9wYXJz
ZWRTdHlsZVNoZWV0LT50ZXh0KCkpOwogICAgIGVsc2UgewotICAgICAgICBzZWxlY3RvcnMgPSBU
eXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CisgICAgICAgIHNlbGVjdG9ycyA9
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwogICAgICAg
ICBjb25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCA9IHJ1bGUtPnN0eWxlUnVsZSgp
LT5zZWxlY3Rvckxpc3QoKTsKICAgICAgICAgZm9yIChjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0
b3IgPSBzZWxlY3Rvckxpc3QuZmlyc3QoKTsgc2VsZWN0b3I7IHNlbGVjdG9yID0gQ1NTU2VsZWN0
b3JMaXN0OjpuZXh0KHNlbGVjdG9yKSkKICAgICAgICAgICAgIHNlbGVjdG9ycy0+YWRkSXRlbShz
ZWxlY3Rvci0+c2VsZWN0b3JUZXh0KCkpOwogICAgIH0KLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkNTUzo6U2VsZWN0b3JMaXN0PiByZXN1bHQgPSBUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3Rvckxp
c3Q6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2Vs
ZWN0b3JMaXN0PiByZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9y
TGlzdDo6Y3JlYXRlKCkKICAgICAgICAgLnNldFNlbGVjdG9ycyhzZWxlY3RvcnMpCiAgICAgICAg
IC5zZXRUZXh0KHNlbGVjdG9yVGV4dCkKICAgICAgICAgLnJlbGVhc2UoKTsKQEAgLTEwNDUsMjkg
KzEwNDYsMjkgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvckxpcwogICAg
IHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpD
U1M6OkNTU1J1bGU+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZShDU1NT
dHlsZVJ1bGUqIHJ1bGUpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTUnVsZT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JSdWxlKENTU1N0eWxl
UnVsZSogcnVsZSkKIHsKICAgICBDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0ID0gcGFnZVN0eWxl
U2hlZXQoKTsKICAgICBpZiAoIXN0eWxlU2hlZXQpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
UmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpD
U1M6OkNTU1J1bGU6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTUnVsZT4gcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NS
dWxlOjpjcmVhdGUoKQogICAgICAgICAuc2V0U2VsZWN0b3JMaXN0KGJ1aWxkT2JqZWN0Rm9yU2Vs
ZWN0b3JMaXN0KHJ1bGUpKQogICAgICAgICAuc2V0U291cmNlTGluZShydWxlLT5zdHlsZVJ1bGUo
KS0+c291cmNlTGluZSgpKQogICAgICAgICAuc2V0T3JpZ2luKG1fb3JpZ2luKQogICAgICAgICAu
c2V0U3R5bGUoYnVpbGRPYmplY3RGb3JTdHlsZShydWxlLT5zdHlsZSgpKSk7CiAKICAgICAvLyAi
c291cmNlVVJMIiBpcyBwcmVzZW50IG9ubHkgZm9yIHJlZ3VsYXIgcnVsZXMsIG90aGVyd2lzZSAi
b3JpZ2luIiBzaG91bGQgYmUgdXNlZCBpbiB0aGUgZnJvbnRlbmQuCi0gICAgaWYgKG1fb3JpZ2lu
ID09IFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlJlZ3VsYXIpCisgICAgaWYg
KG1fb3JpZ2luID09IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdp
bjo6UmVndWxhcikKICAgICAgICAgcmVzdWx0LT5zZXRTb3VyY2VVUkwoZmluYWxVUkwoKSk7CiAK
ICAgICBpZiAoY2FuQmluZCgpKSB7CiAgICAgICAgIEluc3BlY3RvckNTU0lkIGlkKHJ1bGVJZChy
dWxlKSk7CiAgICAgICAgIGlmICghaWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmVzdWx0LT5z
ZXRSdWxlSWQoaWQuYXNQcm90b2NvbFZhbHVlPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGVJZD4o
KSk7CisgICAgICAgICAgICByZXN1bHQtPnNldFJ1bGVJZChpZC5hc1Byb3RvY29sVmFsdWU8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlSWQ+KCkpOwogICAgIH0KIAotICAgIFJl
ZlB0cjxBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYT4+IG1lZGlhQXJyYXkgPSBBcnJh
eTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYT46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxBcnJh
eTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU01lZGlhPj4gbWVkaWFBcnJheSA9IEFy
cmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE+OjpjcmVhdGUoKTsKIAog
ICAgIGZpbGxNZWRpYUxpc3RDaGFpbihydWxlLCBtZWRpYUFycmF5LmdldCgpKTsKICAgICBpZiAo
bWVkaWFBcnJheS0+bGVuZ3RoKCkpCkBAIC0xMDc2LDcgKzEwNzcsNyBAQCBQYXNzUmVmUHRyPFR5
cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+IEluCiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7
CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0
eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUp
CitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IEluc3Bl
Y3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiog
c3R5bGUpCiB7CiAgICAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBzb3VyY2VEYXRhOwogICAg
IGlmIChlbnN1cmVQYXJzZWREYXRhUmVhZHkoKSkKQEAgLTEwODQsMTMgKzEwODUsMTMgQEAgUGFz
c1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gSQogCiAgICAgSW5zcGVjdG9yQ1NT
SWQgaWQgPSBydWxlT3JTdHlsZUlkKHN0eWxlKTsKICAgICBpZiAoaWQuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gYm9ndXNTdHlsZSA9IFR5
cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlOjpjcmVhdGUoKQotICAgICAgICAgICAgLnNldENzc1By
b3BlcnRpZXMoQXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk+OjpjcmVhdGUoKSkK
LSAgICAgICAgICAgIC5zZXRTaG9ydGhhbmRFbnRyaWVzKEFycmF5PFR5cGVCdWlsZGVyOjpDU1M6
OlNob3J0aGFuZEVudHJ5Pjo6Y3JlYXRlKCkpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gYm9ndXNTdHlsZSA9IEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTU3R5bGU6OmNyZWF0ZSgpCisgICAgICAgICAgICAuc2V0Q3NzUHJvcGVy
dGllcyhBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5Pjo6Y3Jl
YXRlKCkpCisgICAgICAgICAgICAuc2V0U2hvcnRoYW5kRW50cmllcyhBcnJheTxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDU1M6OlNob3J0aGFuZEVudHJ5Pjo6Y3JlYXRlKCkpOwogICAgICAgICBy
ZXR1cm4gYm9ndXNTdHlsZS5yZWxlYXNlKCk7CiAgICAgfQogICAgIFJlZlB0cjxJbnNwZWN0b3JT
dHlsZT4gaW5zcGVjdG9yU3R5bGUgPSBpbnNwZWN0b3JTdHlsZUZvcklkKGlkKTsKLSAgICBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IHJlc3VsdCA9IGluc3BlY3RvclN0eWxlLT5i
dWlsZE9iamVjdEZvclN0eWxlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTU3R5bGU+IHJlc3VsdCA9IGluc3BlY3RvclN0eWxlLT5idWlsZE9iamVjdEZvclN0
eWxlKCk7CiAKICAgICAvLyBTdHlsZSB0ZXh0IGNhbm5vdCBiZSByZXRyaWV2ZWQgd2l0aG91dCBz
dHlsZXNoZWV0LCBzbyBzZXQgY3NzVGV4dCBoZXJlLgogICAgIGlmIChzb3VyY2VEYXRhKSB7CkBA
IC0xMzc0LDcgKzEzNzUsNyBAQCBib29sIEluc3BlY3RvclN0eWxlU2hlZXQ6Om9yaWdpbmFsU3R5
bGVTCiAKIGJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6cmVzb3VyY2VTdHlsZVNoZWV0VGV4dChT
dHJpbmcqIHJlc3VsdCkgY29uc3QKIHsKLSAgICBpZiAobV9vcmlnaW4gPT0gVHlwZUJ1aWxkZXI6
OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6VXNlciB8fCBtX29yaWdpbiA9PSBUeXBlQnVpbGRlcjo6
Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpVc2VyQWdlbnQpCisgICAgaWYgKG1fb3JpZ2luID09IElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6VXNlciB8fCBtX29y
aWdpbiA9PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlVz
ZXJBZ2VudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFtX3BhZ2VTdHlsZVNo
ZWV0IHx8ICFvd25lckRvY3VtZW50KCkgfHwgIW93bmVyRG9jdW1lbnQoKS0+ZnJhbWUoKSkKQEAg
LTE0MDYsOSArMTQwNyw5IEBAIGJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6aW5saW5lU3R5bGVT
aGUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkQXJy
YXlGb3JSdWxlTGlzdChDU1NSdWxlTGlzdCogcnVsZUxpc3QpCitQYXNzUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVs
ZT4+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkQXJyYXlGb3JSdWxlTGlzdChDU1NSdWxlTGlz
dCogcnVsZUxpc3QpCiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NSdWxlPj4gcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVy
OjpDU1M6OkNTU1J1bGU+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPj4gcmVzdWx0
ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NSdWxlPjo6Y3JlYXRlKCk7CiAgICAgaWYgKCFydWxlTGlzdCkKICAgICAgICAgcmV0
dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiAKQEAgLTE0NDAsMTIgKzE0NDEsMTIgQEAgdm9pZCBJbnNw
ZWN0b3JTdHlsZVNoZWV0Ojpjb2xsZWN0RmxhdFJ1bAogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxJ
bnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU+IEluc3BlY3RvclN0eWxlU2hlZXRGb3JJ
bmxpbmVTdHlsZTo6Y3JlYXRlKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBjb25zdCBT
dHJpbmcmIGlkLCBQYXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQsIFR5cGVCdWlsZGVyOjpDU1M6
OlN0eWxlU2hlZXRPcmlnaW46OkVudW0gb3JpZ2luLCBMaXN0ZW5lciogbGlzdGVuZXIpCitQYXNz
UmVmUHRyPEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZT4gSW5zcGVjdG9yU3R5bGVT
aGVldEZvcklubGluZVN0eWxlOjpjcmVhdGUoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQs
IGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCwgSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpFbnVtIG9yaWdpbiwgTGlzdGVu
ZXIqIGxpc3RlbmVyKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5zcGVjdG9yU3R5bGVT
aGVldEZvcklubGluZVN0eWxlKHBhZ2VBZ2VudCwgaWQsIGVsZW1lbnQsIG9yaWdpbiwgbGlzdGVu
ZXIpKTsKIH0KIAotSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpJbnNwZWN0b3JT
dHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIGNv
bnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCwgVHlwZUJ1aWxkZXI6
OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6RW51bSBvcmlnaW4sIExpc3RlbmVyKiBsaXN0ZW5lcikK
K0luc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZv
cklubGluZVN0eWxlKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBjb25zdCBTdHJpbmcm
IGlkLCBQYXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6RW51bSBvcmlnaW4sIExpc3RlbmVyKiBsaXN0ZW5lcikK
ICAgICA6IEluc3BlY3RvclN0eWxlU2hlZXQocGFnZUFnZW50LCBpZCwgMCwgb3JpZ2luLCAiIiwg
bGlzdGVuZXIpCiAgICAgLCBtX2VsZW1lbnQoZWxlbWVudCkKICAgICAsIG1fcnVsZVNvdXJjZURh
dGEoMCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxl
U2hlZXQuaAkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclN0eWxlU2hlZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMjksOSArMjksOCBAQAogI2lu
Y2x1ZGUgIkNTU1N0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yU3R5bGVUZXh0RWRpdG9yLmgiCi0jaW5jbHVkZSAiSW5zcGVj
dG9yVHlwZUJ1aWxkZXIuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKLQorI2luY2x1
ZGUgIkluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNw
ZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTY0LDEyICs2MywxMiBA
QCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIGV4cGxpY2l0IEluc3BlY3RvckNTU0lkKFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHZhbHVlKQorICAgIGV4cGxpY2l0IEluc3BlY3RvckNTU0lk
KFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gdmFsdWUpCiAgICAgewogICAgICAg
ICBpZiAoIXZhbHVlLT5nZXRTdHJpbmcoInN0eWxlU2hlZXRJZCIsICZtX3N0eWxlU2hlZXRJZCkp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgICAgICBSZWZQdHI8SW5zcGVjdG9y
VmFsdWU+IG9yZGluYWxWYWx1ZSA9IHZhbHVlLT5nZXQoIm9yZGluYWwiKTsKKyAgICAgICAgUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IG9yZGluYWxWYWx1ZSA9IHZhbHVlLT5nZXQo
Im9yZGluYWwiKTsKICAgICAgICAgaWYgKCFvcmRpbmFsVmFsdWUgfHwgIW9yZGluYWxWYWx1ZS0+
YXNOdW1iZXIoJm1fb3JkaW5hbCkpCiAgICAgICAgICAgICBtX3N0eWxlU2hlZXRJZCA9ICIiOwog
ICAgIH0KQEAgLTg1LDcgKzg0LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgc3R5bGVT
aGVldElkKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZVNoZWV0SWQ7IH0KICAgICB1bnNpZ25lZCBv
cmRpbmFsKCkgY29uc3QgeyByZXR1cm4gbV9vcmRpbmFsOyB9CiAKLSAgICAvLyBJRCB0eXBlIGlz
IGVpdGhlciBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZUlkIG9yIFR5cGVCdWlsZGVyOjpDU1M6
OkNTU1J1bGVJZC4KKyAgICAvLyBJRCB0eXBlIGlzIGVpdGhlciBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDU1M6OkNTU1N0eWxlSWQgb3IgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NS
dWxlSWQuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSUQ+CiAgICAgUGFzc1JlZlB0cjxJRD4gYXNQ
cm90b2NvbFZhbHVlKCkgY29uc3QKICAgICB7CkBAIC0xNDAsOCArMTM5LDggQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgfkluc3BlY3RvclN0eWxlKCk7CiAKICAgICBDU1NTdHlsZURlY2xhcmF0aW9u
KiBjc3NTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGUuZ2V0KCk7IH0KLSAgICBQYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBidWlsZE9iamVjdEZvclN0eWxlKCkgY29u
c3Q7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4gYnVpbGRBcnJheUZvckNvbXB1dGVkU3R5bGUoKSBj
b25zdDsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5
bGU+IGJ1aWxkT2JqZWN0Rm9yU3R5bGUoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTQ29t
cHV0ZWRTdHlsZVByb3BlcnR5Pj4gYnVpbGRBcnJheUZvckNvbXB1dGVkU3R5bGUoKSBjb25zdDsK
ICAgICBib29sIGhhc0Rpc2FibGVkUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuICFtX2Rpc2Fi
bGVkUHJvcGVydGllcy5pc0VtcHR5KCk7IH0KICAgICBib29sIHNldFByb3BlcnR5VGV4dCh1bnNp
Z25lZCBpbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIG92ZXJ3cml0ZSwgU3RyaW5nKiBv
bGRUZXh0LCBFeGNlcHRpb25Db2RlJik7CiAgICAgYm9vbCB0b2dnbGVQcm9wZXJ0eSh1bnNpZ25l
ZCBpbmRleCwgYm9vbCBkaXNhYmxlLCBFeGNlcHRpb25Db2RlJik7CkBAIC0xNTcsNyArMTU2LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIGFwcGx5U3R5bGVUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkg
eyBFeGNlcHRpb25Db2RlIGVjID0gMDsgcmV0dXJuIHNldFRleHQodGV4dCwgZWMpOyB9CiAKICAg
ICBib29sIHBvcHVsYXRlQWxsUHJvcGVydGllcyhWZWN0b3I8SW5zcGVjdG9yU3R5bGVQcm9wZXJ0
eT4qIHJlc3VsdCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NT
dHlsZT4gc3R5bGVXaXRoUHJvcGVydGllcygpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gc3R5bGVXaXRoUHJvcGVydGllcygpIGNv
bnN0OwogICAgIFBhc3NSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IGV4dHJhY3RTb3VyY2VEYXRh
KCkgY29uc3Q7CiAgICAgU3RyaW5nIHNob3J0aGFuZFZhbHVlKGNvbnN0IFN0cmluZyYgc2hvcnRo
YW5kUHJvcGVydHkpIGNvbnN0OwogICAgIFN0cmluZyBzaG9ydGhhbmRQcmlvcml0eShjb25zdCBT
dHJpbmcmIHNob3J0aGFuZFByb3BlcnR5KSBjb25zdDsKQEAgLTE4Miw3ICsxODEsNyBAQCBwdWJs
aWM6CiAgICAgfTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxDU1NTdHlsZURlY2xhcmF0aW9uKiwg
UmVmUHRyPEluc3BlY3RvclN0eWxlPj4gSW5zcGVjdG9yU3R5bGVNYXA7Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8SW5zcGVjdG9yU3R5bGVTaGVldD4gY3JlYXRlKEluc3BlY3RvclBhZ2VBZ2VudCos
IGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4gcGFnZVN0eWxlU2hl
ZXQsIFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OkVudW0sIGNvbnN0IFN0cmlu
ZyYgZG9jdW1lbnRVUkwsIExpc3RlbmVyKik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVj
dG9yU3R5bGVTaGVldD4gY3JlYXRlKEluc3BlY3RvclBhZ2VBZ2VudCosIGNvbnN0IFN0cmluZyYg
aWQsIFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4gcGFnZVN0eWxlU2hlZXQsIEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6RW51bSwgY29uc3QgU3RyaW5nJiBk
b2N1bWVudFVSTCwgTGlzdGVuZXIqKTsKICAgICBzdGF0aWMgU3RyaW5nIHN0eWxlU2hlZXRVUkwo
Q1NTU3R5bGVTaGVldCogcGFnZVN0eWxlU2hlZXQpOwogCiAgICAgdmlydHVhbCB+SW5zcGVjdG9y
U3R5bGVTaGVldCgpOwpAQCAtMTk3LDEwICsxOTYsMTAgQEAgcHVibGljOgogICAgIENTU1N0eWxl
UnVsZSogYWRkUnVsZShjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBFeGNlcHRpb25Db2RlJik7CiAg
ICAgYm9vbCBkZWxldGVSdWxlKGNvbnN0IEluc3BlY3RvckNTU0lkJiwgRXhjZXB0aW9uQ29kZSYp
OwogICAgIENTU1N0eWxlUnVsZSogcnVsZUZvcklkKGNvbnN0IEluc3BlY3RvckNTU0lkJikgY29u
c3Q7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0Qm9keT4g
YnVpbGRPYmplY3RGb3JTdHlsZVNoZWV0KCk7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPiBidWlsZE9iamVjdEZvclN0eWxlU2hlZXRJbmZvKCk7
Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiBidWlsZE9iamVjdEZv
clJ1bGUoQ1NTU3R5bGVSdWxlKik7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NTdHlsZT4gYnVpbGRPYmplY3RGb3JTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKik7CisgICAg
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5
PiBidWlsZE9iamVjdEZvclN0eWxlU2hlZXQoKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4gYnVpbGRPYmplY3RGb3JTdHls
ZVNoZWV0SW5mbygpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NSdWxlPiBidWlsZE9iamVjdEZvclJ1bGUoQ1NTU3R5bGVSdWxlKik7CisgICAgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBidWlsZE9iamVjdEZv
clN0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qKTsKICAgICBib29sIHNldFN0eWxlVGV4dChjb25z
dCBJbnNwZWN0b3JDU1NJZCYsIGNvbnN0IFN0cmluZyYgdGV4dCwgU3RyaW5nKiBvbGRUZXh0LCBF
eGNlcHRpb25Db2RlJik7CiAgICAgYm9vbCBzZXRQcm9wZXJ0eVRleHQoY29uc3QgSW5zcGVjdG9y
Q1NTSWQmLCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4LCBjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wg
b3ZlcndyaXRlLCBTdHJpbmcqIG9sZFByb3BlcnR5VGV4dCwgRXhjZXB0aW9uQ29kZSYpOwogICAg
IGJvb2wgdG9nZ2xlUHJvcGVydHkoY29uc3QgSW5zcGVjdG9yQ1NTSWQmLCB1bnNpZ25lZCBwcm9w
ZXJ0eUluZGV4LCBib29sIGRpc2FibGUsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTIxMyw5ICsyMTIs
OSBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yQ1NTSWQgc3R5bGVJZChDU1NTdHlsZURlY2xhcmF0
aW9uKiBzdHlsZSkgY29uc3QgeyByZXR1cm4gcnVsZU9yU3R5bGVJZChzdHlsZSk7IH0KIAogcHJv
dGVjdGVkOgotICAgIEluc3BlY3RvclN0eWxlU2hlZXQoSW5zcGVjdG9yUGFnZUFnZW50KiwgY29u
c3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBwYWdlU3R5bGVTaGVldCwg
VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6RW51bSwgY29uc3QgU3RyaW5nJiBk
b2N1bWVudFVSTCwgTGlzdGVuZXIqKTsKKyAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KEluc3BlY3Rv
clBhZ2VBZ2VudCosIGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4g
cGFnZVN0eWxlU2hlZXQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9y
aWdpbjo6RW51bSwgY29uc3QgU3RyaW5nJiBkb2N1bWVudFVSTCwgTGlzdGVuZXIqKTsKIAotICAg
IGJvb2wgY2FuQmluZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luICE9IFR5cGVCdWlsZGVyOjpD
U1M6OlN0eWxlU2hlZXRPcmlnaW46OlVzZXJBZ2VudCAmJiBtX29yaWdpbiAhPSBUeXBlQnVpbGRl
cjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpVc2VyOyB9CisgICAgYm9vbCBjYW5CaW5kKCkgY29u
c3QgeyByZXR1cm4gbV9vcmlnaW4gIT0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHls
ZVNoZWV0T3JpZ2luOjpVc2VyQWdlbnQgJiYgbV9vcmlnaW4gIT0gSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpVc2VyOyB9CiAgICAgSW5zcGVjdG9yQ1NTSWQg
cnVsZU9yU3R5bGVJZChDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkgY29uc3Q7CiAgICAgdmly
dHVhbCBEb2N1bWVudCogb3duZXJEb2N1bWVudCgpIGNvbnN0OwogICAgIHZpcnR1YWwgUmVmUHRy
PENTU1J1bGVTb3VyY2VEYXRhPiBydWxlU291cmNlRGF0YUZvcihDU1NTdHlsZURlY2xhcmF0aW9u
KiBzdHlsZSkgY29uc3Q7CkBAIC0yNDMsMTMgKzI0MiwxMyBAQCBwcml2YXRlOgogICAgIGJvb2wg
b3JpZ2luYWxTdHlsZVNoZWV0VGV4dChTdHJpbmcqIHJlc3VsdCkgY29uc3Q7CiAgICAgYm9vbCBy
ZXNvdXJjZVN0eWxlU2hlZXRUZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdDsKICAgICBib29sIGlu
bGluZVN0eWxlU2hlZXRUZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdDsKLSAgICBQYXNzUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPj4gYnVpbGRBcnJh
eUZvclJ1bGVMaXN0KENTU1J1bGVMaXN0Kik7Ci0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6
Q1NTOjpTZWxlY3Rvckxpc3Q+IGJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3JMaXN0KENTU1N0eWxlUnVs
ZSopOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPj4gYnVpbGRBcnJheUZvclJ1bGVMaXN0KENT
U1J1bGVMaXN0Kik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
OlNlbGVjdG9yTGlzdD4gYnVpbGRPYmplY3RGb3JTZWxlY3Rvckxpc3QoQ1NTU3R5bGVSdWxlKik7
CiAKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50OwogICAgIFN0cmluZyBtX2lk
OwogICAgIFJlZlB0cjxDU1NTdHlsZVNoZWV0PiBtX3BhZ2VTdHlsZVNoZWV0OwotICAgIFR5cGVC
dWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OkVudW0gbV9vcmlnaW47CisgICAgSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpFbnVtIG1fb3JpZ2luOwog
ICAgIFN0cmluZyBtX2RvY3VtZW50VVJMOwogICAgIGJvb2wgbV9pc1JldmFsaWRhdGluZzsKICAg
ICBQYXJzZWRTdHlsZVNoZWV0KiBtX3BhcnNlZFN0eWxlU2hlZXQ7CkBAIC0yNjAsMTQgKzI1OSwx
NCBAQCBwcml2YXRlOgogCiBjbGFzcyBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUg
OiBwdWJsaWMgSW5zcGVjdG9yU3R5bGVTaGVldCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlPiBjcmVhdGUoSW5zcGVjdG9y
UGFnZUFnZW50KiwgY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxFbGVtZW50PiwgVHlwZUJ1
aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6RW51bSwgTGlzdGVuZXIqKTsKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU+IGNyZWF0ZShJ
bnNwZWN0b3JQYWdlQWdlbnQqLCBjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPEVsZW1lbnQ+
LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OkVudW0sIExp
c3RlbmVyKik7CiAKICAgICB2b2lkIGRpZE1vZGlmeUVsZW1lbnRBdHRyaWJ1dGUoKTsKICAgICB2
aXJ0dWFsIGJvb2wgZ2V0VGV4dChTdHJpbmcqIHJlc3VsdCkgY29uc3Q7CiAgICAgdmlydHVhbCBD
U1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZUZvcklkKGNvbnN0IEluc3BlY3RvckNTU0lkJiBpZCkg
Y29uc3QgeyBBU1NFUlRfVU5VU0VEKGlkLCAhaWQub3JkaW5hbCgpKTsgcmV0dXJuIGlubGluZVN0
eWxlKCk7IH0KIAogcHJvdGVjdGVkOgotICAgIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVT
dHlsZShJbnNwZWN0b3JQYWdlQWdlbnQqLCBjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPEVs
ZW1lbnQ+LCBUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpFbnVtLCBMaXN0ZW5l
ciopOworICAgIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZShJbnNwZWN0b3JQYWdl
QWdlbnQqLCBjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPEVsZW1lbnQ+LCBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OkVudW0sIExpc3RlbmVyKik7CiAK
ICAgICB2aXJ0dWFsIERvY3VtZW50KiBvd25lckRvY3VtZW50KCkgY29uc3Q7CiAgICAgdmlydHVh
bCBSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IHJ1bGVTb3VyY2VEYXRhRm9yKENTU1N0eWxlRGVj
bGFyYXRpb24qIHN0eWxlKSBjb25zdCB7IEFTU0VSVF9VTlVTRUQoc3R5bGUsIHN0eWxlID09IGlu
bGluZVN0eWxlKCkpOyByZXR1cm4gbV9ydWxlU291cmNlRGF0YTsgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlVGV4dEVkaXRvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlVGV4dEVkaXRvci5jcHAJ
KHJldmlzaW9uIDE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JT
dHlsZVRleHRFZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw4IEBACiAjaW5j
bHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkluc3BlY3RvclN0eWxlU2hlZXQu
aCIKIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBJbnNwZWN0b3JTdHlsZVRleHRFZGl0b3I6Okluc3BlY3RvclN0eWxlVGV4dEVkaXRvcihWZWN0
b3I8SW5zcGVjdG9yU3R5bGVQcm9wZXJ0eT4qIGFsbFByb3BlcnRpZXMsIFZlY3RvcjxJbnNwZWN0
b3JTdHlsZVByb3BlcnR5PiogZGlzYWJsZWRQcm9wZXJ0aWVzLCBjb25zdCBTdHJpbmcmIHN0eWxl
VGV4dCwgY29uc3QgTmV3TGluZUFuZFdoaXRlc3BhY2UmIGZvcm1hdCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAJKHJl
dmlzaW9uIDE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1l
bGluZUFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsOCBAQAogI2luY2x1ZGUg
IlRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgog
Cit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZv
aWQgVGltZWxpbmVUaW1lQ29udmVydGVyOjpyZXNldCgpCkBAIC02NSw3ICs2Nyw3IEBAIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6On5JbnNwZWN0b3JUaW1lbGkKIHsKIH0KIAotdm9pZCBJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
KiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlz
cGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9yVGltZWxpbmVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAg
ICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvclRpbWVsaW5lQmFja2VuZERpc3BhdGNo
ZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CkBAIC00MjIsOTkgKzQyNCw5OSBA
QCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmFkZFJlY29yZFRvCiAgICAgaW5uZXJBZGRS
ZWNvcmRUb1RpbWVsaW5lKHJlY29yZCwgdHlwZSk7CiB9CiAKLXN0YXRpYyBUeXBlQnVpbGRlcjo6
VGltZWxpbmU6OkV2ZW50VHlwZTo6RW51bSB0b1Byb3RvY29sKFRpbWVsaW5lUmVjb3JkVHlwZSB0
eXBlKQorc3RhdGljIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6
OkVudW0gdG9Qcm90b2NvbChUaW1lbGluZVJlY29yZFR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2gg
KHR5cGUpIHsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6RXZlbnREaXNwYXRjaDoKLSAg
ICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpFdmVudERpc3Bh
dGNoOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2
ZW50VHlwZTo6RXZlbnREaXNwYXRjaDsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6QmVn
aW5GcmFtZToKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBl
OjpCZWdpbkZyYW1lOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGlt
ZWxpbmU6OkV2ZW50VHlwZTo6QmVnaW5GcmFtZTsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlw
ZTo6U2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb246Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRl
cjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6U2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb247CisgICAg
ICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpT
Y2hlZHVsZVN0eWxlUmVjYWxjdWxhdGlvbjsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6
UmVjYWxjdWxhdGVTdHlsZXM6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6
OkV2ZW50VHlwZTo6UmVjYWxjdWxhdGVTdHlsZXM7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpSZWNhbGN1bGF0ZVN0eWxlczsKICAg
ICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6SW52YWxpZGF0ZUxheW91dDoKLSAgICAgICAgcmV0
dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpJbnZhbGlkYXRlTGF5b3V0Owor
ICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlw
ZTo6SW52YWxpZGF0ZUxheW91dDsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6TGF5b3V0
OgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OkxheW91
dDsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVu
dFR5cGU6OkxheW91dDsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6UGFpbnQ6Ci0gICAg
ICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6UGFpbnQ7CisgICAg
ICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpQ
YWludDsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6U2Nyb2xsTGF5ZXI6Ci0gICAgICAg
IHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6U2Nyb2xsTGF5ZXI7Cisg
ICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBl
OjpTY3JvbGxMYXllcjsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6UmVzaXplSW1hZ2U6
Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6UmVzaXpl
SW1hZ2U7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6
RXZlbnRUeXBlOjpSZXNpemVJbWFnZTsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6Q29t
cG9zaXRlTGF5ZXJzOgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVu
dFR5cGU6OkNvbXBvc2l0ZUxheWVyczsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OkNvbXBvc2l0ZUxheWVyczsKIAogICAgIGNhc2Ug
VGltZWxpbmVSZWNvcmRUeXBlOjpQYXJzZUhUTUw6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRl
cjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6UGFyc2VIVE1MOworICAgICAgICByZXR1cm4gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6UGFyc2VIVE1MOwogCiAgICAg
Y2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlRpbWVySW5zdGFsbDoKLSAgICAgICAgcmV0dXJuIFR5
cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpUaW1lckluc3RhbGw7CisgICAgICAgIHJl
dHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpUaW1lcklu
c3RhbGw7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlRpbWVyUmVtb3ZlOgotICAgICAg
ICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlRpbWVyUmVtb3ZlOwor
ICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlw
ZTo6VGltZXJSZW1vdmU7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlRpbWVyRmlyZToK
LSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpUaW1lckZp
cmU7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZl
bnRUeXBlOjpUaW1lckZpcmU7CiAKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6RXZhbHVh
dGVTY3JpcHQ6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlw
ZTo6RXZhbHVhdGVTY3JpcHQ7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpUaW1lbGluZTo6RXZlbnRUeXBlOjpFdmFsdWF0ZVNjcmlwdDsKIAogICAgIGNhc2UgVGltZWxp
bmVSZWNvcmRUeXBlOjpNYXJrTG9hZDoKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1l
bGluZTo6RXZlbnRUeXBlOjpNYXJrTG9hZDsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6Ok1hcmtMb2FkOwogICAgIGNhc2UgVGltZWxp
bmVSZWNvcmRUeXBlOjpNYXJrRE9NQ29udGVudDoKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVy
OjpUaW1lbGluZTo6RXZlbnRUeXBlOjpNYXJrRE9NQ29udGVudDsKKyAgICAgICAgcmV0dXJuIElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6Ok1hcmtET01Db250ZW50
OwogCiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlRpbWVTdGFtcDoKLSAgICAgICAgcmV0
dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpUaW1lU3RhbXA7CisgICAgICAg
IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpUaW1l
U3RhbXA7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlRpbWU6Ci0gICAgICAgIHJldHVy
biBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6VGltZTsKKyAgICAgICAgcmV0dXJu
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlRpbWU7CiAgICAg
Y2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlRpbWVFbmQ6Ci0gICAgICAgIHJldHVybiBUeXBlQnVp
bGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6VGltZUVuZDsKKyAgICAgICAgcmV0dXJuIEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlRpbWVFbmQ7CiAKICAgICBj
YXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6U2NoZWR1bGVSZXNvdXJjZVJlcXVlc3Q6Ci0gICAgICAg
IHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6U2NoZWR1bGVSZXNvdXJj
ZVJlcXVlc3Q7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGlu
ZTo6RXZlbnRUeXBlOjpTY2hlZHVsZVJlc291cmNlUmVxdWVzdDsKICAgICBjYXNlIFRpbWVsaW5l
UmVjb3JkVHlwZTo6UmVzb3VyY2VTZW5kUmVxdWVzdDoKLSAgICAgICAgcmV0dXJuIFR5cGVCdWls
ZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpSZXNvdXJjZVNlbmRSZXF1ZXN0OworICAgICAgICBy
ZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6UmVzb3Vy
Y2VTZW5kUmVxdWVzdDsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6UmVzb3VyY2VSZWNl
aXZlUmVzcG9uc2U6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50
VHlwZTo6UmVzb3VyY2VSZWNlaXZlUmVzcG9uc2U7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpSZXNvdXJjZVJlY2VpdmVSZXNwb25z
ZTsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6UmVzb3VyY2VSZWNlaXZlZERhdGE6Ci0g
ICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6UmVzb3VyY2VS
ZWNlaXZlZERhdGE7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1l
bGluZTo6RXZlbnRUeXBlOjpSZXNvdXJjZVJlY2VpdmVkRGF0YTsKICAgICBjYXNlIFRpbWVsaW5l
UmVjb3JkVHlwZTo6UmVzb3VyY2VGaW5pc2g6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6
VGltZWxpbmU6OkV2ZW50VHlwZTo6UmVzb3VyY2VGaW5pc2g7CisgICAgICAgIHJldHVybiBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpSZXNvdXJjZUZpbmlzaDsK
IAogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpYSFJSZWFkeVN0YXRlQ2hhbmdlOgotICAg
ICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlhIUlJlYWR5U3Rh
dGVDaGFuZ2U7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGlu
ZTo6RXZlbnRUeXBlOjpYSFJSZWFkeVN0YXRlQ2hhbmdlOwogICAgIGNhc2UgVGltZWxpbmVSZWNv
cmRUeXBlOjpYSFJMb2FkOgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpF
dmVudFR5cGU6OlhIUkxvYWQ7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpUaW1lbGluZTo6RXZlbnRUeXBlOjpYSFJMb2FkOwogCiAgICAgY2FzZSBUaW1lbGluZVJlY29y
ZFR5cGU6OkZ1bmN0aW9uQ2FsbDoKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGlu
ZTo6RXZlbnRUeXBlOjpGdW5jdGlvbkNhbGw7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpGdW5jdGlvbkNhbGw7CiAKICAgICBjYXNl
IFRpbWVsaW5lUmVjb3JkVHlwZTo6UmVxdWVzdEFuaW1hdGlvbkZyYW1lOgotICAgICAgICByZXR1
cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlJlcXVlc3RBbmltYXRpb25GcmFt
ZTsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVu
dFR5cGU6OlJlcXVlc3RBbmltYXRpb25GcmFtZTsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlw
ZTo6Q2FuY2VsQW5pbWF0aW9uRnJhbWU6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGlt
ZWxpbmU6OkV2ZW50VHlwZTo6Q2FuY2VsQW5pbWF0aW9uRnJhbWU7CisgICAgICAgIHJldHVybiBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpDYW5jZWxBbmltYXRp
b25GcmFtZTsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6RmlyZUFuaW1hdGlvbkZyYW1l
OgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OkZpcmVB
bmltYXRpb25GcmFtZTsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRp
bWVsaW5lOjpFdmVudFR5cGU6OkZpcmVBbmltYXRpb25GcmFtZTsKIAogICAgIGNhc2UgVGltZWxp
bmVSZWNvcmRUeXBlOjpXZWJTb2NrZXRDcmVhdGU6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRl
cjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6V2ViU29ja2V0Q3JlYXRlOworICAgICAgICByZXR1cm4g
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6V2ViU29ja2V0Q3Jl
YXRlOwogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpXZWJTb2NrZXRTZW5kSGFuZHNoYWtl
UmVxdWVzdDoKLSAgICAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBl
OjpXZWJTb2NrZXRTZW5kSGFuZHNoYWtlUmVxdWVzdDsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OldlYlNvY2tldFNlbmRIYW5kc2hh
a2VSZXF1ZXN0OwogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpXZWJTb2NrZXRSZWNlaXZl
SGFuZHNoYWtlUmVzcG9uc2U6Ci0gICAgICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6
OkV2ZW50VHlwZTo6V2ViU29ja2V0UmVjZWl2ZUhhbmRzaGFrZVJlc3BvbnNlOworICAgICAgICBy
ZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6V2ViU29j
a2V0UmVjZWl2ZUhhbmRzaGFrZVJlc3BvbnNlOwogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBl
OjpXZWJTb2NrZXREZXN0cm95OgotICAgICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlRpbWVsaW5l
OjpFdmVudFR5cGU6OldlYlNvY2tldERlc3Ryb3k7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpXZWJTb2NrZXREZXN0cm95OwogICAg
IH0KIAotICAgIHJldHVybiBUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6VGltZVN0
YW1wOworICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRU
eXBlOjpUaW1lU3RhbXA7CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW5uZXJB
ZGRSZWNvcmRUb1RpbWVsaW5lKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBwcnBSZWNvcmQs
IFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBlKQogewotICAgIHBycFJlY29yZC0+c2V0U3RyaW5nKCJ0
eXBlIiwgVHlwZUJ1aWxkZXI6OmdldEVudW1Db25zdGFudFZhbHVlKHRvUHJvdG9jb2wodHlwZSkp
KTsKKyAgICBwcnBSZWNvcmQtPnNldFN0cmluZygidHlwZSIsIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OmdldEVudW1Db25zdGFudFZhbHVlKHRvUHJvdG9jb2wodHlwZSkpKTsKIAotICAgIFJlZlB0
cjxUeXBlQnVpbGRlcjo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ+IHJlY29yZCA9IFR5cGVCdWls
ZGVyOjpUaW1lbGluZTo6VGltZWxpbmVFdmVudDo6cnVudGltZUNhc3QocHJwUmVjb3JkKTsKKyAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ+
IHJlY29yZCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50
OjpydW50aW1lQ2FzdChwcnBSZWNvcmQpOwogCiAgICAgc2V0RE9NQ291bnRlcnMocmVjb3JkLmdl
dCgpKTsKIApAQCAtNTMxLDcgKzUzMyw3IEBAIHN0YXRpYyBzaXplX3QgdXNlZEhlYXBTaXplKCkK
ICAgICByZXR1cm4gSlNET01XaW5kb3c6OmNvbW1vblZNKCktPmhlYXAuc2l6ZSgpOwogfQogCi12
b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnNldERPTUNvdW50ZXJzKFR5cGVCdWlsZGVyOjpU
aW1lbGluZTo6VGltZWxpbmVFdmVudCogcmVjb3JkKQordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50OjpzZXRET01Db3VudGVycyhJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6VGlt
ZWxpbmVFdmVudCogcmVjb3JkKQogewogICAgIHJlY29yZC0+c2V0VXNlZEhlYXBTaXplKHVzZWRI
ZWFwU2l6ZSgpKTsKIApAQCAtNTQzLDcgKzU0NSw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6c2V0RE9NQ291bnQKICAgICAgICAgICAgIG5vZGVDb3VudCA9IEluc3BlY3RvckNvdW50
ZXJzOjpjb3VudGVyVmFsdWUoSW5zcGVjdG9yQ291bnRlcnM6Ok5vZGVDb3VudGVyKTsKICAgICAg
ICAgfQogICAgICAgICBpbnQgbGlzdGVuZXJDb3VudCA9IFRocmVhZExvY2FsSW5zcGVjdG9yQ291
bnRlcnM6OmN1cnJlbnQoKS5jb3VudGVyVmFsdWUoVGhyZWFkTG9jYWxJbnNwZWN0b3JDb3VudGVy
czo6SlNFdmVudExpc3RlbmVyQ291bnRlcik7Ci0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6
VGltZWxpbmU6OkRPTUNvdW50ZXJzPiBjb3VudGVycyA9IFR5cGVCdWlsZGVyOjpUaW1lbGluZTo6
RE9NQ291bnRlcnM6OmNyZWF0ZSgpCisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpUaW1lbGluZTo6RE9NQ291bnRlcnM+IGNvdW50ZXJzID0gSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6VGltZWxpbmU6OkRPTUNvdW50ZXJzOjpjcmVhdGUoKQogICAgICAgICAgICAgLnNldERv
Y3VtZW50cyhkb2N1bWVudENvdW50KQogICAgICAgICAgICAgLnNldE5vZGVzKG5vZGVDb3VudCkK
ICAgICAgICAgICAgIC5zZXRKc0V2ZW50TGlzdGVuZXJzKGxpc3RlbmVyQ291bnQpOwpAQCAtNTgw
LDcgKzU4Miw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ29tcGxldGUKIH0K
IAogSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudChJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBh
Z2VBZ2VudCwgSW5zcGVjdG9yTWVtb3J5QWdlbnQqIG1lbW9yeUFnZW50LCBJbnNwZWN0b3JUeXBl
IHR5cGUsIEluc3BlY3RvckNsaWVudCogY2xpZW50KQotICAgIDogSW5zcGVjdG9yQmFzZUFnZW50
KEFTQ0lJTGl0ZXJhbCgiVGltZWxpbmUiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICA6IElu
c3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIlRpbWVsaW5lIiksIGluc3RydW1lbnRpbmdB
Z2VudHMpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCiAgICAgLCBtX21lbW9yeUFnZW50
KG1lbW9yeUFnZW50KQogICAgICwgbV9pZCgxKQpAQCAtNjA0LDcgKzYwNiw3IEBAIHZvaWQgSW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6YXBwZW5kUmVjb3IKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6c2VuZEV2ZW50KFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBldmVudCkKIHsKICAg
ICAvLyBGSVhNRTogcnVudGltZUNhc3QgaXMgYSBoYWNrLiBXZSBkbyBpdCBiZWNhdXNlIHdlIGNh
bid0IGJ1aWxkIFRpbWVsaW5lRXZlbnQgZGlyZWN0bHkgbm93LgotICAgIFJlZlB0cjxUeXBlQnVp
bGRlcjo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ+IHJlY29yZENoZWNrZWQgPSBUeXBlQnVpbGRl
cjo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ6OnJ1bnRpbWVDYXN0KGV2ZW50KTsKKyAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ+IHJlY29y
ZENoZWNrZWQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6VGltZWxpbmVFdmVu
dDo6cnVudGltZUNhc3QoZXZlbnQpOwogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5ldmVudFJl
Y29yZGVkKHJlY29yZENoZWNrZWQucmVsZWFzZSgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCShyZXZpc2lvbiAx
NjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMCArMzMsMTEgQEAKIAogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5o
IgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYkFn
ZW50QmFzZS5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3Iv
SW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTEyMSw3ICsxMjIs
NyBAQCBwcml2YXRlOgogfTsKIAogY2xhc3MgSW5zcGVjdG9yVGltZWxpbmVBZ2VudAotICAgIDog
cHVibGljIEluc3BlY3RvckJhc2VBZ2VudAorICAgIDogcHVibGljIEluc3BlY3RvckFnZW50QmFz
ZQogICAgICwgcHVibGljIEluc3BlY3RvclRpbWVsaW5lQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JUaW1lbGluZUFnZW50KTsKIHB1
YmxpYzoKQEAgLTEzNCw3ICsxMzUsNyBAQCBwdWJsaWM6CiAKICAgICB+SW5zcGVjdG9yVGltZWxp
bmVBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciop
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0
cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3Rh
cnQoRXJyb3JTdHJpbmcqLCBjb25zdCBpbnQqIG1heENhbGxTdGFja0RlcHRoLCBjb25zdCBib29s
KiBpbmNsdWRlRG9tQ291bnRlcnMpOwpAQCAtMjIwLDMzICsyMjEsMzMgQEAgcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgVGltZWxpbmVSZWNvcmRTdGFjazsKIAogICAgIHN0cnVjdCBUaW1lbGlu
ZVJlY29yZEVudHJ5IHsKLSAgICAgICAgVGltZWxpbmVSZWNvcmRFbnRyeShQYXNzUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gcmVjb3JkLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSwg
UGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gY2hpbGRyZW4sIFRpbWVsaW5lUmVjb3JkVHlwZSB0
eXBlLCBzaXplX3QgdXNlZEhlYXBTaXplQXRTdGFydCkKKyAgICAgICAgVGltZWxpbmVSZWNvcmRF
bnRyeShQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQsIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGRhdGEsIFBhc3NSZWZQdHI8SW5zcGVj
dG9yOjpJbnNwZWN0b3JBcnJheT4gY2hpbGRyZW4sIFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBlLCBz
aXplX3QgdXNlZEhlYXBTaXplQXRTdGFydCkKICAgICAgICAgICAgIDogcmVjb3JkKHJlY29yZCks
IGRhdGEoZGF0YSksIGNoaWxkcmVuKGNoaWxkcmVuKSwgdHlwZSh0eXBlKSwgdXNlZEhlYXBTaXpl
QXRTdGFydCh1c2VkSGVhcFNpemVBdFN0YXJ0KQogICAgICAgICB7CiAgICAgICAgIH0KLSAgICAg
ICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVjb3JkOwotICAgICAgICBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBkYXRhOwotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGNoaWxkcmVu
OworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHJlY29yZDsKKyAg
ICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBkYXRhOworICAgICAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4gY2hpbGRyZW47CiAgICAgICAgIFRpbWVs
aW5lUmVjb3JkVHlwZSB0eXBlOwogICAgICAgICBzaXplX3QgdXNlZEhlYXBTaXplQXRTdGFydDsK
ICAgICB9OwogCiAgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRz
KiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yTWVtb3J5QWdlbnQqLCBJbnNwZWN0b3JU
eXBlLCBJbnNwZWN0b3JDbGllbnQqKTsKIAotICAgIHZvaWQgc2VuZEV2ZW50KFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0Pik7Ci0gICAgdm9pZCBhcHBlbmRSZWNvcmQoUGFzc1JlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IGRhdGEsIFRpbWVsaW5lUmVjb3JkVHlwZSwgYm9vbCBjYXB0dXJlQ2FsbFN0
YWNrLCBGcmFtZSopOwotICAgIHZvaWQgcHVzaEN1cnJlbnRSZWNvcmQoUGFzc1JlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+LCBUaW1lbGluZVJlY29yZFR5cGUsIGJvb2wgY2FwdHVyZUNhbGxTdGFjaywg
RnJhbWUqKTsKKyAgICB2b2lkIHNlbmRFdmVudChQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0Pik7CisgICAgdm9pZCBhcHBlbmRSZWNvcmQoUGFzc1JlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdD4gZGF0YSwgVGltZWxpbmVSZWNvcmRUeXBlLCBib29sIGNhcHR1cmVD
YWxsU3RhY2ssIEZyYW1lKik7CisgICAgdm9pZCBwdXNoQ3VycmVudFJlY29yZChQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiwgVGltZWxpbmVSZWNvcmRUeXBlLCBib29sIGNh
cHR1cmVDYWxsU3RhY2ssIEZyYW1lKik7CiAKLSAgICB2b2lkIHNldERPTUNvdW50ZXJzKFR5cGVC
dWlsZGVyOjpUaW1lbGluZTo6VGltZWxpbmVFdmVudCogcmVjb3JkKTsKLSAgICB2b2lkIHNldEZy
YW1lSWRlbnRpZmllcihJbnNwZWN0b3JPYmplY3QqIHJlY29yZCwgRnJhbWUqKTsKKyAgICB2b2lk
IHNldERPTUNvdW50ZXJzKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpUaW1lbGlu
ZUV2ZW50KiByZWNvcmQpOworICAgIHZvaWQgc2V0RnJhbWVJZGVudGlmaWVyKEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0KiByZWNvcmQsIEZyYW1lKik7CiAKICAgICB2b2lkIGRpZENvbXBsZXRl
Q3VycmVudFJlY29yZChUaW1lbGluZVJlY29yZFR5cGUpOwogCi0gICAgdm9pZCBzZXRIZWFwU2l6
ZVN0YXRpc3RpY3MoSW5zcGVjdG9yT2JqZWN0KiByZWNvcmQpOworICAgIHZvaWQgc2V0SGVhcFNp
emVTdGF0aXN0aWNzKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiByZWNvcmQpOwogICAgIHZv
aWQgY29tbWl0RnJhbWVSZWNvcmQoKTsKIAotICAgIHZvaWQgYWRkUmVjb3JkVG9UaW1lbGluZShQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4sIFRpbWVsaW5lUmVjb3JkVHlwZSk7Ci0gICAgdm9p
ZCBpbm5lckFkZFJlY29yZFRvVGltZWxpbmUoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+LCBU
aW1lbGluZVJlY29yZFR5cGUpOworICAgIHZvaWQgYWRkUmVjb3JkVG9UaW1lbGluZShQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiwgVGltZWxpbmVSZWNvcmRUeXBlKTsKKyAg
ICB2b2lkIGlubmVyQWRkUmVjb3JkVG9UaW1lbGluZShQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiwgVGltZWxpbmVSZWNvcmRUeXBlKTsKICAgICB2b2lkIGNsZWFyUmVjb3Jk
U3RhY2soKTsKIAogICAgIHZvaWQgbG9jYWxUb1BhZ2VRdWFkKGNvbnN0IFJlbmRlck9iamVjdCYs
IGNvbnN0IExheW91dFJlY3QmLCBGbG9hdFF1YWQqKTsKQEAgLTI2Niw3ICsyNjcsNyBAQCBwcml2
YXRlOgogCiAgICAgaW50IG1faWQ7CiAgICAgaW50IG1fbWF4Q2FsbFN0YWNrRGVwdGg7Ci0gICAg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbV9wZW5kaW5nRnJhbWVSZWNvcmQ7CisgICAgUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBtX3BlbmRpbmdGcmFtZVJlY29yZDsKICAgICBJ
bnNwZWN0b3JUeXBlIG1faW5zcGVjdG9yVHlwZTsKICAgICBJbnNwZWN0b3JDbGllbnQqIG1fY2xp
ZW50OwogICAgIFdlYWtQdHJGYWN0b3J5PEluc3BlY3RvclRpbWVsaW5lQWdlbnQ+IG1fd2Vha0Zh
Y3Rvcnk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVz
LmNwcAkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclZhbHVlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsODM2ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJp
YnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCi0KLSNpbmNsdWRlIDx3dGYv
RGVjaW1hbE51bWJlci5oPgotI2luY2x1ZGUgPHd0Zi9kdG9hLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSB7
Ci0KLXN0YXRpYyBjb25zdCBpbnQgc3RhY2tMaW1pdCA9IDEwMDA7Ci0KLWVudW0gVG9rZW4gewot
ICAgIE9CSkVDVF9CRUdJTiwKLSAgICBPQkpFQ1RfRU5ELAotICAgIEFSUkFZX0JFR0lOLAotICAg
IEFSUkFZX0VORCwKLSAgICBTVFJJTkcsCi0gICAgTlVNQkVSLAotICAgIEJPT0xfVFJVRSwKLSAg
ICBCT09MX0ZBTFNFLAotICAgIE5VTExfVE9LRU4sCi0gICAgTElTVF9TRVBBUkFUT1IsCi0gICAg
T0JKRUNUX1BBSVJfU0VQQVJBVE9SLAotICAgIElOVkFMSURfVE9LRU4sCi19OwotCi1jb25zdCBj
aGFyKiBjb25zdCBudWxsU3RyaW5nID0gIm51bGwiOwotY29uc3QgY2hhciogY29uc3QgdHJ1ZVN0
cmluZyA9ICJ0cnVlIjsKLWNvbnN0IGNoYXIqIGNvbnN0IGZhbHNlU3RyaW5nID0gImZhbHNlIjsK
LQotYm9vbCBwYXJzZUNvbnN0VG9rZW4oY29uc3QgVUNoYXIqIHN0YXJ0LCBjb25zdCBVQ2hhciog
ZW5kLCBjb25zdCBVQ2hhcioqIHRva2VuRW5kLCBjb25zdCBjaGFyKiB0b2tlbikKLXsKLSAgICB3
aGlsZSAoc3RhcnQgPCBlbmQgJiYgKnRva2VuICE9ICdcMCcgJiYgKnN0YXJ0KysgPT0gKnRva2Vu
KyspIHsgfQotICAgIGlmICgqdG9rZW4gIT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICp0b2tlbkVuZCA9IHN0YXJ0OwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIHJlYWRJ
bnQoY29uc3QgVUNoYXIqIHN0YXJ0LCBjb25zdCBVQ2hhciogZW5kLCBjb25zdCBVQ2hhcioqIHRv
a2VuRW5kLCBib29sIGNhbkhhdmVMZWFkaW5nWmVyb3MpCi17Ci0gICAgaWYgKHN0YXJ0ID09IGVu
ZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGJvb2wgaGF2ZUxlYWRpbmdaZXJvID0gJzAn
ID09ICpzdGFydDsKLSAgICBpbnQgbGVuZ3RoID0gMDsKLSAgICB3aGlsZSAoc3RhcnQgPCBlbmQg
JiYgJzAnIDw9ICpzdGFydCAmJiAqc3RhcnQgPD0gJzknKSB7Ci0gICAgICAgICsrc3RhcnQ7Ci0g
ICAgICAgICsrbGVuZ3RoOwotICAgIH0KLSAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmICghY2FuSGF2ZUxlYWRpbmdaZXJvcyAmJiBsZW5ndGggPiAxICYmIGhh
dmVMZWFkaW5nWmVybykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICp0b2tlbkVuZCA9IHN0
YXJ0OwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIHBhcnNlTnVtYmVyVG9rZW4oY29uc3Qg
VUNoYXIqIHN0YXJ0LCBjb25zdCBVQ2hhciogZW5kLCBjb25zdCBVQ2hhcioqIHRva2VuRW5kKQot
ewotICAgIC8vIFdlIGp1c3QgZ3JhYiB0aGUgbnVtYmVyIGhlcmUuICBXZSB2YWxpZGF0ZSB0aGUg
c2l6ZSBpbiBEZWNvZGVOdW1iZXIuCi0gICAgLy8gQWNjb3JkaW5nICAgdG8gUkZDNDYyNywgYSB2
YWxpZCBudW1iZXIgaXM6IFttaW51c10gaW50IFtmcmFjXSBbZXhwXQotICAgIGlmIChzdGFydCA9
PSBlbmQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBVQ2hhciBjID0gKnN0YXJ0OwotICAg
IGlmICgnLScgPT0gYykKLSAgICAgICAgKytzdGFydDsKLQotICAgIGlmICghcmVhZEludChzdGFy
dCwgZW5kLCAmc3RhcnQsIGZhbHNlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChz
dGFydCA9PSBlbmQpIHsKLSAgICAgICAgKnRva2VuRW5kID0gc3RhcnQ7Ci0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0KLQotICAgIC8vIE9wdGlvbmFsIGZyYWN0aW9uIHBhcnQKLSAgICBjID0g
KnN0YXJ0OwotICAgIGlmICgnLicgPT0gYykgewotICAgICAgICArK3N0YXJ0OwotICAgICAgICBp
ZiAoIXJlYWRJbnQoc3RhcnQsIGVuZCwgJnN0YXJ0LCB0cnVlKSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgaWYgKHN0YXJ0ID09IGVuZCkgewotICAgICAgICAgICAgKnRva2Vu
RW5kID0gc3RhcnQ7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAg
ICBjID0gKnN0YXJ0OwotICAgIH0KLQotICAgIC8vIE9wdGlvbmFsIGV4cG9uZW50IHBhcnQKLSAg
ICBpZiAoJ2UnID09IGMgfHwgJ0UnID09IGMpIHsKLSAgICAgICAgKytzdGFydDsKLSAgICAgICAg
aWYgKHN0YXJ0ID09IGVuZCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgYyA9
ICpzdGFydDsKLSAgICAgICAgaWYgKCctJyA9PSBjIHx8ICcrJyA9PSBjKSB7Ci0gICAgICAgICAg
ICArK3N0YXJ0OwotICAgICAgICAgICAgaWYgKHN0YXJ0ID09IGVuZCkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFyZWFkSW50KHN0YXJ0LCBl
bmQsICZzdGFydCwgdHJ1ZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0g
ICAgKnRva2VuRW5kID0gc3RhcnQ7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgcmVhZEhl
eERpZ2l0cyhjb25zdCBVQ2hhciogc3RhcnQsIGNvbnN0IFVDaGFyKiBlbmQsIGNvbnN0IFVDaGFy
KiogdG9rZW5FbmQsIGludCBkaWdpdHMpCi17Ci0gICAgaWYgKGVuZCAtIHN0YXJ0IDwgZGlnaXRz
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBkaWdpdHM7
ICsraSkgewotICAgICAgICBVQ2hhciBjID0gKnN0YXJ0Kys7Ci0gICAgICAgIGlmICghKCgnMCcg
PD0gYyAmJiBjIDw9ICc5JykgfHwgKCdhJyA8PSBjICYmIGMgPD0gJ2YnKSB8fCAoJ0EnIDw9IGMg
JiYgYyA8PSAnRicpKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgKnRv
a2VuRW5kID0gc3RhcnQ7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgcGFyc2VTdHJpbmdU
b2tlbihjb25zdCBVQ2hhciogc3RhcnQsIGNvbnN0IFVDaGFyKiBlbmQsIGNvbnN0IFVDaGFyKiog
dG9rZW5FbmQpCi17Ci0gICAgd2hpbGUgKHN0YXJ0IDwgZW5kKSB7Ci0gICAgICAgIFVDaGFyIGMg
PSAqc3RhcnQrKzsKLSAgICAgICAgaWYgKCdcXCcgPT0gYykgewotICAgICAgICAgICAgYyA9ICpz
dGFydCsrOwotICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBlc2NhcGVkIGNoYXIgaXMgdmFs
aWQuCi0gICAgICAgICAgICBzd2l0Y2ggKGMpIHsKLSAgICAgICAgICAgIGNhc2UgJ3gnOgotICAg
ICAgICAgICAgICAgIGlmICghcmVhZEhleERpZ2l0cyhzdGFydCwgZW5kLCAmc3RhcnQsIDIpKQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBjYXNlICd1JzoKLSAgICAgICAgICAgICAgICBpZiAoIXJlYWRIZXhEaWdp
dHMoc3RhcnQsIGVuZCwgJnN0YXJ0LCA0KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAnXFwnOgotICAg
ICAgICAgICAgY2FzZSAnLyc6Ci0gICAgICAgICAgICBjYXNlICdiJzoKLSAgICAgICAgICAgIGNh
c2UgJ2YnOgotICAgICAgICAgICAgY2FzZSAnbic6Ci0gICAgICAgICAgICBjYXNlICdyJzoKLSAg
ICAgICAgICAgIGNhc2UgJ3QnOgotICAgICAgICAgICAgY2FzZSAndic6Ci0gICAgICAgICAgICBj
YXNlICciJzoKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVs
c2UgaWYgKCciJyA9PSBjKSB7Ci0gICAgICAgICAgICAqdG9rZW5FbmQgPSBzdGFydDsKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsK
LX0KLQotVG9rZW4gcGFyc2VUb2tlbihjb25zdCBVQ2hhciogc3RhcnQsIGNvbnN0IFVDaGFyKiBl
bmQsIGNvbnN0IFVDaGFyKiogdG9rZW5TdGFydCwgY29uc3QgVUNoYXIqKiB0b2tlbkVuZCkKLXsK
LSAgICB3aGlsZSAoc3RhcnQgPCBlbmQgJiYgaXNTcGFjZU9yTmV3bGluZSgqc3RhcnQpKQotICAg
ICAgICArK3N0YXJ0OwotCi0gICAgaWYgKHN0YXJ0ID09IGVuZCkKLSAgICAgICAgcmV0dXJuIElO
VkFMSURfVE9LRU47Ci0KLSAgICAqdG9rZW5TdGFydCA9IHN0YXJ0OwotCi0gICAgc3dpdGNoICgq
c3RhcnQpIHsKLSAgICBjYXNlICduJzoKLSAgICAgICAgaWYgKHBhcnNlQ29uc3RUb2tlbihzdGFy
dCwgZW5kLCB0b2tlbkVuZCwgbnVsbFN0cmluZykpCi0gICAgICAgICAgICByZXR1cm4gTlVMTF9U
T0tFTjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAndCc6Ci0gICAgICAgIGlmIChwYXJzZUNv
bnN0VG9rZW4oc3RhcnQsIGVuZCwgdG9rZW5FbmQsIHRydWVTdHJpbmcpKQotICAgICAgICAgICAg
cmV0dXJuIEJPT0xfVFJVRTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAnZic6Ci0gICAgICAg
IGlmIChwYXJzZUNvbnN0VG9rZW4oc3RhcnQsIGVuZCwgdG9rZW5FbmQsIGZhbHNlU3RyaW5nKSkK
LSAgICAgICAgICAgIHJldHVybiBCT09MX0ZBTFNFOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
ICdbJzoKLSAgICAgICAgKnRva2VuRW5kID0gc3RhcnQgKyAxOwotICAgICAgICByZXR1cm4gQVJS
QVlfQkVHSU47Ci0gICAgY2FzZSAnXSc6Ci0gICAgICAgICp0b2tlbkVuZCA9IHN0YXJ0ICsgMTsK
LSAgICAgICAgcmV0dXJuIEFSUkFZX0VORDsKLSAgICBjYXNlICcsJzoKLSAgICAgICAgKnRva2Vu
RW5kID0gc3RhcnQgKyAxOwotICAgICAgICByZXR1cm4gTElTVF9TRVBBUkFUT1I7Ci0gICAgY2Fz
ZSAneyc6Ci0gICAgICAgICp0b2tlbkVuZCA9IHN0YXJ0ICsgMTsKLSAgICAgICAgcmV0dXJuIE9C
SkVDVF9CRUdJTjsKLSAgICBjYXNlICd9JzoKLSAgICAgICAgKnRva2VuRW5kID0gc3RhcnQgKyAx
OwotICAgICAgICByZXR1cm4gT0JKRUNUX0VORDsKLSAgICBjYXNlICc6JzoKLSAgICAgICAgKnRv
a2VuRW5kID0gc3RhcnQgKyAxOwotICAgICAgICByZXR1cm4gT0JKRUNUX1BBSVJfU0VQQVJBVE9S
OwotICAgIGNhc2UgJzAnOgotICAgIGNhc2UgJzEnOgotICAgIGNhc2UgJzInOgotICAgIGNhc2Ug
JzMnOgotICAgIGNhc2UgJzQnOgotICAgIGNhc2UgJzUnOgotICAgIGNhc2UgJzYnOgotICAgIGNh
c2UgJzcnOgotICAgIGNhc2UgJzgnOgotICAgIGNhc2UgJzknOgotICAgIGNhc2UgJy0nOgotICAg
ICAgICBpZiAocGFyc2VOdW1iZXJUb2tlbihzdGFydCwgZW5kLCB0b2tlbkVuZCkpCi0gICAgICAg
ICAgICByZXR1cm4gTlVNQkVSOwotICAgICAgICBicmVhazsKLSAgICBjYXNlICciJzoKLSAgICAg
ICAgaWYgKHBhcnNlU3RyaW5nVG9rZW4oc3RhcnQgKyAxLCBlbmQsIHRva2VuRW5kKSkKLSAgICAg
ICAgICAgIHJldHVybiBTVFJJTkc7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4g
SU5WQUxJRF9UT0tFTjsKLX0KLQotaW5saW5lIGludCBoZXhUb0ludChVQ2hhciBjKQotewotICAg
IGlmICgnMCcgPD0gYyAmJiBjIDw9ICc5JykKLSAgICAgICAgcmV0dXJuIGMgLSAnMCc7Ci0gICAg
aWYgKCdBJyA8PSBjICYmIGMgPD0gJ0YnKQotICAgICAgICByZXR1cm4gYyAtICdBJyArIDEwOwot
ICAgIGlmICgnYScgPD0gYyAmJiBjIDw9ICdmJykKLSAgICAgICAgcmV0dXJuIGMgLSAnYScgKyAx
MDsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotYm9vbCBk
ZWNvZGVTdHJpbmcoY29uc3QgVUNoYXIqIHN0YXJ0LCBjb25zdCBVQ2hhciogZW5kLCBTdHJpbmdC
dWlsZGVyKiBvdXRwdXQpCi17Ci0gICAgd2hpbGUgKHN0YXJ0IDwgZW5kKSB7Ci0gICAgICAgIFVD
aGFyIGMgPSAqc3RhcnQrKzsKLSAgICAgICAgaWYgKCdcXCcgIT0gYykgewotICAgICAgICAgICAg
b3V0cHV0LT5hcHBlbmQoYyk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAg
ICAgICBjID0gKnN0YXJ0Kys7Ci0gICAgICAgIHN3aXRjaCAoYykgewotICAgICAgICBjYXNlICci
JzoKLSAgICAgICAgY2FzZSAnLyc6Ci0gICAgICAgIGNhc2UgJ1xcJzoKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlICdiJzoKLSAgICAgICAgICAgIGMgPSAnXGInOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ2YnOgotICAgICAgICAgICAgYyA9ICdcZic7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnbic6Ci0gICAgICAgICAgICBjID0gJ1xuJzsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICdyJzoKLSAgICAgICAgICAgIGMgPSAn
XHInOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ3QnOgotICAgICAgICAgICAg
YyA9ICdcdCc7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAndic6Ci0gICAgICAg
ICAgICBjID0gJ1x2JzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICd4JzoKLSAg
ICAgICAgICAgIGMgPSAoaGV4VG9JbnQoKnN0YXJ0KSA8PCA0KSArCi0gICAgICAgICAgICAgICAg
aGV4VG9JbnQoKihzdGFydCArIDEpKTsKLSAgICAgICAgICAgIHN0YXJ0ICs9IDI7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSAndSc6Ci0gICAgICAgICAgICBjID0gKGhleFRvSW50
KCpzdGFydCkgPDwgMTIpICsKLSAgICAgICAgICAgICAgICAoaGV4VG9JbnQoKihzdGFydCArIDEp
KSA8PCA4KSArCi0gICAgICAgICAgICAgICAgKGhleFRvSW50KCooc3RhcnQgKyAyKSkgPDwgNCkg
KwotICAgICAgICAgICAgICAgIGhleFRvSW50KCooc3RhcnQgKyAzKSk7Ci0gICAgICAgICAgICBz
dGFydCArPSA0OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgb3V0cHV0LT5hcHBlbmQoYyk7
Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIGRlY29kZVN0cmluZyhjb25zdCBV
Q2hhciogc3RhcnQsIGNvbnN0IFVDaGFyKiBlbmQsIFN0cmluZyogb3V0cHV0KQotewotICAgIGlm
IChzdGFydCA9PSBlbmQpIHsKLSAgICAgICAgKm91dHB1dCA9ICIiOwotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0gICAgaWYgKHN0YXJ0ID4gZW5kKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgU3RyaW5nQnVpbGRlciBidWZmZXI7Ci0gICAgYnVmZmVyLnJlc2VydmVDYXBhY2l0eShl
bmQgLSBzdGFydCk7Ci0gICAgaWYgKCFkZWNvZGVTdHJpbmcoc3RhcnQsIGVuZCwgJmJ1ZmZlcikp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAqb3V0cHV0ID0gYnVmZmVyLnRvU3RyaW5nKCk7
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGJ1aWxk
VmFsdWUoY29uc3QgVUNoYXIqIHN0YXJ0LCBjb25zdCBVQ2hhciogZW5kLCBjb25zdCBVQ2hhcioq
IHZhbHVlVG9rZW5FbmQsIGludCBkZXB0aCkKLXsKLSAgICBpZiAoZGVwdGggPiBzdGFja0xpbWl0
KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0
OwotICAgIGNvbnN0IFVDaGFyKiB0b2tlblN0YXJ0OwotICAgIGNvbnN0IFVDaGFyKiB0b2tlbkVu
ZDsKLSAgICBUb2tlbiB0b2tlbiA9IHBhcnNlVG9rZW4oc3RhcnQsIGVuZCwgJnRva2VuU3RhcnQs
ICZ0b2tlbkVuZCk7Ci0gICAgc3dpdGNoICh0b2tlbikgewotICAgIGNhc2UgSU5WQUxJRF9UT0tF
TjoKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgY2FzZSBOVUxMX1RPS0VOOgotICAgICAgICByZXN1
bHQgPSBJbnNwZWN0b3JWYWx1ZTo6bnVsbCgpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEJP
T0xfVFJVRToKLSAgICAgICAgcmVzdWx0ID0gSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKHRy
dWUpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEJPT0xfRkFMU0U6Ci0gICAgICAgIHJlc3Vs
dCA9IEluc3BlY3RvckJhc2ljVmFsdWU6OmNyZWF0ZShmYWxzZSk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgTlVNQkVSOiB7Ci0gICAgICAgIGJvb2wgb2s7Ci0gICAgICAgIGRvdWJsZSB2YWx1
ZSA9IGNoYXJhY3RlcnNUb0RvdWJsZSh0b2tlblN0YXJ0LCB0b2tlbkVuZCAtIHRva2VuU3RhcnQs
ICZvayk7Ci0gICAgICAgIGlmICghb2spCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAg
cmVzdWx0ID0gSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKHZhbHVlKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotICAgIGNhc2UgU1RSSU5HOiB7Ci0gICAgICAgIFN0cmluZyB2YWx1ZTsKLSAg
ICAgICAgYm9vbCBvayA9IGRlY29kZVN0cmluZyh0b2tlblN0YXJ0ICsgMSwgdG9rZW5FbmQgLSAx
LCAmdmFsdWUpOwotICAgICAgICBpZiAoIW9rKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAg
ICAgIHJlc3VsdCA9IEluc3BlY3RvclN0cmluZzo6Y3JlYXRlKHZhbHVlKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotICAgIGNhc2UgQVJSQVlfQkVHSU46IHsKLSAgICAgICAgUmVmUHRyPEluc3Bl
Y3RvckFycmF5PiBhcnJheSA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKLSAgICAgICAgc3Rh
cnQgPSB0b2tlbkVuZDsKLSAgICAgICAgdG9rZW4gPSBwYXJzZVRva2VuKHN0YXJ0LCBlbmQsICZ0
b2tlblN0YXJ0LCAmdG9rZW5FbmQpOwotICAgICAgICB3aGlsZSAodG9rZW4gIT0gQVJSQVlfRU5E
KSB7Ci0gICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGFycmF5Tm9kZSA9IGJ1aWxk
VmFsdWUoc3RhcnQsIGVuZCwgJnRva2VuRW5kLCBkZXB0aCArIDEpOwotICAgICAgICAgICAgaWYg
KCFhcnJheU5vZGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICBhcnJh
eS0+cHVzaFZhbHVlKGFycmF5Tm9kZSk7Ci0KLSAgICAgICAgICAgIC8vIEFmdGVyIGEgbGlzdCB2
YWx1ZSwgd2UgZXhwZWN0IGEgY29tbWEgb3IgdGhlIGVuZCBvZiB0aGUgbGlzdC4KLSAgICAgICAg
ICAgIHN0YXJ0ID0gdG9rZW5FbmQ7Ci0gICAgICAgICAgICB0b2tlbiA9IHBhcnNlVG9rZW4oc3Rh
cnQsIGVuZCwgJnRva2VuU3RhcnQsICZ0b2tlbkVuZCk7Ci0gICAgICAgICAgICBpZiAodG9rZW4g
PT0gTElTVF9TRVBBUkFUT1IpIHsKLSAgICAgICAgICAgICAgICBzdGFydCA9IHRva2VuRW5kOwot
ICAgICAgICAgICAgICAgIHRva2VuID0gcGFyc2VUb2tlbihzdGFydCwgZW5kLCAmdG9rZW5TdGFy
dCwgJnRva2VuRW5kKTsKLSAgICAgICAgICAgICAgICBpZiAodG9rZW4gPT0gQVJSQVlfRU5EKQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAodG9r
ZW4gIT0gQVJSQVlfRU5EKSB7Ci0gICAgICAgICAgICAgICAgLy8gVW5leHBlY3RlZCB2YWx1ZSBh
ZnRlciBsaXN0IHZhbHVlLiAgQmFpbCBvdXQuCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHRva2VuICE9IEFSUkFZX0VORCkK
LSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICByZXN1bHQgPSBhcnJheS5yZWxlYXNlKCk7
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIE9CSkVDVF9CRUdJTjogewotICAgICAg
ICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0
ZSgpOwotICAgICAgICBzdGFydCA9IHRva2VuRW5kOwotICAgICAgICB0b2tlbiA9IHBhcnNlVG9r
ZW4oc3RhcnQsIGVuZCwgJnRva2VuU3RhcnQsICZ0b2tlbkVuZCk7Ci0gICAgICAgIHdoaWxlICh0
b2tlbiAhPSBPQkpFQ1RfRU5EKSB7Ci0gICAgICAgICAgICBpZiAodG9rZW4gIT0gU1RSSU5HKQot
ICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgU3RyaW5nIGtleTsKLSAgICAg
ICAgICAgIGlmICghZGVjb2RlU3RyaW5nKHRva2VuU3RhcnQgKyAxLCB0b2tlbkVuZCAtIDEsICZr
ZXkpKQotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgc3RhcnQgPSB0b2tl
bkVuZDsKLQotICAgICAgICAgICAgdG9rZW4gPSBwYXJzZVRva2VuKHN0YXJ0LCBlbmQsICZ0b2tl
blN0YXJ0LCAmdG9rZW5FbmQpOwotICAgICAgICAgICAgaWYgKHRva2VuICE9IE9CSkVDVF9QQUlS
X1NFUEFSQVRPUikKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIHN0YXJ0
ID0gdG9rZW5FbmQ7Ci0KLSAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUg
PSBidWlsZFZhbHVlKHN0YXJ0LCBlbmQsICZ0b2tlbkVuZCwgZGVwdGggKyAxKTsKLSAgICAgICAg
ICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICBv
YmplY3QtPnNldFZhbHVlKGtleSwgdmFsdWUpOwotICAgICAgICAgICAgc3RhcnQgPSB0b2tlbkVu
ZDsKLQotICAgICAgICAgICAgLy8gQWZ0ZXIgYSBrZXkvdmFsdWUgcGFpciwgd2UgZXhwZWN0IGEg
Y29tbWEgb3IgdGhlIGVuZCBvZiB0aGUKLSAgICAgICAgICAgIC8vIG9iamVjdC4KLSAgICAgICAg
ICAgIHRva2VuID0gcGFyc2VUb2tlbihzdGFydCwgZW5kLCAmdG9rZW5TdGFydCwgJnRva2VuRW5k
KTsKLSAgICAgICAgICAgIGlmICh0b2tlbiA9PSBMSVNUX1NFUEFSQVRPUikgewotICAgICAgICAg
ICAgICAgIHN0YXJ0ID0gdG9rZW5FbmQ7Ci0gICAgICAgICAgICAgICAgdG9rZW4gPSBwYXJzZVRv
a2VuKHN0YXJ0LCBlbmQsICZ0b2tlblN0YXJ0LCAmdG9rZW5FbmQpOwotICAgICAgICAgICAgICAg
ICBpZiAodG9rZW4gPT0gT0JKRUNUX0VORCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHRva2VuICE9IE9CSkVDVF9FTkQpIHsKLSAgICAgICAg
ICAgICAgICAvLyBVbmV4cGVjdGVkIHZhbHVlIGFmdGVyIGxhc3Qgb2JqZWN0IHZhbHVlLiAgQmFp
bCBvdXQuCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKHRva2VuICE9IE9CSkVDVF9FTkQpCi0gICAgICAgICAgICByZXR1cm4g
MDsKLSAgICAgICAgcmVzdWx0ID0gb2JqZWN0LnJlbGVhc2UoKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgLy8gV2UgZ290IGEgdG9rZW4gdGhhdCdzIG5v
dCBhIHZhbHVlLgotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgKnZhbHVlVG9rZW5FbmQg
PSB0b2tlbkVuZDsKLSAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKLX0KLQotaW5saW5lIGJv
b2wgZXNjYXBlQ2hhcihVQ2hhciBjLCBTdHJpbmdCdWlsZGVyKiBkc3QpCi17Ci0gICAgc3dpdGNo
IChjKSB7Ci0gICAgY2FzZSAnXGInOiBkc3QtPmFwcGVuZCgiXFxiIiwgMik7IGJyZWFrOwotICAg
IGNhc2UgJ1xmJzogZHN0LT5hcHBlbmQoIlxcZiIsIDIpOyBicmVhazsKLSAgICBjYXNlICdcbic6
IGRzdC0+YXBwZW5kKCJcXG4iLCAyKTsgYnJlYWs7Ci0gICAgY2FzZSAnXHInOiBkc3QtPmFwcGVu
ZCgiXFxyIiwgMik7IGJyZWFrOwotICAgIGNhc2UgJ1x0JzogZHN0LT5hcHBlbmQoIlxcdCIsIDIp
OyBicmVhazsKLSAgICBjYXNlICdcXCc6IGRzdC0+YXBwZW5kKCJcXFxcIiwgMik7IGJyZWFrOwot
ICAgIGNhc2UgJyInOiBkc3QtPmFwcGVuZCgiXFxcIiIsIDIpOyBicmVhazsKLSAgICBkZWZhdWx0
OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1p
bmxpbmUgdm9pZCBkb3VibGVRdW90ZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0ciwgU3RyaW5nQnVp
bGRlciogZHN0KQotewotICAgIGRzdC0+YXBwZW5kKCciJyk7Ci0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHN0ci5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIFVDaGFyIGMgPSBzdHJbaV07
Ci0gICAgICAgIGlmICghZXNjYXBlQ2hhcihjLCBkc3QpKSB7Ci0gICAgICAgICAgICBpZiAoYyA8
IDMyIHx8IGMgPiAxMjYgfHwgYyA9PSAnPCcgfHwgYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAg
ICAvLyAxLiBFc2NhcGluZyA8LCA+IHRvIHByZXZlbnQgc2NyaXB0IGV4ZWN1dGlvbi4KLSAgICAg
ICAgICAgICAgICAvLyAyLiBUZWNobmljYWxseSwgd2UgY291bGQgYWxzbyBwYXNzIHRocm91Z2gg
YyA+IDEyNiBhcyBVVEY4LCBidXQgdGhpcwotICAgICAgICAgICAgICAgIC8vICAgIGlzIGFsc28g
b3B0aW9uYWwuICBJdCB3b3VsZCBhbHNvIGJlIGEgcGFpbiB0byBpbXBsZW1lbnQgaGVyZS4KLSAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc3ltYm9sID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQg
aW50PihjKTsKLSAgICAgICAgICAgICAgICBTdHJpbmcgc3ltYm9sQ29kZSA9IFN0cmluZzo6Zm9y
bWF0KCJcXHUlMDRYIiwgc3ltYm9sKTsKLSAgICAgICAgICAgICAgICBkc3QtPmFwcGVuZChzeW1i
b2xDb2RlLmNoYXJhY3RlcnMoKSwgc3ltYm9sQ29kZS5sZW5ndGgoKSk7Ci0gICAgICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgICAgICBkc3QtPmFwcGVuZChjKTsKLSAgICAgICAgfQotICAgIH0K
LSAgICBkc3QtPmFwcGVuZCgnIicpOwotfQotCi19IC8vIGFub255bW91cyBuYW1lc3BhY2UKLQot
Ym9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNCb29sZWFuKGJvb2wqKSBjb25zdAotewotICAgIHJldHVy
biBmYWxzZTsKLX0KLQotYm9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNOdW1iZXIoZG91YmxlKikgY29u
c3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgSW5zcGVjdG9yVmFsdWU6OmFzTnVt
YmVyKGxvbmcqKSBjb25zdAotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBJbnNwZWN0
b3JWYWx1ZTo6YXNOdW1iZXIoaW50KikgY29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LWJvb2wgSW5zcGVjdG9yVmFsdWU6OmFzTnVtYmVyKHVuc2lnbmVkIGxvbmcqKSBjb25zdAotewot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNOdW1iZXIodW5z
aWduZWQgaW50KikgY29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgSW5zcGVj
dG9yVmFsdWU6OmFzU3RyaW5nKFN0cmluZyopIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi1ib29sIEluc3BlY3RvclZhbHVlOjphc1ZhbHVlKFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4q
IG91dHB1dCkKLXsKLSAgICAqb3V0cHV0ID0gdGhpczsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
Ym9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNPYmplY3QoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qKQot
ewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNBcnJheShS
ZWZQdHI8SW5zcGVjdG9yQXJyYXk+KikKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0b3JWYWx1ZTo6YXNPYmplY3QoKQotewotICAg
IHJldHVybiAwOwotfQotCi1QYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBJbnNwZWN0b3JWYWx1
ZTo6YXNBcnJheSgpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLVBhc3NSZWZQdHI8SW5zcGVjdG9y
VmFsdWU+IEluc3BlY3RvclZhbHVlOjpwYXJzZUpTT04oY29uc3QgU3RyaW5nJiBqc29uKQotewot
ICAgIGNvbnN0IFVDaGFyKiBzdGFydCA9IGpzb24uY2hhcmFjdGVycygpOwotICAgIGNvbnN0IFVD
aGFyKiBlbmQgPSBqc29uLmNoYXJhY3RlcnMoKSArIGpzb24ubGVuZ3RoKCk7Ci0gICAgY29uc3Qg
VUNoYXIgKnRva2VuRW5kOwotICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUgPSBidWls
ZFZhbHVlKHN0YXJ0LCBlbmQsICZ0b2tlbkVuZCwgMCk7Ci0gICAgaWYgKCF2YWx1ZSB8fCB0b2tl
bkVuZCAhPSBlbmQpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiB2YWx1ZS5yZWxlYXNl
KCk7Ci19Ci0KLVN0cmluZyBJbnNwZWN0b3JWYWx1ZTo6dG9KU09OU3RyaW5nKCkgY29uc3QKLXsK
LSAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAgICByZXN1bHQucmVzZXJ2ZUNhcGFjaXR5KDUx
Mik7Ci0gICAgd3JpdGVKU09OKCZyZXN1bHQpOwotICAgIHJldHVybiByZXN1bHQudG9TdHJpbmco
KTsKLX0KLQotdm9pZCBJbnNwZWN0b3JWYWx1ZTo6d3JpdGVKU09OKFN0cmluZ0J1aWxkZXIqIG91
dHB1dCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV90eXBlID09IFR5cGVOdWxsKTsKLSAgICBvdXRw
dXQtPmFwcGVuZChudWxsU3RyaW5nLCA0KTsKLX0KLQotYm9vbCBJbnNwZWN0b3JCYXNpY1ZhbHVl
Ojphc0Jvb2xlYW4oYm9vbCogb3V0cHV0KSBjb25zdAotewotICAgIGlmICh0eXBlKCkgIT0gVHlw
ZUJvb2xlYW4pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAqb3V0cHV0ID0gbV9ib29sVmFs
dWU7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6YXNO
dW1iZXIoZG91YmxlKiBvdXRwdXQpIGNvbnN0Ci17Ci0gICAgaWYgKHR5cGUoKSAhPSBUeXBlTnVt
YmVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgKm91dHB1dCA9IG1fZG91YmxlVmFsdWU7
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6YXNOdW1i
ZXIobG9uZyogb3V0cHV0KSBjb25zdAotewotICAgIGlmICh0eXBlKCkgIT0gVHlwZU51bWJlcikK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICpvdXRwdXQgPSBzdGF0aWNfY2FzdDxsb25nPiht
X2RvdWJsZVZhbHVlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBJbnNwZWN0b3JCYXNp
Y1ZhbHVlOjphc051bWJlcihpbnQqIG91dHB1dCkgY29uc3QKLXsKLSAgICBpZiAodHlwZSgpICE9
IFR5cGVOdW1iZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAqb3V0cHV0ID0gc3RhdGlj
X2Nhc3Q8aW50PihtX2RvdWJsZVZhbHVlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBJ
bnNwZWN0b3JCYXNpY1ZhbHVlOjphc051bWJlcih1bnNpZ25lZCBsb25nKiBvdXRwdXQpIGNvbnN0
Ci17Ci0gICAgaWYgKHR5cGUoKSAhPSBUeXBlTnVtYmVyKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgKm91dHB1dCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KG1fZG91YmxlVmFsdWUp
OwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEluc3BlY3RvckJhc2ljVmFsdWU6OmFzTnVt
YmVyKHVuc2lnbmVkIGludCogb3V0cHV0KSBjb25zdAotewotICAgIGlmICh0eXBlKCkgIT0gVHlw
ZU51bWJlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICpvdXRwdXQgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBpbnQ+KG1fZG91YmxlVmFsdWUpOwotICAgIHJldHVybiB0cnVlOwotfQotCi12
b2lkIEluc3BlY3RvckJhc2ljVmFsdWU6OndyaXRlSlNPTihTdHJpbmdCdWlsZGVyKiBvdXRwdXQp
IGNvbnN0Ci17Ci0gICAgQVNTRVJUKHR5cGUoKSA9PSBUeXBlQm9vbGVhbiB8fCB0eXBlKCkgPT0g
VHlwZU51bWJlcik7Ci0gICAgaWYgKHR5cGUoKSA9PSBUeXBlQm9vbGVhbikgewotICAgICAgICBp
ZiAobV9ib29sVmFsdWUpCi0gICAgICAgICAgICBvdXRwdXQtPmFwcGVuZCh0cnVlU3RyaW5nLCA0
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgb3V0cHV0LT5hcHBlbmQoZmFsc2VTdHJpbmcs
IDUpOwotICAgIH0gZWxzZSBpZiAodHlwZSgpID09IFR5cGVOdW1iZXIpIHsKLSAgICAgICAgTnVt
YmVyVG9MU3RyaW5nQnVmZmVyIGJ1ZmZlcjsKLSAgICAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKG1f
ZG91YmxlVmFsdWUpKSB7Ci0gICAgICAgICAgICBvdXRwdXQtPmFwcGVuZChudWxsU3RyaW5nLCA0
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBEZWNpbWFsTnVtYmVy
IGRlY2ltYWwgPSBtX2RvdWJsZVZhbHVlOwotICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSAwOwot
ICAgICAgICBpZiAoZGVjaW1hbC5idWZmZXJMZW5ndGhGb3JTdHJpbmdEZWNpbWFsKCkgPiBXVEY6
Ok51bWJlclRvU3RyaW5nQnVmZmVyTGVuZ3RoKSB7Ci0gICAgICAgICAgICAvLyBOb3QgZW5vdWdo
IHJvb20gZm9yIGRlY2ltYWwuIFVzZSBleHBvbmVudGlhbCBmb3JtYXQuCi0gICAgICAgICAgICBp
ZiAoZGVjaW1hbC5idWZmZXJMZW5ndGhGb3JTdHJpbmdFeHBvbmVudGlhbCgpID4gV1RGOjpOdW1i
ZXJUb1N0cmluZ0J1ZmZlckxlbmd0aCkgewotICAgICAgICAgICAgICAgIC8vIEZhbGxiYWNrIGZv
ciBhbiBhYm5vcm1hbCBjYXNlIGlmIGl0J3MgdG9vIGxpdHRsZSBldmVuIGZvciBleHBvbmVudGlh
bC4KLSAgICAgICAgICAgICAgICBvdXRwdXQtPmFwcGVuZCgiTmFOIiwgMyk7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbGVuZ3RoID0gZGVjaW1h
bC50b1N0cmluZ0V4cG9uZW50aWFsKGJ1ZmZlciwgV1RGOjpOdW1iZXJUb1N0cmluZ0J1ZmZlckxl
bmd0aCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbGVuZ3RoID0gZGVjaW1hbC50b1N0
cmluZ0RlY2ltYWwoYnVmZmVyLCBXVEY6Ok51bWJlclRvU3RyaW5nQnVmZmVyTGVuZ3RoKTsKLSAg
ICAgICAgb3V0cHV0LT5hcHBlbmQoYnVmZmVyLCBsZW5ndGgpOwotICAgIH0KLX0KLQotYm9vbCBJ
bnNwZWN0b3JTdHJpbmc6OmFzU3RyaW5nKFN0cmluZyogb3V0cHV0KSBjb25zdAotewotICAgICpv
dXRwdXQgPSBtX3N0cmluZ1ZhbHVlOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIEluc3Bl
Y3RvclN0cmluZzo6d3JpdGVKU09OKFN0cmluZ0J1aWxkZXIqIG91dHB1dCkgY29uc3QKLXsKLSAg
ICBBU1NFUlQodHlwZSgpID09IFR5cGVTdHJpbmcpOwotICAgIGRvdWJsZVF1b3RlU3RyaW5nKG1f
c3RyaW5nVmFsdWUsIG91dHB1dCk7Ci19Ci0KLUluc3BlY3Rvck9iamVjdEJhc2U6On5JbnNwZWN0
b3JPYmplY3RCYXNlKCkKLXsKLX0KLQotYm9vbCBJbnNwZWN0b3JPYmplY3RCYXNlOjphc09iamVj
dChSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0cHV0KQotewotICAgIENPTVBJTEVfQVNTRVJU
KHNpemVvZihJbnNwZWN0b3JPYmplY3QpID09IHNpemVvZihJbnNwZWN0b3JPYmplY3RCYXNlKSwg
Y2Fubm90X2Nhc3QpOwotICAgICpvdXRwdXQgPSBzdGF0aWNfY2FzdDxJbnNwZWN0b3JPYmplY3Qq
Pih0aGlzKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IEluc3BlY3Rvck9iamVjdEJhc2U6OmFzT2JqZWN0KCkKLXsKLSAgICByZXR1cm4gb3BlbkFj
Y2Vzc29ycygpOwotfQotCi1JbnNwZWN0b3JPYmplY3QqIEluc3BlY3Rvck9iamVjdEJhc2U6Om9w
ZW5BY2Nlc3NvcnMoKQotewotICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihJbnNwZWN0b3JPYmpl
Y3QpID09IHNpemVvZihJbnNwZWN0b3JPYmplY3RCYXNlKSwgY2Fubm90X2Nhc3QpOwotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxJbnNwZWN0b3JPYmplY3QqPih0aGlzKTsKLX0KLQotYm9vbCBJbnNw
ZWN0b3JPYmplY3RCYXNlOjpnZXRCb29sZWFuKGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogb3V0
cHV0KSBjb25zdAotewotICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUgPSBnZXQobmFt
ZSk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB2
YWx1ZS0+YXNCb29sZWFuKG91dHB1dCk7Ci19Ci0KLWJvb2wgSW5zcGVjdG9yT2JqZWN0QmFzZTo6
Z2V0U3RyaW5nKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nKiBvdXRwdXQpIGNvbnN0Ci17Ci0g
ICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSA9IGdldChuYW1lKTsKLSAgICBpZiAoIXZh
bHVlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHZhbHVlLT5hc1N0cmluZyhv
dXRwdXQpOwotfQotCi1QYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yT2JqZWN0
QmFzZTo6Z2V0T2JqZWN0KGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKLXsKLSAgICBQYXNzUmVm
UHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSA9IGdldChuYW1lKTsKLSAgICBpZiAoIXZhbHVlKQot
ICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gdmFsdWUtPmFzT2JqZWN0KCk7Ci19Ci0KLVBh
c3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IEluc3BlY3Rvck9iamVjdEJhc2U6OmdldEFycmF5KGNv
bnN0IFN0cmluZyYgbmFtZSkgY29uc3QKLXsKLSAgICBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVl
PiB2YWx1ZSA9IGdldChuYW1lKTsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gMDsK
LSAgICByZXR1cm4gdmFsdWUtPmFzQXJyYXkoKTsKLX0KLQotUGFzc1JlZlB0cjxJbnNwZWN0b3JW
YWx1ZT4gSW5zcGVjdG9yT2JqZWN0QmFzZTo6Z2V0KGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QK
LXsKLSAgICBEaWN0aW9uYXJ5Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZGF0YS5maW5kKG5hbWUp
OwotICAgIGlmIChpdCA9PSBtX2RhdGEuZW5kKCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJl
dHVybiBpdC0+dmFsdWU7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yT2JqZWN0QmFzZTo6cmVtb3ZlKGNv
bnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICBtX2RhdGEucmVtb3ZlKG5hbWUpOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9vcmRlci5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAobV9v
cmRlcltpXSA9PSBuYW1lKSB7Ci0gICAgICAgICAgICBtX29yZGVyLnJlbW92ZShpKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEluc3BlY3Rvck9iamVj
dEJhc2U6OndyaXRlSlNPTihTdHJpbmdCdWlsZGVyKiBvdXRwdXQpIGNvbnN0Ci17Ci0gICAgb3V0
cHV0LT5hcHBlbmQoJ3snKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fb3JkZXIuc2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgRGljdGlvbmFyeTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2Rh
dGEuZmluZChtX29yZGVyW2ldKTsKLSAgICAgICAgQVNTRVJUKGl0ICE9IG1fZGF0YS5lbmQoKSk7
Ci0gICAgICAgIGlmIChpKQotICAgICAgICAgICAgb3V0cHV0LT5hcHBlbmQoJywnKTsKLSAgICAg
ICAgZG91YmxlUXVvdGVTdHJpbmcoaXQtPmtleSwgb3V0cHV0KTsKLSAgICAgICAgb3V0cHV0LT5h
cHBlbmQoJzonKTsKLSAgICAgICAgaXQtPnZhbHVlLT53cml0ZUpTT04ob3V0cHV0KTsKLSAgICB9
Ci0gICAgb3V0cHV0LT5hcHBlbmQoJ30nKTsKLX0KLQotSW5zcGVjdG9yT2JqZWN0QmFzZTo6SW5z
cGVjdG9yT2JqZWN0QmFzZSgpCi0gICAgOiBJbnNwZWN0b3JWYWx1ZShUeXBlT2JqZWN0KQotICAg
ICwgbV9kYXRhKCkKLSAgICAsIG1fb3JkZXIoKQotewotfQotCi1JbnNwZWN0b3JBcnJheUJhc2U6
On5JbnNwZWN0b3JBcnJheUJhc2UoKQotewotfQotCi1ib29sIEluc3BlY3RvckFycmF5QmFzZTo6
YXNBcnJheShSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBvdXRwdXQpCi17Ci0gICAgQ09NUElMRV9B
U1NFUlQoc2l6ZW9mKEluc3BlY3RvckFycmF5QmFzZSkgPT0gc2l6ZW9mKEluc3BlY3RvckFycmF5
KSwgY2Fubm90X2Nhc3QpOwotICAgICpvdXRwdXQgPSBzdGF0aWNfY2FzdDxJbnNwZWN0b3JBcnJh
eSo+KHRoaXMpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1QYXNzUmVmUHRyPEluc3BlY3RvckFy
cmF5PiBJbnNwZWN0b3JBcnJheUJhc2U6OmFzQXJyYXkoKQotewotICAgIENPTVBJTEVfQVNTRVJU
KHNpemVvZihJbnNwZWN0b3JBcnJheUJhc2UpID09IHNpemVvZihJbnNwZWN0b3JBcnJheSksIGNh
bm5vdF9jYXN0KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zcGVjdG9yQXJyYXkqPih0aGlz
KTsKLX0KLQotdm9pZCBJbnNwZWN0b3JBcnJheUJhc2U6OndyaXRlSlNPTihTdHJpbmdCdWlsZGVy
KiBvdXRwdXQpIGNvbnN0Ci17Ci0gICAgb3V0cHV0LT5hcHBlbmQoJ1snKTsKLSAgICBmb3IgKFZl
Y3RvcjxSZWZQdHI8SW5zcGVjdG9yVmFsdWU+Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2RhdGEu
YmVnaW4oKTsgaXQgIT0gbV9kYXRhLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIGlmIChpdCAhPSBt
X2RhdGEuYmVnaW4oKSkKLSAgICAgICAgICAgIG91dHB1dC0+YXBwZW5kKCcsJyk7Ci0gICAgICAg
ICgqaXQpLT53cml0ZUpTT04ob3V0cHV0KTsKLSAgICB9Ci0gICAgb3V0cHV0LT5hcHBlbmQoJ10n
KTsKLX0KLQotSW5zcGVjdG9yQXJyYXlCYXNlOjpJbnNwZWN0b3JBcnJheUJhc2UoKQotICAgIDog
SW5zcGVjdG9yVmFsdWUoVHlwZUFycmF5KQotICAgICwgbV9kYXRhKCkKLXsKLX0KLQotUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JWYWx1ZT4gSW5zcGVjdG9yQXJyYXlCYXNlOjpnZXQoc2l6ZV90IGluZGV4
KQotewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgbV9kYXRh
LnNpemUoKSk7Ci0gICAgcmV0dXJuIG1fZGF0YVtpbmRleF07Ci19Ci0KLVBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpCi17Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBJbnNwZWN0b3JPYmplY3QpOwotfQotCi1QYXNzUmVmUHRyPEluc3BlY3RvckFy
cmF5PiBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEluc3BlY3RvckFycmF5KTsKLX0KLQotUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gSW5zcGVj
dG9yVmFsdWU6Om51bGwoKQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5zcGVjdG9yVmFs
dWUpOwotfQotCi1QYXNzUmVmUHRyPEluc3BlY3RvclN0cmluZz4gSW5zcGVjdG9yU3RyaW5nOjpj
cmVhdGUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IElu
c3BlY3RvclN0cmluZyh2YWx1ZSkpOwotfQotCi1QYXNzUmVmUHRyPEluc3BlY3RvclN0cmluZz4g
SW5zcGVjdG9yU3RyaW5nOjpjcmVhdGUoY29uc3QgY2hhciogdmFsdWUpCi17Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBJbnNwZWN0b3JTdHJpbmcodmFsdWUpKTsKLX0KLQotUGFzc1JlZlB0cjxJ
bnNwZWN0b3JCYXNpY1ZhbHVlPiBJbnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUoYm9vbCB2YWx1
ZSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluc3BlY3RvckJhc2ljVmFsdWUodmFsdWUp
KTsKLX0KLQotUGFzc1JlZlB0cjxJbnNwZWN0b3JCYXNpY1ZhbHVlPiBJbnNwZWN0b3JCYXNpY1Zh
bHVlOjpjcmVhdGUoaW50IHZhbHVlKQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5zcGVj
dG9yQmFzaWNWYWx1ZSh2YWx1ZSkpOwotfQotCi1QYXNzUmVmUHRyPEluc3BlY3RvckJhc2ljVmFs
dWU+IEluc3BlY3RvckJhc2ljVmFsdWU6OmNyZWF0ZShkb3VibGUgdmFsdWUpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBJbnNwZWN0b3JCYXNpY1ZhbHVlKHZhbHVlKSk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JWYWx1ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yVmFsdWVzLmgJKHJldmlzaW9uIDE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JWYWx1ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSwzNjggKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBk
aXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgSW5zcGVjdG9yVmFsdWVzX2gKLSNkZWZpbmUgSW5zcGVjdG9yVmFsdWVzX2gKLQotI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSW5zcGVjdG9yQXJyYXk7Ci1jbGFzcyBJbnNwZWN0
b3JPYmplY3Q7Ci0KLWNsYXNzIEluc3BlY3RvclZhbHVlIDogcHVibGljIFJlZkNvdW50ZWQ8SW5z
cGVjdG9yVmFsdWU+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3QgaW50IG1heERlcHRoID0g
MTAwMDsKLQotICAgIEluc3BlY3RvclZhbHVlKCkgOiBtX3R5cGUoVHlwZU51bGwpIHsgfQotICAg
IHZpcnR1YWwgfkluc3BlY3RvclZhbHVlKCkgeyB9Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4gbnVsbCgpOwotCi0gICAgdHlwZWRlZiBlbnVtIHsKLSAgICAgICAgVHlw
ZU51bGwgPSAwLAotICAgICAgICBUeXBlQm9vbGVhbiwKLSAgICAgICAgVHlwZU51bWJlciwKLSAg
ICAgICAgVHlwZVN0cmluZywKLSAgICAgICAgVHlwZU9iamVjdCwKLSAgICAgICAgVHlwZUFycmF5
Ci0gICAgfSBUeXBlOwotCi0gICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9
Ci0KLSAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlTnVsbDsg
fQotCi0gICAgdmlydHVhbCBib29sIGFzQm9vbGVhbihib29sKiBvdXRwdXQpIGNvbnN0OwotICAg
IHZpcnR1YWwgYm9vbCBhc051bWJlcihkb3VibGUqIG91dHB1dCkgY29uc3Q7Ci0gICAgdmlydHVh
bCBib29sIGFzTnVtYmVyKGxvbmcqIG91dHB1dCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGFz
TnVtYmVyKGludCogb3V0cHV0KSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgYXNOdW1iZXIodW5z
aWduZWQgbG9uZyogb3V0cHV0KSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgYXNOdW1iZXIodW5z
aWduZWQgaW50KiBvdXRwdXQpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBhc1N0cmluZyhTdHJp
bmcqIG91dHB1dCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGFzVmFsdWUoUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiogb3V0cHV0KTsKLSAgICB2aXJ0dWFsIGJvb2wgYXNPYmplY3QoUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4qIG91dHB1dCk7Ci0gICAgdmlydHVhbCBib29sIGFzQXJyYXkoUmVmUHRy
PEluc3BlY3RvckFycmF5Piogb3V0cHV0KTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBhc09iamVjdCgpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbnNwZWN0b3JB
cnJheT4gYXNBcnJheSgpOwotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+
IHBhcnNlSlNPTihjb25zdCBTdHJpbmcmIGpzb24pOwotCi0gICAgU3RyaW5nIHRvSlNPTlN0cmlu
ZygpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCB3cml0ZUpTT04oU3RyaW5nQnVpbGRlciogb3V0
cHV0KSBjb25zdDsKLQotcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IEluc3BlY3RvclZhbHVlKFR5
cGUgdHlwZSkgOiBtX3R5cGUodHlwZSkgeyB9Ci0KLXByaXZhdGU6Ci0gICAgVHlwZSBtX3R5cGU7
Ci19OwotCi1jbGFzcyBJbnNwZWN0b3JCYXNpY1ZhbHVlIDogcHVibGljIEluc3BlY3RvclZhbHVl
IHsKLXB1YmxpYzoKLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvckJhc2ljVmFsdWU+
IGNyZWF0ZShib29sKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JCYXNpY1ZhbHVl
PiBjcmVhdGUoaW50KTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JCYXNpY1ZhbHVl
PiBjcmVhdGUoZG91YmxlKTsKLQotICAgIHZpcnR1YWwgYm9vbCBhc0Jvb2xlYW4oYm9vbCogb3V0
cHV0KSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgYXNOdW1iZXIoZG91YmxlKiBv
dXRwdXQpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBhc051bWJlcihsb25nKiBv
dXRwdXQpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBhc051bWJlcihpbnQqIG91
dHB1dCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGFzTnVtYmVyKHVuc2lnbmVk
IGxvbmcqIG91dHB1dCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGFzTnVtYmVy
KHVuc2lnbmVkKiBvdXRwdXQpIGNvbnN0IE9WRVJSSURFOwotCi0gICAgdmlydHVhbCB2b2lkIHdy
aXRlSlNPTihTdHJpbmdCdWlsZGVyKiBvdXRwdXQpIGNvbnN0IE9WRVJSSURFOwotCi1wcml2YXRl
OgotICAgIGV4cGxpY2l0IEluc3BlY3RvckJhc2ljVmFsdWUoYm9vbCB2YWx1ZSkgOiBJbnNwZWN0
b3JWYWx1ZShUeXBlQm9vbGVhbiksIG1fYm9vbFZhbHVlKHZhbHVlKSB7IH0KLSAgICBleHBsaWNp
dCBJbnNwZWN0b3JCYXNpY1ZhbHVlKGludCB2YWx1ZSkgOiBJbnNwZWN0b3JWYWx1ZShUeXBlTnVt
YmVyKSwgbV9kb3VibGVWYWx1ZSgoZG91YmxlKXZhbHVlKSB7IH0KLSAgICBleHBsaWNpdCBJbnNw
ZWN0b3JCYXNpY1ZhbHVlKGRvdWJsZSB2YWx1ZSkgOiBJbnNwZWN0b3JWYWx1ZShUeXBlTnVtYmVy
KSwgbV9kb3VibGVWYWx1ZSh2YWx1ZSkgeyB9Ci0KLSAgICB1bmlvbiB7Ci0gICAgICAgIGJvb2wg
bV9ib29sVmFsdWU7Ci0gICAgICAgIGRvdWJsZSBtX2RvdWJsZVZhbHVlOwotICAgIH07Ci19Owot
Ci1jbGFzcyBJbnNwZWN0b3JTdHJpbmcgOiBwdWJsaWMgSW5zcGVjdG9yVmFsdWUgewotcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvclN0cmluZz4gY3JlYXRlKGNvbnN0IFN0
cmluZyYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvclN0cmluZz4gY3JlYXRlKGNv
bnN0IGNoYXIqKTsKLQotICAgIHZpcnR1YWwgYm9vbCBhc1N0cmluZyhTdHJpbmcqIG91dHB1dCkg
Y29uc3QgT1ZFUlJJREU7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgd3JpdGVKU09OKFN0cmluZ0J1aWxk
ZXIqIG91dHB1dCkgY29uc3QgT1ZFUlJJREU7Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgSW5z
cGVjdG9yU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpIDogSW5zcGVjdG9yVmFsdWUoVHlwZVN0
cmluZyksIG1fc3RyaW5nVmFsdWUodmFsdWUpIHsgfQotICAgIGV4cGxpY2l0IEluc3BlY3RvclN0
cmluZyhjb25zdCBjaGFyKiB2YWx1ZSkgOiBJbnNwZWN0b3JWYWx1ZShUeXBlU3RyaW5nKSwgbV9z
dHJpbmdWYWx1ZSh2YWx1ZSkgeyB9Ci0KLSAgICBTdHJpbmcgbV9zdHJpbmdWYWx1ZTsKLX07Ci0K
LWNsYXNzIEluc3BlY3Rvck9iamVjdEJhc2UgOiBwdWJsaWMgSW5zcGVjdG9yVmFsdWUgewotcHJp
dmF0ZToKLSAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+
PiBEaWN0aW9uYXJ5OwotCi1wdWJsaWM6Ci0gICAgdHlwZWRlZiBEaWN0aW9uYXJ5OjppdGVyYXRv
ciBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIERpY3Rpb25hcnk6OmNvbnN0X2l0ZXJhdG9yIGNvbnN0
X2l0ZXJhdG9yOwotCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYXNP
YmplY3QoKSBPVkVSUklERTsKLSAgICBJbnNwZWN0b3JPYmplY3QqIG9wZW5BY2Nlc3NvcnMoKTsK
LQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgfkluc3BlY3Rvck9iamVjdEJhc2UoKTsKLQotICAg
IHZpcnR1YWwgYm9vbCBhc09iamVjdChSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0cHV0KSBP
VkVSUklERTsKLQotICAgIHZvaWQgc2V0Qm9vbGVhbihjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wp
OwotICAgIHZvaWQgc2V0TnVtYmVyKGNvbnN0IFN0cmluZyYgbmFtZSwgZG91YmxlKTsKLSAgICB2
b2lkIHNldFN0cmluZyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYpOwotICAgIHZv
aWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVl
Pik7Ci0gICAgdm9pZCBzZXRPYmplY3QoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4pOwotICAgIHZvaWQgc2V0QXJyYXkoY29uc3QgU3RyaW5nJiBuYW1lLCBQ
YXNzUmVmUHRyPEluc3BlY3RvckFycmF5Pik7Ci0KLSAgICBpdGVyYXRvciBmaW5kKGNvbnN0IFN0
cmluZyYgbmFtZSk7Ci0gICAgY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBTdHJpbmcmIG5hbWUp
IGNvbnN0OwotICAgIGJvb2wgZ2V0Qm9vbGVhbihjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIG91
dHB1dCkgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gYm9vbCBnZXROdW1iZXIoY29uc3Qg
U3RyaW5nJiBuYW1lLCBUKiBvdXRwdXQpIGNvbnN0Ci0gICAgewotICAgICAgICBSZWZQdHI8SW5z
cGVjdG9yVmFsdWU+IHZhbHVlID0gZ2V0KG5hbWUpOwotICAgICAgICBpZiAoIXZhbHVlKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gdmFsdWUtPmFzTnVtYmVyKG91
dHB1dCk7Ci0gICAgfQotICAgIGJvb2wgZ2V0U3RyaW5nKGNvbnN0IFN0cmluZyYgbmFtZSwgU3Ry
aW5nKiBvdXRwdXQpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBnZXRP
YmplY3QoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiBnZXRBcnJheShjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0OwotICAgIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yVmFsdWU+IGdldChjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0OwotCi0gICAg
dm9pZCByZW1vdmUoY29uc3QgU3RyaW5nJiBuYW1lKTsKLQotICAgIHZpcnR1YWwgdm9pZCB3cml0
ZUpTT04oU3RyaW5nQnVpbGRlciogb3V0cHV0KSBjb25zdCBPVkVSUklERTsKLQotICAgIGl0ZXJh
dG9yIGJlZ2luKCkgeyByZXR1cm4gbV9kYXRhLmJlZ2luKCk7IH0KLSAgICBpdGVyYXRvciBlbmQo
KSB7IHJldHVybiBtX2RhdGEuZW5kKCk7IH0KLSAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YS5iZWdpbigpOyB9Ci0gICAgY29uc3RfaXRlcmF0b3IgZW5kKCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhLmVuZCgpOyB9Ci0KLSAgICBpbnQgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGF0YS5zaXplKCk7IH0KLQotcHJvdGVjdGVkOgotICAgIEluc3BlY3Rvck9iamVj
dEJhc2UoKTsKLQotcHJpdmF0ZToKLSAgICBEaWN0aW9uYXJ5IG1fZGF0YTsKLSAgICBWZWN0b3I8
U3RyaW5nPiBtX29yZGVyOwotfTsKLQotY2xhc3MgSW5zcGVjdG9yT2JqZWN0IDogcHVibGljIElu
c3BlY3Rvck9iamVjdEJhc2UgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gY3JlYXRlKCk7Ci0KLSAgICB1c2luZyBJbnNwZWN0b3JPYmplY3RCYXNlOjph
c09iamVjdDsKLQotICAgIHVzaW5nIEluc3BlY3Rvck9iamVjdEJhc2U6OnNldEJvb2xlYW47Ci0g
ICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0TnVtYmVyOwotICAgIHVzaW5nIEluc3Bl
Y3Rvck9iamVjdEJhc2U6OnNldFN0cmluZzsKLSAgICB1c2luZyBJbnNwZWN0b3JPYmplY3RCYXNl
OjpzZXRWYWx1ZTsKLSAgICB1c2luZyBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXRPYmplY3Q7Ci0g
ICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0QXJyYXk7Ci0KLSAgICB1c2luZyBJbnNw
ZWN0b3JPYmplY3RCYXNlOjpmaW5kOwotICAgIHVzaW5nIEluc3BlY3Rvck9iamVjdEJhc2U6Omdl
dEJvb2xlYW47Ci0gICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6Z2V0TnVtYmVyOwotICAg
IHVzaW5nIEluc3BlY3Rvck9iamVjdEJhc2U6OmdldFN0cmluZzsKLSAgICB1c2luZyBJbnNwZWN0
b3JPYmplY3RCYXNlOjpnZXRPYmplY3Q7Ci0gICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6
Z2V0QXJyYXk7Ci0gICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6Z2V0OwotCi0gICAgdXNp
bmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6cmVtb3ZlOwotCi0gICAgdXNpbmcgSW5zcGVjdG9yT2Jq
ZWN0QmFzZTo6YmVnaW47Ci0gICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6ZW5kOwotCi0g
ICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6c2l6ZTsKLX07Ci0KLQotY2xhc3MgSW5zcGVj
dG9yQXJyYXlCYXNlIDogcHVibGljIEluc3BlY3RvclZhbHVlIHsKLXB1YmxpYzoKLSAgICB0eXBl
ZGVmIFZlY3RvcjxSZWZQdHI8SW5zcGVjdG9yVmFsdWU+Pjo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0g
ICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEluc3BlY3RvclZhbHVlPj46OmNvbnN0X2l0ZXJhdG9y
IGNvbnN0X2l0ZXJhdG9yOwotCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5
PiBhc0FycmF5KCkgT1ZFUlJJREU7Ci0KLSAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGEuc2l6ZSgpOyB9Ci0KLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5JbnNwZWN0
b3JBcnJheUJhc2UoKTsKLQotICAgIHZpcnR1YWwgYm9vbCBhc0FycmF5KFJlZlB0cjxJbnNwZWN0
b3JBcnJheT4qIG91dHB1dCkgT1ZFUlJJREU7Ci0KLSAgICB2b2lkIHB1c2hCb29sZWFuKGJvb2wp
OwotICAgIHZvaWQgcHVzaEludChpbnQpOwotICAgIHZvaWQgcHVzaE51bWJlcihkb3VibGUpOwot
ICAgIHZvaWQgcHVzaFN0cmluZyhjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHB1c2hWYWx1ZShQ
YXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPik7Ci0gICAgdm9pZCBwdXNoT2JqZWN0KFBhc3NSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0Pik7Ci0gICAgdm9pZCBwdXNoQXJyYXkoUGFzc1JlZlB0cjxJbnNw
ZWN0b3JBcnJheT4pOwotCi0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gZ2V0KHNpemVf
dCBpbmRleCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgd3JpdGVKU09OKFN0cmluZ0J1aWxkZXIqIG91
dHB1dCkgY29uc3QgT1ZFUlJJREU7Ci0KLSAgICBpdGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIG1f
ZGF0YS5iZWdpbigpOyB9Ci0gICAgaXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gbV9kYXRhLmVuZCgp
OyB9Ci0gICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2RhdGEuYmVn
aW4oKTsgfQotICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5l
bmQoKTsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgSW5zcGVjdG9yQXJyYXlCYXNlKCk7Ci0KLXByaXZh
dGU6Ci0gICAgVmVjdG9yPFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4+IG1fZGF0YTsKLX07Ci0KLWNs
YXNzIEluc3BlY3RvckFycmF5IDogcHVibGljIEluc3BlY3RvckFycmF5QmFzZSB7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGNyZWF0ZSgpOwotCi0gICAg
dXNpbmcgSW5zcGVjdG9yQXJyYXlCYXNlOjphc0FycmF5OwotCi0gICAgdXNpbmcgSW5zcGVjdG9y
QXJyYXlCYXNlOjpwdXNoQm9vbGVhbjsKLSAgICB1c2luZyBJbnNwZWN0b3JBcnJheUJhc2U6OnB1
c2hJbnQ7Ci0gICAgdXNpbmcgSW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoTnVtYmVyOwotICAgIHVz
aW5nIEluc3BlY3RvckFycmF5QmFzZTo6cHVzaFN0cmluZzsKLSAgICB1c2luZyBJbnNwZWN0b3JB
cnJheUJhc2U6OnB1c2hWYWx1ZTsKLSAgICB1c2luZyBJbnNwZWN0b3JBcnJheUJhc2U6OnB1c2hP
YmplY3Q7Ci0gICAgdXNpbmcgSW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoQXJyYXk7Ci0KLSAgICB1
c2luZyBJbnNwZWN0b3JBcnJheUJhc2U6OmdldDsKLQotICAgIHVzaW5nIEluc3BlY3RvckFycmF5
QmFzZTo6YmVnaW47Ci0gICAgdXNpbmcgSW5zcGVjdG9yQXJyYXlCYXNlOjplbmQ7Ci19OwotCi0K
LWlubGluZSBJbnNwZWN0b3JPYmplY3RCYXNlOjppdGVyYXRvciBJbnNwZWN0b3JPYmplY3RCYXNl
OjpmaW5kKGNvbnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICByZXR1cm4gbV9kYXRhLmZpbmQobmFt
ZSk7Ci19Ci0KLWlubGluZSBJbnNwZWN0b3JPYmplY3RCYXNlOjpjb25zdF9pdGVyYXRvciBJbnNw
ZWN0b3JPYmplY3RCYXNlOjpmaW5kKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9kYXRhLmZpbmQobmFtZSk7Ci19Ci0KLWlubGluZSB2b2lkIEluc3BlY3Rvck9iamVj
dEJhc2U6OnNldEJvb2xlYW4oY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIHZhbHVlKQotewotICAg
IHNldFZhbHVlKG5hbWUsIEluc3BlY3RvckJhc2ljVmFsdWU6OmNyZWF0ZSh2YWx1ZSkpOwotfQot
Ci1pbmxpbmUgdm9pZCBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXROdW1iZXIoY29uc3QgU3RyaW5n
JiBuYW1lLCBkb3VibGUgdmFsdWUpCi17Ci0gICAgc2V0VmFsdWUobmFtZSwgSW5zcGVjdG9yQmFz
aWNWYWx1ZTo6Y3JlYXRlKHZhbHVlKSk7Ci19Ci0KLWlubGluZSB2b2lkIEluc3BlY3Rvck9iamVj
dEJhc2U6OnNldFN0cmluZyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUp
Ci17Ci0gICAgc2V0VmFsdWUobmFtZSwgSW5zcGVjdG9yU3RyaW5nOjpjcmVhdGUodmFsdWUpKTsK
LX0KLQotaW5saW5lIHZvaWQgSW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0VmFsdWUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSkKLXsKLSAgICBBU1NF
UlQodmFsdWUpOwotICAgIGlmIChtX2RhdGEuc2V0KG5hbWUsIHZhbHVlKS5pc05ld0VudHJ5KQot
ICAgICAgICBtX29yZGVyLmFwcGVuZChuYW1lKTsKLX0KLQotaW5saW5lIHZvaWQgSW5zcGVjdG9y
T2JqZWN0QmFzZTo6c2V0T2JqZWN0KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IHZhbHVlKQotewotICAgIEFTU0VSVCh2YWx1ZSk7Ci0gICAgaWYgKG1fZGF0
YS5zZXQobmFtZSwgdmFsdWUpLmlzTmV3RW50cnkpCi0gICAgICAgIG1fb3JkZXIuYXBwZW5kKG5h
bWUpOwotfQotCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXRBcnJheShjb25z
dCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHZhbHVlKQotewotICAg
IEFTU0VSVCh2YWx1ZSk7Ci0gICAgaWYgKG1fZGF0YS5zZXQobmFtZSwgdmFsdWUpLmlzTmV3RW50
cnkpCi0gICAgICAgIG1fb3JkZXIuYXBwZW5kKG5hbWUpOwotfQotCi1pbmxpbmUgdm9pZCBJbnNw
ZWN0b3JBcnJheUJhc2U6OnB1c2hCb29sZWFuKGJvb2wgdmFsdWUpCi17Ci0gICAgbV9kYXRhLmFw
cGVuZChJbnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUodmFsdWUpKTsKLX0KLQotaW5saW5lIHZv
aWQgSW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoSW50KGludCB2YWx1ZSkKLXsKLSAgICBtX2RhdGEu
YXBwZW5kKEluc3BlY3RvckJhc2ljVmFsdWU6OmNyZWF0ZSh2YWx1ZSkpOwotfQotCi1pbmxpbmUg
dm9pZCBJbnNwZWN0b3JBcnJheUJhc2U6OnB1c2hOdW1iZXIoZG91YmxlIHZhbHVlKQotewotICAg
IG1fZGF0YS5hcHBlbmQoSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKHZhbHVlKSk7Ci19Ci0K
LWlubGluZSB2b2lkIEluc3BlY3RvckFycmF5QmFzZTo6cHVzaFN0cmluZyhjb25zdCBTdHJpbmcm
IHZhbHVlKQotewotICAgIG1fZGF0YS5hcHBlbmQoSW5zcGVjdG9yU3RyaW5nOjpjcmVhdGUodmFs
dWUpKTsKLX0KLQotaW5saW5lIHZvaWQgSW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoVmFsdWUoUGFz
c1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpCi17Ci0gICAgQVNTRVJUKHZhbHVlKTsKLSAg
ICBtX2RhdGEuYXBwZW5kKHZhbHVlKTsKLX0KLQotaW5saW5lIHZvaWQgSW5zcGVjdG9yQXJyYXlC
YXNlOjpwdXNoT2JqZWN0KFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiB2YWx1ZSkKLXsKLSAg
ICBBU1NFUlQodmFsdWUpOwotICAgIG1fZGF0YS5hcHBlbmQodmFsdWUpOwotfQotCi1pbmxpbmUg
dm9pZCBJbnNwZWN0b3JBcnJheUJhc2U6OnB1c2hBcnJheShQYXNzUmVmUHRyPEluc3BlY3RvckFy
cmF5PiB2YWx1ZSkKLXsKLSAgICBBU1NFUlQodmFsdWUpOwotICAgIG1fZGF0YS5hcHBlbmQodmFs
dWUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyAhZGVmaW5lZChJ
bnNwZWN0b3JWYWx1ZXNfaCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JXZWJBZ2VudEJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgJKHJldmlzaW9uIDE2MDQwNCkJKGZyb20gU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaDoxNjA0MDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5X2gKKyNkZWZpbmUgSW5zcGVj
dG9yQWdlbnRSZWdpc3RyeV9oCisKKyNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKKwor
Y2xhc3MgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeSB7CitwdWJsaWM6CisgICAgdm9pZCBhcHBlbmQo
UGFzc093blB0cjxJbnNwZWN0b3JCYXNlQWdlbnQ+KTsKKworICAgIHZvaWQgZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyKik7CisgICAgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgp
OworICAgIHZvaWQgZGlzY2FyZEFnZW50cygpOworCitwcml2YXRlOgorICAgIFZlY3RvcjxPd25Q
dHI8SW5zcGVjdG9yQmFzZUFnZW50Pj4gbV9hZ2VudHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5X2gpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFz
ZS5oCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
V2ViQWdlbnRCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKQEAgLTI0LDI5ICsyNCwyOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVm
IEluc3BlY3RvckFnZW50UmVnaXN0cnlfaAotI2RlZmluZSBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5
X2gKKyNpZm5kZWYgSW5zcGVjdG9yV2ViQWdlbnRCYXNlX2gKKyNkZWZpbmUgSW5zcGVjdG9yV2Vi
QWdlbnRCYXNlX2gKIAotI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgotI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgIklu
c3BlY3RvckZvcndhcmRpbmcuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRC
YXNlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CitjbGFzcyBJbnN0cnVt
ZW50aW5nQWdlbnRzOwogCi1jbGFzcyBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5IHsKLXB1YmxpYzoK
LSAgICB2b2lkIGFwcGVuZChQYXNzT3duUHRyPEluc3BlY3RvckJhc2VBZ2VudD4pOwotCi0gICAg
dm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKTsKLSAgICB2b2lkIHdpbGxEZXN0cm95RnJv
bnRlbmRBbmRCYWNrZW5kKCk7Ci0gICAgdm9pZCBkaXNjYXJkQWdlbnRzKCk7CitjbGFzcyBJbnNw
ZWN0b3JBZ2VudEJhc2UgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudEJhc2Ugewor
cHJvdGVjdGVkOgorICAgIEluc3BlY3RvckFnZW50QmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgICAgIDogSW5zcGVj
dG9yOjpJbnNwZWN0b3JBZ2VudEJhc2UobmFtZSkKKyAgICAgICAgLCBtX2luc3RydW1lbnRpbmdB
Z2VudHMoaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICB7CisgICAgfQogCi1wcml2YXRlOgotICAg
IFZlY3RvcjxPd25QdHI8SW5zcGVjdG9yQmFzZUFnZW50Pj4gbV9hZ2VudHM7CisgICAgSW5zdHJ1
bWVudGluZ0FnZW50cyogbV9pbnN0cnVtZW50aW5nQWdlbnRzOwogfTsKLQorICAgIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yQWdlbnRSZWdp
c3RyeV9oKQorI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvcldlYkFnZW50QmFzZV9oKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQu
Y3BwCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yV29ya2VyQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMyArMzYsMTUgQEAKIAog
I2luY2x1ZGUgIkluc3BlY3RvckZvcndhcmRpbmcuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9u
dGVuZC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1l
bnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxT
Y29wZVByb3h5LmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCit1c2lu
ZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElu
c3BlY3RvcldvcmtlckFnZW50OjpXb3JrZXJGcm9udGVuZENoYW5uZWwgOiBwdWJsaWMgV29ya2Vy
R2xvYmFsU2NvcGVQcm94eTo6UGFnZUluc3BlY3RvciB7CkBAIC0xMDcsNyArMTA5LDcgQEAgUGFz
c093blB0cjxJbnNwZWN0b3JXb3JrZXJBZ2VudD4gSW5zcGVjdAogfQogCiBJbnNwZWN0b3JXb3Jr
ZXJBZ2VudDo6SW5zcGVjdG9yV29ya2VyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cykKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudChBU0NJSUxpdGVyYWwoIldv
cmtlciIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFT
Q0lJTGl0ZXJhbCgiV29ya2VyIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX2VuYWJs
ZWQoZmFsc2UpCiAgICAgLCBtX3Nob3VsZFBhdXNlRGVkaWNhdGVkV29ya2VyT25TdGFydChmYWxz
ZSkKIHsKQEAgLTExOSw3ICsxMjEsNyBAQCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6fkluc3BlY3Rv
cldvcmtlckFnCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JXb3JrZXJB
Z2VudCgwKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3Bl
Y3RvcldvcmtlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JXb3JrZXJGcm9udGVuZERpc3BhdGNoZXI+
KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcldv
cmtlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50
LmgJKHJldmlzaW9uIDE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JXb3JrZXJBZ2VudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMiArMzEsMTYgQEAKICNpZm5k
ZWYgSW5zcGVjdG9yV29ya2VyQWdlbnRfaAogI2RlZmluZSBJbnNwZWN0b3JXb3JrZXJBZ2VudF9o
CiAKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKLW5h
bWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3MgSW5zcGVjdG9y
T2JqZWN0OworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnNwZWN0b3JXb3JrZXJG
cm9udGVuZERpc3BhdGNoZXI7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgVVJM
OwpAQCAtNDQsMTIgKzQ4LDEyIEBAIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlUHJveHk7CiAKIHR5
cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JXb3JrZXJBZ2VudCA6
IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQsIHB1YmxpYyBJbnNwZWN0b3JXb3JrZXJCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yV29ya2VyQWdlbnQgOiBwdWJsaWMg
SW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yV29ya2VyQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JXb3Jr
ZXJBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqKTsKICAgICB+SW5zcGVjdG9yV29y
a2VyQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVz
dHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURFOwogCiAgICAgLy8gQ2FsbGVkIGZyb20g
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCkBAIC02Myw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgY2FuSW5zcGVjdFdvcmtlcnMoRXJyb3JTdHJpbmcqLCBib29sKik7CiAgICAg
dmlydHVhbCB2b2lkIGNvbm5lY3RUb1dvcmtlcihFcnJvclN0cmluZyosIGludCB3b3JrZXJJZCk7
CiAgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3RGcm9tV29ya2VyKEVycm9yU3RyaW5nKiwgaW50
IHdvcmtlcklkKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb1dvcmtlcihFcnJvclN0
cmluZyosIGludCB3b3JrZXJJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIG1lc3Nh
Z2UpOworICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZVRvV29ya2VyKEVycm9yU3RyaW5nKiwg
aW50IHdvcmtlcklkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBt
ZXNzYWdlKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QXV0b2Nvbm5lY3RUb1dvcmtlcnMoRXJyb3JT
dHJpbmcqLCBib29sIHZhbHVlKTsKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5jcHAJKHJldmlzaW9uIDE2MDQwNCkK
KysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDAsNiArNDAsOCBAQAogI2luY2x1ZGUgIldvcmtlckluc3BlY3RvckNv
bnRyb2xsZXIuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCit1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEluc3RydW1lbnRpbmdBZ2Vu
dHM6Okluc3RydW1lbnRpbmdBZ2VudHMoKQpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCShyZXZpc2lvbiAxNjA0MDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Niw2ICs0Niw4IEBAIHN0YXRpYyBzaXplX3QgbWF4aW11bVJlc291cmNlc0Nv
bnRlbnRTaXoKIHN0YXRpYyBzaXplX3QgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUg
PSAxMCAqIDEwMDAgKiAxMDAwOwogfQogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIApJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Bh
Z2VDb25zb2xlQWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9QYWdlQ29uc29sZUFnZW50LmNwcAkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3
ICs0MCw4IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JET01BZ2VudC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3Qu
aCIKKwordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC02Niw3ICs2Nyw3IEBAIHZvaWQgUGFnZUNvbnNvbGVBZ2VudDo6Y2xlYXJNZXNzYWdlcyhF
cnIKIGNsYXNzIEluc3BlY3RhYmxlTm9kZSA6IHB1YmxpYyBJbmplY3RlZFNjcmlwdEhvc3Q6Oklu
c3BlY3RhYmxlT2JqZWN0IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBJbnNwZWN0YWJsZU5vZGUo
Tm9kZSogbm9kZSkgOiBtX25vZGUobm9kZSkgeyB9Ci0gICAgdmlydHVhbCBTY3JpcHRWYWx1ZSBn
ZXQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlKQorICAgIHZpcnR1YWwgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUgZ2V0KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBJ
bmplY3RlZFNjcmlwdEhvc3Q6Om5vZGVBc1NjcmlwdFZhbHVlKHN0YXRlLCBtX25vZGUpOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50
LmNwcAkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VE
ZWJ1Z2dlckFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsOCBAQAogI2luY2x1
ZGUgIlBhZ2VDb25zb2xlLmgiCiAjaW5jbHVkZSAiUGFnZVNjcmlwdERlYnVnU2VydmVyLmgiCiAK
K3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFz
c093blB0cjxQYWdlRGVidWdnZXJBZ2VudD4gUGFnZURlYnVnZ2VyQWdlbnQ6OmNyZWF0ZShJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQq
IHBhZ2VBZ2VudCwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIs
IEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvUGFnZURlYnVnZ2VyQWdlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuaAkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDYgKzMyLDcgQEAKICNkZWZpbmUgUGFnZURlYnVnZ2VyQWdlbnRfaAogCiAjaWYgRU5BQkxFKEpB
VkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRShJTlNQRUNUT1IpCisKICNpbmNsdWRlICJJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAiUGFnZVNjcmlwdERlYnVnU2VydmVyLmgi
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5j
cHAJKHJldmlzaW9uIDE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVu
dGltZUFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsOSBAQAogI2luY2x1ZGUg
IlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogCi11c2lu
ZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dERlc2NyaXB0
aW9uOwordXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6RXhlY3V0aW9uQ29u
dGV4dERlc2NyaXB0aW9uOworCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTYzLDcgKzY1LDcgQEAgUGFnZVJ1bnRpbWVBZ2VudDo6flBhZ2VS
dW50aW1lQWdlbnQoKQogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0UGFnZVJ1bnRpbWVB
Z2VudCgwKTsKIH0KIAotdm9pZCBQYWdlUnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgUGFnZVJ1bnRp
bWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yUnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRl
bmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yUnVudGltZUJh
Y2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oCShyZXZpc2lvbiAx
NjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBQYWdlUnVudGltZUFnZW50KGluc3RydW1lbnRpbmdBZ2VudHMsIGluamVjdGVk
U2NyaXB0TWFuYWdlciwgcGFnZSwgcGFnZUFnZW50KSk7CiAgICAgfQogICAgIHZpcnR1YWwgflBh
Z2VSdW50aW1lQWdlbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
ZW5hYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJp
bmcqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMu
Y3BwCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0
QXJndW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTYgKzMxLDE2IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2NyaXB0QXJndW1lbnRzLmgiCiAKLSNpbmNsdWRlICJT
Y3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IFNjcmlwdEFyZ3Vt
ZW50czo6Y3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgVmVjdG9yPFNjcmlwdFZh
bHVlPiYgYXJndW1lbnRzKQorUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IFNjcmlwdEFyZ3Vt
ZW50czo6Y3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgVmVjdG9yPERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlPiYgYXJndW1lbnRzKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U2NyaXB0QXJndW1lbnRzKHNjcmlwdFN0YXRlLCBhcmd1bWVudHMpKTsKIH0KIAotU2NyaXB0QXJn
dW1lbnRzOjpTY3JpcHRBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBWZWN0
b3I8U2NyaXB0VmFsdWU+JiBhcmd1bWVudHMpCitTY3JpcHRBcmd1bWVudHM6OlNjcmlwdEFyZ3Vt
ZW50cyhKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIFZlY3RvcjxEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZT4mIGFyZ3VtZW50cykKICAgICA6IG1fZ2xvYmFsT2JqZWN0KHNjcmlwdFN0YXRlLT52
bSgpLCBzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKQogewogICAgIG1fYXJndW1l
bnRzLnN3YXAoYXJndW1lbnRzKTsKQEAgLTUwLDcgKzUwLDcgQEAgU2NyaXB0QXJndW1lbnRzOjp+
U2NyaXB0QXJndW1lbnRzKCkKIHsKIH0KIAotY29uc3QgU2NyaXB0VmFsdWUgJlNjcmlwdEFyZ3Vt
ZW50czo6YXJndW1lbnRBdChzaXplX3QgaW5kZXgpIGNvbnN0Citjb25zdCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSAmU2NyaXB0QXJndW1lbnRzOjphcmd1bWVudEF0KHNpemVfdCBpbmRleCkgY29u
c3QKIHsKICAgICBBU1NFUlQobV9hcmd1bWVudHMuc2l6ZSgpID4gaW5kZXgpOwogICAgIHJldHVy
biBtX2FyZ3VtZW50c1tpbmRleF07CkBAIC02OCw3ICs2OCw3IEBAIGJvb2wgU2NyaXB0QXJndW1l
bnRzOjpnZXRGaXJzdEFyZ3VtZW50QXMKICAgICBpZiAoIWFyZ3VtZW50Q291bnQoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVlID0gYXJndW1l
bnRBdCgwKTsKKyAgICBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUgPSBhcmd1
bWVudEF0KDApOwogICAgIGlmIChjaGVja0Zvck51bGxPclVuZGVmaW5lZCAmJiAodmFsdWUuaXNO
dWxsKCkgfHwgdmFsdWUuaXNVbmRlZmluZWQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaAkocmV2aXNp
b24gMTYwNDA0KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICsxLDEwIEBACiAvKgogICogQ29weXJpZ2h0IChjKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKKyAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKICAqIG1ldDoKLSAqIAorICoKICAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCiAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCkBAIC0xNCw3ICsxNCw3IEBACiAgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCiAgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQog
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqIAorICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKICAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCiAgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
QEAgLTM3LDYgKzM3LDEwIEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgRGVwcmVjYXRlZCB7CitjbGFzcyBTY3Jp
cHRWYWx1ZTsKK30KKwogbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBK
U0dsb2JhbE9iamVjdDsKQEAgLTQ0LDE1ICs0OCwxMyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdDsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTY3JpcHRWYWx1ZTsKLQogY2xhc3MgU2Ny
aXB0QXJndW1lbnRzIDogcHVibGljIFJlZkNvdW50ZWQ8U2NyaXB0QXJndW1lbnRzPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBjcmVhdGUoSlNDOjpF
eGVjU3RhdGUqLCBWZWN0b3I8U2NyaXB0VmFsdWU+JiBhcmd1bWVudHMpOworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiwgVmVjdG9y
PERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlPiYgYXJndW1lbnRzKTsKIAogICAgIH5TY3JpcHRBcmd1
bWVudHMoKTsKIAotICAgIGNvbnN0IFNjcmlwdFZhbHVlJiBhcmd1bWVudEF0KHNpemVfdCkgY29u
c3Q7CisgICAgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGFyZ3VtZW50QXQoc2l6ZV90
KSBjb25zdDsKICAgICBzaXplX3QgYXJndW1lbnRDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJn
dW1lbnRzLnNpemUoKTsgfQogCiAgICAgSlNDOjpFeGVjU3RhdGUqIGdsb2JhbFN0YXRlKCkgY29u
c3Q7CkBAIC02MSwxMCArNjMsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaXNFcXVhbChTY3JpcHRB
cmd1bWVudHMqKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBTY3JpcHRBcmd1bWVudHMoSlNDOjpF
eGVjU3RhdGUqLCBWZWN0b3I8U2NyaXB0VmFsdWU+JiBhcmd1bWVudHMpOworICAgIFNjcmlwdEFy
Z3VtZW50cyhKU0M6OkV4ZWNTdGF0ZSosIFZlY3RvcjxEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZT4m
IGFyZ3VtZW50cyk7CiAKICAgICBKU0M6OlN0cm9uZzxKU0M6OkpTR2xvYmFsT2JqZWN0PiBtX2ds
b2JhbE9iamVjdDsKLSAgICBWZWN0b3I8U2NyaXB0VmFsdWU+IG1fYXJndW1lbnRzOworICAgIFZl
Y3RvcjxEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZT4gbV9hcmd1bWVudHM7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2Fs
bEZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0
Q2FsbEZyYW1lLmNwcAkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1NjcmlwdENhbGxGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDkgKzMyLDExIEBA
CiAjaW5jbHVkZSAiU2NyaXB0Q2FsbEZyYW1lLmgiCiAKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9u
dGVuZC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgorI2luY2x1ZGUgPGluc3BlY3Rv
ci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKK3VzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2NyaXB0Q2FsbEZy
YW1lOjpTY3JpcHRDYWxsRnJhbWUoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0
cmluZyYgc2NyaXB0TmFtZSwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uKQpA
QCAtNTgsOSArNjAsOSBAQCBib29sIFNjcmlwdENhbGxGcmFtZTo6aXNFcXVhbChjb25zdCBTY3Jp
CiB9CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q29u
c29sZTo6Q2FsbEZyYW1lPiBTY3JpcHRDYWxsRnJhbWU6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0KCkg
Y29uc3QKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q2FsbEZy
YW1lPiBTY3JpcHRDYWxsRnJhbWU6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0KCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNhbGxGcmFtZTo6Y3JlYXRlKCkKKyAgICBy
ZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q2FsbEZyYW1lOjpjcmVhdGUo
KQogICAgICAgICAuc2V0RnVuY3Rpb25OYW1lKG1fZnVuY3Rpb25OYW1lKQogICAgICAgICAuc2V0
VXJsKG1fc2NyaXB0TmFtZSkKICAgICAgICAgLnNldExpbmVOdW1iZXIobV9saW5lTnVtYmVyKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuaAkocmV2aXNp
b24gMTYwNDA0KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxNSArMzIsMTcgQEAKICNkZWZpbmUgU2NyaXB0Q2FsbEZy
YW1lX2gKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0jaW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1
aWxkZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCIKICNlbmRpZgog
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIGNsYXNz
IEluc3BlY3Rvck9iamVjdDsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTY3Jp
cHRDYWxsRnJhbWUgIHsKIHB1YmxpYzoKQEAgLTU1LDcgKzU3LDcgQEAgcHVibGljOgogICAgIGJv
b2wgaXNFcXVhbChjb25zdCBTY3JpcHRDYWxsRnJhbWUmKSBjb25zdDsKIAogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCi0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q2FsbEZyYW1l
PiBidWlsZEluc3BlY3Rvck9iamVjdCgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q2FsbEZyYW1lPiBidWlsZEluc3BlY3Rvck9iamVjdCgp
IGNvbnN0OwogI2VuZGlmCiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcAkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDggKzMxLDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0
YWNrLmgiCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgotI2luY2x1ZGUgIklu
c3BlY3RvclZhbHVlcy5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIgor
I2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KKwordXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03OSw5ICs4MSw5IEBAIGJv
b2wgU2NyaXB0Q2FsbFN0YWNrOjppc0VxdWFsKFNjcmlwdENhbGwKIH0KIAogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q29u
c29sZTo6Q2FsbEZyYW1lPj4gU2NyaXB0Q2FsbFN0YWNrOjpidWlsZEluc3BlY3RvckFycmF5KCkg
Y29uc3QKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q2FsbEZyYW1lPj4gU2NyaXB0Q2FsbFN0YWNrOjpidWls
ZEluc3BlY3RvckFycmF5KCkgY29uc3QKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5
PFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDYWxsRnJhbWU+PiBmcmFtZXMgPSBUeXBlQnVpbGRlcjo6
QXJyYXk8VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNhbGxGcmFtZT46OmNyZWF0ZSgpOworICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDb25zb2xlOjpDYWxsRnJhbWU+PiBmcmFtZXMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpB
cnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDYWxsRnJhbWU+OjpjcmVhdGUo
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnJhbWVzLnNpemUoKTsgaSsrKQogICAg
ICAgICBmcmFtZXMtPmFkZEl0ZW0obV9mcmFtZXMuYXQoaSkuYnVpbGRJbnNwZWN0b3JPYmplY3Qo
KSk7CiAgICAgcmV0dXJuIGZyYW1lczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9T
Y3JpcHRDYWxsU3RhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
U2NyaXB0Q2FsbFN0YWNrLmgJKHJldmlzaW9uIDE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBA
QAogI2RlZmluZSBTY3JpcHRDYWxsU3RhY2tfaAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSNp
bmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYlR5
cGVCdWlsZGVycy5oIgogI2VuZGlmCiAKICNpbmNsdWRlICJTY3JpcHRDYWxsRnJhbWUuaCIKQEAg
LTQyLDggKzQyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbnNwZWN0b3JB
cnJheTsKLQogY2xhc3MgU2NyaXB0Q2FsbFN0YWNrIDogcHVibGljIFJlZkNvdW50ZWQ8U2NyaXB0
Q2FsbFN0YWNrPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhDYWxsU3Rh
Y2tTaXplVG9DYXB0dXJlID0gMjAwOwpAQCAtNTgsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc0VxdWFsKFNjcmlwdENhbGxTdGFjayopIGNvbnN0OwogCiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q29uc29s
ZTo6Q2FsbEZyYW1lPj4gYnVpbGRJbnNwZWN0b3JBcnJheSgpIGNvbnN0OworICAgIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q29uc29sZTo6Q2FsbEZyYW1lPj4gYnVpbGRJbnNwZWN0b3JBcnJheSgpIGNvbnN0OwogI2VuZGlm
CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdM
aXN0ZW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRE
ZWJ1Z0xpc3RlbmVyLmgJKHJldmlzaW9uIDE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDEx
IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIERlcHJlY2F0ZWQgewogY2xh
c3MgU2NyaXB0VmFsdWU7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2NyaXB0
RGVidWdMaXN0ZW5lciB7CiBwdWJsaWM6CkBAIC02OCw3ICs3MSw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCBkaWRQYXJzZVNvdXJjZShTb3VyY2VJRCwgY29uc3QgU2NyaXB0JikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBmYWlsZWRUb1BhcnNlU291cmNlKGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIGRhdGEsIGludCBmaXJzdExpbmUsIGludCBlcnJvckxpbmUsIGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKEpT
Qzo6RXhlY1N0YXRlKiwgY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNvbnN0IFNjcmlw
dFZhbHVlJiBleGNlcHRpb24pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2UoSlNDOjpF
eGVjU3RhdGUqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywgY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGV4Y2VwdGlvbikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRDb250aW51ZSgpID0gMDsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwCShyZXZpc2lvbiAxNjA0MDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzYsMTUgKzM2LDE3IEBACiAKICNpbmNsdWRlICJFdmVudC5oIgog
I2luY2x1ZGUgIkZsb2F0UXVhZC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2lu
Y2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUg
IlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCIK
KyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL0N1
cnJlbnRUaW1lLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFj
dG9yeTo6Y3JlYXRlR2VuZXJpY1JlY29yZChkb3VibGUgc3RhcnRUaW1lLCBpbnQgbWF4Q2FsbFN0
YWNrRGVwdGgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRG
YWN0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5l
UmVjb3JkRmFjdG9yeS5oCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDkgKzMx
LDggQEAKICNpZm5kZWYgVGltZWxpbmVSZWNvcmRGYWN0b3J5X2gKICNkZWZpbmUgVGltZWxpbmVS
ZWNvcmRGYWN0b3J5X2gKIAotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUg
IlVSTC5oIgotI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5z
cGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDEsNjQgKzQwLDYyIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgIGNsYXNzIEV2ZW50OwogICAgIGNsYXNzIEZsb2F0UXVhZDsKLSAgICBjbGFzcyBJ
bnNwZWN0b3JPYmplY3Q7Ci0gICAgY2xhc3MgSW50UmVjdDsKICAgICBjbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIAogICAgIGNsYXNzIFRpbWVsaW5l
UmVjb3JkRmFjdG9yeSB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUdlbmVyaWNSZWNvcmQoZG91YmxlIHN0YXJ0VGltZSwgaW50
IG1heENhbGxTdGFja0RlcHRoKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBjcmVhdGVCYWNrZ3JvdW5kUmVjb3JkKGRvdWJsZSBzdGFydFRpbWUsIGNvbnN0IFN0
cmluZyYgdGhyZWFkKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+IGNyZWF0ZUdlbmVyaWNSZWNvcmQoZG91YmxlIHN0YXJ0VGltZSwgaW50IG1h
eENhbGxTdGFja0RlcHRoKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUJhY2tncm91bmRSZWNvcmQoZG91YmxlIHN0YXJ0VGltZSwg
Y29uc3QgU3RyaW5nJiB0aHJlYWQpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gY3JlYXRlR0NFdmVudERhdGEoY29uc3Qgc2l6ZV90IHVzZWRIZWFwU2l6ZURl
bHRhKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q+IGNyZWF0ZUdDRXZlbnREYXRhKGNvbnN0IHNpemVfdCB1c2VkSGVhcFNpemVEZWx0YSk7CiAK
LSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVGdW5jdGlv
bkNhbGxEYXRhKGNvbnN0IFN0cmluZyYgc2NyaXB0TmFtZSwgaW50IHNjcmlwdExpbmUpOworICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRl
RnVuY3Rpb25DYWxsRGF0YShjb25zdCBTdHJpbmcmIHNjcmlwdE5hbWUsIGludCBzY3JpcHRMaW5l
KTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUV2
ZW50RGlzcGF0Y2hEYXRhKGNvbnN0IEV2ZW50Jik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVFdmVudERpc3BhdGNoRGF0YShjb25z
dCBFdmVudCYpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
Y3JlYXRlR2VuZXJpY1RpbWVyRGF0YShpbnQgdGltZXJJZCk7CisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVHZW5lcmljVGltZXJEYXRh
KGludCB0aW1lcklkKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGNyZWF0ZVRpbWVySW5zdGFsbERhdGEoaW50IHRpbWVySWQsIGludCB0aW1lb3V0LCBib29s
IHNpbmdsZVNob3QpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdD4gY3JlYXRlVGltZXJJbnN0YWxsRGF0YShpbnQgdGltZXJJZCwgaW50IHRpbWVv
dXQsIGJvb2wgc2luZ2xlU2hvdCk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBjcmVhdGVYSFJSZWFkeVN0YXRlQ2hhbmdlRGF0YShjb25zdCBTdHJpbmcmIHVy
bCwgaW50IHJlYWR5U3RhdGUpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlWEhSUmVhZHlTdGF0ZUNoYW5nZURhdGEoY29uc3QgU3Ry
aW5nJiB1cmwsIGludCByZWFkeVN0YXRlKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVhIUkxvYWREYXRhKGNvbnN0IFN0cmluZyYgdXJsKTsKKyAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0
ZVhIUkxvYWREYXRhKGNvbnN0IFN0cmluZyYgdXJsKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUV2YWx1YXRlU2NyaXB0RGF0YShjb25zdCBTdHJp
bmcmLCBkb3VibGUgbGluZU51bWJlcik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVFdmFsdWF0ZVNjcmlwdERhdGEoY29uc3QgU3Ry
aW5nJiwgZG91YmxlIGxpbmVOdW1iZXIpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gY3JlYXRlVGltZVN0YW1wRGF0YShjb25zdCBTdHJpbmcmKTsKKyAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVRp
bWVTdGFtcERhdGEoY29uc3QgU3RyaW5nJik7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVSZXNvdXJjZVNlbmRSZXF1ZXN0RGF0YShjb25zdCBTdHJp
bmcmIHJlcXVlc3RJZCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVSZXNvdXJjZVNlbmRS
ZXF1ZXN0RGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
Jik7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVT
Y2hlZHVsZVJlc291cmNlUmVxdWVzdERhdGEoY29uc3QgU3RyaW5nJik7CisgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVTY2hlZHVsZVJl
c291cmNlUmVxdWVzdERhdGEoY29uc3QgU3RyaW5nJik7CiAKLSAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVSZXNvdXJjZVJlY2VpdmVSZXNwb25zZURhdGEo
Y29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVJl
c291cmNlUmVjZWl2ZVJlc3BvbnNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gY3JlYXRlUmVjZWl2ZVJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCwgaW50IGxlbmd0aCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiBjcmVhdGVSZWNlaXZlUmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBpbnQgbGVuZ3RoKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IGNyZWF0ZVJlc291cmNlRmluaXNoRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCwgYm9vbCBkaWRGYWlsLCBkb3VibGUgZmluaXNoVGltZSk7CisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVSZXNvdXJjZUZpbmlzaERh
dGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGJvb2wgZGlkRmFpbCwgZG91YmxlIGZpbmlzaFRp
bWUpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRl
TGF5b3V0RGF0YSh1bnNpZ25lZCBkaXJ0eU9iamVjdHMsIHVuc2lnbmVkIHRvdGFsT2JqZWN0cywg
Ym9vbCBwYXJ0aWFsTGF5b3V0KTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUxheW91dERhdGEodW5zaWduZWQgZGlydHlPYmplY3Rz
LCB1bnNpZ25lZCB0b3RhbE9iamVjdHMsIGJvb2wgcGFydGlhbExheW91dCk7CiAKLSAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVEZWNvZGVJbWFnZURhdGEo
Y29uc3QgU3RyaW5nJiBpbWFnZVR5cGUpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlRGVjb2RlSW1hZ2VEYXRhKGNvbnN0IFN0cmlu
ZyYgaW1hZ2VUeXBlKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGNyZWF0ZVJlc2l6ZUltYWdlRGF0YShib29sIHNob3VsZENhY2hlKTsKKyAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVJlc2l6ZUlt
YWdlRGF0YShib29sIHNob3VsZENhY2hlKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGNyZWF0ZU1hcmtEYXRhKGJvb2wgaXNNYWluRnJhbWUpOworICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlTWFy
a0RhdGEoYm9vbCBpc01haW5GcmFtZSk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBjcmVhdGVQYXJzZUhUTUxEYXRhKHVuc2lnbmVkIHN0YXJ0TGluZSk7Cisg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVh
dGVQYXJzZUhUTUxEYXRhKHVuc2lnbmVkIHN0YXJ0TGluZSk7CiAKLSAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVBbmltYXRpb25GcmFtZURhdGEoaW50IGNh
bGxiYWNrSWQpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4gY3JlYXRlQW5pbWF0aW9uRnJhbWVEYXRhKGludCBjYWxsYmFja0lkKTsKIAotICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVBhaW50RGF0YShj
b25zdCBGbG9hdFF1YWQmKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVBhaW50RGF0YShjb25zdCBGbG9hdFF1YWQmKTsKIAotICAg
ICAgICBzdGF0aWMgdm9pZCBhcHBlbmRMYXlvdXRSb290KEluc3BlY3Rvck9iamVjdCogZGF0YSwg
Y29uc3QgRmxvYXRRdWFkJik7CisgICAgICAgIHN0YXRpYyB2b2lkIGFwcGVuZExheW91dFJvb3Qo
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIGRhdGEsIGNvbnN0IEZsb2F0UXVhZCYpOwogCiAj
aWYgRU5BQkxFKFdFQl9TT0NLRVRTKQotICAgICAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVXZWJTb2NrZXRDcmVhdGVEYXRhKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCisgICAg
ICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4g
Y3JlYXRlV2ViU29ja2V0Q3JlYXRlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUo
KTsKKyAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gZGF0YSA9
IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGRhdGEt
PnNldE51bWJlcigiaWRlbnRpZmllciIsIGlkZW50aWZpZXIpOwogICAgICAgICAgICAgZGF0YS0+
c2V0U3RyaW5nKCJ1cmwiLCB1cmwuc3RyaW5nKCkpOwogICAgICAgICAgICAgaWYgKCFwcm90b2Nv
bC5pc051bGwoKSkKQEAgLTEwNiw5ICsxMDMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgICAgICByZXR1cm4gZGF0YS5yZWxlYXNlKCk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0
aWMgaW5saW5lIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVHZW5lcmljV2ViU29j
a2V0RGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCisgICAgICAgIHN0YXRpYyBpbmxpbmUg
UGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlR2VuZXJpY1dlYlNv
Y2tldERhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUo
KTsKKyAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gZGF0YSA9
IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGRhdGEt
PnNldE51bWJlcigiaWRlbnRpZmllciIsIGlkZW50aWZpZXIpOwogICAgICAgICAgICAgcmV0dXJu
IGRhdGEucmVsZWFzZSgpOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvV29ya2VyQ29uc29sZUFnZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50LmNwcAkocmV2aXNpb24gMTYwNDA0KQorKysgU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckNvbnNvbGVBZ2VudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDYgKzM0LDggQEAKIAogI2luY2x1ZGUgIldvcmtlckNvbnNvbGVBZ2VudC5oIgog
Cit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdv
cmtlckNvbnNvbGVBZ2VudDo6V29ya2VyQ29uc29sZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKQpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2Vy
QWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJE
ZWJ1Z2dlckFnZW50LmNwcAkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICsz
OCw4IEBACiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8d3RmL01lc3NhZ2VR
dWV1ZS5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIG5hbWVzcGFjZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2Vy
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxNjA0MDQpCisr
KyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUxLDggKzUxLDExIEBACiAjaW5jbHVkZSAiV29ya2VyUmVwb3J0
aW5nUHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJSdW50aW1lQWdlbnQuaCIKICNpbmNsdWRlICJX
b3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCit1c2luZyBuYW1lc3BhY2Ug
SW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyLmgJKHJldmlzaW9uIDE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE5ICszMywyMSBA
QAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvckFnZW50UmVn
aXN0cnkuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JXZWJBZ2VudEJhc2UuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRS
ZWdpc3RyeS5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCituYW1lc3BhY2UgSW5zcGVjdG9yIHsK
K2NsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOworfQorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKLWNsYXNzIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOwotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogY2xhc3MgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOwogY2xhc3MgSW5zcGVjdG9yUnVudGltZUFnZW50OwogY2xh
c3MgSW5zdHJ1bWVudGluZ0FnZW50czsKQEAgLTcyLDkgKzc0LDkgQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8SW5zdHJ1bWVudGluZ0FnZW50cz4gbV9pbnN0cnVtZW50aW5nQWdlbnRzOwogICAgIE93
blB0cjxJbmplY3RlZFNjcmlwdE1hbmFnZXI+IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogICAg
IEluc3BlY3RvclJ1bnRpbWVBZ2VudCogbV9ydW50aW1lQWdlbnQ7Ci0gICAgSW5zcGVjdG9yQWdl
bnRSZWdpc3RyeSBtX2FnZW50czsKKyAgICBJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50UmVnaXN0
cnkgbV9hZ2VudHM7CiAgICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbD4gbV9mcm9u
dGVuZENoYW5uZWw7Ci0gICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2Jh
Y2tlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogfTsKIAogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAJKHJldmlzaW9uIDE2
MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw4IEBACiAjaW5jbHVkZSAiV29ya2VyUnVuTG9v
cC5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdvcmtlclJ1bnRpbWVBZ2VudDo6V29ya2Vy
UnVudGltZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIElu
amVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBXb3JrZXJHbG9iYWxT
Y29wZSogd29ya2VyR2xvYmFsU2NvcGUpCkBAIC01Nyw3ICs1OSw3IEBAIFdvcmtlclJ1bnRpbWVB
Z2VudDo6fldvcmtlclJ1bnRpbWVBZ2VudCgKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNl
dFdvcmtlclJ1bnRpbWVBZ2VudCgwKTsKIH0KIAotdm9pZCBXb3JrZXJSdW50aW1lQWdlbnQ6OmRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIFdvcmtlclJ1
bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmRE
aXNwYXRjaGVyKQogewogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JSdW50aW1l
QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oCShy
ZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGlt
ZUFnZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIH0K
ICAgICB2aXJ0dWFsIH5Xb3JrZXJSdW50aW1lQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIE9WRVJSSURF
OwogCiAgICAgLy8gUHJvdG9jb2wgY29tbWFuZHMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L0NvbnNvbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5j
cHAJKHJldmlzaW9uIDE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3LDkgKzQ3LDkgQEAKICNpbmNsdWRlICJTY3JpcHRDYWxsU3Rh
Y2tGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZS5oIgogI2luY2x1ZGUgIlNjcmlw
dFByb2ZpbGVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTY3JpcHRh
YmxlRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgPGJp
bmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCShyZXZpc2lv
biAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJGb3JtRGF0YUxp
c3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIlVSTC5oIgog
I2luY2x1ZGUgIlBpbmdMb2FkZXIuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmgiCkBAIC00NiwxMCArNDUsMTMgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2lu
Y2x1ZGUgIlNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQuaCIKICNpbmNsdWRlICJUZXh0RW5j
b2RpbmcuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3Rv
cjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBOb3JtYWxseSBXZWJLaXQgdXNlcyAic3Rh
dGljIiBmb3IgaW50ZXJuYWwgbGlua2FnZSwgYnV0IHVzaW5nICJzdGF0aWMiIGZvcgpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5jcHAJKHJldmlzaW9uIDE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw2IEBACiAjaW5jbHVkZSAi
U1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN0
eWxlUHJvcGVydGllcy5oIgpAQCAtMTA0LDYgKzEwMyw3IEBACiAjaW5jbHVkZSAibWFya3VwLmgi
CiAjaW5jbHVkZSAibnBydW50aW1lX2ltcGwuaCIKICNpbmNsdWRlICJydW50aW1lX3Jvb3QuaCIK
KyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNv
bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGUuY3Bw
CShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDIsOSArNDIsOSBAQAogI2luY2x1ZGUgIlNjcmlwdEFyZ3Vt
ZW50cy5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlNjcmlwdENh
bGxTdGFja0ZhY3RvcnkuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNj
cmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVk
ZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkocmV2aXNpb24gMTYwNDA0KQor
KysgU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjEsNyArNjEsNiBAQAogI2luY2x1ZGUgIlJlbmRlckJveC5oIgogI2luY2x1ZGUgIlJlbmRl
ck9iamVjdC5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJTY3Jp
cHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgpAQCAtNjksNiArNjgsNyBA
QAogI2luY2x1ZGUgImNfaW5zdGFuY2UuaCIKICNpbmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgog
I2luY2x1ZGUgInJ1bnRpbWVfcm9vdC5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVl
Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9K
U0xvY2suaD4KICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgpAQCAtNDY3LDcgKzQ2Nyw3IEBA
IHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QoUGx1Z2luUmUKICAgICAKICAgICAvLyBF
eGVjdXRpbmcgYSBzY3JpcHQgY2FuIGNhdXNlIHRoZSBwbHVnaW4gdmlldyB0byBiZSBkZXN0cm95
ZWQsIHNvIHdlIGtlZXAgYSByZWZlcmVuY2UgdG8gaXQuCiAgICAgUmVmUHRyPFBsdWdpblZpZXc+
IHByb3RlY3Rvcih0aGlzKTsKLSAgICBTY3JpcHRWYWx1ZSByZXN1bHQgPSBtX3BhcmVudEZyYW1l
LT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KGpzU3RyaW5nLCByZXF1ZXN0LT5zaG91bGRBbGxvd1Bv
cHVwcygpKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSByZXN1bHQgPSBtX3BhcmVudEZy
YW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KGpzU3RyaW5nLCByZXF1ZXN0LT5zaG91bGRBbGxv
d1BvcHVwcygpKTsKIAogICAgIGlmICh0YXJnZXRGcmFtZU5hbWUuaXNOdWxsKCkpIHsKICAgICAg
ICAgU3RyaW5nIHJlc3VsdFN0cmluZzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAJKHJldmlzaW9uIDE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNiBAQAogI2luY2x1ZGUgIkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaCIKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5LmgiCi0jaW5jbHVkZSAiSW5zcGVj
dG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUg
IkludGVybmFsU2V0dGluZ3MuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC05Niw2ICs5NSw3
IEBACiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJl
YWQuaCIKICNpbmNsdWRlIDxieXRlY29kZS9Db2RlQmxvY2suaD4KKyNpbmNsdWRlIDxpbnNwZWN0
b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
ZmZlci5oPgpAQCAtMTY3LDYgKzE2Nyw4IEBAIHVzaW5nIEpTQzo6SlNWYWx1ZTsKIHVzaW5nIEpT
Qzo6U2NyaXB0RXhlY3V0YWJsZTsKIHVzaW5nIEpTQzo6U3RhY2tWaXNpdG9yOwogCit1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CkBAIC0xMjgyLDcgKzEyODQsNyBAQCBwcml2YXRlOgogICAgIENvZGVC
bG9jayogbV9jb2RlQmxvY2s7CiB9OwogCi1TdHJpbmcgSW50ZXJuYWxzOjpwYXJzZXJNZXRhRGF0
YShTY3JpcHRWYWx1ZSB2YWx1ZSkKK1N0cmluZyBJbnRlcm5hbHM6OnBhcnNlck1ldGFEYXRhKERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHZhbHVlKQogewogICAgIEpTQzo6Vk0qIHZtID0gY29udGV4
dERvY3VtZW50KCktPnZtKCk7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB2bS0+dG9wQ2Fs
bEZyYW1lOwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCShyZXZpc2lvbiAxNjA0
MDQpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIu
aCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJOb2Rl
TGlzdC5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvU2Ny
aXB0VmFsdWUuaD4KICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8
cnVudGltZS9GbG9hdDMyQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAt
MTgxLDcgKzE4MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVtaXRJbnNwZWN0b3JEaWRCZWdpbkZy
YW1lKCk7CiAgICAgdm9pZCBlbWl0SW5zcGVjdG9yRGlkQ2FuY2VsRnJhbWUoKTsKIAotICAgIFN0
cmluZyBwYXJzZXJNZXRhRGF0YShTY3JpcHRWYWx1ZSA9IFNjcmlwdFZhbHVlKCkpOworICAgIFN0
cmluZyBwYXJzZXJNZXRhRGF0YShEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSA9IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlKCkpOwogCiAgICAgYm9vbCBoYXNTcGVsbGluZ01hcmtlcihpbnQgZnJvbSwg
aW50IGxlbmd0aCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIGJvb2wgaGFzR3JhbW1hck1hcmtlcihp
bnQgZnJvbSwgaW50IGxlbmd0aCwgRXhjZXB0aW9uQ29kZSYpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvd29ya2Vycy9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAJKHJldmlzaW9u
IDE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyR2xvYmFsU2Nv
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIFBhc3NSZWZQdHI8TWVzc2FnZUV2ZW50PiBjcmVhdGVDb25uZWN0RXZlbnQoUGFzc1JlZlB0
cjxNZXNzYWdlUG9ydD4gcHJwUG9ydCkKIHsKICAgICBSZWZQdHI8TWVzc2FnZVBvcnQ+IHBvcnQg
PSBwcnBQb3J0OwotICAgIFJlZlB0cjxNZXNzYWdlRXZlbnQ+IGV2ZW50ID0gTWVzc2FnZUV2ZW50
OjpjcmVhdGUoYWRvcHRQdHIobmV3IE1lc3NhZ2VQb3J0QXJyYXkoMSwgcG9ydCkpLCBTY3JpcHRW
YWx1ZSgpLCBTdHJpbmcoKSwgU3RyaW5nKCksIHBvcnQpOworICAgIFJlZlB0cjxNZXNzYWdlRXZl
bnQ+IGV2ZW50ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUoYWRvcHRQdHIobmV3IE1lc3NhZ2VQb3J0
QXJyYXkoMSwgcG9ydCkpLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSgpLCBTdHJpbmcoKSwgU3Ry
aW5nKCksIHBvcnQpOwogICAgIGV2ZW50LT5pbml0RXZlbnQoZXZlbnROYW1lcygpLmNvbm5lY3RF
dmVudCwgZmFsc2UsIGZhbHNlKTsKICAgICByZXR1cm4gZXZlbnQucmVsZWFzZSgpOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAJKHJldmlz
aW9uIDE2MDQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRXJyb3JFdmVu
dC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRFeGNlcHRpb24uaCIKKyNp
bmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29uc29sZUluc3Ry
dW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0Lmgi
CkBAIC00NCw3ICs0NSw2IEBACiAjaW5jbHVkZSAiU2NoZWR1bGVkQWN0aW9uLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2lu
Y2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNs
dWRlICJXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyTG9jYXRp
b24uaCIKQEAgLTU0LDE0ICs1NCwxMyBAQAogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2lu
Y2x1ZGUgIldvcmtlclRocmVhZGFibGVMb2FkZXIuaCIKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVz
dEV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShM
RUdBQ1lfTk9USUZJQ0FUSU9OUykKICNpbmNsdWRlICJOb3RpZmljYXRpb25DZW50ZXIuaCIKICNl
bmRpZgogCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENsb3NlV29ya2VyR2xvYmFsU2NvcGVUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2sgewpAQCAtMjQxLDcgKzI0MCw3IEBAIHZvaWQgV29ya2VyR2xvYmFs
U2NvcGU6OmltcG9ydFNjcmlwdHMoY28KIAogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnNjcmlwdEltcG9ydGVkKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgc2NyaXB0TG9hZGVy
LT5pZGVudGlmaWVyKCksIHNjcmlwdExvYWRlci0+c2NyaXB0KCkpOwogCi0gICAgICAgIFNjcmlw
dFZhbHVlIGV4Y2VwdGlvbjsKKyAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZXhjZXB0
aW9uOwogICAgICAgICBtX3NjcmlwdC0+ZXZhbHVhdGUoU2NyaXB0U291cmNlQ29kZShzY3JpcHRM
b2FkZXItPnNjcmlwdCgpLCBzY3JpcHRMb2FkZXItPnJlc3BvbnNlVVJMKCkpLCAmZXhjZXB0aW9u
KTsKICAgICAgICAgaWYgKCFleGNlcHRpb24uaGFzTm9WYWx1ZSgpKSB7CiAgICAgICAgICAgICBt
X3NjcmlwdC0+c2V0RXhjZXB0aW9uKGV4Y2VwdGlvbik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJUaHJlYWQuY3BwCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDYg
QEAKICNpbmNsdWRlICJEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIK
LSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAj
aW5jbHVkZSAiVGhyZWFkR2xvYmFsRGF0YS5oIgogI2luY2x1ZGUgIlVSTC5oIgpJbmRleDogU291
cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3htbC9YTUxUcmVlVmlld2VyLmNwcAkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNl
L1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMCAr
MzgsMTAgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUu
aCIKICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiWE1MVmlld2VyQ1NTLmgiCiAjaW5jbHVk
ZSAiWE1MVmlld2VySlMuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9wYXJz
ZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDYsNyArNDYsNiBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJT
Y3JpcHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUg
IlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1
ZGUgIlRyZWVEZXB0aExpbWl0LmgiCiAjaW5jbHVkZSAiWE1MRXJyb3JzLmgiCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnht
bDIuY3BwCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDYg
QEAKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RWxlbWVu
dC5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1
ZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
ICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lv
biAxNjA0MDQpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwyNCBAQAorMjAxMy0xMi0xMCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBw
bGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggTW9yZSBJbnNwZWN0b3IgUmVx
dWlyZWQgQ2xhc3NlcyBEb3duIGludG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTMyNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3Bw
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKworMjAxMy0xMi0w
NSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IFB1c2ggTW9yZSBJbnNwZWN0b3IgUmVxdWlyZWQgQ2xhc3NlcyBEb3duIGludG8g
SmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyNTMyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHA6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oOgorCiAyMDEzLTEyLTEwICBSeXVhbiBD
aG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIEVGTCBi
dWlsZCBmaXggYXR0ZW1wdApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
MywxMiArNjMsMTIgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlckVtYmVkZGVkT2JqZWN0Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdFZhbHVl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxWaWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlQb2xpY3kuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyR2VzdHVy
ZUluZGljYXRvci5oPgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwpAQCAt
MTE3OSw3ICsxMTc5LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3JtSmF2YVNjcmlwdFVSTFJl
cQogICAgIC8vIEV2YWx1YXRlIHRoZSBKYXZhU2NyaXB0IGNvZGUuIE5vdGUgdGhhdCBydW5uaW5n
IEphdmFTY3JpcHQgaGVyZSBjb3VsZCBjYXVzZSB0aGUgcGx1Zy1pbiB0byBiZSBkZXN0cm95ZWQs
IHNvIHdlCiAgICAgLy8gZ3JhYiByZWZlcmVuY2VzIHRvIHRoZSBwbHVnLWluIGhlcmUuCiAgICAg
UmVmUHRyPFBsdWdpbj4gcGx1Z2luID0gbV9wbHVnaW47Ci0gICAgU2NyaXB0VmFsdWUgcmVzdWx0
ID0gZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoanNTdHJpbmcsIHJlcXVlc3QtPmFsbG93
UG9wdXBzKCkpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHJlc3VsdCA9IGZyYW1lLT5z
Y3JpcHQoKS5leGVjdXRlU2NyaXB0KGpzU3RyaW5nLCByZXF1ZXN0LT5hbGxvd1BvcHVwcygpKTsK
IAogICAgIC8vIENoZWNrIGlmIGV2YWx1YXRpbmcgdGhlIEphdmFTY3JpcHQgZGVzdHJveWVkIHRo
ZSBwbHVnLWluLgogICAgIGlmICghcGx1Z2luLT5jb250cm9sbGVyKCkpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAkocmV2
aXNpb24gMTYwNDA0KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEyICszNCwxMSBAQAogI2luY2x1ZGUg
IldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JDb250cm9sbGVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9JbnNwZWN0b3JGb3J3YXJkaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9u
dGVuZENsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRWYWx1ZS5oPgorI2luY2x1ZGUgPGJpbmRpbmdzL1Njcmlw
dFZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViSW5zcGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDE4ICszMCwxNCBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAi
Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRm9yd2FyZGluZy5oPgog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWw7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudDsKIGNsYXNzIFdlYlBhZ2U7Ci1zdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
czsKIAogY2xhc3MgV2ViSW5zcGVjdG9yIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9i
amVjdDo6VHlwZTo6QnVuZGxlSW5zcGVjdG9yPiB7CiBwdWJsaWM6CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxNjA0MDQp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEyNyw3ICsxMjcsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Nj
cmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFkb3dS
b290Lmg+CkBAIC0xMzgsNiArMTM3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Zpc2libGVQb3Np
dGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVmlzaWJsZVVuaXRzLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9tYXJrdXAuaD4KKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1
ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAj
aW5jbHVkZSA8cnVudGltZS9PcGVyYXRpb25zLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktp
dC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVy
YXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNlL1dl
YktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5k
ZWYuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIxMiw2ICsyMTIsNyBAQCBFWFBPUlRTCiAgICAgICAg
IHN5bWJvbFdpdGhQb2ludGVyKD9pdGVtQFN0YXRpY05vZGVMaXN0QFdlYkNvcmVAQFVCRVBBVk5v
ZGVAMkBJQFosID9pdGVtQFN0YXRpY05vZGVMaXN0QFdlYkNvcmVAQFVFQkFQRUFWTm9kZUAyQElA
WikKICAgICAgICAgP3NlbGVjdFRhZ0BIVE1MTmFtZXNAV2ViQ29yZUBAM1ZRdWFsaWZpZWROYW1l
QDJAQgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9i
dWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZUBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVA
QFFCRT9BVj8kUGFzc1JlZlB0ckBWSW5zcGVjdG9yT2JqZWN0QEluc3BlY3RvckBAQFdURkBAWFos
ID9idWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZUBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNv
cmVAQFFCRT9BVj8kUGFzc1JlZlB0ckBWSW5zcGVjdG9yT2JqZWN0QEluc3BlY3RvckBAQFdURkBA
WFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9nZXRIaWdobGlnaHRASW5zcGVjdG9yQ29u
dHJvbGxlckBXZWJDb3JlQEBRQkVYUEFVSGlnaGxpZ2h0QDJAQFosID9nZXRIaWdobGlnaHRASW5z
cGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRRUJBWFBFQVVIaWdobGlnaHRAMkBAWikKICAgICAg
ICAgc3ltYm9sV2l0aFBvaW50ZXIoP2luc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlQEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkBXZWJDb3JlQEBDQVBBVkluc3RydW1lbnRpbmdBZ2VudHNAMkBQQVZQ
YWdlQDJAQFosID9pbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZUBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25AV2ViQ29yZUBAQ0FQRUFWSW5zdHJ1bWVudGluZ0FnZW50c0AyQFBFQVZQYWdlQDJAQFop
CiAgICAgICAgID9zX2Zyb250ZW5kQ291bnRlckBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25AV2Vi
Q29yZUBAMEhBCkBAIC0yMjAsNyArMjIxLDcgQEAgRVhQT1JUUwogICAgICAgICBzeW1ib2xXaXRo
UG9pbnRlcig/PzFJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVBRUBYWiwg
Pz8xSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3JlQEBVRUFBQFhaKQogICAgICAg
ICBzeW1ib2xXaXRoUG9pbnRlcig/Y2hhbmdlQXR0YWNoZWRXaW5kb3dIZWlnaHRASW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3JlQEBVQUVYSUBaLCA/Y2hhbmdlQXR0YWNoZWRXaW5k
b3dIZWlnaHRASW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3JlQEBVRUFBWElAWikK
ICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2NoYW5nZUF0dGFjaGVkV2luZG93V2lkdGhASW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3JlQEBVQUVYSUBaLCA/Y2hhbmdlQXR0YWNo
ZWRXaW5kb3dXaWR0aEBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVFQUFY
SUBaKQotICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/Y29ubmVjdEZyb250ZW5kQEluc3BlY3Rv
ckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFBBVkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbEAyQEBa
LCA/Y29ubmVjdEZyb250ZW5kQEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUVBQVhQRUFW
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsQDJAQFopCisgICAgICAgIHN5bWJvbFdpdGhQb2ludGVy
KD9jb25uZWN0RnJvbnRlbmRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYUEFWSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsQEluc3BlY3RvckBAQFosID9jb25uZWN0RnJvbnRlbmRASW5z
cGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYUEFWSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
QEluc3BlY3RvckBAQFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9kb0Rpc3BhdGNoTWVz
c2FnZU9uRnJvbnRlbmRQYWdlQEluc3BlY3RvckNsaWVudEBXZWJDb3JlQEBTQV9OUEFWUGFnZUAy
QEFCVlN0cmluZ0BXVEZAQEBaLCA/ZG9EaXNwYXRjaE1lc3NhZ2VPbkZyb250ZW5kUGFnZUBJbnNw
ZWN0b3JDbGllbnRAV2ViQ29yZUBAU0FfTlBFQVZQYWdlQDJAQUVCVlN0cmluZ0BXVEZAQEBaKQog
ICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/ZnJvbnRlbmRMb2FkZWRASW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbEBXZWJDb3JlQEBVQUVYWFosID9mcm9udGVuZExvYWRlZEBJbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVFQUFYWFopCiAgICAgICAgIHN5bWJvbFdpdGhQ
b2ludGVyKD9nZXRQcm9wZXJ0eUBTZXR0aW5nc0BJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
QFdlYkNvcmVAQFVBRT9BVlN0cmluZ0BXVEZAQEFCVjQ1QEBaLCA/Z2V0UHJvcGVydHlAU2V0dGlu
Z3NASW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3JlQEBVRUFBP0FWU3RyaW5nQFdU
RkBAQUVCVjQ1QEBaKQpAQCAtNDQ5LDggKzQ1MCw2IEBAIEVYUE9SVFMKICAgICAgICAgc3ltYm9s
V2l0aFBvaW50ZXIoP25lYXJlc3RAVGltZVJhbmdlc0BXZWJDb3JlQEBRQkVOTkBaLCA/bmVhcmVz
dEBUaW1lUmFuZ2VzQFdlYkNvcmVAQFFFQkFOTkBaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRl
cig/YWRkQFRpbWVSYW5nZXNAV2ViQ29yZUBAUUFFWE5OQFosID9hZGRAVGltZVJhbmdlc0BXZWJD
b3JlQEBRRUFBWE5OQFopCiAjZW5kaWYKLSAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP3RvSlNP
TlN0cmluZ0BJbnNwZWN0b3JWYWx1ZUBXZWJDb3JlQEBRQkU/QVZTdHJpbmdAV1RGQEBYWiwgP3Rv
SlNPTlN0cmluZ0BJbnNwZWN0b3JWYWx1ZUBXZWJDb3JlQEBRRUJBP0FWU3RyaW5nQFdURkBAWFop
Ci0gICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9idWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9k
ZUBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFCRT9BVj8kUGFzc1JlZlB0ckBWSW5zcGVj
dG9yT2JqZWN0QFdlYkNvcmVAQEBXVEZAQFhaLCA/YnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5v
ZGVASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRRUJBP0FWPyRQYXNzUmVmUHRyQFZJbnNw
ZWN0b3JPYmplY3RAV2ViQ29yZUBAQFdURkBAWFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVy
KD9zdGFuZGFyZEZvbnRGYW1pbHlAU2V0dGluZ3NAV2ViQ29yZUBAUUJFQUJWQXRvbWljU3RyaW5n
QFdURkBAVzRVU2NyaXB0Q29kZUBAQFosID9zdGFuZGFyZEZvbnRGYW1pbHlAU2V0dGluZ3NAV2Vi
Q29yZUBAUUVCQUFFQlZBdG9taWNTdHJpbmdAV1RGQEBXNFVTY3JpcHRDb2RlQEBAWikKICAgICAg
ICAgc3ltYm9sV2l0aFBvaW50ZXIoP3NlcmlmRm9udEZhbWlseUBTZXR0aW5nc0BXZWJDb3JlQEBR
QkVBQlZBdG9taWNTdHJpbmdAV1RGQEBXNFVTY3JpcHRDb2RlQEBAWiwgP3NlcmlmRm9udEZhbWls
eUBTZXR0aW5nc0BXZWJDb3JlQEBRRUJBQUVCVkF0b21pY1N0cmluZ0BXVEZAQFc0VVNjcmlwdENv
ZGVAQEBaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/c2Fuc1NlcmlmRm9udEZhbWlseUBT
ZXR0aW5nc0BXZWJDb3JlQEBRQkVBQlZBdG9taWNTdHJpbmdAV1RGQEBXNFVTY3JpcHRDb2RlQEBA
WiwgP3NhbnNTZXJpZkZvbnRGYW1pbHlAU2V0dGluZ3NAV2ViQ29yZUBAUUVCQUFFQlZBdG9taWNT
dHJpbmdAV1RGQEBXNFVTY3JpcHRDb2RlQEBAWikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0No
YW5nZUxvZwkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEzLTEyLTEwICBKb3Nl
cGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogUHVzaCBNb3JlIEluc3BlY3RvciBSZXF1aXJlZCBDbGFzc2VzIERvd24gaW50byBKYXZhU2Ny
aXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTI1MzI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBBcGkvV2ViUGFnZS5jcHA6CisKIDIwMTMtMTItMDMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29y
YXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIFJlbW90ZSBJbnNw
ZWN0b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFuYWdlbWVudCBpbnRvIEphdmFTY3JpcHRDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAJKHJldmlzaW9u
IDE2MDQwNCkKKysrIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsNiBAQAogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5o
IgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VD
b2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiU2VsZWN0aW9uSGFuZGxl
ci5oIgpAQCAtMTcyLDYgKzE3MSw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDb250
ZXh0UmVmLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWYuaD4KICNpbmNs
dWRlIDxTaGFyZWRQb2ludGVyLmg+CisjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4K
ICNpbmNsdWRlIDxjbWF0aD4KICNpbmNsdWRlIDxzeXMva2V5Y29kZXMuaD4KICNpbmNsdWRlIDx1
bmljb2RlL3VzdHJpbmcuaD4gLy8gcGxhdGZvcm0gSUNVCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Vm
bC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0xMi0xMCAgSm9zZXBoIFBlY29yYXJvICA8cGVj
b3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggTW9yZSBJbnNw
ZWN0b3IgUmVxdWlyZWQgQ2xhc3NlcyBEb3duIGludG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTMyNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZXdrL2V3a19mcmFtZS5j
cHA6CisKIDIwMTMtMTItMDMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIFJlbW90ZSBJbnNwZWN0b3IgZGVidWdnaW5n
IGNvbm5lY3Rpb24gbWFuYWdlbWVudCBpbnRvIEphdmFTY3JpcHRDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydEVmbC5jcHAJKHJldmlzaW9uIDE2MDQwNCkKKysrIFNvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU5LDkgKzU5LDkgQEAKICNpbmNsdWRlIDxSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+
CiAjaW5jbHVkZSA8U2NoZW1lUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxTY3JpcHRDb250cm9sbGVy
Lmg+Ci0jaW5jbHVkZSA8U2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxTZXR0aW5ncy5oPgogI2lu
Y2x1ZGUgPFRleHRJdGVyYXRvci5oPgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+
CiAjaW5jbHVkZSA8YmluZGluZ3MvanMvR0NDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8aGlzdG9y
eS9IaXN0b3J5SXRlbS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19mcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDYgQEAK
ICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3Qu
aCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUu
aCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJTdWJzdGl0dXRlRGF0YS5o
IgogI2luY2x1ZGUgIldpbmRvd3NLZXlib2FyZENvZGVzLmgiCkBAIC02NSw2ICs2NCw3IEBACiAj
aW5jbHVkZSA8RWNvcmVfSW5wdXQuaD4KICNpbmNsdWRlIDxFaW5hLmg+CiAjaW5jbHVkZSA8RXZh
cy5oPgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8ZWluYV9z
YWZldHlfY2hlY2tzLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgpJbmRleDogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gMTYwNDA0KQor
KysgU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMTMtMTItMTAgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIE1vcmUgSW5zcGVjdG9yIFJlcXVpcmVkIENs
YXNzZXMgRG93biBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUzMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKwogMjAx
My0xMi0xMCAgSm9hbm1hcmllIERpZ2dzICA8amRpZ2dzQGlnYWxpYS5jb20+CiAKICAgICAgICAg
QVg6IFtBVEtdIENvbnZlcnQgdGhlIGdldF90ZXh0IGF0a3Rlc3QuYyB1bml0IHRlc3RzIHRvIGxh
eW91dCB0ZXN0cwpJbmRleDogU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3
LmNwcAkocmV2aXNpb24gMTYwNDA0KQorKysgU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw2IEBACiAjaW5jbHVkZSAi
UmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAj
aW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJXZWJLaXRET01Eb2N1bWVudFByaXZhdGUu
aCIKICNpbmNsdWRlICJ3ZWJraXRkb3dubG9hZC5oIgpAQCAtMTE0LDYgKzExMyw3IEBACiAjaW5j
bHVkZSAid2Via2l0d2VicGx1Z2luZGF0YWJhc2Vwcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0
d2Vid2luZG93ZmVhdHVyZXMuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3cHJpdmF0ZS5oIgor
I2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8Z2RrL2dka2tleXN5
bXMuaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0
L0dPd25QdHIuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21h
Yy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0JKHJldmlzaW9u
IDE2MDQwNCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTcsMTEgKzU3LDExIEBACiAj
aW1wb3J0IDxXZWJDb3JlL1Byb3h5U2VydmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5
T3JpZ2luLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KLSNpbXBvcnQg
PFdlYkNvcmUvU2NyaXB0VmFsdWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVXNlckdlc3R1cmVJbmRp
Y2F0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvbnBydW50aW1lX2ltcGwuaD4KICNpbXBvcnQgPFdl
YkNvcmUvcnVudGltZV9vYmplY3QuaD4KICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5o
PgorI2ltcG9ydCA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbXBvcnQgPG1hY2gvbWFjaC5o
PgogI2ltcG9ydCA8dXRpbGl0eT4KICNpbXBvcnQgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIu
aD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQubW0JKHJldmlzaW9uIDE2MDQwNCkKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpA
QCAtNDMsMTIgKzQzLDEyIEBACiAjaW1wb3J0ICJXZWJVSURlbGVnYXRlLmgiCiAjaW1wb3J0ICJX
ZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgPGFsZ29yaXRobT4KKyNpbXBvcnQgPGJpbmRpbmdz
L1NjcmlwdFZhbHVlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0luc3BlY3RvckNvbnRyb2xsZXIuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaD4KICNpbXBvcnQgPFdl
YkNvcmUvTWFpbkZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdl
YkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRWYWx1ZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8V2ViS2l0L0RPTUV4
dGVuc2lvbnMuaD4KICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgpJbmRleDogU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3
ICs4OSw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlcldpZGdldC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2NyaXB0
Q29udHJvbGxlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRWYWx1ZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9TbWFydFJlcGxhY2Uu
aD4KICNpbXBvcnQgPFdlYkNvcmUvU3R5bGVQcm9wZXJ0aWVzLmg+CkBAIC0xMDAsNiArOTksNyBA
QAogI2ltcG9ydCA8V2ViQ29yZS9odG1sZWRpdGluZy5oPgogI2ltcG9ydCA8V2ViQ29yZS9tYXJr
dXAuaD4KICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgorI2ltcG9ydCA8YmluZGlu
Z3MvU2NyaXB0VmFsdWUuaD4KICNpbXBvcnQgPHJ1bnRpbWUvSlNMb2NrLmg+CiAjaW1wb3J0IDxy
dW50aW1lL0pTT2JqZWN0Lmg+CiAjaW1wb3J0IDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDE2MDQwNCkKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTY5
LDcgKzE2OSw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2Ny
aXB0Q29udHJvbGxlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRWYWx1ZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eVBv
bGljeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgpAQCAtMTg1LDYgKzE4NCw3IEBA
CiAjaW1wb3J0IDxXZWJLaXQvRE9NRXh0ZW5zaW9ucy5oPgogI2ltcG9ydCA8V2ViS2l0L0RPTVBy
aXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgorI2ltcG9ydCA8Ymlu
ZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbXBvcnQgPG1hY2gtby9keWxkLmg+CiAjaW1wb3J0IDxv
YmpjL29iamMtYXV0by5oPgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNjA0MDQpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0xMi0xMCAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2gg
TW9yZSBJbnNwZWN0b3IgUmVxdWlyZWQgQ2xhc3NlcyBEb3duIGludG8gSmF2YVNjcmlwdENvcmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTMyNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViRnJh
bWUuY3BwOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorCiAyMDEzLTEyLTA0ICBCcmVudCBGdWxn
aGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIEV4aXRpbmcgZnJvbSBN
ZWRpYSBGdWxsIFNjcmVlbiBtb2RlIHZpYSAnZXNjYXBlJyBrZXkgZG9lcyBub3Qgd29yayBwcm9w
ZXJseQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gMTYwNDA0KQorKysgU291
cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSwxMiArOTks
MTIgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1RleHRJdGVyYXRvci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvSlNET01CaW5kaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vj
dXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTTG9jay5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0Lmg+CisjaW5j
bHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5o
PgogCiAjaWYgVVNFKENHKQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDE2MDQw
NCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzcsNyArMTM3LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TY3JpcHRDb250cm9sbGVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRWYWx1ZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsYmFyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxi
YXJUaGVtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KQEAgLTE0Nyw2
ICsxNDYsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU3lzdGVtSW5mby5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvV2luZG93TWVzc2FnZUJyb2FkY2FzdGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5k
b3dzVG91Y2guaD4KKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CiAKICNpZiBVU0UoQ0cpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219002</attachid>
            <date>2013-12-11 14:23:15 -0800</date>
            <delta_ts>2013-12-11 14:23:15 -0800</delta_ts>
            <desc>[DIFF] Windows Fixes</desc>
            <filename>windows-diff.patch</filename>
            <type>text/plain</type>
            <size>9979</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDBiZmUwYzkuLmYyNDc1
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtMjk0LDkgKzI5
NCw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcTWFjcm9Bc3NlbWJs
ZXIuY3BwIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEpTQ1Rlc3RSdW5uZXJV
dGlscy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXE1hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uLmNwcCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRp
bmdzXFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxiaW5kaW5nc1xTY3JpcHRPYmplY3QuY3BwIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cYmluZGluZ3NcU2NyaXB0VmFsdWUuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cYmluZGluZ3NcU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdE9iamVjdC5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRWYWx1ZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5UHJvZmlsZS5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxCeXRlY29kZUJhc2ljQmxvY2suY3BwIiAv
PgpAQCAtNzU2LDkgKzc1Niw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhc3NlbWJs
ZXJcTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGFzc2VtYmxlclxSZXBhdGNoQnVmZmVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
Llxhc3NlbWJsZXJcWDg2QXNzZW1ibGVyLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxiaW5kaW5nc1xiaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaCIgLz4KLSAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oIiAvPgotICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcYmluZGluZ3MvU2NyaXB0VmFsdWUuaCIg
Lz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdEZ1bmN0aW9uQ2Fs
bC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0T2JqZWN0
LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRWYWx1ZS5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0aW9u
UHJvZmlsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlQ
cm9maWxlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxCeVZhbElu
Zm8uaCIgLz4KQEAgLTEzNjIsNCArMTM2Miw0IEBACiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0
ZW5zaW9uVGFyZ2V0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXEJ1
aWxkQ3VzdG9taXphdGlvbnNcbWFzbS50YXJnZXRzIiAvPgogICA8L0ltcG9ydEdyb3VwPgotPC9Q
cm9qZWN0PgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCA4ZDgwNGQz
Li5hMjhmMjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
ai5maWx0ZXJzCkBAIC0xMDgsMTUgKzEwOCw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
Llxhc3NlbWJsZXJcTWFjcm9Bc3NlbWJsZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVy
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxi
aW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIj4KLSAgICAgIDxGaWx0ZXI+YmluZGluZ3M8
L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJp
bmRpbmdzXFNjcmlwdE9iamVjdC5jcHAiPgotICAgICAgPEZpbHRlcj5iaW5kaW5nczwvRmlsdGVy
PgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3Nc
U2NyaXB0VmFsdWUuY3BwIj4KLSAgICAgIDxGaWx0ZXI+YmluZGluZ3M8L0ZpbHRlcj4KLSAgICA8
L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxs
b2NhdGlvblByb2ZpbGUuY3BwIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAg
ICA8L0NsQ29tcGlsZT4KQEAgLTEyODcsNiArMTI3OCwyNCBAQAogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cYnl0ZWNvZGVcUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQu
Y3BwIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdFZhbHVlLmNwcCI+Cisg
ICAgICA8RmlsdGVyPmJpbmRpbmdzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIj4KKyAg
ICAgIDxGaWx0ZXI+YmluZGluZ3M8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdE9iamVjdC5jcHAiPgorICAgICAgPEZp
bHRlcj5iaW5kaW5nczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cZGZnXERGR1NTQUxvd2VyaW5nUGhhc2UuY3BwIj4KKyAgICAgIDxGaWx0ZXI+
ZGZnPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxkZmdcREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAiPgorICAgICAgPEZpbHRlcj5kZmc8
L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNwcCI+CisgICAgICA8RmlsdGVy
PnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJ
dGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcQVBJQ2FsbGJhY2tGdW5j
dGlvbi5oIj4KQEAgLTE0MDksMTUgKzE0MTgsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cYXNzZW1ibGVyXFg4NkFzc2VtYmxlci5oIj4KICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVyPC9G
aWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5k
aW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuaCI+Ci0gICAgICA8RmlsdGVyPmJpbmRpbmdzPC9GaWx0
ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5n
c1xTY3JpcHRPYmplY3QuaCI+Ci0gICAgICA8RmlsdGVyPmJpbmRpbmdzPC9GaWx0ZXI+Ci0gICAg
PC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRW
YWx1ZS5oIj4KLSAgICAgIDxGaWx0ZXI+YmluZGluZ3M8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVk
ZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlvblBy
b2ZpbGUuaCI+CiAgICAgICA8RmlsdGVyPmJ5dGVjb2RlPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1
ZGU+CkBAIC0zMjA3LDYgKzMyMDcsMjcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5
dGVjb2RlXFZhcmlhYmxlV2F0Y2hwb2ludFNldC5oIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8
L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJp
bmRpbmdzXFNjcmlwdEZ1bmN0aW9uQ2FsbC5oIj4KKyAgICAgIDxGaWx0ZXI+YmluZGluZ3M8L0Zp
bHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRp
bmdzXFNjcmlwdE9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+YmluZGluZ3M8L0ZpbHRlcj4KKyAg
ICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlw
dFZhbHVlLmgiPgorICAgICAgPEZpbHRlcj5iaW5kaW5nczwvRmlsdGVyPgorICAgIDwvQ2xJbmNs
dWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR1N0cmVuZ3RoUmVkdWN0aW9u
UGhhc2UuaCI+CisgICAgICA8RmlsdGVyPmRmZzwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR1NTQUxvd2VyaW5nUGhhc2UuaCI+Cisg
ICAgICA8RmlsdGVyPmRmZzwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaCI+
CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcQ29uc3RhbnRNb2RlLmgiPgorICAgICAgPEZp
bHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgIDwvSXRlbUdyb3VwPgog
ICA8SXRlbUdyb3VwPgogICAgIDxOb25lIEluY2x1ZGU9IkphdmFTY3JpcHRDb3JlUHJlTGluay5j
bWQiIC8+CkBAIC0zMjE4LDQgKzMyMzksNCBAQAogICAgICAgPEZpbHRlcj5qaXQ8L0ZpbHRlcj4K
ICAgICA8L01BU00+CiAgIDwvSXRlbUdyb3VwPgotPC9Qcm9qZWN0PgorPC9Qcm9qZWN0PgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlQ29tbW9uLnByb3BzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmVD
b21tb24ucHJvcHMKaW5kZXggZTkzMTcwMC4uMzYyMmZmYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmVDb21tb24u
cHJvcHMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmVDb21tb24ucHJvcHMKQEAgLTUsNyArNSw3IEBACiAgIDxQcm9wZXJ0eUdy
b3VwIC8+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+Ci0gICAgICA8
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlw7Li5cdG9vbHNcOy4uXHJ1bnRpbWVcOy4u
XGxsaW50XDsuLlxqaXRcOy4uXGRpc2Fzc2VtYmxlclw7Li5caGVhcFw7Li5cZGVidWdnZXJcOy4u
XGFzc2VtYmxlclw7Li5ccHJvZmlsZXJcOy4uXHlhcnJcOy4uXGludGVycHJldGVyXDsuLlxieXRl
Y29kZVw7Li5cZGZnXDsuLlxieXRlY29tcGlsZXJcOy4uXHBhcnNlclw7Li5cQVBJXDsuLlxmdGxc
OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVxKYXZh
U2NyaXB0Q29yZVxEZXJpdmVkU291cmNlc1w7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1
ZGVcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXEphdmFTY3JpcHRDb3JlXDskKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXDskKFdlYktpdF9MaWJyYXJpZXMp
XGluY2x1ZGU7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRlXHByaXZhdGU7JShBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAg
IDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXDsuLlx0b29sc1w7Li5ccnVudGltZVw7
Li5cbGxpbnRcOy4uXGppdFw7Li5cZGlzYXNzZW1ibGVyXDsuLlxoZWFwXDsuLlxkZWJ1Z2dlclw7
Li5cYXNzZW1ibGVyXDsuLlxwcm9maWxlclw7Li5ceWFyclw7Li5caW50ZXJwcmV0ZXJcOy4uXGJ5
dGVjb2RlXDsuLlxkZmdcOy4uXGJ5dGVjb21waWxlclw7Li5ccGFyc2VyXDsuLlxBUElcOy4uXGZ0
bFw7Li5cYmluZGluZ3NcOy4uXGluc3BlY3Rvclw7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9i
aiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXEphdmFTY3JpcHRDb3JlXERlcml2ZWRTb3VyY2VzXDsk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVw7JChDb25maWd1cmF0aW9uQnVpbGREaXIp
XGluY2x1ZGVcSmF2YVNjcmlwdENvcmVcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRl
XHByaXZhdGVcOyQoV2ViS2l0X0xpYnJhcmllcylcaW5jbHVkZTskKFdlYktpdF9MaWJyYXJpZXMp
XGluY2x1ZGVccHJpdmF0ZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzPgogICAgICAgPEZvcmNlZEluY2x1ZGVGaWxlcz5JQ1VWZXJz
aW9uLmg7JShGb3JjZWRJbmNsdWRlRmlsZXMpPC9Gb3JjZWRJbmNsdWRlRmlsZXM+CiAgICAgPC9D
bENvbXBpbGU+CiAgICAgPExpbms+CkBAIC0xNiw0ICsxNiw0IEBACiAgICAgPC9MaW5rPgogICA8
L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXAgLz4KLTwvUHJvamVjdD4KKzwvUHJv
amVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRl
Zi5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9y
L1dlYktpdEV4cG9ydHMuZGVmLmluCmluZGV4IDU2ZDg1YjUuLjc2MjlhZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktp
dEV4cG9ydHMuZGVmLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0
RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluCkBAIC0yMTIsNiArMjEyLDcgQEAg
RVhQT1JUUwogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/aXRlbUBTdGF0aWNOb2RlTGlzdEBX
ZWJDb3JlQEBVQkVQQVZOb2RlQDJASUBaLCA/aXRlbUBTdGF0aWNOb2RlTGlzdEBXZWJDb3JlQEBV
RUJBUEVBVk5vZGVAMkBJQFopCiAgICAgICAgID9zZWxlY3RUYWdASFRNTE5hbWVzQFdlYkNvcmVA
QDNWUXVhbGlmaWVkTmFtZUAyQEIKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgICAgICBzeW1i
b2xXaXRoUG9pbnRlcig/YnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGVASW5zcGVjdG9yQ29u
dHJvbGxlckBXZWJDb3JlQEBRQkU/QVY/JFBhc3NSZWZQdHJAVkluc3BlY3Rvck9iamVjdEBJbnNw
ZWN0b3JAQEBXVEZAQFhaLCA/YnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGVASW5zcGVjdG9y
Q29udHJvbGxlckBXZWJDb3JlQEBRQkU/QVY/JFBhc3NSZWZQdHJAVkluc3BlY3Rvck9iamVjdEBJ
bnNwZWN0b3JAQEBXVEZAQFhaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/Z2V0SGlnaGxp
Z2h0QEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUJFWFBBVUhpZ2hsaWdodEAyQEBaLCA/
Z2V0SGlnaGxpZ2h0QEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUVCQVhQRUFVSGlnaGxp
Z2h0QDJAQFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9pbnN0cnVtZW50aW5nQWdlbnRz
Rm9yUGFnZUBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25AV2ViQ29yZUBAQ0FQQVZJbnN0cnVtZW50
aW5nQWdlbnRzQDJAUEFWUGFnZUAyQEBaLCA/aW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2VASW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQFdlYkNvcmVAQENBUEVBVkluc3RydW1lbnRpbmdBZ2VudHNA
MkBQRUFWUGFnZUAyQEBaKQogICAgICAgICA/c19mcm9udGVuZENvdW50ZXJASW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQFdlYkNvcmVAQDBIQQpAQCAtMjIwLDYgKzIyMSw3IEBAIEVYUE9SVFMKICAg
ICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoPz8xSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBX
ZWJDb3JlQEBVQUVAWFosID8/MUluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBA
VUVBQUBYWikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2NoYW5nZUF0dGFjaGVkV2luZG93
SGVpZ2h0QEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUFFWElAWiwgP2No
YW5nZUF0dGFjaGVkV2luZG93SGVpZ2h0QEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2Vi
Q29yZUBAVUVBQVhJQFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9jaGFuZ2VBdHRhY2hl
ZFdpbmRvd1dpZHRoQEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUFFWElA
WiwgP2NoYW5nZUF0dGFjaGVkV2luZG93V2lkdGhASW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bEBXZWJDb3JlQEBVRUFBWElAWikKKyAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2Nvbm5lY3RG
cm9udGVuZEBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFBRVhQQVZJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWxASW5zcGVjdG9yQEBAWiwgP2Nvbm5lY3RGcm9udGVuZEBJbnNwZWN0b3JDb250
cm9sbGVyQFdlYkNvcmVAQFFBRVhQQVZJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxASW5zcGVjdG9y
QEBAWikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2RvRGlzcGF0Y2hNZXNzYWdlT25Gcm9u
dGVuZFBhZ2VASW5zcGVjdG9yQ2xpZW50QFdlYkNvcmVAQFNBX05QQVZQYWdlQDJAQUJWU3RyaW5n
QFdURkBAQFosID9kb0Rpc3BhdGNoTWVzc2FnZU9uRnJvbnRlbmRQYWdlQEluc3BlY3RvckNsaWVu
dEBXZWJDb3JlQEBTQV9OUEVBVlBhZ2VAMkBBRUJWU3RyaW5nQFdURkBAQFopCiAgICAgICAgIHN5
bWJvbFdpdGhQb2ludGVyKD9mcm9udGVuZExvYWRlZEBJbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsQFdlYkNvcmVAQFVBRVhYWiwgP2Zyb250ZW5kTG9hZGVkQEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWxAV2ViQ29yZUBAVUVBQVhYWikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2dl
dFByb3BlcnR5QFNldHRpbmdzQEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBA
VUFFP0FWU3RyaW5nQFdURkBAQUJWNDVAQFosID9nZXRQcm9wZXJ0eUBTZXR0aW5nc0BJbnNwZWN0
b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVFQUE/QVZTdHJpbmdAV1RGQEBBRUJWNDVA
QFopCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>